{"version":3,"file":"button-9TZ3uvcH.js","sources":["../../../app/frontend/entrypoints/marketing/free/button.js"],"sourcesContent":["import { getjQuery, onDOMContentLoaded } from '../mdb/util/index';\nimport Data from '../mdb/dom/data';\nimport EventHandler from '../mdb/dom/event-handler';\nimport Manipulator from '../mdb/dom/manipulator';\nimport SelectorEngine from '../mdb/dom/selector-engine';\n\nimport BSButton from '../bootstrap/mdb-prefix/button';\n\nconst NAME = 'button';\nconst DATA_KEY = `mdb.${NAME}`;\nconst EVENT_KEY = `.${DATA_KEY}`;\n\nconst EVENT_CLICK = `click${EVENT_KEY}`;\nconst EVENT_TRANSITIONEND = 'transitionend';\nconst EVENT_MOUSEENTER = 'mouseenter';\nconst EVENT_MOUSELEAVE = 'mouseleave';\nconst EVENT_HIDE = `hide${EVENT_KEY}`;\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`;\nconst EVENT_SHOW = `show${EVENT_KEY}`;\nconst EVENT_SHOWN = `shown${EVENT_KEY}`;\n\nconst CLASS_NAME_ACTIVE = 'active';\nconst CLASS_NAME_SHOWN = 'shown';\nconst CLASS_NAME_FIXED_ACTION_BTN = 'fixed-action-btn';\n\nconst SELECTOR_BUTTON = '[data-mdb-toggle=\"button\"]';\nconst SELECTOR_FIXED_CONTAINER = '.fixed-action-btn';\nconst SELECTOR_ACTION_BUTTON = '.fixed-action-btn:not(.smooth-scroll) > .btn-floating';\nconst SELECTOR_LIST_ELEMENT = 'ul .btn';\nconst SELECTOR_LIST = 'ul';\n\nclass Button extends BSButton {\n constructor(element) {\n super(element);\n this._fn = {};\n\n if (this._element) {\n Data.setData(this._element, DATA_KEY, this);\n this._init();\n }\n }\n\n // Static\n static get NAME() {\n return NAME;\n }\n\n static jQueryInterface(config, options) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n const _config = typeof config === 'object' && config;\n if (!data && /dispose/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Button(this, _config);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](options);\n }\n });\n }\n\n // Getters\n get _actionButton() {\n return SelectorEngine.findOne(SELECTOR_ACTION_BUTTON, this._element);\n }\n\n get _buttonListElements() {\n return SelectorEngine.find(SELECTOR_LIST_ELEMENT, this._element);\n }\n\n get _buttonList() {\n return SelectorEngine.findOne(SELECTOR_LIST, this._element);\n }\n\n get _isTouchDevice() {\n return 'ontouchstart' in document.documentElement;\n }\n\n // Public\n show() {\n if (Manipulator.hasClass(this._element, CLASS_NAME_FIXED_ACTION_BTN)) {\n EventHandler.off(this._buttonList, EVENT_TRANSITIONEND);\n EventHandler.trigger(this._element, EVENT_SHOW);\n // EventHandler.on(this._buttonList, EVENT_TRANSITIONEND, this._bindListOpenTransitionEnd);\n this._bindListOpenTransitionEnd();\n Manipulator.addStyle(this._element, { height: `${this._fullContainerHeight}px` });\n this._toggleVisibility(true);\n }\n }\n\n hide() {\n if (Manipulator.hasClass(this._element, CLASS_NAME_FIXED_ACTION_BTN)) {\n EventHandler.off(this._buttonList, EVENT_TRANSITIONEND);\n EventHandler.trigger(this._element, EVENT_HIDE);\n // EventHandler.on(this._buttonList, EVENT_TRANSITIONEND, this._bindListHideTransitionEnd);\n this._bindListHideTransitionEnd();\n this._toggleVisibility(false);\n }\n }\n\n dispose() {\n if (Manipulator.hasClass(this._element, CLASS_NAME_FIXED_ACTION_BTN)) {\n EventHandler.off(this._actionButton, EVENT_CLICK);\n this._actionButton.removeEventListener(EVENT_MOUSEENTER, this._fn.mouseenter);\n this._element.removeEventListener(EVENT_MOUSELEAVE, this._fn.mouseleave);\n }\n\n super.dispose();\n }\n\n // Private\n _init() {\n if (Manipulator.hasClass(this._element, CLASS_NAME_FIXED_ACTION_BTN)) {\n this._saveInitialHeights();\n this._setInitialStyles();\n this._bindInitialEvents();\n }\n }\n\n _bindMouseEnter() {\n this._actionButton.addEventListener(\n EVENT_MOUSEENTER,\n // prettier-ignore\n this._fn.mouseenter = () => {\n if (!this._isTouchDevice) {\n this.show();\n }\n }\n // prettier-ignore\n );\n }\n\n _bindMouseLeave() {\n this._element.addEventListener(\n EVENT_MOUSELEAVE,\n // prettier-ignore\n this._fn.mouseleave = () => {\n this.hide();\n }\n // prettier-ignore\n );\n }\n\n _bindClick() {\n EventHandler.on(this._actionButton, EVENT_CLICK, () => {\n if (Manipulator.hasClass(this._element, CLASS_NAME_ACTIVE)) {\n this.hide();\n } else {\n this.show();\n }\n });\n }\n\n _bindListHideTransitionEnd() {\n EventHandler.on(this._buttonList, EVENT_TRANSITIONEND, (event) => {\n if (event.propertyName === 'transform') {\n EventHandler.off(this._buttonList, EVENT_TRANSITIONEND);\n this._element.style.height = `${this._initialContainerHeight}px`;\n EventHandler.trigger(this._element, EVENT_HIDDEN);\n }\n });\n }\n\n _bindListOpenTransitionEnd() {\n EventHandler.on(this._buttonList, EVENT_TRANSITIONEND, (event) => {\n if (event.propertyName === 'transform') {\n EventHandler.off(this._buttonList, EVENT_TRANSITIONEND);\n EventHandler.trigger(this._element, EVENT_SHOWN);\n }\n });\n }\n\n _toggleVisibility(isVisible) {\n const action = isVisible ? 'addClass' : 'removeClass';\n const listTranslate = isVisible ? 'translate(0)' : `translateY(${this._fullContainerHeight}px)`;\n Manipulator.addStyle(this._buttonList, { transform: listTranslate });\n\n if (this._buttonListElements) {\n this._buttonListElements.forEach((el) => Manipulator[action](el, CLASS_NAME_SHOWN));\n }\n Manipulator[action](this._element, CLASS_NAME_ACTIVE);\n }\n\n _getHeight(element) {\n const computed = window.getComputedStyle(element);\n const height = parseFloat(computed.getPropertyValue('height'));\n return height;\n }\n\n _saveInitialHeights() {\n this._initialContainerHeight = this._getHeight(this._element);\n this._initialListHeight = this._getHeight(this._buttonList);\n this._fullContainerHeight = this._initialContainerHeight + this._initialListHeight;\n }\n\n _bindInitialEvents() {\n this._bindClick();\n this._bindMouseEnter();\n this._bindMouseLeave();\n }\n\n _setInitialStyles() {\n this._buttonList.style.marginBottom = `${this._initialContainerHeight}px`;\n this._buttonList.style.transform = `translateY(${this._fullContainerHeight}px)`;\n\n this._element.style.height = `${this._initialContainerHeight}px`;\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation - auto initialization\n * ------------------------------------------------------------------------\n */\n\nSelectorEngine.find(SELECTOR_FIXED_CONTAINER).forEach((element) => {\n let instance = Button.getInstance(element);\n if (!instance) {\n instance = new Button(element);\n }\n return instance;\n});\n\nSelectorEngine.find(SELECTOR_BUTTON).forEach((element) => {\n let instance = Button.getInstance(element);\n if (!instance) {\n instance = new Button(element);\n }\n return instance;\n});\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery();\n\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n $.fn[NAME] = Button.jQueryInterface;\n $.fn[NAME].Constructor = Button;\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n return Button.jQueryInterface;\n };\n }\n});\n\nexport default Button;\n"],"names":["NAME","DATA_KEY","EVENT_KEY","EVENT_CLICK","EVENT_TRANSITIONEND","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","CLASS_NAME_ACTIVE","CLASS_NAME_SHOWN","CLASS_NAME_FIXED_ACTION_BTN","SELECTOR_BUTTON","SELECTOR_FIXED_CONTAINER","SELECTOR_ACTION_BUTTON","SELECTOR_LIST_ELEMENT","SELECTOR_LIST","Button","BSButton","element","Data","config","options","data","_config","SelectorEngine","Manipulator","EventHandler","event","isVisible","action","listTranslate","el","computed","instance","onDOMContentLoaded","$","getjQuery","JQUERY_NO_CONFLICT"],"mappings":"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"}