{"version":3,"sources":["webpack:///../jarvis/app/assets/javascripts/core/utils/object/compact.ts","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/lists/UserList/commits/url.js","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/lists/UserList/commits/items.js","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/lists/UserList/commits/filters.js","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/lists/UserList/commits/paginator.js","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/lists/UserList/index.js","webpack:///../jarvis/app/assets/javascripts/core/services/InfinityList/lists/UserList/Dispatcher.js","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"],"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_FILTERS","filters","COMMIT_PAGINATOR","paginator","UserList","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","_asyncToGenerator","_regeneratorRuntime","mark","_callee","newFilters","_yield$loader$load","wrap","_context","prev","next","commit","getState","load","format","serializeFilters","sent","stop","_x","apply","arguments","_ref6","_callee2","_ref5","_yield$loader$load2","newUrl","_context2","_x2","_ref7","_callee3","page","_yield$loader$load3","_context3","_x3","connect","Items","onPrevPage","onChangePage","onNextPage","hasPrevPage","currentPage","hasNextPage","pagesCount","meanOfRange","Math","ceil","pagesRangeSize","offset","pages","_toConsumableArray","Array","map","_","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","on","render","afterCommitFunctions","commitFunc","includes","dispatchCustomEvent","get","setup","config","wPaginator","$slot","handleUpdate","Env","abTesting","experiment3Test","disconnect","unsubscribe"],"mappings":"ytDAAe,SAASA,EAAQC,GAC5B,OAAOC,OAAOC,QAAQF,GACjBG,QAAO,SAAAC,GAAA,IAAAC,EAAAC,EAAAF,EAAA,GAAMC,EAAA,GAAO,OAAeE,MAAfF,EAAA,MACpBG,QAAO,SAACR,EAAMS,GAAA,IAAAC,EAAAJ,EAAAG,EAAE,GAACE,EAAGD,EAAA,GAAEE,EAAKF,EAAA,UAAAG,IAAA,GAAYb,GAAM,GAAAc,EAAA,GAAGH,EAAMC,MAAU,I,2gCCH1D,SAASG,EAAWC,EAAOC,GACxC,OAAAJ,IAAA,GAAYG,GAAK,IAAEC,Q,urBCDN,SAASC,EAAaF,EAAOG,GAC1C,OAAAN,IAAA,GAAYG,GAAK,IAAEG,U,urBCDN,SAASC,EAAeJ,EAAOK,GAC5C,OAAAR,IAAA,GAAYG,GAAK,IACfK,QAAOR,IAAA,GAAOG,EAAMK,SAAYA,K,urBCFrB,SAASC,EAAiBN,EAAOO,GAC9C,OAAAV,IAAA,GAAYG,GAAK,IAAEO,c,w/DCQVC,EAAWC,aCIP,SAAmBrB,GAiB/B,IAhBDsB,EAAOtB,EAAPsB,QAEAC,EAAYvB,EAAZuB,aAAYC,EAAAxB,EAEZyB,KACEC,SACEC,EAAQH,EAARG,SACAC,EAASJ,EAATI,UAASC,EAAA7B,EAIb8B,UACEC,EAAaF,EAAbE,cACAC,EAAYH,EAAZG,aACAC,EAAWJ,EAAXI,YAGEC,EAASC,YAAO,CAClBL,UAAW,CACTE,eACAC,iBAIAG,EAAQC,YAAM,CAChBC,MAAO,CACLf,aAAc,CACZV,IAAK,KACLE,MAAO,GACPE,QAAS,GACTE,UAAW,KAIfW,UAAW,CACTS,sBAAuB,SAAC3B,EAAO4B,EAAQvC,GAA2C,IAAAI,EAAAH,EAAAD,EAAA,GAAvCwC,GAAApC,EAAA,GAAAA,EAAA,IAAIqC,GAAJD,OAAA,IAAAA,EAA+B,GAAEA,GAA7BC,OAAMC,EAAAF,EAAEG,YAAM,IAAAD,GAAQA,GAGnEE,aACE,SAAAC,GAAI,OAAIN,IAAa1B,KACnB,SAAAiC,GAAE,OAAIpB,EAAS,yBAA0Bf,EAAMG,UAEjD,SAAA+B,GAAI,OAAIN,IAAaxB,KACnB,SAAA+B,GAAE,OAAIpB,EAAS,0BAA2Bf,EAAMK,YAElD,SAAA6B,GAAI,OAAIN,IAAatB,KACnB,SAAA6B,GAAE,OAAIpB,EAAS,4BAA6Bf,EAAMO,cAEpD,SAAA2B,GAAI,OAAIN,IAAa7B,GAAc+B,KACjC,SAAAK,GAAE,OAAIpB,EAAS,gBAADqB,OAAiBN,GAAU,CAAE7B,IAAKD,EAAMC,IAAKD,MAAO,CAAEU,QAASV,EAAMC,cA8E7F,OApEAe,EAAU,2BAA0B,eAAAtB,EAAA2C,EAAAC,IAAAC,MAAE,SAAAC,EAAMC,GAAU,IAAAzC,EAAA0C,EAAAzC,EAAAE,EAAAI,EAAA,OAAA+B,IAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAGxB,OAF5BtB,EAAMuB,OAAO3C,EAAgBqC,GAEzBzC,EAAQwB,EAAMwB,WAAUJ,EAAAE,KAAA,EAMlBxB,EAAO2B,KAAKvC,EAAOb,EAAA,CAC3BqD,OAAQ,QAAWC,YAAiBnD,EAAMK,WAC1C,OAAAqC,EAAAE,EAAAQ,KALAnD,EAAGyC,EAAHzC,IACAE,EAAKuC,EAALvC,MACAI,EAASmC,EAATnC,UAKFiB,EAAMuB,OAAOhD,EAAYE,EAAK,CAAE6B,OAAQ,SACxCN,EAAMuB,OAAO7C,EAAcC,GAC3BqB,EAAMuB,OAAOzC,EAAkBC,GAE/BY,IAAgB,yBAAAyB,EAAAS,UAAAb,OACjB,gBAAAc,GAAA,OAAA5D,EAAA6D,MAAA,KAAAC,YAlBmC,IAwBpCxC,EAAU,uBAAsB,eAAAyC,EAAApB,EAAAC,IAAAC,MAAE,SAAAmB,EAAAC,GAAA,IAAAjD,EAAAkD,EAAAC,EAAA1D,EAAAE,EAAAE,EAAA,OAAA+B,IAAAK,MAAA,SAAAmB,GAAA,cAAAA,EAAAjB,KAAAiB,EAAAhB,MAAA,OAChB,OADyBpC,EAAOiD,EAAPjD,QACzCS,IAAgB2C,EAAAhB,KAAA,EAONxB,EAAO2B,KAAKvC,EAAS,CAC7BwC,OAAQ,SACR,OAAAU,EAAAE,EAAAV,KANKS,EAAMD,EAAX3D,IACAE,EAAKyD,EAALzD,MACAE,EAAOuD,EAAPvD,QACAE,EAASqD,EAATrD,UAKFiB,EAAMuB,OAAOhD,EAAY8D,EAAQ,CAAE7B,QAAQ,IAC3CR,EAAMuB,OAAO7C,EAAcC,GAC3BqB,EAAMuB,OAAO3C,EAAgBC,GAC7BmB,EAAMuB,OAAOzC,EAAkBC,GAAW,yBAAAuD,EAAAT,UAAAK,OAC3C,gBAAAK,GAAA,OAAAN,EAAAF,MAAA,KAAAC,YAhB+B,IAsBhCxC,EAAU,6BAA4B,eAAAgD,EAAA3B,EAAAC,IAAAC,MAAE,SAAA0B,EAAMC,GAAI,IAAAlE,EAAAmE,EAAAlE,EAAAE,EAAAI,EAAA,OAAA+B,IAAAK,MAAA,SAAAyB,GAAA,cAAAA,EAAAvB,KAAAuB,EAAAtB,MAAA,OAGpB,OAF5B3B,IAEInB,EAAQwB,EAAMwB,WAAUoB,EAAAtB,KAAA,EAMlBxB,EAAO2B,KAAKvC,EAAOb,EAAA,CAC3BqD,OAAQ,OAAQgB,QAASf,YAAiBnD,EAAMK,WAChD,OAAA8D,EAAAC,EAAAhB,KALAnD,EAAGkE,EAAHlE,IACAE,EAAKgE,EAALhE,MACAI,EAAS4D,EAAT5D,UAKFiB,EAAMuB,OAAOhD,EAAYE,EAAK,CAAE6B,OAAQ,SACxCN,EAAMuB,OAAO7C,EAAcC,GAC3BqB,EAAMuB,OAAOzC,EAAkBC,GAAW,yBAAA6D,EAAAf,UAAAY,OAC3C,gBAAAI,GAAA,OAAAL,EAAAT,MAAA,KAAAC,YAhBqC,IAsB/B,CACLc,QAAO,WACL9C,EAAMuB,OAAOhD,EAAYY,EAAaV,IAAK,CAAE6B,OAAQ,YACrDN,EAAMuB,OAAO7C,EAAcS,EAAaR,MAAO,CAAE6B,QAAQ,IACzDR,EAAMuB,OAAO3C,EAAgBO,EAAaN,SAC1CmB,EAAMuB,OAAOzC,EAAkBK,EAAaJ,iB,+yBC/HnCgE,MAjBf,SAAcnF,GAAkD,IAA/CY,EAAKZ,EAALY,MAAOwE,EAAUpF,EAAVoF,WAAYC,EAAYrF,EAAZqF,aAAcC,EAAUtF,EAAVsF,WACxCC,EAAc3E,EAAM4E,YAAc,EAClCC,EAAc7E,EAAM4E,YAAc5E,EAAM8E,WACxCC,EAAcC,KAAKC,KAAKjF,EAAMkF,eAAiB,GAC/CC,EAASlD,YAAKjC,EAAM4E,aAAeG,GAAa,kBAAM,IAAG/E,EAAM4E,YAAc5E,EAAM8E,WAAaC,GAAa,WAC/G,OAAO/E,EAAM8E,WAAa9E,EAAMkF,eAAiB,KAClD,GAAM,kBAAMlF,EAAM4E,YAAcG,EAAc,KAC3CK,EAAQC,EAAIC,MAAMtF,EAAMkF,iBAAiBK,KAAI,SAACC,EAAGC,GACnD,IAAMvB,EAAOuB,EAAIN,EACjB,MAAO,CAAEO,SAAU1F,EAAM4E,cAAgBV,EAAMA,WAE7CyB,EAAmB,SAACzB,GAAI,OAAK,kBAAMO,EAAaP,KACtD,OAAQ0B,YAAE,MAAO,CAAEC,MAAO,qBACtBlB,GAAeiB,YAAE,OAAQ,CAAEC,MAAO,QAASC,QAAStB,IACpDY,EAAMG,KAAI,SAAAlG,GAAA,IAAGqG,EAAQrG,EAARqG,SAAUxB,EAAI7E,EAAJ6E,KAAI,OAAQ0B,YAAE,OAAQ,CAAEC,MAAA,SAAAzD,OAAgBsD,GAAY,aAAeI,QAASH,EAAiBzB,IAASA,MAC7HW,GAAee,YAAE,OAAQ,CAAEC,MAAO,QAASC,QAASpB,M,OCN7CqB,MATR,SAAgB3G,GAAwB,IAArBY,EAAKZ,EAALY,MAAO0E,EAAUtF,EAAVsF,WACvBsB,EAAahG,EAAM4E,cAAgB5E,EAAM8E,WACzCmB,EAASC,SAASC,cAAc,uCAChCC,EAAUC,YAAe,uBAAwB,CACnD,cAAeL,EACf,OAAUC,IAEd,OAAQL,YAAE,MAAO,CAAEC,MAAOO,EAASN,QAASpB,GAAc,uBCJ/C4B,MAJf,SAAiBlH,GAAY,IAATmH,EAAKnH,EAALmH,MACVN,EAASC,SAASC,cAAc,uCACtC,OAAQP,YAAE,MAAO,CAAEC,MAAA,0BAAAzD,OAAiC6D,GAAU,UAAYH,QAASS,GAAS,W,gsBCFjF,SAASC,EAAaxG,EAAKZ,GAAgE,IAA5DqH,EAAUrH,EAAVqH,WAAYC,EAAYtH,EAAZsH,aAAc9B,EAAWxF,EAAXwF,YAAa+B,EAAiBvH,EAAjBuH,kBACjF3G,EAAKH,IAAA,GACEG,GACA4G,YAAc,CACbH,aACA7B,cACA8B,eACAC,uBAGR,IAAI7B,EAAaE,KAAKC,KAAKjF,EAAMyG,WAAazG,EAAM0G,cAChDxB,EAAiBF,KAAK6B,IAAI/B,EAAY9E,EAAM2G,mBAMhD,OALA3G,EAAKH,IAAA,GACEG,GAAK,IACR8E,aACAI,mB,urBChBO,SAAS4B,EAAiB9G,GACrC,OAAAH,IAAA,GAAYG,GAAK,IAAE4E,YAAa5E,EAAM4E,YAAc,I,urBCDzC,SAASmC,EAAiB/G,GACrC,OAAAH,IAAA,GAAYG,GAAK,IAAE4E,YAAa5E,EAAM4E,YAAc,I,urBCDzC,SAASoC,EAAmBhH,EAAKZ,GAAY,IAAR8E,EAAI9E,EAAJ8E,KAChD,OAAArE,IAAA,GAAYG,GAAK,IAAE4E,YAAaV,I,WC8DrB+C,MApDf,SAAyBC,EAAO9H,GAA2C,IAA1B+H,EAAoB/H,EAAjC8B,UAAaiG,qBACvC3F,EAAQC,YAAM,CAChBC,MAAO,CACHf,aAAc,CACV8F,WAAY,KACZ7B,YAAa,KACb8B,aAAc,KACdC,kBAAmB,KACnB7B,WAAY,KACZI,eAAgB,SAYtBkC,EAAY,WACdC,YAAe,EAAG,MAEhBC,EAAiB,WACnB9F,EAAMuB,OAAO+D,IAEXS,EAAiB,WACnB/F,EAAMuB,OAAOgE,IAEXpB,EAAmB,SAACzB,GACtB1C,EAAMuB,OAAOiE,EAAoB,CAAE9C,UAEjCsD,EAAWC,YAAmBP,EAAQ,IAAI,WAC5C,IAAMlH,EAAQwB,EAAMwB,WACpB,OAAOhD,EAAM8E,WAAa,GAAMc,YAAE,MAAO,KACrCA,YAAE,MAAO,CAAEC,MAAO,oCACdD,YAAEG,EAAS,CAAE/F,MAAOA,EAAO0E,WAAY4C,IACvC1B,YAAEU,EAAU,CAAEC,MAAOa,KACzBxB,YAAE,MAAO,CAAEC,MAAO,mBACdD,YAAErB,EAAO,CAAEvE,MAAOA,EAAOyE,aAAckB,EAAkBjB,WAAY4C,EAAgB9C,WAAY+C,SAE7G/F,EAAMkG,GAAG,cAAeF,EAASG,QACjC,IAAMC,EAAuB,CAACd,EAAkBC,EAAkBC,GAOlE,OANAxF,EAAMkG,GAAG,eAAe,SAAC1H,EAAO6H,GACxBD,EAAqBE,SAASD,KAC9BV,EAAqBnH,EAAM4E,aAC3BmD,YAAoBb,EAAQc,IAAI,GAAI,+BAGrC,CAAEC,MArCK,SAAH5I,GAAqE,IAA/DoH,EAAUpH,EAAVoH,WAAYC,EAAYrH,EAAZqH,aAAc9B,EAAWvF,EAAXuF,YAAa+B,EAAiBtH,EAAjBsH,kBACpDnF,EAAMuB,OAAOyD,EAAc,CACvBC,aACA7B,cACA8B,eACAC,yB,urBCzBG,aAAUuB,GACrB,OAAO,SAAwB9I,GAAyB,IAAd0B,EAAQ1B,EAAhByB,KAAQC,SAClCqH,EAAalB,EAAgBiB,EAAOE,MAAO,CAC3ClH,UAAW,CACPiG,qBAAoB,SAACjD,GACjBpD,EAASC,SAAS,6BAA8BmD,OAIxDmE,EAAe,SAACrI,GAChBmI,EAAWF,MAAKpI,IAAC,GACVG,GAAK,IACR2G,kBAAmBuB,EAAOvB,sBAGlC,MAAO,CACHrC,QAAO,WACCgE,IAAIC,UAAUC,iBAElB1H,EAASE,UAAU,4BAA6BqH,IAEpDI,WAAU,WACFH,IAAIC,UAAUC,iBAElB1H,EAAS4H,YAAY,4BAA6BL","file":"chunk.46.df47255b4589176abae7.57dfa8cb.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_FILTERS(state, filters) {\n return { ...state,\n filters: { ...state.filters, ...filters }\n }\n}\n","export default function COMMIT_PAGINATOR(state, paginator) {\n return { ...state, paginator }\n}\n","import Dispatcher from './Dispatcher';\n\nimport createList from '../../createList';\n\nimport UrlPlugin from '../../plugins/UrlPlugin';\nimport ItemsPlugin from '../../plugins/ItemsPlugin';\nimport FiltersPlugin from '../../plugins/FiltersPlugin';\nimport PaginatorPlugin from '../../plugins/PaginatorPlugin';\n\nexport let UserList = createList(Dispatcher)\n\nexport {\n UrlPlugin,\n ItemsPlugin,\n FiltersPlugin,\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_FILTERS from './commits/filters';\nimport COMMIT_PAGINATOR from './commits/paginator';\n\nimport { serializeFilters } from '../../plugins/FiltersPlugin';\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: [],\n filters: {},\n paginator: {},\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,\n to => dispatch('ItemsPlugin <~ replace', state.items),\n\n when => commitFn === COMMIT_FILTERS,\n to => dispatch('FiltersPlugin <~ update', state.filters),\n\n when => commitFn === COMMIT_PAGINATOR,\n to => dispatch('PaginatorPlugin <~ update', state.paginator),\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\n subscribe('FiltersPlugin ~> changed', async newFilters => {\n store.commit(COMMIT_FILTERS, newFilters);\n\n let state = store.getState();\n\n let {\n url,\n items,\n paginator,\n } = await loader.load(loadUrl, {\n format: 'json', ...serializeFilters(state.filters)\n });\n\n store.commit(COMMIT_URL, url, { action: 'push' });\n store.commit(COMMIT_ITEMS, items);\n store.commit(COMMIT_PAGINATOR, paginator);\n\n onScrollToTop();\n })\n\n /*\n Поменялся урл\n */\n\n subscribe('UrlPlugin ~> changed', async ({ loadUrl }) => {\n onScrollToTop();\n\n let {\n url: newUrl,\n items,\n filters,\n paginator,\n } = await loader.load(loadUrl, {\n format: 'json'\n });\n\n store.commit(COMMIT_URL, newUrl, { silent: true });\n store.commit(COMMIT_ITEMS, items);\n store.commit(COMMIT_FILTERS, filters);\n store.commit(COMMIT_PAGINATOR, paginator);\n })\n\n /*\n Изменилась страница\n */\n\n subscribe('PaginatorPlugin ~> changed', async page => {\n onScrollToTop();\n\n let state = store.getState();\n\n let {\n url,\n items,\n paginator,\n } = await loader.load(loadUrl, {\n format: 'json', page, ...serializeFilters(state.filters)\n });\n\n store.commit(COMMIT_URL, url, { action: 'push' });\n store.commit(COMMIT_ITEMS, items);\n store.commit(COMMIT_PAGINATOR, paginator);\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_FILTERS, initialState.filters);\n store.commit(COMMIT_PAGINATOR, initialState.paginator);\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"],"sourceRoot":""}