@lmb-it/kitsconcerto-native 0.1.284 → 0.1.285

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/apps/mobile/src/Core/AutoComplete/index.cjs +12 -4
  2. package/apps/mobile/src/Core/AutoComplete/index.cjs.map +1 -1
  3. package/apps/mobile/src/Core/AutoComplete/index.js +12 -4
  4. package/apps/mobile/src/Core/AutoComplete/index.js.map +1 -1
  5. package/apps/mobile/src/Core/MultiSelect/index.cjs +7 -4
  6. package/apps/mobile/src/Core/MultiSelect/index.cjs.map +1 -1
  7. package/apps/mobile/src/Core/MultiSelect/index.js +7 -4
  8. package/apps/mobile/src/Core/MultiSelect/index.js.map +1 -1
  9. package/form/helpers/FormContainer/index.cjs +12 -2
  10. package/form/helpers/FormContainer/index.cjs.map +1 -1
  11. package/form/helpers/FormContainer/index.js +12 -2
  12. package/form/helpers/FormContainer/index.js.map +1 -1
  13. package/form/selects/AutoComplete/index.cjs +10 -1
  14. package/form/selects/AutoComplete/index.cjs.map +1 -1
  15. package/form/selects/AutoComplete/index.js +11 -2
  16. package/form/selects/AutoComplete/index.js.map +1 -1
  17. package/form/selects/MultiSelect/index.cjs +8 -1
  18. package/form/selects/MultiSelect/index.cjs.map +1 -1
  19. package/form/selects/MultiSelect/index.js +9 -2
  20. package/form/selects/MultiSelect/index.js.map +1 -1
  21. package/hooks/useComponentDefaults.cjs +50 -8
  22. package/hooks/useComponentDefaults.cjs.map +1 -1
  23. package/hooks/useComponentDefaults.js +50 -8
  24. package/hooks/useComponentDefaults.js.map +1 -1
  25. package/index.d.ts +102 -15
  26. package/package.json +1 -1
  27. package/packages/types/src/Theme/defaultTheme.cjs +24 -4
  28. package/packages/types/src/Theme/defaultTheme.cjs.map +1 -1
  29. package/packages/types/src/Theme/defaultTheme.js +24 -4
  30. package/packages/types/src/Theme/defaultTheme.js.map +1 -1
@@ -82,6 +82,10 @@ function AutoComplete({
82
82
  style,
83
83
  inputStyle,
84
84
  panelStyle,
85
+ tokenContainerStyle,
86
+ tokenStyle,
87
+ tokenLabelStyle,
88
+ tokenIconStyle,
85
89
  testID
86
90
  }) {
87
91
  const inputRef = React.useRef(null);
@@ -436,18 +440,22 @@ function AutoComplete({
436
440
  },
437
441
  isMultiple && styles.inputWrapperMultiple,
438
442
  disabled && styles.disabled,
439
- wrapperOverrides
443
+ wrapperOverrides,
444
+ // The themed chips box — last, so it beats the `root` slot's
445
+ // wrapper half. Mirrors web, where `tokenContainer` is applied
446
+ // after the structural width on `pt.container`.
447
+ tokenContainerStyle
440
448
  ],
441
449
  children: [
442
450
  isMultiple && selectedValues.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles.chipContainer, children: selectedValues.map(
443
- (item, i) => selectedItemTemplate ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { children: selectedItemTemplate(item) }, i) : /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: [styles.chip, { backgroundColor: colors.chipBg }], children: [
444
- /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles.chipText, { color: colors.chipText }], children: resolveLabel(item, field) }),
451
+ (item, i) => selectedItemTemplate ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { children: selectedItemTemplate(item) }, i) : /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: [styles.chip, { backgroundColor: colors.chipBg }, tokenStyle], children: [
452
+ /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles.chipText, { color: colors.chipText }, tokenLabelStyle], children: resolveLabel(item, field) }),
445
453
  !disabled && !readOnly && /* @__PURE__ */ jsxRuntime.jsx(
446
454
  reactNative.Pressable,
447
455
  {
448
456
  onPress: () => removeChip(item, i),
449
457
  hitSlop: { top: 8, bottom: 8, left: 8, right: 8 },
450
- children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles.chipRemove, { color: colors.chipRemove }], children: "\u2715" })
458
+ children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles.chipRemove, { color: colors.chipRemove }, tokenIconStyle], children: "\u2715" })
451
459
  }
452
460
  )
