{"version":3,"file":"./modules/SortReviews.xxxxxxxx.js","mappings":"+OASA,MAAMA,EAAiB,uBAER,MAAMC,EAUjB,YAAOC,CAAMC,EAAmBH,GAC5BI,MAAMC,KAAKC,SAASC,iBAAiBJ,IAAWK,QAAQC,IAAuBA,EAAKC,QAAQC,oBAAmBC,SAASC,IACpH,IAAIZ,EAAKY,GACTA,EAAQH,QAAQC,kBAAoB,MAAM,GAElD,CAEA,WAAAG,CAAmBD,EAAgCE,EAAiC,CAAC,GAAlE,KAAAF,QAAAA,EAAgC,KAAAE,QAAAA,EAXzC,KAAAC,WAAqB,KAY3BC,KAAKF,SAAU,QAAWE,KAAKJ,QAASK,OAAOC,OAAOF,KAAKG,oBAAqBH,KAAKF,UACrFE,KAAKI,YAA2BJ,KAAKJ,QAAQS,cAAcL,KAAKF,QAAQQ,qBACxEN,KAAKO,aAA4BP,KAAKJ,QAAQS,cAAcL,KAAKF,QAAQU,kBACzER,KAAKS,WAAgCT,KAAKJ,QAAQS,cAAcL,KAAKF,QAAQY,oBAC7EV,KAAKW,MAAQX,KAAKY,eAClBZ,KAAKa,SAAwBb,KAAKW,MAAMG,eAAeT,cAAcL,KAAKF,QAAQiB,kBAElFf,KAAKgB,MACT,CAEU,IAAAA,GAIN,OAHAhB,KAAKiB,+BACAC,6BAEElB,IACX,CAIQ,YAAAY,GACJ,MAAMD,EAAQ,IAAI,UAAUX,KAAKJ,QAC7B,CACIuB,UAAWC,UAAc/B,SAASgC,cAAc,IAAIC,YAAY,qCAAqC,EACrGC,YAAaH,SAAYpB,KAAKwB,wBAAwBC,8BAK9D,OAFAd,EAAMe,eAAc,QAAwB1B,KAAKO,aAAaoB,YAEvDhB,CACX,CAGU,aAAAiB,CAAcC,GAEpB,OADA7B,KAAKW,MAAMmB,OACJ9B,IACX,CAEU,cAAA+B,GAEN,OADA/B,KAAKW,MAAMqB,QACJhC,IACX,CAIU,4BAAAiB,GAEN,OADAjB,KAAKI,YAAY6B,iBAAiB,SAAS,IAAMjC,KAAK4B,kBAC/C5B,IACX,CAEU,0BAAAkB,GACN,MAAMgB,EAAYlC,KAAKW,MAAMG,eACzBqB,GAAiB,OAAUD,EAAW,SAASE,MAAK,QAAI,EAAGC,YAAaA,KACxEC,EAAcH,EAAeC,MAAK,OAAOpC,KAAKuC,iBAC9CC,EAAeL,EAAeC,MAAK,OAAOpC,KAAKyC,iBAKnD,OAHAH,EAAYI,WAAUC,GAAU3C,KAAK4C,aAA0BD,KAC/DH,EAAaE,WAAU,IAAM1C,KAAK6C,cAE3B7C,IACX,CAEU,SAAA6C,GAON,OANA7C,KAAK8C,cAAc9C,KAAKD,YACnBgD,qBACAC,qBACAjB,iBACAkB,YAEEjD,IACX,CAEU,SAAAiD,GAEN,OADA,IAAI,UAASjD,KAAKkD,oBACXlD,IACX,CAEU,YAAA4C,CAAahD,GACnB,MAAMuD,EAAgB,GAAGnD,KAAKF,QAAQsD,mCAEtCpD,KAAKwB,yBACL,QAAS5B,EAASuD,GAElBnD,KAAKD,WAAaH,EAAQH,QAAQ4D,WACtC,CAGU,YAAAd,GACN,OAAO,QAAQ,KAAU,KAASvC,KAAKF,QAAQsD,uBACnD,CAEU,YAAAX,GACN,OAAO,QAAQ,KAAU,KAASzC,KAAKF,QAAQwD,gBACnD,CAEU,eAAAC,GACN,OAAO,SAAQ,CAACC,EAAmBnB,MAA0BA,EAAOoB,QAAQD,IAAY,IAAIxD,KAAKF,QAAQ4D,4BAC7G,CAGU,kBAAAV,GAGN,OAFAhD,KAAKF,QAAQ6D,UAAUC,SAEhB5D,IACX,CAGU,aAAA8C,CAAce,GAEpB,OADA7D,KAAKS,WAAWqD,MAAQD,GAAU7D,KAAKS,WAAWqD,MAC3C9D,IACX,CAEU,kBAAA+C,GAEN,OADA/C,KAAKkD,mBAAkClD,KAAKa,SAASR,cAAc,IAAIL,KAAKF,QAAQsD,oCAC7EpD,IACX,CAEU,qBAAAwB,GAEN,OADA,QAAoBrC,MAAMC,KAAKY,KAAKa,SAASkD,UAAW,GAAG/D,KAAKF,QAAQsD,oCACjEpD,IACX,CAEU,yBAAAyB,GAEN,OADAzB,KAAKkD,qBAAsB,QAASlD,KAAKkD,mBAAoB,GAAGlD,KAAKF,QAAQsD,oCACtEpD,IACX,CAEU,iBAAAG,GACN,MAAO,CACHG,oBAAqB,2BACrBE,iBAAkB,iBAClB8C,gBAAiB,4BACjBF,uBAAwB,uBACxBrC,iBAAkB,gBAClBL,mBAAoB,QACpBgD,0BAA2B,kBAC3BC,UAAW,CACPK,OAAQ,OACRJ,OAAQ,OACRK,UAAW,OACXC,WAAY,QAGxB,EAgBAlF,EAAKC,MAAMF,E,qFC7Kf,MAAMoF,EAAiB,CAAC,eAAgB,wBASzB,MAAMC,UAAqB,UAGtC,WAAAvE,CAAYD,EAAsBE,EAAyC,CAAC,GACxEuE,MAAMzE,EAASE,GAEfE,KAAKF,SAAU,QAAWE,KAAKJ,QAASI,KAAKF,SAE7CE,KAAKgB,MACT,CAEU,iBAAAb,GACN,MAAMmE,EAAaD,MAAMlE,oBAEzB,OAAO,OAAP,wBACOmE,GAAU,CACbC,qBAAsB,GAAGD,EAAWE,uBACpCC,2BAA4B,GAAGH,EAAWE,kCAC1CE,oBAAqB,GAAGJ,EAAWI,0CACnCC,WAAYvD,gBAAoBwD,OAAOC,OAAOC,aAAa,EAC3D3D,UAAWC,YACXG,YAAaH,YACb2D,WAAY3D,aAEpB,CAEA,UAAc4D,GACV,OAAO3F,SAAS4F,KAAKC,SAASlF,KAAKW,MACvC,CAEA,WAAAwE,GAMI,OALA,QAAWnF,KAAKW,MAAMN,cAAc,yBAA0B8D,GAEzDnE,KAAKgF,QAAQ,KAAUI,SAAQ,GACpCf,MAAMvC,OAEC9B,IACX,CAGA,UAAM8B,CAAKuD,EAAqB,QAC5B,MAAM,eACFb,EAAc,WACdG,EAAU,UACVxD,GACAnB,KAAKF,cAEH6E,IAEN3E,KAAKsF,aAEAtF,KAAKgF,QAAQ,KAAUI,SAAQ,IAEpC,QAAcpF,KAAKW,MAAMN,cAAc,yBAA0B8D,GAEjEE,MAAMvC,QAEN,SAA0B,IAAM9B,KAAKW,MAAM4E,UAAUC,IAAI,GAAGhB,aAE5DI,OAAOC,OAAOY,uBAERtE,IAENkE,GACJ,CAEA,WAAMrD,CAAMqD,EAAqB,QAC7B,MAAM,eACFb,EAAc,YACdjD,EAAW,WACXwD,GACA/E,KAAKF,cAEHyB,IAENmE,eAAeC,WAAW,WAE1B,QAAS3F,KAAKW,MAAO,GAAG6D,eAExB,SAA2B,MACvB,QAAcxE,KAAKW,MAAO,GAAG6D,UAAwB,GAAGA,cACxDH,MAAMrC,OAAO,GACd,MAEC3C,SAAS4F,KAAKM,UAAUL,SAAS,qBAAuB7F,SAAS4F,KAAKM,UAAUL,SAAS,yBACzF,KAAUU,cAERb,IAENM,GACJ,CAEA,UAAAC,GACI,IAAIO,EACAC,EACAC,EAAYL,eAAeM,QAAQ,UAEvC,GAAID,EAGA,GAFAF,EAAcI,KAAKC,MAAMH,GAErBF,EAAYM,SAASC,SAASC,MAAO,CACrC,IAAIC,EAAQT,EAAYU,WAAUC,GAAKA,GAAKJ,SAASC,OAAQ,EAC7DR,EAAcA,EAAYY,MAAM,EAAGH,GACnCR,EAAS,IAAID,EACjB,MACIC,EAAS,IAAID,EAAaO,SAASC,WAGvCP,EAAS,CAACM,SAASC,MAGvBX,eAAegB,QAAQ,SAAU,GAAGT,KAAKU,UAAUb,MAE/CA,EAAOc,OAAS,EAChB5G,KAAKW,MAAM4E,UAAUC,IAAI,2BAEzBxF,KAAKW,MAAM4E,UAAUsB,OAAO,0BAEpC,E,qFCzIJ,MAAM9H,EAAiB,8BAUR,MAAM+H,EAIjB,YAAO7H,CAAMC,EAAmBH,GAC5BI,MAAMC,KAAKC,SAASC,iBAAiBJ,IAAWK,QAAQC,IAAuBA,EAAKC,QAAQC,oBAAmBC,SAASC,IACpH,IAAIkH,EAAYlH,GAChBA,EAAQH,QAAQC,kBAAoB,MAAM,GAElD,CAEA,WAAAG,CAAmBD,EAA8BE,EAA8B,CAAC,GAA7D,KAAAF,QAAAA,EAA8B,KAAAE,QAAAA,EAC7CE,KAAKF,SAAU,QAAWE,KAAKJ,QAASK,OAAOC,OAAOF,KAAKG,oBAAqBH,KAAKF,UAErFE,KAAK+G,KAAO,IAAI,UAAK/G,KAAKJ,QAAS,CAAE+D,UAAW,CAAEC,OAAQ,KAAQ5D,KAAK4D,QAAQ,KAE/E5D,KAAKgB,MACT,CAEQ,IAAAA,GACJ,OAAOhB,IACX,CAEQ,YAAAgH,CAAaC,GAGjB,OAFgBjH,KAAKkH,aAAaD,EAASxH,QAAQ0H,SAAW,IAAMnH,KAAKoH,aAAapH,KAAKqH,aAAaJ,EAASxH,QAAQ0H,QAAS,cAGtI,CAEQ,YAAAD,CAAaC,GACjB,OAAOA,EAAQG,MAAM,KAAK,EAC9B,CAEQ,YAAAC,CAAaJ,GACjB,MAAMK,EAAS,CAAC,EACVC,EAASpI,SAASqI,cAAc,KACtCD,EAAOE,KAAOR,EAId,IAFA,IACIS,EADQH,EAAOI,OAAOC,UAAU,GACnBR,MAAM,KACdd,EAAI,EAAGA,EAAIoB,EAAKhB,OAAQJ,IAAK,CAClC,IAAIuB,EAAOH,EAAKpB,GAAGc,MAAM,KACzBE,EAAOO,EAAK,IAAMC,mBAAmBD,EAAK,GAC9C,CAEA,OAAOP,CACX,CAEQ,YAAAH,CAAaF,EAASc,GAC1B,MAAMC,EAAYlI,KAAKuH,aAAaJ,GAC9BgB,EAAgBnI,KAAKoI,UAAUH,GAKrC,OAHAC,EAAUD,GAAYE,EAAcF,GACpCC,EAAUG,eAAe,wBAA0BH,EAAUI,aAEtDJ,CACX,CAEQ,SAAAE,CAAUG,GACd,MAAMf,EAAS,CAAC,EACZtI,EAA8BG,SAASmJ,eAAe,QACtDzI,EAAab,GAAYA,EAAS4E,MAItC,OAFA0D,EAAOe,GAAY,CAACxI,GAEbyH,CACX,CAEQ,YAAAJ,CAAaI,GAEjB,OADAxH,KAAKyI,aAAejB,EAAmB,WAAE,GAClCvH,OAAOyI,KAAKlB,GAAQmB,KAAIC,GAAOA,EAAM,IAAMC,mBAAmBrB,EAAOoB,MAAOE,KAAK,IAC5F,CAEA,MAAAlF,GACI,MAAMmF,EAAyB1J,SAASgB,cAAcL,KAAKF,QAAQkJ,cAC/DC,EAAgC5J,SAASgB,cAAcL,KAAKF,QAAQoJ,oBAExE,IAAID,EACA,OAGJ,IAAI9B,EAAWnH,KAAKgH,aAAaiC,GACjC,MAAME,EAAM,IAAIC,eAmBhB,OAjBAD,EAAIE,OAAS,KACT,GAAIF,EAAIG,QAAU,KAAOH,EAAIG,OAAS,IAAK,CACvC,MAAMC,GAAkB,QAAwBJ,EAAIK,cAChDvC,EAAWsC,EAAgBlJ,cAAcL,KAAKF,QAAQkJ,eAAiBO,EAE3EvJ,KAAKyJ,aAAaV,GAClB/I,KAAK0J,qBAELX,EAAUpH,UAAYsF,EAAStF,SACnC,MACIgI,QAAQC,MAAM,sBAClB,EAGJT,EAAIrH,KAAK,MAAOqF,GAChBgC,EAAIU,OAEG7J,IACX,CAEQ,kBAAA0J,GACP,MAAMI,EAAyBzK,SAASgB,cAAcL,KAAKF,QAAQgK,wBAChEC,EAAgCD,aAAsB,EAAtBA,EAAwBzJ,cAAc,+BACtE2J,EAAkCF,aAAsB,EAAtBA,EAAwBzJ,cAAc,oDAEzE0J,IAAmBA,EAAiBE,MAAMC,WAAa,UACvDF,SAAAA,EAAoBzE,UAAUsB,OAAO,kDACxC,CAEA,QAAAsD,GACI,OAAOnK,KAAKF,QAAQsK,KACxB,CAEQ,YAAAX,CAAaV,GACjB,MAAMsB,EAAW,IAAIC,kBAAiB,KAClCD,EAASE,aACmBlL,SAASgB,cAAcL,KAAKF,QAAQkJ,cACnC3I,cAAcL,KAAKF,QAAQ0K,sBAEpDnL,SAASgC,cAAc,IAAIC,YAAY,yBACvCjC,SAASgC,cAAc,IAAIC,YAAY,gCAAiC,CAAEmJ,OAAQ,CAAEC,WAAY1K,KAAKyI,iBACzG,IAGJ4B,EAASM,QAAQ5B,EAAW,CAAE6B,WAAW,GAC7C,CAEQ,iBAAAzK,GACJ,MAAO,CACH6I,aAAc,sBACdwB,mBAAoB,gBACpBK,oBAAqB,qBACrB3B,mBAAoB,sBACpBY,uBAAwB,kCACxBM,MAAO,CAAC,EAEhB,EAgBAtD,EAAY7H,MAAMF,E,+DCxKP,MAAM+L,EAEjB,WAAAjL,CAAmBD,GAAA,KAAAA,QAAAA,EACfI,KAAKgB,MACT,CAEA,IAAAA,GACIhB,KAAK+K,gBAAgB/K,KAAKJ,QAAQoL,UACtC,CAEA,eAAAD,CAAgBE,GACRrG,OAAOC,OAAOqG,cACd,QAAS,CACLC,MAAO,WACPC,cAAe,OACfC,YAAa,OACbJ,WAAYA,EACZK,qBAAqB,GAajC,E,iKCrBJ,IAAIC,EAAmC,WACnC,SAASA,EAAkBC,EAAWC,GAClCzL,KAAKwL,UAAYA,EACjBxL,KAAKyL,UAAYA,CACrB,CAIA,OAHAF,EAAkBG,UAAUC,KAAO,SAAUC,EAAYC,GACrD,OAAOA,EAAOnJ,UAAU,IAAIoJ,EAAoBF,EAAY5L,KAAKwL,UAAWxL,KAAKyL,WACrF,EACOF,CACX,CATsC,GAUlCO,EAAqC,SAAUC,GAE/C,SAASD,EAAoBE,EAAaR,EAAWC,GACjD,IAAIQ,EAAQF,EAAOJ,KAAK3L,KAAMgM,IAAgBhM,KAI9C,OAHAiM,EAAMT,UAAYA,EAClBS,EAAMR,UAAYA,EAClBQ,EAAM3F,MAAQ,EACP2F,CACX,CAyBA,OAhCA,KAAkBH,EAAqBC,GAQvCD,EAAoBJ,UAAUQ,MAAQ,SAAUpI,GAC5C,IACIqI,EADAH,EAAchM,KAAKgM,YAEvB,IACIG,EAASnM,KAAKwL,UAAU1H,EAAO9D,KAAKsG,QACxC,CACA,MAAO8F,GAEH,YADAJ,EAAYpC,MAAMwC,EAEtB,CACApM,KAAKqM,eAAevI,EAAOqI,EAC/B,EACAL,EAAoBJ,UAAUW,eAAiB,SAAUvI,EAAOwI,GAC5D,IAAIN,EAAchM,KAAKgM,YACnBO,QAAQD,GACRN,EAAYQ,KAAK1I,IAGb9D,KAAKyL,WACLO,EAAYQ,KAAK1I,GAErBkI,EAAYS,WAEpB,EACOX,CACX,CAlCwC,CAkCtCY,EAAA,G,iCCpCF,MAAM3N,EAAiB,4BAER,MAAM4N,UAAkBvI,EAAA,QACnC,YAAOnF,CAAMC,EAAmBH,GAC5BI,MAAMC,KAAKC,SAASC,iBAAiBJ,IAAWK,QAAQC,IAAuBA,EAAKC,QAAQC,oBAAmBC,SAASC,IACpH,IAAI+M,EAAU/M,GACdA,EAAQH,QAAQC,kBAAoB,MAAM,GAElD,CAEA,WAAAG,CAAYD,EAAsBE,EAAyC,CAAC,GACxEuE,MAAMzE,EAASE,GAEfE,KAAK4M,gBACT,CAEU,iBAAAzM,GACN,MAAMmE,EAAaD,MAAMlE,oBAEzB,OAAO,OAAP,wBACOmE,GAAU,CACbC,qBAAsB,GAAGD,EAAWE,uBACpCC,2BAA4B,GAAGH,EAAWE,kCAC1CE,oBAAqB,GAAGJ,EAAWI,0CACnCC,WAAYvD,gBAAoByD,OAAOC,aAAa,EACpD3D,UAAWC,YAEXG,YAAaH,YACb2D,WAAY3D,aAEpB,CAEQ,cAAAwL,GACJ,MAAMC,GAAc,EAAAC,EAAA,GAAU9M,KAAK+M,aAAc,aAAc,CAAEC,SAAS,IAAQ5K,MAAK,EAAA7C,EAAA,IAAQ0N,GAAkBA,EAAE5K,SAAW4K,EAAEC,iBAC5HC,GAAY,EAAAL,EAAA,GAAUzN,SAAU,WAAY,CAAE2N,SAAS,IAAQ5K,MAAK,EAAAgL,EAAA,IAAI,IAAMC,uBAAsB,IAAMrN,KAAKsN,QAAQC,gBAAgB,cACvIC,GAAa,EAAAV,EAAA,GAAUzN,SAAU,YAAa,CAAE2N,SAAS,IAAQ5K,MAAK,EAAAuG,EAAA,IAAKsE,GAAkBA,EAAEQ,eAAe,GAAGC,YACjH,eAAElJ,GAAmBxE,KAAKF,QAiC9B,OA/BmB+M,EAAYzK,MAC3B,EAAAuG,EAAA,IAAKsE,GAAkBA,EAAEQ,eAAe,GAAGC,WAC3C,EAAAC,EAAA,IAAUC,IAAU,SAAAC,EAAA,KAAc,EAAAC,EAAAA,IAAGF,GAASJ,GACzCpL,MACG,EAAA2L,EAAA,GAAUZ,ID1DJ3B,EC2DI,MAAO,QAASxL,KAAKW,MAAO,GAAG6D,mBD1DvC,IAAdiH,IACAA,GAAY,GAET,SAAUI,GACb,OAAOA,EAAOmC,KAAK,IAAIzC,EAAkBC,EAAWC,GACxD,IANG,IAAmBD,EAAWC,CC2DoD,KAGtE/I,WAAU,EAAEkL,EAAQK,MAC3B,MAEIC,EAAaD,EAAQL,EACrBO,EAAgBD,GAFU,GADT7O,SAAS+O,gBAAgBC,cAKxCC,EAAS,CACXC,UAAW,cAAcC,KAAKC,IAAIP,EAAY,eAAeM,KAAKE,IAAI,EAAK,GAAMP,EAAgB,MACjGQ,WAAY,OACZC,SAAU,SACVC,QAASL,KAAKE,IAAI,EAAK,GAAMP,EAAgB,IAG7CA,EAAgB,EAChBnO,KAAKsN,QAAQwB,aAAa,SAAS,QAAoBR,KAEvDtO,KAAKgC,SACL,SAA2B,KACvBhC,KAAKsN,QAAQC,gBAAgB,QAAQ,GACtC,KACP,IAGGvN,IACX,CAEA,YAAAc,GACI,OAAOd,KAAKW,KAChB,EAgBAgM,EAAU1N,MAAMF,E","sources":["webpack:///./modules/Sort.ts","webpack:///./modules/LayerAdvance.ts","webpack:///./modules/SortReviews.ts","webpack:///./modules/NivTSort.ts","webpack:///../../../node_modules/rxjs/_esm5/internal/operators/takeWhile.js","webpack:///./modules/LayerPage.ts"],"sourcesContent":["import { fromEvent } from 'rxjs';\r\nimport { map, filter } from 'rxjs/operators';\r\nimport { partial } from '../helpers/functional';\r\nimport LayerPage from './LayerPage';\r\nimport { getOptions } from '../helpers/helperFunctions';\r\nimport { addClass, hasClass, removeClassFromList, createElementFromString } from '../helpers/DOMHelpers';\r\nimport { Optional } from '../typings/mapped-types';\r\nimport NivTSort from './NivTSort';\r\n\r\nconst moduleSelector = '[data-module=\"Sort\"]';\r\n\r\nexport default class Sort {\r\n protected layer: LayerPage;\r\n protected sortOpenBtn: HTMLElement;\r\n protected sortTmplNode: HTMLElement;\r\n protected sortSelect: HTMLSelectElement;\r\n protected sortList: HTMLElement;\r\n protected sortMethod: string = null;\r\n protected lastSelectedOption: HTMLElement;\r\n\r\n\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n new Sort(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement, protected options: Optional = {}) {\r\n this.options = getOptions(this.element, Object.assign(this.getDefaultOptions(), this.options));\r\n this.sortOpenBtn = this.element.querySelector(this.options.sortOpenBtnSelector);\r\n this.sortTmplNode = this.element.querySelector(this.options.sortTmplSelector);\r\n this.sortSelect = this.element.querySelector(this.options.sortSelectSelector);\r\n this.layer = this.getSortLayer();\r\n this.sortList = this.layer.getLayerNode().querySelector(this.options.sortListSelector);\r\n\r\n this.init();\r\n }\r\n\r\n protected init(): Sort {\r\n this.addHandlerOnSortOpenBtnClick()\r\n .addHandlerOnSortLayerClick();\r\n\r\n return this;\r\n }\r\n\r\n\r\n // Start: SortLayer\r\n private getSortLayer(): LayerPage {\r\n const layer = new LayerPage(this.element,\r\n {\r\n afterOpen: async () => { document.dispatchEvent(new CustomEvent('NiveaBasicTracking:reInitHandlers'))},\r\n beforeClose: async () => this.removeOptionSelection().recoverLastSelectedOption(),\r\n })\r\n\r\n layer.insertContent(createElementFromString(this.sortTmplNode.innerHTML));\r\n\r\n return layer;\r\n }\r\n\r\n\r\n protected openSortLayer(hide?: boolean): Sort {\r\n this.layer.open();\r\n return this;\r\n }\r\n\r\n protected closeSortLayer(): Sort {\r\n this.layer.close();\r\n return this;\r\n }\r\n // End: SortLayer\r\n\r\n // Start: Event handlers\r\n protected addHandlerOnSortOpenBtnClick(): Sort {\r\n this.sortOpenBtn.addEventListener('click', () => this.openSortLayer());\r\n return this;\r\n }\r\n\r\n protected addHandlerOnSortLayerClick(): Sort {\r\n const layerNode = this.layer.getLayerNode(),\r\n layerNodeClick = fromEvent(layerNode, 'click').pipe(map(({ target }) => target)),\r\n optionClick = layerNodeClick.pipe(filter(this.isListOption())),\r\n sortBtnClick = layerNodeClick.pipe(filter(this.isSortButton()));\r\n\r\n optionClick.subscribe(option => this.toggleOption(option));\r\n sortBtnClick.subscribe(() => this.applySort());\r\n\r\n return this;\r\n }\r\n\r\n protected applySort(): Sort {\r\n this.setSortMethod(this.sortMethod)\r\n .saveSelectedOption()\r\n .reloadFilterAction()\r\n .closeSortLayer()\r\n .trackSort();\r\n\r\n return this;\r\n }\r\n\r\n protected trackSort() {\r\n new NivTSort(this.lastSelectedOption);\r\n return this;\r\n }\r\n\r\n protected toggleOption(element: HTMLElement): void {\r\n const selectedClass = `${this.options.sortListOptionSelector}--selected`;\r\n\r\n this.removeOptionSelection();\r\n addClass(element, selectedClass);\r\n\r\n this.sortMethod = element.dataset.optionValue;\r\n }\r\n\r\n // Check functions\r\n protected isListOption(): (element: EventTarget) => boolean {\r\n return partial(hasClass, partial, this.options.sortListOptionSelector);\r\n }\r\n\r\n protected isSortButton(): (element: EventTarget) => boolean {\r\n return partial(hasClass, partial, this.options.sortBtnSelector);\r\n }\r\n\r\n protected isLayerCloseBtn(): (element: EventTarget) => boolean {\r\n return partial((className: string, target: HTMLElement) => !!target.closest(className), `.${this.options.sortLayerCloseBtnSelector}`);\r\n }\r\n\r\n // Start: FilterAction callbacks\r\n protected reloadFilterAction(): Sort {\r\n this.options.callbacks.reload();\r\n\r\n return this;\r\n }\r\n // End: FilterAction callbacks\r\n\r\n protected setSortMethod(method: string): Sort {\r\n this.sortSelect.value = method || this.sortSelect.value;\r\n return this;\r\n }\r\n\r\n protected saveSelectedOption(): Sort {\r\n this.lastSelectedOption = this.sortList.querySelector(`.${this.options.sortListOptionSelector}--selected`);\r\n return this;\r\n }\r\n\r\n protected removeOptionSelection(): Sort {\r\n removeClassFromList(Array.from(this.sortList.children), `${this.options.sortListOptionSelector}--selected`);\r\n return this;\r\n }\r\n\r\n protected recoverLastSelectedOption(): Sort {\r\n this.lastSelectedOption && addClass(this.lastSelectedOption, `${this.options.sortListOptionSelector}--selected`);\r\n return this;\r\n }\r\n\r\n protected getDefaultOptions(): Optional {\r\n return {\r\n sortOpenBtnSelector: '.nx-sort-button__wrapper',\r\n sortTmplSelector: '.nx-sort__tmpl',\r\n sortBtnSelector: 'nx-sort-filters__sort-btn',\r\n sortListOptionSelector: 'nx-sort-list__option',\r\n sortListSelector: '.nx-sort-list',\r\n sortSelectSelector: '#sort',\r\n sortLayerCloseBtnSelector: 'nx-layer__close',\r\n callbacks: {\r\n update: () => { },\r\n reload: () => { },\r\n saveState: () => { },\r\n resetState: () => { }\r\n }\r\n };\r\n }\r\n}\r\n\r\n// Hot Module Replacement\r\nif (module.hot) {\r\n let nodesCache: HMRNodes[] = Array.from(document.querySelectorAll(moduleSelector)).map((element: Node) => ({ nodeToReplace: element, nodeOrigin: element.cloneNode(true) }));\r\n\r\n Sort.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n Sort.setup(moduleSelector);\r\n });\r\n module.hot.dispose(() => {\r\n nodesCache.forEach(({ nodeToReplace, nodeOrigin }) => { nodeToReplace = nodeToReplace.parentElement.replaceChild(nodeOrigin.cloneNode(true), nodeToReplace) });\r\n });\r\n} else {\r\n Sort.setup(moduleSelector);\r\n}","import LayerBasic, { BasicLayerOptions } from './LayerBasic';\r\nimport { Optional } from '../typings/mapped-types';\r\nimport {\r\n getOptions,\r\n requestAnimationFrameTimer,\r\n requestNextAnimationFrame,\r\n IOSScroll,\r\n} from '../helpers/helperFunctions';\r\nimport {\r\n addClass,\r\n addClasses,\r\n removeClasses,\r\n} from '../helpers/DOMHelpers';\r\n\r\nconst spinnerClasses = ['nx-u-spinner', 'nx-u-spinner--medium'];\r\n\r\nexport interface LayerAdvanceOptions extends BasicLayerOptions {\r\n beforeOpen: AsyncCallback;\r\n afterOpen: AsyncCallback;\r\n beforeClose: AsyncCallback;\r\n afterClose: AsyncCallback;\r\n}\r\n\r\nexport default class LayerAdvance extends LayerBasic {\r\n protected options: LayerAdvanceOptions;\r\n\r\n constructor(element: HTMLElement, options: Optional = {}) {\r\n super(element, options);\r\n\r\n this.options = getOptions(this.element, this.options);\r\n\r\n this.init();\r\n }\r\n\r\n protected getDefaultOptions(): Optional {\r\n const defOptions = super.getDefaultOptions();\r\n\r\n return {\r\n ...defOptions,\r\n layerModifierClasses: `${defOptions.layerMainClass}--page`,\r\n layerCloseBtnModifierClass: `${defOptions.layerMainClass}__close-btn--page`,\r\n layerCloseIconClass: `${defOptions.layerCloseIconClass} nx-close-icon--thin`,\r\n beforeOpen: async () => { await window.NiveaX.initModules(); },\r\n afterOpen: async () => { },\r\n beforeClose: async () => { },\r\n afterClose: async () => { },\r\n };\r\n }\r\n\r\n protected get isOpen(): boolean {\r\n return document.body.contains(this.layer);\r\n }\r\n\r\n showSpinner(): LayerAdvance {\r\n addClasses(this.layer.querySelector('.nx-layer__wrapper'), ...spinnerClasses);\r\n\r\n if (!this.isOpen) IOSScroll.prevent(true);\r\n super.open();\r\n\r\n return this;\r\n }\r\n\r\n\r\n async open(callback: Callback = () => { }): Promise {\r\n const {\r\n layerMainClass,\r\n beforeOpen,\r\n afterOpen,\r\n } = this.options;\r\n\r\n await beforeOpen();\r\n\r\n this.backButton();\r\n\r\n if (!this.isOpen) IOSScroll.prevent(true);\r\n\r\n removeClasses(this.layer.querySelector('.nx-layer__wrapper'), ...spinnerClasses);\r\n\r\n super.open();\r\n\r\n requestNextAnimationFrame(() => this.layer.classList.add(`${layerMainClass}--open`));\r\n\r\n window.NiveaX.loadShopPrices();\r\n\r\n await afterOpen();\r\n\r\n callback();\r\n }\r\n\r\n async close(callback: Callback = () => { }): Promise {\r\n const {\r\n layerMainClass,\r\n beforeClose,\r\n afterClose,\r\n } = this.options;\r\n\r\n await beforeClose();\r\n\r\n sessionStorage.removeItem('layers');\r\n\r\n addClass(this.layer, `${layerMainClass}--closing`);\r\n\r\n requestAnimationFrameTimer(() => {\r\n removeClasses(this.layer, `${layerMainClass}--open`, `${layerMainClass}--closing`);\r\n super.close();\r\n }, 400);\r\n\r\n if (document.body.classList.contains('nx-u-lock-screen') || document.body.classList.contains('nx-u-prevent-scroll'))\r\n IOSScroll.allow();\r\n\r\n await afterClose();\r\n\r\n callback();\r\n }\r\n\r\n backButton(){\r\n let layersArray;\r\n let layers;\r\n let getLayers = sessionStorage.getItem('layers');\r\n\r\n if (getLayers) {\r\n layersArray = JSON.parse(getLayers);\r\n\r\n if (layersArray.includes(location.hash)) {\r\n let index = layersArray.findIndex(i => i == location.hash) + 1;\r\n layersArray = layersArray.slice(0, index);\r\n layers = [...layersArray]\r\n } else {\r\n layers = [...layersArray, location.hash]\r\n }\r\n } else {\r\n layers = [location.hash]\r\n }\r\n\r\n sessionStorage.setItem('layers', `${JSON.stringify(layers)}`);\r\n\r\n if (layers.length > 1) {\r\n this.layer.classList.add('nx-layer--show-back-tbn');\r\n } else {\r\n this.layer.classList.remove('nx-layer--show-back-tbn');\r\n }\r\n }\r\n}\r\n","import { getOptions } from '../helpers/helperFunctions';\r\nimport { createElementFromString } from '../helpers/DOMHelpers';\r\nimport Sort from './Sort';\r\n\r\nconst moduleSelector = '[data-module=\"SortReviews\"]';\r\n\r\ninterface Parameters {\r\n maxCount?: string,\r\n offset?: string,\r\n productItem?: string,\r\n sortOptions?: [],\r\n ratingFilter?: string\r\n}\r\n\r\nexport default class SortReviews {\r\n protected sort: Sort;\r\n private sortedOption: string;\r\n\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n new SortReviews(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement, private options: SortReviewsOptions = {}) {\r\n this.options = getOptions(this.element, Object.assign(this.getDefaultOptions(), this.options));\r\n\r\n this.sort = new Sort(this.element, { callbacks: { reload: () => { this.reload() } } });\r\n\r\n this.init();\r\n }\r\n\r\n private init(): SortReviews {\r\n return this;\r\n }\r\n\r\n private getReloadUrl(gridNode): string {\r\n const ajaxUrl = this.cleanAjaxUrl(gridNode.dataset.ajaxUrl) + '?' + this.encodeParams(this.replaceParam(gridNode.dataset.ajaxUrl, 'sortOption'));\r\n\r\n return ajaxUrl;\r\n }\r\n\r\n private cleanAjaxUrl(ajaxUrl) {\r\n return ajaxUrl.split('?')[0];\r\n }\r\n\r\n private getAllParams(ajaxUrl): Parameters {\r\n const params = {};\r\n const parser = document.createElement('a');\r\n parser.href = ajaxUrl;\r\n \r\n var query = parser.search.substring(1);\r\n var vars = query.split('&');\r\n for (var i = 0; i < vars.length; i++) {\r\n var pair = vars[i].split('=');\r\n params[pair[0]] = decodeURIComponent(pair[1]);\r\n }\r\n\r\n return params;\r\n }\r\n\r\n private replaceParam(ajaxUrl, newParam) {\r\n const oldParams = this.getAllParams(ajaxUrl),\r\n paramToChange = this.getParams(newParam);\r\n\r\n oldParams[newParam] = paramToChange[newParam];\r\n oldParams.hasOwnProperty('ratingFilter') ? delete oldParams.ratingFilter : \"\";\r\n\r\n return oldParams;\r\n }\r\n\r\n private getParams(paramKey): SortReviewsState {\r\n const params = {},\r\n selector = document.getElementById('sort'),\r\n sortMethod = selector && selector.value;\r\n\r\n params[paramKey] = [sortMethod];\r\n\r\n return params;\r\n }\r\n\r\n private encodeParams(params): string {\r\n this.sortedOption = params[\"sortOption\"][0];\r\n return Object.keys(params).map(key => key + '=' + encodeURIComponent(params[key])).join('&');\r\n }\r\n\r\n reload(): SortReviews {\r\n const container = document.querySelector(this.options.nodeSelector),\r\n ajaxUrlContainer = document.querySelector(this.options.sortAjaxUrlWrapper); \r\n\r\n if(!ajaxUrlContainer) {\r\n return;\r\n }\r\n \r\n let ajaxUrl = this.getReloadUrl(ajaxUrlContainer);\r\n const xhr = new XMLHttpRequest();\r\n\r\n xhr.onload = () => {\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n const responseElement = createElementFromString(xhr.responseText),\r\n gridNode = responseElement.querySelector(this.options.nodeSelector) || responseElement;\r\n \r\n this.onNodeChange(container);\r\n this.removeActiveFilter();\r\n \r\n container.innerHTML = gridNode.innerHTML;\r\n } else {\r\n console.error('The request failed!');\r\n }\r\n };\r\n\r\n xhr.open('GET', ajaxUrl);\r\n xhr.send();\r\n\r\n return this;\r\n }\r\n\r\n private removeActiveFilter() {\r\n const ratingAndReviewSection = document.querySelector(this.options.ratingAndReviewSection),\r\n productFilterBtn = ratingAndReviewSection?.querySelector('.nx-product-ratings__filter'),\r\n activeFilterRating = ratingAndReviewSection?.querySelector('.nx-product-ratings__rating-wrapper--link-active');\r\n \r\n productFilterBtn ? productFilterBtn.style.visibility = \"hidden\" : \"\";\r\n activeFilterRating?.classList.remove('nx-product-ratings__rating-wrapper--link-active');\r\n }\r\n\r\n getState(): SortReviewsState {\r\n return this.options.state;\r\n }\r\n\r\n private onNodeChange(container: HTMLElement): void {\r\n const observer = new MutationObserver(() => {\r\n observer.disconnect();\r\n let gridNode = document.querySelector(this.options.nodeSelector);\r\n const newLoadMore = gridNode.querySelector(this.options.loadMoreBtnWrapper);\r\n if (newLoadMore) {\r\n document.dispatchEvent(new CustomEvent('NiveaXLoadMoreLoaded'));\r\n document.dispatchEvent(new CustomEvent('niveax:RatingsAndReviews:sort', { detail: { sortOption: this.sortedOption } }));\r\n }\r\n });\r\n\r\n observer.observe(container, { childList: true });\r\n }\r\n\r\n private getDefaultOptions(): SortReviewsOptions {\r\n return {\r\n nodeSelector: '.nx-reviews-wrapper',\r\n loadMoreBtnWrapper: '.nx-load-more',\r\n loadMoreBtnSelector: '.nx-btn--load-more',\r\n sortAjaxUrlWrapper: '.nx-reviews-wrapper',\r\n ratingAndReviewSection: '.nx-product-ratings-and-reviews',\r\n state: {}\r\n };\r\n }\r\n}\r\n\r\n// Hot Module Replacement\r\nif (module.hot) {\r\n let nodesCache: HMRNodes[] = Array.from(document.querySelectorAll(moduleSelector)).map((element: Node) => ({ nodeToReplace: element, nodeOrigin: element.cloneNode(true) }));\r\n\r\n SortReviews.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n SortReviews.setup(moduleSelector);\r\n });\r\n module.hot.dispose(() => {\r\n nodesCache.forEach(({ nodeToReplace, nodeOrigin }) => { nodeToReplace = nodeToReplace.parentElement.replaceChild(nodeOrigin.cloneNode(true), nodeToReplace) });\r\n });\r\n} else {\r\n SortReviews.setup(moduleSelector);\r\n}","/// \r\nimport { addLayer } from '../ClassWithTracking/helpers';\r\nexport default class NivTSort {\r\n\r\n constructor(public element: HTMLElement) {\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.trackSortOption(this.element.innerText);\r\n }\r\n\r\n trackSortOption(eventLabel: string) {\r\n if (window.NiveaX.IsUAEnabled) {\r\n addLayer({\r\n event: 'ga_event',\r\n eventCategory: 'Sort',\r\n eventAction: 'Sort',\r\n eventLabel: eventLabel,\r\n eventNonInteraction: false\r\n });\r\n }\r\n \r\n // if (window.NiveaX.IsGA4Enabled) { // this has moved into tracking framework now\r\n // addLayer({\r\n // event: 'ga4_event',\r\n // event_name: 'sort',\r\n // sort_title: eventLabel,\r\n // _clear: true\r\n // });\r\n // }\r\n\r\n }\r\n}","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function takeWhile(predicate, inclusive) {\n if (inclusive === void 0) {\n inclusive = false;\n }\n return function (source) {\n return source.lift(new TakeWhileOperator(predicate, inclusive));\n };\n}\nvar TakeWhileOperator = /*@__PURE__*/ (function () {\n function TakeWhileOperator(predicate, inclusive) {\n this.predicate = predicate;\n this.inclusive = inclusive;\n }\n TakeWhileOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TakeWhileSubscriber(subscriber, this.predicate, this.inclusive));\n };\n return TakeWhileOperator;\n}());\nvar TakeWhileSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TakeWhileSubscriber, _super);\n function TakeWhileSubscriber(destination, predicate, inclusive) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.inclusive = inclusive;\n _this.index = 0;\n return _this;\n }\n TakeWhileSubscriber.prototype._next = function (value) {\n var destination = this.destination;\n var result;\n try {\n result = this.predicate(value, this.index++);\n }\n catch (err) {\n destination.error(err);\n return;\n }\n this.nextOrComplete(value, result);\n };\n TakeWhileSubscriber.prototype.nextOrComplete = function (value, predicateResult) {\n var destination = this.destination;\n if (Boolean(predicateResult)) {\n destination.next(value);\n }\n else {\n if (this.inclusive) {\n destination.next(value);\n }\n destination.complete();\n }\n };\n return TakeWhileSubscriber;\n}(Subscriber));\n//# sourceMappingURL=takeWhile.js.map\n","import {\r\n fromEvent,\r\n of,\r\n combineLatest,\r\n} from 'rxjs';\r\nimport {\r\n takeUntil,\r\n takeWhile,\r\n switchMap,\r\n filter,\r\n map,\r\n tap,\r\n} from 'rxjs/operators';\r\n\r\nimport LayerAdvance, { LayerAdvanceOptions } from './LayerAdvance';\r\nimport { Optional } from '../typings/mapped-types';\r\nimport { requestAnimationFrameTimer } from '../helpers/helperFunctions';\r\nimport { hasClass, objectToStyleString } from '../helpers/DOMHelpers';\r\n\r\nconst moduleSelector = '[data-module=\"LayerPage\"]';\r\n\r\nexport default class LayerPage extends LayerAdvance {\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n new LayerPage(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(element: HTMLElement, options: Optional = {}) {\r\n super(element, options);\r\n\r\n this.listenToEvents();\r\n }\r\n\r\n protected getDefaultOptions(): Optional {\r\n const defOptions = super.getDefaultOptions();\r\n\r\n return {\r\n ...defOptions,\r\n layerModifierClasses: `${defOptions.layerMainClass}--page`,\r\n layerCloseBtnModifierClass: `${defOptions.layerMainClass}__close-btn--page`,\r\n layerCloseIconClass: `${defOptions.layerCloseIconClass} nx-close-icon--thin`,\r\n beforeOpen: async () => { await NiveaX.initModules(); },\r\n afterOpen: async () => {\r\n },\r\n beforeClose: async () => { },\r\n afterClose: async () => { },\r\n };\r\n }\r\n\r\n private listenToEvents(): LayerPage {\r\n const touchStart$ = fromEvent(this.layerContent, 'touchstart', { passive: true }).pipe(filter((e: TouchEvent) => e.target === e.currentTarget)),\r\n touchEnd$ = fromEvent(document, 'touchend', { passive: true }).pipe(tap(() => requestAnimationFrame(() => this.wrapper.removeAttribute('style')))),\r\n touchMove$ = fromEvent(document, 'touchmove', { passive: true }).pipe(map((e: TouchEvent) => e.changedTouches[0].clientY)),\r\n { layerMainClass } = this.options;\r\n\r\n const layerMove$ = touchStart$.pipe(\r\n map((e: TouchEvent) => e.changedTouches[0].clientY),\r\n switchMap(startY => combineLatest(of(startY), touchMove$)\r\n .pipe(\r\n takeUntil(touchEnd$),\r\n takeWhile(() => !hasClass(this.layer, `${layerMainClass}--closing`))))\r\n );\r\n\r\n layerMove$.subscribe(([startY, moveY]) => {\r\n const offsetHeight = document.documentElement.offsetHeight,\r\n endPoint = offsetHeight * 0.3,\r\n translateY = moveY - startY,\r\n percentResult = translateY / endPoint;\r\n\r\n const styles = {\r\n transform: `translateY(${Math.max(translateY, 0)}px) scale(${Math.min(1 - (0.2 * percentResult), 1)})`,\r\n transition: 'none',\r\n overflow: 'hidden',\r\n opacity: Math.min(1 - (0.6 * percentResult), 1),\r\n }\r\n\r\n if (percentResult < 1) {\r\n this.wrapper.setAttribute('style', objectToStyleString(styles));\r\n } else {\r\n this.close();\r\n requestAnimationFrameTimer(() => {\r\n this.wrapper.removeAttribute('style');\r\n }, 300);\r\n }\r\n });\r\n\r\n return this;\r\n }\r\n\r\n getLayerNode(): HTMLElement {\r\n return this.layer;\r\n }\r\n}\r\n\r\n// Hot Module Replacement\r\nif (module.hot) {\r\n let nodesCache: HMRNodes[] = Array.from(document.querySelectorAll(moduleSelector)).map((element: Node) => ({ nodeToReplace: element, nodeOrigin: element.cloneNode(true) }));\r\n\r\n LayerPage.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n LayerPage.setup(moduleSelector);\r\n });\r\n module.hot.dispose(() => {\r\n nodesCache.forEach(({ nodeToReplace, nodeOrigin }) => { nodeToReplace = nodeToReplace.parentElement.replaceChild(nodeOrigin.cloneNode(true), nodeToReplace) });\r\n });\r\n} else {\r\n LayerPage.setup(moduleSelector);\r\n}"],"names":["moduleSelector","Sort","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","element","constructor","options","sortMethod","this","Object","assign","getDefaultOptions","sortOpenBtn","querySelector","sortOpenBtnSelector","sortTmplNode","sortTmplSelector","sortSelect","sortSelectSelector","layer","getSortLayer","sortList","getLayerNode","sortListSelector","init","addHandlerOnSortOpenBtnClick","addHandlerOnSortLayerClick","afterOpen","async","dispatchEvent","CustomEvent","beforeClose","removeOptionSelection","recoverLastSelectedOption","insertContent","innerHTML","openSortLayer","hide","open","closeSortLayer","close","addEventListener","layerNode","layerNodeClick","pipe","target","optionClick","isListOption","sortBtnClick","isSortButton","subscribe","option","toggleOption","applySort","setSortMethod","saveSelectedOption","reloadFilterAction","trackSort","lastSelectedOption","selectedClass","sortListOptionSelector","optionValue","sortBtnSelector","isLayerCloseBtn","className","closest","sortLayerCloseBtnSelector","callbacks","reload","method","value","children","update","saveState","resetState","spinnerClasses","LayerAdvance","super","defOptions","layerModifierClasses","layerMainClass","layerCloseBtnModifierClass","layerCloseIconClass","beforeOpen","window","NiveaX","initModules","afterClose","isOpen","body","contains","showSpinner","prevent","callback","backButton","classList","add","loadShopPrices","sessionStorage","removeItem","allow","layersArray","layers","getLayers","getItem","JSON","parse","includes","location","hash","index","findIndex","i","slice","setItem","stringify","length","remove","SortReviews","sort","getReloadUrl","gridNode","cleanAjaxUrl","ajaxUrl","encodeParams","replaceParam","split","getAllParams","params","parser","createElement","href","vars","search","substring","pair","decodeURIComponent","newParam","oldParams","paramToChange","getParams","hasOwnProperty","ratingFilter","paramKey","getElementById","sortedOption","keys","map","key","encodeURIComponent","join","container","nodeSelector","ajaxUrlContainer","sortAjaxUrlWrapper","xhr","XMLHttpRequest","onload","status","responseElement","responseText","onNodeChange","removeActiveFilter","console","error","send","ratingAndReviewSection","productFilterBtn","activeFilterRating","style","visibility","getState","state","observer","MutationObserver","disconnect","loadMoreBtnWrapper","detail","sortOption","observe","childList","loadMoreBtnSelector","NivTSort","trackSortOption","innerText","eventLabel","IsUAEnabled","event","eventCategory","eventAction","eventNonInteraction","TakeWhileOperator","predicate","inclusive","prototype","call","subscriber","source","TakeWhileSubscriber","_super","destination","_this","_next","result","err","nextOrComplete","predicateResult","Boolean","next","complete","Subscriber","LayerPage","listenToEvents","touchStart$","fromEvent","layerContent","passive","e","currentTarget","touchEnd$","tap","requestAnimationFrame","wrapper","removeAttribute","touchMove$","changedTouches","clientY","switchMap","startY","combineLatest","of","takeUntil","lift","moveY","translateY","percentResult","documentElement","offsetHeight","styles","transform","Math","max","min","transition","overflow","opacity","setAttribute"],"sourceRoot":""}