{"version":3,"sources":["webpack:///./cartridges/app_harmony/cartridge/client/default/js/widgets/product/HarmonyProductTile.js"],"names":["ProductTile","HarmonyProductTile","init","eventBus","on","availabilityUpdate","params","renderAvailability","renderAddToCart","pid","message","availabilityClass","alert","availability","isPreorder","isBackorder","messages","join","class","alerts","alertsCommon","getById","availabilityLabel","render","ref","availabilityAlert","QuickAddToCart","getConstructor","eachChild","child","renderAddToCartText"],"mappings":";;;;;;;;;;AAAA;AAAA;;;;AAIA;;;;;AAKe,yEAAUA,WAAV,EAAuB;AAClC;;;;AAIA,QAAMC,kBAAN,SAAiCD,WAAjC,CAA6C;AACzCE,QAAI,GAAG;AACH,YAAMA,IAAN;AAEA,WAAKC,QAAL,GAAgBC,EAAhB,CAAmB,qBAAnB,EAA0C,oBAA1C;AACH;AAED;;;;;;AAIAC,sBAAkB,CAACC,MAAD,EAAS;AACvB,WAAKC,kBAAL,CAAwBD,MAAxB;AACA,WAAKE,eAAL,CAAqBF,MAArB;AACH;AAED;;;;;;;AAKAC,sBAAkB,CAACD,MAAD,EAAS;AACvB,UAAI,CAACA,MAAM,CAACG,GAAR,IAAe,KAAKA,GAAL,KAAaH,MAAM,CAACG,GAAvC,EAA4C;AACxC;AACH;;AAED,UAAIC,OAAO,GAAG,EAAd;AACA,UAAIC,iBAAiB,GAAG,EAAxB;AACA,UAAIC,KAAK,GAAG,EAAZ;;AAEA,UAAIN,MAAM,CAACO,YAAP,KAAwBP,MAAM,CAACO,YAAP,CAAoBC,UAApB,IAAkCR,MAAM,CAACO,YAAP,CAAoBE,WAA9E,CAAJ,EAAgG;AAC5F,YAAIT,MAAM,CAACO,YAAP,CAAoBG,QAAxB,EAAkC;AAC9BN,iBAAO,GAAGJ,MAAM,CAACO,YAAP,CAAoBG,QAApB,CAA6BC,IAA7B,CAAkC,EAAlC,CAAV;AACAN,2BAAiB,GAAGL,MAAM,CAACO,YAAP,CAAoBK,KAAxC;AACH;;AAED,YAAIZ,MAAM,CAACO,YAAP,CAAoBM,MAAxB,EAAgC;AAC5BP,eAAK,GAAGN,MAAM,CAACO,YAAP,CAAoBO,YAApB,CAAiCH,IAAjC,CAAsC,EAAtC,CAAR;AACH;AACJ;;AAED,WAAKI,OAAL,CAAa,cAAb,EAA8BC,iBAAD,IAAuB;AAChDA,yBAAiB,CAACC,MAAlB,CAAyB,UAAzB,EAAqC;AACjCb,iBAAO,EAAEA,OADwB;AAEjCQ,eAAK,EAAEP;AAF0B,SAArC,EAGGW,iBAAiB,CAACE,GAAlB,CAAsB,WAAtB,CAHH;AAIH,OALD;AAOA,WAAKH,OAAL,CAAa,mBAAb,EAAmCI,iBAAD,IAAuB;AACrDA,yBAAiB,CAACF,MAAlB,CAAyB,UAAzB,EAAqC;AACjCX,eAAK,EAAEA;AAD0B,SAArC,EAEGa,iBAAiB,CAACD,GAAlB,CAAsB,WAAtB,CAFH;AAGH,OAJD;AAKH;AAED;;;;;;AAIAhB,mBAAe,CAACF,MAAD,EAAS;AACpB,UAAI,CAACA,MAAM,CAACG,GAAR,IAAe,KAAKA,GAAL,KAAaH,MAAM,CAACG,GAAvC,EAA4C;AACxC;AACH;;AAED,YAAMiB,cAAc;AAAG;AAA8B,WAAKC,cAAL,CAAoB,gBAApB,CAArD;AAEA,WAAKC,SAAL,CAAeC,KAAK,IAAI;AACpB,YAAIA,KAAK,YAAYH,cAArB,EAAqC;AACjCG,eAAK,CAACC,mBAAN,CAA0BxB,MAA1B;AACH;AACJ,OAJD;AAKH;;AAvEwC;;AA0E7C,SAAOL,kBAAP;AACH,C","file":"4.bundle.js","sourcesContent":["/**\n * @typedef {ReturnType<typeof import('widgets/product/QuickAddToCart').default>} QuickAddToCart\n */\n\n/**\n * @description Base HarmonyProductTile implementation\n * @param {ProductTile} ProductTile widget for extending\n * @returns {typeof HarmonyProductTile} HarmonyProductDetail class\n */\nexport default function (ProductTile) {\n    /**\n     * @class HarmonyProductTile\n     * @augments ProductTile\n     */\n    class HarmonyProductTile extends ProductTile {\n        init() {\n            super.init();\n\n            this.eventBus().on('availability.update', 'availabilityUpdate');\n        }\n\n        /**\n         * @description update components after availability check on change qty\n         * @param {object} params - params\n         */\n        availabilityUpdate(params) {\n            this.renderAvailability(params);\n            this.renderAddToCart(params);\n        }\n\n        /**\n         * @description Render product availability\n         * @param {object} params Product object\n         * @returns {void}\n         */\n        renderAvailability(params) {\n            if (!params.pid || this.pid !== params.pid) {\n                return;\n            }\n\n            let message = '';\n            let availabilityClass = '';\n            let alert = '';\n\n            if (params.availability && (params.availability.isPreorder || params.availability.isBackorder)) {\n                if (params.availability.messages) {\n                    message = params.availability.messages.join('');\n                    availabilityClass = params.availability.class;\n                }\n\n                if (params.availability.alerts) {\n                    alert = params.availability.alertsCommon.join('');\n                }\n            }\n\n            this.getById('availability', (availabilityLabel) => {\n                availabilityLabel.render('template', {\n                    message: message,\n                    class: availabilityClass\n                }, availabilityLabel.ref('container'));\n            });\n\n            this.getById('availabilityAlert', (availabilityAlert) => {\n                availabilityAlert.render('template', {\n                    alert: alert\n                }, availabilityAlert.ref('container'));\n            });\n        }\n\n        /**\n         * @description Render Add to Cart btn\n         * @param {object} params - params\n         */\n        renderAddToCart(params) {\n            if (!params.pid || this.pid !== params.pid) {\n                return;\n            }\n\n            const QuickAddToCart = /** @type {QuickAddToCart} */(this.getConstructor('quickAddToCart'));\n\n            this.eachChild(child => {\n                if (child instanceof QuickAddToCart) {\n                    child.renderAddToCartText(params);\n                }\n            });\n        }\n    }\n\n    return HarmonyProductTile;\n}\n"],"sourceRoot":""}