@cloudscape-design/components 3.0.1291 → 3.0.1293

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 (61) hide show
  1. package/app-layout/visual-refresh-toolbar/state/use-feature-notifications.d.ts.map +1 -1
  2. package/app-layout/visual-refresh-toolbar/state/use-feature-notifications.js +1 -4
  3. package/app-layout/visual-refresh-toolbar/state/use-feature-notifications.js.map +1 -1
  4. package/autosuggest/interfaces.d.ts +2 -1
  5. package/autosuggest/interfaces.d.ts.map +1 -1
  6. package/autosuggest/interfaces.js.map +1 -1
  7. package/date-range-picker/styles.css.js +23 -23
  8. package/date-range-picker/styles.scoped.css +34 -32
  9. package/date-range-picker/styles.selectors.js +23 -23
  10. package/file-token-group/styles.css.js +23 -23
  11. package/file-token-group/styles.scoped.css +34 -34
  12. package/file-token-group/styles.selectors.js +23 -23
  13. package/icon/generated/icons.d.ts +1 -0
  14. package/icon/generated/icons.d.ts.map +1 -1
  15. package/icon/generated/icons.js +3 -0
  16. package/icon/generated/icons.js.map +1 -1
  17. package/icon-provider/interfaces.d.ts +1 -1
  18. package/icon-provider/interfaces.d.ts.map +1 -1
  19. package/icon-provider/interfaces.js.map +1 -1
  20. package/internal/base-component/styles.scoped.css +1 -1
  21. package/internal/components/button-trigger/styles.css.js +14 -14
  22. package/internal/components/button-trigger/styles.scoped.css +32 -28
  23. package/internal/components/button-trigger/styles.selectors.js +14 -14
  24. package/internal/environment.js +2 -2
  25. package/internal/environment.json +2 -2
  26. package/internal/generated/theming/index.cjs +7 -0
  27. package/internal/generated/theming/index.cjs.d.ts +27 -0
  28. package/internal/generated/theming/index.d.ts +27 -0
  29. package/internal/generated/theming/index.js +7 -0
  30. package/internal/hooks/use-ime-composition/index.d.ts +20 -1
  31. package/internal/hooks/use-ime-composition/index.d.ts.map +1 -1
  32. package/internal/hooks/use-ime-composition/index.js +15 -2
  33. package/internal/hooks/use-ime-composition/index.js.map +1 -1
  34. package/internal/manifest.json +1 -1
  35. package/multiselect/interfaces.d.ts +3 -0
  36. package/multiselect/interfaces.d.ts.map +1 -1
  37. package/multiselect/interfaces.js.map +1 -1
  38. package/package.json +1 -1
  39. package/prompt-input/core/event-handlers.d.ts +2 -0
  40. package/prompt-input/core/event-handlers.d.ts.map +1 -1
  41. package/prompt-input/core/event-handlers.js +4 -2
  42. package/prompt-input/core/event-handlers.js.map +1 -1
  43. package/prompt-input/internal.js +1 -1
  44. package/prompt-input/internal.js.map +1 -1
  45. package/prompt-input/styles.css.js +26 -26
  46. package/prompt-input/styles.scoped.css +61 -62
  47. package/prompt-input/styles.selectors.js +26 -26
  48. package/prompt-input/tokens/use-token-mode.d.ts.map +1 -1
  49. package/prompt-input/tokens/use-token-mode.js +37 -2
  50. package/prompt-input/tokens/use-token-mode.js.map +1 -1
  51. package/property-filter/use-load-items.d.ts +2 -1
  52. package/property-filter/use-load-items.d.ts.map +1 -1
  53. package/select/interfaces.d.ts +2 -1
  54. package/select/interfaces.d.ts.map +1 -1
  55. package/select/interfaces.js.map +1 -1
  56. package/select/parts/styles.css.js +20 -20
  57. package/select/parts/styles.scoped.css +23 -21
  58. package/select/parts/styles.selectors.js +20 -20
  59. package/token/styles.css.js +14 -14
  60. package/token/styles.scoped.css +28 -30
  61. package/token/styles.selectors.js +14 -14
