{"version":3,"file":"app_hobbycraft.js","mappings":"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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAII,MAAM00C,yBAAyB,SAAS10C,KAAK,CAAC;IAC1C;AACR;AACA;AACA;AACA;AACA;AACA;IACQ20C,eAAeA,CAACC,KAAK,EAAEj+C,IAAI,EAAE;MACzB,OAAO,IAAI,CAACwB,MAAM,CAACwD,SAAS,EAAEhF,IAAI,CAAC;IACvC;EACJ;EAEA,OAAO+9C,yBAAyB;AACpC;;;;;;;;;;;;;;;;;AC9F0C;AACU;;AAEpD;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA,6BAAe,oCAAUxgD,MAAe,EAAE;EACtC;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI,MAAMqN,SAAS,SAASrN,MAAM,CAAC;IAC3BE,KAAKA,CAAA,EAAG;MACJ,OAAO;QACHygD,WAAW,EAAE,IAAI;QACjBC,iBAAiB,EAAE,EAAE;QACrBhB,YAAY,EAAE,cAAc;QAC5BE,iBAAiB,EAAE,mBAAmB;QACtCe,kBAAkB,EAAE,IAAI;QACxBC,iBAAiB,EAAE,EAAE;QACrB,GAAG,KAAK,CAAC5gD,KAAK,CAAC;MACnB,CAAC;IACL;;IAEA;AACR;AACA;AACA;IACQyE,eAAeA,CAAA,EAAG;MACd,IAAI,CAAC/B,GAAG,CAAC,MAAM,CAAC,CAACoG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;IAC9C;;IAEA;AACR;AACA;AACA;IACQxD,eAAeA,CAAA,EAAG;MACd,IAAI,CAAC5C,GAA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;EAInC,OAAOC,UAAU;AACrB;;;;;;;;;;;;;;;AClEA;AACA;AACA;AACA;AACA,6BAAe,oCAAU17C,UAAyE,EAAE;EAChG;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI,MAAM27C,WAAW,SAAS37C,UAAU,CAAC;IACjCtN,KAAKA,CAAA,EAAG;MACJ,OAAO;QACH,GAAG,KAAK,CAACA,KAAK,CAAC,CAAC;QAChBuiD,cAAc,EAAE;MACpB,CAAC;IACL;EACJ;EAEA,OAAO0G,WAAW;AACtB;;;;;;;;;;;;;;;AClDA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAAe,oCAAU37C,UAAyE,EAAE;EAChG;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI,MAAM6B,aAAa,SAAS7B,UAAU,CAAC;IACnCtN,KAAKA,CAAA,EAAG;MACJ,OAAO;QACHkpD,eAAe,EAAE,CAAC;QAClBC,eAAe,EAAE,CAAC;QAClBC,aAAa,EAAE,CAAC;QAChBC,kBAAkB,EAAE,CAAC;QACrBC,gBAAgB,EAAE,uBAAuB;QACzCC,oBAAoB,EAAE,CAAC;QACvBC,sBAAsB,EAAE,CAAC;QACzBC,sBAAsB,EAAE,CAAC;QACzBC,mBAAmB,EAAE,QAAQ;QAC7BC,qBAAqB,EAAE,UAAU;QACjCC,qBAAqB,EAAE,UAAU;QACjCl5C,uBAAuB,EAAE,KAAK;QAC9B,G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,CAAC;QACd,IAAI,CAAC5iD,GAAG,CAAC,OAAO,CAAC,CAACoG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC;MAC7C;IACJ;IAEAsjD,eAAeA,CAAA,EAAG,CAAC,CAAC,CAAC;;IAErB;AACR;AACA;AACA;AACA;AACA;AACA;IACQ1lC,wBAAwBA,CAACiM,CAAC,EAAElvB,KAAK,EAAE;MAC/B,IAAIA,KAAK,EAAE;QAAEA,KAAK,CAACijB,wBAAwB,CAAC,CAAC;MAAE;IACnD;EACJ;EAEA,OAAOhV,WAAW;AACtB;;;;;;;;;;;;;;;;ACtR0C;AAE1C,MAAMX,OAAO,GAAGC,MAAM,CAACC,MAAM,CAAC;EAC1BE,MAAM,EAAE,EAAE;EACVC,QAAQ,EAAE,EAAE;EACZC,GAAG,EAAE,EAAE;EACPC,IAAI,EAAE,EAAE;EACRC,EAAE,EAAE,EAAE;EACNC,IAAI,EAAE;AACV,CAAC,CAAC;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6BAAe,oCAAUlE,UAAyE,EAAE;EAChG;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI,MAAMxF,YAAY,SAASwF,UAAU,CAAC;IAClCtN,KAAKA,CAAA,EAAG;MACJ,OAAO;QACHqsD,WAAW,EAAE,GAAG;QAChBC,OAAO,EAAE,EAAE;QACX,GAAG,KAAK,CAACtsD,KAAK,CAAC;MACnB,CAAC;IACL;;IAEA;AACR;AACA;AACA;IACQusD,WAAWA,CAAA,EAAG;MACV;MACA,IAAI,CA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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI,MAAMy7C,SAAS,SAASz7C,UAAU,CAAC;IAC/B;AACR;AACA;AACA;AACA;AACA;AACA;AACA;IACQ6H,OAAOA,CAACpI,EAAE,EAAEtJ,KAAK,EAAE;MAAE;MACjB;AACZ;AACA;AACA;MACY,IAAI,CAAChC,IAAI,CAAC,OAAO,CAAC;IACtB;EACJ;EAEA,OAAOsnD,SAAS;AACpB;;;;;;;;;;;;;;;AC1FA;AACA;AACA;AACA;AACA;AACA,6BAAe,oCAAUA,SAAuE,EAAE;EAC9F;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI,MAAMrzC,aAAa,SAASqzC,SAAS,CAAC;IAClCznD,IAAIA,CAAA,EAAG;MACH,KAAK,CAACA,IAAI,CAAC,CAAC;MACZ,IAAI,CAAC6T,OAAO,CAAC,CAAC;IAClB;;IAEA;AACR;AACA;AACA;AACA;AACA;IACQA,OAAOA,CAAA,EAAG;MACN,IAAI,CAAC,IAAI,CAAC0C,GAAG,CAAC,YAAY,CAAC,EAAE;QACzB;MACJ;MAEA,MAAM0rC,SAAS,GAAGhoB,MAAM,CAAC,IAAI,CAAC74B,GAAG,CAAC,OAAO,CAAC,CAACoG,IAAI,CAAC,WAAW,CAAC,CAAC;MAC7D,MAAMmlD,iBAAiB,GAAG,IAAI,CAACvrD,GAAG,CAAC,OAAO,CAAC,CAACsL,GAAG,CAAC,CAAC;MAEjD,IAAK,OAAOigD,iBAAiB,KAAK,QAAQ,IAAMA,iBAAiB,CAACpjD,MAAM,GAAG04C,SAAU,EAAE;QACnF;AAChB;AACA;AACA;AACA;QACgB,IAAI,CAAC7gD,GAAG,CAAC,OAAO,CAAC,CAACsL,GAAG,CAACigD,iBAAiB,CAACh/C,KAAK,CAAC,CAAC,EAAEs0C,SAAS,CAAC,CAAC;MAChE;MAEA,IAAI,CAAC7gD,GAAG,CAAC,YAAY,CAAC,CAAC+I,OAAO,CAACkK,MAAM,CAAC4tC,SAAS,GAAG,IAAI,CAAC7gD,GAAG,CAAC,OAAO,CAAC,CAACsL,GAAG,CAAC,CAAC,CAACnD,MAAM,CAAC,CAAC;IACtF;EACJ;EAEA,OAAO6K,aAAa;AACxB;;;;;;;;;;;;;;;;AChH0B;;AAE1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6BAAe,oCAAUqzC,SAA2D,EAAE;EAClF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI,MAAM+E,aAAa,SAAS/E,SAAS,CAAC;IAGlC/oD,KAAKA,CAAA,EAAG;MACJ,OAAO;QACHmuD,QAAQ,EAAE,EAAE;QACZJ,IAAI,EAAE,EAAE;QACR,GAAG,KAAK,CAAC/tD,KAAK,CAAC;MACnB,CAAC;IACL;;IAEA;AACR;AACA;AACA;IACQsB,IAAIA,CAAA,EAAG;MACH,KAAK,CAACA,IAAI,CAAC,CAAC;MAEZ,IAAI,CAAC8sD,QAAQ,CAAC,CAAC;IACnB;;IAEA;AACR;AACA;AACA;IACQA,QAAQA,CAAA,EAAG;MACP,MAAM/7C,KAAK,GAAG,IAAI,CAAC3P,GAAG,CAAC,OAAO,CAAC,CAACC,GAAG,CAAC,CAAC;MAErC,IAAI,CAAC0P,KAAK,EAAE;QACR;MACJ;MAEA,IAAI,CAAC07C,IAAI,GAAGG,iDAAK,CAAC77C,KAAK,EAAE;QACrB07C,IAAI,EAAE,IAAI,CAACM,OAAO,CAAC;MACvB,CAAC,CAAC;IACN;;IAEA;AACR;AACA;AACA;IACQp8C,SAASA,CAAA,EAAG;MACR;MACAwK,UAAU,CAAC,MAAM;QACb,IAAI,IAAI,CAACsxC,IAAI,EAAE;UACX,IAAI,CAACA,IAAI,CAACt7C,OAAO,CAAC,CAAC;QACvB;QAEA,IAAI,CAAC27C,QAAQ,CAAC,CAAC;MACnB,CAAC,CAAC;IACN;;IAEA;AACR;AACA;AACA;IACQC,OAAOA,CAAA,EAAG;MACN,IAAIN,IAAI;MAER,QAAQ,IAAI,CAAC/tD,KAAK,CAAC,CAAC,CAACmuD,QAAQ;QACzB,KAAK,QAAQ;UACTJ,IAAI,GAAG,IAAI5I,MAAM,CAAC,IAAI,CAACnlD,KAAK,CAAC,CAAC,CAAC+tD,IAAI,CAAC;UACpC;QACJ;UACIA,IAAI,GAAG,IAAI,CAAC/tD,KAAK,CAAC,CAAC,CAAC+tD,IAAI;MAChC;MAEA,OAAOA,IAAI;IACf;EACJ;EAEA,OAAOD,aAAa;AACxB;;;;;;;;;;;;;;;AC7FA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6BAAe,oCAAUvO,QAAqE,EAAE;EAC5F;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI,MAAM1pC,cAAc,SAAS0pC,QAAQ,CAAC;IAClCv/C,KAAKA,CAAA,EAAG;MACJ,OAAO;QACHuW,WAAW,EAAE,4BAA4B;QACzC+3C,WAAW,EAAE,aAAa;QAC1BC,YAAY,EAAE,cAAc;QAC5BC,cAAc,EAAE,gBAAgB;QAChCC,cAAc,EAAE,gBAAgB;QAChCx4C,4BAA4B,EAAE,EAAE;QAChC,GAAG,KAAK,CAACjW,KAAK,CAAC;MACnB,CAAC;IACL;;IAEA;AACR;AACA;AACA;AACA;IACQ0uD,YAAYA,CAAC3hD,EAAE,EAAE;MACb,MAAMy9C,OAAO,GAAGz9C,EAAE,IAAIA,EAAE,CAACvG,QAAQ,CAAC,CAAC;MAEnC,IAAIgkD,OAAO,IAAIA,OAAO,CAAC3/C,MAAM,EAAE;QAC3B,IAAI,CAAC8jD,kBAAkB,CAAC,CAAC;MAC7B;IACJ;;IAEA;AACR;AACA;AACA;IACQA,kBAAkBA,CAAA,EAAG;MACjB,IAAI,CAACjsD,GAAG,CAAC,gBAAgB,CAAC,CAAC8I,IAAI,CAAC,CAAC;IACrC;;IAEA;AACR;AACA;AACA;AACA;AACA;IACQsK,WAAWA,CAACvT,IAAI,EAAE;MACd,IAAIA,IAAI,CAACoD,OAAO,EAAE;QACd,IAAI,CAACjD,GAAG,CAAC,aAAa,CAAC,CAACgJ,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAChJ,GAAG,CAAC,gBAAgB,CAAC,CACrB+I,OAAO,CAAClJ,IAAI,CAACyT,GAAG,CAAC,CACjBxK,IAAI,CAAC,CAAC;QACX;AAChB;AACA;AACA;QACgB,IAAI,CAACjK,QAAQ,CAAC,CAAC,CAACE,IAAI,CAAC,YAAY,EAAE;UAC/BoF,kBAAkB,EAAE,IAAI,CAAC7G,KAAK,CAAC,CAAC,CAACiW;QACrC,CAAC,CAAC;MACN;MAEA,IAAI,CAAC1T,IAAI,CAACoD,OAAO,EAAE;QACf,IAAIpD,IAAI,CAAC2T,WAAW,EAAE;UAClBlF,MAAM,CAACmF,OAAO,CAAC5T,IAAI,CAAC2T,WAAW,CAAC,CAACjS,OAAO,CAAC,CAAC,CAAC6C,IAAI,EAAEsP,QAAQ,CAAC,KAAK;YAC3D;YACA,IAAI,CAAChP,OAAO,CAACN,IAAI,EAAEuP,SAAS,IAAIA,SAAS,CAACC,QAAQ,CAACF,QAAQ,CAAC,CAAC;UACjE,CAAC,CAAC;QACN;QAEA,IAAI7T,IAAI,CAACyT,GAAG,EAAE;UACV;UACA,IAAI,CAAC5O,OAAO,CAAC,IAAI,CAACpH,KAAK,CAAC,CAAC,CAACuW,WAAW,EAAEC,UAAU,IAAIA,UAAU,CAACF,QAAQ,CAAC/T,IAAI,CAACyT,GAAG,CAAC,CAAC;QACvF;MACJ;IACJ;EACJ;EAEA,OAAOH,cAAc;AACzB;;;;;;;;;;;;;;;;;ACnGsE;AACd;;AAExD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6BAAe,oCAAU/V,MAAe,EAAE;EACtC;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI,MAAM+uD,uBAAuB,SAAS/uD,MAAM,CAAC;IACzC;AACR;AACA;AACA;AACA;AACA;IACQgvD,oBAAoBA,CAACC,OAAO,GAAG,MAAM,EAAEC,KAAK,GAAG,EAAE,EAAE;MAC/C,IAAI,CAACA,KAAK,CAACnkD,MAAM,EAAE;QACf;QACAmkD,KAAK,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC;MACrE;;MAEA;MACAA,KAAK,CAACnwD,IAAI,CAAC,iCAAiC,CAAC;MAC7C,MAAM68C,QAAQ,GAAGsT,KAAK,CAAC9O,IAAI,CAAC,GAAG,CAAC;MAChC,IAAIxnC,MAAM,GAAG,EAAE;MAEf,IAAI,CAACb,GAAG,CAACk3C,OAAO,EAAEE,UAAU,IAAI;QAC5B,MAAMC,MAAM,GAAGD,UAAU,CAACtsD,GAAG,CAAC,CAAC;QAE/B,IAAIusD,MAAM,EAAE;UACR;UACAx2C,MAAM,GAAG6F,KAAK,CAACC,IAAI,CAAC0wC,MAAM,CAACzwC,gBAAgB,CAACi9B,QAAQ,CAAC,CAAC,CACjDvxC,MAAM,CAAC4C,EAAE,IAAI6hD,2EAAqB,CAAC7hD,EAAE,CAAC,CAAC;QAChD;MACJ,CAAC,CAAC;MAEF,OAAO2L,MAAM;IACjB;;IAEA;AACR;AACA;AACA;AACA;IACQy2C,yBAAyBA,CAACJ,OAAO,GAAG,MAAM,EAAE;MACxC;MACA,OAAO,IAAI,CAACD,oBAAoB,CAACC,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC9E;;IAEA;AACR;AACA;AACA;AACA;AACA;AACA;IACQK,UAAUA,CAACC,gBAAgB,GAAG,MAAM,EAAEL,KAAK,GAAG,EAAE,EAAEM,kBAAkB,GAAG,KAAK,EAAE;MAC1E,MAAMC,iBAAiB,GAAG,IAAI,CAACT,oBAAoB,CAACO,gBAAgB,EAAEL,KAAK,CAAC;MAE5E,IAAIO,iBAAiB,CAAC1kD,MAAM,EAAE;QAC1BjK,6DAAO,CAAC,MAAM;UACV;UACA2uD,iBAAiB,CAAC,CAAC,CAAC,CAAChhD,KAAK,CAAC,CAAC;UAE5B,IAAI+gD,kBAAkB,EAAE;YACpB54C,sEAAc,CAAC64C,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;UAC1C;QACJ,CAAC,EAAE,GAAG,CAAC;MACX;IACJ;;IAEA;AACR;AACA;AACA;AACA;AACA;IACQC,eAAeA,CAACH,gBAAgB,GAAG,MAAM,EAAEC,kBAAkB,GAAG,KAAK,EAAE;MACnE,MAAMG,sBAAsB,GAAG,IAAI,CAACN,yBAAyB,CAACE,gBAAgB,CAAC;MAE/E,IAAII,sBAAsB,CAAC5kD,MAAM,EAAE;QAC/BjK,6DAAO,CAAC,MAAM;UACV;UACA6uD,sBAAsB,CAAC,CAAC,CAAC,CAAClhD,KAAK,CAAC,CAAC;UAEjC,IAAI+gD,kBAAkB,EAAE;YACpB54C,sEAAc,CAAC+4C,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;UAC/C;QACJ,CAAC,EAAE,GAAG,CAAC;MACX;IACJ;;IAEA;AACR;AACA;AACA;AACA;IACQC,YAAYA,CAACC,cAAc,EAAE;MACzB,IAAIA,cAAc,EAAE;QAChB,IAAI,CAAC93C,GAAG,CAAC83C,cAAc,EAAGvuC,OAAO,IAAK;UAClC,MAAMwuC,OAAO,GAAGxuC,OAAO,CAACze,GAAG,CAAC,CAAC;UAE7B,IAAIitD,OAAO,IAAIhB,2EAAqB,CAACgB,OAAO,CAAC,EAAE;YAC3ChvD,6DAAO,CAAC,MAAMgvD,OAAO,CAACrhD,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;UACvC;QACJ,CAAC,CAAC;MACN;IACJ;EACJ;EAEA,OAAOsgD,uBAAuB;AAClC;;;;;;;;;;;;;;;;AChIsE;AAGtE;AACA;AACA;AACA;AACA,6BAAe,oCAAU/uD,MAAe,EAAE;EACtC;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI,MAAM+vD,2BAA2B,SAAS/vD,MAAM,CAAC;IAC7CE,KAAKA,CAAA,EAAG;MACJ,OAAO;QACH8vD,oBAAoB,EAAE,mBAAmB;QACzCC,mBAAmB,EAAE,kBAAkB;QACvCC,SAAS,EAAE,IAAI;QACfC,iBAAiB,EAAE,QAAQ;QAC3BC,YAAY,EAAE,WAAW;QACzBC,WAAW,EAAE,UAAU;QACvBC,YAAY,EAAE,GAAG;QACjB,GAAG,KAAK,CAACpwD,KAAK,CAAC;MACnB,CAAC;IACL;;IAEA;AACR;AACA;AACA;AACA;AACA;AACA;IACQqwD,mBAAmBA,CAAA,EAAG;MAClB,IAAI,IAAI,CAACrwD,KAAK,CAAC,CAAC,CAACgwD,SAAS,EAAE;QACxB,IAAI,CAACM,iBAAiB,CAAC,CAAC;QAExB;MACJ;MAEA,MAAMC,cAAc,GAAG,IAAI,CAACC,gBAAgB,CAAC,CAAC;MAE9C,IAAI,CAACD,cAAc,EAAE;QACjB,IAAI,CAACD,iBAAiB,CAAC,CAAC;MAC5B;IACJ;;IAEA;AACR;AACA;AACA;AACA;AACA;IACQG,oBAAoBA,CAAA,EAAG;MACnB,IAAI,IAAI,CAACzwD,KAAK,CAAC,CAAC,CAACgwD,SAAS,EAAE;QACxB,IAAI,CAACQ,gBAAgB,CAAC,CAAC;QAEvB;MACJ;MAEA,IAAI,CAACF,iBAAiB,CAAC,CAAC;IAC5B;;IAEA;AACR;AACA;AACA;AACA;IACQZ,YAAYA,CAACgB,KAAK,EAAE;MAChB,OAAO,IAAI,CAAC74C,GAAG,CAAC64C,KAAK,EAAGtvC,OAAO,IAAK;QAChC,MAAMwuC,OAAO,GAAGxuC,OAAO,CAACze,GAAG,CAAC,CAAC;QAE7B,IAAIitD,OAAO,EAAE;UAAEA,OAAO,CAACrhD,KAAK,CAAC,CAAC;QAAE;MACpC,CAAC,CAAC;IACN;;IAEA;AACR;AACA;AACA;IACQ+hD,iBAAiBA,CAAA,EAAG;MAChB,OAAO,IAAI,CAACZ,YAAY,CAAC,IAAI,CAAC1vD,KAAK,CAAC,CAAC,CAAC8vD,oBAAoB,CAAC,IACpD,IAAI,CAACa,oBAAoB,CAAC,CAAC;IACtC;;IAEA;AACR;AACA;AACA;AACA;IACQA,oBAAoBA,CAACvvC,OAAO,GAAG7Z,SAAS,EAAE;MACtC,IAAI,CAAC6Z,OAAO,EAAE;QACV;QACAA,OAAO,GAAG,IAAI,CAAC1e,GAAG,CAAC,IAAI,CAAC1C,KAAK,CAAC,CAAC,CAACiwD,iBAAiB,CAAC,CAACttD,GAAG,CAAC,CAAC;MAC5D;MAEA,IAAIye,OAAO,EAAE;QACT;QACA,KAAK,IAAI7F,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6F,OAAO,CAACzM,QAAQ,CAAC9J,MAAM,EAAE0Q,CAAC,EAAE,EAAE;UAC9C;UACA,MAAM4e,KAAK,GAAG/Y,OAAO,CAACzM,QAAQ,CAAC4G,CAAC,CAAC;UAEjC,IAAI4e,KAAK,KAAK,IAAI,CAACy2B,YAAY,CAACz2B,KAAK,CAAC,IAAI,IAAI,CAACw2B,oBAAoB,CAACx2B,KAAK,CAAC,CAAC,EAAE;YACzE,OAAO,IAAI;UACf;QACJ;MACJ;MAEA,OAAO,KAAK;IAChB;;IAEA;AACR;AACA;AACA;IACQq2B,gBAAgBA,CAAA,EAAG;MACf,OAAO,IAAI,CAACd,YAAY,CAAC,IAAI,CAAC1vD,KAAK,CAAC,CAAC,CAAC+vD,mBAAmB,CAAC,IACnD,IAAI,CAACc,mBAAmB,CAAC,CAAC;IACrC;;IAEA;AACR;AACA;AACA;AACA;IACQA,mBAAmBA,CAACzvC,OAAO,GAAG7Z,SAAS,EAAE;MACrC,IAAI,CAAC6Z,OAAO,EAAE;QACV;QACAA,OAAO,GAAG,IAAI,CAAC1e,GAAG,CAAC,IAAI,CAAC1C,KAAK,CAAC,CAAC,CAACiwD,iBAAiB,CAAC,CAACttD,GAAG,CAAC,CAAC;MAC5D;MAEA,IAAIye,OAAO,EAAE;QACT;QACA,KAAK,IAAI7F,CAAC,GAAG6F,OAAO,CAACzM,QAAQ,CAAC9J,MAAM,GAAG,CAAC,EAAE0Q,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;UACnD;UACA,MAAM4e,KAAK,GAAG/Y,OAAO,CAACzM,QAAQ,CAAC4G,CAAC,CAAC;UAEjC,IAAI4e,KAAK,KAAK,IAAI,CAACy2B,YAAY,CAACz2B,KAAK,CAAC,IAAI,IAAI,CAAC02B,mBAAmB,CAAC12B,KAAK,CAAC,CAAC,EAAE;YACxE,OAAO,IAAI;UACf;QACJ;MACJ;MAEA,OAAO,KAAK;IAChB;;IAEA;AACR;AACA;AACA;AACA;IACQy2B,YAAYA,CAACxvC,OAAO,EAAE;MAClB,IAAI,CAACwtC,2EAAqB,CAACxtC,OAAO,CAAC,EAAE;QACjC,OAAO,KAAK;MAChB;MAEA,IAAI;QACAA,OAAO,CAAC7S,KAAK,CAAC,CAAC;MACnB,CAAC,CAAC,OAAO4K,CAAC,EAAE;QACR;MAAA;MAGJ,OAAQlW,QAAQ,CAAC6tD,aAAa,KAAK1vC,OAAO;IAC9C;;IAEA;AACR;AACA;AACA;AACA;IACQ5V,IAAIA,CAAA,EAAG;MACH,KAAK,CAACA,IAAI,CAAC,CAAC;MAEZ,IAAI,CAAC,IAAI,CAACqM,GAAG,CAAC,IAAI,CAAC7X,KAAK,CAAC,CAAC,CAACkwD,YAAY,CAAC,IAAI,CAAC,IAAI,CAACr4C,GAAG,CAAC,IAAI,CAAC7X,KAAK,CAAC,CAAC,CAACmwD,WAAW,CAAC,EAAE;QAC7E,IAAI,CAACY,aAAa,CAAC,CAAC;MACxB;MAEA,OAAO,IAAI;IACf;;IAEA;AACR;AACA;AACA;IACQA,aAAaA,CAAA,EAAG;MACZ,IAAI,CAACl5C,GAAG,CAAC,IAAI,CAAC7X,KAAK,CAAC,CAAC,CAACiwD,iBAAiB,EAAEe,cAAc,IAAI;QACvD,MAAM;UAAEd,YAAY;UAAEC;QAAY,CAAC,GAAG,IAAI,CAACnwD,KAAK,CAAC,CAAC;QAElDgxD,cAAc,CAAC1zC,OAAO,CAClB,gCAAgC4yC,YAAY,2DAChD,CAAC;QACDc,cAAc,CAACvzC,MAAM,CACjB,gCAAgC0yC,WAAW,0DAC/C,CAAC;QAED,IAAI,CAAC74C,SAAS,CAAC,MAAM;UACjB,CAAC44C,YAAY,EAAEC,WAAW,CAAC,CAAClsD,OAAO,CAAEvB,GAAG,IAAK;YACzC,IAAI,CAACmV,GAAG,CAACnV,GAAG,EAAEqK,EAAE,IAAI;cAChBA,EAAE,CAAC+R,MAAM,CAAC,CAAC;YACf,CAAC,CAAC;UACN,CAAC,CAAC;QACN,CAAC,CAAC;MACN,CAAC,CAAC;IACN;;IAEA;AACR;AACA;AACA;IACQmyC,cAAcA,CAAA,EAAG;MACb,IAAI,CAAC35C,SAAS,CAAC1W,6DAAO,CAAC,MAAM,IAAI,CAAC0vD,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAACtwD,KAAK,CAAC,CAAC,CAACowD,YAAY,CAAC,CAAC;IACtF;EACJ;EAEA,OAAOP,2BAA2B;AACtC;;;;;;;;;;;;;;;ACrOA;AACA;AACA;AACA;AACA;AACA,6BAAe,oCAAUqB,iBAAwF,EAAE;EAC/G;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;EAEI,MAAMC,SAAS,SAASD,iBAAiB,CAAC;IACtClxD,KAAKA,CAAA,EAAG;MACJ,OAAO;QACHoxD,WAAW,EAAE,KAAK;QAClBC,aAAa,EAAE,KAAK;QACpBC,WAAW,EAAE,EAAE;QACfC,SAAS,EAAE,KAAK;QAChBC,eAAe,EAAE,KAAK;QACtB,GAAG,KAAK,CAACxxD,KAAK,CAAC;MACnB,CAAC;IACL;;IAEA;AACR;AACA;IACQsB,IAAIA,CAAA,EAAG;MACH,KAAK,CAACA,IAAI,CAAC,CAAC;MACZ,IAAI,CAACmwD,WAAW,CAAC,CAAC;MAClB,IAAI,CAACjkD,SAAS,CAAkBvD,IAAI,IAAK;QACrCA,IAAI,CAACkN,eAAe,GAAG,IAAI,CAACnX,KAAK,CAAC,CAAC,CAACoxD,WAAW;QAC/CnnD,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AAIE,QAAQ,IAAIF,cAAc,IAAIC,UAAU,EAAE;QAC5D3qC,KAAK,CAACtK,QAAQ,CAACgmC,UAAU,CAACxmC,UAAU,EAAE,CAAC,CAAC;MAC5C;IACJ;;IAEA;AACR;AACA;AACA;AACA;AACA;AACA;IACQqR,aAAaA,CAACtR,OAAoB,EAAE3d,KAAoB,EAAQ;MAC5D,IAAIA,KAAK,CAACsN,OAAO,KAAKA,OAAO,CAACohB,MAAM,IAAI1uB,KAAK,CAACsN,OAAO,KAAKA,OAAO,CAACG,KAAK,EAAE;QACrEzN,KAAK,CAACovB,eAAe,CAAC,CAAC;MAC3B;IACJ;EACJ;EAEA,OAAOlX,QAAQ;AACnB;;;;;;;;;;;;;;;ACrwBA;AACA;AACA;AACA;AACA;AACA,6BAAe,oCAAU/P,KAAiE,EAAE;EACxF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI,MAAMorD,aAAa,SAASprD,KAAK,CAAC;IAC9B;AACR;AACA;AACA;AACA;IACQqrD,OAAOA,CAAA,EAAG;MACN,IAAI,CAACtqD,UAAU,CAAC,CAAC;MACjB;AACZ;AACA;AACA;MACY,IAAI,CAAClL,IAAI,CAAC,SAAS,CAAC;IACxB;;IAEA;AACR;AACA;AACA;AACA;IACQy1D,kBAAkBA,CAAA,EAAG;MACjB,IAAI,CAACvqD,UAAU,CAAC,CAAC;MACjB;AACZ;AACA;AACA;MACY,IAAI,CAAClL,IAAI,CAAC,oBAAoB,CAAC;IACnC;EACJ;EAEA,OAAOu1D,aAAa;AACxB;;;;;;;;;;;;;;;;;ACrEkE;AACpB;;AAE9C;AACA;AACA;AACA;;AAEA,6BAAe,oCAAUl3D,MAAe,EAAE;EACtC;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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oCAAUte,KAAgE,EAAE;EACvF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI,MAAMqvD,WAAW,SAASrvD,KAAK,CAAC;IAC5B;AACR;AACA;AACA;AACA;IACQtK,IAAIA,CAAA,EAAS;MACT,KAAK,CAACA,IAAI,CAAC,CAAC;MACZ,IAAI,CAACC,QAAQ,CAAC,CAAC,CAACC,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;IACjD;;IAEA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ8F,SAASA,CAAC4zD,YAAiD,EAAEtxD,EAA4B,EAAiB;MACtG,IAAIuxD,SAAoE,GAAGD,YAAY,IAAI,CAAC,CAAC;MAE7F,MAAME,iBAAqC,GAAwB,IAAI,CAACrzD,cAAc,CAAC,cAAc,CAAC;MAEtG,IAAImzD,YAAY,YAAYE,iBAAiB,EAAE;QAC3CD,SAAS,GAAG;UACRx5D,GAAG,EAAWu5D,YAAY,CAAC34D,IAAI,CAAC,KAAK;QACzC,CAAC;QACD,MAAMm6B,WAAW,GAA6Bw+B,YAAY,CAAC34D,IAAI,CAAC,aAAa,CAAC;QAE9E,IAAIm6B,WAAW,IAAI1rB,MAAM,CAACuoB,IAAI,CAACmD,WAAW,CAAC,CAAC7xB,MAAM,EAAE;UAChDswD,SAAS,GAAGnqD,MAAM,CAAC+nB,MAAM,CAACoiC,SAAS,EAAEz+B,WAAW,CAAC;QACrD;MACJ;MAEA,IAAIy+B,SAAS,CAAC59C,OAAO,EAAE;QACnB,MAAM7W,OAAO,GAAG,KAAK,CAACY,SAAS,CAAC6zD,SAAS,EAAEvxD,EAAE,CAAC;;QAE9C;AAChB;AACA;AACA;QACgB,IAAI,CAACnI,IAAI,CAAC,MAAM,CAAC;QAEjB,OAAOiF,OAAO;MAClB;MAEA,IAAI,CAACy0D,SAAS,CAACx5D,GAAG,EAAE;QAChB,OAAO3C,OAAO,CAACuF,OAAO,CAAC,CAAC;MAC5B;MAEA,IAAI42D,SAAS,CAACn5D,WAAW,KAAK,MAAM,EAAE;QAClC,OAAOxB,kEAAY,CAAC26D,SAAS,CAACx5D,GAAG,EAAE4F,SAAS,EAAE,IAAI,CAAC,CAACrI,IAAI,CAACm8D,GAAG,IAAI;UAC5D,IAAIrqD,MAAM,CAACuoB,IAAI,CAAC8hC,GAAG,CAAC,CAACxwD,MAAM,EAAE;YACzBswD,SAAS,GAAGnqD,MAAM,CAAC+nB,MAAM,CAACoiC,SAAS,EAAEE,GAAG,CAAC;YACzC,MAAM30D,OAAO,GAAG,KAAK,CAACY,SAAS,CAAC6zD,SAAS,EAAEvxD,EAAE,CAAC;YAE9C,IAAI,CAACnI,IAAI,CAAC,MAAM,CAAC;YAEjB,OAAOiF,OAAO;UAClB;UAEA,OAAO1H,OAAO,CAACuF,OAAO,CAAC,CAAC;QAC5B,CAAC,CAAC;MACN,CAAC,MAAM;QACH,OAAOmD,qEAAe,CAACyzD,SAAS,CAACx5D,GAAG,CAAC,CAACzC,IAAI,CAACm8D,GAAG,IAAI;UAC9CF,SAAS,GAAGnqD,MAAM,CAAC+nB,MAAM,CAACoiC,SAAS,EAAE;YAAE59C,OAAO,EAAE89C;UAAI,CAAC,CAAC;UACtD,MAAM30D,OAAO,GAAG,KAAK,CAACY,SAAS,CAAC6zD,SAAS,EAAEvxD,EAAE,CAAC;UAE9C,IAAI,CAACnI,IAAI,CAAC,MAAM,CAAC;UAEjB,OAAOiF,OAAO;QAClB,CAAC,CAAC;MACN;IACJ;EACJ;EAEA,OAAOu0D,WAAW;AACtB;;;;;;;;;;;;;;;;;AC9L4D;AACb;;AAE/C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6BAAe,oCAAUn7D,MAAe,EAAE;EACtC;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI,MAAMksB,YAAY,SAASlsB,MAAM,CAAC;IAC9BE,KAAKA,CAAA,EAAG;MACJ,OAAO;QACH4b,eAAe,EAAE,IAAI;QACrB0/C,eAAe,EAAE,KAAK;QACtB37C,gBAAgB,EAAE,MAAM;QACxB47C,kBAAkB,EAAE,EAAE;QACtBC,iBAAiB,EAAE,EAAE;QACrBC,iBAAiB,EAAE,WAAW;QAC9BC,kBAAkB,EAAE,QAAQ;QAC5BC,cAAc,EAAE,QAAQ;QACxBC,kBAAkB,EAAE,YAAY;QAChCrvC,WAAW,EAAE,QAAQ;QACrBsvC,mBAAmB,EAAE,eAAe;QACpCC,gBAAgB,EAAE,YAAY;QAC9BC,aAAa,EAAE,IAAI;QACnBC,UAAU,EAAE,IAAI;QAChBC,UAAU,EAAE,GAAG;QACf,GAAG,KAAK,CAACj8D,KAAK,CAAC;MACnB,CAAC;IACL;;IAEA;AACR;AACA;AACA;IACQsB,IAAIA,CAAA,EAAG;MACH,KAAK,CAAC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AG;AACd,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,iBAAiB;AAC5B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,0DAA0D,OAAO;AACjE;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0CAA0C,SAAS;AACnD;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA,gBAAgB,YAAY;AAC5B;;AAEA;AACA,4DAA4D;AAC5D,gEAAgE;AAChE,oEAAoE;AACpE,wEAAwE;AACxE;AACA,2DAA2D,SAAS;AACpE;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B,WAAW,UAAU;AACrB,WAAW,GAAG;AACd,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B,WAAW,UAAU;AACrB,WAAW,GAAG;AACd,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B,WAAW,UAAU;AACrB,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,aAAa,cAAc;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,4DAA4D,YAAY;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B,aAAa,cAAc;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI,IAA6B;AACjC;AACA;;;;;;;;;;;;;;;;AC/UA;AACA;AACA;AACA;AACA;AACA,cAAc,uBAAuB;AACrC;AACA;AACA;AACA;AACA;AACA;;AAE8C;;;;;;;;;;;;;;;;;;;ACbO;AACf;AACX;;AAE3B,6CAA6C,6DAAe;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAK;;AAEgD;;;;;;;;;;;;;;;;;;AClET;AACN;;AAEtC,oCAAoC,cAAc;AAClD,8BAA8B,wDAAW;AACzC;;AAEA;;AAEA;AACA,YAAY,sCAAsC;AAClD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAK;;AAEiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3GwD;AACjC;AACP;AAC3B;AACoC;AACnB;AACS;AAC+B;AAC9C;AACH;AACL;AACH;AACiB;AACG;AACA;AACE;AACZ;AACR;AACD;;AAE5B;;AAEA,wEAAwE,cAAc;AACtF;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,cAAc;AAC5B;AACA;;AAEA;AACA,YAAY,kDAAkD;AAC9D,YAAY,QAAQ;AACpB;AACA;AACA,4BAA4B,wDAAW,0FAA0F,6EAA8B,WAAW,6DAAe;AACzL,kBAAkB,8DAAU;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,uDAAK,wCAAwC,+DAAW;AAClF;AACA;AACA,OAAO;AACP;AACA;AACA,mBAAmB,8DAAU;AAC7B;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2FAA2F,aAAa;AACxG;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+HAA+H;AAC/H;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yDAAyD,aAAa;AACtE;AACA;AACA;AACA,QAAQ;AACR,iBAAiB,wEAA6B;AAC9C;AACA,wBAAwB,8DAAc;AACtC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6FAA6F,qDAAS;AACtG;;AAEA;AACA;AACA,wDAAwD;AACxD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAwB,+DAAa;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,kGAAkG,qDAAS;AAC3G;AACA,4BAA4B,qDAAS,0DAA0D,qDAAS;AACxG;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAK;;AAE2B;;;;;;;;;;;;;;;;;ACzWM;;AAEtC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAK;;AAE6B;;;;;;;;;;;;;;;;;;;ACpDK;AACV;AACR;;AAErB;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yDAAyD,gDAAS;;AAElE;AACA;AACA;AACA,wDAAwD,gDAAS,SAAS,gDAAS;AACnF;AACA;;AAEoC;;;;;;;;;;;;;;;;;ACnGJ;;AAEhC;AACA;AACA,UAAU,QAAQ;AAClB,UAAU,QAAQ;AAClB,UAAU,SAAS;AACnB,UAAU,QAAQ;AAClB,UAAU,QAAQ;AAClB;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,cAAc,eAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kDAAK;;AAE+B;;;;;;;;;;;;;;;;AC/CpC;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAE4C;;;;;;;;;;;;;;;;ACnD5C;AACA;AACA;AACA,WAAW,kDAAkD;AAC7D,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAE4B;;;;;;;;;;;;;;;;;;;;;;;;;ACboB;AAC3B;;AAErB;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,QAAQ;AACjB,SAAS,QAAQ;AACjB,SAAS,QAAQ;AACjB,SAAS,QAAQ;AACjB,SAAS,QAAQ;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC;AACnC;AACA;AACA,iDAAiD,0DAAa;AAC9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,iBAAiB;AACjC;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;;AAEiI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzGtE;AACtB;AACM;AACU;AACU;AACN;AACE;AACE;AACJ;AACI;AACI;AACF;AACH;AACQ;AACS;AAC+B;AAC7C;AACK;AACnB;AACxB;AACS;AACS;AACG;AACA;AACE;AACZ;;AAEpC;AACA,qBAAqB,uDAAK;AAC1B,EAAE;;;;;;;;;;;;;;;;;;;;AC7BoD;AACiB;AACkB;AACnD;;AAEtC;;AAEA;;AAEA;;AAEA;AACA;AACA,4BAA4B;;AAE5B,aAAa,MAAM;;AAEnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,wEAAqB;AACpC;;AAEA;AACA;AACA;AACA,QAAQ,wDAAQ,mBAAmB,wEAAqB;AACxD;AACA;;AAEA;AACA;AACA,wBAAwB,+DAAa;AACrC;AACA,eAAe,+DAAa;AAC5B;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gEAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,+DAAa;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,+DAAa;AAC5B;;AAEA;AACA;AACA,eAAe,+DAAa;AAC5B;;AAEA;AACA;AACA;AACA,SAAS,wDAAQ;AACjB,wBAAwB,+DAAa;AACrC,sBAAsB,wDAAQ,aAAa,wEAAqB;AAChE;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAa;AAC5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,8DAAc;AACtC;AACA;AACA,OAAO;AACP;AACA;AACA,wBAAwB,+DAAa;;AAErC;AACA,4BAA4B,qDAAS;AACrC,oGAAoG,qDAAS;;AAE7G;AACA;AACA;AACA;AACA,2CAA2C,qDAAS;AACpD,8BAA8B,qDAAS;AACvC;AACA;AACA,gCAAgC,+DAAa;AAC7C;AACA,WAAW;AACX;AACA,QAAQ,6BAA6B,qDAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAK;;AAEwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5XY;AACJ;AACC;AACY;AACxB;AACS;AAChB;AACyB;AACL;AACjB;AACiB;AACE;AACZ;AACR;;AAErB;AACA,yBAAyB,mDAAa;AACtC,0CAA0C,yBAAyB;;AAEnE;;AAEA;;AAEA;;AAEA;AACA,YAAY,QAAQ;AACpB;AACA;AACA,0BAA0B;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,EAAE,GAAG,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,iDAAW;AACrB;AACA;AACA;AACA,GAAG;AACH;AACA,UAAU,iDAAW;AACrB;AACA;AACA;AACA,GAAG;AACH;AACA,UAAU,iDAAW;AACrB;AACA;AACA;AACA,CAAC;AACD,uDAAK;;AAE4B;;;;;;;;;;;;;;;;;;;;;;;ACtI6D;AACf;AACzB;AAChB;AACP;AACO;AACM;;AAE5C;AACA;AACA;AACA,4BAA4B,gDAAM;AAClC;;AAEA,iBAAiB,cAAc;;AAE/B,eAAe,cAAc;;AAE7B;AACA,YAAY,QAAQ;AACpB;AACA;AACA,0BAA0B;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,uDAAU;;AAEnF,iDAAiD;AACjD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+DAAa;AACrC;;AAEA;AACA,iEAAiE;;AAEjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+DAAa;AACrC,0DAA0D;AAC1D;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gEAAgB;AACvC;AACA;AACA,4BAA4B,gEAAgB;AAC5C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB,+DAAa;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,oBAAoB,wEAA6B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,gDAAM;AACpD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,mBAAmB,wEAA6B;AAChD,aAAa,8DAAc;AAC3B,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2FAA2F,qDAAS;AACpG;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gHAAgH,qDAAS;AACzH;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,uDAAK;;AAE+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9WK;AACH;AACY;AACxB;AACS;AAChB;AACyB;AACL;AACjB;AACiB;AACE;AACZ;AACR;;AAErB;AACA,yBAAyB,mDAAa;AACtC;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAK;;AAE4B;;;;;;;;;;;;;;;;;;;;ACnCW;AACN;AACH;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC,uDAAK;AAC1C;AACA,MAAM,wDAAQ,eAAe,uDAAK;AAClC;AACA,oDAAoD,uDAAK;AACzD;AACA,oFAAoF,uDAAK;AACzF;AACA,oDAAoD,uDAAK;AACzD;AACA,MAAM,uDAAK,qCAAqC,uDAAK;AACrD;AACA,sBAAsB,uDAAK;AAC3B;AACA,uCAAuC,uDAAK;AAC5C,iDAAiD;AACjD;AACA,SAAS,uDAAK;AACd;;AAEA,iBAAiB,cAAc;AAC/B;AACA;AACA,MAAM,uDAAK,2BAA2B,uDAAK;AAC3C,yBAAyB;AACzB;;AAEA;AACA,MAAM,uDAAK,2BAA2B,uDAAK;AAC3C;AACA;AACA;AACA;AACA,uDAAK;;AAEyC;;;;;;;;;;;;;;;;;;;;;AC9Cf;AACO;AACH;AACS;AAClB;;AAE1B;AACA,6BAA6B,gDAAM;AACnC;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,uDAAK;;AAEgC;;;;;;;;;;;;;;;;;;;;;ACnBwC;AACvB;AACvB;AACO;AACM;;AAE5C;AACA;AACA,UAAU,QAAQ;AAClB,UAAU,QAAQ;AAClB,UAAU,QAAQ;AAClB,UAAU,eAAe;AACzB,UAAU,QAAQ;AAClB,UAAU,QAAQ;AAClB,UAAU,QAAQ;AAClB,UAAU,SAAS;AACnB,UAAU,SAAS;AACnB,UAAU,SAAS;AACnB;AACA,2BAA2B,gDAAM;AACjC;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,0BAA0B;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uCAAuC,4DAAY,mBAAmB,0BAA0B;AAChG;AACA,uEAAuE,wDAAY;AACnF,gDAAgD,4DAAY;AAC5D;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0CAA0C,EAAE;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,gEAAgB;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB,UAAU;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAa;AAC5B;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,qDAAS;AACpB,WAAW,qDAAS;AACpB,WAAW,qDAAS;AACpB;AACA;AACA;AACA;AACA,iHAAiH,qDAAS;AAC1H;AACA;AACA;AACA;AACA;AACA,WAAW,qDAAS;AACpB,WAAW,qDAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,8CAA8C;AAC9C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,gCAAgC,gDAAM;AACtC,uDAAK;;AAE8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpV2D;AACjD;AACS;AACvB;AACmE;AAC/B;AACH;AAChB;AACV;AACA;AACjB;AACuB;;AAE5C;;AAEA;AACA;AACA,UAAU,QAAQ;AAClB,UAAU,QAAQ;AAClB,UAAU,QAAQ;AAClB,UAAU,QAAQ;AAClB,UAAU,QAAQ;AAClB,UAAU,SAAS;AACnB;AACA,4BAA4B,gDAAM;AAClC;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,iDAAiD;AACjD,uCAAuC,EAAE,mFAAyB;AAClE,0BAA0B;AAC1B;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,uDAAU;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4NAA4N,uDAAK;AACjO;AACA;AACA,gCAAgC,oEAAsB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,mBAAmB,oEAAsB;AAChD;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,QAAQ;AACR,oBAAoB,wEAA6B;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+DAAa;AACrC;AACA;;AAEA;AACA;AACA,mCAAmC,0BAA0B;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+DAAa;AACrC;AACA,oCAAoC;AACpC;AACA;AACA;AACA,iEAAiE;AACjE;AACA,OAAO;AACP;AACA;AACA,mDAAmD;AACnD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,sEAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA,gCAAgC,sEAAiB;AACjD;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,qBAAqB,yBAAyB;AAC9C;AACA,gDAAgD;AAChD;AACA;AACA;;AAEA;AACA;AACA,wBAAwB,+DAAa;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,0BAA0B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,wBAAwB;AACvE;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,wFAAwF,qDAAS;AACjG;AACA,uBAAuB,0DAAa;AACpC,sBAAsB,qDAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,qDAAS,uBAAuB,qDAAS;AAC/D;AACA,wBAAwB,qDAAS;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,qDAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qDAAS;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,qDAAS,wBAAwB,qDAAS;AAChE;AACA;AACA;AACA;AACA,wBAAwB,qDAAS;;AAEjC;AACA;AACA;AACA;AACA;AACA,6CAA6C,qDAAS;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,oEAAsB;AACtD,gCAAgC,oEAAsB;AACtD,uDAAK;;AAE+B;;;;;;;;;;;;;;;;;;;;;ACre6D;AACxC;AACV;AAC2B;AACjC;;AAEzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,wDAAQ,6BAA6B,wEAAqB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,wEAAqB;AAClD;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uDAAK;AACjC,uBAAuB,wEAAqB;AAC5C;AACA;AACA,wBAAwB,+DAAa;AACrC,qBAAqB,0CAA0C;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ;AACR;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,cAAc,wEAA6B;AAC3C;AACA;AACA,uEAAuE,wEAAqB;AAC5F;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEwC;;;;;;;;;;;;;;;;;;;AClKQ;AACV;AACR;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yCAAyC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,qDAAS;AACrE;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,qDAAS;AACrE;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,4DAA4D,qDAAS;AACrE;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,4DAA4D,qDAAS;AACrE;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,4DAA4D,qDAAS;AACrE;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,4DAA4D,qDAAS;AACrE;AACA,KAAK;AACL;AACA;;AAEoC;;;;;;;;;;;;;;;;;;;;ACpIqB;AACC;AACgB;AAC5C;;AAE9B;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAa;AAC5B;AACA;AACA,wFAAwF,qDAAS;AACjG;AACA;AACA;AACA,WAAW,qDAAS;AACpB,WAAW,qDAAS;AACpB;AACA,WAAW,qDAAS;AACpB,WAAW,qDAAS;AACpB,WAAW,qDAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+DAAa;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,wBAAwB,+DAAa;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wEAAqB;AACpC;;AAEA;AACA;AACA,QAAQ,wDAAQ,mBAAmB,wEAAqB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAE6C;;;;;;;;;;;;;;;;;;;;;;ACjIoD;AAC1D;AACkB;AACT;AAClB;;AAE9B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,iBAAiB,wEAA6B;AAC9C,kBAAkB,uDAAU;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,+DAAa;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+DAAa;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAAwF,qDAAS;AACjG;AACA;AACA;AACA;AACA,WAAW,qDAAS;AACpB,WAAW,qDAAS;AACpB;AACA,WAAW,qDAAS;AACpB,WAAW,qDAAS;AACpB;AACA,WAAW,qDAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEwE;;;;;;;;;;;;;;;;;;;;;;ACnKlC;AACA;AACZ;AACS;;AAEnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,uDAAU;AAC3B;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,6FAA6F,aAAa;AAC1G;AACA;AACA;AACA;AACA,uDAAK;AACL,uDAAK;AACL,uDAAK;;AAEkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClCE;AACN;AACiB;AACd;AACY;AAC/B;AACyB;AACL;AACjB;AACiB;AACE;AACZ;AACR;;AAErB;AACA,0BAA0B,mDAAa;AACvC;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gEAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAK;;AAE6B;;;;;;;;;;;;;;;;;;;;;AC5GH;AACO;AACH;AACS;AAClB;;AAE1B;AACA,2BAA2B,gDAAM;AACjC;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,uDAAK;;AAE8B;;;;;;;UCnBnC;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;;;;WCzBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,sDAAsD;WACtD,sCAAsC,iEAAiE;WACvG;WACA;WACA;WACA;WACA;WACA;;;;;WCzBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;;;;;WCRA;WACA;WACA;WACA;WACA;;;;;WCJA;WACA;WACA;WACA;WACA;;;;;WCJA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC;;;;;WCPD;;;;;WCAA;WACA;WACA;WACA;WACA,uBAAuB,4BAA4B;WACnD;WACA;WACA;WACA,iBAAiB,oBAAoB;WACrC;WACA,mGAAmG,YAAY;WAC/G;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,mEAAmE,iCAAiC;WACpG;WACA;WACA;WACA;;;;;WC5CA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;;;;;WCAA;;WAEA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA,iCAAiC;;WAEjC;WACA;WACA;WACA,KAAK;WACL,eAAe;WACf;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM,qBAAqB;WAC3B;WACA;WACA;WACA;WACA;WACA;;WAEA;;WAEA;WACA;WACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrF6B;AACH;AACkB;;AAE5C;AACA;AACA;AACA;AACyC;AACE;AACQ;AACL;AACK;AACL;AACU;AACxB;AACgB;AACb;AACM;AACzC;AACyC;AACa;AACG;;AAEzD;AACA5pC,wDAAI,CAAC,CAAC;;AAEN;AACAypC,wEAAoB,CAAC,MAAM,EAAEtqC,iEAAc,CAAC;AAE5CwqC,0DAAU,CAAC+zC,GAAG,CAAC,CAAC;;AAEhB;AACA,IAAI5M,KAAU,EAAE,E","sources":["webpack://sfra-boilerplate/./cartridges/app_adyen_ext/cartridge/client/default/js/adyenWidgetLists.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/cart/CartLineItem.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/cart/CartMgr.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/cart/CartMixin.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/cart/JustAddedToCartMgr.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/cart/JustAddedToCartModal.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/forms/AccountDeleteForm.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/forms/BasicForm.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/forms/BasicInput.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/forms/IdeasSearchForm.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/forms/InputDate.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/forms/InputPassword.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/forms/InputSelect.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/forms/InputTel.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/forms/InputTextTypeNumber.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/forms/InputTextarea.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/forms/ajax/EmailSubscribe.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/global/AccordionItem.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/global/AccountHeaderLink.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/global/BackToTop.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/global/BreadCrumbName.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/global/Button.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/global/Carousel.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/global/ContextLoader.ts","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/global/ExponeaSegmentation.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/global/GlobalAlerts.ts","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/global/GtmDataLayer.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/global/HeroCarousel.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/global/Image.ts","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/global/Modal.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/global/Noibu.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/global/Osano.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/global/PoqWebCheckout.ts","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/global/ProcessButton.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/global/StickyElement.ts","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/global/StickyHeader.ts","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/global/StoreLocatorLink.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/global/Tooltip.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/global/VideoPlayer.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/global/VideoPlayerHTML5.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/global/WishlistCarousel.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/product/AddToCartMixin.ts","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/product/JustAddedProductToCartMixin.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/product/LinkedSubscription.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/product/ProductSocialDisclosure.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/product/ProductSocialLinks.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/product/ProductTile.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/search/CategorySearchList.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/search/IdeasSearchList.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/search/SearchBox.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/search/SearchList.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/storelocator/PreferredStoreSelector.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/toolbox/ajax.ts","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/toolbox/googleMgr.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/toolbox/init.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/toolbox/scroll.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/toolbox/util.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/widgetsList.js","webpack://sfra-boilerplate/./cartridges/app_page_designer_w/cartridge/client/default/js/pageDesignerWidgetsList.ts","webpack://sfra-boilerplate/./cartridges/app_page_designer_w/cartridge/client/default/js/widgets/page_designer/AnimationOnScroll.ts","webpack://sfra-boilerplate/./cartridges/app_page_designer_w/cartridge/client/default/js/widgets/page_designer/CarouselSimple.ts","webpack://sfra-boilerplate/./cartridges/app_page_designer_w/cartridge/client/default/js/widgets/page_designer/CtaExt.ts","webpack://sfra-boilerplate/./cartridges/app_page_designer_w/cartridge/client/default/js/widgets/page_designer/HotSpot.ts","webpack://sfra-boilerplate/./cartridges/app_page_designer_w/cartridge/client/default/js/widgets/page_designer/ProgressBar.ts","webpack://sfra-boilerplate/./cartridges/app_page_designer_w/cartridge/client/default/js/widgets/page_designer/VideoExt.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/config/breakpoints.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/Widget.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/_polyfills/getAttributeNames.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/_polyfills/index.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/cart/CartMgr.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/forms/AjaxForm.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/forms/AjaxFormResponseContainer.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/forms/BasicForm.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/forms/BasicInput.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/forms/Combobox.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/forms/Form.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/forms/InputCheckbox.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/forms/InputEmail.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/forms/InputHidden.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/forms/InputPassword.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/forms/InputRadio.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/forms/InputSelect.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/forms/InputStepper.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/forms/InputTel.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/forms/InputText.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/forms/InputTextarea.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/forms/MaskableInput.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/forms/ajax/EmailSubscribe.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/AccessibilityFocusMixin.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/AccessibilityFocusTrapMixin.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/Accordion.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/AccordionItem.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/BackToTop.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/Button.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/ButtonWithIcon.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/Carousel.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/ConfirmDialog.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/ConsentTracking.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/ContextLoader.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/Disclosure.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/DismissBlock.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/EmitBusEvent.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/FocusHighlighter.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/GlobalAlerts.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/GlobalModal.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/HeroCarousel.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/Label.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/ListAccessibility.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/Modal.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/ProcessButton.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/SoftKeyboardToggleMixin.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/StickyHeader.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/SwipeToClose.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/TabPanel.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/Tabs.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/global/Video.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/product/AddToCartMixin.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/product/AlternativeImage.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/product/ProductOptionMixin.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/product/ProductTile.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/search/SearchBox.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/toolbox/EventBusWrapper.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/toolbox/PausableTimeout.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/toolbox/RefElement.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/toolbox/ajax.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/toolbox/cookie.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/toolbox/cssLoadChecker.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/toolbox/debounce.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/toolbox/dialogMgr.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/toolbox/eventBus.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/toolbox/localStorageWrapper.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/toolbox/render.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/toolbox/scroll.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/toolbox/token.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/toolbox/util.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/toolbox/viewtype.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/viewTypeConfig.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/widgetsList.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/widgetsMgr.ts","webpack://sfra-boilerplate/./cartridges/int_globale_sfra/cartridge/client/default/js/globaleWidgetLists.js","webpack://sfra-boilerplate/./cartridges/int_globale_sfra/cartridge/client/default/js/widgets/global/GlobalECountrySelector.js","webpack://sfra-boilerplate/./cartridges/int_gtm_w/cartridge/client/default/js/clientGTM.ts","webpack://sfra-boilerplate/./cartridges/int_gtm_w/cartridge/client/default/js/components/events.ts","webpack://sfra-boilerplate/./cartridges/int_gtm_w/cartridge/client/default/js/components/impressions.ts","webpack://sfra-boilerplate/./cartridges/int_gtm_w/cartridge/client/default/js/utils/base.ts","webpack://sfra-boilerplate/./cartridges/int_paypal/cartridge/client/default/js/paypalWidgetLists.js","webpack://sfra-boilerplate/./cartridges/int_pcipal/cartridge/client/default/js/pcipalWidgetLists.js","webpack://sfra-boilerplate/./cartridges/int_trg/cartridge/client/default/js/trgWidgetLists.js","webpack://sfra-boilerplate/./cartridges/plugin_rewards/cartridge/client/default/js/rewardsWidgetLists.js","webpack://sfra-boilerplate/./cartridges/plugin_serviceworker_w/cartridge/client/default/js/sw-registration.ts","webpack://sfra-boilerplate/./cartridges/plugin_serviceworker_w/cartridge/client/default/js/sw/service-worker-registration.ts","webpack://sfra-boilerplate/./cartridges/plugin_storelocator_w/cartridge/client/default/js/widgetsList.ts","webpack://sfra-boilerplate/./cartridges/plugin_wishlists_w/cartridge/client/default/js/widgets/toolbox/wishlistItemsMgr.ts","webpack://sfra-boilerplate/./cartridges/plugin_wishlists_w/cartridge/client/default/js/widgets/wishlist/AddToWishlistMixin.ts","webpack://sfra-boilerplate/./cartridges/plugin_wishlists_w/cartridge/client/default/js/wishlistWidgetsList.ts","webpack://sfra-boilerplate/./node_modules/eventemitter3/index.js","webpack://sfra-boilerplate/./node_modules/imask/esm/_rollupPluginBabelHelpers-6b3bd404.js","webpack://sfra-boilerplate/./node_modules/imask/esm/controls/html-contenteditable-mask-element.js","webpack://sfra-boilerplate/./node_modules/imask/esm/controls/html-mask-element.js","webpack://sfra-boilerplate/./node_modules/imask/esm/controls/input.js","webpack://sfra-boilerplate/./node_modules/imask/esm/controls/mask-element.js","webpack://sfra-boilerplate/./node_modules/imask/esm/core/action-details.js","webpack://sfra-boilerplate/./node_modules/imask/esm/core/change-details.js","webpack://sfra-boilerplate/./node_modules/imask/esm/core/continuous-tail-details.js","webpack://sfra-boilerplate/./node_modules/imask/esm/core/holder.js","webpack://sfra-boilerplate/./node_modules/imask/esm/core/utils.js","webpack://sfra-boilerplate/./node_modules/imask/esm/index.js","webpack://sfra-boilerplate/./node_modules/imask/esm/masked/base.js","webpack://sfra-boilerplate/./node_modules/imask/esm/masked/date.js","webpack://sfra-boilerplate/./node_modules/imask/esm/masked/dynamic.js","webpack://sfra-boilerplate/./node_modules/imask/esm/masked/enum.js","webpack://sfra-boilerplate/./node_modules/imask/esm/masked/factory.js","webpack://sfra-boilerplate/./node_modules/imask/esm/masked/function.js","webpack://sfra-boilerplate/./node_modules/imask/esm/masked/number.js","webpack://sfra-boilerplate/./node_modules/imask/esm/masked/pattern.js","webpack://sfra-boilerplate/./node_modules/imask/esm/masked/pattern/chunk-tail-details.js","webpack://sfra-boilerplate/./node_modules/imask/esm/masked/pattern/cursor.js","webpack://sfra-boilerplate/./node_modules/imask/esm/masked/pattern/fixed-definition.js","webpack://sfra-boilerplate/./node_modules/imask/esm/masked/pattern/input-definition.js","webpack://sfra-boilerplate/./node_modules/imask/esm/masked/pipe.js","webpack://sfra-boilerplate/./node_modules/imask/esm/masked/range.js","webpack://sfra-boilerplate/./node_modules/imask/esm/masked/regexp.js","webpack://sfra-boilerplate/webpack/bootstrap","webpack://sfra-boilerplate/webpack/runtime/compat get default export","webpack://sfra-boilerplate/webpack/runtime/create fake namespace object","webpack://sfra-boilerplate/webpack/runtime/define property getters","webpack://sfra-boilerplate/webpack/runtime/ensure chunk","webpack://sfra-boilerplate/webpack/runtime/get javascript chunk filename","webpack://sfra-boilerplate/webpack/runtime/get mini-css chunk filename","webpack://sfra-boilerplate/webpack/runtime/global","webpack://sfra-boilerplate/webpack/runtime/hasOwnProperty shorthand","webpack://sfra-boilerplate/webpack/runtime/load script","webpack://sfra-boilerplate/webpack/runtime/make namespace object","webpack://sfra-boilerplate/webpack/runtime/publicPath","webpack://sfra-boilerplate/webpack/runtime/jsonp chunk loading","webpack://sfra-boilerplate/./cartridges/app_hobbycraft/cartridge/client/default/js/app_hobbycraft.js"],"sourcesContent":["/* eslint-disable max-len */\n/* eslint-disable indent */\nconst hasContext = (/** @type {string} */ctx) => window.contexts.includes(ctx);\n\nimport widgetsMgr from 'widgets/widgetsMgr';\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('checkout'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'checkout.adyen' */ './widgets/checkout/AdyenPaymentAccordion').then(d => d.default),\n import(/* webpackChunkName: 'checkout.adyen' */ './widgets/checkout/PaymentAccordionItemAdyenComponent').then(d => d.default),\n import(/* webpackChunkName: 'checkout.adyen' */ './widgets/checkout/PaymentAccordionItemAdyenScheme').then(d => d.default),\n import(/* webpackChunkName: 'checkout.adyen' */ './widgets/checkout/AdyenSavedCardsAccordionItem').then(d => d.default)\n ]).then(deps => {\n const [\n AdyenPaymentAccordion,\n PaymentAccordionItemAdyenComponent,\n PaymentAccordionItemAdyenScheme,\n AdyenSavedCardsAccordionItem\n ] = deps;\n\n return {\n listId: 'checkout.adyen',\n widgetsDefinition: () => [\n ['adyenPaymentAccordion', AdyenPaymentAccordion, 'paymentAccordion'],\n ['paymentAccordionItemAdyenComponent', PaymentAccordionItemAdyenComponent, 'paymentAccordionItem'],\n ['paymentAccordionItemAdyenScheme', PaymentAccordionItemAdyenScheme, 'paymentAccordionItemAdyenComponent'],\n ['adyenSavedCardsAccordionItem', AdyenSavedCardsAccordionItem, 'accordionItem']\n ]\n };\n })\n});\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('orderconfirmation'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'orderconfirmation.widgets' */ 'widgets/checkout/RadioSelector').then(d => d.default),\n import(/* webpackChunkName: 'orderconfirmation.widgets' */ './widgets/forms/ajax/AdyenCharityForm').then(d => d.default)\n ]).then(deps => {\n const [\n RadioSelector,\n AdyenCharityForm\n ] = deps;\n\n return {\n listId: 'orderconfirmation.adyen',\n widgetsDefinition: () => [\n ['adyenCharityForm', AdyenCharityForm, 'ajaxform'],\n ['radioSelector', RadioSelector, 'inputRadio']\n ]\n };\n })\n});\n","/**\n * @typedef {ReturnType<typeof import('widgets/Widget').default>} Widget\n */\n\n/**\n * @description Base CartLineItem implementation\n * @param {Class} Widget Base widget for extending\n * @returns {Class} Product Detail widget\n */\nexport default function (Widget) {\n /**\n * @class CartLineItem\n * @augments Widget\n * @classdesc Represents CartLineItem component\n *\n * @property {number|string} data-pid - product ID\n * @property {number} data-selected-quantity - selected quantity\n * @category widgets\n * @subcategory product\n * @example\n *\n * <main\n * role=\"main\"\n * class=\"l-pdp-main\"\n * data-widget=\"CartLineItem\"\n * data-analytics=\"${JSON.stringify(product.gtmInfo)}\"\n * data-pid=\"${product.id}\"\n * data-text-added-to-wishlist=\"${Resource.msg('button.added.to.wishlist', 'wishlist', null)}\"\n * data-accessibility-alerts='{\n * \"quantitychanged\": \"${Resource.msg('alert.quantitychanged', 'product', null)}\",\n * \"variationselected\": \"${Resource.msg('alert.variationselected', 'product', null)}\",\n * \"optionselected\": \"${Resource.msg('alert.optionselected', 'product', null)}\",\n * \"addedtocart\": \"${Resource.msg('alert.addedtocart', 'product', null)}\",\n * \"addedtowishlist\": \"${Resource.msg('alert.addedtowishlist', 'product', null)}\"\n * }'\n * >\n * PDP content\n * </main>\n */\n class CartLineItem extends Widget {\n prefs() {\n return {\n descriptions: 'descriptions',\n pid: '',\n selectedQuantity: 0,\n accessibilityAlerts: {\n quantitychanged: '',\n optionselected: '',\n variationselected: ''\n },\n ...super.prefs()\n };\n }\n }\n\n return CartLineItem;\n}\n","import { getJSONByUrl, submitFormJson, submitFormJsonWithAbort } from 'widgets/toolbox/ajax';\nimport { getUrlParams, timeout } from 'widgets/toolbox/util';\nimport { scrollWindowTo } from 'widgets/toolbox/scroll';\n\nimport { getCookie } from 'widgets/toolbox/cookie';\nimport localStorageWrapper from 'widgets/toolbox/localStorageWrapper';\nimport { appendParamToURL } from 'widgets/toolbox/util';\n/**\n * @typedef {ReturnType<typeof import('widgets/cart/CartMgr').default>} BaseCartMgr\n * @typedef {InstanceType<ReturnType<typeof import('core/cart/CartShippingTabs').default>>} cartShippingTabs\n * @typedef {ReturnType<typeof import('widgets/forms/InputStepper').default>} InputStepper\n */\n\n/**\n * @description CartMgr implementation\n * @param {BaseCartMgr} BaseCartMgr BaseCartMgr implementation\n * @returns {typeof CartMgr} CartMgr class\n */\nexport default function (BaseCartMgr) {\n /**\n * @class CartMgr\n * @augments BaseCartMgr\n * @classdesc CartMgr implementation\n */\n class CartMgr extends BaseCartMgr {\n prefs() {\n return {\n selectStoreUrl: '',\n changeShippingUrlTriggers: '',\n activePanelTrigger: '',\n ...super.prefs()\n };\n }\n\n init() {\n super.init();\n\n this.eventBus().on('preferredstore.selected', 'onPreferredStoreSelected');\n this.eventBus().on('product.added.to.cart', 'onProductAdedToCart');\n this.eventBus().on('push.datalayer.paypal', 'pushDatalayerPaypal');\n this.eventBus().on('push.datalayer.applepay', 'pushDatalayerApplepay');\n this.eventBus().emit('refresh.applepay');\n\n // if (this.prefs().items.length) {\n // this.triggerTabClick();\n // }\n\n const { changeStore } = getUrlParams();\n\n if (changeStore) {\n /**\n * @description Event dispatched, when Change Store should be triggered\n * @event module:events#dialogshow\n */\n timeout(() => {\n this.eventBus().emit('dialogshow', {\n url: this.prefs().selectStoreUrl,\n wrapperClasses: 'm-stock_search b-stock_search',\n windowClasses: 'b-stock_search-window',\n headerClasses: 'b-stock_search-header',\n bodyClasses: 'b-stock_search-body',\n contentType: 'html'\n });\n });\n }\n\n if (this.cart?.valid?.error && this.cart?.valid?.gtmError) {\n this.onCartLoadGlobalEvents(this.cart);\n }\n }\n\n /**\n * @description Renders a cart when product was added for ex. from product tile\n * @param {object} data object with a cart model from response\n * @returns {void}\n */\n onProductAdedToCart(data) {\n const cart = data && data.cartModel;\n\n this.renderCart(data.cartModel || data)\n .then(() => scrollWindowTo(this.ref('cartContainer').get(), true));\n\n this.triggerTabClick(cart);\n }\n\n /**\n * @description Renders cart on shipping changed between home and click&collect delivery\n * @param {cartShippingTabs} cartShippingTabs cart shipping tabs widget\n * @param {object} data cart model from server response\n * @returns {void}\n */\n onShippingChanged(cartShippingTabs, data) {\n this.renderCart(data.cart);\n }\n\n /**\n * @description Workaround to trigger __SYSTEM__Applepay-GetRequest call, we set random value to dwapupreq cookie\n */\n appendApplepayCookies() {\n let cookies = document.cookie;\n\n const randomId = Math.random() * (1000000 - 1) + 1;\n\n cookies += '; dwapupreq=' + randomId + '; ';\n document.cookie = cookies;\n document.cookie = 'dwapupreq=' + randomId;\n }\n\n /**\n * @description Re-render cart after another click&collect store selected\n * @returns {void}\n */\n onPreferredStoreSelected() {\n this.appendApplepayCookies();\n getJSONByUrl(this.prefs().cartGetUrl)\n .then(response => {\n this.renderCart(response);\n });\n }\n\n /**\n * @description Cart load global events\n * @param {object} cart - cart JSON\n * @returns {void}\n */\n onCartLoadGlobalEvents(cart) {\n this.eventBus().emit('gtm.datalayer.event', {\n event: 'data-layer-event',\n eventCategory: 'Error messages',\n eventAction: 'Product availability',\n eventLabel: cart.valid.gtmError\n });\n }\n\n /**\n * @description Renders Cart object and saves it as a current cart state\n * Adds some information into Cart object prior to rendering,\n * to make the whole object mustache template friendly\n * @param {object} cart - server response resp\n * @returns {Promise<object | void>} Promise object represents cart rendering result\n */\n renderCart(cart) {\n if (!cart) {\n return Promise.reject(new Error());\n }\n\n this.cart = cart;\n /**\n * @description Event, indicates that cart content was updated\n * @event \"cart.updated\"\n */\n this.eventBus().emit('cart.updated', { cartModel: cart });\n\n return this.render('cartTemplate', cart, this.ref('cartContainer')).then(() => {\n (cart.itemsIds || []).forEach((/** @type {string} */ id) => {\n this.eventBus().emit('wishlist.updated', id);\n });\n\n if (cart?.valid?.error && cart?.valid?.gtmError) {\n this.onCartLoadGlobalEvents(cart);\n }\n });\n }\n\n /**\n * @description A callback, which is executed, when customer agreed to remove product in confirmation popup\n * @param {object} button - Button, pressed in confirmation modal\n * @param {boolean} [movedToWishlist] - Indicates if product was moved to wishlist\n * @emits \"cart.remove.product\"\n * @returns {Promise<object|null>} Promise object represents server response for product deletion\n */\n // @ts-ignore\n confirmedRemoveProduct(button, movedToWishlist = false) {\n const attributes = button.attributes;\n\n if (!attributes) {\n return Promise.resolve({ error: true });\n }\n\n const url = attributes.url;\n const pid = attributes.pid;\n const uuid = attributes.uuid;\n\n if (!movedToWishlist) {\n this.showProgressBar();\n }\n\n let removePromise = submitFormJson(url, {\n pid: pid,\n uuid: uuid\n }, 'POST')\n .then((response) => {\n if (response.error) {\n throw Error(response.error);\n }\n\n if (response.basket) {\n localStorageWrapper.removeItem('cartItemIds');\n localStorageWrapper.setItem('currentSid', getCookie('sid'));\n localStorageWrapper.setItem('cartItemIds', JSON.stringify(response.basket.itemsIds || []));\n }\n\n response.basket.isProductRemoved = true;\n\n this.confirmationRemoveCallback(response.basket, movedToWishlist);\n this.eventBus().emit('cart.remove.product', this);\n\n return response;\n })\n .then((response) => {\n this.triggerTabClick(response.basket);\n });\n\n if (!movedToWishlist) {\n removePromise = removePromise\n .catch(error => {\n this.renderCartWithItemLevelActionError(uuid, error.message);\n\n return error;\n })\n .finally(() => {\n this.hideProgressBar();\n });\n }\n\n return removePromise;\n }\n\n /**\n * @description Handle tab change\n * @param {object} resp - responce with cart model\n * @returns {void}\n */\n triggerTabClick(resp) {\n this.eventBus().emit('refresh.applepay');\n\n if (this.prefs().activePanelTrigger) {\n const shipping = (resp && resp.activeShipping) || this.prefs().activePanelTrigger;\n let changeShippingUrl = this.prefs().changeShippingUrlTriggers;\n\n changeShippingUrl = appendParamToURL(changeShippingUrl, 'shippingTab', shipping);\n\n getJSONByUrl(changeShippingUrl)\n .then(response => {\n if (response.success) {\n /**\n * actual tab change happens later on cart re-render\n * in event handler using `onRefresh` method of `CartShippingTabs`\n * with preselected tab panel name based on `shipping` variable\n */\n // @ts-ignore\n this.renderCart(response.cart);\n\n this.eventBus().emit('gtm.datalayer.event', {\n event: 'data-layer-event',\n eventCategory: 'Key interactions',\n eventAction: 'Delivery choice',\n eventLabel: shipping === 'homeDelivery' ? 'Home delivery' : 'Click & collect'\n });\n }\n });\n }\n }\n\n /**\n * @description Updates quantity of chosen product in Cart page\n * @param {inputStepper} quantityStepper - Select quantity input\n * @returns {Promise<object|null>} Promise object represents server response with quantity updating result\n */\n updateQty(quantityStepper) {\n this.showProgressBar();\n // @ts-expect-error TS2339: Property 'numItems' does not exist on type 'TCart'.\n const qtyBeforeUpdate = this.cart.numItems;\n const uuid = quantityStepper.data('uuid');\n const currentQuantity = quantityStepper.currentValue;\n const isQuantityBelowMinValue = currentQuantity < quantityStepper.config.lineItemMinOrderQuantity;\n\n if ((currentQuantity === 0) || isQuantityBelowMinValue) {\n this.removeProduct(quantityStepper);\n this.hideProgressBar();\n\n return Promise.resolve(null);\n }\n\n const requestObject = submitFormJsonWithAbort(quantityStepper.data('action'), {\n pid: quantityStepper.data('pid'),\n uuid: uuid,\n quantity: quantityStepper.getValue()\n }, 'POST', false);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'updateQtyRequests' does not exist on typ... Remove this comment to see the full error message\n this.updateQtyRequests.push(requestObject);\n\n // @ts-expect-error ts-migrate(2532) FIXME: Object is possibly 'undefined'.\n return requestObject.promise\n .then((resp) => {\n // @ts-expect-error TS2571: Object is of type 'unknown'.\n const isQuantityIncreased = resp.numItems > qtyBeforeUpdate;\n\n // @ts-expect-error TS2571: Object is of type 'unknown'.\n resp.isQuantityIncreased = isQuantityIncreased;\n\n this.renderCartResponse(resp);\n\n // @ts-expect-error TS2571: Object is of type 'unknown'.\n if (resp.numItems > qtyBeforeUpdate) {\n // @ts-expect-error TS2571: Object is of type 'unknown'.\n this.eventBus().emit('product.cart.qty.increment', quantityStepper, resp.numItems - qtyBeforeUpdate);\n } else {\n // @ts-expect-error TS2339: Property 'numItems' does not exist on type 'TCart'.\n this.eventBus().emit('product.cart.qty.decrement', quantityStepper, qtyBeforeUpdate - resp.numItems);\n }\n\n this.accessibilityAlert(this.prefs().accessibilityAlerts.quantitychanged);\n\n return resp;\n })\n .catch((error) => {\n if (error.name === 'AbortError') {\n return Promise.resolve(null);\n }\n\n if (error && error.error && error.errorMessage) {\n this.render('errorTemplate', { message: error.errorMessage }, this.ref('errorMsgs'));\n } else {\n this.renderCartWithItemLevelActionError(uuid, error.message);\n }\n\n return Promise.resolve(null);\n })\n .then((resp) => {\n this.hideProgressBar();\n this.triggerTabClick(resp);\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'updateQtyRequests' does not exist on typ... Remove this comment to see the full error message\n const index = this.updateQtyRequests.indexOf(requestObject);\n\n if (index > -1) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'updateQtyRequests' does not exist on typ... Remove this comment to see the full error message\n this.updateQtyRequests.splice(index, 1);\n }\n });\n }\n\n /**\n * @description Opens the rewards panel\n */\n showRewardsPanel() {\n this.getById('rewardsPopup', (modal) => {\n modal.showModal(undefined, () => {\n this.eventBus().emit('rewards.panel.opened');\n });\n });\n }\n\n /**\n * @description Trigger pushing event to datalayer for Paypal\n * @returns {void}\n */\n pushDatalayerPaypal() {\n this.eventBus().emit('cart.page.submitted', this, 'paypal');\n }\n\n /**\n * @description Trigger pushing event to datalayer for Paypal\n * @returns {void}\n */\n pushDatalayerApplepay() {\n this.eventBus().emit('cart.page.submitted', this, 'applepay');\n }\n }\n\n return CartMgr;\n}\n","import { getContentByUrl } from 'widgets/toolbox/ajax';\n\n/**\n * @typedef {typeof import('widgets/Widget').default} Widget\n * @typedef {ReturnType<typeof import('widgets/forms/InputStepper').default>} InputStepper\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} refElement\n */\n\n/**\n * @description Cart Mixin implementation\n * @param {Widget} Widget Base widget for extending\n * @returns {Widget} Cart Mixin class\n */\nexport default function (Widget) {\n /**\n * @category widgets\n * @subcategory cart\n * @class CartMixin\n * @augments Widget\n * @classdesc CartMixin component on Cart page. Renders the whole cart template on each update e.g. quantity/coupon/product edit etc.\n * Widget manages next actions:\n * 1. Edit product in a cart\n */\n class CartMixin extends Widget {\n prefs() {\n return {\n classesDisabled: 'm-disabled',\n ...super.prefs()\n };\n }\n\n /**\n * @description Handler for \"Remove\" product button in a Cart\n * @param {refElement|inputStepper} removeButton - Clicked \"Remove\" product button or qtyStepper if value was 0\n * @returns {void}\n */\n removeProduct(removeButton) {\n const InputStepper = /** @type {InputStepper} */ (this.getConstructor('InputStepper'));\n const url = removeButton.data('removeAction') || removeButton.data('action');\n const pid = removeButton.data('pid');\n const uuid = removeButton.data('uuid');\n const isEproduct = removeButton.data('isEproduct');\n const priceList = removeButton.data('priceList');\n const priceSales = removeButton.data('priceSales');\n const isSubscriptionProduct = removeButton.data('isSubscriptionProduct');\n const qtyStepperID = `quantityStepper-${uuid}`;\n let currentQuantityStepperValue = 1;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'removeProductLink' does not exist on typ... Remove this comment to see the full error message\n this.removeProductLink = removeButton;\n removeButton.addClass(this.prefs().classesDisabled);\n\n if (removeButton instanceof InputStepper) {\n currentQuantityStepperValue = parseInt(removeButton.getValue(), 10);\n } else {\n this.getById(qtyStepperID, (stepper) => {\n currentQuantityStepperValue = parseInt(stepper.getValue(), 10);\n });\n }\n\n this.getById('confirmDialog', (/** @type {confirmDialog} */ confirmDialog) => {\n confirmDialog.showModal({\n productName: removeButton.data('name'),\n attributes: {\n url: url,\n pid: pid,\n uuid: uuid,\n isEProduct: isEproduct,\n priceList: priceList,\n priceSales: priceSales,\n showCrossedPrice: (priceList && priceSales),\n currentValue: currentQuantityStepperValue,\n isSubscriptionProduct: isSubscriptionProduct\n }\n });\n });\n }\n\n /**\n * @description Shows progress bar\n * @returns {void}\n */\n showProgressBar() {\n this.ref('cartContainer').attr('aria-busy', 'true');\n }\n\n /**\n * @description Hides progress bar\n * @returns {void}\n */\n hideProgressBar() {\n this.ref('cartContainer').attr('aria-busy', 'false');\n }\n\n /**\n * @description Handler for \"Edit\" product button in a Cart\n * @param {refElement} editBtn - Target \"Edit\" button\n * @emits \"product.tile.qv.open.edit\"\n * @returns {void}\n */\n editProduct(editBtn) {\n this.showProgressBar();\n const uuid = editBtn.data('uuid');\n\n getContentByUrl(editBtn.data('href'), { uuid })\n .then((response) => {\n this.getById('editProductModal', (editProductModal) => editProductModal.showModal({\n body: response,\n attributes: {\n 'data-tau-unique': 'edit_product_dialog'\n }\n }));\n this.eventBus().emit('product.tile.qv.open.edit', editBtn);\n })\n .catch(error => {\n this.renderCartWithItemLevelActionError(uuid, error.message);\n })\n .finally(() => {\n this.hideProgressBar();\n });\n }\n }\n\n return CartMixin;\n}\n","// @ts-nocheck\nimport { submitFormJsonWithAbort, submitFormJson } from 'widgets/toolbox/ajax';\n\nimport { getCookie } from 'widgets/toolbox/cookie';\nimport localStorageWrapper from 'widgets/toolbox/localStorageWrapper';\n\n/**\n * @typedef {ReturnType<typeof import('widgets/cart/CartMgr').default>} CartMgr\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} refElement\n * @typedef {ReturnType<typeof import('widgets/forms/InputStepper').default>} InputStepper\n */\n\n/**\n * @description CartMgr implementation\n * @param {CartMgr} CartMgr BaseCartMgr implementation\n * @returns {typeof JustAddedToCartMgr} JustAddedToCartMgr class\n */\nexport default function (CartMgr) {\n class JustAddedToCartMgr extends CartMgr {\n prefs() {\n return {\n showMessage: '',\n hideMessage: '',\n classesActive: 'm-active',\n classesDisabled: 'm-disabled',\n ...super.prefs()\n };\n }\n\n init() {\n super.init();\n\n const { items, subscriptionItem } = this.prefs();\n\n this.justAddedToCartItems = items;\n\n if (subscriptionItem) {\n this.justAddedToCartItems.push(subscriptionItem[0]);\n }\n\n this.initEvents();\n }\n\n /**\n * @description inits widget events\n */\n initEvents() {\n this.eventBus().on('just.added.cart.update', 'updateJustAddedCart');\n this.eventBus().on('just.added.cart.mgr.execute', 'executeCallback');\n }\n\n /**\n * @description Basically injects self in scope of callback and executes it\n * Used in case of access to `ProductListingMgr` from other widgets, not directly related\n * @param {Function} cb callback to execute\n * @returns {void}\n */\n executeCallback(cb) {\n if (cb) {\n cb.apply(null, [this]);\n }\n }\n\n /**\n * @description updates just added cart\n *\n * @param {object} data - update data\n * @param {object} data.cartModel - just added cart model\n */\n updateJustAddedCart(data) {\n const { cartModel } = data;\n\n this.renderCart(cartModel);\n }\n\n /**\n * @description gets just added product items id\n *\n * @returns {Array.<string>} product items id\n */\n getJustAddedItemsID() {\n return this.justAddedToCartItems.map((item) => item.id);\n }\n\n /**\n * @description removes just added product from the just added cart\n *\n * @param {string} pid - product id\n */\n removeJustAddedProduct(pid) {\n this.justAddedToCartItems = this.justAddedToCartItems.filter((item) => item.id !== pid);\n }\n\n /**\n * @description adds just added product to the just added cart\n *\n * @param {object} product - added product item\n */\n addJustAddedProduct(product) {\n this.justAddedToCartItems.push(product);\n }\n\n /**\n * @description adds just added product recommendation before ajax handling\n *\n * @param {string} productID - added product item\n */\n addShadowJustAddedProduct(productID) {\n this.justAddedToCartItems.push({\n id: productID,\n shadow: true\n });\n }\n\n /**\n * @description Handler for \"Remove\" product button in a Cart\n * @param {(refElement|InputStepper)} removeButton - Clicked \"Remove\" product button or qtyStepper if value was 0\n * @returns {void}\n */\n removeProduct(removeButton) {\n const InputStepper = (this.getConstructor('InputStepper'));\n const url = removeButton.data('removeAction') || removeButton.data('action');\n const pid = removeButton.data('pid');\n const uuid = removeButton.data('uuid');\n const qtyStepperID = `quantityStepper-${uuid}`;\n const removedLineItemID = `cart_item_${uuid}`;\n\n let currentQuantityStepperValue = 1;\n let lineItemMinOrderQuantity = null;\n\n if (removeButton instanceof InputStepper) {\n currentQuantityStepperValue = parseInt(removeButton.getValue(), 10);\n\n lineItemMinOrderQuantity = removeButton.prefs().lineItemMinOrderQuantity;\n } else {\n this.getById(removedLineItemID, (removedLineItem) => {\n removedLineItem.getById(qtyStepperID, (stepper) => {\n currentQuantityStepperValue = parseInt(stepper.getValue(), 10);\n });\n });\n }\n\n removeButton.addClass(this.prefs().classesDisabled);\n this.removeButton = removeButton;\n this.removeProductLink = removeButton;\n\n this.removeJustAddedProduct(pid.toString());\n\n this.confirmedRemoveProduct({\n attributes: {\n url: url,\n pid: pid,\n uuid: uuid,\n currentValue: currentQuantityStepperValue,\n minOrderQuantity: lineItemMinOrderQuantity\n }\n }).then(() => {\n if (!this.justAddedToCartItems.length) {\n this.closeJustAddedModal();\n }\n\n removeButton.removeClass(this.prefs().classesDisabled);\n });\n }\n\n /**\n * @description A callback, which is executed, when customer agreed to remove product in confirmation popup\n * @param {refElement} button - Button, pressed in confirmation modal\n * @param {boolean} [movedToWishlist] - Indicates if product was moved to wishlist\n * @emits \"cart.remove.product\"\n * @returns {Promise} Promise object represents server response for product deletion\n */\n confirmedRemoveProduct(button, movedToWishlist = false) {\n const attributes = button.attributes;\n\n if (!attributes) {\n return Promise.resolve({ error: true });\n }\n\n const url = attributes.url;\n const pid = attributes.pid;\n const uuid = attributes.uuid;\n const justAddedProductIDs = this.getJustAddedItemsID();\n const stringifiedJustAddedProductIDs = JSON.stringify(justAddedProductIDs);\n\n if (!movedToWishlist) {\n this.showProgressBar();\n }\n\n let removePromise = submitFormJson(url, {\n pid: pid,\n pids: stringifiedJustAddedProductIDs,\n uuid: uuid\n }, 'POST')\n .then((response) => {\n if (response.error) {\n throw Error(response.error);\n }\n\n if (response.basket) {\n localStorageWrapper.removeItem('cartItemIds');\n localStorageWrapper.setItem('currentSid', getCookie('sid'));\n localStorageWrapper.setItem('cartItemIds', JSON.stringify(response.basket.itemsIds || []));\n }\n\n if (response.deletedProductId) {\n this.eventBus().emit('remove.product.line.item', response);\n }\n\n response.basket.isProductRemoved = true;\n\n this.confirmationRemoveCallback(response.basket, movedToWishlist);\n\n this.eventBus().emit('cart.remove.product', this);\n\n return response;\n });\n\n if (!movedToWishlist) {\n removePromise = removePromise\n .catch(error => {\n this.renderCartWithItemLevelActionError(uuid, error.message);\n\n return error;\n })\n .finally(() => {\n this.hideProgressBar();\n });\n }\n\n return removePromise;\n }\n\n closeJustAddedModal() {\n this.eventBus().emit('hide.just.added.cart');\n }\n\n /**\n * @description Updates quantity of chosen product in Cart page\n * @param {inputStepper} quantityStepper - Select quantity input\n * @returns {Promise<object|null>} Promise object represents server response with quantity updating result\n */\n updateQty(quantityStepper) {\n this.showProgressBar();\n const uuid = quantityStepper.data('uuid');\n const currentQuantity = quantityStepper.currentValue;\n const isQuantityBelowMinValue = currentQuantity < quantityStepper.config.lineItemMinOrderQuantity;\n const qtyBeforeUpdate = this.cart.numItems;\n\n if ((currentQuantity === 0) || isQuantityBelowMinValue) {\n this.removeProduct(quantityStepper);\n this.hideProgressBar();\n\n return Promise.resolve(null);\n }\n\n const justAddedProductIDs = this.getJustAddedItemsID();\n const stringifiedJustAddedProductIDs = JSON.stringify(justAddedProductIDs);\n\n const requestObject = submitFormJsonWithAbort(quantityStepper.data('action'), {\n pid: quantityStepper.data('pid'),\n pids: stringifiedJustAddedProductIDs,\n uuid: uuid,\n quantity: quantityStepper.getValue()\n }, 'POST', false);\n\n this.updateQtyRequests.push(requestObject);\n\n Promise.all(this.updateQtyRequests.map(req => req.promise)).then(() => {\n this.eventBus().emit('finalize.attribute.change');\n });\n\n // @ts-expect-error ts-migrate(2532) FIXME: Object is possibly 'undefined'.\n return requestObject.promise\n .then((resp) => {\n const isQuantityIncreased = resp.numItems > qtyBeforeUpdate;\n\n resp.isQuantityIncreased = isQuantityIncreased;\n\n this.renderCartResponse(resp);\n\n if (isQuantityIncreased) {\n this.eventBus().emit('product.cart.qty.increment', quantityStepper, resp.numItems - qtyBeforeUpdate);\n } else {\n this.eventBus().emit('product.cart.qty.decrement', quantityStepper, qtyBeforeUpdate - resp.numItems);\n }\n\n this.accessibilityAlert(this.prefs().accessibilityAlerts.quantitychanged);\n\n return resp;\n })\n .catch((error) => {\n if (error.name === 'AbortError') {\n return Promise.resolve(null);\n }\n\n if (error && error.error && error.errorMessage) {\n this.render('errorTemplate', { message: error.errorMessage }, this.ref('errorMsgs'));\n } else {\n this.renderCartWithItemLevelActionError(uuid, error.message);\n }\n\n return Promise.resolve(null);\n })\n .finally(() => {\n this.hideProgressBar();\n\n const index = this.updateQtyRequests.indexOf(requestObject);\n\n if (index > -1) {\n this.updateQtyRequests.splice(index, 1);\n }\n });\n }\n\n toggleJustAddedProduct() {\n const hiddenAddedProducts = this.ref('hiddenAddedProducts');\n\n if (hiddenAddedProducts.prop('hidden')) {\n hiddenAddedProducts.show();\n this.ref('showHiddenProductBtn').addClass(this.prefs().classesActive);\n this.ref('showHiddenProductBtnText').setText(this.prefs().hideMessage);\n } else {\n hiddenAddedProducts.hide();\n this.ref('showHiddenProductBtn').removeClass(this.prefs().classesActive);\n this.ref('showHiddenProductBtnText').setText(this.prefs().showMessage.replace(/[0-9]+/gm, this.justAddedToCartItems.length));\n }\n }\n }\n\n return JustAddedToCartMgr;\n}\n","import { getContentByUrl } from 'widgets/toolbox/ajax';\n\n/**\n * @typedef {ReturnType<typeof import('widgets/global/Modal').default>} Modal\n */\n\n/**\n * @description just added to cart modal\n * @param {Modal} Modal Base widget for extending\n * @returns {typeof JustAddedToCartModal} JustAddedToCartModal widget\n */\nexport default function (Modal) {\n class JustAddedToCartModal extends Modal {\n prefs() {\n return {\n cartViewContentLink: '',\n showOnlyAddedProduct: true,\n ...super.prefs()\n };\n }\n\n init() {\n super.init();\n\n this.queuedProcessingProduct = [];\n\n if (!window.contexts.includes('cart')) {\n this.initEvents();\n }\n }\n\n /**\n * @description inits widget events\n */\n initEvents() {\n this.eventBus().on('show.just.added.cart', 'showJustAddedProductCart');\n this.eventBus().on('hide.just.added.cart', 'onCloseModal');\n }\n\n /**\n * @description shows retrieved modal content\n *\n * @param {object} data - request data\n * @param {string} data.productID - cart line item identifier\n */\n showJustAddedProductCart(data) {\n const { productID } = data;\n const { subscriptionID } = data;\n const { pidsObj } = data;\n\n if (this.queuedProcessingProduct.includes(productID)) {\n this.queuedProcessingProduct.push(productID);\n } else {\n this.queuedProcessingProduct = [productID];\n }\n\n if (this.isOpened()) {\n if (!this.prefs().showOnlyAddedProduct) {\n this.eventBus().emit('just.added.cart.update', data);\n }\n\n return;\n }\n\n getContentByUrl(this.prefs().cartViewContentLink, {\n pids: JSON.stringify([productID]),\n subscriptionID: subscriptionID,\n pidsObj: JSON.stringify(pidsObj)\n })\n .then((response) => {\n const isQueuedProcessingProduct = this.queuedProcessingProduct.every((processingProductID) => {\n return processingProductID === data.productID;\n });\n\n if (isQueuedProcessingProduct && this.queuedProcessingProduct.length === 1) {\n this.showModal({ body: response });\n this.queuedProcessingProduct.pop();\n }\n\n if (this.queuedProcessingProduct.length > 1) {\n this.queuedProcessingProduct.pop();\n }\n });\n }\n\n /**\n * @description Cancel Handler\n * @emits Modal#cancel\n */\n cancel() {\n super.cancel();\n }\n\n /**\n * @description handles on modal close event\n */\n onCloseModal() {\n this.closeModal();\n }\n\n /**\n * @description shows just added modal\n * @param {object} data - show modal data\n */\n showModal(data) {\n super.showModal(data);\n\n this.eventBus().emit('open.just.added.cart');\n }\n }\n\n return JustAddedToCartModal;\n}\n","/**\n * @typedef {ReturnType<typeof import('widgets/forms/AjaxForm').default>} AjaxForm\n * @typedef {InstanceType<ReturnType<typeof import('core/forms/BasicInput').default>>} basicInput\n */\n\n/**\n * @description AccountDeleteForm implementation\n * @param {Widget} Widget Base widget for extending\n * @returns {typeof AccountDeleteForm} ProfileForm class\n */\nexport default function (Widget) {\n /**\n * @class AccountDeleteForm\n * @augments Widget\n */\n class AccountDeleteForm extends Widget {\n init() {\n super.init();\n }\n\n /**\n * @description Unsubscribe customer\n * @param {refElement} checkbox - checkbox\n * @returns {void}\n */\n deletionConfirmationCheckbox(checkbox) {\n if (checkbox.prop('checked')) {\n this.getById('submitButton', el => el.enable());\n } else {\n this.getById('submitButton', el => el.disable());\n }\n }\n }\n\n return AccountDeleteForm;\n}\n","/**\n * @typedef {ReturnType<typeof import('widgets/forms/BasicForm').default>} BaseBasicForm\n * @typedef {InstanceType<ReturnType<typeof import('core/forms/BasicInput').default>>} basicInput\n */\n\n/**\n * @description Extend Basic Form implementation\n * @param {BaseBasicForm} BaseBasicForm Base Form implementation\n * @returns {typeof BasicForm} Form class\n */\nexport default function (BaseBasicForm) {\n /**\n * @class BasicForm\n * @augments BaseBasicForm\n * @classdesc Custom Form implementation.\n */\n class BasicForm extends BaseBasicForm {\n prefs() {\n return {\n classesBusy: 'm-busy',\n ...super.prefs()\n };\n }\n\n /**\n * @description Set aria-busy attribute value true\n * @returns {void}\n */\n showProgressBar() {\n this.ref('self').addClass(this.prefs().classesBusy).attr('aria-busy', 'true');\n }\n\n /**\n * @description Set aria-busy attribute value false\n * @returns {void}\n */\n hideProgressBar() {\n this.ref('self').removeClass(this.prefs().classesBusy).attr('aria-busy', 'false');\n }\n\n /**\n * @description Indicates that at least one form input has active shown errors\n * @returns {boolean} check result\n */\n hasActiveErrors() {\n const BasicInput = this.getConstructor('basicInput');\n let activeError = false;\n\n this.eachChild((itemComponent) => {\n if (itemComponent instanceof BasicInput\n && itemComponent.error\n ) {\n activeError = true;\n\n return true;\n }\n\n return false;\n });\n\n return activeError;\n }\n\n /**\n * @description Get form inputs, which has active shown errors\n * @returns {Array<basicInput>} an array of form inputs with errors\n */\n getActiveErrors() {\n const BasicInput = this.getConstructor('basicInput');\n const activeErrors = [];\n\n this.eachChild((itemComponent) => {\n if (itemComponent instanceof BasicInput\n && itemComponent.error\n ) {\n activeErrors.push(itemComponent);\n }\n });\n\n return activeErrors;\n }\n }\n\n return BasicForm;\n}\n","/**\n * @typedef {ReturnType<typeof import('widgets/forms/BasicInput').default>} BaseBasicInput\n * @typedef {InstanceType <typeof import('widgets/toolbox/RefElement').RefElement>} RefElement\n */\n\n/**\n * @description Extend Basic Inputimplementation\n * @param {BaseBasicInput} BaseBasicInput Base Input implementation\n * @returns {typeof InputText} Input class\n */\nexport default function (BaseBasicInput) {\n /**\n * @class InputText\n * @augments BaseBasicInput\n * @classdesc Custom input implementation.\n */\n class BasicInput extends BaseBasicInput {\n prefs() {\n const prefs = super.prefs();\n\n if (prefs.validationConfig) {\n prefs.validationConfig.errors = prefs.validationConfig?.errors || {};\n } else {\n prefs.validationConfig = { errors: {} };\n }\n\n return prefs;\n }\n\n /**\n * @description Handle required attr on an input\n * @param {boolean} [val] attribure value\n * @returns {this} `this` instance for chaining\n */\n setRequired(val) {\n this.ref('field').prop('required', val);\n\n return this;\n }\n }\n\n return BasicInput;\n}\n","/**\n * @typedef {ReturnType<typeof import('widgets/forms/Form').default>} BaseForm\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} refElement\n */\n\n/**\n * @description IdeasSearchForm implementation\n * @param {BaseForm} BaseForm Base widget for extending\n * @returns {typeof IdeasSearchForm} IdeasSearchForm class\n */\nexport default function (BaseForm) {\n /**\n * @class IdeasSearchForm\n * @augments BaseForm\n */\n class IdeasSearchForm extends BaseForm {\n /**\n * @description Handle submit Form\n * @emits BasicForm#submit\n * @param {refElement} _el event source element\n * @param {(Event|undefined)} event event instance if DOM event\n * @returns {void}\n */\n handleSubmit(_el, event) {\n const ideasSearchInput = this.getById('ideasSearchInput', searchInput => searchInput);\n\n if (ideasSearchInput && ideasSearchInput.getValue() === '') {\n ideasSearchInput.focus();\n\n event?.preventDefault();\n\n return;\n }\n\n super.handleSubmit(_el, event);\n }\n }\n\n return IdeasSearchForm;\n}\n","/**\n * @typedef {ReturnType<typeof import('widgets/forms/BasicInput').default>} BasicInput\n */\n\n/**\n * @description InputDate implementation\n * @param {BasicInput} BasicInput Base widget for extending\n * @returns {typeof InputDate} InputDate class\n */\nexport default function (BasicInput) {\n /**\n * @class InputDate\n * @augments BasicInput\n */\n class InputDate extends BasicInput {\n init() {\n super.init();\n\n this.setStartDate();\n }\n\n setStartDate() {\n const minDate = new Date().toISOString();\n const maxDate = new Date(new Date().setFullYear(new Date().getFullYear() + 5)).toISOString();\n\n this.ref('field').prop('min', minDate.slice(0, 10));\n this.ref('field').prop('max', maxDate.slice(0, 10));\n\n return this;\n }\n }\n\n return InputDate;\n}\n","/**\n * @typedef {ReturnType<typeof import('widgets/forms/InputPassword').default>} BaseInputPassword\n * @typedef {InstanceType <typeof import('widgets/toolbox/RefElement').RefElement>} RefElement\n */\n\n/**\n * @description Custom InputPassword implementation\n * @param {BaseInputPassword} BaseInputPassword Base InputPassword implementation\n * @returns {typeof InputPassword} Input Password class\n */\nexport default function (BaseInputPassword) {\n /**\n * @class InputPassword\n * @augments BaseInputPassword\n * @classdesc Custom Password input implementation.\n */\n class InputPassword extends BaseInputPassword {\n prefs() {\n return {\n dynamicHelpText: false,\n helpTextRef: 'helpText',\n definePasswordStrengthCheck: false,\n ...super.prefs()\n };\n }\n\n init() {\n super.init();\n\n if (this.prefs().dynamicHelpText) {\n this.ref(this.prefs().helpTextRef).hide();\n }\n\n if (this.prefs().definePasswordStrengthCheck && !this.passwordEstimator) {\n import(/* webpackChunkName: 'zxcvbn' */'zxcvbn')\n .then((zxcvbn) => {\n this.passwordEstimator = zxcvbn.default;\n });\n }\n }\n\n /**\n * @description Listener for `input` event.\n * Usually used to display Show/Hide mask button when entered needed amount of symbols into password field.\n * @listens dom#input\n * @param {RefElement} el event source element\n * @returns {void}\n */\n onPasswordInput(el) {\n super.onPasswordInput(el);\n\n if (this.prefs().dynamicHelpText) {\n this.ref(this.prefs().helpTextRef).show();\n }\n }\n\n /**\n * @description Handle click on button Show/Hide mask. Toggle type based on input type.\n * @listens dom#click\n * @returns {void}\n */\n toggleMask() {\n const input = this.ref('field');\n const inputType = input.attr('type');\n const showButton = this.ref('showButton');\n\n if (inputType === 'password') {\n input.attr('type', 'text');\n showButton.attr('aria-pressed', 'true');\n } else {\n input.attr('type', 'password');\n showButton.attr('aria-pressed', 'false');\n }\n }\n\n /**\n * @description checks password strength\n * @returns {boolean} result\n */\n checkPasswordStrength() {\n if (!this.passwordEstimator) {\n return false;\n }\n\n this.passwordStrengthScore = this.passwordEstimator(this.getValue()).score;\n\n return this.isStrongPassword();\n }\n\n /**\n * @description Verifies if entered password meets the strength requirements\n * @param {string} val - entered password\n * @returns {boolean} check result\n */\n validatePasswordChars(val) {\n const valChars = val.split('');\n const isCharsValid = this.checkLowerCaseAmount(valChars)\n && this.checkUpperCaseAmount(valChars)\n && this.checkNumberAmount(valChars)\n && this.checkSpecialCharsAmount(valChars);\n\n if (this.prefs().passwordStrengthEnabled) {\n return isCharsValid && this.isStrongPassword();\n } else if (isCharsValid) {\n return true;\n }\n\n return false;\n }\n\n /**\n * @description Verifies if entered password is valid and meets all password constraints\n * @returns {boolean} check result\n */\n isValid() {\n if (!super.isValid()) {\n return false;\n }\n\n if (this.widgetsToMatch && this.widgetsToMatch.length) {\n const invalidWidget = this.getInvalidCompareWithWidget();\n\n if (!invalidWidget) {\n return this.validatePasswordChars(this.getValue());\n }\n }\n\n return true;\n }\n }\n\n return InputPassword;\n}\n","import { timeout } from 'widgets/toolbox/util';\n\nconst keyCode = Object.freeze({\n SPACE: 32,\n PAGEUP: 33,\n PAGEDOWN: 34,\n END: 35,\n HOME: 36,\n UP: 38,\n DOWN: 40\n});\n\n/**\n * @typedef {ReturnType<typeof import('widgets/forms/InputSelect').default>} BaseInputSelect\n * @typedef {InstanceType <typeof import('widgets/toolbox/RefElement').RefElement>} RefElement\n */\n\n/**\n * @description Custom InputSelect implementation\n * @param {BaseInputSelect} BaseInputSelect Base InputSelect implementation\n * @returns {typeof InputSelect} Input Select class\n */\nexport default function (BaseInputSelect) {\n /**\n * @class InputSelect\n * @augments BaseInputSelect\n * @classdesc Custom Select input implementation.\n */\n class InputSelect extends BaseInputSelect {\n prefs() {\n return {\n custom: false,\n classesEmpty: 'm-empty',\n classesOpen: 'm-open',\n classesSelected: 'm-selected',\n classesFocus: 'm-focus',\n ...super.prefs()\n };\n }\n\n init() {\n super.init();\n\n if (this.prefs().custom) {\n this.initCustom();\n }\n }\n\n onRefresh() {\n super.onRefresh();\n\n if (this.prefs().custom) {\n timeout(() => {\n this.initCustom();\n }); // timeout to postpone initialisation until all references will be refreshed\n }\n }\n\n /**\n * @description This method provides ability to dynamically render HTML for widgets.\n * @param {string} templateRefId id of template\n * @param {object} data data to render\n * @param {RefElement} [renderTo] render into element\n * @param {string} [strToRender] pre-rendered template\n * @returns {Promise<any>} resolved if rendered or rejected if no found template promise\n */\n render(templateRefId = 'template', data = {}, renderTo = this.ref('self'), strToRender = '') {\n return super.render(templateRefId, data, renderTo, strToRender).then(() => {\n if (this.prefs().custom) {\n this.initCustom();\n }\n });\n }\n\n /**\n * @description Init custom select\n * @returns {void}\n */\n initCustom() {\n const field = /** @type {HTMLSelectElement|undefined} */(this.ref('field').get());\n\n if (field) {\n if (field.customSelect && field.customSelect.container.parentNode) {\n field.customSelect.destroy();\n }\n\n Promise.all([\n // @ts-ignore\n import(/* webpackChunkName: 'custom-select' */'custom-select')\n ]).then(([customSelect]) => {\n customSelect.default(field, {\n containerClass: 'b-select-container',\n openerClass: 'b-select-opener b-select-input',\n panelClass: 'b-select-panel',\n optionClass: 'b-select-option',\n optgroupClass: 'b-select-optgroup',\n isSelectedClass: this.prefs().classesSelected,\n isDisabledClass: this.prefs().classesDisabled,\n isOpenClass: this.prefs().classesOpen,\n hasFocusClass: this.prefs().classesFocus\n });\n\n if (field.customSelect) {\n this.customSelect = field.customSelect;\n this.configureCustomSelect();\n }\n });\n }\n }\n\n /**\n * @description Configure custom select after initialization\n * @returns {void}\n */\n configureCustomSelect() {\n if (!this.customSelect) {\n return;\n }\n\n // Update opener attributes to pass W3C validation\n this.customSelect.opener.setAttribute('role', 'button');\n this.customSelect.opener.removeAttribute('aria-autocomplete');\n this.customSelect.opener.removeAttribute('aria-activedescendant');\n\n // Custom HTML for select options\n this.customSelect.panel.childNodes.forEach(customOption => {\n if (customOption.customSelectOriginalOption && customOption.customSelectOriginalOption.dataset.html) {\n customOption.innerHTML = customOption.customSelectOriginalOption.dataset.html;\n }\n });\n\n this.updateSelectedOption();\n\n this.customSelect.select.addEventListener('change', () => {\n this.updateSelectedOption();\n });\n\n /**\n * @description Prevent scrolling of the window when navigating with the keyboard in the open drop-down menu\n * @param {KeyboardEvent} event - event object\n */\n const preventWindowScrolling = (event) => {\n switch (event.keyCode) {\n case keyCode.SPACE:\n case keyCode.PAGEUP:\n case keyCode.PAGEDOWN:\n case keyCode.END:\n case keyCode.HOME:\n case keyCode.UP:\n case keyCode.DOWN:\n event.preventDefault();\n break;\n\n default:\n break;\n }\n };\n\n this.customSelect.opener.addEventListener('focus', () => {\n window.addEventListener('keydown', preventWindowScrolling, false);\n });\n\n this.customSelect.opener.addEventListener('blur', () => {\n window.removeEventListener('keydown', preventWindowScrolling, false);\n });\n\n if (this.customSelect.select.dataset.eventBlur) {\n this.customSelect.opener.addEventListener('blur', () => {\n if (!this.customSelect.open) {\n this.callIfExists(this.customSelect.select.dataset.eventBlur);\n }\n });\n\n // Return focus to the opener after closing drop-down to emulate native select behavior\n this.customSelect.container.addEventListener('custom-select:close', () => {\n this.customSelect.opener.focus();\n });\n }\n\n // Set value if it was changed before initialization of custom select\n if (this.customValue) {\n this.setValue(this.customValue, true);\n }\n }\n\n /**\n * @description Update selected option with custom markup\n * @returns {void}\n */\n updateSelectedOption() {\n const selectedOption = this.getSelectedOptions();\n\n if (selectedOption) {\n const selectedOptionEl = selectedOption.get();\n\n if (selectedOptionEl && selectedOptionEl.dataset.html) {\n this.customSelect.opener.children[0].innerHTML = selectedOptionEl.dataset.html;\n }\n }\n }\n\n /**\n * @description Change selected value in the custom select\n * @param {string} [newVal] new value for custom select\n * @returns {void}\n */\n setCustomSelectValue(newVal) {\n if (this.customSelect) {\n this.customSelect.value = newVal;\n }\n\n this.customValue = newVal;\n }\n\n /**\n * @description Sets new value on select from selected option\n * @param {string} [newVal] new value\n * @param {boolean} [silently] validate after change\n * @returns {void}\n */\n setValue(newVal, silently) {\n super.setValue(newVal, silently);\n this.setCustomSelectValue(newVal);\n }\n\n /**\n * @description Disables an input\n * @returns {this} `this` instance for chaining\n */\n disable() {\n if (this.customSelect) {\n this.customSelect.disabled = true;\n }\n\n return super.disable();\n }\n\n /**\n * @description Enables an input\n * @returns {this} `this` instance for chaining\n */\n enable() {\n if (this.customSelect) {\n this.customSelect.disabled = false;\n }\n\n return super.enable();\n }\n }\n\n return InputSelect;\n}\n","import { timeout } from 'widgets/toolbox/util';\n\n/**\n * @typedef {ReturnType<typeof import('widgets/forms/InputTel').default>} BaseInputTel\n */\n\n/**\n * @description Custom InputTel implementation\n * @param {BaseInputTel} BaseInputTel Base InputTel implementation\n * @returns {typeof InputTel} Input Tel class\n */\nexport default function (BaseInputTel) {\n /**\n * @class InputTel\n * @augments BaseInputTel\n * @classdesc Custom Tel input implementation.\n */\n class InputTel extends BaseInputTel {\n /**\n * @description Process and validate phone input\n * @param {object} el - DOM element\n * @param {object} event - Current event\n * @returns {void}\n */\n onInput(el, event) {\n timeout(() => {\n super.onInput(el, event);\n }, 100);\n }\n }\n\n return InputTel;\n}\n","/**\n * @typedef {ReturnType<typeof import('widgets/forms/InputText').default>} BaseInputText\n * @typedef {InstanceType <typeof import('widgets/toolbox/RefElement').RefElement>} RefElement\n */\n\n/**\n * @description Custom InputSelect implementation\n * @param {BaseInputText} BaseInputText Base InputSelect implementation\n * @returns {typeof InputText} Input Select class\n */\nexport default function (BaseInputText) {\n /**\n * @class InputText\n * @augments BaseInputText\n * @classdesc Custom Text input implementation.\n */\n class InputTextTypeNumber extends BaseInputText {\n /**\n * @description Check provided number against allowed range\n */\n correctNumRange() {\n const val = this.getValue();\n\n if (val || val === 0) {\n if (val < this.prefs().min) {\n this.setValue(this.prefs().min, true);\n } else if (val > this.prefs().max) {\n this.setValue(this.prefs().max, true);\n }\n }\n }\n }\n\n return InputTextTypeNumber;\n}\n","/**\n * @typedef {ReturnType<typeof import('widgets/forms/InputTextarea').default>} BaseInputTextarea\n * @typedef {InstanceType <typeof import('widgets/toolbox/RefElement').RefElement>} RefElement\n */\n\n/**\n * @description Custom InputSelect implementation\n * @param {BaseInputTextarea} BaseInputTextarea Base InputSelect implementation\n * @returns {typeof InputTextarea} Input Select class\n */\nexport default function (BaseInputTextarea) {\n /**\n * @class InputTextarea\n * @augments BaseInputTextarea\n * @classdesc Custom Text input implementation.\n */\n class InputTextarea extends BaseInputTextarea {\n /**\n * @description On `input` InputTextarea logic. Gives a possibility to check how many symbols are entered\n * and restricts further input in case if max allowed characters reached.\n * @listens dom#input\n * @returns {void}\n */\n onInput() {\n super.onInput();\n\n this.ref('maxcounter').setText(String(this.ref('field').val().length));\n }\n }\n\n return InputTextarea;\n}\n","/**\n * @typedef {ReturnType<typeof import('widgets/forms/ajax/EmailSubscribe').default>} BaseEmailSubscribe\n */\n\n/**\n * @description EmailSubscribe implementation\n * @param {BaseEmailSubscribe} BaseEmailSubscribe Base widget for extending\n * @returns {typeof EmailSubscribe} EmailSubscribe class\n */\nexport default function (BaseEmailSubscribe) {\n /**\n * @class EmailSubscribe\n * @augments BaseEmailSubscribe\n */\n class EmailSubscribe extends BaseEmailSubscribe {\n /**\n * @description Handles server response\n * @emits \"alert.show\"\n * @param {object} data Server JSON response once form submitted\n * @returns {void}\n */\n onSubmitted(data) {\n if (data.success) {\n this.ref('formContent').hide();\n\n if (data.isAlreadySubscribed) {\n this.ref('subscribeText').setText('');\n }\n\n this.ref('successMessage')\n .setText(data.msg)\n .show();\n\n /**\n * @description Global event to show alert\n * @event \"alert.show\"\n */\n this.eventBus().emit('alert.show', {\n accessibilityAlert: this.prefs().accessibilityAnnouncementMsg\n });\n } else {\n if (data.fieldErrors) {\n Object.entries(data.fieldErrors).forEach(([name, errorMsg]) => {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'setError' does not exist on type 'Widget... Remove this comment to see the full error message\n this.getById(name, formField => formField.setError(errorMsg));\n });\n }\n\n if (data.msg) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'setError' does not exist on type 'Widget... Remove this comment to see the full error message\n this.getById(this.prefs().signupEmail, inputEmail => inputEmail.setError(data.msg));\n }\n }\n }\n }\n\n return EmailSubscribe;\n}\n","import { elementInViewport, scrollWindowTo } from 'core/toolbox/scroll';\nimport { scrollIntoView } from 'widgets/toolbox/scroll';\nimport { timeout } from 'widgets/toolbox/util';\nimport { isMediumViewAndDown } from 'widgets/toolbox/viewtype';\n\n/**\n * @typedef {ReturnType<typeof import('widgets/global/AccordionItem').default>} BasicAccordionItem\n */\n\n/**\n * @description AccordionItem implementation\n * @param {BasicAccordionItem} BasicAccordionItem Base widget for extending\n * @returns {typeof AccordionItem} AccordionItem class\n */\nexport default function (BasicAccordionItem) {\n /**\n * @class AccordionItem\n * @augments BasicAccordionItem\n */\n class AccordionItem extends BasicAccordionItem {\n prefs() {\n return {\n scrollTimeout: 250,\n closeMobile: false,\n checkInView: true,\n ...super.prefs()\n };\n }\n\n /**\n * @description Initialize widget logic\n */\n init() {\n this.isPanelOpen = this.prefs().expanded;\n this.isToggleAllowed = false;\n this.isMultipleSections = false;\n this.defineAttributes(this.prefs().expanded);\n this.onDestroy(this.clearAttributes.bind(this));\n this.onDestroy(this.cleanPanelHeight.bind(this));\n\n if (!this.prefs().expanded) {\n this.closePanel();\n }\n\n if (isMediumViewAndDown() && this.prefs().closeMobile) {\n this.closePanel();\n }\n }\n\n /**\n * @description Toggle panel\n * @param {object} el - Button\n */\n togglePanel(el) {\n if (!this.isPanelOpen) {\n this.openPanel();\n this.eventBus().emit('accordion.panel.open', el);\n } else if ((el && el.data('allowToggle')) || this.isToggleAllowed) {\n this.closePanel();\n }\n }\n\n /**\n * @description Open panel\n * @emits AccordionItem#closeallitems\n * @emits AccordionItem#openpanel\n */\n openPanel() {\n super.openPanel();\n\n this.has(this.prefs().accordionItemBtn, (accordionItemBtn) => {\n const accordionItemBtnEl = accordionItemBtn.get();\n\n this.onDestroy(timeout(() => {\n if (isMediumViewAndDown() && !elementInViewport(accordionItemBtnEl, true)) {\n scrollIntoView(accordionItemBtnEl, true);\n } else if (!elementInViewport(accordionItemBtnEl, true)) {\n scrollWindowTo(accordionItemBtnEl, true);\n }\n }, this.prefs().scrollTimeout));\n });\n }\n }\n\n return AccordionItem;\n}\n","import { getCookie } from 'widgets/toolbox/cookie';\nimport { getJSONByUrl } from 'widgets/toolbox/ajax';\nimport localStorageWrapper from 'widgets/toolbox/localStorageWrapper';\n\n/**\n * @typedef {typeof import('core/global/AccountHeaderLink').default} AccountHeaderLink\n * @typedef {typeof import('widgets/Widget').default} Widget\n */\n\n/**\n * @param {Widget} Widget Base widget for extending\n * @returns {typeof AccountHeaderLink} AccountHeaderLink\n */\n\nexport default function (Widget) {\n class AccountHeaderLink extends Widget {\n prefs() {\n return {\n getCustomerNameUrl: '',\n promtDelay: 2000,\n promtDuration: 10000,\n ...super.prefs()\n };\n }\n\n init() {\n super.init();\n this.getCustomerName()\n .then(name => {\n if (localStorageWrapper.getItem('previous_sid') !== getCookie('sid')) {\n localStorageWrapper.setItem('new_promt_session', '1');\n }\n\n localStorageWrapper.setItem('previous_sid', getCookie('sid'));\n\n if (name) {\n this.renderAccountHeader(name);\n this.checkSavedBasket();\n this.eventBus().on('product.added.to.cart', 'checkSavedBasket');\n this.eventBus().on('cart.updated', 'checkSavedBasket');\n this.eventBus().on('product.updated', 'checkSavedBasket');\n this.eventBus().on('minicart.updated', 'checkSavedBasket');\n }\n });\n this.eventBus().on('update.customer.name', 'saveCustomerName');\n }\n\n /**\n * @description Render Account Header link\n *\n * @param {string} name - Customer name\n */\n renderAccountHeader(name) {\n this.render('accountHeaderTemplate', { name }, this.ref('accountNameContainer'));\n }\n\n /**\n * @description Save save customer name to the local storage\n * @param {any} name - customer name\n */\n saveCustomerName(name = null) {\n localStorageWrapper.removeItem('customerName');\n localStorageWrapper.setItem('currentSid', getCookie('sid'));\n localStorageWrapper.setItem('customerName', JSON.stringify({ name }));\n }\n\n /**\n * @description Do call to get customer name from the server\n * @param {string}url - URL to get customer name\n * @returns {Promise<any>} Fetching result promise\n */\n loadCustomerNamePromise(url) {\n return getJSONByUrl(url)\n .then((result) => {\n this.saveCustomerName(result.name);\n\n return Promise.resolve(result.name);\n })\n // eslint-disable-next-line no-console\n .catch(error => console.log(error));\n }\n\n /**\n * @description Returns fetching result promise\n * @returns {Promise<object>} Promise result\n */\n getCustomerName() {\n return new Promise((resolve, reject) => {\n const customerName = localStorageWrapper.getItem('customerName');\n const customerData = customerName ? JSON.parse(customerName) : '';\n const isSameSession = localStorageWrapper.getItem('currentSid') === getCookie('sid');\n\n if (customerData && isSameSession) {\n return resolve(customerData.name);\n }\n\n const url = this.prefs().getCustomerNameUrl;\n\n if (!url) {\n return reject(new Error('no URL provided'));\n }\n\n this.loadCustomerName = this.loadCustomerNamePromise(url);\n\n return resolve(this.loadCustomerName);\n });\n }\n\n /**\n * @description Checks whether the saved cart prompt should be displayed during the next user session\n */\n checkSavedBasket() {\n try {\n const customerData = JSON.parse(localStorageWrapper.getItem('customerName'));\n const cartItemIds = JSON.parse(localStorageWrapper.getItem('cartItemIds'));\n\n if (customerData && customerData.name && cartItemIds && cartItemIds.length > 0) {\n localStorageWrapper.setItem('saved_basket_promt', '1');\n } else {\n localStorageWrapper.removeItem('saved_basket_promt');\n }\n } catch (e) {\n localStorageWrapper.removeItem('saved_basket_promt');\n }\n }\n\n /**\n * @description Check if login promt can be shown\n * @returns {boolean} Promise result\n */\n isLoginPromtAvailable() {\n return !window.sessionStorage.getItem('login_promt_shown') && document.documentElement.dataset.action !== 'Login-Show';\n }\n\n /**\n * @description Check if saved basket promt can be shown\n * @returns {boolean} Promise result\n */\n isSavedBasketPromtAvailable() {\n /**\n * Show a message when all of the following are true:\n * - this is a new user session\n * - the previous session was for a registered user with a saved basket\n * - this is not a login page\n */\n return localStorageWrapper.getItem('new_promt_session')\n && localStorageWrapper.getItem('saved_basket_promt')\n && document.documentElement.dataset.action !== 'Login-Show';\n }\n\n /**\n * @description Close login promt\n */\n closeLoginPromt() {\n this.has('loginPromt', loginPromt => {\n loginPromt.hide();\n });\n }\n }\n\n return AccountHeaderLink;\n}\n","/**\n * @typedef {ReturnType<typeof import('widgets/global/BackToTop').default>} BackToTopBase\n\n/**\n * @description BackToTop widget\n * @param {BackToTopBase} BackToTopBase Base widget for extending\n * @returns {typeof BackToTop} BackToTop class\n */\n\nexport default function (BackToTopBase) {\n /**\n * @class BackToTop\n * @augments BackToTopBase\n */\n class BackToTop extends BackToTopBase {\n /**\n * @description Initialize widget logic\n * @returns {void}\n */\n doInit() {\n this.attachScrollListener();\n this.toggleButtonVisibility();\n }\n }\n\n return BackToTop;\n}\n","/**\n * @typedef {typeof import('widgets/Widget').default} Widget\n */\n\n/**\n * @param {Widget} Widget Base widget for extending\n * @returns {typeof BreadCrumbName} BreadCrumbName\n */\n\nexport default function (Widget) {\n class BreadCrumbName extends Widget {\n prefs() {\n return {\n ...super.prefs()\n };\n }\n\n init() {\n this.eventBus().on('product.attribute.select', 'renderBreadCrumbName');\n }\n\n /**\n * @description renders Breadcrumb Name\n *\n * @param {object} data - product data\n * @param {string} data.productName - product name\n */\n renderBreadCrumbName(data) {\n if (data.productName) {\n this.ref('bcName').setText(data.productName);\n }\n }\n\n breadcrumbClick() {\n return true;\n }\n }\n\n return BreadCrumbName;\n}\n","/**\n * @typedef {ReturnType<typeof import('widgets/global/Button').default>} BaseButton\n */\n\n/**\n * @description Extend Basic Button implementation\n * @param {BaseButton} BaseButton Base Button implementation\n * @returns {Class} Button Form class\n */\nexport default function (BaseButton) {\n /**\n * @class Button\n * @augments BaseButton\n * @classdesc Custom input implementation.\n */\n class Button extends BaseButton {\n /**\n * @description Returns Widget configuration object\n * @returns {object} Widget configuration object\n */\n prefs() {\n return {\n classesDisabled: 'm-disabled',\n ...super.prefs()\n };\n }\n\n /**\n * @description Method to mark element as `active`\n * @returns {Button} result\n */\n activate() {\n this.ref('self').addClass(this.prefs().classesActive);\n this.ref('self').removeClass(this.prefs().classesDisabled);\n\n return this;\n }\n\n /**\n * @description Method to mark element as `inactive`\n * @returns {Button} result\n */\n deactivate() {\n this.ref('self').removeClass(this.prefs().classesActive);\n this.ref('self').addClass(this.prefs().classesDisabled);\n\n return this;\n }\n\n /**\n * @param {(boolean|undefined)} state true to show/false to hide/undefined to auto\n */\n toggleActive(state) {\n this.ref('self').toggleClass(this.prefs().classesActive, state);\n this.ref('self').toggleClass(this.prefs().classesDisabled, !state);\n }\n\n /**\n * @description Check if a button has activated state\n * @returns {boolean} result\n */\n isActive() {\n return this.ref('self').hasClass(this.prefs().classesActive) || !this.ref('self').hasClass(this.prefs().classesDisabled);\n }\n }\n\n return Button;\n}\n","// @ts-nocheck\n/**\n * @typedef {ReturnType<typeof import('widgets/global/Carousel').default>} BaseCarousel\n */\n\nimport { PausableTimeout } from 'widgets/toolbox/PausableTimeout';\nimport { timeout } from 'widgets/toolbox/util';\n\nconst DIRECTION_HORIZONTAL = 'horizontal';\nconst FOCUSABLE_SELECTOR = 'a, button';\n\n/**\n * @param {number[]} list list of values\n * @param {number} value value to find\n * @param {string} action prev or next action\n * @param {boolean} autoplayInfinite is autoplay carousel or not\n * @param {boolean} vertical indiciates if this is a vertical carousel\n * @returns {number} index of closest list item to provided value\n */\nexport function getClosestIndex(list, value, action, autoplayInfinite, vertical) {\n var lookup = list;\n\n // This handles whenever a partial amount of next/prev slides are visible, they need to be discounted from the loop otherwise the index resolves to the partially visible slide and goes nowhere\n if (!autoplayInfinite && !vertical) {\n lookup = action === 'prev' ? list.filter((e) => e >= value - 1) : list.filter((e) => e <= value + 1);\n }\n\n var indexValue = lookup[0];\n var diff = Math.abs(value - lookup[0]);\n\n for (let i = 1; i < lookup.length; i++) {\n const newdiff = Math.abs(value - lookup[i]);\n\n if (newdiff < diff) {\n diff = newdiff;\n indexValue = lookup[i];\n }\n }\n\n return list.findIndex((e) => e === indexValue);\n}\n\n/**\n * @param {BaseCarousel} BaseCarousel Base widget for extending\n * @returns {typeof Carousel} Carousel class\n */\n\nexport default function (BaseCarousel) {\n /**\n * @category widgets\n * @subcategory global\n * @class Carousel\n * @augments BaseCarousel\n * @classdesc Represents Carousel component with next features:\n * @property {string} data-autoplay-infinite\n */\n\n class Carousel extends BaseCarousel {\n prefs() {\n return {\n autoplayInfinite: false,\n autoplayEnabled: false,\n classesNoAnimate: 'm-no_animate',\n addExternalSlides: false,\n addExternalSlidesPosition: 'start',\n itemsPerSlide: false,\n calculateTileWidth: false,\n gsaModuleCssClass: '.m-alternative_category_tiles',\n scrollToTop: false,\n ...super.prefs()\n };\n }\n\n /**\n * @description Widget initialization\n */\n init() {\n if (!this.isExternalSlidesAdded()) {\n this.beforeInit();\n }\n\n super.init();\n\n // @ts-ignore\n if (this.prefs().isProductsCarousel) {\n this.eventBus().emit('carousel.loaded');\n }\n\n const gsaContainer = this.ref('self').get().closest(this.prefs().gsaModuleCssClass);\n\n if (this.prefs().calculateTileWidth || gsaContainer) {\n setTimeout(this.categoryTileWidth, 200);\n }\n }\n\n /**\n * @description Initial carousel configuration\n */\n initCarousel() {\n super.initCarousel();\n\n const elCarouselTrack = this.ref('elemCarouselTrack').get();\n\n if (!elCarouselTrack) {\n return;\n }\n\n this.slidesCount = elCarouselTrack.children.length;\n this.slidesCloned = 0;\n\n if (this.prefs().autoplayInfinite) {\n this.initInfinite();\n }\n\n if (this.prefs().autoplayEnabled) {\n this.initAutoplay();\n }\n\n this.markVisibleElements();\n this.updatePaginationDotVisibility();\n }\n\n /**\n * @description Add external slides before init\n */\n beforeInit() {\n const elCarouselTrack = this.ref('elemCarouselTrack').get();\n const isExternalSlides = this.prefs().addExternalSlides;\n\n if (!elCarouselTrack || !isExternalSlides) {\n return;\n }\n\n const externalSlides = document.getElementById(isExternalSlides);\n\n if (this.prefs().addExternalSlidesPosition === 'start') {\n elCarouselTrack.prepend(externalSlides.content.cloneNode(true));\n } else {\n elCarouselTrack.append(externalSlides.content.cloneNode(true));\n }\n }\n\n onRefresh() {\n super.onRefresh();\n\n this.currentPage = 0;\n\n timeout(() => {\n if (this.prefs().autoplayInfinite) {\n this.initInfinite();\n }\n\n if (this.prefs().autoplayEnabled) {\n this.initAutoplay();\n }\n }); // timeout to postpone initialisation until all references will be refreshed\n }\n\n /**\n * @description Viewtype change event handler.\n * Recalculates carousel metrics and redefines carousel states.\n */\n onViewtypeChange() {\n super.onViewtypeChange();\n\n this.updateCarouselMetric();\n this.updateCarouselState();\n }\n\n initInfinite() {\n const elCarouselTrack = this.ref('elemCarouselTrack').get();\n\n if (!elCarouselTrack || elCarouselTrack.clientWidth >= elCarouselTrack.scrollWidth) {\n return;\n }\n\n this.ref('elemCarouselTrack').addClass(this.prefs().classesNoAnimate);\n\n this.slidesCloned = this.getSlidesPerPage();\n\n /** @type {Node[]} */\n const appendSlides = [];\n /** @type {Node[]} */\n const prependSlides = [];\n\n /**\n * @param {Element} node item\n * @returns {Node} clonedNode\n */\n const getClonedNode = (node) => {\n const clonedNode = node.cloneNode(true);\n\n clonedNode.dataset.cloned = true;\n Array.from(clonedNode.querySelectorAll(FOCUSABLE_SELECTOR)).forEach(el => el.setAttribute('tabindex', '-1'));\n\n return clonedNode;\n };\n\n // Add slides at the end\n for (let i = 0; i < this.slidesCloned; i++) {\n appendSlides.push(getClonedNode(elCarouselTrack.children[i]));\n }\n\n // Add slides to the beginning\n for (let i = this.slidesCount - 1; i > this.slidesCount - 1 - this.slidesCloned; i--) {\n prependSlides.push(getClonedNode(elCarouselTrack.children[i]));\n }\n\n appendSlides.forEach(clonedSlide => elCarouselTrack.appendChild(clonedSlide));\n prependSlides.forEach(clonedSlide => elCarouselTrack.prepend(clonedSlide));\n\n // Scroll to the first page after adding cloned slides\n this.scrollWithoutAnimate(0);\n\n this.onDestroy(() => {\n Array.from(elCarouselTrack.children).forEach(elSlide => {\n if (elSlide.dataset.cloned) {\n elSlide.remove();\n }\n });\n });\n }\n\n initAutoplay() {\n const elCarouselTrack = this.ref('elemCarouselTrack').get();\n\n if (!elCarouselTrack) {\n return;\n }\n\n const elSelf = this.ref('self').get();\n\n const autoplayClear = () => {\n if (this.pausableTimeout) {\n this.pausableTimeout.destroy();\n }\n };\n\n const autoplayPause = () => {\n if (this.pausableTimeout) {\n this.pausableTimeout.pause();\n }\n };\n\n const autoplayResume = () => {\n if (this.pausableTimeout) {\n this.pausableTimeout.resume();\n }\n };\n\n const autoplay = () => {\n autoplayClear();\n this.pausableTimeout = new PausableTimeout(() => {\n const lastPageIndex = Math.round(elCarouselTrack.scrollWidth / elCarouselTrack.clientWidth) - 1;\n const currentPageIndex = this.callIfExists('getCurrentPageIndex');\n var nextPageIndex = 0;\n\n if (currentPageIndex < lastPageIndex) {\n nextPageIndex = currentPageIndex + 1;\n }\n\n this.callIfExists('scrollToPage', nextPageIndex);\n autoplay();\n }, this.prefs().autoplayDuration);\n };\n\n autoplay();\n\n this.onDestroy(autoplayClear);\n\n this.ev('mouseenter', () => autoplayPause(), elSelf);\n this.ev('mouseleave', () => autoplayResume(), elSelf);\n\n this.ev('focus', () => autoplayPause(), FOCUSABLE_SELECTOR);\n this.ev('blur', () => autoplayResume(), FOCUSABLE_SELECTOR);\n }\n\n /**\n * @description Defines if carousel direction is horizontal\n *\n * @returns {boolean} true if carousel direction is horizontal\n */\n isHorizontal() {\n return this.carouselDirection === DIRECTION_HORIZONTAL;\n }\n\n /**\n * @description Get current page index\n *\n * @returns {number} index of carrent page\n */\n getCurrentPageIndex() {\n var currentPageIndex = super.getCurrentPageIndex() - (this.prefs().autoplayInfinite ? 1 : 0);\n const numberOfPages = this.getPagesCount();\n\n if (currentPageIndex < 0) {\n currentPageIndex = (currentPageIndex % numberOfPages) + numberOfPages;\n } else if (currentPageIndex >= numberOfPages) {\n currentPageIndex %= numberOfPages;\n }\n\n return currentPageIndex;\n }\n\n /**\n * @description Get number of carousel pages\n *\n * @returns {number} number of pages\n */\n getSlidesPerPage() {\n var slidesPerPage = 1;\n const elCarouselTrack = this.ref('elemCarouselTrack').get();\n const elCarouselChild = elCarouselTrack.children[0];\n const elCarouselTrackRect = elCarouselTrack.getBoundingClientRect();\n\n if (elCarouselTrack && elCarouselChild) {\n if (this.isHorizontal()) {\n slidesPerPage = Math.floor(elCarouselTrackRect.width / elCarouselChild.getBoundingClientRect().width);\n } else {\n slidesPerPage = Math.floor(elCarouselTrackRect.height / elCarouselChild.getBoundingClientRect().height);\n }\n }\n\n return slidesPerPage;\n }\n\n /**\n * @description Get number of carousel pages\n *\n * @returns {number} number of pages\n */\n getPagesCount() {\n var numberOfPages = 1;\n const elCarouselTrack = this.ref('elemCarouselTrack').get();\n\n if (elCarouselTrack) {\n if (this.slidesCount) {\n numberOfPages = Math.ceil(this.slidesCount / this.getSlidesPerPage());\n } else {\n numberOfPages = Math.ceil(elCarouselTrack.scrollWidth / elCarouselTrack.clientWidth);\n }\n }\n\n return numberOfPages;\n }\n\n /**\n * @description Scroll carousel to specific position without animate\n * @param {any} pageIndex - page index\n *\n * @returns {this} carousel instance\n */\n scrollWithoutAnimate(pageIndex) {\n const index = pageIndex + (this.prefs().autoplayInfinite ? 1 : 0);\n const elCarouselTrack = this.ref('elemCarouselTrack').get();\n\n if (!elCarouselTrack) {\n return this;\n }\n\n if (this.isHorizontal()) {\n elCarouselTrack.scrollLeft = Math.round(elCarouselTrack.clientWidth * index);\n } else {\n elCarouselTrack.scrollTop = Math.round(elCarouselTrack.clientHeight * index);\n }\n\n return this;\n }\n\n /**\n * @description Scroll carousel to specific page\n * @param {any} pageIndex - page index\n *\n * @returns {this} carousel instance\n */\n scrollToPage(pageIndex) {\n let index = pageIndex;\n\n if (this.scrolling) {\n return this;\n }\n\n if (this.prefs().autoplayInfinite) {\n const numberOfPages = this.getPagesCount();\n const slidesPerPage = this.getSlidesPerPage();\n\n if (index >= numberOfPages) {\n // If switch from last to first\n this.scrollToSlideWithoutAnimate(\n this.slidesCloned - ((numberOfPages * slidesPerPage) - this.slidesCount) - 1\n );\n index = 0;\n } else if (index < 0) {\n // If switch from first to last\n this.scrollWithoutAnimate(numberOfPages);\n index = numberOfPages - 1;\n }\n\n index += 1;\n }\n\n return super.scrollToPage(index);\n }\n\n /**\n * @description Get current page index\n * @param {boolean} checkGrid - bypass the slide index subtraction for cloned slides (infinite mode)\n * @param {string} action - which way, prev/next\n *\n * @returns {number} index of carrent page\n */\n getCurrentSlideIndex(checkGrid, action) {\n const elCarouselTrack = this.ref('elemCarouselTrack').get();\n let slideIndex = 0;\n\n if (elCarouselTrack) {\n if (this.isHorizontal()) {\n slideIndex = getClosestIndex(\n Array.from(elCarouselTrack.children).map((element) => element.offsetLeft),\n Math.round(elCarouselTrack.scrollLeft),\n action,\n this.prefs().autoplayInfinite\n );\n } else {\n slideIndex = getClosestIndex(\n Array.from(elCarouselTrack.children).map((element) => element.offsetTop),\n Math.round(elCarouselTrack.scrollTop),\n action,\n this.prefs().autoplayInfinite,\n true\n );\n }\n }\n\n // Fix for scrollToNextSlide when using a display: grid for the carousel track in infinite loop mode\n if (!checkGrid || getComputedStyle(elCarouselTrack, null).display !== 'grid') {\n slideIndex -= this.slidesCloned;\n }\n\n if (slideIndex < 0) {\n slideIndex = (slideIndex % this.slidesCount) + this.slidesCount;\n } else if (slideIndex >= this.slidesCount) {\n slideIndex %= this.slidesCount;\n }\n\n return slideIndex;\n }\n\n /**\n * @description Scroll carousel to specific slide without animate\n * @param {any} slideIndex - slide index\n * @param {boolean} skipCloned - skip cloned slides\n *\n * @returns {this} carousel instance\n */\n scrollToSlideWithoutAnimate(slideIndex, skipCloned = false) {\n const elCarouselTrack = this.ref('elemCarouselTrack').get();\n\n if (!elCarouselTrack) {\n return this;\n }\n\n let scrollIndex = slideIndex;\n\n if (skipCloned) {\n scrollIndex += this.slidesCloned;\n }\n\n const elCarouselSlide = elCarouselTrack.children[scrollIndex];\n\n if (!elCarouselSlide) {\n return this;\n }\n\n if (this.isHorizontal()) {\n elCarouselTrack.scrollLeft = elCarouselSlide.offsetLeft;\n } else {\n elCarouselTrack.scrollTop = elCarouselSlide.offsetTop;\n }\n\n return this;\n }\n\n /**\n * @description Scroll carousel to specific slide\n * @param {number} slideIndex - slide index\n *\n * @returns {Carousel} carousel instance\n */\n scrollToSlide(slideIndex) {\n const elCarouselTrack = this.ref('elemCarouselTrack').get();\n\n if (!elCarouselTrack || this.scrolling) {\n return this;\n }\n\n if (this.prefs().autoplayInfinite && this.slidesCount) {\n if (slideIndex + this.slidesCloned >= this.slidesCount + this.slidesCloned) {\n // If switch from last to first\n this.scrollToSlideWithoutAnimate(this.slidesCloned - 1);\n slideIndex = 0;\n } else if (slideIndex < 0) {\n // If switch from first to last\n this.scrollWithoutAnimate(this.slidesCount + this.slidesCloned);\n slideIndex = this.slidesCount - 1;\n }\n }\n\n const elCarouselSlide = elCarouselTrack.children[slideIndex + this.slidesCloned];\n\n if (!elCarouselSlide) {\n return this;\n }\n\n if (this.isHorizontal()) {\n timeout(() => this.scrollTo(0, elCarouselSlide.offsetLeft));\n } else {\n timeout(() => this.scrollTo(elCarouselSlide.offsetTop, 0));\n }\n\n this.updatePaginationDots(slideIndex);\n\n return this;\n }\n\n /**\n * @description Takes the slide index and updates the pagination offset based on active dot number\n * @param {number} slideIndex - slide index\n */\n updatePaginationDots(slideIndex) {\n const pagination = this.ref('pagination').get();\n\n if (slideIndex !== undefined && pagination) {\n const totalDots = pagination.childElementCount || 0;\n const dotWidth = 26;\n const visibleDots = 5;\n const maxTransformX = -Math.abs((totalDots - visibleDots) * dotWidth);\n\n if (totalDots > visibleDots) {\n const updateX = Math.max(maxTransformX, Math.min(0, -Math.abs(dotWidth * (slideIndex > 2 ? slideIndex - 2 : 0))));\n\n pagination.style.transform = `translateX(${updateX}px)`;\n }\n }\n }\n\n updatePaginationDotVisibility() {\n const pagination = this.ref('pagination').get();\n const paginationWrap = this.ref('paginationWrap').get();\n\n if (!pagination || !paginationWrap) {\n return false;\n }\n\n const containerRect = paginationWrap.getBoundingClientRect();\n const dots = pagination.querySelectorAll('.b-carousel-pagination_dots');\n const leadingClass = 'm-leading';\n\n dots.forEach((dot) => {\n const dotRect = dot.getBoundingClientRect();\n\n dot.classList.remove(leadingClass);\n\n if (dotRect.left >= containerRect.left && dotRect.right <= containerRect.right) {\n dot.classList.add('visible');\n } else {\n dot.classList.remove('visible');\n }\n });\n\n const visibleDots = pagination.querySelectorAll('.b-carousel-pagination_dots.visible');\n\n if (visibleDots.length) {\n visibleDots.forEach((dot, i) => {\n if (i === 0 && dot.previousElementSibling) {\n dot.classList.add(leadingClass);\n }\n\n if (i === 4 && dot.nextElementSibling) {\n dot.classList.add(leadingClass);\n }\n });\n }\n\n return true;\n }\n\n /**\n * @description Scroll carousel to next slide\n * @param {RefElement} [el] source of event\n * @returns {Carousel} carousel instance\n */\n scrollToNextSlide(el) {\n if (el && el.data('globalEventClick')) {\n this.eventBus().emit(el.data('globalEventClick'), el);\n }\n\n return this.scrollToSlide(this.getCurrentSlideIndex(true, 'next') + 1);\n }\n\n /**\n * @description Scroll carousel to previous slide\n * @param {RefElement} [el] source of event\n * @returns {Carousel} carousel instance\n */\n scrollToPrevSlide(el) {\n if (el && el.data('globalEventClick')) {\n this.eventBus().emit(el.data('globalEventClick'), el);\n }\n\n return this.scrollToSlide(this.getCurrentSlideIndex(false, 'prev') - 1);\n }\n\n /**\n * @description Scroll carousel to the next page\n * @listens dom#click\n */\n scrollToNextPage() {\n if (this.prefs().itemsPerSlide || this.ref('self').get().classList.contains('b-category_tile')) {\n const perSlide = this.prefs().itemsPerSlide || 1;\n\n this.scrollToSlide(this.getCurrentSlideIndex() + perSlide);\n } else {\n const elemCarouselTrack = this.ref(this.prefs().elemCarouselTrack).get();\n\n if (this.carouselDirection === 'horizontal') {\n elemCarouselTrack?.scrollBy(this.carouselDimension, 0);\n } else {\n elemCarouselTrack?.scrollBy(0, this.carouselDimension);\n }\n }\n }\n\n /**\n * @description Scroll carousel to the previous page\n * @listens dom#click\n */\n scrollToPrevPage() {\n if (this.prefs().itemsPerSlide || this.ref('self').get().classList.contains('b-category_tile')) {\n const perSlide = this.prefs().itemsPerSlide || 1;\n\n this.scrollToSlide(this.getCurrentSlideIndex() - perSlide);\n } else {\n const elemCarouselTrack = this.ref(this.prefs().elemCarouselTrack).get();\n const scrollTo = this.prefs().scrollToTop ? -9999 : -this.carouselDimension;\n\n if (this.carouselDirection === 'horizontal') {\n elemCarouselTrack?.scrollBy(-this.carouselDimension, 0);\n } else {\n elemCarouselTrack?.scrollBy(0, scrollTo);\n }\n }\n }\n\n /**\n * @description Update carousel during scroll\n */\n updateDuringScroll() {\n this.updateCarouselState();\n\n if (this.pagination) {\n this.setActivePagination();\n } else {\n this.initPagination();\n }\n\n if (this.scrollingTimeout) {\n clearTimeout(this.scrollingTimeout);\n }\n\n if (!this.prefs().scrollToTop) {\n this.scrollingTimeout = setTimeout(() => this.onScrollEnd(), this.scrollingTimeoutValue);\n }\n\n this.isCallInNextFrameRequested = false;\n }\n\n /**\n * @description Carousel page click handler\n * @param {RefElement} el page element\n * @listens dom#click\n * @emits Carousel#pageclicked\n */\n onPageClick(el) {\n if (this.delta === 0 || this.prefs().scrollToTop) {\n /**\n * @description Event to carousel page click\n * @event Carousel#pageclicked\n */\n this.emit('pageclicked', el.data('page'));\n }\n }\n\n /**\n * @description Scrolls active element into carousel viewport\n *\n * @returns {Carousel} carousel instance\n */\n scrollIntoView() {\n const elCarouselTrack = this.ref('elemCarouselTrack').get();\n\n if (!elCarouselTrack) {\n return this;\n }\n\n const elCurrentSlide = [].find.call(elCarouselTrack.children, (/** @type {HTMLElement} */element) => {\n return !element.dataset.cloned && element.classList.contains(this.prefs().pagerCurrentClass);\n });\n\n if (!elCurrentSlide) {\n return this;\n }\n\n if (this.isHorizontal()) {\n const offsetRight = elCurrentSlide.offsetLeft + elCurrentSlide.clientWidth;\n\n if (offsetRight > (elCarouselTrack.scrollLeft + elCarouselTrack.clientWidth)) {\n this.scrollTo(0, offsetRight - elCarouselTrack.clientWidth);\n } else if (elCurrentSlide.offsetLeft < elCarouselTrack.scrollLeft) {\n this.scrollTo(0, elCurrentSlide.offsetLeft);\n }\n } else {\n const offsetBottom = elCurrentSlide.offsetTop + elCurrentSlide.clientHeight;\n\n if (offsetBottom > (elCarouselTrack.scrollTop + elCarouselTrack.clientHeight)) {\n this.scrollTo(offsetBottom - elCarouselTrack.clientHeight + elCurrentSlide.clientHeight, 0);\n } else if (elCurrentSlide.offsetTop < elCarouselTrack.scrollTop) {\n this.scrollTo(elCurrentSlide.offsetTop - elCurrentSlide.clientHeight, 0);\n }\n }\n\n return this;\n }\n\n /**\n * @param {RefElement} el source of event\n */\n handlePaginationClick(el) {\n const page = el.data('page');\n\n if (page !== null) {\n const pageIndex = parseInt(page + '', 10);\n\n this.scrollToSlide(parseInt(pageIndex + '', 10));\n }\n }\n\n createPaginationElements() {\n const numberOfPages = this.getPagesCount();\n const pagination = new Array(numberOfPages).fill(0).map((_el, i) => ({ page: i, current: i === 0 }));\n\n this.render(undefined, { pagination }, this.ref('pagination')).then(() => {\n this.pagination = Promise.resolve(this.ref('pagination').get());\n });\n }\n\n onScroll() {\n this.scrolling = true;\n\n super.onScroll();\n }\n\n onScrollEnd() {\n this.scrolling = false;\n\n super.onScrollEnd();\n\n if (this.normalizeScrollPosition) {\n this.normalizeScrollPosition = false;\n this.scrollToSlide(this.getCurrentSlideIndex());\n }\n\n this.markVisibleElements();\n this.updatePaginationDots(this.getCurrentSlideIndex());\n this.updatePaginationDotVisibility();\n }\n\n /**\n * @description Mousedown event handler\n * @listens dom#mousedown\n * @param {RefElement} el source of event\n * @param {MouseEvent} event event instance in DOM\n * @returns {void}\n */\n onMouseDown(el, event) {\n this.allowMouseEvents = true;\n\n super.onMouseDown(el, event);\n }\n\n /**\n * @description Mouseup event handler\n * @listens dom#mouseup\n * @param {HTMLElement} _el HTMLElement\n * @param {Event} event event instance in DOM\n * @returns {void}\n */\n onMouseUp(_el, event) {\n if (\n !this.allowMouseEvents\n || (event.type === 'mouseleave' && event.currentTarget !== event.target)\n ) {\n return;\n }\n\n this.allowMouseEvents = false;\n\n const elemCarouselTrack = this.ref('elemCarouselTrack');\n\n if (this.mouseMoveDisposable) {\n this.mouseMoveDisposable.forEach(disposable => disposable());\n delete this.mouseMoveDisposable;\n }\n\n if (this.mouseLeaveDisposable) {\n this.mouseLeaveDisposable.forEach(disposable => disposable());\n delete this.mouseLeaveDisposable;\n }\n\n // we should remove scroll-snap-type with delay, otherwise it cause bouncing\n this.grabbingRemoveTimeout = setTimeout(() => {\n elemCarouselTrack.removeClass(this.prefs().grabbingClass);\n }, this.grabbingTimeoutValue);\n\n if (!this.delta) {\n this.delta = 0;\n }\n\n if (!this.deltaPrevPageSensitivity) {\n this.deltaPrevPageSensitivity = -50;\n }\n\n if (!this.deltaNextPageSensitivity) {\n this.deltaNextPageSensitivity = 50;\n }\n\n if (this.delta <= this.deltaPrevPageSensitivity) {\n this.scrollToPrevSlide();\n } else if (this.delta >= this.deltaNextPageSensitivity) {\n this.scrollToNextSlide();\n } else {\n this.scrollToSlide(this.getCurrentSlideIndex());\n }\n\n this.normalizeScrollPosition = true;\n }\n\n /**\n * @description Update carousel state\n */\n updateCarouselState() {\n if (!this.prefs().autoplayInfinite) {\n super.updateCarouselState();\n\n const ARIA_HIDDEN = 'aria-hidden';\n\n if (this.isScrollStart) {\n this.ref(this.prefs().elemPrevButton).attr(ARIA_HIDDEN, 'true');\n } else {\n this.ref(this.prefs().elemPrevButton).attr(ARIA_HIDDEN, false);\n }\n\n if (this.isScrollEnd) {\n this.ref(this.prefs().elemNextButton).attr(ARIA_HIDDEN, 'true');\n } else {\n this.ref(this.prefs().elemNextButton).attr(ARIA_HIDDEN, false);\n }\n }\n }\n\n isExternalSlidesAdded() {\n const currentProduct = document.getElementById('current-product');\n\n return currentProduct;\n }\n\n loadNewVideo(videoItem, event) {\n if (event?.target?.classList[0]?.includes('cta')) {\n event.preventDefault();\n event.stopImmediatePropagation();\n window.location = event.target.href;\n\n return;\n } else if (event?.target?.closest('.b-wishlist_button')) {\n return;\n }\n\n videoItem.addClass('m-current');\n\n var allItems = this.ref('elemCarouselTrack').get().children;\n var allItemsArray = Array.from(allItems);\n\n allItemsArray.forEach((item) => {\n if (item !== videoItem.get()) {\n item.classList.remove('m-current');\n }\n });\n\n var videoLink = videoItem.data('videoId');\n\n if (videoLink.includes('tiktok')) {\n this.eventBus().emit('hideTiktokVideoBlock', false);\n this.eventBus().emit('hideVideoModule', true);\n this.eventBus().emit('addTiktokVideo', videoLink);\n } else {\n this.eventBus().emit('hideTiktokVideoBlock', true);\n this.eventBus().emit('hideVideoModule', false);\n this.eventBus().emit('videoChange', videoLink);\n }\n }\n\n markVisibleElements() {\n const elCarouselTrack = this.ref('elemCarouselTrack').get();\n\n if (!elCarouselTrack) {\n return this;\n }\n\n const carouselElements = this.ref('elemCarouselTrack').get().children;\n const trackRect = elCarouselTrack.getBoundingClientRect();\n\n for (let i = 0; i < carouselElements.length; i++) {\n const elementRect = carouselElements[i].getBoundingClientRect();\n const isVisible = (trackRect.left <= elementRect.left\n && elementRect.left <= trackRect.right)\n || (trackRect.left <= elementRect.right\n && elementRect.right <= trackRect.right);\n\n if (isVisible) {\n carouselElements[i].setAttribute('tile-visible', 'true');\n } else {\n carouselElements[i].setAttribute('tile-visible', 'false');\n }\n }\n\n return this;\n }\n\n categoryTileWidth() {\n const titles = document.querySelectorAll('.js-category_name');\n const titles2 = document.querySelectorAll('.b-category_tile-subtitle strong');\n const items = titles.length ? titles : titles2;\n\n items?.forEach((item) => {\n item.closest('.b-category_tile-link').style.width = item.getBoundingClientRect().width + 'px';\n });\n }\n }\n\n return Carousel;\n}\n","/**\n * @typedef {ReturnType<typeof import('widgets/global/ContextLoader').default>} BaseContextLoader\n */\n\n/**\n * @param {BaseContextLoader} BaseContextLoader Base widget for extending\n * @returns {typeof ContextLoader} ContextLoader class\n */\n\nexport default function (BaseContextLoader) {\n /**\n * @category widgets\n * @subcategory global\n * @class ContextLoader\n * @augments Widget\n */\n class ContextLoader extends BaseContextLoader {\n loaded = false;\n\n observer: IntersectionObserver | undefined;\n\n init() {\n this.loaded = this.prefs().loaded;\n\n if (!this.prefs().context && !this.prefs().inited) {\n throw new Error('Context must be initialized!');\n } else {\n this.setPref('inited', true);\n }\n\n if (this.prefs().initOnLoad) {\n this.loadContext();\n } else if (this.prefs().initOnViewport) {\n this.observer = new IntersectionObserver(([entry]) => this.onIntersection(entry), {\n threshold: 0.01, // 1% of element became visible\n rootMargin: '200px' // add margin around viewport\n });\n const widgetElement = this.ref('self').get();\n\n if (widgetElement) {\n this.observer.observe(widgetElement); // start observing widget's DOM entry point\n\n this.onDestroy(() => {\n if (this.observer) {\n this.observer.unobserve(widgetElement);\n this.observer.disconnect();\n this.observer = undefined;\n }\n });\n }\n }\n }\n }\n\n return ContextLoader;\n}\n","import { setCookie } from 'widgets/toolbox/cookie';\nimport { interval } from 'widgets/toolbox/util';\n\nconst DEFAULT_LOADING_COUNT = 10;\nconst DEFAULT_INTERVAL_PERIOD = 100;\nconst TEST_RECORD_ID = 'C424039';\n\n/**\n * @typedef {typeof import('widgets/Widget').default} Widget\n */\n\n/**\n * @description Exponea Segmentation implementation\n * @param {Widget} Widget Base widget for extending\n * @returns {typeof ExponeaSegmentation} ExponeaSegmentation class\n */\nexport default function (Widget) {\n /**\n * @class ExponeaSegmentation\n * @augments Widget\n */\n class ExponeaSegmentation extends Widget {\n prefs() {\n return {\n exponeaCookieName: '',\n exponeaCookieLifeTime: 360,\n exponeaSegmentationDebugMode: false,\n ...super.prefs()\n };\n }\n\n /**\n * @description Initialize ExponeaSegmentation\n * @returns {void}\n */\n init() {\n super.init();\n\n this.exponeaDimensionsLoadCount = DEFAULT_LOADING_COUNT;\n this.exponeaDimensionsInitialize = this.initExponeaDimensions();\n }\n\n /**\n * @description Checks that segmentation data initialized\n * @returns {boolean} result\n */\n get exponeaSegmentation() {\n return window.exponea && window.exponea.dimensions;\n }\n\n /**\n * @description inits exponea dimensions object\n * @returns {Function} interval callback\n */\n initExponeaDimensions() {\n return interval(() => {\n if (this.exponeaSegmentation || !this.exponeaDimensionsLoadCount) {\n if (this.prefs().exponeaSegmentationDebugMode) {\n this.initDebugSegmentationData();\n }\n\n this.initExponeaSegmentation();\n this.exponeaDimensionsFinalize();\n }\n\n this.exponeaDimensionsLoadCount -= 1;\n }, DEFAULT_INTERVAL_PERIOD);\n }\n\n /**\n * @description finalizes exponea dimension initializing\n */\n exponeaDimensionsFinalize() {\n if (this.exponeaDimensionsInitialize) {\n this.exponeaDimensionsInitialize();\n this.exponeaDimensionsInitialize = undefined;\n }\n }\n\n /**\n * @description Inits exponea segmentation cookie\n */\n initExponeaSegmentation() {\n if (!this.exponeaSegmentation) {\n setCookie(\n this.prefs().exponeaCookieName,\n '',\n 0,\n true\n );\n\n return;\n }\n\n const segmentationData = { ...window.exponea.dimensions };\n\n var category = segmentationData.sfcc_dominant_category;\n\n if (category !== 'None') {\n if (segmentationData) {\n setCookie(\n this.prefs().exponeaCookieName,\n encodeURIComponent(JSON.stringify(segmentationData)),\n this.prefs().exponeaCookieLifeTime,\n true\n );\n }\n }\n }\n\n initDebugSegmentationData() {\n window.exponea.identify({ registered: TEST_RECORD_ID });\n }\n }\n\n return ExponeaSegmentation;\n}\n","import { timeout } from 'widgets/toolbox/util';\nimport { PausableTimeout } from 'widgets/toolbox/PausableTimeout';\n\n/**\n * @description Extended GlobalAlerts implementation.\n * @param BaseGlobalAlerts Base widget for extending\n * @returns GlobalAlerts class\n */\nexport default function (BaseGlobalAlerts: ReturnType<typeof import('widgets/global/GlobalAlerts').default>) {\n /**\n * @class GlobalAlerts\n * @augments Widget\n * @classdesc Global Alerts with accessibility alert role possibility.\n */\n class GlobalAlerts extends BaseGlobalAlerts {\n pausableTimeout: PausableTimeout | undefined\n\n showTimeout: (() => void) | undefined\n\n prefs() {\n return {\n showTimeout: 500,\n ...super.prefs()\n };\n }\n\n /**\n * @description Widget initialization, onDestroy hook to clear show timeout.\n */\n init(): void {\n super.init();\n\n this.onDestroy(() => this.disposeShowTimeout());\n }\n\n /**\n * @description Dispose show timeout and clear it resources\n */\n disposeShowTimeout(): void {\n if (this.showTimeout) {\n this.showTimeout();\n this.showTimeout = undefined;\n }\n }\n\n /**\n * @description Show Global Alert by starting pausable timeout\n * @param data - Object with message\n * @param data.accessibilityAlert - Message to be shown and pronounced\n * @param data.alertClassName - Optional CSS class to be applied to alert\n */\n showAlert(data: {accessibilityAlert: string, alertClassName: string}): void {\n if (data && data.accessibilityAlert) {\n if (this.shown) {\n this.hideAlert();\n }\n\n this.showTimeout = timeout(() => {\n this.ref('item').attr('role', 'none');\n\n this.ref('item')\n .setText(data.accessibilityAlert)\n .show();\n this.shown = true;\n\n this.ref('item').attr('role', 'alert');\n\n if (data.alertClassName) {\n this.ref('item').addClass(data.alertClassName);\n this.ref('item').data('customClasses', data.alertClassName);\n }\n\n this.pausableTimeout = new PausableTimeout(() => {\n this.hideAlert();\n }, this.prefs().timeout);\n }, this.prefs().showTimeout);\n }\n }\n\n /**\n * @description Hide Global Alert and clear timeout\n */\n hideAlert(): void {\n this.ref('item').attr('role', 'none');\n\n const customClasses = this.ref('item').data('customClasses') as string;\n\n if (customClasses) {\n this.ref('item').removeClass(customClasses);\n this.ref('item').data('customClasses', null);\n }\n\n super.hideAlert();\n }\n }\n\n return GlobalAlerts;\n}\n","/**\n * @typedef {typeof import('widgets/Widget').default} Widget\n */\nconst GTM_CATEGORY_SELECTOR = 'gtmEventCategory';\nconst GTM_EVENT_SELECTOR = 'gtmEventAction';\nconst GTM_LABEL_SELECTOR = 'gtmEventLabel';\nconst GTM_SUBLABEL_SELECTOR = 'gtmEventSublabel';\nconst GTM_LABEL_NAV = 'Navigation';\nconst GTM_EVENT_NAME = 'data-layer-event';\nconst CLICK_EVENT_ID = 'navigation.click.event';\n\n/**\n * @description GtmDataLayer content implementation\n * @param {Widget} Widget Base widget for extending\n * @returns {typeof GtmDataLayer} GtmDataLayer class\n */\nexport default function (Widget) {\n /**\n * @class Footer\n * @augments Widget\n */\n class GtmDataLayer extends Widget {\n init() {\n super.init();\n\n if (this.prefs().gtmOnloadEvent) {\n this.eventBus().emit('gtm.datalayer.event', {\n event: GTM_EVENT_NAME,\n eventCategory: this.prefs()[GTM_CATEGORY_SELECTOR],\n eventAction: this.prefs()[GTM_EVENT_SELECTOR],\n eventSublabel: this.prefs()[GTM_LABEL_SELECTOR]\n });\n }\n }\n\n /**\n * @description Click Event handler\n * @listens dom#click\n * @param {HTMLElement} el Source of event\n * @param {Event} event Event object\n * @returns {void}\n */\n breadcrumbClick(el) {\n this.eventBus().emit(CLICK_EVENT_ID, {\n event: GTM_EVENT_NAME,\n eventCategory: GTM_LABEL_NAV,\n eventAction: 'Top navigation',\n eventSublabel: el.data(GTM_SUBLABEL_SELECTOR)\n });\n }\n\n /**\n * @description Click Event handler\n * @listens dom#click\n * @param {HTMLElement} el Source of event\n * @param {Event} event Event object\n * @returns {void}\n */\n footerLinkClick(el) {\n this.eventBus().emit(CLICK_EVENT_ID, {\n event: GTM_EVENT_NAME,\n eventCategory: GTM_LABEL_NAV,\n eventAction: 'Footer',\n eventSublabel: el.data(GTM_SUBLABEL_SELECTOR)\n });\n }\n\n /**\n * @description Click Event handler\n * @listens dom#click\n * @param {HTMLElement} el Source of event\n * @param {Event} event Event object\n * @returns {void}\n */\n categoryTileClick(el) {\n this.eventBus().emit(CLICK_EVENT_ID, {\n event: GTM_EVENT_NAME,\n eventCategory: GTM_LABEL_NAV,\n eventAction: 'Category grid',\n eventSublabel: el.data(GTM_SUBLABEL_SELECTOR)\n });\n }\n\n /**\n * @description Workshops Click Event handler\n * @listens dom#click\n * @param {HTMLElement} el Source of event\n * @param {Event} event Event object\n * @returns {void}\n */\n ideaWorkshopClick(el) {\n this.eventBus().emit(CLICK_EVENT_ID, {\n event: GTM_EVENT_NAME,\n eventCategory: GTM_LABEL_NAV,\n eventAction: 'Content tiles',\n eventSublabel: el.data(GTM_SUBLABEL_SELECTOR)\n });\n }\n\n /**\n * @description Workshops Click Event handler\n * @listens dom#click\n * @param {HTMLElement} el Source of event\n * @param {Event} event Event object\n * @returns {void}\n */\n viewAllWorkshopsClick() {\n const productName = window?.gtmProductData?.productName;\n\n this.eventBus().emit(CLICK_EVENT_ID, {\n event: GTM_EVENT_NAME,\n eventCategory: 'Key interactions',\n eventAction: 'View workshops',\n eventLabel: productName || ''\n });\n }\n\n /**\n * @description Click Event handler\n * @listens dom#click\n * @param {HTMLElement} el Source of event\n * @param {Event} event Event object\n * @returns {void}\n */\n searchSuggestionClick(el) {\n this.eventBus().emit('gtm.click.event', {\n event: GTM_EVENT_NAME,\n eventCategory: 'Search',\n eventAction: 'Search suggestions',\n eventLabel: el.data(GTM_LABEL_SELECTOR),\n eventSublabel: el.data(GTM_SUBLABEL_SELECTOR)\n });\n }\n\n /**\n * @description Click Event handler\n * @listens dom#click\n * @param {HTMLElement} el Source of event\n * @param {Event} event Event object\n * @returns {void}\n */\n downloadPdfClick(el) {\n const isAuthorized = el.data('isAuthorised');\n\n this.eventBus().emit('gtm.click.event', {\n event: GTM_EVENT_NAME,\n eventCategory: 'PDF download',\n eventAction: isAuthorized ? 'Download Initiated' : 'Log in to download',\n eventLabel: el.data(GTM_LABEL_SELECTOR).toString()\n });\n }\n\n /**\n * @description Click Event handler\n * @listens dom#click\n * @param {HTMLElement} el Source of event\n * @param {Event} event Event object\n * @returns {void}\n */\n showRelatedIdeasClick(el) {\n this.eventBus().emit(CLICK_EVENT_ID, {\n event: GTM_EVENT_NAME,\n eventCategory: 'Key interactions',\n eventAction: 'Show ideas',\n eventLabel: el.data(GTM_LABEL_SELECTOR)\n });\n }\n\n /**\n * @description Click Event handler\n * @listens dom#click\n * @param {HTMLElement} el Source of event\n * @param {Event} event Event object\n * @returns {void}\n */\n artisanClick(el) {\n this.eventBus().emit(CLICK_EVENT_ID, {\n event: GTM_EVENT_NAME,\n eventCategory: 'Artisan interaction',\n eventAction: this.prefs().gtmArtisanEventAction || '',\n eventLabel: el.data(GTM_LABEL_SELECTOR) || el.attr('title') || 'View All'\n });\n }\n }\n\n return GtmDataLayer;\n}\n","/**\n * @typedef {ReturnType<typeof import('widgets/global/HeroCarousel').default>} BaseHeroCarousel\n */\n\n/**\n * @param {BaseHeroCarousel} BaseHeroCarousel Base widget for extending\n * @returns {typeof HeroCarousel} HeroCarousel class\n */\n\nexport default function (BaseHeroCarousel) {\n /**\n * @category widgets\n * @subcategory global\n * @class HeroCarousel\n * @augments BaseHeroCarousel\n * @classdesc Represents HeroCarousel component with next features:\n * @property {string} data-autoplay-infinite\n */\n\n class HeroCarousel extends BaseHeroCarousel {\n pref() {\n return {\n autoplayInfinite: true,\n ...super.prefs()\n };\n }\n\n /**\n * @description Initialize carousel structure with slides\n * @returns {void}\n */\n initStructure() {\n const track = this.ref('elemCarouselTrack').get();\n\n if (track) {\n this.slides = track.children;\n this.slidesTotal = this.slides.length;\n\n for (let i = 0; i < this.slides.length; i++) {\n const slide = this.slides[i];\n\n slide.setAttribute('id', (this.prefs().slidePrefix + i));\n slide.setAttribute('aria-label', ((i + 1) + ' ' + track.getAttribute('data-label-delimiter') + ' ' + this.slidesTotal));\n }\n }\n\n this.isSlider = this.slidesTotal && this.slidesTotal > 1;\n }\n\n /**\n * @description Normalizes slide index according to looped carousel approach\n * @param {number} index - Slide index\n * @returns {number} Normalized slide index\n */\n normalizeIndex(index) {\n let normalizedIndex = 0;\n\n if (this.slidesTotal) {\n if (index < 0) {\n normalizedIndex = this.slidesTotal === 2 ? this.slidesTotal : this.slidesTotal - 1;\n } else {\n normalizedIndex = index % this.slidesTotal;\n }\n }\n\n return normalizedIndex;\n }\n\n /**\n * @description Changes current slide to slide with provided index\n * @param {number} index Next slide index\n * @returns {void}\n */\n goToSlide(index) {\n if (index === -1 && !this.prefs().autoplayInfinite) {\n return this.startAutoplay();\n }\n\n if (this.slidesTotal === index && !this.prefs().autoplayInfinite) {\n return this.endAutoplay();\n }\n\n return super.goToSlide(index);\n }\n }\n\n return HeroCarousel;\n}\n","import { TWidget } from 'widgets/Widget';\n\n/**\n * @param Widget Base widget for extending\n * @returns Image widget\n */\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory global\n * @class Image\n * @augments Widget\n */\n class Image extends Widget {\n /**\n * @description Is fallback image used\n */\n isFallback = false;\n\n prefs() {\n return {\n refImg: 'self',\n fallbackSrc: '',\n ...super.prefs()\n };\n }\n\n init() {\n const eImg = <HTMLImageElement> this.ref(this.prefs().refImg).get();\n\n // Handle error for case when widget is initialized after image loading\n if (eImg && eImg.complete && !eImg.naturalWidth) {\n this.loadingError();\n }\n }\n\n /**\n * @description Image loading error handling\n */\n loadingError(): void {\n if (!this.isFallback && this.prefs().fallbackSrc) {\n this.ref(this.prefs().refImg).prop('src', this.prefs().fallbackSrc);\n this.isFallback = true;\n } else {\n this.ref(this.prefs().refImg).prop('hidden', true);\n }\n }\n }\n\n return Image;\n}\n","/**\n * @typedef {ReturnType<typeof import('widgets/global/Modal').default>} BaseModal\n */\n\n/**\n * @description Modal implementation\n * @param {BaseModal} BaseModal Base widget for extending\n * @returns {typeof Modal} Modal class\n */\nexport default function (BaseModal) {\n /**\n * @class Modal\n * @augments BaseModal\n */\n class Modal extends BaseModal {\n /**\n * @description Close Modal\n * @returns {void}\n */\n closeModal() {\n super.closeModal();\n\n this.emit('modalclosed');\n }\n\n /**\n * @description If modal is currently closed\n * @returns {boolean} true if modal is currently closed\n */\n isClosed() {\n return this.ref(this.prefs().refDialog).hasClass(this.prefs().classesClosed);\n }\n\n /**\n * @description If modal is currently opened\n * @returns {boolean} true if modal is currently opened\n */\n isOpened() {\n return !this.isClosed();\n }\n\n /**\n * @description Scroll event handler\n * @listens dom#scroll\n * @returns {void}\n */\n onScroll() {\n this.eventBus().emit('highlighter.update');\n }\n }\n\n return Modal;\n}\n","import { getCookie } from 'widgets/toolbox/cookie';\nimport localStorageWrapper from 'widgets/toolbox/localStorageWrapper';\n\nconst SESSION_ID_TRUNCATE = 'noibu-for-log-center';\n/**\n * @typedef {typeof import('widgets/Widget').default} Widget\n */\n\n/**\n * @description Exponea Segmentation implementation\n * @param {Widget} Widget Base widget for extending\n * @returns {typeof Noibu} Noibu class\n */\nexport default function (Widget) {\n /**\n * @class Noibu\n * @augments Widget\n */\n class Noibu extends Widget {\n /**\n * @description Initialize Noibu\n * @returns {void}\n */\n init() {\n super.init();\n\n this.checkSDKExistanceAndAddCustomAttribute();\n }\n\n checkSDKExistanceAndAddCustomAttribute() {\n const isSameDWSID = localStorageWrapper.getItem(SESSION_ID_TRUNCATE) === getCookie(SESSION_ID_TRUNCATE);\n\n if (window.NOIBUJS && !isSameDWSID) {\n localStorageWrapper.setItem(SESSION_ID_TRUNCATE, getCookie(SESSION_ID_TRUNCATE));\n window.NOIBUJS.addCustomAttribute('sfcc-session-id', getCookie(SESSION_ID_TRUNCATE));\n }\n }\n }\n\n return Noibu;\n}\n","import { loadScript } from 'widgets/toolbox/util';\n\n/**\n * @typedef {typeof import('widgets/Widget').default} Widget\n */\n\n/**\n * @description Osano ecents implementation\n * @param {Widget} Widget Base widget for extending\n * @returns {Osano} Osano class\n */\nexport default function (Widget) {\n /**\n * @class Osano\n * @augments Widget\n */\n class Osano extends Widget {\n prefs() {\n return {\n scriptUrl: '',\n ...super.prefs()\n };\n }\n\n /**\n * @description Initialize Osano\n * @returns {void}\n */\n init() {\n super.init();\n\n if (this.prefs().scriptUrl) {\n this.loadOsanoScript().then(() => {\n this.addListenersForEventsOsano();\n });\n\n this.allowOnSaveEvents = false;\n } else {\n this.addListenersForEventsOsano();\n }\n }\n\n /**\n * @description Additional JS and GTM events\n */\n addListenersForEventsOsano() {\n if (!window.Osano) {\n return;\n }\n\n // On page init event\n window.Osano.cm.addEventListener('osano-cm-initialized', () => {\n const osanoWidget = document\n .getElementsByClassName('osano-cm-storage-policy osano-cm-content__link osano-cm-link')[0];\n\n osanoWidget.setAttribute('onclick',\n 'window.Osano.cm.showDrawer(\"osano-cm-dom-info-dialog-open\"); window.Osano.cm.hideDialog(); return false;');\n osanoWidget.innerHTML = 'Update Cookie Preference';\n\n this.allowOnSaveEvents = true;\n });\n\n // On script blocked event\n window.Osano.cm.addEventListener('osano-cm-script-blocked', () => {\n this.handleOsanoAnalytic('osano_script_blocked');\n });\n\n // On preferences saved event\n window.Osano.cm.addEventListener('osano-cm-consent-saved', this.processOsanoSaveEvent.bind(this));\n }\n\n /**\n * @description push GTM events\n */\n processOsanoSaveEvent() {\n if (!this.allowOnSaveEvents) {\n return;\n }\n\n const ACCEPT_KEY = 'ACCEPT';\n const consentObject = window.Osano.cm.getConsent();\n\n if (consentObject.ANALYTICS === ACCEPT_KEY) {\n this.handleOsanoAnalytic('analytics_consent');\n }\n\n if (consentObject.PERSONALIZATION === ACCEPT_KEY) {\n this.handleOsanoAnalytic('personalization_consent');\n }\n\n if (consentObject.MARKETING === ACCEPT_KEY) {\n this.handleOsanoAnalytic('marketing_consent');\n }\n\n if (consentObject.ESSENTIAL === ACCEPT_KEY) {\n this.handleOsanoAnalytic('essential_consent');\n }\n }\n\n /**\n * @description push GTM events\n * @param {string} key - gtm event key\n */\n handleOsanoAnalytic(key) {\n this.eventBus().emit('osano.events', key);\n }\n\n /**\n * @description Load script\n * @returns {Promise} loaded script\n */\n loadOsanoScript() {\n if (window.Osano) {\n return Promise.resolve(window.Osano);\n }\n\n return loadScript(this.prefs().scriptUrl);\n }\n }\n\n return Osano;\n}\n","import { RefElement } from 'widgets/toolbox/RefElement';\n\n/**\n * @typedef {typeof import('widgets/Widget').default} Widget\n */\n\n/**\n * @description PoqWebCheckout implementation\n * @param {Widget} Widget Base widget for extending\n * @returns PoqWebCheckout class\n */\nexport default function (Widget) {\n /**\n * @class PoqWebCheckout\n * @augments Widget\n */\n class PoqWebCheckout extends Widget {\n init() {\n this.poqSendConf();\n }\n\n poqSend(button: RefElement) {\n if (button.data('poqAction') && 'PoqWebCheckout' in window) {\n if (button.data('poqIsDeeplink')) {\n // @ts-expect-error Property 'PoqWebCheckout' does not exist on type..\n window.PoqWebCheckout.send('deeplink', {\n customData:\n {\n link: button.data('poqLink'),\n isPDF: button.data('poqIsPdf'),\n isExternal: button.data('poqIsExternal'),\n dismissPresenting: button.data('poqDismissPresenting')\n }\n });\n } else {\n // @ts-expect-error Property 'PoqWebCheckout' does not exist on type..\n window.PoqWebCheckout.send(button.data('poqAction'));\n }\n\n // @ts-expect-error Property 'PoqWebCheckout' does not exist on type.\n window.PoqWebCheckout.options({ debug: true });\n }\n }\n\n poqSendConf() {\n const completedObject = this.ref('poqCompletedObjectData')?.data('completed-object');\n\n if (completedObject) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'PoqWebCheckout' does not exist on type 'Window... Remove this comment to see the full error message\n window.PoqWebCheckout.send('paymentcompleted', completedObject);\n }\n }\n }\n\n return PoqWebCheckout;\n}\n","/**\n * @typedef {ReturnType<typeof import('widgets/global/ProcessButton').default>} BasicProcessButton\n */\n\n/**\n * @description ProcessButton implementation\n * @param {BasicProcessButton} BasicProcessButton Base widget for extending\n * @returns {typeof ProcessButton} ProcessButton class\n */\nexport default function (BasicProcessButton) {\n /**\n * @class ProcessButton\n * @augments BasicProcessButton\n */\n class ProcessButton extends BasicProcessButton {\n prefs() {\n return {\n processFinishLabel: '',\n lockAfterFinish: false,\n ...super.prefs()\n };\n }\n\n /**\n * @description Enable button\n * @returns {void}\n */\n enable() {\n this.ref('self').prop('disabled', false);\n }\n\n /**\n * @description Disable button\n * @returns {void}\n */\n disable() {\n this.ref('self').prop('disabled', 'disabled');\n }\n\n /**\n * @description Stop Progress\n * @param {string} val - Value to set as a text of the Button\n */\n stopProcess(val) {\n this.unbusy();\n this.setText(val || this.prefs().processFinishLabel || this.currentText);\n this.ref('self').removeClass(this.prefs().processingClass);\n\n if (this.prefs().lockAfterFinish) {\n this.disable();\n }\n }\n }\n\n return ProcessButton;\n}\n","import { TWidget } from 'widgets/Widget';\n\n/**\n * @param Widget Base widget for extending\n * @returns StickyElement widget\n */\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory global\n * @class StickyElement\n * @augments Widget\n * @classdesc StickyElement helper.\n */\n class StickyElement extends Widget {\n prefs() {\n return {\n bodyClass: '',\n toggleCondition: 'intersectsWithScreen',\n ...super.prefs()\n };\n }\n\n /**\n * @description Initialize widget logic\n * @returns {void}\n */\n init() {\n const stickyElement = this.ref('self').get();\n\n if (!stickyElement) {\n return;\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'observer' does not exist on type 'Sticky... Remove this comment to see the full error message\n this.observer = new IntersectionObserver(([entry]) => this.toggleStickyState(entry), { threshold: 1 });\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'observer' does not exist on type 'Sticky... Remove this comment to see the full error message\n this.observer.observe(stickyElement);\n }\n\n /**\n * @description Toggle sticky header state\n * @param {object} entry Anchor for apply sticky header\n * @returns {void}\n */\n toggleStickyState(entry) {\n document.body.classList.toggle(\n this.prefs().bodyClass,\n !!this.callIfExists(this.prefs().toggleCondition, entry)\n );\n }\n\n intersectsWithScreen(entry) {\n return entry.intersectionRatio < 1;\n }\n\n intersectsWithTopOfScreen(entry) {\n return entry?.boundingClientRect?.top < 0;\n }\n\n /**\n * @description Destroy widget logic\n * @returns {void}\n */\n destroy() {\n const stickyElement = this.ref('self').get();\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'observer' does not exist on type 'Sticky... Remove this comment to see the full error message\n if (this.observer && stickyElement) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'observer' does not exist on type 'Sticky... Remove this comment to see the full error message\n // eslint-disable-next-line spellcheck/spell-checker\n this.observer.unobserve(stickyElement);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'observer' does not exist on type 'Sticky... Remove this comment to see the full error message\n this.observer.disconnect();\n }\n }\n }\n\n return StickyElement;\n}\n","/**\n * @param BasicStickyHeader Base widget for extending\n * @returns StickyHeader widget\n */\nexport default function (BasicStickyHeader: ReturnType<typeof import('widgets/global/StickyHeader').default>) {\n /**\n * @category widgets\n * @subcategory global\n * @class StickyHeader\n * @augments Widget\n * @classdesc StickyHeader helper. Should be on element before StickyHeader to observe intersection\n * Could be reimplemented with getBoundClientRect.top and scroll listener.\n * The main purpose is to define anchor for StickyHeader and toggle StickyHeader.\n * @example <caption>Example of StickyHeader widget usage</caption>\n * <div data-widget=\"stickyHeader\"></div>\n */\n class StickyHeader extends BasicStickyHeader {\n /**\n * @description Toggle sticky header state\n * @param {object} entry Anchor for apply sticky header\n * @returns {void}\n */\n toggleStickyState(entry) {\n super.toggleStickyState(entry);\n\n this.eventBus().emit(entry.intersectionRatio < 1 ? 'header.stuck' : 'header.unstuck');\n }\n }\n\n return StickyHeader;\n}\n","import { getCookie } from 'widgets/toolbox/cookie';\nimport { getJSONByUrl } from 'widgets/toolbox/ajax';\nimport localStorageWrapper from 'widgets/toolbox/localStorageWrapper';\n\n/**\n * @typedef {typeof import('core/global/StoreLocatorLink').default} StoreLocatorLink\n * @typedef {typeof import('widgets/Widget').default} Widget\n */\n\n/**\n * @param {Widget} Widget Base widget for extending\n * @returns {typeof StoreLocatorLink} StoreLocatorLink\n */\n\nexport default function (Widget) {\n class StoreLocatorLink extends Widget {\n prefs() {\n return {\n getPreferredStoreUrl: '',\n ...super.prefs()\n };\n }\n\n init() {\n super.init();\n\n this.getPreferredStoreData()\n .then(data => {\n if (data && data.name && data.url) {\n this.renderPreferredStore(data);\n }\n })\n .catch(error => console.log(error));\n\n this.eventBus().on('preferredstore.selected', 'savePreferredStoreData');\n this.eventBus().on('update.preferred.store', 'savePreferredStoreData');\n this.eventBus().on('preferredstore.selected', 'renderPreferredStore');\n }\n\n /**\n * @description renders store link with preferred store data\n *\n * @param {object} param - rendering data\n * @param {string} param.name - store name\n * @param {string} param.url - store link\n */\n renderPreferredStore({ name, url }) {\n this.render('storeHeaderTemplate', { url, name }, this.ref('storeHeaderContainer'));\n }\n\n /**\n * @description Save preferred store data to the local storage\n * @param {object} param - saving data\n * @param {any} param.name - store name\n * @param {any} param.url - store link\n */\n savePreferredStoreData({ name = null, url = null }) {\n localStorageWrapper.removeItem('preferedStoreData');\n localStorageWrapper.setItem('currentSid', getCookie('sid'));\n localStorageWrapper.setItem('preferedStoreData', JSON.stringify({ name, url }));\n }\n\n /**\n * @description Do call to get prefered store from the server\n * @param {string}url URL to get prefered store\n * @returns {Promise<any>} Fetching result promise\n */\n loadPreferedStoreDataPromise(url) {\n return getJSONByUrl(url)\n .then((result) => {\n if (!result.error) {\n this.savePreferredStoreData({ name: result.preferredStoreName, url: result.preferredStoreURL });\n\n return Promise.resolve({ name: result.preferredStoreName, url: result.preferredStoreURL });\n } else {\n return Promise.resolve(null);\n }\n })\n // eslint-disable-next-line no-console\n .catch(error => console.log(error));\n }\n\n /**\n * @description Returns fetching result promise\n * @returns {Promise<any>} Promise result\n */\n getPreferredStoreData() {\n return new Promise((resolve, reject) => {\n getJSONByUrl(this.prefs().getPreferredStoreUrl, { getStoreIdText: 'true' }).then((responseData) => {\n const preferedStoreDataString = localStorageWrapper.getItem('preferedStoreData');\n let preferedStoreData = preferedStoreDataString ? JSON.parse(preferedStoreDataString) : '';\n\n if (responseData) {\n preferedStoreData = responseData;\n this.savePreferredStoreData({ name: preferedStoreData.name, url: preferedStoreData.url });\n }\n\n const isSameSession = localStorageWrapper.getItem('currentSid') === getCookie('sid');\n\n if (preferedStoreData && isSameSession) {\n return resolve(preferedStoreData);\n }\n\n const url = this.prefs().getPreferredStoreUrl;\n\n if (!url) {\n return reject(new Error('no URL provided'));\n }\n\n return this.loadPreferedStoreDataPromise(url)\n .then((loadPreferedStoreData) => {\n return resolve(loadPreferedStoreData);\n });\n });\n });\n }\n }\n\n return StoreLocatorLink;\n}\n","import { clickOutside } from 'widgets/toolbox/util';\n\nconst keyCode = Object.freeze({\n RETURN: 13,\n SPACE: 32,\n TAB: 9\n});\n\n// @ts-nocheck\n/**\n * @typedef {typeof import('widgets/Widget').default} Widget\n */\n\n/**\n * @param {Widget} Widget Base widget for extending\n * @returns {typeof Tooltip} Tooltip class\n */\n\nexport default function (Widget) {\n /**\n * @category widgets\n * @subcategory global\n * @class Tooltip\n * @augments Widget\n * @classdesc Represents Tooltip component */\n\n class Tooltip extends Widget {\n prefs() {\n return {\n closeOnClickOutside: true,\n ...super.prefs()\n };\n }\n\n /**\n * @description Widget initialization\n */\n init() {\n super.init();\n\n if (this.prefs().closeOnClickOutside) {\n clickOutside(this.ref('self'), () => {\n this.closeTooltip();\n }, false);\n }\n }\n\n handleClick() {\n this.showTooltip();\n }\n\n handleKeydown(_, event) {\n switch (event.keyCode) {\n case keyCode.RETURN:\n case keyCode.SPACE:\n event.preventDefault();\n this.showTooltip();\n break;\n case keyCode.TAB:\n if (!event.target.closest('.b-age_restricted-badge')) {\n this.closeTooltip();\n }\n\n break;\n default:\n break;\n }\n }\n\n showTooltip() {\n this.ref('content').show();\n }\n\n closeTooltip() {\n this.ref('content').hide();\n }\n\n stopPropagition(_, event) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n return Tooltip;\n}\n","import { initYoutubePlayerApi } from 'core/toolbox/googleMgr';\n\nconst keyCode = Object.freeze({\n RETURN: 13,\n SPACE: 32\n});\n\n/**\n * @typedef {typeof import('widgets/Widget').default} Widget\n */\n\n/**\n * @description Youtube VideoPlayer implementation\n * @param {Widget} Widget Base widget for extending\n * @returns {typeof VideoPlayer} VideoPlayer class\n */\nexport default function (Widget) {\n /**\n * @class VideoPlayer\n * @augments Widget\n */\n class VideoPlayer extends Widget {\n prefs() {\n return {\n videoConfig: {},\n rootMargin: '0px',\n ...super.prefs()\n };\n }\n\n init() {\n super.init();\n this.player = null;\n this.observe();\n this.eventBus().on('zoom.closed', 'stopVideo');\n this.eventBus().on('videoChange', 'videoChange');\n this.eventBus().on('hideVideoModule', 'hideVideoModule');\n }\n\n observe() {\n let observer = new IntersectionObserver(([entry]) => {\n if (entry.intersectionRatio < 1) {\n this.pauseVideo();\n }\n\n if (!this.player) {\n initYoutubePlayerApi().then(() => {\n this.initPlayer();\n this.onDestroy(() => {\n if (this.player) {\n this.stopVideo();\n this.player.destroy();\n this.player = undefined;\n }\n });\n });\n }\n }, {\n threshold: 1,\n rootMargin: this.prefs().rootMargin\n });\n\n observer.observe(this.ref('self').get());\n this.onDestroy(() => {\n if (observer) {\n observer.disconnect();\n observer = undefined; // eslint-disable-line no-undef\n }\n });\n }\n\n startVideo() {\n this.ref('player').attr('tabindex', '0');\n this.playVideo();\n this.ref('cover').remove();\n }\n\n /**\n * @description Plays video playing by external event\n */\n playVideo() {\n if (this.player && typeof this.player.playVideo === 'function') {\n this.player.playVideo();\n }\n }\n\n /**\n * @description Pause video playing by external event\n */\n pauseVideo() {\n if (this.player && typeof this.player.pauseVideo === 'function') {\n this.player.pauseVideo();\n }\n }\n\n /**\n * @description Stops video playing by external event\n */\n stopVideo() {\n if (this.player && typeof this.player.stopVideo === 'function') {\n this.player.stopVideo();\n }\n }\n\n handleKeydown(_, event) {\n let preventEventActions = false;\n\n switch (event.keyCode) {\n case keyCode.RETURN:\n case keyCode.SPACE:\n this.startVideo();\n preventEventActions = true;\n break;\n default:\n break;\n }\n\n if (preventEventActions) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n // eslint-disable-next-line sonarjs/cognitive-complexity\n initPlayer() {\n const videoConfig = this.prefs().videoConfig;\n const videoElement = this.ref('player').get();\n const playerConfig = {\n videoId: videoConfig.videoId,\n playerVars: videoConfig.playerVars || {}\n };\n\n let isYoutubeList = false;\n let ytListParts = null;\n\n if (videoConfig.videoUrl && videoConfig.videoUrl.includes('list=')) {\n isYoutubeList = true;\n playerConfig.playerVars.listType = 'playlist';\n const listRegex = /=(.*)\\w*\\w+/;\n\n ytListParts = videoConfig.videoUrl.match(listRegex);\n\n if (ytListParts && ytListParts.length) {\n playerConfig.playerVars.list = ytListParts[0].substr(1);\n }\n }\n\n // Case if full URL passed instead ID\n if (!playerConfig.videoId && videoConfig.videoUrl && !isYoutubeList) {\n /* eslint-disable-next-line */\n const ytRegex = /^.*(youtu\\.be\\/|vi?\\/|u\\/\\w\\/|embed\\/|\\?vi?=|\\&vi?=)([^#\\&\\?]*).*/;\n const urlParts = videoConfig.videoUrl.match(ytRegex);\n\n if (urlParts) {\n playerConfig.videoId = urlParts[2];\n }\n }\n\n if (videoConfig.height && videoConfig.height > 0) {\n playerConfig.height = videoConfig.height;\n }\n\n if (videoConfig.width && videoConfig.width > 0) {\n playerConfig.width = videoConfig.width;\n }\n\n this.player = new YT.Player(videoElement, playerConfig); // eslint-disable-line no-undef\n }\n\n videoChange(itemVideoUrl, event) {\n if (itemVideoUrl) {\n /* eslint-disable-next-line */\n const ytRegex = /^.*(youtu\\.be\\/|vi?\\/|u\\/\\w\\/|embed\\/|\\?vi?=|\\&vi?=)([^#\\&\\?]*).*/;\n const urlParts = itemVideoUrl.match(ytRegex);\n\n const myPlayer = this.player;\n\n myPlayer.stopVideo();\n\n if (urlParts && urlParts[2]) {\n myPlayer.loadVideoById(\n {\n videoId: urlParts[2],\n startSeconds: 0,\n suggestedQuality: 'large'\n }\n );\n }\n }\n\n if (event) {\n event.stopImmediatePropagation();\n event.preventDefault();\n }\n }\n\n hideVideoModule(hide) {\n if (hide) {\n this.hide();\n this.stopVideo();\n } else {\n this.show();\n }\n }\n }\n\n return VideoPlayer;\n}\n","import { isSmallView } from 'widgets/toolbox/viewtype';\n\nconst keyCode = Object.freeze({\n RETURN: 13,\n SPACE: 32\n});\n\n/**\n * @typedef {typeof import('widgets/Widget').default} Widget\n */\n\n/**\n * @description Youtube VideoPlayer implementation\n * @param {Widget} Widget Base widget for extending\n * @returns {typeof VideoPlayerHTML5} VideoPlayer class\n */\nexport default function (Widget) {\n /**\n * @class VideoPlayer\n * @augments Widget\n */\n class VideoPlayerHTML5 extends Widget {\n prefs() {\n return {\n videoUrls: [],\n playingCSSClass: 'm-playing',\n ...super.prefs()\n };\n }\n\n init() {\n this.player = this.ref('player').get();\n this.viewType = '';\n\n this.renderSources();\n window.addEventListener('load', this.contentBoxWidth.bind(this));\n window.addEventListener('orientationchange', () => {\n setTimeout(this.contentBoxWidth.bind(this), 100);\n });\n window.addEventListener('orientationchange', this.renderSources.bind(this));\n this.eventBus().on('viewtype.change', 'contentBoxWidth');\n this.eventBus().on('viewtype.change', 'renderSources');\n }\n\n parseVideos() {\n let videoUrls = this.prefs().videoUrls;\n\n if (videoUrls.constructor.name === 'Object') {\n videoUrls = Object.values(videoUrls);\n }\n\n const videos = videoUrls.map((item) => {\n const obj = {};\n\n [obj.url, obj.device = 'desktop'] = item.split('#');\n obj.type = obj.url.split('.').pop();\n\n return obj;\n });\n\n return videos;\n }\n\n renderSources() {\n const videos = this.parseVideos();\n let sources = '';\n let viewtype = 'desktop';\n\n if (isSmallView() && (window.orientation === 0)) {\n viewtype = 'mobile';\n }\n\n if (this.viewType === viewtype) {\n return false;\n }\n\n this.viewType = viewtype;\n\n videos.forEach(item => {\n if (item.device === viewtype) {\n sources += `<source src=\"${item.url}\" type=\"video/${item.type}\" />`;\n }\n });\n\n this.player.innerHTML = sources;\n\n this.player.load();\n this.player.play();\n\n return this;\n }\n\n /**\n * @description Start video\n */\n playPauseVideo() {\n if (!this.player) {\n return;\n }\n\n if (this.player.paused || this.player.ended) {\n this.player.play();\n this.ref('playButton').addClass(this.prefs().playingCSSClass);\n } else {\n this.player.pause();\n this.ref('playButton').removeClass(this.prefs().playingCSSClass);\n }\n }\n\n handleKeydown(_, event) {\n let preventEventActions = false;\n\n switch (event.keyCode) {\n case keyCode.RETURN:\n case keyCode.SPACE:\n this.playPauseVideo();\n preventEventActions = true;\n break;\n default:\n break;\n }\n\n if (preventEventActions) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n contentBoxWidth() {\n const items = this.ref('self').get()?.querySelectorAll('.js-heading, .js-subheading');\n\n items?.forEach((item) => {\n if (item.parentElement) {\n item.parentElement.style.width = '';\n item.parentElement.style.width = Math.ceil(item.getBoundingClientRect().width) + 'px';\n }\n });\n }\n }\n\n return VideoPlayerHTML5;\n}\n","// @ts-nocheck\n/**\n * @typedef {ReturnType<typeof import('widgets/global/WishlistCarousel').default>} Carousel\n */\n\n/**\n * @param {Carousel} Carousel Base widget for extending\n * @returns {typeof WishlistCarousel} WishlistCarousel class\n */\n\nexport default function (Carousel) {\n /**\n * @category widgets\n * @subcategory global\n * @class WishlistCarousel\n * @augments Carousel\n * @classdesc Represents WishlistCarousel component with next features:\n * @property {string} data-autoplay-infinite\n */\n\n class WishlistCarousel extends Carousel {\n /**\n * @description Widget initialization\n */\n init() {\n super.init();\n\n this.eventBus().on('product.removedFromWishlist', 'refreshCarousel');\n }\n\n refreshCarousel(itemsLength, pid) {\n this.ref('wishlistItem-' + pid).remove();\n }\n }\n\n return WishlistCarousel;\n}\n","/**\n * @typedef {ReturnType<typeof import('widgets/product/AddToCartMixin').default>} BaseAddToCartMixin\n * @typedef {InstanceType<ReturnType<typeof import('widgets/global/ProcessButton').default>>} processButton\n * @typedef {InstanceType<ReturnType<typeof import('widgets/product/Availability').default>>} availability\n */\nimport { submitFormJson, getJSONByUrl } from 'widgets/toolbox/ajax';\nimport { getCookie } from 'widgets/toolbox/cookie';\nimport localStorageWrapper from 'widgets/toolbox/localStorageWrapper';\n\n/**\n * @description Base AddToCartMixin implementation\n * <br>This class is not intended to have a separate DOM representation.\n * @param BaseAddToCartMixin Base widget for extending\n * @returns Add to Cart mixin widget\n */\nexport default function (BaseAddToCartMixin) {\n /**\n * @class AddToCartMixin\n * @augments BaseAddToCartMixin\n */\n class AddToCartMixin extends BaseAddToCartMixin {\n private loadCartItemsPromise: Promise<void> | undefined;\n\n prefs() {\n return {\n isCustomerSubscribed: false,\n isSubscriptionProduct: false,\n getCartItemIdsUrl: '',\n geOperated: false,\n plpPdpElement: false,\n bundleTile: false,\n ...super.prefs()\n };\n }\n\n /**\n * @description Widget initialization\n * @returns {void}\n */\n init() {\n super.init();\n\n if (this.prefs().isSubscriptionProduct && !this.prefs().isCustomerSubscribed) {\n this.isItemInCart(this.prefs().pid)\n .then((state: boolean) => {\n this.changeStateAddToCartButton(state);\n });\n }\n\n if (this.prefs().isSubscriptionProduct && this.prefs().geOperated) {\n this.disableAddToCartButton(false);\n }\n }\n\n /**\n * @description Hides add to cart button if the product is out of stock and notify me when available functionality is enabled\n * @returns {void}\n */\n showBackInStockButton() {\n if (this.prefs().backInStockSubscriptionEnable) {\n this.getById('availability', (/** @type {availability} */availability) => {\n availability.ref(this.prefs().backInStockBtn).show();\n });\n }\n }\n\n /**\n * @description Allows to toggle action buttons on PDP based on the received state\n * @param {RefElement} addToCartBtn Add to cart button\n * @param {boolean} state Indicated toggle state\n */\n toggleActionButtons(addToCartBtn, state = false) {\n if (state) {\n addToCartBtn.hide();\n } else {\n addToCartBtn.show();\n }\n }\n\n /**\n * @description Renders Add to Cart button\n * @param {object} addToCartButton add to cart button\n * @param {object} product productModel\n * @returns {void}\n */\n renderAddToCartButton(addToCartButton: any, product: any) {\n if (!product.available && product.availability.isOutOfStock) {\n addToCartButton.setPref('isOutOfStock', true);\n\n addToCartButton.setText(this.prefs().outOfStockLabel);\n\n addToCartButton.disable();\n } else if (product.availability.isReachedLimit) {\n this.getById(this.prefs().addToCartMsg, (addToCartMsg: any) => {\n const msg = product.availability.messages[0];\n const error = true;\n\n addToCartMsg.render(\n 'template',\n { msg, error },\n addToCartMsg.ref('container')\n ).then(() => addToCartMsg.show());\n });\n addToCartButton.setPref('isOutOfStock', true);\n\n addToCartButton.setText(this.getTextForLabel());\n\n addToCartButton.disable();\n this.toggleActionButtons(addToCartButton);\n } else if (product?.pdpAvailability?.disableA2CButton) {\n this.disableAddToCartButton();\n } else if (product.eProductData?.shippingAllowed === false) {\n addToCartButton.disable();\n addToCartButton.setText(this.prefs().unavailableShipmentLabel);\n } else {\n addToCartButton.setPref('isOutOfStock', false);\n addToCartButton.setPref('isSelectStore', false);\n addToCartButton.removeClass('m-store');\n\n addToCartButton.setText(this.getTextForLabel());\n\n addToCartButton.enable();\n this.toggleActionButtons(addToCartButton);\n }\n }\n\n /**\n * @description Render Add to Cart button\n * @param {object} product productModel\n * @returns {void}\n */\n renderAddToCart(product: any) {\n this.getById('addToCart', (addToCartBtn: any) => {\n this.renderAddToCartButton(addToCartBtn, product);\n });\n\n this.getById('addToCartSticky', (addToCartBtn: any) => {\n this.renderAddToCartButton(addToCartBtn, product);\n });\n }\n\n /**\n * @description Get label for button\n * @returns {string} label\n */\n getTextForLabel() {\n return this.prefs()[this.prefs().update ? 'updateLabel' : 'addToCartLabel'];\n }\n\n /**\n * @description Disable Add to cart Button\n * @param {boolean} showUnavailableLabel if we need to show unavailable label\n * @returns {void}\n */\n disableAddToCartButton(showUnavailableLabel = true) {\n ['addToCart', 'addToCartSticky'].forEach(btnId => {\n this.getById(btnId, (/** @type {processButton} */btn) => {\n btn.disable();\n\n if (showUnavailableLabel) {\n const unavailableLabel = this.prefs().unavailableLabel;\n\n if (unavailableLabel) {\n btn.setText(unavailableLabel);\n }\n }\n });\n });\n }\n\n /**\n * @description Show message\n * @param {string} msg Message\n * @param {boolean} error Error flag\n */\n showCartMessage(msg, error = false) {\n super.showCartMessage(msg, error);\n\n const addToCartSticky = this.getById(this.prefs().addToCartMsgSticky, (addToCartMsgSticky :any) => addToCartMsgSticky);\n\n if (addToCartSticky) {\n addToCartSticky.render('template', { msg, error }, addToCartSticky.ref('container')).then(() => addToCartSticky.show());\n } else {\n this.eventBus().emit('alert.show', {\n accessibilityAlert: msg\n });\n }\n }\n\n /**\n * @description Handles response from server once product added to cart\n * @param {object} response Add Product response\n * @returns {void}\n */\n postAddProduct(response) {\n if (response && response.redirectUrl) {\n window.location.assign(response.redirectUrl);\n\n return;\n }\n\n if (!response.error && response.cart && response.wishlistModel) {\n this.eventBus().emit('update.wishlist.items', response.wishlistModel);\n this.saveCartItems(response.cart.itemsIds);\n }\n\n super.postAddProduct(response);\n\n if (response && response.availability) {\n this.postAddProductAvailability(response);\n }\n }\n\n /**\n * @description Manages post add product availability information.\n * Product might not be available in add to cart moment, so backend returns us updated availability\n * object and this information should be reflected in availability section etc.\n * @param {object} response server response after add to cart action\n * @returns {void}\n */\n postAddProductAvailability(response) {\n if (\n !response.availability.available\n && !(response?.availability?.availableCC || response?.availability?.availableStore)\n ) {\n this.disableAddToCartButton(false);\n }\n\n const availability = this.getById('availability', (/** @type {availability} */availabilityLabel) => availabilityLabel);\n\n if (!availability) {\n return;\n }\n\n let pdpAvailability = availability.getAvailability() || {};\n\n if (typeof pdpAvailability === 'string') {\n pdpAvailability = JSON.parse(pdpAvailability);\n }\n\n Object.keys(pdpAvailability || {}).forEach(key => {\n if (key in response.availability) {\n pdpAvailability[key] = response.availability[key];\n } else if (!response.availability.preserveKeys) {\n delete pdpAvailability[key];\n }\n });\n\n Object.keys(response.availability || {}).forEach(key => {\n if (!(key in pdpAvailability)) {\n pdpAvailability[key] = response.availability[key];\n }\n });\n\n availability.setAvailability(pdpAvailability);\n\n const product = {\n availability: response.availability,\n pdpAvailability\n };\n\n if (product?.pdpAvailability?.disableA2CButton) {\n this.disableAddToCartButton(false);\n }\n\n this.callIfExists('renderAvailability', product);\n }\n\n /**\n * @description Handles add to cart button click\n * @param {processButton} button Add Product response\n * @returns {Promise<object|null>} Promise object represents server response for session continuation\n */\n addToCart(button) {\n return this.checkRequestsAndAddToCart(button);\n }\n\n /**\n * @description Check active request to changing attributes then add to cart button click\n * @param {processButton} button Add Product response\n * @returns {Promise<object|null>} Promise object represents server response for session continuation\n */\n checkRequestsAndAddToCart(button) {\n if (!this.changeAttributeRequests || !this.changeAttributeRequests.length) {\n return this.addProductToCart(button);\n }\n\n Promise.all(this.changeAttributeRequests.map(req => req.promise)).then(() => {\n return this.addProductToCart(button);\n });\n\n return null;\n }\n\n /**\n * @description Update Product View\n * @param {any} product productModel\n */\n updateProductQuantityView(product) {\n super.updateProductQuantityView(product);\n this.updateBackInStockState(true, false);\n // Hide backInStock content on update product view\n\n this.hideContent();\n this.renderAddToCart(product);\n }\n\n /**\n * @description Add Linked Subscription data to request\n * @param {object} params request\n */\n addLinkedSubscriptionObj(params) {\n this.eachChild((child) => {\n if (child.prefs().isLinkedSubscription) {\n child.getById('selectSubscriptionProduct', (subscriptionProduct) => {\n if (subscriptionProduct.getValue() === 'on') {\n params.subscriptionPidObj = JSON.stringify({\n pid: child.prefs().linkedSubscriptionId,\n qty: 1\n });\n }\n });\n }\n });\n }\n\n /**\n * @description Handles add to cart button click\n * @param {processButton} button Add Product response\n * @returns {Promise<object|null>} Promise object represents server response for session continuation\n */\n addProductToCart(button) {\n if (this.prefs().processingRequest) {\n return Promise.resolve(null);\n }\n\n if (!this.prefs().readyToOrder) {\n this.showCartMessage(this.prefs().textSelectOptions, true);\n\n return Promise.resolve(null);\n }\n\n // @ ts-expect-error ts-migrate(2339) FIXME: Property 'stock' does not exist on type 'AddToCart... Remove this comment to see the full error message\n if (this.stock && this.stock < this.prefs().selectedQuantity) {\n this.showCartMessage(this.prefs().textStockLimit, true);\n\n return Promise.resolve(null);\n }\n\n const selectedOptions = this.getSelectedProductOptions();\n const isSelectedOptionsValid = this.validateProductOptions(selectedOptions);\n\n if (!isSelectedOptionsValid) {\n return Promise.resolve(null);\n }\n\n this.setPref('processingRequest', true);\n button.startProcess();\n\n this.showProgressBar();\n\n const addToCartBtnPrefs = button.prefs();\n const amount = parseInt(addToCartBtnPrefs.amount, 10);\n\n const params = {\n pid: this.prefs().currentProductId || addToCartBtnPrefs.pid,\n quantity: this.prefs().selectedQuantity || addToCartBtnPrefs.selectedQuantity,\n populateEVoucherData: addToCartBtnPrefs.populateEVoucherData,\n amount: !Number.isNaN(amount) && amount > 0 ? amount.toString() : '',\n options: JSON.stringify(selectedOptions),\n childProducts: this.prepareChildProducts(this.prefs().bundledProducts)\n };\n\n if (this.prefs().plpPdpElement || this.prefs().bundleTile) {\n this.getById('quantity', (quantity) => {\n params.quantity = quantity.currentValue;\n });\n }\n\n this.addLinkedSubscriptionObj(params);\n\n return submitFormJson(addToCartBtnPrefs.addToCartUrl, params)\n .then((response) => {\n this.setPref('processingRequest', false);\n this.eventBus().emit('buy.again.added.to.cart', button);\n response.isBuyAgainProduct = button.prefs().isBuyAgainProduct;\n button.stopProcess();\n this.hideProgressBar();\n\n this.postAddProduct(response);\n\n return response;\n })\n .catch(() => {\n this.setPref('processingRequest', false);\n button.stopProcess();\n this.hideProgressBar();\n\n this.showCartMessage(this.prefs().textNetworkError, true);\n });\n }\n\n /**\n * @description Set Cart items to the local storage\n * @param {object} cartItemIds - Object contains items in the Cart\n */\n saveCartItems(cartItemIds) {\n localStorageWrapper.removeItem('cartItemIds');\n localStorageWrapper.setItem('currentSid', getCookie('sid'));\n localStorageWrapper.setItem('cartItemIds', JSON.stringify(cartItemIds));\n }\n\n /**\n * @description Do call to get Cart items from the server\n * @param url URL to get items in the cart\n * @returns Fetching result promise\n */\n loadCartItems(url:string): Promise<void | Record<string, unknown>> {\n return getJSONByUrl(url)\n .then((result) => {\n this.saveCartItems(result.cartItemIds);\n\n return Promise.resolve(result);\n })\n // eslint-disable-next-line no-console\n .catch(error => console.log(error));\n }\n\n /**\n * @description Check if product in the Cart\n * @param productId Target product id\n * @returns Result\n */\n isItemInCart(productId: string): Promise<boolean> {\n return this.getCartItemIds()\n .then((response) => {\n let result = false;\n\n if (!response) {\n return Promise.resolve(result);\n }\n\n // @ts-expect-error ts-migrate(2571) FIXME: Object is of type 'unknown'.\n const itemId = response.cartItemIds && response.cartItemIds.find(cartItemId => cartItemId === String(productId));\n\n if (!itemId) {\n return Promise.resolve(result);\n }\n\n result = true;\n\n return Promise.resolve(result);\n });\n }\n\n /**\n * @description Returns fetching result promise\n * @returns {Promise<object>} Promise result\n */\n getCartItemIds() {\n return new Promise((resolve, reject) => {\n if (this.loadCartItemsPromise) {\n return resolve(this.loadCartItemsPromise);\n }\n\n const itemIds = JSON.parse(localStorageWrapper.getItem('cartItemIds'));\n const isSameSession = localStorageWrapper.getItem('currentSid') === getCookie('sid');\n\n if (!!itemIds && isSameSession) {\n return resolve({ cartItemIds: itemIds });\n }\n\n const url = this.prefs().getCartItemIdsUrl;\n\n if (!url) {\n return reject(new Error('no URL provided'));\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'loadCartItemsPromise' does not exist... Remove this comment to see the full error message\n this.loadCartItemsPromise = this.loadCartItems(url);\n\n return resolve(this.loadCartItemsPromise);\n });\n }\n\n /**\n * @description Change state of Add to Basket button\n * @param state - Is product currently in the Cart\n */\n changeStateAddToCartButton(state: boolean) {\n this.getById('addToCart', (addToCartBtn) => {\n if (state) {\n addToCartBtn.disable();\n addToCartBtn.setText(this.prefs().addedToCartLabel);\n } else {\n addToCartBtn.enable();\n addToCartBtn.setText(this.prefs().addToCartLabel);\n }\n });\n\n this.getById('addToCartSticky', (addToCartBtn) => {\n if (state) {\n addToCartBtn.disable();\n addToCartBtn.setText(this.prefs().addedToCartLabel);\n } else {\n addToCartBtn.enable();\n addToCartBtn.setText(this.prefs().addToCartLabel);\n }\n });\n }\n }\n\n return AddToCartMixin;\n}\n","// @ts-nocheck\nimport { submitFormJson } from 'widgets/toolbox/ajax';\n\n/**\n * @typedef {ReturnType<typeof import('widgets/product/AddToCartMixin').default>} AddToCartMixin\n * @typedef {ReturnType<typeof import('widgets/global/ProcessButton').default>} ProcessButton\n */\n\n/**\n * @description just added product to cart mixin widget\n * @param {AddToCartMixin} AddToCartMixin Base widget for extending\n * @returns {typeof JustAddedProductToCartMixin} ProductDetail class\n */\nexport default function (AddToCartMixin) {\n class JustAddedProductToCartMixin extends AddToCartMixin {\n /**\n * @description Handles add to cart button click\n *\n * @param {ProcessButton} button Add Product response\n */\n addToCart(button) {\n const addToCartBtnPrefs = button.prefs();\n\n if (addToCartBtnPrefs.isSelectStore) {\n this.eventBus().emit('dialogshow', addToCartBtnPrefs.modalConfig);\n\n return;\n }\n\n if (!addToCartBtnPrefs.justAddedRecommendationAddToCart) {\n super.addToCart(button);\n\n return;\n }\n\n this.addJustAddedProductRecommendation(button);\n }\n\n /**\n * @description Handles response from server once product added to cart\n *\n * @param {object} response Add Product response\n * @returns {void}\n */\n postAddProduct(response) {\n if (response && response.redirectUrl) {\n window.location.assign(response.redirectUrl);\n\n return;\n }\n\n if (!response.error && response.cart) {\n this.saveCartItems(response.cart.itemsIds);\n }\n\n if (!response.error && response.subscriptionUUID) {\n this.eventBus().emit('added.subscription.product.line.item');\n }\n\n if (response.justAddedProductCart && !this.isIdeaProduct(response) && !response.isBuyAgainProduct) {\n this.showJustAddedProductCart(response);\n\n if (response.availability) {\n this.postAddProductAvailability(response);\n }\n } else {\n super.postAddProduct(response);\n }\n }\n\n /**\n * @description Handles add to cart button click\n * @param {ProcessButton} button Add Product response\n * @returns {Promise<object|null>} Promise object represents server response for session continuation\n */\n addJustAddedProductRecommendation(button) {\n if (this.prefs().processingRequest) {\n return Promise.resolve(null);\n }\n\n if (!this.prefs().readyToOrder) {\n this.showCartMessage(this.prefs().textSelectOptions, true);\n\n return Promise.resolve(null);\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'stock' does not exist on type 'AddToCart... Remove this comment to see the full error message\n if (this.stock && this.stock < this.prefs().selectedQuantity) {\n this.showCartMessage(this.prefs().textStockLimit, true);\n\n return Promise.resolve(null);\n }\n\n const selectedOptions = this.getSelectedProductOptions();\n const isSelectedOptionsValid = this.validateProductOptions(selectedOptions);\n\n if (!isSelectedOptionsValid) {\n return Promise.resolve(null);\n }\n\n this.setPref('processingRequest', true);\n button.startProcess();\n\n this.showProgressBar();\n\n const addToCartBtnPrefs = button.prefs();\n const pid = this.prefs().currentProductId || addToCartBtnPrefs.pid;\n let justAddedCartProductsID = [];\n\n this.eventBus().emit('just.added.cart.mgr.execute', (justAddedCartMgr) => {\n justAddedCartProductsID = [...justAddedCartMgr.getJustAddedItemsID()];\n });\n\n const stringifiedJustAddedProducts = JSON.stringify(justAddedCartProductsID);\n\n return submitFormJson(addToCartBtnPrefs.addToCartUrl, {\n pid: pid,\n pids: stringifiedJustAddedProducts,\n quantity: this.prefs().selectedQuantity || addToCartBtnPrefs.selectedQuantity,\n options: JSON.stringify(selectedOptions),\n childProducts: this.prepareChildProducts(this.prefs().bundledProducts)\n })\n .then((response) => {\n this.setPref('processingRequest', false);\n button.stopProcess();\n this.hideProgressBar();\n this.postAddProduct(response);\n\n return response;\n })\n .catch(() => {\n this.setPref('processingRequest', false);\n button.stopProcess();\n this.hideProgressBar();\n this.showCartMessage(this.prefs().textNetworkError, true);\n });\n }\n\n /**\n * @description shows cart quick view\n *\n * @param {object} response - result of the adding to cart call\n * @param {object} response.cart - cart model\n * @param {string} response.pid - added product identifier\n */\n showJustAddedProductCart(response) {\n const cartModel = response.cart;\n const productID = response.pid;\n const subscriptionID = response.subscriptionID;\n\n cartModel.action = response.action;\n\n if (response.error && this.prefs().showMessageOnProductAdd) {\n this.eventBus().emit('product.addedTocart.with.error', response);\n this.showCartMessage(response.message, response.error);\n\n return;\n }\n\n if (!cartModel || !cartModel.numItems) {\n return;\n }\n\n this.showProgressBar();\n\n this.eventBus().emit('show.just.added.cart', { productID, cartModel, subscriptionID });\n\n cartModel.showMinicart = false;\n this.eventBus().emit('cart.updated', { cartModel }, this);\n\n if (window.contexts.includes('cart')) {\n this.eventBus().emit('product.added.to.cart', { cartModel }, this);\n } else if (response.subscriptionID) {\n this.eventBus().emit('just.added.product.to.cart', { cartModel }, this, null, response.subscriptionID);\n } else {\n this.eventBus().emit('just.added.product.to.cart', { cartModel }, this);\n }\n\n this.hideProgressBar();\n }\n\n /**\n * @description checks that is idea product\n *\n * @param {object} response - result of the adding to cart call\n * @param {object} response.cart - cart model\n * @param {string} response.pid - added product identifier\n * @returns {boolean} result\n */\n isIdeaProduct(response) {\n const { pid, cart } = response;\n\n const productModel = cart.items.find(item => item.id === pid);\n\n return productModel && productModel.isIdea;\n }\n }\n\n return JustAddedProductToCartMixin;\n}\n","/**\n * @typedef {typeof import('widgets/Widget').default} Widget\n */\n\n/**\n * @description LinkedSubscription implementation\n * @param {Widget} Widget Base widget for extending\n * @returns {typeof LinkedSubscription} LinkedSubscription class\n */\nexport default function (Widget) {\n /**\n * @class LinkedSubscription\n * @augments Widget\n */\n\n class LinkedSubscription extends Widget {\n init() {\n super.init();\n this.eventBus().on('remove.product.line.item', 'showLinkedSubscription');\n this.eventBus().on('added.subscription.product.line.item', 'hideLinkedSubscription');\n }\n\n showLinkedSubscription(response) {\n this.getById('selectSubscriptionProduct', (subscriptionProduct) => {\n subscriptionProduct.unselectCheckbox();\n });\n\n if (this.prefs().linkedSubscriptionId && response.deletedProductId === this.prefs().linkedSubscriptionId.toString()) {\n this.show();\n }\n }\n\n hideLinkedSubscription() {\n this.hide();\n this.getById('selectSubscriptionProduct', (subscriptionProduct) => {\n subscriptionProduct.unselectCheckbox();\n });\n }\n }\n\n return LinkedSubscription;\n}\n","/**\n * @typedef {ReturnType<typeof import('widgets/global/Disclosure').default>} Disclosure\n */\n\n/**\n * @description Base Social Disclosure implementation\n * @param {Disclosure} Disclosure Base widget for extending\n * @returns {typeof ProductSocialDisclosure} RecentlyViewedMixin\n */\nexport default function (Disclosure) {\n /**\n * @class ProductSocialDisclosure\n * @augments Disclosure\n */\n class ProductSocialDisclosure extends Disclosure {\n }\n\n return ProductSocialDisclosure;\n}\n","import { copyTextToClipboard } from 'core/toolbox/util';\n\n/**\n * @typedef {typeof import('widgets/Widget').default} Widget\n */\n\n/**\n * @description {ProductSocialLinks} implementation\n * @param {Widget} Widget Base widget for extending\n * @returns {typeof ProductSocialLinks} ProductSocialLinks class\n */\nexport default function (Widget) {\n /**\n * @class ProductSocialLinks\n * @augments Widget\n */\n class ProductSocialLinks extends Widget {\n /**\n * @description Process share click event\n * @param {object} el - DOM element\n */\n socialShareClick(el) {\n if (el.data('isIdea')) {\n this.eventBus().emit('gtm.datalayer.event', {\n event: 'data-layer-event',\n eventCategory: 'Social share',\n eventAction: 'Idea',\n eventLabel: el.data('gtmEventLabel')\n });\n }\n }\n\n /**\n * @description Copy product url to clipboard\n * @returns {void}\n */\n copyToClipboard() {\n copyTextToClipboard(this.prefs().productUrl);\n\n /**\n * @description Global event to show alert\n * @event \"alert.show\"\n */\n this.eventBus().emit('alert.show', {\n accessibilityAlert: this.prefs().accessibilityCopiedToClipboard\n });\n }\n }\n\n return ProductSocialLinks;\n}\n","/**\n * @typedef {ReturnType<typeof import('widgets/product/ProductTile').default>} BaseProductTile\n */\n\n/**\n * @description Base ProductTile implementation\n * @param {BaseProductTile} BaseProductTile Base widget for extending\n * @returns {typeof ProductTile} ProductTile widget\n */\nexport default function (BaseProductTile) {\n /**\n * @class ProductTile\n * @augments BaseProductTile\n */\n class ProductTile extends BaseProductTile {\n /**\n * @description Trigger Quick View popup for this product tile\n * @returns {void}\n */\n triggerQuickView() {\n this.has('quickViewButton', quickViewButton => this.showQuickView(quickViewButton));\n }\n\n onProductLinkClick(el, event) {\n if (el.data('isProductSet')) {\n this.eventBus().emit('gtm.click.event', {\n event: 'data-layer-event',\n eventCategory: 'Search',\n eventAction: 'Ideas search',\n eventLabel: 'Suggested Search',\n eventSublabel: el.data('gtmEventSublabel')\n });\n } else {\n super.onProductLinkClick(el, event);\n }\n\n if (this.prefs().gridItem) {\n window.sessionStorage.setItem('anchorTileID', String(this.id));\n window.sessionStorage.setItem('anchorTileOffset', String(this.ref('self').get()?.getBoundingClientRect().top));\n }\n }\n\n showQuickView(button) {\n /**\n * @description Event dispatched, when Global Modal should be triggered\n * @event module:events#dialogshow\n */\n this.eventBus().emit('dialogshow', {\n url: button.data('url'),\n wrapperClasses: button.data('wrapperClasses'),\n windowClasses: button.data('windowClasses'),\n headerClasses: button.data('headerClasses'),\n bodyClasses: button.data('bodyClasses'),\n ariaLabel: this.prefs().productName,\n attributes: {\n 'data-tau-unique': 'quick_view_dialog'\n }\n });\n\n this.onModalShow();\n }\n }\n\n return ProductTile;\n}\n","/**\n * @typedef {ReturnType<typeof import('widgets/search/SearchList').default>} SearchList\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} RefElement\n */\n\n/**\n * @param {SearchList} SearchList Base widget for extending\n * @returns {typeof CategorySearchList} IdeasSearchList widget\n */\nexport default function (SearchList) {\n /**\n * @class IdeasSearchList\n * @augments SearchList\n */\n class CategorySearchList extends SearchList {\n /**\n * @description fires select search item event\n * @param {RefElement} searchItem - selected search item\n */\n selectSearchItemEvent(searchItem) {\n this.eventBus().emit('category.search.link.selected', searchItem);\n }\n }\n\n return CategorySearchList;\n}\n","/**\n * @typedef {ReturnType<typeof import('widgets/search/SearchList').default>} SearchList\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} RefElement\n */\n\n/**\n * @param {SearchList} SearchList Base widget for extending\n * @returns {typeof IdeasSearchList} IdeasSearchList widget\n */\nexport default function (SearchList) {\n /**\n * @class IdeasSearchList\n * @augments SearchList\n */\n class IdeasSearchList extends SearchList {\n /**\n * @description fires select search item event\n * @param {RefElement} searchItem - selected search item\n */\n selectSearchItemEvent(searchItem) {\n this.eventBus().emit('ideas.search.terms.selected', searchItem);\n }\n }\n\n return IdeasSearchList;\n}\n","/* eslint-disable spellcheck/spell-checker */\n\nimport { submitCORS } from 'core/toolbox/ajax';\nimport { appendParamsToUrl } from 'widgets/toolbox/util';\nimport { appendParamToURL } from 'core/toolbox/util';\nimport { getCookie } from 'widgets/toolbox/cookie';\n\n/**\n * @typedef {ReturnType<typeof import('widgets/search/SearchBox').default>} SearchBoxBase\n */\n\nconst PRODUCT_TYPE_PRODUCT = 'product';\nconst PRODUCT_TYPE_IDEA = 'idea';\n\n/**\n * @description Get stars rating for product\n * @param {number} productRating raw product rating\n * @returns {Array<object>} stars product rating\n */\nfunction getStarsProductRating(productRating) {\n return [1, 2, 3, 4, 5].map((currentValue, index) => {\n const starObj = {\n position: index > 0 ? index * 20 : 0\n };\n\n if (productRating >= currentValue) {\n starObj.isFull = true;\n } else if ((productRating % 1 > 0) && (Math.ceil(productRating) >= currentValue)) {\n starObj.isHalf = true;\n } else {\n starObj.isEmpty = true;\n }\n\n return starObj;\n });\n}\n\n/**\n * @description SearchBox widget\n * @param {SearchBoxBase} SearchBoxBase Base widget for extending\n * @returns {typeof SearchBox} SearchBox class\n */\n\nexport default function (SearchBoxBase) {\n /**\n * @class SearchBox\n * @augments SearchBoxBase\n */\n class SearchBox extends SearchBoxBase {\n prefs() {\n return {\n bloomreachConfig: {\n suggestionsURL: '',\n productsURL: '',\n accountId: '',\n authKey: '',\n catalogViews: ''\n },\n phrasesCount: 5,\n productsCount: 4,\n ideasCount: 4,\n viewAllProductsLink: '',\n viewAllIdeasLink: '',\n currencySymbol: null,\n priceFree: 'FREE',\n ...super.prefs()\n };\n }\n\n /**\n * @description Init widget method\n * @returns {void}\n */\n init() {\n super.init();\n\n this.suggestions = null;\n this.products = null;\n this.posinset = -1;\n this.posinsetAllProductsLink = 0;\n this.posinsetAllIdeasLink = 0;\n }\n\n /**\n * @description Send request to the server\n * overloaded method to get product suggestions from Bloomreach\n * @param {string} query - requested search query\n * @returns {Promise<void>} Promise object represents server response for search suggestions\n */\n getSuggestions(query) {\n this.getBloomreachSuggestions(query);\n\n return Promise.resolve();\n }\n\n /**\n * @description Returns common data for Bloomreach requests\n * @param {object} bloomreachConfig Bloomreach config data\n * @param {string} query search query\n * @returns {object} common data for Bloomreach requests\n */\n getBloomreachCommonRequestParams(bloomreachConfig, query) {\n return {\n account_id: bloomreachConfig.accountId,\n auth_key: bloomreachConfig.authKey,\n _br_uid_2: getCookie('_br_uid_2'),\n url: window.location.href,\n ref_url: document.referrer,\n request_id: Date.now().toString(),\n q: query\n };\n }\n\n /**\n * @description Performs CORS request to Bloomreach to get search suggestions\n * @param {string} query query string\n * @returns {void}\n */\n getBloomreachSuggestions(query) {\n if (this.prefs().bloomreachConfig.suggestionsURL) {\n const bloomreachConfig = this.prefs().bloomreachConfig;\n const bloomreachURL = appendParamsToUrl(bloomreachConfig.suggestionsURL, {\n ...this.getBloomreachCommonRequestParams(bloomreachConfig, query),\n catalog_views: this.prefs().bloomreachConfig.catalogViews,\n request_type: 'suggest'\n });\n\n submitCORS(bloomreachURL)\n .then(response => {\n this.suggestions = response;\n this.getBloomreachProducts(query);\n })\n .catch(() => {\n this.getBloomreachProducts(query);\n });\n }\n }\n\n /**\n * @description Performs CORS request to Bloomreach to get product suggestions.\n * Only products `ideas` should be in scope\n * @param {string} query query string\n * @returns {void}\n */\n getBloomreachProducts(query) {\n if (this.prefs().bloomreachConfig.productsURL) {\n const bloomreachConfig = this.prefs().bloomreachConfig;\n let bloomreachURL = appendParamsToUrl(bloomreachConfig.productsURL, {\n ...this.getBloomreachCommonRequestParams(bloomreachConfig, query),\n search_type: 'keyword',\n request_type: 'search',\n rows: 10,\n start: 0,\n fl: 'pid,thumb_image,title,url'\n });\n\n bloomreachURL = appendParamToURL(bloomreachURL, 'fq', 'isSFCC:\"Yes\"', true);\n bloomreachURL = appendParamToURL(bloomreachURL, 'fq', 'isidea:\"Yes\"', true);\n\n submitCORS(bloomreachURL)\n .then(response => {\n this.products = response;\n this.renderSuggestionsAndProducts(query);\n })\n .catch(() => {\n this.renderSuggestionsAndProducts(query);\n });\n }\n }\n\n /**\n * @description Get suggestion search phrases from Bloomreach response\n * @returns {Array<Object>} search phrases\n */\n getPhrasesFromResponse() {\n let phrases = [];\n\n let responsePhrases = this.suggestions?.suggestionGroups;\n\n if (responsePhrases && responsePhrases.length) {\n responsePhrases = responsePhrases[0]?.querySuggestions;\n }\n\n if (responsePhrases && responsePhrases.length) {\n responsePhrases.splice(this.prefs().phrasesCount);\n\n phrases = responsePhrases.map((querySuggestion) => {\n this.posinset += 1;\n\n return {\n posinset: this.posinset,\n value: querySuggestion.query\n };\n });\n }\n\n return phrases;\n }\n\n /**\n * @description Get either products or ideas from Bloomreach response\n * @param {string} productType what to get - either products or ideas\n * @returns {Array<Object>} search phrases\n */\n /* eslint-disable sonarjs/cognitive-complexity */\n getProductsFromResponse(productType = PRODUCT_TYPE_PRODUCT) {\n let products = [];\n let responseProducts = [];\n\n if (productType === PRODUCT_TYPE_PRODUCT) {\n responseProducts = this.suggestions?.suggestionGroups;\n\n if (responseProducts && responseProducts.length) {\n responseProducts = responseProducts[0]?.searchSuggestions;\n }\n } else if (productType === PRODUCT_TYPE_IDEA) {\n responseProducts = this.products?.response?.docs;\n }\n\n if (responseProducts && responseProducts.length) {\n if (productType === PRODUCT_TYPE_PRODUCT) {\n responseProducts = responseProducts.filter(responseProduct => !responseProduct.isidea);\n }\n\n responseProducts.splice(\n productType === PRODUCT_TYPE_PRODUCT\n ? this.prefs().productsCount : this.prefs().ideasCount\n );\n\n products = responseProducts.map((responseProduct) => {\n this.posinset += 1;\n\n let listPrice = '';\n let salesPrice = '';\n\n if (this.prefs().currencySymbol) {\n listPrice = this.prefs().currencySymbol + (parseFloat(responseProduct.price) || 0).toFixed(2);\n salesPrice = responseProduct.price === responseProduct.sale_price\n ? '' : this.prefs().currencySymbol + (parseFloat(responseProduct.sale_price) || 0).toFixed(2);\n }\n\n if (responseProduct.price === 0.01) {\n listPrice = this.prefs().priceFree;\n }\n\n const ratings = getStarsProductRating(responseProduct.BazaarvoiceStarRating || 0);\n const reviewsCount = responseProduct.NoBazaarvoiceReviews || 0;\n\n return {\n posinset: this.posinset,\n productName: responseProduct.title,\n url: responseProduct.sfcc_deeplink || responseProduct.url,\n id: responseProduct.pid,\n gtmInfoStr: '',\n image: {\n url: responseProduct.sfcc_image || responseProduct.thumb_image,\n alt: responseProduct.title\n },\n product: {\n rating: responseProduct.NoBazaarvoiceReviews || 0\n },\n ratings,\n listPrice,\n salesPrice,\n reviewsCount\n };\n });\n\n if (productType === PRODUCT_TYPE_PRODUCT && products.length) {\n this.posinset += 1;\n this.posinsetAllProductsLink = this.posinset;\n } else if (productType === PRODUCT_TYPE_IDEA && products.length) {\n this.posinset += 1;\n this.posinsetAllIdeasLink = this.posinset;\n }\n }\n\n return products;\n }\n /* eslint-enable sonarjs/cognitive-complexity */\n\n /**\n * @description Fill in `suggestions` with phrases, products and ideas and renders result\n * @param {string} query search query entered by user\n * @returns {void}\n */\n renderSuggestionsAndProducts(query) {\n const suggestions = {\n key: query,\n phrases: this.getPhrasesFromResponse(),\n products: this.getProductsFromResponse(PRODUCT_TYPE_PRODUCT),\n ideas: this.getProductsFromResponse(PRODUCT_TYPE_IDEA),\n viewAllProductsLink: this.prefs().viewAllProductsLink.replace('__q__', query),\n viewAllIdeasLink: this.prefs().viewAllIdeasLink.replace('__q__', query),\n posinsetAllProductsLink: this.posinsetAllProductsLink,\n posinsetAllIdeasLink: this.posinsetAllIdeasLink\n };\n\n let totalCount = ['phrases', 'products', 'ideas'].reduce((acc, item) => {\n acc += suggestions[item].length;\n\n return acc;\n }, 0);\n\n if (suggestions.products.length) {\n totalCount++;\n }\n\n if (suggestions.ideas.length) {\n totalCount++;\n }\n\n this.renderResult(suggestions).then(() => {\n this.afterSuggestionsUpdate(query, totalCount);\n });\n }\n\n /**\n * @description Executes when user clicks on product details link in the search box results.\n * Usually used by analytics etc.\n * @emits \"gtm.click.event\"\n * @param {object} el - DOM element\n */\n onProductLinkClick(el) {\n this.eventBus().emit('gtm.click.event', {\n event: 'data-layer-event',\n eventCategory: 'Search',\n eventAction: 'Search suggestions',\n eventLabel: el.data('gtmEventLabel'),\n eventSublabel: el.data('gtmEventSublabel')\n });\n }\n\n /**\n * @description Selects combobox dropdown item\n * @param {object} selectedItem - item, selected by user\n * @returns {void}\n */\n selectItem(selectedItem) {\n super.selectItem(selectedItem);\n\n this.eventBus().emit('select.search.suggestion.item', selectedItem);\n }\n }\n\n return SearchBox;\n}\n","/**\n * @typedef {typeof import('widgets/Widget').default} Widget\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} RefElement\n */\n\n/**\n * @param {Widget} Widget Base widget for extending\n * @returns {typeof SearchList} IdeasSearchList widget\n */\nexport default function (Widget) {\n /**\n * @class IdeasSearchList\n * @augments Widget\n */\n class SearchList extends Widget {\n /**\n * @description global search item event\n * @param {RefElement} element - selected search item\n */\n // eslint-disable-next-line no-unused-vars\n selectSearchItemEvent(element) {\n }\n\n /**\n * @description handles selection of search item\n * @param {RefElement} element - selected search item\n */\n selectSearchItem(element) {\n this.selectSearchItemEvent(element);\n\n window.location.assign(element.attr('href').toString());\n }\n }\n\n return SearchList;\n}\n","import { postJsonData } from 'widgets/toolbox/ajax';\nimport { getCookie } from 'widgets/toolbox/cookie';\n\n/**\n * @typedef {typeof import('core/storelocator/PreferredStoreSelector').default} PreferredStoreSelector\n * @typedef {typeof import('widgets/Widget').default} Widget\n */\n\n/**\n * @param {Widget} Widget Base widget for extending\n * @returns {typeof PreferredStoreSelector} Widget\n */\n\nexport default function (Widget) {\n class PreferredStoreSelector extends Widget {\n prefs() {\n return {\n storeCookie: 'dw_store',\n storeDetail: false,\n ...super.prefs()\n };\n }\n\n init() {\n super.init();\n\n this.initPreferredStoreData();\n this.initEvents();\n }\n\n /**\n * @description inits widget events\n */\n initEvents() {\n if (this.prefs().storeDetail) {\n this.eventBus().on('update.store.details.data', 'updateStoreData');\n }\n }\n\n /**\n * @description updates store data\n * @param {string} storeID - store id\n */\n updateStoreData(storeID) {\n if (this.prefs().storeId === storeID) {\n this.renderTemplateStore();\n }\n }\n\n /**\n * @description inits store locator link data\n */\n initPreferredStoreData() {\n const storeID = getCookie(this.prefs().storeCookie);\n\n if (!storeID) {\n return;\n }\n\n this.updateStoreData(storeID);\n }\n\n handleSelect() {\n postJsonData(this.prefs().action, {\n storeID: this.prefs().storeId\n }).then((response) => {\n if (!response.isSuccess) {\n return;\n }\n\n const storeData = {\n name: this.prefs().name,\n url: response.storeURL,\n storeId: this.prefs().storeId\n };\n\n this.eventBus().emit('preferredstore.selected', storeData);\n this.eventBus().emit('gtm.datalayer.event', {\n event: 'data-layer-event',\n eventCategory: 'Key interactions',\n eventAction: 'Make my preferred store',\n eventLabel: this.prefs().name\n });\n\n this.renderTemplateStore();\n\n if (this.prefs().storeDetail) {\n this.eventBus().emit('update.store.details.data', this.prefs().storeId);\n }\n });\n }\n\n /**\n * @description render selected store\n * @returns {void}\n */\n renderTemplateStore() {\n if (this.ref('storeContainer').length) {\n this.render('templateStore', null, this.ref('storeContainer'));\n }\n }\n }\n\n return PreferredStoreSelector;\n}\n","import { errorFallbackMessage } from 'widgets/toolbox/ajax';\n\nconst APPLICATION_JSON = 'application/json';\nconst TEXT_HTML = 'text/html';\nconst CONTENT_TYPE = 'content-type';\nconst FAILED_FETCH = 'Failed to fetch';\nconst FORM_URL_ENCODED = 'application/x-www-form-urlencoded';\n\n/**\n * @description Get fetch\n * @returns {Promise<object>} Promise whose internal state matches the provided promise\n */\nfunction getFetch(): Promise<unknown[]> {\n const dependencies: Promise<unknown>[] = [];\n\n if (window.fetch) {\n dependencies.push(Promise.resolve(window.fetch));\n } else {\n dependencies.push(import(/* webpackChunkName: 'fetch' */ 'whatwg-fetch'));\n }\n\n if (window.AbortController) {\n dependencies.push(Promise.resolve(window.AbortController));\n } else {\n dependencies.push(import(/* webpackChunkName: 'fetch' */ 'yet-another-abortcontroller-polyfill'));\n }\n\n return Promise.all(dependencies);\n}\n\n/**\n * @description Handles response by type and status\n * @param response - response data\n * @param type - content type to handle\n * @returns result\n */\nfunction handleResponse(response: Response, type: string = APPLICATION_JSON): Promise<any> {\n const contentType = response.headers.get(CONTENT_TYPE);\n\n if (response.ok) {\n if (contentType && contentType.includes(APPLICATION_JSON) && (type === APPLICATION_JSON)) {\n return response.json();\n }\n\n if (contentType && contentType.includes(TEXT_HTML) && (type === TEXT_HTML)) {\n return response.text();\n }\n } else if (response.status === 404 || response.status === 500) {\n return response.json().then(errorJson => {\n return Promise.reject(errorJson);\n });\n }\n\n return response.json().then(errorJson => {\n return Promise.reject(errorJson);\n });\n}\n\n/**\n * @description Handle errors when response failed for some reason\n * @param error - error object\n * @returns result\n */\nfunction handleResponseError(error: Error): Record<string, unknown> {\n let message = '';\n\n switch (error.message) {\n case FAILED_FETCH:\n message = errorFallbackMessage;\n break;\n default:\n message = error.message;\n break;\n }\n\n return {\n error: message,\n message: message\n };\n}\n\n/**\n * @description Form submission handler\n * @param {string} url url of resource\n * @param {string} method typeof request\n * @param {object} headers request headers\n * @param {object} body params for POST request\n * @returns Fetching result promise\n */\nexport const submitCORS = (\n url: string,\n method = 'GET',\n headers: { [x: string]: string; } = {},\n body: { [key: string]: string; } = {}\n): Promise<Response | Record<string, unknown>> => {\n return getFetch().then(() => {\n const requestObject: RequestInit = {\n mode: 'cors',\n cache: 'no-cache',\n redirect: 'follow',\n method: method || 'GET',\n headers: {\n 'Content-Type': headers.contentType || FORM_URL_ENCODED,\n Accept: headers.accept || APPLICATION_JSON\n }\n };\n\n if (method !== 'GET') {\n requestObject.body = JSON.stringify(body);\n }\n\n return Promise.resolve(fetch(url, requestObject)).then(handleResponse).catch(handleResponseError);\n });\n};\n","let resolveYTPlayerFn = null;\nlet initialized = false;\n\nconst initializationPromise = new Promise((resolve) => {\n resolveYTPlayerFn = resolve;\n});\n\nwindow.onYouTubeIframeAPIReady = () => {\n resolveYTPlayerFn();\n};\n\nexport function initYoutubePlayerApi() {\n if (!initialized) {\n const youtubePlayerApiUrl = 'https://www.youtube.com/iframe_api';\n const scriptHadBeingInited = Array.from(document.querySelectorAll('script')).some((script) => {\n return script.src === youtubePlayerApiUrl;\n });\n\n if (!scriptHadBeingInited) {\n const tag = document.createElement('script');\n tag.src = youtubePlayerApiUrl;\n const firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag?.parentNode?.insertBefore(tag, firstScriptTag);\n }\n\n initialized = true;\n }\n\n return initializationPromise;\n}\n","import { loadTemplateEngine } from 'widgets/toolbox/render';\n\nfunction initMustacheGlobals() {\n loadTemplateEngine().then(Mustache => {\n const originalRender = Mustache.render;\n\n Mustache.render = function (template, view, partials) {\n view = view || {};\n\n const tags = Mustache.tags || ['{{', '}}'];\n\n /**\n * @description A helper to render stringified JSON\n * @returns {Function} render function\n */\n view.stringifyJSON = function () {\n return function (obj, render) {\n const property = obj\n .replace(tags[0], '')\n .replace(tags[1], '');\n\n if (this && this[property] && typeof this[property] === 'object') {\n this[property] = JSON.stringify(this[property]);\n }\n\n return render(obj);\n };\n };\n\n return originalRender(template, view, partials);\n };\n });\n}\n\n/**\n * @description Global entry point for any global actions\n * @returns {void}\n */\nexport function init() {\n initMustacheGlobals();\n}\n","import {\n SMALL,\n MEDIUM,\n LARGE,\n EXTRA_LARGE,\n getViewType\n} from 'widgets/toolbox/viewtype';\n\nconst stickyHeaderHeightMap = {\n [SMALL]: 52,\n [MEDIUM]: 52,\n [LARGE]: 104,\n [EXTRA_LARGE]: 64\n};\n\n/**\n * Gets height of sticky header based on current view type\n *\n * @returns {number} height of sticky header\n */\nexport function getStickyHeaderHeight() {\n let stickyHeaderHeight = stickyHeaderHeightMap[getViewType()];\n\n if (window.contexts.includes('pdp')) {\n stickyHeaderHeight += 60;\n }\n\n return stickyHeaderHeight;\n}\n\n/**\n * Returns object with element offset\n *\n * @param {HTMLElement|null} element - DOM element\n * @returns {{ top: number; left: number; }} page scroll position\n */\nexport function elementOffset(element) {\n const offset = { top: 0, left: 0 };\n\n if (element) {\n const docElem = document.documentElement;\n const elemBox = element.getBoundingClientRect();\n\n offset.top = elemBox.top + window.pageYOffset - docElem.clientTop;\n offset.left = elemBox.left + window.pageXOffset - docElem.clientLeft;\n }\n\n return offset;\n}\n\n/**\n * Check if element is in viewport\n *\n * @param {HTMLElement} [element] - HTML Element\n * @param {boolean} [fullyVisible] - true if element should be fully visible\n * @returns {boolean} true if element is in viewport\n */\nexport function elementInViewport(element, fullyVisible = false) {\n if (!element) {\n return false;\n }\n\n const stickyHeaderHeight = getStickyHeaderHeight();\n\n let top = elementOffset(element).top;\n const left = elementOffset(element).left;\n const width = element.clientWidth;\n const height = element.clientHeight;\n\n let wHeight = window.innerHeight;\n let wWidth = window.innerWidth;\n let wYOffset = window.pageYOffset;\n let wXOffset = window.pageXOffset;\n\n if (wXOffset === null) {\n wHeight = window.document.documentElement.clientHeight;\n wWidth = window.document.documentElement.clientWidth;\n wYOffset = window.document.documentElement.scrollTop;\n wXOffset = window.document.documentElement.scrollLeft;\n }\n\n top -= stickyHeaderHeight;\n wHeight -= stickyHeaderHeight;\n\n if (fullyVisible) {\n return (\n top > wYOffset\n && left > wXOffset\n && (top + height) < (wYOffset + wHeight)\n && (left + width) < (wXOffset + wWidth)\n );\n }\n\n return (\n top < (wYOffset + wHeight)\n && left < (wXOffset + wWidth)\n && (top + height) > wYOffset\n && (left + width) > wXOffset\n );\n}\n\n/**\n * @description Scroll window to provided element\n * @param {HTMLElement|undefined} element - HTML Element\n * @param {boolean} [countHeaderHeight] - add to top header height\n * @param {{behavior: string|undefined, top: number|undefined, left: number|undefined}} options scroll options\n * @returns {void}\n */\nexport function scrollWindowTo(element, countHeaderHeight = false, options = { behavior: 'smooth', top: 0, left: 0 }) {\n if (!element) {\n return;\n }\n\n const top = element.getBoundingClientRect().top + window.pageYOffset + (options.top || 0);\n const left = 0 + (options.left || 0);\n\n if (countHeaderHeight) {\n const stickyHeaderHeight = getStickyHeaderHeight();\n\n window.scrollTo({ top: top - stickyHeaderHeight, left: left, behavior: options.behavior });\n } else {\n window.scrollTo({ top: top, left: left, behavior: options.behavior });\n }\n}\n","/**\n * @description Copies some text to clipboard, using browser's `textarea` tag and `document.execCommand('copy')`\n * @param {string} text text to copy\n * @returns {void}\n */\nexport function copyTextToClipboard(text) {\n if ('clipboard' in navigator) {\n navigator.clipboard.writeText(text);\n } else {\n const el = document.createElement('textarea');\n\n el.ariaHidden = 'true';\n el.style.position = 'absolute';\n el.style.top = '0';\n el.style.opacity = '0';\n el.value = text || '';\n document.body.appendChild(el);\n el.select();\n document.execCommand('copy');\n document.body.removeChild(el);\n }\n}\n\n/**\n * @description Append parameter to provided URL\n * @param {string} initialUrl initial url\n * @param {string} name name of params\n * @param {string} value value of param\n * @param {boolean} force if we need to add param even if it already exists\n * @returns {string} url with appended param\n */\nexport function appendParamToURL(initialUrl, name, value, force = false) {\n const url = new URL(initialUrl, document.location.origin);\n\n if (url.searchParams.get(name) && !force) {\n return url.toString();\n }\n\n url.searchParams.append(name, value);\n\n return url.toString();\n}\n\n/**\n * @description Expose tools for global usage (for ex. in case of AJAX-requests in legacy 3-d party scripts)\n * @param {string} name - Method name\n * @param {function} method - Method to expose\n * @returns {void}\n */\nexport function exposeMethodGlobally(name, method) {\n if (!window.tools) {\n window.tools = {};\n }\n\n window.tools[name] = method;\n}\n","/* eslint-disable max-len, indent, sonarjs/no-duplicate-string */\n/* sonar-ignore-start */\n\nimport WidgetsMgr from 'widgets/widgetsMgr';\n\nimport StickyHeader from 'core/global/StickyHeader';\nimport BasicInput from 'core/forms/BasicInput';\nimport BasicForm from 'core/forms/BasicForm';\nimport InputDate from 'core/forms/InputDate';\nimport InputSelect from 'core/forms/InputSelect';\nimport InputTextTypeNumber from 'core/forms/InputTextTypeNumber';\nimport InputTextarea from 'core/forms/InputTextarea';\nimport InputPassword from 'core/forms/InputPassword';\nimport InputTel from 'core/forms/InputTel';\nimport Button from 'core/global/Button';\nimport PreferredStoreSelector from 'core/storelocator/PreferredStoreSelector';\nimport StoreLocatorLink from 'core/global/StoreLocatorLink';\nimport Image from 'core/global/Image';\nimport VideoPlayer from 'core/global/VideoPlayer';\nimport VideoPlayerHTML5 from 'core/global/VideoPlayerHTML5';\nimport SearchBox from 'core/search/SearchBox';\nimport ProductSocialLinks from 'core/product/ProductSocialLinks';\nimport StickyElement from 'core/global/StickyElement';\nimport AccordionItem from 'core/global/AccordionItem';\nimport BackToTop from 'core/global/BackToTop';\nimport BaseAddToCartMixin from 'widgets/product/AddToCartMixin';\nimport AddToCartMixin from 'core/product/AddToCartMixin';\nimport ProductTile from 'core/product/ProductTile';\nimport GtmDataLayer from 'core/global/GtmDataLayer';\nimport Modal from 'core/global/Modal';\nimport Osano from 'core/global/Osano';\nimport ExponeaSegmentation from 'core/global/ExponeaSegmentation';\nimport ProcessButton from 'core/global/ProcessButton';\nimport JustAddedProductToCartMixin from 'core/product/JustAddedProductToCartMixin';\nimport JustAddedToCartModal from 'core/cart/JustAddedToCartModal';\nimport JustAddedToCartMgr from 'core/cart/JustAddedToCartMgr';\nimport BaseCartMgr from 'widgets/cart/CartMgr';\nimport CartMgr from 'core/cart/CartMgr';\nimport CartMixin from 'core/cart/CartMixin';\nimport CartLineItem from 'core/cart/CartLineItem';\nimport ProductSocialDisclosure from 'core/product/ProductSocialDisclosure';\nimport AddToWishlistMixin from 'plugin_wishlists/wishlist/AddToWishlistMixin';\nimport IdeasSearchForm from 'core/forms/IdeasSearchForm';\nimport EmailSubscribe from 'core/forms/ajax/EmailSubscribe';\nimport GlobalAlerts from 'core/global/GlobalAlerts';\nimport SearchList from 'core/search/SearchList';\nimport IdeasSearchList from 'core/search/IdeasSearchList';\nimport CategorySearchList from 'core/search/CategorySearchList';\nimport Carousel from 'core/global/Carousel';\nimport WishlistCarousel from 'core/global/WishlistCarousel';\nimport ContextLoader from 'core/global/ContextLoader';\nimport AccountHeaderLink from 'core/global/AccountHeaderLink';\nimport Noibu from 'core/global/Noibu';\nimport LinkedSubscription from 'core/product/LinkedSubscription';\nimport BreadCrumbName from 'core/global/BreadCrumbName';\nimport PoqWebCheckout from 'core/global/PoqWebCheckout';\nimport AccountDeleteForm from 'core/forms/AccountDeleteForm';\nimport Tooltip from 'core/global/Tooltip';\nimport HeroCarousel from 'core/global/HeroCarousel';\n\nWidgetsMgr.addWidgetsList('global.core', () => [\n ['stickyHeader', StickyHeader, 'stickyHeader'],\n ['basicInput', BasicInput, 'basicInput'],\n ['basicForm', BasicForm, 'basicForm'],\n ['inputDate', InputDate, 'basicInput'],\n ['inputSelect', InputSelect, 'inputSelect'],\n ['inputTextTypeNumber', InputTextTypeNumber, 'inputText'],\n ['inputTextarea', InputTextarea, 'inputTextarea'],\n ['inputPassword', InputPassword, 'inputPassword'],\n ['inputTel', InputTel, 'inputTel'],\n ['button', Button, 'button'],\n ['processButton', ProcessButton, 'processButton'],\n ['preferredStoreSelector', PreferredStoreSelector],\n ['storeLocatorLink', StoreLocatorLink],\n ['accountHeaderLink', AccountHeaderLink],\n ['productTile', ProductTile, 'productTile'],\n ['productTile', BaseAddToCartMixin, 'productTile'],\n ['productTile', AddToCartMixin, 'productTile'],\n ['productTile', JustAddedProductToCartMixin, 'productTile'],\n ['image', Image],\n ['videoPlayer', VideoPlayer],\n ['videoPlayerHTML5', VideoPlayerHTML5],\n // Combobox\n ['searchBox', SearchBox, 'searchBox'],\n ['productSocialLinks', ProductSocialLinks],\n ['productSocialDisclosure', ProductSocialDisclosure, 'disclosure'],\n ['productSocialDisclosure', AddToWishlistMixin, 'productSocialDisclosure'],\n ['productSocialLinks', AddToWishlistMixin, 'productSocialLinks'],\n ['stickyElement', StickyElement],\n ['backtotop', BackToTop, 'backtotop'],\n ['accordionItem', AccordionItem, 'accordionItem'],\n ['osano', Osano],\n ['exponeaSegmentation', ExponeaSegmentation],\n ['gtmDataLayer', GtmDataLayer],\n ['modal', Modal, 'modal'],\n ['globalAlerts', GlobalAlerts, 'globalAlerts'],\n ['justAddedToCartModal', JustAddedToCartModal, 'modal'],\n ['cartLineItem', CartLineItem],\n ['cartLineItem', AddToWishlistMixin, 'cartLineItem'],\n ['cartMgr', BaseCartMgr],\n ['cartMgr', CartMgr, 'cartMgr'],\n ['cartMgr', CartMixin, 'cartMgr'],\n ['justAddedToCartMgr', JustAddedToCartMgr, 'cartMgr'],\n ['ideasSearchForm', IdeasSearchForm, 'form'],\n ['emailSubscribe', EmailSubscribe, 'emailSubscribe'],\n ['searchList', SearchList],\n ['ideasSearchList', IdeasSearchList, 'searchList'],\n ['categorySearchList', CategorySearchList, 'searchList'],\n ['carousel', Carousel, 'carousel'],\n ['wishlistCarousel', WishlistCarousel, 'carousel'],\n ['contextLoader', ContextLoader, 'contextLoader'],\n ['noibu', Noibu],\n ['poqWebCheckout', PoqWebCheckout],\n ['linkedSubscription', LinkedSubscription],\n ['breadCrumbName', BreadCrumbName],\n ['accountDeleteForm', AccountDeleteForm],\n ['tooltip', Tooltip],\n ['heroCarousel', HeroCarousel, 'heroCarousel']\n]);\n\nconst hasContext = (ctx) => window.contexts.includes(ctx);\n\nWidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('header'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'header.widgets' */'core/header/MegaMenu').then(d => d.default),\n import(/* webpackChunkName: 'header.widgets' */'core/header/MenuPanel').then(d => d.default),\n import(/* webpackChunkName: 'header.widgets' */'core/header/MenuBarItem').then(d => d.default),\n import(/* webpackChunkName: 'header.widgets' */'core/header/MenuBarItemExt').then(d => d.default),\n import(/* webpackChunkName: 'header.widgets' */'core/header/HamburgerMenuItem').then(d => d.default),\n import(/* webpackChunkName: 'header.widgets' */'core/cart/MinicartDialog').then(d => d.default),\n import(/* webpackChunkName: 'header.widgets' */'core/cart/Minicart').then(d => d.default)\n ]).then(deps => {\n const [\n MegaMenu,\n MenuPanel,\n MenuBarItem,\n MenuBarItemExt,\n HamburgerMenuItem,\n MinicartDialog,\n Minicart\n ] = deps;\n\n return {\n listId: 'header.core',\n widgetsDefinition: () => [\n ['megaMenu', MegaMenu, 'megaMenu'],\n ['menuBarItem', MenuBarItem, 'menuBarItem'],\n ['menuBarItemExt', MenuBarItemExt, 'menuBarItem'],\n ['hamburgerMenuItem', HamburgerMenuItem, 'hamburgerMenuItem'],\n ['menuPanel', MenuPanel, 'menuPanel'],\n ['minicartDialog', MinicartDialog, 'minicartDialog'],\n ['minicartDialog', CartMixin, 'minicartDialog'],\n ['minicart', Minicart, 'minicart']\n ]\n };\n })\n});\n\nWidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('home'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'homepage.widgets' */ 'core/global/CuttableContent').then(d => d.default),\n import(/* webpackChunkName: 'homepage.widgets' */ 'core/global/TikTokVideo').then(d => d.default)\n ]).then(deps => {\n const [\n CuttableContent,\n TikTokVideo\n ] = deps;\n\n return {\n listId: 'home.core',\n widgetsDefinition: () => [\n ['cuttableContent', CuttableContent],\n ['tikTokVideo', TikTokVideo]\n ]\n };\n })\n});\n\nWidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('pdp'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'product.widgets' */ 'core/product/ProductDetailContainer').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'core/product/ProductDetail').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'core/product/ProductImages').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'core/product/ColorSwatch').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'core/product/AlternativeImage').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'core/product/EProductProductDetail').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'core/product/EProductAddToCartMixin').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'core/product/EProductJustAddedProductToCartMixin').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'core/wishlist/EProductAddToWishlistMixin').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'core/forms/ajax/EVoucherDataForm').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'core/product/Availability').then(d => d.default),\n import(/* webpackChunkName: 'storelocator.widgets' */ 'plugin_storelocator/storelocator/StoreSearchForm').then(d => d.default),\n import(/* webpackChunkName: 'storelocator.widgets' */ 'core/storelocator/SelectStoreSearchForm').then(d => d.default),\n import(/* webpackChunkName: 'storelocator.widgets' */ 'plugin_storelocator/storelocator/SearchByPlace').then(d => d.default),\n import(/* webpackChunkName: 'storelocator.widgets' */ 'core/storelocator/WoosMapSearchByPlace').then(d => d.default),\n import(/* webpackChunkName: 'storelocator.widgets' */ 'plugin_storelocator/storelocator/StoreLocatorMgr').then(d => d.default),\n import(/* webpackChunkName: 'storelocator.widgets' */ 'core/storelocator/WoosmapStoreLocatorMgr').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'core/forms/ajax/BackInStock').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'core/product/SetProductDetail').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'core/product/BuyTogetherProduct').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'core/product/ProductSet').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'core/product/BuyTogetherRecommendation').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'core/product/BuyTogetherCheckbox').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'core/product/AddAllToCartMixin').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'widgets/product/RecentlyViewedMixin').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'core/product/RecentlyViewedMixin').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/account/ChangeWeakPasswordModal').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/account/ChangeWeakPasswordForm').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/product/DetailAddToCartMixin').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/forms/QuantityInputStepperMixin').then(d => d.default),\n import(/* webpackChunkName: 'homepage.widgets' */ 'core/global/CuttableContent').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'core/product/PlusProductDetail').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'core/product/PlusProductAddToCartMixin').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'core/product/Specifications').then(d => d.default)\n\n ]).then(deps => {\n const [\n ProductDetailContainer,\n ProductDetail,\n ProductImages,\n ColorSwatch,\n AlternativeImage,\n EProductProductDetail,\n EProductAddToCartMixin,\n EProductJustAddedProductToCartMixin,\n EProductAddToWishlistMixin,\n EVoucherDataForm,\n Availability,\n StoreSearchForm,\n SelectStoreSearchForm,\n SearchByPlace,\n WoosMapSearchByPlace,\n StoreLocatorMgr,\n WoosmapStoreLocatorMgr,\n BackInStock,\n SetProductDetail,\n BuyTogetherProduct,\n ProductSet,\n BuyTogetherRecommendation,\n BuyTogetherCheckbox,\n AddAllToCartMixin,\n BaseRecentlyViewedMixin,\n RecentlyViewedMixin,\n ChangeWeakPasswordModal,\n ChangeWeakPasswordForm,\n DetailAddToCartMixin,\n QuantityInputStepperMixin,\n CuttableContent,\n PlusProductDetail,\n PlusProductAddToCartMixin,\n Specifications\n ] = deps;\n\n return {\n listId: 'product.core',\n widgetsDefinition: () => [\n ['productDetailContainer', ProductDetailContainer],\n ['inputStepper', QuantityInputStepperMixin, 'inputStepper'],\n ['productDetail', ProductDetail, 'productDetail'],\n ['productDetail', AddToCartMixin, 'productDetail'],\n ['productDetail', DetailAddToCartMixin, 'productDetail'],\n ['productDetail', JustAddedProductToCartMixin, 'productDetail'],\n ['productDetail', BaseRecentlyViewedMixin, 'productDetail'],\n ['productDetail', RecentlyViewedMixin, 'productDetail'],\n ['eProductProductDetail', EProductProductDetail, 'productDetail'],\n ['eProductProductDetail', EProductAddToCartMixin, 'eProductProductDetail'],\n ['eProductProductDetail', EProductAddToWishlistMixin, 'eProductProductDetail'],\n ['eProductProductDetail', EProductJustAddedProductToCartMixin, 'eProductProductDetail'],\n ['plusProductDetail', PlusProductDetail, 'productDetail'],\n ['plusProductDetail', PlusProductAddToCartMixin, 'plusProductDetail'],\n ['availability', Availability],\n ['productImages', ProductImages, 'productImages'],\n ['colorSwatch', ColorSwatch, 'colorSwatch'],\n ['productTile', AlternativeImage, 'productTile'],\n ['eVoucherDataForm', EVoucherDataForm, 'ajaxform'],\n ['storeSearchForm', StoreSearchForm],\n ['selectStoreSearchForm', SelectStoreSearchForm, 'storeSearchForm'],\n ['searchByPlace', SearchByPlace, 'inputText'],\n ['woosMapSearchByPlace', WoosMapSearchByPlace, 'inputText'],\n ['storeLocatorMgr', StoreLocatorMgr],\n ['woosmapStoreLocatorMgr', WoosmapStoreLocatorMgr, 'storeLocatorMgr'],\n ['backInStock', BackInStock, 'backInStock'],\n ['setProductDetail', SetProductDetail, 'productDetail'],\n ['buyTogetherProduct', BuyTogetherProduct, 'setProductDetail'],\n ['productSet', ProductSet, 'productSet'],\n ['productSet', AddAllToCartMixin, 'productSet'],\n ['buyTogetherRecommendation', BuyTogetherRecommendation, 'productSet'],\n ['productSet', RecentlyViewedMixin, 'productSet'],\n ['buyTogetherCheckbox', BuyTogetherCheckbox, 'inputCheckbox'],\n ['changeWeakPasswordModal', ChangeWeakPasswordModal, 'modal'],\n ['changeWeakPasswordForm', ChangeWeakPasswordForm, 'ajaxform'],\n ['cuttableContent', CuttableContent],\n ['specifications', Specifications]\n ]\n };\n })\n});\n\nWidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('orderconfirmation'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'orderconfirmation.widgets' */ 'core/checkout/ConfirmationContainer').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/account/PasswordResetForm').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/forms/ajax/LoginForm').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'core/forms/ajax/LoginForm').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/forms/ajax/CheckoutLoginForm').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/account/ChangeWeakPasswordMixin').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/forms/ajax/OrderRegistrationForm').then(d => d.default)\n ]).then(deps => {\n const [\n ConfirmationContainer,\n PasswordResetForm,\n BaseLoginForm,\n LoginForm,\n ChangeWeakPasswordMixin,\n CheckoutLoginForm,\n OrderRegistrationForm\n ] = deps;\n\n return {\n listId: 'orderconfirmation.core',\n widgetsDefinition: () => [\n ['confirmationContainer', ConfirmationContainer],\n ['passwordResetForm', PasswordResetForm, 'ajaxform'],\n ['loginForm', BaseLoginForm, 'ajaxform'],\n ['loginForm', LoginForm, 'loginForm'],\n ['loginForm', ChangeWeakPasswordMixin, 'loginForm'],\n ['checkoutLoginForm', CheckoutLoginForm, 'loginForm'],\n ['orderRegistrationForm', OrderRegistrationForm, 'ajaxform']\n ]\n };\n })\n});\n\nWidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('plp'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'search.widgets' */ 'core/search/ProductListingMgr').then(d => d.default),\n import(/* webpackChunkName: 'search.widgets' */ 'core/search/RefinementsGridToggle').then(d => d.default),\n import(/* webpackChunkName: 'search.widgets' */ 'core/search/Refinement').then(d => d.default),\n import(/* webpackChunkName: 'search.widgets' */ 'core/search/RefinementsPanelToggle').then(d => d.default),\n import(/* webpackChunkName: 'search.widgets' */ 'core/search/RefinementsPanel').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'core/global/CuttableContent').then(d => d.default),\n import(/* webpackChunkName: 'search.widgets' */ 'core/search/QuickViewNavigation').then(d => d.default),\n import(/* webpackChunkName: 'search.widgets' */ 'core/search/StickyRefinements').then(d => d.default),\n import(/* webpackChunkName: 'search.widgets' */ 'core/search/LazyloadTrigger').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'core/product/ProductImages').then(d => d.default)\n ]).then(deps => {\n const [\n ProductListingMgr,\n RefinementsGridToggle,\n Refinement,\n RefinementsPanelToggle,\n RefinementsPanel,\n CuttableContent,\n QuickViewNavigation,\n StickyRefinements,\n LazyloadTrigger,\n ProductImages\n ] = deps;\n\n return {\n listId: 'search.core',\n widgetsDefinition: () => [\n ['cartMgr', CartMgr, 'cartMgr'],\n ['cartLineItem', CartLineItem],\n ['cartLineItem', AddToWishlistMixin, 'cartLineItem'],\n // tabs\n ['productListingMgr', ProductListingMgr, 'productListingMgr'],\n ['refinementsPanelToggle', RefinementsPanelToggle, 'refinementsPanelToggle'],\n // refinements\n ['refinementsGridToggle', RefinementsGridToggle],\n ['refinement', Refinement, 'refinement'],\n ['refinementsPanel', RefinementsPanel, 'refinementsPanel'],\n ['productTile', ProductTile, 'productTile'],\n ['cuttableContent', CuttableContent],\n ['quickViewNavigation', QuickViewNavigation],\n ['stickyRefinements', StickyRefinements],\n ['lazyloadTrigger', LazyloadTrigger],\n ['productImages', ProductImages, 'productImages']\n ]\n };\n })\n});\n\nWidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('cart'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'cart.widgets' */ 'core/cart/CartShippingTabs').then(d => d.default),\n import(/* webpackChunkName: 'cart.widgets' */ 'core/forms/CouponForm').then(d => d.default),\n import(/* webpackChunkName: 'cart.widgets' */ 'core/cart/CheckoutButtons').then(d => d.default),\n import(/* webpackChunkName: 'storelocator.widgets' */ 'plugin_storelocator/storelocator/StoreSearchForm').then(d => d.default),\n import(/* webpackChunkName: 'storelocator.widgets' */ 'core/storelocator/SelectStoreSearchForm').then(d => d.default),\n import(/* webpackChunkName: 'storelocator.widgets' */ 'plugin_storelocator/storelocator/SearchByPlace').then(d => d.default),\n import(/* webpackChunkName: 'storelocator.widgets' */ 'core/storelocator/WoosMapSearchByPlace').then(d => d.default),\n import(/* webpackChunkName: 'storelocator.widgets' */ 'plugin_storelocator/storelocator/StoreLocatorMgr').then(d => d.default),\n import(/* webpackChunkName: 'storelocator.widgets' */ 'core/storelocator/WoosmapStoreLocatorMgr').then(d => d.default)\n ]).then(deps => {\n const [\n CartShippingTabs,\n CouponForm,\n CheckoutButtons,\n StoreSearchForm,\n SelectStoreSearchForm,\n SearchByPlace,\n WoosMapSearchByPlace,\n StoreLocatorMgr,\n WoosmapStoreLocatorMgr\n ] = deps;\n\n return {\n listId: 'cart.core',\n widgetsDefinition: () => [\n ['cartMgr', CartMgr, 'cartMgr'],\n ['cartMgr', CartMixin, 'cartMgr'],\n ['checkoutButtons', CheckoutButtons, 'checkoutButtons'],\n // line items\n ['cartLineItem', CartLineItem],\n ['cartShippingTabs', CartShippingTabs, 'tabs'],\n ['couponform', CouponForm, 'couponform'],\n ['storeSearchForm', StoreSearchForm],\n ['selectStoreSearchForm', SelectStoreSearchForm, 'storeSearchForm'],\n ['searchByPlace', SearchByPlace, 'inputText'],\n ['woosMapSearchByPlace', WoosMapSearchByPlace, 'inputText'],\n ['storeLocatorMgr', StoreLocatorMgr],\n ['woosmapStoreLocatorMgr', WoosmapStoreLocatorMgr, 'storeLocatorMgr']\n ]\n };\n })\n});\n\nWidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('account'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'account.core' */ 'core/account/ChangeWeakPasswordMixin').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/forms/ajax/LoginForm').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/forms/ajax/ProfileForm').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/account/PasswordResetForm').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/account/PaymentsList').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/account/OrderHistoryMgr').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/forms/AutocompleteField').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/forms/WoosmapAutocompleteField').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/account/DownloadsMgr').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/forms/ajax/RefreshActivationLinkForm').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/account/AddressList').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/forms/AddressForm').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/account/ChangeWeakPasswordModal').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/account/ChangeWeakPasswordForm').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/account/BuyAgain').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/account/AccountGtmEvents').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/order/OrderProductSummary').then(d => d.default)\n ]).then(deps => {\n const [\n ChangeWeakPasswordMixin,\n LoginForm,\n ProfileForm,\n PasswordResetForm,\n PaymentsList,\n OrderHistoryMgr,\n AutocompleteField,\n WoosmapAutocompleteField,\n DownloadsMgr,\n RefreshActivationLinkForm,\n AddressList,\n AddressForm,\n ChangeWeakPasswordModal,\n ChangeWeakPasswordForm,\n BuyAgain,\n AccountGtmEvents,\n OrderProductSummary\n ] = deps;\n\n return {\n listId: 'account.core',\n widgetsDefinition: () => [\n ['loginForm', LoginForm, 'loginForm'],\n ['loginForm', ChangeWeakPasswordMixin, 'loginForm'],\n ['profileForm', ProfileForm, 'ajaxform'],\n ['passwordResetForm', PasswordResetForm, 'passwordResetForm'],\n ['paymentsList', PaymentsList, 'paymentsList'],\n ['orderHistoryMgr', OrderHistoryMgr, 'orderHistoryMgr'],\n // inputText\n ['autocompleteField', AutocompleteField, 'inputText'],\n ['woosmapAutocompleteField', WoosmapAutocompleteField, 'autocompleteField'],\n ['downloadsMgr', DownloadsMgr],\n ['refreshActivationLinkForm', RefreshActivationLinkForm, 'ajaxform'],\n ['addressList', AddressList, 'addressList'],\n ['addressForm', AddressForm, 'addressForm'],\n ['changeWeakPasswordModal', ChangeWeakPasswordModal, 'modal'],\n ['changeWeakPasswordForm', ChangeWeakPasswordForm, 'ajaxform'],\n ['buyAgain', BuyAgain],\n ['accountGtmEvents', AccountGtmEvents],\n ['orderProductSummary', OrderProductSummary, 'orderProductSummary']\n ]\n };\n })\n});\n\nWidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('checkout'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'checkout.widgets' */ 'core/checkout/CheckoutMgr').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'core/checkout/SummaryStepMixin').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'core/checkout/CheckoutStepMixin').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'core/checkout/ShippingStepMixin').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'core/checkout/BillingForm').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'core/checkout/ShippingForm').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/forms/AutocompleteField').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/forms/WoosmapAutocompleteField').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'core/checkout/PaymentAccordion').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'core/checkout/PaymentAccordionItem').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'core/checkout/PaymentAccordionItemGiftCard').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'core/checkout/AddressCheckoutForm').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/account/ChangeWeakPasswordModal').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/account/ChangeWeakPasswordForm').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/account/ChangeWeakPasswordMixin').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/forms/AddressForm').then(d => d.default),\n import(/* webpackChunkName: 'account.core' */ 'core/forms/ajax/LoginForm').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/forms/ajax/CheckoutLoginForm').then(d => d.default)\n ]).then(deps => {\n const [\n CheckoutMgr,\n SummaryStepMixin,\n CheckoutStepMixin,\n ShippingStepMixin,\n BillingForm,\n ShippingForm,\n AutocompleteField,\n WoosmapAutocompleteField,\n PaymentAccordion,\n PaymentAccordionItem,\n PaymentAccordionItemGiftCard,\n AddressCheckoutForm,\n ChangeWeakPasswordModal,\n ChangeWeakPasswordForm,\n ChangeWeakPasswordMixin,\n AddressForm,\n LoginForm,\n CheckoutLoginForm\n ] = deps;\n\n return {\n listId: 'checkout.core',\n widgetsDefinition: () => [\n ['checkoutMgr', CheckoutMgr, 'checkoutMgr'],\n ['checkoutMgr', CheckoutStepMixin, 'checkoutMgr'],\n ['checkoutMgr', SummaryStepMixin, 'checkoutMgr'],\n ['checkoutMgr', ShippingStepMixin, 'checkoutMgr'],\n ['addressCheckoutForm', AddressCheckoutForm, 'addressCheckoutForm'],\n // addressForm > addressCheckoutForm\n ['billingForm', BillingForm, 'billingForm'],\n ['shippingForm', ShippingForm, 'shippingForm'],\n ['autocompleteField', AutocompleteField, 'inputText'],\n ['woosmapAutocompleteField', WoosmapAutocompleteField, 'autocompleteField'],\n ['paymentAccordion', PaymentAccordion, 'paymentAccordion'],\n ['paymentAccordionItem', PaymentAccordionItem, 'paymentAccordionItem'],\n ['paymentAccordionItemGiftCard', PaymentAccordionItemGiftCard, 'paymentAccordionItem'],\n ['changeWeakPasswordModal', ChangeWeakPasswordModal, 'modal'],\n ['changeWeakPasswordForm', ChangeWeakPasswordForm, 'ajaxform'],\n ['addressForm', AddressForm, 'addressForm'],\n ['loginForm', LoginForm, 'loginForm'],\n ['loginForm', ChangeWeakPasswordMixin, 'loginForm'],\n ['checkoutLoginForm', CheckoutLoginForm, 'loginForm']\n ]\n };\n })\n});\n\nWidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('storelocator'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'storelocator.widgets' */ 'core/storelocator/SelectStoreSearchForm').then(d => d.default),\n import(/* webpackChunkName: 'storelocator.widgets' */ 'core/storelocator/WoosMapSearchByPlace').then(d => d.default),\n import(/* webpackChunkName: 'storelocator.widgets' */ 'core/storelocator/WoosmapStoreLocatorMgr').then(d => d.default),\n import(/* webpackChunkName: 'storelocator.widgets' */ 'core/storelocator/WoosMapLatLngDistance').then(d => d.default),\n import(/* webpackChunkName: 'storelocator.widgets' */ 'core/storelocator/WoosmapStoreDirections').then(d => d.default),\n import(/* webpackChunkName: 'storelocator.widgets' */ 'core/account/TwitterFeeds').then(d => d.default),\n import(/* webpackChunkName: 'homepage.widgets' */ 'core/global/CuttableContent').then(d => d.default)\n ]).then(deps => {\n const [\n SelectStoreSearchForm,\n WoosMapSearchByPlace,\n WoosmapStoreLocatorMgr,\n WoosMapLatLngDistance,\n WoosmapStoreDirections,\n TwitterFeeds,\n CuttableContent\n ] = deps;\n\n return {\n listId: 'storelocator.core',\n widgetsDefinition: () => [\n ['selectStoreSearchForm', SelectStoreSearchForm, 'storeSearchForm'],\n ['woosMapSearchByPlace', WoosMapSearchByPlace, 'inputText'],\n ['woosmapStoreLocatorMgr', WoosmapStoreLocatorMgr, 'storeLocatorMgr'],\n ['woosMapLatLngDistance', WoosMapLatLngDistance, 'latLngDistance'],\n ['woosmapStoreDirections', WoosmapStoreDirections],\n ['twitterFeeds', TwitterFeeds],\n ['cuttableContent', CuttableContent]\n ]\n };\n })\n});\n\nWidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('wishlist'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'wishlist.wishlist' */'core/wishlist/ExtendedWishlistMgr').then(d => d.default),\n import(/* webpackChunkName: 'wishlist.wishlist' */'core/wishlist/WishlistExpirationMsg').then(d => d.default),\n import(/* webpackChunkName: 'wishlist.wishlist' */'core/wishlist/WishlistIdeasToggler').then(d => d.default),\n import(/* webpackChunkName: 'wishlist.wishlist' */'core/wishlist/ExtendedWishlistItem').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'widgets/product/AlternativeImage').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'core/product/AlternativeImage').then(d => d.default),\n import(/* webpackChunkName: 'wishlist.wishlist' */'core/wishlist/ShowCustomerWishlistMixin').then(d => d.default)\n ]).then(deps => {\n const [\n ExtendedWishlistMgr,\n WishlistExpirationMsg,\n WishlistIdeasToggler,\n ExtendedWishlistItem,\n WidgetsAlternativeImage,\n CoreAlternativeImage,\n ShowCustomerWishlistMixin\n ] = deps;\n\n return {\n listId: 'wishlist.wishlist.core',\n widgetsDefinition: () => [\n ['extendedWishlistMgr', ExtendedWishlistMgr, 'wishlistMgr'],\n ['wishlistExpirationMsg', WishlistExpirationMsg],\n ['wishlistIdeasToggler', WishlistIdeasToggler],\n ['extendedWishListItem', ExtendedWishlistItem, 'wishListItem'],\n ['extendedWishListItem', WidgetsAlternativeImage, 'extendedWishListItem'],\n ['extendedWishListItem', CoreAlternativeImage, 'extendedWishListItem'],\n ['extendedWishListItem', AddToCartMixin, 'extendedWishListItem'],\n ['productTile', AddToWishlistMixin, 'productTile'],\n ['productTile', ShowCustomerWishlistMixin, 'productTile']\n ]\n };\n })\n});\n\nWidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('cart') && hasContext('applepay'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'checkout.applepay' */ 'core/cart/ApplePayButtonContainer').then(d => d.default)\n ]).then(deps => {\n const [\n ApplePayButtonContainer\n ] = deps;\n\n return {\n listId: 'cart.applepay',\n widgetsDefinition: () => [\n ['applePayButtonContainer', ApplePayButtonContainer]\n ]\n };\n })\n});\n","/* eslint-disable max-len */\n/* eslint-disable indent */\nconst hasContext = (context: string) => window.contexts.includes(context);\n\nimport widgetsMgr from 'widgets/widgetsMgr';\nimport VideoExt from './widgets/page_designer/VideoExt';\nimport AnimationOnScroll from './widgets/page_designer/AnimationOnScroll';\nimport CtaExt from './widgets/page_designer/CtaExt';\nimport HotSpot from './widgets/page_designer/HotSpot';\nimport CarouselSimple from './widgets/page_designer/CarouselSimple';\nimport ProgressBar from './widgets/page_designer/ProgressBar';\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('page_designer'),\n\n load: () => Promise.all([\n import(/* webpackChunkName: 'global.page_designer' */'./widgets/page_designer/EinsteinCarouselLoader').then(d => d.default)\n ]).then(deps => {\n const [EinsteinCarouselLoader] = deps;\n\n return {\n listId: 'global.page_designer',\n widgetsDefinition: () => [\n ['einsteinCarouselLoader', EinsteinCarouselLoader]\n ]\n };\n })\n});\n\nwidgetsMgr.addWidgetsList('page_designer.global.core', () => [\n ['videoExt', VideoExt],\n ['animationOnScroll', AnimationOnScroll],\n ['ctaExt', CtaExt],\n ['hotSpot', HotSpot],\n ['carouselSimple', CarouselSimple, 'carousel'],\n ['progressBar', ProgressBar]\n]);\n\n// widgetsMgr.asyncLists.push({\n// getLoadingFlag: () => hasContext('page_designer'),\n// load: () => Promise.all([\n// import(/* webpackChunkName: 'extended.page_designer' */ './widgets/pagedesigner/YourWidget').then(d => d.default)\n// ]).then(deps => {\n// const [YourWidget] = deps;\n\n// return {\n// listId: 'extended.page_designer',\n// widgetsDefinition: () => [\n// ['yourWidget', YourWidget]\n// ]\n// };\n// })\n// });\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('page_designer'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'extended.page_designer' */ 'widgets/search/NoSearchResultsForm').then(d => d.default)\n ]).then(deps => {\n const [\n NoSearchResultsForm\n ] = deps;\n\n return {\n listId: 'extended.page_designer',\n widgetsDefinition: () => [\n ['noSearchResultsForm', NoSearchResultsForm, 'basicForm']\n ]\n };\n })\n});\n","import { TWidget } from 'widgets/Widget';\n\n/**\n * @param Widget Base widget for extending\n * @returns AnimationOnScroll class\n */\nfunction AnimationOnScrollClassCreator(Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory plugin_page_designer_ext\n * @class AnimationOnScroll\n * @augments Widget\n * @classdesc Layout animation by adding m-animated class to data-ref=elemAnimated\n * <div\n * class=\"l-grid_layout m-1_up m-${pdict.scrollAnimations}\"\n * style=\"${pdict.styles}\"\n * data-widget=\"animationOnScroll\"\n * data-ref=\"elemAnimated\"\n * >\n * <div class=\"l-grid_layout-content ${pdict.hideGutters}\">\n * <isprint value=\"${\n * pdict.regions.layout1Column1\n * .setClassName('l-grid_layout-item m-lg_12 m-md_12 m-sm_6')\n * .setComponentClassName('l-grid_layout-item_in')\n * .setComponentAttribute('data-cell-type', 'lg-12 md-12 sm-6')\n * .setComponentAttribute('data-layout-type', pdict.layoutContext)\n * .render()\n * }\" encoding=\"off\"/>\n * </div>\n * </div>\n */\n class AnimationOnScroll extends Widget {\n prefs() {\n return {\n animatedClass: 'm-animated',\n rootMargin: '0px 0px -30%',\n ...super.prefs()\n };\n }\n\n init() {\n super.init();\n this.bindObserver();\n }\n\n /**\n * @description Executed when widget is re-rendered\n */\n onRefresh() {\n super.onRefresh();\n this.bindObserver();\n }\n\n /**\n * @description bindObserver observe changes in the intersection of a target element\n */\n bindObserver() {\n const element = this.ref('self').get();\n\n if (!element) {\n return;\n }\n\n const options = {\n rootMargin: this.prefs().rootMargin\n };\n\n const animatedObserver = new IntersectionObserver((entries, observer) => {\n entries.forEach((entry) => {\n const itemClasses = entry.target.classList;\n const isAbove = entry.boundingClientRect.y < (entry.rootBounds?.y || 0);\n\n if (isAbove || entry.isIntersecting) {\n itemClasses.add(this.prefs().animatedClass);\n observer.unobserve(entry.target);\n }\n });\n }, options);\n\n animatedObserver.observe(element);\n }\n }\n\n return AnimationOnScroll;\n}\n\nexport type TAnimationOnScroll = ReturnType<typeof AnimationOnScrollClassCreator>;\n\nexport type TAnimationOnScrollInstance = InstanceType<TAnimationOnScroll>;\n\nexport default AnimationOnScrollClassCreator;\n","function CarouselSimpleClassCreator(Carousel: ReturnType<typeof import('widgets/global/Carousel').default >) {\n /**\n * @category widgets\n * @subcategory plugin_page_designer_ext\n * @class CarouselSimple\n * @augments Widget\n * @classdesc Represents Carousel component with next features:\n * 1. Allow to set carousel direction based on the view type\n * 2. Allow to use pagination for carousel rendered by mustache template\n * 3. Allow to scroll carousel to the next/previous/custom( index can be passed to the method) page index\n * 4. Allow to scroll by on the page click(can be used for carousel with thumbnails)\n * 5. Allow to scroll to custom element's position\n * 6. Allow to scroll to focused element\n * 7. Support mousemove, touchmove, mouseup, mousedown, keydown event so we can use carousel even on touch devices.\n * Also we can control carouse with keyboard\n * 8. Allow to get carousel images\n *\n * <br>Uses as a basis slider from here (ScrollCarousel.js):\n * <br>https://github.com/dimanech/aria-components/tree/master/cartridge1/js/components/carousels/carousel\n * @property {string} data-widget - Widget name `carousel`\n * @property {string} data-elem-prev-button - Previous button element\n * @property {string} data-elem-next-button - Next button element\n * @property {string} data-elem-carousel-track - Carousel inner element\n * @property {string} data-direction - Carousel direction - an object, contains direction per viewport\n * @example <caption>Example of Carousel widget usage</caption>\n * <div\n * data-widget=\"carouselSimple\"\n * data-elem-prev-button=\"elemPrevButton\"\n * data-elem-next-button=\"elemNextButton\"\n * data-elem-carousel-track=\"elemCarouselTrack\"\n * data-direction='{\n * \"small\": \"horizontal\",\n * \"medium\": \"horizontal\",\n * \"large\": \"vertical\",\n * \"extraLarge\": \"vertical\"\n * }'\n * >\n * <button\n * class=\"carousel__ctrl _prev\"\n * data-elem-prev-button\n * tabindex=\"-1\"\n * aria-hidden=\"true\"\n * data-ref=\"elemPrevButton\"\n * data-event-click=\"scrollToPrevPageSimple\"\n * >Prev</button>\n * <div\n * class=\"carousel__track\"\n * data-elem-carousel-track\n * data-ref=\"elemCarouselTrack\"\n * data-event-scroll=\"onScroll\"\n * data-event-touchstart=\"onScroll\"\n * data-event-mousedown.prevent=\"onMouseDown\"\n * data-event-mouseup=\"onMouseUp\"\n * >\n * <isloop items=\"${slotcontent.content}\" var=\"contentAsset\">\n * <div class=\"box _single\" tabindex=\"0\">\n * <isprint value=\"${contentAsset.custom.body}\" encoding=\"off\" />\n * </div>\n * </isloop>\n * </div>\n * <button\n * class=\"carousel__ctrl _next\"\n * data-elem-next-button\n * tabindex=\"-1\"\n * aria-hidden=\"true\"\n * data-ref=\"elemNextButton\"\n * data-event-click=\"scrollToNextPageSimple\"\n * >Next</button>\n * <div class=\"pagination\" data-ref=\"pagination\"></div>\n * <script type=\"template/mustache\" data-ref=\"template\">\n * <div class=\"pagination\" data-ref=\"pagination\">\n * {{${'#'}pagination}}\n * <button\n * class=\"page\"\n * data-page=\"{{page}}\"\n * tabindex=\"-1\"\n * data-event-click.prevent=\"handlePaginationClick\"\n * >\n * </button>\n * {{/pagination}}\n * </div>\n * </script>\n * </div>\n */\n class CarouselSimple extends Carousel {\n defaultLeft!: number;\n\n initCarousel() {\n super.initCarousel();\n\n this.defaultLeft = parseInt(getComputedStyle(this.ref('pagination').get() as Element).getPropertyValue('left'), 10);\n }\n\n /**\n * @description Collects carousel data and emits event\n * TODO: It should not be hard coded to product carousel name.\n * @param actionType Type of slide action\n * @param targetPageIndex Target slide index\n */\n onCarouselClick(actionType, targetPageIndex) {\n const elemCarouselTrack = this.ref(this.prefs().elemCarouselTrack).get() as Element;\n const elemSlide = elemCarouselTrack.children[targetPageIndex];\n\n const productTileName = (elemSlide?.querySelector('[data-product-name]') as HTMLElement)?.dataset?.productName;\n const textBlockValue = elemSlide?.querySelectorAll('h1, h2, h3')[0]?.textContent;\n\n this.eventBus().emit('simpleCarousel.click', actionType, productTileName || textBlockValue);\n }\n\n /**\n * @description Scroll carousel to the next page\n * @param _el Source of Keydown event\n * @param event event instance if DOM event\n * @listens dom#click\n */\n scrollToNextPageSimple(_el, event) {\n // We need this to have click on Page Designer.\n // Use mousedown,touchstart since click overloaded.\n // Check that it is not triggered by mouse buttons.\n // Restricted btn: mouse right and center. True - if restricted btn was clicked\n if (event.button) {\n return;\n }\n\n const pageIndex = this.getCurrentPageIndex() + 1;\n\n super.scrollToNextPage();\n this.onCarouselClick('next_slide', pageIndex);\n }\n\n /**\n * @description Scroll carousel to the previous page\n * @param _el Source of Keydown event\n * @param event event instance if DOM event\n * @listens dom#click\n */\n scrollToPrevPageSimple(_el, event) {\n // We need this to have click on Page Designer.\n // Use mousedown,touchstart since click overloaded.\n // Check that it is not triggered by mouse buttons.\n // Restricted btn: mouse right and center. True - if restricted btn was clicked\n if (event.button) {\n return;\n }\n\n const pageIndex = this.getCurrentPageIndex() - 1;\n\n super.scrollToPrevPage();\n this.onCarouselClick('prev_slide', pageIndex);\n }\n\n /**\n * @description Scroll carousel to the page index\n * @param pageIndex Page index scroll to\n */\n scrollToPage(pageIndex) {\n super.scrollToPage(pageIndex);\n this.onCarouselClick('pagination_click', pageIndex);\n\n return this;\n }\n\n /**\n * @description Added next and prev slides and detect position of first pagination dot\n */\n setActivePagination() {\n super.setActivePagination();\n\n const pageIndex = super.getCurrentPageIndex();\n const paginationContent = this.ref('pagination').get() as HTMLElement;\n\n [].slice.call((paginationContent?.children)).forEach((element: Element) => {\n const dataPage = parseInt(((element && element.getAttribute('data-page')) || '0'), 10);\n\n // @ts-ignore Expected Error\n element.classList.toggle(this.prefs().pageCurrentClass, dataPage === pageIndex);\n });\n\n paginationContent.style.left = (1 - pageIndex) * this.defaultLeft + 'px';\n\n this.setPageIndex();\n }\n\n /**\n * @description set current slide index in carousel\n */\n setPageIndex() {\n // @ts-ignore Expected Error\n this.ref('setPageIndex').setHtml((super.getCurrentPageIndex() + 1).toString());\n }\n }\n\n return CarouselSimple;\n}\n\nexport type TCarouselSimple = ReturnType<typeof CarouselSimpleClassCreator>;\n\nexport type TCarouselSimpleInstance = InstanceType<TCarouselSimple>;\n\nexport default CarouselSimpleClassCreator;\n","import { TWidget } from 'widgets/Widget';\n\n/**\n * @param Widget Base widget for extending\n * @returns CtaExt class\n */\nfunction CtaExtClassCreator(Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory plugin_page_designer_ext\n * @class CtaExt\n * @augments Widget\n * @classdesc Represents CtaExt component with next features:\n * 1. Add GTM event when CtaExt clicked\n * 2. Transfer styles from CtaExt to wrapper, when CTA is inside the BannerExt or TextBlock components\n *\n * <div class=\"b-button-ext ${pdict.mods}\">\n * <a href=\"${pdict.componentUrl}\" data-widget=\"ctaExt\" data-event-click=\"onCtaExtClick\" class=\"b-button\" style=\"${pdict.buttonWidth}\">\n * <span class=\"b-button-text\">${pdict.componentLabel}</span>\n * </a>\n * </div>\n */\n\n class CtaExt extends Widget {\n init() {\n super.init();\n\n this.transferAttributes();\n }\n\n /**\n * @description Executed when widget is re-rendered\n */\n onRefresh() {\n super.onRefresh();\n this.transferAttributes();\n }\n\n /**\n * @description Emit eventBus for send data to data layer\n * @param elem - Target element\n */\n onCtaExtClick(elem) {\n this.eventBus().emit('ctaExt.click', elem);\n }\n\n /**\n * @description Transfer attributes from inner CTAs to outer wrapper\n */\n transferAttributes() {\n const ctaWrapper = this.ref('self').get()?.closest('[data-ref=\"ctaExtWrapper\"]');\n\n if (ctaWrapper) {\n // @ts-ignore Expected Error\n ctaWrapper.setAttribute('style', this.ref('self').attr('style'));\n }\n }\n }\n\n return CtaExt;\n}\n\nexport type TCtaExt = ReturnType<typeof CtaExtClassCreator>;\n\nexport type TCtaExtInstance = InstanceType<TCtaExt>;\n\nexport default CtaExtClassCreator;\n","import { TWidget } from 'widgets/Widget';\n\nconst DATA_HOTSPOT = '[data-widget=\"hotSpot\"]';\nconst DATA_HOTSPOT_BTN = '[data-ref=\"hotSpotBtn\"]';\nconst ATTRIBUTE_ARIA_HIDDEN = 'aria-hidden';\nconst keyCode = Object.freeze({\n ESCAPE: 27,\n RETURN: 13\n});\n\n/**\n * @param Widget Base widget for extending\n * @returns HotSpot class\n */\n\nfunction HotSpotClassCreator(Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory plugin_page_designer_ext\n * @class HotSpot\n * @augments Widget\n * @classdesc Represents HotSpot component with feature:\n * 1. Show and hide popup\n *\n * <div class=\"b-hot_spot ${pdict.mobileHide}\"\n * style=\"${pdict.styles}\"\n * data-widget=\"hotSpot\"\n * data-event-keydown=\"handleKeydown\"\n * >\n * <button class=\"b-hot_spot-btn\"\n * data-ref=\"hotSpotBtn\"\n * data-event-click=\"handleHotspotInteraction\"\n * title=\"${Resource.msg('common.close', 'common', null)}\"\n * tabindex=\"0\"\n * aria-haspopup=\"true\"\n * aria-label=\"${Resource.msg('hotspot.show', 'pagedesigner', null)}\"\n * >\n * <span class=\"b-hot_spot-sign\"></span>\n * </button>\n * <div class=\"b-hot_spot-popup\"\n * data-ref=\"hotSpotPopup\"\n * tabindex=\"-1\"\n * aria-hidden=\"true\"\n * >\n * <button\n * class=\"b-hot_spot-close\"\n * title=\"${Resource.msg('common.close', 'common', null)}\"\n * data-event-click=\"closePopup\"\n * aria-label=\"${Resource.msg('common.close', 'common', null)}\"\n * >\n * <isinclude template=\"/common/icons/standalone/close\" />\n * </button>\n * <div class=\"b-hot_spot-scrollbox\">\n * <div class=\"b-hot_spot-content\">\n * </div>\n * </div>\n * </div>\n * <div class=\"b-hot_spot-overlay\" data-event-click=\"closePopup\"></div>\n * </div>\n * </div>\n */\n\n class HotSpot extends Widget {\n timeout?: ReturnType<typeof setTimeout>;\n\n hotSpots!: NodeListOf<HTMLElement>;\n\n hotSpotButtons!: Array<HTMLButtonElement>;\n\n prefs() {\n return {\n active: 'm-active',\n ...super.prefs()\n };\n }\n\n init() {\n super.init();\n this.hotSpots = document.querySelectorAll(DATA_HOTSPOT);\n\n this.hotSpotButtons = [];\n\n this.hotSpots.forEach(item => {\n const hotSpotButton: HTMLButtonElement | null = item.querySelector(DATA_HOTSPOT_BTN);\n\n if (hotSpotButton) {\n this.hotSpotButtons.push(hotSpotButton);\n }\n });\n }\n\n /**\n * @description Set tabindex value\n * @param indexValue attribute value\n */\n toggleButtonTabindex(indexValue) {\n this.hotSpotButtons.forEach(item => {\n item.setAttribute('tabindex', indexValue);\n });\n }\n\n /**\n * @description Open hotspot popup\n */\n openPopup() {\n this.ref('hotSpotBtn').addClass(this.prefs().active);\n this.ref('hotSpotPopup').attr(ATTRIBUTE_ARIA_HIDDEN, 'false');\n this.toggleButtonTabindex(-1);\n\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n\n this.timeout = setTimeout(() => {\n this.ref('buttonClose').focus();\n }, 0);\n }\n\n /**\n * @description Close hotspot popup\n * @param _el Source of Keydown event\n * @param event event instance if DOM event\n */\n closePopup(_el, event) {\n // We need this to have click on Page Designer.\n // Use mousedown,touchstart since click overloaded.\n // Check that it is not triggered by mouse buttons.\n // Restricted btn: mouse right and center. True - if restricted btn was clicked\n if (event.button) {\n return;\n }\n\n this.ref('hotSpotBtn').removeClass(this.prefs().active);\n this.ref('hotSpotPopup').attr(ATTRIBUTE_ARIA_HIDDEN, 'true');\n this.ref('hotSpotBtn').focus();\n this.toggleButtonTabindex(0);\n }\n\n /**\n * @description Handle hotSpot click\n * @param _el Source of Keydown event\n * @param event event instance if DOM event\n */\n handleHotspotInteraction(_el, event) {\n // We need this to have click on Page Designer.\n // Use mousedown,touchstart since click overloaded.\n // Check that it is not triggered by mouse buttons.\n // Restricted btn: mouse right and center. True - if restricted btn was clicked\n if (event.button) {\n return;\n }\n\n const hotSpot = this.ref('self').get();\n const productTileName = (hotSpot?.querySelector('[data-product-name]') as HTMLElement)?.dataset?.productName;\n const textBlockValue = hotSpot?.querySelectorAll('h1, h2, h3')[0]?.textContent;\n\n this.openPopup();\n this.eventBus().emit('hotSpot.click', productTileName || textBlockValue);\n }\n\n /**\n * @param _el Source of Keydown event\n * @param event event instance if DOM event\n */\n handleKeydown(_el, event) {\n if (!event) {\n return;\n }\n\n if (event.keyCode === keyCode.ESCAPE) {\n event.preventDefault();\n event.stopPropagation();\n\n this.closePopup(_el, event);\n }\n }\n }\n\n return HotSpot;\n}\n\nexport type THotSpot = ReturnType<typeof HotSpotClassCreator>;\n\nexport type THotSpotInstance = InstanceType<THotSpot>;\n\nexport default HotSpotClassCreator;\n","import { debounce } from 'widgets/toolbox/debounce';\nimport { timeout } from 'widgets/toolbox/util';\nimport {\n SMALL,\n MEDIUM,\n LARGE,\n EXTRA_LARGE,\n getViewType\n} from 'widgets/toolbox/viewtype';\nimport cssLoadChecker from 'widgets/toolbox/cssLoadChecker';\nimport { TWidget } from 'widgets/Widget';\n\nconst progressBarHeight = 50;\nconst DATA_PROGRESS_CONTENT = '[data-ref=\"progressBarContent\"]';\nconst DATA_PROGRESS_ITEM = '[data-ref=\"progressBarItem\"]';\nconst stickyHeaderHeightMap = {\n // @ts-ignore Expected Error\n [SMALL]: 52,\n // @ts-ignore Expected Error\n [MEDIUM]: 52,\n // @ts-ignore Expected Error\n [LARGE]: 104,\n // @ts-ignore Expected Error\n [EXTRA_LARGE]: 64\n};\n\n/**\n * @param Widget Base widget for extending\n * @returns ProgressBar class\n */\nfunction ProgressBarClassCreator(Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory plugin_page_designer_ext\n * @class ProgressBar\n * @augments Widget\n * @classdesc Added progress bar on page\n * <div class=\"b-progress_bar\" data-widget=\"progressBar\" data-ref=\"progressBarContainer\">\n * <div class=\"b-progress_bar-inner\">\n * <div class=\"b-progress_bar-content\">\n * <span class=\"b-progress_bar-line\" data-ref=\"progressBarLine\"></span>\n * <div class=\"b-progress_bar-btns\" data-ref=\"progressBarActions\"></div>\n * <script type=\"template/mustache\" data-ref=\"template\">\n * <div class=\"b-progress_bar-btns\" data-ref=\"progressBarActions\">\n * {{${'#'}progressBarButtons}}\n * <button\n * data-event-click=\"onClick\"\n * style=\"left:{{xAxisPercentage}}\"\n * data-target=\"{{page}}\"\n * aria-label=\"{{layoutName}}\"\n * class=\"b-progress_bar-dot\"\n * id=\"{{layoutName}}-{{page}}\">\n * <span class=\"b-progress_bar-dot_name\">{{layoutName}}</span>\n * </button>\n * {{/progressBarButtons}}\n * </div>\n * </script>\n * </div>\n * </div>\n * </div>\n */\n\n class ProgressBar extends Widget {\n progressBarContainer!: HTMLElement | undefined;\n\n progressBar!: HTMLElement | undefined;\n\n progressBarActions!: HTMLElement | undefined;\n\n targetElement!: HTMLElement | null;\n\n progressBarItems!: undefined | NodeListOf<HTMLElement>;\n\n scrollDisposable!: Array<() => void>;\n\n targetElementHeight = 0;\n\n spacer = 0;\n\n targetElementOffset = 0;\n\n progressBarButtons!: Promise<HTMLElement | undefined>;\n\n prefs() {\n return {\n activeClass: 'm-active',\n initialized: 'm-initialized',\n textLeft: 'm-text_left',\n lastActive: 'm-last_active',\n ...super.prefs()\n };\n }\n\n /**\n * @description Widget initialization\n */\n init() {\n super.init();\n /* Async loading to not block other widget init */\n timeout(() => {\n cssLoadChecker.get().then(() => this.initProgressBar());\n }, 200);\n }\n\n /**\n * @description Initial ProgressBar configuration\n * @listens \"viewtype.change\"\n */\n initProgressBar() {\n this.progressBarContainer = this.ref('progressBarContainer').get();\n this.progressBar = this.ref('progressBarLine').get();\n this.progressBarActions = this.ref('progressBarActions').get();\n this.targetElement = document.querySelector(DATA_PROGRESS_CONTENT);\n this.progressBarItems = this.targetElement?.querySelectorAll(DATA_PROGRESS_ITEM);\n\n this.setVars();\n this.getHeaderHeight();\n this.generateButtons();\n this.attachScrollListener();\n this.setProgressWidth();\n this.eventBus().on('viewtype.change', 'resize');\n }\n\n /**\n * @description Added scroll listener\n */\n attachScrollListener() {\n this.scrollDisposable = this.ev('scroll', debounce(() => {\n this.setProgressWidth();\n }, 0), window, true);\n }\n\n /**\n * @description Recalculate data when page resize\n */\n resize() {\n this.setVars();\n this.getHeaderHeight();\n this.generateButtons();\n this.setProgressWidth();\n }\n\n /**\n * @description Calculate data for progress bar\n */\n setVars() {\n const headerHeight = stickyHeaderHeightMap[getViewType()];\n\n this.targetElementHeight = this.targetElement?.offsetHeight || 0;\n this.spacer = headerHeight + progressBarHeight;\n this.targetElementOffset = this.getCorrectedOffsetTop(this.targetElement);\n }\n\n /**\n * @description Get header height\n */\n getHeaderHeight() {\n if (this.progressBarContainer) {\n this.progressBarContainer.style.top = stickyHeaderHeightMap[getViewType()] + 'px';\n }\n }\n\n /**\n * @description Calculate progress indicator percentage\n */\n setProgressWidth() {\n const currentWidth = this.getProgressWidth();\n\n if (this.progressBar) {\n this.progressBar.style.width = currentWidth + '%';\n }\n\n this.setActive(currentWidth);\n }\n\n /**\n * @description Get data to scroll to the each of element\n * @param element Element\n * @returns Scroll to element\n */\n getCorrectedOffsetTop(element) {\n const offsetTop = element.getBoundingClientRect().top + window.pageYOffset;\n\n return offsetTop - this.spacer;\n }\n\n getRoundNum(num) {\n return Math.round(num * 100) / 100;\n }\n\n /**\n * @description Get scroll position\n * @returns Scroll position\n */\n getScrollPosition() {\n let windowScrollTop = document.body.scrollTop || document.documentElement.scrollTop;\n\n windowScrollTop -= this.targetElementOffset;\n\n return windowScrollTop <= 0 ? 0 : windowScrollTop;\n }\n\n /**\n * @description Check progress indicator percentage\n * @returns width\n */\n getProgressWidth() {\n const width = this.getRoundNum((this.getScrollPosition() / this.targetElementHeight) * 100);\n\n return (width >= 100 ? 100 : width);\n }\n\n /**\n * @description Generate buttons on progressBarLine\n */\n generateButtons() {\n this.has('progressBarActions', progressRefEl => {\n const progressBarActions = progressRefEl.get();\n\n if (progressBarActions) {\n progressBarActions.innerHTML = '';\n this.createProgressBarButtons();\n }\n });\n }\n\n /**\n * @description Create buttons on progressBarLine\n */\n createProgressBarButtons() {\n if (!this.progressBarItems) { return; }\n\n // @ts-ignore Expected Error\n const progressBarButtons = [...this.progressBarItems].map((item: HTMLElement, i) => {\n const layoutName = item.dataset.progressBarItem;\n const yOffset = item.getBoundingClientRect().top - (this.targetElement?.getBoundingClientRect().top || 0);\n const xAxis = this.getRoundNum((yOffset / this.targetElementHeight) * 100);\n const xAxisPercentage = xAxis + '%';\n let extraClass = '';\n\n if (xAxis < 6) {\n extraClass = this.prefs().textLeft;\n }\n\n if (this.getProgressWidth() >= xAxis) {\n extraClass += ' ' + this.prefs().activeClass;\n }\n\n return {\n page: i,\n layoutName,\n xAxisPercentage,\n extraClass\n };\n });\n\n this.progressBarButtons = new Promise((resolve) => {\n this.render(undefined, { progressBarButtons }, this.ref('progressBarActions')).then(() => {\n resolve(this.progressBarActions);\n this.ref('self').addClass(this.prefs().initialized);\n });\n });\n }\n\n /**\n * @description Get active buttons on progress bar\n * @param currentWidth current width\n */\n setActive(currentWidth) {\n if (!this.progressBarActions) {\n return;\n }\n\n const progressBarButtons = this.progressBarActions.children as HTMLCollectionOf<HTMLElement>;\n let lastActiveIndex = 0;\n\n for (let i = 0; i < progressBarButtons.length; i++) {\n progressBarButtons[i].classList.remove(this.prefs().lastActive);\n\n if (Math.ceil(currentWidth) >= parseFloat(progressBarButtons[i].style.left)) {\n progressBarButtons[i].classList.add(this.prefs().activeClass);\n lastActiveIndex = i;\n } else {\n progressBarButtons[i].classList.remove(this.prefs().activeClass);\n }\n }\n\n if (progressBarButtons.length > 0) {\n progressBarButtons[lastActiveIndex].classList.add(this.prefs().lastActive);\n }\n }\n\n /**\n * @description Scroll to select element after click on progress bar button\n * @param ref Ref\n */\n onClick(ref) {\n const targetIndex = ref.get().dataset.target;\n const targetElement = this.progressBarItems?.[targetIndex];\n const yAxis = this.getCorrectedOffsetTop(targetElement);\n\n window.scrollTo({\n top: yAxis,\n behavior: 'smooth'\n });\n }\n }\n\n return ProgressBar;\n}\n\nexport type TProgressBar = ReturnType<typeof ProgressBarClassCreator>;\n\nexport type TProgressBarInstance = InstanceType<TProgressBar>;\n\nexport default ProgressBarClassCreator;\n","import { RefElement } from 'widgets/toolbox/RefElement';\nimport { getViewType } from 'widgets/toolbox/viewtype';\nimport { TWidget } from 'widgets/Widget';\n\nconst keyCode = Object.freeze({\n ENTER: 13\n});\n\nfunction VideoExtClassCreator(Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory plugin_page_designer_ext\n * @class VideoExt\n * @augments Widget\n * @classdesc Represents VideoExt component with next features:\n * 1. Change url source on viewport resize\n * 2. Allow play or pause the video by clicking on it when native controls are hidden (only for HTML5 video tag)\n *\n * <div class=\"b-video_banner m-vertical_${pdict.verticalAlignment}\" data-widget=\"videoExt\" data-player-type=\"${pdict.playerType}\">\n * <div class=\"b-video_banner-container\">\n * <isprint value=\"${\n * pdict.regions.videoBannerText\n * .setClassName('b-video_banner-text_block')\n * .render()}\" encoding=\"off\"\n * />\n * <figure class=\"b-video_banner-poster ${pdict.posterVisibility}\" data-event-click=\"onPlay\" data-ref=\"poster\">\n * <isprint value=\"${pdict.image.setClassName('b-image_tile-picture').render()}\" encoding=\"off\" />\n * <figcaption>\n * <span class=\"b-video_banner-title\"><isprint value=\"${pdict.posterTitle}\"/></span>\n * <button\n * type=\"button\"\n * aria-label=\"${Resource.msg('video.play.button','pagedesigner',null)}\"\n * class=\"b-video_banner-ctrl\"\n * >\n * </button>\n * </figcaption>\n * </figure>\n * <iframe\n * class=\"b-video_banner-item\"\n * data-ref=\"elemSource\"\n * data-id-video=\"${pdict.idVideo}\"\n * data-id-video-mobile=\"${pdict.idVideoMobile}\"\n * data-url=\"${pdict.url}\"\n * data-mobile-url=\"${pdict.urlMobile}\"\n * src=\"${pdict.url}\"\n * frameborder=\"0\"\n * allow=\"${pdict.extraAttributes}\"\n * allowfullscreen\n * aria-hidden=\"${Boolean(pdict.image)}\"\n * >\n * </iframe>\n * </div>\n * </div>\n *\n * or\n *\n * <div class=\"b-video_banner m-vertical_${pdict.verticalAlignment}\" data-widget=\"videoExt\" data-player-type=\"${pdict.playerType}\">\n * <figure class=\"b-video_banner-poster ${pdict.posterVisibility}\" data-event-click=\"onPlay\" data-ref=\"poster\">\n * <isprint value=\"${pdict.image.setClassName('b-image_tile-picture').render()}\" encoding=\"off\" />\n * <figcaption>\n * <span class=\"b-video_banner-title\"><isprint value=\"${pdict.posterTitle}\"/></span>\n * <button\n * type=\"button\"\n * aria-label=\"${Resource.msg('video.play.button','pagedesigner',null)}\"\n * class=\"b-video_banner-ctrl\"\n * >\n * </button>\n * </figcaption>\n * </figure>\n * <video\n * class=\"b-video_banner-item m-external\"\n * data-ref=\"elemVideo\"\n * ${pdict.extraAttributes}\n * aria-hidden=\"${Boolean(pdict.image)}\"\n * >\n * <source\n * data-ref=\"elemSource\"\n * data-url=\"${pdict.url}\"\n * data-mobile-url=\"${pdict.urlMobile}\"\n * src=\"${pdict.url}\"\n * type=\"video/mp4\"\n * />\n * </video>\n * </div>\n */\n\n class VideoExt extends Widget {\n // @ts-ignore Expected Error\n playerType: RefElement;\n\n poster!: RefElement;\n\n loaded = false;\n\n elemVideo;\n\n elemSource!: RefElement;\n\n // @ts-ignore Expected Error\n url: RefElement;\n\n // @ts-ignore Expected Error\n mobileUrl: RefElement;\n\n // @ts-ignore Expected Error\n iframeId: RefElement;\n\n prefs() {\n return {\n playingCSSClass: 'm-playing',\n ...super.prefs()\n };\n }\n\n init() {\n super.init();\n\n // @ts-ignore Expected Error\n this.playerType = this.ref('self').data('player-type');\n this.poster = this.ref('poster');\n this.elemVideo = this.ref('elemVideo');\n this.elemSource = this.ref('elemSource');\n // @ts-ignore Expected Error\n this.url = this.elemSource.data('url');\n // @ts-ignore Expected Error\n this.mobileUrl = this.elemSource.data('mobileUrl');\n // @ts-ignore Expected Error\n this.iframeId = this.elemSource.data('id-video');\n\n this.bindObserver();\n this.eventBus().on('viewtype.change', 'onViewtypeChange');\n window.addEventListener('orientationchange', this.onViewtypeChange.bind(this));\n this.ref('self').addClass('m-inited');\n\n window.addEventListener('load', this.contentBoxWidth.bind(this));\n window.addEventListener('orientationchange', () => {\n setTimeout(this.contentBoxWidth.bind(this), 100);\n });\n this.eventBus().on('viewtype.change', 'contentBoxWidth');\n }\n\n /**\n * @description sets and loads video if it is in the intersection\n */\n bindObserver() {\n const element = this.ref('self').get();\n\n if (!element) {\n return;\n }\n\n const animatedObserver = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n const isAutoplay = String(this.url).indexOf('autoplay=1') >= 0 || this.elemVideo?.hasAttr('autoplay');\n\n if (entry.isIntersecting && (!this.poster.length || isAutoplay) && !this.loaded) {\n this.setVideoSource();\n this.hidePoster();\n }\n\n if (!entry.isIntersecting) {\n this.pauseYtVideo();\n }\n });\n }, {\n rootMargin: '0px 0px -25%'\n });\n\n animatedObserver.observe(element);\n }\n\n /**\n * @description sets video source and additional attributes\n */\n setVideoSource() {\n if (getViewType() === 'small' && window.orientation === 0 && this.mobileUrl) {\n this.elemSource.attr('src', this.mobileUrl);\n // @ts-ignore Expected Error\n this.iframeId = this.elemSource.data('id-video-mobile');\n } else {\n this.elemSource.attr('src', this.url);\n }\n\n // @ts-ignore Expected Error\n if (this.playerType === 'url') {\n this.elemSource.attr('src', this.elemSource.attr('src') + '#t=0.001'); // Fix IOS not showing video preview\n } else {\n this.elemSource.attr('src', this.elemSource.attr('src') + '&enablejsapi=1');\n this.loaded = true;\n }\n\n this.loadVideo();\n }\n\n /**\n * @description Executed when widget is re-rendered\n */\n onRefresh() {\n super.onRefresh();\n this.setVideoSource();\n this.ref('self').addClass('m-inited');\n }\n\n /**\n * @description Reload video when src is changed\n */\n loadVideo() {\n if (this.elemVideo && this.elemVideo.get()) {\n this.elemVideo.get()?.load();\n }\n }\n\n /**\n * @description Hide poster on click and show video\n */\n hidePoster() {\n this.poster.hide();\n\n // @ts-ignore Expected Error\n if (this.playerType === 'url') {\n this.elemVideo.attr('aria-hidden', 'false');\n } else {\n this.elemSource.attr('aria-hidden', 'false');\n }\n }\n\n /**\n * @description Change video src on viewport change\n */\n onViewtypeChange() {\n const isMobileUrl = getViewType() === 'small' && window.orientation === 0 && this.mobileUrl;\n\n if (this.elemSource) {\n this.elemSource.attr('src', isMobileUrl ? this.mobileUrl : this.url);\n }\n\n this.loadVideo();\n }\n\n /**\n * @description Click over poster\n */\n onPlay() {\n let videoName;\n\n this.setVideoSource();\n\n // @ts-ignore Expected Error\n if (this.playerType !== 'url') {\n // @ts-ignore Expected Error\n this.elemSource.attr('src', this.elemSource.attr('src').replace('autoplay=0', 'autoplay=1'));\n\n videoName = this.iframeId;\n this.ref('play').hide();\n } else {\n const videoUrl = this.elemVideo.get() as HTMLVideoElement;\n\n videoUrl?.play();\n\n videoName = this.elemSource.attr('src');\n }\n\n this.eventBus().emit('videoPoster.click', this.playerType, videoName);\n this.hidePoster();\n }\n\n /**\n * @param _el event source element\n * @param event event instance if DOM event\n */\n handleKeydown(_el, event) {\n if (!event) {\n return;\n }\n\n if (event.keyCode === keyCode.ENTER) {\n event.preventDefault();\n event.stopPropagation();\n this.onPlay();\n }\n }\n\n /**\n * @description Start video\n */\n playPauseVideo() {\n const player = this.elemVideo.get();\n\n if (!player) {\n return;\n }\n\n if (player.paused || player.ended) {\n player.play();\n this.ref('playButton').addClass(this.prefs().playingCSSClass);\n } else {\n player.pause();\n this.ref('playButton').removeClass(this.prefs().playingCSSClass);\n }\n }\n\n contentBoxWidth() {\n const items = this.ref('self').get()?.querySelectorAll('.js-heading, .js-subheading');\n\n items?.forEach((item) => {\n if (item.parentElement) {\n item.parentElement.style.width = '';\n item.parentElement.style.width = Math.ceil(item.getBoundingClientRect().width) + 'px';\n }\n });\n }\n\n pauseYtVideo() {\n const player = this.elemSource.get() as HTMLIFrameElement;\n\n if (player) {\n player.contentWindow?.postMessage('{\"event\":\"command\",\"func\":\"pauseVideo\",\"args\":\"\"}', '*');\n }\n }\n }\n\n return VideoExt;\n}\n\nexport type TVideoExt = ReturnType<typeof VideoExtClassCreator>;\n\nexport type TVideoExtInstance = InstanceType<TVideoExt>;\n\nexport default VideoExtClassCreator;\n","export default {\n md: 768,\n lg: 1024,\n xl: 1440\n};\n","/* eslint-disable no-underscore-dangle */\nimport { log } from './toolbox/util';\nimport { RefElement } from 'widgets/toolbox/RefElement';\nimport EventBusWrapper from 'widgets/toolbox/EventBusWrapper';\nimport widgetsMgr from './widgetsMgr';\nconst templateProp = '@@@_template';\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst noop = () => {};\n\n/**\n * @description save template during webpack HMR\n * @param renderTo rendering element\n * @param template template string\n */\nfunction saveTemplateForHotReload(renderTo: RefElement, template: string): void {\n if (!PRODUCTION) { // save template in element for hot reload\n const tmpEl = renderTo.get();\n\n if (tmpEl) {\n tmpEl[templateProp] = template;\n }\n }\n}\n\n/**\n * @description Find modified element\n * @param nodeOrig element\n * @param routeOrig path to element\n * @returns modified element or false if not found\n */\nfunction getFromRoute(nodeOrig: ChildNode, routeOrig: number[]): ChildNode | false {\n let node = nodeOrig;\n const route = routeOrig.slice();\n\n while (route.length > 0) {\n if (node && node.childNodes) {\n const c = route.splice(0, 1)[0];\n\n node = node.childNodes[c];\n } else {\n return false;\n }\n }\n\n return node;\n}\n\n/**\n * @description Callback assigned on diff-dom post hook after applying changes\n * @param action diff-dom action happens with DOM node\n * @param node changed element\n * @param info diff-dom changes object\n * @returns callback\n */\nfunction getDelayedCallback(action: string, node: HTMLElement, info: diffDOM.Info): () => void {\n return () => {\n if (action === 'modifyAttribute') {\n widgetsMgr.removeAttribute(node, info.diff);\n widgetsMgr.addAttribute(node, info.diff);\n } else if (action === 'removeAttribute') {\n widgetsMgr.removeAttribute(node, info.diff);\n } else if (action === 'addAttribute') {\n widgetsMgr.addAttribute(node, info.diff);\n } else {\n throw new Error(`Unknown action \"${action}\"`);\n }\n };\n}\n\n/**\n * @description Diff-dom post applying callback\n * @param info - Diff-dom changes object\n * @param el Element to change\n * @param delayedAttrModification List of modifications that should be used after diffs appliance\n */\nfunction postDiffApplyCallback(info: diffDOM.Info, el: HTMLElement, delayedAttrModification: Array<() => void>): void {\n const { action, name } = info.diff;\n\n if (['removeAttribute', 'addAttribute', 'modifyAttribute'].includes(action)\n && typeof name === 'string'\n && name.startsWith('data-') // handle only data attr changes\n && info.node instanceof HTMLElement) {\n const node = getFromRoute(el, info.diff.route);\n\n if (node && node instanceof HTMLElement) {\n const delayedCallback: () => void = getDelayedCallback(action, node, info);\n\n // data-initialized should be executed at last point\n delayedAttrModification[name === 'data-initialized' ? 'push' : 'unshift'](delayedCallback);\n }\n }\n\n if ((action === 'addAttribute' || action === 'removeAttribute')\n && info.node.nodeName === 'INPUT'\n && name === 'checked') {\n const node = <HTMLInputElement>info.node;\n\n if (node.type === 'checkbox' || node.type === 'radio') {\n node.checked = (action === 'addAttribute');\n }\n }\n}\n\n/**\n * @description Diff-dom outer diffs filter callback\n * @param t1 - Target element\n */\nfunction filterOuterDiffCallback(t1: diffDOM.NodeObj): void {\n if (t1.attributes && t1.attributes['data-skip-render']) {\n // will not diff childNodes\n t1.innerDone = true;\n }\n}\n\n// eslint-disable-next-line no-use-before-define\ntype WidgetConstructor<T = typeof Widget> = (type: string) => T;\n\n/** Core component to extend for each widget */\n/**\n * @category widgets\n * @subcategory framework\n */\nclass Widget {\n /**\n * @description RefElements related to current widget\n */\n refs: {[key : string] : RefElement} = Object.create(null);\n\n /**\n * @description state explain widget is shown\n */\n shown: boolean;\n\n /**\n * @description config from data attributes\n */\n config: {[x: string]: {[key: string]: unknown} |string|number|boolean|null|undefined};\n\n /**\n * @description functions which executing during destructuring of widget\n */\n disposables: Array<() => void>|undefined;\n\n /**\n * @description function assigned by WidgetsMgr after constructor call to\n * provide ability for parent widget listen child widget event\n * fired by method `this.emit()`\n */\n parentHandler: (eventName: string, ...args: unknown[]) => void = noop;\n\n /**\n * @description children widgets\n */\n items: Array<Widget> = [];\n\n /**\n * @description Widget ID\n */\n id: string | undefined;\n\n /**\n * @param id - widget id\n * @description Get constructor id for current widget. Used in widgetMgr\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getConstructor: WidgetConstructor = (id) => Widget;\n\n /**\n * @description Indicate if widget is in progress of refreshing\n */\n isRefreshingWidget = false;\n\n /**\n * @description Container to cache templates for rendering\n */\n cachedTemplates: {[id: string]: string | undefined} = {};\n\n /**\n * @description EventBusWrapper instance for event emitting\n */\n protected _eventBus: EventBusWrapper | undefined;\n\n /**\n * @description Creates self RefElement.js wrapper, add initial states, configuration.\n * @param el DOM element\n * @param config widget config\n */\n constructor(el: HTMLElement, config: Widget['config'] = {}) {\n if (this.refs) { // for type check\n this.refs.self = new RefElement([el]);\n }\n\n this.config = config;\n\n if (this.ref('self').attr('id')) {\n this.id = <string> this.ref('self').attr('id');\n }\n\n if (!this.id && this.config.id) {\n this.id = <string> this.config.id;\n }\n\n this.shown = !this.config.hidden && !this.ref('self').hasAttr('hidden');\n\n if (typeof this.config.passEvents === 'string') {\n if (!PRODUCTION) {\n log.warn('Usage of \"data-pass-events\" has been deprecated. Please take a look \"data-forward-to-parent\"');\n }\n\n this.config.passEvents.split(':').forEach(pair => {\n const [methodName, emitEvent] = pair.split('-');\n\n this[methodName] = (...args) => {\n this.parentHandler(emitEvent, ...args);\n };\n });\n }\n }\n\n get length() {\n return 1;\n }\n\n /**\n * @description call class method provided in argument `name` with arguments `(classContext, value, ...args)` or\n * call `RefElement.data(name, value)` for wrapper widget DOM node to get or set data attributes\n * @param name of class method or data-attribute\n * @param [value] if class has method `name` - will be used as argument, otherwise will be used as `value` to set into data attribute `name`\n * @param [args] if class has method `name` - will be used as argument, otherwise would not be used\n * @returns\n * - execution result of the method specified as `name` argument\n * - if class has no method `name` - get or set data attribute `name` depending on provided or no `value` argument\n */\n data(name: string, value?: unknown, ...args: unknown[]): unknown {\n const classMethod: (v?: unknown, ...a: unknown[]) => unknown = this[name];\n\n if (typeof classMethod === 'function') {\n return classMethod.call(this, value, ...args);\n }\n\n return this.ref('self').data(name, value);\n }\n\n /**\n * @description call class method provided in argument `name` with arguments `...args` if method exists\n *\n * @param name of class method\n * @param [args] if class has method `name` - will be used as arguments\n * @returns result of call (any) or undefined, if method not found\n */\n callIfExists(name: string, ...args: unknown[]): unknown {\n const classMethod = this[name];\n\n if (typeof classMethod === 'function') {\n return classMethod.call(this, ...args);\n }\n\n return undefined;\n }\n\n /**\n * @description Emit widget event that will be listened by parent handler with context of current widget\n\n * @param eventName name of event\n * @param args argument to pass\n */\n emit(eventName: string, ...args: unknown[]): void {\n this.parentHandler(eventName, this, ...args);\n }\n\n /**\n * @description Emit widget event that will be listened by parent handler without context of current widget\n * @param eventName name of event\n * @param args argument to pass\n */\n emitWithoutContext(eventName: string, ...args: unknown[]): void {\n this.parentHandler(eventName, ...args);\n }\n\n /**\n * @description In case if you need to emit/subscribe global event you may get an event bus with this method.\n * @description Get widget's EventBusWrapper instance\n * @returns Instance of EventBusWrapper\n */\n eventBus(): EventBusWrapper {\n if (!this._eventBus) {\n this._eventBus = new EventBusWrapper(this);\n this.onDestroy(() => {\n this._eventBus = undefined;\n });\n }\n\n return this._eventBus;\n }\n\n /**\n * @description Merge data-attribute properties to default widget properties (defined in widget javascript file, or extended from parent widget)\n * and returns widget configuration map\n * @returns config widget config\n */\n prefs() {\n return {\n /** is component hidden */\n hidden: false,\n /** class of component during loading */\n classesLoading: 'm-widget-loading',\n /** class of component once component loaded and inited */\n /** id of component */\n id: '',\n // configs form data attributes\n ...this.config\n };\n }\n\n /**\n * @description Sets preference to the data-attribute properties and widget properties\n * to store widget preference state.\n * @param key - preference key\n * @param value - preference value to set\n */\n setPref(key: string, value: string | number | boolean | { [key: string]: unknown; } | null | undefined) {\n this.ref('self').data(key, String(value));\n this.config[key] = value;\n }\n\n /**\n * @description This method executed in the end of [Widgets Application Lifecycle,]{@link tutorial-WidgetsApplicationLifecycle.html}\n * in order to add business logic before initialization is finished.\n */\n init() {\n this.ref('self').removeClass(this.prefs().classesLoading);\n }\n\n /**\n * @description Get child refElement by key from prefs() or id\n * @param name Id of RefElement or preference key that contains id\n * @returns found RefElement instance or empty RefElement if doesn't exist\n * @protected\n */\n ref(name: string): RefElement {\n const prefsName = this.prefs();\n const prefsValue = prefsName[name];\n let ref : RefElement;\n\n if (prefsValue) {\n ref = this.refs && this.refs[prefsValue];\n\n if (ref) {\n return ref;\n }\n }\n\n ref = this.refs && this.refs[name];\n\n if (ref) {\n return ref;\n }\n\n return new RefElement([]);\n }\n\n /**\n * @description search `refElement` inside of widget by `name`\n * - if `cb` exist - run `cb` with found `refElement` as argument\n * - otherwise return existing state\n *\n * @param name Id of widget/refElement or preference that contain id of widget/refElement\n * @param [cb] callback will be executed if element found\n * @returns true if found `refElement`\n */\n has(name: string, cb?: (arg: RefElement) => void): boolean {\n const ref = this.refs && this.refs[name];\n\n if (ref) {\n if (cb) {\n cb(ref);\n }\n\n return true;\n }\n\n return false;\n }\n\n /**\n * @description Destroys widgets. Only for internal usage\n *\n * @protected\n */\n destroy() {\n if (this.disposables) {\n this.disposables.forEach(disposable => disposable());\n this.disposables = undefined;\n }\n\n if (this.items && this.items.length) {\n this.items.forEach(item => {\n if (item && typeof item.destroy === 'function') {\n item.destroy();\n }\n });\n }\n\n this.items = [];\n this.refs = {};\n }\n\n /**\n * @description Attach an event handler function for one or more events to the selected elements.\n * @param eventName ex: 'click', 'change'\n * @param cb callback\n * @param selector CSS selector\n * @param passive is handler passive?\n * @returns dispose functions for each element event handler\n *\n * @protected\n */\n ev<T = HTMLElement, E = Event>(\n eventName: string,\n cb: (this: this, element: T, event: E, ...args: unknown[]) => unknown,\n selector: string | EventTarget = '', passive = true\n ): (() => void)[] {\n let elements: EventTarget[] = [];\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n if (selector instanceof Element || selector === window || selector === window.document) {\n elements = [selector];\n } else if (typeof selector === 'string' && this.refs && this.refs.self) {\n const el = this.refs.self.get();\n\n if (el) {\n elements = Array.from(el.querySelectorAll(selector));\n }\n } else if (this.refs && this.refs.self) {\n const el = this.refs.self.get();\n\n if (el) {\n elements = [el];\n }\n }\n\n return elements.map(element => {\n let fn: EventListener | undefined = <EventListener><unknown> function fn(this: T, event: E, ...args: unknown[]) {\n return cb.apply(self, [this, event, ...args]);\n };\n\n element.addEventListener(eventName, fn, passive ? { passive: true } : { passive: false });\n\n const dispose = () => {\n if (fn) {\n element.removeEventListener(eventName, fn);\n fn = undefined;\n }\n };\n\n this.onDestroy(dispose);\n dispose.eventName = eventName;\n\n return dispose;\n });\n }\n\n /**\n * @description Assign function to be executed during widget destructuring\n * @param fn function to be executed during destroy\n * @returns called function\n */\n onDestroy(fn: () => void): () => void {\n if (!this.disposables) {\n this.disposables = [];\n }\n\n this.disposables.push(fn);\n\n return fn;\n }\n\n /**\n * @description executed when widget is re-rendered\n */\n onRefresh() {\n this.shown = !this.config.hidden && !this.ref('self').hasAttr('hidden');\n\n if (this.ref('self').attr('id')) {\n this.id = <string> this.ref('self').attr('id');\n } else if (this.ref('self').data('id')) {\n this.id = <string> this.ref('self').data('id');\n }\n }\n\n /**\n * @description Search for child component instance and execute callback with this instance as argument\n * @param id of component\n * @param cb callback with widget\n * @returns callback result if element found, otherwise undefined\n */\n getById<T = Widget>(id: string, cb: (args0: T) => unknown): unknown {\n if (id && this.items && this.items.length) {\n for (let c = 0; c < this.items.length; c += 1) {\n const item = this.items[c];\n\n if (item && item.id === id) {\n return cb.call(this, <T><unknown> item);\n }\n }\n }\n\n if (!PRODUCTION) {\n log.warn(`Widget with id \"${id}\" is not found in the children list of \"${this.constructor.name}\" `, this);\n }\n\n return undefined;\n }\n\n /**\n * Travels over nearest/next level child components\n *\n * @param fn callback\n * @returns arrays of callback results\n */\n eachChild<T = Widget, R = T | void>(fn: (args0: T) => R): R[] {\n if (this.items && this.items.length) {\n return this.items.map(item => {\n return fn(item as unknown as T);\n });\n }\n\n return [];\n }\n\n /**\n * @description Hide widget\n * @returns current instance for chaining\n */\n hide(): this {\n if (this.shown) {\n this.ref('self').hide();\n this.shown = false;\n }\n\n return this;\n }\n\n /**\n * @description Show widget\n * @returns current instance for chaining\n */\n show(): this {\n if (!this.shown) {\n this.ref('self').show();\n this.shown = true;\n }\n\n return this;\n }\n\n /**\n * @description Show or hide widget element\n * @param [display] Use true to show the element or false to hide it.\n * @returns current instance for chaining\n */\n toggle(display: boolean): this {\n const state = typeof display !== 'undefined' ? display : !this.shown;\n\n this[state ? 'show' : 'hide']();\n\n return this;\n }\n\n /**\n * @description Returns whether the widget is hidden\n * @returns Hidden flag\n */\n isHidden(): boolean {\n return !this.shown;\n }\n\n /**\n * @description Returns whether the widget is shown\n * @returns Shown flag\n */\n isShown(): boolean {\n return this.shown;\n }\n\n /**\n * @description This method provides ability to get template from ref element.\n * @param templateRefId - Id of template\n * @param renderTo - Render into element\n * @returns return template string if it was found\n *\n * @protected\n */\n getTemplateByRefID(templateRefId: string, renderTo: RefElement): string | undefined {\n const templateElement = this.ref(templateRefId).get();\n let template;\n\n if (templateElement) {\n template = templateElement.textContent || templateElement.innerHTML;\n } else if (!PRODUCTION) {\n const tmpEl = renderTo.get();\n\n if (tmpEl && tmpEl[templateProp]) {\n template = tmpEl[templateProp];\n }\n }\n\n return template;\n }\n\n /**\n * @description This method provides ability to dynamically render HTML for widgets.\n * @param templateRefId id of template\n * @param data data to render\n * @param [renderTo] render into element\n * @param [strToRender] pre-rendered template\n * @returns resolved if rendered or rejected if no found template promise\n *\n * @protected\n */\n render(\n templateRefId = 'template',\n data: {[key: string]: unknown} = {},\n renderTo: RefElement = this.ref('self'),\n strToRender = ''\n ): Promise<void> {\n return import(/* webpackChunkName: 'dynamic-render' */ 'mustache').then(d => d.default).then((Mustache) => {\n let template = this.cachedTemplates[templateRefId];\n\n if (!strToRender && !template) {\n template = this.getTemplateByRefID(templateRefId, renderTo);\n\n if (template) {\n this.cachedTemplates[templateRefId] = template;\n saveTemplateForHotReload(renderTo, template);\n } else if (!PRODUCTION) {\n log.error(`Unable find template ${templateRefId}`, this);\n\n return Promise.reject(new Error(`Unable find template ${templateRefId}`));\n }\n }\n\n if (data) {\n data.lower = function () {\n return function (text, render) {\n return render(text).toLowerCase();\n };\n };\n }\n\n const renderedStr = strToRender || Mustache.render(template, data);\n const el = renderTo.get();\n\n if (el && el.parentNode) {\n // use new document to avoid loading images when diffing\n const newHTMLDocument = document.implementation.createHTMLDocument('diffDOM');\n const diffNode: HTMLElement = newHTMLDocument.createElement('div');\n\n diffNode.innerHTML = renderedStr;\n\n return this.applyDiff(el, diffNode);\n } else {\n log.error(`Missing el to render ${templateRefId}`, this);\n }\n\n return Promise.resolve();\n });\n }\n\n /**\n * @description Find diff between `el` and `diffNode` and apply diff by `diff-dom`\n * @param el Element before change\n * @param diffNode Changed element to find diff\n * @returns promise that resolved when diff founded and applied\n */\n applyDiff(el: HTMLElement, diffNode: HTMLElement): Promise<void> {\n return import(/* webpackChunkName: 'dynamic-render' */ 'diff-dom/src/index').then(({ DiffDOM }) => {\n const delayedAttrModification: Array<() => void> = [];\n const dd: diffDOM.DiffDOM = new DiffDOM({\n filterOuterDiff: filterOuterDiffCallback,\n postDiffApply: (info: diffDOM.Info) => {\n postDiffApplyCallback(info, el, delayedAttrModification);\n }\n });\n\n // Normalize DOM tree before applying diff to prevent infinite loop\n // Infinite loop appear in case when few text nodes became one by one\n el.normalize();\n const diff: Array<diffDOM.Diff> = dd.diff(el, diffNode.firstElementChild);\n\n if (diff && diff.length) {\n dd.apply(el, diff);\n }\n\n // report attr modification once app changes are applied\n delayedAttrModification.forEach(action => action());\n\n if (diff && diff.length) {\n this.eventBus().emit('rendering.applied');\n }\n });\n }\n}\n\nexport type TWidget = typeof Widget;\n\nexport default Widget;\n","/**\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttributeNames#Polyfill\n *\n * Needed for MS Edge and IE\n */\nif (Element.prototype.getAttributeNames === undefined) {\n Element.prototype.getAttributeNames = function getAttributeNames() {\n const attributes = this.attributes;\n const length = attributes.length;\n const result = [];\n\n result.length = length;\n\n for (let i = 0; i < length; i += 1) {\n // @ts-expect-error ts-migrate(2322) FIXME: Type 'string' is not assignable to type 'never'.\n result[i] = attributes[i].name;\n }\n\n return result;\n };\n}\n","// CLARIFY: get rid of smoothscroll-polyfill due to big size and not critical value\nimport './getAttributeNames'; // needed for MS Edge\n\nif (!('scrollBehavior' in document.documentElement.style)) { // needed for MS Edge\n setTimeout(() => {\n // eslint-disable-next-line spellcheck/spell-checker\n import(/* webpackChunkName: 'smoothscroll' */ 'smoothscroll-polyfill').then(smoothScroll => {\n smoothScroll.default.polyfill();\n });\n }, 0);\n}\n","import { TWidget } from 'widgets/Widget';\nimport { submitFormJson, getContentByUrl, submitFormJsonWithAbort } from 'widgets/toolbox/ajax';\nimport { scrollWindowTo } from 'widgets/toolbox/scroll';\nimport { RefElement } from 'widgets/toolbox/RefElement';\n\n/**\n * @typedef {typeof import('widgets/Widget').default} Widget\n * @typedef {ReturnType<typeof import('widgets/forms/InputStepper').default>} InputStepper\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} refElement\n */\n\ntype TCart = {\n items: Array<Record<string, unknown>>,\n shipments: Array<Record<string, unknown>>,\n valid: Record<string, unknown>,\n error: string,\n redirectUrl: string,\n couponAction: string,\n pageError: string\n};\n\ntype IModal = InstanceType<ReturnType<typeof import('widgets/global/Modal').default>>;\ntype IConfirmDialog = InstanceType<ReturnType<typeof import('widgets/global/ConfirmDialog').default>>;\ntype IInputStepper = InstanceType<ReturnType<typeof import('widgets/forms/InputStepper').default>>;\n\ntype TActionsUrls = { moveProductToWishlist: string };\n\n/**\n * @description Base CartMgr implementation\n * @param Widget Base widget for extending\n * @returns Cart Manager class\n */\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory cart\n * @class CartMgr\n * @augments Widget\n * @classdesc CartMgr component on Cart page. Renders the whole cart template on each update e.g. quantity/coupon/product edit etc.\n * Widget manages next actions:\n * 1. Edit product in a cart\n * 2. Change product quantity\n * 3. Remove product (move to Wish list) from Cart\n * 4. Communicate actions results\n * 5. Re-render Cart including products list and cart summary in case of actions like: product updated, coupon applied etc.\n * 6. Enable/disable \"Secure Checkout\" button to move to Checkout process depending on if there are errors in cart, which prevents moving to Checkout\n * @property {string} data-widget - Widget name `cartMgr`\n * @property {Array} data-items - Cart items list\n * @property {Array} data-approaching-discounts - Cart approaching discounts list\n * @property {object} data-action-urls - Cart action URLs\n * @property {object} data-totals - Cart totals\n * @property {Array} data-shipments - Cart shipments list\n * @property {boolean} data-valid - Is Cart valid\n * @property {number} data-num-items - Number of items in Cart\n * @property {string} data-cart-get-url - An URL to get updated Cart object from server\n * @property {object} data-accessibility-alerts - Accessibility alerts messages for different user actions\n * Possible values are: `quantitychanged`, `productupdated`, `productremoved`,\n * `promocodeadded`, `promocodeapplied`, `promocoderemoved`, `addedtowishlist`\n * @example <caption>Example of CartMgr widget markup</caption>\n * <div\n * data-widget=\"cartMgr\"\n * data-items=\"${JSON.stringify(pdict.items.toArray())}\"\n * data-approaching-discounts=\"${JSON.stringify(pdict.approachingDiscounts.toArray())}\"\n * data-action-urls=\"${JSON.stringify(pdict.actionUrls)}\"\n * data-cart-get-url=\"${URLUtils.url('Cart-Get')}\"\n * data-totals=\"${JSON.stringify(pdict.totals)}\"\n * data-shipments=\"${JSON.stringify(pdict.shipments.toArray())}\"\n * data-valid=\"${JSON.stringify(pdict.valid)}\"\n * data-num-items=\"${JSON.stringify(pdict.numItems)}\"\n * data-accessibility-alerts='{\n * \"quantitychanged\": \"${Resource.msg('alert.quantitychanged', 'cart', null)}\",\n * ...\n * }'\n * >\n * <div data-ref=\"cartContainer\"></div>\n * <script data-ref=\"cartTemplate\" type=\"template/mustache\">\n * <div data-ref=\"cartContainer\">\n * ... cart global errors\n * ... cart approaching discounts\n * ... cart items\n * ... cart summary\n * </div>\n * </script>\n * </div>\n */\n class CartMgr extends Widget {\n cart?: TCart;\n\n removeButton?: RefElement | IInputStepper;\n\n prefs() {\n return {\n cartGetUrl: '',\n accessibilityAlerts: <TAccessibilityAlerts>{},\n actionUrls: <TActionsUrls>{},\n tauAttrRemoveProductConfirmationPopUp: 'remove_item_confirmation_dialog',\n items: [],\n shipments: [],\n valid: true,\n error: '',\n redirectUrl: '',\n couponAction: '',\n pageError: '',\n ...super.prefs()\n };\n }\n\n /**\n * @description Widget initialization\n * @listens \"minicart.updated\"\n * @listens \"product.updated\"\n * @listens \"coupon.updated\"\n * @emits \"cart.rendered\"\n * @returns {void}\n */\n init() {\n this.cart = <TCart><unknown> this.prefs();\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'updateQtyRequests' does not exist on typ... Remove this comment to see the full error message\n this.updateQtyRequests = [];\n this.eventBus().on('minicart.updated', 'renderCart');\n this.eventBus().on('product.updated', 'onProductUpdated');\n this.eventBus().on('coupon.updated', 'onCouponUpdated');\n }\n\n /**\n * @description Executes on product updated in Quick View\n * @param {object} response Response object from server\n * @returns {void}\n */\n onProductUpdated(response) {\n const cart = response.cartModel;\n\n if (cart) {\n this.renderCart(cart)\n .then(() => this.accessibilityAlert(this.prefs().accessibilityAlerts.productupdated));\n }\n }\n\n /**\n * @description Executes on product updated in Quick View\n * @param {Cart} cart Cart object\n * @returns {void}\n */\n onCouponUpdated(cart) {\n this.renderCart(cart)\n .then(() => {\n if (cart) {\n const accessibilityAlert = this.prefs().accessibilityAlerts[`promocode${cart.couponAction}`];\n\n this.accessibilityAlert(accessibilityAlert);\n }\n });\n }\n\n /**\n * @description Renders Cart object and saves it as a current cart state\n * Adds some information into Cart object prior to rendering,\n * to make the whole object mustache template friendly\n * @emits \"cart.updated\"\n * @param cart - Cart object to reflect in template\n * @returns Promise object represents cart rendering result\n */\n renderCart(cart: TCart) {\n if (!cart) {\n return Promise.reject(new Error());\n }\n\n this.cart = cart;\n /**\n * @description Event, indicates that cart content was updated\n * @event \"cart.updated\"\n */\n this.eventBus().emit('cart.updated', cart);\n\n return this.render('cartTemplate', cart, this.ref('cartContainer'));\n }\n\n /**\n * @description Updates quantity of chosen product in Cart page\n * @param {inputStepper} quantityStepper - Select quantity input\n * @returns {Promise<object|null>} Promise object represents server response with quantity updating result\n */\n updateQty(quantityStepper) {\n this.showProgressBar();\n // @ts-expect-error TS2339: Property 'numItems' does not exist on type 'TCart'.\n const qtyBeforeUpdate = this.cart.numItems;\n const uuid = quantityStepper.data('uuid');\n const currentQuantity = quantityStepper.currentValue;\n const isQuantityBelowMinValue = currentQuantity < quantityStepper.config.lineItemMinOrderQuantity;\n\n if ((currentQuantity === 0) || isQuantityBelowMinValue) {\n this.removeProduct(quantityStepper);\n this.hideProgressBar();\n\n return Promise.resolve(null);\n }\n\n const requestObject = submitFormJsonWithAbort(quantityStepper.data('action'), {\n pid: quantityStepper.data('pid'),\n uuid: uuid,\n quantity: quantityStepper.getValue()\n }, 'POST', false);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'updateQtyRequests' does not exist on typ... Remove this comment to see the full error message\n this.updateQtyRequests.push(requestObject);\n\n // @ts-expect-error ts-migrate(2532) FIXME: Object is possibly 'undefined'.\n return requestObject.promise\n .then((resp) => {\n // @ts-expect-error TS2571: Object is of type 'unknown'.\n if (resp.numItems > qtyBeforeUpdate) {\n // @ts-expect-error TS2571: Object is of type 'unknown'.\n this.eventBus().emit('product.cart.qty.increment', quantityStepper, resp.numItems - qtyBeforeUpdate);\n } else {\n // @ts-expect-error TS2339: Property 'numItems' does not exist on type 'TCart'.\n this.eventBus().emit('product.cart.qty.decrement', quantityStepper, qtyBeforeUpdate - resp.numItems);\n }\n\n this.renderCartResponse(resp);\n this.accessibilityAlert(this.prefs().accessibilityAlerts.quantitychanged);\n\n return resp;\n })\n .catch((error) => {\n if (error.name === 'AbortError') {\n return Promise.resolve(null);\n }\n\n if (error && error.error && error.errorMessage) {\n this.render('errorTemplate', { message: error.errorMessage }, this.ref('errorMsgs'));\n } else {\n this.renderCartWithItemLevelActionError(uuid, error.message);\n }\n\n return Promise.resolve(null);\n })\n .finally(() => {\n this.hideProgressBar();\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'updateQtyRequests' does not exist on typ... Remove this comment to see the full error message\n const index = this.updateQtyRequests.indexOf(requestObject);\n\n if (index > -1) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'updateQtyRequests' does not exist on typ... Remove this comment to see the full error message\n this.updateQtyRequests.splice(index, 1);\n }\n });\n }\n\n /**\n * @description Aborts redundant update product quantity requests\n * @returns {void}\n */\n dismissQty() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'updateQtyRequests' does not exist on typ... Remove this comment to see the full error message\n this.updateQtyRequests.forEach((request) => {\n request.abortController.abort();\n });\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'updateQtyRequests' does not exist on typ... Remove this comment to see the full error message\n this.updateQtyRequests = [];\n }\n\n /**\n * @description Fires `alert.show` event to be handled with Global Alerting System\n * @param {string} accessibilityAlert - alert string\n * @emits \"alert.show\"\n * @returns {void}\n */\n accessibilityAlert(accessibilityAlert) {\n this.eventBus().emit('alert.show', {\n accessibilityAlert\n });\n }\n\n /**\n * @description Renders cart response from server.\n * Follows redirect URL in case if cart was not found on server\n * (request to update product/quantity etc)\n * @param {Cart} resp - server response\n * @returns {void}\n */\n renderCartResponse(resp) {\n if (resp && resp.error && resp.redirectUrl) {\n window.location.assign(resp.redirectUrl);\n } else {\n this.renderCart(resp);\n }\n }\n\n /**\n * @description Handler for \"Edit\" product button in a Cart\n * @param {refElement} editBtn - Target \"Edit\" button\n * @emits \"product.tile.qv.open.edit\"\n * @returns {void}\n */\n editProduct(editBtn) {\n this.showProgressBar();\n const uuid = editBtn.data('uuid');\n\n getContentByUrl(editBtn.data('href'), { uuid })\n .then((response) => {\n this.getById('editProductModal', (editProductModal: IModal) => editProductModal.showModal({\n body: response,\n attributes: {\n 'data-tau-unique': 'edit_product_dialog'\n }\n }));\n this.eventBus().emit('product.tile.qv.open.edit', editBtn);\n })\n .catch(error => {\n this.renderCartWithItemLevelActionError(uuid, error.message);\n })\n .finally(() => {\n this.hideProgressBar();\n });\n }\n\n /**\n * @description Handler for \"Remove\" product button in a Cart\n * Stores clicked button instance to property because of \"Remove Popup\" displaying and further interaction\n * @param {refElement|inputStepper} removeButton - Clicked \"Remove\" product button or qtyStepper if value was 0\n * @returns {void}\n */\n removeProduct(removeButton: RefElement | IInputStepper) {\n const InputStepper = /** @type {InputStepper} */ (this.getConstructor('InputStepper'));\n const url = removeButton.data('removeAction') || removeButton.data('action');\n const pid = removeButton.data('pid');\n const uuid = removeButton.data('uuid');\n const qtyStepperID = `quantityStepper-${uuid}`;\n let currentQuantityStepperValue = 1;\n let lineItemMinOrderQuantity = null;\n\n if (removeButton instanceof InputStepper) {\n currentQuantityStepperValue = parseInt(removeButton.getValue(), 10);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'lineItemMinOrderQuantity' does not exist... Remove this comment to see the full error message\n lineItemMinOrderQuantity = removeButton.prefs().lineItemMinOrderQuantity;\n } else {\n this.getById<IInputStepper>(qtyStepperID, (stepper) => {\n currentQuantityStepperValue = parseInt(stepper.getValue(), 10);\n });\n }\n\n this.removeButton = removeButton;\n this.getById<IConfirmDialog>('confirmDialog', (/** @type {confirmDialog} */ confirmDialog) => {\n confirmDialog.showModal({\n productName: removeButton.data('name'),\n attributes: {\n 'data-tau': this.prefs().tauAttrRemoveProductConfirmationPopUp,\n url: url,\n pid: pid,\n uuid: uuid,\n currentValue: currentQuantityStepperValue,\n minOrderQuantity: lineItemMinOrderQuantity\n }\n });\n });\n }\n\n /**\n * @description Executes when user clicks on product details link in the cart.\n * Usually used by analytics etc.\n * @emits \"cart.product.link.click\"\n * @param {refElement} link - clicked product tile link\n * @returns {void}\n */\n onProductLinkClick(link) {\n this.eventBus().emit('cart.product.link.click', link);\n }\n\n /**\n * @description Renders Cart with error message on Cart Item level.\n * Usually it may happens when in parallel tab user removed product from cart.\n * As far as we should display error on product, which was removed, thus we don't need\n * to update this exact item in a stored earlier cart object\n * @param {string} itemUUID - Product item identifier\n * @param {string} error - an error response from the server\n * @returns {void}\n */\n renderCartWithItemLevelActionError(itemUUID, error) {\n if (!this.cart) {\n return;\n }\n\n this.cart.items = this.cart.items.map(item => {\n const existingOldItem = this.cart && this.cart.items.find((cartItem) => cartItem.UUID === item.UUID);\n const returnItem = !existingOldItem ? item : existingOldItem;\n\n return {\n ...returnItem,\n actionErrorMessage: (itemUUID === item.UUID) ? error : ''\n };\n });\n\n this.cart.valid.error = true;\n\n this.renderCart(this.cart);\n }\n\n /**\n * @description A callback, which is executed, when customer agreed to remove product in confirmation popup\n * @param button - Button, pressed in confirmation modal\n * @param [movedToWishlist] - Indicates if product was moved to wishlist\n * @emits \"cart.remove.product\"\n * @returns Promise object represents server response for product deletion\n */\n confirmedRemoveProduct(button: IConfirmDialog, movedToWishlist = false) {\n const attributes = button.attributes;\n\n if (!attributes) {\n return Promise.resolve({ error: true });\n }\n\n const url = attributes.url;\n const pid = attributes.pid;\n const uuid = attributes.uuid;\n\n this.eventBus().emit('cart.remove.product', this);\n\n if (!movedToWishlist) {\n this.showProgressBar();\n }\n\n let removePromise = submitFormJson(url, {\n pid: pid,\n uuid: uuid\n }, 'POST')\n .then((response) => {\n if (response.error) {\n throw Error(<string> response.error);\n }\n\n this.confirmationRemoveCallback(response.basket, movedToWishlist);\n\n return response;\n });\n\n if (!movedToWishlist) {\n removePromise = removePromise\n .catch(error => {\n this.renderCartWithItemLevelActionError(uuid, error.message);\n\n return error;\n })\n .finally(() => {\n this.hideProgressBar();\n });\n }\n\n return removePromise;\n }\n\n /**\n * @description Handle cancel confirmDialog that was called due quantity stepper value is 0\n * Set quantity stepper value to 1 if confirmDialog cancel\n * @param confirmationDialog Target popup\n */\n cancelProductRemoving(confirmationDialog: IConfirmDialog) {\n const attributes = confirmationDialog && confirmationDialog.attributes;\n\n if (attributes\n && (attributes.currentValue === 0\n || attributes.currentValue < attributes.minOrderQuantity)) {\n const uuid = attributes.uuid;\n const minOrderQuantity = attributes.minOrderQuantity;\n const qtyStepperID = `quantityStepper-${uuid}`;\n\n this.getById<IInputStepper>(qtyStepperID, (stepper) => {\n stepper.setInputValue(stepper.filterInput(minOrderQuantity));\n });\n }\n }\n\n /**\n * @description Move product from cart to wishlist.\n * In fact this functionality implemented in 2 steps:\n * 1. Add product to wishlist\n * 2. Remove product from cart\n * This is done due to possible backend code duplication in one universal endpoint\n * @param confirmationDialog Target popup\n * @returns Promise object represents server response for product adding to wishlist\n */\n moveProductToWishlist(confirmationDialog: IConfirmDialog) {\n if (!confirmationDialog) {\n return Promise.resolve([{ error: true }]);\n }\n\n const removeButtonUUID = confirmationDialog.attributes.uuid;\n\n this.showProgressBar();\n\n return submitFormJson(this.prefs().actionUrls.moveProductToWishlist, {\n pid: confirmationDialog.attributes.pid,\n qty: confirmationDialog.attributes.currentValue\n }).then((response) => {\n if (response.error && !response.itemAlreadyExists) {\n throw Error(<string>response.error);\n }\n\n const removeFromCartPromise = this.confirmedRemoveProduct(confirmationDialog, true);\n\n return Promise.all([response, removeFromCartPromise]);\n }).catch((error: Error) => {\n this.renderCartWithItemLevelActionError(removeButtonUUID, <string> error.message);\n\n return [{ error }];\n }).finally(() => {\n this.hideProgressBar();\n });\n }\n\n /**\n * @description A callback, which is executed once `remove` product server call was performed\n * @param {Cart} cart - server response object\n * @param {boolean} [movedToWishlist] - Indicates if product was moved to wishlist\n * @returns {void}\n */\n confirmationRemoveCallback(cart, movedToWishlist = false) {\n this.renderCart(cart)\n .then(() => this.accessibilityAlert(movedToWishlist\n ? this.prefs().accessibilityAlerts.movedtowishlist\n : this.prefs().accessibilityAlerts.productremoved));\n }\n\n /**\n * @description Shows progress bar\n * @returns {void}\n */\n showProgressBar() {\n this.ref('cartContainer').attr('aria-busy', 'true');\n }\n\n /**\n * @description Hides progress bar\n * @returns {void}\n */\n hideProgressBar() {\n this.ref('cartContainer').attr('aria-busy', 'false');\n }\n\n /**\n * @description Handles `proceed to checkout` button click.\n *\n * In case of error - to not allow Customer to enter checkout flow and scroll to cart error message\n *\n * @param {refElement} btn - clicked button\n * @param {Event} event - target event\n * @emits \"cart.page.submitted\"\n * @returns {void}\n */\n proceedToCheckout(btn, event) {\n if (btn.data('error')) {\n event.preventDefault();\n this.scrollToError();\n } else {\n this.showProgressBar();\n }\n\n this.eventBus().emit('cart.page.submitted', this);\n }\n\n /**\n * @description Scrolls cart error messages into viewport\n * @returns {void}\n */\n scrollToError() {\n const cartErrorMessage = this.ref('errorMsgs').get();\n\n if (cartErrorMessage) {\n scrollWindowTo(cartErrorMessage);\n }\n }\n\n /**\n * @description Show cart error\n * @param widget - Widget that emit error\n * @param error - Error message string\n */\n showError(widget: TWidget, error: string) {\n if (!error || !this.cart) {\n return;\n }\n\n this.cart.pageError = error;\n\n this.renderCart(this.cart)\n .then(() => this.scrollToError());\n }\n }\n\n return CartMgr;\n}\n","import { submitFormJson, errorFallbackMessage } from 'widgets/toolbox/ajax';\nimport { scrollWindowTo, scrollToTop } from 'widgets/toolbox/scroll';\nimport { timeout } from 'widgets/toolbox/util';\n\n/**\n * @typedef {ReturnType<typeof import('widgets/global/Button').default>} Button\n */\n/**\n * @param BasicForm Base widget for extending\n * @returns Ajax Form class\n */\nexport default function (BasicForm: ReturnType<typeof import('widgets/forms/BasicForm').default>) {\n /**\n * @category widgets\n * @subcategory forms\n * @class AjaxForm\n * @augments BasicForm\n * @classdesc Represents AjaxForm component with next features:\n * 1. Allow submit and handle submit Form\n * 2. Allow handle server response\n * 3. Allow handle form errors (form level and field level) that comes from backend\n * AjaxForm widget should contain {@link Button} widgets that implement submit Form button.\n * Widget has next relationship:\n * * Handle Form submit using method {@link AjaxForm#handleSubmit} by event {@link Button#event:click} from {@link Button} widget.\n * @example <caption>Example of AjaxForm widget usage</caption>\n * <form\n * data-widget=\"ajaxform\"\n * data-event-submit.prevent=\"handleSubmit\" novalidate\n * action=\"${URLUtils.url('Account-SavePassword')}\" method=\"POST\n * >\n * <div class=\"alert alert-danger\" hidden=\"hidden\" data-ref=\"errorMessageLabel\"></div>\n * ... form fields\n * <input type=\"hidden\" name=\"${pdict.csrf.tokenName}\" value=\"${pdict.csrf.token}\"/>\n * <div>\n * <button\n * type=\"submit\"\n * name=\"save\"\n * data-widget=\"button\"\n * data-widget-event-click=\"handleSubmit\"\n * data-event-click.prevent=\"handleClick\"\n * data-id=\"submitButton\"\n * >\n * ${Resource.msg('button.save','account',null)}\n * </button>\n * </div>\n * </form>\n * @property {string} data-widget - Widget name `ajaxform`\n * @property {string} data-event-submit - Event listener for form submission\n */\n class AjaxForm extends BasicForm {\n /**\n * @description Handles submit Form\n * @returns {Promise<object|null>} Promise object represents server response for shipping methods updating\n */\n handleSubmit() {\n // @ts-expect-error ts-migrate(2554) FIXME: Expected 1 arguments, but got 0.\n if (this.isChildrenValid() && !this.submitting) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'submitting' does not exist on type 'Ajax... Remove this comment to see the full error message\n this.submitting = true;\n this.showProgressBar();\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'busy' does not exist on type 'Widget'.\n this.getById(this.prefs().submitButton, submitButton => submitButton.busy());\n this.ref(this.prefs().errorMessageLabel).hide();\n\n return submitFormJson(\n\n // @ts-expect-error ts-migrate(2345) FIXME: Argument of type 'string | RefElement' is not assi... Remove this comment to see the full error message\n this.getFormUrl(),\n this.getFormFields(),\n this.ref('self').attr('method') === 'GET' ? 'GET' : 'POST'\n )\n .then((response) => {\n this.onSubmitted(response);\n\n return response;\n })\n .catch(this.onError.bind(this))\n .finally(this.afterSubmission.bind(this));\n }\n\n return Promise.resolve(null);\n }\n\n /**\n * @description Handles server response\n * @emits AjaxForm#submit\n * @param {object} data Server JSON response once form submitted\n * @param {string} [data.success] - If form submission was success\n * @param {string} [data.redirectUrl] - if not empty - redirect to specified location should be executed\n * @param {boolean|string|string[]} [data.error] - error messages/message from server\n * @param {object[]} [data.fields] - form fields with errors\n * @returns {void}\n */\n onSubmitted(data) {\n if (data.success && data.redirectUrl) {\n window.location.assign(data.redirectUrl);\n } else if (data.error) {\n if (data.redirectUrl) {\n window.location.assign(data.redirectUrl);\n } else {\n this.setError(Array.isArray(data.error) ? data.error.join('<br/>') : data.error);\n }\n } else if (data.fields) {\n Object.entries(data.fields).forEach(([name, errorMsg]) => {\n this.getById(name, (input) => {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'setError' does not exist on type 'Widget... Remove this comment to see the full error message\n input.setError(errorMsg);\n });\n });\n } else {\n timeout(() => {\n /**\n * @description Event to submit AjaxForm\n * @event AjaxForm#submit\n */\n this.emit('submit', data);\n });\n }\n }\n\n /**\n * @description Handles an error, which happens during request (for ex. 500 response)\n * @param {Error} e - error, which happened during request\n * @returns {void}\n */\n onError(e) {\n this.setError(e.message || errorFallbackMessage);\n const errorElement = this.ref(this.prefs().errorMessageLabel).get();\n\n if (errorElement) {\n scrollWindowTo(errorElement, true);\n } else {\n scrollToTop();\n }\n }\n\n /**\n * @description Changes Form state after submission\n * @returns {void}\n */\n afterSubmission() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'unbusy' does not exist on type 'Widget'.\n this.getById(this.prefs().submitButton, submitButton => submitButton.unbusy());\n this.hideProgressBar();\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'submitting' does not exist on type 'Ajax... Remove this comment to see the full error message\n this.submitting = false;\n }\n\n /**\n * @description Set Form or Form fields errors\n * @param {string} msg - Generic error message, if no custom message - show generic one\n * @param {boolean} [scrollToError] - defines using of scroll to error\n * @param {string} refElem - RefElement id\n * @returns {void}\n */\n setError(msg, scrollToError = true, refElem = 'errorMessageLabel') {\n const errorMessageLabel = this.ref(refElem)\n .setText(msg || '')\n .show();\n\n if (!scrollToError) {\n return;\n }\n\n const element = errorMessageLabel.get();\n\n if (element) {\n scrollWindowTo(element, true);\n } else {\n scrollToTop();\n }\n }\n }\n\n return AjaxForm;\n}\n","/**\n * @typedef {InstanceType<ReturnType<typeof import('widgets/forms/AjaxForm').default>>} ajaxForm\n */\n\n/**\n * @param {Modal} Modal Base widget for extending\n * @returns {typeof AjaxFormResponseContainer} AjaxFormResponseContainer widget\n */\nexport default function (Modal: ReturnType<typeof import('widgets/global/Modal').default>) {\n /**\n * @category widgets\n * @subcategory forms\n * @class AjaxFormResponseContainer\n * @augments Modal\n * @classdesc Represents AjaxFormResponseContainer component with next features:\n * 1. Used to rerender part of page after success response from server using mustache template\n *\n * Widget has next relationship:\n * * Rerender part of the page using method {@link AjaxFormResponseContainer#onSuccessSubmit} by event {@link AjaxForm#event:submit} from {@link AjaxForm} widget.\n * @property {string} data-widget - Widget name `AjaxFormResponseContainer`\n * @example <caption>Example of AjaxFormResponseContainer widget usage</caption>\n * <div\n * class=\"l-account m-small m-top_margin b-account\"\n * data-widget=\"ajaxFormResponseContainer\"\n * >\n * <div\n * class=\"b-form-message b-message m-error\"\n * role=\"alert\"\n * >\n * ${Resource.msg('passwordReset.warning', 'login', null)}\n * </div>\n\n * <div\n * class=\"b-form-message b-message m-error\"\n * hidden=\"hidden\"\n * data-ref=\"errorMessageLabel\"\n * role=\"alert\"\n * ></div>\n\n * <h1 class=\"b-account-title m-top_margin\">\n * ${Resource.msg('passwordReset.title', 'login', null)}\n * </h1>\n\n * <form\n * class=\"b-form m-reset_password\"\n * action=\"${URLUtils.url('Account-PasswordResetDialogForm', 'mobile', pdict.mobile)}\"\n * method=\"POST\"\n * data-widget=\"ajaxform\"\n * data-event-submit.prevent=\"handleSubmit\"\n * data-widget-event-submit=\"onSuccessSubmit\"\n * name=\"email-form\"\n * id=\"email-form\"\n * >\n * form content....\n * <div class=\"b-form_section\">\n * <button\n * type=\"submit\"\n * class=\"b-button m-width_full\"\n * data-widget=\"button\"\n * data-widget-event-click=\"handleSubmit\"\n * data-event-click.prevent=\"handleClick\"\n * data-id=\"submitButton\"\n * >\n * ${Resource.msg('form.passwordReset.submit','forms',null)}\n * </button>\n * </div>\n * </form>\n * <script type=\"template/mustache\" data-ref=\"template\">\n * <div\n * class=\"l-account m-small m-top_margin b-account\"\n * data-widget=\"ajaxFormResponseContainer\"\n * >\n * <h1 class=\"b-account-title\">\n * {{receivedMsgHeading}}\n * </h1>\n * <p>{{receivedMsgBody}}</p>\n * </div>\n * </script>\n * </div>\n */\n class AjaxFormResponseContainer extends Modal {\n /**\n * @description Get response from server and render it\n * @listens AjaxForm#submit\n * @param {ajaxForm} _form - ajaxForm Widget\n * @param {object} data - response form server\n * @returns {Promise<void>} Promise object represents submission response rendering result\n */\n onSuccessSubmit(_form, data) {\n return this.render(undefined, data);\n }\n }\n\n return AjaxFormResponseContainer;\n}\n","import { timeout } from '../toolbox/util';\nimport { getJSONByUrl } from 'widgets/toolbox/ajax';\nimport { TWidget } from 'widgets/Widget';\n/**\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} refElement\n * @typedef {ReturnType<typeof import('widgets/global/Button').default>} Button\n * @typedef {} BasicInput\n */\n\ntype TBasicInput = ReturnType<typeof import('widgets/forms/BasicInput').default>;\ntype basicInputInstance = InstanceType<TBasicInput>;\n\n/**\n * @param Widget base widget class\n * @returns Basic Form class\n */\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory forms\n * @class BasicForm\n * @augments Widget\n * @classdesc Represents BasicForm component with next features:\n * 1. Allow show/hide Form progress bar\n * 2. Allow get submit button name, Form fields, Form action url\n * 3. Allow submit and handle submit Form\n * 4. Allow set value to Form fields\n * 5. Allow validate Form and Form fields\n * 6. Allow updates Form html body by sending an AJAX request to server with params object\n * BasicForm widget should contain {@link Button} widgets that implement submit Form button.\n * Widget has next relationship:\n * * Handle Form submit using method {@link BasicForm#handleSubmit} by event {@link Button#event:click} from {@link Button} widget.\n * @example <caption>Example of BasicForm widget usage</caption>\n * <form\n * action=\"${URLUtils.url('Order-Track')}\"\n * method=\"GET\"\n * data-widget=\"form\"\n * data-event-submit=\"handleSubmit\"\n * >\n * ... form contents\n * <button\n data-widget=\"button\"\n type=\"submit\"\n data-widget-event-click=\"handleSubmit\"\n data-event-click.prevent=\"handleClick\"\n >\n ...Button name\n </button>\n * </form>\n * @property {string} data-widget - Widget name `form`\n * @property {string} data-event-submit - Event listener for form submission\n */\n class BasicForm extends Widget {\n prefs() {\n return {\n submitEmpty: true,\n emptyFormErrorMsg: '',\n submitButton: 'submitButton',\n errorMessageLabel: 'errorMessageLabel',\n SUBMITTING_TIMEOUT: 5000,\n formDefinitionUrl: '',\n ...super.prefs()\n };\n }\n\n /**\n * @description Set aria-busy attribute value true\n * @returns {void}\n */\n showProgressBar() {\n this.ref('self').attr('aria-busy', 'true');\n }\n\n /**\n * @description Set aria-busy attribute value false\n * @returns {void}\n */\n hideProgressBar() {\n this.ref('self').attr('aria-busy', 'false');\n }\n\n /**\n * @description Get submit button name\n * @returns {string|null|undefined} Submit button name\n */\n getSubmitButtonName() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'submitButtonName' does not exist on type... Remove this comment to see the full error message\n return this.submitButtonName;\n }\n\n /**\n * @description Initialize widget logic\n * @returns {void}\n */\n init() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'submitButtonName' does not exist on type... Remove this comment to see the full error message\n this.submitButtonName = null;\n super.init();\n /**\n * Below code is needed to initiate correct comparison configuration for certain fields\n * It iterates through all BasicInput children and if it finds the compare data in validation -\n * it will set necessary data to a proper child BasicInput widget\n */\n const BasicInput: TBasicInput = <TBasicInput> this.getConstructor('basicInput');\n\n this.eachChild(widget => {\n if (widget instanceof BasicInput) {\n const widgetValidation = widget.prefs().validationConfig || {};\n\n if (!Array.isArray(widgetValidation.compareWith)) { return; }\n\n widgetValidation.compareWith.forEach((compareFieldItem, index) => {\n this.getById(compareFieldItem.field, targetWidget => {\n if (targetWidget.length) {\n const compareOptions = {\n field: compareFieldItem.field,\n msg: widgetValidation.errors.compareWith[index] || '',\n equality: compareFieldItem.equality\n };\n\n widget.data('setMatchCmp', targetWidget, compareOptions);\n }\n });\n });\n }\n });\n }\n\n /**\n * @description Save submit button\n * @param {HTMLInputElement} el submit button element\n * @returns {void}\n */\n saveSubmitButton(el) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'submitButtonName' does not exist on type... Remove this comment to see the full error message\n this.submitButtonName = el.name;\n }\n\n /**\n * @description Submit Form\n * @returns {void}\n */\n submit() {\n /**\n * @type {HTMLElement|undefined}\n */\n const elem = this.ref(this.prefs().submitButton).get();\n\n if (elem) {\n elem.click();\n }\n }\n\n /**\n * @description Handle submit Form\n * @emits BasicForm#submit\n * @param {refElement} _el event source element\n * @param {(Event|undefined)} event event instance if DOM event\n * @returns {void}\n */\n handleSubmit(_el, event) {\n this.clearError();\n\n // @ts-expect-error ts-migrate(2554) FIXME: Expected 1 arguments, but got 0.\n const valid = this.isChildrenValid();\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'submitting' does not exist on type 'Basi... Remove this comment to see the full error message\n if ((!valid || this.submitting) && (event && event instanceof Event)) {\n event.preventDefault();\n\n return;\n }\n\n this.ref(this.prefs().submitButton).disable();\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'submitting' does not exist on type 'Basi... Remove this comment to see the full error message\n this.submitting = true;\n this.onDestroy(timeout(() => {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'submitting' does not exist on type 'Basi... Remove this comment to see the full error message\n this.submitting = false;\n }, this.prefs().SUBMITTING_TIMEOUT));\n this.emit('submit');\n }\n\n /**\n * @description Get Form fields\n * @returns {object} Object contains form fields\n */\n getFormFields() {\n /**\n * @type {{[x: string]: string}}\n */\n const fields = {};\n const BasicInput = <TBasicInput> this.getConstructor('basicInput');\n\n this.eachChild(widget => {\n if (widget instanceof BasicInput && !(widget.skipSubmission && widget.skipSubmission())) {\n const name = widget.getName && widget.getName();\n\n if (name) {\n fields[name.toString()] = widget.getValue();\n }\n }\n });\n\n return fields;\n }\n\n /**\n * @description Sets related fields values, can be executed silently, without triggering `change` event\n * @param {object} formFields - Structured object with name: value pairs for input fields\n * @param {(boolean|undefined)} [silently] - if set to `true` - input should not be validated against a new value\n * @returns {void}\n */\n setFormFields(formFields, silently = false) {\n const BasicInput = <TBasicInput> this.getConstructor('basicInput');\n\n this.eachChild(widget => {\n if (widget instanceof BasicInput) {\n const name = widget.getName && widget.getName();\n\n widget.setValue(formFields[name], silently);\n }\n });\n }\n\n /**\n * @description Check is Form fields valid\n * @param {Function} [cb] callback called if child inputs are valid\n * @returns {boolean} - boolean value is Form input valid\n */\n isChildrenValid(cb) {\n let valid = true;\n const BasicInput = <TBasicInput> this.getConstructor('basicInput');\n\n this.eachChild(item => {\n if (item instanceof BasicInput && typeof item.validate === 'function' && !item.validate()) {\n if (valid && item.setFocus) {\n item.setFocus();\n }\n\n valid = false;\n }\n });\n\n if (valid && typeof cb === 'function') {\n cb();\n }\n\n if (!this.prefs().submitEmpty) {\n const fieldsValues = this.getFormFields();\n\n if (Object.keys(fieldsValues).every((key) => !fieldsValues[key])) {\n valid = false;\n this.ref(this.prefs().errorMessageLabel)\n .setText(this.prefs().emptyFormErrorMsg);\n this.ref(this.prefs().errorMessageLabel).show();\n }\n }\n\n return valid;\n }\n\n /**\n * @description Form validate\n * @returns {boolean} boolean value is Form input valid\n */\n validate() {\n // @ts-expect-error ts-migrate(2554) FIXME: Expected 1 arguments, but got 0.\n return this.isChildrenValid();\n }\n\n /**\n * @description Check is Form valid based on Form fields validation\n * @returns {boolean} boolean value is Form valid\n */\n isValid() {\n const BasicInput = this.getConstructor('basicInput');\n let valid = true;\n\n this.eachChild<basicInputInstance, boolean>((itemComponent) => {\n if (itemComponent instanceof BasicInput\n && typeof itemComponent.isValid === 'function'\n && !itemComponent.isValid()\n ) {\n valid = false;\n\n return false;\n }\n\n return true;\n });\n\n return valid;\n }\n\n /**\n * @description Interface that can be override\n */\n setFocus(): void {\n throw Error('setFocus method not implemented');\n }\n\n /**\n * @description Get Form action url\n * @returns {string} form action url\n */\n getFormUrl() {\n return this.ref('self').attr('action');\n }\n\n /**\n * @description Clear Form Error\n * @param {string} refID RefElement ID\n * @returns {void}\n */\n clearError(refID = 'errorMessageLabel') {\n this.ref(refID)\n .hide()\n .setText('');\n }\n\n /**\n * @description Updates form html body by sending an AJAX request to server with params object\n * <br>(possible param key is `countryCode`)\n * <br>Obtained template injected instead of old fields\n * <br>Data, entered in fields previosly will be restored\n * @param {object} params - request parameters\n * @param {string} params.countryCode - A country code to get country-specific form\n * @returns {Promise<boolean>} - Promise object represents rendering result\n */\n updateFormData(params) {\n const formDefinitionUrl = this.prefs().formDefinitionUrl;\n\n if (formDefinitionUrl && params) {\n return new Promise((resolve, reject) => {\n getJSONByUrl(formDefinitionUrl, params, true).then((response) => {\n if (response.formDefinition) {\n const formFields = this.getFormFields();\n\n this.render('', {}, this.ref('fieldset'), <string> response.formDefinition).then(() => {\n this.setFormFields(formFields, true);\n resolve(true);\n setTimeout(() => this.formDataUpdated(), 0);\n }).catch(() => {\n reject(new Error('Form definition rendering error'));\n });\n } else {\n reject(new Error('Form definition is empty'));\n }\n });\n });\n }\n\n return new Promise((resolve) => {\n resolve(true);\n this.formDataUpdated();\n });\n }\n\n /**\n * @description Template method called once form definitions were reloaded\n * @returns {void}\n */\n formDataUpdated() {\n\n }\n }\n\n return BasicForm;\n}\n","import { IRefElement } from 'widgets/toolbox/RefElement';\nimport { scrollIntoView } from 'widgets/toolbox/scroll';\nimport { get } from 'widgets/toolbox/util';\nimport { TWidget } from 'widgets/Widget';\n\nexport type TValidationConfig = {\n mandatory: boolean,\n minLength: number,\n maxLength: number,\n errors: Record<string, string>;\n patterns: Record<string, string>,\n compareWith: string,\n validOptions: Array<{ value: string; label: string; }>\n};\n\nexport type TCompareWithObj = {\n widgetToMatchOpts: {\n field?: string;\n msg?: string;\n equality?: string;\n };\n widgetToMatch: InstanceType<TWidget>;\n}\n\n/**\n * @description Base BasicInput implementation\n * @param Widget Base widget for extending\n * @returns Basic Input class\n */\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory forms\n * @class BasicInput\n * @augments Widget\n * @classdesc Basic Input Widget (like abstract ancestor), contains basic validation and input management logic.\n * Supposes valid unified input markup. Contains also error messaging.\n * Usually is not used directly, and relevant subclasses should be used.\n * @property {boolean} data-skip-validation - if input needs to skip validation\n * @property {string} data-classes-error-state - classes for input's error state\n * @property {string} data-classes-valid-state - classes for input's valid state\n * @property {string} data-classes-disabled - classes for disabled input\n * @property {string} data-classes-locked - classes for locked input (disabled + readonly)\n * @property {string} data-classes-wrapper-error-state - classes for input wrapper, when input in error state\n * @property {string} data-classes-wrapper-valid-state - classes for input wrapper, when input in valid state\n * @property {object} data-validation-config - validation rules and error messages for input\n */\n class BasicInput extends Widget {\n initValue = '';\n\n widgetsToMatch: Array<TCompareWithObj> | undefined\n\n error = '';\n\n disabled = false;\n\n locked = false;\n\n prefs() {\n return {\n skipValidation: false,\n classesErrorState: 'm-invalid',\n classesValidState: 'm-valid',\n classesDisabled: 'm-disabled',\n classesLocked: 'm-locked',\n classesWrapperErrorState: 'm-invalid',\n classesWrapperValidState: 'm-valid',\n validationConfig: <TValidationConfig> {},\n ...super.prefs()\n };\n }\n\n init() {\n this.initValue = this.getValue();\n\n if (!this.id && this.ref('field').attr('name')) {\n this.id = <string> this.ref('field').attr('name');\n }\n\n this.disabled = this.ref('field').attr('disabled') === 'disabled';\n this.widgetsToMatch = [];\n }\n\n /**\n * @description Get input value\n * @returns - return input name\n */\n getValue(): string {\n return <string>(this.ref('field').val());\n }\n\n /**\n * @description Get input name\n * @returns - return input name\n */\n getName(): string {\n return <string> this.ref('field').attr('name');\n }\n\n /**\n * @description Set focus to input\n */\n focus(): void {\n const field = this.ref('field').get();\n\n if (field) {\n field.focus();\n }\n }\n\n /**\n * @description Set focus to input and scroll element into viewport\n */\n setFocus(): void {\n const elementToScroll = this.ref('self').get();\n\n if (elementToScroll) {\n scrollIntoView(elementToScroll);\n }\n\n this.focus();\n }\n\n /**\n * @description Blur (unfocus) an input\n */\n blur(): void {\n const field = this.ref('field').get();\n\n if (field) {\n field.blur();\n }\n }\n\n /**\n * @description Set input value\n * \"checkRanges\" method needs to validate min\\max length after changing input value by JS\n * https://stackoverflow.com/questions/53226031/html-input-validity-not-checked-when-value-is-changed-by-javascript\n * @param [newVal] - set this value to input\n * @param [silently] - if set to `true` - input\n * should not be validated against a new value and no events should be fired\n */\n setValue(newVal: (string | number | undefined) = '', silently: (boolean | undefined) = false): void {\n const refField = this.ref('field');\n\n refField.val(String(newVal));\n this.checkRanges(refField);\n\n if (!silently) {\n this.update();\n }\n }\n\n /**\n * @description Check min/max length when value is being set and if it out of boundaries, set custom validity.\n * After setting value via code, a min/max length rule does not work until the value is changed by user.\n * @param refField - Field ref object\n * */\n checkRanges(refField: IRefElement): void {\n const value: string = <string>(refField.val());\n const field = refField.get();\n const rangesError = this.getRangesError(value);\n\n if (field instanceof HTMLInputElement) {\n field.setCustomValidity(rangesError);\n }\n }\n\n /**\n * @description Check ranges and return appropriate error message or empty string\n * @param val - Value that is being set\n * @returns Ranges error message or empty string\n */\n getRangesError(val: string): string {\n if (!val) {\n return '';\n }\n\n const refField = this.ref('field');\n const field = refField.get();\n\n if (field instanceof HTMLInputElement) {\n const validationConfig = this.prefs().validationConfig;\n const valueLength = String(val).length;\n\n if (field.minLength && valueLength && valueLength < field.minLength) {\n return get(validationConfig, 'errors.minLength', '');\n } else if (field.maxLength && valueLength > field.maxLength) {\n return get(validationConfig, 'errors.maxLength', '');\n }\n }\n\n return '';\n }\n\n /**\n * @description Updates custom validity state\n */\n updateCustomValidityState(): void {\n const field = this.ref('field');\n const validity = field.getValidity();\n\n if (validity && validity.state.customError) {\n this.checkRanges(field);\n }\n }\n\n /**\n * @description Validate input and trigger `change` event\n * @emits BasicInput#change\n */\n update(): void {\n this.validate();\n /**\n * @description Event, indicates input value was changed\n * @event BasicInput#change\n */\n this.emit('change', this);\n }\n\n /**\n * @description Clears input error\n * @emits BasicInput#inputstatechanged\n */\n clearError(): void {\n this.ref('field').removeClass(this.prefs().classesErrorState);\n this.ref('field').removeClass(this.prefs().classesValidState);\n this.ref('self').removeClass(this.prefs().classesWrapperErrorState);\n this.ref('self').removeClass(this.prefs().classesWrapperValidState);\n this.ref('errorFeedback').hide();\n /**\n * @description Event, indicates input state was changed\n * @event BasicInput#inputstatechanged\n */\n this.emit('inputstatechanged', this);\n }\n\n /**\n * @description Set/unset error state into input (message and classes)\n * @param [error] error message - if defined, will set error state, and valid state - otherwise\n * @emits BasicInput#inputstatechanged\n */\n setError(error: string): void {\n if (error) {\n this.ref('field').removeClass(this.prefs().classesValidState);\n this.ref('self').removeClass(this.prefs().classesWrapperValidState);\n this.ref('field').addClass(this.prefs().classesErrorState);\n this.ref('self').addClass(this.prefs().classesWrapperErrorState);\n this.ref('errorFeedback').setText(error).show();\n } else {\n this.ref('field').removeClass(this.prefs().classesErrorState);\n this.ref('self').removeClass(this.prefs().classesWrapperErrorState);\n this.ref('field').addClass(this.prefs().classesValidState);\n this.ref('self').addClass(this.prefs().classesWrapperValidState);\n this.ref('errorFeedback').hide();\n }\n\n this.emit('inputstatechanged', this, error);\n }\n\n /**\n * @description Indicates, that input value is (is not) valid against HTML5 native constraints (input patterns, min/max etc).\n * Also cares about case, when some field value should match another field value.\n * Sets error message in case of input is not valid. Message is taken from JSON `validationConfig` data-attribute\n * @returns is input valid or not\n */\n isValid(): boolean {\n const field = this.ref('field');\n const value = this.getValue();\n\n this.updateCustomValidityState();\n\n // eslint-disable-next-line prefer-const\n let { state, msg } = field.getValidity()\n || { msg: '', state: ({ valid: true } as ValidityState) };\n let valid = state.valid;\n\n const validationStateMsg = this.getValidationStateMsg(state);\n\n if (validationStateMsg) {\n msg = validationStateMsg;\n }\n\n if (valid) {\n const matchingResult = this.checkMatching();\n\n msg = matchingResult.msg;\n valid = matchingResult.valid;\n }\n\n // Added for cases when autocomplete ignores standard length validation\n if (valid && value) {\n msg = this.getRangesError(value);\n valid = !msg;\n }\n\n if (valid && value) {\n const patternsCheckingResult = this.checkPatterns();\n\n msg = patternsCheckingResult.msg;\n valid = patternsCheckingResult.valid;\n }\n\n this.error = msg;\n\n return valid;\n }\n\n /**\n * @description Get message by state validity\n * @param state Validity state\n */\n getValidationStateMsg(state: ValidityState) : string {\n const validation = this.prefs().validationConfig;\n\n if ((state.patternMismatch || state.typeMismatch)) {\n return validation.errors.parse || validation.errors.security;\n } else if ((state.rangeOverflow || state.rangeUnderflow || state.tooLong || state.tooShort)) {\n if (state.rangeOverflow || state.tooLong) {\n return validation.errors.maxLength;\n } else if (state.rangeUnderflow || state.tooShort) {\n return validation.errors.minLength;\n }\n } else if (state.valueMissing) {\n return validation.errors.required;\n }\n\n return '';\n }\n\n /**\n * @description Check that field`s value match to an other field`s value\n * @returns Result object\n */\n checkMatching() {\n const result = {\n valid: true,\n msg: ''\n };\n\n if (this.widgetsToMatch && this.widgetsToMatch.length) {\n const invalidWidget = this.getInvalidCompareWithWidget();\n\n if (invalidWidget) {\n result.msg = invalidWidget.widgetToMatchOpts.msg || '';\n result.valid = false;\n }\n }\n\n return result;\n }\n\n /**\n * @description Check field patterns\n * @returns {object} Result object\n */\n checkPatterns() {\n const fieldValue = this.getValue();\n const validation = this.prefs().validationConfig;\n const result = {\n valid: true,\n msg: ''\n };\n\n if (validation.patterns) {\n const patternNames = Object.keys(validation.patterns);\n\n for (let index = 0; index < patternNames.length; index++) {\n const patternName = patternNames[index];\n const pattern = validation.patterns[patternName];\n const patternRegExp = new RegExp(pattern);\n\n if (!patternRegExp.test(fieldValue)) {\n result.msg = validation.errors[patternName];\n result.valid = false;\n }\n }\n }\n\n return result;\n }\n\n /**\n * @description Triggers input validation process\n * @returns {boolean} input validation result\n */\n validate(): boolean {\n if (!this.shown || this.disabled || this.prefs().skipValidation) {\n return true;\n }\n\n const valid = this.isValid();\n\n if (valid) {\n // @ts-expect-error ts-migrate(2554) FIXME: Expected 1 arguments, but got 0.\n this.setError();\n } else {\n this.setError(this.error);\n }\n\n return valid;\n }\n\n /**\n * @description Disables an input\n * @returns {this} `this` instance for chaining\n */\n disable(): this {\n this.disabled = true;\n this.ref('field').disable();\n this.ref('self').addClass(this.prefs().classesDisabled);\n\n return this;\n }\n\n /**\n * @description Enables an input\n * @returns {this} `this` instance for chaining\n */\n enable(): this {\n this.disabled = false;\n this.ref('field').enable();\n this.ref('self').removeClass(this.prefs().classesDisabled);\n\n return this;\n }\n\n /**\n * @description Locks an input (adds `readonly` attribute)\n * @returns {void}\n */\n lock(): void {\n this.locked = true;\n this.ref('field').attr('readonly', true);\n this.ref('self').addClass(this.prefs().classesLocked);\n }\n\n /**\n * @description Unlocks an input (removes `readonly` attribute)\n * @returns {void}\n */\n unlock(): void {\n this.locked = false;\n this.ref('field').attr('readonly', false);\n this.ref('self').removeClass(this.prefs().classesLocked);\n }\n\n /**\n * @description Checks if input is disabled\n * @returns {boolean} result\n */\n isDisabled(): boolean {\n return !!this.disabled;\n }\n\n /**\n * @description Saves on widget level target widget for comparison validation to use it further in `isValid` method\n * @param widgetToMatch cmp\n * @param options to compare\n */\n setMatchCmp(widgetToMatch: BasicInput, options: {\n [x: string]: string | undefined;\n } = {}): void {\n if (this.widgetsToMatch) {\n this.widgetsToMatch.push({\n widgetToMatch: widgetToMatch,\n widgetToMatchOpts: options\n });\n }\n }\n\n /**\n * @description To be either included or not into the form submission to server.\n * @returns result\n */\n skipSubmission(): boolean {\n return false;\n }\n\n /**\n * @description Get invalid widget according to compareWith validation rules\n */\n getInvalidCompareWithWidget(): TCompareWithObj | null {\n if (this.widgetsToMatch) {\n return this.widgetsToMatch.find(widget => {\n const equality = widget.widgetToMatchOpts.equality;\n const matchValue = widget.widgetToMatch.data('getValue');\n\n return (equality && matchValue !== this.getValue())\n || (!equality && matchValue === this.getValue());\n }) || null;\n }\n\n return null;\n }\n }\n\n return BasicInput;\n}\n","import { clickOutside } from 'widgets/toolbox/util';\nconst KEY_DOWN = 40;\nconst KEY_UP = 38;\nconst KEY_ESCAPE = 27;\nconst KEY_RETURN = 13;\nconst KEY_TAB = 9;\nconst ACTIVE_DESCENDANT = 'aria-activedescendant';\n\n/**\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} refElement\n */\n\n/**\n * @description Base Combobox implementation\n * @param BasicInput Base widget for extending\n * @returns Combobox class\n */\nexport default function (BasicInput: ReturnType<typeof import('widgets/forms/BasicInput').default>) {\n /*\n * This content is based on w3.org design pattern examples and licensed according to the\n * W3C Software License at\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * Please see specification:\n * https://www.w3.org/TR/wai-aria-practices/#combobox\n */\n /**\n * @category widgets\n * @subcategory forms\n * @class Combobox\n * @augments BasicInput\n * @classdesc Combobox implementation in accordance with accessibility statements.\n * Class could be extended to implement any provider-specific remote/local data fetching for Combobox inner elements.\n * It is needed to implement `getSuggestions` method in a way, that is specific for subclasses\n * Supports keyboard navigation among Combobox items.\n * As far as Combobox could be used only in a subclasses, example, given below, is related to known subclass `searchBox`\n * @property {string} data-widget - Widget name `searchBox`\n * @property {string} data-url - URL to obtain serach suggestions from server based on customer's input\n * @property {boolean} data-close-on-tab - If true - `tab` keypress will close listbox\n * @property {string} data-widget-event-closesearch - An event, fired when `close` element was pressed\n * @property {string} data-event-keydown - event handler for `keydown` event\n * @property {boolean} data-close-from-outside - config, which shows, if combobox should be closed when click outside\n * @property {number} data-min-chars - minimum characters to trigger show combobox\n * @property {number} data-max-chars - maximum characters to enter\n * @property {number} data-updating-delay - update listbox delay\n * @property {string} data-classes-focused-item - class for currently focused item\n * @property {string} data-classes-active-list-box - active listbox class\n * @example\n * // use this code to display minicart widget\n * <div\n * data-widget=\"searchBox\"\n * data-url=\"${URLUtils.url('SearchServices-GetSuggestions')}\"\n * data-close-on-tab=\"true\"\n * >\n * <form>\n * ... serach input\n * </form>\n * ...\n * <div data-ref=\"listbox\" data-event-mouseenter=\"markHover\" data-event-mouseleave=\"unMarkHover\">\n * <div role=\"none\" class=\"b-suggestions-inner\" data-ref=\"listboxInner\"></div>\n * </div>\n * <script data-ref=\"template\" type=\"template/mustache\">\n * <div data-ref=\"listboxInner\">\n * ... search suggestions\n * </div>\n * </script>\n * </div>\n */\n class Combobox extends BasicInput {\n constructor(el, config) {\n super(el, config);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'lastSearchedTerm' does not exist on type... Remove this comment to see the full error message\n this.lastSearchedTerm = '';\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'selectedIndex' does not exist on type 'C... Remove this comment to see the full error message\n this.selectedIndex = -1;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'resultsCount' does not exist on type 'Co... Remove this comment to see the full error message\n this.resultsCount = 0;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isListboxOpen' does not exist on type 'C... Remove this comment to see the full error message\n this.isListboxOpen = false;\n }\n\n prefs() {\n return {\n minChars: 3,\n maxChars: 50,\n updatingDelay: 300,\n closeFromOutside: true,\n closeOnTab: true,\n classesFocusedItem: 'm-focused',\n classesActiveListBox: 'm-active',\n ...super.prefs()\n };\n }\n\n /**\n * @description Handles customer input\n * @returns {void}\n */\n handleInput() {\n const inputLength = this.ref('field').prop('value').length;\n\n if (inputLength >= this.prefs().minChars && inputLength <= this.prefs().maxChars) {\n this.updateListbox();\n } else {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'timeout' does not exist on type 'Combobo... Remove this comment to see the full error message\n if (this.timeout) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'timeout' does not exist on type 'Combobo... Remove this comment to see the full error message\n clearTimeout(this.timeout);\n }\n\n this.closeListbox();\n }\n }\n\n /**\n * @description Marks element as hover, once mouse over\n * @listens dom#mouseenter\n * @returns {void}\n */\n markHover() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'hasHoverWithin' does not exist on type '... Remove this comment to see the full error message\n this.hasHoverWithin = true;\n }\n\n /**\n * @description Un-mark element as hover, once mouse out\n * @listens dom#mouseleave\n * @returns {void}\n */\n unMarkHover() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'hasHoverWithin' does not exist on type '... Remove this comment to see the full error message\n this.hasHoverWithin = false;\n }\n\n /**\n * @description Handles `focus` on combobox input\n * @listens dom#focus\n * @returns {void}\n */\n handleFocus() {\n this.updateListbox();\n }\n\n /**\n * @description Handles `blur` on combobox input\n * @listens dom#blur\n * @returns {void}\n */\n handleBlur() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'hasHoverWithin' does not exist on type '... Remove this comment to see the full error message\n if (this.hasHoverWithin || this.selectedIndex < 0) {\n return;\n }\n\n this.closeListbox();\n }\n\n /**\n * @description Handles `keydown` on combobox input\n * @param {HTMLElement} _ - source of keydown event\n * @param {KeyboardEvent} event - keydown event object\n * @listens dom#keydown\n * @returns {void}\n */\n handleKeydown(_, event) {\n let preventEventActions = false;\n\n switch (event.keyCode) {\n case KEY_ESCAPE:\n this.closeListbox();\n preventEventActions = true;\n break;\n case KEY_UP:\n this.setSelectToNextItem();\n this.selectItem(this.getItemByIndex());\n preventEventActions = true;\n break;\n case KEY_DOWN:\n this.setSelectToPreviousItem();\n this.selectItem(this.getItemByIndex());\n preventEventActions = true;\n break;\n case KEY_RETURN:\n this.activateItem(this.getItemByIndex());\n\n return;\n case KEY_TAB:\n if (this.prefs().closeOnTab) {\n this.closeListbox();\n }\n\n return;\n default:\n return;\n }\n\n if (preventEventActions) {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n\n /**\n * @description Sets previous item as selected, when navigating from keyboard\n * @returns {void}\n */\n setSelectToPreviousItem() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'selectedIndex' does not exist on type 'C... Remove this comment to see the full error message\n if (this.selectedIndex === -1 || this.selectedIndex >= this.resultsCount - 1) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'selectedIndex' does not exist on type 'C... Remove this comment to see the full error message\n this.selectedIndex = 0;\n } else {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'selectedIndex' does not exist on type 'C... Remove this comment to see the full error message\n this.selectedIndex += 1;\n }\n }\n\n /**\n * @description Sets next item as selected, when navigating from keyboard\n * @returns {void}\n */\n setSelectToNextItem() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'selectedIndex' does not exist on type 'C... Remove this comment to see the full error message\n if (this.selectedIndex <= 0) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'selectedIndex' does not exist on type 'C... Remove this comment to see the full error message\n this.selectedIndex = this.resultsCount - 1;\n } else {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'selectedIndex' does not exist on type 'C... Remove this comment to see the full error message\n this.selectedIndex -= 1;\n }\n }\n\n /**\n * @description Selects combobox dropdown item\n * @param {null|refElement} selectedItem - item, selected by user\n * @returns {void}\n */\n selectItem(selectedItem) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'currentSelected' does not exist on type ... Remove this comment to see the full error message\n if (this.currentSelected) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'currentSelected' does not exist on type ... Remove this comment to see the full error message\n this.deselectItem(this.currentSelected);\n }\n\n if (selectedItem) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'selectedIndex' does not exist on type 'C... Remove this comment to see the full error message\n this.ref('field').attr(ACTIVE_DESCENDANT, `result-item-${this.selectedIndex}`);\n selectedItem\n .addClass(this.prefs().classesFocusedItem)\n .attr('aria-selected', 'true');\n this.afterItemSelected(selectedItem);\n } else {\n this.ref('field').attr(ACTIVE_DESCENDANT, false);\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'currentSelected' does not exist on type ... Remove this comment to see the full error message\n this.currentSelected = selectedItem;\n }\n\n /**\n * @description Executes logic (sets input value) after item was selected\n * @param {refElement} item - item, selected by user\n * @returns {void}\n */\n afterItemSelected(item) {\n this.ref('field').prop('value', item.data('suggestionValue'));\n }\n\n /**\n * @description Deselects item in combobox dropdown when navigating from keyboard.\n * @param {refElement} item - item, selected by user\n * @returns {void}\n */\n deselectItem(item) {\n item\n .removeClass(this.prefs().classesFocusedItem)\n .attr('aria-selected', 'false');\n }\n\n /**\n * @description \"Activate\" item by press Enter on selected item or mouse click on item\n * @param {null|refElement} activeItem - item, selected by user\n * @returns {void}\n */\n activateItem(activeItem) {\n if (activeItem) {\n this.ref('field')\n .prop('value', activeItem.data('suggestionValue'))\n .get().focus();\n this.closeListbox();\n }\n }\n\n /**\n * @description Update Combobox Listbox (dropdown). Initiates items retrieving either from server or from any other source, like an array.\n * @returns {void}\n */\n updateListbox() {\n const inputValue = this.ref('field').prop('value');\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'lastSearchedTerm' does not exist on type... Remove this comment to see the full error message\n if (this.lastSearchedTerm === inputValue || inputValue.length < this.prefs().minChars) {\n // could be triggered from focus so we need additionally check minChars\n return;\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'timeout' does not exist on type 'Combobo... Remove this comment to see the full error message\n if (this.timeout) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'timeout' does not exist on type 'Combobo... Remove this comment to see the full error message\n clearTimeout(this.timeout);\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'timeout' does not exist on type 'Combobo... Remove this comment to see the full error message\n this.timeout = setTimeout(this.getSuggestions.bind(this, inputValue), this.prefs().updatingDelay);\n }\n\n /**\n * @description Get items list for Combobox. Could be fetched from any proper source.\n * Usually is implemented in children.\n * @param {string} query - a query, which needs to be processed in subclasses\n * @returns {void}\n */\n getSuggestions(query) {\n // This is example of getSuggestion method to implement\n // Combo boxes like search or address should implement his own methods\n // of how to get suggestion and render it. Template should follow this:\n // <li role=\"option\" id=\"result-item-${0}\">${results[0]}</li>\n // ...\n // <li role=\"status\" aria-live=\"polite\">${results.length} suggestion found</li>\n // You should always include ids of suggestion and status about how much\n // suggestion total.\n const resultsTotal = 1;\n\n this.afterSuggestionsUpdate(query, resultsTotal);\n }\n\n /**\n * @description Executes after a list of items (suggestions) of a Combobox has being updated.\n * @param {string} query - a query, used for fetching Combobox inner items\n * @param {number} resultsCount - obtained inner items count\n * @returns {void}\n */\n afterSuggestionsUpdate(query, resultsCount) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'resultsCount' does not exist on type 'Co... Remove this comment to see the full error message\n this.resultsCount = resultsCount;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'selectedIndex' does not exist on type 'C... Remove this comment to see the full error message\n this.selectedIndex = -1;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'lastSearchedTerm' does not exist on type... Remove this comment to see the full error message\n this.lastSearchedTerm = query;\n this.openListbox();\n }\n\n /**\n * @description Open a Listbox (Combobox dropdown)\n * @returns {void}\n */\n openListbox() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isListboxOpen' does not exist on type 'C... Remove this comment to see the full error message\n this.isListboxOpen = true;\n const listbox = this.ref('listbox');\n\n listbox.addClass(this.prefs().classesActiveListBox);\n listbox.attr('aria-hidden', 'false');\n const input = this.ref('field');\n\n input.attr(ACTIVE_DESCENDANT, false);\n input.attr('aria-expanded', 'true'); // Should be combobox node by specs\n this.toggleOverlay(true);\n\n if (this.prefs().closeFromOutside) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'bodyClickListener' does not exist on typ... Remove this comment to see the full error message\n this.bodyClickListener = clickOutside(this.ref('self'), this.closeListbox.bind(this));\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'bodyClickListener' does not exist on typ... Remove this comment to see the full error message\n if (this.bodyClickListener) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'bodyClickListener' does not exist on typ... Remove this comment to see the full error message\n this.onDestroy(this.bodyClickListener);\n }\n }\n }\n\n /**\n * @description Close a Listbox (Combobox dropdown)\n * @returns {void}\n */\n closeListbox() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'resultsCount' does not exist on type 'Co... Remove this comment to see the full error message\n this.resultsCount = 0;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'selectedIndex' does not exist on type 'C... Remove this comment to see the full error message\n this.selectedIndex = -1;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'lastSearchedTerm' does not exist on type... Remove this comment to see the full error message\n this.lastSearchedTerm = '';\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isListboxOpen' does not exist on type 'C... Remove this comment to see the full error message\n this.isListboxOpen = false;\n\n const listbox = this.ref('listbox');\n\n listbox.removeClass(this.prefs().classesActiveListBox);\n listbox.attr('aria-hidden', 'true');\n\n const input = this.ref('field');\n\n input.attr(ACTIVE_DESCENDANT, '');\n input.attr('aria-expanded', 'false'); // Should be combobox not by specs\n this.toggleOverlay(false);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'bodyClickListener' does not exist on typ... Remove this comment to see the full error message\n if (this.bodyClickListener) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'bodyClickListener' does not exist on typ... Remove this comment to see the full error message\n this.bodyClickListener();\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'bodyClickListener' does not exist on typ... Remove this comment to see the full error message\n this.bodyClickListener = undefined;\n }\n\n this.afterCloseListbox();\n }\n\n /**\n * @description Executes after Listbox (Combobox dropdown) was closed\n * @returns {void}\n */\n afterCloseListbox() {\n this.ref('listbox').empty();\n }\n\n /**\n * @description Toggles Combobox page overlay\n * @param {boolean} isShown - does overlay should be shown\n * @returns {void}\n */\n toggleOverlay(isShown) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isOverlayVisible' does not exist on type... Remove this comment to see the full error message\n this.isOverlayVisible = isShown;\n }\n\n /**\n * @description Get Combobox item (suggestion) by index, stored in `this.selectedIndex` class property.\n * @returns {refElement|null} - founded item or null\n */\n getItemByIndex() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'selectedIndex' does not exist on type 'C... Remove this comment to see the full error message\n if (this.selectedIndex < 0) {\n return null;\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'selectedIndex' does not exist on type 'C... Remove this comment to see the full error message\n const listItem = this.ref(`result-item-${this.selectedIndex}`);\n\n if (listItem.length) {\n return listItem;\n }\n\n return null;\n }\n }\n\n return Combobox;\n}\n","/**\n * @param BasicForm Base widget for extending\n * @returns Form class\n */\nexport default function (BasicForm: ReturnType<typeof import('widgets/forms/BasicForm').default>) {\n /**\n * @class Form\n * @augments BasicForm\n * @classdesc Represents Form component\n * @example <caption>Example of Form widget usage</caption>\n * <form\n * action=\"${URLUtils.url('Order-Track')}\"\n * method=\"GET\"\n * data-widget=\"form\"\n * data-event-submit=\"handleSubmit\"\n * >\n * ... form contents\n * </form>\n * @property {string} data-widget - Widget name `form`\n * @property {string} data-event-submit - Event listener for form submission\n */\n class Form extends BasicForm {\n\n }\n\n return Form;\n}\n","const ariaChecked = 'aria-checked';\n\n/**\n * @description Base InputCheckbox implementation\n * @param BasicInput Base widget for extending\n * @returns Input Checkbox class\n */\nexport default function (BasicInput: ReturnType <typeof import('widgets/forms/BasicInput').default>) {\n /**\n * @category widgets\n * @subcategory forms\n * @class InputCheckbox\n * @augments BasicInput\n * @classdesc Checkbox input implementation. Represents input `checkbox` element together with widget-related HTML markup.\n * HTML structure assembled on backend and injected into resulted html markup by using `formElement` component\n * and dynamic forms configuration JSON.\n * @property {string} data-widget - Widget name `inputCheckbox`\n * @example <caption>InputCheckbox definition in dynamicforms.json</caption>\n * ...\n * // fields -> input -> checkbox\n * checkbox: {\n * 'label.after': true,\n * 'element.type': 'checkbox'\n * },\n * ...\n * // fields -> generic -> setAsDefault\n * setAsDefault: {\n * extends: 'fields.input.checkbox',\n * 'label.text': 'form.address.setDefault'\n * },\n * ...\n * @example <caption>Insertion of InputCheckbox inside ISML templates</caption>\n * <isset name=\"formElement\" value=\"${require('forms/formElement')}\" scope=\"page\"/>\n * ...\n * <form>\n * ...\n * <isprint value=\"${\n * formElement(pdict.addressForm.setAsDefault, pdict.addressFormOptions).render()\n * }\" encoding=\"off\"/>\n * ...\n * </form>\n * @example <caption>Resulted HTML structure for InputCheckbox</caption>\n * <div data-widget=\"inputCheckbox\" class=\"b-form_section\" data-id=\"dwfrm_login_rememberMe\" data-validation-config='{\"patterns\":{},\"errors\":{},\"mandatory\":false}'>\n * <div class=\"b-checkbox\">\n * <input type=\"checkbox\" data-ref=\"field\" class=\"b-checkbox-input\" id=\"dwfrm_login_rememberMe\" name=\"dwfrm_login_rememberMe\" value=\"true\"\n * data-tau=\"login_rememberMe\" data-event-blur=\"validate\" aria-describedby=\"dwfrm_login_rememberMe-error\"\n * >\n * <svg class=\"b-checkbox-icon\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" focusable=\"false\">\n * <path class=\"b-checkbox-icon_check\" fill=\"none\" stroke=\"currentColor\" d=\"m5.2686 10.371 5.1528 6.9837 9.8939-11.913\"></path>\n * </svg>\n * <label class=\"b-form_section-label\" for=\"dwfrm_login_rememberMe\">Remember Me</label>\n * </div>\n * <div role=\"alert\" class=\"b-form_section-message\" data-ref=\"errorFeedback\" id=\"dwfrm_login_rememberMe-error\" hidden=\"hidden\"></div>\n * </div>\n */\n class InputCheckbox extends BasicInput {\n /**\n * @description Get value of a checkbox input. Returns empty string if checkbox is not checked.\n * @returns {string} result\n */\n getValue() {\n if (this.ref('field').prop('checked')) {\n return super.getValue();\n }\n\n return '';\n }\n\n /**\n * @description Set value to checkbox input. By fact - checks it if set value is not empty.\n * @param {string} newVal New value to set.\n * @param {boolean} silently If true - there will be no event fired, that indicates input value change.\n * @emits BasicInput#change\n * @returns {void}\n */\n setValue(newVal = '', silently = false) {\n this.ref('field').prop('checked', !!newVal);\n\n if (!silently) {\n this.emit('change', this);\n }\n }\n\n /**\n * @description Checks the checkbox. Also updates accessibility properties of input accordingly.\n * @emits BasicInput#change\n * @returns {void}\n */\n check() {\n this.ref('field').attr(ariaChecked, 'true');\n this.ref('field').prop('checked', true);\n\n this.emit('change', this);\n }\n\n /**\n * @description Uncheck the checkbox. Also updates accessibility properties of input accordingly.\n * @emits BasicInput#change\n * @returns {void}\n */\n uncheck() {\n this.ref('field').attr(ariaChecked, 'false');\n this.ref('field').prop('checked', false);\n\n this.emit('change', this);\n }\n\n /**\n * @description Update accessibility `aria-checked` depending on checkbox state.\n * @returns {void}\n */\n updateAriaChecked() {\n if (this.ref('field').prop('checked')) {\n this.ref('field').attr(ariaChecked, 'true');\n } else {\n this.ref('field').attr(ariaChecked, 'false');\n }\n }\n\n /**\n * @description Used to handle change checkbox state.\n * Usually used in dynamic forms config to handle `change` event on checkbox like:\n * @example\n * ...\n * element: {\n * attributes: {\n * 'data-event-change': 'handleChange'\n * }\n * }\n * ...\n * @emits BasicInput#change\n * @returns {void}\n */\n handleChange() {\n this.updateAriaChecked();\n this.emit('change');\n }\n }\n\n return InputCheckbox;\n}\n","/**\n * @description Base InputEmail implementation\n * @param InputText Base widget for extending\n * @returns Input Email class\n */\nexport default function (InputText: ReturnType<typeof import('./InputText').default>) {\n /**\n * @category widgets\n * @subcategory forms\n * @class InputEmail\n * @augments InputText\n * @classdesc Input type Email implementation. Represents input `email` element together with widget-related HTML markup.\n * HTML structure assembled on backend and injected into resulted html markup by using `formElement` component\n * and dynamic forms configuration JSON.\n * @property {string} data-widget - Widget name `inputEmail`\n * @example <caption>InputEmail definition in dynamicforms.json</caption>\n * ...\n * // fields -> generic -> email\n * email: {\n * extends: 'fields.input.base',\n * element: {\n * attributes: {\n * autocomplete: 'email'\n * },\n * maxLength: 50,\n * type: 'email',\n * required: true\n * },\n * validation: {\n * 'patterns.parse': 'validation.patterns.parse.email',\n * 'errors.parse': 'validation.errors.email'\n * },\n * 'label.text': 'form.profile.email'\n * },\n * ...\n * @example <caption>Insertion of InputEmail inside ISML templates</caption>\n * <isset name=\"formElement\" value=\"${require('forms/formElement')}\" scope=\"page\"/>\n * ...\n * <form>\n * ...\n * <isprint value=\"${\n * formElement(pdict.addressForm.email, pdict.addressFormOptions).render()\n * }\" encoding=\"off\"/>\n * ...\n * </form>\n * @example <caption>Resulted HTML structure for InputEmail</caption>\n * <div data-widget=\"inputEmail\" class=\"b-form_section m-required m-invalid\" data-id=\"dwfrm_login_email\"\n * data-validation-config=\"... validation config\"\n * >\n * <label class=\"b-form_section-label\" for=\"dwfrm_login_email\">\n * <span class=\"b-form_section-required\" aria-hidden=\"true\">*</span>\n * Email\n * </label>\n * <input data-ref=\"field\" id=\"dwfrm_login_email\" type=\"email\" class=\"b-input m-invalid\" placeholder=\"\"\n * aria-describedby=\"dwfrm_login_email-error\" pattern=\"...\" name=\"dwfrm_login_email\"\n * required=\"\" value=\"\" maxlength=\"50\" aria-required=\"true\" autocomplete=\"email\" data-event-input=\"onInput\"\n * data-tau=\"login_email\" data-event-blur=\"validate\"\n * >\n * <div role=\"alert\" class=\"b-form_section-message\" data-ref=\"errorFeedback\" id=\"dwfrm_login_email-error\">This field is required.</div>\n * </div>\n */\n class InputEmail extends InputText {\n\n }\n\n return InputEmail;\n}\n","/**\n * @param BasicInput Base widget for extending\n * @returns Input Hidden class\n */\nexport default function (BasicInput: ReturnType<typeof import('widgets/forms/BasicInput').default>) {\n /**\n * @category widgets\n * @subcategory forms\n * @class InputHidden\n * @augments BasicInput\n * @classdesc Widget used to handle hidden inputs. Represents input `hidden` element together with widget-related HTML markup.\n * HTML structure assembled on backend and injected into resulted html markup by using `formElement` component\n * and dynamic forms configuration JSON.\n * Form validation will skip hidden inputs from validation perspective and will treat it as valid.\n * @property {string} data-widget - Widget name `inputHidden`\n * @example <caption>InputHidden definition in dynamicforms.json</caption>\n * ...\n * // fields -> generic -> hidden\n * hidden: {\n * extends: 'fields.input.base',\n * element: {\n * type: 'hidden'\n * }\n * },\n * ...\n * @example <caption>Insertion of InputHidden inside ISML templates</caption>\n * <isset name=\"formElement\" value=\"${require('forms/formElement')}\" scope=\"page\"/>\n * ...\n * <form>\n * ...\n * <isprint value=\"${\n * formElement(pdict.addressForm.hiddenFieldExample).render()\n * }\" encoding=\"off\"/>\n * ...\n * </form>\n * @example <caption>Resulted HTML structure for InputHidden</caption>\n * <div data-widget=\"inputHidden\" class=\"b-form_section m-required m-invalid\" data-id=\"dwfrm_login_hiddenFieldExample\">\n * <input data-ref=\"field\" id=\"dwfrm_login_hiddenFieldExample\" type=\"hidden\" name=\"dwfrm_login_hiddenFieldExample\" value=\"\">\n * </div>\n */\n class InputHidden extends BasicInput {\n prefs() {\n return {\n ...super.prefs(),\n skipValidation: true\n };\n }\n }\n\n return InputHidden;\n}\n","/**\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} RefElement\n */\n\n/**\n * @description Base InputPassword implementation\n * @param BasicInput Base widget for extending\n * @returns Input Password class\n */\nexport default function (BasicInput: ReturnType<typeof import('widgets/forms/BasicInput').default>) {\n /**\n * @category widgets\n * @subcategory forms\n * @class InputPassword\n * @augments BasicInput\n * @classdesc Specific Password input, contains specific password validation logic. Represents input `password` element together with widget-related HTML markup.\n * HTML structure assembled on backend and injected into resulted html markup by using `formElement` component\n * and dynamic forms configuration JSON.\n * Uses 'show/hide mask' functionality, which allows customer to see/hide printed password characters.\n * Adds additional validation constraints rules, which are password-specific (like special characters, uppercased characters etc).\n * @property {string} data-widget - Widget name `inputPassword`\n * @property {boolean} data-password-strength-enabled - Is strength enabled for this password field\n * @example <caption>InputPassword definition in dynamicforms.json</caption>\n * ...\n * // fields -> input -> password\n * password: {\n * extends: 'fields.input.base',\n * 'caption.show': true,\n * 'caption.text': 'form.profile.password.caption',\n * 'label.text': 'form.profile.password',\n * element: {\n * type: 'password',\n * required: true,\n * minLength: 8,\n * maxLength: 64,\n * attributes: {\n * 'data-event-input': 'onPasswordInput',\n * 'data-event-focus': 'handleFocus'\n * }\n * }\n * },\n * ...\n * @example <caption>Insertion of InputPassword inside ISML templates</caption>\n * <isset name=\"formElement\" value=\"${require('forms/formElement')}\" scope=\"page\"/>\n * ...\n * <form>\n * ...\n * <isprint value=\"${\n * formElement(pdict.profile.password).render()\n * }\" encoding=\"off\"/>\n * ...\n * </form>\n * @example <caption>Resulted HTML structure for InputPassword</caption>\n * <div data-widget=\"inputPassword\" class=\"b-form_section m-required m-invalid\"\n * data-id=\"dwfrm_login_password\" data-validation-config=\"... validation cinfig\"\n * >\n * <label class=\"b-form_section-label\" for=\"dwfrm_login_password\">\n * <span class=\"b-form_section-required\" aria-hidden=\"true\">*</span>\n * Password\n * </label>\n * <div class=\"b-input_password\">\n * <input data-ref=\"field\" id=\"dwfrm_login_password\" type=\"password\" class=\"b-input m-invalid\"\n * aria-describedby=\"dwfrm_login_password-error\" placeholder=\"\" name=\"dwfrm_login_password\" required=\"\" value=\"\"\n * maxlength=\"64\" aria-required=\"true\" minlength=\"8\" data-event-input=\"onPasswordInput\"\n * autocomplete=\"current-password\" data-tau=\"login_password\" data-event-blur=\"validate\"\n * >\n * <button class=\"b-input_password-toggle_visibility\" data-ref=\"showButton\" data-event-click=\"toggleMask\"\n * data-button-text-show=\"Show\" data-button-text-hide=\"Hide\" aria-pressed=\"false\"\n * title=\"Toggle password field visibility\" type=\"button\" hidden=\"hidden\">Show</button>\n * </div>\n * <div role=\"alert\" class=\"b-form_section-message\" data-ref=\"errorFeedback\" id=\"dwfrm_login_password-error\">This field is required.</div>\n * </div>\n */\n class InputPassword extends BasicInput {\n prefs() {\n return {\n upperCaseAmount: 0,\n lowerCaseAmount: 0,\n numbersAmount: 0,\n specialCharsAmount: 0,\n specialCharsList: '$%/()[]{}=?!.,-_*|+~#',\n maxWeakPasswordScore: 1,\n maxMediumPasswordScore: 2,\n maxStrongPasswordScore: 4,\n classesWeakPassword: 'm-weak',\n classesMediumPassword: 'm-medium',\n classesStrongPassword: 'm-strong',\n passwordStrengthEnabled: false,\n ...super.prefs()\n };\n }\n\n init() {\n super.init();\n\n if (this.prefs().passwordStrengthEnabled) {\n import(/* webpackChunkName: 'zxcvbn' */'zxcvbn')\n .then((zxcvbn) => {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'passwordEstimator' does not exist on typ... Remove this comment to see the full error message\n this.passwordEstimator = zxcvbn.default;\n });\n }\n }\n\n /**\n * @description Checks if entered data is number\n * @param {string} val - entered password\n * @returns {boolean} check result\n */\n isNumber(val) {\n return '0123456789'.includes(val);\n }\n\n /**\n * @description Checks if entered data is simple character (not a number or special character)\n * @param {string} val - entered password\n * @returns {boolean} check result\n */\n isSimpleChar(val) {\n return !this.isNumber(val) && !this.prefs().specialCharsList.includes(val);\n }\n\n /**\n * @description Verifies if entered password is valid in case of using password strength estimation instead of\n * default password validation\n * @returns {boolean} check result\n */\n isStrongPassword() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'passwordStrengthScore' does not exist on... Remove this comment to see the full error message\n if (this.passwordStrengthScore > this.prefs().maxMediumPasswordScore) {\n return true;\n } else {\n this.error = <string> this.ref('passwordEstimator').data('errorWeakPassword');\n\n return false;\n }\n }\n\n /**\n * @description Verifies if entered password is valid and meets all password constraints\n * @returns {boolean} check result\n */\n isValid() {\n const val = this.getValue();\n\n if (!super.isValid()) {\n return false;\n }\n\n if (typeof val === 'string' && val) {\n if (this.widgetsToMatch && this.widgetsToMatch.length) {\n const invalidWidget = this.getInvalidCompareWithWidget();\n\n if (!invalidWidget) {\n return true;\n } else {\n this.error = invalidWidget.widgetToMatchOpts.msg || '';\n\n return false;\n }\n } else {\n return this.validatePasswordChars(val);\n }\n }\n\n return true;\n }\n\n /**\n * @description Verifies if entered password meets the strength requirements\n * @param {string} val - entered password\n * @returns {boolean} check result\n */\n validatePasswordChars(val) {\n const valChars = val.split('');\n\n if (this.prefs().passwordStrengthEnabled) {\n return this.isStrongPassword();\n } else if (\n this.checkLowerCaseAmount(valChars)\n && this.checkUpperCaseAmount(valChars)\n && this.checkNumberAmount(valChars)\n && this.checkSpecialCharsAmount(valChars)\n ) {\n return true;\n }\n\n return false;\n }\n\n /**\n * @description Checks special characters amount in entered password as per corresponding constraint.\n * @param {string[]} valChars - array of entered password symbols\n * @returns {boolean} check results\n */\n checkSpecialCharsAmount(valChars) {\n if (this.prefs().specialCharsAmount) {\n const specialCharsList = this.prefs().specialCharsList;\n const specialCharsLetters = valChars.filter(char => specialCharsList.includes(char));\n\n if (specialCharsLetters.length < this.prefs().specialCharsAmount) {\n this.error = this.prefs().validationConfig.errors.specialCharsAmount;\n\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * @description Checks numbers amount in entered password as per corresponding constraint.\n * @param {string[]} valChars - array of entered password symbols\n * @returns {boolean} check result\n */\n checkNumberAmount(valChars) {\n if (this.prefs().numbersAmount) {\n const numberLetters = valChars.filter(char => this.isNumber(char));\n\n if (numberLetters.length < this.prefs().numbersAmount) {\n this.error = this.prefs().validationConfig.errors.numbersAmount;\n\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * @description Checks lowercase characters amount in entered password as per corresponding constraint.\n * @param {string[]} valChars - array of entered password symbols\n * @returns {boolean} check result\n */\n checkLowerCaseAmount(valChars) {\n if (this.prefs().lowerCaseAmount) {\n const lowerCaseLetters = valChars.filter(char => char === char.toLowerCase() && this.isSimpleChar(char));\n\n if (lowerCaseLetters.length < this.prefs().lowerCaseAmount) {\n this.error = this.prefs().validationConfig.errors.lowerCaseAmount;\n\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * @description Checks uppercase characters amount in entered password as per corresponding constraint.\n * @param {string[]} valChars - array of entered password symbols\n * @returns {boolean} check results\n */\n checkUpperCaseAmount(valChars) {\n if (this.prefs().upperCaseAmount) {\n const upperCaseLetters = valChars.filter(char => char === char.toUpperCase() && this.isSimpleChar(char));\n\n if (upperCaseLetters.length < this.prefs().upperCaseAmount) {\n this.error = this.prefs().validationConfig.errors.upperCaseAmount;\n\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * @description Show mask button inside password field\n * @returns {void}\n */\n showMaskButton() {\n this.ref('showButton').show();\n }\n\n /**\n * @description Handle click on button Show/Hide mask. Toggle type based on input type.\n * @listens dom#click\n * @returns {void}\n */\n toggleMask() {\n const input = this.ref('field');\n const inputType = input.attr('type');\n const showButton = this.ref('showButton');\n const showText = showButton.data('buttonTextShow');\n const hideText = showButton.data('buttonTextHide');\n\n if (inputType === 'password') {\n input.attr('type', 'text');\n showButton.attr('aria-pressed', 'true');\n\n // @ts-expect-error ts-migrate(2345) FIXME: Argument of type 'string | number | boolean | RefE... Remove this comment to see the full error message\n showButton.setText(hideText);\n } else {\n input.attr('type', 'password');\n showButton.attr('aria-pressed', 'false');\n\n // @ts-expect-error ts-migrate(2345) FIXME: Argument of type 'string | number | boolean | RefE... Remove this comment to see the full error message\n showButton.setText(showText);\n }\n }\n\n /**\n * @description Listener for `input` event.\n * Usually used to display Show/Hide mask button when entered needed amount of symbols into password field.\n * @listens dom#input\n * @param {RefElement} el event source element\n * @returns {void}\n */\n onPasswordInput(el) {\n const entered = el && el.val();\n\n if (entered && entered.length) {\n this.showMaskButton();\n }\n\n if (this.prefs().passwordStrengthEnabled) {\n this.showPasswordEstimator(el);\n }\n }\n\n /**\n * @description Generates an array of indicator item classes with different filling color\n * @returns {Array} Indicator item classes\n */\n generateIndicatorItems() {\n let indicatorClass;\n\n // Defined class name to set appropriate indicator items fill color\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'passwordStrengthScore' does not exist on... Remove this comment to see the full error message\n if (this.passwordStrengthScore === null) {\n indicatorClass = '';\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'passwordStrengthScore' does not exist on... Remove this comment to see the full error message\n } else if (this.passwordStrengthScore <= this.prefs().maxWeakPasswordScore) {\n indicatorClass = this.prefs().classesWeakPassword;\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'passwordStrengthScore' does not exist on... Remove this comment to see the full error message\n } else if (this.passwordStrengthScore <= this.prefs().maxMediumPasswordScore) {\n indicatorClass = this.prefs().classesMediumPassword;\n } else {\n indicatorClass = this.prefs().classesStrongPassword;\n }\n\n const indicatorItems = [];\n\n for (let i = 0; i <= this.prefs().maxStrongPasswordScore; i++) {\n indicatorItems[i] = {\n\n // @ts-expect-error ts-migrate(2322) FIXME: Type 'any' is not assignable to type 'never'.\n className: (this.passwordStrengthScore !== null && i <= this.passwordStrengthScore) ? indicatorClass : ''\n };\n }\n\n return indicatorItems;\n }\n\n /**\n * @description Show password strength estimator block\n * @param {RefElement} el - field source element\n * @returns {Promise<void|null>} Promise object represents password estimator rendering result\n */\n showPasswordEstimator(el) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'passwordEstimator' does not exist on typ... Remove this comment to see the full error message\n if (!this.passwordEstimator) {\n return Promise.resolve(null);\n }\n\n const value = el && el.val();\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'passwordStrengthScore' does not exist on... Remove this comment to see the full error message\n this.passwordStrengthScore = value.length ? this.passwordEstimator(value).score : null;\n const passwordIndicatorItems = this.generateIndicatorItems();\n const passwordStrengthDescriptions = this.ref('passwordEstimator').data('passwordDescriptions');\n const passwordStrengthDescription = (passwordStrengthDescriptions\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'passwordStrengthScore' does not exist on... Remove this comment to see the full error message\n && passwordStrengthDescriptions[this.passwordStrengthScore]) || '';\n\n // Show updated password strength indicator and description\n return this.render(\n 'passwordEstimatorTemplate',\n { passwordIndicatorItems, passwordStrengthDescription },\n this.ref('passwordEstimatorIndicator')\n ).then(() => {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'passwordStrengthScore' does not exist on... Remove this comment to see the full error message\n if (this.passwordStrengthScore === this.prefs().maxStrongPasswordScore) {\n this.ref('passwordEstimatorCaption').remove();\n }\n\n this.ref('passwordEstimator').show();\n });\n }\n\n /**\n * @description Handles `focus` on password input with strength estimation\n * @listens dom#focus\n * @param {RefElement} el event source element\n * @returns {void}\n */\n handleFocus(el) {\n this.showPasswordEstimator(el);\n }\n }\n\n return InputPassword;\n}\n","const DATA_FIELD = '[data-ref=\"field\"]';\n\n/**\n * @description Base InputRadio implementation\n * @param BasicInput Base widget for extending\n * @returns Input Radio class\n */\nexport default function (BasicInput: ReturnType<typeof import('widgets/forms/BasicInput').default>) {\n /**\n * @category widgets\n * @subcategory forms\n * @class InputRadio\n * @augments BasicInput\n * @classdesc Radio input implementation. Represents input `radio` element together with widget-related HTML markup.\n * @property {string} data-widget - Widget name `inputRadio`\n * @example <caption>InputRadio HTML markup example</caption>\n * <fieldset class=\"b-form-set\">\n * <legend class=\"b-form-set_label\">Shipping method</legend>\n * <div class=\"b-form_section\" data-widget=\"inputRadio\" data-id=\"shippingMethodList\"\n * data-select-shipping-method-url=\"https://...\"\n * data-action-url=\"https://...\"\n * data-widget-event-change=\"selectShippingMethod\" data-shipment-uuid=\"3fbc2a6f7e32e2b1755e9099bd\"\n * >\n * <div class=\"b-option_switch\">\n * <div class=\"b-option_switch-inner\">\n * <input id=\"shippingMethod-001\" class=\"b-option_switch-input\"\n * name=\"dwfrm_shipping_shippingAddress_shippingMethodID\" type=\"radio\"\n * value=\"001\" data-value=\"001\" data-ref=\"field\" data-event-change=\"update\" checked=\"\"\n * >\n * <div class=\"b-option_switch-icon\"></div>\n * <label class=\"b-option_switch-label\" for=\"shippingMethod-001\">\n * <div class=\"b-option_switch-label_surface\">\n * <span class=\"b-option_switch-name\">...</span>\n * <div class=\"b-price\">...</div>\n * </div>\n * <span class=\"b-option_switch-description\">...</span>\n * </label>\n * </div>\n * </div>\n * <div class=\"b-option_switch\">\n * <div class=\"b-option_switch-inner\">\n * <input id=\"shippingMethod-002\" class=\"b-option_switch-input\"\n * name=\"dwfrm_shipping_shippingAddress_shippingMethodID\" type=\"radio\"\n * value=\"001\" data-value=\"001\" data-ref=\"field\" data-event-change=\"update\" checked=\"\"\n * >\n * <div class=\"b-option_switch-icon\"></div>\n * <label class=\"b-option_switch-label\" for=\"shippingMethod-001\">\n * <div class=\"b-option_switch-label_surface\">\n * <span class=\"b-option_switch-name\">...</span>\n * <div class=\"b-price\">...</div>\n * </div>\n * <span class=\"b-option_switch-description\">...</span>\n * </label>\n * </div>\n * </div>\n * <div role=\"alert\" class=\"b-form_section-message\" data-ref=\"errorFeedback\" hidden=\"\"></div>\n * </fieldset>\n */\n class InputRadio extends BasicInput {\n /**\n * @description method to get `value` of the radio\n * @returns {string} value of selected radio input\n */\n getValue() {\n const el = (this.ref('self').get());\n\n if (el) {\n return Array.from(el.querySelectorAll(DATA_FIELD))\n .reduce((val, elField) => {\n const tmpEl = <HTMLInputElement>elField;\n\n return val || ((tmpEl.checked || '') && tmpEl.value);\n }, '');\n }\n\n return '';\n }\n\n /**\n * @description method to get `data-value` value of the radio\n * @returns {string} `data-value` value\n */\n getDataValue() {\n const el = (this.ref('self').get());\n\n if (el) {\n return Array.from(el.querySelectorAll(DATA_FIELD))\n .reduce((val, elInner) => {\n const tmpEl = <HTMLInputElement>elInner;\n\n return val || ((tmpEl.checked || '') && (tmpEl.getAttribute('data-value') || ''));\n }, '');\n }\n\n return '';\n }\n\n /**\n * @description Overridden implementation of parent validate() method\n * @returns {boolean} true in all cases\n */\n validate() {\n return true;\n }\n\n /**\n * @description Method to select radio input\n * @param {string} value - value to be set to radio button\n * @returns {void}\n */\n setValue(value) {\n const el = (this.ref('self').get());\n\n if (el) {\n Array.from(el.querySelectorAll(DATA_FIELD))\n .forEach((elField) => {\n const tmpEl = <HTMLInputElement>elField;\n\n if (tmpEl.value === value) {\n tmpEl.checked = true;\n tmpEl.setAttribute('checked', 'checked');\n } else {\n tmpEl.checked = false;\n tmpEl.removeAttribute('checked');\n }\n });\n }\n }\n\n /**\n * @description Method to get dataset of checked or first radio input\n * @returns {null|object} dataset object of first or checked radio input, or null if no 'self' exist\n */\n getDataSet() {\n const checked = this.getChecked();\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'dataset' does not exist on type 'Element... Remove this comment to see the full error message\n return checked ? checked.dataset : checked;\n }\n\n /**\n * @description Method to get checked (or first) radio input\n * @returns {null|HTMLElement} first or checked inputs ref element if self exists, null if not\n */\n getChecked() {\n const el = this.ref('self').get();\n\n if (el) {\n /** @type {HTMLInputElement} */\n const currentEl = (Array.from(el.querySelectorAll(DATA_FIELD))\n .filter(field => {\n const tmpField = <HTMLInputElement>field;\n\n return tmpField.checked;\n })[0] || el.querySelectorAll(DATA_FIELD)[0]);\n\n return currentEl;\n }\n\n return null;\n }\n }\n\n return InputRadio;\n}\n","import { RefElement } from 'widgets/toolbox/RefElement';\n\n/**\n * @typedef {InstanceType <typeof import('widgets/toolbox/RefElement').RefElement>} RefElement\n */\n/**\n * @description Base InputSelect implementation\n * @param BasicInput Base widget for extending\n * @returns Input Select class\n */\nexport default function (BasicInput: ReturnType<typeof import('widgets/forms/BasicInput').default>) {\n /**\n * @category widgets\n * @subcategory forms\n * @class InputSelect\n * @augments BasicInput\n * @classdesc Select input implementation. Represents input `password` element together with widget-related HTML markup.\n * HTML structure assembled on backend and injected into resulted html markup by using `formElement` component\n * and dynamic forms configuration JSON.\n * @property {string} data-widget - Widget name `inputSelect`\n * @property {boolean} [first-default] - Select first option even if other option marked as selected\n * @example <caption>InputSelect definition in dynamicforms.json</caption>\n * ...\n * // fields -> select\n * select: {\n * 'element.type': 'select',\n * validation: {\n * 'patterns.security': 'validation.patterns.security',\n * 'errors.security': 'validation.errors.parse'\n * }\n * },\n * ...\n * // fields -> generic -> country\n * country: {\n * widget: {\n * attributes: {\n * 'data-widget-event-change': 'onCountryChange'\n * },\n * classes: 'm-small'\n * },\n * extends: 'fields.select',\n * 'label.text': 'form.address.country',\n * element: {\n * required: true,\n * attributes: {\n * 'data-event-change': 'onChange'\n * }\n * }\n * },\n * }\n * ...\n * @example <caption>Insertion of InputSelect inside ISML templates</caption>\n * <isset name=\"formElement\" value=\"${require('forms/formElement')}\" scope=\"page\"/>\n * ...\n * <form>\n * ...\n * <isprint value=\"${\n * formElement(pdict.addressForm.country, pdict.addressFormOptions).render()\n * }\" encoding=\"off\"/>\n * ...\n * </form>\n * @example <caption>Resulted HTML structure for InputSelect</caption>\n * <div data-widget=\"inputSelect\" data-first-default=\"true\"\n * data-widget-event-change=\"updateShippingState\" class=\"b-form_section m-required m-small m-invalid\"\n * data-id=\"dwfrm_shipping_shippingAddress_addressFields_states_stateCode\"\n * data-validation-config=\"... validation config\"\n * >\n * <label class=\"b-form_section-label\" for=\"dwfrm_shipping_shippingAddress_addressFields_states_stateCode\">\n * <span class=\"b-form_section-required\" aria-hidden=\"true\">*</span>\n * State\n * </label>\n * <div class=\"b-select\">\n * <select data-ref=\"field\" class=\"b-select-input m-invalid\"\n * id=\"dwfrm_shipping_shippingAddress_addressFields_states_stateCode\"\n * name=\"dwfrm_shipping_shippingAddress_addressFields_states_stateCode\"\n * required=\"\" aria-required=\"true\" data-event-change=\"onChange\"\n * aria-describedby=\"dwfrm_shipping_shippingAddress_addressFields_states_stateCode-error\"\n * data-event-blur=\"validate\"\n * >\n * <option value=\"\" data-id=\"0\">Please select</option>\n * ...\n * </select>\n * <svg aria-hidden=\"true\" class=\"b-select-icon\" width=\"10\" height=\"6\" focusable=\"false\">\n * <use href=\"#arrow-down-small\"></use>\n * </svg>\n * </div>\n * <div role=\"alert\" class=\"b-form_section-message\" data-ref=\"errorFeedback\" id=\"dwfrm_shipping_shippingAddress_addressFields_states_stateCode-error\">This field is required.</div>\n * </div>\n */\n class InputSelect extends BasicInput {\n prefs() {\n return {\n firstDefault: false,\n ...super.prefs()\n };\n }\n\n init() {\n const field = /** @type {HTMLSelectElement|undefined} */(this.ref('field').get());\n\n if (field) {\n const options = this.getOptions();\n let optionToSelect;\n\n if (this.prefs().firstDefault) {\n optionToSelect = options[0];\n } else {\n // @ts-expect-error ts-migrate(2571) FIXME: Object is of type 'unknown'.\n optionToSelect = options.find(elem => elem.hasAttribute('selected')) || options[0];\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'selectedIndex' does not exist on type 'H... Remove this comment to see the full error message\n if (optionToSelect && field.selectedIndex !== optionToSelect.index) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'selectedIndex' does not exist on type 'H... Remove this comment to see the full error message\n field.selectedIndex = optionToSelect.index;\n }\n }\n\n super.init();\n }\n\n /**\n * @description InputSelect on change handler\n * @listens dom#change\n * @param {RefElement} el source of event\n * @param {(Event|undefined)} event event instance if DOM event\n * @returns {void}\n */\n onChange(el, event) {\n // eslint-disable-next-line spellcheck/spell-checker\n if (!this.config.dontPrevent && event && event instanceof Event) {\n event.preventDefault();\n }\n\n this.update();\n }\n\n /**\n * @description Sets new value on select from selected option\n * @param {string} [newVal] new value\n * @param {boolean} [silently] validate after change\n * @returns {void}\n */\n setValue(newVal = this.initValue, silently) {\n let val = newVal || '';\n\n const field = /** @type {HTMLSelectElement|undefined} */(this.ref('field').get());\n\n if (field) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'options' does not exist on type 'HTMLEle... Remove this comment to see the full error message\n const option = Array.from(field.options).find(elem => elem.value === val);\n\n if (!option) {\n val = this.initValue || '';\n }\n }\n\n super.setValue(val, silently);\n }\n\n /**\n * @description Get value from selected option\n * @returns {string} selected option value\n */\n getValue() {\n const selectedOption = this.getSelectedOptions();\n\n if (selectedOption) {\n if (selectedOption.length) {\n return /** @type {string} */(selectedOption.val());\n }\n\n const field = /** @type {HTMLSelectElement|undefined} */(this.ref('field').get());\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'options' does not exist on type 'HTMLEle... Remove this comment to see the full error message\n if (field && field.options.length) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'options' does not exist on type 'HTMLEle... Remove this comment to see the full error message\n const item = field.options.item(0);\n\n if (item) {\n return item.value;\n }\n }\n }\n\n return '';\n }\n\n /**\n * @description Get selected options for select\n * @returns {RefElement|undefined} selected options\n */\n getSelectedOptions() {\n const field = /** @type {HTMLSelectElement|undefined} */(this.ref('field').get());\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'selectedOptions' does not exist on type ... Remove this comment to see the full error message\n if (field && field.selectedOptions) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'selectedOptions' does not exist on type ... Remove this comment to see the full error message\n return new RefElement(Array.from(field.selectedOptions));\n }\n\n return undefined;\n }\n\n /**\n * @description Get options for select\n * @returns {Array<HTMLOptionElement>} select options\n */\n getOptions() {\n const field = /** @type {HTMLSelectElement|undefined} */(this.ref('field').get());\n\n if (field) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'options' does not exist on type 'HTMLEle... Remove this comment to see the full error message\n return Array.from(field.options);\n }\n\n return [];\n }\n\n /**\n * @description Get selected option text\n * @returns {string} selected option text\n */\n getText() {\n const field = this.ref('field').get();\n\n if (field) {\n const selectedNode = Object.values(field.childNodes)\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'selected' does not exist on type 'ChildN... Remove this comment to see the full error message\n .find(node => /** @type {HTMLOptionElement} */(node).selected);\n\n if (selectedNode) {\n return selectedNode.textContent || '';\n }\n\n return '';\n }\n\n return '';\n }\n\n /**\n * @description Locks select input (add locked classes, set read-only, disabled)\n * @returns {void}\n */\n lock() {\n if (!this.locked) {\n super.lock();\n this.ref('field').attr('disabled', true);\n }\n }\n\n /**\n * @description Unlocks select input (remove locked classes, remove read-only, disabled)\n * @returns {void}\n */\n unlock() {\n if (this.locked) {\n super.unlock();\n this.ref('field').attr('disabled', false);\n }\n }\n\n changeAttribute() {} // eslint-disable-line\n\n /**\n * @description Method to stop propagation in case if input events should not be interrupted.\n * For example, when there is a listener on a parent widget that is triggered by the same keydown event and it should not fire, etc.\n * @param {HTMLElement} _ - source of keydown event\n * @param {Event} event - keydown event object\n * @returns {void}\n */\n stopImmediatePropagation(_, event) {\n if (event) { event.stopImmediatePropagation(); }\n }\n }\n\n return InputSelect;\n}\n","import { timeout } from '../toolbox/util';\n\nconst keyCode = Object.freeze({\n PAGEUP: 33,\n PAGEDOWN: 34,\n END: 35,\n HOME: 36,\n UP: 38,\n DOWN: 40\n});\n/**\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} refElement\n */\n\n/**\n * @param BasicInput Base widget for extending\n * @returns InputStepper class\n */\nexport default function (BasicInput: ReturnType<typeof import('widgets/forms/BasicInput').default>) {\n /**\n * @category widgets\n * @subcategory forms\n * @class InputStepper\n * @augments BasicInput\n * @classdesc Widget used as a quantity selector for product with +/- buttons functionality.\n * - Uses `minValue` and `maxValue` properties to restrict allowed input range.\n * - Handles keyboard input, allows step +/- configuration.\n * - Uses mustache template for dynamic rendering.\n * @property {boolean} data-skip-validation - if input needs to skip validation\n * @property {number} [data-update-delay] - delay to emit change event\n * @property {string} data-attr-url - url for update product quantity\n * @property {string} data-line-item-min-order-quantity - LineItem min order quantity.\n * Used on cart/minicart to call remove product from cart method and set correct value after cancel remove.\n * @example <caption>Example HTML structure for InputStepper</caption>\n * <div\n * data-widget=\"inputStepper\"\n * data-attr-url=\"${product.quantities.actionUrl}\"\n * data-widget-event-change=\"changeAttribute\"\n * data-widget-event-change=\"changeAttribute\"\n * data-skip-validation=\"true\"\n * data-id=\"quantity-${selectId}\"\n * >\n * <label\n * class=\"b-sr_only\"\n * for=\"quantity-${selectId}\"\n * >\n * ${Resource.msg('label.quantity', 'common', null)}\n * </label>\n * <div class=\"b-stepper\">\n * <div\n * class=\"b-stepper-button\"\n * role=\"button\"\n * tabindex=\"-1\"\n * data-ref=\"buttonDecrease\"\n * data-event-click=\"decrement\"\n * >\n * <isinclude template=\"common/icons/standalone/minus\"/>\n * </div>\n * <input\n * id=\"quantity-${selectId}\"\n * class=\"b-stepper-input\"\n * aria-describedby=\"quantity-${selectId}-error\"\n * aria-valuemax=\"${product.quantities.max}\"\n * aria-valuemin=\"${product.quantities.min}\"\n * data-step=\"${product.quantities.step}\"\n * aria-valuenow=\"${product.quantities.currentValue}\"\n * value=\"${product.quantities.currentValue}\"\n * name=\"qty-${selectId}\"\n * required=\"required\"\n * type=\"number\"\n * data-ref=\"field\"\n * data-tau=\"product_quantity\"\n * data-event-input=\"handleInput\"\n * data-event-change=\"handleChange\"\n * data-event-blur=\"handleBlur\"\n * ${product.availability && product.availability.isOutOfStock ? 'disabled' : ''}\n * />\n * <div\n * class=\"b-stepper-button\"\n * role=\"button\"\n * tabindex=\"-1\"\n * data-ref=\"buttonIncrease\"\n * data-event-click=\"increment\"\n * >\n * <isinclude template=\"common/icons/standalone/plus\"/>\n * </div>\n * </div>\n * <div\n * role=\"alert\"\n * class=\"b-variations_item-error\"\n * id=\"quantity-${selectId}-error\"\n * data-ref=\"errorFeedback\"\n * hidden=\"hidden\"\n * ></div>\n * <script type=\"template/mustashe\" data-ref=\"template\">\n * .... dynamic content\n * </script>\n */\n class InputStepper extends BasicInput {\n prefs() {\n return {\n updateDelay: 500,\n attrUrl: '',\n ...super.prefs()\n };\n }\n\n /**\n * @description Setup init options for InputStepper\n * @returns {void}\n */\n initOptions() {\n // @ts-expect-error ts-migrate(2551) FIXME: Property 'minValue' does not exist on type 'InputS... Remove this comment to see the full error message\n this.minValue = this.getMinValue();\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'maxValue' does not exist on type 'InputS... Remove this comment to see the full error message\n this.maxValue = this.getMaxValue();\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'incrementStep' does not exist on type 'I... Remove this comment to see the full error message\n this.incrementStep = parseInt(this.ref('field').data('step').toString(), 10) || 1;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'currentValue' does not exist on type 'In... Remove this comment to see the full error message\n this.currentValue = parseInt(this.getValue(), 10);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isBusy' does not exist on type 'InputSte... Remove this comment to see the full error message\n this.isBusy = false;\n }\n\n /**\n * @description Initial widget logic\n * @returns {void}\n */\n init() {\n super.init();\n\n this.initOptions();\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'currentValue' does not exist on type 'In... Remove this comment to see the full error message\n this.setInputValue(this.currentValue);\n this.updateState();\n }\n\n /**\n * @description Updates widget options and state\n * @returns {void}\n */\n update() {\n this.initOptions();\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'currentValue' does not exist on type 'In... Remove this comment to see the full error message\n this.setInputValue(this.filterInput(this.currentValue), false);\n this.updateState();\n }\n\n /**\n * @description Get input value for ajax call. Need for PDP consistency only.\n * Should not be in generic component\n * @returns {this} current instance\n */\n getSelectedOptions() {\n return this;\n }\n\n /**\n * @description Handle keyboard events on input\n * @param {refElement} _ element\n * @param {KeyboardEvent} event Event\n * @returns {void}\n */\n handleKeydown(_, event) {\n let preventEventActions = false;\n const multiplier = 5;\n\n // For TS lint only\n\n // @ts-expect-error ts-migrate(2551) FIXME: Property 'minValue' does not exist on type 'InputS... Remove this comment to see the full error message\n if (this.minValue === undefined || this.maxValue === undefined) { return; }\n\n switch (event.keyCode) {\n case keyCode.UP:\n this.increment();\n preventEventActions = true;\n break;\n case keyCode.DOWN:\n this.decrement();\n preventEventActions = true;\n break;\n case keyCode.PAGEUP:\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'currentValue' does not exist on type 'In... Remove this comment to see the full error message\n this.setInputValue(this.filterInput(this.currentValue + multiplier));\n preventEventActions = true;\n break;\n case keyCode.PAGEDOWN:\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'currentValue' does not exist on type 'In... Remove this comment to see the full error message\n this.setInputValue(this.filterInput(this.currentValue - multiplier));\n preventEventActions = true;\n break;\n case keyCode.HOME:\n\n // @ts-expect-error ts-migrate(2551) FIXME: Property 'minValue' does not exist on type 'InputS... Remove this comment to see the full error message\n this.setInputValue(this.minValue);\n preventEventActions = true;\n break;\n case keyCode.END:\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'maxValue' does not exist on type 'InputS... Remove this comment to see the full error message\n this.setInputValue(this.maxValue);\n preventEventActions = true;\n break;\n default:\n break;\n }\n\n if (preventEventActions) {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n\n /**\n * @description Handle input event - filter input and pass to value and aria-now\n * @returns {void}\n */\n handleInput() {\n const value = this.getValue();\n const onlyDigitsValue = value.replace(/\\D/g, '');\n\n // remove submitting timeout even if input value will be invalid and never trigger update\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'submittingTimeout' does not exist on typ... Remove this comment to see the full error message\n if (this.submittingTimeout) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'submittingTimeout' does not exist on typ... Remove this comment to see the full error message\n this.submittingTimeout();\n }\n\n if (onlyDigitsValue !== value && onlyDigitsValue === '') {\n this.ref('field').val('');\n } else {\n this.setInputValue(this.filterInput(onlyDigitsValue));\n }\n }\n\n /**\n * @description Handle input change event\n * @returns {void}\n */\n handleChange() {\n this.updateState();\n }\n\n /**\n * @description Handle input blur event\n * @returns {void}\n */\n handleBlur() {\n if (!Number.isNaN(this.getValue())) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'currentValue' does not exist on type 'In... Remove this comment to see the full error message\n this.setInputValue(this.currentValue);\n }\n }\n\n /**\n * @description Increment button handler\n * @returns {void}\n */\n increment() {\n const value = parseInt(this.getValue(), 10);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'incrementStep' does not exist on type 'I... Remove this comment to see the full error message\n this.setInputValue(this.filterInput(value + this.incrementStep));\n }\n\n /**\n * @description Decrement button handler\n * @returns {void}\n */\n decrement() {\n const value = parseInt(this.getValue(), 10);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'incrementStep' does not exist on type 'I... Remove this comment to see the full error message\n this.setInputValue(this.filterInput(value - this.incrementStep));\n }\n\n /**\n * @description Filter input and set max, min, middle, current value in case of overflow, underflow,\n * corrupted input\n * @param {string|number} value value of input\n * @returns {number} filtered and processed input value\n */\n filterInput(value) {\n if (value === '' || value === '-') {\n return undefined;\n }\n\n const inputValue = (typeof value === 'string') ? parseInt(value, 10) : value;\n\n if (typeof inputValue !== 'number' || Number.isNaN(inputValue)) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'currentValue' does not exist on type 'In... Remove this comment to see the full error message\n return this.currentValue;\n }\n\n let result = inputValue;\n\n // @ts-expect-error ts-migrate(2551) FIXME: Property 'minValue' does not exist on type 'InputS... Remove this comment to see the full error message\n if (inputValue < this.minValue) {\n // @ts-expect-error ts-migrate(2551) FIXME: Property 'minValue' does not exist on type 'InputS... Remove this comment to see the full error message\n result = this.minValue;\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'maxValue' does not exist on type 'InputS... Remove this comment to see the full error message\n } else if (inputValue > this.maxValue) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'maxValue' does not exist on type 'InputS... Remove this comment to see the full error message\n result = this.maxValue;\n }\n\n // @ts-expect-error ts-migrate(2551) FIXME: Property 'minValue' does not exist on type 'InputS... Remove this comment to see the full error message\n if (!Number.isFinite(this.minValue)) {\n result = inputValue;\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'maxValue' does not exist on type 'InputS... Remove this comment to see the full error message\n } else if (!Number.isFinite(this.maxValue)) {\n result = inputValue;\n }\n\n return result;\n }\n\n /**\n * @description Set filtered or raw value to input value prop and attribute and aria-valuenow\n * @param {number} value value of input\n * @param {boolean} isUpdateRequired - flag to determine if change update is needed\n * @returns {void}\n */\n setInputValue(value, isUpdateRequired = true) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isBusy' does not exist on type 'InputSte... Remove this comment to see the full error message\n if (this.isBusy || Number.isNaN(value) || value === undefined) {\n return;\n }\n\n // We should always set values since it work like filter and override any incorrect input\n this.ref('field').val(value.toString());\n this.ref('field').attr('value', value.toString());\n this.ref('field').attr('aria-valuenow', value.toString());\n\n // Dispatch change only if value is actually changed\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'currentValue' does not exist on type 'In... Remove this comment to see the full error message\n if (this.currentValue === value) {\n return;\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'currentValue' does not exist on type 'In... Remove this comment to see the full error message\n this.currentValue = value;\n\n this.updateState();\n this.updateActionUrl();\n\n if (isUpdateRequired) {\n this.dispatchChange();\n }\n }\n\n /**\n * @description Dispatch change event\n * @returns {void}\n */\n dispatchChange() {\n this.emit('dismiss', this);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'submittingTimeout' does not exist on typ... Remove this comment to see the full error message\n if (this.submittingTimeout) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'submittingTimeout' does not exist on typ... Remove this comment to see the full error message\n this.submittingTimeout();\n }\n\n // @ts-expect-error ts-migrate(2345) FIXME: Argument of type 'number' is not assignable to par... Remove this comment to see the full error message\n const delay = parseInt(this.prefs().updateDelay, 10);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'submittingTimeout' does not exist on typ... Remove this comment to see the full error message\n this.submittingTimeout = timeout(() => this.emit('change', this), delay);\n }\n\n /**\n * @description Update product url with current quantity\n * @returns {void}\n */\n updateActionUrl() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'currentValue' does not exist on type 'In... Remove this comment to see the full error message\n const url = this.prefs().attrUrl.replace(/quantity=\\d*/g, 'quantity=' + this.currentValue);\n\n this.setPref('attrUrl', url);\n }\n\n /**\n * @description Update all buttons state depending of input value and state\n * @returns {void}\n */\n updateState() {\n const input = this.ref('field').get();\n\n if ((input && input.getAttribute('disabled')) !== null) {\n this.toggleButtonsState(this.ref('buttonIncrease'), true);\n this.toggleButtonsState(this.ref('buttonDecrease'), true);\n\n return;\n }\n\n this.toggleButtonsState(\n this.ref('buttonDecrease'),\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'currentValue' does not exist on type 'In... Remove this comment to see the full error message\n (this.currentValue <= this.minValue && Number.isFinite(this.minValue))\n );\n\n this.toggleButtonsState(\n this.ref('buttonIncrease'),\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'currentValue' does not exist on type 'In... Remove this comment to see the full error message\n (this.currentValue >= this.maxValue && Number.isFinite(this.maxValue))\n );\n }\n\n /**\n * @description Freeze component in case of async calls so user would not\n * be able to change value during call\n * @param {boolean} isBusy is input in busy state\n * @returns {void}\n */\n toggleBusy(isBusy) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isBusy' does not exist on type 'InputSte... Remove this comment to see the full error message\n this.isBusy = isBusy;\n this.ref('field').attr('readonly', isBusy ? 'readonly' : null);\n this.ref('self').attr('aria-busy', isBusy.toString());\n this.toggleButtonsState(this.ref('buttonIncrease'), isBusy);\n this.toggleButtonsState(this.ref('buttonDecrease'), isBusy);\n }\n\n /**\n * @description Update single button state\n * @param {refElement} button button control\n * @param {boolean} isDisabled is button disabled\n * @returns {void}\n */\n toggleButtonsState(button, isDisabled) {\n if (isDisabled) {\n button.attr('disabled', 'disabled');\n } else {\n button.attr('disabled', null);\n }\n }\n\n /**\n * @description Prepare min value from attributes\n * @returns {number} min value\n */\n getMinValue() {\n const min = this.ref('field').attr('aria-valuemin').toString();\n const minParsed = parseInt(min, 10);\n\n return (min && !Number.isNaN(minParsed)) ? minParsed : Infinity;\n }\n\n /**\n * @description Prepare max value from attributes\n * @returns {number} max value\n */\n getMaxValue() {\n const max = this.ref('field').attr('aria-valuemax').toString();\n const maxParsed = parseInt(max, 10);\n\n return (max && !Number.isNaN(maxParsed)) ? maxParsed : Infinity;\n }\n }\n\n return InputStepper;\n}\n","/**\n * @description Base InputTel implementation\n * @param MaskableInput Base widget for extending\n * @returns Input Tel class\n */\nexport default function (MaskableInput: ReturnType<typeof import('./MaskableInput').default>) {\n /**\n * @category widgets\n * @subcategory forms\n * @class InputTel\n * @augments MaskableInput\n * @classdesc Input type Tel implementation. Represents input `tel` element together with widget-related HTML markup.\n * HTML structure assembled on backend and injected into resulted html markup by using `formElement` component\n * and dynamic forms configuration JSON.\n * @property {string} data-widget - Widget name `inputTel`\n * @example <caption>Insertion of InputSelect inside ISML templates</caption>\n * <isset name=\"formElement\" value=\"${require('forms/formElement')}\" scope=\"page\"/>\n * ...\n * <form>\n * ...\n * <isprint value=\"${\n * formElement(pdict.addressForm.phone, pdict.addressFormOptions).render()\n * }\" encoding=\"off\"/>\n * ...\n * </form>\n * @example <caption>Resulted HTML structure for InputPhone</caption>\n * <div data-widget=\"inputTel\" data-mask=\"0-000-000-0000\"\n * class=\"b-form_section m-required m-invalid\"\n * data-id=\"dwfrm_shipping_shippingAddress_addressFields_phone\"\n * data-validation-config=\"... validation config\"\n * >\n * <label class=\"b-form_section-label\" for=\"dwfrm_shipping_shippingAddress_addressFields_phone\">\n * <span class=\"b-form_section-required\" aria-hidden=\"true\">\n * *\n * </span>\n * Phone Number\n * </label>\n * <input data-ref=\"field\" id=\"dwfrm_shipping_shippingAddress_addressFields_phone\"\n * type=\"tel\" class=\"b-input m-invalid\" placeholder=\"\" aria-describedby=\"dwfrm_shipping_shippingAddress_addressFields_phone-error\"\n * name=\"dwfrm_shipping_shippingAddress_addressFields_phone\" required=\"\" value=\"\" maxlength=\"20\"\n * aria-required=\"true\" minlength=\"5\" autocomplete=\"tel\" data-event-blur=\"validate\"\n * >\n * <div role=\"alert\" class=\"b-form_section-message\" data-ref=\"errorFeedback\" id=\"dwfrm_shipping_shippingAddress_addressFields_phone-error\">This field is required.</div>\n * <span id=\"dwfrm_shipping_shippingAddress_addressFields_phone-caption\" class=\"b-form_section-caption\">\n * Example: 1-888-123-4567\n * </span>\n * </div>\n */\n class InputTel extends MaskableInput {\n /**\n * @description Overloaded `setValue` in order to trigger mask re-validation\n * @param {(string|number|undefined)} [newVal] - set this value to input\n * @param {(boolean|undefined)} [silently] - if set to `true` - input should not be validated against a new value\n * @returns {void}\n */\n setValue(newVal = '', silently = false) {\n super.setValue(newVal, silently);\n\n if (this.mask) {\n this.mask.unmaskedValue = String(newVal);\n }\n }\n\n /**\n * @description Get input value\n * @returns {string} - return input name\n */\n getValue() {\n const value = this.mask\n ? this.mask.value\n : super.getValue();\n\n return value.replace(/(^\\+)|\\D/g, '$1');\n }\n }\n\n return InputTel;\n}\n","/**\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} refElement\n */\n\n/**\n * @description Base InputText implementation\n * @param BasicInput Base widget for extending\n * @returns Input Text class\n */\nexport default function (BasicInput: ReturnType<typeof import('widgets/forms/BasicInput').default>) {\n /**\n * @category widgets\n * @subcategory forms\n * @class InputText\n * @augments BasicInput\n * @classdesc Input type `text` implementation. Represents input `text` element together with widget-related HTML markup.\n * HTML structure assembled on backend and injected into resulted html markup by using `formElement` component\n * and dynamic forms configuration JSON.\n * @property {string} data-widget - Widget name `inputText`\n * @example <caption>InputText definition in dynamicforms.json</caption>\n * ...\n * // fields -> input -> text\n * text: {\n * extends: 'fields.input.base',\n * validation: {\n * 'patterns.security': 'validation.patterns.security',\n * 'errors.security': 'validation.errors.parse'\n * },\n * element: {\n * minLength: 2,\n * maxLength: 256,\n * type: 'text'\n * }\n * },\n * ...\n * // fields -> generic -> cardType\n * cardType: {\n * extends: 'fields.input.text',\n * 'label.text': 'form.payment.card.type',\n * element: {\n * type: 'hidden',\n * maxLength: 20,\n * required: true\n * }\n * },\n * ...\n * @example <caption>Insertion of InputText inside ISML templates</caption>\n * <isset name=\"formElement\" value=\"${require('forms/formElement')}\" scope=\"page\"/>\n * ...\n * <form>\n * ...\n * <isprint value=\"${\n * formElement(pdict.addressForm.address1, pdict.addressFormOptions).render()\n * }\" encoding=\"off\"/>\n * ...\n * </form>\n * @example <caption>Resulted HTML structure for InputText</caption>\n * <div data-widget=\"inputText\" class=\"b-form_section m-required m-invalid\"\n * data-id=\"dwfrm_shipping_shippingAddress_addressFields_lastName\" data-validation-config=\"... validation config\">\n * <label class=\"b-form_section-label\" for=\"dwfrm_shipping_shippingAddress_addressFields_lastName\">\n * <span class=\"b-form_section-required\" aria-hidden=\"true\">*</span>\n * Last Name\n * </label>\n * <input data-ref=\"field\" id=\"dwfrm_shipping_shippingAddress_addressFields_lastName\" type=\"text\"\n * class=\"b-input m-invalid\" placeholder=\"\" aria-describedby=\"dwfrm_shipping_shippingAddress_addressFields_lastName-error\"\n * pattern=\"...\" name=\"dwfrm_shipping_shippingAddress_addressFields_lastName\" required=\"\" value=\"\" maxlength=\"50\"\n * aria-required=\"true\" minlength=\"2\" autocomplete=\"family-name\" data-event-blur=\"validate\"\n * >\n * <div role=\"alert\" class=\"b-form_section-message\" data-ref=\"errorFeedback\" id=\"dwfrm_shipping_shippingAddress_addressFields_lastName-error\">This field is required.</div>\n * </div>\n */\n class InputText extends BasicInput {\n /**\n * @description Element on input handler\n * @listens dom#input\n * @emits InputText#input\n * @param {refElement} el source of event\n * @param {(Event|undefined)} event event instance if DOM event\n * @returns {void}\n */\n onInput(el, event) { // eslint-disable-line no-unused-vars\n /**\n * @description Event, indicates that `input` event happened\n * @event InputText#input\n */\n this.emit('input');\n }\n }\n\n return InputText;\n}\n","/**\n * @description Base InputTextarea implementation\n * @param InputText Base widget for extending\n * @returns Input Textarea class\n */\nexport default function (InputText: ReturnType<typeof import('widgets/forms/InputText').default>) {\n /**\n * @class InputTextarea\n * @augments InputText\n * @classdesc Input type InputTextarea implementation. Represents input `textarea` element together with widget-related HTML markup.\n * HTML structure assembled on backend and injected into resulted html markup by using `formElement` component\n * and dynamic forms configuration JSON.\n * Has a possibility to display number of entered symbols and how many of them are left to enter.\n * @property {string} data-widget - Widget name `inputTextarea`\n * @example <caption>InputTextarea definition in dynamicforms.json</caption>\n * ...\n * // fields -> input -> textarea\n * textarea: {\n * extends: 'fields.input.base',\n * validation: {\n * 'errors.security': 'validation.errors.parse'\n * },\n * element: {\n * minLength: 1,\n * maxLength: 256,\n * type: 'textarea'\n * }\n * },\n * ...\n * // forms -> shipping -> shippingAddress\n * giftMessage: {\n * widget: {\n * attributes: {\n * 'data-id': 'giftMessage'\n * },\n * classes: 'gift-message'\n * },\n * extends: 'fields.input.textarea',\n * 'label.text': 'form.gift.message',\n * 'label.showOptionalMarker': true,\n * element: {\n * maxcounter: true,\n * attributes: {\n * 'data-event-input': 'onInput'\n * },\n * placeholder: 'form.gift.placeholder'\n * }\n * }\n * @example <caption>Insertion of InputTextarea inside ISML templates</caption>\n * <isset name=\"formElement\" value=\"${require('forms/formElement')}\" scope=\"page\"/>\n * ...\n * <form>\n * ...\n * <isprint value=\"${\n * formElement(pdict.addressForm.giftMessage).render()\n * }\" encoding=\"off\"/>\n * ...\n * </form>\n * @example <caption>Resulted HTML structure for InputTextarea</caption>\n * <div data-widget=\"inputTextarea\" data-id=\"giftMessage\"\n * class=\"b-form_section gift-message m-valid\" data-validation-config=\"... validation config\"\n * >\n * <label class=\"b-form_section-label\" for=\"dwfrm_shipping_shippingAddress_giftMessage\">\n * Gift message (optional)\n * </label>\n * <textarea id=\"dwfrm_shipping_shippingAddress_giftMessage\"\n * class=\"b-textarea m-valid\" data-ref=\"field\" placeholder=\"Enter your text...\"\n * aria-describedby=\"dwfrm_shipping_shippingAddress_giftMessage-error\" rows=\"5\"\n * name=\"dwfrm_shipping_shippingAddress_giftMessage\" maxlength=\"256\" minlength=\"1\"\n * data-event-input=\"onInput\" data-event-blur=\"validate\"\n * ></textarea>\n * <div class=\"b-form_section-counter\">\n * <span class=\"b-form_section-counter_value\" data-ref=\"maxcounter\">256</span>\n * characters left\n * </div>\n * <div role=\"alert\" class=\"b-form_section-message\" data-ref=\"errorFeedback\" id=\"dwfrm_shipping_shippingAddress_giftMessage-error\" hidden=\"hidden\"></div>\n * </div>\n */\n class InputTextarea extends InputText {\n init() {\n super.init();\n this.onInput();\n }\n\n /**\n * @description On `input` InputTextarea logic. Gives a possibility to check how many symbols are entered\n * and restricts further input in case if max allowed characters reached.\n * @listens dom#input\n * @returns {void}\n */\n onInput() {\n if (!this.has('maxcounter')) {\n return;\n }\n\n const maxLength = Number(this.ref('field').attr('maxlength'));\n const currentInputValue = this.ref('field').val();\n\n if ((typeof currentInputValue === 'string') && (currentInputValue.length > maxLength)) {\n /**\n * Additional handling of input field value on paste to\n * avoid issues caused by browser incorrect value handling\n * https://bugs.webkit.org/show_bug.cgi?id=182725\n */\n this.ref('field').val(currentInputValue.slice(0, maxLength));\n }\n\n this.ref('maxcounter').setText(String(maxLength - this.ref('field').val().length));\n }\n }\n\n return InputTextarea;\n}\n","import IMask from 'imask';\n\n/**\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} RefElement\n*/\n\n/**\n * @param InputText Base widget for extending\n * @returns Maskable Input widget\n */\nexport default function (InputText: ReturnType<typeof import('./InputText').default>) {\n /**\n * @category widgets\n * @subcategory forms\n * @class MaskableInput\n * @augments InputText\n * @classdesc Adds mask functionality to a field\n * [Plugin page]{@link https://imask.js.org}\n * @property {string} data-mask - Mask pattern for field\n * @property {string} [data-mask-type] - Mask type. Currently two values are possible - String (default) and RegExp\n */\n class MaskableInput extends InputText {\n mask: any;\n\n prefs() {\n return {\n maskType: '',\n mask: '',\n ...super.prefs()\n };\n }\n\n /**\n * @description Init mask plugin\n * @returns {void}\n */\n init() {\n super.init();\n\n this.initMask();\n }\n\n /**\n * @description Initialize mask plugin\n * @returns {void}\n */\n initMask() {\n const field = this.ref('field').get();\n\n if (!field) {\n return;\n }\n\n this.mask = IMask(field, {\n mask: this.getMask()\n });\n }\n\n /**\n * @description Update mask on widget change\n * @returns {void}\n */\n onRefresh() {\n // Ref element object could contain link to old element at this moment\n setTimeout(() => {\n if (this.mask) {\n this.mask.destroy();\n }\n\n this.initMask();\n });\n }\n\n /**\n * @description Get mask for field\n * @returns {string|RegExp} Field mask\n */\n getMask() {\n let mask;\n\n switch (this.prefs().maskType) {\n case 'RegExp':\n mask = new RegExp(this.prefs().mask);\n break;\n default:\n mask = this.prefs().mask;\n }\n\n return mask;\n }\n }\n\n return MaskableInput;\n}\n","/**\n * @typedef {InstanceType<ReturnType<typeof import('widgets/forms/InputText').default>>} inputText\n */\n\n/**\n * @param AjaxForm Base widget for extending\n * @returns EmailSubscribe widget\n */\nexport default function (AjaxForm: ReturnType<typeof import('widgets/forms/AjaxForm').default>) {\n /**\n * @category widgets\n * @subcategory ajax\n * @class EmailSubscribe\n * @augments AjaxForm\n * @classdesc Serves email subscription form in footer.\n * The main purpose EmailSubscribe widget is to allow send/validate the request to server and handles server response\n * @property {string} data-widget - Widget name `emailSubscribe`\n * @property {string} data-event-submit - Event listener for form submission\n * @example <caption>Example of EmailSubscribe widget usage</caption>\n * <form action=\"${URLUtils.url('EmailSubscribe-Subscribe')}\" method=\"POST\" name=\"subscribe-form\"\n * data-widget=\"emailSubscribe\"\n * data-event-submit.prevent=\"handleSubmit\">\n * <div class=\"input-group\" data-ref=\"formContent\">\n * ... subscription form content\n * </div>\n * <div data-ref=\"successMessage\"></div>\n * </form>\n */\n class EmailSubscribe extends AjaxForm {\n prefs() {\n return {\n signupEmail: 'dwfrm_emailsubscribe_email',\n formContent: 'formContent',\n successBlock: 'successBlock',\n successMessage: 'successMessage',\n agreeToPrivacy: 'agreeToPrivacy',\n accessibilityAnnouncementMsg: '',\n ...super.prefs()\n };\n }\n\n /**\n * @description Handles email input\n * @param {inputText} el event source element\n * @returns {void}\n */\n onEmailInput(el) {\n const entered = el && el.getValue();\n\n if (entered && entered.length) {\n this.showAgreeToPrivacy();\n }\n }\n\n /**\n * @description Show agree to privacy block\n * @returns {void}\n */\n showAgreeToPrivacy() {\n this.ref('agreeToPrivacy').show();\n }\n\n /**\n * @description Handles server response\n * @emits \"alert.show\"\n * @param {object} data Server JSON response once form submitted\n * @returns {void}\n */\n onSubmitted(data) {\n if (data.success) {\n this.ref('formContent').hide();\n this.ref('successMessage')\n .setText(data.msg)\n .show();\n /**\n * @description Global event to show alert\n * @event \"alert.show\"\n */\n this.eventBus().emit('alert.show', {\n accessibilityAlert: this.prefs().accessibilityAnnouncementMsg\n });\n }\n\n if (!data.success) {\n if (data.fieldErrors) {\n Object.entries(data.fieldErrors).forEach(([name, errorMsg]) => {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'setError' does not exist on type 'Widget... Remove this comment to see the full error message\n this.getById(name, formField => formField.setError(errorMsg));\n });\n }\n\n if (data.msg) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'setError' does not exist on type 'Widget... Remove this comment to see the full error message\n this.getById(this.prefs().signupEmail, inputEmail => inputEmail.setError(data.msg));\n }\n }\n }\n }\n\n return EmailSubscribe;\n}\n","import { TWidget } from 'widgets/Widget';\nimport { timeout, isDOMElementFocusable } from 'widgets/toolbox/util';\nimport { scrollIntoView } from 'widgets/toolbox/scroll';\n\n/**\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} RefElement\n */\n\n/**\n * @param Widget Base widget for extending\n * @returns AccessibilityFocusMixin class\n */\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory global\n * @class AccessibilityFocusMixin\n * @augments Widget\n * @classdesc Base implementation for inheritance, to be used to handle focus-related actions like getting set of focusable inputs etc.\n * Also could be used to set focus on:\n * - concrete element in widget's markup by ref element\n * - first input in widget's markup\n * - first focusable element in widget's markup\n * This class is not intended to have a separate DOM widget. It should be used as a mixin for any other target widgets.\n */\n class AccessibilityFocusMixin extends Widget {\n /**\n * @description Get keyboard-focusable elements\n * @param {string} [refName] ref name to get focusable elements in, or nothing to get from `self`\n * @param {string[]} [types] array of elements selectors to search for, or nothing for default set\n * @returns {HTMLElement[]} array containing focusable elements, or empty array if no elements found\n */\n getFocusableElements(refName = 'self', types = []) {\n if (!types.length) {\n // @ts-expect-error ts-migrate(2322) FIXME: Type 'string' is not assignable to type 'never'.\n types = ['a', 'button', 'input', 'textarea', 'select', 'details'];\n }\n\n // @ts-expect-error ts-migrate(2345) FIXME: Argument of type 'string' is not assignable to par... Remove this comment to see the full error message\n types.push('[tabindex]:not([tabindex=\"-1\"])');\n const selector = types.join(',');\n let result = [];\n\n this.has(refName, refElement => {\n const htmlEl = refElement.get();\n\n if (htmlEl) {\n // @ts-expect-error ts-migrate(2322) FIXME: Type 'Element[]' is not assignable to type 'never[... Remove this comment to see the full error message\n result = Array.from(htmlEl.querySelectorAll(selector))\n .filter(el => isDOMElementFocusable(el));\n }\n });\n\n return result;\n }\n\n /**\n * @description Get keyboard-focusable input elements\n * @param {string} [refName] ref name to get focusable elements in, or nothing to get from `self`\n * @returns {HTMLElement[]} array containing focusable input elements, or empty array if no elements found\n */\n getFocusableInputElements(refName = 'self') {\n // @ts-expect-error ts-migrate(2322) FIXME: Type 'string' is not assignable to type 'never'.\n return this.getFocusableElements(refName, ['input', 'textarea', 'select']);\n }\n\n /**\n * @description Focus first element found in ref with min timeout\n * @param {string} [containerRefName] container ref name to get focusable elements in, or nothing to get from `self`\n * @param {string[]} [types] optional, array of elements selectors to search for, or nothing for default set\n * @param {boolean} [needScrollIntoView] scroll into view active element after focus\n * @returns {void}\n */\n focusFirst(containerRefName = 'self', types = [], needScrollIntoView = false) {\n const focusableElements = this.getFocusableElements(containerRefName, types);\n\n if (focusableElements.length) {\n timeout(() => {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'focus' does not exist on type 'never'.\n focusableElements[0].focus();\n\n if (needScrollIntoView) {\n scrollIntoView(focusableElements[0]); // Fix iOS not scrolled to focused element\n }\n }, 100);\n }\n }\n\n /**\n * @description Method to focus on first focusable input, accepts refName as param to search input in\n * @param {string} [containerRefName] container ref name to get focusable elements in, or nothing to get from `self`\n * @param {boolean} [needScrollIntoView] scroll into view active element after focus\n * @returns {void}\n */\n focusFirstInput(containerRefName = 'self', needScrollIntoView = false) {\n const focusableInputElements = this.getFocusableInputElements(containerRefName);\n\n if (focusableInputElements.length) {\n timeout(() => {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'focus' does not exist on type 'never'.\n focusableInputElements[0].focus();\n\n if (needScrollIntoView) {\n scrollIntoView(focusableInputElements[0]); // Fix iOS not scrolled to focused element\n }\n }, 100);\n }\n }\n\n /**\n * @description Method to focus on a concrete focusable element, accepts refName as param to search element\n * @param {string} [elementRefName] element ref name to check if it focusable, end set focus into it\n * @returns {void}\n */\n focusElement(elementRefName) {\n if (elementRefName) {\n this.has(elementRefName, (element) => {\n const domNode = element.get();\n\n if (domNode && isDOMElementFocusable(domNode)) {\n timeout(() => domNode.focus(), 100);\n }\n });\n }\n }\n }\n\n return AccessibilityFocusMixin;\n}\n","import { timeout, isDOMElementFocusable } from 'widgets/toolbox/util';\nimport { TWidget } from 'widgets/Widget';\n\n/**\n * @param {Widget} Widget Base widget for extending\n * @returns {typeof AccessibilityFocusTrapMixin} AccessibilityFocusTrapMixin class\n */\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory global\n * @class AccessibilityFocusTrapMixin\n * @augments Widget\n * @classdesc Base AccessibilityFocusTrapMixin implementation.\n * Used to trap focus inside widget according to usability requirements\n * Can be either looped or not\n * This class is not intended to have a separate DOM representation, but should be used as a mixin.\n * Creates in runtime 2 `span` elements inside widget, which has `tabindex=\"0\"` and can handle focus.\n * Once one of these spans are focused (depending last or first) - focus will be handled accordingly\n * (either stays at previously focused widget element, or will be looped).\n * @property {string} data-ref-last-focus-element - Reference to last possible focusable element\n * @property {string} data-ref-first-focus-element - Reference to first possible focusable element\n * @property {boolean} data-focus-loop - Do we need to loop focus inside widget?\n * @property {string} data-ref-traps-container - This ref element would be wrapped with 2 `span` elements - `firstTrapRef` and `lastTrapRef`\n * @property {string} data-first-trap-ref - Reference to first focusable `span` element to handle focus trap.\n * @property {string} data-last-trap-ref - Reference to last focusable `span` element to handle focus trap.\n * @property {number} data-focus-timeout - Timeout to set focus to element\n */\n class AccessibilityFocusTrapMixin extends Widget {\n prefs() {\n return {\n refFirstFocusElement: 'firstFocusElement',\n refLastFocusElement: 'lastFocusElement',\n focusLoop: true,\n refTrapsContainer: 'dialog',\n firstTrapRef: 'firstTrap',\n lastTrapRef: 'lastTrap',\n focusTimeout: 600,\n ...super.prefs()\n };\n }\n\n /**\n * @description Handle Focus Trap Last.\n * Either focuses on first element (in case of focus loop) or stays at last element.\n * If last element is not found - tries to set focus on first element (loop-like behavior)\n * @listens dom#focus\n * @returns {void}\n */\n handleFocusTrapLast() {\n if (this.prefs().focusLoop) {\n this.focusFirstElement();\n\n return;\n }\n\n const hasLastElement = this.focusLastElement();\n\n if (!hasLastElement) {\n this.focusFirstElement();\n }\n }\n\n /**\n * @description Handle Focus Trap First.\n * Either focuses on last element (in case of focus loop) or stays at first element.\n * @listens dom#focus\n * @returns {void}\n */\n handleFocusTrapFirst() {\n if (this.prefs().focusLoop) {\n this.focusLastElement();\n\n return;\n }\n\n this.focusFirstElement();\n }\n\n /**\n * @description Method to focus on element by ref id\n * @param {string} refId ref id of ref element\n * @returns {boolean} boolean indicating whether necessary ref element found\n */\n focusElement(refId) {\n return this.has(refId, (element) => {\n const domNode = element.get();\n\n if (domNode) { domNode.focus(); }\n });\n }\n\n /**\n * @description Focus first element\n * @returns {boolean} true if browser is able to focus on first element\n */\n focusFirstElement() {\n return this.focusElement(this.prefs().refFirstFocusElement)\n || this.focusFirstDescendant();\n }\n\n /**\n * @description Focus on first descendant element\n * @param {HTMLElement|Element|undefined} element container element\n * @returns {boolean} if browser successfully focused on first descendant element\n */\n focusFirstDescendant(element = undefined) {\n if (!element) {\n // @ts-expect-error ts-migrate(2322) FIXME: Type 'HTMLElement | undefined' is not assignable t... Remove this comment to see the full error message\n element = this.ref(this.prefs().refTrapsContainer).get();\n }\n\n if (element) {\n // @ts-expect-error ts-migrate(2532) FIXME: Object is possibly 'undefined'.\n for (let i = 0; i < element.children.length; i++) {\n // @ts-expect-error ts-migrate(2532) FIXME: Object is possibly 'undefined'.\n const child = element.children[i];\n\n if (child && (this.focusAttempt(child) || this.focusFirstDescendant(child))) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n /**\n * @description Focus last element\n * @returns {boolean} true if browser is able to focus on last element\n */\n focusLastElement() {\n return this.focusElement(this.prefs().refLastFocusElement)\n || this.focusLastDescendant();\n }\n\n /**\n * @description Focus on last descendant element\n * @param {HTMLElement|Element|undefined} element container element\n * @returns {boolean} if browser successfully focused on last descendant element\n */\n focusLastDescendant(element = undefined) {\n if (!element) {\n // @ts-expect-error ts-migrate(2322) FIXME: Type 'HTMLElement | undefined' is not assignable t... Remove this comment to see the full error message\n element = this.ref(this.prefs().refTrapsContainer).get();\n }\n\n if (element) {\n // @ts-expect-error ts-migrate(2532) FIXME: Object is possibly 'undefined'.\n for (let i = element.children.length - 1; i >= 0; i--) {\n // @ts-expect-error ts-migrate(2532) FIXME: Object is possibly 'undefined'.\n const child = element.children[i];\n\n if (child && (this.focusAttempt(child) || this.focusLastDescendant(child))) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n /**\n * @description Try to focus on element if it's focusable\n * @param {HTMLElement|Element} element target element to focus\n * @returns {boolean} if focus was successfully set to target element\n */\n focusAttempt(element) {\n if (!isDOMElementFocusable(element)) {\n return false;\n }\n\n try {\n element.focus();\n } catch (e) {\n // catch error\n }\n\n return (document.activeElement === element);\n }\n\n /**\n * @description Overridden `show` method, which will create 2 `span` elements for focus trap\n * on {@link Modal} show.\n * @returns {this} result\n */\n show() {\n super.show();\n\n if (!this.has(this.prefs().firstTrapRef) || !this.has(this.prefs().lastTrapRef)) {\n this.addFocusTraps();\n }\n\n return this;\n }\n\n /**\n * @description Creates 2 `span` element with `tabindex=\"0\"` to be able to handle focus selection as per accessibility requirements.\n * @returns {void}\n */\n addFocusTraps() {\n this.has(this.prefs().refTrapsContainer, trapsContainer => {\n const { firstTrapRef, lastTrapRef } = this.prefs();\n\n trapsContainer.prepend(\n `<span tabindex=\"0\" data-ref=\"${firstTrapRef}\" data-event-focus.prevent=\"handleFocusTrapFirst\"></span>`\n );\n trapsContainer.append(\n `<span tabindex=\"0\" data-ref=\"${lastTrapRef}\" data-event-focus.prevent=\"handleFocusTrapLast\"></span>`\n );\n\n this.onDestroy(() => {\n [firstTrapRef, lastTrapRef].forEach((ref) => {\n this.has(ref, el => {\n el.remove();\n });\n });\n });\n });\n }\n\n /**\n * @description focus first element after show modal (when keyboard navigation)\n * @returns {void}\n */\n afterShowModal() {\n this.onDestroy(timeout(() => this.focusFirstElement(), this.prefs().focusTimeout));\n }\n }\n\n return AccessibilityFocusTrapMixin;\n}\n","type IAccordionItem = InstanceType<ReturnType<typeof import('widgets/global/AccordionItem').default>>;\n\n/**\n * @description Base Accordion implementation\n * @param ListAccessibility Base widget for extending\n * @returns Accordion widget\n */\nexport default function (ListAccessibility: ReturnType<typeof import('widgets/global/ListAccessibility').default>) {\n /**\n * @category widgets\n * @subcategory global\n * @class Accordion\n * @augments ListAccessibility\n * @classdesc Represents Accordion component with next features:\n * 1. Configurable via data attributes single or multiple selection of panels\n * 2. Allow has opened or closed first panel\n * 3. Allow or disallow closing panel on second click\n * 4. Support keyboard navigation for accessibility\n *\n * Accordion widget should contain {@link AccordionItem} widgets that implement one accordion section.\n * Widget has next relationship:\n * * Accordion widget expand first item if such defined in `data-open-first` attribute by calling method {@link AccordionItem#openPanel}\n * * Close all items using method {@link AccordionItem#closePanel} by event {@link AccordionItem#event:closeallitems} from {@link AccordionItem} widget.\n * * Update current Accordion item using methods {@link AccordionItem#handleKeydown} and {@link AccordionItem#handleFocus} by event {@link AccordionItem#event:accordionitemupdate} from {@link AccordionItem} widget.\n *\n * @property {string} data-widget - Widget name `accordion`\n * @property {string} data-event-keydown - Event listener for `handleKeydown` method\n * @property {boolean} [data-allow-toggle=false] - Flag that allow or dissallow toggle\n * @property {boolean} [data-open-first=false] - Flag that open first item\n * @property {string} data-active-panel - Activate item by provided id\n * @property {boolean} [data-allow-multiple=false] - Flag that allow or dissallow multiple open items\n * @example <caption>Example of Single Selectable Accordion with one panel that is opened on init</caption>\n * <div\n * data-widget=\"accordion\"\n * data-allow-toggle=\"false\"\n * data-open-first=\"true\"\n * data-allow-multiple=\"false\"\n * class=\"b-footer_nav\"\n * >\n * <section\n * class=\"b-product_accordion-item\"\n * data-widget=\"accordionItem\"\n * data-widget-event-closeallitems=\"closeItems\"\n * data-widget-event-accordionitemupdate=\"updateFocusedItem\"\n * >\n * <button\n * class=\"b-refinements_accordion-button\"\n * data-ref=\"accordionItemBtn\"\n * data-event-click.prevent=\"togglePanel\"\n * data-event-keydown=\"handleKeydown\"\n * data-event-focus=\"handleFocus\"\n * type=\"button\"\n * >\n * <span class=\"b-refinements_accordion-title\">Account</span>\n * <span class=\"b-icon_chevron\"></span>\n * </button>\n * <div data-ref=\"accordionItemPanel\">\n * <div data-ref=\"accordionItemPanelInner\">\n * Account Panel content here\n * </div>\n * </div>\n * </section>\n * </div>\n * @example <caption>Example of Multi Selectable Accordion with two panel. First panel closed on init</caption>\n * <div\n * data-widget=\"accordion\"\n * data-allow-toggle=\"false\"\n * data-open-first=\"false\"\n * data-allow-multiple=\"true\"\n * class=\"b-footer_nav\"\n * >\n * <section\n * data-widget=\"accordionItem\"\n * data-widget-event-closeallitems=\"closeItems\"\n * data-widget-event-accordionitemupdate=\"updateFocusedItem\"\n * class=\"b-footer_nav-column\"\n * >\n * <h2 class=\"b-footer_nav-title\">\n * <button\n * data-ref=\"accordionItemBtn\"\n * data-event-click.prevent=\"togglePanel\"\n * data-event-keydown=\"handleKeydown\"\n * data-event-focus=\"handleFocus\"\n * class=\"b-footer_nav-button\"\n * type=\"button\"\n * >\n * <span>Account</span>\n * <span class=\"b-icon_chevron\"></span>\n * </button>\n * </h2>\n * <div data-ref=\"accordionItemPanel\">\n * <div data-ref=\"accordionItemPanelInner\">\n * Account Panel content here\n * </div>\n * </div>\n * </section>\n * <section\n * data-widget=\"accordionItem\"\n * data-widget-event-closeallitems=\"closeItems\"\n * data-widget-event-accordionitemupdate=\"updateFocusedItem\"\n * class=\"b-footer_nav-column\"\n * >\n * <h2 class=\"b-footer_nav-title\">\n * <button\n * data-ref=\"accordionItemBtn\"\n * data-event-click.prevent=\"togglePanel\"\n * data-event-keydown=\"handleKeydown\"\n * data-event-focus=\"handleFocus\"\n * class=\"b-footer_nav-button\"\n * type=\"button\"\n * >\n * Wishlist\n * </button>\n * </h2>\n * <div data-ref=\"accordionItemPanel\">\n * <div data-ref=\"accordionItemPanelInner\">\n * Wishlist Panel content here\n * </div>\n * </div>\n * </section>\n * </div>\n */\n\n class Accordion extends ListAccessibility {\n prefs() {\n return {\n allowToggle: false,\n allowMultiple: false,\n activePanel: '',\n openFirst: false,\n refreshListener: false,\n ...super.prefs()\n };\n }\n\n /**\n * @description Initialize widget logic\n */\n init() {\n super.init();\n this.defineItems();\n this.eachChild<IAccordionItem>((item) => {\n item.isToggleAllowed = this.prefs().allowToggle;\n item.isMultipleSections = this.prefs().allowMultiple;\n });\n\n if (this.prefs().openFirst && this.firstItem) {\n this.firstItem.openPanel();\n } else if (this.prefs().activePanel && this.items) {\n const AccordionItem = /** @type {AccordionItem} */(this.getConstructor('accordionItem'));\n const activeItem = this.items.find((item) => item.config.methodId === this.prefs().activePanel);\n\n if (activeItem instanceof AccordionItem) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'openPanel' does not exist on type 'Widge... Remove this comment to see the full error message\n activeItem.openPanel();\n }\n }\n\n if (this.prefs().refreshListener) {\n this.eventBus().on('refresh.accordion.close', 'closeItems');\n this.eventBus().on('refresh.accordion.reinit', 'reinit');\n }\n }\n\n /**\n * @description Reinit accordion once accordion has changed\n */\n reinit() {\n this.init();\n this.updateAccordionItems();\n }\n\n /**\n * @description Updates accordion items state\n */\n updateAccordionItems() {\n this.eachChild<IAccordionItem>((item) => {\n item.defineAttributes(item.isPanelOpen);\n item.updateState();\n });\n }\n\n /**\n * @description Update focused accordion item\n * @param accordionItem - Accordion item that fired event\n * @param action - action name of the update\n * @listens AccordionItem#accordionitemupdate\n */\n updateFocusedItem(accordionItem: IAccordionItem, action) {\n switch (action) {\n case 'current':\n this.currentItem = accordionItem;\n break;\n\n case 'next':\n this.setFocusToNextItem();\n break;\n\n case 'previous':\n this.setFocusToPreviousItem();\n break;\n\n case 'first':\n this.setFocusToFirstItem();\n break;\n\n case 'last':\n this.setFocusToLastItem();\n break;\n\n default:\n break;\n }\n }\n\n /**\n * @description Close items\n * @listens AccordionItem#closeallitems\n */\n closeItems() {\n this.eachChild<IAccordionItem>((accordionItem) => {\n accordionItem.closePanel();\n });\n }\n }\n\n return Accordion;\n}\n","import { RefElement } from 'widgets/toolbox/RefElement';\nimport { TWidget } from 'widgets/Widget';\n\nconst keyCode = Object.freeze({\n RETURN: 13,\n SPACE: 32,\n END: 35,\n HOME: 36,\n UP: 38,\n DOWN: 40\n});\n\nconst ARIA_EXPANDED = 'aria-expanded';\nconst ARIA_HIDDEN = 'aria-hidden';\nconst ARIA_DISABLED = 'aria-disabled';\n\n/**\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} RefElement\n */\n\n/**\n * @description Base AccordionItem implementation\n * @param Widget base widget class\n * @returns AccordionItem widget\n */\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory global\n * @class AccordionItem\n * @augments Widget\n * @classdesc Represents AccordionItem with specific logic for accordion item, handling viewtype changes, keyboard navigation\n * Represents AccordionItem component with next features:\n * 1. Configurable via data attribute epanded state\n * 2. Support keyboard navigation for accessibility\n * 3. Define accessibility\n * @property {string} data-widget - Widget name `accordionItem`\n * @property {string} data-event-keydown - Event listener for `handleKeydown` method\n * @property {string} data-event-click - Event listener for `togglePanel` method\n * @property {string} data-widget-event-accordionitemupdate - method to be triggered on parent's widget to update current accordion item\n * @property {boolean} [data-expanded=false] - Expanded flag\n * @category widgets\n * @subcategory global\n * @example\n * // use this code to display widget\n * <section\n * class=\"b-product_accordion-item\"\n * data-widget=\"accordionItem\"\n * data-widget-event-closeallitems=\"closeItems\"\n * data-widget-event-accordionitemupdate=\"updateFocusedItem\"\n * >\n * <button\n * class=\"b-refinements_accordion-button\"\n * data-ref=\"accordionItemBtn\"\n * data-event-click.prevent=\"togglePanel\"\n * data-event-keydown=\"handleKeydown\"\n * data-event-focus=\"handleFocus\"\n * type=\"button\"\n * >\n * <span class=\"b-refinements_accordion-title\">Account</span>\n * <span class=\"b-icon_chevron\"></span>\n * </button>\n * <div data-ref=\"accordionItemPanel\">\n * <div data-ref=\"accordionItemPanelInner\">\n * Panel content here\n * </div>\n * </div>\n * </section>\n */\n\n class AccordionItem extends Widget {\n /**\n * @description Is current panel opened\n */\n isPanelOpen = false;\n\n /**\n * @description Is panel toggle allowed\n */\n isToggleAllowed = false;\n\n /**\n * @description Is Multiple section are allowed to be opened in same time\n */\n isMultipleSections = false;\n\n /**\n * @description Returns Widget configuration object\n * @returns Widget configuration object\n */\n prefs() {\n return {\n accordionItemBtn: 'accordionItemBtn',\n accordionItemPanel: 'accordionItemPanel',\n accordionItemPanelInner: 'accordionItemPanelInner',\n expanded: false,\n animateToggle: true,\n ...super.prefs()\n };\n }\n\n /**\n * @description Initialize widget logic\n */\n init() {\n this.isPanelOpen = this.prefs().expanded;\n this.isToggleAllowed = false;\n this.isMultipleSections = false;\n this.defineAttributes(this.prefs().expanded);\n this.onDestroy(this.clearAttributes.bind(this));\n this.onDestroy(this.cleanPanelHeight.bind(this));\n\n if (!this.prefs().expanded) {\n this.closePanel();\n }\n }\n\n /**\n * @description Define attributes\n * @param [isOpen] Panel open flag\n */\n defineAttributes(isOpen?: boolean) {\n const accordionItemBtn = this.ref('accordionItemBtn');\n const accordionItemPanel = this.ref('accordionItemPanel');\n const accordionItemBtnID = accordionItemBtn.attr('id');\n const accordionItemPanelID = accordionItemPanel.attr('id');\n\n accordionItemBtn.attr('role', 'button');\n accordionItemBtn.attr('aria-controls', accordionItemPanelID);\n accordionItemBtn.attr(ARIA_EXPANDED, 'false');\n accordionItemBtn.attr('tabindex', '0');\n accordionItemPanel.attr('role', 'region');\n accordionItemPanel.attr('aria-labelledby', accordionItemBtnID);\n\n if (isOpen) {\n accordionItemPanel.attr(ARIA_HIDDEN, 'false');\n accordionItemBtn.attr(ARIA_EXPANDED, 'true');\n } else {\n accordionItemPanel.attr(ARIA_HIDDEN, 'true');\n accordionItemBtn.attr(ARIA_EXPANDED, 'false');\n }\n }\n\n /**\n * @description Clear Attributes\n */\n clearAttributes() {\n this.has(this.prefs().accordionItemBtn, (accordionItemBtn) => {\n accordionItemBtn.attr('role', false);\n accordionItemBtn.attr('aria-controls', false);\n accordionItemBtn.attr(ARIA_EXPANDED, false);\n accordionItemBtn.attr(ARIA_DISABLED, false);\n accordionItemBtn.attr('tabindex', false);\n });\n this.has(this.prefs().accordionItemPanel, (accordionItemPanel) => {\n accordionItemPanel.attr('role', false);\n accordionItemPanel.attr('aria-labelledby', false);\n accordionItemPanel.attr(ARIA_HIDDEN, false);\n });\n }\n\n /**\n * @description Set Focus\n */\n focus() {\n this.has(this.prefs().accordionItemBtn, (accordionItemBtn) => {\n accordionItemBtn.focus();\n });\n }\n\n /**\n * @description On Refresh Handler\n */\n onRefresh() {\n super.onRefresh();\n this.defineAttributes(this.isPanelOpen);\n\n if (!this.isPanelOpen) {\n this.closePanel();\n }\n }\n\n /**\n * @description Open panel\n * @emits AccordionItem#closeallitems\n * @emits AccordionItem#openpanel\n */\n openPanel() {\n if (!this.isMultipleSections) {\n /**\n * @description Event to close all items\n * @event AccordionItem#closeallitems\n */\n this.emit('closeallitems');\n }\n\n this.has(this.prefs().accordionItemBtn, (accordionItemBtn) => {\n accordionItemBtn.attr(ARIA_EXPANDED, 'true');\n\n if (!this.isToggleAllowed) {\n accordionItemBtn.attr(ARIA_DISABLED, 'true');\n }\n });\n this.has(this.prefs().accordionItemPanel,\n accordionItemPanel => this.togglePanelHeight(true, accordionItemPanel));\n\n this.isPanelOpen = true;\n /**\n * @description Event for opening panel\n * @event AccordionItem#openpanel\n */\n this.emit('openpanel');\n }\n\n /**\n * @description Close panel\n */\n closePanel() {\n this.has(this.prefs().accordionItemBtn, (accordionItemBtn) => {\n accordionItemBtn.attr(ARIA_EXPANDED, 'false');\n\n if (!this.isToggleAllowed) {\n accordionItemBtn.attr(ARIA_DISABLED, false);\n }\n });\n this.has(this.prefs().accordionItemPanel,\n accordionItemPanel => this.togglePanelHeight(false, accordionItemPanel));\n\n this.isPanelOpen = false;\n }\n\n /**\n * @description Toggle panel\n */\n togglePanel() {\n if (!this.isPanelOpen) {\n this.openPanel();\n } else if (this.isToggleAllowed) {\n this.closePanel();\n }\n }\n\n /**\n * @description Toggle panel height, so it could be properly animated.\n * It is required inner element to has content height properly.\n * @param isOpen Panel Open flag\n * @param panel IsOpen flag\n */\n togglePanelHeight(isOpen: boolean, panel: RefElement) {\n panel.attr(ARIA_HIDDEN, isOpen ? 'false' : 'true');\n }\n\n /**\n * @description Remove hard-coded panel height in case of widget destroyed\n */\n cleanPanelHeight() {\n this.has(this.prefs().accordionItemPanel, accordionItemPanel => {\n const element = accordionItemPanel.get();\n\n if (element) {\n element.style.height = '';\n }\n });\n }\n\n /**\n * @description Update accordion item state, recalculate item height\n * TODO: Describe approach for accordion height in case of content change\n */\n updateState() {\n this.has(this.prefs().accordionItemPanel,\n accordionItemPanel => this.togglePanelHeight(Boolean(this.isPanelOpen), accordionItemPanel));\n }\n\n /**\n * @description Focus Event handler\n * @emits AccordionItem#accordionitemupdate\n */\n handleFocus() {\n /**\n * @description Event to set focused Accordion item as current\n * @event AccordionItem#accordionitemupdate\n */\n this.emit('accordionitemupdate', 'current');\n }\n\n /**\n * @description Keydown Event handler\n * @listens dom#keydown\n * @param _ Source of keydown event\n * @param event Event object\n */\n handleKeydown(_: HTMLElement, event: KeyboardEvent) {\n let preventEventActions = false;\n\n switch (event.keyCode) {\n case keyCode.RETURN:\n case keyCode.SPACE:\n this.togglePanel();\n preventEventActions = true;\n\n break;\n\n case keyCode.HOME:\n /**\n * @description Event to set first Accordion item as current\n * @event AccordionItem#accordionitemupdate\n */\n this.emit('accordionitemupdate', 'first');\n preventEventActions = true;\n\n break;\n\n case keyCode.END:\n /**\n * @description Event to set last Accordion item as current\n * @event AccordionItem#accordionitemupdate\n */\n this.emit('accordionitemupdate', 'last');\n preventEventActions = true;\n\n break;\n\n case keyCode.UP:\n /**\n * @description Event to set previous Accordion item as current\n * @event AccordionItem#accordionitemupdate\n */\n this.emit('accordionitemupdate', 'previous');\n preventEventActions = true;\n\n break;\n\n case keyCode.DOWN:\n /**\n * @description Event to set next Accordion item as current\n * @event AccordionItem#accordionitemupdate\n */\n this.emit('accordionitemupdate', 'next');\n preventEventActions = true;\n\n break;\n\n default:\n break;\n }\n\n if (preventEventActions) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n // eslint-disable-next-line spellcheck/spell-checker\n /**\n * @description Hide description\n * @listens initerrorhandler\n */\n hideDescription(): void {\n this.ref('accordionItemPanelDescription').hide();\n }\n }\n\n return AccordionItem;\n}\n","import { debounce } from './../toolbox/debounce';\nimport { isSmallView } from './../toolbox/viewtype';\nimport { timeout } from 'widgets/toolbox/util';\nimport { TWidget } from 'widgets/Widget';\n\n/**\n * @param {Widget} Widget Base widget for extending\n * @returns {typeof BackToTop} BackToTop widget\n */\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory global\n * @class BackToTop\n * @augments Widget\n * @classdesc Back to top component. Allows scrolling window to top, pressing on a corresponding element.\n * The main functionality based on native anchor links to not only scroll the page but move focus to header.\n * This component only toggle button visibility depending on scroll position.\n * @property {string} data-widget - Widget name `backtotop`\n * @example <caption>Example of BackToTop widget usage</caption>\n * <div\n * class=\"\"\n * data-widget=\"backtotop\"\n * >\n * .... back to top element\n * </div>\n */\n class BackToTop extends Widget {\n prefs() {\n return {\n pageSize: 1.5,\n activeClassName: 'm-showed',\n ...super.prefs()\n };\n }\n\n /**\n * @description Initialize widget logic\n * @listens \"viewtype.change\"\n * @returns {void}\n */\n init() {\n super.init();\n // Async init to not block other widget init\n timeout(() => {\n this.doInit();\n this.eventBus().on('viewtype.change', 'doInit');\n }, 0);\n }\n\n /**\n * @description Attach scroll listener\n * @returns {void}\n */\n attachScrollListener() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'scrollDisposable' does not exist on type... Remove this comment to see the full error message\n this.scrollDisposable = this.ev('scroll', debounce(() => {\n this.toggleButtonVisibility();\n }, 50), window, true);\n }\n\n /**\n * @description Remove scroll listener\n * @returns {void}\n */\n removeScrollListener() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'scrollDisposable' does not exist on type... Remove this comment to see the full error message\n if (this.scrollDisposable) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'scrollDisposable' does not exist on type... Remove this comment to see the full error message\n this.scrollDisposable.forEach(disposable => disposable());\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'scrollDisposable' does not exist on type... Remove this comment to see the full error message\n this.scrollDisposable = null;\n }\n }\n\n /**\n * @description Initialize widget logic\n * @returns {void}\n */\n doInit() {\n if (isSmallView()) {\n this.removeScrollListener();\n } else {\n this.attachScrollListener();\n this.toggleButtonVisibility();\n }\n }\n\n /**\n * @description Toggle back to top button visibility\n * @returns {void}\n */\n toggleButtonVisibility() {\n const scrolled = document.body.scrollTop || document.documentElement.scrollTop;\n const windowHeight = window.innerHeight;\n const isButtonVisible = scrolled > (windowHeight * this.prefs().pageSize);\n\n this.ref('self')[isButtonVisible ? 'addClass' : 'removeClass'](this.prefs().activeClassName);\n }\n }\n\n return BackToTop;\n}\n","import { TWidget } from 'widgets/Widget';\n\nconst keyCode = Object.freeze({\n RETURN: 13,\n SPACE: 32\n});\n\n/**\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} refElement\n */\n\n/**\n * @description Base Button implementation\n * @param Widget - widget for extending\n * @returns Button widget\n */\nexport default function (Widget: TWidget) {\n /**\n * @class Button\n * @augments Widget\n * @classdesc Button widget, which could be used in different contextes (html-markup, inside widgets etc).\n * <br>Could be also used to trigger parent's widget method\n * @property {string} data-widget - Widget name `button`\n * @property {string} data-widget-event-click - Event listener to call Parent's widget method\n * @property {string} data-event-click - Event listener method `handleClick` for click event on widget\n * @property {boolean} data-prevent-action - Prevent action flag\n * @classdesc Represents Button component with the next features:\n * 1. Activate\\deactivate button visibility on the storefront\n * 2. Enable\\disable button visibility on the storefront\n * 3. Handles keydown by enter\\space keyboard button\n * 4. Sets button error\n * 5. Marks button as pressed\\unpressed\n *\n * @example <caption>Example of Button widget usage</caption>\n * <button type=\"submit\" class=\"btn btn-block btn-primary\"\n * data-widget=\"button\"\n * data-widget-event-click=\"handleSubmit\"\n * data-event-click.prevent=\"handleClick\"\n * data-id=\"submitButton\"\n * >\n * ${Resource.msg('button.text.loginform', 'login', null)}\n * </button>\n */\n class Button extends Widget {\n /**\n * @description Returns Widget configuration object\n * @returns {object} Widget configuration object\n */\n prefs() {\n return {\n classesError: 'm-error',\n classesActive: 'm-active',\n preventAction: false,\n ...super.prefs()\n };\n }\n\n /**\n * @description Widget initialization logic\n * @returns {void}\n */\n init() {\n super.init();\n\n if (!this.id) {\n this.id = String(this.config.id);\n }\n\n // @ts-expect-error ts-migrate(2551) FIXME: Property 'disabled' does not exist on type 'Button... Remove this comment to see the full error message\n this.disabled = this.ref('self').attr('disabled') === 'disabled';\n }\n\n /**\n * @description Handles button click\n * @listens dom:click\n * @emits Button#click\n * @returns {void}\n */\n handleClick() {\n if (!this.prefs().preventAction) {\n /**\n * @description Emits button click event\n * @event Button#click\n */\n this.emit('click', this);\n }\n }\n\n /**\n * @description Returns button value\n * @returns {string|refElement} result\n */\n getValue() {\n return this.ref('self').val();\n }\n\n /**\n * @param {(string|number|boolean|undefined)} val - Value to set into widget's val attribute\n * @returns {string|refElement} result\n */\n setValue(val = '') {\n this.setError();\n\n return this.ref('self').val(val);\n }\n\n /**\n * @description Returns button text\n * @returns {string} result\n */\n getText() {\n return this.ref('self').getText();\n }\n\n /**\n * @param {(string|undefined)} val - Value to set as a text of the Button\n * @returns {refElement} result\n */\n setText(val = '') {\n return this.ref('self').setText(val);\n }\n\n /**\n * @description Sets button text error\n * @param {(string|undefined)} err - Sets `err` as a Button text and\n * if `err` is not empty - adds error class to Button\n * @returns {void}\n */\n setError(err = '') {\n this.setText(err);\n\n if (err) {\n this.ref('self').addClass(this.prefs().classesError);\n }\n }\n\n /**\n * @description Method to mark element as `active`\n * @returns {Button} result\n */\n activate() {\n this.ref('self').addClass(this.prefs().classesActive);\n\n return this;\n }\n\n /**\n * @description Method to mark element as `inactive`\n * @returns {Button} result\n */\n deactivate() {\n this.ref('self').removeClass(this.prefs().classesActive);\n\n return this;\n }\n\n /**\n * @param {(boolean|undefined)} state true to show/false to hide/undefined to auto\n */\n toggleActive(state) {\n this.ref('self').toggleClass(this.prefs().classesActive, state);\n }\n\n /**\n * @description Check if a button has activated state\n * @returns {boolean} result\n */\n isActive() {\n return this.ref('self').hasClass(this.prefs().classesActive);\n }\n\n /**\n * @description Disables button\n * @returns {Button} result\n */\n disable() {\n // @ts-expect-error ts-migrate(2551) FIXME: Property 'disabled' does not exist on type 'Button... Remove this comment to see the full error message\n this.disabled = true;\n this.ref('self').disable();\n\n return this;\n }\n\n /**\n * @description Enables button\n * @returns {Button} result\n */\n enable() {\n // @ts-expect-error ts-migrate(2551) FIXME: Property 'disabled' does not exist on type 'Button... Remove this comment to see the full error message\n this.disabled = false;\n this.ref('self').enable();\n\n return this;\n }\n\n /**\n * @description Marks button as busy\n * @returns {void}\n */\n busy() {\n // @ts-expect-error ts-migrate(2551) FIXME: Property 'isBusy' does not exist on type 'Button'.... Remove this comment to see the full error message\n this.isBusy = true;\n this.ref('self').attr('aria-busy', 'true');\n }\n\n /**\n * @description Marks button as unbusy\n * @returns {void}\n */\n unbusy() {\n // @ts-expect-error ts-migrate(2551) FIXME: Property 'isBusy' does not exist on type 'Button'.... Remove this comment to see the full error message\n this.isBusy = false;\n this.ref('self').attr('aria-busy', 'false');\n }\n\n /**\n * @description Marks button as selected\n * @returns {void}\n */\n select() {\n // @ts-expect-error ts-migrate(2551) FIXME: Property 'selected' does not exist on type 'Button... Remove this comment to see the full error message\n this.selected = true;\n this.ref('self').attr('aria-selected', 'true');\n }\n\n /**\n * @description Marks button as unselected\n * @returns {void}\n */\n unselect() {\n // @ts-expect-error ts-migrate(2551) FIXME: Property 'selected' does not exist on type 'Button... Remove this comment to see the full error message\n this.selected = false;\n this.ref('self').attr('aria-selected', 'false');\n }\n\n /**\n * @description Method to mark button as `pressed`.\n * Used only for button with 2 different states when pressed and not pressed. Ex:\n * Play / Paused; Favorite / Not favorite, etc.\n * @returns {Button} result\n */\n press() {\n this.ref('self').attr('aria-pressed', 'true');\n\n return this;\n }\n\n /**\n * @description Method to mark button as `unpressed`. Used only in buttons with 2 states.\n * @returns {Button} result\n */\n unpress() {\n this.ref('self').attr('aria-pressed', 'false');\n\n return this;\n }\n\n /**\n * @description Returns button name\n * @returns {string|refElement} result\n */\n getName() {\n return this.ref('self').attr('name');\n }\n\n /**\n * @description Focus to element\n * @returns {Button} - return instance for chaining\n */\n focus() {\n this.ref('self').focus();\n\n return this;\n }\n\n /**\n * @description Sets button to be accountable with `tab` button navigation\n * @returns {Button} - return instance for chaining\n */\n setTabIndex() {\n this.ref('self').attr('tabindex', '0');\n\n return this;\n }\n\n /**\n * @description Sets button to be not accountable with `tab` button navigation\n * @returns {Button} - return instance for chaining\n */\n unsetTabIndex() {\n this.ref('self').attr('tabindex', '-1');\n\n return this;\n }\n\n /**\n * @description Keydown Event handler\n * @param {HTMLElement} _ Source of keydown event\n * @param {KeyboardEvent} event Event object\n * @listens dom:keydown\n * @returns {void}\n */\n handleKeydown(_, event) {\n let preventEventActions = false;\n\n switch (event.keyCode) {\n case keyCode.RETURN:\n case keyCode.SPACE:\n this.handleClick();\n preventEventActions = true;\n\n break;\n\n default:\n break;\n }\n\n if (preventEventActions) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n /**\n * @description Method to add class to widget container. Allows chaining.\n * @param {string} className a class name to add to widget container\n * @returns {Button} result\n */\n addClass(className) {\n this.ref('self').addClass(className);\n\n return this;\n }\n\n /**\n * @description Method to remove class from widget container. Allows chaining.\n * @param {string} className a class name to remove from widget container\n * @returns {Button} result\n */\n removeClass(className) {\n this.ref('self').removeClass(className);\n\n return this;\n }\n }\n\n return Button;\n}\n","/**\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} refElement\n */\n\n/**\n * @description Base ButtonWithIcon implementation\n * @param Button Base widget for extending\n */\nexport default function (Button: ReturnType<typeof import('widgets/global/Button').default>) {\n /**\n * @class ButtonWithIcon\n * @augments Button\n * @classdesc ButtonWithIcon widget, which could be used together with icon\n * @property {string} data-widget - Widget name `processButton`\n * @property {string} data-widget-event-click - Event listener to call Parent's widget method\n * @property {string} data-event-click - Event listener method `handleClick` for click event on widget\n * @example\n * // use this code to display widget\n * <button type=\"submit\" class=\"btn btn-block btn-primary\"\n * data-widget=\"buttonWithIcon\"\n * >\n * <!-- svg icon below -->\n * <isinclude template=\"/common/svg/wishlist\" />\n *\n * <span class=\"container\">\n * ${Resource.msg('button.text.loginform', 'login', null)}\n * </span>\n * </button>\n */\n class ButtonWithIcon extends Button {\n /**\n * @description Get Text\n * @returns {string} Button Text\n */\n getText() {\n return this.ref('container').getText();\n }\n\n /**\n * @description Set Text\n * @param {(string|undefined)} val - Value to set as a text of the Button\n * @returns {refElement} Reference element\n */\n setText(val = '') {\n return this.ref('container').setText(val);\n }\n }\n\n return ButtonWithIcon;\n}\n","import { scrollElementTo } from 'widgets/toolbox/scroll';\nimport { getViewType } from 'widgets/toolbox/viewtype';\nimport cssLoadChecker from 'widgets/toolbox/cssLoadChecker';\nimport { timeout } from 'widgets/toolbox/util';\nimport { TWidget } from 'widgets/Widget';\nimport { IRefElement } from 'widgets/toolbox/RefElement';\n\nconst DEFAULT_DIRECTION = 'horizontal';\n\nconst keyCode = Object.freeze({\n RETURN: 13,\n SPACE: 32\n});\n\n/**\n * @param Widget Base widget for extending\n * @returns Carousel class\n */\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory global\n * @class Carousel\n * @augments Widget\n * @classdesc Represents Carousel component with next features:\n * 1. Allow to set carousel direction based on the view type\n * 2. Allow to use pagination for carousel rendered by mustache template\n * 3. Allow to scroll carousel to the next/previous/custom( index can be passed to the method) page index\n * 4. Allow to scroll by on the page click(can be used for carousel with thumbnails)\n * 5. Allow to scroll to custom element's position\n * 6. Allow to scroll to focused element\n * 7. Support mousemove, touchmove, mouseup, mousedown, keydown event so we can use carousel even on touch devices.\n * Also we can control carouse with keyboard\n * 8. Allow to get carousel images\n *\n * <br>Uses as a basis slider from here (ScrollCarousel.js):\n * <br>https://github.com/dimanech/aria-components/tree/master/cartridge1/js/components/carousels/carousel\n * @property {string} data-widget - Widget name `carousel`\n * @property {string} data-elem-prev-button - Previous button element\n * @property {string} data-elem-next-button - Next button element\n * @property {string} data-elem-carousel-track - Carousel inner element\n * @property {string} data-direction - Carousel direction - an object, contains direction per viewport\n * @example <caption>Example of Carousel widget usage</caption>\n * <div\n * data-widget=\"carousel\"\n * data-elem-prev-button=\"elemPrevButton\"\n * data-elem-next-button=\"elemNextButton\"\n * data-elem-carousel-track=\"elemCarouselTrack\"\n * data-direction='{\n * \"small\": \"horizontal\",\n * \"medium\": \"horizontal\",\n * \"large\": \"vertical\",\n * \"extraLarge\": \"vertical\"\n * }'\n * >\n * <button\n * class=\"carousel__ctrl _prev\"\n * data-elem-prev-button\n * tabindex=\"-1\"\n * aria-hidden=\"true\"\n * data-ref=\"elemPrevButton\"\n * data-event-click=\"scrollToPrevPage\"\n * >Prev</button>\n * <div\n * class=\"carousel__track\"\n * data-elem-carousel-track\n * data-ref=\"elemCarouselTrack\"\n * data-event-scroll=\"onScroll\"\n * data-event-touchstart=\"onScroll\"\n * data-event-mousedown.prevent=\"onMouseDown\"\n * data-event-mouseup=\"onMouseUp\"\n * >\n * <isloop items=\"${slotcontent.content}\" var=\"contentAsset\">\n * <div class=\"box _single\" tabindex=\"0\">\n * <isprint value=\"${contentAsset.custom.body}\" encoding=\"off\" />\n * </div>\n * </isloop>\n * </div>\n * <button\n * class=\"carousel__ctrl _next\"\n * data-elem-next-button\n * tabindex=\"-1\"\n * aria-hidden=\"true\"\n * data-ref=\"elemNextButton\"\n * data-event-click=\"scrollToNextPage\"\n * >Next</button>\n * <div class=\"pagination\" data-ref=\"pagination\"></div>\n * <script type=\"template/mustache\" data-ref=\"template\">\n * <div class=\"pagination\" data-ref=\"pagination\">\n * {{${'#'}pagination}}\n * <button\n * class=\"page\"\n * data-page=\"{{page}}\"\n * tabindex=\"-1\"\n * data-event-click.prevent=\"handlePaginationClick\"\n * >\n * </button>\n * {{/pagination}}\n * </div>\n * </script>\n * </div>\n */\n class Carousel extends Widget {\n currentPage = 0;\n\n pagination: Promise<HTMLElement> | undefined;\n\n private scrollingTimeoutValue = 60;\n\n private grabbingTimeoutValue = 60;\n\n private delta = 0;\n\n private roundingDelta = 1;\n\n private carouselDirection = DEFAULT_DIRECTION;\n\n private carouselDimension = 0;\n\n private initialCoordinate = 0;\n\n private initialScrollPosition = 0;\n\n private isScrollStart: boolean | undefined;\n\n private isScrollEnd: boolean | undefined;\n\n private mouseMoveDisposable?: (() => void)[] | undefined;\n\n private mouseLeaveDisposable?: (() => void)[] | undefined;\n\n private scrollingTimeout: NodeJS.Timeout | undefined;\n\n private grabbingRemoveTimeout: NodeJS.Timeout | undefined;\n\n private isCallInNextFrameRequested: boolean | undefined;\n\n prefs() {\n return {\n elemPrevButton: 'elemPrevButton',\n elemNextButton: 'elemNextButton',\n elemCarouselTrack: 'elemCarouselTrack',\n pagerCurrentClass: 'm-current',\n grabbingClass: 'm-grabbing',\n mouseMoveNavigationClass: 'm-mousemove_navigation',\n direction: {\n small: 'horizontal',\n medium: 'horizontal',\n large: 'horizontal',\n extraLarge: 'horizontal'\n },\n ...super.prefs()\n };\n }\n\n /**\n * @description Widget initialization\n */\n init() {\n super.init();\n // Async loading to not block other widget init\n timeout(() => {\n cssLoadChecker.get().then(() => this.initCarousel());\n }, 0);\n }\n\n /**\n * @description Initial carousel configuration\n * @listens \"viewtype.change\"\n */\n initCarousel(): void {\n this.defineCarouselDirection();\n this.eventBus().on('viewtype.change', 'onViewtypeChange');\n this.ev('focusin', this.handleScrollToFocusedItem, this.ref(this.prefs().elemCarouselTrack).get());\n\n this.onScroll();\n this.updateCarouselState();\n this.initPagination();\n this.setActivePagination();\n this.getCarouselDimension();\n\n this.ref('self').addClass('m-inited');\n }\n\n /**\n * @description Update carousel. Used on PDP variation change\n * @returns Carousel instance\n */\n update(): Carousel {\n this.initCarousel();\n\n return this;\n }\n\n /**\n * @description Viewtype change event handler. Recalculates carousel dimension and redefines carousel direction.\n */\n onViewtypeChange(): void {\n this.defineCarouselDirection();\n this.getCarouselDimension();\n }\n\n /**\n * @description Scroll carousel to the next page\n * @listens dom#click\n */\n scrollToNextPage(): void {\n const elemCarouselTrack = this.ref(this.prefs().elemCarouselTrack).get();\n\n if (this.carouselDirection === 'horizontal') {\n elemCarouselTrack?.scrollBy(this.carouselDimension, 0);\n } else {\n elemCarouselTrack?.scrollBy(0, this.carouselDimension);\n }\n }\n\n /**\n * @description Scroll carousel to the previous page\n * @listens dom#click\n */\n scrollToPrevPage(): void {\n const elemCarouselTrack = this.ref(this.prefs().elemCarouselTrack).get();\n\n if (this.carouselDirection === 'horizontal') {\n elemCarouselTrack?.scrollBy(-this.carouselDimension, 0);\n } else {\n elemCarouselTrack?.scrollBy(0, -this.carouselDimension);\n }\n }\n\n /**\n * @description Scroll carousel to the page index\n * @param pageIndex Page index scroll to\n * @returns Carousel instance\n */\n scrollToPage(pageIndex: number): Carousel {\n const slideDimension = this.ref(this.prefs().elemCarouselTrack).get()?.firstElementChild?.clientWidth || 0;\n const pageStarPoint = Math.round(slideDimension * pageIndex);\n\n if (this.carouselDirection === 'horizontal') {\n this.scrollTo(0, pageStarPoint);\n } else {\n this.scrollTo(pageStarPoint, 0);\n }\n\n return this;\n }\n\n /**\n * @description Scroll element to point\n * @param top top position\n * @param left left position\n */\n scrollTo(top: number, left: number): void {\n const elemCarouselTrack = this.ref(this.prefs().elemCarouselTrack).get();\n\n if (elemCarouselTrack) {\n scrollElementTo(elemCarouselTrack, top, left);\n }\n }\n\n /**\n * @description On scroll we update carousel controls state\n */\n onScroll(): void {\n this.updateCarouselMetric();\n\n if (!this.isCallInNextFrameRequested) {\n window.requestAnimationFrame(this.updateDuringScroll.bind(this));\n\n this.isCallInNextFrameRequested = true;\n }\n }\n\n /**\n * @description On carousel scroll end handler\n * @emits Carousel#pagechanged\n */\n onScrollEnd(): void {\n /**\n * @description Event to carousel page change\n * @event Carousel#pagechanged\n */\n this.emit('pagechanged', this.getCurrentPageIndex());\n }\n\n /**\n * @description Update carousel during scroll\n */\n updateDuringScroll(): void {\n this.updateCarouselState();\n\n if (this.pagination) {\n this.setActivePagination();\n } else {\n this.initPagination();\n }\n\n if (this.scrollingTimeout) {\n clearTimeout(this.scrollingTimeout);\n }\n\n this.scrollingTimeout = setTimeout(() => this.onScrollEnd(), this.scrollingTimeoutValue);\n\n this.isCallInNextFrameRequested = false;\n }\n\n /**\n * @description Update carousel state\n */\n updateCarouselState(): void {\n const carousel = this.ref('self');\n const elemPrevButton = this.ref(this.prefs().elemPrevButton);\n const elemNextButton = this.ref(this.prefs().elemNextButton);\n\n carousel.toggleClass('m-no_scroll', this.hasNoScroll());\n\n if (this.isScrollStart) {\n carousel.removeClass('m-prev_visible');\n elemPrevButton.attr('disabled', '');\n } else {\n carousel.addClass('m-prev_visible');\n elemPrevButton.attr('disabled', false);\n }\n\n if (this.isScrollEnd) {\n carousel.removeClass('m-next_visible');\n elemNextButton.attr('disabled', '');\n } else {\n carousel.addClass('m-next_visible');\n elemNextButton.attr('disabled', false);\n }\n }\n\n /**\n * @description Update carousel metric\n */\n updateCarouselMetric(): void {\n const carouselTrackElem = this.ref(this.prefs().elemCarouselTrack).get();\n const carouselElem = this.ref('self').get();\n\n const roundingDelta = this.roundingDelta;\n\n if (carouselTrackElem && carouselElem) {\n if (this.carouselDirection === 'horizontal') {\n const totalScrollWidth = Math.max(0, carouselTrackElem.scrollLeft) + carouselElem.offsetWidth;\n\n // We are comparing with 1 instead of 0 as Chrome has a problem calculating the width with RTL text direction\n this.isScrollStart = Math.max(0, carouselTrackElem.scrollLeft) <= 1;\n this.isScrollEnd = (totalScrollWidth + roundingDelta) >= carouselTrackElem.scrollWidth;\n\n this.checkTrackLimits(carouselTrackElem, 'horizontal');\n } else {\n const totalScrollHeight = carouselTrackElem.scrollTop + carouselTrackElem.offsetHeight;\n\n this.isScrollStart = Math.max(0, carouselTrackElem.scrollTop) <= 0;\n this.isScrollEnd = (totalScrollHeight + roundingDelta) >= carouselTrackElem.scrollHeight;\n }\n }\n }\n\n /**\n * @param carouselTrackElem our carousel track HTML element\n * @param direction whether the carousel is a vertical or horizontal one\n */\n checkTrackLimits(carouselTrackElem: HTMLElement, direction: string) {\n if (direction === 'horizontal') {\n if (carouselTrackElem.scrollLeft < 0) {\n carouselTrackElem.scrollLeft = 0;\n }\n\n if (carouselTrackElem.scrollLeft + carouselTrackElem.offsetWidth > carouselTrackElem.scrollWidth) {\n carouselTrackElem.scrollLeft = carouselTrackElem.scrollWidth;\n }\n }\n }\n\n /**\n * @description Method to get carousel dimension (width or height) depending on carousel direction\n * @returns width or height of carousel\n */\n getCarouselDimension(): number {\n if (!this.carouselDimension) {\n const carouselTrack = this.ref(this.prefs().elemCarouselTrack).get();\n\n if (!carouselTrack) {\n return 0;\n }\n\n this.carouselDimension = this.carouselDirection === 'horizontal'\n ? carouselTrack.clientWidth\n : carouselTrack.clientHeight;\n }\n\n return this.carouselDimension;\n }\n\n getCurrentScrollPosition(): number {\n const carouselTrack = this.ref('elemCarouselTrack').get();\n\n if (!carouselTrack) {\n return 0;\n }\n\n return this.carouselDirection === 'horizontal' ? carouselTrack.scrollLeft : carouselTrack.scrollTop;\n }\n\n /**\n * @description set carousel direction property from widget config\n */\n defineCarouselDirection() {\n this.carouselDirection = this.prefs().direction[getViewType()] || DEFAULT_DIRECTION;\n }\n\n /**\n * @description Check if carousel has no scroll\n * @returns indicated is carousel has no scroll\n */\n hasNoScroll(): boolean {\n return Boolean(this.isScrollStart && this.isScrollEnd);\n }\n\n // Swipe / Drag\n // =====================================================================\n\n /**\n * @description Initialize mouse move handling on mouse down\n * @listens dom#mousedown\n * @param el source of event\n * @param event event instance in DOM\n */\n onMouseDown(el: IRefElement, event: MouseEvent): void {\n this.initialCoordinate = this.getCurrentCoordinate(event);\n this.initialScrollPosition = this.getCurrentScrollPosition();\n\n const elemCarouselTrack = this.ref(this.prefs().elemCarouselTrack).get();\n\n if (!elemCarouselTrack) {\n return;\n }\n\n elemCarouselTrack.classList.add(this.prefs().mouseMoveNavigationClass);\n\n this.mouseMoveDisposable = this.ev<HTMLElement, MouseEvent>('mousemove', this.onMouseMove, elemCarouselTrack);\n this.mouseLeaveDisposable = this.ev<HTMLElement, MouseEvent>('mouseleave', this.onMouseUp, elemCarouselTrack);\n\n if (this.grabbingRemoveTimeout) {\n clearTimeout(this.grabbingRemoveTimeout);\n }\n }\n\n /**\n * @description Handle Mouse/Touch move\n * @listens dom#mousemove\n * @listens dom#touchmove\n * @param element HTMLElement\n * @param event DOM event\n */\n onMouseMove(element: HTMLElement, event: TouchEvent | MouseEvent): void {\n const currentCoordinate = this.getCurrentCoordinate(event);\n\n if (!this.initialCoordinate && this.initialCoordinate === currentCoordinate) {\n return;\n }\n\n this.delta = (this.initialCoordinate - currentCoordinate);\n\n const elemCarouselTrack = this.ref(this.prefs().elemCarouselTrack).get();\n\n if (!elemCarouselTrack) {\n return;\n }\n\n elemCarouselTrack.classList.add(this.prefs().grabbingClass);\n\n if (!this.delta) {\n return;\n }\n\n if (this.carouselDirection === 'horizontal') {\n elemCarouselTrack.scrollLeft = this.clamp(this.initialScrollPosition + this.delta, 0, elemCarouselTrack.scrollWidth);\n } else {\n elemCarouselTrack.scrollTop = this.clamp(this.initialScrollPosition + this.delta, 0, elemCarouselTrack.scrollHeight);\n }\n }\n\n /**\n * @param val our number value, this being our scroll location\n * @param min our min possible value, this is typically 0, can't scroll beyond 0\n * @param max our max possile value, this is the scroll width of the element, so we can't go right beyond its limit\n * @returns number\n */\n clamp(val: number, min: number, max: number) {\n // eslint-disable-next-line no-nested-ternary\n return val > max ? max : val < min ? min : val;\n }\n\n /**\n * @description Mouseup event handler\n * @listens dom#mouseup\n */\n onMouseUp(): void {\n if (this.mouseMoveDisposable) {\n this.mouseMoveDisposable.forEach(disposable => disposable());\n this.mouseMoveDisposable = undefined;\n }\n\n if (this.mouseLeaveDisposable) {\n this.mouseLeaveDisposable.forEach(disposable => disposable());\n this.mouseLeaveDisposable = undefined;\n }\n\n // we should remove scroll-snap-type with delay, otherwise it cause bouncing\n const elemCarouselTrack = this.ref(this.prefs().elemCarouselTrack);\n\n this.grabbingRemoveTimeout = setTimeout(\n () => elemCarouselTrack.removeClass(this.prefs().grabbingClass),\n this.grabbingTimeoutValue\n );\n\n // elemCarouselTrack.removeClass(this.prefs().grabbingClass);\n }\n\n /**\n * @description Method to get event coordinate depending on carousel direction\n * @param event event object\n * @returns event coordinate\n */\n getCurrentCoordinate(event: MouseEvent | TouchEvent) {\n let currentCoordinate = 0;\n\n if (event instanceof MouseEvent) {\n currentCoordinate = this.carouselDirection === 'horizontal'\n ? event.clientX\n : event.clientY;\n } else if (event instanceof TouchEvent) {\n currentCoordinate = this.carouselDirection === 'horizontal'\n ? event.touches[0].pageX\n : event.touches[0].pageY;\n }\n\n return currentCoordinate;\n }\n\n // Pagination\n // =====================================================================\n\n /**\n * @description Pagination init logic\n */\n initPagination(): void {\n if (this.hasNoScroll()) {\n return;\n }\n\n this.has('pagination', paginationRefEl => {\n const pagination = paginationRefEl.get();\n\n if (pagination) {\n // If empty pagination - we need to render it. Otherwise - create.\n if (pagination.innerHTML === '') {\n this.createPaginationElements();\n } else {\n this.pagination = Promise.resolve(pagination);\n }\n }\n });\n }\n\n /**\n * @description Pagination click handler\n * @listens dom#click\n * @param el source of event\n */\n handlePaginationClick(el: IRefElement): void {\n const pageIndex = el.data('page');\n\n if (pageIndex !== null) {\n this.scrollToPage(parseInt(pageIndex + '', 10));\n }\n }\n\n /**\n * @description Carousel page click handler\n * @param el page element\n * @listens dom#click\n * @emits Carousel#pageclicked\n */\n onPageClick(el: IRefElement): void {\n if (this.delta === 0) {\n /**\n * @description Event to carousel page click\n * @event Carousel#pageclicked\n */\n this.emit('pageclicked', el.data('page'));\n }\n }\n\n /**\n * @description Create Pagination elements for carousel\n */\n createPaginationElements(): void {\n const elemCarouselTrack = this.ref(this.prefs().elemCarouselTrack).get();\n\n if (!elemCarouselTrack) {\n return;\n }\n\n // We need to use round, not ceil, since it called on scroll,\n // in case of last it would generate falls positive\n const numberOfPages = Math.round(elemCarouselTrack.scrollWidth / elemCarouselTrack.clientWidth);\n const pagination = new Array(numberOfPages).fill(0).map((_el, i) => ({ page: i }));\n\n this.pagination = new Promise((resolve) => {\n this.render(undefined, { pagination }, this.ref('pagination')).then(() => {\n // @ts-ignore possibly undefined\n return resolve(this.ref('pagination').get());\n });\n });\n }\n\n /**\n * @description Set active pagination\n */\n setActivePagination(): void {\n if (!this.pagination) {\n return;\n }\n\n this.pagination.then((pagination: HTMLElement) => {\n if (!pagination) {\n return;\n }\n\n const currentPageIndex = this.getCurrentPageIndex();\n const currentPageNode = pagination.children[currentPageIndex];\n\n if (!currentPageNode) {\n this.initPagination();\n }\n\n pagination.children[this.currentPage || 0].classList.remove(\n this.prefs().pagerCurrentClass\n );\n\n currentPageNode.classList.add(this.prefs().pagerCurrentClass);\n\n this.currentPage = currentPageIndex;\n });\n }\n\n /**\n * @description Get current carousel page index\n * @returns Current carousel page index\n */\n getCurrentPageIndex(): number {\n const carouselTrackElem = this.ref(this.prefs().elemCarouselTrack).get();\n\n if (!(carouselTrackElem instanceof HTMLElement)) {\n return 0;\n }\n\n const currentPosition = this.carouselDirection === 'horizontal'\n ? carouselTrackElem.scrollLeft : carouselTrackElem.scrollTop;\n\n const itemDimension = this.carouselDirection === 'horizontal'\n ? carouselTrackElem.children[0].clientWidth : carouselTrackElem.children[0].clientHeight;\n\n return Math.round((currentPosition || 0) / (itemDimension || 1));\n }\n\n // Pagination methods related to PDP gallery\n // =====================================================================\n\n /**\n * @description Adds some defined class on carousel inner elements\n * @param pageIndex - element index\n * @returns carousel instance\n */\n markCurrentPage(pageIndex: number): Carousel {\n const elemCarouselTrack = this.ref(this.prefs().elemCarouselTrack).get();\n\n [].slice.call((elemCarouselTrack?.children)).forEach((element: HTMLElement) => {\n const dataPage = parseInt(((element && element.getAttribute('data-page')) || '0'), 10);\n\n element.classList.toggle(this.prefs().pagerCurrentClass, dataPage === pageIndex);\n });\n\n return this;\n }\n\n /**\n * @description Scrolls active element into carousel viewport.\n * This might be useful when using dependent carousels, like on PDP images/thumbnails\n * @returns carousel instance\n */\n scrollIntoView(): Carousel {\n const elemCarouselTrack = this.ref(this.prefs().elemCarouselTrack).get();\n\n if (!elemCarouselTrack) {\n return this;\n }\n\n // @ts-ignore possibly undefined current element\n const currentElement: HTMLElement = [].find.call(elemCarouselTrack.children,\n (element: HTMLElement) => {\n return element.classList.contains(this.prefs().pagerCurrentClass);\n });\n\n if (!currentElement) {\n return this;\n }\n\n if (this.carouselDirection === DEFAULT_DIRECTION) {\n if ((currentElement.offsetLeft + currentElement.clientWidth)\n > (elemCarouselTrack.scrollLeft + elemCarouselTrack.clientWidth)) {\n this.scrollTo(0, currentElement.offsetLeft);\n } else if (currentElement.offsetLeft < elemCarouselTrack.scrollLeft) {\n this.scrollTo(0, currentElement.offsetLeft);\n }\n } else {\n // eslint-disable-next-line no-lonely-if\n if ((currentElement.offsetTop + currentElement.clientHeight)\n > (elemCarouselTrack.scrollTop + elemCarouselTrack.clientHeight)) {\n this.scrollTo(currentElement.offsetTop, 0);\n } else if (currentElement.offsetTop < elemCarouselTrack.scrollTop) {\n this.scrollTo(currentElement.offsetTop, 0);\n }\n }\n\n return this;\n }\n\n /**\n * @description Programmatically handle scroll to focused carousel item.\n * This is the fix for Chrome bug where it could not calculate item boundaries properly\n * and threat item like it into view. The bug is on PDP Gallery.\n * Applicable only for horizontal scroll.\n */\n handleScrollToFocusedItem(): void {\n if (this.carouselDirection !== 'horizontal') { return; }\n\n const track = this.ref(this.prefs().elemCarouselTrack).get();\n const activeItem = document.activeElement;\n\n if (!activeItem || !(activeItem instanceof HTMLElement) || activeItem.parentElement !== track) {\n return;\n }\n\n const activeItemLeft = activeItem.getBoundingClientRect().left;\n const trackStart = track.getBoundingClientRect().left;\n const trackEnd = trackStart + track.clientWidth;\n\n if (activeItemLeft >= trackEnd || activeItemLeft <= trackStart) {\n track.scrollTo(activeItem.offsetLeft, 0);\n }\n }\n\n /**\n * @description Next/Prev Buttons keyboard handler. Used only on PDP gallery\n * we need this method to prevent Zoom opened on Enter\n * @listens dom#keydown\n * @param element dom node that trigger the event\n * @param event Event object\n */\n handleKeydown(element: IRefElement, event: KeyboardEvent): void {\n if (event.keyCode === keyCode.RETURN || event.keyCode === keyCode.SPACE) {\n event.stopPropagation();\n }\n }\n }\n\n return Carousel;\n}\n","/**\n * @description Base ConfirmDialog implementation\n * @param Modal Base Modal widget for extending\n * @returns Confirmation Dialog class\n */\nexport default function (Modal: ReturnType <typeof import('widgets/global/Modal').default>) {\n /**\n * @category widgets\n * @subcategory global\n * @class ConfirmDialog\n * @augments Modal\n * @classdesc Confirm dialog, which could be used to confirm an action in different contexts, like\n * - Remove coupon from the cart\n * - Remove product from the cart\n * Can have different markup, but serves 3 actions: `confirm`, `cancel` and `alternativeconfirm`\n * Emits 3 events: {@link ConfirmDialog#event:confirm}, {@link Modal#event:cancel} and {@link ConfirmDialog#event:alternativeconfirm} to notify parents about user triggered action.\n * @property {string} data-widget - Widget name `confirmDialog`\n * @property {string} data-widget-event-confirm - method to be triggered on parent's widget, once customer confirms dialog\n * @property {string} data-widget-event-alternativeConfirm - method to be triggered on parent's widget, once customer confirms dialog\n * @property {string} data-widget-event-cancel - method to be triggered on parent's widget, once customer cancels dialog\n * @example <caption>Example of Modal widget</caption>\n * <div hidden=\"hidden\" data-id=\"confirmDialog\"\n * data-widget=\"confirmDialog\"\n * data-widget-event-confirm=\"confirmedRemoveProduct\"\n * data-widget-event-alternativeconfirm=\"moveProductToWishlist\"\n * data-widget-event-cancel=\"cancelledRemoveProduct\"\n * >\n * ... delete product confirm dialog contents\n * <button type=\"button\" data-event-click.prevent=\"confirm\" data-dismiss=\"modal\">\n * ${Resource.msg('button.confirm','cart',null)}\n * </button>\n * <button type=\"button\" data-event-click.prevent=\"alternativeconfirm\" data-dismiss=\"modal\">\n * ${Resource.msg('button.movetowishlist','cart',null)}\n * </button>\n * <button type=\"button\" data-event-click.prevent=\"cancel\" data-dismiss=\"modal\">\n * ${Resource.msg('button.cancel','cart',null)}\n * </button>\n * </div>\n */\n class ConfirmDialog extends Modal {\n /**\n * @description Confirm Handler\n * @emits ConfirmDialog#confirm\n * @returns {void}\n */\n confirm() {\n this.closeModal();\n /**\n * @description Event dispatched, when modal `confirm` button was pressed\n * @event ConfirmDialog#confirm\n */\n this.emit('confirm');\n }\n\n /**\n * @description alternativeConfirm Handler\n * @emits ConfirmDialog#alternativeconfirm\n * @returns {void}\n */\n alternativeConfirm() {\n this.closeModal();\n /**\n * @description Event dispatched, when modal alternative button (not `cancel` and not `confirm`) was pressed\n * @event ConfirmDialog#alternativeconfirm\n */\n this.emit('alternativeconfirm');\n }\n }\n\n return ConfirmDialog;\n}\n","import { TWidget } from 'widgets/Widget';\nimport { getContentByUrl, submitFormJson } from '../toolbox/ajax';\nimport { setCookie } from '../toolbox/cookie';\n\n/**\n * @param {Widget} Widget Base widget for extending\n * @returns {typeof ConsentTracking} ConsentTracking widget\n */\n\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory global\n * @class ConsentTracking\n * @augments Widget\n * @classdesc ConsentTracking Widget - used to expose Consent dialog, where customer can either accept\n * <br>or reject Consent matter. Relevant methods will be triggered pressing related buttons\n * @property {string} data-widget - Widget name `consentTracking`\n * @property {string} data-content-url - Dynamically loaded Consent's content\n * @property {string} data-reject-url - Customer chooses `reject` - request will be sent to Reject URL\n * @property {string} data-accept-url - Customer chooses `accept` - request will be sent to Accept URL\n * @example <caption>Example of ConsentTracking widget usage</caption>\n * <div\n * data-widget=\"consentTracking\"\n * data-content-url=\"${URLUtils.url('ConsentTracking-GetContent', 'cid', 'tracking_hint')}\"\n * data-reject-url=\"${URLUtils.url('ConsentTracking-SetSession', 'consent', 'false')}\"\n * data-accept-url=\"${URLUtils.url('ConsentTracking-SetSession', 'consent', 'true')}\"\n * data-tracking-selected=\"${pdict.tracking_consent != null}\"\n * data-consent-api=\"${pdict.caOnline}\"\n * >\n * <section data-ref=\"container\"></section>\n * <script type=\"template/mustache\" data-ref=\"template\">\n * <div class=\"b-notification_panel-inner\">\n * <div class=\"b-notification_panel-content\">{{{assetContent}}}</div>\n * <button data-event-click=\"accept\">${Resource.msg('tracking.accept', 'footer', '')}</button>\n * <button data-event-click=\"reject\">${Resource.msg('tracking.decline', 'footer', '')}</button>\n * </div>\n * </script>\n * </div>\n */\n class ConsentTracking extends Widget {\n prefs() {\n return {\n contentUrl: '',\n acceptUrl: '',\n rejectUrl: '',\n classesEnabled: 'm-visible',\n ...super.prefs()\n };\n }\n\n /**\n * @description Initialize widget logic\n * @returns {void}\n */\n init() {\n this.loadContent();\n }\n\n /**\n * @description Load content\n * @returns {Promise<object>} Promise object represents server response with consent tracking markup\n */\n loadContent() {\n return getContentByUrl(this.prefs().contentUrl)\n .then(content => {\n return this.render('template', { assetContent: content }, this.ref('container'))\n .then(() => this.togglePanel(true))\n .then(() => content);\n });\n }\n\n /**\n * @description Toggle Panel\n * @param {boolean} isVisible - `true` if Consent's dialog should be shown, `false` - otherwise\n * @returns {void}\n */\n togglePanel(isVisible) {\n this.ref('container').toggleClass(this.prefs().classesEnabled, isVisible);\n }\n\n /**\n * @description Accept Consent handler\n * @listens dom#click\n * @returns {Promise<object>} Promise object represents server response for concent tracking accepting\n */\n accept() {\n return submitFormJson(this.prefs().acceptUrl, undefined, 'GET').finally(() => {\n this.togglePanel(false);\n setCookie('dw_accept_cookie', '1', 365, true);\n setCookie('dw_consent_cookie', '1', 365, true);\n });\n }\n\n /**\n * @description Reject Consent handler\n * @listens dom#click\n * @returns {Promise<object>} Promise object represents server response for concent tracking rejection\n */\n reject() {\n return submitFormJson(this.prefs().rejectUrl, undefined, 'GET').finally(() => {\n this.togglePanel(false);\n setCookie('dw_accept_cookie', '1', 365, true);\n });\n }\n }\n\n return ConsentTracking;\n}\n","import { TWidget } from 'widgets/Widget';\n\n/**\n * @param Widget Base widget for extending\n */\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory global\n * @class ContextLoader\n * @augments Widget\n * @classdesc ContextLoader Widget - used to initialize context for the page for async loading dependent widgets lists (widgets inside wouldn't be initialized)\n * @property {string} data-widget - Widget name `contextLoader`\n * @property {string} data-context - context id to be added\n * @property {string} data-init-on-load - add context during widget initialization\n * @property {string} data-init-on-viewport - add context when widget in viewport\n * @property {string} data-loaded - override loading status\n * @example <caption>Example of ContextLoader widget usage</caption>\n * <div\n * data-widget=\"contextLoader\"\n * data-context=\"myContext\"\n * data-init-on-viewport=\"true\"\n * >\n * </div>\n */\n class ContextLoader extends Widget {\n loaded = false;\n\n observer: IntersectionObserver | undefined;\n\n prefs() {\n return {\n initOnLoad: false,\n initOnViewport: false,\n loaded: false,\n context: '',\n ...super.prefs()\n };\n }\n\n init() {\n this.loaded = this.prefs().loaded;\n\n if (!this.prefs().context) {\n throw new Error('Context must be initialized!');\n }\n\n if (this.prefs().initOnLoad) {\n this.loadContext();\n } else if (this.prefs().initOnViewport) {\n this.observer = new IntersectionObserver(([entry]) => this.onIntersection(entry), {\n threshold: 0.1, // 10% of element became visible\n rootMargin: '200px' // add margin around viewport\n });\n const widgetElement = this.ref('self').get();\n\n if (widgetElement) {\n this.observer.observe(widgetElement); // start observing widget's DOM entry point\n }\n }\n }\n\n /**\n * @param {IntersectionObserverEntry | undefined} [entry] entry from observer\n */\n onIntersection(entry) {\n if (entry && entry.isIntersecting && this.observer) {\n this.observer.disconnect();\n this.observer = undefined;\n this.loadContext();\n }\n }\n\n loadContext() {\n if (this.loaded) {\n return;\n }\n\n if (this.prefs().context) {\n this.eventBus().emit('context.add', this.prefs().context);\n this.loaded = true;\n }\n }\n }\n\n return ContextLoader;\n}\n","import { TWidget } from 'widgets/Widget';\n\n/**\n * @description Base Disclosure implementation\n * @param Widget Base widget for extending\n * @returns BackToTop class\n */\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory global\n * @class Disclosure\n * @augments Widget\n * @classdesc Accessibility [Disclosure component](https://www.w3.org/TR/wai-aria-practices/#disclosure).\n * @property {string} data-widget - Widget name `disclosure`\n * @property {string} data-show-on-init - If we need to show disclosure content on init\n * @property {string} data-show-on-refresh - If we need to show disclosure on refresh (for ex. after re-render parent widget)\n * @example <caption>Typical Disclosure widget markup</caption>\n * <div\n * data-widget=\"disclosure\"\n * data-show-on-init=\"true\"\n * data-show-on-refresh=\"true\"\n * >\n * <button\n * type=\"button\"\n * data-event-click=\"toggleContent\"\n * aria-expanded=\"false\"\n * aria-controls=\"coupon-form\"\n * data-ref=\"disclosureButton\"\n * >Open me</button>\n * <div\n * data-ref=\"disclosureContent\"\n * id=\"coupon-form\"\n * hidden=\"hidden\"\n * class=\"m-hide\"\n * >\n * .... content\n * </div>\n * </div>\n */\n class Disclosure extends Widget {\n prefs() {\n return {\n disclosureButton: 'disclosureButton',\n disclosureContent: 'disclosureContent',\n showOnInit: false,\n showOnRefresh: false,\n ...super.prefs()\n };\n }\n\n init() {\n super.init();\n this.hideContent();\n\n if (this.prefs().showOnInit) {\n this.showContent();\n }\n }\n\n /**\n * @description Toggles disclosure content\n * @listens dom#click\n * @returns {void}\n */\n toggleContent() {\n this[this.shown ? 'hideContent' : 'showContent']();\n }\n\n /**\n * @description Happens on widget refresh and is needed to handle updated state\n * @returns {void}\n */\n onRefresh() {\n this[this.prefs().showOnRefresh ? 'showContent' : 'hideContent']();\n }\n\n /**\n * @description Show disclosure content and update related attributes\n * @returns {void}\n */\n showContent() {\n this.ref('disclosureContent').show().attr('aria-hidden', 'false');\n this.ref('disclosureButton').attr('aria-expanded', 'true');\n this.shown = true;\n }\n\n /**\n * @description Hide disclosure content and update related attributes\n * @returns {void}\n */\n hideContent() {\n this.ref('disclosureContent').hide().attr('aria-hidden', 'true');\n this.ref('disclosureButton').attr('aria-expanded', 'false');\n this.shown = false;\n }\n }\n\n return Disclosure;\n}\n","import { TWidget } from 'widgets/Widget';\n\n/**\n * @param {Widget} Widget Base widget for extending\n * @returns {typeof DismissBlock} DismissBlock widget\n */\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory global\n * @class DismissBlock\n * @augments Widget\n * @classdesc DismissBlock widget used for display notification about using a cookie.\n * Allow dismissing the notification by handle customer's click on the Accept button\n * @property {string} data-widget - Widget name `dismissBlock`\n * @property {string} data-key - Key for window.sessionStorage to store header banner display status.\n * If value exists - header will not be shown.\n * @example <caption>Example of DismissBlock widget usage</caption>\n * <div\n * data-widget=\"dismissBlock\"\n * data-key=\"hide_header_banner\"\n * >\n * ... widget markup\n * <button data-event-click.once.prevent=\"dismiss\">close</button>\n * </div>\n */\n class DismissBlock extends Widget {\n prefs() {\n return {\n classesEnabled: 'm-visible',\n key: 'hide_cookies_notification',\n ...super.prefs()\n };\n }\n\n /**\n * @description Initialize widget logic\n * @returns {void}\n */\n init() {\n super.init();\n\n const dismissBlockStatus = window.sessionStorage.getItem(this.prefs().key);\n\n if (!dismissBlockStatus || dismissBlockStatus === '0') {\n this.ref('self').addClass(this.prefs().classesEnabled);\n }\n }\n\n /**\n * @description Dismiss cookie notification\n * @listens dom#click\n * @returns {void}\n */\n dismiss() {\n this.ref('self').removeClass(this.prefs().classesEnabled);\n window.sessionStorage.setItem(this.prefs().key, '1');\n }\n }\n\n return DismissBlock;\n}\n","import { TWidget } from 'widgets/Widget';\n\n/**\n * @param Widget Base widget for extending\n * @returns EmitBusEvent widget\n */\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory global\n * @class EmitBusEvent\n * @augments Widget\n * @classdesc Could be used to trigger any global event using interaction element\n * <br>Could be useful to emit global events like `page.show.globalmodal` to notify\n * <br>concerned widgets, so they could change page layout class etc.\n * <br>Event emission could happens mostly on UI elements like links, buttons etc.\n * @property {string} data-widget - Widget name `emitBusEvent`\n * @property {string} data-bus-event-type - Global event type, which should be triggered\n * @property {string} data-event-click - Event listener to trigger `emitBusEvent` method\n * @property {string} data-url - any kind of additional properties\n * @example <caption>Example of EmitBusEvent widget usage</caption>\n * <a\n * data-widget=\"emitBusEvent\"\n * data-bus-event-type=\"page.show.globalmodal\"\n * data-event-click.prevent=\"emitBusEvent\"\n * data-url=\"${URLUtils.url('Login-ShowPasswordResetModal', 'loginmodal', 1, 'rurl', pdict.rurl)}\"\n * >\n * ${Resource.msg('link.login.forgotpassword', 'login', null)}\n * </a>\n */\n class EmitBusEvent extends Widget {\n prefs() {\n return {\n busEventType: '',\n ...super.prefs()\n };\n }\n\n /**\n * @description Emit event\n * @returns {void}\n */\n emitBusEvent() {\n if (this.prefs().busEventType) {\n this.eventBus().emit(this.prefs().busEventType, this);\n }\n }\n }\n\n return EmitBusEvent;\n}\n","import { timeout } from 'widgets/toolbox/util';\nimport { debounce } from 'widgets/toolbox/debounce';\nimport { TWidget } from 'widgets/Widget';\n\nconst KEY_TAB = 9;\n\n/**\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} refElement\n */\n\n/**\n * @description Focus highlighter\n * @param Widget Base widget for extending\n * @returns Focus Highlighter class\n */\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory global\n * @class FocusHighlighter\n * @augments Widget\n * @classdesc This class intended to address Accessibility issue with focus highlighting on links element.\n * Usually used on `<body>` tag to observe focus move events\n *\n * In case if page was focused, next subsequent `TAB` press will leads to next available link/input element focus highlighting\n * Shows bordered rectangle, which fits currently focused element and moves rectangle to element's position.\n * @property {string} data-widget - Widget name `focusHighlighter`\n * @property {string} data-event-keyup - Event handler for `handleKeyup` method\n * @property {string} data-event-click - Event handler for `handleClick` method\n * @property {string} data-classes-inited - Inited classes, added to element after initialization\n * @property {string} data-classes-hurry - Classes, which don't contains animation and used to move `highlighter` (bordered rectangle) between focused elements without animation.\n * @example <caption>FocusHighlighter widget</caption>\n * <body\n * class=\"b-page\"\n * data-widget=\"focusHighlighter\"\n * data-event-keyup=\"handleKeyup\"\n * data-event-click=\"handleClick\"\n * >\n * ... page content here\n * </body>\n */\n class FocusHighlighter extends Widget {\n prefs() {\n return {\n classesInited: 'b-highlighter_inited',\n classesEnabled: 'm-visible',\n classesHurry: 'm-hurry',\n DELAY_TIMEOUT: 200, // Delay for animation\n\n ...super.prefs()\n };\n }\n\n /**\n * @description Widget initialization logic\n * @returns {void}\n */\n init() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'keyboardModality' does not exist on type... Remove this comment to see the full error message\n this.keyboardModality = false;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isHighlighterVisible' does not exist on ... Remove this comment to see the full error message\n this.isHighlighterVisible = false;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'lastFocusedElement' does not exist on ty... Remove this comment to see the full error message\n this.lastFocusedElement = null;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'lastFocusedElementCoords' does not exist... Remove this comment to see the full error message\n this.lastFocusedElementCoords = '';\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'highlighter' does not exist on type 'Foc... Remove this comment to see the full error message\n this.highlighter = null;\n\n this.ref('self').addClass(this.prefs().classesInited);\n this.ev('resize', debounce(this.handleResize.bind(this), 200), window);\n this.eventBus().on('rendering.applied', 'handleResize');\n this.eventBus().on('highlighter.update', 'updateHighlighter');\n }\n\n /**\n * @param {refElement} ref - key up event referenced element\n * @param {KeyboardEvent} event - key up event\n * @listens dom#keyup\n * @returns {void}\n */\n handleKeyup(ref, event) {\n if (event.keyCode === KEY_TAB) {\n this.enableHighlighter();\n }\n }\n\n /**\n * @param {refElement} ref - click event referenced element\n * @param {MouseEvent} event - click event\n * @listens dom#click\n * @returns {void}\n */\n handleClick(ref, event) {\n // Space key up on button DomNode generates synthetic click\n // so we need to ensure that it is not the one\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isHighlighterVisible' does not exist on ... Remove this comment to see the full error message\n if (this.isHighlighterVisible && !(event.x === 0 && event.y === 0)) {\n this.disableHighlighter();\n }\n }\n\n /**\n * @description Window resize event handler\n * @listens dom#resize\n * @returns {void}\n */\n handleResize() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isHighlighterVisible' does not exist on ... Remove this comment to see the full error message\n if (this.isHighlighterVisible) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'lastFocusedElement' does not exist on ty... Remove this comment to see the full error message\n this.moveTo(this.lastFocusedElement);\n }\n }\n\n /**\n * @description Update highlighter position. Needed when we need to update position from outside\n * @listens \"highlighter.update\"\n * @returns {void}\n */\n updateHighlighter() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isHighlighterVisible' does not exist on ... Remove this comment to see the full error message\n if (this.isHighlighterVisible && document.activeElement instanceof HTMLElement) {\n this.moveTo(document.activeElement);\n }\n }\n\n /**\n * @description Handles focus change on page\n * @listens dom#focusin\n * @returns {void}\n */\n handleFocus() {\n if (!(document.activeElement instanceof HTMLElement)) { return; } // Needed only for TS linter\n\n const focusedElement = document.activeElement;\n\n if (\n !this.isValidTarget(focusedElement)\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'keyboardModality' does not exist on type... Remove this comment to see the full error message\n || (this.isTextInput(focusedElement) && !this.keyboardModality)\n ) {\n return;\n }\n\n this.detectHurryNavigation();\n this.moveTo(focusedElement);\n\n // We need to recheck focused element position since coords could\n // be changed during scroll in carousels, animation, dynamic page changes\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'recheckTimeout' does not exist on type '... Remove this comment to see the full error message\n if (this.recheckTimeout) { this.recheckTimeout(); }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'recheckSecondTimeout' does not exist on ... Remove this comment to see the full error message\n if (this.recheckSecondTimeout) { this.recheckSecondTimeout(); }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'recheckTimeout' does not exist on type '... Remove this comment to see the full error message\n this.recheckTimeout = timeout(() => this.moveTo(document.activeElement), 400);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'recheckSecondTimeout' does not exist on ... Remove this comment to see the full error message\n this.recheckSecondTimeout = timeout(() => this.moveTo(document.activeElement), 800);\n }\n\n /**\n * @description Enables a `highlighter` - a bordered box with sizes of currently focused element.\n * @returns {void}\n */\n enableHighlighter() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'keyboardModality' does not exist on type... Remove this comment to see the full error message\n if (this.keyboardModality) {\n return;\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'keyboardModality' does not exist on type... Remove this comment to see the full error message\n this.keyboardModality = true;\n\n this.ref('highlighter').addClass(this.prefs().classesEnabled);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isHighlighterVisible' does not exist on ... Remove this comment to see the full error message\n this.isHighlighterVisible = true;\n this.onDestroy(() => this.ref('highlighter').removeClass(this.prefs().classesEnabled));\n\n this.handleFocus();\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'focusinHandlers' does not exist on type ... Remove this comment to see the full error message\n this.focusinHandlers = this.ev('focusin', this.handleFocus, document);\n // all other events are handled by `focus in` event\n }\n\n /**\n * @description Disables a `highlighter` - a bordered box with sizes of currently focused element.\n * @returns {void}\n */\n disableHighlighter() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'keyboardModality' does not exist on type... Remove this comment to see the full error message\n if (!this.keyboardModality) {\n return;\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'keyboardModality' does not exist on type... Remove this comment to see the full error message\n this.keyboardModality = false;\n\n this.ref('highlighter').removeClass(this.prefs().classesEnabled);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isHighlighterVisible' does not exist on ... Remove this comment to see the full error message\n this.isHighlighterVisible = false;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'hideTimeOut' does not exist on type 'Foc... Remove this comment to see the full error message\n this.hideTimeOut = timeout(this.hide.bind(this), this.prefs().DELAY_TIMEOUT);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'focusinHandlers' does not exist on type ... Remove this comment to see the full error message\n if (this.focusinHandlers) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'focusinHandlers' does not exist on type ... Remove this comment to see the full error message\n this.focusinHandlers.forEach(fn => fn());\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'lastFocusedElement' does not exist on ty... Remove this comment to see the full error message\n this.lastFocusedElement = null;\n }\n\n /**\n * @description Moves `highlighter` (a border box) in place of focused element\n * @param {HTMLElement} focusedElement - element, which gets focus\n */\n moveTo(focusedElement) {\n if (!(focusedElement instanceof HTMLElement)) { return; }\n\n const highlighterNode = this.ref('highlighter').get();\n\n if (!highlighterNode) { return; }\n\n // eslint-disable-next-line spellcheck/spell-checker\n const targetRectangle = focusedElement.getBoundingClientRect();\n const targetTop = targetRectangle.top + window.scrollY;\n const targetLeft = targetRectangle.left + window.scrollX;\n const targetWidth = focusedElement.offsetWidth;\n const targetHeight = focusedElement.offsetHeight;\n\n if (\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'lastFocusedElement' does not exist on ty... Remove this comment to see the full error message\n focusedElement === this.lastFocusedElement\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'lastFocusedElementCoords' does not exist... Remove this comment to see the full error message\n && this.lastFocusedElementCoords === '' + targetTop + targetLeft + targetWidth + targetHeight\n ) {\n // If we come from coords recheck do not reapply changes\n return;\n }\n\n const highlighterStyle = highlighterNode.style;\n\n highlighterStyle.top = `${targetTop - 5}px`;\n highlighterStyle.left = `${targetLeft - 5}px`;\n highlighterStyle.width = `${targetWidth + 2}px`;\n highlighterStyle.height = `${targetHeight + 2}px`;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'lastFocusedElementCoords' does not exist... Remove this comment to see the full error message\n this.lastFocusedElementCoords = '' + targetTop + targetLeft + targetWidth + targetHeight;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'lastFocusedElement' does not exist on ty... Remove this comment to see the full error message\n this.lastFocusedElement = focusedElement;\n }\n\n /**\n * @description Hide `highlighter`\n * @returns {this} result\n */\n hide() {\n const highlighterNode = this.ref('highlighter').get();\n\n if (!highlighterNode) {\n return this;\n }\n\n const highlighterStyle = highlighterNode.style;\n\n highlighterStyle.width = '0';\n highlighterStyle.height = '0';\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'hideTimeOut' does not exist on type 'Foc... Remove this comment to see the full error message\n if (this.hideTimeOut) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'hideTimeOut' does not exist on type 'Foc... Remove this comment to see the full error message\n this.hideTimeOut();\n }\n\n return this;\n }\n\n /**\n * @description Detects too fast customer navigation, and displays `highlighter`,\n * moving from previously focused element to currently focused without animation.\n * @returns {void}\n */\n detectHurryNavigation() {\n const currentTime = Date.now();\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'lastKeyTime' does not exist on type 'Foc... Remove this comment to see the full error message\n const isHurryNavigation = (currentTime - (this.lastKeyTime || 0)) < 190;\n\n this.ref('highlighter').toggleClass(this.prefs().classesHurry, isHurryNavigation);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isHurryNavigation' does not exist on typ... Remove this comment to see the full error message\n this.isHurryNavigation = isHurryNavigation;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'lastKeyTime' does not exist on type 'Foc... Remove this comment to see the full error message\n this.lastKeyTime = currentTime;\n }\n\n /**\n * @param {HTMLElement} domNode - focused element\n * @returns {boolean} is HTML element valid target for focus\n */\n isValidTarget(domNode) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'lastFocusedElement' does not exist on ty... Remove this comment to see the full error message\n return domNode !== this.lastFocusedElement\n && domNode.nodeName !== 'HTML'\n && domNode.nodeName !== 'BODY';\n }\n\n /**\n * @param {HTMLTextAreaElement|HTMLInputElement|HTMLElement} domNode - focused element\n * @returns {boolean} is HTML element text input\n */\n isTextInput(domNode) {\n return (domNode.tagName === 'TEXTAREA' && !domNode.readOnly)\n\n || (domNode.tagName === 'INPUT' && !domNode.readOnly)\n || !!(domNode.getAttribute('contenteditable'));\n }\n }\n\n return FocusHighlighter;\n}\n","import { PausableTimeout } from 'widgets/toolbox/PausableTimeout';\nimport { TWidget } from 'widgets/Widget';\n\n/**\n * @description Base GlobalAlerts implementation.\n * @param Widget Base widget for extending\n * @returns GlobalAlerts class\n */\nexport default function (Widget: TWidget) {\n /**\n * @class GlobalAlerts\n * @augments Widget\n * @classdesc Global Alerts with accessibility alert role possibility.\n * Acts as a popup with delayed disappearing. Popup will render user action description.\n * @property {boolean} data-widget - Widget name `globalAlerts`\n * @property {number} data-timeout - Value of hide timeout in milliseconds\n * @property {object} data-global-alerts - Global alerts localization messages\n * Possible values are: `error500`\n * @example\n * // use this code to display GlobalAlerts widget\n * <div\n * data-widget=\"globalAlerts\"\n * data-timeout=\"4000\"\n * data-global-alerts='{\n * \"error500\": \"${Resource.msg('alert.error500', 'global', null)}\"\"\n * }'\n *\n * >\n * <div data-ref=\"item\" hidden=\"hidden\" role=\"alert\">\n * ... alert message will be shown here\n * </div>\n * </div>\n */\n class GlobalAlerts extends Widget {\n prefs() {\n return {\n timeout: 4000,\n globalAlerts: {},\n ...super.prefs()\n };\n }\n\n /**\n * @description Widget initialization, onDestroy hook to clear pausable timeout.\n * Listening `show.alert` event to display a relevant Global Alert\n * @listens \"alert.show\"\n * @listens \"alert.error\"\n * @returns {void}\n */\n init() {\n super.init();\n this.onDestroy(() => this.disposePausableTimeout());\n /**\n * @description Event for Global Alert, contains data to be shown inside Global Alert popover\n * @event \"alert.show\"\n */\n this.eventBus().on('alert.show', 'showAlert');\n /**\n * @description Event for Global Alert, contains data to be shown inside Global Alert popover as an error message\n * @event \"alert.error\"\n */\n this.eventBus().on('alert.error', 'showError');\n }\n\n /**\n * @description Shows global errors like 500 response\n * @param {{errorCode: number}} data - Error data\n * @returns {void}\n */\n showError(data) {\n if (data.errorCode) {\n const accessibilityAlert = this.prefs().globalAlerts[`error${data.errorCode}`];\n\n this.showAlert({\n accessibilityAlert\n });\n }\n }\n\n /**\n * @description Dispose pausable timeout and clear it resources\n * @returns {void}\n */\n disposePausableTimeout() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'pausableTimeout' does not exist on type ... Remove this comment to see the full error message\n if (this.pausableTimeout) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'pausableTimeout' does not exist on type ... Remove this comment to see the full error message\n this.pausableTimeout.destroy();\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'pausableTimeout' does not exist on type ... Remove this comment to see the full error message\n this.pausableTimeout = undefined;\n }\n }\n\n /**\n * @description Show Global Alert by starting pausable timeout\n * @param {{accessibilityAlert: string}} data - Message to be shown and pronounced\n * @returns {void}\n */\n showAlert(data) {\n if (data && data.accessibilityAlert) {\n if (this.shown) {\n this.hideAlert();\n }\n\n this.ref('item')\n .setText(data.accessibilityAlert)\n .show();\n this.shown = true;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'pausableTimeout' does not exist on type ... Remove this comment to see the full error message\n this.pausableTimeout = new PausableTimeout(() => {\n this.hideAlert();\n }, this.prefs().timeout);\n }\n }\n\n /**\n * @description Hide Global Alert and clear timeout\n * @returns {void}\n */\n hideAlert() {\n this.ref('item')\n .setText('')\n .hide();\n this.shown = false;\n this.disposePausableTimeout();\n }\n\n /**\n * @description Pauses Global Alert displaying.\n * Pauses hide alert with pausable timeout.\n * @returns {void}\n */\n pauseAlert() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'pausableTimeout' does not exist on type ... Remove this comment to see the full error message\n if (this.pausableTimeout) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'pausableTimeout' does not exist on type ... Remove this comment to see the full error message\n this.pausableTimeout.pause();\n }\n }\n\n /**\n * @description Resumes Global Alert displaying.\n * Resumes hide alert with pausable timeout.\n * @returns {void}\n */\n resumeAlert() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'pausableTimeout' does not exist on type ... Remove this comment to see the full error message\n if (this.pausableTimeout) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'pausableTimeout' does not exist on type ... Remove this comment to see the full error message\n this.pausableTimeout.resume();\n }\n }\n }\n\n return GlobalAlerts;\n}\n","import { getContentByUrl, getJSONByUrl } from 'widgets/toolbox/ajax';\n\ntype TEmitBusEventClass = ReturnType<typeof import('widgets/global/EmitBusEvent').default>\n\n/**\n * @description Base GlobalModal implementation\n * @param Modal Base widget for extending\n * @returns GlobalModal class\n */\nexport default function (Modal: ReturnType<typeof import('widgets/global/Modal').default>) {\n /**\n * @category widgets\n * @subcategory global\n * @class GlobalModal\n * @augments Modal\n * @classdesc Global Modal component. Allows different modals to be triggered by firing an event {@link module#dialog:dialogshow}.\n * <br>Was implemented to get rid from excessive duplicated popups markup in product lists etc.\n * <br>Also allow standalone components/link to trigger modal by using {@link EmitBusEvent} widget.\n * <br>In general could be triggered either programmatically by firing an event, or using {@link EmitBusEvent} widget in DOM markup.\n * <br>Allows: add classes to container; render modal heading; render modal action buttons; render content either via URL, or from string.\n * @property {string} data-widget - Widget name `globalModal`\n * @property {string} data-disable-rendering - property should be set to `false` to allow rendering inside popup template.\n * @example <caption>Global Modal widget markup</caption>\n * <div\n * data-widget=\"globalModal\"\n * data-disable-rendering=\"false\"\n * >\n * <div class=\"b-dialog\" data-ref=\"container\" hidden></div>\n * <script type=\"template/mustache\" data-ref=\"template\">\n * <div\n * class=\"b-dialog {{${'#'}wrapperClasses}}{{wrapperClasses}}{{/wrapperClasses}}\"\n * {{${'#'}ariaLabel}}\n * aria-label=\"{{ariaLabel}}\"\n * {{/ariaLabel}}\n * data-ref=\"container\"\n * >\n * <div\n * class=\"b-dialog-window\"\n * role=\"dialog\"\n * data-ref=\"dialog\"\n * aria-modal=\"true\"\n * >\n * <div class=\"b-dialog-header\">\n * ... header rendering\n * </div>\n * <div class=\"b-dialog-body b-user_content\">\n * {{& content }}\n * </div>\n * {{${'#'}showActions}}\n * <div class=\"b-dialog-footer m-actions\">\n * ... action buttons rendering\n * </div>\n * {{/showActions}}\n * </div>\n * </div>\n * </script>\n * </div>\n *\n * @example <caption>Global Modal widget triggering via DOM</caption>\n * <button\n * class=\"b-promotion-details\"\n * type=\"button\"\n * data-widget=\"emitBusEvent\"\n * data-bus-event-type=\"dialogshow\"\n * data-event-click.prevent=\"emitBusEvent\"\n * data-tau=\"promotion_details_cta\"\n * data-modal-config='{\n * \"content\": \"${promotion.detailsJSONSafe}\",\n * \"attributes\": {\n * \"data-tau\": \"promotion_details_dialog\"\n * },\n * \"ariaLabel\": \"${Resource.msg('promotion.details.label','product',null)}\"\n * }'\n * >\n * ${Resource.msg('promotion.details','product',null)}\n * </button>\n *\n * @example <caption>Global Modal widget triggering via code in {@link ProductTile} widget (synchronous operation)</caption>\n * ...\n * showQuickView(button) {\n * this.eventBus().emit('dialogshow', {\n * url: button.data('url'),\n * wrapperClasses: 'm-quick_view',\n * ariaLabel: this.prefs().productName,\n * attributes: {\n * 'data-tau-unique': 'quick_view_dialog'\n * }\n * });\n * this.onModalShow();\n * }\n * ...\n */\n class GlobalModal extends Modal {\n /**\n * @description Widget initialization logic\n * @listens module:events#dialogshow\n * @returns {void}\n */\n init(): void {\n super.init();\n this.eventBus().on('dialogshow', 'showModal');\n }\n\n /**\n * @description Shows modal. Depending on needs, content for modal could be loaded via URL, or fetched from parameters.\n * @param cb\n * Input parameter also contains setup for modal, like container classes, action buttons, heading text etc.\n * @example <caption>An object with expected parameters</caption>\n * {\n * showActions: true,\n * headerText: 'Header text',\n * actions: [{\n * text: 'Cancel',\n * handler: 'cancel',\n * classes: 'm-outline'\n * },{\n * text: 'Confirm',\n * handler: 'cancel',\n * lastFocusElement: true\n * }],\n * wrapperClasses: 'class1 class2',\n * ariaLabel: 'test aria label',\n * url: 'http://www.google.com',\n * contentType: 'json'\n * }\n * In case if input parameter is an instance of {@link EmitBusEvent},\n * modal setup properties will be taken from `data-modal-config`\n * attribute of a {@link EmitBusEvent} widget.\n * @emits GlobalModal#show\n * @param templateData Input object for modal popup. See example above.\n * @returns Promise object represents modal rendering result\n */\n showModal(templateData: Record<string, unknown> | undefined, cb: (() => void) | undefined): Promise<void> {\n let modalData: { content?: string; url?: string; contentType?: string; } = templateData || {};\n\n const EmitBusEventClass: TEmitBusEventClass = <TEmitBusEventClass> this.getConstructor('emitBusEvent');\n\n if (templateData instanceof EmitBusEventClass) {\n modalData = {\n url: <string> templateData.data('url')\n };\n const modalConfig = <Record<string, unknown>> templateData.data('modalConfig');\n\n if (modalConfig && Object.keys(modalConfig).length) {\n modalData = Object.assign(modalData, modalConfig);\n }\n }\n\n if (modalData.content) {\n const promise = super.showModal(modalData, cb);\n\n /**\n * @description Event dispatched, when Global Modal was shown\n * @event GlobalModal#show\n */\n this.emit('show');\n\n return promise;\n }\n\n if (!modalData.url) {\n return Promise.resolve();\n }\n\n if (modalData.contentType === 'json') {\n return getJSONByUrl(modalData.url, undefined, true).then(res => {\n if (Object.keys(res).length) {\n modalData = Object.assign(modalData, res);\n const promise = super.showModal(modalData, cb);\n\n this.emit('show');\n\n return promise;\n }\n\n return Promise.resolve();\n });\n } else {\n return getContentByUrl(modalData.url).then(res => {\n modalData = Object.assign(modalData, { content: res });\n const promise = super.showModal(modalData, cb);\n\n this.emit('show');\n\n return promise;\n });\n }\n }\n }\n\n return GlobalModal;\n}\n","import { TWidget } from 'widgets/Widget';\nimport cssLoadChecker from 'widgets/toolbox/cssLoadChecker';\nimport { timeout } from 'widgets/toolbox/util';\n\n/**\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} refElement\n */\n\n/**\n * @param Widget Base widget for extending\n * @returns HeroCarousel class\n */\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory global\n * @class HeroCarousel\n * @augments Widget\n * @classdesc Represents HeroCarousel component with next features:\n * 1. Allow to use pagination for carousel rendered by mustache template\n * 2. Allow to use slides autoplay functionality\n * 3. Allow to use start/stop autoplay functionality\n * 4. Allow to change current slide to the next/previous/custom(index can be passed to the method) slide\n * 5. Support mousemove, touchmove, mouseup, mousedown, keydown event so we can use carousel even on touch devices\n * 6. Support for carousel control from the keyboard\n * @property {string} data-widget - widget name `heroCarousel`\n * @property {boolean} data-autoplay-enabled - enables/disables autoplay. If false, autoplay will be hidden\n * @property {boolean} data-autoplay-stopped - starts/stops autoplay. If true, autoplay will be shown but paused\n * @property {string} data-autoplay-duration - value for the duration of the autoplay slide change\n * @property {string} data-autoplay-label-start - autoplay button label text to start automatic slide change\n * @property {string} data-autoplay-label-stop - autoplay button label text to stop automatic slide change\n * @property {string} data-event-mousedown - Event listener for `touchStart` method\n * @property {string} data-event-touchstart - Event listener for `touchStart` method\n * <br>Uses as a basis slider from here (ScrollCarousel.js):\n * <br>https://github.com/dimanech/aria-components/tree/master/cartridge1/js/components/carousels/slider\n * @example <caption>Example of HeroCarousel widget usage</caption>\n * <div\n * data-widget=\"heroCarousel\"\n * class=\"b-hero_carousel\"\n * role=\"region\"\n * aria-roledescription=\"carousel\"\n * aria-label=\"${Resource.msg('carousel.sliderLabel', 'carousel', null)}\"\n * data-event-mousedown.passive=\"touchStart\"\n * data-event-touchstart.passive=\"touchStart\"\n * data-tau=\"carousel_hero\"\n * data-autoplay-enabled=\"true\"\n * data-autoplay-stopped=\"false\"\n * data-autoplay-duration=\"8000\"\n * data-autoplay-label-start=\"${Resource.msg('carousel.startAutoplay', 'carousel', null)}\"\n * data-autoplay-label-stop=\"${Resource.msg('carousel.stopAutoplay', 'carousel', null)}\"\n * >\n * <button\n * class=\"b-hero_carousel-ctrl m-prev\"\n * aria-label=\"${Resource.msg('carousel.previousSlide', 'carousel', null)}\"\n * aria-controls=\"slider-content\"\n * title=\"${Resource.msg('button.previous', 'common', null)}\"\n * data-ref=\"elemPrevButton\"\n * data-event-click=\"goToPrevSlide\"\n * data-tau=\"carousel_hero_prev\"\n * >\n * <isinclude template=\"/common/icons/standalone/arrowCarouselLeft\" />\n * </button>\n * <button\n * class=\"b-hero_carousel-ctrl m-next\"\n * aria-label=\"${Resource.msg('carousel.nextSlide', 'carousel', null)}\"\n * aria-controls=\"slider-content\"\n * title=\"${Resource.msg('button.next', 'common', null)}\"\n * data-ref=\"elemNextButton\"\n * data-event-click=\"goToNextSlide\"\n * data-tau=\"carousel_hero_next\"\n * >\n * <isinclude template=\"/common/icons/standalone/arrowCarouselRight\" />\n * </button>\n * <div class=\"b-hero_carousel-pagination\" data-ref=\"pagination\">\n * <div class=\"b-hero_carousel-pagination_content\">\n * <button\n * class=\"b-hero_carousel-autoplay\"\n * data-ref=\"autoplay\"\n * aria-pressed=\"false\"\n * aria-label=\"${Resource.msg('carousel.stopAutoplay', 'carousel', null)}\"\n * >\n * <svg class=\"b-hero_carousel-autoplay_svg\" width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" focusable=\"false\" xmlns=\"http://www.w3.org/2000/svg\">\n * <circle class=\"b-hero_carousel-autoplay_progress_back\" cx=\"18\" cy=\"18\" r=\"16.5\"></circle>\n * <circle class=\"b-hero_carousel-autoplay_progress\" cx=\"18\" cy=\"18\" r=\"16.5\" stroke-dasharray=\"104\" transform=\"rotate(-90 18 18)\"></circle>\n * <polygon class=\"b-hero_carousel-autoplay_play\" points=\"14.4,12.2 14.4,23 25.1,17.5 \"></polygon>\n * <polygon class=\"b-hero_carousel-autoplay_pause\" points=\"14.5 12 14.5 24\"></polygon>\n * <polygon class=\"b-hero_carousel-autoplay_pause\" points=\"21.5 12 21.5 24\"></polygon>\n * </svg>\n * </button>\n * <div class=\"b-hero_carousel-pagination_dots\" role=\"group\" data-ref=\"paginationDots\" aria-label=\"${Resource.msg('carousel.chooseSlide', 'carousel', null)}\"></div>\n * <script type=\"template/mustache\" data-ref=\"template\">\n * <div class=\"b-hero_carousel-pagination_dots\" role=\"group\" data-ref=\"paginationDots\" aria-label=\"${Resource.msg('carousel.chooseSlide', 'carousel', null)}\">\n * {{${'#'}pagination}}\n * <button\n * class=\"b-hero_carousel-pagination_dot{{${'#'}isFirst}} m-current{{/isFirst}}\"\n * aria-labelledby=\"slide-{{page}}\"\n * data-page=\"{{page}}\"\n * data-event-click=\"handlePaginationClick\"\n * data-tau=\"carousel_hero_cta\"\n * >\n * <svg class=\"b-hero_carousel-pagination_svg\" height=\"18\" width=\"18\" viewBox=\"0 0 18 18\">\n * <circle class=\"b-hero_carousel-pagination_dot_outline\" cx=\"9\" cy=\"9\" r=\"7.5\"></circle>\n * </svg>\n * </button>\n * {{/pagination}}\n * </div>\n * </script>\n * </div>\n * </div>\n * <div\n * class=\"b-hero_carousel-track\"\n * id=\"slider-content\"\n * data-ref=\"elemCarouselTrack\"\n * data-event-touchstart.passive=\"touchStart\"\n * aria-atomic=\"false\"\n * aria-live=\"off\"\n * >\n * <isset name=\"ContentModel\" value=\"${require(' /cartridge/models/content')}\" scope=\"page\" />\n * <isloop items=\"${slotcontent.content}\" var=\"contentAsset\" status=\"loopStatus\">\n * <div\n * class=\"b-hero_carousel-item\"\n * role=\"group\"\n * aria-roledescription=\"slide\"\n * tabindex=\"0\"\n * data-label-delimiter=\"${Resource.msg('carousel.labelDelimiter', 'carousel', null)}\"\n * data-tau=\"carousel_hero_item\"\n * >\n * <isprint value=\"${new ContentModel(contentAsset).getMarkup()}\" encoding=\"off\" />\n * </div>\n * </isloop>\n * </div>\n * </div>\n */\n class HeroCarousel extends Widget {\n prefs() {\n return {\n autoplayEnabled: true,\n autoplayStopped: false,\n autoplayDuration: '3000',\n autoplayLabelStart: '',\n autoplayLabelStop: '',\n slideCurrentClass: 'm-current',\n slidePreviousClass: 'm-prev',\n slideNextClass: 'm-next',\n slideGrabbingClass: 'm-grabbing',\n slidePrefix: 'slide-',\n carouselInitialized: 'm-initialized',\n autoplayAnimated: 'm-animated',\n swipeMinShift: '16',\n swipeAngle: '30',\n clickShift: '1',\n ...super.prefs()\n };\n }\n\n /**\n * @description Widget initialization\n * @returns {void}\n */\n init() {\n super.init();\n // Async loading to not block other widget init\n timeout(() => {\n cssLoadChecker.get().then(() => this.initCarousel());\n }, 0);\n }\n\n /**\n * @description Initial carousel configuration\n * @returns {void}\n */\n initCarousel() {\n // Common carousel properties\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'currentSlideIndex' does not exist on typ... Remove this comment to see the full error message\n this.currentSlideIndex = 0;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'blockedByAnimations' does not exist on t... Remove this comment to see the full error message\n this.blockedByAnimations = false;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'slidesModel' does not exist on type 'Her... Remove this comment to see the full error message\n this.slidesModel = null;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'paginationDots' does not exist on type '... Remove this comment to see the full error message\n this.paginationDots = null;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isGrabbing' does not exist on type 'Hero... Remove this comment to see the full error message\n this.isGrabbing = false;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'startX' does not exist on type 'HeroCaro... Remove this comment to see the full error message\n this.startX = 0;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'startY' does not exist on type 'HeroCaro... Remove this comment to see the full error message\n this.startY = 0;\n\n // Autoplay properties\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'autoPlayStopped' does not exist on type ... Remove this comment to see the full error message\n this.autoPlayStopped = this.prefs().autoplayStopped;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'nextSlideTimer' does not exist on type '... Remove this comment to see the full error message\n this.nextSlideTimer = null;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'remainingTime' does not exist on type 'H... Remove this comment to see the full error message\n this.remainingTime = null;\n\n this.initStructure();\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isSlider' does not exist on type 'HeroCa... Remove this comment to see the full error message\n if (!this.isSlider) { return; }\n\n this.initPagination();\n this.goToSlide(0);\n\n if (this.prefs().autoplayEnabled) {\n this.initAutoplay();\n }\n\n this.ref('self').addClass(this.prefs().carouselInitialized);\n }\n\n /**\n * @description Initialize carousel structure with slides\n * @returns {void}\n */\n initStructure() {\n const track = this.ref('elemCarouselTrack').get();\n\n if (track) {\n if (track.children.length === 2) {\n const initialContent = track.innerHTML;\n\n track.innerHTML = initialContent + initialContent; // Clone slides\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'slides' does not exist on type 'HeroCaro... Remove this comment to see the full error message\n this.slides = track.children;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'slidesTotal' does not exist on type 'Her... Remove this comment to see the full error message\n this.slidesTotal = this.slides.length;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'slides' does not exist on type 'HeroCaro... Remove this comment to see the full error message\n for (let i = 0; i < this.slides.length; i++) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'slides' does not exist on type 'HeroCaro... Remove this comment to see the full error message\n const slide = this.slides[i];\n\n slide.setAttribute('id', (this.prefs().slidePrefix + i));\n // eslint-disable-next-line sonarjs/no-duplicate-string\n slide.setAttribute('aria-label', ((i + 1) + ' ' + track.getAttribute('data-label-delimiter')\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'slidesTotal' does not exist on type 'Her... Remove this comment to see the full error message\n + ' ' + this.slidesTotal));\n }\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isSlider' does not exist on type 'HeroCa... Remove this comment to see the full error message\n this.isSlider = this.slidesTotal && this.slidesTotal > 1;\n }\n\n /**\n * @description Changes current slide to slide with provided index\n * @param {number} index Next slide index\n * @returns {void}\n */\n goToSlide(index) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'blockedByAnimations' does not exist on t... Remove this comment to see the full error message\n if (this.blockedByAnimations) { return; }\n\n if (this.prefs().autoplayEnabled) {\n this.endAutoplay();\n }\n\n const newSlideIndex = this.normalizeIndex(index);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'slidesModel' does not exist on type 'Her... Remove this comment to see the full error message\n this.slidesModel = this.getSlidesModel(newSlideIndex);\n\n this.toggleAnimationMode(true);\n this.waitForTransitionEnd(() => this.toggleAnimationMode(false));\n\n this.applySlidesModel();\n this.setActivePagination(newSlideIndex);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'currentSlideIndex' does not exist on typ... Remove this comment to see the full error message\n this.currentSlideIndex = newSlideIndex;\n\n if (this.prefs().autoplayEnabled) {\n this.startAutoplay(true);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isFocused' does not exist on type 'HeroC... Remove this comment to see the full error message\n this.isFocused = false;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isHover' does not exist on type 'HeroCar... Remove this comment to see the full error message\n this.isHover = false;\n }\n }\n\n /**\n * @description Blocks the ability to change slides until the animation is complete\n * @param {boolean} isAnimated - block/unblock changing current slide\n * @returns {void}\n */\n toggleAnimationMode(isAnimated) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'blockedByAnimations' does not exist on t... Remove this comment to see the full error message\n this.blockedByAnimations = isAnimated;\n this.ref('elemPrevButton').attr('aria-busy', isAnimated);\n this.ref('elemNextButton').attr('aria-busy', isAnimated);\n }\n\n /**\n * @description Assigns classes to slide elements in accordance with position of current slide\n * @returns {void}\n */\n applySlidesModel() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'slides' does not exist on type 'HeroCaro... Remove this comment to see the full error message\n if (!this.slides || !this.slidesModel) { return; }\n\n const allClasses = [this.prefs().slidePreviousClass, this.prefs().slideNextClass, this.prefs().slideCurrentClass];\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'slidesTotal' does not exist on type 'Her... Remove this comment to see the full error message\n let n = this.slidesTotal || 0;\n\n while (n--) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'slides' does not exist on type 'HeroCaro... Remove this comment to see the full error message\n const slideElement = this.slides[n];\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'slidesModel' does not exist on type 'Her... Remove this comment to see the full error message\n const slideClass = this.slidesModel[n];\n\n slideElement.classList.remove(...allClasses);\n\n if (slideClass) {\n slideElement.classList.add(slideClass);\n }\n }\n }\n\n /**\n * @description Updates classes list of slide elements in accordance with updated index\n * @param {number} index - Updated slide index\n * @returns {Array} Array with updated classes\n */\n getSlidesModel(index) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'slidesTotal' does not exist on type 'Her... Remove this comment to see the full error message\n const model = new Array(this.slidesTotal);\n const nextIndex = this.normalizeIndex(index + 1);\n const prevIndex = this.normalizeIndex(index - 1);\n const currentIndex = this.normalizeIndex(index);\n\n model.fill(this.prefs().slidePreviousClass, 0, currentIndex);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'slidesTotal' does not exist on type 'Her... Remove this comment to see the full error message\n model.fill(this.prefs().slideNextClass, currentIndex, this.slidesTotal);\n\n model[currentIndex] = this.prefs().slideCurrentClass;\n model[nextIndex] = this.prefs().slideNextClass;\n model[prevIndex] = this.prefs().slidePreviousClass;\n\n return model;\n }\n\n /**\n * @description Normalizes slide index according to looped carousel approach\n * @param {number} index - Slide index\n * @returns {number} Normalized slide index\n */\n normalizeIndex(index) {\n let normalizedIndex = 0;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'slidesTotal' does not exist on type 'Her... Remove this comment to see the full error message\n if (this.slidesTotal) {\n if (index < 0) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'slidesTotal' does not exist on type 'Her... Remove this comment to see the full error message\n normalizedIndex = (this.slidesTotal - 1);\n } else {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'slidesTotal' does not exist on type 'Her... Remove this comment to see the full error message\n normalizedIndex = index % this.slidesTotal;\n }\n }\n\n return normalizedIndex;\n }\n\n /**\n * @description Calls callback after the animation is ended\n * @listens HeroCarousel#transitionend\n * @param {Function} callback - function to be executed when the transition ends\n * @returns {void}\n */\n waitForTransitionEnd(callback) {\n const onEnd = (el, event) => {\n if (event && event.propertyName !== 'transform') { return; }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'transitionFallbackTimer' does not exist ... Remove this comment to see the full error message\n if (this.transitionFallbackTimer) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'transitionFallbackTimer' does not exist ... Remove this comment to see the full error message\n this.transitionFallbackTimer();\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'transitionEndDisposable' does not exist ... Remove this comment to see the full error message\n if (this.transitionEndDisposable) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'transitionEndDisposable' does not exist ... Remove this comment to see the full error message\n this.transitionEndDisposable.forEach(disposable => disposable());\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'transitionEndDisposable' does not exist ... Remove this comment to see the full error message\n this.transitionEndDisposable = undefined;\n }\n\n callback();\n };\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'transitionEndDisposable' does not exist ... Remove this comment to see the full error message\n this.transitionEndDisposable = this.ev('transitionend', onEnd, this.ref('elemCarouselTrack').get());\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'transitionFallbackTimer' does not exist ... Remove this comment to see the full error message\n this.transitionFallbackTimer = timeout(onEnd, 800);\n }\n\n /**\n * @description Initialize carousel pagination\n * @returns {void}\n */\n initPagination() {\n this.has('paginationDots', paginationRefEl => {\n const pagination = paginationRefEl.get();\n\n if (pagination) {\n // If empty pagination - we need to render it. Otherwise - create.\n if (pagination.innerHTML === '') {\n this.createPaginationElements();\n } else {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'pagination' does not exist on type 'Hero... Remove this comment to see the full error message\n this.pagination = Promise.resolve(pagination);\n }\n\n const paginationDots = this.ref('paginationDots').get();\n\n if (paginationDots) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'paginationDots' does not exist on type '... Remove this comment to see the full error message\n this.paginationDots = paginationDots.children;\n }\n }\n });\n }\n\n /**\n * @description Creates carousel pagination\n * @returns {void}\n */\n createPaginationElements() {\n const elemCarouselTrack = this.ref('elemCarouselTrack').get();\n\n if (!elemCarouselTrack) { return; }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'slidesTotal' does not exist on type 'Her... Remove this comment to see the full error message\n const pagination = new Array(this.slidesTotal).fill(0).map((_el, i) => ({ page: i, isFirst: i === 0 }));\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'pagination' does not exist on type 'Hero... Remove this comment to see the full error message\n this.pagination = new Promise((resolve) => {\n this.render(undefined, { pagination }, this.ref('paginationDots')).then(() => {\n resolve(this.ref('paginationDots').get());\n this.ref('pagination').addClass(this.prefs().carouselInitialized);\n });\n });\n }\n\n /**\n * @description Pagination click Event handler\n * @listens dom#click\n * @param {refElement} el - source of event\n * @returns {void}\n */\n handlePaginationClick(el) {\n if (el.hasClass(this.prefs().slideCurrentClass)) { return; }\n\n const nextSlideIndex = el.data('page');\n\n this.goToSlide(nextSlideIndex);\n }\n\n /**\n * @description Updates attributes/classes on previous and current pagination element\n * @param {number} index - Pagination dot index\n * @returns {void}\n */\n setActivePagination(index) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'paginationDots' does not exist on type '... Remove this comment to see the full error message\n if (this.paginationDots && this.paginationDots.length) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'currentSlideIndex' does not exist on typ... Remove this comment to see the full error message\n const currentIndex = this.currentSlideIndex || 0;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'paginationDots' does not exist on type '... Remove this comment to see the full error message\n this.paginationDots[currentIndex].classList.remove(this.prefs().slideCurrentClass);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'paginationDots' does not exist on type '... Remove this comment to see the full error message\n this.paginationDots[currentIndex].removeAttribute('aria-disabled');\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'paginationDots' does not exist on type '... Remove this comment to see the full error message\n this.paginationDots[index].classList.add(this.prefs().slideCurrentClass);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'paginationDots' does not exist on type '... Remove this comment to see the full error message\n this.paginationDots[index].setAttribute('aria-disabled', 'true');\n }\n }\n\n /**\n * @description Shows the next slide\n * @listens dom#click\n * @returns {void}\n */\n goToNextSlide() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'currentSlideIndex' does not exist on typ... Remove this comment to see the full error message\n if (typeof this.currentSlideIndex !== 'undefined') {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'currentSlideIndex' does not exist on typ... Remove this comment to see the full error message\n this.goToSlide(this.currentSlideIndex + 1);\n }\n }\n\n /**\n * @description Shows the previous slide\n * @listens dom#click\n * @returns {void}\n */\n goToPrevSlide() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'currentSlideIndex' does not exist on typ... Remove this comment to see the full error message\n if (typeof this.currentSlideIndex !== 'undefined') {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'currentSlideIndex' does not exist on typ... Remove this comment to see the full error message\n this.goToSlide(this.currentSlideIndex - 1);\n }\n }\n\n /**\n * @description Adds mouse/touch listeners for swipe functionality\n * @listens HeroCarousel#touchstart\n * @param {HTMLElement|undefined} el - source of event\n * @returns {void}\n */\n addTouchListeners(el) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'touchMoveDisposable' does not exist on t... Remove this comment to see the full error message\n this.touchMoveDisposable = this.ev('touchmove', this.touchMove, el, false);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'mouseMoveDisposable' does not exist on t... Remove this comment to see the full error message\n this.mouseMoveDisposable = this.ev('mousemove', this.touchMove, el, false);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'mouseUpDisposable' does not exist on typ... Remove this comment to see the full error message\n this.mouseUpDisposable = this.ev('mouseup', this.touchEnd, el);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'mouseLeaveDisposable' does not exist on ... Remove this comment to see the full error message\n this.mouseLeaveDisposable = this.ev('mouseleave', this.touchEnd, el);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'touchEndDisposable' does not exist on ty... Remove this comment to see the full error message\n this.touchEndDisposable = this.ev('touchend', this.touchEnd, el);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'touchCancelDisposable' does not exist on... Remove this comment to see the full error message\n this.touchCancelDisposable = this.ev('touchcancel', this.touchEnd, el, false);\n // call context menu on slide and close it should not be treated as mousemove\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'contextMenuDisposable' does not exist on... Remove this comment to see the full error message\n this.contextMenuDisposable = this.ev('contextmenu', this.touchEnd, el, false);\n }\n\n /**\n * @description Removes mouse/touch listeners for swipe functionality\n * @listens HeroCarousel#touchend\n * @returns {void}\n */\n removeTouchListeners() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'touchMoveDisposable' does not exist on t... Remove this comment to see the full error message\n if (this.touchMoveDisposable) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'touchMoveDisposable' does not exist on t... Remove this comment to see the full error message\n this.touchMoveDisposable.forEach(disposable => disposable());\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'touchMoveDisposable' does not exist on t... Remove this comment to see the full error message\n this.touchMoveDisposable = undefined;\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'mouseMoveDisposable' does not exist on t... Remove this comment to see the full error message\n if (this.mouseMoveDisposable) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'mouseMoveDisposable' does not exist on t... Remove this comment to see the full error message\n this.mouseMoveDisposable.forEach(disposable => disposable());\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'mouseMoveDisposable' does not exist on t... Remove this comment to see the full error message\n this.mouseMoveDisposable = undefined;\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'mouseUpDisposable' does not exist on typ... Remove this comment to see the full error message\n if (this.mouseUpDisposable) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'mouseUpDisposable' does not exist on typ... Remove this comment to see the full error message\n this.mouseUpDisposable.forEach(disposable => disposable());\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'mouseUpDisposable' does not exist on typ... Remove this comment to see the full error message\n this.mouseUpDisposable = undefined;\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'mouseLeaveDisposable' does not exist on ... Remove this comment to see the full error message\n if (this.mouseLeaveDisposable) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'mouseLeaveDisposable' does not exist on ... Remove this comment to see the full error message\n this.mouseLeaveDisposable.forEach(disposable => disposable());\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'mouseLeaveDisposable' does not exist on ... Remove this comment to see the full error message\n this.mouseLeaveDisposable = undefined;\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'touchEndDisposable' does not exist on ty... Remove this comment to see the full error message\n if (this.touchEndDisposable) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'touchEndDisposable' does not exist on ty... Remove this comment to see the full error message\n this.touchEndDisposable.forEach(disposable => disposable());\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'touchEndDisposable' does not exist on ty... Remove this comment to see the full error message\n this.touchEndDisposable = undefined;\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'touchCancelDisposable' does not exist on... Remove this comment to see the full error message\n if (this.touchCancelDisposable) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'touchCancelDisposable' does not exist on... Remove this comment to see the full error message\n this.touchCancelDisposable.forEach(disposable => disposable());\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'touchCancelDisposable' does not exist on... Remove this comment to see the full error message\n this.touchCancelDisposable = undefined;\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'contextMenuDisposable' does not exist on... Remove this comment to see the full error message\n if (this.contextMenuDisposable) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'contextMenuDisposable' does not exist on... Remove this comment to see the full error message\n this.contextMenuDisposable.forEach(disposable => disposable());\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'contextMenuDisposable' does not exist on... Remove this comment to see the full error message\n this.contextMenuDisposable = undefined;\n }\n }\n\n /**\n * @description Checks if swipe functionality is initialized according to provided touches angle\n * @param {number} x - clientX coordinate value\n * @param {number} y - clientY coordinate value\n * @returns {boolean} true if swipe is initialized\n */\n isSwipe(x, y) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'startX' does not exist on type 'HeroCaro... Remove this comment to see the full error message\n const diffX = x - this.startX;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'startY' does not exist on type 'HeroCaro... Remove this comment to see the full error message\n const diffY = y - this.startY;\n const angleDeg = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n\n if (!this.prefs().swipeAngle) {\n return false;\n }\n\n return angleDeg < +this.prefs().swipeAngle;\n }\n\n /**\n * @description Defines swipe properties at the start of the event.\n * Adds event listeners to check if the swipe event is true\n * @listens HeroCarousel#touchstart\n * @listens HeroCarousel#mousedown\n * @param {refElement} el - source of event\n * @param {object} event - DOM event\n * @returns {void}\n */\n touchStart(el, event) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isSlider' does not exist on type 'HeroCa... Remove this comment to see the full error message\n if (!this.isSlider) { return; }\n\n event.stopPropagation();\n event = event.changedTouches ? event.changedTouches[0] : event;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'startX' does not exist on type 'HeroCaro... Remove this comment to see the full error message\n this.startX = event.clientX;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'startY' does not exist on type 'HeroCaro... Remove this comment to see the full error message\n this.startY = event.clientY;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isMoving' does not exist on type 'HeroCa... Remove this comment to see the full error message\n this.isMoving = false;\n\n this.addTouchListeners(el.get());\n }\n\n /**\n * @description Shows the previous/next slide in case if the swipe event is true\n * @listens HeroCarousel#mouseup\n * @listens HeroCarousel#mouseleave\n * @listens HeroCarousel#touchend\n * @param {HTMLElement} el - source of event\n * @param {object} event - DOM event\n * @returns {void}\n */\n touchEnd(el, event) {\n this.removeTouchListeners();\n\n event = event.changedTouches ? event.changedTouches[0] : event;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isGrabbing' does not exist on type 'Hero... Remove this comment to see the full error message\n this.isGrabbing = false;\n this.ref('elemCarouselTrack').removeClass(this.prefs().slideGrabbingClass);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'startX' does not exist on type 'HeroCaro... Remove this comment to see the full error message\n const shiftWidth = this.startX - event.clientX;\n const isSwipe = this.isSwipe(event.clientX, event.clientY)\n && Math.abs(shiftWidth) >= (+this.prefs().swipeMinShift || 0);\n\n if (!isSwipe) { return; }\n\n if (shiftWidth > 0) {\n this.goToNextSlide();\n } else {\n this.goToPrevSlide();\n }\n }\n\n /**\n * @description Adds a class for showing grabbing cursor, prevents blocking of site scrolling, prevents child dragging.\n * @listens HeroCarousel#touchmove\n * @listens HeroCarousel#mousemove\n * @param {HTMLElement} el - source of event\n * @param {object} event - DOM event\n * @returns {void}\n */\n touchMove(el, event) {\n // To prevent starting touchMove on click event\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isMoving' does not exist on type 'HeroCa... Remove this comment to see the full error message\n if (!this.isMoving && (Math.abs(this.startX - event.clientX) < parseInt(this.prefs().clickShift, 10)\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'startY' does not exist on type 'HeroCaro... Remove this comment to see the full error message\n || Math.abs(this.startY - event.clientY) < parseInt(this.prefs().clickShift, 10))) {\n return;\n } else {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isMoving' does not exist on type 'HeroCa... Remove this comment to see the full error message\n this.isMoving = true;\n }\n\n // To prevent child dragging and to add dragging cursor\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isGrabbing' does not exist on type 'Hero... Remove this comment to see the full error message\n if (!this.isGrabbing) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isGrabbing' does not exist on type 'Hero... Remove this comment to see the full error message\n this.isGrabbing = true;\n this.ref('elemCarouselTrack').addClass(this.prefs().slideGrabbingClass);\n }\n\n const originalEvent = event;\n\n event = event.changedTouches ? event.changedTouches[0] : event;\n\n // To prevent blocking of site scrolling\n const isSwipe = this.isSwipe(event.clientX, event.clientY);\n\n // eslint-disable-next-line spellcheck/spell-checker\n if (isSwipe && originalEvent.cancelable) {\n originalEvent.preventDefault();\n originalEvent.stopPropagation();\n }\n }\n\n /**\n * @description Autoplay initialization\n * @returns {void}\n */\n initAutoplay() {\n this.ref('autoplay').addClass(this.prefs().carouselInitialized);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'autoPlayStopped' does not exist on type ... Remove this comment to see the full error message\n if (this.autoPlayStopped) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'autoPlayPaused' does not exist on type '... Remove this comment to see the full error message\n this.autoPlayPaused = true;\n this.togglePlayButtonState();\n\n return;\n }\n\n this.startAutoplay(true);\n this.addAutoplayListeners();\n this.initIntersectionObserver();\n }\n\n /**\n * @description Starts autoplay functionality with automatic slides changing\n * @listens dom#click\n * @param {boolean} [isForce] - true if autoplay starts forced (go to slide with animation/timer restart)\n * @returns {void}\n */\n startAutoplay(isForce) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'autoPlayPaused' does not exist on type '... Remove this comment to see the full error message\n if ((!this.autoPlayPaused && !isForce) || this.autoPlayStopped) { return; }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'nextSlideTimer' does not exist on type '... Remove this comment to see the full error message\n if (this.nextSlideTimer) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'nextSlideTimer' does not exist on type '... Remove this comment to see the full error message\n this.nextSlideTimer();\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'autoPlayPaused' does not exist on type '... Remove this comment to see the full error message\n this.autoPlayPaused = false;\n\n this.ref('elemCarouselTrack').attr('aria-live', 'off');\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'creationTime' does not exist on type 'He... Remove this comment to see the full error message\n this.creationTime = Date.now();\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'remainingTime' does not exist on type 'H... Remove this comment to see the full error message\n if (this.remainingTime === null) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'remainingTime' does not exist on type 'H... Remove this comment to see the full error message\n this.remainingTime = parseInt(this.prefs().autoplayDuration, 10); // force to access by value\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'nextSlideTimer' does not exist on type '... Remove this comment to see the full error message\n this.nextSlideTimer = timeout(this.goToNextSlide.bind(this), this.remainingTime);\n\n this.startDotAnimation();\n this.togglePlayButtonState();\n }\n\n /**\n * @description Pause autoplay functionality\n * @listens dom#click\n * @returns {void}\n */\n pauseAutoplay() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'autoPlayPaused' does not exist on type '... Remove this comment to see the full error message\n if (this.autoPlayPaused) { return; }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'autoPlayPaused' does not exist on type '... Remove this comment to see the full error message\n this.autoPlayPaused = true;\n this.ref('elemCarouselTrack').attr('aria-live', 'polite');\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'nextSlideTimer' does not exist on type '... Remove this comment to see the full error message\n if (this.nextSlideTimer) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'nextSlideTimer' does not exist on type '... Remove this comment to see the full error message\n this.nextSlideTimer();\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'remainingTime' does not exist on type 'H... Remove this comment to see the full error message\n if (this.remainingTime) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'remainingTime' does not exist on type 'H... Remove this comment to see the full error message\n this.remainingTime -= (Date.now() - (this.creationTime || 0));\n }\n\n this.pauseDotAnimation();\n this.togglePlayButtonState();\n }\n\n /**\n * @description Disable autoplay functionality\n * @returns {void}\n */\n endAutoplay() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'nextSlideTimer' does not exist on type '... Remove this comment to see the full error message\n if (this.nextSlideTimer) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'nextSlideTimer' does not exist on type '... Remove this comment to see the full error message\n this.nextSlideTimer();\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'remainingTime' does not exist on type 'H... Remove this comment to see the full error message\n this.remainingTime = null;\n\n this.removeDotAnimation();\n }\n\n /**\n * @description Stops/starts autoplay. It can be unstopped only by using this method again.\n * @listens dom#click\n * @returns {void}\n */\n togglePlay() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'autoPlayPaused' does not exist on type '... Remove this comment to see the full error message\n if (this.autoPlayPaused) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'autoPlayStopped' does not exist on type ... Remove this comment to see the full error message\n this.autoPlayStopped = false;\n\n // @ts-expect-error ts-migrate(2554) FIXME: Expected 1 arguments, but got 0.\n this.startAutoplay();\n } else {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'autoPlayStopped' does not exist on type ... Remove this comment to see the full error message\n this.autoPlayStopped = true;\n this.pauseAutoplay();\n }\n }\n\n /**\n * @description Toggles autoplay button attributes according to state(started/stopped).\n * @returns {void}\n */\n togglePlayButtonState() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'autoPlayPaused' does not exist on type '... Remove this comment to see the full error message\n if (typeof this.autoPlayPaused !== 'undefined') {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'autoPlayPaused' does not exist on type '... Remove this comment to see the full error message\n this.ref('autoplay').attr('aria-pressed', this.autoPlayPaused.toString());\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'autoPlayPaused' does not exist on type '... Remove this comment to see the full error message\n if (this.autoPlayPaused) {\n this.ref('autoplay').attr('aria-label', this.prefs().autoplayLabelStart);\n } else {\n this.ref('autoplay').attr('aria-label', this.prefs().autoplayLabelStop);\n }\n }\n\n /**\n * @description Toggles autoplay button attributes according to state(started/stopped).\n * @returns {void}\n */\n startDotAnimation() {\n const autoplayBtn = this.ref('autoplay').get();\n\n if (!autoplayBtn) { return; }\n\n autoplayBtn.style.animationDuration = `${this.prefs().autoplayDuration}ms`;\n autoplayBtn.style.animationPlayState = 'running';\n\n timeout(() => this.ref('autoplay').addClass(this.prefs().autoplayAnimated), 100);\n }\n\n /**\n * @description Pauses dot animation.\n * @returns {void}\n */\n pauseDotAnimation() {\n const autoplayBtn = this.ref('autoplay').get();\n\n if (!autoplayBtn) { return; }\n\n autoplayBtn.style.animationPlayState = 'paused';\n }\n\n /**\n * @description Removes dot animation.\n * @returns {void}\n */\n removeDotAnimation() {\n this.ref('autoplay').removeClass(this.prefs().autoplayAnimated);\n }\n\n /**\n * @description Adds autoplay listeners\n * @returns {void}\n */\n addAutoplayListeners() {\n const track = this.ref('elemCarouselTrack').get();\n\n this.ev('click', this.togglePlay, this.ref('autoplay').get());\n this.ev('focusin', this.autoPlayFocusIn, track);\n this.ev('focusout', this.autoPlayFocusOut, track);\n this.ev('mouseover', this.autoPlayMouseOver, track);\n this.ev('mouseleave', this.autoPlayMouseLeave, track);\n }\n\n /**\n * @description Pauses the autoplay functionality when the slide is in focus.\n * @listens HeroCarousel#focusin\n * @returns {void}\n */\n autoPlayFocusIn() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isFocused' does not exist on type 'HeroC... Remove this comment to see the full error message\n if (this.isFocused) { return; }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isFocused' does not exist on type 'HeroC... Remove this comment to see the full error message\n this.isFocused = true;\n this.pauseAutoplay();\n }\n\n /**\n * @description Starts the autoplay functionality when the slide loses focus.\n * @listens HeroCarousel#focusout\n * @returns {void}\n */\n autoPlayFocusOut() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isFocused' does not exist on type 'HeroC... Remove this comment to see the full error message\n this.isFocused = false;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isHover' does not exist on type 'HeroCar... Remove this comment to see the full error message\n if (!this.isHover) {\n // @ts-expect-error ts-migrate(2554) FIXME: Expected 1 arguments, but got 0.\n this.startAutoplay();\n }\n }\n\n /**\n * @description Pauses the autoplay functionality when the slide is in hover.\n * @listens HeroCarousel#mouseover\n * @returns {void}\n */\n autoPlayMouseOver() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isHover' does not exist on type 'HeroCar... Remove this comment to see the full error message\n if (this.isHover) { return; }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isHover' does not exist on type 'HeroCar... Remove this comment to see the full error message\n this.isHover = true;\n this.pauseAutoplay();\n }\n\n /**\n * @description Starts the autoplay functionality when the slide loses hover.\n * @listens HeroCarousel#mouseleave\n * @returns {void}\n */\n autoPlayMouseLeave() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isHover' does not exist on type 'HeroCar... Remove this comment to see the full error message\n this.isHover = false;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isFocused' does not exist on type 'HeroC... Remove this comment to see the full error message\n if (!this.isFocused) {\n // @ts-expect-error ts-migrate(2554) FIXME: Expected 1 arguments, but got 0.\n this.startAutoplay();\n }\n }\n\n /**\n * @description Attach IntersectionObserver to carousel to pause autoplay in case if carousel is not visible\n * @returns {void}\n */\n initIntersectionObserver() {\n const carousel = this.ref('self').get();\n\n if (!carousel) { return; }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'observer' does not exist on type 'HeroCa... Remove this comment to see the full error message\n this.observer = new IntersectionObserver(\n ([entry]) => this.autoPlayVisible(entry.isIntersecting),\n { threshold: [0, 1] }\n );\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'observer' does not exist on type 'HeroCa... Remove this comment to see the full error message\n this.observer.observe(carousel);\n }\n\n /**\n * @description IntersectionObserver handler that pause/start autoplay depending of carousel visibility\n * @param {boolean} isVisible do carousel in viewport\n * @returns {void}\n */\n autoPlayVisible(isVisible) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isHover' does not exist on type 'HeroCar... Remove this comment to see the full error message\n if (this.isHover || this.isFocused) { return; }\n\n if (isVisible) {\n // @ts-expect-error ts-migrate(2554) FIXME: Expected 1 arguments, but got 0.\n this.startAutoplay();\n } else {\n this.pauseAutoplay();\n }\n }\n\n /**\n * @description Destroy IntersectionObserver in case of component destroy\n * @returns {void}\n */\n destroy() {\n const carousel = this.ref('self').get();\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'observer' does not exist on type 'HeroCa... Remove this comment to see the full error message\n if (this.observer && carousel) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'observer' does not exist on type 'HeroCa... Remove this comment to see the full error message\n // eslint-disable-next-line spellcheck/spell-checker\n this.observer.unobserve(carousel);\n }\n }\n }\n\n return HeroCarousel;\n}\n","import { RefElement } from 'widgets/toolbox/RefElement';\nimport { TWidget } from 'widgets/Widget';\n\n/**\n * @param {Widget} Widget Base widget for extending\n */\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory global\n * @class Label\n * @augments Widget\n * @classdesc Represents Label component with next features:\n * 1. Widget could be used in different context, where we need to display dynamic content depending on different global events using mustache template\n * 2. Allow being enabled/disabled\n * 3. Allow managing text/value/error messages on the referenced element\n * @example <caption>Example of Label widget usage with checkout.step.updated event listener</caption>\n * <div\n * data-widget=\"label\"\n * data-listen-events=\"checkout.step.updated\"\n * data-widget-event-click=\"submitCurrentStep\"\n * >\n * <script data-ref=\"template\" type=\"template/mustache\">\n * <div\n * data-widget=\"label\"\n * data-listen-events=\"checkout.step.updated\"\n * data-widget-event-click=\"submitCurrentStep\"\n * >\n * {{${'#'}shipping}}\n * <button data-event-click=\"handleClick\" type=\"submit\" name=\"submit\" value=\"submit-shipping\">\n * ${Resource.msg('button.next.payment', 'checkout', null)}\n * </button>\n * {{/shipping}}\n * {{${'#'}billing}}\n * <button data-event-click=\"handleClick\" type=\"submit\" name=\"submit\" value=\"submit-payment\">\n * ${Resource.msg('button.next.place.order', 'checkout', null)}\n * </button>\n * {{/billing}}\n * {{${'#'}summary}}\n * <button data-event-click=\"handleClick\" type=\"submit\" name=\"submit\" value=\"place-order\">\n * ${Resource.msg('button.next.place.order', 'checkout', null)}\n * </button>\n * {{/summary}}\n * </div>\n * </script>\n * </div>\n * @property {string} data-widget - Widget name `label`\n * @property {string} data-listen-events - Events used to update template\n * Listen to global bus events, separated by comma and updates content based on event data\n * @property {string} data-widget-event-click - Triggers parent's method on widget's elements click\n */\n class Label extends Widget {\n disabled = false;\n\n prefs() {\n return {\n listenEvents: '',\n classesError: 'm-error',\n classesActive: 'active',\n target: 'self',\n ...super.prefs()\n };\n }\n\n /**\n * @description Widget logic initialization\n */\n init(): void {\n super.init();\n\n if (!this.id) {\n this.id = String(this.config.id);\n }\n\n this.shown = true;\n\n if (this.config.hidden || this.ref('self').hasAttr('hidden')) {\n this.hide();\n } else {\n this.show();\n }\n\n this.disabled = this.ref('self').attr('disabled') === 'disabled';\n\n const listenEvents = this.config.listenEvents;\n\n if (typeof listenEvents === 'string' && listenEvents) {\n listenEvents.split(',').forEach(eventName => {\n this.eventBus().on(eventName.trim(), 'updateTemplate');\n });\n }\n }\n\n /**\n * @description Update template with passed data\n * @param data data to render, usually executes with the data, streamed down with an event\n * @returns resolved if rendered or rejected if no found template promise\n */\n updateTemplate(data: Record<string, unknown> = {}): Promise<void> {\n return this.render(undefined, data);\n }\n\n /**\n * @description get Label value\n * @returns value of widget's target referenced attribute\n */\n getValue(): string | RefElement {\n return this.ref(this.prefs().target).val();\n }\n\n /**\n * @description set Label value\n * @param val - Value to set into widget's target referenced attribute\n */\n setValue(val: (string | number | boolean | undefined) = ''): void {\n this.setError();\n this.ref(this.prefs().target).val(val);\n }\n\n /**\n * @description get Label text\n * @returns text of widget's target referenced attribute\n */\n getText(): string | RefElement {\n return this.ref(this.prefs().target).getText();\n }\n\n /**\n * @description Set Label text\n * @param val - Value to set as a text of the widget's target referenced attribute\n */\n setText(val: (string | undefined) = ''): this {\n const currentText = this.getText();\n\n this.ref(this.prefs().target).removeClass(this.prefs().classesError);\n\n if (currentText !== val) {\n this.ref(this.prefs().target).setText(val);\n }\n\n return this;\n }\n\n /**\n * @description Sets `err` as a widget's target referenced attribute text\n * and if `err` is not empty - adds error class to widget's target referenced attribute\n * @param err - Value to set as a text of the widget's target referenced attribute\n */\n setError(err: (string | undefined) = ''): this {\n this.setText(err);\n\n if (err) {\n this.ref(this.prefs().target).addClass(this.prefs().classesError);\n }\n\n return this;\n }\n\n /**\n * @description Method to mark element as `active`\n */\n activate(): this {\n this.ref('self').addClass(this.prefs().classesActive);\n\n return this;\n }\n\n /**\n * @description Method to mark element as `inactive`\n */\n deactivate(): this {\n this.ref('self').removeClass(this.prefs().classesActive);\n\n return this;\n }\n\n /**\n * @description Disable Label\n */\n disable(): void {\n this.disabled = true;\n this.ref('self').disable();\n }\n\n /**\n * @description Enable Label\n */\n enable(): void {\n this.disabled = false;\n this.ref('self').enable();\n }\n\n /**\n * @description Emit click event\n * @emits Label#click\n * @param data - additional data for parent\n */\n handleClick(data: any): void {\n /**\n * @description Event to handle click\n * @event Label#click\n */\n this.emit('click', data);\n }\n }\n\n return Label;\n}\n","import { TWidget } from 'widgets/Widget';\n\n/**\n * @param Widget Base widget for extending\n * @returns ListAccessibility widget\n */\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory global\n * @class ListAccessibility\n * @augments Widget\n * @classdesc Represents ListAccessibility component that implement Basic Accessibility requirements for list of elements.\n * Has next features:\n * 1. Define list of focusable elements inside current widget\n * 2. Allow set focus to item or current item\n * 3. Allow set focus to first/last item\n * 4. Allow set focus to next/previous item\n *\n * Widget should be not used as standalone widget, it should be mixed to other widgets (see {@tutorial WidgetsMixinsStrategy})\n */\n class ListAccessibility extends Widget {\n focusableItems: Array<InstanceType<TWidget>> = [];\n\n currentItem: InstanceType<TWidget> | undefined;\n\n firstItem: any;\n\n lastItem: any;\n\n prefs() {\n return {\n itemLink: 'itemLink',\n ...super.prefs()\n };\n }\n\n /**\n * @description Define Items\n * @param currentItem Current Item\n */\n defineItems(currentItem?: InstanceType<TWidget>): void {\n if (this.items) {\n this.focusableItems = [];\n this.focusableItems = this.items.filter((item) => {\n return item.isShown() && 'focus' in item;\n });\n\n if (currentItem && this.focusableItems.includes(currentItem)) {\n this.currentItem = currentItem;\n } else {\n this.currentItem = this.focusableItems[0];\n }\n\n this.firstItem = this.focusableItems[0];\n this.lastItem = this.focusableItems[this.focusableItems.length - 1];\n }\n }\n\n /**\n * @description Set focus to item\n * @param item item\n */\n setFocusToItem(item?: InstanceType<TWidget>): void {\n if (item) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'focus' does not exist on type 'Widget'.\n item.focus();\n this.currentItem = item;\n }\n }\n\n /**\n * @description Set focus to current item\n */\n setFocusToCurrentItem(): void {\n this.setFocusToItem(this.currentItem);\n }\n\n /**\n * @description Set focus to first item\n */\n setFocusToFirstItem(): void {\n this.setFocusToItem(this.firstItem);\n }\n\n /**\n * @description Set focus to last item\n */\n setFocusToLastItem(): void {\n this.setFocusToItem(this.lastItem);\n }\n\n /**\n * @description Get item index\n * @param item item widget\n * @returns Item index\n */\n getItemIndex(item?: InstanceType<TWidget>): number {\n return this.focusableItems && item ? this.focusableItems.indexOf(item) : -1;\n }\n\n /**\n * @description Set focus to next item\n */\n setFocusToNextItem(): void {\n if (this.focusableItems) {\n const newItem = this.currentItem === this.lastItem\n ? this.firstItem\n : this.focusableItems[this.getItemIndex(this.currentItem) + 1];\n\n this.setFocusToItem(newItem);\n }\n }\n\n /**\n * @description Set focus to previous item\n */\n setFocusToPreviousItem(): void {\n if (this.focusableItems) {\n const newItem = this.currentItem === this.firstItem\n ? this.lastItem\n : this.focusableItems[this.getItemIndex(this.currentItem) - 1];\n\n this.setFocusToItem(newItem);\n }\n }\n\n /**\n * @description Set Focus\n */\n focus(): void {\n this.has(this.prefs().itemLink, (itemLink) => {\n itemLink.focus();\n });\n }\n }\n\n return ListAccessibility;\n}\n","import { dialogMgr } from 'widgets/toolbox/dialogMgr';\n\nconst ESCAPE_CODE = 27;\n\ntype EmitBusEvent = ReturnType<typeof import('widgets/global/EmitBusEvent').default>;\n\n/**\n * @description Modal implementation\n * @param AccessibilityFocusTrapMixin mixin\n * @returns Modal class\n */\nexport default function (\n AccessibilityFocusTrapMixin: ReturnType<typeof import('widgets/global/AccessibilityFocusTrapMixin').default>\n) {\n /**\n * @category widgets\n * @subcategory global\n * @class Modal\n * @augments AccessibilityFocusTrapMixin\n * @classdesc Generic modal popups implementation.<br/>\n * - It renders a modal popup with grayed background. Can be closed by clicking outside modal.\n * - Allows to manage multi-modal depth structure (move one modal behind of another) (indirectly, bu using {@link dialogMgr}).\n * - If Modal need to be inited only on some viewport can be used modificators (sm,md,lg,xl). For example data-widget.sm.md=\"modal\"</br>\n * Note that in this case need also add same modificator to sub events in html elements. This can be easily done via \"dialogViewtypes\" variable in ISML template (see example below).<br/>\n * Don't forget clear this variable after dialog closing tag.\n * @property {string} data-widget - Widget name `modal`\n * @property {boolean} data-disable-rendering - Disable rendering flag\n * @property {string} data-classes-extra - Extra classes\n * @property {string} data-classes-global-dialog - a set of space separated addiptional modal classes\n * @property {string} data-classes-show - classes added to shown modal\n * @property {string} data-classes-top-dialog - top modal class in modals hierarchy depth\n * @property {string} data-classes-active - active modal classes\n * @property {string} data-ref-container - modal reference container\n * @property {string} data-ref-dialog - dialog reference container\n * @property {string} data-classes-extra - extra classes for dialog\n * @property {boolean} data-click-out-side - `true` if needed to close modal by clicking outside it\n * @property {boolean} data-close-by-escape - `true` if needed to close modal by using `Esc` button\n * @example <caption>Example of typical Modal widget</caption>\n * <div data-widget=\"modal\">\n * // dialogViewtypes need only in case when modal should be inited on some viewports\n * <isset name=\"dialogViewtypes\" value=\"sm.md\" scope=\"page\" />\n *\n * <div data-ref=\"container\" data-event-click.self=\"closeModal\"></div>\n * <script type=\"template/mustache\" data-ref=\"template\">\n * <div class=\"b-dialog-header\">\n * <div\n * class=\"b-dialog m-quick_view\"\n * id=\"editProductModal\"\n * data-ref=\"container\"\n * data-event-click.self=\"closeModal\"\n * >\n * <div\n * class=\"b-dialog-window\"\n * role=\"dialog\"\n * data-ref=\"dialog\"\n * aria-modal=\"true\"\n * aria-labelledby=\"editProductModalTitle\"\n * >\n * <div class=\"b-dialog-header\">\n * <button\n * class=\"b-dialog-close\"\n * title=\"${Resource.msg('common.close','common',null)}\"\n * aria-label=\"${Resource.msg('common.close','common',null)}\"\n * type=\"button\"\n * data-dismiss=\"modal\"\n * data-ref=\"closeEditPopup\"\n * data-event-click.prevent=\"cancel\"\n * data-tau=\"edit_product_dialog_close\"\n * >\n * <isinclude template=\"/common/icons/standalone/close\" />\n * </button>\n * </div>\n * {{${'#'}body}}\n * <div class=\"b-dialog-body\">\n * {{&body}}\n * </div>\n * {{/body}}\n * {{${'#'}footer}}\n * <div class=\"b-dialog-footer\">\n * {{&footer}}\n * </div>\n * {{/footer}}\n * </div>\n * </div>\n * </script>\n * </div>\n */\n class Modal extends AccessibilityFocusTrapMixin {\n backFocusElement?: HTMLElement | null;\n\n escHandler?: () => void;\n\n clickOutsideHandler? : () => void;\n\n attributes: any;\n\n prefs() {\n return {\n classesGlobalDialog: 'm-has_dialog',\n classesShow: 'm-opened',\n classesTopDialog: 'm-top_dialog',\n classesActive: 'm-active',\n classesClosed: 'm-closed',\n refContainer: 'container',\n refDialog: 'dialog',\n closeOpenedModal: false,\n classesExtra: '',\n clickOutSide: true,\n disableRendering: false,\n closeByEscape: true,\n ...super.prefs()\n };\n }\n\n init() {\n super.init();\n this.onDestroy(() => {\n const refDialog = this.ref(this.prefs().refDialog);\n\n refDialog.attr('role', false);\n refDialog.attr('aria-modal', false);\n this.cancel();\n });\n }\n\n /**\n * @description Show Modal and puts it to the top of opened modals hierarchy.\n * @param [templateData] data to be rendered in template\n * @param [cb] optional callback\n */\n showModal(templateData: Record<string, unknown> | undefined, cb?: (() => void) | undefined): Promise<void> {\n const container = this.ref(this.prefs().refContainer);\n\n if (this.prefs().closeOpenedModal) {\n this.closeModal();\n }\n\n this.backFocusElement = <HTMLElement> document.activeElement;\n let renderedPromise = Promise.resolve();\n\n if (templateData && !this.prefs().disableRendering) {\n renderedPromise = this.render(undefined, templateData, container);\n }\n\n return renderedPromise.then(() => {\n this.onBeforeShowModal(<{ attributes: Record<string, unknown>}>templateData);\n dialogMgr.openDialog(this);\n this.show();\n\n if (cb && typeof cb === 'function') {\n cb();\n } else {\n this.afterShowModal();\n }\n });\n }\n\n /**\n * @description Open a dialog. This method is executed explicitly or implicitly from `showModal` method.\n */\n open(): void {\n const dialog = this.ref(this.prefs().refDialog);\n\n dialog.attr('role', 'dialog');\n dialog.attr('aria-modal', 'true');\n dialog\n .addClass(this.prefs().classesActive)\n .addClass(this.prefs().classesTopDialog)\n .removeClass(this.prefs().classesClosed);\n\n this.addGlobalDialogClass();\n this.addListeners();\n\n const classes = [this.prefs().classesShow];\n\n if (this.prefs().classesExtra) {\n classes.push(this.prefs().classesExtra);\n }\n\n this.ref(this.prefs().refContainer).addClass(classes.join(' '));\n }\n\n /**\n * @description Move Behind current modal in opened modals stack.\n */\n moveBehind(): void {\n this.cleanUpListeners();\n this.ref(this.prefs().refDialog).removeClass(this.prefs().classesTopDialog);\n }\n\n /**\n * @description Move To Top current modal in opened modals stack.\n */\n moveToTop(): void {\n this.addListeners();\n this.ref(this.prefs().refDialog).addClass(this.prefs().classesTopDialog);\n }\n\n /**\n * @description Close modal.\n */\n close(): void {\n this.cleanUpListeners();\n\n const classes = [this.prefs().classesShow];\n\n if (this.prefs().classesExtra) {\n classes.push(this.prefs().classesExtra);\n }\n\n this.ref(this.prefs().refContainer).removeClass(classes.join(' '));\n\n this.ref(this.prefs().refDialog)\n .removeClass([this.prefs().classesTopDialog, this.prefs().classesActive].join(' '))\n .addClass(this.prefs().classesClosed);\n }\n\n /**\n * @description Add Global Dialog Class\n */\n addGlobalDialogClass(): void {\n const html = this.ref('html');\n\n if (!html.hasClass(this.prefs().classesGlobalDialog)) {\n html.addClass(this.prefs().classesGlobalDialog);\n }\n }\n\n /**\n * @description Remove Global Dialog Class\n */\n removeGlobalDialogClass(): void {\n this.ref('html').removeClass(this.prefs().classesGlobalDialog);\n }\n\n /**\n * @description Close Modal\n */\n closeModal(): void {\n dialogMgr.closeDialog();\n\n if (this.backFocusElement) {\n this.backFocusElement.focus();\n this.backFocusElement = null;\n }\n\n if (!this.prefs().disableRendering) {\n this.ref(this.prefs().refContainer).empty();\n }\n\n this.onAfterCloseModal();\n }\n\n /**\n * @description Clean Up Listeners\n */\n cleanUpListeners(): void {\n if (this.escHandler) {\n this.escHandler();\n this.escHandler = undefined;\n }\n\n if (this.clickOutsideHandler) {\n this.clickOutsideHandler();\n this.clickOutsideHandler = undefined;\n }\n }\n\n /**\n * @description Lifecycle hook `onAfterCloseModal` executes after closing modal window.\n * Used to:\n * - remove modal DOM element attributes as per modal setup\n */\n onAfterCloseModal(): void {\n if (this.attributes) {\n Object.keys(this.attributes).forEach((key) => {\n this.ref('container').attr(key, false);\n });\n }\n }\n\n /**\n * @description Lifecycle hook `onBeforeShowModal` executes before opening modal window.\n * @param modalData.attributes\n * Used to:\n * - add modal DOM element attributes as per modal setup\n * @param [modalData] Input object for modal popup.\n */\n onBeforeShowModal(modalData: { attributes: Record<string, unknown>}): void {\n if (modalData?.attributes) {\n Object.keys(modalData.attributes).forEach((key) => {\n const value = modalData.attributes[key];\n\n if (value === null || value === undefined || value === '') {\n delete modalData.attributes[key];\n }\n\n this.ref('container').attr(key, value);\n });\n this.attributes = modalData.attributes;\n }\n }\n\n /**\n * @description Cancel Handler\n * @emits Modal#cancel\n */\n cancel(): void {\n this.closeModal();\n /**\n * @description Event dispatched, when modal was closed\n * @event Modal#cancel\n */\n this.emit('cancel');\n }\n\n /**\n * @description Add Click Outside / Close by ESC Listener\n */\n addListeners(): void {\n if (this.prefs().clickOutSide) {\n this.clickOutsideHandler = this.ev('click', (_, event) => {\n if (event.target === this.ref(this.prefs().refContainer).get()) {\n this.cancel();\n }\n }, this.ref(this.prefs().refContainer).get()).pop();\n }\n\n if (this.prefs().closeByEscape) {\n this.escHandler = this.ev('keyup', (_, event) => {\n const keyboardEvent = <KeyboardEvent> event;\n\n if (keyboardEvent.keyCode === ESCAPE_CODE) {\n this.cancel();\n }\n }, window).pop();\n }\n }\n\n /**\n * @description Shows modal in a DOM\n * @returns this obj - current instance for chaining\n */\n show(): this {\n super.show();\n this.ref(this.prefs().refContainer).show();\n\n return this;\n }\n\n /**\n * @description Hide modal in DOM\n * @returns this obj - current instance for chaining\n */\n hide(): this {\n this.ref(this.prefs().refContainer).hide();\n\n return this;\n }\n }\n\n return Modal;\n}\n","/**\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} refElement\n */\n\n/**\n * @description Base ProcessButton implementation\n * @param Button Base widget for extending\n * @returns Process Button class\n */\nexport default function (Button: ReturnType<typeof import('widgets/global/Button').default>) {\n /**\n * @class ProcessButton\n * @augments Button\n * @classdesc ProcessButton widget, which could be used in different contextes (html-markup, inside widgets etc).\n * <br>Could be also used to trigger parent's widget method\n * @property {string} data-widget - Widget name `processButton`\n * @property {string} data-widget-event-click - Event listener to call Parent's widget method\n * @property {string} data-event-click - Event listener method `handleClick` for click event on widget\n * @property {string} data-processing-label - Processing Label\n * @property {string} data-processing-class - Processiong Class\n * @example\n * // use this code to display widget\n * <button type=\"submit\" class=\"btn btn-block btn-primary\"\n * data-widget=\"button\"\n * data-widget-event-click=\"handleSubmit\"\n * data-event-click.prevent=\"handleClick\"\n * data-processing-label=\"${Resource.msg('button.processing', 'common', null)}\"\n * data-processing-class=\"m-processing\"\n * data-id=\"submitButton\"\n * >\n * <div class=\"container\">\n * ${Resource.msg('button.text.loginform', 'login', null)}\n * </div>\n * </button>\n */\n class ProcessButton extends Button {\n currentText = '';\n\n isBusy = false;\n\n prefs() {\n return {\n processingLabel: 'processing...',\n processingClass: 'm-processing',\n ...super.prefs()\n };\n }\n\n /**\n * @description Start Progress\n * @param val - Value to set as a text of the Button\n */\n startProcess(val?: string) {\n if (this.isBusy) {\n return;\n }\n\n this.busy();\n this.currentText = this.getText();\n this.setText(val || this.prefs().processingLabel);\n this.ref('self').addClass(this.prefs().processingClass);\n }\n\n /**\n * @description Stop Progress\n * @param val - Value to set as a text of the Button\n */\n stopProcess(val?: string) {\n this.unbusy();\n this.setText(val || this.currentText);\n this.ref('self').removeClass(this.prefs().processingClass);\n }\n\n /**\n * @description Get Text\n * @returns {string} Button Text\n */\n getText() {\n return this.ref('container').getText();\n }\n\n /**\n * @description Set Text\n * @param {(string|undefined)} val - Value to set as a text of the Button\n * @returns {refElement} Reference element\n */\n setText(val = '') {\n return this.ref('container').setText(val);\n }\n }\n\n return ProcessButton;\n}\n","import { TWidget } from 'widgets/Widget';\n\n/**\n * @param Widget Base widget for extending\n * @returns SoftKeyboardToggleMixin class\n */\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory global\n * @class SoftKeyboardToggleMixin\n * @augments Widget\n * @classdesc Represents SoftKeyboardToggleMixin component with next features:\n * 1. Hides software keyboard on touches outside the keyboard to avoid iOS issues.\n * 2. This class is not intended to have a separate DOM representation.\n * @property {string} data-widget - Widget name \"searchBoxToggle\"\n * @property {string} data-input - Target input\n */\n class SoftKeyboardToggleMixin extends Widget {\n prefs() {\n return {\n input: '',\n ...super.prefs()\n };\n }\n\n /**\n * @description Initialize widget logic\n * @returns {void}\n */\n init() {\n super.init();\n\n const input = this.ref('input').get();\n\n if (input) {\n this.ev('focus', this.hideKeyboardOnOutsideTouch, input);\n this.ev('blur', this.hideKeyboardReset, input);\n }\n }\n\n /**\n * @description Hide keyboard\n * @param {HTMLElement} el - dom element,\n * @param {Event} event - dom event\n * @returns {void}\n */\n hideKeyboard(el, event) {\n const input = this.ref('input').get();\n\n if (input && (event.target !== input)) {\n input.blur();\n }\n }\n\n /**\n * @description Hide keyboard on outside touch\n * @returns {void}\n */\n hideKeyboardOnOutsideTouch() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'touchStartDisposables' does not exist on... Remove this comment to see the full error message\n this.touchStartDisposables = this.ev('touchstart', this.hideKeyboard, window);\n }\n\n /**\n * @description Remove event listeners\n * @returns {void}\n */\n hideKeyboardReset() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'touchStartDisposables' does not exist on... Remove this comment to see the full error message\n const disposables = this.touchStartDisposables;\n\n if (typeof disposables !== 'undefined') {\n disposables.forEach(fn => fn());\n }\n }\n }\n\n return SoftKeyboardToggleMixin;\n}\n","import { TWidget } from 'widgets/Widget';\n\n/**\n * @param Widget Base widget for extending\n * @returns StickyHeader widget\n */\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory global\n * @class StickyHeader\n * @augments Widget\n * @classdesc StickyHeader helper. Should be on element before StickyHeader to observe intersection\n * Could be reimplemented with getBoundClientRect.top and scroll listener.\n * The main purpose is to define anchor for StickyHeader and toggle StickyHeader.\n * @example <caption>Example of StickyHeader widget usage</caption>\n * <div data-widget=\"stickyHeader\"></div>\n */\n class StickyHeader extends Widget {\n prefs() {\n return {\n classesShow: 'b-header_stuck',\n dataTau: 'header_sticky',\n ...super.prefs()\n };\n }\n\n /**\n * @description Initialize widget logic\n * @returns {void}\n */\n init() {\n const stickyHeader = this.ref('self').get();\n\n if (!stickyHeader) {\n return;\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'observer' does not exist on type 'Sticky... Remove this comment to see the full error message\n this.observer = new IntersectionObserver(([entry]) => this.toggleStickyState(entry), { threshold: 1 });\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'observer' does not exist on type 'Sticky... Remove this comment to see the full error message\n this.observer.observe(stickyHeader);\n }\n\n /**\n * @description Toggle sticky header state\n * @param {object} entry Anchor for apply sticky header\n * @returns {void}\n */\n toggleStickyState(entry) {\n document.body.classList.toggle(this.prefs().classesShow, entry.intersectionRatio < 1);\n\n if (entry.intersectionRatio < 1) {\n document.body.setAttribute('data-tau', this.prefs().dataTau);\n } else {\n document.body.removeAttribute('data-tau');\n }\n }\n\n /**\n * @description Destroy widget logic\n * @returns {void}\n */\n destroy() {\n const stickyHeader = this.ref('self').get();\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'observer' does not exist on type 'Sticky... Remove this comment to see the full error message\n if (this.observer && stickyHeader) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'observer' does not exist on type 'Sticky... Remove this comment to see the full error message\n // eslint-disable-next-line spellcheck/spell-checker\n this.observer.unobserve(stickyHeader);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'observer' does not exist on type 'Sticky... Remove this comment to see the full error message\n this.observer.disconnect();\n }\n }\n }\n\n return StickyHeader;\n}\n","/**\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} RefElement\n */\nimport { TWidget } from 'widgets/Widget';\n\n/**\n * @param Widget Base widget for extending\n * @returns SwipeToClose widget\n */\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory global\n * @class SwipeToClose\n * @augments Widget\n * @classdesc Represents SwipeToClose component that implement logic for closing panel by swipe gesture.\n * It has next features:\n * 1. Allow set panel close direction (left/right)\n * 2. Handle touch events for smooth panel closing\n *\n * @example <caption>Example of SwipeToClose widget usage with left drag direction</caption>\n * <div\n * id=\"main-navigation\"\n * class=\"b-menu_panel\"\n * aria-labelledby=\"main-navigation-toggle\"\n * data-widget=\"swipeToClose\"\n * data-panel-container=\"panelContainer\"\n * data-drag-direction-x=\"left\"\n * >\n * <div\n * data-ref=\"dialog\" class=\"b-menu_panel-inner\"\n * data-event-touchstart.sm.md=\"handleTouchStart\"\n * >\n * <div data-ref=\"panelContainer\" class=\"b-menu_subpanel m-active_level_1\">\n * ... widget content\n * </div>\n * </div>\n * </div>\n * @property {string} data-widget - Widget name `swipeToClose`\n * @property {string} data-menu - reference id of child element (inner container), value of its data-ref attribute\n * @property {string} data-panel-container - reference id of child element (panels wrapper), value of its data-ref attribute\n * @property {string} data-drag-direction-x - whether closing swipe should be performed right to left (value 'left') or left to right (value 'right').\n */\n class SwipeToClose extends Widget {\n dragDirectionX = 0;\n\n touchMoveDisposable?: (() => void)[];\n\n touchEndDisposable?: (() => void)[];\n\n touchCancelDisposable?: (() => void)[];\n\n startTime = 0;\n\n isMoving = false;\n\n startX = 0;\n\n startY = 0;\n\n currentX = 0;\n\n currentY = 0;\n\n isOpen = false;\n\n menuWidth = 0;\n\n lastX = 0;\n\n lastY = 0;\n\n moveX = 0;\n\n dragDirection?: string;\n\n prefs() {\n return {\n menu: 'dialog',\n panelContainer: 'panelContainer',\n dragDirectionX: 'left',\n ...super.prefs()\n };\n }\n\n /**\n * @description Widget logic initialization\n * @returns {void}\n */\n init() {\n super.init();\n this.dragDirectionX = this.prefs().dragDirectionX === 'left' ? 1 : -1;\n }\n\n /**\n * @description TouchStart Event handler\n * @listens dom#touchstart\n * @param {HTMLElement} _ Source of keydown event\n * @param {TouchEvent} event Event object\n * @returns {void}\n */\n handleTouchStart(_, event) {\n this.touchMoveDisposable = this.ev('touchmove', this.handleTouchMove, this.ref(this.prefs().menu).get());\n this.touchEndDisposable = this.ev('touchend', this.handleTouchEnd, this.ref(this.prefs().menu).get());\n this.touchCancelDisposable = this.ev('touchcancel', this.handleTouchCancel, this.ref(this.prefs().menu).get());\n this.startTime = new Date().getTime();\n const coordinateX = event.touches[0].pageX || 0;\n const coordinateY = event.touches[0].pageY || 0;\n\n this.isMoving = false;\n this.startX = coordinateX;\n this.startY = coordinateY;\n this.currentX = coordinateX;\n this.currentY = coordinateY;\n this.touchStart(this.startX, this.startY);\n }\n\n /**\n * @description TouchMove Event handler\n * @listens dom#touchmove\n * @param {HTMLElement} _ Source of keydown event\n * @param {TouchEvent} event Event object\n * @returns {void}\n */\n handleTouchMove(_, event) {\n this.isMoving = true;\n this.currentX = event.touches[0].pageX;\n this.currentY = event.touches[0].pageY;\n\n const translateX = this.currentX - this.startX;\n const translateY = this.currentY - this.startY;\n\n this.touchMove(event, this.currentX, this.currentY, translateX, translateY);\n }\n\n /**\n * @description TouchEnd Event handler\n * @listens dom#touchend\n * @param {HTMLElement} _ Source of keydown event\n * @param {Event} event Event object\n * @returns {void}\n */\n // eslint-disable-next-line no-unused-vars\n handleTouchEnd(_, event) {\n const translateX = this.dragDirectionX * (this.currentX - this.startX);\n const translateY = this.currentY - this.startY;\n const timeTaken = (new Date().getTime() - this.startTime);\n\n this.touchEnd(this.currentX, this.currentY, translateX, translateY, timeTaken);\n }\n\n /**\n * @description TouchCancel Event handler\n * @listens dom#touchcancel\n * @param {HTMLElement} _ Source of keydown event\n * @param {Event} event Event object\n * @returns {void}\n */\n // eslint-disable-next-line no-unused-vars\n handleTouchCancel(_, event) {\n this.disposableListeners();\n }\n\n /**\n * @description Preparing panel to move\n * @param {number} startX x coordinate of where the finger is placed in the DOM\n * @param {number} startY y coordinate of where the finger is placed in the DOM\n * @returns {void}\n */\n touchStart(startX, startY) {\n const menu = this.ref(this.prefs().menu);\n\n this.isOpen = menu !== null;\n this.toggleTransition(menu, true);\n this.toggleTransition(this.ref(this.prefs().panelContainer), true);\n const menuNode = menu.get();\n\n this.menuWidth = menuNode ? menuNode.offsetWidth : 0;\n this.lastX = startX;\n this.lastY = startY;\n\n if (this.isOpen) {\n this.moveX = 0;\n } else {\n this.moveX = -this.menuWidth;\n }\n\n this.dragDirection = '';\n }\n\n /**\n * @description Update UI\n * @returns {void}\n */\n updateUi() {\n if (this.isMoving) {\n const element = this.ref(this.prefs().menu).get();\n\n if (element) {\n element.style.transform = 'translateX(' + this.moveX + 'px)';\n }\n\n window.requestAnimationFrame(this.updateUi.bind(this));\n }\n }\n\n /**\n * @description Toggle menu\n * @param {number} translateX x coordinate of where the finger is placed in the viewport\n * @returns {void}\n */\n toggleMenu(translateX) {\n const menu = this.ref(this.prefs().menu);\n const menuNode = menu.get();\n\n if (menuNode) {\n menuNode.style.transform = '';\n }\n\n this.toggleTransition(menu, false);\n\n if (translateX < 0 || !this.isOpen) {\n this.closePanel();\n this.isOpen = false;\n } else {\n this.openPanel(false);\n this.isOpen = true;\n }\n }\n\n /**\n * @description Open Menu Panel.Interface can be override\n * @param {object} data data\n * @returns {void}\n */\n // eslint-disable-next-line no-unused-vars\n openPanel(data) {\n throw new Error('Method not implemented.');\n }\n\n /**\n * @description Close Menu Panel.Interface can be override\n * @returns {void}\n */\n closePanel() {\n throw new Error('Method not implemented.');\n }\n\n /**\n * @description Toggle transition class\n * @param {RefElement} element DOM element\n * @param {boolean} isTransitionOn transition flag\n * @returns {void}\n */\n toggleTransition(element, isTransitionOn) {\n if (isTransitionOn) {\n element.addClass('m-no_transition');\n } else {\n element.removeClass('m-no_transition');\n }\n }\n\n /**\n * @description calculate opacity\n * @returns {number} New opacity value\n */\n calculateOpacity() {\n const percentageBeforeDiff = (Math.abs(this.moveX) * 100) / this.menuWidth;\n const percentage = 100 - percentageBeforeDiff;\n\n return (percentage / 100);\n }\n\n /**\n * @description calculate opacity\n * @param {RefElement} element Ref element\n * @param {any} opacity New opacity value\n * @returns {void}\n */\n setNewOpacity(element, opacity) {\n const htmlElement = element.get();\n\n if (!htmlElement) {\n return;\n }\n\n htmlElement.style.setProperty('--backdrop-opacity', opacity);\n }\n\n /**\n * @description Disposable listeners\n * @returns {void}\n */\n disposableListeners() {\n if (this.touchMoveDisposable) {\n this.touchMoveDisposable.forEach(disposable => disposable());\n delete this.touchMoveDisposable;\n }\n\n if (this.touchEndDisposable) {\n this.touchEndDisposable.forEach(disposable => disposable());\n delete this.touchEndDisposable;\n }\n\n if (this.touchCancelDisposable) {\n this.touchCancelDisposable.forEach(disposable => disposable());\n delete this.touchCancelDisposable;\n }\n }\n\n /**\n * @description calculate new position.Set drag direction\n * @param {Event} event Event object\n * @param {number} currentX current X position\n * @param {number} currentY current Y position\n * @param {number} translateX new position X value\n * @param {number} translateY new position Y value\n * @returns {void}\n */\n touchMove(event, currentX, currentY, translateX, translateY) {\n if (!this.dragDirection) {\n if (Math.abs(translateX) >= Math.abs(translateY)) {\n this.dragDirection = 'horizontal';\n } else {\n this.dragDirection = 'vertical';\n }\n\n window.requestAnimationFrame(this.updateUi.bind(this));\n }\n\n if (this.dragDirection === 'vertical') {\n this.lastX = currentX;\n this.lastY = currentY;\n } else {\n const movedPath = this.dragDirectionX * (this.moveX + (currentX - this.lastX));\n\n if (movedPath < 0 && movedPath > -this.menuWidth) {\n this.moveX += currentX - this.lastX;\n }\n\n this.lastX = currentX;\n this.lastY = currentY;\n this.setNewOpacity(this.ref('html'), this.calculateOpacity());\n }\n }\n\n /**\n * @description Open/Close panel based on position. Remove transition classes. Remove event listeners.\n * @param {number} currentX current X position\n * @param {number} currentY current Y position\n * @param {number} translateX new position X value\n * @param {number} translateY new position Y value\n * @param {number} timeTaken time diff between touch start and touch end\n * @returns {void}\n */\n touchEnd(currentX, currentY, translateX, translateY, timeTaken) {\n const velocity = 0.3;\n\n if (this.isMoving && this.isOpen) {\n this.isMoving = false;\n\n if ((translateX < (-this.menuWidth) / 2) || (Math.abs(translateX) / timeTaken > velocity)) {\n this.toggleMenu(translateX);\n } else {\n this.toggleMenu(0);\n }\n }\n\n this.toggleTransition(this.ref(this.prefs().menu), false);\n this.toggleTransition(this.ref(this.prefs().panelContainer), false);\n this.setNewOpacity(this.ref('html'), '');\n this.disposableListeners();\n }\n }\n\n return SwipeToClose;\n}\n","import { TWidget } from 'widgets/Widget';\n\n/**\n * @param Widget - widget for extending\n * @returns Tab Panel widget\n */\nexport default function (Widget: TWidget) {\n /**\n * @class TabPanel\n * @augments Widget\n * @property {string} data-widget - Widget name `tabPanel`\n * @classdesc Represents a TabPanel widget with the next features:\n * 1. Toggle active\\inactive tab panel state\n *\n * @example <caption>Example of TabPanel widget usage</caption>\n * <div data-widget=\"tabs\">\n * <ul class=\"nav nav-tabs nav-fill\">\n * <li class=\"nav-item\">\n * <a\n * data-widget=\"button\"\n * data-panel-name=\"login\"\n * data-widget-event-click=\"handleTabClick\"\n * data-id=\"button-login\"\n * data-event-click.prevent=\"handleClick\"\n * href=\"#login\" role=\"tab\"\n * >\n * ${Resource.msg('link.header.login.module', 'login', null)}\n * </a>\n * </li>\n * <li class=\"nav-item\">\n * <a\n * data-widget=\"button\"\n * data-panel-name=\"register\"\n * data-widget-event-click=\"handleTabClick\"\n * data-id=\"button-register\"\n * data-event-click.prevent=\"handleClick\"\n * href=\"#register\" role=\"tab\"\n * >\n * ${Resource.msg('link.header.register.module', 'login', null)}\n * </a>\n * </li>\n * </ul>\n * <div class=\"tab-content\">\n * <div id=\"login\" role=\"tabpanel\" data-widget=\"tabPanel\">\n * ... tab content\n * <isinclude template=\"account/components/loginForm\" />\n * <isinclude template=\"account/components/oauth\" />\n * </div>\n * <div id=\"register\" role=\"tabanel\" data-widget=\"tabPanel\">\n * ... tab content\n * <isinclude template=\"account/components/registerForm\" />\n * </div>\n * </div>\n * </div>\n */\n class TabPanel extends Widget {\n isActive = false;\n\n prefs() {\n return {\n classesActive: 'm-active',\n ...super.prefs()\n };\n }\n\n /**\n * @description Refresh widget handler\n */\n onRefresh(): void {\n this.toggleActive(this.isActive);\n }\n\n /**\n * @description Activates tab panel\n */\n activate(): void {\n this.toggleActive(true);\n }\n\n /**\n * @description Deactivates tab panel\n */\n deactivate(): void {\n this.toggleActive(false);\n }\n\n /**\n * @param state true to show/false to hide/undefined to auto\n */\n toggleActive(state: (boolean | undefined)): void {\n this.isActive = this.ref('self')\n .toggleClass(this.prefs().classesActive, !!state)\n .hasClass(this.prefs().classesActive);\n }\n }\n\n return TabPanel;\n}\n","import { TWidget } from 'widgets/Widget';\nconst keyCode = Object.freeze({\n END: 35,\n HOME: 36,\n LEFT: 37,\n RIGHT: 39\n});\n\ntype TButton = ReturnType<typeof import('widgets/global/Button').default>;\ntype buttonInstance = InstanceType<TButton>;\ntype tabPanelInstance = InstanceType<ReturnType<typeof import('widgets/global/TabPanel').default>>;\ntype refElement = InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>;\n\n/**\n * @description Base Tabs implementation\n * @param Widget - widget for extending\n * @returns Tabs widget\n */\nexport default function (Widget: TWidget) {\n /**\n * @class Tabs\n * @augments Widget\n *\n * @property {string} data-widget - Widget name `tabs`\n * @property {boolean} data-active-first - activate first tab and first tab panel\n * @property {string} data-active-panel - activate tab and tab panel by provided panel id\n * @property {boolean} data-auto-activation - if tabs list should follow accessibility `Tabs with Automatic Activation` feature\n * @property {boolean} data-use-url-anchor - in case if true, each tab change will add a related hash to document location.\n * @classdesc Represents tabbed contents displaying and navigation.\n * Has the next features:\n * 1. Mark selected tab as active\n * 2. Handles keydown by enter\\space keyboard button to manipulate the active tab\n * 3. Sets focus to the current tab\n * 4. Adds hash to document location if enabled\n *\n * @example <caption>Example of Tabs widget usage</caption>\n * <div data-widget=\"tabs\">\n * <ul class=\"nav nav-tabs nav-fill\">\n * <li class=\"nav-item\">\n * <a\n * data-widget=\"button\"\n * data-panel-name=\"login\"\n * data-widget-event-click=\"handleTabClick\"\n * data-id=\"button-login\"\n * data-event-click.prevent=\"handleClick\"\n * href=\"#login\" role=\"tab\"\n * >\n * ${Resource.msg('link.header.login.module', 'login', null)}\n * </a>\n * </li>\n * <li class=\"nav-item\">\n * <a\n * data-widget=\"button\"\n * data-panel-name=\"register\"\n * data-widget-event-click=\"handleTabClick\"\n * data-id=\"button-register\"\n * data-event-click.prevent=\"handleClick\"\n * href=\"#register\" role=\"tab\"\n * >\n * ${Resource.msg('link.header.register.module', 'login', null)}\n * </a>\n * </li>\n * </ul>\n * <div class=\"tab-content\">\n * <div id=\"login\" role=\"tabpanel\" data-widget=\"tabPanel\">\n * ... tab content\n * <isinclude template=\"account/components/loginForm\" />\n * <isinclude template=\"account/components/oauth\" />\n * </div>\n * <div id=\"register\" role=\"tabanel\" data-widget=\"tabPanel\">\n * ... tab content\n * <isinclude template=\"account/components/registerForm\" />\n * </div>\n * </div>\n * </div>\n */\n class Tabs extends Widget {\n panelNames: string[] = [];\n\n focusedTab = '';\n\n activePanel = '';\n\n prefs() {\n return {\n classesActive: 'm-active',\n activePanel: '',\n activeFirst: false,\n autoActivation: false,\n useUrlAnchor: false,\n ...super.prefs()\n };\n }\n\n /**\n * @description Refresh widget handler\n */\n onRefresh(): void {\n super.onRefresh();\n this.fulfillPanelNames();\n }\n\n /**\n * @description Widget initialization logic\n */\n init(): void {\n super.init();\n this.fulfillPanelNames();\n\n if (this.prefs().activePanel) {\n this.activatePanel(this.prefs().activePanel);\n } else if (this.prefs().useUrlAnchor) {\n this.handleUrlChange();\n } else if (this.prefs().activeFirst && this.panelNames && this.panelNames.length) {\n this.activatePanel(this.panelNames[0]);\n }\n }\n\n /**\n * @description Registers all available panels by adding their IDs into array.\n */\n fulfillPanelNames(): void {\n this.panelNames = [];\n const Button: TButton = <TButton> this.getConstructor('button');\n\n this.eachChild(child => {\n if (child instanceof Button && this.panelNames) {\n this.panelNames.push(String(child.config.panelName));\n }\n });\n }\n\n /**\n * @param clickedButton - Widget, representing customer's tab clicked element\n */\n handleTabClick(clickedButton: InstanceType<TWidget>): void {\n this.activatePanel(String(clickedButton.config.panelName));\n }\n\n /**\n * @param panelName name of panel to activate\n * @param saveToPushState - If we need to save hash in history\n */\n activatePanel(panelName: string, saveToPushState = true): void {\n if (!this.panelNames) {\n return;\n }\n\n this.panelNames.forEach(id => {\n const isActive = id === panelName;\n\n if (isActive) {\n this.activePanel = panelName;\n this.focusedTab = panelName;\n }\n\n const currentTabPanel = this.toggleTabPanel(id, isActive, saveToPushState);\n\n if (!currentTabPanel && this.ref(id)) {\n this.toggleActiveRefPanel(this.ref(id), isActive);\n\n if (isActive && saveToPushState) {\n this.handleUrlAnchor(id);\n }\n }\n\n this.toggleButton(id, isActive);\n });\n }\n\n /**\n * @description Toggle tab panel\n * @param id - panel ID\n * @param isActive - Is current one should be active\n * @param saveToPushState - Is state should be added to browser history\n * @returns Tab instance\n */\n toggleTabPanel(id: string, isActive: boolean, saveToPushState: boolean): tabPanelInstance | undefined {\n return <tabPanelInstance> this.getById(id, (tabPanel: tabPanelInstance) => {\n tabPanel[isActive ? 'activate' : 'deactivate']();\n\n if (isActive && saveToPushState) {\n this.handleUrlAnchor(id);\n }\n\n return tabPanel;\n });\n }\n\n /**\n * @description Toggle tab button\n * @param id - panel ID\n * @param isActive - Is current should be active\n */\n toggleButton(id: string, isActive: boolean): void {\n this.getById(`button-${id}`, (/** @type {buttonInstance} */ button: buttonInstance) => {\n if (isActive) {\n button.activate();\n button.select();\n } else {\n button.deactivate();\n button.unselect();\n }\n });\n }\n\n /**\n * @description In addition to tab switch, action will be reflected in URL anchor, if enabled.\n * This will further allow to select proper tab, when returning back from browser history.\n * @param tabName tab name to reflect in browser location hash.\n */\n handleUrlAnchor(tabName: string): void {\n if (this.prefs().useUrlAnchor) {\n window.history.pushState({\n hashChangedOnly: true\n }, document.title, `#${tabName}`);\n }\n }\n\n /**\n * @description Triggers needed tab activation, when URL changed\n * in case of history push/replace state and using browser's `back` button.\n * @param saveToPushState - If we need to save hash in history\n */\n handleUrlChange(saveToPushState = true): void {\n if (document.location.hash) {\n const panelToActivate = this.panelNames\n && this.panelNames.find(panelName => panelName === document.location.hash.replace('#', ''));\n\n if (panelToActivate) {\n this.activatePanel(panelToActivate, saveToPushState);\n }\n }\n }\n\n /**\n * @description Method to toggle active panel, if it is not a separate widget `TabPanel`\n * but an ordinary `ref` element inside `Tabs` widget.\n * @param panel target panel name\n * @param state is target panel is selected or not\n */\n toggleActiveRefPanel(panel: refElement, state: boolean): void {\n panel.toggleClass(this.prefs().classesActive, state);\n }\n\n /**\n * @description Gets last focused panel name\n * <br>(focused panel is not necessarily active panel)\n * @returns Focused panel name if founded. Empty string otherwise\n */\n getLastFocusedTab(): string {\n return this.focusedTab\n ? this.focusedTab\n : this.activePanel || (this.panelNames && this.panelNames[0]) || '';\n }\n\n /**\n * @description Sets focus to panel with given name\n * <br>Uses `roving focus` accessibility feature\n * <br>https://www.w3.org/TR/wai-aria-practices/#kbd_roving_tabindex\n * @param tab Tab name to set focus to\n */\n setFocusToTab(tab: string): void {\n if (!tab) {\n return;\n }\n\n this.focusedTab = tab;\n\n if (this.panelNames) {\n this.panelNames.forEach(id => {\n const isTargetTab = id === tab;\n\n this.getById(`button-${id}`, (/** @type {buttonInstance} */ button: buttonInstance) => {\n if (isTargetTab) {\n button.focus().setTabIndex();\n } else {\n button.unsetTabIndex();\n }\n });\n });\n }\n\n if (this.prefs().autoActivation) {\n this.activatePanel(tab);\n }\n }\n\n /**\n * @description Sets focus to the very first panel\n */\n setFocusToFirstTab(): void {\n const firstTab = (this.panelNames\n && this.panelNames.length\n && this.panelNames[0])\n || '';\n\n this.setFocusToTab(firstTab);\n }\n\n /**\n * @description Sets focus to the very last panel\n */\n setFocusToLastTab(): void {\n const lastTab = (this.panelNames\n && this.panelNames.length\n && this.panelNames[this.panelNames.length - 1])\n || '';\n\n this.setFocusToTab(lastTab);\n }\n\n /**\n * @description Sets focus to previous panel. Loops focus, if first panel reached\n */\n setFocusToPreviousTab(): void {\n if (this.panelNames && this.panelNames.length) {\n const currentFocusedTab = this.getLastFocusedTab();\n const currentFocusedTabIndex = this.panelNames.indexOf(currentFocusedTab);\n const previousTab = currentFocusedTabIndex === 0\n ? this.panelNames[this.panelNames.length - 1]\n : this.panelNames[currentFocusedTabIndex - 1];\n\n this.setFocusToTab(previousTab);\n }\n }\n\n /**\n * @description Sets focus to next panel. Loops focus, if last panel reached\n */\n setFocusToNextTab(): void {\n if (this.panelNames && this.panelNames.length) {\n const currentFocusedTab = this.getLastFocusedTab();\n const currentFocusedTabIndex = this.panelNames.indexOf(currentFocusedTab);\n const nextTab = currentFocusedTabIndex === this.panelNames.length - 1\n ? this.panelNames[0]\n : this.panelNames[currentFocusedTabIndex + 1];\n\n this.setFocusToTab(nextTab);\n }\n }\n\n /**\n * @description Keydown Event handler\n * @param _ Source of keydown event\n * @param event Event object\n */\n handleKeydown(_: HTMLElement, event: KeyboardEvent): void {\n let preventEventActions = false;\n\n switch (event.keyCode) {\n case keyCode.HOME:\n this.setFocusToFirstTab();\n preventEventActions = true;\n break;\n case keyCode.END:\n this.setFocusToLastTab();\n preventEventActions = true;\n break;\n case keyCode.LEFT:\n this.setFocusToPreviousTab();\n preventEventActions = true;\n break;\n case keyCode.RIGHT:\n this.setFocusToNextTab();\n preventEventActions = true;\n break;\n default:\n break;\n }\n\n if (preventEventActions) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n\n return Tabs;\n}\n","const keyCode = Object.freeze({\n SPACE: 32,\n ENTER: 13\n});\n\nimport { TWidget } from 'widgets/Widget';\nimport { RefElement } from 'widgets/toolbox/RefElement';\n\n/**\n * @param Widget Base widget for extending\n */\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory global\n * @class Video\n * @augments Widget\n * @classdesc Represents Video component with autostart. Allows watching video after pressing \"Video\" thumbnail.\n *\n * @property {string} data-widget - Widget name `video`\n * @example <caption>Example of Carousel widget usage</caption>\n * <iframe\n * class=\"b-product_gallery-video\"\n * data-ref=\"elemVideo\"\n * src=\"https://www.youtube.com/embed/pZWiOO5N-vI?enablejsapi=1&controls=0&modestbranding=1&playsinline=1\"\n * frameborder=\"2\"\n * allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n * allowfullscreen\n * hidden=\"hidden\"\n * ></iframe>\n */\n\n class Video extends Widget {\n prefs() {\n return {\n videoThumbnailActiveClass: 'm-current',\n ...super.prefs()\n };\n }\n\n /**\n * @description Widget initialization\n */\n init() {\n super.init();\n }\n\n /**\n * @description Removes activated styling from the video thumbnail\n */\n hideVideo(): void {\n this.ref('self').removeClass(this.prefs().videoThumbnailActiveClass);\n }\n\n /**\n * @description Add an activated styling to the video thumbnail and start to show video\n * @param el - event source element\n * @emits \"showvideo\"\n */\n showVideo(el: RefElement): void {\n el.addClass(this.prefs().videoThumbnailActiveClass);\n this.emit('showvideo');\n }\n\n /**\n * @param el - event source element\n * @param event - event instance if DOM event\n * @emits \"showvideo\"\n */\n handleKeydown(el: RefElement, event: KeyboardEvent): void {\n if (!event) {\n return;\n }\n\n if (event.keyCode === keyCode.ENTER || event.keyCode === keyCode.SPACE) {\n event.preventDefault();\n event.stopPropagation();\n\n this.showVideo(el);\n }\n }\n }\n\n return Video;\n}\n","// TODO: freeze loaded sections during update with aria-busy\n// TODO: investigate proper implementation of aria-live region for updated sections\n// TODO: keep track that focus stays on the same place during PLP update\n\nimport { submitFormJson } from 'widgets/toolbox/ajax';\n\n/**\n * @typedef {ReturnType<typeof import('widgets/forms/InputTextarea').default>} InputTextarea\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} RefElement\n * @typedef {InstanceType<ReturnType<typeof import('widgets/global/ProcessButton').default>>} processButton\n */\n\n/**\n * @description Base AddToCartMixin implementation\n * <br>This class is not intended to have a separate DOM representation.\n * @param ProductDetail Base widget for extending\n * @returns Add to Cart mixin widget\n */\nexport default function (ProductDetail: ReturnType<typeof import('widgets/product/ProductDetail').default>) {\n /**\n * @class AddToCartMixin\n * @augments ProductDetail\n * @property {string} data-text-network-error - network error text\n * @property {string} data-add-to-cart-label - add to cart label\n * @property {string} data-pid - product id\n * @property {boolean} data-show-minicart-on-product-add - Show minicart on product added to cart\n * @property {boolean} data-show-message-on-product-add - Show message on product added to cart\n * @property {boolean} data-show-alert-on-product-add - Show Global Alert on product added to cart\n */\n class AddToCartMixin extends ProductDetail {\n prefs() {\n return {\n pid: '',\n processingRequest: false,\n textNetworkError: 'Network Error',\n addToCartBtn: 'addToCart',\n classesBusy: 'm-busy',\n showMinicartOnProductAdd: false,\n showMessageOnProductAdd: true,\n showAlertOnProductAdd: true,\n backInStockBtn: 'disclosureButton',\n backInStockForm: 'disclosureContent',\n backInStockSubscriptionEnable: false,\n zeroWidthSpaceSymbol: '\\u200B',\n ...super.prefs()\n };\n }\n\n /**\n * @description Widget initialization\n * @returns {void}\n */\n init() {\n super.init();\n this.showBackInStockButton();\n\n // TODO: Move stock property to widget preferences\n this.has(this.prefs().addToCartBtn, (element) => {\n const stock = element.data('stock');\n\n if (stock) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'stock' does not exist on type 'AddToCart... Remove this comment to see the full error message\n this.stock = stock;\n }\n });\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'spacesLength' does not exist on type 'Ad... Remove this comment to see the full error message\n this.spacesLength = 0;\n }\n\n /**\n * @description Allows to toggle action buttons on PDP based on the received state\n * @param {RefElement} addToCartBtn Add to cart button\n * @param {boolean} state Indicated toggle state\n */\n toggleActionButtons(addToCartBtn, state = false) {\n const backInStockBtn = this.ref(this.prefs().backInStockBtn);\n\n if (state) {\n addToCartBtn.hide();\n backInStockBtn.show();\n } else {\n addToCartBtn.show();\n backInStockBtn.hide();\n }\n }\n\n /**\n * @description Show message\n * @param {string} msg Message\n * @param {boolean} error Error flag\n */\n showCartMessage(msg, error = false) {\n this.getById(this.prefs().addToCartMsg, (addToCartMsg) => {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'spacesLength' does not exist on type 'Ad... Remove this comment to see the full error message\n if (typeof this.spacesLength === 'undefined') {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'spacesLength' does not exist on type 'Ad... Remove this comment to see the full error message\n this.spacesLength = 0;\n }\n // It's needed to force render previously added success message. If we try to add the same product\n // several times, success message alert will not be announced by a screen reader.\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'spacesLength' does not exist on type 'Ad... Remove this comment to see the full error message\n msg = msg.concat(Array(++this.spacesLength).join(this.prefs().zeroWidthSpaceSymbol));\n\n addToCartMsg.render('template', { msg, error }, addToCartMsg.ref('container')).then(() => addToCartMsg.show());\n });\n }\n\n /**\n * @description Hides add to cart button if the product is out of stock and notify me when available functionality is enabled\n * @returns {void}\n */\n showBackInStockButton() {\n if (this.prefs().backInStockSubscriptionEnable) {\n this.getById('addToCart', (addToCartBtn) => {\n addToCartBtn.hide();\n this.ref(this.prefs().backInStockBtn).show();\n });\n }\n }\n\n /**\n * @description Handles response from server once product added to cart\n * @emits \"product.added.to.cart\"\n * @param {any} response Add Product response\n */\n postAddProduct(response) {\n if (!response.error && response.cart) {\n this.emit('productadded');\n const cartModel = response.cart;\n\n cartModel.showMinicart = this.prefs().showMinicartOnProductAdd;\n this.eventBus().emit('product.added.to.cart', cartModel, this);\n\n if (this.prefs().showAlertOnProductAdd) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'addedtocart' does not exist on type '{ q... Remove this comment to see the full error message\n const accessibilityAlert = this.prefs().accessibilityAlerts.addedtocart;\n\n this.eventBus().emit('alert.show', {\n accessibilityAlert\n });\n }\n }\n\n if (response.error || this.prefs().showMessageOnProductAdd) {\n this.eventBus().emit('product.addedTocart.with.error', response);\n this.showCartMessage(response.message, response.error);\n }\n }\n\n /**\n * @description Handles add to cart button click\n * @param {processButton} button Add Product response\n * @returns {Promise<object|null>} Promise object represents server response for session continuation\n */\n addToCart(button) {\n if (this.prefs().processingRequest) {\n return Promise.resolve(null);\n }\n\n if (!this.prefs().readyToOrder) {\n this.showCartMessage(this.prefs().textSelectOptions, true);\n\n return Promise.resolve(null);\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'stock' does not exist on type 'AddToCart... Remove this comment to see the full error message\n if (this.stock && this.stock < this.prefs().selectedQuantity) {\n this.showCartMessage(this.prefs().textStockLimit, true);\n\n return Promise.resolve(null);\n }\n\n const selectedOptions = this.getSelectedProductOptions();\n const isSelectedOptionsValid = this.validateProductOptions(selectedOptions);\n\n if (!isSelectedOptionsValid) {\n return Promise.resolve(null);\n }\n\n this.setPref('processingRequest', true);\n button.startProcess();\n\n this.showProgressBar();\n\n const addToCartBtnPrefs = button.prefs();\n\n return submitFormJson(addToCartBtnPrefs.addToCartUrl, {\n pid: this.prefs().currentProductId || addToCartBtnPrefs.pid,\n quantity: this.prefs().selectedQuantity || addToCartBtnPrefs.selectedQuantity,\n options: JSON.stringify(selectedOptions),\n childProducts: this.prepareChildProducts(this.prefs().bundledProducts)\n })\n .then((response) => {\n this.setPref('processingRequest', false);\n button.stopProcess();\n this.hideProgressBar();\n\n this.postAddProduct(response);\n\n return response;\n })\n .catch(() => {\n this.setPref('processingRequest', false);\n button.stopProcess();\n this.hideProgressBar();\n\n this.showCartMessage(this.prefs().textNetworkError, true);\n });\n }\n\n showProgressBar() {\n this.ref('self').addClass(this.prefs().classesBusy);\n }\n\n hideProgressBar() {\n this.ref('self').removeClass(this.prefs().classesBusy);\n }\n\n /**\n * @description Update Product View\n * @param {any} product productModel\n */\n updateProductView(product) {\n super.updateProductView(product);\n this.updateBackInStockState(true, false);\n // Hide backInStock content on update product view\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'hideContent' does not exist on type 'Add... Remove this comment to see the full error message\n this.hideContent();\n this.renderAddToCart(product);\n }\n\n /**\n * @description Render Add to Cart button\n * @param {object} product productModel\n * @returns {void}\n */\n renderAddToCart(product) {\n this.getById('addToCart', (addToCartBtn) => {\n if (!product.available && product.availability.isOutOfStock) {\n addToCartBtn.setPref('isOutOfStock', true);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'setText' does not exist on type 'Widget'... Remove this comment to see the full error message\n addToCartBtn.setText(this.prefs().outOfStockLabel);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'disable' does not exist on type 'Widget'... Remove this comment to see the full error message\n addToCartBtn.disable();\n\n if (product.backInStockSubscription.isEnabled) {\n this.toggleActionButtons(addToCartBtn, true);\n }\n } else if (product.availability.isReachedLimit) {\n this.getById(this.prefs().addToCartMsg, (addToCartMsg) => {\n const msg = product.availability.messages[0];\n const error = true;\n\n addToCartMsg.render(\n 'template',\n { msg, error },\n addToCartMsg.ref('container')\n ).then(() => addToCartMsg.show());\n });\n addToCartBtn.setPref('isOutOfStock', true);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'setText' does not exist on type 'Widget'... Remove this comment to see the full error message\n addToCartBtn.setText(this.prefs()[this.prefs().update ? 'updateLabel' : 'addToCartLabel']);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'disable' does not exist on type 'Widget'... Remove this comment to see the full error message\n addToCartBtn.disable();\n this.toggleActionButtons(addToCartBtn);\n } else {\n addToCartBtn.setPref('isOutOfStock', false);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'setText' does not exist on type 'Widget'... Remove this comment to see the full error message\n addToCartBtn.setText(this.prefs()[this.prefs().update ? 'updateLabel' : 'addToCartLabel']);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'enable' does not exist on type 'Widget'.\n addToCartBtn.enable();\n this.toggleActionButtons(addToCartBtn);\n }\n });\n }\n\n /**\n * @description Shows/Hides BackInStock components based on passed parameters\n * @param {boolean} showForm shows/hides Back in Stock form\n * @param {boolean} showSuccessBlock shows/hides success message after form submitting\n * @returns {void}\n */\n updateBackInStockState(showForm, showSuccessBlock) {\n this.ref('disclosureContent').toggleClass('m-success', showSuccessBlock);\n this.ref('contentBlock').toggle(showForm);\n this.ref('successBlock').toggle(showSuccessBlock);\n }\n\n /**\n * @description Handles backInStock form response.Show success message\n * @returns {void}\n */\n handleBackInStockFormSubmit() {\n this.updateBackInStockState(false, true);\n }\n\n /*\n * @description Prepare products for AJAX call to the server\n * @param {Array} bundledProducts Array with bundled product objects\n * @returns {string} JSON formatted array with bundled product objects\n */\n prepareChildProducts(bundledProducts) {\n let result = bundledProducts;\n\n result = result.map((bundledProduct) => {\n return {\n pid: bundledProduct.id,\n quantity: bundledProduct.selectedQuantity\n };\n });\n\n return JSON.stringify(result);\n }\n }\n\n return AddToCartMixin;\n}\n","/**\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} refElement\n */\n\nimport { TWidget } from 'widgets/Widget';\n\n/**\n * @description Base AlternativeImage implementation\n * @param Widget Base widget for extending\n * @returns Alternative image view widget\n */\nexport default function (Widget: TWidget) {\n /**\n * @class AlternativeImage\n * @augments Widget\n * @classdesc Alternative image component that mixed to ProductTile widget.\n * It implement possibility to show alternative product image on tile in form of hover slider (on desktop)\n * and carousel with swapping (on mobile). It designed to be as lightweight as possible to not blow up very\n * heavy PLP page.\n * For this reasons in mind alternative image do not stored into markup it added dynamically on user\n * actions (hover, scroll). As approach for proper image size fetch (viewport, pixels density etc) we\n * use front-end url generation. As base for it we use basic image size - the most proper size that browser\n * choose from proposed sources. To get this image we use `currentSrc` HTMLImageElement property.\n * @property {string} data-widget - Widget name `productTile`\n * @property {string} data-alt-image-url - alternative image src\n */\n class AlternativeImage extends Widget {\n /**\n * @description Prepare alternative image viewport dependent src.\n * The trick is get already defined by browser image from set and prepare same image for alt.\n * If project has completely different images on breakpoints this should be extended with\n * update image src on viewport change.\n * @returns {string} alternative image url\n */\n getAlternativeImageSrc() {\n const altImageUrl = this.ref('alternativeViewContainer').attr('data-alt-image-url');\n const baseImage = this.ref('tileImage').get();\n\n if (!(baseImage instanceof HTMLImageElement) || !altImageUrl) {\n return '';\n }\n\n const baseImageUrl = baseImage.currentSrc || baseImage.src;\n const baseImageUrlParsed = new URL(baseImageUrl);\n const disQueryString = baseImageUrlParsed.search;\n\n return altImageUrl + disQueryString;\n }\n\n /**\n * @description Prepare alternative image viewport dependent alternative text\n * @returns {string} alternative image url\n */\n getAlternativeImageText() {\n const alternativeImageText = this.ref('alternativeViewContainer').attr('data-alt-image-title');\n\n if (typeof alternativeImageText === 'string') {\n return alternativeImageText;\n } else {\n return '';\n }\n }\n\n /**\n * @description Insert img tag to alternative image picture container\n * @returns {void}\n */\n insertAlternativeImage() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'imageInserted' does not exist on type 'A... Remove this comment to see the full error message\n if (this.imageInserted) {\n return;\n }\n\n const alternativeImageSrc = this.getAlternativeImageSrc();\n\n if (!alternativeImageSrc) {\n return;\n }\n\n const altImageElement = document.createElement('img');\n\n altImageElement.src = alternativeImageSrc;\n altImageElement.alt = this.getAlternativeImageText();\n const alternativeImagePicture = this.ref('alternativeViewPicture').get(0);\n\n if (!alternativeImagePicture) {\n return;\n }\n\n alternativeImagePicture.append(altImageElement);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'imageInserted' does not exist on type 'A... Remove this comment to see the full error message\n this.imageInserted = true;\n }\n\n /**\n * @description Executes hover logic\n * @returns {void}\n */\n handleHover() {\n this.insertAlternativeImage();\n }\n\n /**\n * @description Executes scroll pagination logic + image insertion. We use intersection observer\n * to easily handle rtl direction.\n * Otherwise the same could be done with `track.scrollLeft > (track.offsetWidth / 2))`\n * @returns {void}\n */\n handleScroll() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'observer' does not exist on type 'Altern... Remove this comment to see the full error message\n if (this.observer) {\n return;\n }\n\n const track = this.ref('tileImageLink').get();\n const altImage = this.ref('alternativeViewPicture').get(0);\n\n if (!track || !altImage) {\n return;\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'observer' does not exist on type 'Altern... Remove this comment to see the full error message\n this.observer = new IntersectionObserver(this.markAlternativeImageActive.bind(this), {\n root: track,\n threshold: 0.5\n });\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'observer' does not exist on type 'Altern... Remove this comment to see the full error message\n this.observer.observe(altImage);\n }\n\n /**\n * @description Handles alternative images active state\n * @param {Array<IntersectionObserverEntry>} entries - intersection observer entries\n * @returns {void}\n */\n markAlternativeImageActive(entries) {\n if (!entries || !entries[0]) {\n return;\n }\n\n this.ref('alternativeViewContainer').toggleClass('m-alt_active', entries[0].isIntersecting);\n this.insertAlternativeImage();\n }\n }\n\n return AlternativeImage;\n}\n","type productOptionType = {\n id: '',\n selectedValueId: '',\n customOptionValue: ''\n};\ntype InputTextarea = InstanceType<ReturnType<typeof import('widgets/forms/InputTextarea').default>>;\n\n/**\n * @description Base ProductOptionMixin implementation\n *\n * This class is not intended to have a separate DOM representation.\n *\n * @param ProductDetail Base widget for extending\n * @returns Add to Cart mixin widget\n */\nexport default function (ProductDetail: ReturnType<typeof import('widgets/product/ProductDetail').default>) {\n /**\n * @class ProductOptionMixin\n * @augments ProductDetail\n * @subcategory product\n * @classdesc Represents product set component with the next features:\n * 1. Handle error in the custom option field\n * 2. Get selected option for the current product\n */\n class ProductOptionMixin extends ProductDetail {\n /**\n * @description Handle custom option field error\n * @param input Custom Option text field\n * @param error Error text\n */\n handleCustomOptionError(input: InputTextarea, error: string) {\n if (!error) { return; }\n\n this.getById('addToCart', (addToCartBtn) => {\n const isInputValid = input.isValid();\n\n addToCartBtn.ref('self').toggleAvailability(isInputValid);\n });\n }\n\n /**\n * @description Get custom option value\n * @param optionId Product option ID\n * @returns Result\n */\n getCustomOptionValue(optionId: string) {\n if (!optionId) { return null; }\n\n let customOptionValue = '';\n\n this.getById('option-' + optionId, (option) => {\n option.getById('customOptionText', (textArea: InputTextarea) => {\n customOptionValue = textArea.getValue();\n });\n });\n\n return customOptionValue;\n }\n\n /**\n * @description Validate custom field and return its validation result\n * @param optionId Product option ID\n * @returns field validation result\n */\n isCustomOptionValid(optionId: string) {\n if (!optionId) { return false; }\n\n let isValid = true;\n\n this.getById('option-' + optionId, (option) => {\n option.getById('customOptionText', (textArea: InputTextarea) => {\n isValid = textArea.validate();\n });\n });\n\n return isValid;\n }\n\n /**\n * @description Get selected product options\n * @returns Array with product options objects or in case invalid option value - null\n */\n getSelectedProductOptions(): Array<Record<string, unknown>|null> {\n const productOptions = this.prefs().productOptions || [];\n\n const options = productOptions.map((option) => {\n const result = {\n optionId: option.id,\n selectedValueId: option.selectedValueId,\n customOptionValue: option.customOptionValue\n };\n\n if (result.customOptionValue) { return result; }\n\n if (!option.values) { return result; }\n\n const selectedCustomOption = option.values.find((value) => {\n return value.isCustomOption && value.isCustomOptionSelected;\n });\n\n if (selectedCustomOption) {\n // @ts-expect-error ts-migrate(2339) Define correct type\n result.customOptionValue = this.getCustomOptionValue(result.optionId);\n\n return this.isCustomOptionValid(result.optionId) ? result : null;\n }\n\n return result;\n });\n\n return options;\n }\n\n /**\n * @description Validate product options\n * @param selectedOptions Selected product options\n * @returns Result of the validation product options\n */\n validateProductOptions(selectedOptions: Array<Record<string, unknown>>): boolean {\n return selectedOptions.every(option => option);\n }\n\n /**\n * @description Returns additional product data object\n * @param productOption - Product option\n * @returns result\n */\n getAdditionalProductData(productOption?: productOptionType): Record<string, unknown> {\n return {\n customOptionValue: productOption ? this.getCustomOptionValue(productOption.id) : '',\n selectedOptionValueId: productOption ? productOption.selectedValueId : '',\n optionId: productOption ? productOption.id : ''\n };\n }\n }\n\n return ProductOptionMixin;\n}\n","/**\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} refElement\n */\n\nimport { TWidget } from 'widgets/Widget';\n\n/**\n * @description Base ProductTile implementation\n * @param Widget Base widget for extending\n * @returns Product Tile widget\n */\nexport default function (Widget: TWidget) {\n /**\n * @class ProductTile\n * @augments Widget\n * @classdesc Product Tile component. Used in different product grids.\n * @property {string} data-widget - Widget name `productTile`\n * @property {string} data-pid - product ID\n * @property {string} data-product-name - product name\n * @property {object} data-analytics - analytics data for product tile\n * @property {string} data-text-network-error - network error text, when current ajax operation ended up with network error\n * @property {string} data-text-added-to-wishlist - a text which is used to indicate, that product has being added to wishlist\n * @property {string} data-add-to-wishlist-hide-texts - indicates, that some texts should not be displayed while adding product in a wishlist from product tile\n * @property {object} data-accessibility-alerts - contains accessibility alerts for product tile actions\n * @property {object} data-grid-item - indicates, that product tile is used inside product grid\n * @example\n * // use this code to display widget\n * <section\n * class=\"b-product_tile\"\n * <isif condition=\"${pdict.first}\">\n * data-id=\"firstTile\"\n * </isif>\n * data-pid=\"${product.id}\"\n * data-product-name=\"${product.productName}\"\n * data-widget=\"productTile\"\n * data-analytics=\"${JSON.stringify(product.gtmInfo)}\"\n * data-text-network-error=\"${Resource.msg('error.alert.network', 'product', null)}\"\n * data-text-added-to-wishlist=\"${Resource.msg('button.added.to.wishlist', 'wishlist', null)}\"\n * data-add-to-wishlist-hide-texts=\"true\"\n * data-accessibility-alerts='{\n * \"addedtowishlist\": \"${Resource.msg('alert.addedtowishlist', 'product', null)}\"\n * }'\n * data-grid-item=true\n * data-tau=\"product_tile\"\n * data-tau-product-id=\"${product.id}\"\n * >\n * <isinclude template=\"product/productTile\" />\n * </section>\n */\n class ProductTile extends Widget {\n prefs() {\n return {\n productName: '',\n ...super.prefs()\n };\n }\n\n /**\n * @description Init widget\n * @emits \"product.tile.init\"\n * @returns {void}\n */\n init() {\n super.init();\n\n this.eventBus().emit('product.tile.init', this.ref('self'));\n }\n\n /**\n * @description Executes when user clicks on product details link on product tile.\n * Usually used by analytics etc.\n * @emits tile.product.link.click\n * @param {refElement} link - product link\n */\n onProductLinkClick(link) {\n this.eventBus().emit('tile.product.link.click', link);\n }\n\n /**\n * @description On modal window show callback\n * @emits \"product.tile.qv.open\"\n */\n onModalShow() {\n this.eventBus().emit('product.tile.qv.open', {\n gtmInfo: this.data('analytics')\n });\n }\n\n showQuickView(button) {\n /**\n * @description Event dispatched, when Global Modal should be triggered\n * @event module:events#dialogshow\n */\n this.eventBus().emit('dialogshow', {\n url: button.data('url'),\n wrapperClasses: 'm-quick_view',\n ariaLabel: this.prefs().productName,\n attributes: {\n 'data-tau-unique': 'quick_view_dialog'\n }\n });\n\n this.onModalShow();\n }\n\n /**\n * @description Focus\n */\n focus() {\n this.ref('tileImageLink').focus();\n }\n }\n\n return ProductTile;\n}\n","import { getJSONByUrl } from 'widgets/toolbox/ajax';\nimport { RefElement } from 'widgets/toolbox/RefElement';\nimport { scrollElementTo } from 'widgets/toolbox/scroll';\nimport { timeout } from 'widgets/toolbox/util';\n\n/**\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} RefElement\n * @typedef {ReturnType<typeof import('widgets/global/Modal').default>} Modal\n */\n/**\n * @param Combobox Base widget for extending\n * @returns SearchBox widget\n */\nexport default function (Combobox: ReturnType<typeof import('widgets/forms/Combobox').default>) {\n /**\n * @category widgets\n * @subcategory search\n * @class SearchBox\n * @augments Combobox\n * @classdesc Search suggestion box. Handles input, shows and interacts with suggestions box.\n * <br>Implements `SFCC search suggestions` provider functionality in `getSuggestions` method\n * <br>It also override combobox logic - when we select suggestion the default action not fill input, but navigate to\n * <br>suggestion that implemented as links (reference combobox should have listbox items).\n * <br>If user interactive with keyboard and select link form should not submitted.\n * Represents Refinement component with next features:\n * 1. Allow send search request to the server and process response\n * 2. Allow handle server error\n * 3. Allow manage search box state(open/close)\n * 4. Allow handle input event\n * 5. Allow handle active/selected search suggestions state\n * 6. Allow clear input field\n * @property {string} data-widget - Widget name `searchBox`\n * @property {string} data-url - URL to obtain serach suggestions from server based on customer's input\n * @property {boolean} data-close-on-tab - If true - `tab` keypress will close listbox\n * @property {string} data-widget-event-closesearch - An event, fired when `close` element was pressed\n * @property {string} data-event-keydown - event handler for `keydown` event\n * @property {boolean} data-close-from-outside - config, which shows, if combobox should be closed when click outside\n * @property {number} data-show-spinner-delay - config delay in ms to show spinner\n * @property {string} data-ref-first-focus-element - reference to first focus element for focus trap\n * @property {string} data-ref-last-focus-element - reference to last focus element for focus trap\n * @example <caption>Example of SearchBox widget usage</caption>\n * <div\n * data-widget=\"searchBox\"\n * data-url=\"${URLUtils.url('SearchServices-GetSuggestions')}\"\n * data-close-on-tab=\"false\"\n * >\n * <form>\n * ... serach input\n * </form>\n * ...\n * <div data-ref=\"listbox\" data-event-mouseenter=\"markHover\" data-event-mouseleave=\"unMarkHover\">\n * <div role=\"none\" class=\"b-suggestions-inner\" data-ref=\"listboxInner\"></div>\n * </div>\n * <script data-ref=\"template\" type=\"template/mustache\">\n * <div data-ref=\"listboxInner\">\n * ... search suggestions\n * </div>\n * </script>\n * </div>\n */\n class SearchBox extends Combobox {\n lastSearchedTerm = '';\n\n selectedIndex = 0;\n\n resultsCount = 0;\n\n goingByLink = false;\n\n timeout: any;\n\n longLoadingTimer: (() => void) | undefined;\n\n prefs() {\n return {\n showSpinnerDelay: 500,\n outlineSpace: 5,\n classesClearEnabled: 'm-visible',\n classesLoadingSuggestions: 'm-loading',\n classesLoadingSuggestionsLong: 'm-loading-long',\n url: '',\n disableRendering: true,\n ...super.prefs()\n };\n }\n\n /**\n * @description Initialize widget logic\n * @listens \"page.show.searchbox\"\n * @returns {void}\n */\n init(): void {\n super.init();\n this.eventBus().on('page.show.searchbox', 'openSearch');\n }\n\n /**\n * @description Shows suggestions popup in initial state.\n * <br>Initial state can be a slot/asset markup, rendered in backed\n * <br>and placed in `searchSuggestionsInitial` template\n * @param setInputFocus - if we need to focus search input\n * @returns Promise object represents search default state rendering result\n */\n showInDefaultState(setInputFocus = true): Promise<void> {\n if (setInputFocus) {\n this.focusInput();\n }\n\n this.lastSearchedTerm = '';\n\n return this.render('searchSuggestionsInitial', undefined, this.ref('listboxInner'))\n .then(() => {\n this.selectedIndex = -1;\n this.resultsCount = this.getRealItemsCount();\n this.openListbox();\n });\n }\n\n /**\n * @description Send request to the server\n * @param {string} query - requested search query\n * @returns {Promise<object>} Promise object represents server response for search suggestions\n */\n getSuggestions(query) {\n this.toggleSpinner(true);\n\n return getJSONByUrl(this.prefs().url, { q: query })\n .then(response => this.processResponse(query, <{ suggestions: { total: number }}>response))\n .catch(this.handleError.bind(this));\n }\n\n /**\n * @description Process response from the server\n * @param query - customer's search query\n * @param response - backend response with suggestions\n * @param response.suggestions - suggestions\n * @param response.suggestions.total - suggestion total\n */\n processResponse(query: string, response: { suggestions: { total: number }}): void {\n if (response && response.suggestions) {\n if (this.ref('field').val() !== query) {\n // if value changed during request, we do not show outdated suggestions\n return;\n }\n\n if (document.activeElement !== this.ref('field').get()) {\n this.toggleSpinner(false);\n this.showInDefaultState();\n\n return;\n }\n\n this.renderResult(response).then(() => {\n this.afterSuggestionsUpdate(query, response.suggestions.total);\n });\n } else {\n this.showInDefaultState();\n }\n\n this.toggleSpinner(false);\n }\n\n /**\n * @description Render server response result\n * @param {object} response - Backend response with suggestions\n * @returns {Promise<void>} Promise object represents search response rendering result\n */\n renderResult(response) {\n return this.render(undefined, response, this.ref('listboxInner')).then(() => {\n timeout(() => {\n const listbox = this.ref('listbox').get();\n\n if (listbox) {\n scrollElementTo(listbox);\n }\n }, 10);\n });\n }\n\n /**\n * @description Handle server error\n * @param query - customer's search query\n */\n handleError(query: string): Promise<void> {\n return this.render('templateError', {}, this.ref('listboxInner')).then(() => {\n this.toggleSpinner(false);\n this.afterSuggestionsUpdate(query, 0);\n });\n }\n\n /**\n * @description Clear listbox\n */\n afterCloseListbox(): void {\n this.ref('listboxInner').empty();\n }\n\n /**\n * @description Handle active item\n * @param selectedItem - search suggestion item selected by customer\n */\n\n activateItem(selectedItem: RefElement): void {\n // We do not need default combobox behavior.\n // Instead of pasting suggestion value we go by the link\n // if we have selected item in listbox\n if (selectedItem) {\n this.ref('field').val(selectedItem.attr('data-suggestion-value'));\n this.goingByLink = true;\n window.location.assign(selectedItem.attr('href').toString());\n }\n }\n\n /**\n * @description Handle input\n * @listens dom#keydown\n */\n handleInput(): void {\n const inputValue = this.ref('field');\n let inputLength = 0;\n\n if (inputValue.length) {\n inputLength = (inputValue.prop('value') && inputValue.prop('value').length) || 0;\n }\n\n if (inputLength >= this.prefs().minChars && inputLength <= this.prefs().maxChars) {\n this.updateListbox();\n } else {\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n\n this.showInDefaultState();\n }\n\n this.toggleClearButton(!!this.ref('field').val());\n }\n\n /**\n * @description Toggle spinner\n * @param isShown - Indicated is spinner display\n */\n toggleSpinner(isShown: boolean): void {\n const listbox = this.ref('listbox');\n\n listbox.attr('aria-busy', String(isShown));\n listbox.toggleClass(this.prefs().classesLoadingSuggestions, isShown);\n\n if (isShown) {\n this.longLoadingTimer = timeout(() => {\n this.ref('listbox').addClass(this.prefs().classesLoadingSuggestionsLong);\n }, this.prefs().showSpinnerDelay);\n } else {\n if (this.longLoadingTimer) {\n this.longLoadingTimer();\n }\n\n this.ref('listbox').removeClass(this.prefs().classesLoadingSuggestionsLong);\n }\n }\n\n /**\n * @description Handle selected item\n * @param selectedItem - search suggestion item selected by customer\n */\n afterItemSelected(selectedItem: RefElement): void {\n const item = selectedItem.get();\n\n if (item) {\n const listbox = this.ref('listbox').get();\n const top = (item.offsetTop - this.prefs().outlineSpace);\n\n if (listbox) {\n scrollElementTo(listbox, top);\n }\n }\n }\n\n /**\n * @description Executes when user clicks on product details link in the search box results.\n * Usually used by analytics etc.\n * @emits \"searchbox.product.link.click\"\n * @param link - product link\n */\n onProductLinkClick(link: RefElement) {\n /**\n * @description Event to click product link in search box\n * @event \"searchbox.product.link.click\"\n */\n this.eventBus().emit('searchbox.product.link.click', link);\n }\n\n // Form functionality\n\n /**\n * @description Submit form simplified handler\n * @param _ event source element\n * @param event event instance\n */\n handleSubmit(_: RefElement, event: Event): void {\n const inputVal = this.ref('field').val();\n\n if (this.goingByLink || !inputVal) {\n event.preventDefault();\n }\n\n if (!inputVal) {\n this.focusInput();\n } else {\n this.closeListbox();\n }\n }\n\n /**\n * @description Clears search input and show suggestions from default state. Optionally sets focus to search field.\n * @listens dom#click\n * @param setInputFocus - if we need to focus input\n */\n clearInput(setInputFocus: boolean): void {\n this.toggleSpinner(false);\n const searchInput = this.ref('field');\n\n searchInput.val('');\n\n if (setInputFocus) {\n this.focusInput();\n }\n\n this.toggleClearButton(false);\n this.showInDefaultState(setInputFocus);\n }\n\n /**\n * @description Toggle clear button\n * @param isInputHasValue - is search input has value\n */\n toggleClearButton(isInputHasValue: boolean): void {\n this.ref('clearButton').toggleClass(this.prefs().classesClearEnabled, isInputHasValue);\n }\n\n /**\n * @description Gets the real count of suggestions items.\n * <br>Could be used in case, when no backend suggestion count are set.\n * <br>As an example: case of rendering content assets with\n * <br>unknown suggestions set\n * @returns - a number of listbox inner elements\n */\n getRealItemsCount(): number {\n const listboxInner = this.ref('listboxInner').get();\n\n return listboxInner\n ? listboxInner.querySelectorAll('[data-suggestion-value]').length\n : 0;\n }\n\n /**\n * @description Cancel handler\n */\n cancel(): void {\n this.closeSearch();\n }\n\n /**\n * @description Open search modal\n * @listens \"page.show.searchbox\"\n */\n openSearch(): void {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'showModal' does not exist on type 'Searc... Remove this comment to see the full error message\n return this.showModal({\n attributes: {\n 'data-tau': 'search_dialog'\n }\n }, this.showInDefaultState.bind(this));\n }\n\n /**\n * @description Set focus to input\n */\n focusInput(): void {\n // iOS could disable focus method on HTMLInputElement https://bugs.webkit.org/show_bug.cgi?id=195884\n // it is done to not annoy the user with software keyboard.\n // To show keyboard we should never hide input and parent with display none.\n // Also focus should be set without delay.\n const input = this.ref('field').get();\n\n if (!input) {\n return;\n }\n\n input.focus();\n }\n\n /**\n * @description Used to notify concerning widget to close suggestions popup and do all other actions\n * @emits SearchBox#closesearch\n * @param [refEl] - refEl\n */\n closeSearch(refEl?: RefElement): void {\n if (refEl && refEl.data('stop-click') === true) {\n return;\n }\n\n /**\n * @description Event to close search box\n * @event SearchBox#closesearch\n */\n this.emit('closesearch');\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'closeModal' does not exist on type 'Sear... Remove this comment to see the full error message\n this.closeModal();\n this.closeListbox();\n this.clearInput(false);\n }\n\n /**\n * @description Toggle search state\n * @param ref search\n */\n toggleSearch(ref: RefElement): void {\n if (ref.attr('aria-expanded') === 'true') {\n this.closeSearch();\n } else {\n this.openSearch();\n }\n }\n\n /**\n * @description Hide search\n * @returns Current widget instance\n */\n hide(): this {\n super.hide();\n this.closeListbox();\n this.clearInput(false);\n\n return this;\n }\n }\n\n return SearchBox;\n}\n","import EventBus from 'widgets/toolbox/eventBus';\nimport { TWidget } from 'widgets/Widget';\n\n/**\n * @category widgets\n * @subcategory toolbox\n * @class EventBusWrapper\n * @classdesc Represents EventBusWrapper component with next features:\n * 1. Allow subscribing action on an event (subscribe once allow as well)\n * 2. Allow emitting event\n * @example EventBusWrapper imported in Widget.js file and you can use EventBusWrapper in your own widget as `this.eventBus()`\n * <caption>Example of EventBusWrapper widget usage for emitting a global event</caption>\n *\n * this.eventBus().emit('rendering.applied');\n *\n * <caption>Example of EventBusWrapper widget usage for subscribe action on a global event</caption>\n *\n * this.eventBus().on('minicart.updated', 'renderCart');\n */\nclass EventBusWrapper {\n widgetInstance: InstanceType<TWidget>;\n\n /**\n * @description Define widget instance\n * @param widgetInstance usually this of widget\n */\n constructor(widgetInstance: InstanceType<TWidget>) {\n this.widgetInstance = widgetInstance;\n }\n\n /**\n * @description Subscribe action on event\n * @param eventName name of the event\n * @param methodName name of the method to call if/when event happens\n */\n on(eventName: string, methodName: string): void {\n let fn: (...args: any[]) => void = (...args): void => {\n this.widgetInstance[methodName].call(this.widgetInstance, ...args);\n };\n\n EventBus.addListener(eventName, fn);\n this.widgetInstance.onDestroy(() => {\n if (fn) {\n EventBus.removeListener(eventName, fn);\n // @ts-ignore for clean up variable\n fn = undefined;\n }\n });\n }\n\n /**\n * @description Subscribe action once on event\n * @param eventName name of event\n * @param methodName name of method to call if/when event happen\n */\n once(eventName: string, methodName: string) {\n let onceFn = (...args) => {\n EventBus.removeListener(eventName, onceFn);\n this.widgetInstance[methodName].call(this.widgetInstance, ...args);\n // @ts-ignore for clean up variable\n onceFn = undefined;\n };\n\n EventBus.addListener(eventName, onceFn);\n this.widgetInstance.onDestroy(() => {\n if (onceFn) {\n EventBus.removeListener(eventName, onceFn);\n // @ts-ignore for clean up variable\n onceFn = undefined;\n }\n });\n }\n\n /**\n * @description Emit event\n * @param event - event name\n * @param args Arguments passed to the event emitter\n * @returns {void}\n */\n emit(event: any, ...args: any[]): void {\n EventBus.emit(event, ...args);\n }\n}\nexport default EventBusWrapper;\n","import { timeout } from './util';\n/**\n * @category widgets\n * @subcategory toolbox\n * @class PausableTimeout\n * @classdesc Class represents the `setTimeout` with an ability to perform pause/resume actions\n * @example <caption>Example of PausableTimeout widget usage</caption>\n * import { PausableTimeout } from 'widgets/toolbox/PausableTimeout';\n *\n * this.pausableTimeout = new PausableTimeout(() => {\n * this.hideAlert();\n * }, this.prefs().timeout);\n */\nexport class PausableTimeout {\n durationTimeout: (() => void) | undefined;\n\n done: boolean;\n\n callback: () => void;\n\n remaining: number;\n\n start: Date = new Date();\n\n /**\n * @description PausableTimeout init logic\n * @param {Function|undefined} callback function to be called after specified time\n * @param {number} [time] time before call callback\n */\n constructor(callback: (() => void) | undefined, time = 0) {\n this.done = false;\n\n this.callback = () => {\n if (callback) {\n callback();\n }\n\n this.done = true;\n this.durationTimeout = undefined;\n callback = undefined;\n };\n\n this.remaining = time;\n this.resume();\n }\n\n /**\n * @description Pauses Timeout\n * @returns {this} Instance of the PausableTimeout class\n */\n pause(): this {\n if (this.durationTimeout && !this.done) {\n this.clearTimeoutRef();\n this.remaining -= new Date().getTime() - (this.start ? this.start.getTime() : 0);\n }\n\n return this;\n }\n\n /**\n * @description Resumes Timeout\n * @returns {this} Instance of the PausableTimeout class\n */\n resume(): this {\n if (!this.durationTimeout && !this.done) {\n this.start = new Date();\n this.durationTimeout = timeout(this.callback, this.remaining);\n }\n\n return this;\n }\n\n /**\n * @description Clear resources on demand\n */\n destroy(): void {\n this.clearTimeout();\n }\n\n /**\n * @description Clears the timeout and marks it as done.\n * After called, the timeout will not resume.\n */\n clearTimeout(): void {\n this.clearTimeoutRef();\n this.done = true;\n }\n\n /**\n * @description Clears resources\n\n */\n clearTimeoutRef(): void {\n if (this.durationTimeout) {\n this.durationTimeout();\n this.durationTimeout = undefined;\n }\n }\n}\n","import { getData, log } from './util';\n\nconst HIDDEN_CLASS = 'm-hide';\nconst REFELEMENT_ERROR = 'Reference element is not found';\n\n/**\n * @description Convert string to snake-case\n * @param {string} s String in camelCase to convert\n * @returns {string} Converted to snake-case string\n * @example myCustomProperty => my-custom-property\n */\nfunction toSnakeCase(s: string): string {\n return s.replace(/(?:^|\\.?)([A-Z])/g, (x, y) => '-' + y.toLowerCase()).replace(/^_/, '');\n}\n\n/**\n * @category widgets\n * @subcategory toolbox\n * @class RefElement\n * @classdesc jQuery like wrapper for simple access to DOM. It will be added into `Widget.items` array of first parent widget.\n * Represents RefElement component with next features:\n * 1. Allow to get/set data attribute depends on provided/not provided value\n * 2. Allow to get/set the value into element\n * 3. Allow to append/prepend string into element\n * 4. Allow to get/set/remove attribute for element\n * 5. Allow to check that some element has attribute `attributeName`\n * 6. Allow to get/set property value for `propertyName` property for element\n * 7. Allow to get element of set by idx\n * 8. Allow to replace content of element by empty string\n * 9. Allow to remove element\n * 10. Allow to enable/disable element or check if element is disabled\n * 11. Allow to get/set the content `text` into element\n * 12. Allow to set focus on element\n * 13. Allow to show/hide element or toggle state\n * 14. Allow to add/remove/toggle or check if element has class\n * 15. Allow to specify the position of the element in the window\n * @example <caption>Example of RefElement widget usage</caption>\n * // to use just add data-ref attribute\n * <div data-ref=\"myRefElement\"></div>\n *\n * // to get it in any widget method\n * this.ref('myRefElement')\n */\nexport class RefElement {\n /**\n * @description Array of HTMLElements that current RefElement represents\n */\n els: HTMLElement[];\n\n /**\n * @description Define array of elements\n * @param {HTMLElement[]} els array of elements\n */\n constructor(els: HTMLElement[]) {\n this.els = els;\n }\n\n /**\n * @description Get amount of elements in set\n * @returns Number of elements in set\n */\n get length(): number {\n return this.els.length;\n }\n\n /**\n * @description Checks if there are elements in set\n * @returns result\n */\n exists(): boolean {\n return this.length > 0;\n }\n\n /**\n * @description Get or Set data attribute depends on provided/not provided value\n * @param name Name of data attribute in camelCase, f.e. `testIt` to get `data-test-it`\n * @param [value] to set\n * @returns\n * - if value provided - returns current instance for chaining\n * - otherwise provided value of data attribute with appropriate type or undefined if attribute doesn't exist\n */\n data(name: string, value?: any): this | Record<string, unknown> | string | number | boolean | null | undefined {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n const attrName = 'data-' + toSnakeCase(name);\n\n if (typeof value === 'undefined') {\n if (this.hasAttr(attrName)) {\n const attrValue = this.attr(attrName);\n\n if (typeof attrValue === 'string') {\n return getData(attrValue);\n }\n }\n\n return undefined;\n }\n\n return this.attr(attrName, value);\n }\n\n /**\n * @description Get or set the value into elements in set\n * @param [value] If not empty set value into inputs in set\n * @returns\n * - If value: undefined - returns joined string of values in set of inputs\n * - Otherwise returns current instance for chaining\n */\n val(value?: any): string | this {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n if (typeof value === 'undefined') {\n return this.els.map(el => (<HTMLInputElement>el).value).join('');\n }\n\n if (typeof value === 'string') {\n this.els.forEach(el => { (<HTMLInputElement>el).value = value; });\n }\n\n return this;\n }\n\n /**\n * @description Get validity object for first element in set\n * @returns\n * - If element instance of `HTMLInputElement|HTMLSelectElement` returns validity object\n * - Otherwise returns `undefined`\n */\n getValidity(): { state: ValidityState; msg: string; } | undefined {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n const element = this.els[0];\n\n if (element instanceof HTMLInputElement\n || element instanceof HTMLSelectElement\n || element instanceof HTMLTextAreaElement\n ) {\n return {\n state: element.validity,\n msg: element.validationMessage\n };\n }\n\n return undefined;\n }\n\n /**\n * @description Appends string into each element from set\n * @param content String to append\n */\n append(content: string): void {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n this.els.forEach(el => {\n const tempEl = document.createElement('div');\n\n tempEl.innerHTML = content;\n\n const scripts: NodeListOf<HTMLScriptElement> = tempEl.querySelectorAll(\n 'script:not([type=\"template/mustache\"])'\n );\n\n Array.from(scripts).forEach(script => {\n if (script && script.parentNode) {\n script.parentNode.removeChild(script);\n }\n });\n\n Array.from(tempEl.childNodes).forEach(child => {\n el.appendChild(child);\n });\n\n Array.from(scripts).forEach((script) => {\n const tempScript = document.createElement('script');\n\n tempScript.text = script.text;\n\n el.appendChild(tempScript);\n });\n\n tempEl.innerHTML = '';\n });\n }\n\n /**\n * @description Prepends string into each element from set\n * @param content String to prepend\n */\n prepend(content: string): void {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n this.els.forEach(el => {\n const tempEl = document.createElement('div');\n\n tempEl.innerHTML = content;\n\n const scripts: NodeListOf<HTMLScriptElement> = tempEl.querySelectorAll(\n 'script:not([type=\"template/mustache\"])'\n );\n\n Array.from(scripts).forEach(script => {\n if (script && script.parentNode) {\n script.parentNode.removeChild(script);\n }\n });\n\n Array.from(tempEl.childNodes).reverse().forEach(child => el.prepend(child));\n\n Array.from(scripts).forEach((script) => {\n const tempScript = document.createElement('script');\n\n tempScript.text = script.text;\n\n el.appendChild(tempScript);\n });\n\n tempEl.innerHTML = '';\n });\n }\n\n /**\n * @description\n * Get/Set/Remove attribute for each element of set depends on params:\n * - if value: undefined - Get attribute value\n * - if value: true - Set attribute attribute=\"attribute\", f.e. `attr('disabled', true)` => `disabled=\"disabled\"`\n * - if value: null|false - Remove attribute if `value`\n * - any another type - Convert value to string and set as attributeValue\n * @param attributeName Name of attribute\n * @param [value] to set (null or false to remove attribute)\n * @returns\n * - If value: undefined - Returns string with joined values from attribute\n * - Otherwise returns current instance for chaining\n */\n attr(attributeName: string, value?: any): string | this {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n if (value === false || value === null) {\n this.els.forEach(el => el.removeAttribute(attributeName));\n } else if (value === true) {\n this.els.forEach(el => el.setAttribute(attributeName, attributeName));\n } else if (value !== undefined) {\n this.els.forEach(el => el.setAttribute(attributeName, value));\n } else {\n return this.els.map(el => el.getAttribute(attributeName)).join('');\n }\n\n return this;\n }\n\n /**\n * @description Check that some element in the set of elements has attribute `attributeName`\n * @param attributeName name of attribute\n * @returns `true` if has such attribute\n */\n hasAttr(attributeName: string): boolean {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n return this.els.some(el => el.hasAttribute(attributeName));\n }\n\n /**\n * @description\n * - Get property value by `propertyName` from first element in set if `value` parameter is not provided\n * - Set property value for `propertyName` property for each element in set\n * @param propertyName The name of the property to get or set.\n * @param [value] A value to set for the property.\n * @returns Returns undefined for the value of a property that has not been set\n * or property value if exists\n */\n prop(propertyName: keyof HTMLInputElement, value?: string | boolean | undefined): any {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n if (typeof value === 'undefined') {\n const el: HTMLInputElement = <HTMLInputElement> this.els[0];\n\n return el[propertyName];\n }\n\n // @ts-expect-error ts-migrate(2540) FIXME: Cannot assign to 'ATTRIBUTE_NODE' because it is a ... Remove this comment to see the full error message\n this.els.forEach(el => { el[propertyName] = value; });\n\n return undefined;\n }\n\n /**\n * @description Get element of set by idx\n * @param [idx] Identifier of element, first by default\n * @returns element if founded\n */\n get(idx = 0): HTMLElement | undefined {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n if (this.els[idx]) {\n return this.els[idx];\n }\n\n return undefined;\n }\n\n /**\n * @description Replace content of each element in set by empty string\n * @returns current instance for chaining\n */\n empty(): this {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n this.els.forEach(el => { el.textContent = ''; });\n\n return this;\n }\n\n /**\n * @description Remove set of elements\n * @returns current instance for chaining\n */\n remove(): this {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n this.els.forEach(el => el.parentNode && el.parentNode.removeChild(el));\n\n return this;\n }\n\n /**\n * @description Add attribute disabled=\"disabled\"\n * @returns current instance for chaining\n */\n disable(): this {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n this.attr('disabled', true);\n this.addClass('m-disabled');\n\n return this;\n }\n\n /**\n * @description Remove attribute disabled=\"disabled\"\n * @returns current instance for chaining\n */\n enable(): this {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n this.removeClass('m-disabled');\n this.attr('disabled', false);\n\n return this;\n }\n\n /**\n * @description Check if every element in set has disabled attribute\n * @returns true if disabled\n */\n isDisabled(): boolean {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n return this.attr('disabled') === 'disabled';\n }\n\n /**\n * @description Set the content `text` into each element in the set\n * @param text The text to place as content\n * @returns current instance for chaining\n */\n setText(text: string): this {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n this.els.forEach(el => {\n if (el.textContent !== text) {\n el.textContent = text;\n }\n });\n\n return this;\n }\n\n /**\n * @description Get the content of each element from set and join it to string\n * @returns Joined text from set of elements\n */\n getText(): string {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n return this.els.map(el => el.textContent).join();\n }\n\n /**\n * @description Focus first element\n */\n focus(): void {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n if (this.els[0]) {\n this.els[0].focus();\n }\n }\n\n /**\n * @description Hide element\n * @returns current instance for chaining\n */\n hide(): this {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n if (!this.hasClass(HIDDEN_CLASS)) {\n this.attr('hidden', true);\n this.addClass(HIDDEN_CLASS);\n }\n\n return this;\n }\n\n /**\n * @description Show element\n * @returns current instance for chaining\n */\n show(): this {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n this.attr('hidden', false);\n this.removeClass(HIDDEN_CLASS);\n\n return this;\n }\n\n /**\n * @description Disable or enable element depending on passed state\n * @param state Based on passed state element will be enabled or disable\n * @returns current instance for chaining\n */\n toggleAvailability(state: boolean): this {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n this[state ? 'enable' : 'disable']();\n\n return this;\n }\n\n /**\n * @description Show or hide element depending on either the presence or `initialState` parameter\n * @param [initialState] true - show else false hide\n * @returns current instance for chaining\n */\n toggle(initialState: boolean): this {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n const state = typeof initialState !== 'undefined' ? initialState : this.hasClass(HIDDEN_CLASS);\n\n this[state ? 'show' : 'hide']();\n\n return this;\n }\n\n /**\n * @description Add or Remove class depending on either the class's presence or the `state` parameter\n * @param className name of class\n * @param [state] true to add, false to remove class\n * @returns current instance for chaining\n */\n toggleClass(className: string, state?: boolean): this {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n if (state === undefined) {\n if (this.hasClass(className)) {\n this.removeClass(className);\n } else {\n this.addClass(className);\n }\n } else if (state) {\n this.addClass(className);\n } else {\n this.removeClass(className);\n }\n\n return this;\n }\n\n /**\n * @description Add single class or multiple classes into element\n * @param classNames string or strings array of class name(s)\n * @returns current instance for chaining\n */\n addClass(classNames: string | string[]): this {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n if (typeof classNames === 'string') {\n classNames = classNames.split(' ');\n }\n\n classNames.forEach(className => {\n this.els.forEach(el => {\n if (!this.hasClass(className)) {\n el.classList.add(className);\n }\n });\n });\n\n return this;\n }\n\n /**\n * @description Remove single class or multiple classes for element in set\n * @param classNames array or string of class names\n * @returns current instance for chaining\n */\n removeClass(classNames: string | string[]): this {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n if (typeof classNames === 'string') {\n classNames = classNames.split(' ');\n }\n\n classNames.forEach(className => {\n this.els.forEach(el => {\n if (this.hasClass(className)) {\n el.classList.remove(className);\n }\n });\n });\n\n return this;\n }\n\n /**\n * @description Determine whether each element in set have assigned the given class\n * @param className The class name to search for.\n * @returns `true` if yes\n */\n hasClass(className: string): boolean {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n return this.els.every(el => el.classList.contains(className));\n }\n\n /**\n * @description Specifies the position of the element in the window\n * @returns object with top and left position in px\n */\n offset(): { top: number; left: number; } {\n if (!PRODUCTION && !this.exists()) {\n log.warn(REFELEMENT_ERROR, this);\n }\n\n const ret = { top: 0, left: 0 };\n\n if (this.els.length) {\n const docElem = document.documentElement;\n const elemBox = this.els[0].getBoundingClientRect();\n\n ret.top = elemBox.top + window.pageYOffset - docElem.clientTop;\n ret.left = elemBox.left + window.pageXOffset - docElem.clientLeft;\n }\n\n return ret;\n }\n}\n\nexport type IRefElement = InstanceType<typeof RefElement>;\n","/**\n * @module ajax\n * @category widgets\n * @subcategory toolbox\n * @description\n * Represents ajax component with next features:\n * 1. Allow to send request on form submit\n * 2. Allow to get content by URL\n * 3. Allow to get JSON response by URL\n * 4. Allow to handle response with 500 status\n * 5. Allow to set token\n * @example <caption>Example of ajax module usage</caption>\n * import { submitFormJson, getContentByUrl } from 'widgets/toolbox/ajax';\n * submitFormJson(inputSelect.data('action'), {\n * pid: inputSelect.data('pid'),\n * uuid: uuid,\n * quantity: inputSelect.getValue()\n * }, 'GET')\n * .then((resp) => {\n * this.renderCartResponse(resp);\n * this.accessibilityAlert(this.prefs().accessibilityAlerts.quantitychanged);\n * })\n * .catch((error) => {\n * if (error && error.error && error.errorMessage) {\n * this.render('errorTemplate', { message: error.errorMessage }, this.ref('errorMsgs'));\n * } else {\n * this.renderCartWithItemLevelActionError(uuid, error.message);\n * }\n * })\n * .finally(() => {\n * this.hideProgressBar();\n * });\n */\n\nimport { showErrorLayout, appendParamsToUrl, timeout } from './util';\nimport eventBus from './eventBus';\nimport token from './token';\n// eslint-disable-next-line max-len\nexport const errorFallbackMessage = 'For technical reasons, your request could not be handled properly at this time. We apologize for any inconvenience.';\nconst SAME_ORIGIN = 'same-origin';\nconst APPLICATION_JSON = 'application/json';\nconst TEXT_HTML = 'text/html';\nconst NO_REFERRER = 'no-referrer';\nconst CONTENT_TYPE = 'content-type';\nconst FAILED_FETCH = 'Failed to fetch';\n\n/**\n * @description Get fetch\n * @returns {Promise<object>} Promise whose internal state matches the provided promise\n */\nfunction getFetch(): Promise<unknown[]> {\n const dependencies: Promise<unknown>[] = [];\n\n if (window.fetch) {\n dependencies.push(Promise.resolve(window.fetch));\n } else {\n dependencies.push(import(/* webpackChunkName: 'fetch' */ 'whatwg-fetch'));\n }\n\n if (window.AbortController) {\n dependencies.push(Promise.resolve(window.AbortController));\n } else {\n dependencies.push(import(/* webpackChunkName: 'fetch' */ 'yet-another-abortcontroller-polyfill'));\n }\n\n return Promise.all(dependencies);\n}\n\n/**\n * @description Build valid request URL or add form data to the request\n * @param method - HTTP method\n * @param data - request data\n * @param skipToken - Checks if CSRF token should be skipped in the request\n * @param url - request url\n * @returns result\n */\nfunction handleUrlOrFormData(\n method: string,\n data: { [keys: string]: string; },\n skipToken: boolean, url: string\n): { valuedUrl: string; formData: string | undefined; } {\n let formData: string | undefined;\n\n let valuedUrl: string;\n\n if (method === 'POST') {\n const tokenObj = !skipToken && token.name ? { [token.name]: token.value } : {};\n const dataToSend = { ...data, ...tokenObj };\n\n formData = Object.keys(dataToSend).map(key => key + '=' + encodeURIComponent(<string>dataToSend[key])).join('&');\n\n valuedUrl = url;\n } else if (skipToken) {\n valuedUrl = appendParamsToUrl(url, data);\n } else {\n // @ts-expect-error ts-migrate(2464) FIXME: A computed property name must be of type 'string',... Remove this comment to see the full error message\n valuedUrl = appendParamsToUrl(url, { ...data, ...{ [token.name]: token.value } });\n }\n\n // parameter to identify ajax request\n valuedUrl = appendParamsToUrl(valuedUrl, { ajax: 'true' });\n\n return { valuedUrl, formData };\n}\n\n/**\n * @description Response handler from the server with 500 status\n * @param response Response object\n * @returns A Promise for the completion of which ever callback is executed.\n */\nfunction handleResponse500(response: Response): Promise<unknown> {\n eventBus.emit('alert.error', {\n errorCode: 500\n });\n\n return response.text().then(textResponse => {\n let errorObj;\n\n try {\n errorObj = JSON.parse(textResponse);\n } catch (e) {\n errorObj = {};\n }\n\n if (errorObj.csrfError) {\n if (errorObj) {\n if (errorObj.csrfError && errorObj.redirectUrl) {\n window.location.assign(errorObj.redirectUrl);\n } else {\n showErrorLayout(errorObj);\n }\n }\n } else if (errorObj.errorMessage || errorObj.error) {\n return Promise.reject(new Error(errorObj.errorMessage || errorObj.message || errorObj.error));\n } else {\n const div = document.createElement('div');\n\n div.innerHTML = textResponse;\n const err = Array.from(div.querySelectorAll('code')).map(code => code.innerHTML).join('<br/>');\n\n showErrorLayout(err);\n }\n\n return Promise.reject(new Error('Unexpected error'));\n });\n}\n\n/**\n * @description A function, called after each success ajax call. Emits an event with given response context.\n * @emits module:ajax#responseok\n * @param response Response formatted object\n * @returns Response formatted object\n */\nfunction handleOkResponse(response: Promise<unknown>): Promise<unknown> {\n /**\n * @description Event about success ajax server response\n * @event module:ajax#responseok\n */\n timeout(() => eventBus.emit('responseok', response), 0);\n\n return response;\n}\n\n/**\n * @description Prepares general params for the fetch request\n * @returns result\n */\nfunction prepareRequestData(): Record<string, unknown> {\n return {\n // eslint-disable-next-line spellcheck/spell-checker\n mode: SAME_ORIGIN, // no-cors, cors, *same-origin\n cache: 'default', // *default, no-cache, reload, force-cache, only-if-cached\n redirect: 'follow' // manual, *follow, error\n };\n}\n\n/**\n * @description Prepares general header params\n * @returns result\n */\nfunction prepareHeaders(): Record<string, string> {\n const locale = document.documentElement?.dataset?.locale || '';\n // eslint-disable-next-line spellcheck/spell-checker\n const siteId = document.documentElement?.dataset?.siteid || '';\n\n return {\n 'x-sf-cc-siteid': siteId,\n 'x-sf-cc-requestlocale': locale,\n 'x-requested-with': 'XMLHttpRequest'\n };\n}\n\n/**\n * @description Handles response by type and status\n * @param response - response data\n * @param type - content type to handle\n * @returns result\n */\nfunction handleResponse(response: Response, type: string = APPLICATION_JSON): Promise<any> {\n const contentType = response.headers.get(CONTENT_TYPE);\n\n if (response.ok) {\n if (contentType && contentType.includes(APPLICATION_JSON) && (type === APPLICATION_JSON)) {\n return handleOkResponse(response.json());\n }\n\n if (contentType && contentType.includes(TEXT_HTML) && (type === TEXT_HTML)) {\n return handleOkResponse(response.text());\n }\n\n if ((type === TEXT_HTML)) {\n if (response.status !== 204) {\n showErrorLayout(errorFallbackMessage);\n throw new TypeError(errorFallbackMessage);\n }\n } else {\n showErrorLayout(errorFallbackMessage);\n throw new TypeError(errorFallbackMessage);\n }\n } else if (response.status === 404) {\n showErrorLayout(errorFallbackMessage);\n throw new TypeError(errorFallbackMessage);\n } else if (response.status === 500) {\n return handleResponse500(response);\n }\n\n return response.json().then(errorJson => {\n return Promise.reject(errorJson);\n });\n}\n\n/**\n * @description Handle errors when response failed for some reason\n * @param error - error object\n * @returns result\n */\nfunction handleResponseError(error: Error): Record<string, unknown> {\n let message = '';\n\n switch (error.message) {\n case FAILED_FETCH:\n message = errorFallbackMessage;\n break;\n default:\n message = error.message;\n break;\n }\n\n return {\n error: message,\n message: message\n };\n}\n\n/**\n * @description Form submission handler\n * @param url url of resource\n * @param [data] form content\n * @param [method] typeof request\n * @param [skipToken] skip token for request\n * @returns Fetching result promise\n */\nexport const submitFormJson = (\n url: string,\n data: { [x: string]: string; } = {},\n method: 'POST' | 'GET' = 'POST',\n skipToken = false\n): Promise<Record<string, unknown>> => {\n return getFetch().then(() => {\n const { valuedUrl, formData } = handleUrlOrFormData(method, data, skipToken, url);\n /**\n * This magic is mandatory for MS Edge because fetch polyfill is returning not polyfilled Promise object\n */\n\n return Promise.resolve(fetch(valuedUrl, {\n ...prepareRequestData(),\n method: method, // *GET, POST, PUT, DELETE, etc.\n credentials: SAME_ORIGIN, // include, *same-origin, omit\n headers: {\n ...prepareHeaders(),\n 'Content-Type': 'application/x-www-form-urlencoded',\n Accept: APPLICATION_JSON\n },\n referrer: NO_REFERRER, // no-referrer, *client\n body: formData // body data type must match \"Content-Type\" header\n })).then(handleResponse).catch(handleResponseError);\n });\n};\n\n/**\n * @description Submit data via POST method\n * @param url url of resource\n * @param [data] content\n * @param [skipToken] skip token for request\n * @returns Fetching result promise\n */\nexport const postJsonData = (\n url: string,\n data: { [x: string]: string; } = {},\n skipToken = false\n): Promise<Record<string, unknown>> => {\n return getFetch().then(() => {\n const tokenObj = !skipToken && token.name ? { [token.name]: token.value } : {};\n const dataToSend = { ...data, ...tokenObj };\n\n /**\n * This magic is mandatory for MS Edge because fetch polyfill is returning not polyfilled Promise object\n */\n return Promise.resolve(fetch(appendParamsToUrl(url, { ajax: 'true' }), {\n ...prepareRequestData(),\n method: 'POST', // *GET, POST, PUT, DELETE, etc.\n credentials: SAME_ORIGIN, // include, *same-origin, omit\n headers: {\n ...prepareHeaders(),\n 'Content-Type': APPLICATION_JSON,\n Accept: APPLICATION_JSON\n },\n referrer: NO_REFERRER, // no-referrer, *client\n body: JSON.stringify(dataToSend) // body data type must match \"Content-Type\" header\n })).then(handleResponse).catch(handleResponseError);\n });\n};\n\n/**\n * @description Get content by URL\n * @param url URL to get data\n * @param [params] optional params to url\n * @returns Fetching result promise\n */\nexport function getContentByUrl(url: string, params: {[keys: string]: string;} = {}): Promise<Record<string, unknown>> {\n params.ajax = 'true';\n\n /**\n * This magic is mandatory for MS Edge because fetch polyfill is returning not polyfilled Promise object\n */\n return Promise.resolve(fetch(appendParamsToUrl(url, params), {\n method: 'GET', // *GET, POST, PUT, DELETE, etc.\n ...prepareRequestData(),\n credentials: SAME_ORIGIN, // include, *same-origin, omit\n headers: {\n ...prepareHeaders(),\n Accept: 'text/html'\n },\n referrer: NO_REFERRER // no-referrer, *client\n })).then((response) => {\n return handleResponse(response, TEXT_HTML);\n });\n}\n\n/**\n * @description Get JSON response from the server by URL\n * @param url URL to get data\n * @param [params] optional params to url\n * @param [skipToken] skip token for request\n * @returns Fetching result promise\n */\nexport function getJSONByUrl(\n url: string,\n params: { [keys: string]: string; } = {},\n skipToken = true\n): Promise<Record<string, unknown>> {\n return submitFormJson(url, params, 'GET', skipToken);\n}\n\n/**\n * @description Form submission handler with possibility to abort request\n * @param url url of resource\n * @param [data] form content\n * @param [method] typeof request\n * @param [skipToken] skip token for request\n * @returns An object contains the Fetching result promise and AbortController\n */\nexport function submitFormJsonWithAbort(\n url: string,\n data: { [x: string]: string; } = {},\n method: 'POST' | 'GET' = 'POST',\n skipToken = false\n): { promise?: Promise<unknown>; abortController?: AbortController; } {\n const abortController = new AbortController();\n const signal = abortController.signal;\n const result: { promise?: Promise<unknown>; abortController?: AbortController; } = {};\n\n result.promise = getFetch().then(() => {\n const { valuedUrl, formData } = handleUrlOrFormData(method, data, skipToken, url);\n\n /**\n * This magic is mandatory for MS Edge because fetch polyfill is returning not polyfilled Promise object\n */\n return Promise.resolve(fetch(valuedUrl, {\n ...prepareRequestData(),\n method: method, // *GET, POST, PUT, DELETE, etc.\n credentials: SAME_ORIGIN, // include, *same-origin, omit\n headers: {\n ...prepareHeaders(),\n 'Content-Type': 'application/x-www-form-urlencoded',\n Accept: APPLICATION_JSON\n },\n referrer: NO_REFERRER, // no-referrer, *client\n body: formData, // body data type must match \"Content-Type\" header\n signal: signal // can be used to communicate with/abort a DOM request\n })).then(handleResponse);\n });\n\n result.abortController = abortController;\n\n return result;\n}\n","/**\n * @module cookie\n * @category widgets\n * @subcategory toolbox\n * @description Represents cookie component with next features:\n * 1. Allow to set/get cookie\n * @example <caption>Example of cookie module usage</caption>\n * import { setCookie } from '../toolbox/cookie';\n * setCookie('dw_accept_cookie', '1', 365, true);\n */\n\n/**\n * @description Uses to set cookies to the document\n * @param {string} cookieName - cookie name\n * @param {string} cookieValue - cookie value\n * @param {number} expireInDays - number of days before cookie expiration. 0 - end of a session, 365 - default value\n * @param {boolean} isSecure - adds secure cookie if true\n * @returns {void}\n */\nexport function setCookie(cookieName, cookieValue, expireInDays = 365, isSecure = false) {\n const d = new Date();\n\n d.setTime(d.getTime() + (expireInDays * 24 * 60 * 60 * 1000));\n const expires = expireInDays === 0 ? '' : `expires=${d.toUTCString()}`;\n\n document.cookie = `${cookieName}=${cookieValue};${expires};path=/${isSecure ? ';secure' : ''}`;\n}\n\n/**\n * @description Gets cookie value from document.Empty string is returned by default\n * @param {string} cookieName - cookie name\n * @returns {string} - cookie value\n */\nexport function getCookie(cookieName) {\n const name = `${cookieName}=`;\n const ca = document.cookie.split(';');\n\n for (let i = 0; i < ca.length; i += 1) {\n let c = ca[i];\n\n while (c.charAt(0) === ' ') {\n c = c.substring(1);\n }\n\n if (c.indexOf(name) === 0) {\n return c.substring(name.length, c.length);\n }\n }\n\n return '';\n}\n","/**\n * @module cssLoadChecker\n * @category widgets\n * @subcategory toolbox\n * @description\n * Util that used for checking if CSS was loaded.\n * Return Promise that resolved as soon as CSS loaded.\n * @example\n * cssLoadChecker.get().then(() => {\n * do some staff after css load\n * });\n */\nconst CSS_SELECTOR = '.js-styles';\n\nexport default {\n /**\n * @description Get loading state of all link nodes\n * @returns {Promise} - loading state\n */\n get: function () {\n return Promise.all(\n Array.from(document.querySelectorAll(CSS_SELECTOR), link => this.getLoadedState(link))\n );\n },\n /**\n * @description Get loading state of particular link node\n * @param {object} css - link DOM node\n * @returns {Promise} - loading state\n */\n getLoadedState(css) {\n if (module.hot) { // This trick not work with hot reload\n return new Promise(resolve => setTimeout(() => resolve(true), 200));\n }\n\n return new Promise((resolve) => {\n if (css.media === 'all' || css.media === '') {\n try {\n /**\n * This trick is needed to be sure css are loaded across all browsers\n * `document.styleSheets` is not suitable since FF changes the length prematurely\n * Combined solution from https://www.phpied.com/when-is-a-stylesheet-really-loaded/\n */\n const cssRules = css.sheet.cssRules; // Only populated when css is loaded. This is cross-browser solution.\n\n if (cssRules) {\n resolve(true);\n }\n } catch (e) {\n css.addEventListener('load', resolve);\n css.addEventListener('error', resolve);\n }\n } else {\n css.addEventListener('load', resolve);\n css.addEventListener('error', resolve);\n }\n });\n }\n};\n","/**\n * @module debounce\n * @category widgets\n * @subcategory toolbox\n * @description Represents debounce component with next features:\n * 1. Debounce function\n * 2. Throttle function\n * @example <caption>Example of debounce module usage</caption>\n * import { debounce } from 'widgets/toolbox/debounce';\n *\n * this.ev('resize', debounce(this.handleResize.bind(this), 200), window);\n */\n\n/**\n * @description Returns a function, that, as long as it continues to be invoked, will not be triggered.\n * The function will be called after it stops being called for N milliseconds.\n * If `invokeLeading` is passed, trigger the function on the leading edge, instead of the trailing.\n * If `invokeTrailing` is passed, trigger the function on the trailing edge additionally.\n * @param callbackFunction - callback\n * @param delay - timeout duration\n * @param [invokeLeading] - executing the debounce without waiting\n * @param [invokeTrailing]\n * execute trailing function after timeout: could be used in combination with 'invokeLeading' parameter\n * to execute both functions - leading and trailing ones\n * @returns Debounce function\n */\nexport function debounce<T>(\n callbackFunction: (args0: T) => void,\n delay: number,\n invokeLeading = false,\n invokeTrailing = false\n): (args0: T) => void {\n /**\n * @type {number|null}\n */\n let timeout: number | null;\n const executeTrailing = !invokeLeading || invokeTrailing;\n\n return function debounceInner(this: any, ...args) {\n // Leading function execution\n if (invokeLeading && !timeout) {\n callbackFunction.apply(this, args);\n }\n\n // Set timeout for trailing function execution\n if (executeTrailing) {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n timeout = window.setTimeout(() => {\n timeout = null;\n callbackFunction.apply(this, args);\n }, delay);\n }\n };\n}\n\n/**\n * @description Creates and returns a new, throttled version of the passed function, that,\n * when invoked repeatedly, will only actually call the original function at most once per every\n * `wait` milliseconds. Useful for rate-limiting events that occur faster than you can keep up with.\n * By default, `throttle` will execute the function as soon as you call it for the first time, and,\n * if you call it again any number of times during the `wait` period,as soon as that period is over.\n * If you'd like to disable the leading-edge call, pass `{leading: false}`, and if you'd like to disable\n * the execution on the trailing-edge, pass `{trailing: false}`.\n * @param func Function to execute\n * @param wait Execution period\n * @param [options] Configurations\n * @param [options.leading] leading timeout\n * @param [options.trailing] trailing timeout\n * @returns Throttled version of passed function\n */\nexport function throttle(\n func: () => unknown,\n wait: number,\n options: { leading: boolean; trailing: boolean; } = { leading: false, trailing: false }\n): () => unknown {\n /** @type {number|null} */\n let timeout: number | null;\n /** @type {any} */\n let context: any;\n /** @type {any} */\n let args: any;\n /** @type {any} */\n let result: any;\n\n let previous = 0;\n\n const later = function () {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n\n result = func.apply(context, args);\n\n if (!timeout) {\n context = null;\n args = null;\n }\n };\n\n return function (this: any) {\n const now = Date.now();\n\n if (!previous && options.leading === false) { previous = now; }\n\n const remaining = wait - (now - previous);\n\n context = this;\n // eslint-disable-next-line prefer-rest-params\n args = arguments;\n\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n\n previous = now;\n result = func.apply(context, args);\n\n if (!timeout) {\n context = null;\n args = null;\n }\n } else if (!timeout && options.trailing !== false) {\n timeout = window.setTimeout(later, remaining);\n }\n\n return result;\n };\n}\n","type Modal = InstanceType <ReturnType <typeof import('widgets/global/Modal').default>>;\n\n/**\n * @category widgets\n * @subcategory toolbox\n * @class DialogMgr\n * @classdesc Represents ajax component with next features:\n * 1. Allow opening the second dialog above the first one.\n * 2. Allow closing opened dialog. If any other opened dialog exists, moves it to the top.\n * @example <caption>Usage of dialogMgr instance. In this case `dialogMgr` used in class {@link Modal} to show it's content above any other opened dialog</caption>\n * import { dialogMgr } from 'widgets/toolbox/dialogMgr';\n *\n * class Modal extends AccessibilityFocusTrapMixin {\n * ...\n showModal(templateData, cb) {\n ...\n renderedPromise.then(() => {\n ...\n dialogMgr.openDialog(this);\n });\n }\n * }\n */\nclass DialogMgr {\n dialogsStack: Array<Modal>;\n\n /**\n * @description Define empty dialogs stack\n */\n constructor() {\n this.dialogsStack = [];\n }\n\n /**\n * @description Open Modal. If any other opened dialog exists - move it behind newly opened modal.\n * @param dialog - Dialog object\n */\n openDialog(dialog: Modal): void {\n const topDialog = this.dialogsStack.length ? this.dialogsStack[this.dialogsStack.length - 1] : null;\n\n if (topDialog !== dialog) {\n if (topDialog) {\n topDialog.moveBehind();\n }\n\n dialog.open();\n\n this.dialogsStack.push(dialog);\n }\n }\n\n /**\n * @description Close Modal. If any other opened dialog exists, moves it to top.\n */\n closeDialog(): void {\n const dialog = this.dialogsStack.pop();\n\n if (dialog) {\n dialog.close();\n\n if (this.dialogsStack.length) {\n const previousDialog = this.dialogsStack[this.dialogsStack.length - 1];\n\n previousDialog.moveToTop();\n } else {\n dialog.removeGlobalDialogClass();\n }\n }\n }\n}\n\nexport const dialogMgr = new DialogMgr();\n","/**\n * @module eventBus\n * @category widgets\n * @subcategory toolbox\n * @description Create and returns an instance of EventEmitter. Refer [eventemitter3 documentation](https://www.npmjs.com/package/eventemitter3).\n * @example\n * import EventBus from 'widgets/toolbox/eventBus';\n *\n * EventBus.addListener(eventName, fn);\n */\n\nimport { EventEmitter } from 'eventemitter3';\nconst EventBus = new EventEmitter();\n\nexport default EventBus;\n","const temporaryStorage = {};\n\nexport default {\n setItem: (key, value) => {\n try {\n window.localStorage.setItem(key, value);\n } catch (error) {\n temporaryStorage[key] = value;\n }\n },\n getItem: (key) => {\n let value;\n\n try {\n value = window.localStorage.getItem(key);\n } catch (error) {\n value = temporaryStorage[key];\n }\n\n return value;\n },\n removeItem: (key) => {\n try {\n window.localStorage.removeItem(key);\n } catch (error) {\n delete temporaryStorage[key];\n }\n }\n};\n","/**\n * @module render\n * @category widgets\n * @subcategory toolbox\n * @description Represents render helpers that used for rendering Mustache template into variable\n * @example <caption>Example of usage</caption>\n * import { render } from 'widgets/toolbox/render';\n *\n * render(template, data).then((renderedString) => {\n * // process \"renderedString\"\n * });\n */\n\n/**\n * @description Load mustache library\n * @returns {Promise} Promise that resolved with mustache instance\n */\nexport function loadTemplateEngine() {\n return import(/* webpackChunkName: 'dynamic-render' */'mustache').then(d => d.default);\n}\n\n/**\n * @description Render method that render template with provided data\n * @param {string} template string\n * @param {object} data - object with data to use for rendering\n * @returns {Promise<string>} promise that resolved with rendered string\n */\nexport function render(template, data) {\n return loadTemplateEngine().then((Mustache) => {\n return Mustache.render(template || '', data);\n });\n}\n","/**\n * @module scroll\n * @category widgets\n * @subcategory toolbox\n * @description Represents scroll component with next features:\n * 1. Allow to scroll element into view\n * 2. Allow to scroll element to provided coordinate\n * 3. Allow to scroll window to provided element\n * 4. Allow to scroll window to top\n * 5. Allow to get scroll postion\n * 6. Allow to add callback on scroll event\n * @example <caption>Example of scroll module usage</caption>\n * import { scrollWindowTo, scrollToTop } from 'widgets/toolbox/scroll';\n *\n * scrollWindowTo(errorElement, true);\n */\n\nimport { debounce } from 'widgets/toolbox/debounce';\nimport {\n SMALL,\n MEDIUM,\n LARGE,\n EXTRA_LARGE,\n getViewType\n} from 'widgets/toolbox/viewtype';\n\nconst stickyHeaderHeightMap = {\n [SMALL]: 64,\n [MEDIUM]: 64,\n [LARGE]: 80,\n [EXTRA_LARGE]: 80\n};\n\n/**\n * @description Scroll element into view\n * @param {HTMLElement|undefined} element - HTML Element\n * @returns {void}\n */\nexport function scrollIntoView(element) {\n if (!element) {\n return;\n }\n\n if ('scrollBehavior' in document.documentElement.style) {\n element.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'nearest' });\n } else {\n element.scrollIntoView(false);\n }\n}\n\n/**\n * @description Scroll element to provided coordinate\n * @param {HTMLElement} element - HTML Element\n * @param {number} [top] - top coordinate\n * @param {number} [left] - left coordinate\n * @returns {void}\n */\nexport function scrollElementTo(element, top = 0, left = 0) {\n if (element && typeof element.scrollTo === 'function') {\n element.scrollTo({ top: top, left: left, behavior: 'smooth' });\n }\n}\n\n/**\n * @description Scroll window to provided element\n * @param {HTMLElement|undefined} element - HTML Element\n * @param {boolean} [countHeaderHeight] - add to top header height\n * @returns {void}\n */\nexport function scrollWindowTo(element, countHeaderHeight = false) {\n if (!element) {\n return;\n }\n\n const headerHeight = stickyHeaderHeightMap[getViewType()];\n const top = element.getBoundingClientRect().top + window.pageYOffset;\n const left = 0;\n\n if (countHeaderHeight) {\n window.scrollTo({ top: top - headerHeight, left: left, behavior: 'smooth' });\n } else {\n window.scrollTo({ top: top, left: left, behavior: 'smooth' });\n }\n}\n\n/**\n * @description Scroll window to top\n * @returns {void}\n */\nexport function scrollToTop() {\n window.scrollTo(0, 0);\n}\n\nconst DEBOUNCE_INTERVAL = 20;\n/**\n * @type {((arg0: {currentPosition: number, lastScrollPosition: number, diff: number}) => void)[]}\n */\nconst scrollHandlers = [];\n\n/**\n * @description Get scroll postion\n * @returns {number} Scroll postion\n */\nexport function getScrollPosition() {\n if (document.documentElement.scrollTop !== undefined) {\n return document.documentElement.scrollTop;\n }\n\n if (document.scrollingElement && document.scrollingElement.scrollTop !== undefined) {\n return document.scrollingElement.scrollTop;\n }\n\n return -1;\n}\n\nlet lastScrollPosition = 0;\n\nconst debounceScroll = debounce(() => {\n const currentPosition = getScrollPosition();\n\n // @ts-expect-error ts-migrate(2349) FIXME: This expression is not callable.\n scrollHandlers.forEach(handler => handler({\n currentPosition,\n lastScrollPosition,\n diff: currentPosition - lastScrollPosition\n }));\n lastScrollPosition = currentPosition;\n}, DEBOUNCE_INTERVAL, true, true);\n\n/**\n * @description Add callback on scroll event\n * @param {(arg0: {currentPosition: number, lastScrollPosition: number, diff: number}) => void} callback - on scroll callback\n * @returns {Function} result\n */\nexport function onScroll(callback) {\n if (!scrollHandlers.length) {\n window.addEventListener('scroll', debounceScroll, { passive: true });\n }\n\n // @ts-expect-error ts-migrate(2345) FIXME: Argument of type 'any' is not assignable to parame... Remove this comment to see the full error message\n scrollHandlers.push(callback);\n\n return () => {\n // @ts-expect-error ts-migrate(2345) FIXME: Argument of type 'any' is not assignable to parame... Remove this comment to see the full error message\n scrollHandlers.splice(scrollHandlers.indexOf(callback), 1);\n\n if (!scrollHandlers.length) {\n window.removeEventListener('scroll', debounceScroll);\n }\n };\n}\n","let tokenName: string | null = null;\nlet tokenValue: string | null = null;\nlet tokenElement: HTMLElement | null = null;\n\n/**\n * @category widgets\n * @subcategory toolbox\n * @module token\n * @description Module represents functionality to get/set token name and value\n * @example <caption>Example of teken updating from some module</caption>\n * import token from 'widgets/toolbox/token';\n * ...\n * return submitFormJson(this.prefs().sessionContinueUrl, {}).then((response) => {\n * token.name = response.csrf.tokenName;\n * token.value = response.csrf.token;\n * this.closeModal();\n * this.countdownShown = false;\n * });\n * ...\n */\nexport default {\n /**\n * @description Token name\n */\n\n get name(): string | null {\n if (!tokenName) {\n const element = this.element;\n\n if (element && element.dataset.tokenName) {\n tokenName = element.dataset.tokenName;\n }\n }\n\n return tokenName;\n },\n\n set name(value: string | null) {\n tokenName = value;\n },\n\n /**\n * @description Token value\n */\n get value(): string | null {\n if (!tokenValue) {\n const element = this.element;\n\n if (element && element.dataset.tokenValue) {\n tokenValue = element.dataset.tokenValue;\n }\n }\n\n return tokenValue;\n },\n\n set value(value: string | null) {\n tokenValue = value;\n },\n\n /**\n * @description HTML element with token data\n * @private\n */\n get element(): HTMLElement | null {\n if (!tokenElement) {\n tokenElement = document.getElementById('csrf-token-element');\n }\n\n return tokenElement;\n }\n};\n","/**\n * @module util\n * @category widgets\n * @subcategory toolbox\n * @description Represents util component with next features:\n * 1. Allow formatting message\n * 2. Allow setting timeout/interval for provided function\n * 3. Allow adding/remove/get parameter from URL\n * 4. Allow showing error layout\n * 5. Allow checking if `event` is triggered outside of `el`\n * 6. Allow creating a function to unsubscribe listener\n * 7. Allow creating a listener for click outside of `el` to execute a callback\n * 8. Allow comparing object instances\n * 9. Allow generating an integer Array containing an arithmetic progression\n * 10. Allow converting a value from data attribute into js type value\n * 11. Allow creating a function that memoizes the result of `func`\n * 12. Allow adding script tag on a page\n * 13. Allow getting value in tree object by path\n * 14. Allow checking if DOM element is focusable\n * @example <caption>Example of util module usage</caption>\n * import { range, timeout } from 'widgets/toolbox/util';\n *\n * itemObject.quantityOptionsList = range(\n * item.quantityOptions.minOrderQuantity,\n * item.quantityOptions.maxOrderQuantity + 1\n * ).map(qty => ({\n * index: qty,\n * selected: qty === item.quantity ? 'selected' : ''\n * }));\n */\n\n/**\n * @description Window console\n */\nexport const log = window.console;\n\n// IE11 fix\nif (!log.table) {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n log.table = () => {};\n}\n\n/**\n * @description Format message\n * @param {string} message message with placeholders i.e. {0}\n * @param {...string} params values for placeholders\n * @returns {string} formatted message\n */\nexport function format(message, ...params) {\n return params.reduce((msg, param, idx) => {\n const reg = new RegExp('\\\\{' + idx + '\\\\}', 'gm');\n\n return msg.replace(reg, param);\n }, message);\n}\n\n/**\n * @description Timeout for provided function\n * @param {Function|undefined} fn function to be called after specified time\n * @param {number} [time] time before call callback\n * @returns {Function} Timeout disposable\n */\nexport function timeout(fn, time = 0) {\n /**\n * @type {NodeJS.Timeout|undefined}\n */\n let timer = setTimeout(() => {\n if (fn) {\n fn();\n }\n\n // @ts-expect-error ts-migrate(2322) FIXME: Type 'undefined' is not assignable to type 'number... Remove this comment to see the full error message\n timer = undefined;\n fn = undefined;\n }, time);\n\n return () => {\n if (timer) {\n clearTimeout(timer);\n\n // @ts-expect-error ts-migrate(2322) FIXME: Type 'undefined' is not assignable to type 'number... Remove this comment to see the full error message\n timer = undefined;\n fn = undefined;\n }\n };\n}\n\n/**\n * @description Interval for provided function\n * @param {Function|undefined} fn function to be called regularly, after specified time delay\n * @param {number} [time] time regularity for callback execution\n * @returns {Function|undefined} Interval disposable\n */\nexport function interval(fn, time = 0) {\n /**\n * @type {NodeJS.Timeout|undefined}\n */\n let intervalID = setInterval(() => {\n if (fn) {\n fn();\n }\n }, time);\n\n return () => {\n if (intervalID) {\n clearInterval(intervalID);\n\n // @ts-expect-error ts-migrate(2322) FIXME: Type 'undefined' is not assignable to type 'number... Remove this comment to see the full error message\n intervalID = undefined;\n fn = undefined;\n }\n };\n}\n\n/**\n * @description Append parameter to provided URL\n * @param {string} initialUrl initial url\n * @param {string} name name of params\n * @param {string} value value of param\n * @returns {string} url with appended param\n */\nexport function appendParamToURL(initialUrl, name, value) {\n const url = new URL(initialUrl, document.location.origin);\n\n // quit if the param already exists\n if (url.searchParams.get(name)) {\n return url.toString();\n }\n\n url.searchParams.append(name, value);\n\n return url.toString();\n}\n\n/**\n * @description Remove provided parameter from URL\n * @param {string} initialUrl Source Url\n * @param {string} name Parameter to remove\n * @returns {string} Url without parameter\n */\nexport function removeParamFromURL(initialUrl, name) {\n const url = new URL(initialUrl, document.location.origin);\n\n url.searchParams.delete(name);\n\n return url.toString();\n}\n\n/**\n * @description Add parameters to provided URL\n * @param {string} url initial url\n * @param {{[keys: string]: string}} params params as key value-object\n * @returns {string} Url with appended parameters\n */\nexport function appendParamsToUrl(url, params) {\n return Object.entries(params).reduce((accumulator, [name, value]) => {\n return appendParamToURL(accumulator, name, value);\n }, url);\n}\n\n/**\n * @description Get parameters from URL\n * @param [url] Source Url\n * @returns Hash map of Url parameters\n */\nexport function getUrlParams(url?: string): {[x: string]: string|number|boolean|Array<string|boolean>} {\n // get query string from url (optional) or window\n let queryString = url ? url.split('?')[1] : window.location.search.slice(1);\n\n // we'll store the parameters here\n /**\n * @type {{[x: string]: string}}\n */\n const obj = {};\n\n // if query string doesn't exist\n if (!queryString) {\n return obj;\n }\n\n // stuff after # is not part of query string, so get rid of it\n queryString = queryString.split('#')[0];\n\n const queryParams = new URLSearchParams(queryString);\n\n // transform instance of URLSearchParams to a Hash map\n queryParams.forEach((value, key) => {\n obj[key] = value;\n });\n\n return obj;\n}\n\n/**\n * @description Array of errors\n * @type {string[]}\n */\nlet errors = [];\n\n/**\n * @description Show error layout\n * @param {string|Error} message to show\n * @returns {void}\n */\nexport function showErrorLayout(message) {\n const errorLayout = document.querySelector('#errorLayout');\n\n if (!errorLayout) {\n return;\n }\n\n if (message instanceof Error) {\n if (message.stack) {\n // @ts-expect-error ts-migrate(2345) FIXME: Argument of type 'string' is not assignable to par... Remove this comment to see the full error message\n errors.unshift(message.stack);\n }\n\n // @ts-expect-error ts-migrate(2345) FIXME: Argument of type 'string' is not assignable to par... Remove this comment to see the full error message\n errors.unshift(message.message);\n } else {\n // @ts-expect-error ts-migrate(2345) FIXME: Argument of type 'any' is not assignable to parame... Remove this comment to see the full error message\n errors.unshift(message);\n }\n\n log.error(message);\n errorLayout.addEventListener('click', () => {\n errorLayout.innerHTML = ''; errors = [];\n }, { once: true });\n\n errorLayout.innerHTML = `<div class=\"danger\" style=\"\n bottom: 0;\n right: 0;\n position: fixed;\n background-color: #ff0000c7;\n border: black;\n padding: 5px;\n z-index: 9999999;\n border-radius: 10px;\n \">\n Error: <br/>\n ${errors.join('<hr/>')}\n </div>`;\n}\n\n/**\n * @description Check if event `event` is triggered outside of element `el`\n * @param {Event} event DOM event\n * @param {HTMLElement} el element to track click on\n * @returns {boolean} `true` if triggered outside of element\n */\nexport function isEventTriggeredOutsideElement(event, el) {\n if (event.target && event.target instanceof Element) {\n let currElement = event.target;\n\n while (currElement.parentElement) {\n if (currElement === el) {\n return false;\n }\n\n currElement = currElement.parentElement;\n }\n\n return true;\n }\n\n return false;\n}\n\n/**\n * @description Create a function to unsubscribe listener\n * @param {EventListener | undefined} listener Listener to unsubscribe\n * @param {string} eventName Event to unsubscribe\n * @returns {EventListener | undefined} Unsubscribed listener or undefined\n */\nfunction makeExposableListener(listener, eventName) {\n if (listener) {\n document.removeEventListener(eventName, listener);\n listener = undefined;\n }\n\n return listener;\n}\n\n/**\n * @description Create listener for click outside of element `el` to execute callback `cb`\n * @param {object} el Element to track click on\n * @param {Function} cb Callback\n * @param {boolean} [preventDefault] Optional to prevent the default event\n * @returns {Function|undefined} Disposable function for listener (for unsubscription)\n */\nexport function clickOutside(el, cb, preventDefault = true) {\n // need for support desktop emulation\n const eventName = 'click';\n const domEl = el.get();\n /**\n * @type {EventListener|undefined}\n */\n let listener;\n\n function expose() {\n listener = makeExposableListener(listener, eventName);\n }\n\n if (domEl) {\n listener = event => {\n if (isEventTriggeredOutsideElement(event, domEl)) {\n if (cb(event) === false) {\n expose();\n }\n\n if (preventDefault === true) {\n event.preventDefault();\n }\n }\n };\n\n setTimeout(() => {\n if (listener) {\n document.addEventListener(eventName, listener);\n }\n }, 0);\n\n return expose;\n }\n\n throw new Error('Missing required el');\n}\n\n/**\n * @description Compare object instances\n * @param {any} x Source object\n * @param {any} y Object for compare\n * @returns {boolean} `true` if objects are equal\n */\n// eslint-disable-next-line complexity\nexport function objectEquals(x, y) {\n if (x === null || x === undefined || y === null || y === undefined) {\n return x === y;\n }\n\n // after this just checking type of one would be enough\n if (x.constructor !== y.constructor) {\n return false;\n }\n\n // if they are functions or regexps, they should exactly refer to same one (because of closures)\n if ((x instanceof Function) || (x instanceof RegExp)) {\n return x === y;\n }\n\n if (x === y || x.valueOf() === y.valueOf()) {\n return true;\n }\n\n if (Array.isArray(x) && x.length !== y.length) {\n return false;\n }\n\n // if they are dates, they must had equal valueOf\n if (x instanceof Date) {\n return false;\n }\n\n // if they are strictly equal, they both need to be object at least\n if (!(x instanceof Object) || !(y instanceof Object)) {\n return false;\n }\n\n // recursive object equality check\n const p = Object.keys(x);\n\n return Object.keys(y).every((i) => p.indexOf(i) !== -1)\n && p.every((i) => objectEquals(x[i], y[i]));\n}\n\n/**\n * @description Generate an integer Array containing an arithmetic progression\n * @param {number} start start from\n * @param {number|null} [stop] end on\n * @param {number} [step] step\n * @returns {number[]} Array with an arithmetic progression\n */\nexport function range(start, stop = null, step) {\n if (stop === null) {\n stop = start || 0;\n start = 0;\n }\n\n if (!step) {\n // @ts-expect-error ts-migrate(2531) FIXME: Object is possibly 'null'.\n step = stop < start ? -1 : 1;\n }\n\n // @ts-expect-error ts-migrate(2531) FIXME: Object is possibly 'null'.\n const length = Math.max(Math.ceil((stop - start) / step), 0);\n const newRange = Array(length);\n\n for (let idx = 0; idx < length; idx += 1, start += step) {\n newRange[idx] = start;\n }\n\n return newRange;\n}\n\nconst regexpBrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/;\n\n/**\n * @description Converts value from data attribute into js type value\n * @param {string} data value to convert\n * @returns {object|string|number|boolean|null|undefined} converted value\n */\nexport function getData(data) {\n if (data === 'true') {\n return true;\n }\n\n if (data === 'false') {\n return false;\n }\n\n if (data === 'null') {\n return null;\n }\n\n // Only convert to a number if it doesn't change the string\n if (data === +data + '') {\n return +data;\n }\n\n if (regexpBrace.test(data)) {\n return JSON.parse(data);\n }\n\n return data;\n}\n\n/**\n * @description Creates a function that memoize the result of `func`.\n * If resolver `hasher` is provided, it determines the cache key for storing\n * the result based on the arguments provided to the memoized function.\n * By default, the first argument provided to the memoized function is used as the map cache key.\n * The func is invoked with the this binding of the memoized function.\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [hasher] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n */\nexport function memoize(func, hasher) {\n /**\n * @description Memoize function wrapper\n * @param this context\n * @param {string} key Memoize key\n * @returns {any} Memoize cache value\n */\n function memoizeInner(this: any, key) {\n /**\n * @type {{[x: string]: any}}\n */\n const cache = memoizeInner.cache;\n\n // eslint-disable-next-line prefer-rest-params\n const address = '' + (hasher ? hasher.apply(this, arguments) : key);\n\n if (typeof cache[address] === 'undefined') {\n // eslint-disable-next-line prefer-rest-params\n cache[address] = func.apply(this, arguments);\n }\n\n return cache[address];\n }\n\n memoizeInner.cache = {};\n\n return memoizeInner;\n}\n\n/**\n * @description Add script tag on page\n * @param {string} source Url of script\n * @param {string} [globalObject] To check script loaded by global object\n * @param {string} [integrity] To add scripts integrity\n * @param {object} [attrs] Script attributes\n * @returns {Promise<any>} Promise when script loading is done or rejected\n */\nconst loadScriptHandler = (source, globalObject, integrity, attrs) => {\n return new Promise((resolve, reject) => {\n let script = document.createElement('script');\n const prior = document.getElementsByTagName('script')[0];\n\n if (!prior || !prior.parentNode) {\n throw Error('No document');\n }\n\n script.async = true;\n\n if (integrity) {\n script.integrity = integrity;\n }\n\n if (attrs) {\n Object.keys(attrs).forEach((attrName) => {\n script.setAttribute(attrName, attrs[attrName]);\n });\n }\n\n script.type = 'text/javascript';\n prior.parentNode.insertBefore(script, prior);\n\n script.onload = () => {\n script.onload = null;\n\n // @ts-expect-error ts-migrate(2322) FIXME: Type 'undefined' is not assignable to type 'HTMLSc... Remove this comment to see the full error message\n script = undefined;\n\n if (globalObject) {\n if (window[globalObject]) {\n resolve(window[globalObject]);\n } else {\n reject();\n }\n } else {\n resolve(true);\n }\n };\n\n script.onabort = () => {\n reject();\n };\n\n script.onerror = () => {\n reject();\n };\n\n script.src = source;\n });\n};\n\n// @ts-expect-error ts-migrate(2554) FIXME: Expected 2 arguments, but got 1.\nexport const loadScript = memoize(loadScriptHandler);\n\n/**\n * @description Get value in tree object `target` by path `path`\n * @param {any} target Source object\n * @param {string} path In `target` object\n * @param {any} [defaults] Will be returned instead of result if value doesn't exist\n * @returns {any} Value in `target` object by path `path`\n */\nexport function get(target, path, defaults?) {\n const parts = (path + '').split('.');\n let part;\n\n while (parts.length) {\n part = parts.shift();\n\n if (typeof target === 'object' && target !== null && part && part in target) {\n target = target[part];\n } else if (typeof target === 'string' && part) {\n target = target[+part];\n break;\n } else {\n target = defaults;\n break;\n }\n }\n\n return target;\n}\n\n/**\n * @description Checks if DOM element is focusable\n * @param {object} element HTML element to check if it is focusable\n * @returns {boolean} true if focusable, false if not\n */\nexport function isDOMElementFocusable(element) {\n if (\n element.tabIndex > 0\n || (element.tabIndex === 0 && element.hasAttribute('tabIndex'))\n || element.hasAttribute('contenteditable')\n ) {\n return true;\n }\n\n if (element.hasAttribute('disabled') || element.hasAttribute('hidden')) {\n return false;\n }\n\n switch (element.nodeName) {\n case 'A':\n return !!element.href && element.rel !== 'ignore';\n case 'INPUT':\n return element.type !== 'hidden' && element.type !== 'file';\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n default:\n return false;\n }\n}\n","// TODO: Need to update break point for 375 / 768 and test/refactor viewtype.js\n// eslint-disable-next-line spellcheck/spell-checker\n// TODO: resources shimming are loaded after bundle is parsed that results to undefined window.view.breakpoint.*\n// CLARIFY: isTypeView rename to isViewTypeMatch/isViewMatch ?\n/**\n * @module viewtype\n * @category widgets\n * @subcategory toolbox\n * @description Represents viewtype component with next features:\n * 1. Allow getting current view type\n * 2. Allow handling Window change event and view type change event\n * 3. Allow checking if touch device\n * 4. Allow checking view type (e.g isSmallView, isMediumView, isLargeView etc.)\n * @example <caption>Example of viewtype module usage</caption>\n * import { isDesktopView } from 'widgets/toolbox/viewtype';\n *\n * checkAriaAttributes() {\n * this.panelItems\n * .map(menuItem => menuItem.ref('itemLink'))\n * .filter(itemLink => itemLink.data('isCustomMenuHtml'))\n * .forEach(itemLink => {\n * itemLink.attr(ARIA_EXPANDED, isDesktopView());\n * itemLink.attr('aria-haspopup', isDesktopView());\n * });\n * }\n */\n\nimport eventBus from './eventBus';\nimport { debounce } from './debounce';\nimport viewTypeConfig from 'widgets/viewTypeConfig';\nimport breakpoints from 'config/breakpoints';\n\nconst smallID = 'small';\nconst mediumID = 'medium';\nconst largeID = 'large';\nconst extraLargeID = 'extraLarge';\n\nexport type viewtype = typeof smallID|typeof mediumID| typeof largeID|typeof extraLargeID;\n\nexport type TQueryMap = [v: viewtype, q: string][];\n\nconst breakMd = breakpoints.md;\nconst breakLg = breakpoints.lg;\nconst breakXl = breakpoints.xl;\n\nconst smallView = `screen and (max-width: ${breakMd - 1}px)`;\nconst mediumView = `screen and (min-width: ${breakMd}px) and (max-width: ${breakLg - 1}px)`;\nconst largeView = `screen and (min-width: ${breakLg}px) and (max-width: ${breakXl - 1}px)`;\nconst exLargeView = `screen and (min-width: ${breakXl - 1}px)`;\nlet queriesMap: TQueryMap = [\n [smallID, smallView],\n [mediumID, mediumView],\n [largeID, largeView],\n [extraLargeID, exLargeView]\n];\n\nlet currentWindowWidth = window.innerWidth;\nlet currentWindowHeight = window.innerHeight;\n\n/**\n * @description Get current view type\n * @returns Current view type\n */\nfunction getCurrentViewType(): viewtype {\n const matchQuery: [v: viewtype, q: string] | undefined = queriesMap.find(([, query]) => window.matchMedia(query).matches);\n\n return (matchQuery && matchQuery[0]) || smallID;\n}\n\n/**\n * @description WindowChange event handler\n * @emits \"viewtype.windowChange\"\n * @returns {void}\n */\nconst onWindowChange = (): void => {\n if (currentWindowWidth !== window.innerWidth || currentWindowHeight !== window.innerHeight) {\n currentWindowWidth = window.innerWidth;\n currentWindowHeight = window.innerHeight;\n /**\n * @description Event to window change\n * @event \"viewtype.windowChange\"\n */\n eventBus.emit('viewtype.windowChange', {\n currentWindowWidth: currentWindowWidth,\n currentWindowHeight: currentWindowHeight\n });\n }\n};\n\n/**\n * @type {viewtype} Current view type\n */\nlet currentViewType: viewtype = smallID;\n\n/**\n * @description Small view type ID\n */\nexport const SMALL = smallID;\n\n/**\n * @description Medium view type ID\n */\nexport const MEDIUM = mediumID;\n\n/**\n * @description Large view type ID\n */\nexport const LARGE = largeID;\n\n/**\n * @description Extra large view type ID\n */\nexport const EXTRA_LARGE = extraLargeID;\n\n/**\n * @description Get current view type\n * @returns {string} Current view type\n */\nexport const getViewType = (): string => currentViewType;\n\n/**\n * @description Check if touch device\n * @returns If touch device\n */\nexport const isTouchDevice = (): boolean => ('ontouchstart' in window)\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'DocumentTouch' does not exist on type 'W... Remove this comment to see the full error message\n || !!(window.DocumentTouch && document instanceof window.DocumentTouch);\n\n/**\n * @description Check view type is current by string\n * @param {typeof currentViewType} type name to check\n * @returns Return true if current type is same as current view type\n */\nfunction isTypeView(type: typeof currentViewType): boolean {\n return getViewType() === type;\n}\n\n/**\n * @description Check if view type is small\n * @returns result\n */\nexport const isSmallView = (): boolean => isTypeView(smallID);\n\n/**\n * @description Check if view type is medium\n * @returns result\n */\nexport const isMediumView = (): boolean => isTypeView(mediumID);\n\n/**\n * @description Check if view type is medium and up\n * @returns result\n */\nexport const isMediumViewAndUp = (): boolean => !isSmallView();\n\n/**\n * @description Check if view type is medium and down\n * @returns result\n */\nexport const isMediumViewAndDown = (): boolean => isSmallView() || isMediumView();\n\n/**\n * @description Check if view type is extra large\n * @returns result\n */\nexport const isExtraLargeView = (): boolean => isTypeView(extraLargeID);\n\n/**\n * @description Check if view type is large\n * @returns result\n */\nexport const isLargeView = (): boolean => isTypeView(largeID);\n\n/**\n * @description Check if view type is large and up\n * @returns result\n */\nexport const isLargeViewAndUp = (): boolean => isLargeView() || isExtraLargeView();\n\n/**\n * @description Check if view type is large and down\n * @returns result\n */\nexport const isLargeViewAndDown = (): boolean => !isExtraLargeView();\n\n/**\n * @description Check if view type is desktop\n */\nexport const isDesktopView = isLargeViewAndUp;\n\nconst modifiersMapping = {\n sm: isSmallView,\n md: isMediumView,\n lg: isLargeView,\n xl: isExtraLargeView\n};\n\nexport type shortViewtypes = keyof typeof modifiersMapping;\n\n/**\n * @description Define all view types\n * @type {}\n */\nexport const ALL_VIEW_TYPES: shortViewtypes[] = ['sm', 'md', 'lg', 'xl'];\n\n/**\n * @description Get active view type name\n * @returns {string} Active view type name\n */\nexport const getActiveViewtypeName = (): string => ALL_VIEW_TYPES.find(m => modifiersMapping[m]()) || 'xl';\n\n/**\n * @description Match viewport by device name\n * @emits \"viewtype.change\"\n * @param {typeof smallID|typeof mediumID| typeof largeID|typeof extraLargeID} newDevice device type\n * @returns {void}\n */\nfunction matchViewport(newDevice: typeof smallID | typeof mediumID | typeof largeID | typeof extraLargeID): void {\n const previousDevice = currentViewType;\n\n currentViewType = newDevice;\n\n if (previousDevice !== currentViewType) {\n /**\n * @description Event to change view type\n * @event \"viewtype.change\"\n */\n eventBus.emit('viewtype.change', currentViewType);\n }\n}\n\n/**\n * @description To init view types, you shouldn't use methods of modules before this executing\n * @emits \"viewtype.change\"\n * @param {object} [config] object\n * @param config.useWindowListeners use listeners or MediaQueryListener\n * @param {string[][]} [config.queriesMap] size of mobile in pixels\n * @returns {void}\n */\nexport function init(config: { useWindowListeners: boolean; queriesMap?: TQueryMap } = { useWindowListeners: false }) {\n const currentConfig = { ...config, ...viewTypeConfig };\n\n if (currentConfig.queriesMap) {\n queriesMap = currentConfig.queriesMap;\n }\n\n if (currentConfig.useWindowListeners) {\n const windowResize = debounce(() => {\n onWindowChange();\n matchViewport(getCurrentViewType());\n }, 50);\n\n window.addEventListener('resize', windowResize, { passive: true });\n window.addEventListener('orientationchange', windowResize, { passive: true });\n } else {\n const applyCurrentDeviceType = debounce(() => matchViewport(getCurrentViewType()), 50);\n\n queriesMap.forEach(([, query]) => window.matchMedia(query).addListener(applyCurrentDeviceType));\n }\n\n currentViewType = getCurrentViewType();\n /**\n * @description Event to change view type\n * @event \"viewtype.change\"\n */\n eventBus.emit('viewtype.change', currentViewType);\n}\n","export default {\n useWindowListeners: true\n};\n","// eslint-disable-next-line spellcheck/spell-checker\n/* eslint-disable max-len, indent, sonarjs/no-duplicate-string */\n/* sonar-ignore-start */\n\nimport widgetsMgr from 'widgets/widgetsMgr';\nimport ContextLoader from 'widgets/global/ContextLoader';\nimport Accordion from 'widgets/global/Accordion';\nimport AccordionItem from 'widgets/global/AccordionItem';\nimport Button from 'widgets/global/Button';\nimport ListAccessibility from 'widgets/global/ListAccessibility';\nimport SwipeToClose from 'widgets/global/SwipeToClose';\nimport DismissBlock from 'widgets/global/DismissBlock';\nimport Form from 'widgets/forms/Form';\nimport BasicForm from 'widgets/forms/BasicForm';\nimport AjaxForm from 'widgets/forms/AjaxForm';\nimport BasicInput from 'widgets/forms/BasicInput';\nimport InputEmail from 'widgets/forms/InputEmail';\nimport InputPassword from 'widgets/forms/InputPassword';\nimport InputCheckbox from 'widgets/forms/InputCheckbox';\nimport InputText from 'widgets/forms/InputText';\nimport InputTextarea from 'widgets/forms/InputTextarea';\nimport InputHidden from 'widgets/forms/InputHidden';\nimport InputTel from 'widgets/forms/InputTel';\nimport MaskableInput from 'widgets/forms/MaskableInput';\nimport Tabs from 'widgets/global/Tabs';\nimport TabPanel from 'widgets/global/TabPanel';\nimport InputSelect from 'widgets/forms/InputSelect';\nimport Label from 'widgets/global/Label';\nimport EmailSubscribe from 'widgets/forms/ajax/EmailSubscribe';\nimport ConfirmDialog from 'widgets/global/ConfirmDialog';\nimport Carousel from 'widgets/global/Carousel';\nimport Video from 'widgets/global/Video';\nimport BackToTop from 'widgets/global/BackToTop';\nimport Modal from 'widgets/global/Modal';\nimport InputRadio from 'widgets/forms/InputRadio';\nimport ConsentTracking from 'widgets/global/ConsentTracking';\nimport EmitBusEvent from 'widgets/global/EmitBusEvent';\nimport AjaxFormResponseContainer from 'widgets/forms/AjaxFormResponseContainer';\nimport Combobox from 'widgets/forms/Combobox';\nimport SearchBox from 'widgets/search/SearchBox';\nimport FocusHighlighter from 'widgets/global/FocusHighlighter';\nimport StickyHeader from 'widgets/global/StickyHeader';\nimport ButtonWithIcon from 'widgets/global/ButtonWithIcon';\nimport AccessibilityFocusTrapMixin from 'widgets/global/AccessibilityFocusTrapMixin';\nimport AccessibilityFocusMixin from 'widgets/global/AccessibilityFocusMixin';\nimport SoftKeyboardToggleMixin from 'widgets/global/SoftKeyboardToggleMixin';\nimport ProductTile from 'widgets/product/ProductTile';\nimport ProductOptionMixin from 'widgets/product/ProductOptionMixin';\nimport AlternativeImage from 'widgets/product/AlternativeImage';\nimport Disclosure from 'widgets/global/Disclosure';\nimport GlobalAlerts from 'widgets/global/GlobalAlerts';\nimport GlobalModal from 'widgets/global/GlobalModal';\nimport InputStepper from 'widgets/forms/InputStepper';\nimport ProcessButton from 'widgets/global/ProcessButton';\nimport HeroCarousel from 'widgets/global/HeroCarousel';\n\nwidgetsMgr.addWidgetsList('global.widgets', () => [\n ['contextLoader', ContextLoader],\n ['label', Label],\n ['carousel', Carousel],\n ['video', Video],\n ['button', Button],\n ['buttonWithIcon', ButtonWithIcon, 'button'],\n ['processButton', ProcessButton, 'button'],\n ['listAccessibility', ListAccessibility],\n ['refinementsPanel', Modal, 'listAccessibility'],\n ['refinementsPanel', SwipeToClose, 'refinementsPanel'],\n ['accordion', Accordion, 'listAccessibility'],\n ['accordionItem', AccordionItem],\n ['swipeToClose', SwipeToClose],\n ['dismissBlock', DismissBlock],\n ['backtotop', BackToTop],\n ['consentTracking', ConsentTracking],\n ['emitBusEvent', EmitBusEvent],\n ['focusHighlighter', FocusHighlighter],\n ['stickyHeader', StickyHeader],\n ['basicForm', BasicForm],\n ['form', Form, 'basicForm'],\n ['ajaxform', AjaxForm, 'basicForm'],\n ['emailSubscribe', EmailSubscribe, 'ajaxform'],\n ['basicInput', BasicInput],\n ['inputPassword', InputPassword, 'basicInput'],\n ['inputCheckbox', InputCheckbox, 'basicInput'],\n ['inputSelect', InputSelect, 'basicInput'],\n ['inputText', InputText, 'basicInput'],\n ['inputEmail', InputEmail, 'inputText'],\n ['inputTextarea', InputTextarea, 'inputText'],\n ['inputTel', InputTel, 'inputText'],\n ['inputTel', MaskableInput, 'inputTel'],\n ['inputRadio', InputRadio, 'basicInput'],\n ['inputHidden', InputHidden, 'basicInput'],\n ['inputStepper', InputStepper, 'basicInput'],\n ['modal', Modal],\n ['modal', AccessibilityFocusTrapMixin, 'modal'],\n ['globalModal', GlobalModal, 'modal'],\n ['confirmDialog', ConfirmDialog, 'modal'],\n ['combobox', Combobox],\n ['searchBox', SearchBox, 'combobox'],\n ['searchBox', AccessibilityFocusTrapMixin, 'searchBox'],\n ['searchBox', SoftKeyboardToggleMixin, 'searchBox'],\n ['searchBox', Modal, 'searchBox'],\n ['tabs', Tabs],\n ['tabPanel', TabPanel],\n ['productTile', ProductTile],\n ['productTile', AlternativeImage, 'productTile'],\n ['productTile', ProductOptionMixin, 'productTile'],\n ['ajaxFormResponseContainer', AjaxFormResponseContainer, 'modal'],\n ['disclosure', Disclosure],\n ['globalAlerts', GlobalAlerts],\n ['heroCarousel', HeroCarousel]\n]);\n\nconst hasContext = (context) => window.contexts.includes(context);\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('header'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'header.widgets' */'widgets/header/MenuPanel').then(d => d.default),\n import(/* webpackChunkName: 'header.widgets' */'widgets/header/MenuPanelToggle').then(d => d.default),\n import(/* webpackChunkName: 'header.widgets' */'widgets/header/MenuBarItem').then(d => d.default),\n import(/* webpackChunkName: 'header.widgets' */'widgets/header/HamburgerMenuItem').then(d => d.default),\n import(/* webpackChunkName: 'header.widgets' */'widgets/header/CountrySelector').then(d => d.default),\n import(/* webpackChunkName: 'header.widgets' */'widgets/header/CountrySelectorMenuItem').then(d => d.default),\n import(/* webpackChunkName: 'header.widgets' */'widgets/header/MegaMenu').then(d => d.default),\n import(/* webpackChunkName: 'header.widgets' */'widgets/header/MenuButton').then(d => d.default),\n import(/* webpackChunkName: 'header.widgets' */'widgets/cart/Minicart').then(d => d.default),\n import(/* webpackChunkName: 'header.widgets' */'widgets/cart/MinicartDialog').then(d => d.default)\n ]).then(deps => {\n const [\n MenuPanel,\n MenuPanelToggle,\n MenuBarItem,\n HamburgerMenuItem,\n CountrySelector,\n CountrySelectorMenuItem,\n MegaMenu,\n MenuButton,\n Minicart,\n MinicartDialog\n ] = deps;\n\n return {\n listId: 'header.widgets',\n widgetsDefinition: () => [\n ['menuPanelToggle', MenuPanelToggle],\n ['countrySelector', CountrySelector],\n // listAccessibility\n ['megaMenu', MegaMenu, 'listAccessibility'],\n ['menuBarItem', MenuBarItem, 'listAccessibility'],\n ['hamburgerMenuItem', HamburgerMenuItem, 'listAccessibility'],\n ['countrySelectorMenuItem', CountrySelectorMenuItem, 'hamburgerMenuItem'],\n ['countrySelectorMenuItem', CountrySelector, 'countrySelectorMenuItem'],\n ['menuButton', MenuButton, 'listAccessibility'],\n // swipeToClose\n ['menuPanel', MenuPanel, 'swipeToClose'],\n ['minicart', Minicart],\n // modal\n ['minicartDialog', MinicartDialog, 'modal']\n ]\n };\n })\n});\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('content'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'content.widgets' */ 'widgets/content/ContactUs').then(d => d.default)\n ]).then(deps => {\n const [ContactUs] = deps;\n\n return {\n listId: 'content.widgets',\n widgetsDefinition: () => [\n ['contactUs', ContactUs]\n ]\n };\n })\n});\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('home'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'product.widgets' */ 'widgets/product/ProductImages').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'widgets/product/ProductVideoMixin').then(d => d.default)\n ]).then(deps => {\n const [ProductImages, ProductVideoMixin] = deps;\n\n return {\n listId: 'homepage.widgets',\n widgetsDefinition: () => [\n ['productImages', ProductImages],\n ['productImages', AccessibilityFocusTrapMixin, 'productImages'],\n ['productImages', ProductVideoMixin, 'productImages']\n ]\n };\n })\n});\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('pdp'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'product.widgets' */ 'widgets/product/ProductDetail').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'widgets/product/AddAllToCartMixin').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'widgets/product/RecentlyViewedMixin').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'widgets/product/ProductSet').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'widgets/product/ProductImages').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'widgets/product/ProductVideoMixin').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'widgets/product/ColorSwatch').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'widgets/product/AddToCartMixin').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'widgets/forms/ajax/BackInStock').then(d => d.default)\n ]).then(deps => {\n const [ProductDetail, AddAllToCartMixin, RecentlyViewedMixin, ProductSet, ProductImages, ProductVideoMixin, ColorSwatch, AddToCartMixin, BackInStock] = deps;\n\n return {\n listId: 'product.widgets',\n widgetsDefinition: () => [\n ['productDetail', ProductDetail],\n ['productDetail', AddToCartMixin, 'productDetail'],\n ['productDetail', ProductOptionMixin, 'productDetail'],\n // Used for backInStock functionality\n ['productDetail', Disclosure, 'productDetail'],\n ['productDetail', RecentlyViewedMixin, 'productDetail'],\n ['productSet', ProductSet],\n ['productSet', AddAllToCartMixin, 'productSet'],\n ['productSet', RecentlyViewedMixin, 'productSet'],\n ['productImages', ProductImages],\n ['productImages', AccessibilityFocusTrapMixin, 'productImages'],\n ['productImages', ProductVideoMixin, 'productImages'],\n ['colorSwatch', ColorSwatch],\n // eslint-disable-next-line spellcheck/spell-checker\n // basicForm / ajaxform\n ['backInStock', BackInStock, 'ajaxform']\n ]\n };\n })\n});\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('plp'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'search.widgets' */ 'widgets/search/ProductListingMgr').then(d => d.default),\n import(/* webpackChunkName: 'search.widgets' */ 'widgets/search/RefinementsPanelToggle').then(d => d.default),\n import(/* webpackChunkName: 'search.widgets' */ 'widgets/search/Refinement').then(d => d.default),\n import(/* webpackChunkName: 'search.widgets' */ 'widgets/search/NoSearchResultsForm').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'widgets/product/ProductImages').then(d => d.default),\n import(/* webpackChunkName: 'product.widgets' */ 'widgets/product/ProductVideoMixin').then(d => d.default)\n ]).then(deps => {\n const [\n ProductListingMgr,\n RefinementsPanelToggle,\n Refinement,\n NoSearchResultsForm,\n ProductImages,\n ProductVideoMixin\n ] = deps;\n\n return {\n listId: 'search.widgets',\n widgetsDefinition: () => [\n // tabs\n ['productListingMgr', ProductListingMgr, 'tabs'],\n ['refinementsPanelToggle', RefinementsPanelToggle],\n ['refinement', Refinement],\n // basicForm\n ['noSearchResultsForm', NoSearchResultsForm, 'basicForm'],\n ['productImages', ProductImages],\n ['productImages', AccessibilityFocusTrapMixin, 'productImages'],\n ['productImages', ProductVideoMixin, 'productImages']\n ]\n };\n })\n});\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('account'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'account.widgets' */ 'widgets/account/PaymentsList').then(d => d.default),\n import(/* webpackChunkName: 'account.widgets' */ 'widgets/account/AddPaymentMethodForm').then(d => d.default),\n import(/* webpackChunkName: 'account.widgets' */ 'widgets/checkout/InputCreditCardNumber').then(d => d.default)\n ]).then(deps => {\n const [\n PaymentsList,\n AddPaymentMethodForm,\n InputCreditCardNumber\n ] = deps;\n\n return {\n listId: 'account.payment.widgets',\n widgetsDefinition: () => [\n ['paymentsList', PaymentsList],\n ['addPaymentMethodForm', AddPaymentMethodForm, 'ajaxform'],\n ['inputCreditCardNumber', InputCreditCardNumber, 'basicInput']\n ]\n };\n })\n});\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('account'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'account.widgets' */ 'widgets/account/AddressList').then(d => d.default),\n import(/* webpackChunkName: 'account.widgets' */ 'widgets/account/OrderHistoryMgr').then(d => d.default),\n import(/* webpackChunkName: 'account.widgets' */ 'widgets/forms/AddressBookForm').then(d => d.default),\n import(/* webpackChunkName: 'account.widgets' */ 'widgets/account/PasswordResetForm').then(d => d.default),\n import(/* webpackChunkName: 'account.widgets' */ 'widgets/forms/AddressForm').then(d => d.default),\n import(/* webpackChunkName: 'account.widgets' */ 'widgets/forms/ajax/LoginForm').then(d => d.default),\n import(/* webpackChunkName: 'account.widgets' */ 'widgets/forms/AutocompleteField').then(d => d.default),\n import(/* webpackChunkName: 'account.widgets' */ 'widgets/forms/GoogleAutocompleteField').then(d => d.default),\n import(/* webpackChunkName: 'account.widgets' */ 'widgets/global/SessionExpiration').then(d => d.default),\n import(/* webpackChunkName: 'account.widgets' */ 'widgets/order/OrderProductSummary').then(d => d.default)\n ]).then(deps => {\n const [\n AddressList,\n OrderHistoryMgr,\n AddressBookForm,\n PasswordResetForm,\n AddressForm,\n LoginForm,\n AutocompleteField,\n GoogleAutocompleteField,\n SessionExpiration,\n OrderProductSummary\n ] = deps;\n\n return {\n listId: 'account.widgets',\n widgetsDefinition: () => [\n ['addressList', AddressList],\n ['orderHistoryMgr', OrderHistoryMgr],\n ['sessionExpiration', SessionExpiration, 'modal'],\n // eslint-disable-next-line spellcheck/spell-checker\n // basicForm / ajaxform\n ['addressForm', AddressForm, 'ajaxform'],\n ['addressBookForm', AddressBookForm, 'addressForm'],\n ['loginForm', LoginForm, 'ajaxform'],\n ['passwordResetForm', PasswordResetForm, 'ajaxform'],\n // inputText\n ['autocompleteField', AutocompleteField, 'inputText'],\n ['googleAutocompleteField', GoogleAutocompleteField, 'autocompleteField'],\n ['orderProductSummary', OrderProductSummary]\n ]\n };\n })\n});\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('cart'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'cart.widgets' */ 'widgets/cart/CartMgr').then(d => d.default),\n import(/* webpackChunkName: 'cart.widgets' */ 'widgets/forms/CouponForm').then(d => d.default),\n import(/* webpackChunkName: 'cart.widgets' */ 'widgets/cart/PromoCodeDisclosure').then(d => d.default),\n import(/* webpackChunkName: 'cart.widgets' */ 'widgets/cart/CheckoutButtons').then(d => d.default),\n import(/* webpackChunkName: 'cart.widgets' */ 'widgets/global/SessionExpiration').then(d => d.default)\n ]).then(deps => {\n const [CartMgr, CouponForm, PromoCodeDisclosure, CheckoutButtons, SessionExpiration] = deps;\n\n return {\n listId: 'cart.widgets',\n widgetsDefinition: () => [\n ['cartMgr', CartMgr],\n ['checkoutButtons', CheckoutButtons],\n // modal\n ['sessionExpiration', SessionExpiration, 'modal'],\n // basicForm / form / ajaxForm\n ['couponform', CouponForm, 'ajaxform'],\n // disclosure\n ['promoCodeDisclosure', PromoCodeDisclosure, 'disclosure']\n ]\n };\n })\n});\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('checkout'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/forms/ajax/LoginForm').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/forms/ajax/CheckoutLoginForm').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/checkout/PaymentAccordion').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/checkout/PaymentAccordionItem').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/checkout/PaymentAccordionItemCREDIT_CARD').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/checkout/PaymentAccordionItemZERO_PAYMENT').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/global/SessionExpiration').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/content/ContactUs').then(d => d.default)\n ]).then(deps => {\n const [\n LoginForm,\n CheckoutLoginForm,\n PaymentAccordion,\n PaymentAccordionItem,\n PaymentAccordionItemCREDITCARD,\n PaymentAccordionItemZEROPAYMENT,\n SessionExpiration,\n ContactUs\n ] = deps;\n\n return {\n listId: 'checkout.widgets',\n widgetsDefinition: () => [\n // eslint-disable-next-line spellcheck/spell-checker\n // basicForm / form / ajaxform\n ['loginForm', LoginForm, 'ajaxform'],\n ['checkoutLoginForm', CheckoutLoginForm, 'loginForm'],\n // modal\n ['sessionExpiration', SessionExpiration, 'modal'],\n // accordion\n ['paymentAccordion', PaymentAccordion, 'accordion'],\n // accordionItems\n ['paymentAccordionItem', PaymentAccordionItem, 'accordionItem'],\n ['paymentAccordionItemCREDIT_CARD', PaymentAccordionItemCREDITCARD, 'paymentAccordionItem'],\n ['paymentAccordionItemCREDIT_CARD', AccessibilityFocusMixin, 'paymentAccordionItemCREDIT_CARD'],\n ['paymentAccordionItemZERO_PAYMENT', PaymentAccordionItemZEROPAYMENT, 'paymentAccordionItem'],\n ['contactUs', ContactUs]\n ]\n };\n })\n});\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('checkout'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/checkout/CheckoutMgr').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/checkout/ShippingStepMixin').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/checkout/CheckoutSummaryMixin').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/checkout/CheckoutStepMixin').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/checkout/SummaryStepMixin').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/checkout/BillingStepMixin').then(d => d.default)\n ]).then(deps => {\n const [\n CheckoutMgr,\n ShippingStepMixin,\n CheckoutSummaryMixin,\n CheckoutStepMixin,\n SummaryStepMixin,\n BillingStepMixin\n ] = deps;\n\n return {\n listId: 'checkout.manager.widgets',\n widgetsDefinition: () => [\n ['checkoutMgr', CheckoutMgr],\n ['checkoutMgr', AccessibilityFocusMixin, 'checkoutMgr'],\n ['checkoutMgr', CheckoutStepMixin, 'checkoutMgr'],\n ['checkoutMgr', ShippingStepMixin, 'checkoutMgr'],\n ['checkoutMgr', CheckoutSummaryMixin, 'checkoutMgr'],\n ['checkoutMgr', SummaryStepMixin, 'checkoutMgr'],\n ['checkoutMgr', BillingStepMixin, 'checkoutMgr']\n ]\n };\n })\n});\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('checkout'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/account/PasswordResetForm').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/checkout/AddressCheckoutForm').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/checkout/ShippingForm').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/checkout/BillingForm').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/checkout/InputCreditCardNumber').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/checkout/RadioSelector').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/forms/AutocompleteField').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/forms/GoogleAutocompleteField').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ 'widgets/forms/AddressForm').then(d => d.default)\n ]).then(deps => {\n const [\n PasswordResetForm,\n AddressCheckoutForm,\n ShippingForm,\n BillingForm,\n InputCreditCardNumber,\n RadioSelector,\n AutocompleteField,\n GoogleAutocompleteField,\n AddressForm\n ] = deps;\n\n return {\n listId: 'checkout.form.widgets',\n widgetsDefinition: () => [\n ['passwordResetForm', PasswordResetForm, 'ajaxform'],\n ['addressForm', AddressForm, 'ajaxform'],\n ['addressCheckoutForm', AddressCheckoutForm, 'addressForm'],\n ['addressCheckoutForm', AccessibilityFocusMixin, 'addressCheckoutForm'],\n ['shippingForm', ShippingForm, 'addressCheckoutForm'],\n ['billingForm', BillingForm, 'addressCheckoutForm'],\n // basicInput\n ['inputCreditCardNumber', InputCreditCardNumber, 'basicInput'],\n ['autocompleteField', AutocompleteField, 'inputText'],\n ['googleAutocompleteField', GoogleAutocompleteField, 'autocompleteField'],\n // inputRadio\n ['radioSelector', RadioSelector, 'inputRadio']\n ]\n };\n })\n});\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('orderconfirmation'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'orderconfirmation.widgets' */ 'widgets/order/OrderProductSummary').then(d => d.default)\n ]).then(deps => {\n const [OrderProductSummary] = deps;\n\n return {\n listId: 'content.widgets',\n widgetsDefinition: () => [\n ['orderProductSummary', OrderProductSummary]\n ]\n };\n })\n});\n\n/* sonar-ignore-end */\n","/**\n * @module widgetsMgr\n * @category widgets\n * @subcategory framework\n */\n\n/* eslint-disable no-use-before-define */\n/* eslint-disable max-classes-per-file */\nif ('assetsStaticURL' in window) {\n // eslint-disable-next-line no-undef, camelcase\n __webpack_public_path__ = window.assetsStaticURL;\n}\n\nimport './_polyfills';\nimport { log, getData } from './toolbox/util';\nimport { RefElement } from 'widgets/toolbox/RefElement';\nimport Widget from 'widgets/Widget';\nimport {\n init as initViewType,\n getActiveViewtypeName,\n ALL_VIEW_TYPES,\n shortViewtypes\n} from 'widgets/toolbox/viewtype';\nimport eventBus from 'widgets/toolbox/eventBus';\n\nconst WIDGET_PROP_NAME = '@@_widget_instance_@@';\nconst WIDGET_DISPOSABLE_VALUES = '@@_widget_events_disposable_@@';\nconst WIDGET_DOM_EVENT_PREFIX = 'data-event-';\nconst DATA_ATTR_PREFIX = 'data-';\nconst DATA_WIDGET = 'data-widget';\nconst DATA_WIDGET_VIEWTYPE_RELATED = 'data-widget.';\nconst WIDGET_EVENT_PREFIX = 'data-widget-event-';\nconst DATA_INITIALIZED = 'data-initialized';\nconst DATA_REF = 'data-ref';\n\nimport type * as diffDOM from 'diff-dom/src/index';\n\n/**\n * @description check if there are viewtype modifiers\n * @param modifiers to check\n * @returns true if any viewtype modifier exist\n */\nconst isViewtypeModifiers = (modifiers: shortViewtypes[]): boolean => modifiers.some(m => ALL_VIEW_TYPES.includes(m));\n/**\n * @description check if HTML Element is widget\n * @param el element to check\n * @returns true if widget\n */\nconst isWidget = (el: HTMLElement): boolean => el.hasAttribute(DATA_WIDGET)\n || el.getAttributeNames().some(name => name.startsWith(DATA_WIDGET_VIEWTYPE_RELATED));\n/**\n * @description get widget name for current viewtype\n * @param el widget element\n * @returns widget name if exist\n */\nconst getViewtypeRelatedWidgetName = (el: HTMLElement): string | null => {\n const activeViewtypeName = getActiveViewtypeName();\n const viewtypeWidgetConfigs = el.getAttributeNames().filter(name => name.startsWith(DATA_WIDGET_VIEWTYPE_RELATED));\n\n if (viewtypeWidgetConfigs.length) {\n const attrName = viewtypeWidgetConfigs.find(name => name.includes(activeViewtypeName));\n\n return attrName ? el.getAttribute(attrName) : 'widget';\n } else {\n return null;\n }\n};\n/**\n * @description check if element has viewtype-related widget definition or widget properties\n * @param el element\n * @returns widget name if exist\n */\nconst isViewtypeRelatedWidget = (el: HTMLElement): boolean => {\n if (el.getAttribute(DATA_WIDGET)) {\n return el.getAttributeNames().some(name => name.startsWith(DATA_ATTR_PREFIX) // is data attr\n && !name.startsWith(WIDGET_EVENT_PREFIX) // not widget event\n && !name.startsWith(WIDGET_DOM_EVENT_PREFIX) // not dom event\n && ALL_VIEW_TYPES.some(m => name.includes(m))); // is viewtype related property\n } else {\n return isWidget(el); // is viewtype related widget definition\n }\n};\n\nclass RootWidget extends Widget {}\n\nif (!document.head.parentElement) {\n throw Error('No document');\n}\n\ntype DomWidgetConfig = {\n [key: string]: Record<string, unknown> | string | number | boolean | null | undefined;\n}\n\n/**\n * @description get initial widget state from data attributes\n * @param domNode element of widget\n * @returns json-like configuration\n */\nfunction getWidgetConfig(domNode: HTMLElement): DomWidgetConfig {\n const config: DomWidgetConfig = {};\n const activeViewtype = getActiveViewtypeName();\n\n domNode.getAttributeNames().forEach(attrName => {\n if (typeof attrName === 'string'\n && attrName.includes(DATA_ATTR_PREFIX)\n && !attrName.startsWith(WIDGET_DOM_EVENT_PREFIX)\n && !attrName.startsWith(DATA_WIDGET)\n ) {\n const [key, ...modifiers] = attrName.replace(DATA_ATTR_PREFIX, '').split('.');\n const camelCaseKey = camelCase(key);\n const isActiveViewtypeModifier = modifiers.includes(activeViewtype);\n const isViewtypeModifier = isViewtypeModifiers(<shortViewtypes[]>modifiers);\n const isConfigNotExist = typeof config[camelCaseKey] === 'undefined';\n\n // If modifiers has activeViewtype that we definitely need set it to config, even if we already have value in config (most probable there can be only default value set)\n // If not check if it is default value (not have modifiers) and if value was not previosly set by attribute with modifiers then we will set default value to config\n if (isActiveViewtypeModifier || (!isViewtypeModifier && isConfigNotExist)) {\n config[camelCaseKey] = getData(domNode.getAttribute(attrName));\n }\n }\n });\n\n const jsonConfig = domNode.getAttribute('data-json-config');\n\n if (jsonConfig) {\n try {\n const parsedConfig = JSON.parse(jsonConfig);\n\n return { ...config, ...parsedConfig };\n } catch (error) {\n throw new Error(`Invalid json config for widget ${domNode} ${error}`);\n }\n }\n\n return config;\n}\n\n/**\n * @description detach/attach widgets to elements by name\n * @param {HTMLElement|null} el root element for re-initialization widgets\n * @param {string[]} widgetsListNames - widgets list\n */\nfunction reinitElementByWidgetsNamesList(\n el: HTMLElement | null = document.head.parentElement,\n widgetsListNames: string[] = []\n): void {\n if (!el) {\n return;\n }\n\n const widgetName = el && el.getAttribute(DATA_WIDGET);\n\n if ((widgetName && widgetsListNames.includes(widgetName)) || isViewtypeRelatedWidget(el)) {\n detachElement(el);\n attachElements(el);\n\n return;\n }\n\n if (!el.children) {\n return;\n }\n\n // recursion\n // disposable not view type events\n // assign view type events\n const attrs = el.getAttributeNames().filter(name => name.startsWith(WIDGET_DOM_EVENT_PREFIX));\n const reloadEvents = attrs.some(attr => {\n const [, ...modifiers] = <[x: unknown, ...m: shortViewtypes[]]>attr.replace(WIDGET_DOM_EVENT_PREFIX, '').split('.');\n\n return modifiers.some(mod => ALL_VIEW_TYPES.includes(mod));\n });\n\n if (reloadEvents) {\n const parentWidget = el[WIDGET_PROP_NAME] || findParentWidget(el);\n const disposableValues = el[WIDGET_DISPOSABLE_VALUES];\n\n if (disposableValues) {\n el[WIDGET_DISPOSABLE_VALUES] = disposableValues.filter((dispose) => {\n if (dispose.eventName) {\n // Dispose only events\n dispose();\n\n return false;\n }\n\n return true;\n });\n }\n\n attrs.forEach(attachEventToElement(el, parentWidget));\n }\n\n Array.from(el.children).forEach(child => {\n reinitElementByWidgetsNamesList(<HTMLElement> child, widgetsListNames);\n });\n}\n\nconst rootWidget = new RootWidget(document.head.parentElement, {});\nconst widgetsInitMetric: {[widgetName: string]: number} = Object.create(null);\nlet initialized = false;\n\n/**\n * @description Widget Mixin Function\n */\ntype MixinFunction<T = typeof Widget> = (base: never) => T;\n\n/**\n * @description Widget Definition Config contain Mixin function and parent widget name (if exist)\n */\ntype WidgetDefinitionConfig = [MixinFunction, string|undefined];\n\n/**\n * @description Simple Widget Registry record\n */\ntype SimpleWidgetRegistry = [string, MixinFunction];\n\n/**\n * @description Simple Widget Registry record\n */\ntype ExtendedWidgetRegistry = [string, MixinFunction, string];\n\n/**\n * @description Widget Registry record\n */\ntype WidgetRegistryRecord = SimpleWidgetRegistry | ExtendedWidgetRegistry;\n\n/**\n * @description Async widget list\n */\ntype AsyncList = {\n getLoadingFlag: () => boolean,\n load: () => Promise<{ listId: string, widgetsDefinition: () => Array<WidgetRegistryRecord> }>,\n loaded?: boolean\n};\n\n/**\n * @category widgets\n * @subcategory framework\n */\nclass WidgetMgr {\n /**\n * @description Map of widgets configurations in format: `widgetId: [widgetFunction, dependencyWidgetId]\n */\n widgets: {[key : string] : WidgetDefinitionConfig | undefined} = Object.create(null);\n\n /**\n * @description Map of widgets list generators in format `listId: generatorFunction`\n * Generator function return widgets list\n */\n widgetsLists: {[key : string] : () => Array<WidgetRegistryRecord>} = Object.create(null);\n\n /**\n * @description Array of registered widgets lists IDs\n */\n widgetsListsNameSpaceOrder: string[] = [];\n\n /**\n * @description Map of cached widgets classes in format `widgetId: returnsClassFunction`\n */\n widgetsClassCache: {[key : string] : typeof Widget|undefined} = Object.create(null);\n\n /**\n * @description Async list contain widget definition that loaded asynchronously\n */\n asyncLists: Array<AsyncList> = [];\n\n hashRegistry: { [key: string]: string[] | undefined; } = Object.create(null);\n\n /**\n * @description Timestamp for widgets evaluate\n */\n timeOfEvaluate: number;\n\n /**\n * @description Timestamp for widgets run\n */\n timeOfRun: number;\n\n /**\n * @description Timestamp for widgets init\n */\n timeOfInit: number;\n\n /**\n * @description Flag that indicate if widget start getting using method `get`.\n * If getting started and some code try to register more widgets it cause warning.\n */\n getting = false;\n\n /**\n * @description Flag that indicate if dom loaded before widget initialization\n */\n hasDomLoadedFirst = false;\n\n constructor() {\n this.timeOfEvaluate = Date.now();\n this.timeOfRun = Date.now();\n this.timeOfInit = Date.now();\n this.widgets.widget = [() => Widget, ''];\n\n initViewType();\n eventBus.on('context.add', (contextId) => {\n window.contexts.push(contextId);\n this.run(contextId);\n });\n }\n\n /**\n * @description When DOM is ready, the method starts registering widgets, for each assigned widgets list, and executes WidgetMgr.init()\n * @param [contextId] Id of context to be added\n */\n run(contextId?: string) {\n const asyncListPromises = this.asyncLists.filter(list => !list.loaded).filter(list => list.getLoadingFlag()).map(list => {\n list.loaded = true;\n\n return list.load();\n });\n\n Promise.all(asyncListPromises).then((asyncLists) => {\n asyncLists.forEach(({ listId, widgetsDefinition }) => this.addWidgetsList(listId, widgetsDefinition));\n\n if (contextId) {\n asyncLists.forEach(asyncList => {\n this.registerWidgetsList(asyncList.listId);\n });\n document.querySelectorAll(`[data-context=\"${contextId}\"]`).forEach(el => {\n el.removeAttribute('data-context');\n\n if (el instanceof HTMLElement) {\n attachElements(el);\n }\n });\n\n return;\n }\n\n this.widgetsListsNameSpaceOrder.forEach(this.registerWidgetsList, this);\n this.timeOfRun = Date.now();\n\n // Init widgets once DOM is ready\n if (document.readyState === 'loading') {\n this.hasDomLoadedFirst = false;\n document.addEventListener('DOMContentLoaded', () => {\n setTimeout(() => this.init(), 0);\n }, { once: true });\n } else {\n this.hasDomLoadedFirst = true;\n this.init();\n }\n });\n }\n\n /**\n * @description Returns all registered widgets.\n * @returns all widgets\n */\n getAll(): WidgetMgr['widgets'] {\n return this.widgets;\n }\n\n /**\n * @description Returns registered widget by name.\n * @param [name] Name of registered widget (used as data-widget=\"<name>\" in DOM)\n * @returns return widget class by name\n */\n get(name?: string): typeof Widget {\n if (name) {\n this.getting = true;\n const cachedClass = this.widgetsClassCache[name];\n\n if (cachedClass) {\n return cachedClass;\n }\n\n const widgetsConfig = this.widgets[name];\n\n if (widgetsConfig) {\n const [getWidgetClass, baseWidget] = widgetsConfig;\n const widgetClass = getWidgetClass(<never> this.get(baseWidget));\n\n this.widgetsClassCache[name] = widgetClass;\n\n return widgetClass;\n }\n }\n\n return Widget;\n }\n\n /**\n * @description add widget by name into registry\n * @param name of widget in registry\n * @param widget definition configuration to set\n * @returns widget return set widget config\n */\n set(name: string, widget: WidgetDefinitionConfig): WidgetDefinitionConfig {\n this.widgets[name] = widget;\n\n return widget;\n }\n\n /**\n * @description Add widgets list into registry\n * @param nameSpace - name of widgets list\n * @param cb - function that returns widget list\n */\n addWidgetsList(nameSpace: string, cb: () => Array<WidgetRegistryRecord>) {\n if (!this.widgetsListsNameSpaceOrder.includes(nameSpace)) {\n this.widgetsListsNameSpaceOrder.push(nameSpace);\n }\n\n if (!PRODUCTION && this.widgetsLists[nameSpace]) {\n console.error(`Widget List with listId \"${nameSpace}\" already exist. listId should be unique!`);\n }\n\n this.widgetsLists[nameSpace] = cb;\n }\n\n /**\n * @description Register all widgets from widgets list by name space\n * @param nameSpace - widgets list name space\n */\n registerWidgetsList(nameSpace: string): void {\n if (!PRODUCTION) {\n // eslint-disable-next-line no-console\n console.groupCollapsed(`${nameSpace} widgets registration`);\n }\n\n this.widgetsLists[nameSpace]().forEach(args => this.register(args[0], args[1], args[2]));\n\n if (!PRODUCTION) {\n // eslint-disable-next-line no-console\n console.groupEnd();\n }\n }\n\n /**\n * @description set hash to registry by widget name with widget dependency\n * @param hashRegistry registry object\n * @param name widget in hashRegistry\n * @param baseWidget name of base widget\n */\n setHash(hashRegistry: WidgetMgr['hashRegistry'], name: string, baseWidget = '') {\n if (!hashRegistry[name]) {\n hashRegistry[name] = [name];\n }\n\n const currentHash = hashRegistry[name];\n\n if (baseWidget && currentHash) {\n currentHash.push(baseWidget);\n }\n }\n\n /**\n * @description get widget hash from registry by name\n * @param hashRegistry registry object\n * @param name widget in hashRegistry\n * @returns hash for widget\n */\n getHash(hashRegistry: WidgetMgr['hashRegistry'], name: string): string {\n return (hashRegistry[name] || []).reduce((currentWidget, baseWidget) => {\n let hash;\n\n if (name === baseWidget) {\n hash = baseWidget;\n } else {\n hash = this.getHash(hashRegistry, baseWidget);\n }\n\n return currentWidget + hash;\n });\n }\n\n /**\n * @description add widget into registry\n * @param name name of widget (will be used in `data-widget=\"name\"`)\n * @param widgetConstructor function mixin that returns class\n * @param [baseWidget] base widget to extend\n * @returns {void}\n */\n register(name: string, widgetConstructor: MixinFunction, baseWidget?: string): void {\n if (!PRODUCTION && this.getting) {\n log.warn('register widget after getting');\n }\n\n const widgetConfig = this.widgets[name];\n\n if (widgetConfig && baseWidget === name) {\n const [superWidgetConstructor, superBaseWidget] = widgetConfig;\n\n this.set(name, [base => widgetConstructor(<never> superWidgetConstructor(base)), superBaseWidget]);\n } else {\n this.set(name, [widgetConstructor, baseWidget]);\n }\n\n this.setHash(this.hashRegistry, name, baseWidget);\n }\n\n /**\n * @description Returns list of widgets changed during 'viewtype.change' event\n * @returns widgets that was changed due to viewport change\n */\n getChangedWidgets(): Array<WidgetRegistryRecord> {\n const emptyArray: Array<WidgetRegistryRecord> = [];\n const newRegistry = this.widgetsListsNameSpaceOrder\n .map(ns => this.widgetsLists[ns]())\n .reduce((prev, nsList) => [...prev, ...nsList], emptyArray);\n\n // find extendable widgets\n const newHash: WidgetMgr['hashRegistry'] = Object.create(null);\n\n newRegistry.forEach(([widgetName, , baseName]) => this.setHash(newHash, widgetName, baseName));\n\n const changedWidgets = newRegistry\n .filter(([widgetName]) => this.getHash(newHash, widgetName) !== this.getHash(this.hashRegistry, widgetName));\n\n return changedWidgets;\n }\n\n /**\n * @description Re-init widgets changed during 'viewtype.change' event and re-assign viewtype related events\n */\n updateMutableComponents(): void {\n const changedWidgets = this.getChangedWidgets();\n\n if (!changedWidgets.length) {\n reinitElementByWidgetsNamesList();\n\n return;\n }\n\n const widgetsNames = changedWidgets.map(w => w[0]);\n\n this.getting = false;\n // remove definitions\n changedWidgets.forEach(([name]) => {\n this.hashRegistry[name] = undefined;\n this.widgets[name] = undefined;\n this.widgetsClassCache[name] = undefined;\n });\n // register again\n changedWidgets.forEach(args => this.register(args[0], args[1], args[2]));\n reinitElementByWidgetsNamesList(document.head.parentElement, widgetsNames);\n }\n\n /**\n * @description Destroy all widgets/events and construct them again. Needed for webpack HMR during change code for any widget\n * @param el - root element from which start restart of widgets\n */\n restartWidgets(el: HTMLElement | null = document.head.parentElement) {\n if (el) {\n detachElement(el);\n this.getting = false;\n this.hashRegistry = {};\n this.widgets = {};\n this.widgetsClassCache = {};\n this.widgetsListsNameSpaceOrder.forEach(this.registerWidgetsList, this);\n attachElements(el);\n }\n }\n\n /**\n * @description destroy widget or refElement, run disposable for events for element\n * @param el element for processing attributes\n * @param diff diffDom internal object of changes\n */\n removeAttribute(el: HTMLElement, diff: diffDOM.Diff): void {\n if (diff.name === DATA_REF) {\n el[WIDGET_DISPOSABLE_VALUES] = (el[WIDGET_DISPOSABLE_VALUES] || []).filter(disposable => {\n if (disposable.attrName === 'ref') {\n disposable();\n\n return false;\n }\n\n return true;\n });\n } else if (DATA_WIDGET === diff.name || diff.name.startsWith(DATA_WIDGET_VIEWTYPE_RELATED)) {\n detachElement(el);\n } else if (diff.name.startsWith(WIDGET_DOM_EVENT_PREFIX)) {\n const name = diff.name.replace(WIDGET_DOM_EVENT_PREFIX, '').split('.')[0];\n const value = diff.value || diff.oldValue;\n\n el[WIDGET_DISPOSABLE_VALUES] = (el[WIDGET_DISPOSABLE_VALUES] || []).filter(disposable => {\n if (disposable.eventName === name && disposable.methodToCall === value) {\n disposable();\n\n return false;\n }\n\n return true;\n });\n } else if (el[WIDGET_PROP_NAME]) {\n handleWidgetPropertyChange(el, diff);\n }\n }\n\n /**\n * @description Create widget or refElement, assign events for element\n * @param el element for processing attributes\n * @param diff diffDom internal object of changes\n */\n addAttribute(el: HTMLElement, diff: diffDOM.Diff): void {\n if (diff.name === DATA_REF) {\n const widget = el[WIDGET_PROP_NAME] || findParentWidget(el);\n\n if (widget && widget.refs) {\n const refEl = new RefElement([el]);\n\n widget.refs[diff.value || diff.newValue] = refEl;\n disposableForParent(el, widget, refEl, diff.value || diff.newValue);\n }\n } else if (DATA_WIDGET === diff.name || diff.name.startsWith(DATA_WIDGET_VIEWTYPE_RELATED)) {\n attachElements(el);\n } else if (diff.name.startsWith(WIDGET_DOM_EVENT_PREFIX)) {\n attachEventToElement(el, el[WIDGET_PROP_NAME] || findParentWidget(el))(diff.name);\n } else if (el[WIDGET_PROP_NAME]) {\n const widget = el[WIDGET_PROP_NAME];\n\n if (widget && diff.name !== DATA_INITIALIZED) {\n widget.config = getWidgetConfig(el);\n }\n }\n }\n\n /**\n * @description Attaching widget to DOM elements from parent to child recursively, by Widgets.attachElements(element)\n * Initialize mutation observer\n */\n init() {\n if (!PRODUCTION) {\n this.timeOfInit = Date.now();\n // log.profile('Initialization widgets');\n }\n\n if (!document.head.parentElement) {\n throw Error('No document');\n }\n\n const observer = new MutationObserver(mutations => mutations.forEach((mutation) => {\n this.handleMutations(mutation);\n }));\n\n observer.observe(document.body, {\n attributes: false,\n characterData: false,\n childList: true,\n // eslint-disable-next-line spellcheck/spell-checker\n subtree: true\n });\n\n attachElements(document.head.parentElement);\n\n eventBus.on('viewtype.change', () => this.updateMutableComponents());\n\n if (!PRODUCTION) {\n const total = Date.now() - window.headInitTime;\n const timeInitWidgets = Date.now() - this.timeOfInit;\n const timeToRegisterWidgets = this.timeOfRun - this.timeOfEvaluate;\n const loadAndScriptingTime = this.timeOfEvaluate - window.headInitTime;\n\n let waitToDomLoaded = 0;\n\n waitToDomLoaded = this.hasDomLoadedFirst ? (window.domReadyTime - this.timeOfInit) : this.timeOfInit - this.timeOfRun;\n\n const headToDomReady = (window.domReadyTime || this.timeOfRun) - window.headInitTime;\n\n log.table({\n headToDomReady: {\n ms: headToDomReady,\n percentage: 0\n },\n loadAndScriptingTime: {\n ms: loadAndScriptingTime,\n percentage: Math.round((loadAndScriptingTime / total) * 100)\n },\n registerWidgetsTime: {\n ms: timeToRegisterWidgets,\n percentage: Math.round((timeToRegisterWidgets / total) * 100)\n },\n waitToDomLoaded: {\n ms: waitToDomLoaded,\n percentage: waitToDomLoaded > 0 ? Math.round((waitToDomLoaded / total) * 100) : 0\n },\n initWidgetsTime: {\n ms: timeInitWidgets,\n percentage: Math.round((timeInitWidgets / total) * 100)\n },\n total: {\n ms: total,\n percentage: Math.round(100)\n }\n });\n\n if (timeToRegisterWidgets > 50) {\n log.warn('High time of widgets registration');\n }\n\n if (timeInitWidgets > 50) {\n log.warn('High time of widgets initialization');\n }\n\n widgetsInitMetric.total = Object.values(widgetsInitMetric).reduce((a, b) => a + b, 0);\n log.groupCollapsed('Widgets initialization time (init method)');\n log.table(widgetsInitMetric);\n log.groupEnd();\n }\n\n // CLARIFY: What is magic timeout for 500 ms?\n setTimeout(() => { initialized = true; }, 500);\n }\n\n /**\n * @description mutations handler for MutationObserver\n * @param mutation record of MutationObserver\n */\n handleMutations(mutation: MutationRecord): void {\n const { addedNodes, removedNodes } = mutation;\n\n removedNodes.forEach(removedNode => {\n if (removedNode.nodeType === removedNode.ELEMENT_NODE) {\n detachElement(<HTMLElement>removedNode);\n }\n });\n addedNodes.forEach(addedNode => {\n if (addedNode.nodeType === addedNode.ELEMENT_NODE && document.body.contains(addedNode)) {\n attachElements(<HTMLElement>addedNode);\n }\n });\n }\n}\n\nconst widgetsMgr = new WidgetMgr();\n\n// Matches dashed string for camel case\nconst rmsPrefix = /^-ms-/;\n// eslint-disable-next-line spellcheck/spell-checker\nconst rdashAlpha = /-([a-z])/g;\n\n/**\n * @description handler for Widget.onRefresh() lifecycle hook\n * @param el element for processing attributes\n * @param diff diffDom internal object of changes\n */\nfunction handleWidgetPropertyChange(el: HTMLElement, diff: diffDOM.Diff): void {\n const widget = el[WIDGET_PROP_NAME];\n\n if (widget) {\n if (diff.name === DATA_INITIALIZED) {\n if (!widget.isRefreshingWidget) {\n widget.isRefreshingWidget = true;\n widget.onRefresh();\n widget.isRefreshingWidget = false;\n }\n\n el.setAttribute(DATA_INITIALIZED, '1');\n } else {\n widget.config = getWidgetConfig(el);\n }\n }\n}\n\n/**\n * @description Convert dashed to camelCase; used by the css and data modules\n * @param string String to convert\n * @returns Converted string\n */\nfunction camelCase(string: string): string {\n // eslint-disable-next-line spellcheck/spell-checker\n return string.replace(rmsPrefix, 'ms-').replace(rdashAlpha, (_all, letter) => letter.toUpperCase());\n}\n\n/**\n * @description Create callback that will attach DOM events to element through `attachEventToWidget` using data-event- attributes\n * @param el DOM element\n * @param widgetInstance Widget instance\n * @returns callback\n */\nfunction attachEventToElement(el: HTMLElement, widgetInstance: Widget): (attr: string) => void {\n return attr => {\n const [attrName, ...modifiers] = attr.replace(WIDGET_DOM_EVENT_PREFIX, '').split('.');\n const attrValue = el.getAttribute(attr) || '@';\n\n if (!PRODUCTION && modifiers.length && ALL_VIEW_TYPES.every(m => modifiers.includes(m))) {\n log.error(\n `you shouldn't use ${WIDGET_DOM_EVENT_PREFIX}eventName.${ALL_VIEW_TYPES.join('.')}`\n + 'use it without modifiers'\n );\n }\n\n if (isViewtypeModifiers(<shortViewtypes[]>modifiers) && !modifiers.includes(getActiveViewtypeName())) {\n return;\n }\n\n if (typeof widgetInstance[attrValue] === 'function') {\n attachEventToWidget(modifiers, widgetInstance, attrName, attrValue, el);\n } else {\n log.error('Widget \"' + widgetInstance.constructor.name\n + '\" don\\'t have method \"' + attrValue\n + '\". Unable to assign event', { el });\n }\n };\n}\n\n/**\n * @description Attach DOM events to widget instance specified in data-event- attributes\n * @param modifiers Event modifiers\n * @param widgetInstance Widget for event assignment\n * @param eventName DOM event\n * @param methodToCall widget method to call\n * @param el Widget self element to store disposables\n */\nfunction attachEventToWidget(\n modifiers: string[],\n widgetInstance: Widget,\n eventName: string,\n methodToCall: string,\n el: HTMLElement\n) {\n let disposableValues = el[WIDGET_DISPOSABLE_VALUES] || [];\n\n const prevent = modifiers.includes('prevent');\n const stop = modifiers.includes('stop');\n const once = modifiers.includes('once');\n const self = modifiers.includes('self');\n\n disposableValues = disposableValues.filter((disposable) => {\n // If such event already exist need to remove it before attaching new event\n if (disposable.eventName === eventName && disposable.methodToCall === methodToCall && disposable.el === el) {\n disposable();\n\n return false;\n }\n\n return true;\n });\n\n let disposables = <DisposableFunction[]> widgetInstance.ev(eventName, function eventHandler(this: Widget, element, event) {\n if (prevent) {\n event.preventDefault();\n }\n\n if (stop) {\n event.stopPropagation();\n }\n\n if (once && disposables) {\n disposables.forEach(disposable => disposable());\n }\n\n if (event.currentTarget !== event.target && self) {\n return;\n }\n\n const target = Object.values(widgetInstance.refs || {})\n .find((refEl) => Boolean(refEl && refEl instanceof RefElement && refEl.get() === element))\n || new RefElement([element]);\n\n widgetInstance[methodToCall].call(this, target, event);\n }, el, modifiers.includes('passive'));\n\n disposables = disposables.map((disposable) => {\n disposable.methodToCall = methodToCall;\n disposable.el = el;\n\n return disposable;\n });\n\n // register events to remove once removed from DOM\n disposableValues.push(...disposables);\n el[WIDGET_DISPOSABLE_VALUES] = disposableValues;\n}\n\nconst noop = () => undefined;\nconst getConstructor: Widget['getConstructor'] = (name) => widgetsMgr.get(name);\n\n/**\n * @description Create widget instance, assign it to parent, assign widget events\n * @param domNode element of widget\n * @returns Instance of initialized widget\n */\nfunction initWidget(domNode: HTMLElement): InstanceType<typeof Widget> {\n let currentWidget: Widget;\n const registeredWidgets = widgetsMgr.getAll();\n const instance: Widget | undefined = domNode[WIDGET_PROP_NAME];\n let widgetName = domNode.getAttribute(DATA_WIDGET) || getViewtypeRelatedWidgetName(domNode);\n\n if (!widgetName) {\n if (PRODUCTION) {\n // eslint-disable-next-line no-console\n console.error('Empty widget name on node:', domNode);\n } else {\n throw Error('Empty widget name');\n }\n\n widgetName = 'widget';\n }\n\n if (instance && instance.refs && instance.refs.self) {\n currentWidget = instance;\n } else {\n if (!registeredWidgets[widgetName]) {\n if (PRODUCTION) {\n // eslint-disable-next-line no-console\n console.error(`Widget \"${widgetName}\" is not found in registry on dom node:`, domNode);\n // Fallback to basic widget in case we found widget that not exist in registry\n widgetName = 'widget';\n } else {\n throw Error(`Widget \"${widgetName}\" is not found in registry`);\n }\n }\n\n currentWidget = new (widgetsMgr.get(widgetName))(domNode, getWidgetConfig(domNode));\n }\n\n domNode[WIDGET_PROP_NAME] = currentWidget;\n\n if (!instance) {\n addRelationships(currentWidget, domNode);\n\n return currentWidget;\n }\n\n return instance;\n}\n\n/**\n * @description Add relationships between current widget and his parents\n * @param currentWidget current widget instance\n * @param domNode element of widget\n */\nfunction addRelationships(currentWidget: Widget, domNode: HTMLElement): void {\n const parentWidget = findParentWidget(domNode);\n\n if (parentWidget.items) {\n linkCurrentToParent(parentWidget, currentWidget);\n }\n\n if (currentWidget.refs && rootWidget.refs) {\n currentWidget.refs.html = rootWidget.refs.self;\n }\n\n currentWidget.parentHandler = noop;\n currentWidget.getConstructor = getConstructor;\n prepareWidgetAttributes(domNode, currentWidget, parentWidget);\n // currentWidget.parentHandler = parentWidget.eventHandler.bind(parentWidget);\n}\n\n/**\n * @description assign current widget into parent for parent->child structure\n * @param parentWidget parent widget instance\n * @param currentWidget current widget instance\n */\nfunction linkCurrentToParent(parentWidget: Widget, currentWidget: Widget): void {\n if (parentWidget && currentWidget) {\n if (parentWidget.items) {\n parentWidget.items.push(currentWidget);\n currentWidget.onDestroy(() => {\n if (parentWidget.items) {\n const idx = parentWidget.items.indexOf(currentWidget);\n\n if (idx > -1) {\n parentWidget.items.splice(idx, 1);\n }\n }\n });\n }\n }\n}\n\n/**\n * @description assign widget events to parent handlers\n * @param domNode HTML Element of widget\n * @param currentWidget current widget instance\n * @param parentWidget parent widget instance\n */\nfunction prepareWidgetAttributes(\n domNode: HTMLElement,\n currentWidget: InstanceType<typeof Widget>,\n parentWidget: InstanceType<typeof Widget>\n): void {\n const forwardToParent = domNode.getAttribute('data-forward-to-parent');\n\n if (forwardToParent) {\n forwardToParent.split(':').forEach(pair => {\n const [methodName, parentWidgetMethodName] = pair.split('-');\n\n currentWidget[methodName] = (...args: unknown[]) => {\n parentWidget[parentWidgetMethodName || methodName].call(parentWidget, ...args);\n };\n });\n }\n\n const attrs = domNode.getAttributeNames().filter(name => name.startsWith(WIDGET_EVENT_PREFIX));\n\n if (!attrs) {\n return;\n }\n\n attrs.forEach(attr => {\n const [attrName, ...modifiers] = attr.replace(WIDGET_EVENT_PREFIX, '').split('.');\n\n if (isViewtypeModifiers(<shortViewtypes[]>modifiers) && !modifiers.includes(getActiveViewtypeName())) {\n return;\n }\n\n const attrValue = domNode.getAttribute(attr);\n const prevHandler = currentWidget.parentHandler;\n\n if (attrValue && typeof parentWidget[attrValue] === 'function') {\n currentWidget.parentHandler = (name, ...args) => {\n prevHandler(name, ...args);\n\n if (name === attrName && typeof parentWidget[attrValue] === 'function') {\n parentWidget[attrValue].call(parentWidget, ...args);\n }\n };\n } else {\n log.error(`Widget \"${parentWidget.constructor.name}\" don't have method \"${attrValue}\"`);\n }\n });\n}\n\n/**\n * @description Recursive widgets creation and events assignment for HTML Element\n * @param element top element as entry point to start recursion\n */\nfunction attachElements(element: HTMLElement): void {\n let widgetInstance: Widget | undefined;\n\n if (isWidget(element) && !element[WIDGET_PROP_NAME]) {\n widgetInstance = initWidget(element);\n }\n\n const ref = element.getAttribute(DATA_REF);\n let parentWidget: Widget | null = null;\n\n if (ref) {\n parentWidget = element[WIDGET_PROP_NAME] || findParentWidget(element);\n\n if (parentWidget.refs) {\n const refEl = new RefElement([element]);\n\n parentWidget.refs[ref] = refEl;\n // here we will listen for the event of removal parent widget\n disposableForParent(element, parentWidget, refEl, ref);\n }\n }\n\n const attrs = element.getAttributeNames().filter(name => name.startsWith(WIDGET_DOM_EVENT_PREFIX));\n\n if (attrs.length) {\n parentWidget = parentWidget || element[WIDGET_PROP_NAME] || findParentWidget(element);\n attrs.forEach(attachEventToElement(element, parentWidget));\n }\n\n if (!element.hasAttribute('data-context')) {\n let child = element.firstElementChild;\n\n while (child) {\n attachElements(<HTMLElement>child);\n child = child.nextElementSibling;\n }\n }\n\n if (!widgetInstance) {\n return;\n }\n\n const startTime = Date.now();\n\n widgetInstance.init();\n element.setAttribute(DATA_INITIALIZED, '1');\n\n addWidgetMetricData(element, startTime);\n}\n\n/**\n * @description Add widget metric data for non-production instance\n * @param element Widget element\n * @param startTime Widget initialization start time\n */\nfunction addWidgetMetricData(element: HTMLElement, startTime: number): void {\n if (!PRODUCTION) {\n const widgetName = element.getAttribute(DATA_WIDGET) || getViewtypeRelatedWidgetName(element);\n\n if (widgetName) {\n widgetsInitMetric[widgetName] = (widgetsInitMetric[widgetName] || 0) + (Date.now() - startTime);\n }\n }\n}\n\n/**\n * @description Listener for the event of removal parent widget\n * @param element Element to listen\n * @param parentWidget Parent widget\n * @param refEl linked ref element\n * @param ref RefElement id\n */\nfunction disposableForParent(element: HTMLElement, parentWidget: Widget, refEl: RefElement, ref: string): void {\n if (!element[WIDGET_DISPOSABLE_VALUES]) {\n element[WIDGET_DISPOSABLE_VALUES] = [];\n }\n\n const disposableValues = element[WIDGET_DISPOSABLE_VALUES];\n\n if (disposableValues) {\n const dispose: DisposableFunction = () => {\n // remove reference if element is removed from DOM ref points to the same element\n if (parentWidget && parentWidget.refs && refEl === parentWidget.refs[ref]) {\n delete parentWidget.refs[ref];\n }\n };\n\n dispose.attrName = 'ref';\n disposableValues.push(dispose);\n }\n}\n\n/**\n * @description find parent widget by HTML Element\n * @param el entry point for searching\n * @returns parent widget\n */\nfunction findParentWidget(el: HTMLElement): Widget {\n let parent: HTMLElement | null = el.parentElement;\n\n while (parent) {\n const widgetName = parent.getAttribute(DATA_WIDGET) || getViewtypeRelatedWidgetName(parent);\n\n if (widgetName) {\n break;\n } else {\n parent = parent.parentElement;\n }\n }\n\n return (parent && parent[WIDGET_PROP_NAME]) || rootWidget;\n}\n\n/**\n * @description Destroy widgets, run disposables for element and elements inside\n * @param el top element for recursive procession\n */\nfunction detachElement(el: HTMLElement): void {\n const disposableValues = el[WIDGET_DISPOSABLE_VALUES];\n\n if (disposableValues) {\n disposableValues.forEach((dispose) => dispose());\n el[WIDGET_DISPOSABLE_VALUES] = undefined;\n }\n\n const currentWidget = el[WIDGET_PROP_NAME];\n\n if (currentWidget) {\n currentWidget.destroy();\n el[WIDGET_PROP_NAME] = undefined;\n\n if (!PRODUCTION && !initialized) {\n log.warn('Destroying widget before initialization is complete or right after init complete', el);\n }\n }\n\n let child = el.firstElementChild;\n\n while (child) {\n detachElement(<HTMLElement>child);\n child = child.nextElementSibling;\n }\n}\n\n/**\n * @description tool for visualization widgets and put widget object into console by click. just call it in your console and look\n */\nwindow.initToolkit = (): Promise<void> => import(/* webpackChunkName: 'toolkit' */ 'widgets/widgetsToolkit')\n .then(widgetsToolkit => widgetsToolkit.initToolkit(widgetsMgr));\n\nexport default widgetsMgr;\n","/* eslint-disable max-len, indent, sonarjs/no-duplicate-string */\n/* sonar-ignore-start */\nconst hasContext = (ctx) => window.contexts.includes(ctx);\n\nimport widgetsMgr from 'widgets/widgetsMgr';\nimport GlobalECountrySelector from './widgets/global/GlobalECountrySelector';\n\nwidgetsMgr.addWidgetsList('global.globale', () => [\n ['globalECountrySelector', GlobalECountrySelector]\n\n]);\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('checkout'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'checkout.widgets' */ './widgets/checkout/GlobalEIFrame').then(d => d.default)]).then(deps => {\n const [\n GlobalEIFrame\n ] = deps;\n\n return {\n listId: 'checkout.globale',\n widgetsDefinition: () => [\n ['globalEIFrame', GlobalEIFrame]\n ]\n };\n })\n});\n\n/* sonar-ignore-end */\n","/**\n * @typedef {typeof import('widgets/Widget').default} Widget\n */\n\n/**\n * @param {Widget} Widget Base widget for extending\n * @returns {typeof GlobalECountrySelector} GlobalECountrySelector\n */\n\nexport default function (Widget) {\n class GlobalECountrySelector extends Widget {\n prefs() {\n return {\n rootMargin: '500px',\n classesInit: 'm-init',\n ...super.prefs()\n };\n }\n\n init() {\n super.init();\n this.observe();\n import(/* webpackChunkName: 'gle-script-loader' */ '../../legacy/globaleScriptLoader')\n .then(() => this.initGlobalECountrySelector());\n }\n\n /**\n * @description Initialise Global-E country switcher\n * @returns {void}\n */\n initGlobalECountrySelector() {\n import(/* webpackChunkName: 'gle-country-selector' */ '../../legacy/globaleCountrySwitcher');\n }\n\n observe() {\n let observer = new IntersectionObserver(([entry]) => {\n if (entry.isIntersecting) {\n this.ref('self').addClass(this.prefs().classesInit);\n observer.disconnect();\n }\n }, {\n threshold: 1,\n rootMargin: this.prefs().rootMargin\n });\n\n observer.observe(this.ref('self').get());\n\n this.onDestroy(() => {\n observer.disconnect();\n });\n }\n }\n\n return GlobalECountrySelector;\n}\n","import { pageProperties, report } from './utils/base';\nimport { init as initEvents } from './components/events';\nimport { reportProductImpressions, reportPromoImpressions } from './components/impressions';\nimport { getActiveViewtypeName } from 'widgets/toolbox/viewtype';\nimport { getJSONByUrl } from 'widgets/toolbox/ajax';\n\nlet pageType;\n\n/**\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} refElement\n */\n/**\n * @description clientGTM\n * @module clientGTM\n * @category widgets\n * @subcategory gtm\n */\n\n/**\n * @description Add full page and user info on page loading\n * @returns {void}\n */\nfunction reportBasketLoadDetails() {\n const selector = document.getElementById('gtmBasketLoadDetails');\n\n if (selector) {\n const getBasketLoadDataUrl = selector.getAttribute('data-get-basket-load-data-url');\n\n if (getBasketLoadDataUrl) {\n getJSONByUrl(getBasketLoadDataUrl).then(response => {\n if (response && response.analyticsOnBasketLoadDetails) {\n const basketLoadDetails = {\n event: 'basketLoad',\n basket: Object.assign({ context: 'page_load' }, response.analyticsOnBasketLoadDetails)\n };\n\n report(basketLoadDetails);\n }\n });\n }\n }\n}\n\n/**\n * @description Add subscription data on page loading\n * @returns {void}\n */\nfunction reportSubscriptionDetails() {\n const selector = document.getElementById('gtmSubscriptionData');\n\n if (selector) {\n // @ts-expect-error Argument of type 'string | null' is not assignable to parameter of type 'string'.\n const subscriptionData = JSON.parse(selector.getAttribute('data-value'));\n const accountSubscriptionType = selector.getAttribute('data-type-account');\n const event :any = { event: 'data-layer-event', eventCategory: 'Key interactions' };\n\n if (accountSubscriptionType === 'true') {\n event.eventAction = 'Account Activation';\n } else {\n event.eventAction = 'Newsletter signup';\n }\n\n Object.assign(event, subscriptionData);\n\n report(event);\n }\n}\n\n/**\n * @description Add full page and user info on page loading\n * @returns {void}\n */\nfunction reportPageLoadDetails() {\n const selector = document.getElementById('gtmPageLoadDetails');\n\n if (selector) {\n // @ts-expect-error Argument of type 'string | null' is not assignable to parameter of type 'string'.\n const onLoadPageDetails = JSON.parse(selector.getAttribute('data-value'));\n const viewTypesMap = {\n sm: 'small',\n md: 'medium',\n lg: 'large',\n xl: 'x-large'\n };\n const viewType = getActiveViewtypeName();\n\n onLoadPageDetails.event = 'pageLoad';\n onLoadPageDetails.designSize = viewTypesMap[viewType];\n pageType = onLoadPageDetails.pageType;\n\n report(onLoadPageDetails);\n }\n}\n\n/**\n * @description Init GTM callback\n * @returns {void}\n */\nfunction init() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'gtmUserData' does not exist on type 'Win... Remove this comment to see the full error message\n if (pageProperties.currentCurrency === '' && window.gtmUserData) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'gtmUserData' does not exist on type 'Win... Remove this comment to see the full error message\n pageProperties.currentCurrency = window.gtmUserData.currencyCode;\n }\n\n initEvents();\n reportBasketLoadDetails();\n reportPageLoadDetails();\n reportSubscriptionDetails();\n reportProductImpressions();\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'gtmDelayedEvent' does not exist on type ... Remove this comment to see the full error message\n if (window.gtmDelayedEvent) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'gtmDelayedEvent' does not exist on type ... Remove this comment to see the full error message\n report(window.gtmDelayedEvent);\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'gtmDelayedEvent' does not exist on type ... Remove this comment to see the full error message\n delete window.gtmDelayedEvent;\n }\n\n reportPromoImpressions();\n}\n\n// @ts-expect-error ts-migrate(2339) FIXME: Property 'dataLayer' does not exist on type 'Windo... Remove this comment to see the full error message\nif (window.dataLayer) {\n if (document.readyState === 'loading') {\n /**\n * @description Init gtm once dom content loaded\n * @listens dom:DOMContentLoaded\n */\n document.addEventListener('DOMContentLoaded', () => {\n setTimeout(() => {\n init();\n }, 0);\n }, { once: true });\n } else {\n init();\n }\n}\n","import eventBus from 'widgets/toolbox/eventBus';\nimport { get } from 'widgets/toolbox/util';\nimport {\n trackProductClick, setTilePosition, pageProperties, report\n} from '../utils/base';\nimport {\n getWishlistImpressions, impressionsDebounce, hasBeenImpressed, reportImpression\n} from './impressions';\nimport { getActiveViewtypeName } from 'widgets/toolbox/viewtype';\nimport localStorageWrapper from 'widgets/toolbox/localStorageWrapper';\n\n/**\n * @description GTM events\n * @module events\n * @category widgets\n * @subcategory gtm/components\n */\nlet shippingMethodName = '';\nconst viewDevicesMap = {\n sm: 'Mobile',\n md: 'Tablet',\n lg: 'Desktop ',\n xl: 'Desktop '\n};\n\nconst DATA_LAYER_EVENT_LABEL = 'data-layer-event';\nconst DATA_LAYER_ANALYTICS_LABEL = 'data-analytics';\n\n/**\n * @description Add cart info on cart change\n * @private\n * @param {object} response - GTM cart details\n * @returns {void}\n */\nfunction reportOnLoadBasketDetails(response) {\n let gtmCartData = null;\n\n if (response.analyticsOnBasketLoadDetails) {\n gtmCartData = response.analyticsOnBasketLoadDetails;\n } else if (response.cartModel && response.cartModel.analyticsOnBasketLoadDetails) {\n gtmCartData = response.cartModel.analyticsOnBasketLoadDetails;\n }\n\n let context;\n\n if (response.cartModel && 'isQuantityIncreased' in response.cartModel && gtmCartData) {\n context = response.cartModel.isQuantityIncreased ? 'add_to_cart' : 'remove_from_cart';\n // @ts-expect-error TS2339: Property 'context' does not exist on type 'never'.\n gtmCartData.context = context;\n }\n\n if (gtmCartData && response.cartModel && response.cartModel.action && response.cartModel.action.includes('Cart-AddProduct')) {\n context = 'add_to_cart';\n // @ts-expect-error TS2339: Property 'context' does not exist on type 'never'.\n gtmCartData.context = context;\n }\n\n if ((gtmCartData && response.cartModel && response.cartModel.isProductRemoved) || response.isProductRemoved) {\n context = 'remove_from_cart';\n // @ts-expect-error TS2339: Property 'context' does not exist on type 'never'.\n gtmCartData.context = context;\n }\n\n if (gtmCartData) {\n report({\n basket: null\n });\n report({\n event: 'basketLoad',\n basket: gtmCartData\n });\n }\n}\n\n/**\n * @description reports add to cart events\n * @private\n * @param {object} cart - cart model\n * @param {object} widget - current widget\n * @param {Array.<object>} listOfWidgets - list of widgets\n * @param {String} subProduct - Subscription product ID\n */\nfunction reportProductAddedToCart(cart, widget, listOfWidgets, subProduct) {\n let subscriptionInfo;\n\n if (subProduct) {\n subscriptionInfo = listOfWidgets\n ? listOfWidgets.map((widgetItem) => widgetItem.data('subscriptionAnalytics'))\n : widget.currentGtmInfo || widget.data('subscriptionAnalytics');\n }\n\n const tileInfo = listOfWidgets\n ? listOfWidgets.map((widgetItem) => widgetItem.data('analytics'))\n : widget.currentGtmInfo || widget.data('analytics');\n\n if (!tileInfo) {\n return;\n }\n\n if (!tileInfo.quantity) {\n tileInfo.quantity = 1;\n }\n\n const products = [].concat(tileInfo);\n\n if (subscriptionInfo) {\n subscriptionInfo.quantity = 1;\n // @ts-expect-error ts-migrate(2345) FIXME: Argument of type 'any' is not assignable to parame... Remove this comment to see the full error message\n products.push(subscriptionInfo);\n }\n\n report({\n event: 'addToCart',\n ecommerce: {\n currencyCode: pageProperties.currentCurrency,\n add: {\n products: products\n }\n }\n });\n\n report({ ecommerce: null });\n}\n\n/**\n * @description GTM event on modal open\n * @private\n * @param {HTMLElement} el Source of event\n * @returns {void}\n */\nfunction reportDialog(el) {\n const gtmModalType = el.data && el.data('gtmEventModalType');\n\n if (gtmModalType) {\n if (gtmModalType === 'findStoreDialog') {\n report({\n event: DATA_LAYER_EVENT_LABEL,\n eventCategory: 'Store stock checker interaction',\n eventAction: 'Store stock step 1: find store',\n eventLabel: el.data('gtmEventLabel')\n });\n }\n }\n}\n\n/**\n * @description GTM event on minicart show / render\n * @param {boolean} skipEvent - align same event for show and rerender minicart\n */\nfunction reportMinicart(skipEvent) {\n if (skipEvent) {\n return;\n }\n\n const selector :any = document.getElementById('gtmMinicartBasketLoadDetails');\n let gtmBasketData :any = null;\n\n if (selector && selector.getAttribute(DATA_LAYER_ANALYTICS_LABEL)) {\n try {\n gtmBasketData = JSON.parse(selector.getAttribute(DATA_LAYER_ANALYTICS_LABEL));\n } catch (error) {\n gtmBasketData = null;\n }\n\n reportOnLoadBasketDetails({ analyticsOnBasketLoadDetails: gtmBasketData });\n }\n}\n\n/**\n * @description Init GTM events\n * @returns {void}\n */\nexport function init() {\n eventBus.on('dialogshow', reportDialog);\n\n /**\n * @description\n * @event \"navigation.click.event\"\n * @listens \"navigation.click.event\"\n * @returns {void}\n */\n eventBus.on('navigation.click.event', gtmObject => {\n if (!gtmObject.eventLabel && gtmObject.eventLabel !== '') {\n gtmObject.eventLabel = viewDevicesMap[getActiveViewtypeName()];\n }\n\n report(gtmObject);\n });\n\n /**\n * @description\n * @event \"gtm.click.event\"\n * @listens \"gtm.click.event\"\n * @returns {void}\n */\n eventBus.on('gtm.click.event', gtmObject => {\n report(gtmObject);\n });\n\n /**\n * @description\n * @event \"gtm.datalayer.event\"\n * @listens \"gtm.datalayer.event\"\n * @returns {void}\n */\n eventBus.on('gtm.datalayer.event', gtmObject => {\n report(gtmObject);\n });\n\n /**\n * @description\n * @event \"product.added.to.cart\"\n * @listens \"product.added.to.cart\"\n * @returns {void}\n */\n eventBus.on('product.added.to.cart', response => {\n reportOnLoadBasketDetails(response);\n });\n\n /**\n * @description Listen Cart changes\n * @event \"cart.updated\"\n * @listens \"cart.updated\"\n * @returns {void}\n */\n eventBus.on('cart.updated', response => {\n reportOnLoadBasketDetails(response);\n });\n\n /**\n * @description Listen Edit product in cart event\n * @event \"product.updated\"\n * @listens \"product.updated\"\n * @returns {void}\n */\n eventBus.on('product.updated', response => {\n reportOnLoadBasketDetails(response);\n });\n\n /**\n * @description Listen minicart events\n * @event \"minicart.updated\"\n * @listens \"minicart.updated\"\n * @returns {void}\n */\n eventBus.on('minicart.updated', response => {\n reportOnLoadBasketDetails(response);\n });\n\n eventBus.on('virtual.page.load', (analyticsPageData?: Record<string, any>) => {\n const basketDataSelector :any = document.getElementById('gtmVirtualBasketLoadDetails');\n let gtmBasketData :any = null;\n\n if (basketDataSelector && basketDataSelector.getAttribute(DATA_LAYER_ANALYTICS_LABEL)) {\n try {\n gtmBasketData = JSON.parse(basketDataSelector.getAttribute(DATA_LAYER_ANALYTICS_LABEL));\n } catch (error) {\n gtmBasketData = null;\n }\n\n reportOnLoadBasketDetails({ analyticsOnBasketLoadDetails: gtmBasketData });\n }\n\n const pageDataSelector :any = document.getElementById('gtmVirtualPageLoadDetails');\n let onLoadPageDetails :any = null;\n\n if (analyticsPageData) {\n onLoadPageDetails = analyticsPageData;\n } else if (pageDataSelector && pageDataSelector.getAttribute(DATA_LAYER_ANALYTICS_LABEL)) {\n try {\n onLoadPageDetails = JSON.parse(pageDataSelector.getAttribute(DATA_LAYER_ANALYTICS_LABEL));\n } catch (error) {\n onLoadPageDetails = null;\n }\n }\n\n if (onLoadPageDetails) {\n const viewTypesMap = {\n sm: 'small',\n md: 'medium',\n lg: 'large',\n xl: 'x-large'\n };\n const viewType = getActiveViewtypeName();\n\n onLoadPageDetails.event = 'pageLoad';\n onLoadPageDetails.designSize = viewTypesMap[viewType];\n\n report(onLoadPageDetails);\n }\n });\n\n /**\n * @description Listen minicart events\n * @event \"minicart.show\"\n * @listens \"minicart.show\"\n * @returns {void}\n */\n eventBus.on('minicart.showed', (skipEvent) => {\n reportMinicart(skipEvent);\n\n report({\n event: 'module',\n pageLevel1: 'Mini basket'\n });\n });\n\n /**\n * @description Listen minicart events\n * @event \"minicart.rendered\"\n * @listens \"minicart.rendered\"\n * @returns {void}\n */\n eventBus.on('minicart.rendered', (skipEvent) => {\n reportMinicart(skipEvent);\n });\n\n /**\n * @description Listen order confirmation event\n * @event \"show.order.confirmation\"\n * @listens \"show.order.confirmation\"\n * @returns {void}\n */\n eventBus.on('show.order.confirmation', (data) => {\n if (!data) {\n return;\n }\n\n report({ event: 'purchase', ...data });\n });\n\n /**\n * @description Tracks in dataLayer an information about product impressions on product tile init\n * @event \"product.tile.init\"\n * @listens \"product.tile.init\"\n * @returns {void}\n */\n eventBus.on('product.tile.init', tile => {\n const impression = tile.data('analytics');\n\n if (!impression) {\n return;\n }\n\n impression.productID = tile.data('pid');\n\n if (impression && !hasBeenImpressed(impression.productID || impression.id)) {\n setTilePosition(impression, impression.productID);\n\n // @ts-expect-error ts-migrate(2345) FIXME: Argument of type 'any' is not assignable to parame... Remove this comment to see the full error message\n impressionsDebounce.push(impression);\n\n // @ts-expect-error ts-migrate(2554) FIXME: Expected 1 arguments, but got 0.\n reportImpression();\n }\n });\n /**\n * @description Tracks in dataLayer an information about product impressions on wishlist products init\n * @event \"wishlist.products.init\"\n * @listens \"wishlist.products.init\"\n * @returns {void}\n */\n eventBus.on('wishlist.products.init', (products, step) => {\n const impressions = getWishlistImpressions(products);\n\n if (!impressions.length) {\n return;\n }\n\n const event = {\n ecommerce: {\n currencyCode: pageProperties.currentCurrency,\n impressions: impressions\n }\n };\n\n if (step && (step === 'browsing')) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'event' does not exist on type '{ ecommer... Remove this comment to see the full error message\n event.event = 'productImpression';\n }\n\n report({ ecommerce: null });\n report(event);\n });\n\n /**\n * @description Tracks in dataLayer an information about quick view opening\n * @event \"product.tile.qv.open\"\n * @listens \"product.tile.qv.open\"\n * @returns {void}\n */\n eventBus.on('product.tile.qv.open', qvData => {\n report({ ecommerce: null });\n report({\n event: 'productView',\n ecommerce: {\n detail: {\n actionField: { list: 'Product quick view' },\n products: [qvData.gtmInfo]\n }\n }\n });\n });\n\n /**\n * @description Tracks in dataLayer an information about product details loading\n * @event \"product.tile.qv.open\"\n * @listens \"product.tile.qv.open\"\n * @returns {void}\n */\n eventBus.on('product.details.open', products => {\n const productsData = products.map((product) => product.data('analytics'));\n const gtmProductViewDataJson = localStorageWrapper.getItem('gtmProductViewData');\n let gtmProductViewData = {} as any;\n\n try {\n gtmProductViewData = JSON.parse(gtmProductViewDataJson);\n } catch (error) {\n gtmProductViewData = {\n productTilePosition: '',\n productTileList: ''\n };\n }\n\n productsData.forEach((productData) => {\n productData.position = gtmProductViewData?.productTilePosition || '';\n });\n\n report({ ecommerce: null });\n report({\n event: 'productView',\n ecommerce: {\n detail: {\n actionField: { list: gtmProductViewData?.productTileList || '' },\n products: [...productsData]\n }\n }\n });\n\n localStorageWrapper.removeItem('gtmProductViewData');\n });\n\n /**\n * @description Tracks in dataLayer an information about product attributes select\n * @event \"product.attribute.select\"\n * @listens \"product.attribute.select\"\n * @returns {void}\n */\n eventBus.on('product.attribute.select', product => {\n const productData = product.gtmInfo;\n const gtmProductViewDataJson = localStorageWrapper.getItem('gtmProductViewData');\n let gtmProductViewData = {} as any;\n\n try {\n gtmProductViewData = JSON.parse(gtmProductViewDataJson);\n } catch (error) {\n gtmProductViewData = {\n productTilePosition: '',\n productTileList: ''\n };\n }\n\n productData.position = gtmProductViewData?.productTilePosition || '';\n\n report({ ecommerce: null });\n report({\n event: 'productView',\n ecommerce: {\n detail: {\n actionField: { list: gtmProductViewData?.productTileList || '' },\n products: [productData]\n }\n }\n });\n\n localStorageWrapper.removeItem('gtmProductViewData');\n });\n\n /**\n * @description Tracks in dataLayer an information about quick view opening on editing product step\n * @event \"product.tile.qv.open.edit\"\n * @listens \"product.tile.qv.open.edit\"\n * @returns {void}\n */\n eventBus.on('product.tile.qv.open.edit', editEl => {\n if (!editEl) {\n return;\n }\n\n const productInfo = editEl.data('analytics');\n\n if (!productInfo) {\n return;\n }\n\n report({ ecommerce: null });\n report({\n ecommerce: {\n detail: {\n actionField: { list: 'Product quick view' },\n products: [productInfo]\n }\n }\n });\n });\n /**\n * @description Tracks in dataLayer an information about product tile link click\n * @event \"tile.product.link.click\"\n * @listens \"tile.product.link.click\"\n * @returns {void}\n */\n eventBus.on('tile.product.link.click', link => {\n trackProductClick(link);\n });\n /**\n * @description Tracks in dataLayer an information about cart product tile link click\n * @event \"cart.product.link.click\"\n * @listens \"cart.product.link.click\"\n * @returns {void}\n */\n eventBus.on('cart.product.link.click', link => {\n trackProductClick(link);\n });\n /**\n * @description Tracks in dataLayer an information about minicart product tile link click\n * @event \"minicart.product.link.click\"\n * @listens \"minicart.product.link.click\"\n * @returns {void}\n */\n eventBus.on('minicart.product.link.click', link => {\n trackProductClick(link);\n });\n /**\n * @description Tracks in dataLayer an information about product details link click\n * @event \"detail.product.link.click\"\n * @listens \"detail.product.link.click\"\n * @returns {void}\n */\n eventBus.on('detail.product.link.click', link => {\n trackProductClick(link);\n });\n /**\n * @description Tracks in dataLayer an information about order tile link click\n * @event \"orderdetail.product.link.click\"\n * @listens \"orderdetail.product.link.click\"\n * @returns {void}\n */\n eventBus.on('orderdetail.product.link.click', link => {\n trackProductClick(link);\n });\n /**\n * @description Tracks in dataLayer an information about searchbox product tile link click\n * @event \"searchbox.product.link.click\"\n * @listens \"searchbox.product.link.click\"\n * @returns {void}\n */\n eventBus.on('searchbox.product.link.click', link => {\n trackProductClick(link);\n });\n /**\n * @description Tracks in dataLayer an information about wishlist product tile link click\n * @event \"wishlist.product.link.click\"\n * @listens \"wishlist.product.link.click\"\n * @returns {void}\n */\n eventBus.on('wishlist.product.link.click', link => {\n trackProductClick(link);\n });\n\n /**\n * @description Tracks in dataLayer an information about adding products to cart\n * @event \"product.added.to.cart\"\n * @listens \"product.added.to.cart\"\n * @returns {void}\n */\n eventBus.on('product.added.to.cart', (cart, widget, listOfWidgets, subProduct) => {\n reportProductAddedToCart(cart, widget, listOfWidgets, subProduct);\n });\n\n /**\n * @description Tracks in dataLayer an information about adding products to cart\n * @event \"just.added.product.to.cart\"\n * @listens \"just.added.product.to.cart\"\n * @returns {void}\n */\n eventBus.on('just.added.product.to.cart', (cart, widget, listOfWidgets, subProduct) => {\n reportProductAddedToCart(cart, widget, listOfWidgets, subProduct);\n });\n\n /**\n * @description Tracks in dataLayer an information about adding products to cart trough incrementing on cart page\n * @event \"product.cart.qty.increment\"\n * @listens \"product.cart.qty.increment\"\n * @returns {void}\n */\n eventBus.on('product.cart.qty.increment', (widget, qty) => {\n const tileInfo = widget.currentGtmInfo || widget.data('analytics');\n\n if (!tileInfo) {\n return;\n }\n\n if (qty || !tileInfo.quantity) {\n tileInfo.quantity = qty || 1;\n }\n\n report({\n event: 'addToCart',\n ecommerce: {\n currencyCode: pageProperties.currentCurrency,\n add: {\n products: [].concat(tileInfo)\n }\n }\n });\n\n report({ ecommerce: null });\n });\n\n /**\n * @description Tracks in dataLayer an information about adding products to cart trough decrementing on cart page\n * @event \"product.cart.qty.decrement\"\n * @listens \"product.cart.qty.decrement\"\n * @returns {void}\n */\n eventBus.on('product.cart.qty.decrement', (widget, qty) => {\n const tileInfo = widget.currentGtmInfo || widget.data('analytics');\n\n if (!tileInfo) {\n return;\n }\n\n if (qty || !tileInfo.quantity) {\n tileInfo.quantity = qty || 1;\n }\n\n report({\n event: 'removeFromCart',\n ecommerce: {\n currencyCode: pageProperties.currentCurrency,\n remove: {\n products: [].concat(tileInfo)\n }\n }\n });\n\n report({ ecommerce: null });\n });\n /**\n * @description Tracks in dataLayer an information about updates on cart\n * @event \"cart.updated\"\n * @listens \"cart.updated\"\n * @returns {void}\n */\n eventBus.on('cart.updated', cart => {\n if (cart && cart.items) {\n cart.items.forEach(item => {\n if (item.gtmInfo) {\n item.gtmInfoStr = JSON.stringify(item.gtmInfo);\n }\n });\n }\n });\n /**\n * @description Tracks in dataLayer an information about removing products from cart\n * @event \"cart.remove.product\"\n * @listens \"cart.remove.product\"\n * @returns {void}\n */\n eventBus.on('cart.remove.product', cart => {\n if (!cart.removeProductLink) {\n return;\n }\n\n const tileInfo = cart.removeProductLink.data('analytics');\n\n if (!tileInfo) {\n return;\n }\n\n tileInfo.quantity = parseInt(cart.removeProductLink.data('quantity'), 10) || 1;\n delete tileInfo.list;\n\n report({\n event: 'removeFromCart',\n ecommerce: {\n currencyCode: pageProperties.currentCurrency,\n remove: {\n products: [tileInfo]\n }\n }\n });\n\n report({ ecommerce: null });\n });\n /**\n * @description Tracks in dataLayer an information about removing products from minicart\n * @event \"minicart.remove.product\"\n * @listens \"minicart.remove.product\"\n * @returns {void}\n */\n eventBus.on('minicart.remove.product', minicart => {\n if (!minicart.removeProductLink) {\n return;\n }\n\n const tileInfo = minicart.removeProductLink.data('analytics');\n\n if (!tileInfo) {\n return;\n }\n\n tileInfo.quantity = parseInt(minicart.removeProductLink.data('quantity'), 10) || 1;\n\n report({\n event: 'removeFromCart',\n ecommerce: {\n currencyCode: pageProperties.currentCurrency,\n remove: {\n products: [tileInfo]\n }\n }\n });\n\n report({ ecommerce: null });\n });\n /**\n * @description Tracks in dataLayer an information about customer's redirect to checkout\n * @event \"cart.page.submitted\"\n * @listens \"cart.page.submitted\"\n * @returns {void}\n */\n /* eslint-disable sonarjs/cognitive-complexity */\n eventBus.on('cart.page.submitted', (CartMgr, checkoutType) => {\n const RESTRICTED_KEYS = ['list'];\n\n if (!CartMgr) {\n return;\n }\n\n const products: any[] = [];\n const items = CartMgr.cart?.items ? CartMgr.cart.items : CartMgr.data('items');\n const currencyCode = CartMgr.cart.currencyCode;\n\n if (items && items.length) {\n items.forEach(item => {\n const product = { quantity: item.quantity };\n let { gtmInfo } = item;\n\n if (typeof gtmInfo === 'string') {\n try {\n gtmInfo = JSON.parse(gtmInfo);\n } catch (err) {\n gtmInfo = {};\n }\n }\n\n Object.keys(gtmInfo).forEach((gtmInfoKey) => {\n if (!RESTRICTED_KEYS.includes(gtmInfoKey)) {\n product[gtmInfoKey] = gtmInfo[gtmInfoKey];\n }\n });\n\n products.push(product);\n });\n }\n\n let checkoutMethod = 'Checkout';\n\n if (checkoutType === 'paypal') {\n checkoutMethod = 'PayPal';\n }\n\n if (checkoutType === 'applepay') {\n checkoutMethod = 'Apple Pay';\n }\n\n report({ ecommerce: null });\n report({\n event: 'checkout',\n checkout_method: checkoutMethod,\n ecommerce: {\n currencyCode: currencyCode,\n checkout: {\n actionField: {\n step: 1\n },\n products\n }\n }\n });\n });\n\n /**\n * @description Tracks in dataLayer an information about customer's redirect to checkout\n * @event \"cart.page.submitted\"\n * @listens \"cart.page.submitted\"\n * @returns {void}\n */\n /* eslint-disable sonarjs/cognitive-complexity */\n eventBus.on('account.activated', (optedIn, email) => {\n const timestamp = new Date();\n const event = {\n event: 'data-layer-event',\n eventCategory: 'Key interactions',\n eventAction: 'Account Activation',\n eventLabel: optedIn ? 'Opted in' : '',\n email_id: email,\n Timestamp: Math.floor(timestamp.getTime() / 1000)\n };\n\n report(event);\n });\n\n /* eslint-enable sonarjs/cognitive-complexity */\n /**\n * @description Tracks in dataLayer an information about selected shipping method\n * @event \"cart.update.shipping.method\"\n * @listens \"cart.update.shipping.method\"\n * @returns {void}\n */\n eventBus.on('cart.update.shipping.method', (newShippingMethodName, currencyCode) => {\n if (shippingMethodName === newShippingMethodName) {\n return;\n }\n\n shippingMethodName = newShippingMethodName;\n\n report({ ecommerce: null });\n report({\n event: 'checkout_option',\n ecommerce: {\n currencyCode: currencyCode,\n checkout: {\n actionField: {\n step: 2,\n option: shippingMethodName\n }\n }\n }\n });\n });\n\n /**\n * @description GTM event on checkout step activation\n * @event \"checkout.step.loaded\"\n * @listens \"checkout.step.loaded\"\n * @returns {void}\n */\n eventBus.on('checkout.step.loaded', (order, step) => {\n const stepMap = {\n shipping: 2,\n billing: 3,\n summary: 4\n };\n const currencyCode = order.currencyCode;\n const products = [];\n\n // @ts-expect-error Argument of type 'any' is not assignable to parameter of type 'never'.\n order.items.items.forEach(el => products.push(el.gtmInfo));\n\n const checkout = {\n actionField: {\n step: stepMap[step]\n },\n\n products: products\n };\n\n if (stepMap[step] === 2) {\n // @ts-expect-error Property 'option' does not exist on type '{ step: any; }'.\n checkout.actionField.option = order.shipping[0]?.selectedShippingMethod?.displayName;\n } else if (stepMap[step] === 3) {\n // @ts-expect-error Property 'option' does not exist on type '{ step: any; }'.\n checkout.actionField.option = order.billing.payment?.selectedPaymentInstruments[0]?.name || '';\n }\n\n report({ ecommerce: null });\n report({\n event: 'checkout',\n ecommerce: {\n currencyCode,\n checkout\n }\n });\n });\n\n /**\n * @description Tracks in dataLayer an information about customer's filling a shipping step\n * @event \"checkout.shipping.step.submitted\"\n * @listens \"checkout.shipping.step.submitted\"\n * @returns {void}\n */\n eventBus.on('checkout.shipping.step.submitted', checkoutMgr => {\n if (checkoutMgr.order && checkoutMgr.order.gtmInfo) {\n shippingMethodName = get(checkoutMgr, 'order.shipping.0.selectedShippingMethod.displayName');\n\n if (!shippingMethodName) {\n const applicableShippingMethods = get(checkoutMgr, 'order.shipping.0.applicableShippingMethods') || [];\n\n applicableShippingMethods.forEach(applicableShippingMethod => {\n if (applicableShippingMethod && applicableShippingMethod.selected) {\n shippingMethodName = applicableShippingMethod.displayName;\n }\n });\n }\n\n report({ ecommerce: null });\n report({\n event: 'checkout',\n ecommerce: {\n checkout: {\n actionField: {\n step: 2,\n option: shippingMethodName\n },\n products: checkoutMgr.order.gtmInfo.products\n }\n }\n });\n }\n });\n /**\n * @description Tracks in dataLayer an information about changed payment method\n * @event \"checkout.paymentmethod.changed\"\n * @listens \"checkout.paymentmethod.changed\"\n * @returns {void}\n */\n eventBus.on('checkout.paymentmethod.changed', (orderInfo) => {\n if (!orderInfo) {\n return;\n }\n\n report({ ecommerce: null });\n report({\n event: 'checkout_option',\n ecommerce: {\n currencyCode: orderInfo.currencyCode,\n checkout_option: {\n actionField: {\n step: 3,\n option: orderInfo.name\n }\n }\n }\n });\n });\n /**\n * @description Tracks in dataLayer an information about customer's filling a billing step\n * @event \"checkout.billing.step.submitted\"\n * @listens \"checkout.billing.step.submitted\"\n * @returns {void}\n */\n eventBus.on('checkout.billing.step.submitted', checkoutMgr => {\n if (checkoutMgr.order && checkoutMgr.order.gtmInfo) {\n let paymentMethod = get(checkoutMgr, 'order.billing.payment.selectedPaymentInstruments.0.name');\n\n if (!paymentMethod) {\n paymentMethod = get(checkoutMgr, 'order.billing.payment.applicablePaymentMethods.0.name') || '';\n }\n\n report({ ecommerce: null });\n report({\n event: 'checkout',\n ecommerce: {\n checkout: {\n actionField: {\n step: 3,\n option: paymentMethod\n },\n products: checkoutMgr.order.gtmInfo.products\n }\n }\n });\n }\n });\n /**\n * @description Tracks in dataLayer an information about customer's submitting summary step\n * @event \"checkout.summary.step.submitted\"\n * @listens \"checkout.summary.step.submitted\"\n * @returns {void}\n */\n eventBus.on('checkout.summary.step.submitted', checkoutMgr => {\n if (checkoutMgr.order && checkoutMgr.order.gtmInfo) {\n report({ ecommerce: null });\n report({\n event: 'checkout',\n ecommerce: {\n checkout: {\n actionField: {\n step: 4\n },\n products: checkoutMgr.order.gtmInfo.products\n }\n }\n });\n }\n });\n\n /**\n * @description Tracks in dataLayer an information about quick view opening on editing product step\n * @event \"product.tile.qv.open.edit\"\n * @listens \"product.tile.qv.open.edit\"\n * @returns {void}\n */\n eventBus.on('osano.events', eventName => {\n report({\n event: eventName\n });\n });\n\n eventBus.on('ideas.search.terms.selected', searchItem => {\n const searchItemNode = searchItem.get();\n let subLabel = '';\n\n if (searchItemNode) {\n subLabel = searchItemNode.innerText;\n }\n\n report({\n event: DATA_LAYER_EVENT_LABEL,\n eventCategory: 'Search',\n eventAction: 'Ideas search',\n eventLabel: 'Suggested Search',\n eventSublabel: subLabel\n });\n });\n\n /**\n * @description Tracks apply filters\n * @event \"apply.refinements.menu\"\n * @listens \"apply.refinements.menu\"\n * @returns {void}\n */\n eventBus.on('apply.refinements.menu', (appliedRefinements, isIdeasSearch) => {\n if (!appliedRefinements || typeof isIdeasSearch === 'undefined') {\n return;\n }\n\n const analyticsData = appliedRefinements.reduce((refinementsData, refinement) => {\n if (refinement.prefs().gtmEventLabel && refinement.prefs().gtmEventSublabel) {\n refinementsData.push({\n eventLabel: refinement.prefs().gtmEventLabel,\n eventSublabel: refinement.prefs().gtmEventSublabel\n });\n }\n\n return refinementsData;\n }, []);\n\n if (analyticsData.length) {\n analyticsData.forEach((data) => {\n report({\n event: DATA_LAYER_EVENT_LABEL,\n eventCategory: isIdeasSearch ? 'Ideas interaction' : 'Filter interaction',\n eventAction: 'Apply',\n eventLabel: data.eventLabel,\n eventSublabel: data.eventSublabel\n });\n });\n }\n });\n\n /**\n * @description Tracks moved product to WL event\n * @event \"product.moved.to.wishlist\"\n * @listens \"product.moved.to.wishlist\"\n * @returns {void}\n */\n eventBus.on('product.moved.to.wishlist', productData => {\n const addToWishListProduct = 'Add to wishlist - product';\n const addToWishListIdea = 'Add to wishlist - idea';\n const addToWishListLineItem = 'Move to wishlist';\n\n if (!productData.productName) {\n return;\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'gtmPageContext' does not exist on type 'Window... Remove this comment to see the full error message\n const { gtmPageContext } = window;\n let eventAction = '';\n\n if (gtmPageContext && gtmPageContext.pageType === 'cart') {\n eventAction = addToWishListLineItem;\n } else {\n eventAction = productData.isProductSet ? addToWishListIdea : addToWishListProduct;\n }\n\n report({\n event: DATA_LAYER_EVENT_LABEL,\n eventCategory: 'Wishlist interaction',\n eventAction,\n eventLabel: productData.productName\n });\n });\n\n eventBus.on('category.search.link.selected', categoryItem => {\n const categoryLinkItemNode = categoryItem.get();\n let subLabel = '';\n\n if (categoryLinkItemNode) {\n subLabel = categoryLinkItemNode.innerText;\n }\n\n report({\n event: DATA_LAYER_EVENT_LABEL,\n eventCategory: 'Navigation',\n eventAction: 'Category links',\n eventLabel: viewDevicesMap[getActiveViewtypeName()],\n eventSublabel: subLabel\n });\n });\n\n eventBus.on('select.search.suggestion.item', selectedItem => {\n const sublabel = selectedItem.data('gtmEventSublabel');\n const label = selectedItem.data('gtmEventLabel');\n\n if (!sublabel) {\n return;\n }\n\n report({\n event: DATA_LAYER_EVENT_LABEL,\n eventCategory: 'Search',\n eventAction: 'Search suggestions',\n eventLabel: label || '',\n eventSublabel: sublabel\n });\n });\n\n /**\n * @description Tracks open just added cart modal\n * @event \"open.just.added.cart\"\n * @listens \"open.just.added.cart\"\n * @returns {void}\n */\n eventBus.on('open.just.added.cart', () => {\n report({\n event: 'module',\n pageLevel1: 'add to cart popup'\n });\n });\n\n /**\n * @description Tracks open reset password modal\n * @event \"open.reset.password.modal\"\n * @listens \"open.reset.password.modal\"\n * @returns {void}\n */\n eventBus.on('open.reset.password.modal', () => {\n report({\n event: 'module',\n pageLevel1: 'Password reset pop up'\n });\n });\n}\n","import { debounce } from 'widgets/toolbox/debounce';\nimport { pageProperties, report, getProductList } from '../utils/base';\n/**\n * @description GTM impressions\n * @module impressions\n * @category widgets\n * @subcategory gtm/components\n */\nexport let impressionsDebounce = [];\nconst impressedProducts = [];\n\n/**\n * @description Checks if product is already impressed\n * @param {string} id - product ID\n * @returns {boolean} result\n */\nexport function hasBeenImpressed(id) {\n return impressedProducts.some(impressionId => impressionId === id);\n}\n\n/**\n * @description Returns wishlist products impression data\n * @param {Array} products - products data\n * @returns {Array} result\n */\nexport function getWishlistImpressions(products) {\n const impressions = [];\n\n if (!products || !products.length) {\n return impressions;\n }\n\n for (let index = 0; index < products.length; index++) {\n const product = products[index];\n\n if (product && !hasBeenImpressed(product.id)) {\n impressions.push({\n\n // @ts-expect-error ts-migrate(2322) FIXME: Type 'string' is not assignable to type 'never'.\n list: 'Wishlist',\n\n // @ts-expect-error ts-migrate(2322) FIXME: Type 'any' is not assignable to type 'never'.\n position: product.position,\n ...product.gtmInfo\n });\n }\n }\n\n if (!impressions.length) {\n return impressions;\n }\n\n return impressions;\n}\n\n/**\n * @description Reports GTM promo impressions on page load\n * @returns {void}\n */\nexport function reportPromoImpressions() {\n let promoImpressions = Array.from(document.querySelectorAll('.js-promo-impression'));\n\n if (promoImpressions.length) {\n promoImpressions = promoImpressions.map(impressionEl => {\n try {\n const promoDetails = JSON.parse(/** @type {HTMLElement} */ ((impressionEl) as any).dataset.promoDetails);\n\n let clickEl = impressionEl;\n\n if (impressionEl.hasAttribute('hidden') && impressionEl.nextElementSibling) {\n clickEl = impressionEl.nextElementSibling;\n }\n\n /**\n * @description Tracks to dataLayer an information about click on promotion details\n * @listens dom:click\n */\n clickEl.addEventListener('click', () => {\n report({ ecommerce: null });\n report({\n event: 'promotionClick',\n ecommerce: {\n promoClick: {\n promotions: [promoDetails]\n }\n }\n });\n }, { passive: true, once: true });\n\n return promoDetails;\n } catch (e) {\n setTimeout(() => {\n throw e;\n }, 0);\n\n return false;\n }\n }).filter(Boolean);\n\n report({ ecommerce: null });\n report({\n event: 'promotionView',\n ecommerce: {\n promoView: {\n promotions: promoImpressions\n }\n }\n });\n }\n}\n\n/**\n * @description Reports GTM product impressions on page load\n * @returns {void}\n */\nexport function reportProductImpressions() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'gtmImpressions' does not exist on type '... Remove this comment to see the full error message\n if (window.gtmImpressions\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'gtmImpressions' does not exist on type '... Remove this comment to see the full error message\n && window.gtmImpressions.ecommerce\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'gtmImpressions' does not exist on type '... Remove this comment to see the full error message\n && window.gtmImpressions.ecommerce.impressions) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'gtmImpressions' does not exist on type '... Remove this comment to see the full error message\n window.gtmImpressions.ecommerce.impressions.forEach(impression => {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'productPositions' does not exist on type... Remove this comment to see the full error message\n if (window.productPositions && window.productPositions[impression.productID]) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'productPositions' does not exist on type... Remove this comment to see the full error message\n impression.position = window.productPositions[impression.productID];\n\n if (window.location.search.indexOf('q=') > -1) {\n impression.list = pageProperties.searchList;\n }\n }\n\n // @ts-expect-error ts-migrate(2345) FIXME: Argument of type 'any' is not assignable to parame... Remove this comment to see the full error message\n impressedProducts.push(impression.productID);\n delete impression.productID;\n });\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'gtmImpressions' does not exist on type '... Remove this comment to see the full error message\n report(window.gtmImpressions);\n }\n}\n\n/**\n * @description Sends products impressions to dataLayer\n * @returns {void}\n */\nexport const reportImpression = debounce(() => {\n impressionsDebounce.forEach(impression => {\n // @ts-expect-error ts-migrate(2345) FIXME: Argument of type 'any' is not assignable to parame... Remove this comment to see the full error message\n impressedProducts.push(impression.productID || impression.id);\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'productID' does not exist on type 'never... Remove this comment to see the full error message\n delete impression.productID;\n });\n let listName;\n\n if (window.location.search.indexOf('q=') > -1) {\n listName = 'Search Result';\n } else if (window.contexts.includes('plp')) {\n listName = 'PLP';\n } else {\n listName = 'productCarousel';\n }\n\n const event = {\n event: 'productImpression',\n ecommerce: {\n currencyCode: pageProperties.currentCurrency,\n impressions: impressionsDebounce.map((impression, index) => {\n const impressionObj = {\n list: listName,\n\n // @ts-expect-error ts-migrate(2698) FIXME: Spread types may only be created from object types... Remove this comment to see the full error message\n ...impression\n };\n\n impressionObj.position = index;\n\n return impressionObj;\n })\n }\n };\n\n report({ ecommerce: null });\n report(event);\n impressionsDebounce = [];\n}, 50);\n","import localStorageWrapper from 'widgets/toolbox/localStorageWrapper';\n\n/* global dataLayer */\n/**\n * @description GTM base utils\n * @module base\n * @category widgets\n * @subcategory gtm/util\n */\nexport const pageProperties = {\n currentCurrency: '',\n searchList: 'Search Results'\n};\n\n/**\n * @description main method to push changes to dataLayer\n * @param {...any} args - data object\n * @returns {void}\n */\nexport function report(...args) {\n // @ts-expect-error ts-migrate(2304) FIXME: Cannot find name 'dataLayer'.\n if (typeof dataLayer !== 'undefined') {\n // @ts-expect-error ts-migrate(2304) FIXME: Cannot find name 'dataLayer'.\n dataLayer.push(...args);\n }\n}\n\n/**\n * @description Gets product list value\n * @param {refElement} link - product tile\n * @returns {string} result\n */\nexport function getProductList(link) {\n let list = '';\n\n if (window.location.search.indexOf('q=') > -1) {\n list = 'Search Result';\n } else if (window.contexts.includes('plp')) {\n list = 'PLP';\n }\n\n const itemList = link.data('list');\n\n switch (itemList) {\n case 'recommendation':\n list = 'productCarousel'; // TODO: handle attribute link.data('listType') for Recommendation Slot Title value\n break;\n default:\n break;\n }\n\n return list;\n}\n\n/**\n * @description Sets tile position on the PLP \\ Search page\n * @param {refElement} tileInfo - product tile\n * @param {string} pid - product ID\n * @returns {void}\n */\nexport function setTilePosition(tileInfo, pid) {\n pid = pid || tileInfo.id;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'productPositions' does not exist on type... Remove this comment to see the full error message\n if (window.productPositions && window.productPositions[pid]) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'productPositions' does not exist on type... Remove this comment to see the full error message\n tileInfo.position = window.productPositions[pid];\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'gtmImpressions' does not exist on type '... Remove this comment to see the full error message\n } else if (window.gtmImpressions && window.gtmImpressions.ecommerce && window.gtmImpressions.ecommerce.impressions) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'gtmImpressions' does not exist on type '... Remove this comment to see the full error message\n const impression = window.gtmImpressions.ecommerce.impressions.find((gtmImpression) => {\n const productID = pid.toString();\n\n return gtmImpression.id === productID;\n });\n\n if (impression) {\n tileInfo.position = impression.position || '';\n }\n }\n}\n\n/**\n * @description Sends to dataLayer an information about product on product link click\n * @param {refElement} link - product link\n * @returns {void}\n */\nexport function trackProductClick(link) {\n const list = getProductList(link);\n const tileInfo = link.data('analytics');\n const pid = link.data('pid');\n\n if (!tileInfo) {\n return;\n }\n\n setTilePosition(tileInfo, pid);\n\n const gtmProductViewData = {\n productTilePosition: tileInfo.position,\n productTileList: list\n };\n\n localStorageWrapper.setItem('gtmProductViewData', JSON.stringify(gtmProductViewData));\n\n report({\n event: 'productClick',\n ecommerce: {\n click: {\n actionField: { list },\n products: [tileInfo]\n }\n }\n });\n}\n","/* eslint-disable max-len, indent, sonarjs/no-duplicate-string */\n\nconst hasContext = (/** @type {string} */ctx) => window.contexts.includes(ctx);\n\nimport widgetsMgr from 'widgets/widgetsMgr';\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => false, // hasContext('account'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'account.paypal' */ './widgets/account/PayPalProfileCard').then(d => d.default),\n import(/* webpackChunkName: 'account.paypal' */ './widgets/common/PayPalBaseButton').then(d => d.default),\n import(/* webpackChunkName: 'cart.paypal' */ './widgets/common/PayPalBillingAgreementMixin').then(d => d.default),\n import(/* webpackChunkName: 'account.paypal' */ './widgets/account/PayPalAccountBAButton').then(d => d.default)\n ]).then(deps => {\n const [\n PayPalProfileCard,\n PayPalBaseButton,\n PayPalBillingAgreementMixin,\n PayPalAccountBAButton\n ] = deps;\n\n return {\n listId: 'account.paypal',\n widgetsDefinition: () => [\n ['paypalAccountBAButton', PayPalBaseButton],\n ['paypalAccountBAButton', PayPalBillingAgreementMixin, 'paypalAccountBAButton'],\n ['paypalAccountBAButton', PayPalAccountBAButton, 'paypalAccountBAButton'],\n ['paypalProfileCard', PayPalProfileCard]\n ]\n };\n })\n});\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('cart'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'cart.paypal' */ './widgets/common/PayPalBaseButton').then(d => d.default),\n import(/* webpackChunkName: 'cart.paypal' */ './widgets/common/PayPalBillingAgreementMixin').then(d => d.default),\n import(/* webpackChunkName: 'cart.paypal' */ './widgets/cart/PayPalCartBaseButton').then(d => d.default),\n import(/* webpackChunkName: 'cart.paypal' */ './widgets/cart/PayPalCartButton').then(d => d.default),\n import(/* webpackChunkName: 'cart.paypal' */ './widgets/cart/PayPalCartBAButton').then(d => d.default),\n import(/* webpackChunkName: 'cart.paypal' */ './widgets/cart/PayPalCartStaticButton').then(d => d.default)\n ]).then(deps => {\n const [\n PayPalBaseButton,\n PayPalBillingAgreementMixin,\n PayPalCartBaseButton,\n PayPalCartButton,\n PayPalCartBAButton,\n PayPalCartStaticButton] = deps;\n\n return {\n listId: 'cart.paypal',\n widgetsDefinition: () => [\n ['paypalCartButton', PayPalBaseButton],\n ['paypalCartButton', PayPalCartBaseButton, 'paypalCartButton'],\n ['paypalCartButton', PayPalCartButton, 'paypalCartButton'],\n ['paypalCartBAButton', PayPalBaseButton],\n ['paypalCartBAButton', PayPalBillingAgreementMixin, 'paypalCartBAButton'],\n ['paypalCartBAButton', PayPalCartBaseButton, 'paypalCartBAButton'],\n ['paypalCartBAButton', PayPalCartBAButton, 'paypalCartBAButton'],\n ['paypalCartStaticButton', PayPalBaseButton],\n ['paypalCartStaticButton', PayPalCartStaticButton, 'paypalCartStaticButton']\n ]\n };\n })\n});\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('checkout'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'checkout.paypal' */ './widgets/checkout/PaymentAccordionItemPayPal').then(d => d.default),\n import(/* webpackChunkName: 'checkout.paypal' */ './widgets/checkout/PayPalBillingForm').then(d => d.default),\n import(/* webpackChunkName: 'checkout.paypal' */ './widgets/common/PayPalBaseButton').then(d => d.default),\n import(/* webpackChunkName: 'checkout.paypal' */ './widgets/common/PayPalBillingAgreementMixin').then(d => d.default),\n import(/* webpackChunkName: 'checkout.paypal' */ './widgets/billing/PayPalBillingButton').then(d => d.default),\n import(/* webpackChunkName: 'checkout.paypal' */ './widgets/billing/PayPalBillingBAButton').then(d => d.default),\n import(/* webpackChunkName: 'checkout.paypal' */ './widgets/billing/PayPalSavedAccountsList').then(d => d.default)\n ]).then(deps => {\n const [\n PaymentAccordionItemPayPal,\n PayPalBillingForm,\n PayPalBaseButton,\n PayPalBillingAgreementMixin,\n PayPalBillingButton,\n PayPalBillingBAButton,\n PayPalSavedAccountsList\n ] = deps;\n\n return {\n listId: 'checkout.paypal',\n widgetsDefinition: () => [\n ['paymentAccordionItemPayPal', PaymentAccordionItemPayPal, 'paymentAccordionItem'],\n ['billingForm', PayPalBillingForm, 'billingForm'],\n ['paypalBillingButton', PayPalBaseButton],\n ['paypalBillingButton', PayPalBillingButton, 'paypalBillingButton'],\n ['paypalBillingBAButton', PayPalBaseButton],\n ['paypalBillingBAButton', PayPalBillingAgreementMixin, 'paypalBillingBAButton'],\n ['paypalBillingBAButton', PayPalBillingBAButton, 'paypalBillingBAButton'],\n ['paypalSavedAccountsList', PayPalSavedAccountsList, 'inputSelect']\n ]\n };\n })\n});\n","/* eslint-disable max-len, indent, sonarjs/no-duplicate-string */\n\nconst hasContext = (/** @type {string} */ctx) => window.contexts.includes(ctx);\n\nimport widgetsMgr from 'widgets/widgetsMgr';\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('checkout'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'checkout.widgets' */ './widgets/checkout/SummaryStepMixin').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ './widgets/checkout/PaymentAccordionItemPCIPal').then(d => d.default),\n import(/* webpackChunkName: 'checkout.widgets' */ './widgets/checkout/PcipalPopup').then(d => d.default)\n ]).then(deps => {\n const [\n SummaryStepMixin,\n PaymentAccordionItemPCIPal,\n PcipalPopup\n ] = deps;\n\n return {\n listId: 'checkout.pcipal',\n widgetsDefinition: () => [\n ['checkoutMgr', SummaryStepMixin, 'checkoutMgr'],\n ['paymentAccordionItemPCIPal', PaymentAccordionItemPCIPal, 'paymentAccordionItem'],\n ['pcipalPopup', PcipalPopup, 'modal']\n ]\n };\n })\n});\n","/* eslint-disable max-len, indent, sonarjs/no-duplicate-string */\n/* sonar-ignore-start */\n\nimport WidgetsMgr from 'widgets/widgetsMgr';\n\nconst hasContext = (ctx) => window.contexts.includes(ctx);\n\nWidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('datasheets'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'datasheets.widgets' */ './widgets/forms/ajax/DatasheetsForm').then(d => d.default)\n ]).then(deps => {\n const [\n DatasheetsForm\n ] = deps;\n\n return {\n listId: 'datasheets.core',\n widgetsDefinition: () => [\n ['datasheetsForm', DatasheetsForm, 'ajaxform']\n ]\n };\n })\n});\n\n/* sonar-ignore-end */\n","// @ts-nocheck\n/* eslint-disable max-len */\n/* eslint-disable indent */\nconst hasContext = (/** @type {[]} */values) => values.some(v => window.contexts.includes(v));\n\nimport widgetsMgr from 'widgets/widgetsMgr';\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext(['account', 'cart']),\n load: () => Promise.all([\n import(/* webpackChunkName: 'rewards.widgets' */ './widgets/account/Rewards').then(d => d.default)\n ]).then(deps => {\n const [\n Rewards\n ] = deps;\n\n return {\n listId: 'rewards.widgets',\n widgetsDefinition: () => [\n ['rewards', Rewards]\n ]\n };\n })\n});\n","import swRegister from './sw/service-worker-registration';\n\nswRegister();\n","/**\n * @description We need to normalize path because on dev - it would be /, but on\n * sandbox it usually /s/SiteId/\n * @param {string} relativeUrl - relative url to service worker\n * @returns {string} - normalized url to service worker\n */\nfunction normalizeUrl(relativeUrl) {\n const sandboxUrlType = window.location.pathname.match(/(\\/s\\/[^/]+)\\/?/);\n\n return (sandboxUrlType ? sandboxUrlType[1] : '') + relativeUrl;\n}\n\nexport default function () {\n if ('serviceWorker' in navigator && navigator.userAgent && !navigator.userAgent.includes('HobbycraftPoq')) {\n let serviceWorkerInstance;\n\n // eslint-disable-next-line spellcheck/spell-checker\n if (window.location.pathname.indexOf('on/demandware.store') > -1) {\n // Skip service worker registration for not user friendly URLs\n return;\n }\n\n navigator.serviceWorker.register(normalizeUrl('/service-worker.js'))\n .then((registration) => {\n serviceWorkerInstance = registration;\n }).catch(() => {\n if (!serviceWorkerInstance) {\n return;\n }\n\n serviceWorkerInstance.unregister().then(isUnregistered => {\n if (isUnregistered) {\n serviceWorkerInstance = null;\n }\n });\n });\n }\n}\n","/* eslint-disable indent */\nconst hasContext = (context: string) => window.contexts.includes(context);\n\nimport widgetsMgr from 'widgets/widgetsMgr';\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('storelocator'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'storelocator.widgets' */ './widgets/storelocator/StoreSearchForm').then(d => d.default),\n import(/* webpackChunkName: 'storelocator.widgets' */ './widgets/storelocator/SearchByPlace').then(d => d.default),\n import(/* webpackChunkName: 'storelocator.widgets' */ './widgets/storelocator/StoreLocatorMgr').then(d => d.default),\n import(/* webpackChunkName: 'storelocator.widgets' */ './widgets/storelocator/LatLngDistance').then(d => d.default)\n ]).then(deps => {\n const [\n StoreSearchForm,\n SearchByPlace,\n StoreLocatorMgr,\n LatLngDistance\n ] = deps;\n\n return {\n listId: 'storelocator.widgets',\n widgetsDefinition: () => [\n ['storeSearchForm', StoreSearchForm],\n ['searchByPlace', SearchByPlace, 'inputText'],\n ['storeLocatorMgr', StoreLocatorMgr],\n ['latLngDistance', LatLngDistance]\n ]\n };\n })\n});\n","/**\n * @module wishlistItemsMgr\n * @category widgets\n * @subcategory toolbox\n * @description Represents wishlistItemsMgr component with next features:\n * 1. Allow getting items in the wish list\n * 2. Allow setting items from the wish list to the local storage\n * @example <caption>Example of WishlistItemsMgr module usage</caption>\n * import { WishlistItemsMgr } from 'widgets/toolbox/WishlistItemsMgr';\n *\n * init() {\n * super.init();\n * wishlistItemsMgr.isItemInWishlist(this.prefs().pid, this.prefs().productOptions)\n * .then((state) => {\n * this.changeStateWishlistButton(state);\n * })\n * .catch(error => console.log(error));\n * }\n */\nimport { getJSONByUrl } from 'widgets/toolbox/ajax';\nimport { getCookie, setCookie } from 'widgets/toolbox/cookie';\nimport localStorageWrapper from 'widgets/toolbox/localStorageWrapper';\n\nconst SHADOW_CHANGES_COOKIE_NAME = 'wishlistShadowChangesNormalized';\n\nexport class WishlistItemsMgr {\n static instance: WishlistItemsMgr | undefined;\n\n private loadWishlistItemsPromise: Promise<void> | undefined;\n\n /**\n * @description Returns instance of WishlistItemsMgr\n * @returns Instance of WishlistItemsMgr\n */\n static getInstance(): WishlistItemsMgr {\n if (WishlistItemsMgr.instance) {\n return WishlistItemsMgr.instance;\n }\n\n WishlistItemsMgr.instance = new WishlistItemsMgr();\n\n return WishlistItemsMgr.instance;\n }\n\n /**\n * @description Check if product in wish list\n * @param productId Target product id\n * @param productOptions Product options\n * @returns Result\n */\n isItemInWishlist(productId: string, productOptions?: Array<Record<string, unknown>>): Promise<boolean> {\n return this.getWishlistItems()\n .then((response) => {\n let result = false;\n\n if (!response) {\n return Promise.resolve(result);\n }\n\n // @ts-expect-error ts-migrate(2571) FIXME: Object is of type 'unknown'.\n const items = response.wishlistItems;\n // TODO: This is a temporary solution.Implement support few options on product\n const option = productOptions ? productOptions[0] : null;\n const item = items?.find(wishlistItem => wishlistItem.id === String(productId));\n\n if (!item) {\n return Promise.resolve(result);\n }\n\n const itemOptionId = item.optionId;\n const selectedValueId = item.selectedValueId;\n\n result = true;\n\n if (option && itemOptionId && selectedValueId) {\n result = option.id === itemOptionId && option.selectedValueId === selectedValueId;\n }\n\n return Promise.resolve(result);\n });\n }\n\n /**\n * @description Checks if wish list contains items\n * @returns Indicates if items in the wish list\n */\n isItemsInWishList(): Promise<boolean> {\n return this.getWishlistItems()\n // @ts-expect-error ts-migrate(2571) FIXME: Object is of type 'unknown'.\n .then(result => Promise.resolve(result?.wishlistItems?.length > 0));\n }\n\n /**\n * @description Do call to get items in the wish list from the server\n * @param url URL to get items in the wish list\n * @returns Fetching result promise\n */\n loadWishListItems(url:string): Promise<void | Record<string, unknown>> {\n return getJSONByUrl(url)\n .then((result) => {\n this.saveWishListItems(result.wishlistItems);\n\n return Promise.resolve(result);\n })\n // eslint-disable-next-line no-console\n .catch(error => console.log(error));\n }\n\n /**\n * @description Set wish list items to the local storage\n * @param {object} wishlistItems Object contains items in the wish list\n */\n saveWishListItems(wishlistItems) {\n localStorageWrapper.setItem('currentSid', getCookie('sid'));\n localStorageWrapper.setItem('wishlistItems', JSON.stringify(wishlistItems) || []);\n }\n\n /**\n * @description Update local storage with new items in the wish list\n * @param {object} wishlistItems Object contains items in the wish list\n */\n updateWishlistItems(wishlistItems) {\n localStorageWrapper.removeItem('wishlistItems');\n this.saveWishListItems(wishlistItems);\n }\n\n /**\n * @description normalizes wishlist items\n * @returns {boolean} result\n */\n normalizeWishListItems() {\n let isDataNormalized = true;\n\n const wishlistShadowChangesCookie = getCookie(SHADOW_CHANGES_COOKIE_NAME);\n\n if (!wishlistShadowChangesCookie) {\n return isDataNormalized;\n }\n\n try {\n isDataNormalized = JSON.parse(wishlistShadowChangesCookie);\n } catch (e) {\n return isDataNormalized;\n }\n\n setCookie(\n SHADOW_CHANGES_COOKIE_NAME, 'true', undefined, true\n );\n\n return isDataNormalized;\n }\n\n /**\n * @description Returns fetching result promise\n * @returns {Promise<object>} Promise result\n */\n getWishlistItems() {\n return new Promise((resolve, reject) => {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'sfccData' does not exist on type 'Window... Remove this comment to see the full error message\n const url = window.sfccData.wishlistActionUrls?.getItems || null;\n\n if (!url) {\n return reject(new Error('no URL provided'));\n }\n\n if (this.loadWishlistItemsPromise) {\n return resolve(this.loadWishlistItemsPromise);\n }\n\n const items = localStorageWrapper.getItem('wishlistItems');\n const isSameSession = localStorageWrapper.getItem('currentSid') === getCookie('sid');\n const isDataNormalized = this.normalizeWishListItems();\n\n if (!!items && isSameSession && isDataNormalized) {\n return resolve({ wishlistItems: JSON.parse(items) });\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'loadWishlistItemsPromise' does not exist... Remove this comment to see the full error message\n this.loadWishlistItemsPromise = this.loadWishListItems(url);\n\n return resolve(this.loadWishlistItemsPromise);\n });\n }\n}\nWishlistItemsMgr.instance = undefined;\n","import { submitFormJson, getJSONByUrl } from 'widgets/toolbox/ajax';\nimport { WishlistItemsMgr } from '../toolbox/wishlistItemsMgr';\nconst ALERT_EVENT = 'alert.show';\nconst WISHLIST_UPDATE_EVENT = 'wishlist.updated';\nconst wishlistItemsMgr = WishlistItemsMgr.getInstance();\n\ntype ILabel = InstanceType<ReturnType<typeof import('widgets/global/Label').default>>;\ntype IButtonWithIcon = InstanceType<ReturnType<typeof import('widgets/global/ButtonWithIcon').default>>;\ntype responseType = {\n success: string,\n itemAlreadyExists: boolean,\n msg: string,\n pid: string,\n error: boolean,\n wishlistItems: Array<string>\n};\n\n/**\n * @param ProductDetail Base widget for extending\n * @returns Add to Wishlist Mixin class\n */\nexport default function (ProductDetail: ReturnType<typeof import('widgets/product/ProductDetail').default>) {\n /**\n * @category widgets\n * @subcategory wishlist\n * @class AddToWishlistMixin\n * @augments ProductDetail\n * @classdesc Add to wishlist mixin with next features:\n * 1. Represents `Add to wishlist` button together with related functionality\n * <br>*As far as it's a mixin, separate DOM widget is not needed.*\n * 2. Allows to add products to wishlist from PDP, QuickView\n * 3. Communicates to user operation results in both cases: error and success\n *\n * Widget has next relationship:\n * * Listens click on `add button` that instance of {@link Button} to handle addition to wish list.\n * <br>Also uses component methods to change button text, activate/deactivate button\n * * Uses methods of `add message` that instance of {@link Label} to set/hide/show messsage\n * @property {string} data-pid - product id\n * @property {string} [data-text-network-error=Network Error] - Network error message\n * @property {string} [data-add-to-wishlist-msg=addToWishlistMsg] - ID of {@link Label} component that represents `add msg`\n * @property {string} [data-add-to-wishlist-btn=addToWishlist] - ID of {@link Button} component that represents `add button`\n * @property {string} data-text-added-to-wishlist - Added to wishlist message\n * @property {boolean} [add-to-wishlist-hide-texts=false] - Added to wishlist message\n * @property {string} data-original-wishlist-button-message - original message for `add to wishlist` button\n * @property {boolean} data-show-alert-if-product-in-wishlist - Indicates, if we need to show active icon for wishlist button,\n * in case if request returns, that iteam already in wishlist\n * @property {string} [data-class-added-to-wishlist] - Added to wishlist class\n */\n class AddToWishlistMixin extends ProductDetail {\n prefs() {\n return {\n pid: '',\n textNetworkError: 'Network Error',\n addToWishlistMsg: 'addToWishlistMsg',\n addToWishlistBtn: 'addToWishlist',\n textAddedToWishlist: '',\n addToWishlistHideTexts: false,\n originalWishlistButtonMessage: '',\n showAlertIfProductInWishlist: false,\n getWishlistItemsUrl: '',\n // @ts-expect-error ts-migrate(2783) FIXME: 'accessibilityAlerts' is specified more than once,... Remove this comment to see the full error message\n accessibilityAlerts: {\n ...super.prefs().accessibilityAlerts,\n addedtowishlist: '',\n removedfromwishlist: ''\n },\n ...super.prefs()\n };\n }\n\n /**\n * @description Initialize widget logic\n */\n init() {\n super.init();\n wishlistItemsMgr.isItemInWishlist(this.prefs().pid, this.prefs().productOptions)\n .then((state: boolean) => {\n this.changeStateWishlistButton(state);\n })\n // eslint-disable-next-line no-console\n .catch(error => console.log(error));\n this.eventBus().on(WISHLIST_UPDATE_EVENT, 'updateStateWishlistButton');\n }\n\n /**\n * @description Activate Wish List button\n * @param addToWishlistBtn Target Wish List button\n */\n activateWishListButton(addToWishlistBtn: IButtonWithIcon) {\n addToWishlistBtn\n .activate()\n .press();\n\n if (!this.prefs().addToWishlistHideTexts) {\n addToWishlistBtn.setText(this.prefs().textAddedToWishlist);\n }\n }\n\n /**\n * @description Deactivate Wish List button\n * @param addToWishlistBtn Target Wish List button\n */\n deactivateWishListButton(addToWishlistBtn: IButtonWithIcon) {\n addToWishlistBtn\n .deactivate()\n .unpress()\n .enable();\n\n if (!this.prefs().addToWishlistHideTexts) {\n addToWishlistBtn.setText(this.prefs().originalWishlistButtonMessage);\n }\n }\n\n /**\n * @description Update state Wish List button after some actions\n * @param updatedProductId Product ID that was updated in the Wish List\n */\n updateStateWishlistButton(updatedProductId: string) {\n if (!updatedProductId) { return; }\n\n this.getById(this.prefs().addToWishlistBtn, (addToWishlistBtn: IButtonWithIcon) => {\n if (String(addToWishlistBtn.config.productId) !== updatedProductId) { return; }\n\n wishlistItemsMgr.isItemInWishlist(updatedProductId)\n .then((state: boolean) => {\n if (state && !addToWishlistBtn.isActive()) {\n this.activateWishListButton(addToWishlistBtn);\n }\n\n if (!state && addToWishlistBtn.isActive()) {\n this.deactivateWishListButton(addToWishlistBtn);\n }\n });\n });\n }\n\n /**\n * @description Change state of Add to Wishlist button\n * @param state Ids product currently in the wishlist\n */\n changeStateWishlistButton(state: boolean) {\n this.getById<IButtonWithIcon>(this.prefs().addToWishlistBtn, (addToWishlistBtn) => {\n if (state) {\n this.activateWishListButton(addToWishlistBtn);\n } else {\n this.deactivateWishListButton(addToWishlistBtn);\n }\n });\n }\n\n /**\n * @description Removes product from wish list.Change button state\n * @param button Target button\n */\n removeProductFromWishlist(button: IButtonWithIcon) {\n button.busy();\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'sfccData' does not exist on type 'Window... Remove this comment to see the full error message\n const removeProductFromWishlistUrl = window.sfccData.wishlistActionUrls?.removeFromWishlist;\n\n getJSONByUrl(removeProductFromWishlistUrl, {\n pid: this.prefs().pid || ''\n }).then((/** @type {{success: boolean, wishlistItems: string}} */ response) => {\n if (!response.success) {\n return;\n }\n\n this.changeStateWishlistButton(false);\n /**\n * @description Global event to show alert\n * @event \"alert.show\"\n */\n this.eventBus().emit(ALERT_EVENT, {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'removedfromwishlist' does not exist on t... Remove this comment to see the full error message\n accessibilityAlert: this.prefs().accessibilityAlerts.removedfromwishlist\n });\n wishlistItemsMgr.updateWishlistItems(response.wishlistItems);\n // @ts-expect-error ts-migrate(2571) FIXME: Object is of type 'unknown'.\n this.eventBus().emit('product.removedFromWishlist', response.wishlistItems.length > 0, response.pid);\n this.eventBus().emit(WISHLIST_UPDATE_EVENT, response.pid);\n this.eventBus().emit('gtm.datalayer.event', {\n event: 'data-layer-event',\n eventCategory: 'Wishlist interaction',\n eventAction: button.data('isProductSet') ? 'Remove from wishlist - idea' : 'Remove from wishlist - product',\n eventLabel: button.data('productName')\n });\n })\n .finally(() => {\n button.unbusy();\n });\n }\n\n /**\n * @description Handle click on the button\n * @listens dom#click\n * @param button Target button\n */\n wishlistButtonClickHandler(button: IButtonWithIcon) {\n if (button.isActive()) {\n this.removeProductFromWishlist(button);\n } else {\n this.addToWishlist(button);\n }\n }\n\n /**\n * @description afterUpdateProduct handler\n * @param {{wishlistItems: []}} response Response object\n * @emits \"product.updated\"\n */\n afterUpdateProduct(response) {\n super.afterUpdateProduct(response);\n\n if (response.wishlistItems) {\n wishlistItemsMgr.updateWishlistItems(response.wishlistItems);\n }\n }\n\n /**\n * @description Update Product View\n * @param {{id: string, options: []}} product - Product object\n * @returns {void}\n */\n updateProductView(product) {\n super.updateProductView(product);\n this.renderWishListButton(product);\n }\n\n /**\n * @description Show error/success message\n * @param {string} msg - Message string\n * @param {boolean} [error=false] Error flag\n * @returns {void}\n */\n showWishlistMessage(msg, error = false) {\n const addToWishlistMsg = this.getById<ILabel>(this.prefs().addToWishlistMsg, (labelAddToWishlistMsg) => {\n return labelAddToWishlistMsg;\n });\n\n if (!addToWishlistMsg) {\n return;\n }\n\n if (error) {\n // @ts-expect-error ts-migrate(2571) FIXME: Object is of type 'unknown'.\n addToWishlistMsg.setError(msg).show();\n // @ts-expect-error ts-migrate(2571) FIXME: Object is of type 'unknown'.\n addToWishlistMsg.deactivate();\n } else {\n // @ts-expect-error ts-migrate(2571) FIXME: Object is of type 'unknown'.\n addToWishlistMsg.setText(msg).show();\n // @ts-expect-error ts-migrate(2571) FIXME: Object is of type 'unknown'.\n addToWishlistMsg.activate();\n }\n }\n\n /**\n * @description Hide wishlist error/success messages. Usually used when PDP variation updated.\n */\n hideWishlistMessage() {\n this.getById<ILabel>(this.prefs().addToWishlistMsg, (labelAddToWishlistMsg) => {\n labelAddToWishlistMsg.setText('').hide().deactivate();\n });\n }\n\n /**\n * @description Show error/success message\n * @param {button} addButton - Message string\n * @listens dom#click\n * @returns {Promise<object>} Promise object represents server response for product updating\n */\n addToWishlist(addButton) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'sfccData' does not exist on type 'Window... Remove this comment to see the full error message\n const addToWishlistUrl = window.sfccData.wishlistActionUrls?.addToWishlist;\n const options = this.prefs().productOptions;\n let customOptionValue = '';\n let optionId = '';\n let optionVal = '';\n\n if (options && options.length) {\n // TODO: This is a temporary solution.Implement support few options on product\n optionId = options[0].id;\n optionVal = options[0].selectedValueId;\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'getCustomOptionValue' does not exist on ... Remove this comment to see the full error message\n customOptionValue = this.getCustomOptionValue(options[0].id);\n }\n\n addButton.busy();\n this.getById<ILabel>(this.prefs().addToWishlistMsg, (labelAddToWishlistMsg) => labelAddToWishlistMsg.hide());\n\n return submitFormJson(addToWishlistUrl, {\n pid: this.prefs().pid || '',\n // @ts-expect-error ts-migrate(2322) FIXME: Type 'string | number' is not assignable to type '... Remove this comment to see the full error message\n qty: this.prefs().selectedQuantity || '',\n optionId: optionId,\n optionVal: optionVal,\n customOptionValue: customOptionValue\n })\n .then(response => {\n // @ts-expect-error ts-migrate(2322) FIXME: Define correct type for the response\n this.handleSuccess(response);\n\n return response;\n })\n .catch(() => {\n this.showWishlistMessage(this.prefs().textNetworkError, true);\n })\n .finally(() => {\n addButton.unbusy();\n });\n }\n\n /**\n * @description Handle success response\n * @param response - Response object\n */\n handleSuccess(response: responseType) {\n const addToWishlistBtn = <IButtonWithIcon> this.getById(this.prefs().addToWishlistBtn, (element) => element);\n\n if (!addToWishlistBtn) {\n return;\n }\n\n if (response.success) {\n this.activateWishListButton(addToWishlistBtn);\n // eslint-disable-next-line spellcheck/spell-checker\n // @ts-expect-error ts-migrate(2322) FIXME: Define correct type for the response\n const accessibilityAlert = this.prefs().accessibilityAlerts.addedtowishlist;\n\n /**\n * @description Global event to show alert\n * @event \"alert.show\"\n */\n this.eventBus().emit(ALERT_EVENT, {\n accessibilityAlert\n });\n this.eventBus().emit('product.moved.to.wishlist', {\n isProductSet: addToWishlistBtn.data('isProductSet'),\n productName: addToWishlistBtn.data('productName')\n });\n } else if (response.itemAlreadyExists) {\n this.deactivateWishListButton(addToWishlistBtn);\n\n if (this.prefs().showAlertIfProductInWishlist) {\n /**\n * @description Global event to show alert\n * @event \"alert.show\"\n */\n this.eventBus().emit(ALERT_EVENT, {\n accessibilityAlert: response.msg\n });\n }\n }\n\n if (!this.prefs().addToWishlistHideTexts) {\n this.showWishlistMessage(response.msg, response.error);\n }\n\n wishlistItemsMgr.updateWishlistItems(response.wishlistItems);\n this.eventBus().emit('product.addedToWishlist', response.wishlistItems.length > 0);\n this.eventBus().emit(WISHLIST_UPDATE_EVENT, response.pid);\n }\n\n /**\n * @description Method to revert initial state for `Add to Wishlist` button and messages\n * Usually used when re-rendering PDP/QuickView after variation change\n *\n * @param product Product object\n * @param product.id Product id\n * @param product.options Product options\n */\n renderWishListButton(product: {id: string, options: []}): void {\n this.setPref('pid', product.id);\n wishlistItemsMgr.isItemInWishlist(product.id, product.options)\n .then((state: boolean) => {\n this.changeStateWishlistButton(state);\n });\n }\n }\n\n return AddToWishlistMixin;\n}\n","/* eslint-disable indent */\nconst hasContext = (/** @type {string} */context) => window.contexts.includes(context);\n\nimport widgetsMgr from 'widgets/widgetsMgr';\nimport AddToWishlistMixin from './widgets/wishlist/AddToWishlistMixin';\n\nwidgetsMgr.addWidgetsList('global.wishlist', () => [\n ['productTile', AddToWishlistMixin, 'productTile']\n]);\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('header'),\n\n load: () => Promise.all([\n import(/* webpackChunkName: 'wishlist.header' */'./widgets/header/WishlistIcon').then(d => d.default),\n import(/* webpackChunkName: 'wishlist.header' */'./widgets/cart/WishlistCartMixin').then(d => d.default)\n ]).then(deps => {\n const [\n WishlistIcon,\n WishlistCartMixin\n ] = deps;\n\n return {\n listId: 'wishlist.header',\n widgetsDefinition: () => [\n ['wishlistIcon', WishlistIcon],\n ['minicartDialog', WishlistCartMixin, 'minicartDialog']\n ]\n };\n })\n});\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('cart'),\n load: () => Promise.all([\n import(/* webpackChunkName: 'wishlist.cart' */'./widgets/cart/WishlistCartMixin').then(d => d.default)\n ]).then(deps => {\n const [WishlistCartMixin] = deps;\n\n return {\n listId: 'wishlist.cart.widgets',\n widgetsDefinition: () => [\n ['cartMgr', WishlistCartMixin, 'cartMgr'],\n ['cartLineItem', AddToWishlistMixin, 'cartLineItem']\n ]\n };\n })\n});\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('wishlist'),\n\n load: () => Promise.all([\n import(/* webpackChunkName: 'wishlist.wishlist' */'./widgets/wishlist/WishlistMgr').then(d => d.default),\n import(/* webpackChunkName: 'wishlist.wishlist' */'./widgets/wishlist/WishListItem').then(d => d.default),\n import(/* webpackChunkName: 'wishlist.wishlist' */'widgets/product/ProductOptionMixin').then(d => d.default),\n import(/* webpackChunkName: 'wishlist.wishlist' */'widgets/product/AddToCartMixin').then(d => d.default)\n ]).then(deps => {\n const [WishlistMgr, WishListItem, AddToCartMixin, ProductOptionMixin] = deps;\n\n return {\n listId: 'wishlist.wishlist',\n widgetsDefinition: () => [\n ['wishlistMgr', WishlistMgr],\n ['wishListItem', WishListItem],\n ['wishListItem', AddToCartMixin, 'wishListItem'],\n ['wishListItem', ProductOptionMixin, 'wishListItem']\n ]\n };\n })\n});\n\nwidgetsMgr.asyncLists.push({\n getLoadingFlag: () => hasContext('pdp'),\n\n load: () => Promise.resolve({\n listId: 'product.wishlist',\n widgetsDefinition: () => [\n ['productDetail', AddToWishlistMixin, 'productDetail'],\n ['productSet', AddToWishlistMixin, 'productSet']\n ]\n })\n});\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nexport { _objectWithoutPropertiesLoose as _ };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\nclass HTMLContenteditableMaskElement extends HTMLMaskElement {\n /**\n Returns HTMLElement selection start\n @override\n */\n get _unsafeSelectionStart() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset < focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /**\n Returns HTMLElement selection end\n @override\n */\n get _unsafeSelectionEnd() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset > focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /**\n Sets HTMLElement selection\n @override\n */\n _unsafeSelect(start, end) {\n if (!this.rootElement.createRange) return;\n const range = this.rootElement.createRange();\n range.setStart(this.input.firstChild || this.input, start);\n range.setEnd(this.input.lastChild || this.input, end);\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n\n /**\n HTMLElement value\n @override\n */\n get value() {\n // $FlowFixMe\n return this.input.textContent;\n }\n set value(value) {\n this.input.textContent = value;\n }\n}\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n\nexport { HTMLContenteditableMaskElement as default };\n","import MaskElement from './mask-element.js';\nimport IMask from '../core/holder.js';\n\n/** Bridge between HTMLElement and {@link Masked} */\nclass HTMLMaskElement extends MaskElement {\n /** Mapping between HTMLElement events and mask internal events */\n\n /** HTMLElement to use mask on */\n\n /**\n @param {HTMLInputElement|HTMLTextAreaElement} input\n */\n constructor(input) {\n super();\n this.input = input;\n this._handlers = {};\n }\n\n /** */\n // $FlowFixMe https://github.com/facebook/flow/issues/2839\n get rootElement() {\n var _this$input$getRootNo, _this$input$getRootNo2, _this$input;\n return (_this$input$getRootNo = (_this$input$getRootNo2 = (_this$input = this.input).getRootNode) === null || _this$input$getRootNo2 === void 0 ? void 0 : _this$input$getRootNo2.call(_this$input)) !== null && _this$input$getRootNo !== void 0 ? _this$input$getRootNo : document;\n }\n\n /**\n Is element in focus\n @readonly\n */\n get isActive() {\n //$FlowFixMe\n return this.input === this.rootElement.activeElement;\n }\n\n /**\n Returns HTMLElement selection start\n @override\n */\n get _unsafeSelectionStart() {\n return this.input.selectionStart;\n }\n\n /**\n Returns HTMLElement selection end\n @override\n */\n get _unsafeSelectionEnd() {\n return this.input.selectionEnd;\n }\n\n /**\n Sets HTMLElement selection\n @override\n */\n _unsafeSelect(start, end) {\n this.input.setSelectionRange(start, end);\n }\n\n /**\n HTMLElement value\n @override\n */\n get value() {\n return this.input.value;\n }\n set value(value) {\n this.input.value = value;\n }\n\n /**\n Binds HTMLElement events to mask internal events\n @override\n */\n bindEvents(handlers) {\n Object.keys(handlers).forEach(event => this._toggleEventHandler(HTMLMaskElement.EVENTS_MAP[event], handlers[event]));\n }\n\n /**\n Unbinds HTMLElement events to mask internal events\n @override\n */\n unbindEvents() {\n Object.keys(this._handlers).forEach(event => this._toggleEventHandler(event));\n }\n\n /** */\n _toggleEventHandler(event, handler) {\n if (this._handlers[event]) {\n this.input.removeEventListener(event, this._handlers[event]);\n delete this._handlers[event];\n }\n if (handler) {\n this.input.addEventListener(event, handler);\n this._handlers[event] = handler;\n }\n }\n}\nHTMLMaskElement.EVENTS_MAP = {\n selectionChange: 'keydown',\n input: 'input',\n drop: 'drop',\n click: 'click',\n focus: 'focus',\n commit: 'blur'\n};\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLMaskElement as default };\n","import { _ as _objectWithoutPropertiesLoose } from '../_rollupPluginBabelHelpers-6b3bd404.js';\nimport { objectIncludes, DIRECTION } from '../core/utils.js';\nimport ActionDetails from '../core/action-details.js';\nimport '../masked/date.js';\nimport createMask, { maskedClass } from '../masked/factory.js';\nimport MaskElement from './mask-element.js';\nimport HTMLMaskElement from './html-mask-element.js';\nimport HTMLContenteditableMaskElement from './html-contenteditable-mask-element.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../masked/pattern.js';\nimport '../masked/base.js';\nimport '../core/continuous-tail-details.js';\nimport '../masked/pattern/input-definition.js';\nimport '../masked/pattern/fixed-definition.js';\nimport '../masked/pattern/chunk-tail-details.js';\nimport '../masked/pattern/cursor.js';\nimport '../masked/regexp.js';\nimport '../masked/range.js';\n\nconst _excluded = [\"mask\"];\n\n/** Listens to element events and controls changes between element and {@link Masked} */\nclass InputMask {\n /**\n View element\n @readonly\n */\n\n /**\n Internal {@link Masked} model\n @readonly\n */\n\n /**\n @param {MaskElement|HTMLInputElement|HTMLTextAreaElement} el\n @param {Object} opts\n */\n constructor(el, opts) {\n this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLMaskElement(el);\n this.masked = createMask(opts);\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n this._saveSelection = this._saveSelection.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onChange = this._onChange.bind(this);\n this._onDrop = this._onDrop.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onClick = this._onClick.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n this._bindEvents();\n\n // refresh\n this.updateValue();\n this._onChange();\n }\n\n /** Read or update mask */\n get mask() {\n return this.masked.mask;\n }\n maskEquals(mask) {\n var _this$masked;\n return mask == null || ((_this$masked = this.masked) === null || _this$masked === void 0 ? void 0 : _this$masked.maskEquals(mask));\n }\n set mask(mask) {\n if (this.maskEquals(mask)) return;\n\n // $FlowFixMe No ideas ... after update\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n this.masked.updateOptions({\n mask\n });\n return;\n }\n const masked = createMask({\n mask\n });\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n\n /** Raw value */\n get value() {\n return this._value;\n }\n set value(str) {\n if (this.value === str) return;\n this.masked.value = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Unmasked value */\n get unmaskedValue() {\n return this._unmaskedValue;\n }\n set unmaskedValue(str) {\n if (this.unmaskedValue === str) return;\n this.masked.unmaskedValue = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Typed unmasked value */\n get typedValue() {\n return this.masked.typedValue;\n }\n set typedValue(val) {\n if (this.masked.typedValueEquals(val)) return;\n this.masked.typedValue = val;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Display value */\n get displayValue() {\n return this.masked.displayValue;\n }\n\n /**\n Starts listening to element events\n @protected\n */\n _bindEvents() {\n this.el.bindEvents({\n selectionChange: this._saveSelection,\n input: this._onInput,\n drop: this._onDrop,\n click: this._onClick,\n focus: this._onFocus,\n commit: this._onChange\n });\n }\n\n /**\n Stops listening to element events\n @protected\n */\n _unbindEvents() {\n if (this.el) this.el.unbindEvents();\n }\n\n /**\n Fires custom event\n @protected\n */\n _fireEvent(ev) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n const listeners = this._listeners[ev];\n if (!listeners) return;\n listeners.forEach(l => l(...args));\n }\n\n /**\n Current selection start\n @readonly\n */\n get selectionStart() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n }\n\n /** Current cursor position */\n get cursorPos() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n }\n set cursorPos(pos) {\n if (!this.el || !this.el.isActive) return;\n this.el.select(pos, pos);\n this._saveSelection();\n }\n\n /**\n Stores current selection\n @protected\n */\n _saveSelection( /* ev */\n ) {\n if (this.displayValue !== this.el.value) {\n console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\n }\n\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n\n /** Syncronizes model value from view */\n updateValue() {\n this.masked.value = this.el.value;\n this._value = this.masked.value;\n }\n\n /** Syncronizes view from model value, fires change events */\n updateControl() {\n const newUnmaskedValue = this.masked.unmaskedValue;\n const newValue = this.masked.value;\n const newDisplayValue = this.displayValue;\n const isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue;\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n if (this.el.value !== newDisplayValue) this.el.value = newDisplayValue;\n if (isChanged) this._fireChangeEvents();\n }\n\n /** Updates options with deep equal check, recreates @{link Masked} model if mask type changes */\n updateOptions(opts) {\n const {\n mask\n } = opts,\n restOpts = _objectWithoutPropertiesLoose(opts, _excluded);\n const updateMask = !this.maskEquals(mask);\n const updateOpts = !objectIncludes(this.masked, restOpts);\n if (updateMask) this.mask = mask;\n if (updateOpts) this.masked.updateOptions(restOpts);\n if (updateMask || updateOpts) this.updateControl();\n }\n\n /** Updates cursor */\n updateCursor(cursorPos) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos;\n\n // also queue change cursor for mobile browsers\n this._delayUpdateCursor(cursorPos);\n }\n\n /**\n Delays cursor update to support mobile browsers\n @private\n */\n _delayUpdateCursor(cursorPos) {\n this._abortUpdateCursor();\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(() => {\n if (!this.el) return; // if was destroyed\n this.cursorPos = this._changingCursorPos;\n this._abortUpdateCursor();\n }, 10);\n }\n\n /**\n Fires custom events\n @protected\n */\n _fireChangeEvents() {\n this._fireEvent('accept', this._inputEvent);\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n }\n\n /**\n Aborts delayed cursor update\n @private\n */\n _abortUpdateCursor() {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n\n /** Aligns cursor to nearest available position */\n alignCursor() {\n this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT));\n }\n\n /** Aligns cursor only if selection is empty */\n alignCursorFriendly() {\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n this.alignCursor();\n }\n\n /** Adds listener on custom event */\n on(ev, handler) {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n this._listeners[ev].push(handler);\n return this;\n }\n\n /** Removes custom event listener */\n off(ev, handler) {\n if (!this._listeners[ev]) return this;\n if (!handler) {\n delete this._listeners[ev];\n return this;\n }\n const hIndex = this._listeners[ev].indexOf(handler);\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n\n /** Handles view input event */\n _onInput(e) {\n this._inputEvent = e;\n this._abortUpdateCursor();\n\n // fix strange IE behavior\n if (!this._selection) return this.updateValue();\n const details = new ActionDetails(\n // new state\n this.el.value, this.cursorPos,\n // old state\n this.displayValue, this._selection);\n const oldRawValue = this.masked.rawInputValue;\n const offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection, {\n input: true,\n raw: true\n }).offset;\n\n // force align in remove direction only if no input chars were removed\n // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\n const removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\n let cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\n if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE);\n this.updateControl();\n this.updateCursor(cursorPos);\n delete this._inputEvent;\n }\n\n /** Handles view change event and commits model value */\n _onChange() {\n if (this.displayValue !== this.el.value) {\n this.updateValue();\n }\n this.masked.doCommit();\n this.updateControl();\n this._saveSelection();\n }\n\n /** Handles view drop event, prevents by default */\n _onDrop(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n /** Restore last selection on focus */\n _onFocus(ev) {\n this.alignCursorFriendly();\n }\n\n /** Restore last selection on focus */\n _onClick(ev) {\n this.alignCursorFriendly();\n }\n\n /** Unbind view events and removes element reference */\n destroy() {\n this._unbindEvents();\n // $FlowFixMe why not do so?\n this._listeners.length = 0;\n // $FlowFixMe\n delete this.el;\n }\n}\nIMask.InputMask = InputMask;\n\nexport { InputMask as default };\n","import IMask from '../core/holder.js';\n\n/**\n Generic element API to use with mask\n @interface\n*/\nclass MaskElement {\n /** */\n\n /** */\n\n /** */\n\n /** Safely returns selection start */\n get selectionStart() {\n let start;\n try {\n start = this._unsafeSelectionStart;\n } catch (e) {}\n return start != null ? start : this.value.length;\n }\n\n /** Safely returns selection end */\n get selectionEnd() {\n let end;\n try {\n end = this._unsafeSelectionEnd;\n } catch (e) {}\n return end != null ? end : this.value.length;\n }\n\n /** Safely sets element selection */\n select(start, end) {\n if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\n try {\n this._unsafeSelect(start, end);\n } catch (e) {}\n }\n\n /** Should be overriden in subclasses */\n _unsafeSelect(start, end) {}\n /** Should be overriden in subclasses */\n get isActive() {\n return false;\n }\n /** Should be overriden in subclasses */\n bindEvents(handlers) {}\n /** Should be overriden in subclasses */\n unbindEvents() {}\n}\nIMask.MaskElement = MaskElement;\n\nexport { MaskElement as default };\n","import { DIRECTION } from './utils.js';\nimport './change-details.js';\nimport './holder.js';\n\n/** Provides details of changing input */\nclass ActionDetails {\n /** Current input value */\n\n /** Current cursor position */\n\n /** Old input value */\n\n /** Old selection */\n\n constructor(value, cursorPos, oldValue, oldSelection) {\n this.value = value;\n this.cursorPos = cursorPos;\n this.oldValue = oldValue;\n this.oldSelection = oldSelection;\n\n // double check if left part was changed (autofilling, other non-standard input triggers)\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n --this.oldSelection.start;\n }\n }\n\n /**\n Start changing position\n @readonly\n */\n get startChangePos() {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n\n /**\n Inserted symbols count\n @readonly\n */\n get insertedCount() {\n return this.cursorPos - this.startChangePos;\n }\n\n /**\n Inserted symbols\n @readonly\n */\n get inserted() {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n\n /**\n Removed symbols count\n @readonly\n */\n get removedCount() {\n // Math.max for opposite operation\n return Math.max(this.oldSelection.end - this.startChangePos ||\n // for Delete\n this.oldValue.length - this.value.length, 0);\n }\n\n /**\n Removed symbols\n @readonly\n */\n get removed() {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n\n /**\n Unchanged head symbols\n @readonly\n */\n get head() {\n return this.value.substring(0, this.startChangePos);\n }\n\n /**\n Unchanged tail symbols\n @readonly\n */\n get tail() {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n\n /**\n Remove direction\n @readonly\n */\n get removeDirection() {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE;\n\n // align right if delete at right\n return (this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos) &&\n // if not range removed (event with backspace)\n this.oldSelection.end === this.oldSelection.start ? DIRECTION.RIGHT : DIRECTION.LEFT;\n }\n}\n\nexport { ActionDetails as default };\n","import IMask from './holder.js';\n\n/**\n Provides details of changing model value\n @param {Object} [details]\n @param {string} [details.inserted] - Inserted symbols\n @param {boolean} [details.skip] - Can skip chars\n @param {number} [details.removeCount] - Removed symbols count\n @param {number} [details.tailShift] - Additional offset if any changes occurred before tail\n*/\nclass ChangeDetails {\n /** Inserted symbols */\n\n /** Can skip chars */\n\n /** Additional offset if any changes occurred before tail */\n\n /** Raw inserted is used by dynamic mask */\n\n constructor(details) {\n Object.assign(this, {\n inserted: '',\n rawInserted: '',\n skip: false,\n tailShift: 0\n }, details);\n }\n\n /**\n Aggregate changes\n @returns {ChangeDetails} `this`\n */\n aggregate(details) {\n this.rawInserted += details.rawInserted;\n this.skip = this.skip || details.skip;\n this.inserted += details.inserted;\n this.tailShift += details.tailShift;\n return this;\n }\n\n /** Total offset considering all changes */\n get offset() {\n return this.tailShift + this.inserted.length;\n }\n}\nIMask.ChangeDetails = ChangeDetails;\n\nexport { ChangeDetails as default };\n","/** Provides details of continuous extracted tail */\nclass ContinuousTailDetails {\n /** Tail value as string */\n\n /** Tail start position */\n\n /** Start position */\n\n constructor() {\n let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n let from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n let stop = arguments.length > 2 ? arguments[2] : undefined;\n this.value = value;\n this.from = from;\n this.stop = stop;\n }\n toString() {\n return this.value;\n }\n extend(tail) {\n this.value += String(tail);\n }\n appendTo(masked) {\n return masked.append(this.toString(), {\n tail: true\n }).aggregate(masked._appendPlaceholder());\n }\n get state() {\n return {\n value: this.value,\n from: this.from,\n stop: this.stop\n };\n }\n set state(state) {\n Object.assign(this, state);\n }\n unshift(beforePos) {\n if (!this.value.length || beforePos != null && this.from >= beforePos) return '';\n const shiftChar = this.value[0];\n this.value = this.value.slice(1);\n return shiftChar;\n }\n shift() {\n if (!this.value.length) return '';\n const shiftChar = this.value[this.value.length - 1];\n this.value = this.value.slice(0, -1);\n return shiftChar;\n }\n}\n\nexport { ContinuousTailDetails as default };\n","/**\n * Applies mask on element.\n * @constructor\n * @param {HTMLInputElement|HTMLTextAreaElement|MaskElement} el - Element to apply mask\n * @param {Object} opts - Custom mask options\n * @return {InputMask}\n */\nfunction IMask(el) {\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // currently available only for input-like elements\n return new IMask.InputMask(el, opts);\n}\n\nexport { IMask as default };\n","import ChangeDetails from './change-details.js';\nimport './holder.js';\n\n/** Checks if value is string */\nfunction isString(str) {\n return typeof str === 'string' || str instanceof String;\n}\n\n/**\n Direction\n @prop {string} NONE\n @prop {string} LEFT\n @prop {string} FORCE_LEFT\n @prop {string} RIGHT\n @prop {string} FORCE_RIGHT\n*/\nconst DIRECTION = {\n NONE: 'NONE',\n LEFT: 'LEFT',\n FORCE_LEFT: 'FORCE_LEFT',\n RIGHT: 'RIGHT',\n FORCE_RIGHT: 'FORCE_RIGHT'\n};\n/**\n Direction\n @enum {string}\n*/\n\n/** Returns next char index in direction */\nfunction indexInDirection(pos, direction) {\n if (direction === DIRECTION.LEFT) --pos;\n return pos;\n}\n\n/** Returns next char position in direction */\nfunction posInDirection(pos, direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return --pos;\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return ++pos;\n default:\n return pos;\n }\n}\n\n/** */\nfunction forceDirection(direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n return DIRECTION.FORCE_LEFT;\n case DIRECTION.RIGHT:\n return DIRECTION.FORCE_RIGHT;\n default:\n return direction;\n }\n}\n\n/** Escapes regular expression control chars */\nfunction escapeRegExp(str) {\n return str.replace(/([.*+?^=!:${}()|[\\]\\/\\\\])/g, '\\\\$1');\n}\nfunction normalizePrepare(prep) {\n return Array.isArray(prep) ? prep : [prep, new ChangeDetails()];\n}\n\n// cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\nfunction objectIncludes(b, a) {\n if (a === b) return true;\n var arrA = Array.isArray(a),\n arrB = Array.isArray(b),\n i;\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++) if (!objectIncludes(a[i], b[i])) return false;\n return true;\n }\n if (arrA != arrB) return false;\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n var dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n var regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n var keys = Object.keys(a);\n // if (keys.length !== Object.keys(b).length) return false;\n\n for (i = 0; i < keys.length; i++)\n // $FlowFixMe ... ???\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n for (i = 0; i < keys.length; i++) if (!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n return true;\n } else if (a && b && typeof a === 'function' && typeof b === 'function') {\n return a.toString() === b.toString();\n }\n return false;\n}\n\n/** Selection range */\n\nexport { DIRECTION, escapeRegExp, forceDirection, indexInDirection, isString, normalizePrepare, objectIncludes, posInDirection };\n","export { default as InputMask } from './controls/input.js';\nimport IMask from './core/holder.js';\nexport { default } from './core/holder.js';\nexport { default as Masked } from './masked/base.js';\nexport { default as MaskedPattern } from './masked/pattern.js';\nexport { default as MaskedEnum } from './masked/enum.js';\nexport { default as MaskedRange } from './masked/range.js';\nexport { default as MaskedNumber } from './masked/number.js';\nexport { default as MaskedDate } from './masked/date.js';\nexport { default as MaskedRegExp } from './masked/regexp.js';\nexport { default as MaskedFunction } from './masked/function.js';\nexport { default as MaskedDynamic } from './masked/dynamic.js';\nexport { default as createMask } from './masked/factory.js';\nexport { default as MaskElement } from './controls/mask-element.js';\nexport { default as HTMLMaskElement } from './controls/html-mask-element.js';\nexport { default as HTMLContenteditableMaskElement } from './controls/html-contenteditable-mask-element.js';\nexport { PIPE_TYPE, createPipe, pipe } from './masked/pipe.js';\nexport { default as ChangeDetails } from './core/change-details.js';\nimport './_rollupPluginBabelHelpers-6b3bd404.js';\nimport './core/utils.js';\nimport './core/action-details.js';\nimport './core/continuous-tail-details.js';\nimport './masked/pattern/input-definition.js';\nimport './masked/pattern/fixed-definition.js';\nimport './masked/pattern/chunk-tail-details.js';\nimport './masked/pattern/cursor.js';\n\ntry {\n globalThis.IMask = IMask;\n} catch (e) {}\n","import ChangeDetails from '../core/change-details.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport { isString, normalizePrepare, DIRECTION, forceDirection } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n/** Supported mask type */\n\n/** Append flags */\n\n/** Extract flags */\n\n/** Provides common masking stuff */\nclass Masked {\n // $Shape<MaskedOptions>; TODO after fix https://github.com/facebook/flow/issues/4773\n\n /** @type {Mask} */\n\n /** */ // $FlowFixMe no ideas\n /** Transforms value before mask processing */\n /** Validates if value is acceptable */\n /** Does additional processing in the end of editing */\n /** Format typed value to string */\n /** Parse strgin to get typed value */\n /** Enable characters overwriting */\n /** */\n /** */\n /** */\n constructor(opts) {\n this._value = '';\n this._update(Object.assign({}, Masked.DEFAULTS, opts));\n this.isInitialized = true;\n }\n\n /** Sets and applies new options */\n updateOptions(opts) {\n if (!Object.keys(opts).length) return;\n // $FlowFixMe\n this.withValueRefresh(this._update.bind(this, opts));\n }\n\n /**\n Sets new options\n @protected\n */\n _update(opts) {\n Object.assign(this, opts);\n }\n\n /** Mask state */\n get state() {\n return {\n _value: this.value\n };\n }\n set state(state) {\n this._value = state._value;\n }\n\n /** Resets value */\n reset() {\n this._value = '';\n }\n\n /** */\n get value() {\n return this._value;\n }\n set value(value) {\n this.resolve(value);\n }\n\n /** Resolve new value */\n resolve(value) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n input: true\n };\n this.reset();\n this.append(value, flags, '');\n this.doCommit();\n return this.value;\n }\n\n /** */\n get unmaskedValue() {\n return this.value;\n }\n set unmaskedValue(value) {\n this.reset();\n this.append(value, {}, '');\n this.doCommit();\n }\n\n /** */\n get typedValue() {\n return this.doParse(this.value);\n }\n set typedValue(value) {\n this.value = this.doFormat(value);\n }\n\n /** Value that includes raw user input */\n get rawInputValue() {\n return this.extractInput(0, this.value.length, {\n raw: true\n });\n }\n set rawInputValue(value) {\n this.reset();\n this.append(value, {\n raw: true\n }, '');\n this.doCommit();\n }\n get displayValue() {\n return this.value;\n }\n\n /** */\n get isComplete() {\n return true;\n }\n\n /** */\n get isFilled() {\n return this.isComplete;\n }\n\n /** Finds nearest input position in direction */\n nearestInputPos(cursorPos, direction) {\n return cursorPos;\n }\n totalInputPositions() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return Math.min(this.value.length, toPos - fromPos);\n }\n\n /** Extracts value in range considering flags */\n extractInput() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return this.value.slice(fromPos, toPos);\n }\n\n /** Extracts tail in range */\n extractTail() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n\n /** Appends tail */\n // $FlowFixMe no ideas\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n\n /** Appends char */\n _appendCharRaw(ch) {\n if (!ch) return new ChangeDetails();\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch\n });\n }\n\n /** Appends char */\n _appendChar(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let checkTail = arguments.length > 2 ? arguments[2] : undefined;\n const consistentState = this.state;\n let details;\n [ch, details] = normalizePrepare(this.doPrepare(ch, flags));\n details = details.aggregate(this._appendCharRaw(ch, flags));\n if (details.inserted) {\n let consistentTail;\n let appended = this.doValidate(flags) !== false;\n if (appended && checkTail != null) {\n // validation ok, check tail\n const beforeTailState = this.state;\n if (this.overwrite === true) {\n consistentTail = checkTail.state;\n checkTail.unshift(this.value.length - details.tailShift);\n }\n let tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString();\n\n // not ok, try shift\n if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {\n this.state = beforeTailState;\n consistentTail = checkTail.state;\n checkTail.shift();\n tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString();\n }\n\n // if ok, rollback state after tail\n if (appended && tailDetails.inserted) this.state = beforeTailState;\n }\n\n // revert all if something went wrong\n if (!appended) {\n details = new ChangeDetails();\n this.state = consistentState;\n if (checkTail && consistentTail) checkTail.state = consistentTail;\n }\n }\n return details;\n }\n\n /** Appends optional placeholder at end */\n _appendPlaceholder() {\n return new ChangeDetails();\n }\n\n /** Appends optional eager placeholder at end */\n _appendEager() {\n return new ChangeDetails();\n }\n\n /** Appends symbols considering flags */\n // $FlowFixMe no ideas\n append(str, flags, tail) {\n if (!isString(str)) throw new Error('value should be string');\n const details = new ChangeDetails();\n const checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\n if (flags !== null && flags !== void 0 && flags.tail) flags._beforeTailState = this.state;\n for (let ci = 0; ci < str.length; ++ci) {\n const d = this._appendChar(str[ci], flags, checkTail);\n if (!d.rawInserted && !this.doSkipInvalid(str[ci], flags, checkTail)) break;\n details.aggregate(d);\n }\n if ((this.eager === true || this.eager === 'append') && flags !== null && flags !== void 0 && flags.input && str) {\n details.aggregate(this._appendEager());\n }\n\n // append tail but aggregate only tailShift\n if (checkTail != null) {\n details.tailShift += this.appendTail(checkTail).tailShift;\n // TODO it's a good idea to clear state after appending ends\n // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\n // this._resetBeforeTailState();\n }\n\n return details;\n }\n\n /** */\n remove() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n this._value = this.value.slice(0, fromPos) + this.value.slice(toPos);\n return new ChangeDetails();\n }\n\n /** Calls function and reapplies current value */\n withValueRefresh(fn) {\n if (this._refreshing || !this.isInitialized) return fn();\n this._refreshing = true;\n const rawInput = this.rawInputValue;\n const value = this.value;\n const ret = fn();\n this.rawInputValue = rawInput;\n // append lost trailing chars at end\n if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\n this.append(value.slice(this.value.length), {}, '');\n }\n delete this._refreshing;\n return ret;\n }\n\n /** */\n runIsolated(fn) {\n if (this._isolated || !this.isInitialized) return fn(this);\n this._isolated = true;\n const state = this.state;\n const ret = fn(this);\n this.state = state;\n delete this._isolated;\n return ret;\n }\n\n /** */\n doSkipInvalid(ch) {\n return this.skipInvalid;\n }\n\n /**\n Prepares string before mask processing\n @protected\n */\n doPrepare(str) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.prepare ? this.prepare(str, this, flags) : str;\n }\n\n /**\n Validates if value is acceptable\n @protected\n */\n doValidate(flags) {\n return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags));\n }\n\n /**\n Does additional processing in the end of editing\n @protected\n */\n doCommit() {\n if (this.commit) this.commit(this.value, this);\n }\n\n /** */\n doFormat(value) {\n return this.format ? this.format(value, this) : value;\n }\n\n /** */\n doParse(str) {\n return this.parse ? this.parse(str, this) : str;\n }\n\n /** */\n splice(start, deleteCount, inserted, removeDirection) {\n let flags = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n input: true\n };\n const tailPos = start + deleteCount;\n const tail = this.extractTail(tailPos);\n const eagerRemove = this.eager === true || this.eager === 'remove';\n let oldRawValue;\n if (eagerRemove) {\n removeDirection = forceDirection(removeDirection);\n oldRawValue = this.extractInput(0, tailPos, {\n raw: true\n });\n }\n let startChangePos = start;\n const details = new ChangeDetails();\n\n // if it is just deletion without insertion\n if (removeDirection !== DIRECTION.NONE) {\n startChangePos = this.nearestInputPos(start, deleteCount > 1 && start !== 0 && !eagerRemove ? DIRECTION.NONE : removeDirection);\n\n // adjust tailShift if start was aligned\n details.tailShift = startChangePos - start;\n }\n details.aggregate(this.remove(startChangePos));\n if (eagerRemove && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) {\n if (removeDirection === DIRECTION.FORCE_LEFT) {\n let valLength;\n while (oldRawValue === this.rawInputValue && (valLength = this.value.length)) {\n details.aggregate(new ChangeDetails({\n tailShift: -1\n })).aggregate(this.remove(valLength - 1));\n }\n } else if (removeDirection === DIRECTION.FORCE_RIGHT) {\n tail.unshift();\n }\n }\n return details.aggregate(this.append(inserted, flags, tail));\n }\n maskEquals(mask) {\n return this.mask === mask;\n }\n typedValueEquals(value) {\n const tval = this.typedValue;\n return value === tval || Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval) || this.doFormat(value) === this.doFormat(this.typedValue);\n }\n}\nMasked.DEFAULTS = {\n format: String,\n parse: v => v,\n skipInvalid: true\n};\nMasked.EMPTY_VALUES = [undefined, null, ''];\nIMask.Masked = Masked;\n\nexport { Masked as default };\n","import MaskedPattern from './pattern.js';\nimport MaskedRange from './range.js';\nimport IMask from '../core/holder.js';\nimport '../_rollupPluginBabelHelpers-6b3bd404.js';\nimport '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/input-definition.js';\nimport './factory.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './regexp.js';\n\n/** Date mask */\nclass MaskedDate extends MaskedPattern {\n /** Pattern mask for date according to {@link MaskedDate#format} */\n\n /** Start date */\n\n /** End date */\n\n /** */\n\n /**\n @param {Object} opts\n */\n constructor(opts) {\n super(Object.assign({}, MaskedDate.DEFAULTS, opts));\n }\n\n /**\n @override\n */\n _update(opts) {\n if (opts.mask === Date) delete opts.mask;\n if (opts.pattern) opts.mask = opts.pattern;\n const blocks = opts.blocks;\n opts.blocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS());\n // adjust year block\n if (opts.min) opts.blocks.Y.from = opts.min.getFullYear();\n if (opts.max) opts.blocks.Y.to = opts.max.getFullYear();\n if (opts.min && opts.max && opts.blocks.Y.from === opts.blocks.Y.to) {\n opts.blocks.m.from = opts.min.getMonth() + 1;\n opts.blocks.m.to = opts.max.getMonth() + 1;\n if (opts.blocks.m.from === opts.blocks.m.to) {\n opts.blocks.d.from = opts.min.getDate();\n opts.blocks.d.to = opts.max.getDate();\n }\n }\n Object.assign(opts.blocks, this.blocks, blocks);\n\n // add autofix\n Object.keys(opts.blocks).forEach(bk => {\n const b = opts.blocks[bk];\n if (!('autofix' in b) && 'autofix' in opts) b.autofix = opts.autofix;\n });\n super._update(opts);\n }\n\n /**\n @override\n */\n doValidate() {\n const date = this.date;\n return super.doValidate(...arguments) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max));\n }\n\n /** Checks if date is exists */\n isDateExist(str) {\n return this.format(this.parse(str, this), this).indexOf(str) >= 0;\n }\n\n /** Parsed Date */\n get date() {\n return this.typedValue;\n }\n set date(date) {\n this.typedValue = date;\n }\n\n /**\n @override\n */\n get typedValue() {\n return this.isComplete ? super.typedValue : null;\n }\n set typedValue(value) {\n super.typedValue = value;\n }\n\n /**\n @override\n */\n maskEquals(mask) {\n return mask === Date || super.maskEquals(mask);\n }\n}\nMaskedDate.DEFAULTS = {\n pattern: 'd{.}`m{.}`Y',\n format: date => {\n if (!date) return '';\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = date.getFullYear();\n return [day, month, year].join('.');\n },\n parse: str => {\n const [day, month, year] = str.split('.');\n return new Date(year, month - 1, day);\n }\n};\nMaskedDate.GET_DEFAULT_BLOCKS = () => ({\n d: {\n mask: MaskedRange,\n from: 1,\n to: 31,\n maxLength: 2\n },\n m: {\n mask: MaskedRange,\n from: 1,\n to: 12,\n maxLength: 2\n },\n Y: {\n mask: MaskedRange,\n from: 1900,\n to: 9999\n }\n});\nIMask.MaskedDate = MaskedDate;\n\nexport { MaskedDate as default };\n","import { _ as _objectWithoutPropertiesLoose } from '../_rollupPluginBabelHelpers-6b3bd404.js';\nimport { DIRECTION, normalizePrepare, objectIncludes } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport createMask from './factory.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\nconst _excluded = [\"compiledMasks\", \"currentMaskRef\", \"currentMask\"],\n _excluded2 = [\"mask\"];\n/** Dynamic mask for choosing apropriate mask in run-time */\nclass MaskedDynamic extends Masked {\n /** Currently chosen mask */\n\n /** Compliled {@link Masked} options */\n\n /** Chooses {@link Masked} depending on input value */\n\n /**\n @param {Object} opts\n */\n constructor(opts) {\n super(Object.assign({}, MaskedDynamic.DEFAULTS, opts));\n this.currentMask = null;\n }\n\n /**\n @override\n */\n _update(opts) {\n super._update(opts);\n if ('mask' in opts) {\n // mask could be totally dynamic with only `dispatch` option\n this.compiledMasks = Array.isArray(opts.mask) ? opts.mask.map(m => createMask(m)) : [];\n\n // this.currentMask = this.doDispatch(''); // probably not needed but lets see\n }\n }\n\n /**\n @override\n */\n _appendCharRaw(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const details = this._applyDispatch(ch, flags);\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendChar(ch, this.currentMaskFlags(flags)));\n }\n return details;\n }\n _applyDispatch() {\n let appended = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let tail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n const prevValueBeforeTail = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._value : this.value;\n const inputValue = this.rawInputValue;\n const insertValue = flags.tail && flags._beforeTailState != null ?\n // $FlowFixMe - tired to fight with type system\n flags._beforeTailState._rawInputValue : inputValue;\n const tailValue = inputValue.slice(insertValue.length);\n const prevMask = this.currentMask;\n const details = new ChangeDetails();\n const prevMaskState = prevMask === null || prevMask === void 0 ? void 0 : prevMask.state;\n\n // clone flags to prevent overwriting `_beforeTailState`\n this.currentMask = this.doDispatch(appended, Object.assign({}, flags), tail);\n\n // restore state after dispatch\n if (this.currentMask) {\n if (this.currentMask !== prevMask) {\n // if mask changed reapply input\n this.currentMask.reset();\n if (insertValue) {\n // $FlowFixMe - it's ok, we don't change current mask above\n const d = this.currentMask.append(insertValue, {\n raw: true\n });\n details.tailShift = d.inserted.length - prevValueBeforeTail.length;\n }\n if (tailValue) {\n // $FlowFixMe - it's ok, we don't change current mask above\n details.tailShift += this.currentMask.append(tailValue, {\n raw: true,\n tail: true\n }).tailShift;\n }\n } else {\n // Dispatch can do something bad with state, so\n // restore prev mask state\n this.currentMask.state = prevMaskState;\n }\n }\n return details;\n }\n _appendPlaceholder() {\n const details = this._applyDispatch(...arguments);\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendPlaceholder());\n }\n return details;\n }\n\n /**\n @override\n */\n _appendEager() {\n const details = this._applyDispatch(...arguments);\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendEager());\n }\n return details;\n }\n appendTail(tail) {\n const details = new ChangeDetails();\n if (tail) details.aggregate(this._applyDispatch('', {}, tail));\n return details.aggregate(this.currentMask ? this.currentMask.appendTail(tail) : super.appendTail(tail));\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta, _flags$_beforeTailSta2;\n return Object.assign({}, flags, {\n _beforeTailState: ((_flags$_beforeTailSta = flags._beforeTailState) === null || _flags$_beforeTailSta === void 0 ? void 0 : _flags$_beforeTailSta.currentMaskRef) === this.currentMask && ((_flags$_beforeTailSta2 = flags._beforeTailState) === null || _flags$_beforeTailSta2 === void 0 ? void 0 : _flags$_beforeTailSta2.currentMask) || flags._beforeTailState\n });\n }\n\n /**\n @override\n */\n doDispatch(appended) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let tail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n return this.dispatch(appended, this, flags, tail);\n }\n\n /**\n @override\n */\n doValidate(flags) {\n return super.doValidate(flags) && (!this.currentMask || this.currentMask.doValidate(this.currentMaskFlags(flags)));\n }\n\n /**\n @override\n */\n doPrepare(str) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let [s, details] = normalizePrepare(super.doPrepare(str, flags));\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = normalizePrepare(super.doPrepare(s, this.currentMaskFlags(flags)));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n\n /**\n @override\n */\n reset() {\n var _this$currentMask;\n (_this$currentMask = this.currentMask) === null || _this$currentMask === void 0 ? void 0 : _this$currentMask.reset();\n this.compiledMasks.forEach(m => m.reset());\n }\n\n /**\n @override\n */\n get value() {\n return this.currentMask ? this.currentMask.value : '';\n }\n set value(value) {\n super.value = value;\n }\n\n /**\n @override\n */\n get unmaskedValue() {\n return this.currentMask ? this.currentMask.unmaskedValue : '';\n }\n set unmaskedValue(unmaskedValue) {\n super.unmaskedValue = unmaskedValue;\n }\n\n /**\n @override\n */\n get typedValue() {\n return this.currentMask ? this.currentMask.typedValue : '';\n }\n\n // probably typedValue should not be used with dynamic\n set typedValue(value) {\n let unmaskedValue = String(value);\n\n // double check it\n if (this.currentMask) {\n this.currentMask.typedValue = value;\n unmaskedValue = this.currentMask.unmaskedValue;\n }\n this.unmaskedValue = unmaskedValue;\n }\n get displayValue() {\n return this.currentMask ? this.currentMask.displayValue : '';\n }\n\n /**\n @override\n */\n get isComplete() {\n var _this$currentMask2;\n return Boolean((_this$currentMask2 = this.currentMask) === null || _this$currentMask2 === void 0 ? void 0 : _this$currentMask2.isComplete);\n }\n\n /**\n @override\n */\n get isFilled() {\n var _this$currentMask3;\n return Boolean((_this$currentMask3 = this.currentMask) === null || _this$currentMask3 === void 0 ? void 0 : _this$currentMask3.isFilled);\n }\n\n /**\n @override\n */\n remove() {\n const details = new ChangeDetails();\n if (this.currentMask) {\n details.aggregate(this.currentMask.remove(...arguments))\n // update with dispatch\n .aggregate(this._applyDispatch());\n }\n return details;\n }\n\n /**\n @override\n */\n get state() {\n var _this$currentMask4;\n return Object.assign({}, super.state, {\n _rawInputValue: this.rawInputValue,\n compiledMasks: this.compiledMasks.map(m => m.state),\n currentMaskRef: this.currentMask,\n currentMask: (_this$currentMask4 = this.currentMask) === null || _this$currentMask4 === void 0 ? void 0 : _this$currentMask4.state\n });\n }\n set state(state) {\n const {\n compiledMasks,\n currentMaskRef,\n currentMask\n } = state,\n maskedState = _objectWithoutPropertiesLoose(state, _excluded);\n this.compiledMasks.forEach((m, mi) => m.state = compiledMasks[mi]);\n if (currentMaskRef != null) {\n this.currentMask = currentMaskRef;\n this.currentMask.state = currentMask;\n }\n super.state = maskedState;\n }\n\n /**\n @override\n */\n extractInput() {\n return this.currentMask ? this.currentMask.extractInput(...arguments) : '';\n }\n\n /**\n @override\n */\n extractTail() {\n return this.currentMask ? this.currentMask.extractTail(...arguments) : super.extractTail(...arguments);\n }\n\n /**\n @override\n */\n doCommit() {\n if (this.currentMask) this.currentMask.doCommit();\n super.doCommit();\n }\n\n /**\n @override\n */\n nearestInputPos() {\n return this.currentMask ? this.currentMask.nearestInputPos(...arguments) : super.nearestInputPos(...arguments);\n }\n get overwrite() {\n return this.currentMask ? this.currentMask.overwrite : super.overwrite;\n }\n set overwrite(overwrite) {\n console.warn('\"overwrite\" option is not available in dynamic mask, use this option in siblings');\n }\n get eager() {\n return this.currentMask ? this.currentMask.eager : super.eager;\n }\n set eager(eager) {\n console.warn('\"eager\" option is not available in dynamic mask, use this option in siblings');\n }\n get skipInvalid() {\n return this.currentMask ? this.currentMask.skipInvalid : super.skipInvalid;\n }\n set skipInvalid(skipInvalid) {\n if (this.isInitialized || skipInvalid !== Masked.DEFAULTS.skipInvalid) {\n console.warn('\"skipInvalid\" option is not available in dynamic mask, use this option in siblings');\n }\n }\n\n /**\n @override\n */\n maskEquals(mask) {\n return Array.isArray(mask) && this.compiledMasks.every((m, mi) => {\n if (!mask[mi]) return;\n const _mask$mi = mask[mi],\n {\n mask: oldMask\n } = _mask$mi,\n restOpts = _objectWithoutPropertiesLoose(_mask$mi, _excluded2);\n return objectIncludes(m, restOpts) && m.maskEquals(oldMask);\n });\n }\n\n /**\n @override\n */\n typedValueEquals(value) {\n var _this$currentMask5;\n return Boolean((_this$currentMask5 = this.currentMask) === null || _this$currentMask5 === void 0 ? void 0 : _this$currentMask5.typedValueEquals(value));\n }\n}\nMaskedDynamic.DEFAULTS = {\n dispatch: (appended, masked, flags, tail) => {\n if (!masked.compiledMasks.length) return;\n const inputValue = masked.rawInputValue;\n\n // simulate input\n const inputs = masked.compiledMasks.map((m, index) => {\n const isCurrent = masked.currentMask === m;\n const startInputPos = isCurrent ? m.value.length : m.nearestInputPos(m.value.length, DIRECTION.FORCE_LEFT);\n if (m.rawInputValue !== inputValue) {\n m.reset();\n m.append(inputValue, {\n raw: true\n });\n } else if (!isCurrent) {\n m.remove(startInputPos);\n }\n m.append(appended, masked.currentMaskFlags(flags));\n m.appendTail(tail);\n return {\n index,\n weight: m.rawInputValue.length,\n totalInputPositions: m.totalInputPositions(0, Math.max(startInputPos, m.nearestInputPos(m.value.length, DIRECTION.FORCE_LEFT)))\n };\n });\n\n // pop masks with longer values first\n inputs.sort((i1, i2) => i2.weight - i1.weight || i2.totalInputPositions - i1.totalInputPositions);\n return masked.compiledMasks[inputs[0].index];\n }\n};\nIMask.MaskedDynamic = MaskedDynamic;\n\nexport { MaskedDynamic as default };\n","import MaskedPattern from './pattern.js';\nimport IMask from '../core/holder.js';\nimport '../_rollupPluginBabelHelpers-6b3bd404.js';\nimport '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/input-definition.js';\nimport './factory.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './regexp.js';\n\n/** Pattern which validates enum values */\nclass MaskedEnum extends MaskedPattern {\n /**\n @override\n @param {Object} opts\n */\n _update(opts) {\n // TODO type\n if (opts.enum) opts.mask = '*'.repeat(opts.enum[0].length);\n super._update(opts);\n }\n\n /**\n @override\n */\n doValidate() {\n return this.enum.some(e => e.indexOf(this.unmaskedValue) >= 0) && super.doValidate(...arguments);\n }\n}\nIMask.MaskedEnum = MaskedEnum;\n\nexport { MaskedEnum as default };\n","import { isString } from '../core/utils.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\n\n/** Get Masked class by mask type */\nfunction maskedClass(mask) {\n if (mask == null) {\n throw new Error('mask property should be defined');\n }\n\n // $FlowFixMe\n if (mask instanceof RegExp) return IMask.MaskedRegExp;\n // $FlowFixMe\n if (isString(mask)) return IMask.MaskedPattern;\n // $FlowFixMe\n if (mask instanceof Date || mask === Date) return IMask.MaskedDate;\n // $FlowFixMe\n if (mask instanceof Number || typeof mask === 'number' || mask === Number) return IMask.MaskedNumber;\n // $FlowFixMe\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic;\n // $FlowFixMe\n if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask;\n // $FlowFixMe\n if (mask instanceof IMask.Masked) return mask.constructor;\n // $FlowFixMe\n if (mask instanceof Function) return IMask.MaskedFunction;\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n // $FlowFixMe\n return IMask.Masked;\n}\n\n/** Creates new {@link Masked} depending on mask type */\nfunction createMask(opts) {\n // $FlowFixMe\n if (IMask.Masked && opts instanceof IMask.Masked) return opts;\n opts = Object.assign({}, opts);\n const mask = opts.mask;\n\n // $FlowFixMe\n if (IMask.Masked && mask instanceof IMask.Masked) return mask;\n const MaskedClass = maskedClass(mask);\n if (!MaskedClass) throw new Error('Masked class is not found for provided mask, appropriate module needs to be import manually before creating mask.');\n return new MaskedClass(opts);\n}\nIMask.createMask = createMask;\n\nexport { createMask as default, maskedClass };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by custom Function */\nclass MaskedFunction extends Masked {\n /**\n @override\n @param {Object} opts\n */\n _update(opts) {\n if (opts.mask) opts.validate = opts.mask;\n super._update(opts);\n }\n}\nIMask.MaskedFunction = MaskedFunction;\n\nexport { MaskedFunction as default };\n","import { escapeRegExp, normalizePrepare, DIRECTION } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\n/**\n Number mask\n @param {Object} opts\n @param {string} opts.radix - Single char\n @param {string} opts.thousandsSeparator - Single char\n @param {Array<string>} opts.mapToRadix - Array of single chars\n @param {number} opts.min\n @param {number} opts.max\n @param {number} opts.scale - Digits after point\n @param {boolean} opts.signed - Allow negative\n @param {boolean} opts.normalizeZeros - Flag to remove leading and trailing zeros in the end of editing\n @param {boolean} opts.padFractionalZeros - Flag to pad trailing zeros after point in the end of editing\n*/\nclass MaskedNumber extends Masked {\n /** Single char */\n\n /** Single char */\n\n /** Array of single chars */\n\n /** */\n\n /** */\n\n /** Digits after point */\n\n /** */\n\n /** Flag to remove leading and trailing zeros in the end of editing */\n\n /** Flag to pad trailing zeros after point in the end of editing */\n\n constructor(opts) {\n super(Object.assign({}, MaskedNumber.DEFAULTS, opts));\n }\n\n /**\n @override\n */\n _update(opts) {\n super._update(opts);\n this._updateRegExps();\n }\n\n /** */\n _updateRegExps() {\n let start = '^' + (this.allowNegative ? '[+|\\\\-]?' : '');\n let mid = '\\\\d*';\n let end = (this.scale ? \"(\".concat(escapeRegExp(this.radix), \"\\\\d{0,\").concat(this.scale, \"})?\") : '') + '$';\n this._numberRegExp = new RegExp(start + mid + end);\n this._mapToRadixRegExp = new RegExp(\"[\".concat(this.mapToRadix.map(escapeRegExp).join(''), \"]\"), 'g');\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\n }\n\n /** */\n _removeThousandsSeparators(value) {\n return value.replace(this._thousandsSeparatorRegExp, '');\n }\n\n /** */\n _insertThousandsSeparators(value) {\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\n const parts = value.split(this.radix);\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\n return parts.join(this.radix);\n }\n\n /**\n @override\n */\n doPrepare(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n ch = this._removeThousandsSeparators(this.scale && this.mapToRadix.length && (\n /*\n radix should be mapped when\n 1) input is done from keyboard = flags.input && flags.raw\n 2) unmasked value is set = !flags.input && !flags.raw\n and should not be mapped when\n 1) value is set = flags.input && !flags.raw\n 2) raw value is set = !flags.input && flags.raw\n */\n flags.input && flags.raw || !flags.input && !flags.raw) ? ch.replace(this._mapToRadixRegExp, this.radix) : ch);\n const [prepCh, details] = normalizePrepare(super.doPrepare(ch, flags));\n if (ch && !prepCh) details.skip = true;\n return [prepCh, details];\n }\n\n /** */\n _separatorsCount(to) {\n let extendOnSeparators = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n let count = 0;\n for (let pos = 0; pos < to; ++pos) {\n if (this._value.indexOf(this.thousandsSeparator, pos) === pos) {\n ++count;\n if (extendOnSeparators) to += this.thousandsSeparator.length;\n }\n }\n return count;\n }\n\n /** */\n _separatorsCountFromSlice() {\n let slice = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._value;\n return this._separatorsCount(this._removeThousandsSeparators(slice).length, true);\n }\n\n /**\n @override\n */\n extractInput() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n let flags = arguments.length > 2 ? arguments[2] : undefined;\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n return this._removeThousandsSeparators(super.extractInput(fromPos, toPos, flags));\n }\n\n /**\n @override\n */\n _appendCharRaw(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.thousandsSeparator) return super._appendCharRaw(ch, flags);\n const prevBeforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue);\n this._value = this._removeThousandsSeparators(this.value);\n const appendDetails = super._appendCharRaw(ch, flags);\n this._value = this._insertThousandsSeparators(this._value);\n const beforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue);\n appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length;\n appendDetails.skip = !appendDetails.rawInserted && ch === this.thousandsSeparator;\n return appendDetails;\n }\n\n /** */\n _findSeparatorAround(pos) {\n if (this.thousandsSeparator) {\n const searchFrom = pos - this.thousandsSeparator.length + 1;\n const separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom);\n if (separatorPos <= pos) return separatorPos;\n }\n return -1;\n }\n _adjustRangeWithSeparators(from, to) {\n const separatorAroundFromPos = this._findSeparatorAround(from);\n if (separatorAroundFromPos >= 0) from = separatorAroundFromPos;\n const separatorAroundToPos = this._findSeparatorAround(to);\n if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length;\n return [from, to];\n }\n\n /**\n @override\n */\n remove() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n const valueBeforePos = this.value.slice(0, fromPos);\n const valueAfterPos = this.value.slice(toPos);\n const prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length);\n this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos));\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos);\n return new ChangeDetails({\n tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length\n });\n }\n\n /**\n @override\n */\n nearestInputPos(cursorPos, direction) {\n if (!this.thousandsSeparator) return cursorPos;\n switch (direction) {\n case DIRECTION.NONE:\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n {\n const separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1);\n if (separatorAtLeftPos >= 0) {\n const separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length;\n if (cursorPos < separatorAtLeftEndPos || this.value.length <= separatorAtLeftEndPos || direction === DIRECTION.FORCE_LEFT) {\n return separatorAtLeftPos;\n }\n }\n break;\n }\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n {\n const separatorAtRightPos = this._findSeparatorAround(cursorPos);\n if (separatorAtRightPos >= 0) {\n return separatorAtRightPos + this.thousandsSeparator.length;\n }\n }\n }\n return cursorPos;\n }\n\n /**\n @override\n */\n doValidate(flags) {\n // validate as string\n let valid = Boolean(this._removeThousandsSeparators(this.value).match(this._numberRegExp));\n if (valid) {\n // validate as number\n const number = this.number;\n valid = valid && !isNaN(number) && (\n // check min bound for negative values\n this.min == null || this.min >= 0 || this.min <= this.number) && (\n // check max bound for positive values\n this.max == null || this.max <= 0 || this.number <= this.max);\n }\n return valid && super.doValidate(flags);\n }\n\n /**\n @override\n */\n doCommit() {\n if (this.value) {\n const number = this.number;\n let validnum = number;\n\n // check bounds\n if (this.min != null) validnum = Math.max(validnum, this.min);\n if (this.max != null) validnum = Math.min(validnum, this.max);\n if (validnum !== number) this.unmaskedValue = this.doFormat(validnum);\n let formatted = this.value;\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\n if (this.padFractionalZeros && this.scale > 0) formatted = this._padFractionalZeros(formatted);\n this._value = formatted;\n }\n super.doCommit();\n }\n\n /** */\n _normalizeZeros(value) {\n const parts = this._removeThousandsSeparators(value).split(this.radix);\n\n // remove leading zeros\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, (match, sign, zeros, num) => sign + num);\n // add leading zero\n if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\n if (parts.length > 1) {\n parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\n if (!parts[1].length) parts.length = 1; // remove fractional\n }\n\n return this._insertThousandsSeparators(parts.join(this.radix));\n }\n\n /** */\n _padFractionalZeros(value) {\n if (!value) return value;\n const parts = value.split(this.radix);\n if (parts.length < 2) parts.push('');\n parts[1] = parts[1].padEnd(this.scale, '0');\n return parts.join(this.radix);\n }\n\n /** */\n doSkipInvalid(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let checkTail = arguments.length > 2 ? arguments[2] : undefined;\n const dropFractional = this.scale === 0 && ch !== this.thousandsSeparator && (ch === this.radix || ch === MaskedNumber.UNMASKED_RADIX || this.mapToRadix.includes(ch));\n return super.doSkipInvalid(ch, flags, checkTail) && !dropFractional;\n }\n\n /**\n @override\n */\n get unmaskedValue() {\n return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, MaskedNumber.UNMASKED_RADIX);\n }\n set unmaskedValue(unmaskedValue) {\n super.unmaskedValue = unmaskedValue;\n }\n\n /**\n @override\n */\n get typedValue() {\n return this.doParse(this.unmaskedValue);\n }\n set typedValue(n) {\n this.rawInputValue = this.doFormat(n).replace(MaskedNumber.UNMASKED_RADIX, this.radix);\n }\n\n /** Parsed Number */\n get number() {\n return this.typedValue;\n }\n set number(number) {\n this.typedValue = number;\n }\n\n /**\n Is negative allowed\n @readonly\n */\n get allowNegative() {\n return this.signed || this.min != null && this.min < 0 || this.max != null && this.max < 0;\n }\n\n /**\n @override\n */\n typedValueEquals(value) {\n // handle 0 -> '' case (typed = 0 even if value = '')\n // for details see https://github.com/uNmAnNeR/imaskjs/issues/134\n return (super.typedValueEquals(value) || MaskedNumber.EMPTY_VALUES.includes(value) && MaskedNumber.EMPTY_VALUES.includes(this.typedValue)) && !(value === 0 && this.value === '');\n }\n}\nMaskedNumber.UNMASKED_RADIX = '.';\nMaskedNumber.DEFAULTS = {\n radix: ',',\n thousandsSeparator: '',\n mapToRadix: [MaskedNumber.UNMASKED_RADIX],\n scale: 2,\n signed: false,\n normalizeZeros: true,\n padFractionalZeros: false,\n parse: Number,\n format: n => n.toLocaleString('en-US', {\n useGrouping: false,\n maximumFractionDigits: 20\n })\n};\nMaskedNumber.EMPTY_VALUES = [...Masked.EMPTY_VALUES, 0];\nIMask.MaskedNumber = MaskedNumber;\n\nexport { MaskedNumber as default };\n","import { _ as _objectWithoutPropertiesLoose } from '../_rollupPluginBabelHelpers-6b3bd404.js';\nimport { DIRECTION } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport PatternInputDefinition, { DEFAULT_INPUT_DEFINITIONS } from './pattern/input-definition.js';\nimport PatternFixedDefinition from './pattern/fixed-definition.js';\nimport ChunksTailDetails from './pattern/chunk-tail-details.js';\nimport PatternCursor from './pattern/cursor.js';\nimport createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport './regexp.js';\nimport '../core/continuous-tail-details.js';\n\nconst _excluded = [\"_blocks\"];\n\n/**\n Pattern mask\n @param {Object} opts\n @param {Object} opts.blocks\n @param {Object} opts.definitions\n @param {string} opts.placeholderChar\n @param {string} opts.displayChar\n @param {boolean} opts.lazy\n*/\nclass MaskedPattern extends Masked {\n /** */\n\n /** */\n\n /** Single char for empty input */\n\n /** Single char for filled input */\n\n /** Show placeholder only when needed */\n\n constructor() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO type $Shape<MaskedPatternOptions>={} does not work\n opts.definitions = Object.assign({}, DEFAULT_INPUT_DEFINITIONS, opts.definitions);\n super(Object.assign({}, MaskedPattern.DEFAULTS, opts));\n }\n\n /**\n @override\n @param {Object} opts\n */\n _update() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n super._update(opts);\n this._rebuildMask();\n }\n\n /** */\n _rebuildMask() {\n const defs = this.definitions;\n this._blocks = [];\n this._stops = [];\n this._maskedBlocks = {};\n let pattern = this.mask;\n if (!pattern || !defs) return;\n let unmaskingBlock = false;\n let optionalBlock = false;\n for (let i = 0; i < pattern.length; ++i) {\n var _defs$char, _defs$char2;\n if (this.blocks) {\n const p = pattern.slice(i);\n const bNames = Object.keys(this.blocks).filter(bName => p.indexOf(bName) === 0);\n // order by key length\n bNames.sort((a, b) => b.length - a.length);\n // use block name with max length\n const bName = bNames[0];\n if (bName) {\n // $FlowFixMe no ideas\n const maskedBlock = createMask(Object.assign({\n parent: this,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n overwrite: this.overwrite\n }, this.blocks[bName]));\n if (maskedBlock) {\n this._blocks.push(maskedBlock);\n\n // store block index\n if (!this._maskedBlocks[bName]) this._maskedBlocks[bName] = [];\n this._maskedBlocks[bName].push(this._blocks.length - 1);\n }\n i += bName.length - 1;\n continue;\n }\n }\n let char = pattern[i];\n let isInput = (char in defs);\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n continue;\n }\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n continue;\n }\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n continue;\n }\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++i;\n char = pattern[i];\n if (!char) break;\n isInput = false;\n }\n const maskOpts = (_defs$char = defs[char]) !== null && _defs$char !== void 0 && _defs$char.mask && !(((_defs$char2 = defs[char]) === null || _defs$char2 === void 0 ? void 0 : _defs$char2.mask.prototype) instanceof IMask.Masked) ? defs[char] : {\n mask: defs[char]\n };\n const def = isInput ? new PatternInputDefinition(Object.assign({\n parent: this,\n isOptional: optionalBlock,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar\n }, maskOpts)) : new PatternFixedDefinition({\n char,\n eager: this.eager,\n isUnmasking: unmaskingBlock\n });\n this._blocks.push(def);\n }\n }\n\n /**\n @override\n */\n get state() {\n return Object.assign({}, super.state, {\n _blocks: this._blocks.map(b => b.state)\n });\n }\n set state(state) {\n const {\n _blocks\n } = state,\n maskedState = _objectWithoutPropertiesLoose(state, _excluded);\n this._blocks.forEach((b, bi) => b.state = _blocks[bi]);\n super.state = maskedState;\n }\n\n /**\n @override\n */\n reset() {\n super.reset();\n this._blocks.forEach(b => b.reset());\n }\n\n /**\n @override\n */\n get isComplete() {\n return this._blocks.every(b => b.isComplete);\n }\n\n /**\n @override\n */\n get isFilled() {\n return this._blocks.every(b => b.isFilled);\n }\n get isFixed() {\n return this._blocks.every(b => b.isFixed);\n }\n get isOptional() {\n return this._blocks.every(b => b.isOptional);\n }\n\n /**\n @override\n */\n doCommit() {\n this._blocks.forEach(b => b.doCommit());\n super.doCommit();\n }\n\n /**\n @override\n */\n get unmaskedValue() {\n return this._blocks.reduce((str, b) => str += b.unmaskedValue, '');\n }\n set unmaskedValue(unmaskedValue) {\n super.unmaskedValue = unmaskedValue;\n }\n\n /**\n @override\n */\n get value() {\n // TODO return _value when not in change?\n return this._blocks.reduce((str, b) => str += b.value, '');\n }\n set value(value) {\n super.value = value;\n }\n get displayValue() {\n return this._blocks.reduce((str, b) => str += b.displayValue, '');\n }\n\n /**\n @override\n */\n appendTail(tail) {\n return super.appendTail(tail).aggregate(this._appendPlaceholder());\n }\n\n /**\n @override\n */\n _appendEager() {\n var _this$_mapPosToBlock;\n const details = new ChangeDetails();\n let startBlockIndex = (_this$_mapPosToBlock = this._mapPosToBlock(this.value.length)) === null || _this$_mapPosToBlock === void 0 ? void 0 : _this$_mapPosToBlock.index;\n if (startBlockIndex == null) return details;\n\n // TODO test if it works for nested pattern masks\n if (this._blocks[startBlockIndex].isFilled) ++startBlockIndex;\n for (let bi = startBlockIndex; bi < this._blocks.length; ++bi) {\n const d = this._blocks[bi]._appendEager();\n if (!d.inserted) break;\n details.aggregate(d);\n }\n return details;\n }\n\n /**\n @override\n */\n _appendCharRaw(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const blockIter = this._mapPosToBlock(this.value.length);\n const details = new ChangeDetails();\n if (!blockIter) return details;\n for (let bi = blockIter.index;; ++bi) {\n var _flags$_beforeTailSta, _flags$_beforeTailSta2;\n const block = this._blocks[bi];\n if (!block) break;\n const blockDetails = block._appendChar(ch, Object.assign({}, flags, {\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) === null || _flags$_beforeTailSta === void 0 ? void 0 : (_flags$_beforeTailSta2 = _flags$_beforeTailSta._blocks) === null || _flags$_beforeTailSta2 === void 0 ? void 0 : _flags$_beforeTailSta2[bi]\n }));\n const skip = blockDetails.skip;\n details.aggregate(blockDetails);\n if (skip || blockDetails.rawInserted) break; // go next char\n }\n\n return details;\n }\n\n /**\n @override\n */\n extractTail() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n const chunkTail = new ChunksTailDetails();\n if (fromPos === toPos) return chunkTail;\n this._forEachBlocksInRange(fromPos, toPos, (b, bi, bFromPos, bToPos) => {\n const blockChunk = b.extractTail(bFromPos, bToPos);\n blockChunk.stop = this._findStopBefore(bi);\n blockChunk.from = this._blockStartPos(bi);\n if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\n chunkTail.extend(blockChunk);\n });\n return chunkTail;\n }\n\n /**\n @override\n */\n extractInput() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n let flags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (fromPos === toPos) return '';\n let input = '';\n this._forEachBlocksInRange(fromPos, toPos, (b, _, fromPos, toPos) => {\n input += b.extractInput(fromPos, toPos, flags);\n });\n return input;\n }\n _findStopBefore(blockIndex) {\n let stopBefore;\n for (let si = 0; si < this._stops.length; ++si) {\n const stop = this._stops[si];\n if (stop <= blockIndex) stopBefore = stop;else break;\n }\n return stopBefore;\n }\n\n /** Appends placeholder depending on laziness */\n _appendPlaceholder(toBlockIndex) {\n const details = new ChangeDetails();\n if (this.lazy && toBlockIndex == null) return details;\n const startBlockIter = this._mapPosToBlock(this.value.length);\n if (!startBlockIter) return details;\n const startBlockIndex = startBlockIter.index;\n const endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n this._blocks.slice(startBlockIndex, endBlockIndex).forEach(b => {\n if (!b.lazy || toBlockIndex != null) {\n // $FlowFixMe `_blocks` may not be present\n const args = b._blocks != null ? [b._blocks.length] : [];\n const bDetails = b._appendPlaceholder(...args);\n this._value += bDetails.inserted;\n details.aggregate(bDetails);\n }\n });\n return details;\n }\n\n /** Finds block in pos */\n _mapPosToBlock(pos) {\n let accVal = '';\n for (let bi = 0; bi < this._blocks.length; ++bi) {\n const block = this._blocks[bi];\n const blockStartPos = accVal.length;\n accVal += block.value;\n if (pos <= accVal.length) {\n return {\n index: bi,\n offset: pos - blockStartPos\n };\n }\n }\n }\n\n /** */\n _blockStartPos(blockIndex) {\n return this._blocks.slice(0, blockIndex).reduce((pos, b) => pos += b.value.length, 0);\n }\n\n /** */\n _forEachBlocksInRange(fromPos) {\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n let fn = arguments.length > 2 ? arguments[2] : undefined;\n const fromBlockIter = this._mapPosToBlock(fromPos);\n if (fromBlockIter) {\n const toBlockIter = this._mapPosToBlock(toPos);\n // process first block\n const isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n const fromBlockStartPos = fromBlockIter.offset;\n const fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].value.length;\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n if (toBlockIter && !isSameBlock) {\n // process intermediate blocks\n for (let bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\n fn(this._blocks[bi], bi, 0, this._blocks[bi].value.length);\n }\n\n // process last block\n fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\n }\n }\n }\n\n /**\n @override\n */\n remove() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n const removeDetails = super.remove(fromPos, toPos);\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\n });\n return removeDetails;\n }\n\n /**\n @override\n */\n nearestInputPos(cursorPos) {\n let direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n if (!this._blocks.length) return 0;\n const cursor = new PatternCursor(this, cursorPos);\n if (direction === DIRECTION.NONE) {\n // -------------------------------------------------\n // NONE should only go out from fixed to the right!\n // -------------------------------------------------\n if (cursor.pushRightBeforeInput()) return cursor.pos;\n cursor.popState();\n if (cursor.pushLeftBeforeInput()) return cursor.pos;\n return this.value.length;\n }\n\n // FORCE is only about a|* otherwise is 0\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n // try to break fast when *|a\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeFilled();\n if (cursor.ok && cursor.pos === cursorPos) return cursorPos;\n cursor.popState();\n }\n\n // forward flow\n cursor.pushLeftBeforeInput();\n cursor.pushLeftBeforeRequired();\n cursor.pushLeftBeforeFilled();\n\n // backward flow\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n }\n if (cursor.ok) return cursor.pos;\n if (direction === DIRECTION.FORCE_LEFT) return 0;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n\n // cursor.popState();\n // if (\n // cursor.pushRightBeforeInput() &&\n // // TODO HACK for lazy if has aligned left inside fixed and has came to the start - use start position\n // (!this.lazy || this.extractInput())\n // ) return cursor.pos;\n\n return 0;\n }\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // forward flow\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.pushRightBeforeFilled()) return cursor.pos;\n if (direction === DIRECTION.FORCE_RIGHT) return this.value.length;\n\n // backward flow\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return this.nearestInputPos(cursorPos, DIRECTION.LEFT);\n }\n return cursorPos;\n }\n\n /**\n @override\n */\n totalInputPositions() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n let total = 0;\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n total += b.totalInputPositions(bFromPos, bToPos);\n });\n return total;\n }\n\n /** Get block by name */\n maskedBlock(name) {\n return this.maskedBlocks(name)[0];\n }\n\n /** Get all blocks by name */\n maskedBlocks(name) {\n const indices = this._maskedBlocks[name];\n if (!indices) return [];\n return indices.map(gi => this._blocks[gi]);\n }\n}\nMaskedPattern.DEFAULTS = {\n lazy: true,\n placeholderChar: '_'\n};\nMaskedPattern.STOP_CHAR = '`';\nMaskedPattern.ESCAPE_CHAR = '\\\\';\nMaskedPattern.InputDefinition = PatternInputDefinition;\nMaskedPattern.FixedDefinition = PatternFixedDefinition;\nIMask.MaskedPattern = MaskedPattern;\n\nexport { MaskedPattern as default };\n","import { _ as _objectWithoutPropertiesLoose } from '../../_rollupPluginBabelHelpers-6b3bd404.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport IMask from '../../core/holder.js';\n\nconst _excluded = [\"chunks\"];\nclass ChunksTailDetails {\n /** */\n\n constructor() {\n let chunks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n this.chunks = chunks;\n this.from = from;\n }\n toString() {\n return this.chunks.map(String).join('');\n }\n\n // $FlowFixMe no ideas\n extend(tailChunk) {\n if (!String(tailChunk)) return;\n if (isString(tailChunk)) tailChunk = new ContinuousTailDetails(String(tailChunk));\n const lastChunk = this.chunks[this.chunks.length - 1];\n const extendLast = lastChunk && (\n // if stops are same or tail has no stop\n lastChunk.stop === tailChunk.stop || tailChunk.stop == null) &&\n // if tail chunk goes just after last chunk\n tailChunk.from === lastChunk.from + lastChunk.toString().length;\n if (tailChunk instanceof ContinuousTailDetails) {\n // check the ability to extend previous chunk\n if (extendLast) {\n // extend previous chunk\n lastChunk.extend(tailChunk.toString());\n } else {\n // append new chunk\n this.chunks.push(tailChunk);\n }\n } else if (tailChunk instanceof ChunksTailDetails) {\n if (tailChunk.stop == null) {\n // unwrap floating chunks to parent, keeping `from` pos\n let firstTailChunk;\n while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) {\n firstTailChunk = tailChunk.chunks.shift();\n firstTailChunk.from += tailChunk.from;\n this.extend(firstTailChunk);\n }\n }\n\n // if tail chunk still has value\n if (tailChunk.toString()) {\n // if chunks contains stops, then popup stop to container\n tailChunk.stop = tailChunk.blockIndex;\n this.chunks.push(tailChunk);\n }\n }\n }\n appendTo(masked) {\n // $FlowFixMe\n if (!(masked instanceof IMask.MaskedPattern)) {\n const tail = new ContinuousTailDetails(this.toString());\n return tail.appendTo(masked);\n }\n const details = new ChangeDetails();\n for (let ci = 0; ci < this.chunks.length && !details.skip; ++ci) {\n const chunk = this.chunks[ci];\n const lastBlockIter = masked._mapPosToBlock(masked.value.length);\n const stop = chunk.stop;\n let chunkBlock;\n if (stop != null && (\n // if block not found or stop is behind lastBlock\n !lastBlockIter || lastBlockIter.index <= stop)) {\n if (chunk instanceof ChunksTailDetails ||\n // for continuous block also check if stop is exist\n masked._stops.indexOf(stop) >= 0) {\n const phDetails = masked._appendPlaceholder(stop);\n details.aggregate(phDetails);\n }\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n }\n if (chunkBlock) {\n const tailDetails = chunkBlock.appendTail(chunk);\n tailDetails.skip = false; // always ignore skip, it will be set on last\n details.aggregate(tailDetails);\n masked._value += tailDetails.inserted;\n\n // get not inserted chars\n const remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n if (remainChars) details.aggregate(masked.append(remainChars, {\n tail: true\n }));\n } else {\n details.aggregate(masked.append(chunk.toString(), {\n tail: true\n }));\n }\n }\n return details;\n }\n get state() {\n return {\n chunks: this.chunks.map(c => c.state),\n from: this.from,\n stop: this.stop,\n blockIndex: this.blockIndex\n };\n }\n set state(state) {\n const {\n chunks\n } = state,\n props = _objectWithoutPropertiesLoose(state, _excluded);\n Object.assign(this, props);\n this.chunks = chunks.map(cstate => {\n const chunk = \"chunks\" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails();\n // $FlowFixMe already checked above\n chunk.state = cstate;\n return chunk;\n });\n }\n unshift(beforePos) {\n if (!this.chunks.length || beforePos != null && this.from >= beforePos) return '';\n const chunkShiftPos = beforePos != null ? beforePos - this.from : beforePos;\n let ci = 0;\n while (ci < this.chunks.length) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.unshift(chunkShiftPos);\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n ++ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n shift() {\n if (!this.chunks.length) return '';\n let ci = this.chunks.length - 1;\n while (0 <= ci) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.shift();\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n --ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n}\n\nexport { ChunksTailDetails as default };\n","import { DIRECTION } from '../../core/utils.js';\nimport '../../core/change-details.js';\nimport '../../core/holder.js';\n\nclass PatternCursor {\n constructor(masked, pos) {\n this.masked = masked;\n this._log = [];\n const {\n offset,\n index\n } = masked._mapPosToBlock(pos) || (pos < 0 ?\n // first\n {\n index: 0,\n offset: 0\n } :\n // last\n {\n index: this.masked._blocks.length,\n offset: 0\n });\n this.offset = offset;\n this.index = index;\n this.ok = false;\n }\n get block() {\n return this.masked._blocks[this.index];\n }\n get pos() {\n return this.masked._blockStartPos(this.index) + this.offset;\n }\n get state() {\n return {\n index: this.index,\n offset: this.offset,\n ok: this.ok\n };\n }\n set state(s) {\n Object.assign(this, s);\n }\n pushState() {\n this._log.push(this.state);\n }\n popState() {\n const s = this._log.pop();\n this.state = s;\n return s;\n }\n bindBlock() {\n if (this.block) return;\n if (this.index < 0) {\n this.index = 0;\n this.offset = 0;\n }\n if (this.index >= this.masked._blocks.length) {\n this.index = this.masked._blocks.length - 1;\n this.offset = this.block.value.length;\n }\n }\n _pushLeft(fn) {\n this.pushState();\n for (this.bindBlock(); 0 <= this.index; --this.index, this.offset = ((_this$block = this.block) === null || _this$block === void 0 ? void 0 : _this$block.value.length) || 0) {\n var _this$block;\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n _pushRight(fn) {\n this.pushState();\n for (this.bindBlock(); this.index < this.masked._blocks.length; ++this.index, this.offset = 0) {\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n pushLeftBeforeFilled() {\n return this._pushLeft(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_LEFT);\n if (this.offset !== 0) return true;\n });\n }\n pushLeftBeforeInput() {\n // cases:\n // filled input: 00|\n // optional empty input: 00[]|\n // nested block: XX<[]>|\n return this._pushLeft(() => {\n if (this.block.isFixed) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushLeftBeforeRequired() {\n return this._pushLeft(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushRightBeforeFilled() {\n return this._pushRight(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_RIGHT);\n if (this.offset !== this.block.value.length) return true;\n });\n }\n pushRightBeforeInput() {\n return this._pushRight(() => {\n if (this.block.isFixed) return;\n\n // const o = this.offset;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n // HACK cases like (STILL DOES NOT WORK FOR NESTED)\n // aa|X\n // aa<X|[]>X_ - this will not work\n // if (o && o === this.offset && this.block instanceof PatternInputDefinition) continue;\n return true;\n });\n }\n pushRightBeforeRequired() {\n return this._pushRight(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n\n // TODO check |[*]XX_\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n return true;\n });\n }\n}\n\nexport { PatternCursor as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION, isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport '../../core/holder.js';\n\n/** */\n\nclass PatternFixedDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n Object.assign(this, opts);\n this._value = '';\n this.isFixed = true;\n }\n get value() {\n return this._value;\n }\n get unmaskedValue() {\n return this.isUnmasking ? this.value : '';\n }\n get displayValue() {\n return this.value;\n }\n reset() {\n this._isRawInput = false;\n this._value = '';\n }\n remove() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length;\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n if (!this._value) this._isRawInput = false;\n return new ChangeDetails();\n }\n nearestInputPos(cursorPos) {\n let direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n const minPos = 0;\n const maxPos = this._value.length;\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return minPos;\n case DIRECTION.NONE:\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n default:\n return maxPos;\n }\n }\n totalInputPositions() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length;\n return this._isRawInput ? toPos - fromPos : 0;\n }\n extractInput() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length;\n let flags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return Boolean(this._value);\n }\n _appendChar(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n const appendEager = this.eager === true || this.eager === 'append';\n const appended = this.char === ch;\n const isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && (!flags.raw || !appendEager) && !flags.tail;\n if (isResolved) details.rawInserted = this.char;\n this._value = details.inserted = this.char;\n this._isRawInput = isResolved && (flags.raw || flags.input);\n return details;\n }\n _appendEager() {\n return this._appendChar(this.char, {\n tail: true\n });\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n this._value = details.inserted = this.char;\n return details;\n }\n extractTail() {\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return new ContinuousTailDetails('');\n }\n\n // $FlowFixMe no ideas\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n append(str, flags, tail) {\n const details = this._appendChar(str[0], flags);\n if (tail != null) {\n details.tailShift += this.appendTail(tail).tailShift;\n }\n return details;\n }\n doCommit() {}\n get state() {\n return {\n _value: this._value,\n _isRawInput: this._isRawInput\n };\n }\n set state(state) {\n Object.assign(this, state);\n }\n}\n\nexport { PatternFixedDefinition as default };\n","import { _ as _objectWithoutPropertiesLoose } from '../../_rollupPluginBabelHelpers-6b3bd404.js';\nimport createMask from '../factory.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION } from '../../core/utils.js';\nimport '../../core/holder.js';\n\nconst _excluded = [\"parent\", \"isOptional\", \"placeholderChar\", \"displayChar\", \"lazy\", \"eager\"];\n\n/** */\n\nconst DEFAULT_INPUT_DEFINITIONS = {\n '0': /\\d/,\n 'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // http://stackoverflow.com/a/22075070\n '*': /./\n};\n\n/** */\nclass PatternInputDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n const {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager\n } = opts,\n maskOpts = _objectWithoutPropertiesLoose(opts, _excluded);\n this.masked = createMask(maskOpts);\n Object.assign(this, {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager\n });\n }\n reset() {\n this.isFilled = false;\n this.masked.reset();\n }\n remove() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n if (fromPos === 0 && toPos >= 1) {\n this.isFilled = false;\n return this.masked.remove(fromPos, toPos);\n }\n return new ChangeDetails();\n }\n get value() {\n return this.masked.value || (this.isFilled && !this.isOptional ? this.placeholderChar : '');\n }\n get unmaskedValue() {\n return this.masked.unmaskedValue;\n }\n get displayValue() {\n return this.masked.value && this.displayChar || this.value;\n }\n get isComplete() {\n return Boolean(this.masked.value) || this.isOptional;\n }\n _appendChar(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.isFilled) return new ChangeDetails();\n const state = this.masked.state;\n // simulate input\n const details = this.masked._appendChar(ch, flags);\n if (details.inserted && this.doValidate(flags) === false) {\n details.inserted = details.rawInserted = '';\n this.masked.state = state;\n }\n if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {\n details.inserted = this.placeholderChar;\n }\n details.skip = !details.inserted && !this.isOptional;\n this.isFilled = Boolean(details.inserted);\n return details;\n }\n append() {\n // TODO probably should be done via _appendChar\n return this.masked.append(...arguments);\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled || this.isOptional) return details;\n this.isFilled = true;\n details.inserted = this.placeholderChar;\n return details;\n }\n _appendEager() {\n return new ChangeDetails();\n }\n extractTail() {\n return this.masked.extractTail(...arguments);\n }\n appendTail() {\n return this.masked.appendTail(...arguments);\n }\n extractInput() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n let flags = arguments.length > 2 ? arguments[2] : undefined;\n return this.masked.extractInput(fromPos, toPos, flags);\n }\n nearestInputPos(cursorPos) {\n let direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n const minPos = 0;\n const maxPos = this.value.length;\n const boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return this.isComplete ? boundPos : minPos;\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return this.isComplete ? boundPos : maxPos;\n case DIRECTION.NONE:\n default:\n return boundPos;\n }\n }\n totalInputPositions() {\n let fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return this.value.slice(fromPos, toPos).length;\n }\n doValidate() {\n return this.masked.doValidate(...arguments) && (!this.parent || this.parent.doValidate(...arguments));\n }\n doCommit() {\n this.masked.doCommit();\n }\n get state() {\n return {\n masked: this.masked.state,\n isFilled: this.isFilled\n };\n }\n set state(state) {\n this.masked.state = state.masked;\n this.isFilled = state.isFilled;\n }\n}\n\nexport { DEFAULT_INPUT_DEFINITIONS, PatternInputDefinition as default };\n","import createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\nimport '../core/change-details.js';\n\n/** Mask pipe source and destination types */\nconst PIPE_TYPE = {\n MASKED: 'value',\n UNMASKED: 'unmaskedValue',\n TYPED: 'typedValue'\n};\n\n/** Creates new pipe function depending on mask type, source and destination options */\nfunction createPipe(mask) {\n let from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : PIPE_TYPE.MASKED;\n let to = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : PIPE_TYPE.MASKED;\n const masked = createMask(mask);\n return value => masked.runIsolated(m => {\n m[from] = value;\n return m[to];\n });\n}\n\n/** Pipes value through mask depending on mask type, source and destination options */\nfunction pipe(value) {\n for (var _len = arguments.length, pipeArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n pipeArgs[_key - 1] = arguments[_key];\n }\n return createPipe(...pipeArgs)(value);\n}\nIMask.PIPE_TYPE = PIPE_TYPE;\nIMask.createPipe = createPipe;\nIMask.pipe = pipe;\n\nexport { PIPE_TYPE, createPipe, pipe };\n","import MaskedPattern from './pattern.js';\nimport '../core/change-details.js';\nimport { normalizePrepare } from '../core/utils.js';\nimport IMask from '../core/holder.js';\nimport '../_rollupPluginBabelHelpers-6b3bd404.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/input-definition.js';\nimport './factory.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './regexp.js';\n\n/** Pattern which accepts ranges */\nclass MaskedRange extends MaskedPattern {\n /**\n Optionally sets max length of pattern.\n Used when pattern length is longer then `to` param length. Pads zeros at start in this case.\n */\n\n /** Min bound */\n\n /** Max bound */\n\n /** */\n\n get _matchFrom() {\n return this.maxLength - String(this.from).length;\n }\n\n /**\n @override\n */\n _update(opts) {\n // TODO type\n opts = Object.assign({\n to: this.to || 0,\n from: this.from || 0,\n maxLength: this.maxLength || 0\n }, opts);\n let maxLength = String(opts.to).length;\n if (opts.maxLength != null) maxLength = Math.max(maxLength, opts.maxLength);\n opts.maxLength = maxLength;\n const fromStr = String(opts.from).padStart(maxLength, '0');\n const toStr = String(opts.to).padStart(maxLength, '0');\n let sameCharsCount = 0;\n while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) ++sameCharsCount;\n opts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\\\0') + '0'.repeat(maxLength - sameCharsCount);\n super._update(opts);\n }\n\n /**\n @override\n */\n get isComplete() {\n return super.isComplete && Boolean(this.value);\n }\n boundaries(str) {\n let minstr = '';\n let maxstr = '';\n const [, placeholder, num] = str.match(/^(\\D*)(\\d*)(\\D*)/) || [];\n if (num) {\n minstr = '0'.repeat(placeholder.length) + num;\n maxstr = '9'.repeat(placeholder.length) + num;\n }\n minstr = minstr.padEnd(this.maxLength, '0');\n maxstr = maxstr.padEnd(this.maxLength, '9');\n return [minstr, maxstr];\n }\n\n // TODO str is a single char everytime\n /**\n @override\n */\n doPrepare(ch) {\n let flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let details;\n [ch, details] = normalizePrepare(super.doPrepare(ch.replace(/\\D/g, ''), flags));\n if (!this.autofix || !ch) return ch;\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n let nextVal = this.value + ch;\n if (nextVal.length > this.maxLength) return '';\n const [minstr, maxstr] = this.boundaries(nextVal);\n if (Number(maxstr) < this.from) return fromStr[nextVal.length - 1];\n if (Number(minstr) > this.to) {\n if (this.autofix === 'pad' && nextVal.length < this.maxLength) {\n return ['', details.aggregate(this.append(fromStr[nextVal.length - 1] + ch, flags))];\n }\n return toStr[nextVal.length - 1];\n }\n return ch;\n }\n\n /**\n @override\n */\n doValidate() {\n const str = this.value;\n const firstNonZero = str.search(/[^0]/);\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\n const [minstr, maxstr] = this.boundaries(str);\n return this.from <= Number(maxstr) && Number(minstr) <= this.to && super.doValidate(...arguments);\n }\n}\nIMask.MaskedRange = MaskedRange;\n\nexport { MaskedRange as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by RegExp */\nclass MaskedRegExp extends Masked {\n /**\n @override\n @param {Object} opts\n */\n _update(opts) {\n if (opts.mask) opts.validate = value => value.search(opts.mask) >= 0;\n super._update(opts);\n }\n}\nIMask.MaskedRegExp = MaskedRegExp;\n\nexport { MaskedRegExp as default };\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};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".bundle.js\";\n};","// This function allow to reference all chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\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))","var inProgress = {};\nvar dataWebpackPrefix = \"sfra-boilerplate:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t\tif (script.src.indexOf(window.location.origin + '/') !== 0) {\n\t\t\tscript.crossOrigin = \"anonymous\";\n\t\t}\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"https://127.0.0.1:9080/\";","// 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\"app_hobbycraft\": 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\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\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunksfra_boilerplate\"] = globalThis[\"webpackChunksfra_boilerplate\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","import 'widgets/widgetsList';\nimport 'core/widgetsList';\nimport WidgetsMgr from 'widgets/widgetsMgr';\n\n/*\nDon't delete next comment, it's a placeholder for additional imports\nSee details in documentation/tools/WebpackConfiguration.md\n */\nimport 'int_paypal/paypalWidgetLists.js';\nimport 'app_adyen_ext/adyenWidgetLists.js';\nimport 'plugin_wishlists_w/wishlistWidgetsList.ts';\nimport 'plugin_storelocator_w/widgetsList.ts';\nimport 'plugin_serviceworker_w/sw-registration.ts';\nimport 'plugin_rewards/rewardsWidgetLists.js';\nimport 'app_page_designer_w/pageDesignerWidgetsList.ts';\nimport 'int_gtm_w/clientGTM.ts';\nimport 'int_globale_sfra/globaleWidgetLists.js';\nimport 'int_trg/trgWidgetLists.js';\nimport 'int_pcipal/pcipalWidgetLists.js';\n// Globally available tools\nimport { init } from 'core/toolbox/init';\nimport { submitFormJson } from 'widgets/toolbox/ajax';\nimport { exposeMethodGlobally } from 'core/toolbox/util';\n\n// run global entry point\ninit();\n\n// expose AJAX for global usage (for ex. in case of AJAX-requests in legacy 3-d party scripts)\nexposeMethodGlobally('ajax', submitFormJson);\n\nWidgetsMgr.run();\n\n// @ts-ignore\nif (module.hot) {\n // @ts-ignore\n module.hot.accept(['widgets/widgetsList', 'core/widgetsList'], () => WidgetsMgr.restartWidgets());\n}\n"],"names":["hasContext","ctx","window","contexts","includes","widgetsMgr","asyncLists","push","getLoadingFlag","load","Promise","all","then","d","default","deps","AdyenPaymentAccordion","PaymentAccordionItemAdyenComponent","PaymentAccordionItemAdyenScheme","AdyenSavedCardsAccordionItem","listId","widgetsDefinition","RadioSelector","AdyenCharityForm","Widget","CartLineItem","prefs","descriptions","pid","selectedQuantity","accessibilityAlerts","quantitychanged","optionselected","variationselected","getJSONByUrl","submitFormJson","submitFormJsonWithAbort","getUrlParams","timeout","scrollWindowTo","getCookie","localStorageWrapper","appendParamToURL","BaseCartMgr","CartMgr","selectStoreUrl","changeShippingUrlTriggers","activePanelTrigger","init","eventBus","on","emit","changeStore","url","wrapperClasses","windowClasses","headerClasses","bodyClasses","contentType","cart","valid","error","gtmError","onCartLoadGlobalEvents","onProductAdedToCart","data","cartModel","renderCart","ref","get","triggerTabClick","onShippingChanged","cartShippingTabs","appendApplepayCookies","cookies","document","cookie","randomId","Math","random","onPreferredStoreSelected","cartGetUrl","response","event","eventCategory","eventAction","eventLabel","reject","Error","render","itemsIds","forEach","id","confirmedRemoveProduct","button","movedToWishlist","attributes","resolve","uuid","showProgressBar","removePromise","basket","removeItem","setItem","JSON","stringify","isProductRemoved","confirmationRemoveCallback","catch","renderCartWithItemLevelActionError","message","finally","hideProgressBar","resp","shipping","activeShipping","changeShippingUrl","success","updateQty","quantityStepper","qtyBeforeUpdate","numItems","currentQuantity","currentValue","isQuantityBelowMinValue","config","lineItemMinOrderQuantity","removeProduct","requestObject","quantity","getValue","updateQtyRequests","promise","isQuantityIncreased","renderCartResponse","accessibilityAlert","name","errorMessage","index","indexOf","splice","showRewardsPanel","getById","modal","showModal","undefined","pushDatalayerPaypal","pushDatalayerApplepay","getContentByUrl","CartMixin","classesDisabled","removeButton","InputStepper","getConstructor","isEproduct","priceList","priceSales","isSubscriptionProduct","qtyStepperID","currentQuantityStepperValue","removeProductLink","addClass","parseInt","stepper","confirmDialog","productName","isEProduct","showCrossedPrice","attr","editProduct","editBtn","editProductModal","body","JustAddedToCartMgr","showMessage","hideMessage","classesActive","items","subscriptionItem","justAddedToCartItems","initEvents","executeCallback","cb","apply","updateJustAddedCart","getJustAddedItemsID","map","item","removeJustAddedProduct","filter","addJustAddedProduct","product","addShadowJustAddedProduct","productID","shadow","removedLineItemID","removedLineItem","toString","minOrderQuantity","length","closeJustAddedModal","removeClass","justAddedProductIDs","stringifiedJustAddedProductIDs","pids","deletedProductId","req","toggleJustAddedProduct","hiddenAddedProducts","prop","show","setText","hide","replace","Modal","JustAddedToCartModal","cartViewContentLink","showOnlyAddedProduct","queuedProcessingProduct","showJustAddedProductCart","subscriptionID","pidsObj","isOpened","isQueuedProcessingProduct","every","processingProductID","pop","cancel","onCloseModal","closeModal","AccountDeleteForm","deletionConfirmationCheckbox","checkbox","el","enable","disable","BaseBasicForm","BasicForm","classesBusy","hasActiveErrors","BasicInput","activeError","eachChild","itemComponent","getActiveErrors","activeErrors","BaseBasicInput","validationConfig","errors","setRequired","val","BaseForm","IdeasSearchForm","handleSubmit","_el","ideasSearchInput","searchInput","focus","preventDefault","InputDate","setStartDate","minDate","Date","toISOString","maxDate","setFullYear","getFullYear","slice","BaseInputPassword","InputPassword","dynamicHelpText","helpTextRef","definePasswordStrengthCheck","passwordEstimator","zxcvbn","onPasswordInput","toggleMask","input","inputType","showButton","checkPasswordStrength","passwordStrengthScore","score","isStrongPassword","validatePasswordChars","valChars","split","isCharsValid","checkLowerCaseAmount","checkUpperCaseAmount","checkNumberAmount","checkSpecialCharsAmount","passwordStrengthEnabled","isValid","widgetsToMatch","invalidWidget","getInvalidCompareWithWidget","keyCode","Object","freeze","SPACE","PAGEUP","PAGEDOWN","END","HOME","UP","DOWN","BaseInputSelect","InputSelect","custom","classesEmpty","classesOpen","classesSelected","classesFocus","initCustom","onRefresh","templateRefId","renderTo","strToRender","field","customSelect","container","parentNode","destroy","containerClass","openerClass","panelClass","optionClass","optgroupClass","isSelectedClass","isDisabledClass","isOpenClass","hasFocusClass","configureCustomSelect","opener","setAttribute","removeAttribute","panel","childNodes","customOption","customSelectOriginalOption","dataset","html","innerHTML","updateSelectedOption","select","addEventListener","preventWindowScrolling","removeEventListener","eventBlur","open","callIfExists","customValue","setValue","selectedOption","getSelectedOptions","selectedOptionEl","children","setCustomSelectValue","newVal","value","silently","disabled","BaseInputTel","InputTel","onInput","BaseInputText","InputTextTypeNumber","correctNumRange","min","max","BaseInputTextarea","InputTextarea","String","BaseEmailSubscribe","EmailSubscribe","onSubmitted","isAlreadySubscribed","msg","accessibilityAnnouncementMsg","fieldErrors","entries","errorMsg","formField","setError","signupEmail","inputEmail","elementInViewport","scrollIntoView","isMediumViewAndDown","BasicAccordionItem","AccordionItem","scrollTimeout","closeMobile","checkInView","isPanelOpen","expanded","isToggleAllowed","isMultipleSections","defineAttributes","onDestroy","clearAttributes","bind","cleanPanelHeight","closePanel","togglePanel","openPanel","has","accordionItemBtn","accordionItemBtnEl","AccountHeaderLink","getCustomerNameUrl","promtDelay","promtDuration","getCustomerName","getItem","renderAccountHeader","checkSavedBasket","saveCustomerName","loadCustomerNamePromise","result","console","log","customerName","customerData","parse","isSameSession","loadCustomerName","cartItemIds","e","isLoginPromtAvailable","sessionStorage","documentElement","action","isSavedBasketPromtAvailable","closeLoginPromt","loginPromt","BackToTopBase","BackToTop","doInit","attachScrollListener","toggleButtonVisibility","BreadCrumbName","renderBreadCrumbName","breadcrumbClick","BaseButton","Button","activate","deactivate","toggleActive","state","toggleClass","isActive","hasClass","PausableTimeout","DIRECTION_HORIZONTAL","FOCUSABLE_SELECTOR","getClosestIndex","list","autoplayInfinite","vertical","lookup","indexValue","diff","abs","i","newdiff","findIndex","BaseCarousel","Carousel","autoplayEnabled","classesNoAnimate","addExternalSlides","addExternalSlidesPosition","itemsPerSlide","calculateTileWidth","gsaModuleCssClass","scrollToTop","isExternalSlidesAdded","beforeInit","isProductsCarousel","gsaContainer","closest","setTimeout","categoryTileWidth","initCarousel","elCarouselTrack","slidesCount","slidesCloned","initInfinite","initAutoplay","markVisibleElements","updatePaginationDotVisibility","isExternalSlides","externalSlides","getElementById","prepend","content","cloneNode","append","currentPage","onViewtypeChange","updateCarouselMetric","updateCarouselState","clientWidth","scrollWidth","getSlidesPerPage","appendSlides","prependSlides","getClonedNode","node","clonedNode","cloned","Array","from","querySelectorAll","clonedSlide","appendChild","scrollWithoutAnimate","elSlide","remove","elSelf","autoplayClear","pausableTimeout","autoplayPause","pause","autoplayResume","resume","autoplay","lastPageIndex","round","currentPageIndex","nextPageIndex","autoplayDuration","ev","isHorizontal","carouselDirection","getCurrentPageIndex","numberOfPages","getPagesCount","slidesPerPage","elCarouselChild","elCarouselTrackRect","getBoundingClientRect","floor","width","height","ceil","pageIndex","scrollLeft","scrollTop","clientHeight","scrollToPage","scrolling","scrollToSlideWithoutAnimate","getCurrentSlideIndex","checkGrid","slideIndex","element","offsetLeft","offsetTop","getComputedStyle","display","skipCloned","scrollIndex","elCarouselSlide","scrollToSlide","scrollTo","updatePaginationDots","pagination","totalDots","childElementCount","dotWidth","visibleDots","maxTransformX","updateX","style","transform","paginationWrap","containerRect","dots","leadingClass","dot","dotRect","classList","left","right","add","previousElementSibling","nextElementSibling","scrollToNextSlide","scrollToPrevSlide","scrollToNextPage","contains","perSlide","elemCarouselTrack","scrollBy","carouselDimension","scrollToPrevPage","updateDuringScroll","setActivePagination","initPagination","scrollingTimeout","clearTimeout","onScrollEnd","scrollingTimeoutValue","isCallInNextFrameRequested","onPageClick","delta","elCurrentSlide","find","call","pagerCurrentClass","offsetRight","offsetBottom","handlePaginationClick","page","createPaginationElements","fill","current","onScroll","normalizeScrollPosition","onMouseDown","allowMouseEvents","onMouseUp","type","currentTarget","target","mouseMoveDisposable","disposable","mouseLeaveDisposable","grabbingRemoveTimeout","grabbingClass","grabbingTimeoutValue","deltaPrevPageSensitivity","deltaNextPageSensitivity","ARIA_HIDDEN","isScrollStart","elemPrevButton","isScrollEnd","elemNextButton","currentProduct","loadNewVideo","videoItem","stopImmediatePropagation","location","href","allItems","allItemsArray","videoLink","carouselElements","trackRect","elementRect","isVisible","titles","titles2","BaseContextLoader","ContextLoader","loaded","context","inited","setPref","initOnLoad","loadContext","initOnViewport","observer","IntersectionObserver","entry","onIntersection","threshold","rootMargin","widgetElement","observe","unobserve","disconnect","setCookie","interval","DEFAULT_LOADING_COUNT","DEFAULT_INTERVAL_PERIOD","TEST_RECORD_ID","ExponeaSegmentation","exponeaCookieName","exponeaCookieLifeTime","exponeaSegmentationDebugMode","exponeaDimensionsLoadCount","exponeaDimensionsInitialize","initExponeaDimensions","exponeaSegmentation","exponea","dimensions","initDebugSegmentationData","initExponeaSegmentation","exponeaDimensionsFinalize","segmentationData","category","sfcc_dominant_category","encodeURIComponent","identify","registered","BaseGlobalAlerts","GlobalAlerts","showTimeout","disposeShowTimeout","showAlert","shown","hideAlert","alertClassName","customClasses","GTM_CATEGORY_SELECTOR","GTM_EVENT_SELECTOR","GTM_LABEL_SELECTOR","GTM_SUBLABEL_SELECTOR","GTM_LABEL_NAV","GTM_EVENT_NAME","CLICK_EVENT_ID","GtmDataLayer","gtmOnloadEvent","eventSublabel","footerLinkClick","categoryTileClick","ideaWorkshopClick","viewAllWorkshopsClick","gtmProductData","searchSuggestionClick","downloadPdfClick","isAuthorized","showRelatedIdeasClick","artisanClick","gtmArtisanEventAction","BaseHeroCarousel","HeroCarousel","pref","initStructure","track","slides","slidesTotal","slide","slidePrefix","getAttribute","isSlider","normalizeIndex","normalizedIndex","goToSlide","startAutoplay","endAutoplay","Image","isFallback","refImg","fallbackSrc","eImg","complete","naturalWidth","loadingError","BaseModal","isClosed","refDialog","classesClosed","SESSION_ID_TRUNCATE","Noibu","checkSDKExistanceAndAddCustomAttribute","isSameDWSID","NOIBUJS","addCustomAttribute","loadScript","Osano","scriptUrl","loadOsanoScript","addListenersForEventsOsano","allowOnSaveEvents","cm","osanoWidget","getElementsByClassName","handleOsanoAnalytic","processOsanoSaveEvent","ACCEPT_KEY","consentObject","getConsent","ANALYTICS","PERSONALIZATION","MARKETING","ESSENTIAL","key","PoqWebCheckout","poqSendConf","poqSend","send","customData","link","isPDF","isExternal","dismissPresenting","options","debug","completedObject","BasicProcessButton","ProcessButton","processFinishLabel","lockAfterFinish","stopProcess","unbusy","currentText","processingClass","StickyElement","bodyClass","toggleCondition","stickyElement","toggleStickyState","toggle","intersectsWithScreen","intersectionRatio","intersectsWithTopOfScreen","boundingClientRect","top","BasicStickyHeader","StickyHeader","StoreLocatorLink","getPreferredStoreUrl","getPreferredStoreData","renderPreferredStore","savePreferredStoreData","loadPreferedStoreDataPromise","preferredStoreName","preferredStoreURL","getStoreIdText","responseData","preferedStoreDataString","preferedStoreData","loadPreferedStoreData","clickOutside","RETURN","TAB","Tooltip","closeOnClickOutside","closeTooltip","handleClick","showTooltip","handleKeydown","_","stopPropagition","stopPropagation","initYoutubePlayerApi","VideoPlayer","videoConfig","player","pauseVideo","initPlayer","stopVideo","startVideo","playVideo","preventEventActions","videoElement","playerConfig","videoId","playerVars","isYoutubeList","ytListParts","videoUrl","listType","listRegex","match","substr","ytRegex","urlParts","YT","Player","videoChange","itemVideoUrl","myPlayer","loadVideoById","startSeconds","suggestedQuality","hideVideoModule","isSmallView","VideoPlayerHTML5","videoUrls","playingCSSClass","viewType","renderSources","contentBoxWidth","parseVideos","constructor","values","videos","obj","device","sources","viewtype","orientation","play","playPauseVideo","paused","ended","parentElement","WishlistCarousel","refreshCarousel","itemsLength","BaseAddToCartMixin","AddToCartMixin","isCustomerSubscribed","getCartItemIdsUrl","geOperated","plpPdpElement","bundleTile","isItemInCart","changeStateAddToCartButton","disableAddToCartButton","showBackInStockButton","backInStockSubscriptionEnable","availability","backInStockBtn","toggleActionButtons","addToCartBtn","renderAddToCartButton","addToCartButton","available","isOutOfStock","outOfStockLabel","isReachedLimit","addToCartMsg","messages","getTextForLabel","pdpAvailability","disableA2CButton","eProductData","shippingAllowed","unavailableShipmentLabel","renderAddToCart","update","showUnavailableLabel","btnId","btn","unavailableLabel","showCartMessage","addToCartSticky","addToCartMsgSticky","postAddProduct","redirectUrl","assign","wishlistModel","saveCartItems","postAddProductAvailability","availableCC","availableStore","availabilityLabel","getAvailability","keys","preserveKeys","setAvailability","addToCart","checkRequestsAndAddToCart","changeAttributeRequests","addProductToCart","updateProductQuantityView","updateBackInStockState","hideContent","addLinkedSubscriptionObj","params","child","isLinkedSubscription","subscriptionProduct","subscriptionPidObj","linkedSubscriptionId","qty","processingRequest","readyToOrder","textSelectOptions","stock","textStockLimit","selectedOptions","getSelectedProductOptions","isSelectedOptionsValid","validateProductOptions","startProcess","addToCartBtnPrefs","amount","currentProductId","populateEVoucherData","Number","isNaN","childProducts","prepareChildProducts","bundledProducts","addToCartUrl","isBuyAgainProduct","textNetworkError","loadCartItems","productId","getCartItemIds","itemId","cartItemId","loadCartItemsPromise","itemIds","addedToCartLabel","addToCartLabel","JustAddedProductToCartMixin","isSelectStore","modalConfig","justAddedRecommendationAddToCart","addJustAddedProductRecommendation","subscriptionUUID","justAddedProductCart","isIdeaProduct","justAddedCartProductsID","justAddedCartMgr","stringifiedJustAddedProducts","showMessageOnProductAdd","showMinicart","productModel","isIdea","LinkedSubscription","showLinkedSubscription","unselectCheckbox","hideLinkedSubscription","Disclosure","ProductSocialDisclosure","copyTextToClipboard","ProductSocialLinks","socialShareClick","copyToClipboard","productUrl","accessibilityCopiedToClipboard","BaseProductTile","ProductTile","triggerQuickView","quickViewButton","showQuickView","onProductLinkClick","gridItem","ariaLabel","onModalShow","SearchList","CategorySearchList","selectSearchItemEvent","searchItem","IdeasSearchList","submitCORS","appendParamsToUrl","PRODUCT_TYPE_PRODUCT","PRODUCT_TYPE_IDEA","getStarsProductRating","productRating","starObj","position","isFull","isHalf","isEmpty","SearchBoxBase","SearchBox","bloomreachConfig","suggestionsURL","productsURL","accountId","authKey","catalogViews","phrasesCount","productsCount","ideasCount","viewAllProductsLink","viewAllIdeasLink","currencySymbol","priceFree","suggestions","products","posinset","posinsetAllProductsLink","posinsetAllIdeasLink","getSuggestions","query","getBloomreachSuggestions","getBloomreachCommonRequestParams","account_id","auth_key","_br_uid_2","ref_url","referrer","request_id","now","q","bloomreachURL","catalog_views","request_type","getBloomreachProducts","search_type","rows","start","fl","renderSuggestionsAndProducts","getPhrasesFromResponse","phrases","responsePhrases","suggestionGroups","querySuggestions","querySuggestion","getProductsFromResponse","productType","responseProducts","searchSuggestions","docs","responseProduct","isidea","listPrice","salesPrice","parseFloat","price","toFixed","sale_price","ratings","BazaarvoiceStarRating","reviewsCount","NoBazaarvoiceReviews","title","sfcc_deeplink","gtmInfoStr","image","sfcc_image","thumb_image","alt","rating","ideas","totalCount","reduce","acc","renderResult","afterSuggestionsUpdate","selectItem","selectedItem","selectSearchItem","postJsonData","PreferredStoreSelector","storeCookie","storeDetail","initPreferredStoreData","updateStoreData","storeID","storeId","renderTemplateStore","handleSelect","isSuccess","storeData","storeURL","errorFallbackMessage","APPLICATION_JSON","TEXT_HTML","CONTENT_TYPE","FAILED_FETCH","FORM_URL_ENCODED","getFetch","dependencies","fetch","AbortController","handleResponse","headers","ok","json","text","status","errorJson","handleResponseError","method","mode","cache","redirect","Accept","accept","resolveYTPlayerFn","initialized","initializationPromise","onYouTubeIframeAPIReady","youtubePlayerApiUrl","scriptHadBeingInited","some","script","src","tag","createElement","firstScriptTag","getElementsByTagName","insertBefore","loadTemplateEngine","initMustacheGlobals","Mustache","originalRender","template","view","partials","tags","stringifyJSON","property","SMALL","MEDIUM","LARGE","EXTRA_LARGE","getViewType","stickyHeaderHeightMap","getStickyHeaderHeight","stickyHeaderHeight","elementOffset","offset","docElem","elemBox","pageYOffset","clientTop","pageXOffset","clientLeft","fullyVisible","wHeight","innerHeight","wWidth","innerWidth","wYOffset","wXOffset","countHeaderHeight","behavior","navigator","clipboard","writeText","ariaHidden","opacity","execCommand","removeChild","initialUrl","force","URL","origin","searchParams","exposeMethodGlobally","tools","WidgetsMgr","AddToWishlistMixin","addWidgetsList","MegaMenu","MenuPanel","MenuBarItem","MenuBarItemExt","HamburgerMenuItem","MinicartDialog","Minicart","CuttableContent","TikTokVideo","ProductDetailContainer","ProductDetail","ProductImages","ColorSwatch","AlternativeImage","EProductProductDetail","EProductAddToCartMixin","EProductJustAddedProductToCartMixin","EProductAddToWishlistMixin","EVoucherDataForm","Availability","StoreSearchForm","SelectStoreSearchForm","SearchByPlace","WoosMapSearchByPlace","StoreLocatorMgr","WoosmapStoreLocatorMgr","BackInStock","SetProductDetail","BuyTogetherProduct","ProductSet","BuyTogetherRecommendation","BuyTogetherCheckbox","AddAllToCartMixin","BaseRecentlyViewedMixin","RecentlyViewedMixin","ChangeWeakPasswordModal","ChangeWeakPasswordForm","DetailAddToCartMixin","QuantityInputStepperMixin","PlusProductDetail","PlusProductAddToCartMixin","Specifications","ConfirmationContainer","PasswordResetForm","BaseLoginForm","LoginForm","ChangeWeakPasswordMixin","CheckoutLoginForm","OrderRegistrationForm","ProductListingMgr","RefinementsGridToggle","Refinement","RefinementsPanelToggle","RefinementsPanel","QuickViewNavigation","StickyRefinements","LazyloadTrigger","CartShippingTabs","CouponForm","CheckoutButtons","ProfileForm","PaymentsList","OrderHistoryMgr","AutocompleteField","WoosmapAutocompleteField","DownloadsMgr","RefreshActivationLinkForm","AddressList","AddressForm","BuyAgain","AccountGtmEvents","OrderProductSummary","CheckoutMgr","SummaryStepMixin","CheckoutStepMixin","ShippingStepMixin","BillingForm","ShippingForm","PaymentAccordion","PaymentAccordionItem","PaymentAccordionItemGiftCard","AddressCheckoutForm","WoosMapLatLngDistance","WoosmapStoreDirections","TwitterFeeds","ExtendedWishlistMgr","WishlistExpirationMsg","WishlistIdeasToggler","ExtendedWishlistItem","WidgetsAlternativeImage","CoreAlternativeImage","ShowCustomerWishlistMixin","ApplePayButtonContainer","VideoExt","AnimationOnScroll","CtaExt","HotSpot","CarouselSimple","ProgressBar","EinsteinCarouselLoader","NoSearchResultsForm","AnimationOnScrollClassCreator","animatedClass","bindObserver","animatedObserver","itemClasses","isAbove","y","rootBounds","isIntersecting","CarouselSimpleClassCreator","defaultLeft","getPropertyValue","onCarouselClick","actionType","targetPageIndex","elemSlide","productTileName","querySelector","textBlockValue","textContent","scrollToNextPageSimple","scrollToPrevPageSimple","paginationContent","dataPage","pageCurrentClass","setPageIndex","setHtml","CtaExtClassCreator","transferAttributes","onCtaExtClick","elem","ctaWrapper","DATA_HOTSPOT","DATA_HOTSPOT_BTN","ATTRIBUTE_ARIA_HIDDEN","ESCAPE","HotSpotClassCreator","active","hotSpots","hotSpotButtons","hotSpotButton","toggleButtonTabindex","openPopup","closePopup","handleHotspotInteraction","hotSpot","debounce","cssLoadChecker","progressBarHeight","DATA_PROGRESS_CONTENT","DATA_PROGRESS_ITEM","ProgressBarClassCreator","targetElementHeight","spacer","targetElementOffset","activeClass","textLeft","lastActive","initProgressBar","progressBarContainer","progressBar","progressBarActions","targetElement","progressBarItems","setVars","getHeaderHeight","generateButtons","setProgressWidth","scrollDisposable","resize","headerHeight","offsetHeight","getCorrectedOffsetTop","currentWidth","getProgressWidth","setActive","getRoundNum","num","getScrollPosition","windowScrollTop","progressRefEl","createProgressBarButtons","progressBarButtons","layoutName","progressBarItem","yOffset","xAxis","xAxisPercentage","extraClass","lastActiveIndex","onClick","targetIndex","yAxis","ENTER","VideoExtClassCreator","playerType","poster","elemVideo","elemSource","mobileUrl","iframeId","isAutoplay","hasAttr","setVideoSource","hidePoster","pauseYtVideo","loadVideo","isMobileUrl","onPlay","videoName","contentWindow","postMessage","md","lg","xl","RefElement","EventBusWrapper","templateProp","noop","saveTemplateForHotReload","PRODUCTION","tmpEl","getFromRoute","nodeOrig","routeOrig","route","c","getDelayedCallback","info","addAttribute","postDiffApplyCallback","delayedAttrModification","startsWith","HTMLElement","delayedCallback","nodeName","checked","filterOuterDiffCallback","t1","innerDone","refs","create","parentHandler","isRefreshingWidget","cachedTemplates","self","hidden","passEvents","warn","pair","methodName","emitEvent","args","classMethod","eventName","emitWithoutContext","_eventBus","classesLoading","prefsName","prefsValue","disposables","selector","passive","elements","Element","fn","dispose","isHidden","isShown","getTemplateByRefID","templateElement","lower","toLowerCase","renderedStr","newHTMLDocument","implementation","createHTMLDocument","diffNode","applyDiff","DiffDOM","dd","filterOuterDiff","postDiffApply","normalize","firstElementChild","prototype","getAttributeNames","smoothScroll","polyfill","actionUrls","tauAttrRemoveProductConfirmationPopUp","shipments","couponAction","pageError","onProductUpdated","productupdated","onCouponUpdated","dismissQty","request","abortController","abort","itemUUID","existingOldItem","cartItem","UUID","returnItem","actionErrorMessage","cancelProductRemoving","confirmationDialog","setInputValue","filterInput","moveProductToWishlist","removeButtonUUID","itemAlreadyExists","removeFromCartPromise","movedtowishlist","productremoved","proceedToCheckout","scrollToError","cartErrorMessage","showError","widget","AjaxForm","isChildrenValid","submitting","submitButton","busy","errorMessageLabel","getFormUrl","getFormFields","onError","afterSubmission","isArray","join","fields","errorElement","refElem","AjaxFormResponseContainer","onSuccessSubmit","_form","submitEmpty","emptyFormErrorMsg","SUBMITTING_TIMEOUT","formDefinitionUrl","getSubmitButtonName","submitButtonName","widgetValidation","compareWith","compareFieldItem","targetWidget","compareOptions","equality","saveSubmitButton","submit","click","clearError","Event","skipSubmission","getName","setFormFields","formFields","validate","setFocus","fieldsValues","refID","updateFormData","formDefinition","formDataUpdated","initValue","locked","skipValidation","classesErrorState","classesValidState","classesLocked","classesWrapperErrorState","classesWrapperValidState","elementToScroll","blur","refField","checkRanges","rangesError","getRangesError","HTMLInputElement","setCustomValidity","valueLength","minLength","maxLength","updateCustomValidityState","validity","getValidity","customError","validationStateMsg","getValidationStateMsg","matchingResult","checkMatching","patternsCheckingResult","checkPatterns","validation","patternMismatch","typeMismatch","security","rangeOverflow","rangeUnderflow","tooLong","tooShort","valueMissing","required","widgetToMatchOpts","fieldValue","patterns","patternNames","patternName","pattern","patternRegExp","RegExp","test","lock","unlock","isDisabled","setMatchCmp","widgetToMatch","matchValue","KEY_DOWN","KEY_UP","KEY_ESCAPE","KEY_RETURN","KEY_TAB","ACTIVE_DESCENDANT","Combobox","lastSearchedTerm","selectedIndex","resultsCount","isListboxOpen","minChars","maxChars","updatingDelay","closeFromOutside","closeOnTab","classesFocusedItem","classesActiveListBox","handleInput","inputLength","updateListbox","closeListbox","markHover","hasHoverWithin","unMarkHover","handleFocus","handleBlur","setSelectToNextItem","getItemByIndex","setSelectToPreviousItem","activateItem","currentSelected","deselectItem","afterItemSelected","activeItem","inputValue","resultsTotal","openListbox","listbox","toggleOverlay","bodyClickListener","afterCloseListbox","empty","isOverlayVisible","listItem","Form","ariaChecked","InputCheckbox","check","uncheck","updateAriaChecked","handleChange","InputText","InputEmail","InputHidden","upperCaseAmount","lowerCaseAmount","numbersAmount","specialCharsAmount","specialCharsList","maxWeakPasswordScore","maxMediumPasswordScore","maxStrongPasswordScore","classesWeakPassword","classesMediumPassword","classesStrongPassword","isNumber","isSimpleChar","specialCharsLetters","char","numberLetters","lowerCaseLetters","upperCaseLetters","toUpperCase","showMaskButton","showText","hideText","entered","showPasswordEstimator","generateIndicatorItems","indicatorClass","indicatorItems","className","passwordIndicatorItems","passwordStrengthDescriptions","passwordStrengthDescription","DATA_FIELD","InputRadio","elField","getDataValue","elInner","getDataSet","getChecked","currentEl","tmpField","firstDefault","getOptions","optionToSelect","hasAttribute","onChange","dontPrevent","option","getText","selectedNode","selected","changeAttribute","updateDelay","attrUrl","initOptions","minValue","getMinValue","maxValue","getMaxValue","incrementStep","isBusy","updateState","multiplier","increment","decrement","onlyDigitsValue","submittingTimeout","isFinite","isUpdateRequired","updateActionUrl","dispatchChange","delay","toggleButtonsState","toggleBusy","minParsed","Infinity","maxParsed","MaskableInput","mask","unmaskedValue","currentInputValue","IMask","maskType","initMask","getMask","formContent","successBlock","successMessage","agreeToPrivacy","onEmailInput","showAgreeToPrivacy","isDOMElementFocusable","AccessibilityFocusMixin","getFocusableElements","refName","types","refElement","htmlEl","getFocusableInputElements","focusFirst","containerRefName","needScrollIntoView","focusableElements","focusFirstInput","focusableInputElements","focusElement","elementRefName","domNode","AccessibilityFocusTrapMixin","refFirstFocusElement","refLastFocusElement","focusLoop","refTrapsContainer","firstTrapRef","lastTrapRef","focusTimeout","handleFocusTrapLast","focusFirstElement","hasLastElement","focusLastElement","handleFocusTrapFirst","refId","focusFirstDescendant","focusAttempt","focusLastDescendant","activeElement","addFocusTraps","trapsContainer","afterShowModal","ListAccessibility","Accordion","allowToggle","allowMultiple","activePanel","openFirst","refreshListener","defineItems","firstItem","methodId","reinit","updateAccordionItems","updateFocusedItem","accordionItem","currentItem","setFocusToNextItem","setFocusToPreviousItem","setFocusToFirstItem","setFocusToLastItem","closeItems","ARIA_EXPANDED","ARIA_DISABLED","accordionItemPanel","accordionItemPanelInner","animateToggle","isOpen","accordionItemBtnID","accordionItemPanelID","togglePanelHeight","Boolean","hideDescription","pageSize","activeClassName","removeScrollListener","scrolled","windowHeight","isButtonVisible","classesError","preventAction","err","unselect","press","unpress","setTabIndex","unsetTabIndex","ButtonWithIcon","scrollElementTo","DEFAULT_DIRECTION","roundingDelta","initialCoordinate","initialScrollPosition","mouseMoveNavigationClass","direction","small","medium","large","extraLarge","defineCarouselDirection","handleScrollToFocusedItem","getCarouselDimension","slideDimension","pageStarPoint","requestAnimationFrame","carousel","hasNoScroll","carouselTrackElem","carouselElem","totalScrollWidth","offsetWidth","checkTrackLimits","totalScrollHeight","scrollHeight","carouselTrack","getCurrentScrollPosition","getCurrentCoordinate","onMouseMove","currentCoordinate","clamp","MouseEvent","clientX","clientY","TouchEvent","touches","pageX","pageY","paginationRefEl","currentPageNode","currentPosition","itemDimension","markCurrentPage","currentElement","activeItemLeft","trackStart","trackEnd","ConfirmDialog","confirm","alternativeConfirm","ConsentTracking","contentUrl","acceptUrl","rejectUrl","classesEnabled","loadContent","assetContent","disclosureButton","disclosureContent","showOnInit","showOnRefresh","showContent","toggleContent","DismissBlock","dismissBlockStatus","dismiss","EmitBusEvent","busEventType","emitBusEvent","FocusHighlighter","classesInited","classesHurry","DELAY_TIMEOUT","keyboardModality","isHighlighterVisible","lastFocusedElement","lastFocusedElementCoords","highlighter","handleResize","handleKeyup","enableHighlighter","x","disableHighlighter","moveTo","updateHighlighter","focusedElement","isValidTarget","isTextInput","detectHurryNavigation","recheckTimeout","recheckSecondTimeout","focusinHandlers","hideTimeOut","highlighterNode","targetRectangle","targetTop","scrollY","targetLeft","scrollX","targetWidth","targetHeight","highlighterStyle","currentTime","isHurryNavigation","lastKeyTime","tagName","readOnly","globalAlerts","disposePausableTimeout","errorCode","pauseAlert","resumeAlert","GlobalModal","templateData","modalData","EmitBusEventClass","res","autoplayStopped","autoplayLabelStart","autoplayLabelStop","slideCurrentClass","slidePreviousClass","slideNextClass","slideGrabbingClass","carouselInitialized","autoplayAnimated","swipeMinShift","swipeAngle","clickShift","currentSlideIndex","blockedByAnimations","slidesModel","paginationDots","isGrabbing","startX","startY","autoPlayStopped","nextSlideTimer","remainingTime","initialContent","newSlideIndex","getSlidesModel","toggleAnimationMode","waitForTransitionEnd","applySlidesModel","isFocused","isHover","isAnimated","allClasses","n","slideElement","slideClass","model","nextIndex","prevIndex","currentIndex","callback","onEnd","propertyName","transitionFallbackTimer","transitionEndDisposable","isFirst","nextSlideIndex","goToNextSlide","goToPrevSlide","addTouchListeners","touchMoveDisposable","touchMove","mouseUpDisposable","touchEnd","touchEndDisposable","touchCancelDisposable","contextMenuDisposable","removeTouchListeners","isSwipe","diffX","diffY","angleDeg","atan2","PI","touchStart","changedTouches","isMoving","shiftWidth","originalEvent","cancelable","autoPlayPaused","togglePlayButtonState","addAutoplayListeners","initIntersectionObserver","isForce","creationTime","startDotAnimation","pauseAutoplay","pauseDotAnimation","removeDotAnimation","togglePlay","autoplayBtn","animationDuration","animationPlayState","autoPlayFocusIn","autoPlayFocusOut","autoPlayMouseOver","autoPlayMouseLeave","autoPlayVisible","Label","listenEvents","trim","updateTemplate","focusableItems","itemLink","lastItem","setFocusToItem","setFocusToCurrentItem","getItemIndex","newItem","dialogMgr","ESCAPE_CODE","classesGlobalDialog","classesShow","classesTopDialog","refContainer","closeOpenedModal","classesExtra","clickOutSide","disableRendering","closeByEscape","backFocusElement","renderedPromise","onBeforeShowModal","openDialog","dialog","addGlobalDialogClass","addListeners","classes","moveBehind","cleanUpListeners","moveToTop","close","removeGlobalDialogClass","closeDialog","onAfterCloseModal","escHandler","clickOutsideHandler","keyboardEvent","processingLabel","SoftKeyboardToggleMixin","hideKeyboardOnOutsideTouch","hideKeyboardReset","hideKeyboard","touchStartDisposables","dataTau","stickyHeader","SwipeToClose","dragDirectionX","startTime","currentX","currentY","menuWidth","lastX","lastY","moveX","menu","panelContainer","handleTouchStart","handleTouchMove","handleTouchEnd","handleTouchCancel","getTime","coordinateX","coordinateY","translateX","translateY","timeTaken","disposableListeners","toggleTransition","menuNode","dragDirection","updateUi","toggleMenu","isTransitionOn","calculateOpacity","percentageBeforeDiff","percentage","setNewOpacity","htmlElement","setProperty","movedPath","velocity","TabPanel","LEFT","RIGHT","Tabs","panelNames","focusedTab","activeFirst","autoActivation","useUrlAnchor","fulfillPanelNames","activatePanel","handleUrlChange","panelName","handleTabClick","clickedButton","saveToPushState","currentTabPanel","toggleTabPanel","toggleActiveRefPanel","handleUrlAnchor","toggleButton","tabPanel","tabName","history","pushState","hashChangedOnly","hash","panelToActivate","getLastFocusedTab","setFocusToTab","tab","isTargetTab","setFocusToFirstTab","firstTab","setFocusToLastTab","lastTab","setFocusToPreviousTab","currentFocusedTab","currentFocusedTabIndex","previousTab","setFocusToNextTab","nextTab","Video","videoThumbnailActiveClass","hideVideo","showVideo","showMinicartOnProductAdd","showAlertOnProductAdd","backInStockForm","zeroWidthSpaceSymbol","spacesLength","concat","addedtocart","updateProductView","backInStockSubscription","isEnabled","showForm","showSuccessBlock","handleBackInStockFormSubmit","bundledProduct","getAlternativeImageSrc","altImageUrl","baseImage","HTMLImageElement","baseImageUrl","currentSrc","baseImageUrlParsed","disQueryString","search","getAlternativeImageText","alternativeImageText","insertAlternativeImage","imageInserted","alternativeImageSrc","altImageElement","alternativeImagePicture","handleHover","handleScroll","altImage","markAlternativeImageActive","root","ProductOptionMixin","handleCustomOptionError","isInputValid","toggleAvailability","getCustomOptionValue","optionId","customOptionValue","textArea","isCustomOptionValid","productOptions","selectedValueId","selectedCustomOption","isCustomOption","isCustomOptionSelected","getAdditionalProductData","productOption","selectedOptionValueId","gtmInfo","goingByLink","showSpinnerDelay","outlineSpace","classesClearEnabled","classesLoadingSuggestions","classesLoadingSuggestionsLong","showInDefaultState","setInputFocus","focusInput","getRealItemsCount","toggleSpinner","processResponse","handleError","total","toggleClearButton","longLoadingTimer","inputVal","clearInput","isInputHasValue","listboxInner","closeSearch","openSearch","refEl","toggleSearch","EventBus","widgetInstance","addListener","removeListener","once","onceFn","time","done","durationTimeout","remaining","clearTimeoutRef","getData","HIDDEN_CLASS","REFELEMENT_ERROR","toSnakeCase","s","els","exists","attrName","attrValue","HTMLSelectElement","HTMLTextAreaElement","validationMessage","tempEl","scripts","tempScript","reverse","attributeName","idx","initialState","classNames","ret","showErrorLayout","token","SAME_ORIGIN","NO_REFERRER","handleUrlOrFormData","skipToken","formData","valuedUrl","tokenObj","dataToSend","ajax","handleResponse500","textResponse","errorObj","csrfError","div","code","handleOkResponse","prepareRequestData","prepareHeaders","locale","siteId","siteid","TypeError","credentials","signal","cookieName","cookieValue","expireInDays","isSecure","setTime","expires","toUTCString","ca","charAt","substring","CSS_SELECTOR","getLoadedState","css","module","hot","media","cssRules","sheet","callbackFunction","invokeLeading","invokeTrailing","executeTrailing","debounceInner","throttle","func","wait","leading","trailing","previous","later","arguments","DialogMgr","dialogsStack","topDialog","previousDialog","EventEmitter","temporaryStorage","localStorage","block","inline","DEBOUNCE_INTERVAL","scrollHandlers","scrollingElement","lastScrollPosition","debounceScroll","handler","tokenName","tokenValue","tokenElement","table","format","param","reg","timer","intervalID","setInterval","clearInterval","removeParamFromURL","delete","accumulator","queryString","queryParams","URLSearchParams","errorLayout","stack","unshift","isEventTriggeredOutsideElement","currElement","makeExposableListener","listener","domEl","expose","objectEquals","Function","valueOf","p","range","stop","step","newRange","regexpBrace","memoize","hasher","memoizeInner","address","loadScriptHandler","source","globalObject","integrity","attrs","prior","async","onload","onabort","onerror","path","defaults","parts","part","shift","tabIndex","rel","viewTypeConfig","breakpoints","smallID","mediumID","largeID","extraLargeID","breakMd","breakLg","breakXl","smallView","mediumView","largeView","exLargeView","queriesMap","currentWindowWidth","currentWindowHeight","getCurrentViewType","matchQuery","matchMedia","matches","onWindowChange","currentViewType","isTouchDevice","DocumentTouch","isTypeView","isMediumView","isMediumViewAndUp","isExtraLargeView","isLargeView","isLargeViewAndUp","isLargeViewAndDown","isDesktopView","modifiersMapping","sm","ALL_VIEW_TYPES","getActiveViewtypeName","m","matchViewport","newDevice","previousDevice","useWindowListeners","currentConfig","windowResize","applyCurrentDeviceType","MenuPanelToggle","CountrySelector","CountrySelectorMenuItem","MenuButton","ContactUs","ProductVideoMixin","AddPaymentMethodForm","InputCreditCardNumber","AddressBookForm","GoogleAutocompleteField","SessionExpiration","PromoCodeDisclosure","PaymentAccordionItemCREDITCARD","PaymentAccordionItemZEROPAYMENT","CheckoutSummaryMixin","BillingStepMixin","__webpack_public_path__","assetsStaticURL","initViewType","WIDGET_PROP_NAME","WIDGET_DISPOSABLE_VALUES","WIDGET_DOM_EVENT_PREFIX","DATA_ATTR_PREFIX","DATA_WIDGET","DATA_WIDGET_VIEWTYPE_RELATED","WIDGET_EVENT_PREFIX","DATA_INITIALIZED","DATA_REF","isViewtypeModifiers","modifiers","isWidget","getViewtypeRelatedWidgetName","activeViewtypeName","viewtypeWidgetConfigs","isViewtypeRelatedWidget","RootWidget","head","getWidgetConfig","activeViewtype","camelCaseKey","camelCase","isActiveViewtypeModifier","isViewtypeModifier","isConfigNotExist","jsonConfig","parsedConfig","reinitElementByWidgetsNamesList","widgetsListNames","widgetName","detachElement","attachElements","reloadEvents","mod","parentWidget","findParentWidget","disposableValues","attachEventToElement","rootWidget","widgetsInitMetric","WidgetMgr","widgets","widgetsLists","widgetsListsNameSpaceOrder","widgetsClassCache","hashRegistry","getting","hasDomLoadedFirst","timeOfEvaluate","timeOfRun","timeOfInit","contextId","run","asyncListPromises","asyncList","registerWidgetsList","readyState","getAll","cachedClass","widgetsConfig","getWidgetClass","baseWidget","widgetClass","set","nameSpace","groupCollapsed","register","groupEnd","setHash","currentHash","getHash","currentWidget","widgetConstructor","widgetConfig","superWidgetConstructor","superBaseWidget","base","getChangedWidgets","emptyArray","newRegistry","ns","prev","nsList","newHash","baseName","changedWidgets","updateMutableComponents","widgetsNames","w","restartWidgets","oldValue","methodToCall","handleWidgetPropertyChange","newValue","disposableForParent","MutationObserver","mutations","mutation","handleMutations","characterData","childList","subtree","headInitTime","timeInitWidgets","timeToRegisterWidgets","loadAndScriptingTime","waitToDomLoaded","domReadyTime","headToDomReady","ms","registerWidgetsTime","initWidgetsTime","a","b","addedNodes","removedNodes","removedNode","nodeType","ELEMENT_NODE","addedNode","rmsPrefix","rdashAlpha","string","_all","letter","attachEventToWidget","prevent","eventHandler","initWidget","registeredWidgets","instance","addRelationships","linkCurrentToParent","prepareWidgetAttributes","forwardToParent","parentWidgetMethodName","prevHandler","addWidgetMetricData","parent","initToolkit","widgetsToolkit","GlobalECountrySelector","GlobalEIFrame","classesInit","initGlobalECountrySelector","pageProperties","report","reportProductImpressions","reportPromoImpressions","pageType","reportBasketLoadDetails","getBasketLoadDataUrl","analyticsOnBasketLoadDetails","basketLoadDetails","reportSubscriptionDetails","subscriptionData","accountSubscriptionType","reportPageLoadDetails","onLoadPageDetails","viewTypesMap","designSize","currentCurrency","gtmUserData","currencyCode","gtmDelayedEvent","dataLayer","trackProductClick","setTilePosition","getWishlistImpressions","impressionsDebounce","hasBeenImpressed","reportImpression","shippingMethodName","viewDevicesMap","DATA_LAYER_EVENT_LABEL","DATA_LAYER_ANALYTICS_LABEL","reportOnLoadBasketDetails","gtmCartData","reportProductAddedToCart","listOfWidgets","subProduct","subscriptionInfo","widgetItem","currentGtmInfo","tileInfo","ecommerce","reportDialog","gtmModalType","reportMinicart","skipEvent","gtmBasketData","gtmObject","analyticsPageData","basketDataSelector","pageDataSelector","pageLevel1","tile","impression","impressions","qvData","detail","actionField","productsData","gtmProductViewDataJson","gtmProductViewData","productTilePosition","productTileList","productData","editEl","productInfo","minicart","checkoutType","RESTRICTED_KEYS","gtmInfoKey","checkoutMethod","checkout_method","checkout","optedIn","email","timestamp","email_id","Timestamp","newShippingMethodName","order","stepMap","billing","summary","selectedShippingMethod","displayName","payment","selectedPaymentInstruments","checkoutMgr","applicableShippingMethods","applicableShippingMethod","orderInfo","checkout_option","paymentMethod","searchItemNode","subLabel","innerText","appliedRefinements","isIdeasSearch","analyticsData","refinementsData","refinement","gtmEventLabel","gtmEventSublabel","addToWishListProduct","addToWishListIdea","addToWishListLineItem","gtmPageContext","isProductSet","categoryItem","categoryLinkItemNode","sublabel","label","impressedProducts","impressionId","promoImpressions","impressionEl","promoDetails","clickEl","promoClick","promotions","promoView","gtmImpressions","productPositions","searchList","listName","impressionObj","getProductList","itemList","gtmImpression","PayPalProfileCard","PayPalBaseButton","PayPalBillingAgreementMixin","PayPalAccountBAButton","PayPalCartBaseButton","PayPalCartButton","PayPalCartBAButton","PayPalCartStaticButton","PaymentAccordionItemPayPal","PayPalBillingForm","PayPalBillingButton","PayPalBillingBAButton","PayPalSavedAccountsList","PaymentAccordionItemPCIPal","PcipalPopup","DatasheetsForm","v","Rewards","swRegister","normalizeUrl","relativeUrl","sandboxUrlType","pathname","userAgent","serviceWorkerInstance","serviceWorker","registration","unregister","isUnregistered","LatLngDistance","SHADOW_CHANGES_COOKIE_NAME","WishlistItemsMgr","getInstance","isItemInWishlist","getWishlistItems","wishlistItems","wishlistItem","itemOptionId","isItemsInWishList","loadWishListItems","saveWishListItems","updateWishlistItems","normalizeWishListItems","isDataNormalized","wishlistShadowChangesCookie","sfccData","wishlistActionUrls","getItems","loadWishlistItemsPromise","ALERT_EVENT","WISHLIST_UPDATE_EVENT","wishlistItemsMgr","addToWishlistMsg","addToWishlistBtn","textAddedToWishlist","addToWishlistHideTexts","originalWishlistButtonMessage","showAlertIfProductInWishlist","getWishlistItemsUrl","addedtowishlist","removedfromwishlist","changeStateWishlistButton","activateWishListButton","deactivateWishListButton","updateStateWishlistButton","updatedProductId","removeProductFromWishlist","removeProductFromWishlistUrl","removeFromWishlist","wishlistButtonClickHandler","addToWishlist","afterUpdateProduct","renderWishListButton","showWishlistMessage","labelAddToWishlistMsg","hideWishlistMessage","addButton","addToWishlistUrl","optionVal","handleSuccess","WishlistIcon","WishlistCartMixin","WishlistMgr","WishListItem"],"sourceRoot":""}