{"version":3,"sources":["webpack:///./cartridges/app_harmony/cartridge/client/default/js/widgets/product/ProductDescriptionItem.js"],"names":["keyCode","Object","freeze","SPACE","ENTER","eventType","CLICK","KEYDOWN","Widget","ProductDescriptionItem","prefs","hiddenClass","collapsedClass","toggleContent","isVisible","ref","toggleClass","attr","handleMoreLessLinks","_el","event","preventEventActions","isExpanded","type","stopPropagation","preventDefault"],"mappings":";;;;;;;;;;AAAA;AAAA;;;;;;AAMA,MAAMA,OAAO,GAAGC,MAAM,CAACC,MAAP,CAAc;AAC1BC,OAAK,EAAE,EADmB;AAE1BC,OAAK,EAAE;AAFmB,CAAd,CAAhB;AAKA,MAAMC,SAAS,GAAGJ,MAAM,CAACC,MAAP,CAAc;AAC5BI,OAAK,EAAE,OADqB;AAE5BC,SAAO,EAAE;AAFmB,CAAd,CAAlB;AAKe,yEAAUC,MAAV,EAAkB;AAC7B,SAAO,MAAMC,sBAAN,SAAqCD,MAArC,CAA4C;AAC/CE,SAAK,GAAG;AACJ,aAAO;AACHC,mBAAW,EAAE,UADV;AAEHC,sBAAc,EAAE,aAFb;AAGH,WAAG,MAAMF,KAAN;AAHA,OAAP;AAKH;;AAEDG,iBAAa,CAACC,SAAD,EAAY;AACrB,WAAKC,GAAL,CAAS,MAAT,EAAiBC,WAAjB,CAA6B,KAAKN,KAAL,GAAaE,cAA1C;AACA,WAAKG,GAAL,CAAS,iBAAT,EACKC,WADL,CACiB,KAAKN,KAAL,GAAaC,WAD9B,EAEKM,IAFL,CAEU,aAFV,EAE0B,GAAEH,SAAU,EAFtC;AAGA,WAAKC,GAAL,CAAS,eAAT,EAA0BE,IAA1B,CAA+B,eAA/B,EAAiD,GAAE,CAACH,SAAU,EAA9D;AACH;AAED;;;;;AAGAI,uBAAmB,CAACC,GAAD,EAAMC,KAAN,EAAa;AAC5B,UAAIC,mBAAmB,GAAG,KAA1B;AACA,YAAMC,UAAU,GAAG,KAAKP,GAAL,CAAS,eAAT,EAA0BE,IAA1B,CAA+B,eAA/B,MAAoD,MAAvE;;AAEA,cAAQG,KAAK,CAACG,IAAd;AACI,aAAKlB,SAAS,CAACC,KAAf;AACI,eAAKO,aAAL,CAAmBS,UAAnB;AACA;;AACJ,aAAKjB,SAAS,CAACE,OAAf;AACI,cAAIa,KAAK,CAACpB,OAAN,KAAkBA,OAAO,CAACG,KAA1B,IAAmCiB,KAAK,CAACpB,OAAN,KAAkBA,OAAO,CAACI,KAAjE,EAAwE;AACpE,iBAAKS,aAAL,CAAmBS,UAAnB;AACAD,+BAAmB,GAAG,IAAtB;AACH;;AACD;;AACJ;AACI;AAXR;;AAcA,UAAIA,mBAAJ,EAAyB;AACrBD,aAAK,CAACI,eAAN;AACAJ,aAAK,CAACK,cAAN;AACH;AACJ;;AA1C8C,GAAnD;AA4CH,C","file":"7.bundle.js","sourcesContent":["/**\n * @description ProductDescriptionItem widget implementation.\n * It is used for handling product's description section\n * @param {Widget} Widget Base widget for extending\n * @returns {typeof ProductDescriptionItem} - ProductDescriptionItem class\n */\nconst keyCode = Object.freeze({\n    SPACE: 32,\n    ENTER: 13\n});\n\nconst eventType = Object.freeze({\n    CLICK: 'click',\n    KEYDOWN: 'keydown'\n});\n\nexport default function (Widget) {\n    return class ProductDescriptionItem extends Widget {\n        prefs() {\n            return {\n                hiddenClass: 'm-hidden',\n                collapsedClass: 'm-collapsed',\n                ...super.prefs()\n            };\n        }\n\n        toggleContent(isVisible) {\n            this.ref('self').toggleClass(this.prefs().collapsedClass);\n            this.ref('expandable-item')\n                .toggleClass(this.prefs().hiddenClass)\n                .attr('aria-hidden', `${isVisible}`);\n            this.ref('controlButton').attr('aria-expanded', `${!isVisible}`);\n        }\n\n        /**\n         * @description Handle triggering `view more` / `view less` links\n         */\n        handleMoreLessLinks(_el, event) {\n            let preventEventActions = false;\n            const isExpanded = this.ref('controlButton').attr('aria-expanded') === 'true';\n\n            switch (event.type) {\n                case eventType.CLICK:\n                    this.toggleContent(isExpanded);\n                    break;\n                case eventType.KEYDOWN:\n                    if (event.keyCode === keyCode.SPACE || event.keyCode === keyCode.ENTER) {\n                        this.toggleContent(isExpanded);\n                        preventEventActions = true;\n                    }\n                    break;\n                default:\n                    return;\n            }\n\n            if (preventEventActions) {\n                event.stopPropagation();\n                event.preventDefault();\n            }\n        }\n    };\n}\n"],"sourceRoot":""}