@@ -1 +1 @@
1
- {"version":3,"file":"use-token-mode.js","sourceRoot":"","sources":["../../../../src/prompt-input/tokens/use-token-mode.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React, { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport clsx from 'clsx';\n\nimport { useStableCallback, useUniqueId } from '@cloudscape-design/component-toolkit/internal';\n\nimport { useDropdownStatus } from '../../internal/components/dropdown-status';\nimport { fireKeyboardEvent, fireNonCancelableEvent } from '../../internal/events';\nimport { getFirstScrollableParent } from '../../internal/utils/scrollable-containers';\nimport Token from '../../token/internal';\nimport { calculateTokenPosition, CaretController, getOwnerSelection } from '../core/caret-controller';\nimport { extractTextFromCaretSpots } from '../core/caret-spot-utils';\nimport {\n findContainingReference,\n getMouseDown,\n isNonTypeablePosition,\n normalizeCollapsedCaret,\n normalizeSelection,\n setMouseDown,\n} from '../core/caret-utils';\nimport { NEXT_TICK_TIMEOUT } from '../core/constants';\nimport { createParagraph, findAllParagraphs } from '../core/dom-utils';\nimport { handleClipboardEvent, handleEditableKeyDown } from '../core/event-handlers';\nimport {\n handleMenuSelection,\n MenuItem,\n MenuItemsHandlers,\n MenuItemsState,\n useMenuItems,\n useMenuLoadMore,\n} from '../core/menu-state';\nimport { extractTokensFromDOM, getPromptText, processTokens } from '../core/token-operations';\nimport { PortalContainer, renderTokensToDOM } from '../core/token-renderer';\nimport {\n enforcePinnedTokenOrdering,\n getCaretPositionAfterPinnedReorder,\n getCaretPositionAfterTokenRemoval,\n mergeConsecutiveTextTokens,\n} from '../core/token-utils';\nimport { detectTriggerTransition } from '../core/trigger-utils';\nimport { isReferenceToken, isTextNode, isTextToken, isTriggerToken } from '../core/type-guards';\nimport { PromptInputProps } from '../interfaces';\nimport { insertTextIntoContentEditable } from '../utils/insert-text-content-editable';\nimport { ShortcutsState, useShortcutsEffects, useShortcutsState } from './use-shortcuts';\n\nimport styles from '../styles.css.js';\nimport testutilStyles from '../test-classes/styles.css.js';\n\n/** Mutable state shared between the editable tokens hook and event handlers. */\nexport interface EditableState {\n skipNextZeroWidthUpdate: boolean;\n menuSelectionTokenId: string | null;\n}\n\nexport function createEditableState(): EditableState {\n return {\n skipNextZeroWidthUpdate: false,\n menuSelectionTokenId: null,\n };\n}\n\n/**\n * Determines if the token array changed structurally and needs a full DOM re-render.\n *\n * Compares token types, IDs, and text values. During normal typing the extracted\n * tokens already match the DOM, so text comparisons won't trigger unnecessary\n * re-renders. External updates (parent replacing tokens) will be detected by\n * the value difference and trigger a re-render.\n *\n * Returns 'none' if no changes, 'text-only' if only token values differ\n * (same count, types, and IDs — covers both text and trigger filter changes),\n * or 'structural' for any other change.\n */\nfunction classifyChange(\n oldTokens: readonly PromptInputProps.InputToken[] | undefined,\n newTokens: readonly PromptInputProps.InputToken[] | undefined\n): 'none' | 'text-only' | 'structural' {\n if (!oldTokens || !newTokens) {\n return 'structural';\n }\n\n if (oldTokens.length !== newTokens.length) {\n return 'structural';\n }\n\n let hasTextDiff = false;\n\n for (let i = 0; i < oldTokens.length; i++) {\n const oldToken = oldTokens[i];\n const newToken = newTokens[i];\n\n if (oldToken.type !== newToken.type) {\n return 'structural';\n }\n\n if (isReferenceToken(oldToken) && isReferenceToken(newToken)) {\n if (oldToken.id !== newToken.id) {\n return 'structural';\n }\n }\n\n if (isTriggerToken(oldToken) && isTriggerToken(newToken)) {\n if (oldToken.id !== newToken.id) {\n return 'structural';\n }\n // Transition between empty and non-empty filter text changes the underline styling.\n const wasEmpty = oldToken.value.length === 0;\n const isEmpty = newToken.value.length === 0;\n if (wasEmpty !== isEmpty) {\n return 'structural';\n }\n if (oldToken.value !== newToken.value) {\n hasTextDiff = true;\n }\n }\n\n if (isTextToken(oldToken) && isTextToken(newToken)) {\n if (oldToken.value !== newToken.value) {\n hasTextDiff = true;\n }\n }\n }\n\n return hasTextDiff ? 'text-only' : 'none';\n}\n\n/**\n * Positions the caret after a menu-selected reference token.\n * Returns true if the caret was positioned (token found), false otherwise.\n */\nfunction positionCaretAfterMenuSelection(\n tokens: readonly PromptInputProps.InputToken[],\n editableState: EditableState,\n caretController: CaretController | null\n): boolean {\n if (!editableState.menuSelectionTokenId || !caretController) {\n return false;\n }\n\n const insertedTokenIndex = tokens.findIndex(t => isReferenceToken(t) && t.id === editableState.menuSelectionTokenId);\n\n if (insertedTokenIndex === -1) {\n return false;\n }\n\n const caretPos = calculateTokenPosition(tokens, insertedTokenIndex);\n caretController.setPosition(caretPos);\n editableState.menuSelectionTokenId = null;\n return true;\n}\n\n/** Finds a trigger token by its ID in the token array. */\nfunction findTriggerTokenById(\n tokens: readonly PromptInputProps.InputToken[],\n triggerId: string\n): PromptInputProps.TriggerToken | null {\n const trigger = tokens.find(token => isTriggerToken(token) && token.id === triggerId);\n if (trigger && isTriggerToken(trigger)) {\n return trigger;\n }\n return null;\n}\n\n/** Configuration for the useTokenMode hook — all props needed to drive token-mode behavior. */\nexport interface UseTokenModeConfig {\n editableElementRef: React.RefObject<HTMLDivElement>;\n caretControllerRef: React.MutableRefObject<CaretController | null>;\n\n tokens?: readonly PromptInputProps.InputToken[];\n tokensToText?: (tokens: readonly PromptInputProps.InputToken[]) => string;\n menus?: readonly PromptInputProps.MenuDefinition[];\n disabled?: boolean;\n readOnly?: boolean;\n autoFocus?: boolean;\n placeholder?: string;\n invalid?: boolean;\n warning?: boolean;\n ariaLabel?: string;\n ariaLabelledby?: string;\n ariaDescribedby?: string;\n ariaRequired?: boolean;\n disableBrowserAutocorrect?: boolean;\n spellcheck?: boolean;\n\n onChange: (detail: { value: string; tokens: PromptInputProps.InputToken[] }) => void;\n onTriggerDetected?: (detail: PromptInputProps.TriggerDetectedDetail) => boolean;\n onAction?: PromptInputProps['onAction'];\n onBlur?: PromptInputProps['onBlur'];\n onFocus?: PromptInputProps['onFocus'];\n onKeyDown?: PromptInputProps['onKeyDown'];\n onKeyUp?: PromptInputProps['onKeyUp'];\n onMenuItemSelect?: PromptInputProps['onMenuItemSelect'];\n onMenuFilter?: PromptInputProps['onMenuFilter'];\n onMenuLoadItems?: PromptInputProps['onMenuLoadItems'];\n\n i18nStrings?: PromptInputProps['i18nStrings'];\n\n adjustInputHeight: () => void;\n}\n\n/** Return value of useTokenMode — state, handlers, and attributes consumed by TokenMode component. */\nexport interface UseTokenModeResult {\n portalContainersRef: React.MutableRefObject<Map<string, PortalContainer>>;\n /** Snapshot of portal containers for rendering portals. Updated after each renderTokensToDOM call. */\n portalContainers: PortalContainer[];\n /** Portal elements to render — renders Token components into DOM containers via createPortal. */\n portals: React.ReactPortal[];\n\n editableState: EditableState;\n\n editableElementAttributes: React.HTMLAttributes<HTMLDivElement> & { 'data-placeholder'?: string };\n\n activeTriggerToken: PromptInputProps.TriggerToken | null;\n activeMenu: PromptInputProps.MenuDefinition | null;\n menuIsOpen: boolean;\n menuFilterText: string;\n triggerWrapperRef: React.MutableRefObject<HTMLElement | null>;\n triggerWrapperReady: boolean;\n\n menuListId: string;\n menuFooterControlId: string;\n highlightedMenuOptionId: string | undefined;\n menuItemsState: MenuItemsState;\n menuItemsHandlers: MenuItemsHandlers;\n menuDropdownStatus: ReturnType<typeof useDropdownStatus> | null;\n shouldRenderMenuDropdown: boolean;\n\n handleInput: () => void;\n\n handleLoadMore: () => void;\n\n tokenOperationAnnouncement: string;\n\n markTokensAsSent: (tokens: readonly PromptInputProps.InputToken[]) => void;\n}\n\ninterface ProcessorConfig {\n tokens?: readonly PromptInputProps.InputToken[];\n menus?: readonly PromptInputProps.MenuDefinition[];\n tokensToText?: (tokens: readonly PromptInputProps.InputToken[]) => string;\n onChange: (detail: { value: string; tokens: PromptInputProps.InputToken[] }) => void;\n onTriggerDetected?: (detail: PromptInputProps.TriggerDetectedDetail) => boolean;\n state: ShortcutsState;\n}\n\n/**\n * Processes token changes from both user input and external (parent) updates.\n *\n * For user input: runs trigger detection on extracted DOM tokens and emits\n * the processed result via onChange.\n *\n * For external updates: detects if the parent provided new tokens that need\n * trigger detection or ID assignment, and emits corrected tokens if so.\n * Skips processing when the tokens reference matches what we last emitted\n * (for example, the parent is echoing back our own onChange).\n */\nfunction useTokenProcessor(config: ProcessorConfig) {\n const { tokens, menus, tokensToText, onChange, onTriggerDetected, state } = config;\n\n const emitTokenChange = useStableCallback((newTokens: PromptInputProps.InputToken[]) => {\n const value = tokensToText ? tokensToText(newTokens) : getPromptText(newTokens);\n state.markTokensAsSent(newTokens);\n onChange({ value, tokens: newTokens });\n });\n\n const markCancelledTriggers = useStableCallback((cancelledIds: Set<string>) => {\n for (const id of cancelledIds) {\n state.cancelledTriggerIds.current.add(id);\n // Prevent opening the menu if the active trigger was cancelled\n if (state.caretInTrigger === id) {\n state.setCaretInTrigger(null);\n }\n }\n });\n\n /** Processes tokens extracted from the DOM after user input. */\n const processUserInput = useStableCallback((inputTokens: PromptInputProps.InputToken[]) => {\n const { tokens: processed, cancelledIds } = processTokens(\n inputTokens,\n { menus, tokensToText },\n {\n source: 'user-input',\n detectTriggers: true,\n },\n onTriggerDetected,\n state.cancelledTriggerIds.current\n );\n\n markCancelledTriggers(cancelledIds);\n emitTokenChange(processed);\n });\n\n /** Processes external token updates from the parent component. */\n useEffect(() => {\n // Skip if these are the tokens we just emitted — the parent is echoing back our onChange\n if (state.lastEmittedTokensRef.current === tokens) {\n return;\n }\n\n if (!tokens) {\n return;\n }\n\n const { tokens: processed, cancelledIds } = processTokens(\n tokens,\n { menus, tokensToText },\n {\n source: 'external',\n detectTriggers: true,\n },\n undefined,\n state.cancelledTriggerIds.current\n );\n\n markCancelledTriggers(cancelledIds);\n\n // Only emit if processing actually changed the tokens (e.g., new triggers detected,\n // IDs assigned). Compare by type, value, and ID to avoid false positives from\n // reference inequality after processTokens creates new token objects.\n const hasChanges =\n processed.length !== tokens.length ||\n processed.some((t, i) => {\n const orig = tokens[i];\n if (t.type !== orig.type || t.value !== orig.value) {\n return true;\n }\n if (isReferenceToken(t) && isReferenceToken(orig) && t.id !== orig.id) {\n return true;\n }\n if (isTriggerToken(t) && isTriggerToken(orig) && t.id !== orig.id) {\n return true;\n }\n return false;\n });\n\n if (hasChanges) {\n emitTokenChange(processed);\n } else {\n // Mark as seen even when no changes — prevents re-processing on next render\n state.lastEmittedTokensRef.current = tokens;\n }\n }, [tokens, menus, tokensToText, state, emitTokenChange, markCancelledTriggers]);\n\n return {\n processUserInput,\n };\n}\n\n/** Encapsulates all token-mode logic: trigger detection, menu state, keyboard handling, and rendering. */\nexport function useTokenMode(config: UseTokenModeConfig): UseTokenModeResult {\n const {\n editableElementRef,\n caretControllerRef,\n tokens,\n tokensToText,\n menus,\n disabled,\n readOnly,\n autoFocus,\n placeholder,\n invalid,\n warning,\n ariaLabel,\n ariaLabelledby,\n ariaDescribedby,\n ariaRequired,\n disableBrowserAutocorrect,\n spellcheck,\n onChange,\n onTriggerDetected,\n onAction,\n onBlur,\n onFocus,\n onKeyDown,\n onKeyUp,\n onMenuItemSelect,\n onMenuFilter,\n onMenuLoadItems,\n i18nStrings,\n adjustInputHeight,\n } = config;\n\n const shortcutsState = useShortcutsState();\n\n const { markTokensAsSent } = shortcutsState;\n\n const activeTriggerToken = useMemo((): PromptInputProps.TriggerToken | null => {\n if (!tokens || !caretControllerRef.current) {\n return null;\n }\n\n const activeTriggerID = caretControllerRef.current.findActiveTrigger()?.id || null;\n\n if (!activeTriggerID) {\n return null;\n }\n\n if (shortcutsState.cancelledTriggerIds.current.has(activeTriggerID)) {\n return null;\n }\n\n return findTriggerTokenById(tokens, activeTriggerID);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- caretInTrigger is the invalidation signal from useShortcutsEffects\n }, [tokens, caretControllerRef, shortcutsState.caretInTrigger]);\n\n const activeMenu = useMemo(\n () =>\n activeTriggerToken && shortcutsState.caretInTrigger && !disabled && !readOnly\n ? (menus?.find(m => m.trigger === activeTriggerToken.triggerChar) ?? null)\n : null,\n [activeTriggerToken, shortcutsState.caretInTrigger, menus, disabled, readOnly]\n );\n\n const menuIsOpen = !!activeMenu;\n const menuFilterText = activeTriggerToken?.value ?? '';\n\n const processor = useTokenProcessor({\n tokens,\n menus,\n tokensToText,\n onChange,\n onTriggerDetected,\n state: shortcutsState,\n });\n\n const { processUserInput } = processor;\n\n useShortcutsEffects({\n tokens,\n editableElementRef,\n state: shortcutsState,\n activeTriggerToken,\n caretController: caretControllerRef,\n });\n\n const triggerWrapperRef = useRef<HTMLElement | null>(null);\n const [triggerVisible, setTriggerVisible] = useState(true);\n\n // Resolve the trigger DOM element synchronously during render from the tracked map.\n // The Dropdown's contentKey (which includes activeTriggerToken.id) handles\n // repositioning when the active trigger changes — no open/close toggle needed.\n if (activeTriggerToken?.id && menuIsOpen) {\n triggerWrapperRef.current = shortcutsState.triggerElementsRef.current.get(activeTriggerToken.id) ?? null;\n } else {\n triggerWrapperRef.current = null;\n }\n\n const triggerWrapperReady = !!triggerWrapperRef.current && menuIsOpen;\n\n // Hide menu dropdown when trigger scrolls out of the editable container\n useEffect(() => {\n if (!menuIsOpen || !triggerWrapperRef.current || !editableElementRef.current) {\n setTriggerVisible(true);\n return;\n }\n\n const trigger = triggerWrapperRef.current;\n const container = editableElementRef.current;\n\n const checkTriggerVisibility = () => {\n const triggerRect = trigger.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n\n const isOutOfView = triggerRect.bottom < containerRect.top || triggerRect.top > containerRect.bottom;\n setTriggerVisible(!isOutOfView);\n };\n\n checkTriggerVisibility();\n\n container.addEventListener('scroll', checkTriggerVisibility);\n\n const scrollableParent = getFirstScrollableParent(container);\n if (scrollableParent) {\n scrollableParent.addEventListener('scroll', checkTriggerVisibility);\n }\n\n return () => {\n container.removeEventListener('scroll', checkTriggerVisibility);\n if (scrollableParent) {\n scrollableParent.removeEventListener('scroll', checkTriggerVisibility);\n }\n };\n }, [menuIsOpen, editableElementRef, activeTriggerToken]);\n\n const portalContainersRef = useRef<Map<string, PortalContainer>>(new Map());\n const [portalContainers, setPortalContainers] = useState<PortalContainer[]>([]);\n\n const renderTokens = useCallback(\n (tokens: readonly PromptInputProps.InputToken[], target: HTMLElement) => {\n const result = renderTokensToDOM(\n tokens,\n target,\n portalContainersRef.current,\n shortcutsState.triggerElementsRef.current,\n shortcutsState.cancelledTriggerIds.current\n );\n\n // Update trigger element map from render result\n shortcutsState.triggerElementsRef.current = new Map(result.triggerElements);\n\n setPortalContainers(Array.from(portalContainersRef.current.values()));\n return result;\n },\n [shortcutsState.triggerElementsRef, shortcutsState.cancelledTriggerIds, portalContainersRef]\n );\n\n useLayoutEffect(() => {\n if (editableElementRef.current && !caretControllerRef.current) {\n caretControllerRef.current = new CaretController(editableElementRef.current);\n }\n }, [editableElementRef, caretControllerRef]);\n\n const editableState = useRef(createEditableState()).current;\n\n const [tokenOperationAnnouncement, setTokenOperationAnnouncement] = useState<string>('');\n\n const announceTokenOperation = useStableCallback((message: string) => {\n setTokenOperationAnnouncement(message);\n });\n\n const lastRenderedTokensRef = useRef<readonly PromptInputProps.InputToken[] | undefined>(undefined);\n const lastDisabledRef = useRef(disabled);\n const lastReadOnlyRef = useRef(readOnly);\n\n // Refs to avoid recreating handleInput when these change (new array reference each render).\n const menusRef = useRef(menus);\n menusRef.current = menus;\n\n const handleInput = useCallback(() => {\n if (!editableElementRef.current) {\n return;\n }\n\n const ownerDoc = editableElementRef.current.ownerDocument ?? document;\n const cc = caretControllerRef.current;\n\n if (cc) {\n cc.capture();\n }\n\n if (editableState.skipNextZeroWidthUpdate) {\n editableState.skipNextZeroWidthUpdate = false;\n }\n\n const { movedTextNode } = extractTextFromCaretSpots(portalContainersRef.current, true);\n\n // Extract filter text from cancelled triggers, moving it to the paragraph level\n for (const id of shortcutsState.cancelledTriggerIds.current) {\n const trigger =\n shortcutsState.triggerElementsRef.current.get(id) ??\n (editableElementRef.current.querySelector(`#${CSS.escape(id)}`) as HTMLElement | null);\n if (!trigger) {\n continue;\n }\n const filterText = (trigger.textContent || '').substring(1);\n if (!filterText) {\n continue;\n }\n\n let caretInTrigger = false;\n const selection = editableElementRef.current ? getOwnerSelection(editableElementRef.current) : null;\n if (selection?.rangeCount && trigger.contains(selection.getRangeAt(0).startContainer)) {\n caretInTrigger = true;\n }\n\n const textNode = ownerDoc.createTextNode(filterText);\n trigger.parentNode?.insertBefore(textNode, trigger.nextSibling);\n trigger.textContent = (trigger.textContent || '').charAt(0);\n\n if (caretInTrigger && !movedTextNode) {\n if (cc) {\n cc.positionAfterText(textNode);\n }\n }\n }\n\n if (movedTextNode && cc) {\n cc.positionAfterText(movedTextNode);\n }\n\n const directTextNodes = Array.from(editableElementRef.current.childNodes).filter(\n node => isTextNode(node) && node.textContent?.trim()\n );\n\n if (directTextNodes.length > 0) {\n if (cc) {\n cc.capture();\n }\n\n let targetP = findAllParagraphs(editableElementRef.current)[0];\n if (!targetP) {\n targetP = createParagraph();\n editableElementRef.current.appendChild(targetP);\n }\n\n directTextNodes.forEach(textNode => {\n targetP!.appendChild(textNode);\n });\n\n if (cc) {\n cc.restore();\n }\n }\n\n let extractedTokens = extractTokensFromDOM(\n editableElementRef.current,\n menusRef.current,\n portalContainersRef.current\n );\n\n // When a new trigger appears in the DOM, render immediately to ensure the\n // trigger element exists before subsequent caret operations.\n const newTriggers = extractedTokens.filter(isTriggerToken);\n const existingTriggerIds = new Set(shortcutsState.triggerElementsRef.current.keys());\n if (newTriggers.some(t => !existingTriggerIds.has(t.id))) {\n renderTokens(extractedTokens, editableElementRef.current);\n }\n\n const movedTokens = enforcePinnedTokenOrdering(extractedTokens);\n const tokensWereMoved = movedTokens.some((t, i) => t !== extractedTokens[i]);\n\n const mergedTokens = mergeConsecutiveTextTokens(movedTokens);\n\n if (tokensWereMoved) {\n const caretPosBeforeMove = cc?.getPosition() ?? 0;\n const adjustedPosition = getCaretPositionAfterPinnedReorder(extractedTokens, mergedTokens, caretPosBeforeMove);\n\n extractedTokens = mergedTokens;\n\n renderTokens(mergedTokens, editableElementRef.current);\n\n if (editableElementRef.current && ownerDoc.activeElement === editableElementRef.current && cc) {\n cc.setPosition(adjustedPosition);\n }\n }\n\n processUserInput(extractedTokens);\n\n adjustInputHeight();\n }, [\n processUserInput,\n adjustInputHeight,\n editableElementRef,\n caretControllerRef,\n portalContainersRef,\n editableState,\n renderTokens,\n shortcutsState.triggerElementsRef,\n shortcutsState.cancelledTriggerIds,\n ]);\n\n // Token render effect\n useLayoutEffect(() => {\n if (!editableElementRef.current) {\n return;\n }\n\n const cc = caretControllerRef.current;\n const orderedTokens = tokens ? enforcePinnedTokenOrdering(tokens) : tokens;\n const prevOrderedTokens = lastRenderedTokensRef.current;\n\n const stateChanged = lastDisabledRef.current !== disabled || lastReadOnlyRef.current !== readOnly;\n lastDisabledRef.current = disabled;\n lastReadOnlyRef.current = readOnly;\n\n const triggerTransition = detectTriggerTransition(lastRenderedTokensRef.current, orderedTokens);\n\n const changeType = classifyChange(lastRenderedTokensRef.current, orderedTokens);\n const needsRerender = stateChanged || changeType !== 'none' || triggerTransition > 0;\n\n if (!needsRerender) {\n positionCaretAfterMenuSelection(orderedTokens ?? [], editableState, cc);\n\n lastRenderedTokensRef.current = orderedTokens;\n return;\n }\n\n // Text-only changes from user input are already reflected in the DOM by the\n // browser's native editing. Skip re-render to preserve cursor position —\n // Text-only changes from user input are already reflected in the DOM by the\n // browser's native editing. Skip re-render to preserve cursor position —\n // re-rendering would read a corrupted position from normalizeCaretIntoTrigger.\n // External updates still need a re-render.\n if (\n changeType === 'text-only' &&\n !stateChanged &&\n triggerTransition === 0 &&\n shortcutsState.lastEmittedTokensRef.current === tokens\n ) {\n lastRenderedTokensRef.current = orderedTokens;\n return;\n }\n\n if (triggerTransition > 0 && orderedTokens && cc) {\n renderTokens(orderedTokens, editableElementRef.current);\n lastRenderedTokensRef.current = orderedTokens;\n cc.setPosition(triggerTransition);\n adjustInputHeight();\n return;\n }\n\n // A new trigger appeared (e.g. user typed a trigger char, possibly replacing a selection).\n // Position the caret after the trigger character so the user can start typing a filter.\n const newTrigger =\n orderedTokens &&\n prevOrderedTokens &&\n orderedTokens.find(t => isTriggerToken(t) && !prevOrderedTokens.some(p => isTriggerToken(p) && p.id === t.id));\n if (newTrigger && isTriggerToken(newTrigger) && cc) {\n renderTokens(orderedTokens, editableElementRef.current);\n lastRenderedTokensRef.current = orderedTokens;\n // Use the saved position from insertText if available, otherwise position after the trigger char\n const savedPos = cc.getSavedPosition();\n if (savedPos !== null) {\n cc.setPosition(savedPos);\n } else {\n const triggerIndex = orderedTokens.indexOf(newTrigger);\n const posBeforeTrigger = triggerIndex > 0 ? calculateTokenPosition(orderedTokens, triggerIndex - 1) : 0;\n cc.setPosition(posBeforeTrigger + newTrigger.triggerChar.length);\n }\n adjustInputHeight();\n return;\n }\n\n if (\n lastRenderedTokensRef.current &&\n orderedTokens &&\n lastRenderedTokensRef.current.length === 0 &&\n orderedTokens.length === 0\n ) {\n lastRenderedTokensRef.current = orderedTokens;\n return;\n }\n\n if (editableState.menuSelectionTokenId && cc) {\n const insertedTokenIndex = (orderedTokens ?? []).findIndex(\n t => isReferenceToken(t) && t.id === editableState.menuSelectionTokenId\n );\n\n if (insertedTokenIndex !== -1) {\n renderTokens(orderedTokens ?? [], editableElementRef.current);\n positionCaretAfterMenuSelection(orderedTokens ?? [], editableState, cc);\n\n lastRenderedTokensRef.current = orderedTokens;\n adjustInputHeight();\n return;\n }\n }\n\n lastRenderedTokensRef.current = orderedTokens;\n\n if (cc) {\n cc.capture();\n }\n\n renderTokens(orderedTokens ?? [], editableElementRef.current);\n\n if (positionCaretAfterMenuSelection(orderedTokens ?? [], editableState, cc)) {\n adjustInputHeight();\n return;\n }\n\n if (cc) {\n const savedPosition = cc.getSavedPosition();\n const restoredPosition = getCaretPositionAfterTokenRemoval(\n savedPosition,\n prevOrderedTokens ?? [],\n orderedTokens ?? []\n );\n\n if (restoredPosition !== null) {\n cc.setPosition(restoredPosition);\n } else {\n cc.restore();\n }\n }\n\n adjustInputHeight();\n }, [\n disabled,\n readOnly,\n tokens,\n adjustInputHeight,\n caretControllerRef,\n editableElementRef,\n portalContainersRef,\n editableState,\n renderTokens,\n shortcutsState,\n ]);\n\n useEffect(() => {\n const handleSelectionChange = () => {\n const sel = editableElementRef.current ? getOwnerSelection(editableElementRef.current) : null;\n if (!sel?.rangeCount || !editableElementRef.current?.contains(sel.getRangeAt(0).startContainer)) {\n return;\n }\n // Skip caret normalization during mousedown — the user may be starting a\n // drag selection from a caret-spot position adjacent to a reference.\n if (!getMouseDown()) {\n normalizeCollapsedCaret(sel);\n }\n normalizeSelection(sel);\n };\n const handleMouseDown = () => {\n setMouseDown(true);\n };\n const handleMouseUp = () => {\n setMouseDown(false);\n const sel = editableElementRef.current ? getOwnerSelection(editableElementRef.current) : null;\n if (!sel?.rangeCount || !editableElementRef.current?.contains(sel.getRangeAt(0).startContainer)) {\n return;\n }\n normalizeCollapsedCaret(sel);\n normalizeSelection(sel);\n\n // Deferred re-check: browsers may finalize caret position after mouseup\n /* istanbul ignore next -- browser mouseup normalization covered by integ tests */\n requestAnimationFrame(() => {\n const sel = editableElementRef.current ? getOwnerSelection(editableElementRef.current) : null;\n if (!sel?.rangeCount) {\n return;\n }\n\n const range = sel.getRangeAt(0);\n if (!range.collapsed) {\n const startBad = isNonTypeablePosition(range.startContainer);\n const endBad = isNonTypeablePosition(range.endContainer);\n\n if (startBad) {\n const ref = findContainingReference(range.startContainer);\n if (ref?.parentNode) {\n const index = Array.from(ref.parentNode.childNodes).indexOf(ref as ChildNode);\n range.setStart(ref.parentNode, index);\n }\n }\n if (endBad) {\n const ref = findContainingReference(range.endContainer);\n if (ref?.parentNode) {\n const index = Array.from(ref.parentNode.childNodes).indexOf(ref as ChildNode);\n range.setEnd(ref.parentNode, index + 1);\n }\n }\n }\n\n normalizeCollapsedCaret(sel);\n normalizeSelection(sel);\n });\n };\n\n const ownerDoc = editableElementRef.current?.ownerDocument ?? document;\n const element = editableElementRef.current;\n // selectionchange only fires on document — containment is checked inside the handler.\n ownerDoc.addEventListener('selectionchange', handleSelectionChange);\n // mousedown/mouseup scoped to the element to avoid reacting to clicks elsewhere.\n element?.addEventListener('mousedown', handleMouseDown);\n element?.addEventListener('mouseup', handleMouseUp);\n\n return () => {\n ownerDoc.removeEventListener('selectionchange', handleSelectionChange);\n element?.removeEventListener('mousedown', handleMouseDown);\n element?.removeEventListener('mouseup', handleMouseUp);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- only needs to run on mount\n }, []);\n\n const handleMenuSelect = useStableCallback((option: MenuItem) => {\n if (!activeMenu || !activeTriggerToken || !tokens) {\n return;\n }\n\n shortcutsState.setCaretInTrigger(null);\n\n const result = handleMenuSelection(\n tokens,\n {\n value: option.option.value || '',\n label: option.option.label || option.option.value || '',\n },\n activeMenu.id,\n activeMenu.useAtStart ?? false,\n activeTriggerToken\n );\n\n const value = tokensToText ? tokensToText(result.tokens) : getPromptText(result.tokens);\n markTokensAsSent(result.tokens);\n\n editableState.menuSelectionTokenId = result.insertedToken.id || null;\n\n const isPinned = activeMenu.useAtStart ?? false;\n const announcement = isPinned\n ? i18nStrings?.tokenPinnedAriaLabel?.(result.insertedToken)\n : i18nStrings?.tokenInsertedAriaLabel?.(result.insertedToken);\n\n if (announcement) {\n announceTokenOperation(announcement);\n }\n\n onChange({ value, tokens: result.tokens });\n\n fireNonCancelableEvent(onMenuItemSelect, {\n menuId: activeMenu.id,\n option: option.option,\n });\n });\n\n const [menuItemsState, menuItemsHandlers] = useMenuItems({\n menu: activeMenu ?? { id: '', trigger: '', options: [] },\n filterText: menuFilterText,\n onSelectItem: handleMenuSelect,\n });\n\n const menuStateRef = useRef({\n itemsState: menuItemsState,\n itemsHandlers: menuItemsHandlers,\n isOpen: menuIsOpen,\n });\n menuStateRef.current = {\n itemsState: menuItemsState,\n itemsHandlers: menuItemsHandlers,\n isOpen: menuIsOpen,\n };\n\n const closeMenu = useStableCallback(() => {\n shortcutsState.menuJustClosed.current = shortcutsState.caretInTrigger;\n shortcutsState.setCaretInTrigger(null);\n });\n\n const handleEditableElementKeyDown = useStableCallback((event: React.KeyboardEvent<HTMLDivElement>) => {\n handleEditableKeyDown(event, {\n editableElement: editableElementRef.current,\n editableState,\n caretController: caretControllerRef.current,\n tokens,\n tokensToText,\n disabled,\n readOnly,\n i18nStrings,\n announceTokenOperation,\n getMenuOpen: () => menuStateRef.current.isOpen,\n getMenuItemsState: () => menuStateRef.current.itemsState,\n getMenuItemsHandlers: () => menuStateRef.current.itemsHandlers,\n getMenuStatusType: () => activeMenu?.statusType,\n closeMenu,\n onAction: onAction ? detail => fireNonCancelableEvent(onAction, detail) : undefined,\n onChange,\n markTokensAsSent,\n onKeyDown,\n });\n });\n\n const handleEditableElementFocus = useStableCallback(() => {\n if (onFocus) {\n fireNonCancelableEvent(onFocus);\n }\n });\n\n const handleEditableElementBlur = useStableCallback(() => {\n if (onBlur) {\n fireNonCancelableEvent(onBlur);\n }\n });\n\n useEffect(() => {\n if (autoFocus && editableElementRef.current) {\n editableElementRef.current.focus();\n }\n // Intentionally run only on mount — autoFocus should fire once\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const ownerWindow = (editableElementRef.current?.ownerDocument ?? document).defaultView ?? window;\n const handleResize = () => adjustInputHeight();\n ownerWindow.addEventListener('resize', handleResize);\n return () => {\n ownerWindow.removeEventListener('resize', handleResize);\n };\n }, [adjustInputHeight, editableElementRef]);\n\n const menuLoadMoreResult = useMenuLoadMore({\n menu: activeMenu ?? { id: '', trigger: '', options: [] },\n statusType: activeMenu?.statusType ?? 'finished',\n onLoadItems: detail => {\n fireNonCancelableEvent(onMenuLoadItems, detail);\n },\n onLoadMoreItems: () => {\n fireNonCancelableEvent(onMenuLoadItems, {\n menuId: activeMenu?.id ?? '',\n filteringText: undefined,\n firstPage: false,\n samePage: false,\n });\n },\n });\n\n const menuLoadMoreHandlers = activeMenu ? menuLoadMoreResult : null;\n\n useEffect(() => {\n if (menuIsOpen && activeMenu && menuLoadMoreHandlers) {\n menuLoadMoreHandlers.fireLoadMoreOnMenuOpen();\n }\n }, [menuIsOpen, activeMenu, menuLoadMoreHandlers]);\n\n const prevMenuOpenRef = useRef(false);\n const prevItemsLengthRef = useRef(0);\n\n useEffect(() => {\n const justOpened = menuIsOpen && !prevMenuOpenRef.current;\n const itemsLoaded =\n menuIsOpen && prevMenuOpenRef.current && prevItemsLengthRef.current === 0 && menuItemsState.items.length > 0;\n\n if ((justOpened || itemsLoaded) && menuItemsHandlers && menuItemsState && menuItemsState.items.length > 0) {\n // Reset highlight so goHomeWithKeyboard triggers a state change even at index 0\n menuItemsHandlers.resetHighlightWithKeyboard();\n setTimeout(() => {\n menuItemsHandlers?.goHomeWithKeyboard();\n }, NEXT_TICK_TIMEOUT);\n }\n\n prevMenuOpenRef.current = menuIsOpen;\n prevItemsLengthRef.current = menuItemsState?.items.length ?? 0;\n // eslint-disable-next-line react-hooks/exhaustive-deps -- only needs to react to menu open/close and item count changes\n }, [menuIsOpen, menuItemsState.items.length]);\n\n useEffect(() => {\n if (activeTriggerToken && activeMenu && onMenuFilter) {\n fireNonCancelableEvent(onMenuFilter, {\n menuId: activeMenu.id,\n filteringText: activeTriggerToken.value,\n });\n }\n }, [activeTriggerToken, activeMenu, onMenuFilter]);\n\n const handleLoadMore = useStableCallback(() => {\n if (menuLoadMoreHandlers) {\n menuLoadMoreHandlers.fireLoadMoreOnScroll();\n }\n });\n\n const menuListId = useUniqueId('menu-list');\n const menuFooterControlId = useUniqueId('menu-footer');\n const highlightedMenuOptionIdSource = useUniqueId();\n const highlightedMenuOptionId = menuItemsState?.highlightedOption ? highlightedMenuOptionIdSource : undefined;\n\n const menuDropdownStatusResult = useDropdownStatus({\n ...(activeMenu ?? {}),\n isEmpty: !menuItemsState || menuItemsState.items.length === 0,\n recoveryText: i18nStrings?.menuRecoveryText,\n errorIconAriaLabel: i18nStrings?.menuErrorIconAriaLabel,\n loadingText: i18nStrings?.menuLoadingText,\n finishedText: i18nStrings?.menuFinishedText,\n errorText: i18nStrings?.menuErrorText,\n onRecoveryClick: () => {\n if (menuLoadMoreHandlers) {\n menuLoadMoreHandlers.fireLoadMoreOnRecoveryClick();\n }\n editableElementRef.current?.focus();\n },\n hasRecoveryCallback: Boolean(onMenuLoadItems),\n });\n\n const menuDropdownStatus = activeMenu ? menuDropdownStatusResult : null;\n\n const shouldRenderMenuDropdown = useMemo(() => {\n return !!(menuIsOpen && activeMenu && menuItemsState && triggerVisible);\n }, [menuIsOpen, activeMenu, menuItemsState, triggerVisible]);\n\n const showPlaceholder = !!(placeholder && (!tokens || tokens.length === 0));\n\n const editableElementAttributes: React.HTMLAttributes<HTMLDivElement> & { 'data-placeholder'?: string } = {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n 'aria-invalid': invalid ? 'true' : undefined,\n 'aria-disabled': disabled ? 'true' : undefined,\n 'aria-readonly': readOnly ? 'true' : undefined,\n 'aria-required': ariaRequired ? 'true' : undefined,\n 'data-placeholder': placeholder,\n className: clsx(styles.textarea, testutilStyles.textarea, {\n [styles.invalid]: invalid,\n [styles.warning]: warning,\n [styles['textarea-disabled']]: disabled,\n [styles['textarea-readonly']]: readOnly,\n [styles['placeholder-visible']]: showPlaceholder,\n }),\n autoCorrect: disableBrowserAutocorrect ? 'off' : undefined,\n autoCapitalize: disableBrowserAutocorrect ? 'off' : undefined,\n spellCheck: spellcheck,\n // When disabled, omit tabIndex entirely so the div is not focusable at all.\n tabIndex: disabled ? undefined : 0,\n onKeyDown: handleEditableElementKeyDown,\n onKeyUp: onKeyUp && (event => fireKeyboardEvent(onKeyUp, event)),\n onBlur: handleEditableElementBlur,\n onFocus: handleEditableElementFocus,\n onCopy: (event: React.ClipboardEvent) => {\n if (editableElementRef.current) {\n handleClipboardEvent(event, editableElementRef.current, false);\n }\n },\n onCut: (event: React.ClipboardEvent) => {\n if (editableElementRef.current) {\n handleClipboardEvent(event, editableElementRef.current, !disabled && !readOnly);\n if (!disabled && !readOnly) {\n handleInput();\n }\n }\n },\n onPaste: (event: React.ClipboardEvent) => {\n event.preventDefault();\n if (disabled || readOnly) {\n return;\n }\n const text = event.clipboardData.getData('text/plain');\n if (!text || !editableElementRef.current || !caretControllerRef.current) {\n return;\n }\n const cc = caretControllerRef.current;\n // Pass undefined for caretStart/caretEnd — let insertText calculate\n // the position after the selection is deleted by replaceSelection.\n insertTextIntoContentEditable(editableElementRef.current, text, undefined, undefined, cc, true);\n },\n };\n\n const portals = portalContainers.map(container =>\n ReactDOM.createPortal(\n <Token key={container.id} variant=\"inline\" label={container.label} disabled={!!disabled} readOnly={!!readOnly} />,\n container.element\n )\n );\n\n return {\n portalContainersRef,\n portalContainers,\n portals,\n editableState,\n editableElementAttributes,\n activeTriggerToken,\n activeMenu,\n menuIsOpen,\n menuFilterText,\n triggerWrapperRef,\n triggerWrapperReady,\n menuListId,\n menuFooterControlId,\n highlightedMenuOptionId,\n menuItemsState,\n menuItemsHandlers,\n menuDropdownStatus,\n shouldRenderMenuDropdown,\n handleInput,\n handleLoadMore,\n tokenOperationAnnouncement,\n markTokensAsSent,\n };\n}\n"]}
1
+ {"version":3,"file":"use-token-mode.js","sourceRoot":"","sources":["../../../../src/prompt-input/tokens/use-token-mode.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React, { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport clsx from 'clsx';\n\nimport { useStableCallback, useUniqueId } from '@cloudscape-design/component-toolkit/internal';\n\nimport { useDropdownStatus } from '../../internal/components/dropdown-status';\nimport { fireKeyboardEvent, fireNonCancelableEvent } from '../../internal/events';\nimport { useIMEComposition } from '../../internal/hooks/use-ime-composition';\nimport { getFirstScrollableParent } from '../../internal/utils/scrollable-containers';\nimport Token from '../../token/internal';\nimport { calculateTokenPosition, CaretController, getOwnerSelection } from '../core/caret-controller';\nimport { extractTextFromCaretSpots } from '../core/caret-spot-utils';\nimport {\n findContainingReference,\n getMouseDown,\n isNonTypeablePosition,\n normalizeCollapsedCaret,\n normalizeSelection,\n setMouseDown,\n} from '../core/caret-utils';\nimport { NEXT_TICK_TIMEOUT } from '../core/constants';\nimport { createParagraph, findAllParagraphs } from '../core/dom-utils';\nimport { handleClipboardEvent, handleEditableKeyDown } from '../core/event-handlers';\nimport {\n handleMenuSelection,\n MenuItem,\n MenuItemsHandlers,\n MenuItemsState,\n useMenuItems,\n useMenuLoadMore,\n} from '../core/menu-state';\nimport { extractTokensFromDOM, getPromptText, processTokens } from '../core/token-operations';\nimport { PortalContainer, renderTokensToDOM } from '../core/token-renderer';\nimport {\n enforcePinnedTokenOrdering,\n getCaretPositionAfterPinnedReorder,\n getCaretPositionAfterTokenRemoval,\n mergeConsecutiveTextTokens,\n} from '../core/token-utils';\nimport { detectTriggerTransition } from '../core/trigger-utils';\nimport { isReferenceToken, isTextNode, isTextToken, isTriggerToken } from '../core/type-guards';\nimport { PromptInputProps } from '../interfaces';\nimport { insertTextIntoContentEditable } from '../utils/insert-text-content-editable';\nimport { ShortcutsState, useShortcutsEffects, useShortcutsState } from './use-shortcuts';\n\nimport styles from '../styles.css.js';\nimport testutilStyles from '../test-classes/styles.css.js';\n\n/** Mutable state shared between the editable tokens hook and event handlers. */\nexport interface EditableState {\n skipNextZeroWidthUpdate: boolean;\n menuSelectionTokenId: string | null;\n}\n\nexport function createEditableState(): EditableState {\n return {\n skipNextZeroWidthUpdate: false,\n menuSelectionTokenId: null,\n };\n}\n\n/**\n * Determines if the token array changed structurally and needs a full DOM re-render.\n *\n * Compares token types, IDs, and text values. During normal typing the extracted\n * tokens already match the DOM, so text comparisons won't trigger unnecessary\n * re-renders. External updates (parent replacing tokens) will be detected by\n * the value difference and trigger a re-render.\n *\n * Returns 'none' if no changes, 'text-only' if only token values differ\n * (same count, types, and IDs — covers both text and trigger filter changes),\n * or 'structural' for any other change.\n */\nfunction classifyChange(\n oldTokens: readonly PromptInputProps.InputToken[] | undefined,\n newTokens: readonly PromptInputProps.InputToken[] | undefined\n): 'none' | 'text-only' | 'structural' {\n if (!oldTokens || !newTokens) {\n return 'structural';\n }\n\n if (oldTokens.length !== newTokens.length) {\n return 'structural';\n }\n\n let hasTextDiff = false;\n\n for (let i = 0; i < oldTokens.length; i++) {\n const oldToken = oldTokens[i];\n const newToken = newTokens[i];\n\n if (oldToken.type !== newToken.type) {\n return 'structural';\n }\n\n if (isReferenceToken(oldToken) && isReferenceToken(newToken)) {\n if (oldToken.id !== newToken.id) {\n return 'structural';\n }\n }\n\n if (isTriggerToken(oldToken) && isTriggerToken(newToken)) {\n if (oldToken.id !== newToken.id) {\n return 'structural';\n }\n // Transition between empty and non-empty filter text changes the underline styling.\n const wasEmpty = oldToken.value.length === 0;\n const isEmpty = newToken.value.length === 0;\n if (wasEmpty !== isEmpty) {\n return 'structural';\n }\n if (oldToken.value !== newToken.value) {\n hasTextDiff = true;\n }\n }\n\n if (isTextToken(oldToken) && isTextToken(newToken)) {\n if (oldToken.value !== newToken.value) {\n hasTextDiff = true;\n }\n }\n }\n\n return hasTextDiff ? 'text-only' : 'none';\n}\n\n/**\n * Positions the caret after a menu-selected reference token.\n * Returns true if the caret was positioned (token found), false otherwise.\n */\nfunction positionCaretAfterMenuSelection(\n tokens: readonly PromptInputProps.InputToken[],\n editableState: EditableState,\n caretController: CaretController | null\n): boolean {\n if (!editableState.menuSelectionTokenId || !caretController) {\n return false;\n }\n\n const insertedTokenIndex = tokens.findIndex(t => isReferenceToken(t) && t.id === editableState.menuSelectionTokenId);\n\n if (insertedTokenIndex === -1) {\n return false;\n }\n\n const caretPos = calculateTokenPosition(tokens, insertedTokenIndex);\n caretController.setPosition(caretPos);\n editableState.menuSelectionTokenId = null;\n return true;\n}\n\n/** Finds a trigger token by its ID in the token array. */\nfunction findTriggerTokenById(\n tokens: readonly PromptInputProps.InputToken[],\n triggerId: string\n): PromptInputProps.TriggerToken | null {\n const trigger = tokens.find(token => isTriggerToken(token) && token.id === triggerId);\n if (trigger && isTriggerToken(trigger)) {\n return trigger;\n }\n return null;\n}\n\n/** Configuration for the useTokenMode hook — all props needed to drive token-mode behavior. */\nexport interface UseTokenModeConfig {\n editableElementRef: React.RefObject<HTMLDivElement>;\n caretControllerRef: React.MutableRefObject<CaretController | null>;\n\n tokens?: readonly PromptInputProps.InputToken[];\n tokensToText?: (tokens: readonly PromptInputProps.InputToken[]) => string;\n menus?: readonly PromptInputProps.MenuDefinition[];\n disabled?: boolean;\n readOnly?: boolean;\n autoFocus?: boolean;\n placeholder?: string;\n invalid?: boolean;\n warning?: boolean;\n ariaLabel?: string;\n ariaLabelledby?: string;\n ariaDescribedby?: string;\n ariaRequired?: boolean;\n disableBrowserAutocorrect?: boolean;\n spellcheck?: boolean;\n\n onChange: (detail: { value: string; tokens: PromptInputProps.InputToken[] }) => void;\n onTriggerDetected?: (detail: PromptInputProps.TriggerDetectedDetail) => boolean;\n onAction?: PromptInputProps['onAction'];\n onBlur?: PromptInputProps['onBlur'];\n onFocus?: PromptInputProps['onFocus'];\n onKeyDown?: PromptInputProps['onKeyDown'];\n onKeyUp?: PromptInputProps['onKeyUp'];\n onMenuItemSelect?: PromptInputProps['onMenuItemSelect'];\n onMenuFilter?: PromptInputProps['onMenuFilter'];\n onMenuLoadItems?: PromptInputProps['onMenuLoadItems'];\n\n i18nStrings?: PromptInputProps['i18nStrings'];\n\n adjustInputHeight: () => void;\n}\n\n/** Return value of useTokenMode — state, handlers, and attributes consumed by TokenMode component. */\nexport interface UseTokenModeResult {\n portalContainersRef: React.MutableRefObject<Map<string, PortalContainer>>;\n /** Snapshot of portal containers for rendering portals. Updated after each renderTokensToDOM call. */\n portalContainers: PortalContainer[];\n /** Portal elements to render — renders Token components into DOM containers via createPortal. */\n portals: React.ReactPortal[];\n\n editableState: EditableState;\n\n editableElementAttributes: React.HTMLAttributes<HTMLDivElement> & { 'data-placeholder'?: string };\n\n activeTriggerToken: PromptInputProps.TriggerToken | null;\n activeMenu: PromptInputProps.MenuDefinition | null;\n menuIsOpen: boolean;\n menuFilterText: string;\n triggerWrapperRef: React.MutableRefObject<HTMLElement | null>;\n triggerWrapperReady: boolean;\n\n menuListId: string;\n menuFooterControlId: string;\n highlightedMenuOptionId: string | undefined;\n menuItemsState: MenuItemsState;\n menuItemsHandlers: MenuItemsHandlers;\n menuDropdownStatus: ReturnType<typeof useDropdownStatus> | null;\n shouldRenderMenuDropdown: boolean;\n\n handleInput: () => void;\n\n handleLoadMore: () => void;\n\n tokenOperationAnnouncement: string;\n\n markTokensAsSent: (tokens: readonly PromptInputProps.InputToken[]) => void;\n}\n\ninterface ProcessorConfig {\n tokens?: readonly PromptInputProps.InputToken[];\n menus?: readonly PromptInputProps.MenuDefinition[];\n tokensToText?: (tokens: readonly PromptInputProps.InputToken[]) => string;\n onChange: (detail: { value: string; tokens: PromptInputProps.InputToken[] }) => void;\n onTriggerDetected?: (detail: PromptInputProps.TriggerDetectedDetail) => boolean;\n state: ShortcutsState;\n}\n\n/**\n * Processes token changes from both user input and external (parent) updates.\n *\n * For user input: runs trigger detection on extracted DOM tokens and emits\n * the processed result via onChange.\n *\n * For external updates: detects if the parent provided new tokens that need\n * trigger detection or ID assignment, and emits corrected tokens if so.\n * Skips processing when the tokens reference matches what we last emitted\n * (for example, the parent is echoing back our own onChange).\n */\nfunction useTokenProcessor(config: ProcessorConfig) {\n const { tokens, menus, tokensToText, onChange, onTriggerDetected, state } = config;\n\n const emitTokenChange = useStableCallback((newTokens: PromptInputProps.InputToken[]) => {\n const value = tokensToText ? tokensToText(newTokens) : getPromptText(newTokens);\n state.markTokensAsSent(newTokens);\n onChange({ value, tokens: newTokens });\n });\n\n const markCancelledTriggers = useStableCallback((cancelledIds: Set<string>) => {\n for (const id of cancelledIds) {\n state.cancelledTriggerIds.current.add(id);\n // Prevent opening the menu if the active trigger was cancelled\n if (state.caretInTrigger === id) {\n state.setCaretInTrigger(null);\n }\n }\n });\n\n /** Processes tokens extracted from the DOM after user input. */\n const processUserInput = useStableCallback((inputTokens: PromptInputProps.InputToken[]) => {\n const { tokens: processed, cancelledIds } = processTokens(\n inputTokens,\n { menus, tokensToText },\n {\n source: 'user-input',\n detectTriggers: true,\n },\n onTriggerDetected,\n state.cancelledTriggerIds.current\n );\n\n markCancelledTriggers(cancelledIds);\n emitTokenChange(processed);\n });\n\n /** Processes external token updates from the parent component. */\n useEffect(() => {\n // Skip if these are the tokens we just emitted — the parent is echoing back our onChange\n if (state.lastEmittedTokensRef.current === tokens) {\n return;\n }\n\n if (!tokens) {\n return;\n }\n\n const { tokens: processed, cancelledIds } = processTokens(\n tokens,\n { menus, tokensToText },\n {\n source: 'external',\n detectTriggers: true,\n },\n undefined,\n state.cancelledTriggerIds.current\n );\n\n markCancelledTriggers(cancelledIds);\n\n // Only emit if processing actually changed the tokens (e.g., new triggers detected,\n // IDs assigned). Compare by type, value, and ID to avoid false positives from\n // reference inequality after processTokens creates new token objects.\n const hasChanges =\n processed.length !== tokens.length ||\n processed.some((t, i) => {\n const orig = tokens[i];\n if (t.type !== orig.type || t.value !== orig.value) {\n return true;\n }\n if (isReferenceToken(t) && isReferenceToken(orig) && t.id !== orig.id) {\n return true;\n }\n if (isTriggerToken(t) && isTriggerToken(orig) && t.id !== orig.id) {\n return true;\n }\n return false;\n });\n\n if (hasChanges) {\n emitTokenChange(processed);\n } else {\n // Mark as seen even when no changes — prevents re-processing on next render\n state.lastEmittedTokensRef.current = tokens;\n }\n }, [tokens, menus, tokensToText, state, emitTokenChange, markCancelledTriggers]);\n\n return {\n processUserInput,\n };\n}\n\n/** Encapsulates all token-mode logic: trigger detection, menu state, keyboard handling, and rendering. */\nexport function useTokenMode(config: UseTokenModeConfig): UseTokenModeResult {\n const {\n editableElementRef,\n caretControllerRef,\n tokens,\n tokensToText,\n menus,\n disabled,\n readOnly,\n autoFocus,\n placeholder,\n invalid,\n warning,\n ariaLabel,\n ariaLabelledby,\n ariaDescribedby,\n ariaRequired,\n disableBrowserAutocorrect,\n spellcheck,\n onChange,\n onTriggerDetected,\n onAction,\n onBlur,\n onFocus,\n onKeyDown,\n onKeyUp,\n onMenuItemSelect,\n onMenuFilter,\n onMenuLoadItems,\n i18nStrings,\n adjustInputHeight,\n } = config;\n\n const shortcutsState = useShortcutsState();\n\n const { markTokensAsSent } = shortcutsState;\n\n const activeTriggerToken = useMemo((): PromptInputProps.TriggerToken | null => {\n if (!tokens || !caretControllerRef.current) {\n return null;\n }\n\n const activeTriggerID = caretControllerRef.current.findActiveTrigger()?.id || null;\n\n if (!activeTriggerID) {\n return null;\n }\n\n if (shortcutsState.cancelledTriggerIds.current.has(activeTriggerID)) {\n return null;\n }\n\n return findTriggerTokenById(tokens, activeTriggerID);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- caretInTrigger is the invalidation signal from useShortcutsEffects\n }, [tokens, caretControllerRef, shortcutsState.caretInTrigger]);\n\n const activeMenu = useMemo(\n () =>\n activeTriggerToken && shortcutsState.caretInTrigger && !disabled && !readOnly\n ? (menus?.find(m => m.trigger === activeTriggerToken.triggerChar) ?? null)\n : null,\n [activeTriggerToken, shortcutsState.caretInTrigger, menus, disabled, readOnly]\n );\n\n const menuIsOpen = !!activeMenu;\n const menuFilterText = activeTriggerToken?.value ?? '';\n\n const processor = useTokenProcessor({\n tokens,\n menus,\n tokensToText,\n onChange,\n onTriggerDetected,\n state: shortcutsState,\n });\n\n const { processUserInput } = processor;\n\n useShortcutsEffects({\n tokens,\n editableElementRef,\n state: shortcutsState,\n activeTriggerToken,\n caretController: caretControllerRef,\n });\n\n const triggerWrapperRef = useRef<HTMLElement | null>(null);\n const [triggerVisible, setTriggerVisible] = useState(true);\n\n // Resolve the trigger DOM element synchronously during render from the tracked map.\n // The Dropdown's contentKey (which includes activeTriggerToken.id) handles\n // repositioning when the active trigger changes — no open/close toggle needed.\n if (activeTriggerToken?.id && menuIsOpen) {\n triggerWrapperRef.current = shortcutsState.triggerElementsRef.current.get(activeTriggerToken.id) ?? null;\n } else {\n triggerWrapperRef.current = null;\n }\n\n const triggerWrapperReady = !!triggerWrapperRef.current && menuIsOpen;\n\n // Hide menu dropdown when trigger scrolls out of the editable container\n useEffect(() => {\n if (!menuIsOpen || !triggerWrapperRef.current || !editableElementRef.current) {\n setTriggerVisible(true);\n return;\n }\n\n const trigger = triggerWrapperRef.current;\n const container = editableElementRef.current;\n\n const checkTriggerVisibility = () => {\n const triggerRect = trigger.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n\n const isOutOfView = triggerRect.bottom < containerRect.top || triggerRect.top > containerRect.bottom;\n setTriggerVisible(!isOutOfView);\n };\n\n checkTriggerVisibility();\n\n container.addEventListener('scroll', checkTriggerVisibility);\n\n const scrollableParent = getFirstScrollableParent(container);\n if (scrollableParent) {\n scrollableParent.addEventListener('scroll', checkTriggerVisibility);\n }\n\n return () => {\n container.removeEventListener('scroll', checkTriggerVisibility);\n if (scrollableParent) {\n scrollableParent.removeEventListener('scroll', checkTriggerVisibility);\n }\n };\n }, [menuIsOpen, editableElementRef, activeTriggerToken]);\n\n const portalContainersRef = useRef<Map<string, PortalContainer>>(new Map());\n const [portalContainers, setPortalContainers] = useState<PortalContainer[]>([]);\n\n const renderTokens = useCallback(\n (tokens: readonly PromptInputProps.InputToken[], target: HTMLElement) => {\n const result = renderTokensToDOM(\n tokens,\n target,\n portalContainersRef.current,\n shortcutsState.triggerElementsRef.current,\n shortcutsState.cancelledTriggerIds.current\n );\n\n // Update trigger element map from render result\n shortcutsState.triggerElementsRef.current = new Map(result.triggerElements);\n\n setPortalContainers(Array.from(portalContainersRef.current.values()));\n return result;\n },\n [shortcutsState.triggerElementsRef, shortcutsState.cancelledTriggerIds, portalContainersRef]\n );\n\n useLayoutEffect(() => {\n if (editableElementRef.current && !caretControllerRef.current) {\n caretControllerRef.current = new CaretController(editableElementRef.current);\n }\n }, [editableElementRef, caretControllerRef]);\n\n const editableState = useRef(createEditableState()).current;\n\n const [tokenOperationAnnouncement, setTokenOperationAnnouncement] = useState<string>('');\n\n const announceTokenOperation = useStableCallback((message: string) => {\n setTokenOperationAnnouncement(message);\n });\n\n const lastRenderedTokensRef = useRef<readonly PromptInputProps.InputToken[] | undefined>(undefined);\n const lastDisabledRef = useRef(disabled);\n const lastReadOnlyRef = useRef(readOnly);\n\n // Refs to avoid recreating handleInput when these change (new array reference each render).\n const menusRef = useRef(menus);\n menusRef.current = menus;\n\n // Stable ref so the compositionend callback always calls the latest handleInput.\n const handleInputRef = useRef<() => void>(() => {});\n\n // `composing` React state drives placeholder visibility — hidden while the user\n // is actively composing CJK characters so intermediate characters don't flash\n // the placeholder on and off.\n const [composing, setComposing] = useState(false);\n\n // Track IME composition state so the onInput handler skips intermediate characters\n // during CJK (and other) composition sequences. The onCompositionEnd callback\n // fires synchronously when the user commits a composed character — handleInput\n // runs unconditionally there. `isComposing()` stays true briefly after compositionend\n // (until the next animation frame) to block the spurious Enter keydown that some\n // browsers fire immediately after compositionend.\n const { isComposing } = useIMEComposition(editableElementRef, {\n onCompositionStart: () => setComposing(true),\n onCompositionEnd: () => {\n setComposing(false);\n handleInputRef.current();\n },\n });\n\n const handleInput = useCallback(() => {\n if (!editableElementRef.current) {\n return;\n }\n\n const ownerDoc = editableElementRef.current.ownerDocument ?? document;\n const cc = caretControllerRef.current;\n\n if (cc) {\n cc.capture();\n }\n\n if (editableState.skipNextZeroWidthUpdate) {\n editableState.skipNextZeroWidthUpdate = false;\n }\n\n const { movedTextNode } = extractTextFromCaretSpots(portalContainersRef.current, true);\n\n // Extract filter text from cancelled triggers, moving it to the paragraph level\n for (const id of shortcutsState.cancelledTriggerIds.current) {\n const trigger =\n shortcutsState.triggerElementsRef.current.get(id) ??\n (editableElementRef.current.querySelector(`#${CSS.escape(id)}`) as HTMLElement | null);\n if (!trigger) {\n continue;\n }\n const filterText = (trigger.textContent || '').substring(1);\n if (!filterText) {\n continue;\n }\n\n let caretInTrigger = false;\n const selection = editableElementRef.current ? getOwnerSelection(editableElementRef.current) : null;\n if (selection?.rangeCount && trigger.contains(selection.getRangeAt(0).startContainer)) {\n caretInTrigger = true;\n }\n\n const textNode = ownerDoc.createTextNode(filterText);\n trigger.parentNode?.insertBefore(textNode, trigger.nextSibling);\n trigger.textContent = (trigger.textContent || '').charAt(0);\n\n if (caretInTrigger && !movedTextNode) {\n if (cc) {\n cc.positionAfterText(textNode);\n }\n }\n }\n\n if (movedTextNode && cc) {\n cc.positionAfterText(movedTextNode);\n }\n\n const directTextNodes = Array.from(editableElementRef.current.childNodes).filter(\n node => isTextNode(node) && node.textContent?.trim()\n );\n\n if (directTextNodes.length > 0) {\n if (cc) {\n cc.capture();\n }\n\n let targetP = findAllParagraphs(editableElementRef.current)[0];\n if (!targetP) {\n targetP = createParagraph();\n editableElementRef.current.appendChild(targetP);\n }\n\n directTextNodes.forEach(textNode => {\n targetP!.appendChild(textNode);\n });\n\n if (cc) {\n cc.restore();\n }\n }\n\n let extractedTokens = extractTokensFromDOM(\n editableElementRef.current,\n menusRef.current,\n portalContainersRef.current\n );\n\n // When a new trigger appears in the DOM, render immediately to ensure the\n // trigger element exists before subsequent caret operations.\n const newTriggers = extractedTokens.filter(isTriggerToken);\n const existingTriggerIds = new Set(shortcutsState.triggerElementsRef.current.keys());\n if (newTriggers.some(t => !existingTriggerIds.has(t.id))) {\n renderTokens(extractedTokens, editableElementRef.current);\n }\n\n const movedTokens = enforcePinnedTokenOrdering(extractedTokens);\n const tokensWereMoved = movedTokens.some((t, i) => t !== extractedTokens[i]);\n\n const mergedTokens = mergeConsecutiveTextTokens(movedTokens);\n\n if (tokensWereMoved) {\n const caretPosBeforeMove = cc?.getPosition() ?? 0;\n const adjustedPosition = getCaretPositionAfterPinnedReorder(extractedTokens, mergedTokens, caretPosBeforeMove);\n\n extractedTokens = mergedTokens;\n\n renderTokens(mergedTokens, editableElementRef.current);\n\n if (editableElementRef.current && ownerDoc.activeElement === editableElementRef.current && cc) {\n cc.setPosition(adjustedPosition);\n }\n }\n\n processUserInput(extractedTokens);\n\n adjustInputHeight();\n }, [\n processUserInput,\n adjustInputHeight,\n editableElementRef,\n caretControllerRef,\n portalContainersRef,\n editableState,\n renderTokens,\n shortcutsState.triggerElementsRef,\n shortcutsState.cancelledTriggerIds,\n ]);\n\n // Keep the ref in sync so the compositionend handler always calls the latest version.\n handleInputRef.current = handleInput;\n\n // Token render effect\n useLayoutEffect(() => {\n if (!editableElementRef.current) {\n return;\n }\n\n const cc = caretControllerRef.current;\n const orderedTokens = tokens ? enforcePinnedTokenOrdering(tokens) : tokens;\n const prevOrderedTokens = lastRenderedTokensRef.current;\n\n const stateChanged = lastDisabledRef.current !== disabled || lastReadOnlyRef.current !== readOnly;\n lastDisabledRef.current = disabled;\n lastReadOnlyRef.current = readOnly;\n\n const triggerTransition = detectTriggerTransition(lastRenderedTokensRef.current, orderedTokens);\n\n const changeType = classifyChange(lastRenderedTokensRef.current, orderedTokens);\n const needsRerender = stateChanged || changeType !== 'none' || triggerTransition > 0;\n\n if (!needsRerender) {\n positionCaretAfterMenuSelection(orderedTokens ?? [], editableState, cc);\n\n lastRenderedTokensRef.current = orderedTokens;\n return;\n }\n\n // Text-only changes from user input are already reflected in the DOM by the\n // browser's native editing. Skip re-render to preserve cursor position —\n // Text-only changes from user input are already reflected in the DOM by the\n // browser's native editing. Skip re-render to preserve cursor position —\n // re-rendering would read a corrupted position from normalizeCaretIntoTrigger.\n // External updates still need a re-render.\n if (\n changeType === 'text-only' &&\n !stateChanged &&\n triggerTransition === 0 &&\n shortcutsState.lastEmittedTokensRef.current === tokens\n ) {\n lastRenderedTokensRef.current = orderedTokens;\n return;\n }\n\n if (triggerTransition > 0 && orderedTokens && cc) {\n renderTokens(orderedTokens, editableElementRef.current);\n lastRenderedTokensRef.current = orderedTokens;\n cc.setPosition(triggerTransition);\n adjustInputHeight();\n return;\n }\n\n // A new trigger appeared (e.g. user typed a trigger char, possibly replacing a selection).\n // Position the caret after the trigger character so the user can start typing a filter.\n const newTrigger =\n orderedTokens &&\n prevOrderedTokens &&\n orderedTokens.find(t => isTriggerToken(t) && !prevOrderedTokens.some(p => isTriggerToken(p) && p.id === t.id));\n if (newTrigger && isTriggerToken(newTrigger) && cc) {\n renderTokens(orderedTokens, editableElementRef.current);\n lastRenderedTokensRef.current = orderedTokens;\n // Use the saved position from insertText if available, otherwise position after the trigger char\n const savedPos = cc.getSavedPosition();\n if (savedPos !== null) {\n cc.setPosition(savedPos);\n } else {\n const triggerIndex = orderedTokens.indexOf(newTrigger);\n const posBeforeTrigger = triggerIndex > 0 ? calculateTokenPosition(orderedTokens, triggerIndex - 1) : 0;\n cc.setPosition(posBeforeTrigger + newTrigger.triggerChar.length);\n }\n adjustInputHeight();\n return;\n }\n\n if (\n lastRenderedTokensRef.current &&\n orderedTokens &&\n lastRenderedTokensRef.current.length === 0 &&\n orderedTokens.length === 0\n ) {\n lastRenderedTokensRef.current = orderedTokens;\n return;\n }\n\n if (editableState.menuSelectionTokenId && cc) {\n const insertedTokenIndex = (orderedTokens ?? []).findIndex(\n t => isReferenceToken(t) && t.id === editableState.menuSelectionTokenId\n );\n\n if (insertedTokenIndex !== -1) {\n renderTokens(orderedTokens ?? [], editableElementRef.current);\n positionCaretAfterMenuSelection(orderedTokens ?? [], editableState, cc);\n\n lastRenderedTokensRef.current = orderedTokens;\n adjustInputHeight();\n return;\n }\n }\n\n lastRenderedTokensRef.current = orderedTokens;\n\n if (cc) {\n cc.capture();\n }\n\n renderTokens(orderedTokens ?? [], editableElementRef.current);\n\n if (positionCaretAfterMenuSelection(orderedTokens ?? [], editableState, cc)) {\n adjustInputHeight();\n return;\n }\n\n if (cc) {\n const savedPosition = cc.getSavedPosition();\n const restoredPosition = getCaretPositionAfterTokenRemoval(\n savedPosition,\n prevOrderedTokens ?? [],\n orderedTokens ?? []\n );\n\n if (restoredPosition !== null) {\n cc.setPosition(restoredPosition);\n } else {\n cc.restore();\n }\n }\n\n adjustInputHeight();\n }, [\n disabled,\n readOnly,\n tokens,\n adjustInputHeight,\n caretControllerRef,\n editableElementRef,\n portalContainersRef,\n editableState,\n renderTokens,\n shortcutsState,\n ]);\n\n useEffect(() => {\n const handleSelectionChange = () => {\n const sel = editableElementRef.current ? getOwnerSelection(editableElementRef.current) : null;\n if (!sel?.rangeCount || !editableElementRef.current?.contains(sel.getRangeAt(0).startContainer)) {\n return;\n }\n // Skip caret normalization during mousedown — the user may be starting a\n // drag selection from a caret-spot position adjacent to a reference.\n if (!getMouseDown()) {\n normalizeCollapsedCaret(sel);\n }\n normalizeSelection(sel);\n };\n const handleMouseDown = () => {\n setMouseDown(true);\n };\n const handleMouseUp = () => {\n setMouseDown(false);\n const sel = editableElementRef.current ? getOwnerSelection(editableElementRef.current) : null;\n if (!sel?.rangeCount || !editableElementRef.current?.contains(sel.getRangeAt(0).startContainer)) {\n return;\n }\n normalizeCollapsedCaret(sel);\n normalizeSelection(sel);\n\n // Deferred re-check: browsers may finalize caret position after mouseup\n /* istanbul ignore next -- browser mouseup normalization covered by integ tests */\n requestAnimationFrame(() => {\n const sel = editableElementRef.current ? getOwnerSelection(editableElementRef.current) : null;\n if (!sel?.rangeCount) {\n return;\n }\n\n const range = sel.getRangeAt(0);\n if (!range.collapsed) {\n const startBad = isNonTypeablePosition(range.startContainer);\n const endBad = isNonTypeablePosition(range.endContainer);\n\n if (startBad) {\n const ref = findContainingReference(range.startContainer);\n if (ref?.parentNode) {\n const index = Array.from(ref.parentNode.childNodes).indexOf(ref as ChildNode);\n range.setStart(ref.parentNode, index);\n }\n }\n if (endBad) {\n const ref = findContainingReference(range.endContainer);\n if (ref?.parentNode) {\n const index = Array.from(ref.parentNode.childNodes).indexOf(ref as ChildNode);\n range.setEnd(ref.parentNode, index + 1);\n }\n }\n }\n\n normalizeCollapsedCaret(sel);\n normalizeSelection(sel);\n });\n };\n\n const ownerDoc = editableElementRef.current?.ownerDocument ?? document;\n const element = editableElementRef.current;\n // selectionchange only fires on document — containment is checked inside the handler.\n ownerDoc.addEventListener('selectionchange', handleSelectionChange);\n // mousedown/mouseup scoped to the element to avoid reacting to clicks elsewhere.\n element?.addEventListener('mousedown', handleMouseDown);\n element?.addEventListener('mouseup', handleMouseUp);\n\n return () => {\n ownerDoc.removeEventListener('selectionchange', handleSelectionChange);\n element?.removeEventListener('mousedown', handleMouseDown);\n element?.removeEventListener('mouseup', handleMouseUp);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- only needs to run on mount\n }, []);\n\n const handleMenuSelect = useStableCallback((option: MenuItem) => {\n if (!activeMenu || !activeTriggerToken || !tokens) {\n return;\n }\n\n shortcutsState.setCaretInTrigger(null);\n\n const result = handleMenuSelection(\n tokens,\n {\n value: option.option.value || '',\n label: option.option.label || option.option.value || '',\n },\n activeMenu.id,\n activeMenu.useAtStart ?? false,\n activeTriggerToken\n );\n\n const value = tokensToText ? tokensToText(result.tokens) : getPromptText(result.tokens);\n markTokensAsSent(result.tokens);\n\n editableState.menuSelectionTokenId = result.insertedToken.id || null;\n\n const isPinned = activeMenu.useAtStart ?? false;\n const announcement = isPinned\n ? i18nStrings?.tokenPinnedAriaLabel?.(result.insertedToken)\n : i18nStrings?.tokenInsertedAriaLabel?.(result.insertedToken);\n\n if (announcement) {\n announceTokenOperation(announcement);\n }\n\n onChange({ value, tokens: result.tokens });\n\n fireNonCancelableEvent(onMenuItemSelect, {\n menuId: activeMenu.id,\n option: option.option,\n });\n });\n\n const [menuItemsState, menuItemsHandlers] = useMenuItems({\n menu: activeMenu ?? { id: '', trigger: '', options: [] },\n filterText: menuFilterText,\n onSelectItem: handleMenuSelect,\n });\n\n const menuStateRef = useRef({\n itemsState: menuItemsState,\n itemsHandlers: menuItemsHandlers,\n isOpen: menuIsOpen,\n });\n menuStateRef.current = {\n itemsState: menuItemsState,\n itemsHandlers: menuItemsHandlers,\n isOpen: menuIsOpen,\n };\n\n const closeMenu = useStableCallback(() => {\n shortcutsState.menuJustClosed.current = shortcutsState.caretInTrigger;\n shortcutsState.setCaretInTrigger(null);\n });\n\n const handleEditableElementKeyDown = useStableCallback((event: React.KeyboardEvent<HTMLDivElement>) => {\n handleEditableKeyDown(event, {\n editableElement: editableElementRef.current,\n editableState,\n caretController: caretControllerRef.current,\n tokens,\n tokensToText,\n disabled,\n readOnly,\n i18nStrings,\n announceTokenOperation,\n getMenuOpen: () => menuStateRef.current.isOpen,\n getMenuItemsState: () => menuStateRef.current.itemsState,\n getMenuItemsHandlers: () => menuStateRef.current.itemsHandlers,\n getMenuStatusType: () => activeMenu?.statusType,\n closeMenu,\n onAction: onAction ? detail => fireNonCancelableEvent(onAction, detail) : undefined,\n onChange,\n markTokensAsSent,\n onKeyDown,\n isComposing,\n });\n });\n\n const handleEditableElementFocus = useStableCallback(() => {\n if (onFocus) {\n fireNonCancelableEvent(onFocus);\n }\n });\n\n const handleEditableElementBlur = useStableCallback(() => {\n if (onBlur) {\n fireNonCancelableEvent(onBlur);\n }\n });\n\n useEffect(() => {\n if (autoFocus && editableElementRef.current) {\n editableElementRef.current.focus();\n }\n // Intentionally run only on mount — autoFocus should fire once\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const ownerWindow = (editableElementRef.current?.ownerDocument ?? document).defaultView ?? window;\n const handleResize = () => adjustInputHeight();\n ownerWindow.addEventListener('resize', handleResize);\n return () => {\n ownerWindow.removeEventListener('resize', handleResize);\n };\n }, [adjustInputHeight, editableElementRef]);\n\n const menuLoadMoreResult = useMenuLoadMore({\n menu: activeMenu ?? { id: '', trigger: '', options: [] },\n statusType: activeMenu?.statusType ?? 'finished',\n onLoadItems: detail => {\n fireNonCancelableEvent(onMenuLoadItems, detail);\n },\n onLoadMoreItems: () => {\n fireNonCancelableEvent(onMenuLoadItems, {\n menuId: activeMenu?.id ?? '',\n filteringText: undefined,\n firstPage: false,\n samePage: false,\n });\n },\n });\n\n const menuLoadMoreHandlers = activeMenu ? menuLoadMoreResult : null;\n\n useEffect(() => {\n if (menuIsOpen && activeMenu && menuLoadMoreHandlers) {\n menuLoadMoreHandlers.fireLoadMoreOnMenuOpen();\n }\n }, [menuIsOpen, activeMenu, menuLoadMoreHandlers]);\n\n const prevMenuOpenRef = useRef(false);\n const prevItemsLengthRef = useRef(0);\n\n useEffect(() => {\n const justOpened = menuIsOpen && !prevMenuOpenRef.current;\n const itemsLoaded =\n menuIsOpen && prevMenuOpenRef.current && prevItemsLengthRef.current === 0 && menuItemsState.items.length > 0;\n\n if ((justOpened || itemsLoaded) && menuItemsHandlers && menuItemsState && menuItemsState.items.length > 0) {\n // Reset highlight so goHomeWithKeyboard triggers a state change even at index 0\n menuItemsHandlers.resetHighlightWithKeyboard();\n setTimeout(() => {\n menuItemsHandlers?.goHomeWithKeyboard();\n }, NEXT_TICK_TIMEOUT);\n }\n\n prevMenuOpenRef.current = menuIsOpen;\n prevItemsLengthRef.current = menuItemsState?.items.length ?? 0;\n // eslint-disable-next-line react-hooks/exhaustive-deps -- only needs to react to menu open/close and item count changes\n }, [menuIsOpen, menuItemsState.items.length]);\n\n useEffect(() => {\n if (activeTriggerToken && activeMenu && onMenuFilter) {\n fireNonCancelableEvent(onMenuFilter, {\n menuId: activeMenu.id,\n filteringText: activeTriggerToken.value,\n });\n }\n }, [activeTriggerToken, activeMenu, onMenuFilter]);\n\n const handleLoadMore = useStableCallback(() => {\n if (menuLoadMoreHandlers) {\n menuLoadMoreHandlers.fireLoadMoreOnScroll();\n }\n });\n\n const menuListId = useUniqueId('menu-list');\n const menuFooterControlId = useUniqueId('menu-footer');\n const highlightedMenuOptionIdSource = useUniqueId();\n const highlightedMenuOptionId = menuItemsState?.highlightedOption ? highlightedMenuOptionIdSource : undefined;\n\n const menuDropdownStatusResult = useDropdownStatus({\n ...(activeMenu ?? {}),\n isEmpty: !menuItemsState || menuItemsState.items.length === 0,\n recoveryText: i18nStrings?.menuRecoveryText,\n errorIconAriaLabel: i18nStrings?.menuErrorIconAriaLabel,\n loadingText: i18nStrings?.menuLoadingText,\n finishedText: i18nStrings?.menuFinishedText,\n errorText: i18nStrings?.menuErrorText,\n onRecoveryClick: () => {\n if (menuLoadMoreHandlers) {\n menuLoadMoreHandlers.fireLoadMoreOnRecoveryClick();\n }\n editableElementRef.current?.focus();\n },\n hasRecoveryCallback: Boolean(onMenuLoadItems),\n });\n\n const menuDropdownStatus = activeMenu ? menuDropdownStatusResult : null;\n\n const shouldRenderMenuDropdown = useMemo(() => {\n return !!(menuIsOpen && activeMenu && menuItemsState && triggerVisible);\n }, [menuIsOpen, activeMenu, menuItemsState, triggerVisible]);\n\n const showPlaceholder = !!(placeholder && (!tokens || tokens.length === 0) && !composing);\n\n const editableElementAttributes: React.HTMLAttributes<HTMLDivElement> & { 'data-placeholder'?: string } = {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n 'aria-invalid': invalid ? 'true' : undefined,\n 'aria-disabled': disabled ? 'true' : undefined,\n 'aria-readonly': readOnly ? 'true' : undefined,\n 'aria-required': ariaRequired ? 'true' : undefined,\n 'data-placeholder': placeholder,\n className: clsx(styles.textarea, testutilStyles.textarea, {\n [styles.invalid]: invalid,\n [styles.warning]: warning,\n [styles['textarea-disabled']]: disabled,\n [styles['textarea-readonly']]: readOnly,\n [styles['placeholder-visible']]: showPlaceholder,\n }),\n autoCorrect: disableBrowserAutocorrect ? 'off' : undefined,\n autoCapitalize: disableBrowserAutocorrect ? 'off' : undefined,\n spellCheck: spellcheck,\n // When disabled, omit tabIndex entirely so the div is not focusable at all.\n tabIndex: disabled ? undefined : 0,\n onKeyDown: handleEditableElementKeyDown,\n onKeyUp: onKeyUp && (event => fireKeyboardEvent(onKeyUp, event)),\n onBlur: handleEditableElementBlur,\n onFocus: handleEditableElementFocus,\n onCopy: (event: React.ClipboardEvent) => {\n if (editableElementRef.current) {\n handleClipboardEvent(event, editableElementRef.current, false);\n }\n },\n onCut: (event: React.ClipboardEvent) => {\n if (editableElementRef.current) {\n handleClipboardEvent(event, editableElementRef.current, !disabled && !readOnly);\n if (!disabled && !readOnly) {\n handleInput();\n }\n }\n },\n onPaste: (event: React.ClipboardEvent) => {\n event.preventDefault();\n if (disabled || readOnly) {\n return;\n }\n const text = event.clipboardData.getData('text/plain');\n if (!text || !editableElementRef.current || !caretControllerRef.current) {\n return;\n }\n const cc = caretControllerRef.current;\n // Pass undefined for caretStart/caretEnd — let insertText calculate\n // the position after the selection is deleted by replaceSelection.\n insertTextIntoContentEditable(editableElementRef.current, text, undefined, undefined, cc, true);\n },\n };\n\n const portals = portalContainers.map(container =>\n ReactDOM.createPortal(\n <Token key={container.id} variant=\"inline\" label={container.label} disabled={!!disabled} readOnly={!!readOnly} />,\n container.element\n )\n );\n\n return {\n portalContainersRef,\n portalContainers,\n portals,\n editableState,\n editableElementAttributes,\n activeTriggerToken,\n activeMenu,\n menuIsOpen,\n menuFilterText,\n triggerWrapperRef,\n triggerWrapperReady,\n menuListId,\n menuFooterControlId,\n highlightedMenuOptionId,\n menuItemsState,\n menuItemsHandlers,\n menuDropdownStatus,\n shouldRenderMenuDropdown,\n handleInput: () => {\n // Skip processing during IME composition — intermediate input events fire\n // for each keystroke during CJK composition and must not trigger token\n // detection. The onCompositionEnd callback calls handleInput directly\n // (bypassing this guard) once the final text is committed.\n // Note: we use `composing` (React state) rather than `isComposing()` (ref)\n // so that input events after compositionend — such as the user immediately\n // deleting the committed text — are processed normally. The spurious-Enter\n // guard in the keyboard handler uses `isComposing()` separately.\n if (!composing) {\n handleInput();\n }\n },\n handleLoadMore,\n tokenOperationAnnouncement,\n markTokensAsSent,\n };\n}\n"]}
@@ -1,3 +1,4 @@
1
+ import { AutosuggestProps } from '../autosuggest/interfaces';
1
2
  import { NonCancelableEventHandler } from '../internal/events/index';
