{"version":3,"file":"RovingFocusGroup-D7fgtvt3.js","sources":["../../node_modules/reka-ui/dist/RovingFocus/RovingFocusGroup.js"],"sourcesContent":["import { defineComponent, toRefs, ref, openBlock, createBlock, unref, withCtx, createVNode, renderSlot } from 'vue';\nimport { useVModel } from '@vueuse/core';\nimport { f as focusFirst, E as ENTRY_FOCUS, a as EVENT_OPTIONS } from './utils.js';\nimport { u as useCollection } from '../Collection/Collection.js';\nimport { u as useDirection } from '../shared/useDirection.js';\nimport { P as Primitive } from '../Primitive/Primitive.js';\nimport { c as createContext } from '../shared/createContext.js';\n\nconst [injectRovingFocusGroupContext, provideRovingFocusGroupContext] = createContext(\"RovingFocusGroup\");\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"RovingFocusGroup\",\n props: {\n orientation: { default: undefined },\n dir: {},\n loop: { type: Boolean, default: false },\n currentTabStopId: {},\n defaultCurrentTabStopId: {},\n preventScrollOnEntryFocus: { type: Boolean, default: false },\n asChild: { type: Boolean },\n as: {}\n },\n emits: [\"entryFocus\", \"update:currentTabStopId\"],\n setup(__props, { expose: __expose, emit: __emit }) {\n const props = __props;\n const emits = __emit;\n const { loop, orientation, dir: propDir } = toRefs(props);\n const dir = useDirection(propDir);\n const currentTabStopId = useVModel(props, \"currentTabStopId\", emits, {\n defaultValue: props.defaultCurrentTabStopId,\n passive: props.currentTabStopId === undefined\n });\n const isTabbingBackOut = ref(false);\n const isClickFocus = ref(false);\n const focusableItemsCount = ref(0);\n const { getItems, CollectionSlot } = useCollection({ isProvider: true });\n function handleFocus(event) {\n const isKeyboardFocus = !isClickFocus.value;\n if (event.currentTarget && event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut.value) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n emits(\"entryFocus\", entryFocusEvent);\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().map((i) => i.ref).filter((i) => i.dataset.disabled !== \"\");\n const activeItem = items.find((item) => item.getAttribute(\"data-active\") === \"true\");\n const currentItem = items.find(\n (item) => item.id === currentTabStopId.value\n );\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n );\n focusFirst(candidateItems, props.preventScrollOnEntryFocus);\n }\n }\n isClickFocus.value = false;\n }\n function handleMouseUp() {\n setTimeout(() => {\n isClickFocus.value = false;\n }, 1);\n }\n __expose({\n getItems\n });\n provideRovingFocusGroupContext({\n loop,\n dir,\n orientation,\n currentTabStopId,\n onItemFocus: (tabStopId) => {\n currentTabStopId.value = tabStopId;\n },\n onItemShiftTab: () => {\n isTabbingBackOut.value = true;\n },\n onFocusableItemAdd: () => {\n focusableItemsCount.value++;\n },\n onFocusableItemRemove: () => {\n focusableItemsCount.value--;\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(CollectionSlot), null, {\n default: withCtx(() => [\n createVNode(unref(Primitive), {\n tabindex: isTabbingBackOut.value || focusableItemsCount.value === 0 ? -1 : 0,\n \"data-orientation\": unref(orientation),\n as: _ctx.as,\n \"as-child\": _ctx.asChild,\n dir: unref(dir),\n style: { \"outline\": \"none\" },\n onMousedown: _cache[0] || (_cache[0] = ($event) => isClickFocus.value = true),\n onMouseup: handleMouseUp,\n onFocus: handleFocus,\n onBlur: _cache[1] || (_cache[1] = ($event) => isTabbingBackOut.value = false)\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"tabindex\", \"data-orientation\", \"as\", \"as-child\", \"dir\"])\n ]),\n _: 3\n });\n };\n }\n});\n\nexport { _sfc_main as _, injectRovingFocusGroupContext as i };\n//# sourceMappingURL=RovingFocusGroup.js.map\n"],"names":["injectRovingFocusGroupContext","provideRovingFocusGroupContext","createContext","_sfc_main","defineComponent","__props","__expose","__emit","props","emits","loop","orientation","propDir","toRefs","dir","useDirection","currentTabStopId","useVModel","isTabbingBackOut","ref","isClickFocus","focusableItemsCount","getItems","CollectionSlot","useCollection","handleFocus","event","isKeyboardFocus","entryFocusEvent","ENTRY_FOCUS","EVENT_OPTIONS","items","i","activeItem","item","currentItem","candidateItems","focusFirst","handleMouseUp","tabStopId","_ctx","_cache","openBlock","createBlock","unref","withCtx","createVNode","Primitive","$event","renderSlot"],"mappings":"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","x_google_ignoreList":[0]}