{"version":3,"file":"modal.js","names":["Modal","title","titleSub","content","onAppear","onClosing","onClosed","onFailedLoad","showCloseButton","closeOnEscape","closeOnClickOutside","classes","titleSubElm","titleElm","closeElm","m","document","createElement","classList","add","split","forEach","cl","innerHTML","body","appendChild","clickedOutsideEvent","e","target","close","destroy","silent","parentNode","removeChild","current","querySelector","remove","removeEventListener","addContent","loadedContent","container","ControlBinders","run","addEventListener","_global","initBlock","querySelectorAll","focusableElements","length","focus","el","ele","img","onload","deckPlanBlock","share","addthis","init","toolbox","window","layers","refresh","mContent","scrollHeight","innerHeight","forceClose","continueClose","Promise","resolve","then","result","reject","htmlElement","setTimeout","event","key","register","openModal","modal","dataset","modalTitle","modalTitleSub","modalMethod","cloneNode","fetch","response","text","modalHideClose","modalClasses","modalOnOpen","undefined","eval","modalOnClose","modalAutoload","stopPropagation"],"sources":["modal.js"],"sourcesContent":["const Modal = function ({\r\n title = \"\",\r\n titleSub = \"\",\r\n content,\r\n onAppear,\r\n onClosing,\r\n onClosed,\r\n onFailedLoad,\r\n showCloseButton = true,\r\n closeOnEscape = true,\r\n closeOnClickOutside = true,\r\n classes = \"\"\r\n } = {}) {\r\n const titleSubElm = titleSub\r\n ?\r\n `
${titleSub}
`\r\n : '';\r\n const titleElm = title\r\n ?\r\n `
\r\n
${title}
\r\n ${titleSubElm}\r\n
`\r\n : '';\r\n const closeElm = (showCloseButton) ? `\r\n \r\n ` : ``;\r\n\r\n const m = document.createElement(\"div\");\r\n m.classList.add(\"modal\");\r\n\r\n if (classes) {\r\n classes.split(\" \").forEach(cl => m.classList.add(cl));\r\n }\r\n\r\n m.innerHTML =\r\n `
\r\n ${titleElm}\r\n ${closeElm}\r\n
\r\n
`;\r\n\r\n document.body.appendChild(m);\r\n\r\n const clickedOutsideEvent = (e) => {\r\n if (!closeOnClickOutside) {\r\n return;\r\n }\r\n if (e.target === m) {\r\n this.close();\r\n }\r\n }\r\n\r\n const destroy = (silent = false) => {\r\n m.parentNode.removeChild(m);\r\n Modal.current = null;\r\n document.querySelector('html').classList.remove('has-overlay');\r\n document.removeEventListener(\"click\", clickedOutsideEvent);\r\n\r\n if (!silent && typeof onClosed === \"function\") {\r\n onClosed();\r\n }\r\n };\r\n\r\n const addContent = loadedContent => {\r\n const container = m.querySelector(\".modal__content\");\r\n\r\n if (typeof loadedContent === \"string\") {\r\n container.innerHTML = loadedContent;\r\n } else {\r\n container.appendChild(loadedContent);\r\n }\r\n\r\n ControlBinders.run(container);\r\n\r\n document.addEventListener(\"click\", clickedOutsideEvent);\r\n \r\n _global.initBlock();\r\n\r\n m.querySelectorAll(\"[data-modal-close]\").forEach(closeElm => {\r\n closeElm.addEventListener(\"click\",\r\n () => {\r\n this.close();\r\n });\r\n });\r\n\r\n m.classList.add(\"modal--open\");\r\n document.querySelector('html').classList.add('has-overlay');\r\n\r\n const focusableElements = container.querySelectorAll(`button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])`);\r\n if (focusableElements.length > 0) {\r\n focusableElements[0].focus()\r\n }\r\n\r\n if (typeof onAppear === \"function\") {\r\n onAppear(container);\r\n }\r\n\r\n document.querySelectorAll('.deck-plan-block').forEach(el => {\r\n document.querySelectorAll('[data-deckplan-image-media]').forEach(ele => {\r\n const img = ele.querySelector('img');\r\n if (img) {\r\n img.onload = () => {\r\n deckPlanBlock.initBlock(el);\r\n }\r\n }\r\n })\r\n });\r\n\r\n\r\n document.querySelectorAll('.share-modal').forEach(share => {\r\n if (typeof addthis !== 'undefined') {\r\n addthis.init();\r\n addthis.toolbox();\r\n if (typeof(window.addthis.layers.refresh) === \"function\"){\r\n addthis.layers.refresh(); \r\n }\r\n }\r\n });\r\n \r\n \r\n const mContent = m.querySelector('.modal__content');\r\n if (mContent.scrollHeight > window.innerHeight){\r\n m.classList.add('modal--scrollbar');\r\n }\r\n \r\n container.addEventListener('scroll', () => {\r\n \r\n });\r\n\r\n };\r\n\r\n this.close = (forceClose = false) => {\r\n const continueClose = () => {\r\n destroy();\r\n return Promise.resolve();\r\n }\r\n\r\n if (forceClose || typeof onClosing !== \"function\") {\r\n return continueClose();\r\n }\r\n\r\n return Promise.resolve(onClosing(m.querySelector(\".modal__content\")))\r\n .then(result => {\r\n if (result !== false) {\r\n return continueClose();\r\n }\r\n\r\n return Promise.reject(\"Aborted modal close\");\r\n });\r\n }\r\n\r\n if (Modal.current) {\r\n\r\n const htmlElement = document.querySelector(`html`);\r\n htmlElement.classList.add(`html--overlay`)\r\n setTimeout(() => Modal.current.close(true), 500);\r\n setTimeout(() => {\r\n\r\n Modal.current = this;\r\n this.closeOnEscape = closeOnEscape;\r\n\r\n Promise.resolve(content)\r\n .then(addContent, e => {\r\n destroy(true);\r\n\r\n if (typeof onFailedLoad === \"function\") {\r\n onFailedLoad(e);\r\n }\r\n\r\n }).then(() => setTimeout(() => htmlElement.classList.remove(`html--overlay`), 500));\r\n\r\n }, 500);\r\n\r\n } else {\r\n\r\n Modal.current = this;\r\n this.closeOnEscape = closeOnEscape;\r\n\r\n Promise.resolve(content)\r\n .then(addContent, e => {\r\n destroy(true);\r\n\r\n if (typeof onFailedLoad === \"function\") {\r\n onFailedLoad(e);\r\n }\r\n });\r\n\r\n }\r\n\r\n}\r\n\r\ndocument.addEventListener('keydown', event => {\r\n if (event.key === 'Escape' && Modal.current && Modal.current.closeOnEscape) {\r\n Modal.current.close();\r\n }\r\n});\r\n\r\nControlBinders.register(\"[data-modal]\", el => {\r\n const openModal = () => {\r\n const modal = new Modal({\r\n title: el.dataset.modalTitle,\r\n titleSub: el.dataset.modalTitleSub,\r\n content: el.dataset.modalMethod === \"clone\" ?\r\n document.querySelector(el.dataset.modal).cloneNode(true) :\r\n fetch(el.dataset.modal).then(response => response.text()),\r\n showCloseButton: !el.dataset.modalHideClose,\r\n classes: el.dataset.modalClasses,\r\n onAppear: container => {\r\n if (typeof el.dataset.modalOnOpen !== undefined && typeof eval(el.dataset.modalOnOpen) === \"function\") {\r\n return eval(el.dataset.modalOnOpen)(container);\r\n }\r\n },\r\n onClosing: container => {\r\n if (typeof el.dataset.modalOnClose !== undefined && typeof eval(el.dataset.modalOnClose) === \"function\") {\r\n return eval(el.dataset.modalOnClose)(container);\r\n }\r\n return true;\r\n }\r\n });\r\n };\r\n\r\n if (el.dataset.modalAutoload) {\r\n openModal();\r\n }\r\n\r\n el.addEventListener(\"click\", function (event) {\r\n event.stopPropagation();\r\n openModal();\r\n });\r\n\r\n});"],"mappings":"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"}