2
3
  import { ComparisonOperator, FilteringProperty, LoadItemsDetail } from './interfaces';
3
4
  /**
@@ -10,5 +11,5 @@ import { ComparisonOperator, FilteringProperty, LoadItemsDetail } from './interf
10
11
  export declare const useLoadItems: (onLoadItems?: NonCancelableEventHandler<LoadItemsDetail>, focusFilteringText?: string, currentFilteringProperty?: FilteringProperty, currentFilteringText?: string, currentFilteringOperator?: ComparisonOperator) => {
11
12
  onBlur: () => void;
12
13
  onFocus: () => void;
13
- onLoadItems: NonCancelableEventHandler<import("../dropdown/interfaces").OptionsLoadItemsDetail>;
14
+ onLoadItems: NonCancelableEventHandler<AutosuggestProps.LoadItemsDetail>;
14
15
  };
@@ -1 +1 @@
1
- {"version":3,"file":"use-load-items.d.ts","sourceRoot":"","sources":["../../../src/property-filter/use-load-items.ts"],"names":[],"mappings":"AAKA,OAAO,EAA0B,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAC7F,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEtF;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GACvB,cAAc,yBAAyB,CAAC,eAAe,CAAC,EACxD,qBAAqB,MAAM,EAC3B,2BAA2B,iBAAiB,EAC5C,uBAAuB,MAAM,EAC7B,2BAA2B,kBAAkB;;;;CA2B9C,CAAC"}
1
+ {"version":3,"file":"use-load-items.d.ts","sourceRoot":"","sources":["../../../src/property-filter/use-load-items.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAA0B,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAC7F,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEtF;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GACvB,cAAc,yBAAyB,CAAC,eAAe,CAAC,EACxD,qBAAqB,MAAM,EAC3B,2BAA2B,iBAAiB,EAC5C,uBAAuB,MAAM,EAC7B,2BAA2B,kBAAkB;;;;CA2B9C,CAAC"}
@@ -144,6 +144,7 @@ export interface SelectProps extends BaseSelectProps {
144
144
  * For use with collection select filters only.
145
145
  */
