"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.pageScrollMixin = void 0; var validator_1 = require("../common/validator"); var utils_1 = require("../common/utils"); function onPageScroll(event) { var _a = (0, utils_1.getCurrentPage)().vanPageScroller, vanPageScroller = _a === void 0 ? [] : _a; vanPageScroller.forEach(function (scroller) { if (typeof scroller === 'function') { // @ts-ignore scroller(event); } }); } function pageScrollMixin(scroller) { return Behavior({ attached: function () { var page = (0, utils_1.getCurrentPage)(); if (!(0, utils_1.isDef)(page)) { return; } var _scroller = scroller.bind(this); var _a = page.vanPageScroller, vanPageScroller = _a === void 0 ? [] : _a; if ((0, validator_1.isFunction)(page.onPageScroll) && page.onPageScroll !== onPageScroll) { vanPageScroller.push(page.onPageScroll.bind(page)); } vanPageScroller.push(_scroller); page.vanPageScroller = vanPageScroller; page.onPageScroll = onPageScroll; this._scroller = _scroller; }, detached: function () { var _this = this; var page = (0, utils_1.getCurrentPage)(); if (!(0, utils_1.isDef)(page) || !(0, utils_1.isDef)(page.vanPageScroller)) { return; } var vanPageScroller = page.vanPageScroller; var index = vanPageScroller.findIndex(function (v) { return v === _this._scroller; }); if (index > -1) { page.vanPageScroller.splice(index, 1); } this._scroller = undefined; }, }); } exports.pageScrollMixin = pageScrollMixin;