{"version":3,"sources":["jsdelivr-header.js","/gh/willmyerscode/section-loader@3.0.3/section-loader.js"],"names":[],"mappings":"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","file":"/gh/willmyerscode/section-loader@3.0.3/section-loader.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.48.0.\n * Original file: /gh/willmyerscode/section-loader@3.0.3/section-loader.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","class WMSectionLoaderManager {\n  static states = {\n    IDLE: \"idle\",\n    LOADING: \"loading\",\n    COMPLETE: \"complete\",\n    ERROR: \"error\",\n  };\n  static defaultSettings = {\n\n    \n  };\n  static get userSettings() {\n    return window[\"wmSectionLoaderSettings\"] || {};\n  }\n  static instanceSettings(el) {\n    const dataAttributes = {};\n\n    function parseAttr(string) {\n      if (string === \"true\") return true;\n      if (string === \"false\") return false;\n      const number = parseFloat(string);\n      if (!isNaN(number) && number.toString() === string) return number;\n      return string;\n    }\n\n    // Function to set value in a nested object based on key path\n    const setNestedProperty = (obj, keyPath, value) => {\n      const keys = keyPath.split(\"__\");\n      let current = obj;\n\n      keys.forEach((key, index) => {\n        if (index === keys.length - 1) {\n          current[key] = parseAttr(value);\n        } else {\n          current = current[key] = current[key] || {};\n        }\n      });\n    };\n\n    for (let [attrName, value] of Object.entries(el.dataset)) {\n      setNestedProperty(dataAttributes, attrName, value);\n    }\n\n    if (dataAttributes.metadataBelowExcerpt) {\n      dataAttributes.metadataBelowExcerpt = dataAttributes.metadataBelowExcerpt\n        .split(\",\")\n        .map(item => item.trim().toLowerCase());\n    }\n    if (dataAttributes.metadataAboveTitle) {\n      dataAttributes.metadataAboveTitle = dataAttributes.metadataAboveTitle\n        .split(\",\")\n        .map(item => item.trim().toLowerCase());\n    }\n    if (dataAttributes.metadataBelowTitle) {\n      dataAttributes.metadataBelowTitle = dataAttributes.metadataBelowTitle\n        .split(\",\")\n        .map(item => item.trim().toLowerCase());\n    }\n\n    return dataAttributes;\n  }\n\n  constructor() {\n    this.instances = new WeakMap();\n  }\n\n  setState(el, state) {\n    el.dataset.loadingState = state;\n    wm$.emitEvent(\"wmSectionLoader:stateChange\", {el, state});\n  }\n\n  async init(onComplete) { \n    wm$.emitEvent(\"wmSectionLoader:beforeInit\");\n    const loadEls = document.querySelectorAll(\n      '[data-wm-plugin=\"load\"]:not([data-loading-state])'\n    );\n    if (!loadEls.length) {\n      if (onComplete) onComplete();\n      return;\n    }\n\n    const promises = Array.from(loadEls).map(el => {\n      el.classList.add('wm-load-container');\n      const settings = wm$.deepMerge(\n        {},\n        WMSectionLoaderManager.defaultSettings,\n        WMSectionLoaderManager.userSettings,\n        WMSectionLoaderManager.instanceSettings(el)\n      );\n      this.instances.set(el, {settings});\n      return this.fetchAndInsert(el);\n    });\n\n    await Promise.all(promises);\n\n    await this.finalizeLoad();\n\n    wm$.emitEvent(\"wmSectionLoader:afterInit\");\n    wm$.emitEvent(\"wmSectionLoader:ready\");\n    if (onComplete) onComplete();\n  }\n\n  async fetchAndInsert(el) {\n    const src = el.dataset.source || el.dataset.target;\n    if (!src) {\n      console.warn(\"No source URL provided for section loader\");\n      return;\n    }\n\n    this.setState(el, WMSectionLoaderManager.states.LOADING);\n\n    try {\n      const [url, ...args] = src.split(' ');\n      const hasSelector = args.length > 0;\n      \n      // Support both the legacy \"#sections\" container and the new\n      // \"#page-regions\" container so this works before and after the\n      // Squarespace standalone-page DOM rollout.\n      const content = hasSelector\n        ? await wm$.getFragment(url, args.join(' '))\n        : await wm$.getFragment(url, \"#sections, #page-regions\");\n\n      el.innerHTML = \"\";\n      \n      if (hasSelector) {\n        el.appendChild(content);\n      } else {\n        // Append only the actual page sections. In the new DOM these are\n        // nested inside a \".region\" wrapper, so target \"section.page-section\"\n        // directly to flatten them and avoid grabbing the region wrappers.\n        content.querySelectorAll('section.page-section').forEach(section => {\n          el.appendChild(section);\n        });\n      }\n\n      this.checkFullWidth(el);\n      this.setState(el, WMSectionLoaderManager.states.COMPLETE);\n    } catch (error) {\n      console.error(\"Error loading section:\", error);\n      el.innerHTML = \"<p>Error loading content</p>\";\n      this.setState(el, WMSectionLoaderManager.states.ERROR);\n    }\n  }\n\n  checkFullWidth(el) {\n    const closestSection = el.closest(\".page-section\");\n    if (closestSection?.classList.contains(\"background-width--full-bleed\")) {\n      el.dataset.isFullWidth = \"true\";\n    }\n  }\n\n  async finalizeLoad() {\n    // Wait for all loaders to complete\n    const allLoaders = document.querySelectorAll('[data-wm-plugin=\"load\"][data-loading-state]');\n    const loadingPromises = Array.from(allLoaders).map(loader => {\n      return new Promise(resolve => {\n        if (\n          loader.dataset.loadingState === WMSectionLoaderManager.states.COMPLETE ||\n          loader.dataset.loadingState === WMSectionLoaderManager.states.ERROR\n        ) {\n          resolve();\n        } else {\n          loader.addEventListener(\n            \"stateChange\",\n            e => {\n              if (\n                e.detail.state === WMSectionLoaderManager.states.COMPLETE ||\n                e.detail.state === WMSectionLoaderManager.states.ERROR\n              ) {\n                resolve();\n              }\n            },\n            {once: true}\n          );\n        }\n      });\n    });\n\n    await Promise.all(loadingPromises);\n    await wm$.reloadSquarespaceLifecycle(Array.from(allLoaders));\n    // await wm$.initializeAllPlugins()\n\n  }\n\n  getInstance(el) {\n    return this.instances.get(el);\n  }\n}\n\n// Create single instance\n(function () {\n  const loadManager = new WMSectionLoaderManager();\n\n  // Export globally\n  window.wmSectionLoader = {\n    init: callback => loadManager.init(callback),\n    getInstance: el => loadManager.getInstance(el),\n  };\n\n  // Auto-init\n  if (document.readyState === \"loading\") {\n    window.addEventListener(\"DOMContentLoaded\", () => loadManager.init());\n  } else {\n    loadManager.init();\n  }\n})();\n"]}