146
146
  inlineLabelText?: string;
147
+ onLoadItems?: NonCancelableEventHandler<SelectProps.LoadItemsDetail>;
147
148
  /**
148
149
  * Adds `aria-labelledby` to the component. If you're using this component within a form field,
149
150
  * don't set this property because the form field component automatically sets it.
@@ -209,7 +210,7 @@ export declare namespace SelectProps {
209
210
  item: SelectItem;
210
211
  filterText?: string;
211
212
  }) => ReactNode | null;
212
- type LoadItemsDetail = OptionsLoadItemsDetail;
213
+ interface LoadItemsDetail extends OptionsLoadItemsDetail {}
213
214
  interface ChangeDetail {
214
215
  selectedOption: Option;
215
216
  }
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/select/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/select/interfaces.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/select/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { ReactNode } from 'react';\n\nimport { BaseDropdownHostProps, OptionsFilteringType, OptionsLoadItemsDetail } from '../dropdown/interfaces';\nimport { BaseComponentProps } from '../internal/base-component';\nimport { DropdownStatusProps } from '../internal/components/dropdown-status/interfaces';\nimport { OptionDefinition, OptionGroup as OptionGroupDefinition } from '../internal/components/option/interfaces';\nimport { FormFieldValidationControlProps } from '../internal/context/form-field-context';\nimport { NonCancelableEventHandler } from '../internal/events';\n\nexport interface BaseSelectProps\n extends BaseDropdownHostProps,\n BaseComponentProps,\n FormFieldValidationControlProps,\n DropdownStatusProps {\n /**\n * Specifies an array of options that are displayed to the user as a dropdown list.\n * The options can be grouped using `OptionGroup` objects.\n *\n * #### Option\n * - `value` (string) - The returned value of the option when selected.\n *\n * #### OptionGroup\n * - `value` (string) - Used to locate option group in test utils.\n * - `options` (Option[]) - (Optional) The options under this group.\n *\n * #### Shared Option and OptionGroup properties\n * - `label` (string) - (Optional) Option or group text displayed to the user.\n * - `lang` (string) - (Optional) The language of the option or group, provided as a BCP 47 language tag.\n * - `description` (string) - (Optional) Further information about the option or group that appears below the label.\n * - `disabled` (boolean) - (Optional) Determines whether the option or group is disabled.\n * - `disabledReason` (string) - (Optional) Displays tooltip near the item when disabled. Use to provide additional context.\n * - `labelTag` (string) - (Optional) A label tag that provides additional guidance, shown next to the label.\n * - `tags` [string[]] - (Optional) A list of tags giving further guidance about the option or group.\n * - `filteringTags` [string[]] - (Optional) A list of additional tags used for automatic filtering.\n * - `iconName` (string) - (Optional) Specifies the name of an [icon](/components/icon/) to display in the option or group.\n * - `iconAriaLabel` (string) - (Optional) Specifies alternate text for the icon. We recommend that you provide this for accessibility.\n * - `iconAlt` (string) - (Optional) **Deprecated**, replaced by \\`iconAriaLabel\\`. Specifies alternate text for a custom icon, for use with `iconUrl`.\n * - `iconUrl` (string) - (Optional) URL of a custom icon.\n * - `iconSvg` (ReactNode) - (Optional) Custom SVG icon. Equivalent to the `svg` slot of the [icon component](/components/icon/).\n *\n * Note: Only one level of option nesting is supported.\n *\n * If you want to use the built-in filtering capabilities of this component, provide\n * a list of all valid options here and they will be automatically filtered based on the user's filtering input.\n *\n * Alternatively, you can listen to the `onChange` or `onLoadItems` event and set new options\n * on your own.\n **/\n options?: SelectProps.Options;\n\n /**\n * Determines how filtering is applied to the list of `options`:\n *\n * * `auto` - The component will automatically filter options based on user input.\n * * `manual` - You will set up `onChange` or `onLoadItems` event listeners and filter options on your side or request\n * them from server.\n *\n * By default the component will filter the provided `options` based on the value of the filtering input field.\n * Only options that have a `value`, `label`, `description` or `labelTag` that contains the input value as a substring\n * are displayed in the list of options.\n *\n * If you set this property to `manual`, this default filtering mechanism is disabled and all provided `options` are\n * displayed in the dropdown list. In that case make sure that you use the `onChange` or `onLoadItems` events in order\n * to set the `options` property to the options that are relevant for the user, given the filtering input value.\n *\n * Note: Manual filtering doesn't disable match highlighting.\n **/\n filteringType?: OptionsFilteringType;\n\n /**\n * Determines whether the whole select component is disabled.\n */\n disabled?: boolean;\n /**\n * Specifies the placeholder to display in the filtering input if filtering is enabled.\n */\n filteringPlaceholder?: string;\n\n /**\n * Specifies the text to display with the number of matches at the bottom of the dropdown menu while filtering.\n */\n filteringResultsText?: (matchesCount: number, totalCount: number) => string;\n /**\n * Adds an `aria-label` on the built-in filtering input if filtering is enabled.\n */\n filteringAriaLabel?: string;\n /**\n * Adds an `aria-label` to the clear button inside the search input.\n * @i18n\n */\n filteringClearAriaLabel?: string;\n /**\n * @deprecated Has no effect.\n */\n name?: string;\n /**\n * Specifies the hint text that's displayed in the field when no option has been selected.\n */\n placeholder?: string;\n /**\n * Specifies the ID for the trigger component. It uses an automatically generated ID by default.\n */\n controlId?: string;\n /**\n * Adds `aria-required` to the native input element.\n */\n ariaRequired?: boolean;\n /**\n * Adds `aria-label` to the select element.\n * Use this if you don't have a visible label for this control.\n */\n ariaLabel?: string;\n /**\n * Specifies the localized string that describes an option as being selected.\n * This is required to provide a good screen reader experience. For more information, see the\n * [accessibility guidelines](/components/select/?tabId=usage#accessibility-guidelines).\n * @i18n\n */\n selectedAriaLabel?: string;\n /**\n * Overrides the element that is announced to screen readers\n * when the highlighted option changes. By default, this announces\n * the option's name and properties, and its selected state if\n * the `selectedAriaLabel` property is defined.\n * The highlighted option is provided, and its group (if groups\n * are used and it differs from the group of the previously highlighted option).\n *\n * For more information, see the\n * [accessibility guidelines](/components/select/?tabId=usage#accessibility-guidelines).\n */\n renderHighlightedAriaLive?: SelectProps.ContainingOptionAndGroupString;\n /**\n * Displayed for `filteringType=\"auto\"` when there are no matches for the filtering.\n */\n noMatch?: React.ReactNode;\n /**\n * Called when input focus is removed from the UI control.\n */\n onBlur?: NonCancelableEventHandler;\n /**\n * Called when input focus is set onto the UI control.\n */\n onFocus?: NonCancelableEventHandler;\n\n /**\n * Specifies if the control is read-only, which prevents the\n * user from both modifying the value and opening the dropdown. A read-only control is still focusable.\n */\n readOnly?: boolean;\n}\n\nexport interface SelectProps extends BaseSelectProps {\n /**\n * Adds a small label inline with the input for saving vertical space in the UI.\n * For use with collection select filters only.\n */\n inlineLabelText?: string;\n /**\n * Adds `aria-labelledby` to the component. If you're using this component within a form field,\n * don't set this property because the form field component automatically sets it.\n *\n * Use this property if the component isn't using `inlineLabelText` and isn't surrounded by a form field, or you want to override the value\n * automatically set by the form field (for example, if you have two components within a single form field).\n *\n * To use it correctly, define an ID for the element you want to use as label and set the property to that ID.\n */\n ariaLabelledby?: string;\n /**\n * Defines the variant of the trigger. You can use a simple label or the entire option (`label | option`)\n */\n triggerVariant?: SelectProps.TriggerVariant;\n /**\n * Specifies the currently selected option.\n * If you want to clear the selection, use `null`.\n */\n selectedOption: SelectProps.Option | null;\n /**\n * Called when the user selects an option.\n * The event `detail` contains the current `selectedOption`.\n */\n onChange?: NonCancelableEventHandler<SelectProps.ChangeDetail>;\n\n /**\n * Automatically focuses the trigger when component is mounted.\n */\n autoFocus?: boolean;\n /**\n * Specifies a render function to render custom options in the dropdown menu or trigger.\n *\n * @awsuiSystem core\n */\n renderOption?: SelectProps.SelectOptionItemRenderer;\n}\n\nexport namespace SelectProps {\n export type FilteringType = OptionsFilteringType;\n export type TriggerVariant = 'label' | 'option';\n\n export type Option = OptionDefinition;\n export type OptionGroup = OptionGroupDefinition;\n export type Options = ReadonlyArray<Option | OptionGroup>;\n\n export interface SelectOptionItem {\n type: 'item';\n index: number;\n option: Option;\n highlighted: boolean;\n selected: boolean;\n disabled: boolean;\n parent: SelectOptionGroupItem | null;\n }\n export interface SelectOptionGroupItem {\n type: 'group';\n index: number;\n option: OptionGroup;\n disabled: boolean;\n }\n export interface SelectTriggerOptionItem {\n type: 'trigger';\n option: Option;\n }\n export type SelectItem = SelectOptionItem | SelectOptionGroupItem | SelectTriggerOptionItem;\n export type SelectOptionItemRenderer = (props: { item: SelectItem; filterText?: string }) => ReactNode | null;\n\n export type LoadItemsDetail = OptionsLoadItemsDetail;\n\n export interface ChangeDetail {\n selectedOption: Option;\n }\n\n export interface ContainingOptionAndGroupString {\n (option: Option, group?: OptionGroup): string;\n }\n\n export interface Ref {\n /**\n * Sets focus on the element without opening the dropdown or showing a visual focus indicator.\n */\n focus(): void;\n }\n}\n"]}
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/select/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { ReactNode } from 'react';\n\nimport { BaseDropdownHostProps, OptionsFilteringType, OptionsLoadItemsDetail } from '../dropdown/interfaces';\nimport { BaseComponentProps } from '../internal/base-component';\nimport { DropdownStatusProps } from '../internal/components/dropdown-status/interfaces';\nimport { OptionDefinition, OptionGroup as OptionGroupDefinition } from '../internal/components/option/interfaces';\nimport { FormFieldValidationControlProps } from '../internal/context/form-field-context';\nimport { NonCancelableEventHandler } from '../internal/events';\n\nexport interface BaseSelectProps\n extends BaseDropdownHostProps,\n BaseComponentProps,\n FormFieldValidationControlProps,\n DropdownStatusProps {\n /**\n * Specifies an array of options that are displayed to the user as a dropdown list.\n * The options can be grouped using `OptionGroup` objects.\n *\n * #### Option\n * - `value` (string) - The returned value of the option when selected.\n *\n * #### OptionGroup\n * - `value` (string) - Used to locate option group in test utils.\n * - `options` (Option[]) - (Optional) The options under this group.\n *\n * #### Shared Option and OptionGroup properties\n * - `label` (string) - (Optional) Option or group text displayed to the user.\n * - `lang` (string) - (Optional) The language of the option or group, provided as a BCP 47 language tag.\n * - `description` (string) - (Optional) Further information about the option or group that appears below the label.\n * - `disabled` (boolean) - (Optional) Determines whether the option or group is disabled.\n * - `disabledReason` (string) - (Optional) Displays tooltip near the item when disabled. Use to provide additional context.\n * - `labelTag` (string) - (Optional) A label tag that provides additional guidance, shown next to the label.\n * - `tags` [string[]] - (Optional) A list of tags giving further guidance about the option or group.\n * - `filteringTags` [string[]] - (Optional) A list of additional tags used for automatic filtering.\n * - `iconName` (string) - (Optional) Specifies the name of an [icon](/components/icon/) to display in the option or group.\n * - `iconAriaLabel` (string) - (Optional) Specifies alternate text for the icon. We recommend that you provide this for accessibility.\n * - `iconAlt` (string) - (Optional) **Deprecated**, replaced by \\`iconAriaLabel\\`. Specifies alternate text for a custom icon, for use with `iconUrl`.\n * - `iconUrl` (string) - (Optional) URL of a custom icon.\n * - `iconSvg` (ReactNode) - (Optional) Custom SVG icon. Equivalent to the `svg` slot of the [icon component](/components/icon/).\n *\n * Note: Only one level of option nesting is supported.\n *\n * If you want to use the built-in filtering capabilities of this component, provide\n * a list of all valid options here and they will be automatically filtered based on the user's filtering input.\n *\n * Alternatively, you can listen to the `onChange` or `onLoadItems` event and set new options\n * on your own.\n **/\n options?: SelectProps.Options;\n\n /**\n * Determines how filtering is applied to the list of `options`:\n *\n * * `auto` - The component will automatically filter options based on user input.\n * * `manual` - You will set up `onChange` or `onLoadItems` event listeners and filter options on your side or request\n * them from server.\n *\n * By default the component will filter the provided `options` based on the value of the filtering input field.\n * Only options that have a `value`, `label`, `description` or `labelTag` that contains the input value as a substring\n * are displayed in the list of options.\n *\n * If you set this property to `manual`, this default filtering mechanism is disabled and all provided `options` are\n * displayed in the dropdown list. In that case make sure that you use the `onChange` or `onLoadItems` events in order\n * to set the `options` property to the options that are relevant for the user, given the filtering input value.\n *\n * Note: Manual filtering doesn't disable match highlighting.\n **/\n filteringType?: OptionsFilteringType;\n\n /**\n * Determines whether the whole select component is disabled.\n */\n disabled?: boolean;\n /**\n * Specifies the placeholder to display in the filtering input if filtering is enabled.\n */\n filteringPlaceholder?: string;\n\n /**\n * Specifies the text to display with the number of matches at the bottom of the dropdown menu while filtering.\n */\n filteringResultsText?: (matchesCount: number, totalCount: number) => string;\n /**\n * Adds an `aria-label` on the built-in filtering input if filtering is enabled.\n */\n filteringAriaLabel?: string;\n /**\n * Adds an `aria-label` to the clear button inside the search input.\n * @i18n\n */\n filteringClearAriaLabel?: string;\n /**\n * @deprecated Has no effect.\n */\n name?: string;\n /**\n * Specifies the hint text that's displayed in the field when no option has been selected.\n */\n placeholder?: string;\n /**\n * Specifies the ID for the trigger component. It uses an automatically generated ID by default.\n */\n controlId?: string;\n /**\n * Adds `aria-required` to the native input element.\n */\n ariaRequired?: boolean;\n /**\n * Adds `aria-label` to the select element.\n * Use this if you don't have a visible label for this control.\n */\n ariaLabel?: string;\n /**\n * Specifies the localized string that describes an option as being selected.\n * This is required to provide a good screen reader experience. For more information, see the\n * [accessibility guidelines](/components/select/?tabId=usage#accessibility-guidelines).\n * @i18n\n */\n selectedAriaLabel?: string;\n /**\n * Overrides the element that is announced to screen readers\n * when the highlighted option changes. By default, this announces\n * the option's name and properties, and its selected state if\n * the `selectedAriaLabel` property is defined.\n * The highlighted option is provided, and its group (if groups\n * are used and it differs from the group of the previously highlighted option).\n *\n * For more information, see the\n * [accessibility guidelines](/components/select/?tabId=usage#accessibility-guidelines).\n */\n renderHighlightedAriaLive?: SelectProps.ContainingOptionAndGroupString;\n /**\n * Displayed for `filteringType=\"auto\"` when there are no matches for the filtering.\n */\n noMatch?: React.ReactNode;\n /**\n * Called when input focus is removed from the UI control.\n */\n onBlur?: NonCancelableEventHandler;\n /**\n * Called when input focus is set onto the UI control.\n */\n onFocus?: NonCancelableEventHandler;\n\n /**\n * Specifies if the control is read-only, which prevents the\n * user from both modifying the value and opening the dropdown. A read-only control is still focusable.\n */\n readOnly?: boolean;\n}\n\nexport interface SelectProps extends BaseSelectProps {\n /**\n * Adds a small label inline with the input for saving vertical space in the UI.\n * For use with collection select filters only.\n */\n inlineLabelText?: string;\n onLoadItems?: NonCancelableEventHandler<SelectProps.LoadItemsDetail>;\n /**\n * Adds `aria-labelledby` to the component. If you're using this component within a form field,\n * don't set this property because the form field component automatically sets it.\n *\n * Use this property if the component isn't using `inlineLabelText` and isn't surrounded by a form field, or you want to override the value\n * automatically set by the form field (for example, if you have two components within a single form field).\n *\n * To use it correctly, define an ID for the element you want to use as label and set the property to that ID.\n */\n ariaLabelledby?: string;\n /**\n * Defines the variant of the trigger. You can use a simple label or the entire option (`label | option`)\n */\n triggerVariant?: SelectProps.TriggerVariant;\n /**\n * Specifies the currently selected option.\n * If you want to clear the selection, use `null`.\n */\n selectedOption: SelectProps.Option | null;\n /**\n * Called when the user selects an option.\n * The event `detail` contains the current `selectedOption`.\n */\n onChange?: NonCancelableEventHandler<SelectProps.ChangeDetail>;\n\n /**\n * Automatically focuses the trigger when component is mounted.\n */\n autoFocus?: boolean;\n /**\n * Specifies a render function to render custom options in the dropdown menu or trigger.\n *\n * @awsuiSystem core\n */\n renderOption?: SelectProps.SelectOptionItemRenderer;\n}\n\nexport namespace SelectProps {\n export type FilteringType = OptionsFilteringType;\n export type TriggerVariant = 'label' | 'option';\n\n export type Option = OptionDefinition;\n export type OptionGroup = OptionGroupDefinition;\n export type Options = ReadonlyArray<Option | OptionGroup>;\n\n export interface SelectOptionItem {\n type: 'item';\n index: number;\n option: Option;\n highlighted: boolean;\n selected: boolean;\n disabled: boolean;\n parent: SelectOptionGroupItem | null;\n }\n export interface SelectOptionGroupItem {\n type: 'group';\n index: number;\n option: OptionGroup;\n disabled: boolean;\n }\n export interface SelectTriggerOptionItem {\n type: 'trigger';\n option: Option;\n }\n export type SelectItem = SelectOptionItem | SelectOptionGroupItem | SelectTriggerOptionItem;\n export type SelectOptionItemRenderer = (props: { item: SelectItem; filterText?: string }) => ReactNode | null;\n\n /* eslint-disable-next-line @typescript-eslint/no-empty-object-type --\n * Required to create a distinct named type for the documenter.\n **/\n export interface LoadItemsDetail extends OptionsLoadItemsDetail {}\n\n export interface ChangeDetail {\n selectedOption: Option;\n }\n\n export interface ContainingOptionAndGroupString {\n (option: Option, group?: OptionGroup): string;\n }\n\n export interface Ref {\n /**\n * Sets focus on the element without opening the dropdown or showing a visual focus indicator.\n */\n focus(): void;\n }\n}\n"]}
@@ -1,25 +1,25 @@
1
1
 
