{"version":3,"sources":["webpack:///./src/feature/modal/modal.js"],"names":["classes","open","fullscreen","noPadding","fixed","Modal","element","body","window","features","dom","target","getAttribute","initDomCache","addEventListeners","addSubscriptions","addEventListener","close","e","preventDefault","publish","overlay","removeEventListener","subscribe","title","nopadding","closeBtn","onOpen","setScreenMode","setPaddingMode","updateCloseVisibility","updateContentFromId","updateFixedMode","updateTitle","unsubscribe","document","keyCode","getElementById","content","innerHTML","appendChild","classList","remove","add","wrapper","isVisible","innerText","addKeyListeners","context","removeKeyListeners","contains","fixedMode","removeEventListeners","removeSubscriptions","BaseFeature"],"mappings":"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","file":"25-10370ee1.pkg.js","sourcesContent":["import BaseFeature from '../../foundation/base/base';\r\nimport { initBehaviors, destroyBehaviors, resetBehaviorNames } from '../../foundation/featureLoader';\r\n\r\nconst classes = {\r\n\topen: 'o-modal--open',\r\n\tfullscreen: 'o-modal--fullscreen',\r\n\tnoPadding: 'o-modal__wrapper--no-padding',\r\n\tfixed: 'o-modal--fixed'\r\n};\r\n\r\nexport default class Modal extends BaseFeature {\r\n\tconstructor(element) {\r\n\t\tsuper(element);\r\n\r\n\t\tthis.body = window.features.dom.body;\r\n\t\tthis.target = this.element.getAttribute('data-modal-id');\r\n\t\tthis.initDomCache();\r\n\t\tthis.addEventListeners();\r\n\t\tthis.addSubscriptions();\r\n\t}\r\n\r\n\taddEventListeners() {\r\n\t\tthis.addEventListener(this.dom.close, 'click.close', (e) => {\r\n\t\t\te.preventDefault();\r\n\t\t\tthis.publish('/modal/close');\r\n\t\t});\r\n\r\n\t\tthis.addEventListener(this.dom.overlay, 'click.overlay', (e) => {\r\n\t\t\te.preventDefault();\r\n\t\t\tthis.publish('/modal/close');\r\n\t\t});\r\n\t}\r\n\r\n\tremoveEventListeners() {\r\n\t\tthis.removeEventListener(this.dom.close, 'click.close');\r\n\t\tthis.removeEventListener(this.dom.overlay, 'click.overlay');\r\n\t}\r\n\r\n\taddSubscriptions() {\r\n\t\tthis.subscribe('/modal/open', ({\r\n\t\t\ttarget, title = '', fullscreen, nopadding, closeBtn, fixed, onOpen\r\n\t\t} = {}) => {\r\n\t\t\tif (target && this.target && this.target !== target) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.setScreenMode(fullscreen);\r\n\t\t\tthis.setPaddingMode(nopadding);\r\n\t\t\tthis.updateCloseVisibility(closeBtn);\r\n\t\t\tthis.updateContentFromId(target);\r\n\t\t\tthis.updateFixedMode(fixed);\r\n\t\t\tthis.open();\r\n\r\n\t\t\tif (onOpen) {\r\n\t\t\t\tonOpen(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.updateTitle(title);\r\n\t\t});\r\n\r\n\t\tthis.subscribe('/modal/close', () => {\r\n\t\t\tthis.close();\r\n\t\t});\r\n\t}\r\n\r\n\tremoveSubscriptions() {\r\n\t\tthis.unsubscribe('/modal/open');\r\n\t\tthis.unsubscribe('/modal/close');\r\n\t}\r\n\r\n\taddKeyListeners() {\r\n\t\tthis.addEventListener(document, 'keyup', (e) => {\r\n\t\t\tif (e.keyCode === 27) {\r\n\t\t\t\tthis.close();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tremoveKeyListeners() {\r\n\t\tthis.removeEventListener(document, 'keyup');\r\n\t}\r\n\r\n\t/*\r\n\t\tCopies the entire content from an ID.\r\n\t*/\r\n\tupdateContentFromId(target) {\r\n\t\tconst element = document.getElementById(target);\r\n\r\n\t\tif (element) {\r\n\t\t\tthis.dom.content.innerHTML = element.innerHTML;\r\n\t\t}\r\n\t}\r\n\r\n\tupdateContentFromHtml(target) {\r\n\t\tthis.dom.content.innerHTML = '';\r\n\t\tthis.dom.content.appendChild(target);\r\n\t}\r\n\r\n\tsetScreenMode(fullscreen) {\r\n\t\tthis.element.classList.remove(classes.fullscreen);\r\n\r\n\t\tif (fullscreen) {\r\n\t\t\tthis.element.classList.add(classes.fullscreen);\r\n\t\t}\r\n\t}\r\n\r\n\tsetPaddingMode(nopadding) {\r\n\t\tthis.dom.wrapper.classList.remove(classes.noPadding);\r\n\r\n\t\tif (nopadding) {\r\n\t\t\tthis.dom.wrapper.classList.add(classes.noPadding);\r\n\t\t}\r\n\t}\r\n\r\n\tupdateCloseVisibility(isVisible) {\r\n\t\tthis.dom.close.classList.remove('u-hide');\r\n\r\n\t\tif (!isVisible) {\r\n\t\t\tthis.dom.close.classList.add('u-hide');\r\n\t\t}\r\n\t}\r\n\r\n\tupdateTitle(title) {\r\n\t\tthis.dom.title.innerText = title;\r\n\t}\r\n\r\n\topen() {\r\n\t\tthis.body.classList.add(classes.open);\r\n\t\tthis.addKeyListeners();\r\n\r\n\t\tresetBehaviorNames({ context: this.dom.content });\r\n\t\tinitBehaviors({ context: this.dom.content });\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.body.classList.remove(classes.open);\r\n\r\n\t\tthis.removeKeyListeners();\r\n\t\tdestroyBehaviors({ context: this.dom.content });\r\n\r\n\t\tif (this.body.classList.contains(classes.fixed)) {\r\n\t\t\tthis.body.classList.remove(classes.fixed);\r\n\t\t}\r\n\t}\r\n\r\n\t// Prevents background scrolling on fullscreen modals\r\n\tupdateFixedMode(fixedMode) {\r\n\t\tthis.body.classList.remove(classes.fixed);\r\n\r\n\t\tif (fixedMode) {\r\n\t\t\tthis.body.classList.add(classes.fixed);\r\n\t\t}\r\n\t}\r\n\r\n\tcleanup() {\r\n\t\tthis.removeEventListeners();\r\n\t\tthis.removeSubscriptions();\r\n\t\tthis.removeKeyListeners();\r\n\t}\r\n}\r\n"],"sourceRoot":""}