{"version":3,"names":["isIndexOutOfListBounds","list","index","length","isElementVisible","element","checkVisibility","owner","ownerDocument","defaultView","getComputedStyle","display","isListIndexDisabled","disabledIndices","isExplicitlyDisabled","includes","hasAttribute","getAttribute","findNonDisabledListIndex","options","startingIndex","decrement","amount","getMinListIndex","getMaxListIndex","sortByDocumentPosition","a","b","position","compareDocumentPosition","follows","Node","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_CONTAINED_BY","precedes","DOCUMENT_POSITION_PRECEDING","DOCUMENT_POSITION_CONTAINS","isNativeInput","el","tagName","input","selectionStart","isElementDisabled","Element","disabled","scrollIntoViewIfNeeded","scrollContainer","direction","orientation","scrollTo","targetX","scrollLeft","targetY","scrollTop","isOverflowingX","clientWidth","scrollWidth","isOverflowingY","clientHeight","scrollHeight","elementOffsetLeft","getOffset","containerStyles","getStyles","elementStyles","offsetWidth","scrollMarginRight","scrollPaddingRight","scrollMarginLeft","scrollPaddingLeft","elementOffsetTop","scrollMarginTop","scrollPaddingTop","offsetHeight","scrollMarginBottom","scrollPaddingBottom","left","top","behavior","ancestor","side","propName","current","result","offsetParent","styles","Number","parseFloat"],"sources":["composite-utils.ts"],"sourcesContent":["/**\n * Shared helpers for the composite primitives. These mirror the small\n * list-navigation utilities in `packages/react/src/floating-ui-react/utils/\n * composite.ts` + the input / scroll helpers in\n * `packages/react/src/internals/composite/composite.ts`.\n *\n * The 1D list primitives are all the non-floating consumers (toolbar, tabs,\n * radio-group, toggle-group, slider) need. Grid helpers are intentionally not\n * here — the grid implementation lives in `floating-ui/utils/composite.ts`\n * (`getGridNavigatedIndex`), used by the floating path for menu / select /\n * combobox. This stays 1D unless a non-floating grid consumer surfaces.\n */\n\nimport type { TextDirection } from \"./composite-constants\";\n\n/**\n * `disabledIndices` input. Consumers may pass a frozen list or a predicate.\n */\nexport type DisabledIndices =\n\t| ReadonlyArray<number>\n\t| ((index: number) => boolean);\n\n/**\n * Read-only element list. We accept `ReadonlyArray` so call sites that hand us\n * a mutable backing array (the `elementsRef` plain array) still type-check.\n */\nexport type ElementList = ReadonlyArray<HTMLElement | null>;\n\nexport function isIndexOutOfListBounds(\n\tlist: ElementList,\n\tindex: number,\n): boolean {\n\treturn index < 0 || index >= list.length;\n}\n\n/**\n * Best-effort visibility check. Uses `checkVisibility()` where available\n * (Chromium 105+, Firefox 125+) and falls back to a computed-style probe.\n */\nexport function isElementVisible(element: Element): boolean {\n\tif (typeof (element as HTMLElement).checkVisibility === \"function\") {\n\t\treturn (element as HTMLElement).checkVisibility();\n\t}\n\tconst owner = element.ownerDocument?.defaultView;\n\tif (!owner) return true;\n\treturn owner.getComputedStyle(element).display !== \"none\";\n}\n\nexport function isListIndexDisabled(\n\tlist: ElementList,\n\tindex: number,\n\tdisabledIndices?: DisabledIndices,\n): boolean {\n\tconst isExplicitlyDisabled =\n\t\ttypeof disabledIndices === \"function\"\n\t\t\t? disabledIndices(index)\n\t\t\t: (disabledIndices?.includes(index) ?? false);\n\n\tif (isExplicitlyDisabled) return true;\n\n\tconst element = list[index];\n\tif (!element) return false;\n\n\tif (!isElementVisible(element)) return true;\n\n\treturn (\n\t\t!disabledIndices &&\n\t\t(element.hasAttribute(\"disabled\") ||\n\t\t\telement.getAttribute(\"aria-disabled\") === \"true\")\n\t);\n}\n\n/**\n * Walk the list looking for the next non-disabled index. `startingIndex` is\n * exclusive (we advance before the first check) — matching React Base UI's\n * implementation so consumers can port semantics unchanged.\n */\nexport function findNonDisabledListIndex(\n\tlist: ElementList,\n\toptions: {\n\t\tstartingIndex?: number | undefined;\n\t\tdecrement?: boolean | undefined;\n\t\tdisabledIndices?: DisabledIndices | undefined;\n\t\tamount?: number | undefined;\n\t} = {},\n): number {\n\tconst {\n\t\tstartingIndex = -1,\n\t\tdecrement = false,\n\t\tdisabledIndices,\n\t\tamount = 1,\n\t} = options;\n\tlet index = startingIndex;\n\tdo {\n\t\tindex += decrement ? -amount : amount;\n\t} while (\n\t\tindex >= 0 &&\n\t\tindex <= list.length - 1 &&\n\t\tisListIndexDisabled(list, index, disabledIndices)\n\t);\n\treturn index;\n}\n\nexport function getMinListIndex(\n\tlist: ElementList,\n\tdisabledIndices?: DisabledIndices,\n): number {\n\treturn findNonDisabledListIndex(list, { disabledIndices });\n}\n\nexport function getMaxListIndex(\n\tlist: ElementList,\n\tdisabledIndices?: DisabledIndices,\n): number {\n\treturn findNonDisabledListIndex(list, {\n\t\tdecrement: true,\n\t\tstartingIndex: list.length,\n\t\tdisabledIndices,\n\t});\n}\n\n/**\n * Sort comparator for `compareDocumentPosition`. Uses the \"following\"/\n * \"preceding\" bits so nodes render in DOM order regardless of registration\n * sequence.\n */\nexport function sortByDocumentPosition(a: Element, b: Element): number {\n\tconst position = a.compareDocumentPosition(b);\n\tconst follows =\n\t\t(position & Node.DOCUMENT_POSITION_FOLLOWING) !== 0 ||\n\t\t(position & Node.DOCUMENT_POSITION_CONTAINED_BY) !== 0;\n\tif (follows) return -1;\n\tconst precedes =\n\t\t(position & Node.DOCUMENT_POSITION_PRECEDING) !== 0 ||\n\t\t(position & Node.DOCUMENT_POSITION_CONTAINS) !== 0;\n\tif (precedes) return 1;\n\treturn 0;\n}\n\n/**\n * Is the target a native text input? Used to defer arrow-key handling to the\n * browser when the cursor is inside a textbox.\n */\nexport function isNativeInput(\n\telement: EventTarget | null,\n): element is HTMLInputElement | HTMLTextAreaElement {\n\tif (element == null) return false;\n\tconst el = element as HTMLElement;\n\tif (el.tagName === \"INPUT\") {\n\t\tconst input = el as HTMLInputElement;\n\t\treturn input.selectionStart != null;\n\t}\n\tif (el.tagName === \"TEXTAREA\") return true;\n\treturn false;\n}\n\n/**\n * Read-only view of `HTMLElement.disabled` / `aria-disabled` for targets that\n * may not have the `disabled` DOM property (e.g. links).\n */\nexport function isElementDisabled(element: EventTarget | null): boolean {\n\tif (element == null || !(element instanceof Element)) return false;\n\tconst el = element as HTMLElement;\n\tif ((el as { disabled?: boolean }).disabled === true) return true;\n\treturn el.getAttribute(\"aria-disabled\") === \"true\";\n}\n\n/**\n * Scroll `element` into view inside `scrollContainer` when it's outside the\n * visible rectangle, respecting `direction` and `orientation`. The logic is a\n * direct port of Base UI React's `scrollIntoViewIfNeeded`.\n */\nexport function scrollIntoViewIfNeeded(\n\tscrollContainer: HTMLElement | null,\n\telement: HTMLElement | null,\n\tdirection: TextDirection,\n\torientation: \"horizontal\" | \"vertical\" | \"both\",\n): void {\n\tif (!scrollContainer || !element?.scrollTo) {\n\t\treturn;\n\t}\n\n\tlet targetX = scrollContainer.scrollLeft;\n\tlet targetY = scrollContainer.scrollTop;\n\n\tconst isOverflowingX =\n\t\tscrollContainer.clientWidth < scrollContainer.scrollWidth;\n\tconst isOverflowingY =\n\t\tscrollContainer.clientHeight < scrollContainer.scrollHeight;\n\n\tif (isOverflowingX && orientation !== \"vertical\") {\n\t\tconst elementOffsetLeft = getOffset(scrollContainer, element, \"left\");\n\t\tconst containerStyles = getStyles(scrollContainer);\n\t\tconst elementStyles = getStyles(element);\n\n\t\tif (direction === \"ltr\") {\n\t\t\tif (\n\t\t\t\telementOffsetLeft +\n\t\t\t\t\telement.offsetWidth +\n\t\t\t\t\telementStyles.scrollMarginRight >\n\t\t\t\tscrollContainer.scrollLeft +\n\t\t\t\t\tscrollContainer.clientWidth -\n\t\t\t\t\tcontainerStyles.scrollPaddingRight\n\t\t\t) {\n\t\t\t\ttargetX =\n\t\t\t\t\telementOffsetLeft +\n\t\t\t\t\telement.offsetWidth +\n\t\t\t\t\telementStyles.scrollMarginRight -\n\t\t\t\t\tscrollContainer.clientWidth +\n\t\t\t\t\tcontainerStyles.scrollPaddingRight;\n\t\t\t} else if (\n\t\t\t\telementOffsetLeft - elementStyles.scrollMarginLeft <\n\t\t\t\tscrollContainer.scrollLeft + containerStyles.scrollPaddingLeft\n\t\t\t) {\n\t\t\t\ttargetX =\n\t\t\t\t\telementOffsetLeft -\n\t\t\t\t\telementStyles.scrollMarginLeft -\n\t\t\t\t\tcontainerStyles.scrollPaddingLeft;\n\t\t\t}\n\t\t}\n\n\t\tif (direction === \"rtl\") {\n\t\t\tif (\n\t\t\t\telementOffsetLeft - elementStyles.scrollMarginRight <\n\t\t\t\tscrollContainer.scrollLeft + containerStyles.scrollPaddingLeft\n\t\t\t) {\n\t\t\t\ttargetX =\n\t\t\t\t\telementOffsetLeft -\n\t\t\t\t\telementStyles.scrollMarginLeft -\n\t\t\t\t\tcontainerStyles.scrollPaddingLeft;\n\t\t\t} else if (\n\t\t\t\telementOffsetLeft +\n\t\t\t\t\telement.offsetWidth +\n\t\t\t\t\telementStyles.scrollMarginRight >\n\t\t\t\tscrollContainer.scrollLeft +\n\t\t\t\t\tscrollContainer.clientWidth -\n\t\t\t\t\tcontainerStyles.scrollPaddingRight\n\t\t\t) {\n\t\t\t\ttargetX =\n\t\t\t\t\telementOffsetLeft +\n\t\t\t\t\telement.offsetWidth +\n\t\t\t\t\telementStyles.scrollMarginRight -\n\t\t\t\t\tscrollContainer.clientWidth +\n\t\t\t\t\tcontainerStyles.scrollPaddingRight;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (isOverflowingY && orientation !== \"horizontal\") {\n\t\tconst elementOffsetTop = getOffset(scrollContainer, element, \"top\");\n\t\tconst containerStyles = getStyles(scrollContainer);\n\t\tconst elementStyles = getStyles(element);\n\n\t\tif (\n\t\t\telementOffsetTop - elementStyles.scrollMarginTop <\n\t\t\tscrollContainer.scrollTop + containerStyles.scrollPaddingTop\n\t\t) {\n\t\t\ttargetY =\n\t\t\t\telementOffsetTop -\n\t\t\t\telementStyles.scrollMarginTop -\n\t\t\t\tcontainerStyles.scrollPaddingTop;\n\t\t} else if (\n\t\t\telementOffsetTop +\n\t\t\t\telement.offsetHeight +\n\t\t\t\telementStyles.scrollMarginBottom >\n\t\t\tscrollContainer.scrollTop +\n\t\t\t\tscrollContainer.clientHeight -\n\t\t\t\tcontainerStyles.scrollPaddingBottom\n\t\t) {\n\t\t\ttargetY =\n\t\t\t\telementOffsetTop +\n\t\t\t\telement.offsetHeight +\n\t\t\t\telementStyles.scrollMarginBottom -\n\t\t\t\tscrollContainer.clientHeight +\n\t\t\t\tcontainerStyles.scrollPaddingBottom;\n\t\t}\n\t}\n\n\tscrollContainer.scrollTo({ left: targetX, top: targetY, behavior: \"auto\" });\n}\n\nfunction getOffset(\n\tancestor: HTMLElement,\n\telement: HTMLElement,\n\tside: \"left\" | \"top\",\n): number {\n\tconst propName = side === \"left\" ? \"offsetLeft\" : \"offsetTop\";\n\tlet current: HTMLElement = element;\n\tlet result = 0;\n\twhile (current.offsetParent) {\n\t\tresult += current[propName];\n\t\tif (current.offsetParent === ancestor) break;\n\t\tcurrent = current.offsetParent as HTMLElement;\n\t}\n\treturn result;\n}\n\nfunction getStyles(element: HTMLElement): {\n\tscrollMarginTop: number;\n\tscrollMarginRight: number;\n\tscrollMarginBottom: number;\n\tscrollMarginLeft: number;\n\tscrollPaddingTop: number;\n\tscrollPaddingRight: number;\n\tscrollPaddingBottom: number;\n\tscrollPaddingLeft: number;\n} {\n\tconst owner = element.ownerDocument?.defaultView;\n\tif (!owner) {\n\t\treturn {\n\t\t\tscrollMarginTop: 0,\n\t\t\tscrollMarginRight: 0,\n\t\t\tscrollMarginBottom: 0,\n\t\t\tscrollMarginLeft: 0,\n\t\t\tscrollPaddingTop: 0,\n\t\t\tscrollPaddingRight: 0,\n\t\t\tscrollPaddingBottom: 0,\n\t\t\tscrollPaddingLeft: 0,\n\t\t};\n\t}\n\tconst styles = owner.getComputedStyle(element);\n\treturn {\n\t\tscrollMarginTop: Number.parseFloat(styles.scrollMarginTop) || 0,\n\t\tscrollMarginRight: Number.parseFloat(styles.scrollMarginRight) || 0,\n\t\tscrollMarginBottom: Number.parseFloat(styles.scrollMarginBottom) || 0,\n\t\tscrollMarginLeft: Number.parseFloat(styles.scrollMarginLeft) || 0,\n\t\tscrollPaddingTop: Number.parseFloat(styles.scrollPaddingTop) || 0,\n\t\tscrollPaddingRight: Number.parseFloat(styles.scrollPaddingRight) || 0,\n\t\tscrollPaddingBottom: Number.parseFloat(styles.scrollPaddingBottom) || 0,\n\t\tscrollPaddingLeft: Number.parseFloat(styles.scrollPaddingLeft) || 0,\n\t};\n}\n"],"mappings":"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","ignoreList":[]}