2
2
  import './styles.scoped.css';
3
3
  export default {
4
- "placeholder": "awsui_placeholder_dwuol_r15lx_145",
5
- "item": "awsui_item_dwuol_r15lx_150",
6
- "checkbox": "awsui_checkbox_dwuol_r15lx_154",
7
- "option-group": "awsui_option-group_dwuol_r15lx_163",
8
- "filter": "awsui_filter_dwuol_r15lx_167",
9
- "trigger": "awsui_trigger_dwuol_r15lx_172",
10
- "layout-strut": "awsui_layout-strut_dwuol_r15lx_178",
11
- "list-bottom": "awsui_list-bottom_dwuol_r15lx_184",
12
- "selected-icon": "awsui_selected-icon_dwuol_r15lx_188",
13
- "show-label-tag": "awsui_show-label-tag_dwuol_r15lx_193",
14
- "inline-token-trigger": "awsui_inline-token-trigger_dwuol_r15lx_197",
15
- "inline-token-list": "awsui_inline-token-list_dwuol_r15lx_204",
16
- "inline-token-hidden-placeholder": "awsui_inline-token-hidden-placeholder_dwuol_r15lx_218",
17
- "inline-token-counter": "awsui_inline-token-counter_dwuol_r15lx_224",
18
- "inline-label-trigger-wrapper": "awsui_inline-label-trigger-wrapper_dwuol_r15lx_228",
19
- "inline-label-wrapper": "awsui_inline-label-wrapper_dwuol_r15lx_232",
20
- "inline-label": "awsui_inline-label_dwuol_r15lx_228",
21
- "inline-label-disabled": "awsui_inline-label-disabled_dwuol_r15lx_257",
22
- "inline-label-inline-tokens": "awsui_inline-label-inline-tokens_dwuol_r15lx_261",
23
- "disabled-reason-tooltip": "awsui_disabled-reason-tooltip_dwuol_r15lx_266"
4
+ "placeholder": "awsui_placeholder_dwuol_1nllu_145",
5
+ "item": "awsui_item_dwuol_1nllu_151",
6
+ "checkbox": "awsui_checkbox_dwuol_1nllu_155",
7
+ "option-group": "awsui_option-group_dwuol_1nllu_164",
8
+ "filter": "awsui_filter_dwuol_1nllu_168",
9
+ "trigger": "awsui_trigger_dwuol_1nllu_173",
10
+ "layout-strut": "awsui_layout-strut_dwuol_1nllu_179",
11
+ "list-bottom": "awsui_list-bottom_dwuol_1nllu_185",
12
+ "selected-icon": "awsui_selected-icon_dwuol_1nllu_189",
13
+ "show-label-tag": "awsui_show-label-tag_dwuol_1nllu_194",
14
+ "inline-token-trigger": "awsui_inline-token-trigger_dwuol_1nllu_198",
15
+ "inline-token-list": "awsui_inline-token-list_dwuol_1nllu_205",
16
+ "inline-token-hidden-placeholder": "awsui_inline-token-hidden-placeholder_dwuol_1nllu_219",
17
+ "inline-token-counter": "awsui_inline-token-counter_dwuol_1nllu_225",
18
+ "inline-label-trigger-wrapper": "awsui_inline-label-trigger-wrapper_dwuol_1nllu_229",
19
+ "inline-label-wrapper": "awsui_inline-label-wrapper_dwuol_1nllu_233",
20
+ "inline-label": "awsui_inline-label_dwuol_1nllu_229",
21
+ "inline-label-disabled": "awsui_inline-label-disabled_dwuol_1nllu_258",
22
+ "inline-label-inline-tokens": "awsui_inline-label-inline-tokens_dwuol_1nllu_262",
23
+ "disabled-reason-tooltip": "awsui_disabled-reason-tooltip_dwuol_1nllu_267"
24
24
  };
25
25