{"version":3,"sources":["webpack:///../jarvis/app/assets/javascripts/core/utils/object/compact.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/lists/ItemList/commits/url.js","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/lists/ItemList/commits/items.js","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/lists/ItemList/commits/loadMore.js","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/lists/ItemList/commits/paginator.js","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/lists/ItemList/index.js","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/lists/ItemList/Dispatcher.js","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/UrlPlugin.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/ItemsPlugin.ts","webpack:///../jarvis/app/assets/javascripts/site/widgets/PaginatorWidget/components/Items.tsx","webpack:///../jarvis/app/assets/javascripts/site/widgets/PaginatorWidget/components/BtnNext.tsx","webpack:///../jarvis/app/assets/javascripts/site/widgets/PaginatorWidget/components/BtnToTop.tsx","webpack:///../jarvis/app/assets/javascripts/site/widgets/PaginatorWidget/commits/setup.ts","webpack:///../jarvis/app/assets/javascripts/site/widgets/PaginatorWidget/commits/nextPage.ts","webpack:///../jarvis/app/assets/javascripts/site/widgets/PaginatorWidget/commits/prevPage.ts","webpack:///../jarvis/app/assets/javascripts/site/widgets/PaginatorWidget/commits/changePage.ts","webpack:///../jarvis/app/assets/javascripts/site/widgets/PaginatorWidget/index.tsx","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/PaginatorPlugin.ts","webpack:///../jarvis/app/assets/javascripts/site/widgets/LoadMoreWidget.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/plugins/LoadMorePlugin.ts","webpack:///../jarvis/app/assets/javascripts/core/utils/loaderSpinner.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/createList.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/Loader.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/PluginsMediator.ts"],"names":["compact","object","Object","entries","filter","_ref","_ref2","_slicedToArray","undefined","reduce","_ref3","_ref4","key","value","_objectSpread","_defineProperty","COMMIT_URL","state","url","COMMIT_ITEMS","items","COMMIT_LOAD_MORE","loadMore","COMMIT_PAGINATOR","paginator","ItemList","createList","loadUrl","initialState","_ref$deps$mediator","deps","mediator","dispatch","subscribe","_ref$callbacks","callbacks","onScrollToTop","onBeforeLoad","onAfterLoad","loader","Loader","store","Store","props","CALLBACK_AFTER_COMMIT","commitFn","_ref3$","action","_ref3$$silent","silent","cond","when","to","concat","_ref5","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_yield$loader$load","wrap","_context","prev","next","load","format","sent","commit","stop","_x","apply","arguments","_ref6","_callee2","page","_yield$loader$load2","_context2","_x2","_ref7","_callee3","_yield$loader$load3","_context3","_x3","connect","lastTimestamp","markState","timestamp","Date","now","_timestamp","_type","handlePush","Env","abTesting","experiment3Test","history","pushState","handleReplace","replaceState","handleChangeUrl","newState","window","addEventListener","disconnect","removeEventListener","unsubscribe","config","getSlotsForItems","handleAppend","afterEvent","map","$slot","requestAnimationFrame","insertAdjacentHTML","join","documentDispatch","innerHTML","Items","onPrevPage","onChangePage","onNextPage","hasPrevPage","currentPage","hasNextPage","pagesCount","meanOfRange","Math","ceil","pagesRangeSize","offset","pages","_toConsumableArray","Array","_","i","isActive","handleChangePage","h","class","onClick","BtnNext","isLastPage","isFlat","document","querySelector","classes","htmlClassNames","BtnToTop","onTop","COMMIT_SETUP","itemsCount","itemsPerPage","maxPagesRangeSize","compactObject","min","COMMIT_NEXT_PAGE","COMMIT_PREV_PAGE","COMMIT_CHANGE_PAGE","PaginatorWidget","$widget","CALLBACK_CHANGE_PAGE","handleTop","scrollWindowTo","handleNextPage","handlePrevPage","renderer","createVDOMRenderer","getState","on","render","afterCommitFunctions","commitFunc","includes","dispatchCustomEvent","get","setup","wPaginator","handleUpdate","LoadMoreWidget","_a","autoLoad","CALLBACK_LOAD_MORE","_ref$callbacks$GET_WA","GET_WAY_POINT","onLoad","wayWatcherIds","addWayPoints","removeWayPoints","WayPointService","watch","getPoint","precision","version","top","Infinity","onDown","onUp","once","unwatch","hide","addClass","show","removeClass","destroy","resolvePage","_config$slotElPrefix","slotElPrefix","_config$disableLoadAn","disableLoadAnimation","awaitPayload","Promise","resolve","awaitRequested","getPaginationSlot","wLoadMore","addLoader","find","removeLoader","setTimeout","el","size","length","parentNode","createElement","classList","add","style","display","fill","insertBefore","nextSibling","_b","remove","Dispatcher","plugins","PluginsMediator","dispatcher","pluginInstances","Boolean","plugin","forEach","params","result","_args","console","log","Http","abrupt","eventEmitter","EventEmitter","eventName","callback","_len","args","_key","setImmediate","emit","off"],"mappings":"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","file":"chunk.6.97a2fc11609648a85369.c7b4fd35.js","sourcesContent":["export default function compact(object) {\n    return Object.entries(object)\n        .filter(([_key, value]) => value != undefined)\n        .reduce((object, [key, value]) => ({ ...object, [key]: value }), {});\n}\n","export default function COMMIT_URL(state, url) {\n  return { ...state, url }\n}\n","export default function COMMIT_ITEMS(state, items) {\n  return { ...state, items }\n}\n","export default function COMMIT_LOAD_MORE(state, loadMore) {\n  return { ...state, loadMore }\n}\n","export default function COMMIT_PAGINATOR(state, paginator) {\n  return { ...state, paginator }\n}\n","import createList from '../../createList';\n\nimport Dispatcher from './Dispatcher';\n\nimport UrlPlugin       from '../../plugins/UrlPlugin';\nimport ItemsPlugin     from '../../plugins/ItemsPlugin';\nimport LoadMorePlugin  from '../../plugins/LoadMorePlugin';\nimport PaginatorPlugin from '../../plugins/PaginatorPlugin';\n\nexport let ItemList = createList(Dispatcher)\n\nexport {\n  UrlPlugin,\n  ItemsPlugin,\n  LoadMorePlugin,\n  PaginatorPlugin\n}\n","import Store from 'core/services/Store'\n\nimport cond from 'core/utils/cond'\n\nimport COMMIT_URL       from './commits/url'\nimport COMMIT_ITEMS     from './commits/items'\nimport COMMIT_LOAD_MORE from './commits/loadMore'\nimport COMMIT_PAGINATOR from './commits/paginator'\n\nimport Loader from '../../Loader'\n\nexport default function Dispatcher({\n  loadUrl,\n\n  initialState,\n\n  deps: {\n    mediator: {\n      dispatch,\n      subscribe\n    }\n  },\n\n  callbacks: {\n    onScrollToTop,\n    onBeforeLoad,\n    onAfterLoad\n  }\n}) {\n  let loader = Loader({\n    callbacks: {\n      onBeforeLoad,\n      onAfterLoad\n    }\n  })\n\n  let store = Store({\n    props: {\n      initialState: {\n        url: null,\n        items: null,\n        loadMore: null,\n        paginator: null\n      }\n    },\n\n    callbacks: {\n      CALLBACK_AFTER_COMMIT: (state, commitFn, [_, { action, silent = false } = {}]) => {\n        if (silent) return\n\n        cond(\n          when => commitFn === COMMIT_ITEMS && action,\n            to => dispatch(`ItemsPlugin <~ ${action}`, state.items),\n\n          when => commitFn === COMMIT_PAGINATOR,\n            to => dispatch('PaginatorPlugin <~ update', state.paginator),\n\n          when => commitFn === COMMIT_LOAD_MORE,\n            to => dispatch('LoadMorePlugin <~ update', state.loadMore),\n\n          when => commitFn === COMMIT_URL && action,\n            to => dispatch(`UrlPlugin <~ ${action}`, { url: state.url, state: { loadUrl: state.url } }),\n        )\n      }\n    }\n  })\n\n  /**\n   * Поменялся урл\n   */\n  subscribe('UrlPlugin ~> changed', async ({ loadUrl }) => {\n    let {\n      url,\n      items,\n      loadMore,\n      paginator,\n    } = await loader.load(loadUrl, {\n      format: 'json'\n    })\n\n    // *TODO fix listing bug/ remove if nothing breaks | Created at: 14.Jun.2019\n    // await onScrollToTop('top');\n\n    store.commit(COMMIT_URL, url, { silent: true })\n    store.commit(COMMIT_LOAD_MORE, loadMore)\n    store.commit(COMMIT_PAGINATOR, paginator)\n    store.commit(COMMIT_ITEMS, items, { action: 'replace' })\n  })\n\n  /**\n   * Изменилась страница\n   */\n  subscribe('PaginatorPlugin ~> changed', async page => {\n    let {\n      url,\n      items,\n      loadMore,\n      paginator\n    } = await loader.load(loadUrl, {\n      page, format: 'json'\n    })\n\n    await onScrollToTop('items')\n\n    store.commit(COMMIT_URL, url, { action: 'push' })\n    store.commit(COMMIT_LOAD_MORE, loadMore)\n    store.commit(COMMIT_PAGINATOR, paginator)\n    store.commit(COMMIT_ITEMS, items, { action: 'replace' })\n  })\n\n  /**\n   * Нажали ЗАГРУЗИТЬ ЕЩЕ\n   */\n  subscribe('LoadMorePlugin ~> moreRequested', async page => {\n    let {\n      items,\n      loadMore,\n      paginator\n    } = await loader.load(loadUrl, {\n      page\n    })\n\n    store.commit(COMMIT_ITEMS, items, { action: 'append' })\n    store.commit(COMMIT_PAGINATOR, paginator)\n    store.commit(COMMIT_LOAD_MORE, loadMore)\n  })\n\n  /*\n    Инициализация\n  */\n\n  return {\n    connect() {\n      store.commit(COMMIT_URL, initialState.url, { action: 'replace' })\n      store.commit(COMMIT_ITEMS, initialState.items, { silent: true })\n      store.commit(COMMIT_LOAD_MORE, initialState.loadMore)\n      store.commit(COMMIT_PAGINATOR, initialState.paginator)\n    }\n  }\n}\n","/**\n * Url plugin listens to \"popstate\" event and dispatches it to a mediator\n * Also pushes or replaces history state when receives appropriate event from a mediator\n */\nexport default function () {\n    return function UrlPlugin({ deps: { mediator } }) {\n        let lastTimestamp;\n        const markState = (state) => {\n            const timestamp = lastTimestamp = Date.now();\n            return {\n                ...state,\n                _timestamp: timestamp,\n                _type: 'UrlPlugin'\n            };\n        };\n        const handlePush = ({ state, url }) => {\n            if (Env.abTesting.experiment3Test)\n                return;\n            history.pushState(markState(state), '', url);\n        };\n        const handleReplace = ({ state, url }) => {\n            if (Env.abTesting.experiment3Test)\n                return;\n            history.replaceState(markState(state), '', url);\n        };\n        const handleChangeUrl = ({ state: newState }) => {\n            if (Env.abTesting.experiment3Test)\n                return;\n            if (!newState || lastTimestamp === newState._timestamp)\n                return;\n            if (newState._type === 'UrlPlugin') {\n                mediator.dispatch('UrlPlugin ~> changed', newState);\n                lastTimestamp = newState._timestamp;\n            }\n        };\n        return {\n            connect() {\n                window.addEventListener('popstate', handleChangeUrl);\n                mediator.subscribe('UrlPlugin <~ push', handlePush);\n                mediator.subscribe('UrlPlugin <~ replace', handleReplace);\n            },\n            disconnect() {\n                window.removeEventListener('popstate', handleChangeUrl);\n                mediator.unsubscribe('UrlPlugin <~ push', handlePush);\n                mediator.unsubscribe('UrlPlugin <~ replace', handleReplace);\n            }\n        };\n    };\n}\n","import { connect, disconnect } from 'core/services/Controller';\n/**\n * Items plugin replaces or appends items in $slot\n * when receives appropriate event from a mediator\n */\nimport { documentDispatch } from 'core/utils/events';\nexport default function (config) {\n    return function ItemsPlugin({ deps: { mediator } }) {\n        const { getSlotsForItems } = config;\n        const handleAppend = (items, afterEvent) => {\n            getSlotsForItems(items).map(({ $slot, items }) => {\n                requestAnimationFrame(() => {\n                    $slot[0].insertAdjacentHTML('beforeend', items.join(''));\n                    connect($slot[0]);\n                    afterEvent && documentDispatch(afterEvent);\n                });\n            });\n        };\n        const handleReplace = (items, afterEvent) => {\n            getSlotsForItems(items).map(({ $slot, items }) => {\n                disconnect($slot[0]);\n                requestAnimationFrame(() => {\n                    $slot[0].innerHTML = items.join('');\n                    connect($slot[0]);\n                    afterEvent && documentDispatch(afterEvent);\n                });\n            });\n        };\n        return {\n            connect() {\n                mediator.subscribe('ItemsPlugin <~ replace', handleReplace);\n                mediator.subscribe('ItemsPlugin <~ append', handleAppend);\n            },\n            disconnect() {\n                mediator.unsubscribe('ItemsPlugin <~ replace', handleReplace);\n                mediator.unsubscribe('ItemsPlugin <~ append', handleAppend);\n            }\n        };\n    };\n}\n","import { h } from 'core/services/VDOM';\nimport cond from 'core/utils/cond';\nfunction Items({ state, onPrevPage, onChangePage, onNextPage }) {\n    const hasPrevPage = state.currentPage > 1;\n    const hasNextPage = state.currentPage < state.pagesCount;\n    const meanOfRange = Math.ceil(state.pagesRangeSize / 2);\n    const offset = cond(state.currentPage <= meanOfRange, () => 1, state.currentPage > state.pagesCount - meanOfRange, () => {\n        return state.pagesCount - state.pagesRangeSize + 1;\n    }, true, () => state.currentPage - meanOfRange + 1);\n    const pages = [...Array(state.pagesRangeSize)].map((_, i) => {\n        const page = i + offset;\n        return { isActive: state.currentPage === page, page };\n    });\n    const handleChangePage = (page) => () => onChangePage(page);\n    return (h(\"div\", { class: 'b-Paginator_items' },\n        hasPrevPage && h(\"span\", { class: '_prev', onClick: onPrevPage }),\n        pages.map(({ isActive, page }) => (h(\"span\", { class: `_item ${isActive && 'is-active'}`, onClick: handleChangePage(page) }, page))),\n        hasNextPage && h(\"span\", { class: '_next', onClick: onNextPage })));\n}\nexport default Items;\n","import { h } from 'core/services/VDOM';\nimport htmlClassNames from 'core/utils/htmlClassNames';\nexport function BtnNext({ state, onNextPage }) {\n    const isLastPage = state.currentPage === state.pagesCount;\n    const isFlat = document.querySelector('.s-flat-ProductPreview_b-flat-Price');\n    const classes = htmlClassNames('b-Paginator_btn-next', {\n        'is-disabled': isLastPage,\n        '__flat': isFlat\n    });\n    return (h(\"div\", { class: classes, onClick: onNextPage }, \"\\u0421\\u043B\\u0435\\u0434\\u0443\\u044E\\u0449\\u0430\\u044F \\u0441\\u0442\\u0440\\u0430\\u043D\\u0438\\u0446\\u0430\"));\n}\nexport default BtnNext;\n","import { h } from 'core/services/VDOM';\nfunction BtnToTop({ onTop }) {\n    const isFlat = document.querySelector('.s-flat-ProductPreview_b-flat-Price');\n    return (h(\"div\", { class: `b-Paginator_btn-to-top ${isFlat && `__flat`}`, onClick: onTop }, \"\\u041D\\u0430\\u0432\\u0435\\u0440\\u0445\"));\n}\nexport default BtnToTop;\n","import compactObject from 'core/utils/object/compact';\nexport default function COMMIT_SETUP(state, { itemsCount, itemsPerPage, currentPage, maxPagesRangeSize }) {\n    state = {\n        ...state,\n        ...compactObject({\n            itemsCount,\n            currentPage,\n            itemsPerPage,\n            maxPagesRangeSize\n        })\n    };\n    let pagesCount = Math.ceil(state.itemsCount / state.itemsPerPage);\n    let pagesRangeSize = Math.min(pagesCount, state.maxPagesRangeSize);\n    state = {\n        ...state,\n        pagesCount,\n        pagesRangeSize\n    };\n    return state;\n}\n","export default function COMMIT_NEXT_PAGE(state) {\n    return { ...state, currentPage: state.currentPage + 1 };\n}\n","export default function COMMIT_PREV_PAGE(state) {\n    return { ...state, currentPage: state.currentPage - 1 };\n}\n","export default function COMMIT_CHANGE_PAGE(state, { page }) {\n    return { ...state, currentPage: page };\n}\n","import { createVDOMRenderer, h } from 'core/services/VDOM';\nimport Store from 'core/services/Store';\nimport scrollWindowTo from 'core/utils/scrollWindowTo';\nimport Items from './components/Items';\nimport BtnNext from './components/BtnNext';\nimport BtnToTop from './components/BtnToTop';\nimport COMMIT_SETUP from './commits/setup';\nimport COMMIT_NEXT_PAGE from './commits/nextPage';\nimport COMMIT_PREV_PAGE from './commits/prevPage';\nimport COMMIT_CHANGE_PAGE from './commits/changePage';\nimport { dispatchCustomEvent } from 'core/utils/events';\nfunction PaginatorWidget($widget, { callbacks: { CALLBACK_CHANGE_PAGE } }) {\n    const store = Store({\n        props: {\n            initialState: {\n                itemsCount: null,\n                currentPage: null,\n                itemsPerPage: null,\n                maxPagesRangeSize: null,\n                pagesCount: null,\n                pagesRangeSize: null\n            }\n        }\n    });\n    const setup = ({ itemsCount, itemsPerPage, currentPage, maxPagesRangeSize }) => {\n        store.commit(COMMIT_SETUP, {\n            itemsCount,\n            currentPage,\n            itemsPerPage,\n            maxPagesRangeSize\n        });\n    };\n    const handleTop = () => {\n        scrollWindowTo(0, 800);\n    };\n    const handleNextPage = () => {\n        store.commit(COMMIT_NEXT_PAGE);\n    };\n    const handlePrevPage = () => {\n        store.commit(COMMIT_PREV_PAGE);\n    };\n    const handleChangePage = (page) => {\n        store.commit(COMMIT_CHANGE_PAGE, { page });\n    };\n    const renderer = createVDOMRenderer($widget[0], () => {\n        const state = store.getState();\n        return state.pagesCount > 1 && (h(\"div\", null,\n            h(\"div\", { class: 'b-Paginator_row b-Paginator_head' },\n                h(BtnNext, { state: state, onNextPage: handleNextPage }),\n                h(BtnToTop, { onTop: handleTop })),\n            h(\"div\", { class: 'b-Paginator_row' },\n                h(Items, { state: state, onChangePage: handleChangePage, onNextPage: handleNextPage, onPrevPage: handlePrevPage }))));\n    });\n    store.on('afterCommit', renderer.render);\n    const afterCommitFunctions = [COMMIT_NEXT_PAGE, COMMIT_PREV_PAGE, COMMIT_CHANGE_PAGE];\n    store.on('afterCommit', (state, commitFunc) => {\n        if (afterCommitFunctions.includes(commitFunc)) {\n            CALLBACK_CHANGE_PAGE(state.currentPage);\n            dispatchCustomEvent($widget.get(0), 'PaginatorWidget:changed');\n        }\n    });\n    return { setup };\n}\nexport default PaginatorWidget;\n","/**\n * @TODO write plugin description\n*/\nimport PaginatorWidget from 'site/widgets/PaginatorWidget';\nexport default function (config) {\n    return function PaginatorPlugin({ deps: { mediator } }) {\n        let wPaginator = PaginatorWidget(config.$slot, {\n            callbacks: {\n                CALLBACK_CHANGE_PAGE(page) {\n                    mediator.dispatch('PaginatorPlugin ~> changed', page);\n                }\n            }\n        });\n        let handleUpdate = (state) => {\n            wPaginator.setup({\n                ...state,\n                maxPagesRangeSize: config.maxPagesRangeSize\n            });\n        };\n        return {\n            connect() {\n                if (Env.abTesting.experiment3Test)\n                    return;\n                mediator.subscribe('PaginatorPlugin <~ update', handleUpdate);\n            },\n            disconnect() {\n                if (Env.abTesting.experiment3Test)\n                    return;\n                mediator.unsubscribe('PaginatorPlugin <~ update', handleUpdate);\n            }\n        };\n    };\n}\n","import WayPointService from 'core/services/WayPointService';\nconst WAY_POINT_PRECISION = 1800;\nfunction LoadMoreWidget({ props: { autoLoad }, callbacks: { CALLBACK_LOAD_MORE, GET_WAY_POINT = () => undefined } }) {\n    const onLoad = () => {\n        CALLBACK_LOAD_MORE();\n    };\n    let wayWatcherIds = [];\n    const addWayPoints = () => {\n        if (!autoLoad)\n            return;\n        removeWayPoints();\n        wayWatcherIds = WayPointService.watch([\n            {\n                getPoint: () => {\n                    var _a;\n                    const offset = (_a = GET_WAY_POINT()) === null || _a === void 0 ? void 0 : _a.offset();\n                    const precision = Env.version === 'mobile' ? 2 * WAY_POINT_PRECISION : WAY_POINT_PRECISION;\n                    return offset ? offset.top - precision : Infinity;\n                },\n                onDown: onLoad,\n                onUp: () => { },\n                once: true\n            }\n        ]);\n    };\n    const removeWayPoints = () => {\n        if (autoLoad)\n            WayPointService.unwatch(wayWatcherIds);\n    };\n    const init = () => {\n        var _a;\n        if (!autoLoad)\n            (_a = GET_WAY_POINT()) === null || _a === void 0 ? void 0 : _a.on('click', onLoad);\n        addWayPoints();\n    };\n    const hide = () => {\n        var _a;\n        (_a = GET_WAY_POINT()) === null || _a === void 0 ? void 0 : _a.addClass('is-hidden');\n        removeWayPoints();\n    };\n    const show = () => {\n        var _a;\n        (_a = GET_WAY_POINT()) === null || _a === void 0 ? void 0 : _a.removeClass('is-hidden');\n    };\n    const destroy = () => {\n        removeWayPoints();\n    };\n    init();\n    return { hide, show, destroy, addWayPoints };\n}\nexport default LoadMoreWidget;\n","/**\n * @TODO write plugin description\n */\nimport { removeLoader, addLoader } from 'core/utils/loaderSpinner';\nimport LoadMoreWidget from 'site/widgets/LoadMoreWidget';\nexport default function (config) {\n    return function LoadMorePlugin({ deps: { mediator } }) {\n        const { $slot, autoLoad, slotElPrefix = 'w-LoadMore', disableLoadAnimation = false } = config;\n        let currentPage = 1;\n        let resolvePage;\n        let awaitPayload = new Promise(resolve => resolvePage = resolve); // to add sync for handleUpdate method\n        let awaitRequested = false;\n        const getPaginationSlot = () => $slot[0].querySelector(`[data-el=\"${slotElPrefix}-${currentPage}\"`);\n        const wLoadMore = LoadMoreWidget({\n            props: { autoLoad },\n            callbacks: {\n                CALLBACK_LOAD_MORE: () => {\n                    awaitRequested = true;\n                    awaitPayload.finally(() => {\n                        awaitRequested = false;\n                        if (autoLoad && !disableLoadAnimation)\n                            addLoader(getPaginationSlot());\n                        mediator.dispatch('LoadMorePlugin ~> moreRequested', currentPage + 1);\n                    });\n                },\n                GET_WAY_POINT: () => $slot.find(autoLoad ? `%{${slotElPrefix}-${currentPage}}` : `%{${slotElPrefix}}`)\n            }\n        });\n        const handleUpdate = ({ isLastPage, page }) => {\n            if (!awaitRequested)\n                awaitPayload = new Promise(resolve => resolvePage = resolve);\n            if (isLastPage)\n                wLoadMore.hide();\n            else\n                wLoadMore.show();\n            if (autoLoad && !disableLoadAnimation)\n                removeLoader(getPaginationSlot());\n            currentPage = page;\n            resolvePage();\n            if (!isLastPage)\n                setTimeout(wLoadMore.addWayPoints, 100);\n        };\n        return {\n            connect() {\n                mediator.subscribe('LoadMorePlugin <~ update', handleUpdate);\n            },\n            disconnect() {\n                wLoadMore.destroy();\n                mediator.unsubscribe('LoadMorePlugin <~ update', handleUpdate);\n            }\n        };\n    };\n}\n","export function addLoader(el, size = 5) {\n    if (!(el === null || el === void 0 ? void 0 : el.parentNode))\n        return;\n    requestAnimationFrame(() => {\n        const loader = document.createElement('div');\n        loader.classList.add('b-AjaxLoader');\n        loader.style.display = 'block';\n        loader.innerHTML = new Array(size).fill('<div></div>').join('\\n');\n        el.parentNode.insertBefore(loader, el.nextSibling);\n    });\n}\nexport function removeLoader(el) {\n    requestAnimationFrame(() => {\n        var _a, _b;\n        (_b = (_a = el === null || el === void 0 ? void 0 : el.parentNode) === null || _a === void 0 ? void 0 : _a.querySelector('.b-AjaxLoader')) === null || _b === void 0 ? void 0 : _b.remove();\n    });\n}\n","import PluginsMediator from './PluginsMediator';\nexport default function createList(Dispatcher) {\n    return ({ loadUrl, plugins, initialState, callbacks: { onScrollToTop, onBeforeLoad, onAfterLoad } }) => {\n        const mediator = PluginsMediator();\n        const dispatcher = Dispatcher({\n            loadUrl,\n            initialState,\n            deps: {\n                mediator\n            },\n            callbacks: {\n                onScrollToTop,\n                onBeforeLoad,\n                onAfterLoad\n            }\n        });\n        const pluginInstances = plugins.filter(Boolean).map((plugin) => {\n            return plugin({\n                deps: {\n                    mediator\n                }\n            });\n        });\n        return {\n            connect() {\n                pluginInstances.forEach(plugin => plugin.connect());\n                dispatcher.connect();\n            },\n            disconnect() {\n                pluginInstances.forEach(plugin => plugin.disconnect && plugin.disconnect());\n                dispatcher.disconnect && dispatcher.disconnect();\n            }\n        };\n    };\n}\n","import Http from 'core/services/Http';\nexport default function Loader({ callbacks: { onBeforeLoad, onAfterLoad } }) {\n    const load = async (loadUrl, params = {}) => {\n        onBeforeLoad();\n        console.log('%c%s', 'background: blue; color: white', 'Start request...', loadUrl, params);\n        const result = await Http.get(loadUrl, { params });\n        console.log('%c%s', 'background: blue; color: white', 'End request');\n        onAfterLoad(result);\n        return result;\n    };\n    return { load };\n}\n","import EventEmitter from 'eventemitter3';\nfunction PluginsMediator() {\n    const eventEmitter = new EventEmitter();\n    const subscribe = (eventName, callback) => {\n        eventEmitter.on(eventName, callback);\n    };\n    const dispatch = (eventName, ...args) => setImmediate(() => {\n        console.log('%c%s', 'color: white; background: green', eventName, args);\n        eventEmitter.emit(eventName, ...args);\n    });\n    const unsubscribe = (eventName, callback) => {\n        eventEmitter.off(eventName, callback);\n    };\n    return { subscribe, dispatch, unsubscribe };\n}\nexport default PluginsMediator;\n"],"sourceRoot":""}