{"version":3,"file":"js/vendor-acp3-module-system-resources-assets-js-partials-ajax-modal.xxxxxxxxxxxxxxxxxxxx.js","mappings":"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","sources":["webpack://@gowebdesign/ra-lauck/./vendor/acp3/module-system/Resources/Assets/js/lib/utils.js","webpack://@gowebdesign/ra-lauck/./vendor/acp3/module-system/Resources/Assets/js/partials/ajax-modal.js"],"sourcesContent":["/*\n * Copyright (c) by the ACP3 Developers.\n * See the LICENSE file at the top-level module directory for licensing details.\n */\n\nexport function mergeSettings(defaultSettings, constructorOptions, dataAttributeOptions) {\n  const mergedSettings = { ...defaultSettings, ...constructorOptions };\n\n  if (!dataAttributeOptions) {\n    return mergedSettings;\n  }\n\n  for (let [key, value] of Object.entries(dataAttributeOptions)) {\n    const keyStripped = lowerCaseFirstLetter(key.replace(\"ajaxForm\", \"\"));\n\n    if (keyStripped.length > 0 && typeof mergedSettings[keyStripped] !== \"undefined\") {\n      try {\n        mergedSettings[keyStripped] = JSON.parse(value);\n      } catch {\n        mergedSettings[keyStripped] = value;\n      }\n    }\n  }\n\n  return mergedSettings;\n}\n\nfunction lowerCaseFirstLetter(string) {\n  return string.charAt(0).toLowerCase() + string.slice(1);\n}\n\n/**\n * This function adds <script>-elements (e.g. after XHR requests) to the HTML documents <head>, so that the\n * javascript code can actually get executed.\n *\n * @param {HTMLElement} elementContainingScriptTags\n */\nexport function addScriptsToHead(elementContainingScriptTags) {\n  const currentScriptsInHead = document.querySelectorAll(\"head script\");\n  const currentScriptSources = [];\n\n  currentScriptsInHead.forEach((scriptTag) => {\n    if (scriptTag.src) {\n      currentScriptSources.push(scriptTag.src);\n    }\n  });\n\n  for (const ajaxScriptElement of elementContainingScriptTags.getElementsByTagName(\"script\")) {\n    if (!ajaxScriptElement.src) {\n      const scriptElement = document.createElement(\"script\");\n      scriptElement.innerHTML = ajaxScriptElement.innerHTML;\n      document.head.appendChild(scriptElement);\n    } else if (!currentScriptSources.includes(ajaxScriptElement.src)) {\n      const scriptElement = document.createElement(\"script\");\n      scriptElement.src = ajaxScriptElement.src;\n      document.head.appendChild(scriptElement);\n    }\n  }\n}\n\n/**\n * This function adds <link rel=\"stylesheet\">-elements (e.g. after XHR requests) to the HTML documents <head>, so that the\n * stylesheet code can actually get executed.\n *\n * @param {HTMLElement} elementContainingLinkTags\n */\nexport function addStylesheetToHead(elementContainingLinkTags) {\n  const currentStylesheetsInHead = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n  const currentStylesheetSources = [];\n\n  currentStylesheetsInHead.forEach((linkTag) => {\n    if (linkTag.href) {\n      currentStylesheetSources.push(linkTag.href);\n    }\n  });\n\n  for (const ajaxLinkElement of elementContainingLinkTags.querySelectorAll('link[rel=\"stylesheet\"]')) {\n    if (!currentStylesheetSources.includes(ajaxLinkElement.href)) {\n      const linkElement = document.createElement(\"link\");\n      linkElement.href = ajaxLinkElement.href;\n      linkElement.rel = \"stylesheet\";\n      linkElement.type = \"text/css\";\n      document.head.appendChild(linkElement);\n    }\n  }\n}\n","/*\n * Copyright (c) by the ACP3 Developers.\n * See the LICENSE file at the top-level module directory for licensing details.\n */\n\nimport Modal from \"bootstrap/js/dist/modal\";\nimport { addScriptsToHead, addStylesheetToHead } from \"../lib/utils\";\n\n((document) => {\n  const ajaxModals = document.querySelectorAll(\"[data-ajax-modal]\");\n\n  ajaxModals.forEach((ajaxModal) => {\n    const createLinkElem = document.getElementById(ajaxModal.id + \"-link\");\n    const modal = new Modal(ajaxModal, { backdrop: \"static\", focus: false });\n\n    createLinkElem.addEventListener(\"click\", async (e) => {\n      e.preventDefault();\n\n      modal.show();\n\n      if (ajaxModal.classList.contains(\"js-replaced-content\")) {\n        return;\n      }\n\n      const response = await fetch(createLinkElem.href, {\n        headers: {\n          \"X-Requested-With\": \"XMLHttpRequest\",\n          \"X-ACP3-Content-Type\": \"ajax-modal\",\n        },\n      });\n\n      const modalContentElem = ajaxModal.querySelector(\".modal-content\");\n      modalContentElem.innerHTML = await response.text();\n      addScriptsToHead(modalContentElem);\n      addStylesheetToHead(modalContentElem);\n\n      ajaxModal.classList.add(\"js-replaced-content\");\n    });\n  });\n})(document);\n"],"names":["mergeSettings","defaultSettings","constructorOptions","dataAttributeOptions","mergedSettings","key","value","Object","entries","string","keyStripped","replace","charAt","toLowerCase","slice","length","JSON","parse","addScriptsToHead","elementContainingScriptTags","currentScriptsInHead","document","querySelectorAll","currentScriptSources","ajaxScriptElement","forEach","scriptTag","src","push","getElementsByTagName","includes","scriptElement","createElement","head","appendChild","innerHTML","addStylesheetToHead","elementContainingLinkTags","currentStylesheetsInHead","currentStylesheetSources","ajaxLinkElement","linkTag","href","linkElement","rel","type","ajaxModals","createLinkElem","getElementById","ajaxModal","id","modal","Modal","backdrop","focus","addEventListener","e","preventDefault","show","classList","contains","response","fetch","headers","modalContentElem","querySelector","text","add"],"sourceRoot":""}