@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.
- package/app-layout/visual-refresh-toolbar/state/use-feature-notifications.d.ts.map +1 -1
- package/app-layout/visual-refresh-toolbar/state/use-feature-notifications.js +1 -4
- package/app-layout/visual-refresh-toolbar/state/use-feature-notifications.js.map +1 -1
- package/autosuggest/interfaces.d.ts +2 -1
- package/autosuggest/interfaces.d.ts.map +1 -1
- package/autosuggest/interfaces.js.map +1 -1
- package/date-range-picker/styles.css.js +23 -23
- package/date-range-picker/styles.scoped.css +34 -32
- package/date-range-picker/styles.selectors.js +23 -23
- package/file-token-group/styles.css.js +23 -23
- package/file-token-group/styles.scoped.css +34 -34
- package/file-token-group/styles.selectors.js +23 -23
- package/icon/generated/icons.d.ts +1 -0
- package/icon/generated/icons.d.ts.map +1 -1
- package/icon/generated/icons.js +3 -0
- package/icon/generated/icons.js.map +1 -1
- package/icon-provider/interfaces.d.ts +1 -1
- package/icon-provider/interfaces.d.ts.map +1 -1
- package/icon-provider/interfaces.js.map +1 -1
- package/internal/base-component/styles.scoped.css +1 -1
- package/internal/components/button-trigger/styles.css.js +14 -14
- package/internal/components/button-trigger/styles.scoped.css +32 -28
- package/internal/components/button-trigger/styles.selectors.js +14 -14
- package/internal/environment.js +2 -2
- package/internal/environment.json +2 -2
- package/internal/generated/theming/index.cjs +7 -0
- package/internal/generated/theming/index.cjs.d.ts +27 -0
- package/internal/generated/theming/index.d.ts +27 -0
- package/internal/generated/theming/index.js +7 -0
- package/internal/hooks/use-ime-composition/index.d.ts +20 -1
- package/internal/hooks/use-ime-composition/index.d.ts.map +1 -1
- package/internal/hooks/use-ime-composition/index.js +15 -2
- package/internal/hooks/use-ime-composition/index.js.map +1 -1
- package/internal/manifest.json +1 -1
- package/multiselect/interfaces.d.ts +3 -0
- package/multiselect/interfaces.d.ts.map +1 -1
- package/multiselect/interfaces.js.map +1 -1
- package/package.json +1 -1
- package/prompt-input/core/event-handlers.d.ts +2 -0
- package/prompt-input/core/event-handlers.d.ts.map +1 -1
- package/prompt-input/core/event-handlers.js +4 -2
- package/prompt-input/core/event-handlers.js.map +1 -1
- package/prompt-input/internal.js +1 -1
- package/prompt-input/internal.js.map +1 -1
- package/prompt-input/styles.css.js +26 -26
- package/prompt-input/styles.scoped.css +61 -62
- package/prompt-input/styles.selectors.js +26 -26
- package/prompt-input/tokens/use-token-mode.d.ts.map +1 -1
- package/prompt-input/tokens/use-token-mode.js +37 -2
- package/prompt-input/tokens/use-token-mode.js.map +1 -1
- package/property-filter/use-load-items.d.ts +2 -1
- package/property-filter/use-load-items.d.ts.map +1 -1
- package/select/interfaces.d.ts +2 -1
- package/select/interfaces.d.ts.map +1 -1
- package/select/interfaces.js.map +1 -1
- package/select/parts/styles.css.js +20 -20
- package/select/parts/styles.scoped.css +23 -21
- package/select/parts/styles.selectors.js +20 -20
- package/token/styles.css.js +14 -14
- package/token/styles.scoped.css +28 -30
- package/token/styles.selectors.js +14 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-handlers.js","sourceRoot":"","sources":["../../../../src/prompt-input/core/event-handlers.ts"],"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 { findUpUntil } from '@cloudscape-design/component-toolkit/dom';\n\nimport { fireKeyboardEvent } from '../../internal/events';\nimport { isHTMLElement } from '../../internal/utils/dom';\nimport handleKey from '../../internal/utils/handle-key';\nimport { PromptInputProps } from '../interfaces';\nimport { EditableState } from '../tokens/use-token-mode';\nimport { CaretController, getOwnerSelection, TOKEN_LENGTHS } from './caret-controller';\nimport { ElementType } from './constants';\nimport {\n createParagraph,\n createTrailingBreak,\n findAdjacentToken,\n findAllParagraphs,\n getTokenType,\n insertAfter,\n isCaretSpotType,\n isElementEffectivelyEmpty,\n isReferenceElementType,\n stripZeroWidthCharacters,\n} from './dom-utils';\nimport { MenuItemsHandlers, MenuItemsState } from './menu-state';\nimport { getPromptText } from './token-operations';\nimport { removeTokenRange } from './token-utils';\nimport { handleDeleteAfterTrigger, handleSpaceInOpenMenu } from './trigger-utils';\nimport { isBreakTextToken, isBRElement, isTextNode } from './type-guards';\n\n/** Configuration for the unified keyboard event handler. */\nexport interface KeyboardHandlerProps {\n editableElement: HTMLDivElement | null;\n editableState: EditableState;\n caretController: CaretController | null;\n tokens?: readonly PromptInputProps.InputToken[];\n tokensToText?: (tokens: readonly PromptInputProps.InputToken[]) => string;\n disabled?: boolean;\n readOnly?: boolean;\n i18nStrings?: PromptInputProps.I18nStrings;\n announceTokenOperation?: (message: string) => void;\n\n // Menu state\n getMenuOpen: () => boolean;\n getMenuItemsState: () => MenuItemsState | null;\n getMenuItemsHandlers: () => MenuItemsHandlers | null;\n getMenuStatusType?: () => PromptInputProps.MenuDefinition['statusType'];\n closeMenu: () => void;\n\n // Callbacks\n onAction?: (detail: PromptInputProps.ActionDetail) => void;\n onChange: (detail: { value: string; tokens: PromptInputProps.InputToken[] }) => void;\n markTokensAsSent: (tokens: readonly PromptInputProps.InputToken[]) => void;\n onKeyDown?: PromptInputProps['onKeyDown'];\n}\n\n/** Handles all keyboard events for the editable element. */\nexport function handleEditableKeyDown(event: React.KeyboardEvent<HTMLDivElement>, props: KeyboardHandlerProps): void {\n const { editableElement, editableState, caretController, tokens, tokensToText } = props;\n\n const emitChange = (detail: { value: string; tokens: PromptInputProps.InputToken[] }) => {\n props.markTokensAsSent(detail.tokens);\n props.onChange(detail);\n };\n\n const emitTokenDeletion = (newTokens: PromptInputProps.InputToken[], caretPos: number) => {\n const value = tokensToText ? tokensToText(newTokens) : getPromptText(newTokens);\n // Don't mark as sent — selection deletions use preventDefault so the DOM\n // is NOT updated by the browser. The render effect must see these as an\n // external change and re-render the DOM to match the new token state.\n props.onChange({ value, tokens: newTokens });\n if (caretController) {\n caretController.setCapturedPosition(caretPos);\n }\n };\n\n // Forward to consumer's onKeyDown\n fireKeyboardEvent(props.onKeyDown, event);\n\n const menuItemsState = props.getMenuItemsState();\n const menuItemsHandlers = props.getMenuItemsHandlers();\n const menuOpen = props.getMenuOpen();\n\n handleKey(event, {\n onInlineStart: () => handleInlineStart(event, caretController, props.announceTokenOperation),\n onInlineEnd: () => handleInlineEnd(event, caretController, props.announceTokenOperation),\n onShiftInlineStart: () => handleInlineStart(event, caretController, props.announceTokenOperation),\n onShiftInlineEnd: () => handleInlineEnd(event, caretController, props.announceTokenOperation),\n onSelectAll: () => {\n if (tokens?.length === 0) {\n event.preventDefault();\n }\n },\n onBackspace: () => {\n if (\n editableElement &&\n handleReferenceTokenDeletion(\n event,\n true,\n editableElement,\n editableState,\n props.announceTokenOperation,\n props.i18nStrings,\n caretController,\n tokens,\n emitTokenDeletion\n )\n ) {\n return;\n }\n if (!tokens || !editableElement) {\n return;\n }\n if (tokens.length === 0) {\n event.preventDefault();\n return;\n }\n handleBackspaceAtParagraphStart(event, editableElement, tokens, tokensToText, emitChange, caretController);\n },\n onDelete: () => {\n if (\n editableElement &&\n handleReferenceTokenDeletion(\n event,\n false,\n editableElement,\n editableState,\n props.announceTokenOperation,\n props.i18nStrings,\n caretController,\n tokens,\n emitTokenDeletion\n )\n ) {\n return;\n }\n if (!tokens || !editableElement) {\n return;\n }\n if (handleDeleteAtParagraphEnd(event, editableElement, tokens, tokensToText, emitChange, caretController)) {\n return;\n }\n handleDeleteAfterTrigger(event, editableElement);\n },\n onShiftEnter: () => {\n if (event.nativeEvent.isComposing) {\n return;\n }\n event.preventDefault();\n if (caretController?.findActiveTrigger()) {\n return;\n }\n if (editableElement) {\n splitParagraphAtCaret(editableElement, caretController);\n }\n },\n onEnter: () => {\n if (event.nativeEvent.isComposing) {\n return;\n }\n if (menuOpen && menuItemsHandlers) {\n event.preventDefault();\n menuItemsHandlers.selectHighlightedOptionWithKeyboard();\n return;\n }\n handleEnterSubmit(event, props);\n },\n onTab: () => {\n if (menuOpen && menuItemsHandlers && !event.shiftKey) {\n event.preventDefault();\n menuItemsHandlers.selectHighlightedOptionWithKeyboard();\n }\n },\n onSpace: () => {\n if (editableElement && handleSpaceAfterClosedTrigger(event, editableElement, menuOpen, caretController)) {\n return;\n }\n if (menuOpen && menuItemsHandlers && menuItemsState) {\n handleSpaceInOpenMenu(event, {\n menuItemsState,\n menuItemsHandlers,\n getMenuStatusType: props.getMenuStatusType,\n closeMenu: props.closeMenu,\n caretController: caretController ?? undefined,\n editableElement: editableElement ?? undefined,\n });\n }\n },\n onBlockEnd: () => {\n if (menuOpen && menuItemsHandlers) {\n event.preventDefault();\n menuItemsHandlers.moveHighlightWithKeyboard(1);\n }\n },\n onBlockStart: () => {\n if (menuOpen && menuItemsHandlers) {\n event.preventDefault();\n menuItemsHandlers.moveHighlightWithKeyboard(-1);\n }\n },\n onEscape: () => {\n if (menuOpen) {\n event.preventDefault();\n props.closeMenu();\n }\n },\n });\n}\n\n/** Handles Enter key for form submission and onAction. */\nfunction handleEnterSubmit(event: React.KeyboardEvent<HTMLDivElement>, props: KeyboardHandlerProps): void {\n if (props.disabled || props.readOnly) {\n event.preventDefault();\n return;\n }\n\n const currentTarget = event.currentTarget;\n if (!isHTMLElement(currentTarget)) {\n return;\n }\n\n const form = currentTarget.closest('form');\n if (form && !event.isDefaultPrevented()) {\n form.requestSubmit();\n }\n event.preventDefault();\n\n const plainText = props.tokensToText ? props.tokensToText(props.tokens ?? []) : getPromptText(props.tokens ?? []);\n\n if (props.onAction) {\n props.onAction({ value: plainText, tokens: [...(props.tokens ?? [])] });\n }\n}\n\n/** Splits the current paragraph at the caret position, creating a new paragraph below. */\nexport function splitParagraphAtCaret(\n editableElement: HTMLDivElement,\n caretController: CaretController | null,\n suppressInputEvent = false\n): void {\n const selection = getOwnerSelection(editableElement);\n if (!selection?.rangeCount) {\n return;\n }\n\n const range = selection.getRangeAt(0);\n const startElement = isHTMLElement(range.startContainer) ? range.startContainer : range.startContainer.parentElement;\n const currentP = startElement ? findUpUntil(startElement, node => node.nodeName === 'P') : null;\n\n if (!currentP?.parentNode) {\n return;\n }\n\n const afterRange = (editableElement.ownerDocument ?? document).createRange();\n afterRange.setStart(range.startContainer, range.startOffset);\n afterRange.setEndAfter(currentP.lastChild || currentP);\n\n const afterContent = afterRange.extractContents();\n\n // Strip trailing breaks from extracted content — they belong only in empty paragraphs\n for (const child of Array.from(afterContent.childNodes)) {\n if (child.nodeName === 'BR') {\n child.remove();\n }\n }\n\n const newP = createParagraph();\n newP.appendChild(afterContent);\n\n if (isElementEffectivelyEmpty(newP)) {\n newP.appendChild(createTrailingBreak());\n }\n\n if (isElementEffectivelyEmpty(currentP)) {\n currentP.appendChild(createTrailingBreak());\n }\n\n currentP.parentNode.insertBefore(newP, currentP.nextSibling);\n\n let newCaretPos: number | null = null;\n if (caretController) {\n const currentPos = caretController.getPosition();\n newCaretPos = currentPos + TOKEN_LENGTHS.LINE_BREAK;\n }\n\n if (!suppressInputEvent) {\n editableElement.dispatchEvent(new Event('input', { bubbles: true }));\n }\n\n if (caretController && newCaretPos !== null) {\n caretController.setPosition(newCaretPos);\n }\n}\n\ninterface TokenElementResult {\n targetElement: HTMLElement | null;\n wrapperElement: HTMLElement | null;\n}\n\nfunction findTokenElementForDeletion(container: Node, offset: number, isBackspace: boolean): TokenElementResult {\n let adjacent: Node | null = null;\n\n if (isTextNode(container)) {\n const isAtEdge = isBackspace ? offset === 0 : offset === (container.textContent?.length || 0);\n if (isAtEdge) {\n adjacent = isBackspace ? container.previousSibling : container.nextSibling;\n }\n } else if (isHTMLElement(container)) {\n const childIndex = isBackspace ? offset - 1 : offset;\n adjacent = container.childNodes[childIndex];\n }\n\n if (isHTMLElement(adjacent)) {\n const adjacentType = getTokenType(adjacent);\n if (isReferenceElementType(adjacentType)) {\n return {\n wrapperElement: adjacent,\n targetElement: adjacent,\n };\n }\n }\n\n return { targetElement: null, wrapperElement: null };\n}\n\nfunction isValidTokenForDeletion(element: HTMLElement | null): boolean {\n if (!element) {\n return false;\n }\n const tokenType = getTokenType(element);\n return isReferenceElementType(tokenType);\n}\n\n/** Handles Backspace/Delete when adjacent to a reference token. Returns true if handled. */\nexport function handleReferenceTokenDeletion(\n event: React.KeyboardEvent<HTMLDivElement>,\n isBackspace: boolean,\n editableElement: HTMLDivElement,\n state: EditableState,\n announceTokenOperation: ((message: string) => void) | undefined,\n i18nStrings: PromptInputProps.I18nStrings | undefined,\n caretController: CaretController | null,\n tokens?: readonly PromptInputProps.InputToken[],\n emitChange?: (newTokens: PromptInputProps.InputToken[], caretPosition: number) => void\n): boolean {\n const selection = getOwnerSelection(editableElement);\n if (!selection?.rangeCount) {\n return false;\n }\n\n const range = selection.getRangeAt(0);\n\n if (!range.collapsed) {\n event.preventDefault();\n\n if (!caretController || !tokens || !emitChange) {\n return false;\n }\n\n // Map the DOM selection to logical token positions and remove the range\n // from state. The render effect will update the DOM on the next cycle.\n const startPos = caretController.getPosition();\n\n // Get end position by temporarily collapsing the range to its end\n const tempRange = range.cloneRange();\n tempRange.collapse(false);\n selection.removeAllRanges();\n selection.addRange(tempRange);\n const endPos = caretController.getPosition();\n selection.removeAllRanges();\n selection.addRange(range);\n\n const rangeStart = Math.min(startPos, endPos);\n const rangeEnd = Math.max(startPos, endPos);\n\n const newTokens = removeTokenRange(tokens, rangeStart, rangeEnd);\n emitChange(newTokens, rangeStart);\n\n return true;\n }\n\n const { targetElement, wrapperElement } = findTokenElementForDeletion(\n range.startContainer,\n range.startOffset,\n isBackspace\n );\n\n const tokenElement = targetElement || wrapperElement || null;\n\n if (!isValidTokenForDeletion(tokenElement)) {\n return false;\n }\n\n const elementToRemove = (wrapperElement || tokenElement)!;\n const paragraph = elementToRemove.parentNode;\n if (!paragraph) {\n return false;\n }\n\n event.preventDefault();\n\n const tokenLabel = tokenElement!.textContent?.trim() || '';\n if (announceTokenOperation && tokenLabel) {\n const announcement = i18nStrings?.tokenRemovedAriaLabel?.({ label: tokenLabel, value: tokenLabel });\n if (announcement) {\n announceTokenOperation(announcement);\n }\n }\n\n state.skipNextZeroWidthUpdate = true;\n\n let newCaretPos: number | null = null;\n if (caretController) {\n const currentPos = caretController.getPosition();\n newCaretPos = isBackspace ? Math.max(0, currentPos - TOKEN_LENGTHS.REFERENCE) : currentPos;\n }\n\n elementToRemove.remove();\n editableElement.dispatchEvent(new Event('input', { bubbles: true }));\n\n if (caretController && newCaretPos !== null) {\n caretController.setPosition(newCaretPos);\n }\n\n return true;\n}\n\n/** If the caret is inside a reference's caret-spot, normalizes it to the paragraph level. */\nfunction normalizeCaretOutOfReference(\n container: Node,\n direction: 'forward' | 'backward',\n event: React.KeyboardEvent<HTMLDivElement>,\n selection: Selection\n): boolean {\n if (!isTextNode(container)) {\n return false;\n }\n\n const parent = container.parentElement;\n if (!parent || !isCaretSpotType(getTokenType(parent))) {\n return false;\n }\n\n const wrapper = parent.parentElement;\n if (!wrapper || !isReferenceElementType(getTokenType(wrapper))) {\n return false;\n }\n\n const paragraph = wrapper.parentElement;\n if (!paragraph) {\n return false;\n }\n\n const wrapperIndex = Array.from(paragraph.childNodes).indexOf(wrapper);\n const newOffset = direction === 'backward' ? wrapperIndex : wrapperIndex + 1;\n\n event.preventDefault();\n const newRange = (paragraph.ownerDocument ?? document).createRange();\n newRange.setStart(paragraph, newOffset);\n newRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(newRange);\n return true;\n}\n\n/** Handles inline-start (backward) arrow key — plain navigation or shift+selection across references. */\nexport function handleInlineStart(\n event: React.KeyboardEvent<HTMLDivElement>,\n caretController: CaretController | null,\n announceTokenOperation?: (message: string) => void\n): void {\n const selection = getOwnerSelection(event.currentTarget);\n if (!selection?.rangeCount) {\n return;\n }\n const range = selection.getRangeAt(0);\n\n if (range.collapsed && normalizeCaretOutOfReference(range.startContainer, 'backward', event, selection)) {\n return;\n }\n\n if (event.shiftKey) {\n handleShiftArrowAcrossTokens(event, selection, range, 'backward');\n return;\n }\n\n const { sibling, isReferenceToken } = findAdjacentToken(range.startContainer, range.startOffset, 'backward');\n if (isReferenceToken && sibling) {\n event.preventDefault();\n caretController?.moveBackward(TOKEN_LENGTHS.REFERENCE);\n if (announceTokenOperation && isHTMLElement(sibling)) {\n const label = stripZeroWidthCharacters(sibling.textContent?.trim() || '');\n if (label) {\n announceTokenOperation(label);\n }\n }\n }\n}\n\n/** Handles inline-end (forward) arrow key — plain navigation or shift+selection across references. */\nexport function handleInlineEnd(\n event: React.KeyboardEvent<HTMLDivElement>,\n caretController: CaretController | null,\n announceTokenOperation?: (message: string) => void\n): void {\n const selection = getOwnerSelection(event.currentTarget);\n if (!selection?.rangeCount) {\n return;\n }\n const range = selection.getRangeAt(0);\n\n if (range.collapsed && normalizeCaretOutOfReference(range.startContainer, 'forward', event, selection)) {\n return;\n }\n\n if (event.shiftKey) {\n handleShiftArrowAcrossTokens(event, selection, range, 'forward');\n return;\n }\n\n const { sibling, isReferenceToken } = findAdjacentToken(range.startContainer, range.startOffset, 'forward');\n if (isReferenceToken && sibling) {\n event.preventDefault();\n caretController?.moveForward(TOKEN_LENGTHS.REFERENCE);\n if (announceTokenOperation && isHTMLElement(sibling)) {\n const label = stripZeroWidthCharacters(sibling.textContent?.trim() || '');\n if (label) {\n announceTokenOperation(label);\n }\n }\n }\n}\n\n/** After the browser handles Shift+Arrow, nudge the focus past any reference it landed inside. */\nfunction handleShiftArrowAcrossTokens(\n event: React.KeyboardEvent<HTMLDivElement>,\n selection: Selection,\n range: Range,\n direction: 'forward' | 'backward'\n): boolean {\n const isBackward = direction === 'backward';\n\n // Check if the focus is adjacent to a reference in the arrow direction\n const focusNode = selection.focusNode;\n const focusOff = selection.focusOffset;\n if (!focusNode) {\n return false;\n }\n\n let adjacentRef: Node | null = null;\n\n // If focus is inside a reference (e.g. in a caret-spot), the reference itself is what we skip\n let containingRef: HTMLElement | null = null;\n let node: Node | null = isTextNode(focusNode) ? focusNode.parentElement : (focusNode as HTMLElement);\n while (node && isHTMLElement(node) && node !== event.currentTarget) {\n const tokenType = getTokenType(node);\n if (isReferenceElementType(tokenType)) {\n containingRef = node;\n break;\n }\n if (isCaretSpotType(tokenType) && node.parentElement) {\n const parentType = getTokenType(node.parentElement);\n if (isReferenceElementType(parentType)) {\n containingRef = node.parentElement;\n break;\n }\n }\n node = node.parentElement;\n }\n\n if (containingRef) {\n adjacentRef = containingRef;\n } else if (isTextNode(focusNode)) {\n if (isBackward && focusOff === 0) {\n adjacentRef = focusNode.previousSibling;\n } else if (!isBackward) {\n const len = focusNode.textContent?.length || 0;\n // Check at the text boundary — only jump over the reference when focus\n // is at the very end of the text node, not one character before.\n if (focusOff >= len && focusNode.nextSibling) {\n const nextSibling = focusNode.nextSibling;\n if (isHTMLElement(nextSibling) && isReferenceElementType(getTokenType(nextSibling))) {\n adjacentRef = nextSibling;\n }\n }\n }\n if (!adjacentRef && isBackward && focusOff === 0 && focusNode.previousSibling) {\n const previousSibling = focusNode.previousSibling;\n if (isHTMLElement(previousSibling) && isReferenceElementType(getTokenType(previousSibling))) {\n adjacentRef = previousSibling;\n }\n }\n } else if (isHTMLElement(focusNode)) {\n if (isBackward && focusOff > 0) {\n adjacentRef = focusNode.childNodes[focusOff - 1];\n } else if (!isBackward && focusOff < focusNode.childNodes.length) {\n adjacentRef = focusNode.childNodes[focusOff];\n }\n }\n\n if (!adjacentRef || !isHTMLElement(adjacentRef) || !isReferenceElementType(getTokenType(adjacentRef))) {\n return false;\n }\n\n const parent = adjacentRef.parentNode;\n if (!parent) {\n return false;\n }\n\n event.preventDefault();\n\n const index = Array.from(parent.childNodes).indexOf(adjacentRef as ChildNode);\n\n // Find the actual text node on the far side of the reference to extend into,\n // rather than using paragraph-level offsets which the browser may normalize\n // into the reference's caret-spot internals.\n let targetNode: Node = parent;\n let targetOffset: number = isBackward ? index : index + 1;\n\n if (!isBackward) {\n const nextSibling = adjacentRef.nextSibling;\n if (nextSibling && isTextNode(nextSibling)) {\n targetNode = nextSibling;\n targetOffset = 0;\n }\n } else {\n const prevSibling = adjacentRef.previousSibling;\n if (prevSibling && isTextNode(prevSibling)) {\n targetNode = prevSibling;\n targetOffset = prevSibling.textContent?.length || 0;\n }\n }\n\n // If extending would jump the focus past the anchor (deselecting through a reference),\n // collapse instead of flipping the selection direction.\n if (!range.collapsed && selection.anchorNode) {\n const anchorPos = adjacentRef.compareDocumentPosition(selection.anchorNode);\n const anchorIsAfter =\n (anchorPos & Node.DOCUMENT_POSITION_FOLLOWING) !== 0 || (anchorPos & Node.DOCUMENT_POSITION_CONTAINED_BY) !== 0;\n const anchorIsBefore =\n (anchorPos & Node.DOCUMENT_POSITION_PRECEDING) !== 0 || (anchorPos & Node.DOCUMENT_POSITION_CONTAINS) !== 0;\n\n if ((!isBackward && anchorIsAfter) || (isBackward && anchorIsBefore)) {\n const anchorNode = selection.anchorNode!;\n const anchorOffset = selection.anchorOffset;\n selection.collapse(anchorNode, anchorOffset);\n selection.extend(targetNode, targetOffset);\n return true;\n }\n }\n\n selection.extend(targetNode, targetOffset);\n\n return true;\n}\n\n/** Handles space key after a closed trigger element, inserting the space outside the trigger. */\nexport function handleSpaceAfterClosedTrigger(\n event: React.KeyboardEvent<HTMLDivElement>,\n editableElement: HTMLDivElement,\n menuOpen: boolean,\n caretController: CaretController | null\n): boolean {\n if (event.key !== ' ' || menuOpen) {\n return false;\n }\n\n const selection = getOwnerSelection(editableElement);\n if (!selection?.rangeCount) {\n return false;\n }\n\n const range = selection.getRangeAt(0);\n if (!range.collapsed) {\n return false;\n }\n\n let triggerElement: HTMLElement | null = null;\n let caretAtEnd = false;\n\n if (isTextNode(range.startContainer)) {\n const parent = range.startContainer.parentElement;\n const parentType = parent ? getTokenType(parent) : null;\n\n if (parentType === ElementType.Trigger && parent) {\n triggerElement = parent;\n const textLength = range.startContainer.textContent?.length || 0;\n caretAtEnd = range.startOffset === textLength;\n }\n } else if (isHTMLElement(range.startContainer)) {\n const container = range.startContainer;\n if (range.startOffset > 0) {\n const prevNode = container.childNodes[range.startOffset - 1];\n if (isHTMLElement(prevNode) && getTokenType(prevNode) === ElementType.Trigger) {\n triggerElement = prevNode;\n caretAtEnd = true;\n }\n }\n }\n\n if (!triggerElement || !caretAtEnd) {\n return false;\n }\n\n const paragraph = triggerElement.parentElement;\n if (!paragraph) {\n return false;\n }\n\n event.preventDefault();\n\n if (caretController) {\n caretController.capture();\n }\n\n const spaceNode = (triggerElement.ownerDocument ?? document).createTextNode(' ');\n insertAfter(spaceNode, triggerElement);\n\n editableElement.dispatchEvent(new Event('input', { bubbles: true }));\n\n if (caretController) {\n caretController.restore(1);\n }\n\n return true;\n}\n\nexport type MergeDirection = 'forward' | 'backward';\n\ninterface MergeParagraphsParams {\n direction: MergeDirection;\n editableElement: HTMLDivElement;\n tokens: readonly PromptInputProps.InputToken[];\n currentParagraphIndex: number;\n tokensToText?: (tokens: readonly PromptInputProps.InputToken[]) => string;\n onChange: (detail: { value: string; tokens: PromptInputProps.InputToken[] }) => void;\n caretController?: CaretController | null;\n}\n\n/** Merges two adjacent paragraphs by removing the break token between them. */\nexport function mergeParagraphs(params: MergeParagraphsParams): boolean {\n const { direction, editableElement, tokens, currentParagraphIndex, tokensToText, onChange, caretController } = params;\n\n const paragraphs = findAllParagraphs(editableElement);\n\n if (direction === 'backward') {\n if (currentParagraphIndex <= 0) {\n return false;\n }\n } else {\n if (currentParagraphIndex >= paragraphs.length - 1) {\n return false;\n }\n }\n\n const breakIndexToRemove = direction === 'backward' ? currentParagraphIndex : currentParagraphIndex + 1;\n\n let breakCount = 0;\n let breakRemoved = false;\n\n const newTokens = tokens.filter(token => {\n if (isBreakTextToken(token)) {\n breakCount++;\n if (breakCount === breakIndexToRemove) {\n breakRemoved = true;\n return false;\n }\n }\n return true;\n });\n\n if (!breakRemoved) {\n return false;\n }\n\n const value = tokensToText ? tokensToText(newTokens) : getPromptText(newTokens);\n onChange({ value, tokens: newTokens });\n\n if (caretController) {\n const currentPos = caretController.getPosition();\n // Backspace: cursor was at start of next paragraph, now needs to move back by the removed break\n // Delete: cursor stays where it is — the next line merges into the current one\n const newCaretPos = direction === 'backward' ? currentPos - TOKEN_LENGTHS.LINE_BREAK : currentPos;\n caretController.setPosition(newCaretPos);\n }\n\n return true;\n}\n\n/** Handles Backspace at the start of a paragraph by merging with the previous one. */\nexport function handleBackspaceAtParagraphStart(\n event: React.KeyboardEvent<HTMLDivElement>,\n editableElement: HTMLDivElement,\n tokens: readonly PromptInputProps.InputToken[],\n tokensToText: ((tokens: readonly PromptInputProps.InputToken[]) => string) | undefined,\n onChange: (detail: { value: string; tokens: PromptInputProps.InputToken[] }) => void,\n caretController: CaretController | null\n): boolean {\n const selection = getOwnerSelection(editableElement);\n if (!selection?.rangeCount) {\n return false;\n }\n\n const range = selection.getRangeAt(0);\n\n if (\n !range.collapsed ||\n range.startOffset !== 0 ||\n !isHTMLElement(range.startContainer) ||\n range.startContainer.nodeName !== 'P'\n ) {\n return false;\n }\n\n const paragraphs = findAllParagraphs(editableElement);\n const currentP = range.startContainer;\n const pIndex = Array.from(paragraphs).indexOf(currentP as HTMLParagraphElement);\n\n if (pIndex < 0) {\n return false;\n }\n\n const merged = mergeParagraphs({\n direction: 'backward',\n editableElement,\n tokens,\n currentParagraphIndex: pIndex,\n tokensToText,\n onChange,\n caretController: caretController,\n });\n\n if (merged) {\n event.preventDefault();\n }\n\n return merged;\n}\n\n/** Handles Delete at the end of a paragraph by merging with the next one. */\nexport function handleDeleteAtParagraphEnd(\n event: React.KeyboardEvent<HTMLDivElement>,\n editableElement: HTMLDivElement,\n tokens: readonly PromptInputProps.InputToken[],\n tokensToText: ((tokens: readonly PromptInputProps.InputToken[]) => string) | undefined,\n onChange: (detail: { value: string; tokens: PromptInputProps.InputToken[] }) => void,\n caretController: CaretController | null\n): boolean {\n const selection = getOwnerSelection(editableElement);\n if (!selection?.rangeCount) {\n return false;\n }\n\n const range = selection.getRangeAt(0);\n const container = range.startContainer;\n\n if (!range.collapsed) {\n return false;\n }\n\n let isAtEndOfParagraph = false;\n let currentP: HTMLParagraphElement | null = null;\n\n if (isHTMLElement(container) && container.nodeName === 'P') {\n currentP = container as HTMLParagraphElement;\n const hasOnlyTrailingBR = currentP.childNodes.length === 1 && isBRElement(currentP.firstChild);\n isAtEndOfParagraph = hasOnlyTrailingBR || range.startOffset === currentP.childNodes.length;\n } else if (isTextNode(container)) {\n isAtEndOfParagraph = range.startOffset === (container.textContent?.length || 0) && !container.nextSibling;\n let node: Node | null = container;\n while (node && node.nodeName !== 'P') {\n node = node.parentNode;\n }\n currentP = node as HTMLParagraphElement;\n }\n\n if (!isAtEndOfParagraph || !currentP) {\n return false;\n }\n\n const paragraphs = findAllParagraphs(editableElement);\n const pIndex = Array.from(paragraphs).indexOf(currentP);\n\n if (pIndex < 0) {\n return false;\n }\n\n const merged = mergeParagraphs({\n direction: 'forward',\n editableElement,\n tokens,\n currentParagraphIndex: pIndex,\n tokensToText,\n onChange,\n caretController: caretController,\n });\n\n if (merged) {\n event.preventDefault();\n }\n\n return merged;\n}\n\n/** Handles copy/cut events on the contentEditable element. */\nexport function handleClipboardEvent(event: React.ClipboardEvent, editableElement: HTMLElement, isCut: boolean): void {\n const selection = getOwnerSelection(editableElement);\n if (!selection || selection.rangeCount === 0) {\n return;\n }\n\n const range = selection.getRangeAt(0);\n const fragment = range.cloneContents();\n\n const paragraphs = findAllParagraphs(fragment);\n const text =\n paragraphs.length > 0\n ? paragraphs.map(p => stripZeroWidthCharacters(p.textContent || '')).join('\\n')\n : stripZeroWidthCharacters(fragment.textContent || '');\n\n event.clipboardData.setData('text/plain', text);\n event.preventDefault();\n\n if (isCut) {\n selection.deleteFromDocument();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"event-handlers.js","sourceRoot":"","sources":["../../../../src/prompt-input/core/event-handlers.ts"],"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 { findUpUntil } from '@cloudscape-design/component-toolkit/dom';\n\nimport { fireKeyboardEvent } from '../../internal/events';\nimport { isHTMLElement } from '../../internal/utils/dom';\nimport handleKey from '../../internal/utils/handle-key';\nimport { PromptInputProps } from '../interfaces';\nimport { EditableState } from '../tokens/use-token-mode';\nimport { CaretController, getOwnerSelection, TOKEN_LENGTHS } from './caret-controller';\nimport { ElementType } from './constants';\nimport {\n createParagraph,\n createTrailingBreak,\n findAdjacentToken,\n findAllParagraphs,\n getTokenType,\n insertAfter,\n isCaretSpotType,\n isElementEffectivelyEmpty,\n isReferenceElementType,\n stripZeroWidthCharacters,\n} from './dom-utils';\nimport { MenuItemsHandlers, MenuItemsState } from './menu-state';\nimport { getPromptText } from './token-operations';\nimport { removeTokenRange } from './token-utils';\nimport { handleDeleteAfterTrigger, handleSpaceInOpenMenu } from './trigger-utils';\nimport { isBreakTextToken, isBRElement, isTextNode } from './type-guards';\n\n/** Configuration for the unified keyboard event handler. */\nexport interface KeyboardHandlerProps {\n editableElement: HTMLDivElement | null;\n editableState: EditableState;\n caretController: CaretController | null;\n tokens?: readonly PromptInputProps.InputToken[];\n tokensToText?: (tokens: readonly PromptInputProps.InputToken[]) => string;\n disabled?: boolean;\n readOnly?: boolean;\n i18nStrings?: PromptInputProps.I18nStrings;\n announceTokenOperation?: (message: string) => void;\n\n // Menu state\n getMenuOpen: () => boolean;\n getMenuItemsState: () => MenuItemsState | null;\n getMenuItemsHandlers: () => MenuItemsHandlers | null;\n getMenuStatusType?: () => PromptInputProps.MenuDefinition['statusType'];\n closeMenu: () => void;\n\n // Callbacks\n onAction?: (detail: PromptInputProps.ActionDetail) => void;\n onChange: (detail: { value: string; tokens: PromptInputProps.InputToken[] }) => void;\n markTokensAsSent: (tokens: readonly PromptInputProps.InputToken[]) => void;\n onKeyDown?: PromptInputProps['onKeyDown'];\n /** Returns true if an IME composition session is active or just ended (spurious-Enter window). */\n isComposing?: () => boolean;\n}\n\n/** Handles all keyboard events for the editable element. */\nexport function handleEditableKeyDown(event: React.KeyboardEvent<HTMLDivElement>, props: KeyboardHandlerProps): void {\n const { editableElement, editableState, caretController, tokens, tokensToText } = props;\n\n const emitChange = (detail: { value: string; tokens: PromptInputProps.InputToken[] }) => {\n props.markTokensAsSent(detail.tokens);\n props.onChange(detail);\n };\n\n const emitTokenDeletion = (newTokens: PromptInputProps.InputToken[], caretPos: number) => {\n const value = tokensToText ? tokensToText(newTokens) : getPromptText(newTokens);\n // Don't mark as sent — selection deletions use preventDefault so the DOM\n // is NOT updated by the browser. The render effect must see these as an\n // external change and re-render the DOM to match the new token state.\n props.onChange({ value, tokens: newTokens });\n if (caretController) {\n caretController.setCapturedPosition(caretPos);\n }\n };\n\n // Forward to consumer's onKeyDown\n fireKeyboardEvent(props.onKeyDown, event);\n\n const menuItemsState = props.getMenuItemsState();\n const menuItemsHandlers = props.getMenuItemsHandlers();\n const menuOpen = props.getMenuOpen();\n\n handleKey(event, {\n onInlineStart: () => handleInlineStart(event, caretController, props.announceTokenOperation),\n onInlineEnd: () => handleInlineEnd(event, caretController, props.announceTokenOperation),\n onShiftInlineStart: () => handleInlineStart(event, caretController, props.announceTokenOperation),\n onShiftInlineEnd: () => handleInlineEnd(event, caretController, props.announceTokenOperation),\n onSelectAll: () => {\n if (tokens?.length === 0) {\n event.preventDefault();\n }\n },\n onBackspace: () => {\n if (\n editableElement &&\n handleReferenceTokenDeletion(\n event,\n true,\n editableElement,\n editableState,\n props.announceTokenOperation,\n props.i18nStrings,\n caretController,\n tokens,\n emitTokenDeletion\n )\n ) {\n return;\n }\n if (!tokens || !editableElement) {\n return;\n }\n if (tokens.length === 0) {\n event.preventDefault();\n return;\n }\n handleBackspaceAtParagraphStart(event, editableElement, tokens, tokensToText, emitChange, caretController);\n },\n onDelete: () => {\n if (\n editableElement &&\n handleReferenceTokenDeletion(\n event,\n false,\n editableElement,\n editableState,\n props.announceTokenOperation,\n props.i18nStrings,\n caretController,\n tokens,\n emitTokenDeletion\n )\n ) {\n return;\n }\n if (!tokens || !editableElement) {\n return;\n }\n if (handleDeleteAtParagraphEnd(event, editableElement, tokens, tokensToText, emitChange, caretController)) {\n return;\n }\n handleDeleteAfterTrigger(event, editableElement);\n },\n onShiftEnter: () => {\n if (event.nativeEvent.isComposing || props.isComposing?.()) {\n return;\n }\n event.preventDefault();\n if (caretController?.findActiveTrigger()) {\n return;\n }\n if (editableElement) {\n splitParagraphAtCaret(editableElement, caretController);\n }\n },\n onEnter: () => {\n if (event.nativeEvent.isComposing || props.isComposing?.()) {\n return;\n }\n if (menuOpen && menuItemsHandlers) {\n event.preventDefault();\n menuItemsHandlers.selectHighlightedOptionWithKeyboard();\n return;\n }\n handleEnterSubmit(event, props);\n },\n onTab: () => {\n if (menuOpen && menuItemsHandlers && !event.shiftKey) {\n event.preventDefault();\n menuItemsHandlers.selectHighlightedOptionWithKeyboard();\n }\n },\n onSpace: () => {\n if (editableElement && handleSpaceAfterClosedTrigger(event, editableElement, menuOpen, caretController)) {\n return;\n }\n if (menuOpen && menuItemsHandlers && menuItemsState) {\n handleSpaceInOpenMenu(event, {\n menuItemsState,\n menuItemsHandlers,\n getMenuStatusType: props.getMenuStatusType,\n closeMenu: props.closeMenu,\n caretController: caretController ?? undefined,\n editableElement: editableElement ?? undefined,\n });\n }\n },\n onBlockEnd: () => {\n if (menuOpen && menuItemsHandlers) {\n event.preventDefault();\n menuItemsHandlers.moveHighlightWithKeyboard(1);\n }\n },\n onBlockStart: () => {\n if (menuOpen && menuItemsHandlers) {\n event.preventDefault();\n menuItemsHandlers.moveHighlightWithKeyboard(-1);\n }\n },\n onEscape: () => {\n if (menuOpen) {\n event.preventDefault();\n props.closeMenu();\n }\n },\n });\n}\n\n/** Handles Enter key for form submission and onAction. */\nfunction handleEnterSubmit(event: React.KeyboardEvent<HTMLDivElement>, props: KeyboardHandlerProps): void {\n if (props.disabled || props.readOnly) {\n event.preventDefault();\n return;\n }\n\n const currentTarget = event.currentTarget;\n if (!isHTMLElement(currentTarget)) {\n return;\n }\n\n const form = currentTarget.closest('form');\n if (form && !event.isDefaultPrevented()) {\n form.requestSubmit();\n }\n event.preventDefault();\n\n const plainText = props.tokensToText ? props.tokensToText(props.tokens ?? []) : getPromptText(props.tokens ?? []);\n\n if (props.onAction) {\n props.onAction({ value: plainText, tokens: [...(props.tokens ?? [])] });\n }\n}\n\n/** Splits the current paragraph at the caret position, creating a new paragraph below. */\nexport function splitParagraphAtCaret(\n editableElement: HTMLDivElement,\n caretController: CaretController | null,\n suppressInputEvent = false\n): void {\n const selection = getOwnerSelection(editableElement);\n if (!selection?.rangeCount) {\n return;\n }\n\n const range = selection.getRangeAt(0);\n const startElement = isHTMLElement(range.startContainer) ? range.startContainer : range.startContainer.parentElement;\n const currentP = startElement ? findUpUntil(startElement, node => node.nodeName === 'P') : null;\n\n if (!currentP?.parentNode) {\n return;\n }\n\n const afterRange = (editableElement.ownerDocument ?? document).createRange();\n afterRange.setStart(range.startContainer, range.startOffset);\n afterRange.setEndAfter(currentP.lastChild || currentP);\n\n const afterContent = afterRange.extractContents();\n\n // Strip trailing breaks from extracted content — they belong only in empty paragraphs\n for (const child of Array.from(afterContent.childNodes)) {\n if (child.nodeName === 'BR') {\n child.remove();\n }\n }\n\n const newP = createParagraph();\n newP.appendChild(afterContent);\n\n if (isElementEffectivelyEmpty(newP)) {\n newP.appendChild(createTrailingBreak());\n }\n\n if (isElementEffectivelyEmpty(currentP)) {\n currentP.appendChild(createTrailingBreak());\n }\n\n currentP.parentNode.insertBefore(newP, currentP.nextSibling);\n\n let newCaretPos: number | null = null;\n if (caretController) {\n const currentPos = caretController.getPosition();\n newCaretPos = currentPos + TOKEN_LENGTHS.LINE_BREAK;\n }\n\n if (!suppressInputEvent) {\n editableElement.dispatchEvent(new Event('input', { bubbles: true }));\n }\n\n if (caretController && newCaretPos !== null) {\n caretController.setPosition(newCaretPos);\n }\n}\n\ninterface TokenElementResult {\n targetElement: HTMLElement | null;\n wrapperElement: HTMLElement | null;\n}\n\nfunction findTokenElementForDeletion(container: Node, offset: number, isBackspace: boolean): TokenElementResult {\n let adjacent: Node | null = null;\n\n if (isTextNode(container)) {\n const isAtEdge = isBackspace ? offset === 0 : offset === (container.textContent?.length || 0);\n if (isAtEdge) {\n adjacent = isBackspace ? container.previousSibling : container.nextSibling;\n }\n } else if (isHTMLElement(container)) {\n const childIndex = isBackspace ? offset - 1 : offset;\n adjacent = container.childNodes[childIndex];\n }\n\n if (isHTMLElement(adjacent)) {\n const adjacentType = getTokenType(adjacent);\n if (isReferenceElementType(adjacentType)) {\n return {\n wrapperElement: adjacent,\n targetElement: adjacent,\n };\n }\n }\n\n return { targetElement: null, wrapperElement: null };\n}\n\nfunction isValidTokenForDeletion(element: HTMLElement | null): boolean {\n if (!element) {\n return false;\n }\n const tokenType = getTokenType(element);\n return isReferenceElementType(tokenType);\n}\n\n/** Handles Backspace/Delete when adjacent to a reference token. Returns true if handled. */\nexport function handleReferenceTokenDeletion(\n event: React.KeyboardEvent<HTMLDivElement>,\n isBackspace: boolean,\n editableElement: HTMLDivElement,\n state: EditableState,\n announceTokenOperation: ((message: string) => void) | undefined,\n i18nStrings: PromptInputProps.I18nStrings | undefined,\n caretController: CaretController | null,\n tokens?: readonly PromptInputProps.InputToken[],\n emitChange?: (newTokens: PromptInputProps.InputToken[], caretPosition: number) => void\n): boolean {\n const selection = getOwnerSelection(editableElement);\n if (!selection?.rangeCount) {\n return false;\n }\n\n const range = selection.getRangeAt(0);\n\n if (!range.collapsed) {\n event.preventDefault();\n\n if (!caretController || !tokens || !emitChange) {\n return false;\n }\n\n // Map the DOM selection to logical token positions and remove the range\n // from state. The render effect will update the DOM on the next cycle.\n const startPos = caretController.getPosition();\n\n // Get end position by temporarily collapsing the range to its end\n const tempRange = range.cloneRange();\n tempRange.collapse(false);\n selection.removeAllRanges();\n selection.addRange(tempRange);\n const endPos = caretController.getPosition();\n selection.removeAllRanges();\n selection.addRange(range);\n\n const rangeStart = Math.min(startPos, endPos);\n const rangeEnd = Math.max(startPos, endPos);\n\n const newTokens = removeTokenRange(tokens, rangeStart, rangeEnd);\n emitChange(newTokens, rangeStart);\n\n return true;\n }\n\n const { targetElement, wrapperElement } = findTokenElementForDeletion(\n range.startContainer,\n range.startOffset,\n isBackspace\n );\n\n const tokenElement = targetElement || wrapperElement || null;\n\n if (!isValidTokenForDeletion(tokenElement)) {\n return false;\n }\n\n const elementToRemove = (wrapperElement || tokenElement)!;\n const paragraph = elementToRemove.parentNode;\n if (!paragraph) {\n return false;\n }\n\n event.preventDefault();\n\n const tokenLabel = tokenElement!.textContent?.trim() || '';\n if (announceTokenOperation && tokenLabel) {\n const announcement = i18nStrings?.tokenRemovedAriaLabel?.({ label: tokenLabel, value: tokenLabel });\n if (announcement) {\n announceTokenOperation(announcement);\n }\n }\n\n state.skipNextZeroWidthUpdate = true;\n\n let newCaretPos: number | null = null;\n if (caretController) {\n const currentPos = caretController.getPosition();\n newCaretPos = isBackspace ? Math.max(0, currentPos - TOKEN_LENGTHS.REFERENCE) : currentPos;\n }\n\n elementToRemove.remove();\n editableElement.dispatchEvent(new Event('input', { bubbles: true }));\n\n if (caretController && newCaretPos !== null) {\n caretController.setPosition(newCaretPos);\n }\n\n return true;\n}\n\n/** If the caret is inside a reference's caret-spot, normalizes it to the paragraph level. */\nfunction normalizeCaretOutOfReference(\n container: Node,\n direction: 'forward' | 'backward',\n event: React.KeyboardEvent<HTMLDivElement>,\n selection: Selection\n): boolean {\n if (!isTextNode(container)) {\n return false;\n }\n\n const parent = container.parentElement;\n if (!parent || !isCaretSpotType(getTokenType(parent))) {\n return false;\n }\n\n const wrapper = parent.parentElement;\n if (!wrapper || !isReferenceElementType(getTokenType(wrapper))) {\n return false;\n }\n\n const paragraph = wrapper.parentElement;\n if (!paragraph) {\n return false;\n }\n\n const wrapperIndex = Array.from(paragraph.childNodes).indexOf(wrapper);\n const newOffset = direction === 'backward' ? wrapperIndex : wrapperIndex + 1;\n\n event.preventDefault();\n const newRange = (paragraph.ownerDocument ?? document).createRange();\n newRange.setStart(paragraph, newOffset);\n newRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(newRange);\n return true;\n}\n\n/** Handles inline-start (backward) arrow key — plain navigation or shift+selection across references. */\nexport function handleInlineStart(\n event: React.KeyboardEvent<HTMLDivElement>,\n caretController: CaretController | null,\n announceTokenOperation?: (message: string) => void\n): void {\n const selection = getOwnerSelection(event.currentTarget);\n if (!selection?.rangeCount) {\n return;\n }\n const range = selection.getRangeAt(0);\n\n if (range.collapsed && normalizeCaretOutOfReference(range.startContainer, 'backward', event, selection)) {\n return;\n }\n\n if (event.shiftKey) {\n handleShiftArrowAcrossTokens(event, selection, range, 'backward');\n return;\n }\n\n const { sibling, isReferenceToken } = findAdjacentToken(range.startContainer, range.startOffset, 'backward');\n if (isReferenceToken && sibling) {\n event.preventDefault();\n caretController?.moveBackward(TOKEN_LENGTHS.REFERENCE);\n if (announceTokenOperation && isHTMLElement(sibling)) {\n const label = stripZeroWidthCharacters(sibling.textContent?.trim() || '');\n if (label) {\n announceTokenOperation(label);\n }\n }\n }\n}\n\n/** Handles inline-end (forward) arrow key — plain navigation or shift+selection across references. */\nexport function handleInlineEnd(\n event: React.KeyboardEvent<HTMLDivElement>,\n caretController: CaretController | null,\n announceTokenOperation?: (message: string) => void\n): void {\n const selection = getOwnerSelection(event.currentTarget);\n if (!selection?.rangeCount) {\n return;\n }\n const range = selection.getRangeAt(0);\n\n if (range.collapsed && normalizeCaretOutOfReference(range.startContainer, 'forward', event, selection)) {\n return;\n }\n\n if (event.shiftKey) {\n handleShiftArrowAcrossTokens(event, selection, range, 'forward');\n return;\n }\n\n const { sibling, isReferenceToken } = findAdjacentToken(range.startContainer, range.startOffset, 'forward');\n if (isReferenceToken && sibling) {\n event.preventDefault();\n caretController?.moveForward(TOKEN_LENGTHS.REFERENCE);\n if (announceTokenOperation && isHTMLElement(sibling)) {\n const label = stripZeroWidthCharacters(sibling.textContent?.trim() || '');\n if (label) {\n announceTokenOperation(label);\n }\n }\n }\n}\n\n/** After the browser handles Shift+Arrow, nudge the focus past any reference it landed inside. */\nfunction handleShiftArrowAcrossTokens(\n event: React.KeyboardEvent<HTMLDivElement>,\n selection: Selection,\n range: Range,\n direction: 'forward' | 'backward'\n): boolean {\n const isBackward = direction === 'backward';\n\n // Check if the focus is adjacent to a reference in the arrow direction\n const focusNode = selection.focusNode;\n const focusOff = selection.focusOffset;\n if (!focusNode) {\n return false;\n }\n\n let adjacentRef: Node | null = null;\n\n // If focus is inside a reference (e.g. in a caret-spot), the reference itself is what we skip\n let containingRef: HTMLElement | null = null;\n let node: Node | null = isTextNode(focusNode) ? focusNode.parentElement : (focusNode as HTMLElement);\n while (node && isHTMLElement(node) && node !== event.currentTarget) {\n const tokenType = getTokenType(node);\n if (isReferenceElementType(tokenType)) {\n containingRef = node;\n break;\n }\n if (isCaretSpotType(tokenType) && node.parentElement) {\n const parentType = getTokenType(node.parentElement);\n if (isReferenceElementType(parentType)) {\n containingRef = node.parentElement;\n break;\n }\n }\n node = node.parentElement;\n }\n\n if (containingRef) {\n adjacentRef = containingRef;\n } else if (isTextNode(focusNode)) {\n if (isBackward && focusOff === 0) {\n adjacentRef = focusNode.previousSibling;\n } else if (!isBackward) {\n const len = focusNode.textContent?.length || 0;\n // Check at the text boundary — only jump over the reference when focus\n // is at the very end of the text node, not one character before.\n if (focusOff >= len && focusNode.nextSibling) {\n const nextSibling = focusNode.nextSibling;\n if (isHTMLElement(nextSibling) && isReferenceElementType(getTokenType(nextSibling))) {\n adjacentRef = nextSibling;\n }\n }\n }\n if (!adjacentRef && isBackward && focusOff === 0 && focusNode.previousSibling) {\n const previousSibling = focusNode.previousSibling;\n if (isHTMLElement(previousSibling) && isReferenceElementType(getTokenType(previousSibling))) {\n adjacentRef = previousSibling;\n }\n }\n } else if (isHTMLElement(focusNode)) {\n if (isBackward && focusOff > 0) {\n adjacentRef = focusNode.childNodes[focusOff - 1];\n } else if (!isBackward && focusOff < focusNode.childNodes.length) {\n adjacentRef = focusNode.childNodes[focusOff];\n }\n }\n\n if (!adjacentRef || !isHTMLElement(adjacentRef) || !isReferenceElementType(getTokenType(adjacentRef))) {\n return false;\n }\n\n const parent = adjacentRef.parentNode;\n if (!parent) {\n return false;\n }\n\n event.preventDefault();\n\n const index = Array.from(parent.childNodes).indexOf(adjacentRef as ChildNode);\n\n // Find the actual text node on the far side of the reference to extend into,\n // rather than using paragraph-level offsets which the browser may normalize\n // into the reference's caret-spot internals.\n let targetNode: Node = parent;\n let targetOffset: number = isBackward ? index : index + 1;\n\n if (!isBackward) {\n const nextSibling = adjacentRef.nextSibling;\n if (nextSibling && isTextNode(nextSibling)) {\n targetNode = nextSibling;\n targetOffset = 0;\n }\n } else {\n const prevSibling = adjacentRef.previousSibling;\n if (prevSibling && isTextNode(prevSibling)) {\n targetNode = prevSibling;\n targetOffset = prevSibling.textContent?.length || 0;\n }\n }\n\n // If extending would jump the focus past the anchor (deselecting through a reference),\n // collapse instead of flipping the selection direction.\n if (!range.collapsed && selection.anchorNode) {\n const anchorPos = adjacentRef.compareDocumentPosition(selection.anchorNode);\n const anchorIsAfter =\n (anchorPos & Node.DOCUMENT_POSITION_FOLLOWING) !== 0 || (anchorPos & Node.DOCUMENT_POSITION_CONTAINED_BY) !== 0;\n const anchorIsBefore =\n (anchorPos & Node.DOCUMENT_POSITION_PRECEDING) !== 0 || (anchorPos & Node.DOCUMENT_POSITION_CONTAINS) !== 0;\n\n if ((!isBackward && anchorIsAfter) || (isBackward && anchorIsBefore)) {\n const anchorNode = selection.anchorNode!;\n const anchorOffset = selection.anchorOffset;\n selection.collapse(anchorNode, anchorOffset);\n selection.extend(targetNode, targetOffset);\n return true;\n }\n }\n\n selection.extend(targetNode, targetOffset);\n\n return true;\n}\n\n/** Handles space key after a closed trigger element, inserting the space outside the trigger. */\nexport function handleSpaceAfterClosedTrigger(\n event: React.KeyboardEvent<HTMLDivElement>,\n editableElement: HTMLDivElement,\n menuOpen: boolean,\n caretController: CaretController | null\n): boolean {\n if (event.key !== ' ' || menuOpen) {\n return false;\n }\n\n const selection = getOwnerSelection(editableElement);\n if (!selection?.rangeCount) {\n return false;\n }\n\n const range = selection.getRangeAt(0);\n if (!range.collapsed) {\n return false;\n }\n\n let triggerElement: HTMLElement | null = null;\n let caretAtEnd = false;\n\n if (isTextNode(range.startContainer)) {\n const parent = range.startContainer.parentElement;\n const parentType = parent ? getTokenType(parent) : null;\n\n if (parentType === ElementType.Trigger && parent) {\n triggerElement = parent;\n const textLength = range.startContainer.textContent?.length || 0;\n caretAtEnd = range.startOffset === textLength;\n }\n } else if (isHTMLElement(range.startContainer)) {\n const container = range.startContainer;\n if (range.startOffset > 0) {\n const prevNode = container.childNodes[range.startOffset - 1];\n if (isHTMLElement(prevNode) && getTokenType(prevNode) === ElementType.Trigger) {\n triggerElement = prevNode;\n caretAtEnd = true;\n }\n }\n }\n\n if (!triggerElement || !caretAtEnd) {\n return false;\n }\n\n const paragraph = triggerElement.parentElement;\n if (!paragraph) {\n return false;\n }\n\n event.preventDefault();\n\n if (caretController) {\n caretController.capture();\n }\n\n const spaceNode = (triggerElement.ownerDocument ?? document).createTextNode(' ');\n insertAfter(spaceNode, triggerElement);\n\n editableElement.dispatchEvent(new Event('input', { bubbles: true }));\n\n if (caretController) {\n caretController.restore(1);\n }\n\n return true;\n}\n\nexport type MergeDirection = 'forward' | 'backward';\n\ninterface MergeParagraphsParams {\n direction: MergeDirection;\n editableElement: HTMLDivElement;\n tokens: readonly PromptInputProps.InputToken[];\n currentParagraphIndex: number;\n tokensToText?: (tokens: readonly PromptInputProps.InputToken[]) => string;\n onChange: (detail: { value: string; tokens: PromptInputProps.InputToken[] }) => void;\n caretController?: CaretController | null;\n}\n\n/** Merges two adjacent paragraphs by removing the break token between them. */\nexport function mergeParagraphs(params: MergeParagraphsParams): boolean {\n const { direction, editableElement, tokens, currentParagraphIndex, tokensToText, onChange, caretController } = params;\n\n const paragraphs = findAllParagraphs(editableElement);\n\n if (direction === 'backward') {\n if (currentParagraphIndex <= 0) {\n return false;\n }\n } else {\n if (currentParagraphIndex >= paragraphs.length - 1) {\n return false;\n }\n }\n\n const breakIndexToRemove = direction === 'backward' ? currentParagraphIndex : currentParagraphIndex + 1;\n\n let breakCount = 0;\n let breakRemoved = false;\n\n const newTokens = tokens.filter(token => {\n if (isBreakTextToken(token)) {\n breakCount++;\n if (breakCount === breakIndexToRemove) {\n breakRemoved = true;\n return false;\n }\n }\n return true;\n });\n\n if (!breakRemoved) {\n return false;\n }\n\n const value = tokensToText ? tokensToText(newTokens) : getPromptText(newTokens);\n onChange({ value, tokens: newTokens });\n\n if (caretController) {\n const currentPos = caretController.getPosition();\n // Backspace: cursor was at start of next paragraph, now needs to move back by the removed break\n // Delete: cursor stays where it is — the next line merges into the current one\n const newCaretPos = direction === 'backward' ? currentPos - TOKEN_LENGTHS.LINE_BREAK : currentPos;\n caretController.setPosition(newCaretPos);\n }\n\n return true;\n}\n\n/** Handles Backspace at the start of a paragraph by merging with the previous one. */\nexport function handleBackspaceAtParagraphStart(\n event: React.KeyboardEvent<HTMLDivElement>,\n editableElement: HTMLDivElement,\n tokens: readonly PromptInputProps.InputToken[],\n tokensToText: ((tokens: readonly PromptInputProps.InputToken[]) => string) | undefined,\n onChange: (detail: { value: string; tokens: PromptInputProps.InputToken[] }) => void,\n caretController: CaretController | null\n): boolean {\n const selection = getOwnerSelection(editableElement);\n if (!selection?.rangeCount) {\n return false;\n }\n\n const range = selection.getRangeAt(0);\n\n if (\n !range.collapsed ||\n range.startOffset !== 0 ||\n !isHTMLElement(range.startContainer) ||\n range.startContainer.nodeName !== 'P'\n ) {\n return false;\n }\n\n const paragraphs = findAllParagraphs(editableElement);\n const currentP = range.startContainer;\n const pIndex = Array.from(paragraphs).indexOf(currentP as HTMLParagraphElement);\n\n if (pIndex < 0) {\n return false;\n }\n\n const merged = mergeParagraphs({\n direction: 'backward',\n editableElement,\n tokens,\n currentParagraphIndex: pIndex,\n tokensToText,\n onChange,\n caretController: caretController,\n });\n\n if (merged) {\n event.preventDefault();\n }\n\n return merged;\n}\n\n/** Handles Delete at the end of a paragraph by merging with the next one. */\nexport function handleDeleteAtParagraphEnd(\n event: React.KeyboardEvent<HTMLDivElement>,\n editableElement: HTMLDivElement,\n tokens: readonly PromptInputProps.InputToken[],\n tokensToText: ((tokens: readonly PromptInputProps.InputToken[]) => string) | undefined,\n onChange: (detail: { value: string; tokens: PromptInputProps.InputToken[] }) => void,\n caretController: CaretController | null\n): boolean {\n const selection = getOwnerSelection(editableElement);\n if (!selection?.rangeCount) {\n return false;\n }\n\n const range = selection.getRangeAt(0);\n const container = range.startContainer;\n\n if (!range.collapsed) {\n return false;\n }\n\n let isAtEndOfParagraph = false;\n let currentP: HTMLParagraphElement | null = null;\n\n if (isHTMLElement(container) && container.nodeName === 'P') {\n currentP = container as HTMLParagraphElement;\n const hasOnlyTrailingBR = currentP.childNodes.length === 1 && isBRElement(currentP.firstChild);\n isAtEndOfParagraph = hasOnlyTrailingBR || range.startOffset === currentP.childNodes.length;\n } else if (isTextNode(container)) {\n isAtEndOfParagraph = range.startOffset === (container.textContent?.length || 0) && !container.nextSibling;\n let node: Node | null = container;\n while (node && node.nodeName !== 'P') {\n node = node.parentNode;\n }\n currentP = node as HTMLParagraphElement;\n }\n\n if (!isAtEndOfParagraph || !currentP) {\n return false;\n }\n\n const paragraphs = findAllParagraphs(editableElement);\n const pIndex = Array.from(paragraphs).indexOf(currentP);\n\n if (pIndex < 0) {\n return false;\n }\n\n const merged = mergeParagraphs({\n direction: 'forward',\n editableElement,\n tokens,\n currentParagraphIndex: pIndex,\n tokensToText,\n onChange,\n caretController: caretController,\n });\n\n if (merged) {\n event.preventDefault();\n }\n\n return merged;\n}\n\n/** Handles copy/cut events on the contentEditable element. */\nexport function handleClipboardEvent(event: React.ClipboardEvent, editableElement: HTMLElement, isCut: boolean): void {\n const selection = getOwnerSelection(editableElement);\n if (!selection || selection.rangeCount === 0) {\n return;\n }\n\n const range = selection.getRangeAt(0);\n const fragment = range.cloneContents();\n\n const paragraphs = findAllParagraphs(fragment);\n const text =\n paragraphs.length > 0\n ? paragraphs.map(p => stripZeroWidthCharacters(p.textContent || '')).join('\\n')\n : stripZeroWidthCharacters(fragment.textContent || '');\n\n event.clipboardData.setData('text/plain', text);\n event.preventDefault();\n\n if (isCut) {\n selection.deleteFromDocument();\n }\n}\n"]}
|
package/prompt-input/internal.js
CHANGED
|
@@ -90,7 +90,7 @@ const InternalPromptInput = React.forwardRef(({ value: valueProp, actionButtonAr
|
|
|
90
90
|
else {
|
|
91
91
|
adjustInputHeight();
|
|
92
92
|
}
|
|
93
|
-
}, [isTokenMode, tokens, adjustInputHeight, value, isCompactMode]);
|
|
93
|
+
}, [isTokenMode, tokens, adjustInputHeight, value, isCompactMode, placeholder]);
|
|
94
94
|
const plainTextValue = isTokenMode
|
|
95
95
|
? tokensToText
|
|
96
96
|
? tokensToText(tokens !== null && tokens !== void 0 ? tokens : [])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/prompt-input/internal.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\nimport React, { Ref, useEffect, useImperativeHandle, useRef } from 'react';\nimport clsx from 'clsx';\n\nimport { useDensityMode, useStableCallback, warnOnce } from '@cloudscape-design/component-toolkit/internal';\n\nimport InternalButton from '../button/internal';\nimport { useInternalI18n } from '../i18n/context';\nimport { convertAutoComplete } from '../input/utils';\nimport { getBaseProps } from '../internal/base-component';\nimport { useFormFieldContext } from '../internal/context/form-field-context';\nimport { fireCancelableEvent, fireKeyboardEvent, fireNonCancelableEvent } from '../internal/events';\nimport * as designTokens from '../internal/generated/styles/tokens';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { isDevelopment } from '../internal/is-development';\nimport { SomeRequired } from '../internal/types';\nimport InternalLiveRegion from '../live-region/internal';\nimport TextareaMode from './components/textarea-mode';\nimport TokenMode from './components/token-mode';\nimport { CaretController } from './core/caret-controller';\nimport { DEFAULT_MAX_ROWS } from './core/constants';\nimport { getPromptText } from './core/token-operations';\nimport { supportsTokenMode } from './core/token-renderer';\nimport { isPinnedReferenceToken } from './core/type-guards';\nimport { PromptInputProps } from './interfaces';\nimport { getPromptInputStyles } from './styles';\nimport { useTokenMode } from './tokens/use-token-mode';\nimport { insertTextIntoContentEditable } from './utils/insert-text-content-editable';\n\nimport styles from './styles.css.js';\nimport testutilStyles from './test-classes/styles.css.js';\n\ninterface InternalPromptInputProps\n extends SomeRequired<PromptInputProps, 'maxRows' | 'minRows'>,\n InternalBaseComponentProps {}\n\nconst InternalPromptInput = React.forwardRef(\n (\n {\n value: valueProp,\n actionButtonAriaLabel,\n actionButtonIconName,\n actionButtonIconUrl,\n actionButtonIconSvg,\n actionButtonIconAlt,\n ariaLabel,\n autoFocus,\n autoComplete,\n disableActionButton,\n disableBrowserAutocorrect,\n disabled,\n maxRows,\n minRows,\n name,\n onAction,\n onBlur,\n onChange,\n onFocus,\n onKeyDown,\n onKeyUp,\n placeholder,\n readOnly,\n spellcheck,\n customPrimaryAction,\n secondaryActions,\n secondaryContent,\n disableSecondaryActionsPaddings,\n disableSecondaryContentPaddings,\n nativeTextareaAttributes,\n style,\n tokens,\n tokensToText,\n menus,\n maxMenuHeight,\n onMenuItemSelect,\n onMenuFilter,\n onMenuLoadItems,\n onTriggerDetected,\n i18nStrings,\n __internalRootRef,\n ...rest\n }: InternalPromptInputProps,\n ref: Ref<PromptInputProps.Ref | HTMLTextAreaElement | HTMLInputElement>\n ) => {\n const { ariaLabelledby, ariaDescribedby, controlId, invalid, warning } = useFormFieldContext(rest);\n const baseProps = getBaseProps(rest);\n\n const i18n = useInternalI18n('prompt-input');\n\n const effectiveI18nStrings: PromptInputProps.I18nStrings = {\n actionButtonAriaLabel: i18n(\n 'i18nStrings.actionButtonAriaLabel',\n i18nStrings?.actionButtonAriaLabel ?? actionButtonAriaLabel\n ),\n menuErrorIconAriaLabel: i18n('i18nStrings.menuErrorIconAriaLabel', i18nStrings?.menuErrorIconAriaLabel),\n menuRecoveryText: i18n('i18nStrings.menuRecoveryText', i18nStrings?.menuRecoveryText),\n menuLoadingText: i18n('i18nStrings.menuLoadingText', i18nStrings?.menuLoadingText),\n menuFinishedText: i18n('i18nStrings.menuFinishedText', i18nStrings?.menuFinishedText),\n menuErrorText: i18n('i18nStrings.menuErrorText', i18nStrings?.menuErrorText),\n tokenInsertedAriaLabel: i18n(\n 'i18nStrings.tokenInsertedAriaLabel',\n i18nStrings?.tokenInsertedAriaLabel,\n format => token => format({ token__label: token.label || token.value })\n ),\n tokenPinnedAriaLabel: i18n(\n 'i18nStrings.tokenPinnedAriaLabel',\n i18nStrings?.tokenPinnedAriaLabel,\n format => token => format({ token__label: token.label || token.value })\n ),\n tokenRemovedAriaLabel: i18n(\n 'i18nStrings.tokenRemovedAriaLabel',\n i18nStrings?.tokenRemovedAriaLabel,\n format => token => format({ token__label: token.label || token.value })\n ),\n };\n\n const isTokenMode = !!tokens && supportsTokenMode;\n\n if (isDevelopment) {\n if ((menus || tokens) && !supportsTokenMode) {\n warnOnce(\n 'PromptInput',\n 'Shortcuts features require React 18 or later. The `menus` and `tokens` props will be ignored and shortcuts features will not function.'\n );\n }\n }\n\n const value = valueProp ?? '';\n\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const editableElementRef = useRef<HTMLDivElement>(null);\n const caretControllerRef = useRef<CaretController | null>(null);\n\n const isRefresh = useVisualRefresh();\n const textareaDensityMode = useDensityMode(textareaRef);\n const editableDensityMode = useDensityMode(editableElementRef);\n const isCompactMode = (isTokenMode ? editableDensityMode : textareaDensityMode) === 'compact';\n\n const PADDING = isRefresh ? designTokens.spaceXxs : designTokens.spaceXxxs;\n const LINE_HEIGHT = designTokens.lineHeightBodyM;\n\n const getActiveElement = useStableCallback(() => {\n return isTokenMode ? editableElementRef.current : textareaRef.current;\n });\n\n /**\n * Dynamically adjusts the input height based on content and row constraints.\n */\n const adjustInputHeight = useStableCallback(() => {\n const element = getActiveElement();\n if (!element) {\n return;\n }\n\n const scrollTop = element.scrollTop;\n // this is required so the scrollHeight becomes dynamic, otherwise it will be locked at the highest value for the size it reached e.g. 500px\n element.style.height = 'auto';\n\n const minRowsHeight = `calc(${LINE_HEIGHT} + ${designTokens.spaceFieldVertical} * 2)`;\n const scrollHeight = `calc(${element.scrollHeight}px)`;\n\n if (maxRows === -1) {\n element.style.height = `max(${scrollHeight}, ${minRowsHeight})`;\n } else {\n const maxRowsHeight = `calc(${maxRows <= 0 ? DEFAULT_MAX_ROWS : maxRows} * (${LINE_HEIGHT} + ${PADDING} / 2) + ${PADDING})`;\n element.style.height = `min(max(${scrollHeight}, ${minRowsHeight}), ${maxRowsHeight})`;\n }\n\n if (isTokenMode) {\n element.scrollTop = scrollTop;\n }\n });\n\n useEffect(() => {\n if (isTokenMode) {\n requestAnimationFrame(() => adjustInputHeight());\n } else {\n adjustInputHeight();\n }\n }, [isTokenMode, tokens, adjustInputHeight, value, isCompactMode]);\n\n const plainTextValue = isTokenMode\n ? tokensToText\n ? tokensToText(tokens ?? [])\n : getPromptText(tokens ?? [])\n : value;\n\n const tokenMode = useTokenMode({\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: rest.ariaRequired,\n disableBrowserAutocorrect,\n spellcheck,\n onChange: (detail: { value: string; tokens: PromptInputProps.InputToken[] }) => {\n fireNonCancelableEvent(onChange, detail);\n },\n onTriggerDetected: onTriggerDetected ? detail => fireCancelableEvent(onTriggerDetected, detail) : undefined,\n onAction,\n onBlur,\n onFocus,\n onKeyDown,\n onKeyUp,\n onMenuItemSelect,\n onMenuFilter,\n onMenuLoadItems,\n i18nStrings: effectiveI18nStrings,\n adjustInputHeight,\n });\n\n const handleInsertText = useStableCallback((text: string, caretStart?: number, caretEnd?: number) => {\n if (disabled || readOnly) {\n return;\n }\n\n if (!isTokenMode || !editableElementRef.current || !tokens || !caretControllerRef.current) {\n return;\n }\n\n let adjustedCaretStart: number;\n let adjustedCaretEnd: number | undefined;\n\n if (caretStart === undefined) {\n const currentPos = caretControllerRef.current.getPosition();\n const pinnedCount = tokens.filter(isPinnedReferenceToken).length;\n\n // If the caret is before or between pinned tokens, move it after them.\n // Text inserted here would get pushed after pinned tokens by enforcePinnedTokenOrdering,\n // but the caret wouldn't follow — so we preemptively position it correctly.\n adjustedCaretStart = pinnedCount > 0 && currentPos < pinnedCount ? pinnedCount : currentPos;\n adjustedCaretEnd = undefined;\n } else {\n const pinnedTokens = tokens.filter(isPinnedReferenceToken);\n const pinnedOffset = pinnedTokens.length;\n\n adjustedCaretStart = caretStart + pinnedOffset;\n adjustedCaretEnd = caretEnd !== undefined ? caretEnd + pinnedOffset : undefined;\n }\n\n insertTextIntoContentEditable(\n editableElementRef.current,\n text,\n adjustedCaretStart,\n adjustedCaretEnd,\n caretControllerRef.current\n );\n });\n\n useImperativeHandle(\n ref,\n () => ({\n focus(...args: Parameters<HTMLElement['focus']>) {\n getActiveElement()?.focus(...args);\n },\n select() {\n if (isTokenMode) {\n if (editableElementRef.current && caretControllerRef.current) {\n caretControllerRef.current.selectAll();\n }\n } else {\n textareaRef.current?.select();\n }\n },\n setSelectionRange(...args: Parameters<HTMLTextAreaElement['setSelectionRange']>) {\n if (isTokenMode && caretControllerRef.current) {\n const [start, end] = args;\n const actualEnd = end ?? undefined;\n caretControllerRef.current.setPosition(start ?? 0, actualEnd);\n } else {\n textareaRef.current?.setSelectionRange(...args);\n }\n },\n insertText: handleInsertText,\n }),\n [getActiveElement, isTokenMode, handleInsertText]\n );\n\n const handleTextareaKeyDown = (event: React.KeyboardEvent<HTMLTextAreaElement>) => {\n fireKeyboardEvent(onKeyDown, event);\n\n if (event.key === 'Enter' && !event.shiftKey && !event.nativeEvent.isComposing) {\n if (event.currentTarget.form && !event.isDefaultPrevented()) {\n event.currentTarget.form.requestSubmit();\n }\n event.preventDefault();\n fireNonCancelableEvent(onAction, {\n value: plainTextValue,\n });\n }\n };\n\n const handleTextareaChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (isTokenMode) {\n tokenMode.markTokensAsSent(tokens ?? []);\n }\n const detail: PromptInputProps.ChangeDetail = {\n value: event.target.value,\n };\n fireNonCancelableEvent(onChange, detail);\n adjustInputHeight();\n };\n\n const hasActionButton = !!(\n actionButtonIconName ||\n actionButtonIconSvg ||\n actionButtonIconUrl ||\n customPrimaryAction\n );\n\n const textareaAttributes: React.TextareaHTMLAttributes<HTMLTextAreaElement> = {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n 'aria-invalid': invalid ? 'true' : undefined,\n name,\n placeholder,\n autoFocus,\n className: clsx(styles.textarea, testutilStyles.textarea, {\n [styles.invalid]: invalid,\n [styles.warning]: warning,\n }),\n autoComplete: convertAutoComplete(autoComplete),\n autoCorrect: disableBrowserAutocorrect ? 'off' : undefined,\n autoCapitalize: disableBrowserAutocorrect ? 'off' : undefined,\n spellCheck: spellcheck,\n disabled,\n readOnly: readOnly ? true : undefined,\n rows: minRows,\n value: value || '',\n onKeyDown: handleTextareaKeyDown,\n onKeyUp: onKeyUp && (event => fireKeyboardEvent(onKeyUp, event)),\n onChange: handleTextareaChange,\n onBlur: onBlur && (() => fireNonCancelableEvent(onBlur)),\n onFocus: onFocus && (() => fireNonCancelableEvent(onFocus)),\n };\n\n const actionButton = (\n <div className={clsx(styles['primary-action'], testutilStyles['primary-action'])}>\n {customPrimaryAction ?? (\n <InternalButton\n className={clsx(styles['action-button'], testutilStyles['action-button'])}\n ariaLabel={effectiveI18nStrings.actionButtonAriaLabel}\n disabled={disabled || readOnly || disableActionButton}\n __focusable={readOnly}\n iconName={actionButtonIconName}\n iconUrl={actionButtonIconUrl}\n iconSvg={actionButtonIconSvg}\n iconAlt={actionButtonIconAlt}\n onClick={() => {\n fireNonCancelableEvent(onAction, {\n value: plainTextValue,\n ...(isTokenMode && { tokens: tokens ?? [] }),\n });\n }}\n variant=\"icon\"\n />\n )}\n </div>\n );\n\n return (\n <div\n {...baseProps}\n aria-label={ariaLabel}\n className={clsx(styles.root, testutilStyles.root, baseProps.className, {\n [styles['textarea-readonly']]: readOnly,\n [styles['textarea-invalid']]: invalid,\n [styles['textarea-warning']]: warning && !invalid,\n [styles.disabled]: disabled,\n })}\n ref={__internalRootRef}\n role=\"region\"\n style={getPromptInputStyles(style)}\n >\n <InternalLiveRegion tagName=\"span\" hidden={true} assertive={true} delay={0}>\n {tokenMode.tokenOperationAnnouncement}\n </InternalLiveRegion>\n\n {secondaryContent && (\n <div\n className={clsx(styles['secondary-content'], testutilStyles['secondary-content'], {\n [styles['with-paddings']]: !disableSecondaryContentPaddings,\n [styles.invalid]: invalid,\n [styles.warning]: warning,\n })}\n >\n {secondaryContent}\n </div>\n )}\n\n <div className={styles['textarea-wrapper']}>\n {isTokenMode ? (\n <TokenMode\n editableElementRef={editableElementRef}\n triggerWrapperRef={tokenMode.triggerWrapperRef}\n controlId={controlId}\n menuListId={tokenMode.menuListId}\n menuFooterControlId={tokenMode.menuFooterControlId}\n highlightedMenuOptionId={tokenMode.highlightedMenuOptionId}\n name={name}\n plainTextValue={plainTextValue}\n menuIsOpen={tokenMode.menuIsOpen}\n triggerWrapperReady={tokenMode.triggerWrapperReady}\n shouldRenderMenuDropdown={tokenMode.shouldRenderMenuDropdown}\n activeMenu={tokenMode.activeMenu}\n activeTriggerToken={tokenMode.activeTriggerToken}\n menuFilterText={tokenMode.menuFilterText}\n menuItemsState={tokenMode.menuItemsState}\n menuItemsHandlers={tokenMode.menuItemsHandlers}\n menuDropdownStatus={tokenMode.menuDropdownStatus}\n maxMenuHeight={maxMenuHeight}\n handleInput={tokenMode.handleInput}\n handleLoadMore={tokenMode.handleLoadMore}\n editableElementAttributes={tokenMode.editableElementAttributes}\n i18nStrings={effectiveI18nStrings}\n />\n ) : (\n <TextareaMode\n textareaRef={textareaRef}\n controlId={controlId}\n textareaAttributes={textareaAttributes}\n nativeTextareaAttributes={nativeTextareaAttributes}\n />\n )}\n {hasActionButton && !secondaryActions && actionButton}\n </div>\n\n {/* Render reference tokens into their DOM containers via portals */}\n {isTokenMode && tokenMode.portals}\n\n {secondaryActions && (\n <div\n className={clsx(styles['action-stripe'], {\n [styles.invalid]: invalid,\n [styles.warning]: warning,\n })}\n >\n <div\n className={clsx(styles['secondary-actions'], testutilStyles['secondary-actions'], {\n [styles['with-paddings']]: !disableSecondaryActionsPaddings,\n [styles['with-paddings-and-actions']]: !disableSecondaryActionsPaddings && hasActionButton,\n [styles.invalid]: invalid,\n [styles.warning]: warning,\n })}\n >\n {secondaryActions}\n </div>\n <div className={styles.buffer} onClick={() => getActiveElement()?.focus()} />\n {hasActionButton && actionButton}\n </div>\n )}\n </div>\n );\n }\n);\n\nexport default InternalPromptInput;\n"]}
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/prompt-input/internal.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\nimport React, { Ref, useEffect, useImperativeHandle, useRef } from 'react';\nimport clsx from 'clsx';\n\nimport { useDensityMode, useStableCallback, warnOnce } from '@cloudscape-design/component-toolkit/internal';\n\nimport InternalButton from '../button/internal';\nimport { useInternalI18n } from '../i18n/context';\nimport { convertAutoComplete } from '../input/utils';\nimport { getBaseProps } from '../internal/base-component';\nimport { useFormFieldContext } from '../internal/context/form-field-context';\nimport { fireCancelableEvent, fireKeyboardEvent, fireNonCancelableEvent } from '../internal/events';\nimport * as designTokens from '../internal/generated/styles/tokens';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { isDevelopment } from '../internal/is-development';\nimport { SomeRequired } from '../internal/types';\nimport InternalLiveRegion from '../live-region/internal';\nimport TextareaMode from './components/textarea-mode';\nimport TokenMode from './components/token-mode';\nimport { CaretController } from './core/caret-controller';\nimport { DEFAULT_MAX_ROWS } from './core/constants';\nimport { getPromptText } from './core/token-operations';\nimport { supportsTokenMode } from './core/token-renderer';\nimport { isPinnedReferenceToken } from './core/type-guards';\nimport { PromptInputProps } from './interfaces';\nimport { getPromptInputStyles } from './styles';\nimport { useTokenMode } from './tokens/use-token-mode';\nimport { insertTextIntoContentEditable } from './utils/insert-text-content-editable';\n\nimport styles from './styles.css.js';\nimport testutilStyles from './test-classes/styles.css.js';\n\ninterface InternalPromptInputProps\n extends SomeRequired<PromptInputProps, 'maxRows' | 'minRows'>,\n InternalBaseComponentProps {}\n\nconst InternalPromptInput = React.forwardRef(\n (\n {\n value: valueProp,\n actionButtonAriaLabel,\n actionButtonIconName,\n actionButtonIconUrl,\n actionButtonIconSvg,\n actionButtonIconAlt,\n ariaLabel,\n autoFocus,\n autoComplete,\n disableActionButton,\n disableBrowserAutocorrect,\n disabled,\n maxRows,\n minRows,\n name,\n onAction,\n onBlur,\n onChange,\n onFocus,\n onKeyDown,\n onKeyUp,\n placeholder,\n readOnly,\n spellcheck,\n customPrimaryAction,\n secondaryActions,\n secondaryContent,\n disableSecondaryActionsPaddings,\n disableSecondaryContentPaddings,\n nativeTextareaAttributes,\n style,\n tokens,\n tokensToText,\n menus,\n maxMenuHeight,\n onMenuItemSelect,\n onMenuFilter,\n onMenuLoadItems,\n onTriggerDetected,\n i18nStrings,\n __internalRootRef,\n ...rest\n }: InternalPromptInputProps,\n ref: Ref<PromptInputProps.Ref | HTMLTextAreaElement | HTMLInputElement>\n ) => {\n const { ariaLabelledby, ariaDescribedby, controlId, invalid, warning } = useFormFieldContext(rest);\n const baseProps = getBaseProps(rest);\n\n const i18n = useInternalI18n('prompt-input');\n\n const effectiveI18nStrings: PromptInputProps.I18nStrings = {\n actionButtonAriaLabel: i18n(\n 'i18nStrings.actionButtonAriaLabel',\n i18nStrings?.actionButtonAriaLabel ?? actionButtonAriaLabel\n ),\n menuErrorIconAriaLabel: i18n('i18nStrings.menuErrorIconAriaLabel', i18nStrings?.menuErrorIconAriaLabel),\n menuRecoveryText: i18n('i18nStrings.menuRecoveryText', i18nStrings?.menuRecoveryText),\n menuLoadingText: i18n('i18nStrings.menuLoadingText', i18nStrings?.menuLoadingText),\n menuFinishedText: i18n('i18nStrings.menuFinishedText', i18nStrings?.menuFinishedText),\n menuErrorText: i18n('i18nStrings.menuErrorText', i18nStrings?.menuErrorText),\n tokenInsertedAriaLabel: i18n(\n 'i18nStrings.tokenInsertedAriaLabel',\n i18nStrings?.tokenInsertedAriaLabel,\n format => token => format({ token__label: token.label || token.value })\n ),\n tokenPinnedAriaLabel: i18n(\n 'i18nStrings.tokenPinnedAriaLabel',\n i18nStrings?.tokenPinnedAriaLabel,\n format => token => format({ token__label: token.label || token.value })\n ),\n tokenRemovedAriaLabel: i18n(\n 'i18nStrings.tokenRemovedAriaLabel',\n i18nStrings?.tokenRemovedAriaLabel,\n format => token => format({ token__label: token.label || token.value })\n ),\n };\n\n const isTokenMode = !!tokens && supportsTokenMode;\n\n if (isDevelopment) {\n if ((menus || tokens) && !supportsTokenMode) {\n warnOnce(\n 'PromptInput',\n 'Shortcuts features require React 18 or later. The `menus` and `tokens` props will be ignored and shortcuts features will not function.'\n );\n }\n }\n\n const value = valueProp ?? '';\n\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const editableElementRef = useRef<HTMLDivElement>(null);\n const caretControllerRef = useRef<CaretController | null>(null);\n\n const isRefresh = useVisualRefresh();\n const textareaDensityMode = useDensityMode(textareaRef);\n const editableDensityMode = useDensityMode(editableElementRef);\n const isCompactMode = (isTokenMode ? editableDensityMode : textareaDensityMode) === 'compact';\n\n const PADDING = isRefresh ? designTokens.spaceXxs : designTokens.spaceXxxs;\n const LINE_HEIGHT = designTokens.lineHeightBodyM;\n\n const getActiveElement = useStableCallback(() => {\n return isTokenMode ? editableElementRef.current : textareaRef.current;\n });\n\n /**\n * Dynamically adjusts the input height based on content and row constraints.\n */\n const adjustInputHeight = useStableCallback(() => {\n const element = getActiveElement();\n if (!element) {\n return;\n }\n\n const scrollTop = element.scrollTop;\n // this is required so the scrollHeight becomes dynamic, otherwise it will be locked at the highest value for the size it reached e.g. 500px\n element.style.height = 'auto';\n\n const minRowsHeight = `calc(${LINE_HEIGHT} + ${designTokens.spaceFieldVertical} * 2)`;\n const scrollHeight = `calc(${element.scrollHeight}px)`;\n\n if (maxRows === -1) {\n element.style.height = `max(${scrollHeight}, ${minRowsHeight})`;\n } else {\n const maxRowsHeight = `calc(${maxRows <= 0 ? DEFAULT_MAX_ROWS : maxRows} * (${LINE_HEIGHT} + ${PADDING} / 2) + ${PADDING})`;\n element.style.height = `min(max(${scrollHeight}, ${minRowsHeight}), ${maxRowsHeight})`;\n }\n\n if (isTokenMode) {\n element.scrollTop = scrollTop;\n }\n });\n\n useEffect(() => {\n if (isTokenMode) {\n requestAnimationFrame(() => adjustInputHeight());\n } else {\n adjustInputHeight();\n }\n }, [isTokenMode, tokens, adjustInputHeight, value, isCompactMode, placeholder]);\n\n const plainTextValue = isTokenMode\n ? tokensToText\n ? tokensToText(tokens ?? [])\n : getPromptText(tokens ?? [])\n : value;\n\n const tokenMode = useTokenMode({\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: rest.ariaRequired,\n disableBrowserAutocorrect,\n spellcheck,\n onChange: (detail: { value: string; tokens: PromptInputProps.InputToken[] }) => {\n fireNonCancelableEvent(onChange, detail);\n },\n onTriggerDetected: onTriggerDetected ? detail => fireCancelableEvent(onTriggerDetected, detail) : undefined,\n onAction,\n onBlur,\n onFocus,\n onKeyDown,\n onKeyUp,\n onMenuItemSelect,\n onMenuFilter,\n onMenuLoadItems,\n i18nStrings: effectiveI18nStrings,\n adjustInputHeight,\n });\n\n const handleInsertText = useStableCallback((text: string, caretStart?: number, caretEnd?: number) => {\n if (disabled || readOnly) {\n return;\n }\n\n if (!isTokenMode || !editableElementRef.current || !tokens || !caretControllerRef.current) {\n return;\n }\n\n let adjustedCaretStart: number;\n let adjustedCaretEnd: number | undefined;\n\n if (caretStart === undefined) {\n const currentPos = caretControllerRef.current.getPosition();\n const pinnedCount = tokens.filter(isPinnedReferenceToken).length;\n\n // If the caret is before or between pinned tokens, move it after them.\n // Text inserted here would get pushed after pinned tokens by enforcePinnedTokenOrdering,\n // but the caret wouldn't follow — so we preemptively position it correctly.\n adjustedCaretStart = pinnedCount > 0 && currentPos < pinnedCount ? pinnedCount : currentPos;\n adjustedCaretEnd = undefined;\n } else {\n const pinnedTokens = tokens.filter(isPinnedReferenceToken);\n const pinnedOffset = pinnedTokens.length;\n\n adjustedCaretStart = caretStart + pinnedOffset;\n adjustedCaretEnd = caretEnd !== undefined ? caretEnd + pinnedOffset : undefined;\n }\n\n insertTextIntoContentEditable(\n editableElementRef.current,\n text,\n adjustedCaretStart,\n adjustedCaretEnd,\n caretControllerRef.current\n );\n });\n\n useImperativeHandle(\n ref,\n () => ({\n focus(...args: Parameters<HTMLElement['focus']>) {\n getActiveElement()?.focus(...args);\n },\n select() {\n if (isTokenMode) {\n if (editableElementRef.current && caretControllerRef.current) {\n caretControllerRef.current.selectAll();\n }\n } else {\n textareaRef.current?.select();\n }\n },\n setSelectionRange(...args: Parameters<HTMLTextAreaElement['setSelectionRange']>) {\n if (isTokenMode && caretControllerRef.current) {\n const [start, end] = args;\n const actualEnd = end ?? undefined;\n caretControllerRef.current.setPosition(start ?? 0, actualEnd);\n } else {\n textareaRef.current?.setSelectionRange(...args);\n }\n },\n insertText: handleInsertText,\n }),\n [getActiveElement, isTokenMode, handleInsertText]\n );\n\n const handleTextareaKeyDown = (event: React.KeyboardEvent<HTMLTextAreaElement>) => {\n fireKeyboardEvent(onKeyDown, event);\n\n if (event.key === 'Enter' && !event.shiftKey && !event.nativeEvent.isComposing) {\n if (event.currentTarget.form && !event.isDefaultPrevented()) {\n event.currentTarget.form.requestSubmit();\n }\n event.preventDefault();\n fireNonCancelableEvent(onAction, {\n value: plainTextValue,\n });\n }\n };\n\n const handleTextareaChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (isTokenMode) {\n tokenMode.markTokensAsSent(tokens ?? []);\n }\n const detail: PromptInputProps.ChangeDetail = {\n value: event.target.value,\n };\n fireNonCancelableEvent(onChange, detail);\n adjustInputHeight();\n };\n\n const hasActionButton = !!(\n actionButtonIconName ||\n actionButtonIconSvg ||\n actionButtonIconUrl ||\n customPrimaryAction\n );\n\n const textareaAttributes: React.TextareaHTMLAttributes<HTMLTextAreaElement> = {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n 'aria-invalid': invalid ? 'true' : undefined,\n name,\n placeholder,\n autoFocus,\n className: clsx(styles.textarea, testutilStyles.textarea, {\n [styles.invalid]: invalid,\n [styles.warning]: warning,\n }),\n autoComplete: convertAutoComplete(autoComplete),\n autoCorrect: disableBrowserAutocorrect ? 'off' : undefined,\n autoCapitalize: disableBrowserAutocorrect ? 'off' : undefined,\n spellCheck: spellcheck,\n disabled,\n readOnly: readOnly ? true : undefined,\n rows: minRows,\n value: value || '',\n onKeyDown: handleTextareaKeyDown,\n onKeyUp: onKeyUp && (event => fireKeyboardEvent(onKeyUp, event)),\n onChange: handleTextareaChange,\n onBlur: onBlur && (() => fireNonCancelableEvent(onBlur)),\n onFocus: onFocus && (() => fireNonCancelableEvent(onFocus)),\n };\n\n const actionButton = (\n <div className={clsx(styles['primary-action'], testutilStyles['primary-action'])}>\n {customPrimaryAction ?? (\n <InternalButton\n className={clsx(styles['action-button'], testutilStyles['action-button'])}\n ariaLabel={effectiveI18nStrings.actionButtonAriaLabel}\n disabled={disabled || readOnly || disableActionButton}\n __focusable={readOnly}\n iconName={actionButtonIconName}\n iconUrl={actionButtonIconUrl}\n iconSvg={actionButtonIconSvg}\n iconAlt={actionButtonIconAlt}\n onClick={() => {\n fireNonCancelableEvent(onAction, {\n value: plainTextValue,\n ...(isTokenMode && { tokens: tokens ?? [] }),\n });\n }}\n variant=\"icon\"\n />\n )}\n </div>\n );\n\n return (\n <div\n {...baseProps}\n aria-label={ariaLabel}\n className={clsx(styles.root, testutilStyles.root, baseProps.className, {\n [styles['textarea-readonly']]: readOnly,\n [styles['textarea-invalid']]: invalid,\n [styles['textarea-warning']]: warning && !invalid,\n [styles.disabled]: disabled,\n })}\n ref={__internalRootRef}\n role=\"region\"\n style={getPromptInputStyles(style)}\n >\n <InternalLiveRegion tagName=\"span\" hidden={true} assertive={true} delay={0}>\n {tokenMode.tokenOperationAnnouncement}\n </InternalLiveRegion>\n\n {secondaryContent && (\n <div\n className={clsx(styles['secondary-content'], testutilStyles['secondary-content'], {\n [styles['with-paddings']]: !disableSecondaryContentPaddings,\n [styles.invalid]: invalid,\n [styles.warning]: warning,\n })}\n >\n {secondaryContent}\n </div>\n )}\n\n <div className={styles['textarea-wrapper']}>\n {isTokenMode ? (\n <TokenMode\n editableElementRef={editableElementRef}\n triggerWrapperRef={tokenMode.triggerWrapperRef}\n controlId={controlId}\n menuListId={tokenMode.menuListId}\n menuFooterControlId={tokenMode.menuFooterControlId}\n highlightedMenuOptionId={tokenMode.highlightedMenuOptionId}\n name={name}\n plainTextValue={plainTextValue}\n menuIsOpen={tokenMode.menuIsOpen}\n triggerWrapperReady={tokenMode.triggerWrapperReady}\n shouldRenderMenuDropdown={tokenMode.shouldRenderMenuDropdown}\n activeMenu={tokenMode.activeMenu}\n activeTriggerToken={tokenMode.activeTriggerToken}\n menuFilterText={tokenMode.menuFilterText}\n menuItemsState={tokenMode.menuItemsState}\n menuItemsHandlers={tokenMode.menuItemsHandlers}\n menuDropdownStatus={tokenMode.menuDropdownStatus}\n maxMenuHeight={maxMenuHeight}\n handleInput={tokenMode.handleInput}\n handleLoadMore={tokenMode.handleLoadMore}\n editableElementAttributes={tokenMode.editableElementAttributes}\n i18nStrings={effectiveI18nStrings}\n />\n ) : (\n <TextareaMode\n textareaRef={textareaRef}\n controlId={controlId}\n textareaAttributes={textareaAttributes}\n nativeTextareaAttributes={nativeTextareaAttributes}\n />\n )}\n {hasActionButton && !secondaryActions && actionButton}\n </div>\n\n {/* Render reference tokens into their DOM containers via portals */}\n {isTokenMode && tokenMode.portals}\n\n {secondaryActions && (\n <div\n className={clsx(styles['action-stripe'], {\n [styles.invalid]: invalid,\n [styles.warning]: warning,\n })}\n >\n <div\n className={clsx(styles['secondary-actions'], testutilStyles['secondary-actions'], {\n [styles['with-paddings']]: !disableSecondaryActionsPaddings,\n [styles['with-paddings-and-actions']]: !disableSecondaryActionsPaddings && hasActionButton,\n [styles.invalid]: invalid,\n [styles.warning]: warning,\n })}\n >\n {secondaryActions}\n </div>\n <div className={styles.buffer} onClick={() => getActiveElement()?.focus()} />\n {hasActionButton && actionButton}\n </div>\n )}\n </div>\n );\n }\n);\n\nexport default InternalPromptInput;\n"]}
|
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
|
|
2
2
|
import './styles.scoped.css';
|
|
3
3
|
export default {
|
|
4
|
-
"root": "
|
|
5
|
-
"textarea-readonly": "awsui_textarea-
|
|
6
|
-
"disabled": "
|
|
7
|
-
"textarea-invalid": "awsui_textarea-
|
|
8
|
-
"textarea-warning": "awsui_textarea-
|
|
9
|
-
"textarea": "
|
|
10
|
-
"placeholder-visible": "awsui_placeholder-
|
|
11
|
-
"invalid": "
|
|
12
|
-
"warning": "
|
|
13
|
-
"textarea-disabled": "awsui_textarea-
|
|
14
|
-
"textarea-wrapper": "awsui_textarea-
|
|
15
|
-
"editable-wrapper": "awsui_editable-
|
|
16
|
-
"editable-element": "awsui_editable-
|
|
17
|
-
"primary-action": "awsui_primary-
|
|
18
|
-
"action-button": "awsui_action-
|
|
19
|
-
"secondary-content": "awsui_secondary-
|
|
20
|
-
"with-paddings": "awsui_with-
|
|
21
|
-
"action-stripe": "awsui_action-
|
|
22
|
-
"secondary-actions": "awsui_secondary-
|
|
23
|
-
"with-paddings-and-actions": "awsui_with-paddings-and-
|
|
24
|
-
"buffer": "
|
|
25
|
-
"token-container": "awsui_token-
|
|
26
|
-
"reference-wrapper": "awsui_reference-
|
|
27
|
-
"trigger-base": "awsui_trigger-
|
|
28
|
-
"trigger-token": "awsui_trigger-
|
|
29
|
-
"paragraph": "
|
|
4
|
+
"root": "awsui_root_55fkh_qqi5z_146",
|
|
5
|
+
"textarea-readonly": "awsui_textarea-readonly_55fkh_qqi5z_191",
|
|
6
|
+
"disabled": "awsui_disabled_55fkh_qqi5z_197",
|
|
7
|
+
"textarea-invalid": "awsui_textarea-invalid_55fkh_qqi5z_205",
|
|
8
|
+
"textarea-warning": "awsui_textarea-warning_55fkh_qqi5z_233",
|
|
9
|
+
"textarea": "awsui_textarea_55fkh_qqi5z_191",
|
|
10
|
+
"placeholder-visible": "awsui_placeholder-visible_55fkh_qqi5z_330",
|
|
11
|
+
"invalid": "awsui_invalid_55fkh_qqi5z_366",
|
|
12
|
+
"warning": "awsui_warning_55fkh_qqi5z_366",
|
|
13
|
+
"textarea-disabled": "awsui_textarea-disabled_55fkh_qqi5z_369",
|
|
14
|
+
"textarea-wrapper": "awsui_textarea-wrapper_55fkh_qqi5z_386",
|
|
15
|
+
"editable-wrapper": "awsui_editable-wrapper_55fkh_qqi5z_391",
|
|
16
|
+
"editable-element": "awsui_editable-element_55fkh_qqi5z_397",
|
|
17
|
+
"primary-action": "awsui_primary-action_55fkh_qqi5z_404",
|
|
18
|
+
"action-button": "awsui_action-button_55fkh_qqi5z_412",
|
|
19
|
+
"secondary-content": "awsui_secondary-content_55fkh_qqi5z_417",
|
|
20
|
+
"with-paddings": "awsui_with-paddings_55fkh_qqi5z_452",
|
|
21
|
+
"action-stripe": "awsui_action-stripe_55fkh_qqi5z_462",
|
|
22
|
+
"secondary-actions": "awsui_secondary-actions_55fkh_qqi5z_501",
|
|
23
|
+
"with-paddings-and-actions": "awsui_with-paddings-and-actions_55fkh_qqi5z_519",
|
|
24
|
+
"buffer": "awsui_buffer_55fkh_qqi5z_523",
|
|
25
|
+
"token-container": "awsui_token-container_55fkh_qqi5z_529",
|
|
26
|
+
"reference-wrapper": "awsui_reference-wrapper_55fkh_qqi5z_537",
|
|
27
|
+
"trigger-base": "awsui_trigger-base_55fkh_qqi5z_541",
|
|
28
|
+
"trigger-token": "awsui_trigger-token_55fkh_qqi5z_545",
|
|
29
|
+
"paragraph": "awsui_paragraph_55fkh_qqi5z_551"
|
|
30
30
|
};
|
|
31
31
|
|