| import { c as _c } from "react-compiler-runtime"; |
| import figures from 'figures'; |
| import React, { type ReactNode, useEffect, useRef, useState } from 'react'; |
| import { useDeclaredCursor } from '../../ink/hooks/use-declared-cursor.js'; |
| import { stringWidth } from '../../ink/stringWidth.js'; |
| import { Ansi, Box, Text } from '../../ink.js'; |
| import { count } from '../../utils/array.js'; |
| import type { PastedContent } from '../../utils/config.js'; |
| import type { ImageDimensions } from '../../utils/imageResizer.js'; |
| import { SelectInputOption } from './select-input-option.js'; |
| import { SelectOption } from './select-option.js'; |
| import { useSelectInput } from './use-select-input.js'; |
| import { useSelectState } from './use-select-state.js'; |
|
|
| |
| function getTextContent(node: ReactNode): string { |
| if (typeof node === 'string') return node; |
| if (typeof node === 'number') return String(node); |
| if (!node) return ''; |
| if (Array.isArray(node)) return node.map(getTextContent).join(''); |
| if (React.isValidElement<{ |
| children?: ReactNode; |
| }>(node)) { |
| return getTextContent(node.props.children); |
| } |
| return ''; |
| } |
| type BaseOption<T> = { |
| description?: string; |
| dimDescription?: boolean; |
| label: ReactNode; |
| value: T; |
| disabled?: boolean; |
| }; |
| export type OptionWithDescription<T = string> = (BaseOption<T> & { |
| type?: 'text'; |
| }) | (BaseOption<T> & { |
| type: 'input'; |
| onChange: (value: string) => void; |
| placeholder?: string; |
| initialValue?: string; |
| |
| |
| |
| |
| |
| |
| |
| |
| allowEmptySubmitToCancel?: boolean; |
| |
| |
| |
| |
| |
| showLabelWithValue?: boolean; |
| |
| |
| |
| |
| labelValueSeparator?: string; |
| |
| |
| |
| |
| |
| |
| resetCursorOnUpdate?: boolean; |
| }); |
| export type SelectProps<T> = { |
| |
| |
| |
| |
| |
| readonly isDisabled?: boolean; |
|
|
| |
| |
| |
| |
| |
| readonly disableSelection?: boolean; |
|
|
| |
| |
| |
| |
| |
| readonly hideIndexes?: boolean; |
|
|
| |
| |
| |
| |
| |
| readonly visibleOptionCount?: number; |
|
|
| |
| |
| |
| readonly highlightText?: string; |
|
|
| |
| |
| |
| readonly options: OptionWithDescription<T>[]; |
|
|
| |
| |
| |
| readonly defaultValue?: T; |
|
|
| |
| |
| |
| readonly onCancel?: () => void; |
|
|
| |
| |
| |
| readonly onChange?: (value: T) => void; |
|
|
| |
| |
| |
| |
| |
| readonly onFocus?: (value: T) => void; |
|
|
| |
| |
| |
| readonly defaultFocusValue?: T; |
|
|
| |
| |
| |
| |
| |
| |
| readonly layout?: 'compact' | 'expanded' | 'compact-vertical'; |
|
|
| |
| |
| |
| |
| |
| |
| readonly inlineDescriptions?: boolean; |
|
|
| |
| |
| |
| |
| readonly onUpFromFirstItem?: () => void; |
|
|
| |
| |
| |
| |
| readonly onDownFromLastItem?: () => void; |
|
|
| |
| |
| |
| |
| readonly onInputModeToggle?: (value: T) => void; |
|
|
| |
| |
| |
| |
| |
| readonly onOpenEditor?: (currentValue: string, setValue: (value: string) => void) => void; |
|
|
| |
| |
| |
| readonly onImagePaste?: (base64Image: string, mediaType?: string, filename?: string, dimensions?: ImageDimensions, sourcePath?: string) => void; |
|
|
| |
| |
| |
| readonly pastedContents?: Record<number, PastedContent>; |
|
|
| |
| |
| |
| readonly onRemoveImage?: (id: number) => void; |
| }; |
| export function Select(t0) { |
| const $ = _c(72); |
| const { |
| isDisabled: t1, |
| hideIndexes: t2, |
| visibleOptionCount: t3, |
| highlightText, |
| options, |
| defaultValue, |
| onCancel, |
| onChange, |
| onFocus, |
| defaultFocusValue, |
| layout: t4, |
| disableSelection: t5, |
| inlineDescriptions: t6, |
| onUpFromFirstItem, |
| onDownFromLastItem, |
| onInputModeToggle, |
| onOpenEditor, |
| onImagePaste, |
| pastedContents, |
| onRemoveImage |
| } = t0; |
| const isDisabled = t1 === undefined ? false : t1; |
| const hideIndexes = t2 === undefined ? false : t2; |
| const visibleOptionCount = t3 === undefined ? 5 : t3; |
| const layout = t4 === undefined ? "compact" : t4; |
| const disableSelection = t5 === undefined ? false : t5; |
| const inlineDescriptions = t6 === undefined ? false : t6; |
| const [imagesSelected, setImagesSelected] = useState(false); |
| const [selectedImageIndex, setSelectedImageIndex] = useState(0); |
| let t7; |
| if ($[0] !== options) { |
| t7 = () => { |
| const initialMap = new Map(); |
| options.forEach(option => { |
| if (option.type === "input" && option.initialValue) { |
| initialMap.set(option.value, option.initialValue); |
| } |
| }); |
| return initialMap; |
| }; |
| $[0] = options; |
| $[1] = t7; |
| } else { |
| t7 = $[1]; |
| } |
| const [inputValues, setInputValues] = useState(t7); |
| let t8; |
| if ($[2] === Symbol.for("react.memo_cache_sentinel")) { |
| t8 = new Map(); |
| $[2] = t8; |
| } else { |
| t8 = $[2]; |
| } |
| const lastInitialValues = useRef(t8); |
| let t10; |
| let t9; |
| if ($[3] !== inputValues || $[4] !== options) { |
| t9 = () => { |
| for (const option_0 of options) { |
| if (option_0.type === "input" && option_0.initialValue !== undefined) { |
| const lastInitial = lastInitialValues.current.get(option_0.value) ?? ""; |
| const currentValue = inputValues.get(option_0.value) ?? ""; |
| const newInitial = option_0.initialValue; |
| if (newInitial !== lastInitial && currentValue === lastInitial) { |
| setInputValues(prev => { |
| const next = new Map(prev); |
| next.set(option_0.value, newInitial); |
| return next; |
| }); |
| } |
| lastInitialValues.current.set(option_0.value, newInitial); |
| } |
| } |
| }; |
| t10 = [options, inputValues]; |
| $[3] = inputValues; |
| $[4] = options; |
| $[5] = t10; |
| $[6] = t9; |
| } else { |
| t10 = $[5]; |
| t9 = $[6]; |
| } |
| useEffect(t9, t10); |
| let t11; |
| if ($[7] !== defaultFocusValue || $[8] !== defaultValue || $[9] !== onCancel || $[10] !== onChange || $[11] !== onFocus || $[12] !== options || $[13] !== visibleOptionCount) { |
| t11 = { |
| visibleOptionCount, |
| options, |
| defaultValue, |
| onChange, |
| onCancel, |
| onFocus, |
| defaultFocusValue, |
| }; |
| $[7] = defaultFocusValue; |
| $[8] = defaultValue; |
| $[9] = onCancel; |
| $[10] = onChange; |
| $[11] = onFocus; |
| $[12] = options; |
| $[13] = visibleOptionCount; |
| $[14] = t11; |
| } else { |
| t11 = $[14]; |
| } |
| const state = useSelectState(t11); |
| const t12 = disableSelection || (hideIndexes ? "numeric" : false); |
| let t13; |
| if ($[15] !== pastedContents) { |
| t13 = () => { |
| if (pastedContents && Object.values(pastedContents).some(_temp)) { |
| const imageCount = count(Object.values(pastedContents), _temp2); |
| setImagesSelected(true); |
| setSelectedImageIndex(imageCount - 1); |
| return true; |
| } |
| return false; |
| }; |
| $[15] = pastedContents; |
| $[16] = t13; |
| } else { |
| t13 = $[16]; |
| } |
| let t14; |
| if ($[17] !== imagesSelected || $[18] !== inputValues || $[19] !== isDisabled || $[20] !== onDownFromLastItem || $[21] !== onInputModeToggle || $[22] !== onUpFromFirstItem || $[23] !== options || $[24] !== state || $[25] !== t12 || $[26] !== t13) { |
| t14 = { |
| isDisabled, |
| disableSelection: t12, |
| state, |
| options, |
| isMultiSelect: false, |
| onUpFromFirstItem, |
| onDownFromLastItem, |
| onInputModeToggle, |
| inputValues, |
| imagesSelected, |
| onEnterImageSelection: t13 |
| }; |
| $[17] = imagesSelected; |
| $[18] = inputValues; |
| $[19] = isDisabled; |
| $[20] = onDownFromLastItem; |
| $[21] = onInputModeToggle; |
| $[22] = onUpFromFirstItem; |
| $[23] = options; |
| $[24] = state; |
| $[25] = t12; |
| $[26] = t13; |
| $[27] = t14; |
| } else { |
| t14 = $[27]; |
| } |
| useSelectInput(t14); |
| let T0; |
| let t15; |
| let t16; |
| let t17; |
| if ($[28] !== hideIndexes || $[29] !== highlightText || $[30] !== imagesSelected || $[31] !== inlineDescriptions || $[32] !== inputValues || $[33] !== isDisabled || $[34] !== layout || $[35] !== onCancel || $[36] !== onChange || $[37] !== onImagePaste || $[38] !== onOpenEditor || $[39] !== onRemoveImage || $[40] !== options.length || $[41] !== pastedContents || $[42] !== selectedImageIndex || $[43] !== state.focusedValue || $[44] !== state.options || $[45] !== state.value || $[46] !== state.visibleFromIndex || $[47] !== state.visibleOptions || $[48] !== state.visibleToIndex) { |
| t17 = Symbol.for("react.early_return_sentinel"); |
| bb0: { |
| const styles = { |
| container: _temp3, |
| highlightedText: _temp4 |
| }; |
| if (layout === "expanded") { |
| let t18; |
| if ($[53] !== state.options.length) { |
| t18 = state.options.length.toString(); |
| $[53] = state.options.length; |
| $[54] = t18; |
| } else { |
| t18 = $[54]; |
| } |
| const maxIndexWidth = t18.length; |
| t17 = <Box {...styles.container()}>{state.visibleOptions.map((option_1, index) => { |
| const isFirstVisibleOption = option_1.index === state.visibleFromIndex; |
| const isLastVisibleOption = option_1.index === state.visibleToIndex - 1; |
| const areMoreOptionsBelow = state.visibleToIndex < options.length; |
| const areMoreOptionsAbove = state.visibleFromIndex > 0; |
| const i = state.visibleFromIndex + index + 1; |
| const isFocused = !isDisabled && state.focusedValue === option_1.value; |
| const isSelected = state.value === option_1.value; |
| if (option_1.type === "input") { |
| const inputValue = inputValues.has(option_1.value) ? inputValues.get(option_1.value) : option_1.initialValue || ""; |
| return <SelectInputOption key={String(option_1.value)} option={option_1} isFocused={isFocused} isSelected={isSelected} shouldShowDownArrow={areMoreOptionsBelow && isLastVisibleOption} shouldShowUpArrow={areMoreOptionsAbove && isFirstVisibleOption} maxIndexWidth={maxIndexWidth} index={i} inputValue={inputValue} onInputChange={value => { |
| setInputValues(prev_0 => { |
| const next_0 = new Map(prev_0); |
| next_0.set(option_1.value, value); |
| return next_0; |
| }); |
| }} onSubmit={value_0 => { |
| const hasImageAttachments = pastedContents && Object.values(pastedContents).some(_temp5); |
| if (value_0.trim() || hasImageAttachments || option_1.allowEmptySubmitToCancel) { |
| onChange?.(option_1.value); |
| } else { |
| onCancel?.(); |
| } |
| }} onExit={onCancel} layout="expanded" showLabel={inlineDescriptions} onOpenEditor={onOpenEditor} resetCursorOnUpdate={option_1.resetCursorOnUpdate} onImagePaste={onImagePaste} pastedContents={pastedContents} onRemoveImage={onRemoveImage} imagesSelected={imagesSelected} selectedImageIndex={selectedImageIndex} onImagesSelectedChange={setImagesSelected} onSelectedImageIndexChange={setSelectedImageIndex} />; |
| } |
| let label = option_1.label; |
| if (typeof option_1.label === "string" && highlightText && option_1.label.includes(highlightText)) { |
| const labelText = option_1.label; |
| const index_0 = labelText.indexOf(highlightText); |
| label = <>{labelText.slice(0, index_0)}<Text {...styles.highlightedText()}>{highlightText}</Text>{labelText.slice(index_0 + highlightText.length)}</>; |
| } |
| const isOptionDisabled = option_1.disabled === true; |
| const optionColor = isOptionDisabled ? undefined : isSelected ? "success" : isFocused ? "suggestion" : undefined; |
| return <Box key={String(option_1.value)} flexDirection="column" flexShrink={0}><SelectOption isFocused={isFocused} isSelected={isSelected} shouldShowDownArrow={areMoreOptionsBelow && isLastVisibleOption} shouldShowUpArrow={areMoreOptionsAbove && isFirstVisibleOption}><Text dimColor={isOptionDisabled} color={optionColor}>{label}</Text></SelectOption>{option_1.description && <Box paddingLeft={2}><Text dimColor={isOptionDisabled || option_1.dimDescription !== false} color={optionColor}><Ansi>{option_1.description}</Ansi></Text></Box>}<Text> </Text></Box>; |
| })}</Box>; |
| break bb0; |
| } |
| if (layout === "compact-vertical") { |
| let t18; |
| if ($[55] !== hideIndexes || $[56] !== state.options) { |
| t18 = hideIndexes ? 0 : state.options.length.toString().length; |
| $[55] = hideIndexes; |
| $[56] = state.options; |
| $[57] = t18; |
| } else { |
| t18 = $[57]; |
| } |
| const maxIndexWidth_0 = t18; |
| t17 = <Box {...styles.container()}>{state.visibleOptions.map((option_2, index_1) => { |
| const isFirstVisibleOption_0 = option_2.index === state.visibleFromIndex; |
| const isLastVisibleOption_0 = option_2.index === state.visibleToIndex - 1; |
| const areMoreOptionsBelow_0 = state.visibleToIndex < options.length; |
| const areMoreOptionsAbove_0 = state.visibleFromIndex > 0; |
| const i_0 = state.visibleFromIndex + index_1 + 1; |
| const isFocused_0 = !isDisabled && state.focusedValue === option_2.value; |
| const isSelected_0 = state.value === option_2.value; |
| if (option_2.type === "input") { |
| const inputValue_0 = inputValues.has(option_2.value) ? inputValues.get(option_2.value) : option_2.initialValue || ""; |
| return <SelectInputOption key={String(option_2.value)} option={option_2} isFocused={isFocused_0} isSelected={isSelected_0} shouldShowDownArrow={areMoreOptionsBelow_0 && isLastVisibleOption_0} shouldShowUpArrow={areMoreOptionsAbove_0 && isFirstVisibleOption_0} maxIndexWidth={maxIndexWidth_0} index={i_0} inputValue={inputValue_0} onInputChange={value_1 => { |
| setInputValues(prev_1 => { |
| const next_1 = new Map(prev_1); |
| next_1.set(option_2.value, value_1); |
| return next_1; |
| }); |
| }} onSubmit={value_2 => { |
| const hasImageAttachments_0 = pastedContents && Object.values(pastedContents).some(_temp6); |
| if (value_2.trim() || hasImageAttachments_0 || option_2.allowEmptySubmitToCancel) { |
| onChange?.(option_2.value); |
| } else { |
| onCancel?.(); |
| } |
| }} onExit={onCancel} layout="compact" showLabel={inlineDescriptions} onOpenEditor={onOpenEditor} resetCursorOnUpdate={option_2.resetCursorOnUpdate} onImagePaste={onImagePaste} pastedContents={pastedContents} onRemoveImage={onRemoveImage} imagesSelected={imagesSelected} selectedImageIndex={selectedImageIndex} onImagesSelectedChange={setImagesSelected} onSelectedImageIndexChange={setSelectedImageIndex} />; |
| } |
| let label_0 = option_2.label; |
| if (typeof option_2.label === "string" && highlightText && option_2.label.includes(highlightText)) { |
| const labelText_0 = option_2.label; |
| const index_2 = labelText_0.indexOf(highlightText); |
| label_0 = <>{labelText_0.slice(0, index_2)}<Text {...styles.highlightedText()}>{highlightText}</Text>{labelText_0.slice(index_2 + highlightText.length)}</>; |
| } |
| const isOptionDisabled_0 = option_2.disabled === true; |
| return <Box key={String(option_2.value)} flexDirection="column" flexShrink={0}><SelectOption isFocused={isFocused_0} isSelected={isSelected_0} shouldShowDownArrow={areMoreOptionsBelow_0 && isLastVisibleOption_0} shouldShowUpArrow={areMoreOptionsAbove_0 && isFirstVisibleOption_0}><>{!hideIndexes && <Text dimColor={true}>{`${i_0}.`.padEnd(maxIndexWidth_0 + 1)}</Text>}<Text dimColor={isOptionDisabled_0} color={isOptionDisabled_0 ? undefined : isSelected_0 ? "success" : isFocused_0 ? "suggestion" : undefined}>{label_0}</Text></></SelectOption>{option_2.description && <Box paddingLeft={hideIndexes ? 4 : maxIndexWidth_0 + 4}><Text dimColor={isOptionDisabled_0 || option_2.dimDescription !== false} color={isOptionDisabled_0 ? undefined : isSelected_0 ? "success" : isFocused_0 ? "suggestion" : undefined}><Ansi>{option_2.description}</Ansi></Text></Box>}</Box>; |
| })}</Box>; |
| break bb0; |
| } |
| let t18; |
| if ($[58] !== hideIndexes || $[59] !== state.options) { |
| t18 = hideIndexes ? 0 : state.options.length.toString().length; |
| $[58] = hideIndexes; |
| $[59] = state.options; |
| $[60] = t18; |
| } else { |
| t18 = $[60]; |
| } |
| const maxIndexWidth_1 = t18; |
| const hasInputOptions = state.visibleOptions.some(_temp7); |
| const hasDescriptions = !inlineDescriptions && !hasInputOptions && state.visibleOptions.some(_temp8); |
| const optionData = state.visibleOptions.map((option_3, index_3) => { |
| const isFirstVisibleOption_1 = option_3.index === state.visibleFromIndex; |
| const isLastVisibleOption_1 = option_3.index === state.visibleToIndex - 1; |
| const areMoreOptionsBelow_1 = state.visibleToIndex < options.length; |
| const areMoreOptionsAbove_1 = state.visibleFromIndex > 0; |
| const i_1 = state.visibleFromIndex + index_3 + 1; |
| const isFocused_1 = !isDisabled && state.focusedValue === option_3.value; |
| const isSelected_1 = state.value === option_3.value; |
| const isOptionDisabled_1 = option_3.disabled === true; |
| let label_1 = option_3.label; |
| if (typeof option_3.label === "string" && highlightText && option_3.label.includes(highlightText)) { |
| const labelText_1 = option_3.label; |
| const idx = labelText_1.indexOf(highlightText); |
| label_1 = <>{labelText_1.slice(0, idx)}<Text {...styles.highlightedText()}>{highlightText}</Text>{labelText_1.slice(idx + highlightText.length)}</>; |
| } |
| return { |
| option: option_3, |
| index: i_1, |
| label: label_1, |
| isFocused: isFocused_1, |
| isSelected: isSelected_1, |
| isOptionDisabled: isOptionDisabled_1, |
| shouldShowDownArrow: areMoreOptionsBelow_1 && isLastVisibleOption_1, |
| shouldShowUpArrow: areMoreOptionsAbove_1 && isFirstVisibleOption_1 |
| }; |
| }); |
| if (hasDescriptions) { |
| let t19; |
| if ($[61] !== hideIndexes || $[62] !== maxIndexWidth_1) { |
| t19 = data => { |
| if (data.option.type === "input") { |
| return 0; |
| } |
| const labelText_2 = getTextContent(data.option.label); |
| const indexWidth = hideIndexes ? 0 : maxIndexWidth_1 + 2; |
| const checkmarkWidth = data.isSelected ? 2 : 0; |
| return 2 + indexWidth + stringWidth(labelText_2) + checkmarkWidth; |
| }; |
| $[61] = hideIndexes; |
| $[62] = maxIndexWidth_1; |
| $[63] = t19; |
| } else { |
| t19 = $[63]; |
| } |
| const maxLabelWidth = Math.max(...optionData.map(t19)); |
| let t20; |
| if ($[64] !== hideIndexes || $[65] !== maxIndexWidth_1 || $[66] !== maxLabelWidth) { |
| t20 = data_0 => { |
| if (data_0.option.type === "input") { |
| return null; |
| } |
| const labelText_3 = getTextContent(data_0.option.label); |
| const indexWidth_0 = hideIndexes ? 0 : maxIndexWidth_1 + 2; |
| const checkmarkWidth_0 = data_0.isSelected ? 2 : 0; |
| const currentLabelWidth = 2 + indexWidth_0 + stringWidth(labelText_3) + checkmarkWidth_0; |
| const padding = maxLabelWidth - currentLabelWidth; |
| return <TwoColumnRow key={String(data_0.option.value)} isFocused={data_0.isFocused}><Box flexDirection="row" flexShrink={0}>{data_0.isFocused ? <Text color="suggestion">{figures.pointer}</Text> : data_0.shouldShowDownArrow ? <Text dimColor={true}>{figures.arrowDown}</Text> : data_0.shouldShowUpArrow ? <Text dimColor={true}>{figures.arrowUp}</Text> : <Text> </Text>}<Text> </Text><Text dimColor={data_0.isOptionDisabled} color={data_0.isOptionDisabled ? undefined : data_0.isSelected ? "success" : data_0.isFocused ? "suggestion" : undefined}>{!hideIndexes && <Text dimColor={true}>{`${data_0.index}.`.padEnd(maxIndexWidth_1 + 2)}</Text>}{data_0.label}</Text>{data_0.isSelected && <Text color="success"> {figures.tick}</Text>}{padding > 0 && <Text>{" ".repeat(padding)}</Text>}</Box><Box flexGrow={1} marginLeft={2}><Text wrap="wrap" dimColor={data_0.isOptionDisabled || data_0.option.dimDescription !== false} color={data_0.isOptionDisabled ? undefined : data_0.isSelected ? "success" : data_0.isFocused ? "suggestion" : undefined}><Ansi>{data_0.option.description || " "}</Ansi></Text></Box></TwoColumnRow>; |
| }; |
| $[64] = hideIndexes; |
| $[65] = maxIndexWidth_1; |
| $[66] = maxLabelWidth; |
| $[67] = t20; |
| } else { |
| t20 = $[67]; |
| } |
| t17 = <Box {...styles.container()}>{optionData.map(t20)}</Box>; |
| break bb0; |
| } |
| T0 = Box; |
| t15 = styles.container(); |
| t16 = state.visibleOptions.map((option_4, index_4) => { |
| if (option_4.type === "input") { |
| const inputValue_1 = inputValues.has(option_4.value) ? inputValues.get(option_4.value) : option_4.initialValue || ""; |
| const isFirstVisibleOption_2 = option_4.index === state.visibleFromIndex; |
| const isLastVisibleOption_2 = option_4.index === state.visibleToIndex - 1; |
| const areMoreOptionsBelow_2 = state.visibleToIndex < options.length; |
| const areMoreOptionsAbove_2 = state.visibleFromIndex > 0; |
| const i_2 = state.visibleFromIndex + index_4 + 1; |
| const isFocused_2 = !isDisabled && state.focusedValue === option_4.value; |
| const isSelected_2 = state.value === option_4.value; |
| return <SelectInputOption key={String(option_4.value)} option={option_4} isFocused={isFocused_2} isSelected={isSelected_2} shouldShowDownArrow={areMoreOptionsBelow_2 && isLastVisibleOption_2} shouldShowUpArrow={areMoreOptionsAbove_2 && isFirstVisibleOption_2} maxIndexWidth={maxIndexWidth_1} index={i_2} inputValue={inputValue_1} onInputChange={value_3 => { |
| setInputValues(prev_2 => { |
| const next_2 = new Map(prev_2); |
| next_2.set(option_4.value, value_3); |
| return next_2; |
| }); |
| }} onSubmit={value_4 => { |
| const hasImageAttachments_1 = pastedContents && Object.values(pastedContents).some(_temp9); |
| if (value_4.trim() || hasImageAttachments_1 || option_4.allowEmptySubmitToCancel) { |
| onChange?.(option_4.value); |
| } else { |
| onCancel?.(); |
| } |
| }} onExit={onCancel} layout="compact" showLabel={inlineDescriptions} onOpenEditor={onOpenEditor} resetCursorOnUpdate={option_4.resetCursorOnUpdate} onImagePaste={onImagePaste} pastedContents={pastedContents} onRemoveImage={onRemoveImage} imagesSelected={imagesSelected} selectedImageIndex={selectedImageIndex} onImagesSelectedChange={setImagesSelected} onSelectedImageIndexChange={setSelectedImageIndex} />; |
| } |
| let label_2 = option_4.label; |
| if (typeof option_4.label === "string" && highlightText && option_4.label.includes(highlightText)) { |
| const labelText_4 = option_4.label; |
| const index_5 = labelText_4.indexOf(highlightText); |
| label_2 = <>{labelText_4.slice(0, index_5)}<Text {...styles.highlightedText()}>{highlightText}</Text>{labelText_4.slice(index_5 + highlightText.length)}</>; |
| } |
| const isFirstVisibleOption_3 = option_4.index === state.visibleFromIndex; |
| const isLastVisibleOption_3 = option_4.index === state.visibleToIndex - 1; |
| const areMoreOptionsBelow_3 = state.visibleToIndex < options.length; |
| const areMoreOptionsAbove_3 = state.visibleFromIndex > 0; |
| const i_3 = state.visibleFromIndex + index_4 + 1; |
| const isFocused_3 = !isDisabled && state.focusedValue === option_4.value; |
| const isSelected_3 = state.value === option_4.value; |
| const isOptionDisabled_2 = option_4.disabled === true; |
| return <SelectOption key={String(option_4.value)} isFocused={isFocused_3} isSelected={isSelected_3} shouldShowDownArrow={areMoreOptionsBelow_3 && isLastVisibleOption_3} shouldShowUpArrow={areMoreOptionsAbove_3 && isFirstVisibleOption_3}><Box flexDirection="row" flexShrink={0}>{!hideIndexes && <Text dimColor={true}>{`${i_3}.`.padEnd(maxIndexWidth_1 + 2)}</Text>}<Text dimColor={isOptionDisabled_2} color={isOptionDisabled_2 ? undefined : isSelected_3 ? "success" : isFocused_3 ? "suggestion" : undefined}>{label_2}{inlineDescriptions && option_4.description && <Text dimColor={isOptionDisabled_2 || option_4.dimDescription !== false}>{" "}{option_4.description}</Text>}</Text></Box>{!inlineDescriptions && option_4.description && <Box flexShrink={99} marginLeft={2}><Text wrap="wrap-trim" dimColor={isOptionDisabled_2 || option_4.dimDescription !== false} color={isOptionDisabled_2 ? undefined : isSelected_3 ? "success" : isFocused_3 ? "suggestion" : undefined}><Ansi>{option_4.description}</Ansi></Text></Box>}</SelectOption>; |
| }); |
| } |
| $[28] = hideIndexes; |
| $[29] = highlightText; |
| $[30] = imagesSelected; |
| $[31] = inlineDescriptions; |
| $[32] = inputValues; |
| $[33] = isDisabled; |
| $[34] = layout; |
| $[35] = onCancel; |
| $[36] = onChange; |
| $[37] = onImagePaste; |
| $[38] = onOpenEditor; |
| $[39] = onRemoveImage; |
| $[40] = options.length; |
| $[41] = pastedContents; |
| $[42] = selectedImageIndex; |
| $[43] = state.focusedValue; |
| $[44] = state.options; |
| $[45] = state.value; |
| $[46] = state.visibleFromIndex; |
| $[47] = state.visibleOptions; |
| $[48] = state.visibleToIndex; |
| $[49] = T0; |
| $[50] = t15; |
| $[51] = t16; |
| $[52] = t17; |
| } else { |
| T0 = $[49]; |
| t15 = $[50]; |
| t16 = $[51]; |
| t17 = $[52]; |
| } |
| if (t17 !== Symbol.for("react.early_return_sentinel")) { |
| return t17; |
| } |
| let t18; |
| if ($[68] !== T0 || $[69] !== t15 || $[70] !== t16) { |
| t18 = <T0 {...t15}>{t16}</T0>; |
| $[68] = T0; |
| $[69] = t15; |
| $[70] = t16; |
| $[71] = t18; |
| } else { |
| t18 = $[71]; |
| } |
| return t18; |
| } |
|
|
| |
| |
| |
| |
| function _temp9(c_3) { |
| return c_3.type === "image"; |
| } |
| function _temp8(opt_0) { |
| return opt_0.description; |
| } |
| function _temp7(opt) { |
| return opt.type === "input"; |
| } |
| function _temp6(c_2) { |
| return c_2.type === "image"; |
| } |
| function _temp5(c_1) { |
| return c_1.type === "image"; |
| } |
| function _temp4() { |
| return { |
| bold: true |
| }; |
| } |
| function _temp3() { |
| return { |
| flexDirection: "column" as const |
| }; |
| } |
| function _temp2(c) { |
| return c.type === "image"; |
| } |
| function _temp(c_0) { |
| return c_0.type === "image"; |
| } |
| function TwoColumnRow(t0) { |
| const $ = _c(5); |
| const { |
| isFocused, |
| children |
| } = t0; |
| let t1; |
| if ($[0] !== isFocused) { |
| t1 = { |
| line: 0, |
| column: 0, |
| active: isFocused |
| }; |
| $[0] = isFocused; |
| $[1] = t1; |
| } else { |
| t1 = $[1]; |
| } |
| const cursorRef = useDeclaredCursor(t1); |
| let t2; |
| if ($[2] !== children || $[3] !== cursorRef) { |
| t2 = <Box ref={cursorRef} flexDirection="row">{children}</Box>; |
| $[2] = children; |
| $[3] = cursorRef; |
| $[4] = t2; |
| } else { |
| t2 = $[4]; |
| } |
| return t2; |
| } |
|
|