{"version":3,"file":"search.bundle.js","mappings":"uBAAIA,E,sBCYoDC,E,2DCP3CC,EAAK,SAACC,GACjB,OAAAA,GAAU,KAAOA,EAAS,GAA1B,EC0BIC,EAAsB,CACxBC,YAAa,GACbC,YAAa,GACbC,aAAc,CAAC,EACfC,WAAY,KACZC,QAAS,GACTC,WAAW,EACXC,UAAW,MAOFC,EAAgB,SAACJ,GAC1B,OAAAJ,EAAMI,WAAaA,CAAnB,EAESK,EAAa,SAACJ,GACvB,OAAAL,EAAMK,QAAUA,EAAQK,KAAI,SAAAC,GAAK,OAC7BC,MAAQD,EAAEC,MAAiBC,WAAWb,EAAMI,WAAWU,oBAAqB,cAAOd,EAAMI,WAAWU,oBAAmB,UACvHC,IAAKJ,EAAEK,IAFsB,GAAjC,EAKSC,EAAe,SAACX,GACzB,OAAAN,EAAMM,UAAYA,CAAlB,EAKSY,EAAiB,SAAChB,GAC3B,OAAAF,EAAME,YAAcA,EAAYQ,KAAI,SAAAC,GAAK,OACrCC,MAAOD,EAAEC,MACTG,IAAKJ,EAAEK,IAF8B,GAAzC,EAYSG,EAAgB,WACzB,OAAAnB,EAAMI,UAAN,EAESgB,EAAa,WACtB,OAAApB,EAAMK,OAAN,EAESgB,EAAe,WACxB,OAAArB,EAAMM,SAAN,EAESgB,EAAe,WACxB,OAAAtB,EAAMO,SAAN,EAESgB,EAAiB,WAC1B,OAAAvB,EAAME,WAAN,EAOSsB,EAAU,SAACpB,EAAoBE,GAMxCmB,OAAOC,MAAM,eAAgB,CAAEtB,WAAU,EAAEE,UAAS,GACxD,EAEaqB,GAAS,IAAAC,UAAS,KAAK,W,6HAAOC,G,oBAAA,IAAAA,IAAAA,GAAA,I,iDACvC,OAAIV,IAAgBW,OAAS,GACzBrB,EAAW,IACXS,EAAe,IACf,aACA,MAGCO,OAAOM,IAAI,wBACZN,OAAOO,GAAG,uBAAuB,WAC7B,OAAAR,EAAQL,IAAiBE,IAAzB,IAGO,ID/FWY,EC+FG,UAAGjC,EAAMC,aAAW,OAAGkB,MD/FV,yC,gEAC3B,SAAMe,MAAM,UAAGD,K,OAEhC,GAFME,EAAW,UAEZrC,EAAGqC,EAASpC,QACf,MAAM,IAAIqC,MAAyB,QAAnB,EAAAD,EAASE,kBAAU,QAAIF,EAASpC,OAAOuC,YAEzD,MAAO,CAAP,EAAOH,G,QCyFkEI,MAAK,SAAC5B,GAAM,ODtFvCwB,ECsFuDxB,GDtFrC,sBAAG6B,SAAO,W,gEAC7D,SAAML,EAASM,Q,OAE5B,IAFMA,EAAO,UAEJC,aAAe5C,EAAG2C,EAAKC,YAC9B,MAAM,IAAIN,MAAqB,QAAf,EAAAK,EAAKJ,kBAAU,QAAII,EAAKC,YAE1C,MAAO,CAAP,EAAOD,G,OANa,IAA0BN,CCsFuC,M,cAA7EQ,EAAS,SAEXd,GACMd,EAAM4B,aAAM,EAANA,EAAQtC,QAAQ,GAAGW,OAG3BC,GAAa,GACb2B,SAASC,SAASC,KAAO/B,IAI7BN,EAAWkC,EAAOtC,SAClBa,EAAeyB,EAAOzC,cAtEDS,EA0ErBoC,YAAW,WACF1B,KACDG,EAAQL,KAAiB,EACjC,GAAG,MA5EPnB,EAAMO,UAAYI,EA+ElB,a,IAhFwB,IAACA,EDrCCsB,C,UElBjBe,GAAqB,IAAAC,UAAQ,SAACC,QAAA,IAAAA,IAAAA,EAAA,KACvC,IAAMC,EAAiB1B,OAAO2B,WAAW,sBAAeF,EAAK,QACzDG,EAAUF,EAAeE,QAM7B,OAJAF,EAAeG,SAAW,SAACC,GACvB,aACAF,EAAUE,EAAMF,OACpB,EACO,WAAM,OAACA,CAAD,CACjB,ICJA,2B,8CAwCA,QAxCyB,aAIvB,YAAAG,KAAA,SAAKC,GACH,GAAKC,KAAKC,IAGV,OAAO,UAAQD,KAAKC,IACtB,EAEA,YAAAC,OAAA,SAAOH,GACLC,KAAKG,KAAKJ,EACZ,EAEA,YAAAK,eAAA,SAAeL,EAAkBM,GAC3BN,EAAEO,MAAMC,MAAQF,EAAEC,MAAMC,KAC1BP,KAAKG,KAAKJ,EACd,EAEA,YAAAS,SAAA,SAAST,G,QACFC,KAAKC,MAAOD,KAAKS,QAGlBT,KAAKC,MACPD,KAAKS,QAAS,EACA,QAAd,KAAAV,EAAEO,OAAMI,cAAM,gBAAGX,EAAEY,KACnBZ,EAAEY,IAAIC,aAAa,cAAe,QAClCb,EAAEY,IAAIC,aAAa,YAAa,SAEpC,EAEM,YAAAT,KAAN,SAAWJ,G,4GACT,OAAKA,EAAEO,MAAMC,KAGbP,KAAKS,QAAS,EACd,EAAAT,KAAW,GAAMxB,MAAMuB,EAAEO,MAAMC,KAAK1B,MAAK,SAAA5B,GAAK,OAAAA,EAAE4D,MAAF,MAH5C,I,cAGF,EAAKZ,IAAM,SACX,a,YAEJ,EAxCA,CAAyB,K,oBCenBxD,ILyGoB,IAAAyB,UAAS,KAAK,SAAO4C,GAAS,gD,uEAC9CC,EAAaD,EAAKE,YAAYD,WAAWE,MACzCC,EAAcJ,EAAKE,YAAYE,YAAYD,MAE7CF,GAAcG,EACd,IAAM,IAAAC,KAAY,WAAIpD,OAAgB,QAAC,6CAAqCgD,EAAU,wBAAgBG,IACjGrC,MAAK,SAAAuC,GAAO,OAAAC,KAAKC,MAAMF,EAAX,IACZvC,MAAK,SAAAuC,GACEA,EAAIG,QAAUH,EAAII,OAClBV,EAAKE,YAAYO,OAAON,MAAQG,EAAIG,OACpCT,EAAKE,YAAYQ,KAAKP,MAAQG,EAAII,MAEtCV,EAAKE,YAAYO,OAAOE,SAASC,UAAW,EAC5CZ,EAAKE,YAAYQ,KAAKC,SAASC,UAAW,EAC1C,YACJ,KAXJ,M,OACA,S,qCK9GmD,CACvDC,GAxBO,CACPC,YAAa,SACbC,UAAW,4BACXrF,YAAa,aACbsF,gBAAiB,kBACjBC,mBAAoB,0BACpBC,MAAO,UACPC,MAAO,cAkBPC,GAdkB,CAClBN,YAAa,WACbC,UAAW,wBACXrF,YAAa,cACbsF,gBAAiB,iBACjBC,mBAAoB,yBACpBC,MAAO,SACPC,MAAO,UAUEE,EAAiB,SAAwBC,GAClD,MAAuB,UAAnBrE,OAAOsE,QACA5F,EAAiB,GAAE2F,GAEvB3F,EAAiB,GAAE2F,EAC9B,ECvBIE,EAAWhD,EAAmB,MAC9BiD,EAAWjD,EAAmB,MAMlC,2B,qEACI,EAAAkD,MAAgB,E,CAsDpB,QAvD4B,aAIxB,YAAAtC,OAAA,SAAOH,GJsBmB,IAACxD,EIrBvByD,KAAKyC,gBAAkBvD,SAASwD,cAA2B,WJqBpCnG,EInBFwD,EAAEO,MAAM/D,YJoBjCD,EAAMC,YAAcA,CInBpB,EAEA,YAAAuD,KAAA,SAAKC,GAAL,WACI,OAAO,WAAK4C,WAAW,IAAAC,aAAY,mBAAoB5C,KAAKwC,MAAQ,SAC/DF,IACK,CACE,cAAQK,UAAU,UAAUE,KAAK,SAAQ,aAAY,SAASC,QAAS,WAAM,SAAKC,WAAWhD,GAAI,EAAKyC,KAAzB,GACzE,IAACQ,EAAG,CAACzC,IAAI,sDAEb,IAAC0C,EAAa,CAACT,KAAM,SAACvF,GAAM,SAAK8F,WAAWhD,EAAG9C,EAAnB,KAE9B,IAACiG,EAAS,CAACC,OAAQnD,KAAKwC,KAAMA,KAAM,SAACvF,GAAM,SAAK8F,WAAWhD,EAAG9C,EAAnB,IAGzD,EAEA,YAAAuD,SAAA,SAAST,GACLC,KAAKyC,gBAAgBW,UAAUC,OAAO,cAAerD,KAAKwC,KAC9D,EAEA,YAAAO,WAAA,SAAWhD,EAAGyC,GN4BY,IAACc,EM3BvBtD,KAAKwC,KAAOA,EACZF,MN0BuBgB,EM1BMtD,KAAKwC,KN2BtCtD,SAASwD,cAA+B,QAAQU,UAAUC,OAAO,kBAAmBC,IMzB5EtD,KAAKwC,OACSzC,EAAEY,IAAI+B,cAAc,UAC5Ba,QACNvD,KAAKwD,aAAazD,GAE1B,EAEA,YAAAyD,aAAA,SAAazD,GAAb,WACSC,KAAKwC,MAGVtD,SAASZ,GAAG,gBAAgB,SAACmF,GACH1D,EAAEY,IAAI+C,SAASD,EAAEE,UAKvCzE,SAAS0E,IAAI,gBACb,EAAKpB,MAAO,EACZtD,SAAS2E,KAAKT,UAAUU,OAAO,iBAC/B,aACJ,GACJ,EACJ,EAvDA,CAA4B,KA8D5B,2B,8CAsCA,QAtCwB,aACpB,YAAAhE,KAAA,SAAKC,G,MACD,OAAO,WAAK4C,UAAU,cAClB,WAAKA,UAAU,mBACX,aAAOA,UAAU,QAAQE,KAAK,OAAM,aAAaV,EAAe,eAAgB4B,YAAaxB,IAAa,UAAGJ,EAAe,eAAc,OAAQA,EAAe,aAAclB,MAAO,IAClL+C,QAAS,SAACP,GACNvE,SAAS2E,KAAKT,UAAUa,IAAI,iBAC5B,EAAoBR,EAAEE,OAAO1C,OAC7B,IACAiD,aAAa,IACjB,EACAC,OAAQ,YACmB,IAAnBpE,EAAEO,MAAM6C,QACRjE,SAAS2E,KAAKT,UAAUU,OAAO,gBACvC,EACAM,QAAS,SAACX,GAGN1D,EAAEO,MAAMkC,MAAK,GACb,EAAoBiB,EAAEE,OAAO1C,OAC7B,IACAiD,aAAa,IACjB,EACAG,WAAY,SAACZ,GACK,UAAVA,EAAErB,KACF,GAAa,EACrB,KACkB,QAArB,aAAqB,eAAEhE,QAAS,GAAK,cAAQuE,UAAU,QAAO,aAAaR,EAAe,SAAUW,QAAS,WAAM,SAAoB,GAApB,GAChH,IAACE,EAAG,CAACzC,IAAI,qDAEb,WAAKoC,UAAU,eACX,IAACK,EAAG,CAACzC,IAAI,uDAIjB,IAAC+D,EAAW,MAEpB,EACJ,EAtCA,CAAwB,KAwCxB,2B,8CAqBA,QArB0B,aACtB,YAAAxE,KAAA,SAAKC,G,QACD,OAAO,WAAK4C,UAAU,iBACI,QAArB,aAAqB,eAAEvE,QAAS,GAAK,WAAKuE,UAAU,kBAChD,IAAmBvE,OAAS,EACvB,UAAIuE,UAAU,WACX,IAAmB3F,KAAI,SAAAC,GAAK,qBAAI,SAAGsH,MAAM,OAAOnF,KAAMnC,EAAEI,IAAKsG,OAAO,QAAQb,QAAS,WAAM,UAAmB,EAAnB,GAA2B,UAAQ7F,EAAEC,QAApG,MAEV,QAArB,aAAqB,eAAEkB,QAAS,EAC5B,aAAI+D,EAAe,oBACnB,aAAIA,EAAe,wBAGhC,IAAuB/D,OAAS,GAAK,WAAKuE,UAAU,WACjD,YAAMA,UAAU,SAASR,EAAe,gBACxC,UAAIQ,UAAU,cACT,IAAuB3F,KAAI,SAAAC,GAAK,qBAAI,SAAGsH,MAAM,OAAOnF,KAAMnC,EAAEI,IAAKsG,OAAQ1G,EAAE0G,OAAQb,QAAS,WAAM,SAAc7F,EAAEC,OAAO,EAAvB,GAA+BD,EAAEC,OAAnG,MAIjD,EACJ,EArBA,CAA0B,KA0B1B,2B,8CA6BA,QA7B4B,aACxB,YAAA4C,KAAA,SAAKC,G,MACD,OAAO,WAAK4C,UAAU,kBAClB,WAAKA,UAAU,mBACX,cAAQA,UAAU,QAAO,aAAaR,EAAe,sBAAuBW,QAAS,WAAM,OAAA/C,EAAEO,MAAMkC,MAAK,EAAb,GACvF,IAACQ,EAAG,CAACzC,IAAI,0DAEb,aAAOoC,UAAU,QAAQE,KAAK,OAAOkB,YAAa5B,EAAe,aAAclB,MAAO,IAClF6B,QAAS,WAAM,OAAA/C,EAAEO,MAAMkC,MAAK,EAAb,EACf4B,QAAS,SAACX,GACN,EAAoBA,EAAEE,OAAO1C,OAC7B,IACAiD,aAAa,IACjB,EACAG,WAAY,SAACZ,GACK,UAAVA,EAAErB,KACF,GAAa,EACrB,KACkB,QAArB,aAAqB,eAAEhE,QAAS,GAAK,cAAQuE,UAAU,QAAO,aAAaR,EAAe,SAAUW,QAAS,WAAM,SAAoB,GAApB,GAChH,IAACE,EAAG,CAACzC,IAAI,qDAEb,WAAKoC,UAAU,eACX,IAACK,EAAG,CAACzC,IAAI,uDAIjB,IAAC+D,EAAW,MAEpB,EACJ,EA7BA,CAA4B,KNrI4BnI,EMoK7B,SAACqI,EAAGC,QAAA,IAAAA,IAAAA,EAAA,IAC3B,IAAMC,EAAO,CACTnI,YAAa,UAAGwB,OAAOoB,SAASwF,OAAM,iBAG1C,UAAQH,EAAG,CACPI,SAAU,SAAAjE,GAAO,OAAA6D,EAAEK,YAAYlE,EAAIA,IAAlB,EACjBb,KAAM,SAAAC,GAAK,WAAC+E,GAAM,WAAKJ,GAAZ,GAEnB,GN5KI,QMmKI,mBNlKCK,SAAQ,SAAA9H,GACL,IAAM+H,EAASC,MAAMC,KAAKjI,EAAEkI,iBAAiB,UACzCT,EAAY,KAChB,GAAIM,EAAO5G,OAAS,EAChBsG,EAAOM,EAAOhI,KAAI,SAAAC,GACd,IACI,OAAOoE,KAAKC,MAAMrE,EAAEgE,MACxB,CAAE,MAAOmE,GACL,OAAOnI,EAAEgE,KACb,CACJ,SACC,GAAI+D,EAAO,aAAcK,iBAC1B,IACIX,EAAOrD,KAAKC,MAAM0D,EAAO,GAAG/D,MAChC,CAAE,MAAOmE,GACLV,EAAOM,EAAO,GAAG/D,KACrB,CACJ9E,EAAGc,EAAGyH,EACV,G,GO/BJY,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CAGjDG,QAAS,CAAC,GAOX,OAHAE,EAAoBL,GAAUM,KAAKF,EAAOD,QAASC,EAAQA,EAAOD,QAASJ,GAGpEK,EAAOD,OACf,CAGAJ,EAAoBQ,EAAIF,ERzBpB3J,EAAW,GACfqJ,EAAoBS,EAAI,CAAC/G,EAAQgH,EAAUC,EAAIC,KAC9C,IAAGF,EAAH,CAMA,IAAIG,EAAeC,IACnB,IAASC,EAAI,EAAGA,EAAIpK,EAASkC,OAAQkI,IAAK,CAGzC,IAFA,IAAKL,EAAUC,EAAIC,GAAYjK,EAASoK,GACpCC,GAAY,EACPC,EAAI,EAAGA,EAAIP,EAAS7H,OAAQoI,MACpB,EAAXL,GAAsBC,GAAgBD,IAAaM,OAAOC,KAAKnB,EAAoBS,GAAGW,OAAOvE,GAASmD,EAAoBS,EAAE5D,GAAK6D,EAASO,MAC9IP,EAASW,OAAOJ,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACbrK,EAAS0K,OAAON,IAAK,GACrB,IAAI9B,EAAI0B,SACER,IAANlB,IAAiBvF,EAASuF,EAC/B,CACD,CACA,OAAOvF,CAnBP,CAJCkH,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAIpK,EAASkC,OAAQkI,EAAI,GAAKpK,EAASoK,EAAI,GAAG,GAAKH,EAAUG,IAAKpK,EAASoK,GAAKpK,EAASoK,EAAI,GACrGpK,EAASoK,GAAK,CAACL,EAAUC,EAAIC,EAqBjB,ESzBdZ,EAAoBsB,EAAKjB,IACxB,IAAIkB,EAASlB,GAAUA,EAAOmB,WAC7B,IAAOnB,EAAiB,QACxB,IAAM,EAEP,OADAL,EAAoBd,EAAEqC,EAAQ,CAAEE,EAAGF,IAC5BA,CAAM,ECLdvB,EAAoBd,EAAI,CAACkB,EAASsB,KACjC,IAAI,IAAI7E,KAAO6E,EACX1B,EAAoBlF,EAAE4G,EAAY7E,KAASmD,EAAoBlF,EAAEsF,EAASvD,IAC5EqE,OAAOS,eAAevB,EAASvD,EAAK,CAAE+E,YAAY,EAAMhG,IAAK8F,EAAW7E,IAE1E,ECNDmD,EAAoB6B,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOrH,MAAQ,IAAIsH,SAAS,cAAb,EAChB,CAAE,MAAO7D,GACR,GAAsB,iBAAX1F,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBwH,EAAoBlF,EAAI,CAACkH,EAAKC,IAAUf,OAAOgB,UAAUC,eAAe5B,KAAKyB,EAAKC,G,MCKlF,IAAIG,EAAkB,CACrB,OAAU,GAaXpC,EAAoBS,EAAEQ,EAAKoB,GAA0C,IAA7BD,EAAgBC,GAGxD,IAAIC,EAAuB,CAACC,EAA4BpD,KACvD,IAGIc,EAAUoC,GAHT3B,EAAU8B,EAAaC,GAAWtD,EAGhB4B,EAAI,EAC3B,GAAGL,EAASgC,MAAMC,GAAgC,IAAxBP,EAAgBO,KAAa,CACtD,IAAI1C,KAAYuC,EACZxC,EAAoBlF,EAAE0H,EAAavC,KACrCD,EAAoBQ,EAAEP,GAAYuC,EAAYvC,IAGhD,GAAGwC,EAAS,IAAI/I,EAAS+I,EAAQzC,EAClC,CAEA,IADGuC,GAA4BA,EAA2BpD,GACrD4B,EAAIL,EAAS7H,OAAQkI,IACzBsB,EAAU3B,EAASK,GAChBf,EAAoBlF,EAAEsH,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOrC,EAAoBS,EAAE/G,EAAO,EAGjCkJ,EAAqBC,KAAqC,+BAAIA,KAAqC,gCAAK,GAC5GD,EAAmBpD,QAAQ8C,EAAqBQ,KAAK,KAAM,IAC3DF,EAAmBG,KAAOT,EAAqBQ,KAAK,KAAMF,EAAmBG,KAAKD,KAAKF,G,KC7CvF,IAAII,EAAsBhD,EAAoBS,OAAEN,EAAW,CAAC,WAAW,IAAOH,EAAoB,QAClGgD,EAAsBhD,EAAoBS,EAAEuC,E","sources":["webpack://hema-foto-shopping/webpack/runtime/chunk loaded","webpack://hema-foto-shopping/./src/ts/utils.ts","webpack://hema-foto-shopping/./src/ts/fetch.ts","webpack://hema-foto-shopping/./src/ts/entries/search/logic.ts","webpack://hema-foto-shopping/./src/ts/mobile.ts","webpack://hema-foto-shopping/./src/ts/svg.tsx","webpack://hema-foto-shopping/./src/ts/entries/search/translation.ts","webpack://hema-foto-shopping/./src/ts/entries/search/search.tsx","webpack://hema-foto-shopping/webpack/bootstrap","webpack://hema-foto-shopping/webpack/runtime/compat get default export","webpack://hema-foto-shopping/webpack/runtime/define property getters","webpack://hema-foto-shopping/webpack/runtime/global","webpack://hema-foto-shopping/webpack/runtime/hasOwnProperty shorthand","webpack://hema-foto-shopping/webpack/runtime/jsonp chunk loading","webpack://hema-foto-shopping/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import { get } from \"oj-ajax\"\r\nimport { getRootElements } from \"oj-dom-utils\"\r\nimport { debounce } from \"oj-utils\"\r\nimport m from \"mithril\"\r\n\r\nexport const isTouchDevice = () =>\r\n \"ontouchstart\" in window\r\n\r\n\r\nexport const getFileExtensionFromString = (str: string) =>\r\n str.split(\".\")[1]\r\n\r\nexport const mounter = (selector: string, cb: (root: HTMLElement, data: T | null) => void) =>\r\n getRootElements(selector)\r\n .forEach(x => {\r\n const inputs = Array.from(x.querySelectorAll(\"input\"))\r\n let data: any = null\r\n if (inputs.length > 1)\r\n data = inputs.map(x => {\r\n try {\r\n return JSON.parse(x.value)\r\n } catch (err) {\r\n return x.value\r\n }\r\n })\r\n else if (inputs[0] instanceof HTMLInputElement)\r\n try {\r\n data = JSON.parse(inputs[0].value)\r\n } catch (err) {\r\n data = inputs[0].value\r\n }\r\n cb(x, data)\r\n })\r\n\r\nexport const downloadFile = (response: any, name: string) => {\r\n if (navigator.appVersion.toString().indexOf('.NET') > 0)\r\n window.navigator[\"msSaveBlob\"](response, name)\r\n else {\r\n const blob = new Blob([response], { type: response.type })\r\n const objectUrl = URL.createObjectURL(blob)\r\n const a = document.createElement(\"a\")\r\n a.style.display = \"none\"\r\n document.body.appendChild(a)\r\n a.href = objectUrl\r\n a.download = name\r\n a.click()\r\n URL.revokeObjectURL(objectUrl)\r\n }\r\n}\r\n\r\nexport const testMailAddress = (mail: string) =>\r\n /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/.test(mail)\r\n\r\nexport const loadScript = (src: string) =>\r\n new Promise((resolve, reject) => {\r\n const script = document.createElement(\"script\")\r\n script.type = \"text/javascript\"\r\n script.onload = resolve\r\n script.onerror = reject\r\n script.src = src\r\n document.body.appendChild(script)\r\n })\r\n\r\nexport const loadScriptSource = (txt: string) =>\r\n new Promise((resolve, reject) => {\r\n const script = document.createElement(\"script\")\r\n script.type = \"text/javascript\"\r\n script.onload = resolve\r\n script.onerror = reject\r\n script.innerHTML = txt\r\n document.body.appendChild(script)\r\n })\r\n\r\nexport const hideScrollbars = (hide: boolean) => {\r\n document.querySelector(\"body\").classList.toggle(\"hide-scrollbars\", hide);\r\n}\r\n\r\nexport const formatPrice = (price: number, currency = true) => {\r\n const formatedPrice = new Intl.NumberFormat(window.culture, {\r\n style: 'currency',\r\n currency: 'EUR',\r\n }).format(price);\r\n\r\n if (currency)\r\n return formatedPrice.replace(\",\", \".\")\r\n else\r\n return formatedPrice.replace(\",\", \".\").replace(\"€\", \"\").trim()\r\n}\r\n\r\nexport const formatHtmlPrice = (price: number) => {\r\n const formatNumber = new Intl.NumberFormat(window[\"culture\"], { minimumFractionDigits: 2 }).format(\r\n price,\r\n )\r\n const priceParts = formatNumber.toString().replace(\".\", \"\").split(\",\");\r\n\r\n if (priceParts[1] != \"00\") {\r\n return `${priceParts[0]}.${priceParts[1]}`\r\n } else {\r\n return `${priceParts[0]}`\r\n }\r\n}\r\n\r\ninterface ImageDimensions {\r\n width: number;\r\n height: number;\r\n}\r\n\r\nexport const getImageDimensions = (imageUrl): Promise => {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image(); // Create a new image object\r\n\r\n img.onload = function () {\r\n // Once the image is loaded, resolve the promise with the width and height\r\n resolve({ width: img.width, height: img.height });\r\n img.onload = null;\r\n img.src = '';\r\n };\r\n\r\n img.onerror = function () {\r\n // Reject the promise if there is an error loading the image\r\n reject(new Error(\"Error loading image.\"));\r\n };\r\n\r\n // Set the image source to the URL, which triggers the loading process\r\n img.src = imageUrl;\r\n });\r\n}\r\n\r\nexport const getAddress = debounce(500, async (form: any) => {\r\n const postalCode = form.getFields().postalCode.value\r\n const houseNumber = form.getFields().houseNumber.value\r\n\r\n if (postalCode && houseNumber) {\r\n await get(`/${window[\"culture\"]}/Checkout/FindAddress/?PostalCode=${postalCode}&HouseNumber=${houseNumber}`)\r\n .then(res => JSON.parse(res))\r\n .then(res => {\r\n if (res.street && res.city) {\r\n form.getFields().street.value = res.street\r\n form.getFields().city.value = res.city\r\n }\r\n form.getFields().street.validate.readonly = false\r\n form.getFields().city.validate.readonly = false\r\n m.redraw()\r\n })\r\n }\r\n})","\r\nexport interface IApiResponse {\r\n statusCode: number\r\n}\r\n\r\nexport const ok = (status: number) =>\r\n status >= 200 && status < 300\r\n\r\nexport const postJSON = async (endpoint: string, payload?: object) => {\r\n const response = await fetch(`${endpoint}`, {\r\n method: \"POST\",\r\n headers: { \"content-type\": \"application/json\" },\r\n body: JSON.stringify(payload || {})\r\n })\r\n\r\n if (!ok(response.status))\r\n throw new Error(response.statusText ?? response.status.toString())\r\n\r\n return response\r\n}\r\n\r\nexport const getJSON = async (endpoint: string) => {\r\n const response = await fetch(`${endpoint}`)\r\n\r\n if (!ok(response.status))\r\n throw new Error(response.statusText ?? response.status.toString())\r\n\r\n return response\r\n}\r\n\r\nexport const asJSON = async (response: Response): Promise => {\r\n const json = await response.json()\r\n\r\n if (json.statusCode && !ok(json.statusCode))\r\n throw new Error(json.statusText ?? json.statusCode)\r\n\r\n return json\r\n}\r\n","import m from \"mithril\"\r\n// import { ILink } from \"@baseline/utils/types\"\r\nimport { debounce } from \"oj-promise-utils\"\r\n// import { ea } from \"@baseline/components/ecommerceTracking/eventAggregator\"\r\n// import { asJSON, get, replaceApiArgs } from \"@baseline/utils/fetch\"\r\n\r\nimport { asJSON, getJSON } from \"../../fetch\"\r\n\r\ninterface IResult {\r\n results: any,\r\n suggestions: any[]\r\n}\r\n\r\nexport interface Itranslations {\r\n searchLabel?: string\r\n searchFor?: string\r\n searchResults?: string,\r\n suggestions?: string\r\n searchNoResults?: string\r\n SearchIntroduction?: string\r\n}\r\n\r\ninterface ISearchState {\r\n apiEndpoint: string\r\n suggestions: any[]\r\n translations: Itranslations\r\n searchTerm: string\r\n results: any[]\r\n submitted: boolean\r\n idleTimer: any\r\n}\r\n\r\nconst state: ISearchState = {\r\n apiEndpoint: \"\",\r\n suggestions: [],\r\n translations: {},\r\n searchTerm: null,\r\n results: [],\r\n submitted: false,\r\n idleTimer: null\r\n}\r\n\r\n// Setters\r\nexport const setApiEndpoint = (apiEndpoint: string) =>\r\n state.apiEndpoint = apiEndpoint\r\n\r\nexport const setSearchTerm = (searchTerm: string) =>\r\n state.searchTerm = searchTerm\r\n\r\nexport const setResults = (results: any[]) =>\r\n state.results = results.map(x => ({\r\n title: (x.title as string).replaceAll(state.searchTerm.toLocaleLowerCase(), `${state.searchTerm.toLocaleLowerCase()}`),\r\n url: x.uri\r\n }))\r\n\r\nexport const setSubmitted = (submitted: boolean) =>\r\n state.submitted = submitted\r\n\r\nexport const setIdleTimer = (x: any) =>\r\n state.idleTimer = x\r\n\r\nexport const setSuggestions = (suggestions: any[]) =>\r\n state.suggestions = suggestions.map(x => ({\r\n title: x.title,\r\n url: x.uri\r\n }))\r\n\r\nexport const setTranslations = (translations: Itranslations) =>\r\n state.translations = translations\r\n\r\n// Getters\r\nexport const getApiEndpoint = () =>\r\n state.apiEndpoint\r\n\r\nexport const getSearchTerm = () =>\r\n state.searchTerm\r\n\r\nexport const getResults = () =>\r\n state.results\r\n\r\nexport const getSubmitted = () =>\r\n state.submitted\r\n\r\nexport const getIdleTimer = () =>\r\n state.idleTimer\r\n\r\nexport const getSuggestions = () =>\r\n state.suggestions\r\n\r\nexport const getTranslations = () =>\r\n state.translations\r\n\r\n// Functions\r\n\r\nexport const sendGTM = (searchTerm: string, submitted: boolean) => {\r\n // ea.emit(submitted ? \"gtm:search\" : \"gtm:unsubmitSearch\", {\r\n // location_id: \"Header search bar\",\r\n // term: searchTerm,\r\n // })\r\n\r\n window.ojtag(\"search_event\", { searchTerm, submitted })\r\n};\r\n\r\nexport const search = debounce(500, async (redirect: boolean = false) => {\r\n if (getSearchTerm().length < 3) {\r\n setResults([])\r\n setSuggestions([])\r\n m.redraw()\r\n return\r\n }\r\n\r\n if (!window.has(\"beforeunload.search\"))\r\n window.on(\"beforeunload.search\", () =>\r\n sendGTM(getSearchTerm(), getSubmitted())\r\n )\r\n\r\n const result = await getJSON(`${state.apiEndpoint}${getSearchTerm()}`).then((x) => asJSON(x))\r\n\r\n if (redirect) {\r\n const url = result?.results[0].uri;\r\n\r\n if (url) {\r\n setSubmitted(true);\r\n document.location.href = url\r\n }\r\n }\r\n else {\r\n setResults(result.results)\r\n setSuggestions(result.suggestions)\r\n }\r\n\r\n setIdleTimer(\r\n setTimeout(() => {\r\n if (!getSubmitted())\r\n sendGTM(getSearchTerm(), false)\r\n }, 15000)\r\n )\r\n\r\n m.redraw()\r\n});\r\n\r\n","import m from \"mithril\"\r\nimport { memoize } from \"oj-utils\"\r\n\r\nexport const redrawOnBreakpoint = memoize((width: number = 768) => {\r\n const mediaQueryList = window.matchMedia(`(min-width: ${width}px)`)\r\n let matches = mediaQueryList.matches\r\n\r\n mediaQueryList.onchange = (event) => {\r\n m.redraw()\r\n matches = event.matches\r\n }\r\n return () => !matches\r\n})\r\n","import m from \"mithril\"\r\nimport { MithrilTsxComponent } from \"mithril-tsx-component\"\r\n\r\nexport interface ISvg {\r\n src: string\r\n onload?: (svg: SVGElement) => any\r\n}\r\n\r\nexport class Svg extends MithrilTsxComponent {\r\n svg: string\r\n loaded: boolean\r\n\r\n view(v: m.Vnode) {\r\n if (!this.svg)\r\n return\r\n\r\n return m.trust(this.svg)\r\n }\r\n\r\n oninit(v: m.Vnode) {\r\n this.load(v)\r\n }\r\n\r\n onbeforeupdate(v: m.Vnode, o: m.Vnode) {\r\n if (v.attrs.src !== o.attrs.src)\r\n this.load(v)\r\n }\r\n\r\n onupdate(v: m.VnodeDOM) {\r\n if (!this.svg || this.loaded)\r\n return\r\n\r\n if (this.svg) {\r\n this.loaded = true\r\n v.attrs.onload?.(v.dom as SVGElement)\r\n v.dom.setAttribute('aria-hidden', 'true')\r\n v.dom.setAttribute('focusable', 'false')\r\n }\r\n }\r\n\r\n async load(v: m.Vnode) {\r\n if (!v.attrs.src)\r\n return\r\n\r\n this.loaded = false\r\n this.svg = await fetch(v.attrs.src).then(x => x.text())\r\n m.redraw()\r\n }\r\n}\r\n","const NL = {\r\n searchLabel: \"zoeken\",\r\n searchFor: \"waar ben je naar op zoek?\",\r\n suggestions: \"suggesties\",\r\n searchNoResults: \"geen resultaten\",\r\n searchIntroduction: \"Zoek in ons assortiment\",\r\n close: \"sluiten\",\r\n clear: \"leeg maken\"\r\n\r\n}\r\n\r\nconst FR: typeof NL = {\r\n searchLabel: \"chercher\",\r\n searchFor: \"que recherchez-vous ?\",\r\n suggestions: \"suggestions\",\r\n searchNoResults: \"aucun résultat\",\r\n searchIntroduction: \"Rechercher notre gamme\",\r\n close: \"fermer\",\r\n clear: \"vide\"\r\n}\r\n\r\n\r\n\r\nconst translations: Record = {\r\n NL,\r\n FR\r\n}\r\n\r\nexport const getTranslation = (key: T): typeof NL[T] => {\r\n if (window.culture === \"fr-BE\")\r\n return translations[\"FR\"][key]\r\n\r\n return translations[\"NL\"][key]\r\n}\r\n\r\nexport type LanguageKey = keyof typeof NL\r\n","// import { ea } from \"@baseline/components/ecommerceTracking/eventAggregator\"\r\nimport { cleanString, debounce } from \"oj-utils\"\r\nimport m from \"mithril\"\r\nimport { MithrilTsxComponent } from \"mithril-tsx-component\"\r\nimport * as Logic from \"./logic\"\r\nimport { redrawOnBreakpoint } from \"../../mobile\"\r\nimport { Svg } from \"../../svg\"\r\nimport { mounter, hideScrollbars } from \"../../utils\"\r\nimport { getTranslation } from \"./translation\"\r\n\r\nlet isMobile = redrawOnBreakpoint(1023);\r\nlet isMedium = redrawOnBreakpoint(1130);\r\n\r\ninterface ISearch {\r\n apiEndpoint: string,\r\n}\r\n\r\nexport class Search extends MithrilTsxComponent {\r\n open: boolean = false;\r\n headerContainer: HTMLElement\r\n\r\n oninit(v: m.Vnode) {\r\n this.headerContainer = document.querySelector(\".header\");\r\n\r\n Logic.setApiEndpoint(v.attrs.apiEndpoint);\r\n }\r\n\r\n view(v: m.Vnode) {\r\n return
\r\n {isMobile()\r\n ? [\r\n ,\r\n this.openSearch(v, x)} />\r\n ]\r\n : this.openSearch(v, x)} />\r\n }\r\n
\r\n }\r\n\r\n onupdate(v: m.Vnode) {\r\n this.headerContainer.classList.toggle(\"search-open\", this.open);\r\n }\r\n\r\n openSearch(v, open: boolean) {\r\n this.open = open\r\n isMobile() && hideScrollbars(this.open)\r\n\r\n if (this.open) {\r\n const input = v.dom.querySelector(\".input\") as HTMLInputElement\r\n input.focus()\r\n this.clickOutside(v)\r\n }\r\n }\r\n\r\n clickOutside(v) {\r\n if (!this.open)\r\n return\r\n\r\n document.on(\"click.search\", (e) => {\r\n const isClickInside = v.dom.contains(e.target)\r\n\r\n if (isClickInside)\r\n return\r\n\r\n document.off(\"click.search\")\r\n this.open = false\r\n document.body.classList.remove(\"search-active\")\r\n m.redraw()\r\n })\r\n }\r\n}\r\n\r\ninterface ISearchBar {\r\n open: (x: boolean) => void\r\n isOpen: boolean\r\n}\r\n\r\nclass SearchBar extends MithrilTsxComponent {\r\n view(v: m.Vnode) {\r\n return
\r\n
\r\n {\r\n document.body.classList.add(\"search-active\")\r\n Logic.setSearchTerm(e.target.value)\r\n Logic.search()\r\n clearTimeout(Logic.getIdleTimer());\r\n }}\r\n onblur={() => {\r\n if (v.attrs.isOpen === false)\r\n document.body.classList.remove(\"search-active\")\r\n }}\r\n oninput={(e) => {\r\n // if (e.target.value.length > 2)\r\n // \r\n v.attrs.open(true)\r\n Logic.setSearchTerm(e.target.value)\r\n Logic.search()\r\n clearTimeout(Logic.getIdleTimer());\r\n }}\r\n onkeypress={(e) => {\r\n if (e.key === \"Enter\")\r\n Logic.search(true)\r\n }} />\r\n {Logic.getSearchTerm()?.length > 0 && }\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n }\r\n}\r\n\r\nclass SearchPanel extends MithrilTsxComponent<{}> {\r\n view(v) {\r\n return
\r\n {Logic.getSearchTerm()?.length > 2 &&
\r\n {Logic.getResults().length > 0\r\n ? \r\n : Logic.getSearchTerm()?.length > 3\r\n ?

{getTranslation(\"searchNoResults\")}

\r\n :

{getTranslation(\"searchIntroduction\")}

\r\n }\r\n
}\r\n {Logic.getSuggestions().length > 0 &&
\r\n {getTranslation(\"suggestions\")}\r\n \r\n
}\r\n
\r\n }\r\n}\r\n\r\ninterface ISearchOverlay {\r\n open: (x: boolean) => void\r\n}\r\nclass SearchOverlay extends MithrilTsxComponent {\r\n view(v: m.Vnode) {\r\n return
\r\n
\r\n \r\n v.attrs.open(true)}\r\n oninput={(e) => {\r\n Logic.setSearchTerm(e.target.value)\r\n Logic.search()\r\n clearTimeout(Logic.getIdleTimer());\r\n }}\r\n onkeypress={(e) => {\r\n if (e.key === \"Enter\")\r\n Logic.search(true)\r\n }} />\r\n {Logic.getSearchTerm()?.length > 0 && }\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n }\r\n}\r\n\r\nmounter(\"[data-m-search]\", (r, d = {}) => {\r\n const data = {\r\n apiEndpoint: `${window.location.origin}/api/search/`,\r\n }\r\n\r\n m.mount(r, {\r\n oncreate: dom => r.replaceWith(dom.dom),\r\n view: v => \r\n })\r\n})","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t\"search\": 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhema_foto_shopping\"] = self[\"webpackChunkhema_foto_shopping\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [\"vendor\"], () => (__webpack_require__(4821)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","cb","ok","status","state","apiEndpoint","suggestions","translations","searchTerm","results","submitted","idleTimer","setSearchTerm","setResults","map","x","title","replaceAll","toLocaleLowerCase","url","uri","setSubmitted","setSuggestions","getSearchTerm","getResults","getSubmitted","getIdleTimer","getSuggestions","sendGTM","window","ojtag","search","debounce","redirect","length","has","on","endpoint","fetch","response","Error","statusText","toString","then","Promise","json","statusCode","result","document","location","href","setTimeout","redrawOnBreakpoint","memoize","width","mediaQueryList","matchMedia","matches","onchange","event","view","v","this","svg","oninit","load","onbeforeupdate","o","attrs","src","onupdate","loaded","onload","dom","setAttribute","text","form","postalCode","getFields","value","houseNumber","get","res","JSON","parse","street","city","validate","readonly","NL","searchLabel","searchFor","searchNoResults","searchIntroduction","close","clear","FR","getTranslation","key","culture","isMobile","isMedium","open","headerContainer","querySelector","className","cleanString","type","onclick","openSearch","Svg","SearchOverlay","SearchBar","isOpen","classList","toggle","hide","focus","clickOutside","e","contains","target","off","body","remove","placeholder","onfocus","add","clearTimeout","onblur","oninput","onkeypress","SearchPanel","class","r","d","data","origin","oncreate","replaceWith","Search","forEach","inputs","Array","from","querySelectorAll","err","HTMLInputElement","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","splice","n","getter","__esModule","a","definition","defineProperty","enumerable","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","id","chunkLoadingGlobal","self","bind","push","__webpack_exports__"],"sourceRoot":""}