{"version":3,"sources":["backdrop.js"],"names":["EventHandler","Config","execute","executeAfterTransition","getElement","reflow","NAME","CLASS_NAME_FADE","CLASS_NAME_SHOW","EVENT_MOUSEDOWN","concat","Default","className","clickCallback","isAnimated","isVisible","rootElement","DefaultType","Backdrop","config","_this","_classCallCheck","this","_callSuper","_config","_getConfig","_isAppended","_element","_inherits","_createClass","key","value","callback","element","_append","_getElement","classList","add","_emulateAnimation","_this2","remove","dispose","off","backdrop","document","createElement","_this3","append","on","get"],"mappings":"w3EAOAA,iBAAA,iCACAC,WAAA,qBAEAC,QAAAC,uBAAAC,WAAAC,MACA,KAAA,aAPA,IAAAC,KAAA,WACAC,gBAAA,OAcAC,gBAAA,OAZAC,gBAAA,gBAAAC,OAAAJ,IAAA,EAEAK,QAAA,CAcAC,UAAA,iBAVAC,cAAA,KACAC,WAAA,CAAA,EACAC,UAAA,CAAA,EAYAC,YAAA,MAVA,EAEAC,YAAA,CACAL,UAAA,SAEAC,cAAA,kBAWAC,WAAA,UACAC,UAAA,UACAC,YAAA,kBACA,EAMAE,SAAA,WACA,SAAAA,EAAAC,GAAA,IAAAC,EAIA,OAJAC,gBAAAC,KAAAJ,CAAA,GACAE,EAAAG,WAAAD,KAAAJ,CAAA,GACAM,QAAAJ,EAAAK,WAAAN,CAAA,EATAC,EAAAM,YAAA,CAAA,EAWAN,EAAAO,SAAA,KAAAP,CATA,CAEA,OAAAQ,UAAAV,EAEAjB,MAFA,EAAA4B,aAAAX,EAAA,CAAA,CAAAY,IAAA,OAAAC,MAwBA,SAAAC,GACA,IAOAC,EAPAX,KAAAE,QAAAT,WAKAO,KAAAY,QAAA,EAEAD,EAAAX,KAAAa,YAAA,EACAb,KAAAE,QAAAV,YACAT,OAAA4B,CAAA,EAGAA,EAAAG,UAAAC,IAAA7B,eAAA,EAEAc,KAAAgB,kBAAA,WACApC,QAAA8B,CAAA,CACA,CAAA,GAfA9B,QAAA8B,CAAA,CAgBA,CAAA,EAAA,CAAAF,IAAA,OAAAC,MAEA,SAAAC,GAAA,IAAAO,EAAAjB,KACAA,KAAAE,QAAAT,WAKAO,KAAAa,YAAA,EAAAC,UAAAI,OAAAhC,eAAA,EAEAc,KAAAgB,kBAAA,WACAC,EAAAE,QAAA,EACAvC,QAAA8B,CAAA,CACA,CAAA,GATA9B,QAAA8B,CAAA,CAUA,CAAA,EAAA,CAAAF,IAAA,UAAAC,MAEA,WACAT,KAAAI,cAIA1B,aAAA0C,IAAApB,KAAAK,SAAAlB,eAAA,EAEAa,KAAAK,SAAAa,OAAA,EACAlB,KAAAI,YAAA,CAAA,EACA,CAEA,EAAA,CAAAI,IAAA,cAAAC,MACA,WACA,IACAY,EASA,OAVArB,KAAAK,YACAgB,EAAAC,SAAAC,cAAA,KAAA,GACAjC,UAAAU,KAAAE,QAAAZ,UACAU,KAAAE,QAAAV,YACA6B,EAAAP,UAAAC,IAAA9B,eAAA,EAGAe,KAAAK,SAAAgB,GAGArB,KAAAK,QACA,CAAA,EAAA,CAAAG,IAAA,oBAAAC,MAEA,SAAAZ,GAGA,OADAA,EAAAH,YAAAZ,WAAAe,EAAAH,WAAA,EACAG,CACA,CAAA,EAAA,CAAAW,IAAA,UAAAC,MAEA,WAAA,IAKAE,EALAa,EAAAxB,KACAA,KAAAI,cAIAO,EAAAX,KAAAa,YAAA,EACAb,KAAAE,QAAAR,YAAA+B,OAAAd,CAAA,EAEAjC,aAAAgD,GAAAf,EAAAxB,gBAAA,WACAP,QAAA4C,EAAAtB,QAAAX,aAAA,CACA,CAAA,EAEAS,KAAAI,YAAA,CAAA,EACA,CAAA,EAAA,CAAAI,IAAA,oBAAAC,MAEA,SAAAC,GACA7B,uBAAA6B,EAAAV,KAAAa,YAAA,EAAAb,KAAAE,QAAAV,UAAA,CACA,CAAA,GAAA,CAAA,CAAAgB,IAAA,UAAAmB,IA7GA,WAcA,OAAAtC,OACA,CAAA,EAAA,CAAAmB,IAAA,cAAAmB,IAEA,WACA,OAAAhC,WACA,CAAA,EAAA,CAAAa,IAAA,OAAAmB,IAEA,WACA,OAAA3C,IACA,CAAA,EAAA,CAAA,EAnBA,iBA4GAY","file":"backdrop.js","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport {\n execute, executeAfterTransition, getElement, reflow\n} from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = null\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n const element = this._getElement()\n if (this._config.isAnimated) {\n reflow(element)\n }\n\n element.classList.add(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n execute(callback)\n })\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n this.dispose()\n execute(callback)\n })\n }\n\n dispose() {\n if (!this._isAppended) {\n return\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n this._element.remove()\n this._isAppended = false\n }\n\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div')\n backdrop.className = this._config.className\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE)\n }\n\n this._element = backdrop\n }\n\n return this._element\n }\n\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n const element = this._getElement()\n this._config.rootElement.append(element)\n\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n }\n}\n\nexport default Backdrop\n"]}