{"version":3,"file":"stack.cjs","sources":["../../src/FocusScope/stack.ts"],"sourcesContent":["import { createGlobalState } from '@vueuse/core'\nimport { ref } from 'vue'\n\ninterface FocusScopeAPI {\n  paused: boolean\n  pause: () => void\n  resume: () => void\n}\n\nconst useFocusStackState = createGlobalState(() => {\n  const stack = ref<FocusScopeAPI[]>([])\n  return stack\n})\n\nexport function createFocusScopesStack() {\n  /** A stack of focus scopes, with the active one at the top */\n  const stack = useFocusStackState()\n\n  return {\n    add(focusScope: FocusScopeAPI) {\n      // pause the currently active focus scope (at the top of the stack)\n      const activeFocusScope = stack.value[0]\n      if (focusScope !== activeFocusScope)\n        activeFocusScope?.pause()\n\n      // remove in case it already exists (because we'll re-add it at the top of the stack)\n      stack.value = arrayRemove(stack.value, focusScope)\n      stack.value.unshift(focusScope)\n    },\n\n    remove(focusScope: FocusScopeAPI) {\n      stack.value = arrayRemove(stack.value, focusScope)\n      stack.value[0]?.resume()\n    },\n  }\n}\n\nexport function arrayRemove<T>(array: T[], item: T) {\n  const updatedArray = [...array]\n  const index = updatedArray.indexOf(item)\n  if (index !== -1)\n    updatedArray.splice(index, 1)\n\n  return updatedArray\n}\n\nexport function removeLinks(items: HTMLElement[]) {\n  return items.filter(item => item.tagName !== 'A')\n}\n"],"names":["createGlobalState","ref"],"mappings":";;;;;AASA,MAAM,kBAAA,GAAqBA,uBAAkB,MAAM;AACjD,EAAM,MAAA,KAAA,GAAQC,OAAqB,CAAA,EAAE,CAAA;AACrC,EAAO,OAAA,KAAA;AACT,CAAC,CAAA;AAEM,SAAS,sBAAyB,GAAA;AAEvC,EAAA,MAAM,QAAQ,kBAAmB,EAAA;AAEjC,EAAO,OAAA;AAAA,IACL,IAAI,UAA2B,EAAA;AAE7B,MAAM,MAAA,gBAAA,GAAmB,KAAM,CAAA,KAAA,CAAM,CAAC,CAAA;AACtC,MAAA,IAAI,UAAe,KAAA,gBAAA;AACjB,QAAA,gBAAA,EAAkB,KAAM,EAAA;AAG1B,MAAA,KAAA,CAAM,KAAQ,GAAA,WAAA,CAAY,KAAM,CAAA,KAAA,EAAO,UAAU,CAAA;AACjD,MAAM,KAAA,CAAA,KAAA,CAAM,QAAQ,UAAU,CAAA;AAAA,KAChC;AAAA,IAEA,OAAO,UAA2B,EAAA;AAChC,MAAA,KAAA,CAAM,KAAQ,GAAA,WAAA,CAAY,KAAM,CAAA,KAAA,EAAO,UAAU,CAAA;AACjD,MAAM,KAAA,CAAA,KAAA,CAAM,CAAC,CAAA,EAAG,MAAO,EAAA;AAAA;AACzB,GACF;AACF;AAEgB,SAAA,WAAA,CAAe,OAAY,IAAS,EAAA;AAClD,EAAM,MAAA,YAAA,GAAe,CAAC,GAAG,KAAK,CAAA;AAC9B,EAAM,MAAA,KAAA,GAAQ,YAAa,CAAA,OAAA,CAAQ,IAAI,CAAA;AACvC,EAAA,IAAI,KAAU,KAAA,EAAA;AACZ,IAAa,YAAA,CAAA,MAAA,CAAO,OAAO,CAAC,CAAA;AAE9B,EAAO,OAAA,YAAA;AACT;AAEO,SAAS,YAAY,KAAsB,EAAA;AAChD,EAAA,OAAO,KAAM,CAAA,MAAA,CAAO,CAAQ,IAAA,KAAA,IAAA,CAAK,YAAY,GAAG,CAAA;AAClD;;;;;"}