{"version":3,"file":"set_body_overflow_hidden-CKNgsOoa.js","sources":["../../../node_modules/@slideslive/fuse-kit/dist/utils/utilities/get_focusable.js","../../../node_modules/@slideslive/fuse-kit/dist/utils/utilities/focus_trap.js","../../../node_modules/@slideslive/fuse-kit/dist/utils/utilities/set_body_overflow_hidden.js"],"sourcesContent":["import isVisible from \"../element/is_visible.js\";\nfunction getFocusable(context = document, autofocus = false) {\n  let focusable = [\n    ...context.querySelectorAll(\n      // eslint-disable-next-line max-len\n      'button, [href], select, textarea, input:not([type=\"hidden\"]), [tabindex]:not([tabindex=\"-1\"]), [role=\"button\"]'\n    )\n  ];\n  focusable = focusable.filter((e) => isVisible(e) && (!autofocus || e.dataset.disableAutofocus !== \"true\"));\n  return focusable;\n}\nexport {\n  getFocusable as default\n};\n","import addListener from \"./add_listener.js\";\nimport getFocusable from \"./get_focusable.js\";\nimport isVariableDefinedNotNull from \"./is_variable_defined_not_null.js\";\nimport removeListener from \"./remove_listener.js\";\nclass FocusTrap {\n  constructor() {\n    if (!FocusTrap.instance) {\n      this._data = [];\n      this._props = { listenerId: null };\n      FocusTrap.instance = this;\n      Object.freeze(FocusTrap.instance);\n    }\n    return FocusTrap.instance;\n  }\n  _trapTabKey(event) {\n    if (event.keyCode !== 9) {\n      return;\n    }\n    const openedDialog = document.querySelector(\"dialog[open]\");\n    if (openedDialog) {\n      return;\n    }\n    const focusableItems = getFocusable(this.context);\n    const focusedItem = document.activeElement;\n    const focusedItemIndex = focusableItems.indexOf(focusedItem);\n    if (focusableItems.length === 0) {\n      event.preventDefault();\n      return;\n    }\n    if (focusedItemIndex === -1) {\n      focusableItems[0].focus();\n      event.preventDefault();\n      return;\n    }\n    if (event.shiftKey) {\n      if (focusedItemIndex === 0) {\n        focusableItems[focusableItems.length - 1].focus();\n        event.preventDefault();\n      }\n      return;\n    }\n    if (focusedItemIndex === focusableItems.length - 1) {\n      focusableItems[0].focus();\n      event.preventDefault();\n    }\n  }\n  _focusFirstFocusable() {\n    const focusableItems = getFocusable(this.context, true);\n    if (focusableItems.length === 0) {\n      if (isVariableDefinedNotNull(document.activeElement)) {\n        document.activeElement.blur();\n      }\n      return;\n    }\n    focusableItems[0].focus();\n  }\n  _focusPreviouslyActiveElement() {\n    if (!this.previouslyActiveElement) {\n      return;\n    }\n    this.previouslyActiveElement.focus();\n  }\n  trap(context, options) {\n    this._data.push({\n      context,\n      options,\n      previouslyActiveElement: null\n    });\n    if (!this.options.omitPreviousActive) {\n      this.previouslyActiveElement = document.activeElement;\n    }\n    if (!this.listenerId) {\n      this.listenerId = addListener(window, \"keydown\", this._trapTabKey.bind(this));\n    }\n    this._focusFirstFocusable();\n  }\n  release(context = this.context) {\n    this._focusPreviouslyActiveElement();\n    const contextIndex = this._data.findIndex((data) => data.context === context);\n    if (contextIndex < 0) {\n      return;\n    }\n    this._data.splice(contextIndex, 1);\n    if (this._data.length === 0 && this.listenerId) {\n      removeListener(window, { id: this.listenerId });\n      this.listenerId = null;\n    }\n  }\n  get context() {\n    if (!this._data[this._currentDataIndex]) {\n      return null;\n    }\n    return this._data[this._currentDataIndex].context;\n  }\n  get options() {\n    if (!this._data[this._currentDataIndex]) {\n      return null;\n    }\n    return this._data[this._currentDataIndex].options;\n  }\n  get _currentDataIndex() {\n    return this._data.length - 1;\n  }\n  get listenerId() {\n    return this._props.listenerId;\n  }\n  set listenerId(value) {\n    this._props.listenerId = value;\n  }\n  get previouslyActiveElement() {\n    if (!this._data[this._currentDataIndex]) {\n      return null;\n    }\n    return this._data[this._currentDataIndex].previouslyActiveElement;\n  }\n  set previouslyActiveElement(value) {\n    this._data[this._currentDataIndex].previouslyActiveElement = value;\n  }\n}\nfunction trapFocus(context, { omitPreviousActive = false } = {}) {\n  const focusTrap = new FocusTrap();\n  focusTrap.trap(context, { omitPreviousActive });\n}\nfunction releaseFocus(context) {\n  const focusTrap = new FocusTrap();\n  focusTrap.release(context);\n}\nexport {\n  releaseFocus,\n  trapFocus\n};\n","import isVariableDefinedNotNull from \"./is_variable_defined_not_null.js\";\nfunction setBodyOverflowHidden(counterParam = \"overflowHiddenCnt\") {\n  if (!isVariableDefinedNotNull(document.body[counterParam])) {\n    document.body[counterParam] = 0;\n  }\n  document.body[counterParam] += 1;\n  if (document.body[counterParam] > 0) {\n    document.documentElement.classList.add(\"isLocked\");\n  }\n}\nexport {\n  setBodyOverflowHidden as default\n};\n"],"names":["getFocusable","context","autofocus","focusable","isVisible","FocusTrap","event","focusableItems","focusedItem","focusedItemIndex","isVariableDefinedNotNull","options","addListener","contextIndex","data","removeListener","value","trapFocus","omitPreviousActive","releaseFocus","setBodyOverflowHidden","counterParam"],"mappings":"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","x_google_ignoreList":[0,1,2]}