import { getCurrentPage, isDef } from '../common/utils';
function onPageScroll(event) {
    const { vanPageScroller = [] } = getCurrentPage();
    vanPageScroller.forEach((scroller) => {
        if (typeof scroller === 'function') {
            // @ts-ignore
            scroller(event);
        }
    });
}
export const pageScrollMixin = (scroller) => Behavior({
    attached() {
        const page = getCurrentPage();
        if (Array.isArray(page.vanPageScroller)) {
            page.vanPageScroller.push(scroller.bind(this));
        }
        else {
            page.vanPageScroller =
                typeof page.onPageScroll === 'function'
                    ? [page.onPageScroll.bind(page), scroller.bind(this)]
                    : [scroller.bind(this)];
        }
        page.onPageScroll = onPageScroll;
    },
    detached() {
        var _a;
        const page = getCurrentPage();
        if (isDef(page)) {
            page.vanPageScroller =
                ((_a = page.vanPageScroller) === null || _a === void 0 ? void 0 : _a.filter((item) => item !== scroller)) || [];
        }
    },
});