{"version":3,"file":"scripts.modern.mjs","sources":["../src/js/Breakpoint.js","../src/js/Collection.js","../src/js/FocusTrap.js","../src/js/getConfig.js","../src/js/getPrefix.js","../src/js/localStore.js","../src/js/teleport.js","../src/js/transition.js","../src/js/updateGlobalState.js"],"sourcesContent":["export class Breakpoint {\n  #handler;\n\n  constructor(value, handler) {\n    this.value = value;\n    this.#handler = handler;\n    this.mql = null;\n  }\n\n  get handler() {\n    return this.#handler;\n  }\n\n  // Unmount existing handler before setting a new one.\n  set handler(func) {\n    if (this.mql) {\n      // Conditionally use removeListener() for IE11 support.\n      if (typeof this.mql.removeEventListener === \"function\") {\n        this.mql.removeEventListener(\"change\", this.#handler);\n      } else {\n        this.mql.removeListener(this.#handler);\n      }\n    }\n    this.#handler = func;\n  }\n\n  mount(value, handler) {\n    // Update passed params.\n    if (value) this.value = value;\n    if (handler) this.#handler = handler;\n\n    // Guard if no breakpoint was set.\n    if (!this.value) return this;\n\n    // Setup and store the MediaQueryList instance.\n    this.mql = window.matchMedia(`(min-width: ${this.value})`);\n\n    // Conditionally use addListener() for IE11 support.\n    if (typeof this.mql.addEventListener === \"function\") {\n      this.mql.addEventListener(\"change\", this.#handler);\n    } else {\n      this.mql.addListener(this.#handler);\n    }\n\n    // Run the handler.\n    this.#handler(this.mql);\n\n    return this;\n  }\n\n  unmount() {\n    // Guard if no MediaQueryList instance exists.\n    if (!this.mql) return this;\n\n    // Conditionally use removeListener() for IE11 support.\n    if (typeof this.mql.removeEventListener === \"function\") {\n      this.mql.removeEventListener(\"change\", this.#handler);\n    } else {\n      this.mql.removeListener(this.#handler);\n    }\n\n    // Set value, handler and MediaQueryList to null.\n    this.value = null;\n    this.#handler = null;\n    this.mql = null;\n\n    return this;\n  }\n}\n","export class Collection {\n  constructor() {\n    this.collection = [];\n  }\n\n  async register(item) {\n    await this.deregister(item);\n    this.collection.push(item);\n    return this.collection;\n  }\n\n  async deregister(ref) {\n    const index = this.collection.findIndex((entry) => {\n      return (entry === ref);\n    });\n    if (index >= 0) {\n      const entry = this.collection[index];\n      Object.getOwnPropertyNames(entry).forEach((prop) => {\n        delete entry[prop];\n      });\n      this.collection.splice(index, 1);\n    }\n    return this.collection;\n  }\n\n  async registerCollection(items) {\n    await Promise.all(Array.from(items, (item) => {\n      this.register(item);\n    }));\n    return this.collection;\n  }\n\n  async deregisterCollection() {\n    while (this.collection.length > 0) {\n      await this.deregister(this.collection[0]);\n    }\n    return this.collection;\n  }\n\n  get(value, key = \"id\") {\n    return this.collection.find((item) => {\n      return item[key] === value;\n    });\n  }\n}\n","export class FocusTrap {\n  #focusable;\n  #handleFocusTrap;\n  #handleFocusLock;\n\n  constructor(el = null, selectorFocus = \"[data-focus]\") {\n    this.el = el;\n    this.selectorFocus = selectorFocus;\n    this.#handleFocusTrap = handleFocusTrap.bind(this);\n    this.#handleFocusLock = handleFocusLock.bind(this);\n  }\n\n  get focusable() {\n    return this.#focusable;\n  }\n\n  set focusable(value) {\n    // Update the focusable value.\n    this.#focusable = value;\n\n    // Apply event listeners based on new focusable array length.\n    if (this.#focusable.length) {\n      document.removeEventListener(\"keydown\", this.#handleFocusLock);\n      document.addEventListener(\"keydown\", this.#handleFocusTrap);\n    } else {\n      document.removeEventListener(\"keydown\", this.#handleFocusTrap);\n      document.addEventListener(\"keydown\", this.#handleFocusLock);\n    }\n  }\n\n  get focusableFirst() {\n    return this.focusable[0];\n  }\n\n  get focusableLast() {\n    return this.focusable[this.focusable.length - 1];\n  }\n\n  mount(el, selectorFocus) {\n    // Update passed params.\n    if (el) this.el = el;\n    if (selectorFocus) this.selectorFocus = selectorFocus;\n\n    // Get the focusable elements.\n    this.focusable = this.getFocusable();\n\n    // Set the focus on the element.\n    this.focus();\n  }\n\n  unmount() {\n    // Set element to null.\n    this.el = null;\n\n    // Apply empty array to focusable.\n    this.focusable = [];\n\n    // Remove event listeners\n    document.removeEventListener(\"keydown\", this.#handleFocusTrap);\n    document.removeEventListener(\"keydown\", this.#handleFocusLock);\n  }\n\n  focus(el = this.el, selectorFocus = this.selectorFocus) {\n    // Query for the focus selector, otherwise return this element.\n    const result = el.querySelector(selectorFocus) || el;\n    // Give the returned element focus.\n    result.focus();\n  }\n\n  getFocusable(el = this.el) {\n    // Initialize the focusable array.\n    const focusable = [];\n\n    // Store the initial focus and scroll position.\n    const initFocus = document.activeElement;\n    const initScrollTop = el.scrollTop;\n\n    // Query for all the focusable elements.\n    const selector = focusableSelectors.join(\",\");\n    const els = el.querySelectorAll(selector);\n\n    // Loop through all focusable elements.\n    els.forEach((el) => {\n      // Set them to focus and check \n      el.focus();\n      // Test that the element took focus.\n      if (document.activeElement === el) {\n        // Add element to the focusable array.\n        focusable.push(el);\n      }\n    });\n\n    // Restore the initial scroll position and focus.\n    el.scrollTop = initScrollTop;\n    initFocus.focus();\n\n    // Return the focusable array.\n    return focusable;\n  }\n}\n\n// This has been copied over from focusable-selectors package and modified.\n// https://github.com/KittyGiraudel/focusable-selectors\nconst notInert = \":not([inert])\"; // Previously `:not([inert]):not([inert] *)`\nconst notNegTabIndex = \":not([tabindex^=\\\"-\\\"])\";\nconst notDisabled = \":not(:disabled)\";\nconst focusableSelectors = [\n  `a[href]${notInert}${notNegTabIndex}`,\n  `area[href]${notInert}${notNegTabIndex}`,\n  `input:not([type=\"hidden\"]):not([type=\"radio\"])${notInert}${notNegTabIndex}${notDisabled}`,\n  `input[type=\"radio\"]${notInert}${notNegTabIndex}${notDisabled}`,\n  `select${notInert}${notNegTabIndex}${notDisabled}`,\n  `textarea${notInert}${notNegTabIndex}${notDisabled}`,\n  `button${notInert}${notNegTabIndex}${notDisabled}`,\n  `details${notInert} > summary:first-of-type${notNegTabIndex}`,\n  `iframe${notInert}${notNegTabIndex}`,\n  `audio[controls]${notInert}${notNegTabIndex}`,\n  `video[controls]${notInert}${notNegTabIndex}`,\n  `[contenteditable]${notInert}${notNegTabIndex}`,\n  `[tabindex]${notInert}${notNegTabIndex}`,\n];\n\nfunction handleFocusTrap(event) {\n  // Check if the click was a tab and return if not.\n  const isTab = (event.key === \"Tab\" || event.keyCode === 9);\n  if (!isTab) return;\n\n  // If the shift key is pressed.\n  if (event.shiftKey) {\n    // If the active element is either the root el or first focusable.\n    if (\n      document.activeElement === this.focusableFirst ||\n      document.activeElement === this.el\n    ) {\n      // Prevent default and focus the last focusable element instead.\n      event.preventDefault();\n      this.focusableLast.focus();\n    }\n  } else {\n    // If the active element is either the root el or last focusable.\n    if (\n      document.activeElement === this.focusableLast ||\n      document.activeElement === this.el\n    ) {\n      // Prevent default and focus the first focusable element instead.\n      event.preventDefault();\n      this.focusableFirst.focus();\n    }\n  }\n}\n\nfunction handleFocusLock(event) {\n  // Ignore the tab key by preventing default.\n  const isTab = (event.key === \"Tab\" || event.keyCode === 9);\n  if (isTab) event.preventDefault();\n}\n","export function getConfig(el, dataConfig) {\n  const string = el.getAttribute(`data-${dataConfig}`) || \"\";\n  const json = string.replace(/'/g, \"\\\"\");\n  return (json) ? JSON.parse(json) : {};\n}\n","export function getPrefix() {\n  return getComputedStyle(document.body).getPropertyValue(\"--vrembem-variable-prefix\").trim();\n}\n","export function localStore(key, enable = true) {\n  const local = localStorage.getItem(key);\n  const store = (local) ? JSON.parse(local) : {};\n\n  return {\n    get(prop) {\n      return (prop) ? store[prop] : store;\n    },\n\n    set(prop, value) {\n      if (value) {\n        store[prop] = value;\n      } else {\n        delete store[prop];\n      }\n      if (enable) localStorage.setItem(key, JSON.stringify(store));\n      return store;\n    }\n  };\n}\n","/**\n * Teleports an element in the DOM based on a reference and teleport method.\n * Provide the comment node as the reference to teleport the element back to its\n * previous location.\n * @param {Node} what - What element to teleport.\n * @param {String || Node} where - Where to teleport the element.\n * @param {String} how - How (method) to teleport the element, e.g: 'after',\n *   'before', 'append' or 'prepend'.\n * @return {Node} Return the return reference if it was teleported else return\n *   null if it was returned to a comment reference.\n */\nexport function teleport(what, where, how) {\n  // Check if ref is either a comment or element node.\n  const isComment = (where.nodeType === Node.COMMENT_NODE);\n  const isElement = (where.nodeType === Node.ELEMENT_NODE);\n\n  // Get the reference element.\n  where = (isComment || isElement) ? where : document.querySelector(where);\n\n  // If ref is a comment, set teleport type to 'after'.\n  if (isComment) how = \"after\";\n\n  // Must be a valid reference element and method.\n  if (!where) throw new Error(`Not a valid teleport reference: '${where}'`);\n  if (typeof where[how] != \"function\") throw new Error(`Not a valid teleport method: '${how}'`);\n\n  // Initial return ref is null.\n  let returnRef = null;\n\n  // If ref is not a comment, set a return reference comment.\n  if (!isComment) {\n    returnRef = document.createComment(\"teleported #\" + what.id);\n    what.before(returnRef);\n  }\n\n  // Teleport the target node.\n  where[how](what);\n\n  // Delete the comment node if element was returned to a comment reference.\n  if (isComment) {\n    where.remove();\n  }\n\n  // Return the return reference if it was teleported else return null if it was\n  // returned to a comment reference.\n  return returnRef;\n}\n","export const openTransition = (el, settings) => {\n  return new Promise((resolve) => {\n    // Check if transitions are enabled.\n    if (settings.transition) {\n      // Toggle classes for opening transition.\n      el.classList.remove(settings.stateClosed);\n      el.classList.add(settings.stateOpening);\n\n      // Add event listener for when the transition is finished.\n      el.addEventListener(\"transitionend\", function _f(event) {\n        // Prevent child transition bubbling from firing this event.\n        if (event.target != el) return;\n\n        // Toggle final opened state classes.\n        el.classList.add(settings.stateOpened);\n        el.classList.remove(settings.stateOpening);\n\n        // Resolve the promise and remove the event listener.\n        resolve(el);\n        this.removeEventListener(\"transitionend\", _f);\n      });\n    } else {\n      // Toggle final opened state classes and resolve the promise.\n      el.classList.add(settings.stateOpened);\n      el.classList.remove(settings.stateClosed);\n      resolve(el);\n    }\n  });\n};\n\nexport const closeTransition = (el, settings) => {\n  return new Promise((resolve) => {\n    // Check if transitions are enabled.\n    if (settings.transition) {\n      // Toggle classes for closing transition.\n      el.classList.add(settings.stateClosing);\n      el.classList.remove(settings.stateOpened);\n\n      // Add event listener for when the transition is finished.\n      el.addEventListener(\"transitionend\", function _f(event) {\n        // Prevent child transition bubbling from firing this event.\n        if (event.target != el) return;\n        \n        // Toggle final closed state classes.\n        el.classList.remove(settings.stateClosing);\n        el.classList.add(settings.stateClosed);\n\n        // Resolve the promise and remove the event listener.\n        resolve(el);\n        this.removeEventListener(\"transitionend\", _f);\n      });\n    } else {\n      // Toggle final closed state classes and resolve the promise.\n      el.classList.add(settings.stateClosed);\n      el.classList.remove(settings.stateOpened);\n      resolve(el);\n    }\n  });\n};\n","function setOverflowHidden(state, selector) {\n  if (selector) {\n    const els = document.querySelectorAll(selector);\n    els.forEach((el) => {\n      if (state) {\n        el.style.overflow = \"hidden\";\n      } else {\n        el.style.removeProperty(\"overflow\");\n      }\n    });\n  }\n}\n\nfunction setInert(state, selector) {\n  if (selector) {\n    document.querySelectorAll(selector).forEach((el) => {\n      el.inert = state;\n    });\n  }\n}\n\nexport function updateGlobalState(param, config) {\n  // Set inert state based on if a modal is active.\n  setInert(!!param, config.selectorInert);\n\n  // Set overflow state based on if a modal is active.\n  setOverflowHidden(!!param, config.selectorOverflow);\n}\n"],"names":["Breakpoint","constructor","value","handler","Object","defineProperty","_handler","writable","_classPrivateFieldLooseBase","mql","func","removeEventListener","removeListener","mount","window","matchMedia","addEventListener","addListener","unmount","Collection","collection","register","item","deregister","push","ref","index","findIndex","entry","getOwnPropertyNames","forEach","prop","splice","registerCollection","items","Promise","all","Array","from","deregisterCollection","length","get","key","find","FocusTrap","el","selectorFocus","_focusable","_handleFocusTrap","_handleFocusLock","handleFocusTrap","bind","handleFocusLock","focusable","document","focusableFirst","focusableLast","getFocusable","focus","result","querySelector","initFocus","activeElement","initScrollTop","scrollTop","selector","focusableSelectors","join","els","querySelectorAll","notInert","notNegTabIndex","notDisabled","event","isTab","keyCode","shiftKey","preventDefault","getConfig","dataConfig","string","getAttribute","json","replace","JSON","parse","getPrefix","getComputedStyle","body","getPropertyValue","trim","localStore","enable","local","localStorage","getItem","store","set","setItem","stringify","teleport","what","where","how","isComment","nodeType","Node","COMMENT_NODE","isElement","ELEMENT_NODE","Error","returnRef","createComment","id","before","remove","openTransition","settings","resolve","transition","classList","stateClosed","add","stateOpening","_f","target","stateOpened","closeTransition","stateClosing","setOverflowHidden","state","style","overflow","removeProperty","setInert","inert","updateGlobalState","param","config","selectorInert","selectorOverflow"],"mappings":"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"}