453
461
  ] }, i)
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../../../../../../apps/mobile/src/Core/AutoComplete/index.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n ActivityIndicator,\n Dimensions,\n FlatList,\n Keyboard,\n Platform,\n Pressable,\n StyleSheet,\n Text,\n TextInput,\n View,\n type ViewStyle,\n} from \"react-native\";\nimport type { ListRenderItem } from \"@react-native/virtualized-lists\";\nimport { resolveThemeTokenForNative } from \"../../Factory/helpers/style\";\nimport { Portal } from \"../../ui/portal\";\n\n/* ─── Event types (mirrors PrimeReact) ─────────────────── */\n\nexport interface AutoCompleteChangeEvent<T = any> {\n originalEvent?: any;\n value: T;\n}\n\nexport interface AutoCompleteCompleteEvent {\n originalEvent?: any;\n query: string;\n}\n\nexport interface AutoCompleteSelectEvent<T = any> {\n originalEvent?: any;\n value: T;\n}\n\nexport interface AutoCompleteUnselectEvent<T = any> {\n originalEvent?: any;\n value: T;\n}\n\nexport interface AutoCompleteDropdownClickEvent {\n originalEvent?: any;\n query: string;\n}\n\nexport interface VirtualScrollerOptions {\n itemSize: number;\n}\n\n/* ─── Props ────────────────────────────────────────────── */\n\nexport interface AutoCompleteProps<T = any> {\n id?: string;\n name?: string;\n testID?: string;\n\n value?: T | T[] | null;\n suggestions?: T[];\n field?: string;\n\n completeMethod?: (e: AutoCompleteCompleteEvent) => void;\n delay?: number;\n minLength?: number;\n\n onChange?: (e: AutoCompleteChangeEvent<T>) => void;\n onSelect?: (e: AutoCompleteSelectEvent<T>) => void;\n onUnselect?: (e: AutoCompleteUnselectEvent<T>) => void;\n onClear?: (e: { originalEvent?: any }) => void;\n onBlur?: (e: any) => void;\n onFocus?: (e: any) => void;\n onShow?: () => void;\n onHide?: () => void;\n onDropdownClick?: (e: AutoCompleteDropdownClickEvent) => void;\n\n placeholder?: string;\n disabled?: boolean;\n readOnly?: boolean;\n autoFocus?: boolean;\n invalid?: boolean;\n loading?: boolean;\n variant?: \"outlined\" | \"filled\";\n\n dropdown?: boolean;\n dropdownMode?: \"blank\" | \"current\";\n\n multiple?: boolean;\n selectionLimit?: number;\n\n forceSelection?: boolean;\n\n emptyMessage?: string;\n showEmptyMessage?: boolean;\n\n scrollHeight?: number;\n autoHighlight?: boolean;\n\n itemTemplate?: (item: T, index: number) => React.ReactNode;\n selectedItemTemplate?: (item: T) => React.ReactNode;\n panelFooterTemplate?: () => React.ReactNode;\n\n optionGroupLabel?: string;\n optionGroupChildren?: string;\n optionGroupTemplate?: (group: any) => React.ReactNode;\n\n virtualScrollerOptions?: VirtualScrollerOptions;\n\n style?: ViewStyle;\n inputStyle?: ViewStyle;\n panelStyle?: ViewStyle;\n}\n\n/* ─── Helpers ──────────────────────────────────────────── */\n\nconst resolveLabel = (item: any, field?: string): string => {\n if (item == null) return \"\";\n if (typeof item === \"string\") return item;\n if (!field) return String(item);\n return String(item[field] ?? \"\");\n};\n\nconst t = resolveThemeTokenForNative;\n\n/**\n * Radius of the visible input chrome the panel should match when this\n * component's own wrapper has been flattened by an outer container.\n * Mirrors the theme's `Input.inputGroup.style.borderRadius`, which is what\n * KitsContainer actually paints around the field. Kept as a constant here\n * because the factory layer resolves colour/spacing tokens only — component\n * slot styles live in the UI package's theme, which this layer does not read.\n */\nconst INPUT_CHROME_RADIUS = 10;\n\n/** Keys that belong on the TextInput rather than the wrapper View */\nconst TEXT_STYLE_KEYS = new Set([\n 'fontSize', 'fontFamily', 'fontWeight', 'fontStyle',\n 'color', 'letterSpacing', 'lineHeight', 'textAlign',\n 'textDecorationLine', 'textTransform',\n]);\n\n/** Splits a combined style object into wrapper (View) props and field (TextInput) props */\nfunction splitInputStyle(combined?: ViewStyle): { wrapperOverrides?: ViewStyle; fieldOverrides?: ViewStyle } {\n if (!combined) return {};\n const wrapper: Record<string, any> = {};\n const field: Record<string, any> = {};\n for (const [k, v] of Object.entries(combined)) {\n if (TEXT_STYLE_KEYS.has(k)) field[k] = v;\n else wrapper[k] = v;\n }\n return {\n wrapperOverrides: Object.keys(wrapper).length ? wrapper as ViewStyle : undefined,\n fieldOverrides: Object.keys(field).length ? field as ViewStyle : undefined,\n };\n}\n\n/* ─── Component ────────────────────────────────────────── */\n\nexport default function AutoComplete<T = any>({\n value,\n suggestions = [],\n completeMethod,\n onChange,\n onSelect,\n onUnselect,\n onClear,\n onBlur,\n onFocus,\n onShow,\n onHide,\n onDropdownClick,\n\n placeholder,\n disabled,\n readOnly,\n autoFocus,\n invalid,\n loading,\n variant = \"outlined\",\n\n dropdown,\n dropdownMode = \"blank\",\n\n field,\n\n multiple,\n selectionLimit,\n\n delay = 300,\n minLength = 1,\n\n emptyMessage = \"No results found\",\n showEmptyMessage = false,\n\n scrollHeight = 200,\n autoHighlight,\n\n itemTemplate,\n selectedItemTemplate,\n panelFooterTemplate,\n\n optionGroupLabel,\n optionGroupChildren,\n optionGroupTemplate,\n\n virtualScrollerOptions,\n\n style,\n inputStyle,\n panelStyle,\n\n testID,\n}: AutoCompleteProps<T>) {\n const inputRef = useRef<TextInput>(null);\n const triggerRef = useRef<View>(null);\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const blurTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const [query, setQuery] = useState(\"\");\n const [panelVisible, setPanelVisible] = useState(false);\n const [focused, setFocused] = useState(false);\n const [highlightedIndex, setHighlightedIndex] = useState(-1);\n const [triggerLayout, setTriggerLayout] = useState<{\n x: number; y: number; width: number; height: number;\n } | null>(null);\n // ── Coordinate frames ──────────────────────────────────────────────\n // `triggerLayout` is WINDOW space (measureInWindow). The suggestions panel,\n // however, renders inside the gluestack Portal, whose container is\n // `StyleSheet.absoluteFill` of the nearest GluestackUIProvider View — i.e.\n // OVERLAY space, whose origin sits Δ below/right of the window origin\n // (status bar, app chrome, a Storybook header, …). Applying a window-space\n // `top` inside that container pushed the panel down by exactly Δ.\n //\n // `overlayOrigin` is that Δ, measured from a zero-size anchor rendered at\n // (0,0) of the overlay container. Δ = {0,0} until the anchor has laid out,\n // which reproduces the pre-fix placement for one frame rather than anything\n // worse, then snaps to the corrected position.\n const overlayAnchorRef = useRef<View>(null);\n const [overlayOrigin, setOverlayOrigin] = useState<{ x: number; y: number }>({ x: 0, y: 0 });\n\n const measureOverlayOrigin = useCallback(() => {\n overlayAnchorRef.current?.measureInWindow((x, y) => {\n // Bail out when unchanged so re-measuring on every trigger measure\n // can't spin the render loop.\n setOverlayOrigin((prev) => (prev.x === x && prev.y === y ? prev : { x, y }));\n });\n }, []);\n // Live keyboard height so the suggestions panel can flip above the input\n // when the keyboard would otherwise cover the list (the main reason\n // \"no list shows up\" on phones — the panel was rendering below the\n // input, behind the keyboard).\n const [keyboardHeight, setKeyboardHeight] = useState(0);\n\n // Keep latest callbacks in refs so selectItem never captures stale closures\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n const onSelectRef = useRef(onSelect);\n onSelectRef.current = onSelect;\n const onUnselectRef = useRef(onUnselect);\n onUnselectRef.current = onUnselect;\n const onShowRef = useRef(onShow);\n onShowRef.current = onShow;\n const onHideRef = useRef(onHide);\n onHideRef.current = onHide;\n\n\n const isFilled = variant === \"filled\";\n const isMultiple = !!multiple;\n\n const colors = useMemo(() => ({\n border: t(\"border\") || t(\"gray.300\"),\n borderFocus: t(\"primary\"),\n borderInvalid: t(\"danger\") || t(\"red.500\"),\n bg: isFilled ? (t(\"surface-ground\") || t(\"gray.100\")) : (t(\"surface-card\") || \"#fff\"),\n text: t(\"text\") || t(\"gray.800\"),\n placeholder: t(\"text-secondary\") || t(\"gray.400\"),\n itemBorder: t(\"border\") || t(\"gray.200\"),\n itemHighlight: t(\"highlight-bg\") || t(\"gray.100\"),\n chipBg: t(\"primary.100\") || t(\"indigo.100\"),\n chipText: t(\"primary.700\") || t(\"indigo.700\"),\n chipRemove: t(\"primary.500\") || t(\"indigo.500\"),\n primary: t(\"primary\"),\n emptyText: t(\"text-secondary\") || t(\"gray.400\"),\n groupBg: t(\"surface-ground\") || t(\"gray.50\"),\n }), [isFilled]);\n\n /* ─── Derived values ───────────────────────────────── */\n\n const selectedValues = useMemo<T[]>(() => {\n if (!isMultiple) return [];\n if (Array.isArray(value)) return value;\n return [];\n }, [value, isMultiple]);\n\n // Flatten groups for FlatList (same pattern as Core/Dropdown)\n const flatData = useMemo(() => {\n if (!optionGroupLabel || !optionGroupChildren) return suggestions;\n const out: any[] = [];\n suggestions.forEach((group: any) => {\n out.push({ __group: true, group });\n const children = group[optionGroupChildren];\n if (Array.isArray(children)) {\n children.forEach((child: any) => out.push(child));\n }\n });\n return out;\n }, [suggestions, optionGroupLabel, optionGroupChildren]);\n\n /* ─── Value sync ───────────────────────────────────── */\n\n useEffect(() => {\n if (!isMultiple && value != null) {\n const label = resolveLabel(value, field);\n setQuery(label);\n } else if (!isMultiple && value == null) {\n setQuery(\"\");\n }\n }, [value, field, isMultiple]);\n\n /* ─── autoFocus ────────────────────────────────────── */\n\n useEffect(() => {\n if (autoFocus) {\n setTimeout(() => inputRef.current?.focus(), 100);\n }\n }, []);\n\n /* ─── Keyboard tracking ────────────────────────────── */\n\n useEffect(() => {\n const showEvent = Platform.OS === \"ios\" ? \"keyboardWillShow\" : \"keyboardDidShow\";\n const hideEvent = Platform.OS === \"ios\" ? \"keyboardWillHide\" : \"keyboardDidHide\";\n const showSub = Keyboard.addListener(showEvent, (e) => {\n setKeyboardHeight(e.endCoordinates?.height ?? 0);\n });\n const hideSub = Keyboard.addListener(hideEvent, () => {\n setKeyboardHeight(0);\n });\n return () => {\n showSub.remove();\n hideSub.remove();\n };\n }, []);\n\n /* ─── Re-measure trigger on keyboard / chip changes ── */\n\n // When the keyboard appears/disappears or chips are added/removed the\n // trigger View shifts on screen. Re-measure after a short delay so the\n // panel geometry stays anchored correctly.\n useEffect(() => {\n const timer = setTimeout(() => {\n triggerRef.current?.measureInWindow((x, y, width, height) => {\n setTriggerLayout({ x, y, width, height });\n });\n // Same cadence, no new timer: the overlay container can shift for the\n // same reasons the trigger does (keyboard resize on Android).\n measureOverlayOrigin();\n }, 100);\n return () => clearTimeout(timer);\n }, [keyboardHeight, selectedValues.length, measureOverlayOrigin]);\n\n /* ─── autoHighlight ────────────────────────────────── */\n\n useEffect(() => {\n if (autoHighlight && flatData.length > 0 && panelVisible) {\n const firstNonGroup = flatData.findIndex((d: any) => !d.__group);\n setHighlightedIndex(firstNonGroup >= 0 ? firstNonGroup : 0);\n } else {\n setHighlightedIndex(-1);\n }\n }, [flatData, panelVisible, autoHighlight]);\n\n /* ─── Panel lifecycle ──────────────────────────────── */\n\n const showPanel = useCallback(() => {\n if (__DEV__) console.log(\"[AC] showPanel()\");\n // Open the panel synchronously. Previously this was nested inside\n // measureInWindow's callback, which on Android sometimes fails to\n // fire (when the View isn't fully laid out), leaving the panel\n // permanently closed even though showPanel had been called.\n setPanelVisible((prev) => {\n if (!prev) onShowRef.current?.();\n return true;\n });\n // Refresh window coords asynchronously so the Portal-anchored panel\n // tracks the input. If the callback never fires we still have the\n // values set by onLayout below.\n triggerRef.current?.measureInWindow((x, y, width, height) => {\n setTriggerLayout({ x, y, width, height });\n });\n // No-op while the Portal is still closed (the anchor isn't mounted yet);\n // the anchor's own onLayout covers that first-open case.\n measureOverlayOrigin();\n }, [measureOverlayOrigin]);\n\n const hidePanel = useCallback(() => {\n if (__DEV__) console.log(\"[AC] hidePanel()\");\n setPanelVisible((prev) => {\n if (prev) onHideRef.current?.();\n return false;\n });\n }, []);\n\n /* ─── Debounced search ─────────────────────────────── */\n\n const triggerSearch = useCallback(\n (text: string, event?: any) => {\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n }\n if (text.length < minLength) {\n return;\n }\n\n debounceRef.current = setTimeout(() => {\n if (__DEV__) console.log(\"[AC] debounce fired → completeMethod + showPanel, query=\", text);\n completeMethod?.({ originalEvent: event, query: text });\n showPanel();\n }, delay);\n },\n [completeMethod, delay, minLength, showPanel],\n );\n\n // Cleanup timers on unmount\n useEffect(() => {\n return () => {\n if (debounceRef.current) clearTimeout(debounceRef.current);\n if (blurTimeoutRef.current) clearTimeout(blurTimeoutRef.current);\n };\n }, []);\n\n /* ─── Text change ──────────────────────────────────── */\n\n const onTextChange = useCallback(\n (text: string) => {\n setQuery(text);\n\n if (text.length === 0) {\n hidePanel();\n if (!isMultiple) {\n onChangeRef.current?.({ originalEvent: undefined, value: null as any });\n onClear?.({ originalEvent: undefined });\n }\n return;\n }\n\n triggerSearch(text);\n },\n [hidePanel, isMultiple, onClear, triggerSearch],\n );\n\n /* ─── Selection ────────────────────────────────────── */\n\n const selectItem = useCallback(\n (item: T) => {\n\n // Cancel any pending blur handler\n if (blurTimeoutRef.current) {\n clearTimeout(blurTimeoutRef.current);\n blurTimeoutRef.current = null;\n }\n\n if (isMultiple) {\n if (selectionLimit && selectedValues.length >= selectionLimit) {\n return;\n }\n const isDuplicate = selectedValues.some(\n (v) => resolveLabel(v, field) === resolveLabel(item, field),\n );\n if (isDuplicate) {\n return;\n }\n\n const newValue = [...selectedValues, item];\n onChangeRef.current?.({ originalEvent: undefined, value: newValue as any });\n onSelectRef.current?.({ originalEvent: undefined, value: item });\n setQuery(\"\");\n } else {\n const label = resolveLabel(item, field);\n onChangeRef.current?.({ originalEvent: undefined, value: item as any });\n onSelectRef.current?.({ originalEvent: undefined, value: item });\n setQuery(label);\n hidePanel();\n Keyboard.dismiss();\n }\n },\n [isMultiple, selectedValues, selectionLimit, field, hidePanel],\n );\n\n /* ─── Chip removal ─────────────────────────────────── */\n\n const removeChip = useCallback(\n (item: T, index: number) => {\n const newValues = selectedValues.filter((_, i) => i !== index);\n onChangeRef.current?.({ originalEvent: undefined, value: newValues as any });\n onUnselectRef.current?.({ originalEvent: undefined, value: item });\n },\n [selectedValues],\n );\n\n /* ─── Dropdown button ──────────────────────────────── */\n\n const onDropdownPress = useCallback(() => {\n if (disabled || readOnly) return;\n const q = dropdownMode === \"current\" ? query : \"\";\n onDropdownClick?.({ originalEvent: undefined, query: q });\n completeMethod?.({ originalEvent: undefined, query: q });\n setPanelVisible((prev) => {\n if (prev) {\n onHideRef.current?.();\n return false;\n }\n onShowRef.current?.();\n return true;\n });\n inputRef.current?.focus();\n }, [disabled, readOnly, dropdownMode, query, onDropdownClick, completeMethod]);\n\n /* ─── Focus / Blur ─────────────────────────────────── */\n\n const handleFocus = useCallback(\n (e: any) => {\n setFocused(true);\n onFocus?.(e);\n },\n [onFocus],\n );\n\n\n // Blur handling. The suggestions panel now lives in a same-window\n // Portal (gluestack OverlayProvider), so opening it no longer blurs or\n // steals focus from this TextInput — the close→reopen \"keyboard\n // flicker\" workaround (interaction-timestamp tracking + programmatic\n // refocus) has been removed on purpose. The only thing left to handle\n // is a genuine blur: defer the close by 200ms so a tap on a suggestion\n // (whose onPress fires AFTER the input blurs on Android, because the\n // panel sits in a root-level Portal outside this input's view tree)\n // can still run selectItem first. selectItem clears blurTimeoutRef, so\n // a real selection cancels the close and keeps the panel open for\n // multi-add.\n const handleBlur = useCallback(\n (e: any) => {\n if (__DEV__) console.log(\"[AC] handleBlur → will hidePanel in 200ms\");\n if (blurTimeoutRef.current) {\n clearTimeout(blurTimeoutRef.current);\n }\n blurTimeoutRef.current = setTimeout(() => {\n blurTimeoutRef.current = null;\n setFocused(false);\n hidePanel();\n onBlur?.(e);\n }, 200);\n },\n [hidePanel, onBlur],\n );\n\n /* ─── Render item ──────────────────────────────────── */\n\n const renderItem: ListRenderItem<any> = useCallback(\n ({ item, index }): React.ReactElement | null => {\n if (!item) return null;\n\n // Group header\n if (item.__group) {\n if (optionGroupTemplate) {\n return <>{optionGroupTemplate(item.group)}</>;\n }\n return (\n <View style={[styles.groupLabel, { backgroundColor: colors.groupBg }]}>\n <Text style={styles.groupLabelText}>\n {optionGroupLabel ? item.group?.[optionGroupLabel] : \"\"}\n </Text>\n </View>\n );\n }\n\n const isHighlighted = index === highlightedIndex;\n const isLast = index === flatData.length - 1;\n\n if (itemTemplate) {\n const rendered = itemTemplate(item, index);\n return rendered ? (\n <Pressable onPress={() => {\n selectItem(item);\n }}>{rendered}</Pressable>\n ) : null;\n }\n\n return (\n <Pressable\n onPress={() => {\n console.log(\"item\", item);\n selectItem(item);\n }}\n style={[\n styles.option,\n !isLast && { borderBottomWidth: 1, borderBottomColor: colors.itemBorder },\n isHighlighted && { backgroundColor: colors.itemHighlight },\n ]}\n >\n <Text style={[styles.optionText, { color: colors.text }]}>\n {resolveLabel(item, field)}\n </Text>\n </Pressable>\n );\n },\n [\n flatData.length,\n highlightedIndex,\n itemTemplate,\n optionGroupTemplate,\n optionGroupLabel,\n field,\n selectItem,\n colors,\n ],\n );\n\n /* ─── Render ───────────────────────────────────────── */\n\n const { wrapperOverrides, fieldOverrides } = useMemo(\n () => splitInputStyle(inputStyle),\n [inputStyle],\n );\n\n const borderColor = invalid\n ? colors.borderInvalid\n : focused\n ? colors.borderFocus\n : colors.border;\n\n const showPanelContent = panelVisible && (flatData.length > 0 || showEmptyMessage || !!emptyMessage);\n\n // Panel radius — deliberately NOT inherited from the inner input's wrapper\n // override. KitsContainer flattens this component's inner TextInput wrapper\n // with `borderRadius: 0` because the visible chrome is drawn by the outer\n // `inputGroup`; letting that 0 through rendered a square panel underneath a\n // rounded input. Resolution order:\n // 1. explicit `panelStyle.borderRadius`\n // 2. the wrapper's own radius when it is a real (non-zero) value — that is\n // the visible chrome in standalone (non-KitsContainer) usage\n // 3. the visible input-chrome radius (INPUT_CHROME_RADIUS)\n const panelRadius = useMemo(() => {\n const explicit = (panelStyle as any)?.borderRadius;\n if (typeof explicit === \"number\") return explicit;\n const wrapperRadius = (wrapperOverrides as any)?.borderRadius;\n if (typeof wrapperRadius === \"number\" && wrapperRadius > 0) {\n return Math.min(wrapperRadius, 16);\n }\n return INPUT_CHROME_RADIUS;\n }, [panelStyle, wrapperOverrides]);\n\n // Window-absolute panel geometry — anchored to the trigger's window\n // coordinates so the panel can render inside the root-level Portal\n // (which lives at the screen root, escaping every parent's\n // overflow/hit-area clip — the reliable way to deliver taps to the\n // suggestion Pressables on Android).\n //\n // Subtract `keyboardHeight` from the visible viewport so the panel flips\n // above the input when the keyboard would otherwise cover the list.\n const panelGeometry = useMemo(() => {\n if (!showPanelContent || !triggerLayout) return null;\n const screen = Dimensions.get(\"window\");\n const GAP = 4;\n const visibleHeight = screen.height - keyboardHeight;\n const spaceBelow = visibleHeight - (triggerLayout.y + triggerLayout.height);\n const spaceAbove = triggerLayout.y;\n const openUp = spaceBelow < scrollHeight && spaceAbove > spaceBelow;\n // Shrink maxH to fit the available space instead of shifting `top`\n // away from the input field.\n const maxH = Math.max(\n 80,\n Math.min(scrollHeight, openUp ? spaceAbove - GAP : spaceBelow - GAP),\n );\n const top = openUp\n ? triggerLayout.y - maxH - GAP\n : triggerLayout.y + triggerLayout.height + GAP;\n\n return {\n top,\n left: triggerLayout.x,\n width: triggerLayout.width,\n maxH,\n };\n }, [showPanelContent, triggerLayout, scrollHeight, keyboardHeight]);\n\n // WINDOW → OVERLAY conversion. `panelGeometry.top/left` are WINDOW space\n // (measured off the trigger, compared against window-space screen/keyboard\n // dimensions for the fit math above). The style below is applied inside the\n // Portal's overlay container, so subtract that container's own window origin\n // to land in OVERLAY space. Δ = {0,0} → identity, i.e. a no-op wherever the\n // overlay container already starts at the window origin.\n const panelTop = panelGeometry ? panelGeometry.top - overlayOrigin.y : 0;\n const panelLeft = panelGeometry ? panelGeometry.left - overlayOrigin.x : 0;\n\n if (__DEV__)\n console.log(\"[AC] render\", {\n panelVisible,\n showPanelContent,\n hasGeometry: !!panelGeometry,\n hasTriggerLayout: !!triggerLayout,\n flatData: flatData.length,\n geometry: panelGeometry,\n });\n\n return (\n <View\n style={[styles.container, style]}\n testID={testID}\n >\n <View\n ref={triggerRef}\n onLayout={() => {\n triggerRef.current?.measureInWindow((x, y, width, height) => {\n setTriggerLayout({ x, y, width, height });\n });\n measureOverlayOrigin();\n }}\n style={[\n styles.inputWrapper,\n {\n borderColor,\n backgroundColor: colors.bg,\n borderWidth: isFilled ? 0 : 1,\n },\n isMultiple && styles.inputWrapperMultiple,\n disabled && styles.disabled,\n wrapperOverrides,\n ]}\n >\n {/* Chips (multiple mode) */}\n {isMultiple && selectedValues.length > 0 && (\n <View style={styles.chipContainer}>\n {selectedValues.map((item, i) =>\n selectedItemTemplate ? (\n <View key={i}>{selectedItemTemplate(item)}</View>\n ) : (\n <View key={i} style={[styles.chip, { backgroundColor: colors.chipBg }]}>\n <Text style={[styles.chipText, { color: colors.chipText }]}>\n {resolveLabel(item, field)}\n </Text>\n {!disabled && !readOnly && (\n <Pressable\n onPress={() => removeChip(item, i)}\n hitSlop={{ top: 8, bottom: 8, left: 8, right: 8 }}\n >\n <Text style={[styles.chipRemove, { color: colors.chipRemove }]}>✕</Text>\n </Pressable>\n )}\n </View>\n ),\n )}\n </View>\n )}\n\n {/* Text input */}\n <TextInput\n ref={inputRef}\n editable={!disabled && !readOnly}\n value={query}\n placeholder={placeholder}\n placeholderTextColor={colors.placeholder}\n onChangeText={onTextChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n style={[styles.inputField, { color: colors.text }, fieldOverrides]}\n />\n\n {/* Loading indicator */}\n {loading && (\n <ActivityIndicator\n size=\"small\"\n color={colors.primary}\n style={styles.loadingIndicator}\n />\n )}\n\n {/* Dropdown button */}\n {dropdown && (\n <Pressable\n onPress={onDropdownPress}\n style={styles.dropdownBtn}\n disabled={disabled || readOnly}\n >\n <Text style={{ color: colors.placeholder }}>▾</Text>\n </Pressable>\n )}\n </View>\n\n {/* Suggestions panel — rendered through a same-window Portal\n (gluestack OverlayProvider, mounted app-wide via\n MainContextProvider). The Portal teleports the panel to the app\n root, so it escapes every parent's overflow/hit-area clip and\n taps still reach the suggestion Pressables on Android (the\n reason the old code reached for a <Modal>). Unlike <Modal>, the\n Portal does NOT open a separate native window, so it never blurs\n this TextInput or dismisses the keyboard — fixing the\n per-keystroke flicker at the root instead of papering over it\n with a refocus hack. */}\n <Portal\n isOpen={!!panelGeometry}\n onRequestClose={hidePanel}\n // gluestack's Overlay only sets zIndex on web; on native it relies\n // on render order alone, so on Android the portal layer paints\n // BEHIND navigation screens that carry their own elevation — the\n // panel renders but is invisible (\"no list appears\"). Lift the\n // whole overlay layer above app content with explicit elevation +\n // zIndex (the layer is a direct sibling of the app under the\n // OverlayProvider, so this is the boundary that must win).\n style={{ zIndex: 9999, elevation: 9999 }}\n >\n {/* Zero-size probe pinned to (0,0) of the overlay container. Measuring\n it in window space yields Δ — the offset between window space (what\n the trigger is measured in) and overlay space (what the panel is\n positioned in). Rendered first and unconditionally so it lays out\n as soon as the Portal opens. */}\n <View\n ref={overlayAnchorRef}\n pointerEvents=\"none\"\n style={styles.overlayAnchor}\n onLayout={measureOverlayOrigin}\n />\n {panelGeometry && (\n <Pressable\n style={StyleSheet.absoluteFillObject}\n onPress={() => {\n // Backdrop tap = dismiss the panel and let the keyboard\n // close naturally.\n hidePanel();\n Keyboard.dismiss();\n }}\n >\n <View\n // Claim touches so taps on the panel don't propagate to\n // the backdrop Pressable above.\n onStartShouldSetResponder={() => true}\n onResponderTerminationRequest={() => false}\n onLayout={(e) => {\n if (__DEV__)\n console.log(\"[AC] panel onLayout (rendered)\", e.nativeEvent.layout);\n }}\n style={[\n styles.popoverPanel,\n {\n position: \"absolute\",\n // OVERLAY space (window-space geometry minus the overlay origin).\n top: panelTop,\n left: panelLeft,\n width: panelGeometry.width,\n maxHeight: panelGeometry.maxH,\n borderColor: colors.border,\n backgroundColor: colors.bg,\n borderRadius: panelRadius,\n },\n panelStyle,\n ]}\n >\n {flatData.length > 0 ? (\n <FlatList\n data={flatData}\n keyExtractor={(_, i) => String(i)}\n renderItem={renderItem}\n extraData={selectItem}\n keyboardShouldPersistTaps=\"always\"\n nestedScrollEnabled\n // Explicit maxHeight so virtualization has a viewport.\n // Without an explicit bound, a FlatList nested in an\n // absolute-positioned View can render zero rows because\n // it can't determine its scroll viewport.\n style={{ maxHeight: panelGeometry.maxH }}\n getItemLayout={\n virtualScrollerOptions\n ? (_, index) => ({\n length: virtualScrollerOptions.itemSize,\n offset: virtualScrollerOptions.itemSize * index,\n index,\n })\n : undefined\n }\n />\n ) : (\n // Empty state uses the same row layout as a real option\n // so forceSelection + \"no matches\" still feels like a\n // list — just with a single non-tappable \"no results\"\n // row. The text is driven by the `emptyMessage` prop so\n // consumers can pass a translated string.\n <View style={[styles.option, styles.emptyRow]}>\n <Text style={[styles.optionText, { color: colors.emptyText }]}>\n {emptyMessage}\n </Text>\n </View>\n )}\n {panelFooterTemplate?.()}\n </View>\n </Pressable>\n )}\n </Portal>\n </View>\n );\n}\n\n/* ─── Styles ─────────────────────────────────────────── */\n\nconst styles = StyleSheet.create({\n container: {\n width: \"100%\",\n position: \"relative\",\n },\n inputWrapper: {\n flexDirection: \"row\",\n alignItems: \"center\",\n borderRadius: 6,\n paddingHorizontal: 8,\n minHeight: 42,\n },\n inputWrapperMultiple: {\n flexWrap: \"wrap\",\n paddingVertical: 4,\n },\n disabled: {\n opacity: 0.5,\n },\n inputField: {\n flex: 1,\n fontSize: 14,\n paddingVertical: 8,\n minWidth: 80,\n },\n loadingIndicator: {\n marginRight: 8,\n },\n dropdownBtn: {\n paddingHorizontal: 8,\n paddingVertical: 4,\n },\n chipContainer: {\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n gap: 4,\n marginRight: 4,\n },\n chip: {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingLeft: 10,\n paddingRight: 6,\n paddingVertical: 3,\n borderRadius: 16,\n gap: 4,\n },\n chipText: {\n fontSize: 13,\n },\n chipRemove: {\n fontSize: 12,\n paddingHorizontal: 2,\n },\n // Zero-size, non-interactive probe at the overlay container's origin.\n overlayAnchor: {\n position: \"absolute\",\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n },\n popoverPanel: {\n position: \"absolute\",\n borderWidth: 1,\n borderRadius: 6,\n overflow: \"hidden\",\n elevation: 8,\n shadowColor: \"#000\",\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.15,\n shadowRadius: 8,\n // Sit above the trigger and any later siblings.\n zIndex: 10000,\n },\n option: {\n paddingHorizontal: 12,\n paddingVertical: 10,\n },\n optionText: {\n fontSize: 14,\n },\n groupLabel: {\n paddingHorizontal: 12,\n paddingVertical: 8,\n },\n groupLabelText: {\n fontSize: 12,\n fontWeight: \"700\",\n textTransform: \"uppercase\",\n letterSpacing: 0.5,\n },\n emptyRow: {\n // Same row metrics as `option` (padding inherited) — only the text\n // colour differs (set inline as colors.emptyText) so the empty state\n // visually matches a real list row.\n },\n});\n"],"names":["resolveThemeTokenForNative","useRef","useState","useCallback","useMemo","useEffect","Platform","Keyboard","jsx","Fragment","View","Text","Pressable","Dimensions","jsxs","TextInput","ActivityIndicator","Portal","StyleSheet","FlatList"],"mappings":";;;;;;;;;;AAuHA,MAAM,YAAA,GAAe,CAAC,IAAA,EAAW,KAAA,KAA2B;AAC1D,EAAA,IAAI,IAAA,IAAQ,MAAM,OAAO,EAAA;AACzB,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,EAAU,OAAO,IAAA;AACrC,EAAA,IAAI,CAAC,KAAA,EAAO,OAAO,MAAA,CAAO,IAAI,CAAA;AAC9B,EAAA,OAAO,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,IAAK,EAAE,CAAA;AACjC,CAAA;AAEA,MAAM,CAAA,GAAIA,gCAAA;AAUV,MAAM,mBAAA,GAAsB,EAAA;AAG5B,MAAM,eAAA,uBAAsB,GAAA,CAAI;AAAA,EAC9B,UAAA;AAAA,EAAY,YAAA;AAAA,EAAc,YAAA;AAAA,EAAc,WAAA;AAAA,EACxC,OAAA;AAAA,EAAS,eAAA;AAAA,EAAiB,YAAA;AAAA,EAAc,WAAA;AAAA,EACxC,oBAAA;AAAA,EAAsB;AACxB,CAAC,CAAA;AAGD,SAAS,gBAAgB,QAAA,EAAoF;AAC3G,EAAA,IAAI,CAAC,QAAA,EAAU,OAAO,EAAC;AACvB,EAAA,MAAM,UAA+B,EAAC;AACtC,EAAA,MAAM,QAA6B,EAAC;AACpC,EAAA,KAAA,MAAW,CAAC,CAAA,EAAG,CAAC,KAAK,MAAA,CAAO,OAAA,CAAQ,QAAQ,CAAA,EAAG;AAC7C,IAAA,IAAI,gBAAgB,GAAA,CAAI,CAAC,CAAA,EAAG,KAAA,CAAM,CAAC,CAAA,GAAI,CAAA;AAAA,SAClC,OAAA,CAAQ,CAAC,CAAA,GAAI,CAAA;AAAA,EACpB;AACA,EAAA,OAAO;AAAA,IACL,kBAAkB,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAAE,SAAS,OAAA,GAAuB,MAAA;AAAA,IACvE,gBAAgB,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,SAAS,KAAA,GAAqB;AAAA,GACnE;AACF;AAIA,SAAwB,YAAA,CAAsB;AAAA,EAC5C,KAAA;AAAA,EACA,cAAc,EAAC;AAAA,EACf,cAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,eAAA;AAAA,EAEA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA,GAAU,UAAA;AAAA,EAEV,QAAA;AAAA,EACA,YAAA,GAAe,OAAA;AAAA,EAEf,KAAA;AAAA,EAEA,QAAA;AAAA,EACA,cAAA;AAAA,EAEA,KAAA,GAAQ,GAAA;AAAA,EACR,SAAA,GAAY,CAAA;AAAA,EAEZ,YAAA,GAAe,kBAAA;AAAA,EACf,gBAAA,GAAmB,KAAA;AAAA,EAEnB,YAAA,GAAe,GAAA;AAAA,EACf,aAAA;AAAA,EAEA,YAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EAEA,gBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EAEA,sBAAA;AAAA,EAEA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EAEA;AACF,CAAA,EAAyB;AACvB,EAAA,MAAM,QAAA,GAAWC,aAAkB,IAAI,CAAA;AACvC,EAAA,MAAM,UAAA,GAAaA,aAAa,IAAI,CAAA;AACpC,EAAA,MAAM,WAAA,GAAcA,aAA6C,IAAI,CAAA;AACrE,EAAA,MAAM,cAAA,GAAiBA,aAA6C,IAAI,CAAA;AAExE,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIC,eAAS,EAAE,CAAA;AACrC,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,eAAS,KAAK,CAAA;AACtD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,eAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIA,eAAS,EAAE,CAAA;AAC3D,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,eAEhC,IAAI,CAAA;AAad,EAAA,MAAM,gBAAA,GAAmBD,aAAa,IAAI,CAAA;AAC1C,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIC,cAAA,CAAmC,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA;AAE3F,EAAA,MAAM,oBAAA,GAAuBC,kBAAY,MAAM;AAC7C,IAAA,gBAAA,CAAiB,OAAA,EAAS,eAAA,CAAgB,CAAC,CAAA,EAAG,CAAA,KAAM;AAGlD,MAAA,gBAAA,CAAiB,CAAC,IAAA,KAAU,IAAA,CAAK,CAAA,KAAM,CAAA,IAAK,IAAA,CAAK,CAAA,KAAM,CAAA,GAAI,IAAA,GAAO,EAAE,CAAA,EAAG,CAAA,EAAI,CAAA;AAAA,IAC7E,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,EAAE,CAAA;AAKL,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAID,eAAS,CAAC,CAAA;AAGtD,EAAA,MAAM,WAAA,GAAcD,aAAO,QAAQ,CAAA;AACnC,EAAA,WAAA,CAAY,OAAA,GAAU,QAAA;AACtB,EAAA,MAAM,WAAA,GAAcA,aAAO,QAAQ,CAAA;AACnC,EAAA,WAAA,CAAY,OAAA,GAAU,QAAA;AACtB,EAAA,MAAM,aAAA,GAAgBA,aAAO,UAAU,CAAA;AACvC,EAAA,aAAA,CAAc,OAAA,GAAU,UAAA;AACxB,EAAA,MAAM,SAAA,GAAYA,aAAO,MAAM,CAAA;AAC/B,EAAA,SAAA,CAAU,OAAA,GAAU,MAAA;AACpB,EAAA,MAAM,SAAA,GAAYA,aAAO,MAAM,CAAA;AAC/B,EAAA,SAAA,CAAU,OAAA,GAAU,MAAA;AAGpB,EAAA,MAAM,WAAW,OAAA,KAAY,QAAA;AAC7B,EAAA,MAAM,UAAA,GAAa,CAAC,CAAC,QAAA;AAErB,EAAA,MAAM,MAAA,GAASG,cAAQ,OAAO;AAAA,IAC5B,MAAA,EAAQ,CAAA,CAAE,QAAQ,CAAA,IAAK,EAAE,UAAU,CAAA;AAAA,IACnC,WAAA,EAAa,EAAE,SAAS,CAAA;AAAA,IACxB,aAAA,EAAe,CAAA,CAAE,QAAQ,CAAA,IAAK,EAAE,SAAS,CAAA;AAAA,IACzC,EAAA,EAAI,QAAA,GAAY,CAAA,CAAE,gBAAgB,CAAA,IAAK,EAAE,UAAU,CAAA,GAAM,CAAA,CAAE,cAAc,CAAA,IAAK,MAAA;AAAA,IAC9E,IAAA,EAAM,CAAA,CAAE,MAAM,CAAA,IAAK,EAAE,UAAU,CAAA;AAAA,IAC/B,WAAA,EAAa,CAAA,CAAE,gBAAgB,CAAA,IAAK,EAAE,UAAU,CAAA;AAAA,IAChD,UAAA,EAAY,CAAA,CAAE,QAAQ,CAAA,IAAK,EAAE,UAAU,CAAA;AAAA,IACvC,aAAA,EAAe,CAAA,CAAE,cAAc,CAAA,IAAK,EAAE,UAAU,CAAA;AAAA,IAChD,MAAA,EAAQ,CAAA,CAAE,aAAa,CAAA,IAAK,EAAE,YAAY,CAAA;AAAA,IAC1C,QAAA,EAAU,CAAA,CAAE,aAAa,CAAA,IAAK,EAAE,YAAY,CAAA;AAAA,IAC5C,UAAA,EAAY,CAAA,CAAE,aAAa,CAAA,IAAK,EAAE,YAAY,CAAA;AAAA,IAC9C,OAAA,EAAS,EAAE,SAAS,CAAA;AAAA,IACpB,SAAA,EAAW,CAAA,CAAE,gBAAgB,CAAA,IAAK,EAAE,UAAU,CAAA;AAAA,IAC9C,OAAA,EAAS,CAAA,CAAE,gBAAgB,CAAA,IAAK,EAAE,SAAS;AAAA,GAC7C,CAAA,EAAI,CAAC,QAAQ,CAAC,CAAA;AAId,EAAA,MAAM,cAAA,GAAiBA,cAAa,MAAM;AACxC,IAAA,IAAI,CAAC,UAAA,EAAY,OAAO,EAAC;AACzB,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG,OAAO,KAAA;AACjC,IAAA,OAAO,EAAC;AAAA,EACV,CAAA,EAAG,CAAC,KAAA,EAAO,UAAU,CAAC,CAAA;AAGtB,EAAA,MAAM,QAAA,GAAWA,cAAQ,MAAM;AAC7B,IAAA,IAAI,CAAC,gBAAA,IAAoB,CAAC,mBAAA,EAAqB,OAAO,WAAA;AACtD,IAAA,MAAM,MAAa,EAAC;AACpB,IAAA,WAAA,CAAY,OAAA,CAAQ,CAAC,KAAA,KAAe;AAClC,MAAA,GAAA,CAAI,IAAA,CAAK,EAAE,OAAA,EAAS,IAAA,EAAM,OAAO,CAAA;AACjC,MAAA,MAAM,QAAA,GAAW,MAAM,mBAAmB,CAAA;AAC1C,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA,EAAG;AAC3B,QAAA,QAAA,CAAS,QAAQ,CAAC,KAAA,KAAe,GAAA,CAAI,IAAA,CAAK,KAAK,CAAC,CAAA;AAAA,MAClD;AAAA,IACF,CAAC,CAAA;AACD,IAAA,OAAO,GAAA;AAAA,EACT,CAAA,EAAG,CAAC,WAAA,EAAa,gBAAA,EAAkB,mBAAmB,CAAC,CAAA;AAIvD,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,UAAA,IAAc,KAAA,IAAS,IAAA,EAAM;AAChC,MAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,KAAA,EAAO,KAAK,CAAA;AACvC,MAAA,QAAA,CAAS,KAAK,CAAA;AAAA,IAChB,CAAA,MAAA,IAAW,CAAC,UAAA,IAAc,KAAA,IAAS,IAAA,EAAM;AACvC,MAAA,QAAA,CAAS,EAAE,CAAA;AAAA,IACb;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,EAAO,KAAA,EAAO,UAAU,CAAC,CAAA;AAI7B,EAAAA,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,UAAA,CAAW,MAAM,QAAA,CAAS,OAAA,EAAS,KAAA,IAAS,GAAG,CAAA;AAAA,IACjD;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAIL,EAAAA,eAAA,CAAU,MAAM;AACd,IAAA,MAAM,SAAA,GAAYC,oBAAA,CAAS,EAAA,KAAO,KAAA,GAAQ,kBAAA,GAAqB,iBAAA;AAC/D,IAAA,MAAM,SAAA,GAAYA,oBAAA,CAAS,EAAA,KAAO,KAAA,GAAQ,kBAAA,GAAqB,iBAAA;AAC/D,IAAA,MAAM,OAAA,GAAUC,oBAAA,CAAS,WAAA,CAAY,SAAA,EAAW,CAAC,CAAA,KAAM;AACrD,MAAA,iBAAA,CAAkB,CAAA,CAAE,cAAA,EAAgB,MAAA,IAAU,CAAC,CAAA;AAAA,IACjD,CAAC,CAAA;AACD,IAAA,MAAM,OAAA,GAAUA,oBAAA,CAAS,WAAA,CAAY,SAAA,EAAW,MAAM;AACpD,MAAA,iBAAA,CAAkB,CAAC,CAAA;AAAA,IACrB,CAAC,CAAA;AACD,IAAA,OAAO,MAAM;AACX,MAAA,OAAA,CAAQ,MAAA,EAAO;AACf,MAAA,OAAA,CAAQ,MAAA,EAAO;AAAA,IACjB,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAOL,EAAAF,eAAA,CAAU,MAAM;AACd,IAAA,MAAM,KAAA,GAAQ,WAAW,MAAM;AAC7B,MAAA,UAAA,CAAW,SAAS,eAAA,CAAgB,CAAC,CAAA,EAAG,CAAA,EAAG,OAAO,MAAA,KAAW;AAC3D,QAAA,gBAAA,CAAiB,EAAE,CAAA,EAAG,CAAA,EAAG,KAAA,EAAO,QAAQ,CAAA;AAAA,MAC1C,CAAC,CAAA;AAGD,MAAA,oBAAA,EAAqB;AAAA,IACvB,GAAG,GAAG,CAAA;AACN,IAAA,OAAO,MAAM,aAAa,KAAK,CAAA;AAAA,EACjC,GAAG,CAAC,cAAA,EAAgB,cAAA,CAAe,MAAA,EAAQ,oBAAoB,CAAC,CAAA;AAIhE,EAAAA,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,aAAA,IAAiB,QAAA,CAAS,MAAA,GAAS,CAAA,IAAK,YAAA,EAAc;AACxD,MAAA,MAAM,gBAAgB,QAAA,CAAS,SAAA,CAAU,CAAC,CAAA,KAAW,CAAC,EAAE,OAAO,CAAA;AAC/D,MAAA,mBAAA,CAAoB,aAAA,IAAiB,CAAA,GAAI,aAAA,GAAgB,CAAC,CAAA;AAAA,IAC5D,CAAA,MAAO;AACL,MAAA,mBAAA,CAAoB,EAAE,CAAA;AAAA,IACxB;AAAA,EACF,CAAA,EAAG,CAAC,QAAA,EAAU,YAAA,EAAc,aAAa,CAAC,CAAA;AAI1C,EAAA,MAAM,SAAA,GAAYF,kBAAY,MAAM;AAClC,IAAA,IAAI,OAAA,EAAS,OAAA,CAAQ,GAAA,CAAI,kBAAkB,CAAA;AAK3C,IAAA,eAAA,CAAgB,CAAC,IAAA,KAAS;AACxB,MAAA,IAAI,CAAC,IAAA,EAAM,SAAA,CAAU,OAAA,IAAU;AAC/B,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA;AAID,IAAA,UAAA,CAAW,SAAS,eAAA,CAAgB,CAAC,CAAA,EAAG,CAAA,EAAG,OAAO,MAAA,KAAW;AAC3D,MAAA,gBAAA,CAAiB,EAAE,CAAA,EAAG,CAAA,EAAG,KAAA,EAAO,QAAQ,CAAA;AAAA,IAC1C,CAAC,CAAA;AAGD,IAAA,oBAAA,EAAqB;AAAA,EACvB,CAAA,EAAG,CAAC,oBAAoB,CAAC,CAAA;AAEzB,EAAA,MAAM,SAAA,GAAYA,kBAAY,MAAM;AAClC,IAAA,IAAI,OAAA,EAAS,OAAA,CAAQ,GAAA,CAAI,kBAAkB,CAAA;AAC3C,IAAA,eAAA,CAAgB,CAAC,IAAA,KAAS;AACxB,MAAA,IAAI,IAAA,YAAgB,OAAA,IAAU;AAC9B,MAAA,OAAO,KAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,EAAE,CAAA;AAIL,EAAA,MAAM,aAAA,GAAgBA,iBAAA;AAAA,IACpB,CAAC,MAAc,KAAA,KAAgB;AAC7B,MAAA,IAAI,YAAY,OAAA,EAAS;AACvB,QAAA,YAAA,CAAa,YAAY,OAAO,CAAA;AAAA,MAClC;AACA,MAAA,IAAI,IAAA,CAAK,SAAS,SAAA,EAAW;AAC3B,QAAA;AAAA,MACF;AAEA,MAAA,WAAA,CAAY,OAAA,GAAU,WAAW,MAAM;AACrC,QAAA,IAAI,OAAA,EAAS,OAAA,CAAQ,GAAA,CAAI,+DAAA,EAA4D,IAAI,CAAA;AACzF,QAAA,cAAA,GAAiB,EAAE,aAAA,EAAe,KAAA,EAAO,KAAA,EAAO,MAAM,CAAA;AACtD,QAAA,SAAA,EAAU;AAAA,MACZ,GAAG,KAAK,CAAA;AAAA,IACV,CAAA;AAAA,IACA,CAAC,cAAA,EAAgB,KAAA,EAAO,SAAA,EAAW,SAAS;AAAA,GAC9C;AAGA,EAAAE,eAAA,CAAU,MAAM;AACd,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,WAAA,CAAY,OAAA,EAAS,YAAA,CAAa,WAAA,CAAY,OAAO,CAAA;AACzD,MAAA,IAAI,cAAA,CAAe,OAAA,EAAS,YAAA,CAAa,cAAA,CAAe,OAAO,CAAA;AAAA,IACjE,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAIL,EAAA,MAAM,YAAA,GAAeF,iBAAA;AAAA,IACnB,CAAC,IAAA,KAAiB;AAChB,MAAA,QAAA,CAAS,IAAI,CAAA;AAEb,MAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,QAAA,SAAA,EAAU;AACV,QAAA,IAAI,CAAC,UAAA,EAAY;AACf,UAAA,WAAA,CAAY,UAAU,EAAE,aAAA,EAAe,MAAA,EAAW,KAAA,EAAO,MAAa,CAAA;AACtE,UAAA,OAAA,GAAU,EAAE,aAAA,EAAe,MAAA,EAAW,CAAA;AAAA,QACxC;AACA,QAAA;AAAA,MACF;AAEA,MAAA,aAAA,CAAc,IAAI,CAAA;AAAA,IACpB,CAAA;AAAA,IACA,CAAC,SAAA,EAAW,UAAA,EAAY,OAAA,EAAS,aAAa;AAAA,GAChD;AAIA,EAAA,MAAM,UAAA,GAAaA,iBAAA;AAAA,IACjB,CAAC,IAAA,KAAY;AAGX,MAAA,IAAI,eAAe,OAAA,EAAS;AAC1B,QAAA,YAAA,CAAa,eAAe,OAAO,CAAA;AACnC,QAAA,cAAA,CAAe,OAAA,GAAU,IAAA;AAAA,MAC3B;AAEA,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,IAAI,cAAA,IAAkB,cAAA,CAAe,MAAA,IAAU,cAAA,EAAgB;AAC7D,UAAA;AAAA,QACF;AACA,QAAA,MAAM,cAAc,cAAA,CAAe,IAAA;AAAA,UACjC,CAAC,MAAM,YAAA,CAAa,CAAA,EAAG,KAAK,CAAA,KAAM,YAAA,CAAa,MAAM,KAAK;AAAA,SAC5D;AACA,QAAA,IAAI,WAAA,EAAa;AACf,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,QAAA,GAAW,CAAC,GAAG,cAAA,EAAgB,IAAI,CAAA;AACzC,QAAA,WAAA,CAAY,UAAU,EAAE,aAAA,EAAe,MAAA,EAAW,KAAA,EAAO,UAAiB,CAAA;AAC1E,QAAA,WAAA,CAAY,UAAU,EAAE,aAAA,EAAe,MAAA,EAAW,KAAA,EAAO,MAAM,CAAA;AAC/D,QAAA,QAAA,CAAS,EAAE,CAAA;AAAA,MACb,CAAA,MAAO;AACL,QAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,IAAA,EAAM,KAAK,CAAA;AACtC,QAAA,WAAA,CAAY,UAAU,EAAE,aAAA,EAAe,MAAA,EAAW,KAAA,EAAO,MAAa,CAAA;AACtE,QAAA,WAAA,CAAY,UAAU,EAAE,aAAA,EAAe,MAAA,EAAW,KAAA,EAAO,MAAM,CAAA;AAC/D,QAAA,QAAA,CAAS,KAAK,CAAA;AACd,QAAA,SAAA,EAAU;AACV,QAAAI,oBAAA,CAAS,OAAA,EAAQ;AAAA,MACnB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,UAAA,EAAY,cAAA,EAAgB,cAAA,EAAgB,OAAO,SAAS;AAAA,GAC/D;AAIA,EAAA,MAAM,UAAA,GAAaJ,iBAAA;AAAA,IACjB,CAAC,MAAS,KAAA,KAAkB;AAC1B,MAAA,MAAM,YAAY,cAAA,CAAe,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,MAAM,KAAK,CAAA;AAC7D,MAAA,WAAA,CAAY,UAAU,EAAE,aAAA,EAAe,MAAA,EAAW,KAAA,EAAO,WAAkB,CAAA;AAC3E,MAAA,aAAA,CAAc,UAAU,EAAE,aAAA,EAAe,MAAA,EAAW,KAAA,EAAO,MAAM,CAAA;AAAA,IACnE,CAAA;AAAA,IACA,CAAC,cAAc;AAAA,GACjB;AAIA,EAAA,MAAM,eAAA,GAAkBA,kBAAY,MAAM;AACxC,IAAA,IAAI,YAAY,QAAA,EAAU;AAC1B,IAAA,MAAM,CAAA,GAAI,YAAA,KAAiB,SAAA,GAAY,KAAA,GAAQ,EAAA;AAC/C,IAAA,eAAA,GAAkB,EAAE,aAAA,EAAe,MAAA,EAAW,KAAA,EAAO,GAAG,CAAA;AACxD,IAAA,cAAA,GAAiB,EAAE,aAAA,EAAe,MAAA,EAAW,KAAA,EAAO,GAAG,CAAA;AACvD,IAAA,eAAA,CAAgB,CAAC,IAAA,KAAS;AACxB,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,SAAA,CAAU,OAAA,IAAU;AACpB,QAAA,OAAO,KAAA;AAAA,MACT;AACA,MAAA,SAAA,CAAU,OAAA,IAAU;AACpB,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA;AACD,IAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AAAA,EAC1B,CAAA,EAAG,CAAC,QAAA,EAAU,QAAA,EAAU,cAAc,KAAA,EAAO,eAAA,EAAiB,cAAc,CAAC,CAAA;AAI7E,EAAA,MAAM,WAAA,GAAcA,iBAAA;AAAA,IAClB,CAAC,CAAA,KAAW;AACV,MAAA,UAAA,CAAW,IAAI,CAAA;AACf,MAAA,OAAA,GAAU,CAAC,CAAA;AAAA,IACb,CAAA;AAAA,IACA,CAAC,OAAO;AAAA,GACV;AAcA,EAAA,MAAM,UAAA,GAAaA,iBAAA;AAAA,IACjB,CAAC,CAAA,KAAW;AACV,MAAA,IAAI,OAAA,EAAS,OAAA,CAAQ,GAAA,CAAI,gDAA2C,CAAA;AACpE,MAAA,IAAI,eAAe,OAAA,EAAS;AAC1B,QAAA,YAAA,CAAa,eAAe,OAAO,CAAA;AAAA,MACrC;AACA,MAAA,cAAA,CAAe,OAAA,GAAU,WAAW,MAAM;AACxC,QAAA,cAAA,CAAe,OAAA,GAAU,IAAA;AACzB,QAAA,UAAA,CAAW,KAAK,CAAA;AAChB,QAAA,SAAA,EAAU;AACV,QAAA,MAAA,GAAS,CAAC,CAAA;AAAA,MACZ,GAAG,GAAG,CAAA;AAAA,IACR,CAAA;AAAA,IACA,CAAC,WAAW,MAAM;AAAA,GACpB;AAIA,EAAA,MAAM,UAAA,GAAkCA,iBAAA;AAAA,IACtC,CAAC,EAAE,IAAA,EAAM,KAAA,EAAM,KAAiC;AAC9C,MAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAGlB,MAAA,IAAI,KAAK,OAAA,EAAS;AAChB,QAAA,IAAI,mBAAA,EAAqB;AACvB,UAAA,uBAAOK,cAAA,CAAAC,mBAAA,EAAA,EAAG,QAAA,EAAA,mBAAA,CAAoB,IAAA,CAAK,KAAK,CAAA,EAAE,CAAA;AAAA,QAC5C;AACA,QAAA,uBACED,cAAA,CAACE,oBAAK,KAAA,EAAO,CAAC,OAAO,UAAA,EAAY,EAAE,eAAA,EAAiB,MAAA,CAAO,OAAA,EAAS,GAClE,QAAA,kBAAAF,cAAA,CAACG,gBAAA,EAAA,EAAK,KAAA,EAAO,MAAA,CAAO,cAAA,EACjB,QAAA,EAAA,gBAAA,GAAmB,KAAK,KAAA,GAAQ,gBAAgB,CAAA,GAAI,EAAA,EACvD,CAAA,EACF,CAAA;AAAA,MAEJ;AAEA,MAAA,MAAM,gBAAgB,KAAA,KAAU,gBAAA;AAChC,MAAA,MAAM,MAAA,GAAS,KAAA,KAAU,QAAA,CAAS,MAAA,GAAS,CAAA;AAE3C,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,MAAM,QAAA,GAAW,YAAA,CAAa,IAAA,EAAM,KAAK,CAAA;AACzC,QAAA,OAAO,QAAA,mBACLH,cAAA,CAACI,qBAAA,EAAA,EAAU,OAAA,EAAS,MAAM;AACxB,UAAA,UAAA,CAAW,IAAI,CAAA;AAAA,QACjB,CAAA,EAAI,oBAAS,CAAA,GACX,IAAA;AAAA,MACN;AAEA,MAAA,uBACEJ,cAAA;AAAA,QAACI,qBAAA;AAAA,QAAA;AAAA,UACC,SAAS,MAAM;AACb,YAAA,OAAA,CAAQ,GAAA,CAAI,QAAQ,IAAI,CAAA;AACxB,YAAA,UAAA,CAAW,IAAI,CAAA;AAAA,UACjB,CAAA;AAAA,UACA,KAAA,EAAO;AAAA,YACL,MAAA,CAAO,MAAA;AAAA,YACP,CAAC,MAAA,IAAU,EAAE,mBAAmB,CAAA,EAAG,iBAAA,EAAmB,OAAO,UAAA,EAAW;AAAA,YACxE,aAAA,IAAiB,EAAE,eAAA,EAAiB,MAAA,CAAO,aAAA;AAAc,WAC3D;AAAA,UAEA,QAAA,kBAAAJ,cAAA,CAACG,gBAAA,EAAA,EAAK,KAAA,EAAO,CAAC,OAAO,UAAA,EAAY,EAAE,KAAA,EAAO,MAAA,CAAO,MAAM,CAAA,EACpD,QAAA,EAAA,YAAA,CAAa,IAAA,EAAM,KAAK,CAAA,EAC3B;AAAA;AAAA,OACF;AAAA,IAEJ,CAAA;AAAA,IACA;AAAA,MACE,QAAA,CAAS,MAAA;AAAA,MACT,gBAAA;AAAA,MACA,YAAA;AAAA,MACA,mBAAA;AAAA,MACA,gBAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA;AACF,GACF;AAIA,EAAA,MAAM,EAAE,gBAAA,EAAkB,cAAA,EAAe,GAAIP,aAAA;AAAA,IAC3C,MAAM,gBAAgB,UAAU,CAAA;AAAA,IAChC,CAAC,UAAU;AAAA,GACb;AAEA,EAAA,MAAM,cAAc,OAAA,GAChB,MAAA,CAAO,gBACP,OAAA,GACE,MAAA,CAAO,cACP,MAAA,CAAO,MAAA;AAEb,EAAA,MAAM,mBAAmB,YAAA,KAAiB,QAAA,CAAS,SAAS,CAAA,IAAK,gBAAA,IAAoB,CAAC,CAAC,YAAA,CAAA;AAWvF,EAAA,MAAM,WAAA,GAAcA,cAAQ,MAAM;AAChC,IAAA,MAAM,WAAY,UAAA,EAAoB,YAAA;AACtC,IAAA,IAAI,OAAO,QAAA,KAAa,QAAA,EAAU,OAAO,QAAA;AACzC,IAAA,MAAM,gBAAiB,gBAAA,EAA0B,YAAA;AACjD,IAAA,IAAI,OAAO,aAAA,KAAkB,QAAA,IAAY,aAAA,GAAgB,CAAA,EAAG;AAC1D,MAAA,OAAO,IAAA,CAAK,GAAA,CAAI,aAAA,EAAe,EAAE,CAAA;AAAA,IACnC;AACA,IAAA,OAAO,mBAAA;AAAA,EACT,CAAA,EAAG,CAAC,UAAA,EAAY,gBAAgB,CAAC,CAAA;AAUjC,EAAA,MAAM,aAAA,GAAgBA,cAAQ,MAAM;AAClC,IAAA,IAAI,CAAC,gBAAA,IAAoB,CAAC,aAAA,EAAe,OAAO,IAAA;AAChD,IAAA,MAAM,MAAA,GAASS,sBAAA,CAAW,GAAA,CAAI,QAAQ,CAAA;AACtC,IAAA,MAAM,GAAA,GAAM,CAAA;AACZ,IAAA,MAAM,aAAA,GAAgB,OAAO,MAAA,GAAS,cAAA;AACtC,IAAA,MAAM,UAAA,GAAa,aAAA,IAAiB,aAAA,CAAc,CAAA,GAAI,aAAA,CAAc,MAAA,CAAA;AACpE,IAAA,MAAM,aAAa,aAAA,CAAc,CAAA;AACjC,IAAA,MAAM,MAAA,GAAS,UAAA,GAAa,YAAA,IAAgB,UAAA,GAAa,UAAA;AAGzD,IAAA,MAAM,OAAO,IAAA,CAAK,GAAA;AAAA,MAChB,EAAA;AAAA,MACA,KAAK,GAAA,CAAI,YAAA,EAAc,SAAS,UAAA,GAAa,GAAA,GAAM,aAAa,GAAG;AAAA,KACrE;AACA,IAAA,MAAM,GAAA,GAAM,SACR,aAAA,CAAc,CAAA,GAAI,OAAO,GAAA,GACzB,aAAA,CAAc,CAAA,GAAI,aAAA,CAAc,MAAA,GAAS,GAAA;AAE7C,IAAA,OAAO;AAAA,MACL,GAAA;AAAA,MACA,MAAM,aAAA,CAAc,CAAA;AAAA,MACpB,OAAO,aAAA,CAAc,KAAA;AAAA,MACrB;AAAA,KACF;AAAA,EACF,GAAG,CAAC,gBAAA,EAAkB,aAAA,EAAe,YAAA,EAAc,cAAc,CAAC,CAAA;AAQlE,EAAA,MAAM,QAAA,GAAW,aAAA,GAAgB,aAAA,CAAc,GAAA,GAAM,cAAc,CAAA,GAAI,CAAA;AACvE,EAAA,MAAM,SAAA,GAAY,aAAA,GAAgB,aAAA,CAAc,IAAA,GAAO,cAAc,CAAA,GAAI,CAAA;AAEzE,EAAA,IAAI,OAAA;AACF,IAAA,OAAA,CAAQ,IAAI,aAAA,EAAe;AAAA,MACzB,YAAA;AAAA,MACA,gBAAA;AAAA,MACA,WAAA,EAAa,CAAC,CAAC,aAAA;AAAA,MACf,gBAAA,EAAkB,CAAC,CAAC,aAAA;AAAA,MACpB,UAAU,QAAA,CAAS,MAAA;AAAA,MACnB,QAAA,EAAU;AAAA,KACX,CAAA;AAEH,EAAA,uBACEC,eAAA;AAAA,IAACJ,gBAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,CAAC,MAAA,CAAO,SAAA,EAAW,KAAK,CAAA;AAAA,MAC/B,MAAA;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAI,eAAA;AAAA,UAACJ,gBAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,UAAA;AAAA,YACL,UAAU,MAAM;AACd,cAAA,UAAA,CAAW,SAAS,eAAA,CAAgB,CAAC,CAAA,EAAG,CAAA,EAAG,OAAO,MAAA,KAAW;AAC3D,gBAAA,gBAAA,CAAiB,EAAE,CAAA,EAAG,CAAA,EAAG,KAAA,EAAO,QAAQ,CAAA;AAAA,cAC1C,CAAC,CAAA;AACD,cAAA,oBAAA,EAAqB;AAAA,YACvB,CAAA;AAAA,YACA,KAAA,EAAO;AAAA,cACL,MAAA,CAAO,YAAA;AAAA,cACP;AAAA,gBACE,WAAA;AAAA,gBACA,iBAAiB,MAAA,CAAO,EAAA;AAAA,gBACxB,WAAA,EAAa,WAAW,CAAA,GAAI;AAAA,eAC9B;AAAA,cACA,cAAc,MAAA,CAAO,oBAAA;AAAA,cACrB,YAAY,MAAA,CAAO,QAAA;AAAA,cACnB;AAAA,aACF;AAAA,YAGC,QAAA,EAAA;AAAA,cAAA,UAAA,IAAc,cAAA,CAAe,SAAS,CAAA,oBACrCF,cAAA,CAACE,oBAAK,KAAA,EAAO,MAAA,CAAO,eACjB,QAAA,EAAA,cAAA,CAAe,GAAA;AAAA,gBAAI,CAAC,MAAM,CAAA,KACzB,oBAAA,kCACGA,gBAAA,EAAA,EAAc,QAAA,EAAA,oBAAA,CAAqB,IAAI,CAAA,EAAA,EAA7B,CAA+B,CAAA,mCAEzCA,gBAAA,EAAA,EAAa,KAAA,EAAO,CAAC,MAAA,CAAO,IAAA,EAAM,EAAE,eAAA,EAAiB,MAAA,CAAO,MAAA,EAAQ,CAAA,EACnE,QAAA,EAAA;AAAA,kCAAAF,cAAA,CAACG,gBAAA,EAAA,EAAK,KAAA,EAAO,CAAC,MAAA,CAAO,UAAU,EAAE,KAAA,EAAO,MAAA,CAAO,QAAA,EAAU,CAAA,EACtD,QAAA,EAAA,YAAA,CAAa,IAAA,EAAM,KAAK,CAAA,EAC3B,CAAA;AAAA,kBACC,CAAC,QAAA,IAAY,CAAC,QAAA,oBACbH,cAAA;AAAA,oBAACI,qBAAA;AAAA,oBAAA;AAAA,sBACC,OAAA,EAAS,MAAM,UAAA,CAAW,IAAA,EAAM,CAAC,CAAA;AAAA,sBACjC,OAAA,EAAS,EAAE,GAAA,EAAK,CAAA,EAAG,QAAQ,CAAA,EAAG,IAAA,EAAM,CAAA,EAAG,KAAA,EAAO,CAAA,EAAE;AAAA,sBAEhD,QAAA,kBAAAJ,cAAA,CAACG,gBAAA,EAAA,EAAK,KAAA,EAAO,CAAC,MAAA,CAAO,UAAA,EAAY,EAAE,KAAA,EAAO,MAAA,CAAO,UAAA,EAAY,CAAA,EAAG,QAAA,EAAA,QAAA,EAAC;AAAA;AAAA;AACnE,iBAAA,EAAA,EAVO,CAYX;AAAA,eAEJ,EACF,CAAA;AAAA,8BAIFH,cAAA;AAAA,gBAACO,qBAAA;AAAA,gBAAA;AAAA,kBACC,GAAA,EAAK,QAAA;AAAA,kBACL,QAAA,EAAU,CAAC,QAAA,IAAY,CAAC,QAAA;AAAA,kBACxB,KAAA,EAAO,KAAA;AAAA,kBACP,WAAA;AAAA,kBACA,sBAAsB,MAAA,CAAO,WAAA;AAAA,kBAC7B,YAAA,EAAc,YAAA;AAAA,kBACd,OAAA,EAAS,WAAA;AAAA,kBACT,MAAA,EAAQ,UAAA;AAAA,kBACR,KAAA,EAAO,CAAC,MAAA,CAAO,UAAA,EAAY,EAAE,KAAA,EAAO,MAAA,CAAO,IAAA,EAAK,EAAG,cAAc;AAAA;AAAA,eACnE;AAAA,cAGC,OAAA,oBACCP,cAAA;AAAA,gBAACQ,6BAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,OAAA;AAAA,kBACL,OAAO,MAAA,CAAO,OAAA;AAAA,kBACd,OAAO,MAAA,CAAO;AAAA;AAAA,eAChB;AAAA,cAID,QAAA,oBACCR,cAAA;AAAA,gBAACI,qBAAA;AAAA,gBAAA;AAAA,kBACC,OAAA,EAAS,eAAA;AAAA,kBACT,OAAO,MAAA,CAAO,WAAA;AAAA,kBACd,UAAU,QAAA,IAAY,QAAA;AAAA,kBAEtB,QAAA,kBAAAJ,cAAA,CAACG,oBAAK,KAAA,EAAO,EAAE,OAAO,MAAA,CAAO,WAAA,IAAe,QAAA,EAAA,QAAA,EAAC;AAAA;AAAA;AAC/C;AAAA;AAAA,SAEJ;AAAA,wBAYAG,eAAA;AAAA,UAACG,YAAA;AAAA,UAAA;AAAA,YACC,MAAA,EAAQ,CAAC,CAAC,aAAA;AAAA,YACV,cAAA,EAAgB,SAAA;AAAA,YAQhB,KAAA,EAAO,EAAE,MAAA,EAAQ,IAAA,EAAM,WAAW,IAAA,EAAK;AAAA,YAOvC,QAAA,EAAA;AAAA,8BAAAT,cAAA;AAAA,gBAACE,gBAAA;AAAA,gBAAA;AAAA,kBACC,GAAA,EAAK,gBAAA;AAAA,kBACL,aAAA,EAAc,MAAA;AAAA,kBACd,OAAO,MAAA,CAAO,aAAA;AAAA,kBACd,QAAA,EAAU;AAAA;AAAA,eACZ;AAAA,cACC,aAAA,oBACCF,cAAA;AAAA,gBAACI,qBAAA;AAAA,gBAAA;AAAA,kBACC,OAAOM,sBAAA,CAAW,kBAAA;AAAA,kBAClB,SAAS,MAAM;AAGb,oBAAA,SAAA,EAAU;AACV,oBAAAX,oBAAA,CAAS,OAAA,EAAQ;AAAA,kBACnB,CAAA;AAAA,kBAEA,QAAA,kBAAAO,eAAA;AAAA,oBAACJ,gBAAA;AAAA,oBAAA;AAAA,sBAGC,2BAA2B,MAAM,IAAA;AAAA,sBACjC,+BAA+B,MAAM,KAAA;AAAA,sBACrC,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,wBAAA,IAAI,OAAA;AACF,0BAAA,OAAA,CAAQ,GAAA,CAAI,gCAAA,EAAkC,CAAA,CAAE,WAAA,CAAY,MAAM,CAAA;AAAA,sBACtE,CAAA;AAAA,sBACA,KAAA,EAAO;AAAA,wBACL,MAAA,CAAO,YAAA;AAAA,wBACP;AAAA,0BACE,QAAA,EAAU,UAAA;AAAA;AAAA,0BAEV,GAAA,EAAK,QAAA;AAAA,0BACL,IAAA,EAAM,SAAA;AAAA,0BACN,OAAO,aAAA,CAAc,KAAA;AAAA,0BACrB,WAAW,aAAA,CAAc,IAAA;AAAA,0BACzB,aAAa,MAAA,CAAO,MAAA;AAAA,0BACpB,iBAAiB,MAAA,CAAO,EAAA;AAAA,0BACxB,YAAA,EAAc;AAAA,yBAChB;AAAA,wBACA;AAAA,uBACF;AAAA,sBAEC,QAAA,EAAA;AAAA,wBAAA,QAAA,CAAS,SAAS,CAAA,mBACjBF,cAAA;AAAA,0BAACW,oBAAA;AAAA,0BAAA;AAAA,4BACC,IAAA,EAAM,QAAA;AAAA,4BACN,YAAA,EAAc,CAAC,CAAA,EAAG,CAAA,KAAM,OAAO,CAAC,CAAA;AAAA,4BAChC,UAAA;AAAA,4BACA,SAAA,EAAW,UAAA;AAAA,4BACX,yBAAA,EAA0B,QAAA;AAAA,4BAC1B,mBAAA,EAAmB,IAAA;AAAA,4BAKnB,KAAA,EAAO,EAAE,SAAA,EAAW,aAAA,CAAc,IAAA,EAAK;AAAA,4BACvC,aAAA,EACE,sBAAA,GACI,CAAC,CAAA,EAAG,KAAA,MAAW;AAAA,8BACb,QAAQ,sBAAA,CAAuB,QAAA;AAAA,8BAC/B,MAAA,EAAQ,uBAAuB,QAAA,GAAW,KAAA;AAAA,8BAC1C;AAAA,6BACF,CAAA,GACA;AAAA;AAAA,yBAER;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0CAOAX,cAAA,CAACE,oBAAK,KAAA,EAAO,CAAC,OAAO,MAAA,EAAQ,MAAA,CAAO,QAAQ,CAAA,EAC1C,QAAA,kBAAAF,cAAA,CAACG,gBAAA,EAAA,EAAK,OAAO,CAAC,MAAA,CAAO,YAAY,EAAE,KAAA,EAAO,OAAO,SAAA,EAAW,CAAA,EACzD,QAAA,EAAA,YAAA,EACH,CAAA,EACF;AAAA,yBAAA;AAAA,wBAED,mBAAA;AAAsB;AAAA;AAAA;AACzB;AAAA;AACF;AAAA;AAAA;AAEJ;AAAA;AAAA,GACF;AAEJ;AAIA,MAAM,MAAA,GAASO,uBAAW,MAAA,CAAO;AAAA,EAC/B,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,MAAA;AAAA,IACP,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,YAAA,EAAc,CAAA;AAAA,IACd,iBAAA,EAAmB,CAAA;AAAA,IACnB,SAAA,EAAW;AAAA,GACb;AAAA,EACA,oBAAA,EAAsB;AAAA,IACpB,QAAA,EAAU,MAAA;AAAA,IACV,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU,EAAA;AAAA,IACV,eAAA,EAAiB,CAAA;AAAA,IACjB,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,WAAA,EAAa;AAAA,IACX,iBAAA,EAAmB,CAAA;AAAA,IACnB,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,aAAA,EAAe;AAAA,IACb,aAAA,EAAe,KAAA;AAAA,IACf,QAAA,EAAU,MAAA;AAAA,IACV,GAAA,EAAK,CAAA;AAAA,IACL,WAAA,EAAa;AAAA,GACf;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,WAAA,EAAa,EAAA;AAAA,IACb,YAAA,EAAc,CAAA;AAAA,IACd,eAAA,EAAiB,CAAA;AAAA,IACjB,YAAA,EAAc,EAAA;AAAA,IACd,GAAA,EAAK;AAAA,GACP;AAAA,EACA,QAAA,EAAU;AAAA,IACR,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,UAAA,EAAY;AAAA,IACV,QAAA,EAAU,EAAA;AAAA,IACV,iBAAA,EAAmB;AAAA,GACrB;AAAA;AAAA,EAEA,aAAA,EAAe;AAAA,IACb,QAAA,EAAU,UAAA;AAAA,IACV,GAAA,EAAK,CAAA;AAAA,IACL,IAAA,EAAM,CAAA;AAAA,IACN,KAAA,EAAO,CAAA;AAAA,IACP,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,QAAA,EAAU,UAAA;AAAA,IACV,WAAA,EAAa,CAAA;AAAA,IACb,YAAA,EAAc,CAAA;AAAA,IACd,QAAA,EAAU,QAAA;AAAA,IACV,SAAA,EAAW,CAAA;AAAA,IACX,WAAA,EAAa,MAAA;AAAA,IACb,YAAA,EAAc,EAAE,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,IACpC,aAAA,EAAe,IAAA;AAAA,IACf,YAAA,EAAc,CAAA;AAAA;AAAA,IAEd,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,iBAAA,EAAmB,EAAA;AAAA,IACnB,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,UAAA,EAAY;AAAA,IACV,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,UAAA,EAAY;AAAA,IACV,iBAAA,EAAmB,EAAA;AAAA,IACnB,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,aAAA,EAAe,WAAA;AAAA,IACf,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,QAAA,EAAU;AAAA;AAAA;AAAA;AAAA;AAKZ,CAAC,CAAA;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../../../../../../apps/mobile/src/Core/AutoComplete/index.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n ActivityIndicator,\n Dimensions,\n FlatList,\n Keyboard,\n Platform,\n Pressable,\n StyleSheet,\n Text,\n TextInput,\n View,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport type { ListRenderItem } from \"@react-native/virtualized-lists\";\nimport { resolveThemeTokenForNative } from \"../../Factory/helpers/style\";\nimport { Portal } from \"../../ui/portal\";\n\n/* ─── Event types (mirrors PrimeReact) ─────────────────── */\n\nexport interface AutoCompleteChangeEvent<T = any> {\n originalEvent?: any;\n value: T;\n}\n\nexport interface AutoCompleteCompleteEvent {\n originalEvent?: any;\n query: string;\n}\n\nexport interface AutoCompleteSelectEvent<T = any> {\n originalEvent?: any;\n value: T;\n}\n\nexport interface AutoCompleteUnselectEvent<T = any> {\n originalEvent?: any;\n value: T;\n}\n\nexport interface AutoCompleteDropdownClickEvent {\n originalEvent?: any;\n query: string;\n}\n\nexport interface VirtualScrollerOptions {\n itemSize: number;\n}\n\n/* ─── Props ────────────────────────────────────────────── */\n\nexport interface AutoCompleteProps<T = any> {\n id?: string;\n name?: string;\n testID?: string;\n\n value?: T | T[] | null;\n suggestions?: T[];\n field?: string;\n\n completeMethod?: (e: AutoCompleteCompleteEvent) => void;\n delay?: number;\n minLength?: number;\n\n onChange?: (e: AutoCompleteChangeEvent<T>) => void;\n onSelect?: (e: AutoCompleteSelectEvent<T>) => void;\n onUnselect?: (e: AutoCompleteUnselectEvent<T>) => void;\n onClear?: (e: { originalEvent?: any }) => void;\n onBlur?: (e: any) => void;\n onFocus?: (e: any) => void;\n onShow?: () => void;\n onHide?: () => void;\n onDropdownClick?: (e: AutoCompleteDropdownClickEvent) => void;\n\n placeholder?: string;\n disabled?: boolean;\n readOnly?: boolean;\n autoFocus?: boolean;\n invalid?: boolean;\n loading?: boolean;\n variant?: \"outlined\" | \"filled\";\n\n dropdown?: boolean;\n dropdownMode?: \"blank\" | \"current\";\n\n multiple?: boolean;\n selectionLimit?: number;\n\n forceSelection?: boolean;\n\n emptyMessage?: string;\n showEmptyMessage?: boolean;\n\n scrollHeight?: number;\n autoHighlight?: boolean;\n\n itemTemplate?: (item: T, index: number) => React.ReactNode;\n selectedItemTemplate?: (item: T) => React.ReactNode;\n panelFooterTemplate?: () => React.ReactNode;\n\n optionGroupLabel?: string;\n optionGroupChildren?: string;\n optionGroupTemplate?: (group: any) => React.ReactNode;\n\n virtualScrollerOptions?: VirtualScrollerOptions;\n\n style?: ViewStyle;\n inputStyle?: ViewStyle;\n panelStyle?: ViewStyle;\n\n /**\n * The box that holds the chips AND the text caret — the native twin of\n * web's `ul.p-autocomplete-multiple-container`. This is what a consumer\n * means by \"the tags field\", and what has to carry the border / radius /\n * background / padding for a tags field to match a text input.\n *\n * Applied LAST on the field wrapper, after `inputStyle`'s wrapper half,\n * so it is the more specific of the two.\n */\n tokenContainerStyle?: ViewStyle;\n /** A single chip (the `View`): background, radius, padding, margin. */\n tokenStyle?: ViewStyle;\n /** The chip's label `Text`: color, fontSize, fontWeight, fontFamily. */\n tokenLabelStyle?: TextStyle;\n /** The chip's remove (✕) `Text`: color, fontSize. */\n tokenIconStyle?: TextStyle;\n}\n\n/* ─── Helpers ──────────────────────────────────────────── */\n\nconst resolveLabel = (item: any, field?: string): string => {\n if (item == null) return \"\";\n if (typeof item === \"string\") return item;\n if (!field) return String(item);\n return String(item[field] ?? \"\");\n};\n\nconst t = resolveThemeTokenForNative;\n\n/**\n * Radius of the visible input chrome the panel should match when this\n * component's own wrapper has been flattened by an outer container.\n * Mirrors the theme's `Input.inputGroup.style.borderRadius`, which is what\n * KitsContainer actually paints around the field. Kept as a constant here\n * because the factory layer resolves colour/spacing tokens only — component\n * slot styles live in the UI package's theme, which this layer does not read.\n */\nconst INPUT_CHROME_RADIUS = 10;\n\n/** Keys that belong on the TextInput rather than the wrapper View */\nconst TEXT_STYLE_KEYS = new Set([\n 'fontSize', 'fontFamily', 'fontWeight', 'fontStyle',\n 'color', 'letterSpacing', 'lineHeight', 'textAlign',\n 'textDecorationLine', 'textTransform',\n]);\n\n/** Splits a combined style object into wrapper (View) props and field (TextInput) props */\nfunction splitInputStyle(combined?: ViewStyle): { wrapperOverrides?: ViewStyle; fieldOverrides?: ViewStyle } {\n if (!combined) return {};\n const wrapper: Record<string, any> = {};\n const field: Record<string, any> = {};\n for (const [k, v] of Object.entries(combined)) {\n if (TEXT_STYLE_KEYS.has(k)) field[k] = v;\n else wrapper[k] = v;\n }\n return {\n wrapperOverrides: Object.keys(wrapper).length ? wrapper as ViewStyle : undefined,\n fieldOverrides: Object.keys(field).length ? field as ViewStyle : undefined,\n };\n}\n\n/* ─── Component ────────────────────────────────────────── */\n\nexport default function AutoComplete<T = any>({\n value,\n suggestions = [],\n completeMethod,\n onChange,\n onSelect,\n onUnselect,\n onClear,\n onBlur,\n onFocus,\n onShow,\n onHide,\n onDropdownClick,\n\n placeholder,\n disabled,\n readOnly,\n autoFocus,\n invalid,\n loading,\n variant = \"outlined\",\n\n dropdown,\n dropdownMode = \"blank\",\n\n field,\n\n multiple,\n selectionLimit,\n\n delay = 300,\n minLength = 1,\n\n emptyMessage = \"No results found\",\n showEmptyMessage = false,\n\n scrollHeight = 200,\n autoHighlight,\n\n itemTemplate,\n selectedItemTemplate,\n panelFooterTemplate,\n\n optionGroupLabel,\n optionGroupChildren,\n optionGroupTemplate,\n\n virtualScrollerOptions,\n\n style,\n inputStyle,\n panelStyle,\n tokenContainerStyle,\n tokenStyle,\n tokenLabelStyle,\n tokenIconStyle,\n\n testID,\n}: AutoCompleteProps<T>) {\n const inputRef = useRef<TextInput>(null);\n const triggerRef = useRef<View>(null);\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const blurTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const [query, setQuery] = useState(\"\");\n const [panelVisible, setPanelVisible] = useState(false);\n const [focused, setFocused] = useState(false);\n const [highlightedIndex, setHighlightedIndex] = useState(-1);\n const [triggerLayout, setTriggerLayout] = useState<{\n x: number; y: number; width: number; height: number;\n } | null>(null);\n // ── Coordinate frames ──────────────────────────────────────────────\n // `triggerLayout` is WINDOW space (measureInWindow). The suggestions panel,\n // however, renders inside the gluestack Portal, whose container is\n // `StyleSheet.absoluteFill` of the nearest GluestackUIProvider View — i.e.\n // OVERLAY space, whose origin sits Δ below/right of the window origin\n // (status bar, app chrome, a Storybook header, …). Applying a window-space\n // `top` inside that container pushed the panel down by exactly Δ.\n //\n // `overlayOrigin` is that Δ, measured from a zero-size anchor rendered at\n // (0,0) of the overlay container. Δ = {0,0} until the anchor has laid out,\n // which reproduces the pre-fix placement for one frame rather than anything\n // worse, then snaps to the corrected position.\n const overlayAnchorRef = useRef<View>(null);\n const [overlayOrigin, setOverlayOrigin] = useState<{ x: number; y: number }>({ x: 0, y: 0 });\n\n const measureOverlayOrigin = useCallback(() => {\n overlayAnchorRef.current?.measureInWindow((x, y) => {\n // Bail out when unchanged so re-measuring on every trigger measure\n // can't spin the render loop.\n setOverlayOrigin((prev) => (prev.x === x && prev.y === y ? prev : { x, y }));\n });\n }, []);\n // Live keyboard height so the suggestions panel can flip above the input\n // when the keyboard would otherwise cover the list (the main reason\n // \"no list shows up\" on phones — the panel was rendering below the\n // input, behind the keyboard).\n const [keyboardHeight, setKeyboardHeight] = useState(0);\n\n // Keep latest callbacks in refs so selectItem never captures stale closures\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n const onSelectRef = useRef(onSelect);\n onSelectRef.current = onSelect;\n const onUnselectRef = useRef(onUnselect);\n onUnselectRef.current = onUnselect;\n const onShowRef = useRef(onShow);\n onShowRef.current = onShow;\n const onHideRef = useRef(onHide);\n onHideRef.current = onHide;\n\n\n const isFilled = variant === \"filled\";\n const isMultiple = !!multiple;\n\n const colors = useMemo(() => ({\n border: t(\"border\") || t(\"gray.300\"),\n borderFocus: t(\"primary\"),\n borderInvalid: t(\"danger\") || t(\"red.500\"),\n bg: isFilled ? (t(\"surface-ground\") || t(\"gray.100\")) : (t(\"surface-card\") || \"#fff\"),\n text: t(\"text\") || t(\"gray.800\"),\n placeholder: t(\"text-secondary\") || t(\"gray.400\"),\n itemBorder: t(\"border\") || t(\"gray.200\"),\n itemHighlight: t(\"highlight-bg\") || t(\"gray.100\"),\n chipBg: t(\"primary.100\") || t(\"indigo.100\"),\n chipText: t(\"primary.700\") || t(\"indigo.700\"),\n chipRemove: t(\"primary.500\") || t(\"indigo.500\"),\n primary: t(\"primary\"),\n emptyText: t(\"text-secondary\") || t(\"gray.400\"),\n groupBg: t(\"surface-ground\") || t(\"gray.50\"),\n }), [isFilled]);\n\n /* ─── Derived values ───────────────────────────────── */\n\n const selectedValues = useMemo<T[]>(() => {\n if (!isMultiple) return [];\n if (Array.isArray(value)) return value;\n return [];\n }, [value, isMultiple]);\n\n // Flatten groups for FlatList (same pattern as Core/Dropdown)\n const flatData = useMemo(() => {\n if (!optionGroupLabel || !optionGroupChildren) return suggestions;\n const out: any[] = [];\n suggestions.forEach((group: any) => {\n out.push({ __group: true, group });\n const children = group[optionGroupChildren];\n if (Array.isArray(children)) {\n children.forEach((child: any) => out.push(child));\n }\n });\n return out;\n }, [suggestions, optionGroupLabel, optionGroupChildren]);\n\n /* ─── Value sync ───────────────────────────────────── */\n\n useEffect(() => {\n if (!isMultiple && value != null) {\n const label = resolveLabel(value, field);\n setQuery(label);\n } else if (!isMultiple && value == null) {\n setQuery(\"\");\n }\n }, [value, field, isMultiple]);\n\n /* ─── autoFocus ────────────────────────────────────── */\n\n useEffect(() => {\n if (autoFocus) {\n setTimeout(() => inputRef.current?.focus(), 100);\n }\n }, []);\n\n /* ─── Keyboard tracking ────────────────────────────── */\n\n useEffect(() => {\n const showEvent = Platform.OS === \"ios\" ? \"keyboardWillShow\" : \"keyboardDidShow\";\n const hideEvent = Platform.OS === \"ios\" ? \"keyboardWillHide\" : \"keyboardDidHide\";\n const showSub = Keyboard.addListener(showEvent, (e) => {\n setKeyboardHeight(e.endCoordinates?.height ?? 0);\n });\n const hideSub = Keyboard.addListener(hideEvent, () => {\n setKeyboardHeight(0);\n });\n return () => {\n showSub.remove();\n hideSub.remove();\n };\n }, []);\n\n /* ─── Re-measure trigger on keyboard / chip changes ── */\n\n // When the keyboard appears/disappears or chips are added/removed the\n // trigger View shifts on screen. Re-measure after a short delay so the\n // panel geometry stays anchored correctly.\n useEffect(() => {\n const timer = setTimeout(() => {\n triggerRef.current?.measureInWindow((x, y, width, height) => {\n setTriggerLayout({ x, y, width, height });\n });\n // Same cadence, no new timer: the overlay container can shift for the\n // same reasons the trigger does (keyboard resize on Android).\n measureOverlayOrigin();\n }, 100);\n return () => clearTimeout(timer);\n }, [keyboardHeight, selectedValues.length, measureOverlayOrigin]);\n\n /* ─── autoHighlight ────────────────────────────────── */\n\n useEffect(() => {\n if (autoHighlight && flatData.length > 0 && panelVisible) {\n const firstNonGroup = flatData.findIndex((d: any) => !d.__group);\n setHighlightedIndex(firstNonGroup >= 0 ? firstNonGroup : 0);\n } else {\n setHighlightedIndex(-1);\n }\n }, [flatData, panelVisible, autoHighlight]);\n\n /* ─── Panel lifecycle ──────────────────────────────── */\n\n const showPanel = useCallback(() => {\n if (__DEV__) console.log(\"[AC] showPanel()\");\n // Open the panel synchronously. Previously this was nested inside\n // measureInWindow's callback, which on Android sometimes fails to\n // fire (when the View isn't fully laid out), leaving the panel\n // permanently closed even though showPanel had been called.\n setPanelVisible((prev) => {\n if (!prev) onShowRef.current?.();\n return true;\n });\n // Refresh window coords asynchronously so the Portal-anchored panel\n // tracks the input. If the callback never fires we still have the\n // values set by onLayout below.\n triggerRef.current?.measureInWindow((x, y, width, height) => {\n setTriggerLayout({ x, y, width, height });\n });\n // No-op while the Portal is still closed (the anchor isn't mounted yet);\n // the anchor's own onLayout covers that first-open case.\n measureOverlayOrigin();\n }, [measureOverlayOrigin]);\n\n const hidePanel = useCallback(() => {\n if (__DEV__) console.log(\"[AC] hidePanel()\");\n setPanelVisible((prev) => {\n if (prev) onHideRef.current?.();\n return false;\n });\n }, []);\n\n /* ─── Debounced search ─────────────────────────────── */\n\n const triggerSearch = useCallback(\n (text: string, event?: any) => {\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n }\n if (text.length < minLength) {\n return;\n }\n\n debounceRef.current = setTimeout(() => {\n if (__DEV__) console.log(\"[AC] debounce fired → completeMethod + showPanel, query=\", text);\n completeMethod?.({ originalEvent: event, query: text });\n showPanel();\n }, delay);\n },\n [completeMethod, delay, minLength, showPanel],\n );\n\n // Cleanup timers on unmount\n useEffect(() => {\n return () => {\n if (debounceRef.current) clearTimeout(debounceRef.current);\n if (blurTimeoutRef.current) clearTimeout(blurTimeoutRef.current);\n };\n }, []);\n\n /* ─── Text change ──────────────────────────────────── */\n\n const onTextChange = useCallback(\n (text: string) => {\n setQuery(text);\n\n if (text.length === 0) {\n hidePanel();\n if (!isMultiple) {\n onChangeRef.current?.({ originalEvent: undefined, value: null as any });\n onClear?.({ originalEvent: undefined });\n }\n return;\n }\n\n triggerSearch(text);\n },\n [hidePanel, isMultiple, onClear, triggerSearch],\n );\n\n /* ─── Selection ────────────────────────────────────── */\n\n const selectItem = useCallback(\n (item: T) => {\n\n // Cancel any pending blur handler\n if (blurTimeoutRef.current) {\n clearTimeout(blurTimeoutRef.current);\n blurTimeoutRef.current = null;\n }\n\n if (isMultiple) {\n if (selectionLimit && selectedValues.length >= selectionLimit) {\n return;\n }\n const isDuplicate = selectedValues.some(\n (v) => resolveLabel(v, field) === resolveLabel(item, field),\n );\n if (isDuplicate) {\n return;\n }\n\n const newValue = [...selectedValues, item];\n onChangeRef.current?.({ originalEvent: undefined, value: newValue as any });\n onSelectRef.current?.({ originalEvent: undefined, value: item });\n setQuery(\"\");\n } else {\n const label = resolveLabel(item, field);\n onChangeRef.current?.({ originalEvent: undefined, value: item as any });\n onSelectRef.current?.({ originalEvent: undefined, value: item });\n setQuery(label);\n hidePanel();\n Keyboard.dismiss();\n }\n },\n [isMultiple, selectedValues, selectionLimit, field, hidePanel],\n );\n\n /* ─── Chip removal ─────────────────────────────────── */\n\n const removeChip = useCallback(\n (item: T, index: number) => {\n const newValues = selectedValues.filter((_, i) => i !== index);\n onChangeRef.current?.({ originalEvent: undefined, value: newValues as any });\n onUnselectRef.current?.({ originalEvent: undefined, value: item });\n },\n [selectedValues],\n );\n\n /* ─── Dropdown button ──────────────────────────────── */\n\n const onDropdownPress = useCallback(() => {\n if (disabled || readOnly) return;\n const q = dropdownMode === \"current\" ? query : \"\";\n onDropdownClick?.({ originalEvent: undefined, query: q });\n completeMethod?.({ originalEvent: undefined, query: q });\n setPanelVisible((prev) => {\n if (prev) {\n onHideRef.current?.();\n return false;\n }\n onShowRef.current?.();\n return true;\n });\n inputRef.current?.focus();\n }, [disabled, readOnly, dropdownMode, query, onDropdownClick, completeMethod]);\n\n /* ─── Focus / Blur ─────────────────────────────────── */\n\n const handleFocus = useCallback(\n (e: any) => {\n setFocused(true);\n onFocus?.(e);\n },\n [onFocus],\n );\n\n\n // Blur handling. The suggestions panel now lives in a same-window\n // Portal (gluestack OverlayProvider), so opening it no longer blurs or\n // steals focus from this TextInput — the close→reopen \"keyboard\n // flicker\" workaround (interaction-timestamp tracking + programmatic\n // refocus) has been removed on purpose. The only thing left to handle\n // is a genuine blur: defer the close by 200ms so a tap on a suggestion\n // (whose onPress fires AFTER the input blurs on Android, because the\n // panel sits in a root-level Portal outside this input's view tree)\n // can still run selectItem first. selectItem clears blurTimeoutRef, so\n // a real selection cancels the close and keeps the panel open for\n // multi-add.\n const handleBlur = useCallback(\n (e: any) => {\n if (__DEV__) console.log(\"[AC] handleBlur → will hidePanel in 200ms\");\n if (blurTimeoutRef.current) {\n clearTimeout(blurTimeoutRef.current);\n }\n blurTimeoutRef.current = setTimeout(() => {\n blurTimeoutRef.current = null;\n setFocused(false);\n hidePanel();\n onBlur?.(e);\n }, 200);\n },\n [hidePanel, onBlur],\n );\n\n /* ─── Render item ──────────────────────────────────── */\n\n const renderItem: ListRenderItem<any> = useCallback(\n ({ item, index }): React.ReactElement | null => {\n if (!item) return null;\n\n // Group header\n if (item.__group) {\n if (optionGroupTemplate) {\n return <>{optionGroupTemplate(item.group)}</>;\n }\n return (\n <View style={[styles.groupLabel, { backgroundColor: colors.groupBg }]}>\n <Text style={styles.groupLabelText}>\n {optionGroupLabel ? item.group?.[optionGroupLabel] : \"\"}\n </Text>\n </View>\n );\n }\n\n const isHighlighted = index === highlightedIndex;\n const isLast = index === flatData.length - 1;\n\n if (itemTemplate) {\n const rendered = itemTemplate(item, index);\n return rendered ? (\n <Pressable onPress={() => {\n selectItem(item);\n }}>{rendered}</Pressable>\n ) : null;\n }\n\n return (\n <Pressable\n onPress={() => {\n console.log(\"item\", item);\n selectItem(item);\n }}\n style={[\n styles.option,\n !isLast && { borderBottomWidth: 1, borderBottomColor: colors.itemBorder },\n isHighlighted && { backgroundColor: colors.itemHighlight },\n ]}\n >\n <Text style={[styles.optionText, { color: colors.text }]}>\n {resolveLabel(item, field)}\n </Text>\n </Pressable>\n );\n },\n [\n flatData.length,\n highlightedIndex,\n itemTemplate,\n optionGroupTemplate,\n optionGroupLabel,\n field,\n selectItem,\n colors,\n ],\n );\n\n /* ─── Render ───────────────────────────────────────── */\n\n const { wrapperOverrides, fieldOverrides } = useMemo(\n () => splitInputStyle(inputStyle),\n [inputStyle],\n );\n\n const borderColor = invalid\n ? colors.borderInvalid\n : focused\n ? colors.borderFocus\n : colors.border;\n\n const showPanelContent = panelVisible && (flatData.length > 0 || showEmptyMessage || !!emptyMessage);\n\n // Panel radius — deliberately NOT inherited from the inner input's wrapper\n // override. KitsContainer flattens this component's inner TextInput wrapper\n // with `borderRadius: 0` because the visible chrome is drawn by the outer\n // `inputGroup`; letting that 0 through rendered a square panel underneath a\n // rounded input. Resolution order:\n // 1. explicit `panelStyle.borderRadius`\n // 2. the wrapper's own radius when it is a real (non-zero) value — that is\n // the visible chrome in standalone (non-KitsContainer) usage\n // 3. the visible input-chrome radius (INPUT_CHROME_RADIUS)\n const panelRadius = useMemo(() => {\n const explicit = (panelStyle as any)?.borderRadius;\n if (typeof explicit === \"number\") return explicit;\n const wrapperRadius = (wrapperOverrides as any)?.borderRadius;\n if (typeof wrapperRadius === \"number\" && wrapperRadius > 0) {\n return Math.min(wrapperRadius, 16);\n }\n return INPUT_CHROME_RADIUS;\n }, [panelStyle, wrapperOverrides]);\n\n // Window-absolute panel geometry — anchored to the trigger's window\n // coordinates so the panel can render inside the root-level Portal\n // (which lives at the screen root, escaping every parent's\n // overflow/hit-area clip — the reliable way to deliver taps to the\n // suggestion Pressables on Android).\n //\n // Subtract `keyboardHeight` from the visible viewport so the panel flips\n // above the input when the keyboard would otherwise cover the list.\n const panelGeometry = useMemo(() => {\n if (!showPanelContent || !triggerLayout) return null;\n const screen = Dimensions.get(\"window\");\n const GAP = 4;\n const visibleHeight = screen.height - keyboardHeight;\n const spaceBelow = visibleHeight - (triggerLayout.y + triggerLayout.height);\n const spaceAbove = triggerLayout.y;\n const openUp = spaceBelow < scrollHeight && spaceAbove > spaceBelow;\n // Shrink maxH to fit the available space instead of shifting `top`\n // away from the input field.\n const maxH = Math.max(\n 80,\n Math.min(scrollHeight, openUp ? spaceAbove - GAP : spaceBelow - GAP),\n );\n const top = openUp\n ? triggerLayout.y - maxH - GAP\n : triggerLayout.y + triggerLayout.height + GAP;\n\n return {\n top,\n left: triggerLayout.x,\n width: triggerLayout.width,\n maxH,\n };\n }, [showPanelContent, triggerLayout, scrollHeight, keyboardHeight]);\n\n // WINDOW → OVERLAY conversion. `panelGeometry.top/left` are WINDOW space\n // (measured off the trigger, compared against window-space screen/keyboard\n // dimensions for the fit math above). The style below is applied inside the\n // Portal's overlay container, so subtract that container's own window origin\n // to land in OVERLAY space. Δ = {0,0} → identity, i.e. a no-op wherever the\n // overlay container already starts at the window origin.\n const panelTop = panelGeometry ? panelGeometry.top - overlayOrigin.y : 0;\n const panelLeft = panelGeometry ? panelGeometry.left - overlayOrigin.x : 0;\n\n if (__DEV__)\n console.log(\"[AC] render\", {\n panelVisible,\n showPanelContent,\n hasGeometry: !!panelGeometry,\n hasTriggerLayout: !!triggerLayout,\n flatData: flatData.length,\n geometry: panelGeometry,\n });\n\n return (\n <View\n style={[styles.container, style]}\n testID={testID}\n >\n <View\n ref={triggerRef}\n onLayout={() => {\n triggerRef.current?.measureInWindow((x, y, width, height) => {\n setTriggerLayout({ x, y, width, height });\n });\n measureOverlayOrigin();\n }}\n style={[\n styles.inputWrapper,\n {\n borderColor,\n backgroundColor: colors.bg,\n borderWidth: isFilled ? 0 : 1,\n },\n isMultiple && styles.inputWrapperMultiple,\n disabled && styles.disabled,\n wrapperOverrides,\n // The themed chips box — last, so it beats the `root` slot's\n // wrapper half. Mirrors web, where `tokenContainer` is applied\n // after the structural width on `pt.container`.\n tokenContainerStyle,\n ]}\n >\n {/* Chips (multiple mode) */}\n {isMultiple && selectedValues.length > 0 && (\n <View style={styles.chipContainer}>\n {selectedValues.map((item, i) =>\n selectedItemTemplate ? (\n <View key={i}>{selectedItemTemplate(item)}</View>\n ) : (\n <View key={i} style={[styles.chip, { backgroundColor: colors.chipBg }, tokenStyle]}>\n <Text style={[styles.chipText, { color: colors.chipText }, tokenLabelStyle]}>\n {resolveLabel(item, field)}\n </Text>\n {!disabled && !readOnly && (\n <Pressable\n onPress={() => removeChip(item, i)}\n hitSlop={{ top: 8, bottom: 8, left: 8, right: 8 }}\n >\n <Text style={[styles.chipRemove, { color: colors.chipRemove }, tokenIconStyle]}>✕</Text>\n </Pressable>\n )}\n </View>\n ),\n )}\n </View>\n )}\n\n {/* Text input */}\n <TextInput\n ref={inputRef}\n editable={!disabled && !readOnly}\n value={query}\n placeholder={placeholder}\n placeholderTextColor={colors.placeholder}\n onChangeText={onTextChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n style={[styles.inputField, { color: colors.text }, fieldOverrides]}\n />\n\n {/* Loading indicator */}\n {loading && (\n <ActivityIndicator\n size=\"small\"\n color={colors.primary}\n style={styles.loadingIndicator}\n />\n )}\n\n {/* Dropdown button */}\n {dropdown && (\n <Pressable\n onPress={onDropdownPress}\n style={styles.dropdownBtn}\n disabled={disabled || readOnly}\n >\n <Text style={{ color: colors.placeholder }}>▾</Text>\n </Pressable>\n )}\n </View>\n\n {/* Suggestions panel — rendered through a same-window Portal\n (gluestack OverlayProvider, mounted app-wide via\n MainContextProvider). The Portal teleports the panel to the app\n root, so it escapes every parent's overflow/hit-area clip and\n taps still reach the suggestion Pressables on Android (the\n reason the old code reached for a <Modal>). Unlike <Modal>, the\n Portal does NOT open a separate native window, so it never blurs\n this TextInput or dismisses the keyboard — fixing the\n per-keystroke flicker at the root instead of papering over it\n with a refocus hack. */}\n <Portal\n isOpen={!!panelGeometry}\n onRequestClose={hidePanel}\n // gluestack's Overlay only sets zIndex on web; on native it relies\n // on render order alone, so on Android the portal layer paints\n // BEHIND navigation screens that carry their own elevation — the\n // panel renders but is invisible (\"no list appears\"). Lift the\n // whole overlay layer above app content with explicit elevation +\n // zIndex (the layer is a direct sibling of the app under the\n // OverlayProvider, so this is the boundary that must win).\n style={{ zIndex: 9999, elevation: 9999 }}\n >\n {/* Zero-size probe pinned to (0,0) of the overlay container. Measuring\n it in window space yields Δ — the offset between window space (what\n the trigger is measured in) and overlay space (what the panel is\n positioned in). Rendered first and unconditionally so it lays out\n as soon as the Portal opens. */}\n <View\n ref={overlayAnchorRef}\n pointerEvents=\"none\"\n style={styles.overlayAnchor}\n onLayout={measureOverlayOrigin}\n />\n {panelGeometry && (\n <Pressable\n style={StyleSheet.absoluteFillObject}\n onPress={() => {\n // Backdrop tap = dismiss the panel and let the keyboard\n // close naturally.\n hidePanel();\n Keyboard.dismiss();\n }}\n >\n <View\n // Claim touches so taps on the panel don't propagate to\n // the backdrop Pressable above.\n onStartShouldSetResponder={() => true}\n onResponderTerminationRequest={() => false}\n onLayout={(e) => {\n if (__DEV__)\n console.log(\"[AC] panel onLayout (rendered)\", e.nativeEvent.layout);\n }}\n style={[\n styles.popoverPanel,\n {\n position: \"absolute\",\n // OVERLAY space (window-space geometry minus the overlay origin).\n top: panelTop,\n left: panelLeft,\n width: panelGeometry.width,\n maxHeight: panelGeometry.maxH,\n borderColor: colors.border,\n backgroundColor: colors.bg,\n borderRadius: panelRadius,\n },\n panelStyle,\n ]}\n >\n {flatData.length > 0 ? (\n <FlatList\n data={flatData}\n keyExtractor={(_, i) => String(i)}\n renderItem={renderItem}\n extraData={selectItem}\n keyboardShouldPersistTaps=\"always\"\n nestedScrollEnabled\n // Explicit maxHeight so virtualization has a viewport.\n // Without an explicit bound, a FlatList nested in an\n // absolute-positioned View can render zero rows because\n // it can't determine its scroll viewport.\n style={{ maxHeight: panelGeometry.maxH }}\n getItemLayout={\n virtualScrollerOptions\n ? (_, index) => ({\n length: virtualScrollerOptions.itemSize,\n offset: virtualScrollerOptions.itemSize * index,\n index,\n })\n : undefined\n }\n />\n ) : (\n // Empty state uses the same row layout as a real option\n // so forceSelection + \"no matches\" still feels like a\n // list — just with a single non-tappable \"no results\"\n // row. The text is driven by the `emptyMessage` prop so\n // consumers can pass a translated string.\n <View style={[styles.option, styles.emptyRow]}>\n <Text style={[styles.optionText, { color: colors.emptyText }]}>\n {emptyMessage}\n </Text>\n </View>\n )}\n {panelFooterTemplate?.()}\n </View>\n </Pressable>\n )}\n </Portal>\n </View>\n );\n}\n\n/* ─── Styles ─────────────────────────────────────────── */\n\nconst styles = StyleSheet.create({\n container: {\n width: \"100%\",\n position: \"relative\",\n },\n inputWrapper: {\n flexDirection: \"row\",\n alignItems: \"center\",\n borderRadius: 6,\n paddingHorizontal: 8,\n minHeight: 42,\n },\n inputWrapperMultiple: {\n flexWrap: \"wrap\",\n paddingVertical: 4,\n },\n disabled: {\n opacity: 0.5,\n },\n inputField: {\n flex: 1,\n fontSize: 14,\n paddingVertical: 8,\n minWidth: 80,\n },\n loadingIndicator: {\n marginRight: 8,\n },\n dropdownBtn: {\n paddingHorizontal: 8,\n paddingVertical: 4,\n },\n chipContainer: {\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n gap: 4,\n marginRight: 4,\n },\n chip: {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingLeft: 10,\n paddingRight: 6,\n paddingVertical: 3,\n borderRadius: 16,\n gap: 4,\n },\n chipText: {\n fontSize: 13,\n },\n chipRemove: {\n fontSize: 12,\n paddingHorizontal: 2,\n },\n // Zero-size, non-interactive probe at the overlay container's origin.\n overlayAnchor: {\n position: \"absolute\",\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n },\n popoverPanel: {\n position: \"absolute\",\n borderWidth: 1,\n borderRadius: 6,\n overflow: \"hidden\",\n elevation: 8,\n shadowColor: \"#000\",\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.15,\n shadowRadius: 8,\n // Sit above the trigger and any later siblings.\n zIndex: 10000,\n },\n option: {\n paddingHorizontal: 12,\n paddingVertical: 10,\n },\n optionText: {\n fontSize: 14,\n },\n groupLabel: {\n paddingHorizontal: 12,\n paddingVertical: 8,\n },\n groupLabelText: {\n fontSize: 12,\n fontWeight: \"700\",\n textTransform: \"uppercase\",\n letterSpacing: 0.5,\n },\n emptyRow: {\n // Same row metrics as `option` (padding inherited) — only the text\n // colour differs (set inline as colors.emptyText) so the empty state\n // visually matches a real list row.\n },\n});\n"],"names":["resolveThemeTokenForNative","useRef","useState","useCallback","useMemo","useEffect","Platform","Keyboard","jsx","Fragment","View","Text","Pressable","Dimensions","jsxs","TextInput","ActivityIndicator","Portal","StyleSheet","FlatList"],"mappings":"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"}
@@ -78,6 +78,10 @@ function AutoComplete({
78
78
  style,
79
79
  inputStyle,
80
80
  panelStyle,
81
+ tokenContainerStyle,
82
+ tokenStyle,
83
+ tokenLabelStyle,
84
+ tokenIconStyle,
81
85
  testID
82
86
  }) {
83
87
  const inputRef = useRef(null);
@@ -432,18 +436,22 @@ function AutoComplete({
432
436
  },
433
437
  isMultiple && styles.inputWrapperMultiple,
434
438
  disabled && styles.disabled,
435
- wrapperOverrides
439
+ wrapperOverrides,
440
+ // The themed chips box — last, so it beats the `root` slot's
441
+ // wrapper half. Mirrors web, where `tokenContainer` is applied
442
+ // after the structural width on `pt.container`.
443
+ tokenContainerStyle
436
444
  ],
437
445
  children: [
438
446
  isMultiple && selectedValues.length > 0 && /* @__PURE__ */ jsx(View, { style: styles.chipContainer, children: selectedValues.map(
439
- (item, i) => selectedItemTemplate ? /* @__PURE__ */ jsx(View, { children: selectedItemTemplate(item) }, i) : /* @__PURE__ */ jsxs(View, { style: [styles.chip, { backgroundColor: colors.chipBg }], children: [
440
- /* @__PURE__ */ jsx(Text, { style: [styles.chipText, { color: colors.chipText }], children: resolveLabel(item, field) }),
447
+ (item, i) => selectedItemTemplate ? /* @__PURE__ */ jsx(View, { children: selectedItemTemplate(item) }, i) : /* @__PURE__ */ jsxs(View, { style: [styles.chip, { backgroundColor: colors.chipBg }, tokenStyle], children: [
448
+ /* @__PURE__ */ jsx(Text, { style: [styles.chipText, { color: colors.chipText }, tokenLabelStyle], children: resolveLabel(item, field) }),
441
449
  !disabled && !readOnly && /* @__PURE__ */ jsx(
442
450
  Pressable,
443
451
  {
444
452
  onPress: () => removeChip(item, i),
445
453
  hitSlop: { top: 8, bottom: 8, left: 8, right: 8 },
446
- children: /* @__PURE__ */ jsx(Text, { style: [styles.chipRemove, { color: colors.chipRemove }], children: "\u2715" })
454
+ children: /* @__PURE__ */ jsx(Text, { style: [styles.chipRemove, { color: colors.chipRemove }, tokenIconStyle], children: "\u2715" })
447
455
  }
448
456
  )
449
457
  ] }, i)