gt 2.14.64 → 2.14.65
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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# gtx-cli
|
|
2
2
|
|
|
3
|
+
## 2.14.65
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#1962](https://github.com/generaltranslation/gt/pull/1962) [`99f63e6`](https://github.com/generaltranslation/gt/commit/99f63e6826244cb07c18382031cce3fd8ca4ffc2) Thanks [@ErnestM1234](https://github.com/ErnestM1234)! - Clear the locale search query after selecting a locale during setup.
|
|
8
|
+
|
|
3
9
|
## 2.14.64
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inkPrompts.js","names":[],"sources":["../../src/console/inkPrompts.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { Box, Text, useInput } from 'ink';\nimport { getSupportedLocale } from '@generaltranslation/supported-locales';\nimport {\n OptionRow,\n LocaleOptionsList,\n RemainingMatches,\n SelectedTags,\n} from './inkFields.js';\nimport { getFilteredLocaleOptions, getLocaleOptions } from './inkLocaleData.js';\nimport { InputBox, PromptFrame } from './inkLayout.js';\nimport { runPrompt } from './inkSession.js';\nimport { useTerminalSize } from './inkTerminal.js';\nimport { parseTypedLocale } from './promptParsing.js';\nimport type {\n ConfirmPromptProps,\n EditableTextPromptProps,\n GlobPromptProps,\n LocaleMultiPromptProps,\n LocalePromptProps,\n MultiSelectPromptProps,\n SelectPromptProps,\n TextPromptProps,\n} from './inkTypes.js';\nimport {\n CANCELLED,\n SELECTED_TAG_ROW_INDEX,\n complete,\n getInputWidth,\n getOptionWidth,\n getSafeIndex,\n getScrollWindow,\n getVisibleCount,\n nextIndex,\n previousIndex,\n} from './inkUtils.js';\n\nfunction resolveLocaleChoice({\n query,\n highlightedLocale,\n preferHighlightedLocale,\n}: {\n query: string;\n highlightedLocale?: string;\n preferHighlightedLocale: boolean;\n}) {\n if (preferHighlightedLocale) return highlightedLocale;\n return parseTypedLocale(query) ?? highlightedLocale;\n}\n\nfunction TextPrompt({\n message,\n defaultValue,\n validate,\n onComplete,\n footer = 'type to edit enter select esc cancel',\n placeholder,\n}: EditableTextPromptProps) {\n const { columns } = useTerminalSize();\n const [value, setValue] = useState(defaultValue ?? '');\n const [error, setError] = useState<string | undefined>();\n const inputWidth = getInputWidth(columns);\n\n useInput((input, key) => {\n if (key.escape || (key.ctrl && input === 'c')) {\n complete(CANCELLED, onComplete);\n return;\n }\n if (key.return) {\n const validation = validate?.(value);\n if (validation && validation !== true) {\n setError(validation.toString());\n return;\n }\n complete({ value, cancelled: false }, onComplete);\n return;\n }\n if (key.backspace || key.delete) {\n setValue((current) => current.slice(0, -1));\n setError(undefined);\n return;\n }\n if (input && !key.ctrl && !key.meta && !key.return) {\n setValue((current) => current + input);\n setError(undefined);\n }\n });\n\n return (\n <PromptFrame message={message} footer={footer}>\n <InputBox value={value} width={inputWidth} placeholder={placeholder} />\n {error ? <Text color='red'>{error}</Text> : null}\n </PromptFrame>\n );\n}\n\nfunction LocalePrompt({\n message,\n defaultValue,\n onComplete,\n}: LocalePromptProps) {\n const { columns, rows } = useTerminalSize();\n const localeOptions = getLocaleOptions();\n const defaultLocale = defaultValue ? getSupportedLocale(defaultValue) : null;\n const defaultIndex = defaultLocale\n ? Math.max(\n 0,\n localeOptions.findIndex((option) => option.code === defaultLocale)\n )\n : 0;\n const [query, setQuery] = useState('');\n const [index, setIndex] = useState(defaultIndex);\n const [preferHighlightedLocale, setPreferHighlightedLocale] = useState(false);\n const [error, setError] = useState<string | undefined>();\n const filteredOptions = getFilteredLocaleOptions(query);\n const activeIndex = getSafeIndex(index, filteredOptions.length);\n const visibleCount = getVisibleCount(rows, 14);\n const { start, visibleItems: visibleOptions } = getScrollWindow({\n items: filteredOptions,\n index: activeIndex,\n visibleCount,\n });\n const inputWidth = getInputWidth(columns);\n const optionWidth = getOptionWidth(columns);\n\n useInput((input, key) => {\n if (key.escape || (key.ctrl && input === 'c')) {\n complete(CANCELLED, onComplete);\n return;\n }\n if (key.upArrow) {\n setPreferHighlightedLocale(true);\n setIndex((current) => previousIndex(current, filteredOptions.length));\n return;\n }\n if (key.downArrow) {\n setPreferHighlightedLocale(true);\n setIndex((current) => nextIndex(current, filteredOptions.length));\n return;\n }\n if (key.backspace || key.delete) {\n setQuery((current) => current.slice(0, -1));\n setIndex(0);\n setPreferHighlightedLocale(false);\n setError(undefined);\n return;\n }\n if (key.return) {\n const finalLocale = resolveLocaleChoice({\n query,\n highlightedLocale: filteredOptions[activeIndex]?.code,\n preferHighlightedLocale,\n });\n if (!finalLocale) {\n setError('Enter a valid locale (e.g., en)');\n return;\n }\n complete({ value: finalLocale, cancelled: false }, onComplete);\n return;\n }\n if (input && !key.ctrl && !key.meta) {\n setQuery((current) => current + input);\n setIndex(0);\n setPreferHighlightedLocale(false);\n setError(undefined);\n }\n });\n\n return (\n <PromptFrame\n message={message}\n footer='↑↓ navigate enter select esc cancel'\n >\n <InputBox\n value={query}\n width={inputWidth}\n placeholder='Search locales...'\n />\n <LocaleOptionsList\n options={visibleOptions}\n activeIndex={activeIndex - start}\n width={optionWidth}\n />\n <RemainingMatches total={filteredOptions.length} visible={visibleCount} />\n {error ? <Text color='red'>{error}</Text> : null}\n </PromptFrame>\n );\n}\n\nfunction LocaleMultiPrompt({\n message,\n defaultValue = [],\n required,\n onComplete,\n}: LocaleMultiPromptProps) {\n const { columns, rows } = useTerminalSize();\n const [query, setQuery] = useState('');\n const [index, setIndex] = useState(0);\n const [preferHighlightedLocale, setPreferHighlightedLocale] = useState(false);\n const [selected, setSelected] = useState<Set<string>>(new Set(defaultValue));\n const [error, setError] = useState<string | undefined>();\n const selectedLocales = [...selected];\n const filteredOptions = getFilteredLocaleOptions(query).filter(\n (option) => !selected.has(option.code)\n );\n const activeOptionIndex = getSafeIndex(index, filteredOptions.length);\n const visibleCount = getVisibleCount(rows, 16);\n const { start, visibleItems: visibleOptions } = getScrollWindow({\n items: filteredOptions,\n index: activeOptionIndex,\n visibleCount,\n });\n const inputWidth = getInputWidth(columns);\n const optionWidth = getOptionWidth(columns);\n const [selectedTagIndex, setSelectedTagIndex] = useState(0);\n const moveSelectedTag = (direction: -1 | 1) =>\n setSelectedTagIndex((current) =>\n Math.max(0, Math.min(selectedLocales.length - 1, current + direction))\n );\n const removeSelectedTag = () => {\n const localeToRemove = selectedLocales[selectedTagIndex];\n if (!localeToRemove) return;\n setSelected((current) => {\n const next = new Set(current);\n next.delete(localeToRemove);\n return next;\n });\n setSelectedTagIndex((current) =>\n Math.max(0, Math.min(current, selectedLocales.length - 2))\n );\n if (selectedLocales.length === 1) setIndex(0);\n setError(undefined);\n };\n const toggleVisibleLocale = () => {\n const selectedLocale = resolveLocaleChoice({\n query,\n highlightedLocale: filteredOptions[activeOptionIndex]?.code,\n preferHighlightedLocale,\n });\n if (!selectedLocale) {\n setError('Enter a valid locale (e.g., es fr de)');\n return;\n }\n setSelected((current) => {\n const next = new Set(current);\n if (next.has(selectedLocale)) {\n next.delete(selectedLocale);\n } else {\n next.add(selectedLocale);\n }\n return next;\n });\n setError(undefined);\n };\n\n useInput((input, key) => {\n if (key.escape || (key.ctrl && input === 'c')) {\n complete(CANCELLED, onComplete);\n return;\n }\n if (key.upArrow) {\n setPreferHighlightedLocale(true);\n setIndex((current) => {\n if (current === SELECTED_TAG_ROW_INDEX) {\n if (selectedTagIndex > 0) {\n moveSelectedTag(-1);\n return SELECTED_TAG_ROW_INDEX;\n }\n return Math.max(filteredOptions.length - 1, 0);\n }\n if (current === 0 && selectedLocales.length > 0) {\n setSelectedTagIndex(selectedLocales.length - 1);\n return SELECTED_TAG_ROW_INDEX;\n }\n if (current === 0) {\n return Math.max(filteredOptions.length - 1, 0);\n }\n return current - 1;\n });\n return;\n }\n if (key.downArrow) {\n setPreferHighlightedLocale(true);\n setIndex((current) => {\n if (filteredOptions.length === 0) return 0;\n if (current === SELECTED_TAG_ROW_INDEX) {\n if (selectedTagIndex < selectedLocales.length - 1) {\n moveSelectedTag(1);\n return SELECTED_TAG_ROW_INDEX;\n }\n return 0;\n }\n return nextIndex(current, filteredOptions.length);\n });\n return;\n }\n if (index === SELECTED_TAG_ROW_INDEX && key.leftArrow) {\n setSelectedTagIndex((current) => Math.max(0, current - 1));\n return;\n }\n if (index === SELECTED_TAG_ROW_INDEX && key.rightArrow) {\n setSelectedTagIndex((current) =>\n Math.min(selectedLocales.length - 1, current + 1)\n );\n return;\n }\n if (key.backspace || key.delete) {\n setQuery((current) => current.slice(0, -1));\n setIndex(0);\n setPreferHighlightedLocale(false);\n setError(undefined);\n return;\n }\n if (input === ' ' && index === SELECTED_TAG_ROW_INDEX) {\n removeSelectedTag();\n return;\n }\n if (input === ' ') {\n toggleVisibleLocale();\n return;\n }\n if (key.return) {\n if (required && selected.size === 0) {\n setError('Select at least one locale');\n return;\n }\n complete({ value: [...selected], cancelled: false }, onComplete);\n return;\n }\n if (input && !key.ctrl && !key.meta) {\n setQuery((current) => current + input);\n setIndex(0);\n setPreferHighlightedLocale(false);\n setError(undefined);\n }\n });\n\n return (\n <PromptFrame\n message={message}\n footer='↑↓ navigate space toggle enter confirm esc cancel'\n >\n <InputBox\n value={query}\n width={inputWidth}\n placeholder='Search locales...'\n />\n <Box marginTop={1}>\n <SelectedTags\n selectedLocales={selectedLocales}\n active={index === SELECTED_TAG_ROW_INDEX}\n activeIndex={selectedTagIndex}\n width={optionWidth}\n />\n </Box>\n <LocaleOptionsList\n options={visibleOptions}\n activeIndex={\n index === SELECTED_TAG_ROW_INDEX\n ? SELECTED_TAG_ROW_INDEX\n : activeOptionIndex - start\n }\n width={optionWidth}\n />\n <RemainingMatches total={filteredOptions.length} visible={visibleCount} />\n {error ? <Text color='red'>{error}</Text> : null}\n </PromptFrame>\n );\n}\n\nfunction GlobPrompt({\n label,\n message,\n defaultValue,\n onComplete,\n}: GlobPromptProps) {\n return (\n <TextPrompt\n message={\n message ??\n `${label}: Enter space-separated glob patterns for files to translate. Include [locale].`\n }\n defaultValue={defaultValue}\n footer='enter save esc cancel'\n onComplete={onComplete}\n />\n );\n}\n\nfunction SelectPrompt<T>({\n message,\n options,\n defaultValue,\n onComplete,\n}: SelectPromptProps<T>) {\n const defaultIndex = Math.max(\n 0,\n options.findIndex((option) => option.value === defaultValue)\n );\n const [index, setIndex] = useState(defaultIndex);\n\n useInput((input, key) => {\n if (key.escape || (key.ctrl && input === 'c')) {\n complete(CANCELLED, onComplete);\n return;\n }\n if (key.upArrow) {\n setIndex((current) => (current === 0 ? options.length - 1 : current - 1));\n return;\n }\n if (key.downArrow) {\n setIndex((current) => (current + 1) % options.length);\n return;\n }\n if (key.return) {\n complete({ value: options[index]?.value, cancelled: false }, onComplete);\n }\n });\n\n return (\n <PromptFrame\n message={message}\n footer='↑↓ navigate enter select esc cancel'\n >\n {options.map((option, optionIndex) => (\n <OptionRow\n key={optionIndex}\n active={optionIndex === index}\n label={option.label}\n hint={option.hint}\n />\n ))}\n </PromptFrame>\n );\n}\n\nfunction MultiSelectPrompt<T extends string>({\n message,\n options,\n required,\n onComplete,\n}: MultiSelectPromptProps<T>) {\n const [index, setIndex] = useState(0);\n const [selected, setSelected] = useState<Set<number>>(new Set());\n const [error, setError] = useState<string | undefined>();\n\n useInput((input, key) => {\n if (key.escape || (key.ctrl && input === 'c')) {\n complete(CANCELLED, onComplete);\n return;\n }\n if (key.upArrow) {\n setIndex((current) => (current === 0 ? options.length - 1 : current - 1));\n return;\n }\n if (key.downArrow) {\n setIndex((current) => (current + 1) % options.length);\n return;\n }\n if (input === ' ') {\n setSelected((current) => {\n const next = new Set(current);\n if (next.has(index)) {\n next.delete(index);\n } else {\n next.add(index);\n }\n return next;\n });\n setError(undefined);\n return;\n }\n if (key.return) {\n if (required && selected.size === 0) {\n setError('Select at least one option');\n return;\n }\n const values = [...selected]\n .sort((a, b) => a - b)\n .map((selectedIndex) => options[selectedIndex]?.value)\n .filter((value): value is T => value != null);\n complete({ value: values, cancelled: false }, onComplete);\n }\n });\n\n return (\n <PromptFrame\n message={message}\n footer='↑↓ navigate space toggle enter select esc cancel'\n >\n {options.map((option, optionIndex) => (\n <OptionRow\n key={optionIndex}\n active={optionIndex === index}\n selected={selected.has(optionIndex)}\n label={option.label}\n hint={option.hint}\n />\n ))}\n {error ? <Text color='red'>{error}</Text> : null}\n </PromptFrame>\n );\n}\n\nfunction ConfirmPrompt({\n message,\n defaultValue,\n onComplete,\n}: ConfirmPromptProps) {\n const options = [\n { value: true, label: 'Yes' },\n { value: false, label: 'No' },\n ];\n const [index, setIndex] = useState(defaultValue ? 0 : 1);\n\n useInput((input, key) => {\n if (key.escape || (key.ctrl && input === 'c')) {\n complete(CANCELLED, onComplete);\n return;\n }\n if (key.leftArrow || key.upArrow || key.rightArrow || key.downArrow) {\n setIndex((current) => (current === 0 ? 1 : 0));\n return;\n }\n if (input.toLowerCase() === 'y') {\n complete({ value: true, cancelled: false }, onComplete);\n return;\n }\n if (input.toLowerCase() === 'n') {\n complete({ value: false, cancelled: false }, onComplete);\n return;\n }\n if (key.return) {\n complete({ value: options[index]!.value, cancelled: false }, onComplete);\n }\n });\n\n return (\n <PromptFrame\n message={message}\n footer='←→ choose y/n select enter confirm esc cancel'\n >\n {options.map((option, optionIndex) => (\n <OptionRow\n key={option.label}\n active={optionIndex === index}\n label={option.label}\n />\n ))}\n </PromptFrame>\n );\n}\n\nexport async function inkPromptText(\n options: Omit<TextPromptProps, 'onComplete'>\n) {\n return runPrompt<string>((onComplete) => (\n <TextPrompt {...options} onComplete={onComplete} />\n ));\n}\n\nexport async function inkPromptLocale(\n options: Omit<LocalePromptProps, 'onComplete'>\n) {\n return runPrompt<string>((onComplete) => (\n <LocalePrompt {...options} onComplete={onComplete} />\n ));\n}\n\nexport async function inkPromptLocaleMulti(\n options: Omit<LocaleMultiPromptProps, 'onComplete'>\n) {\n return runPrompt<string[]>((onComplete) => (\n <LocaleMultiPrompt {...options} onComplete={onComplete} />\n ));\n}\n\nexport async function inkPromptGlob(\n options: Omit<GlobPromptProps, 'onComplete'>\n) {\n return runPrompt<string>((onComplete) => (\n <GlobPrompt {...options} onComplete={onComplete} />\n ));\n}\n\nexport async function inkPromptSelect<T>(\n options: Omit<SelectPromptProps<T>, 'onComplete'>\n) {\n return runPrompt<T>((onComplete) => (\n <SelectPrompt {...options} onComplete={onComplete} />\n ));\n}\n\nexport async function inkPromptMultiSelect<T extends string>(\n options: Omit<MultiSelectPromptProps<T>, 'onComplete'>\n) {\n return runPrompt<Array<T>>((onComplete) => (\n <MultiSelectPrompt {...options} onComplete={onComplete} />\n ));\n}\n\nexport async function inkPromptConfirm(\n options: Omit<ConfirmPromptProps, 'onComplete'>\n) {\n return runPrompt<boolean>((onComplete) => (\n <ConfirmPrompt {...options} onComplete={onComplete} />\n ));\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"inkPrompts.js","names":[],"sources":["../../src/console/inkPrompts.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { Box, Text, useInput } from 'ink';\nimport { getSupportedLocale } from '@generaltranslation/supported-locales';\nimport {\n OptionRow,\n LocaleOptionsList,\n RemainingMatches,\n SelectedTags,\n} from './inkFields.js';\nimport { getFilteredLocaleOptions, getLocaleOptions } from './inkLocaleData.js';\nimport { InputBox, PromptFrame } from './inkLayout.js';\nimport { runPrompt } from './inkSession.js';\nimport { useTerminalSize } from './inkTerminal.js';\nimport { parseTypedLocale } from './promptParsing.js';\nimport type {\n ConfirmPromptProps,\n EditableTextPromptProps,\n GlobPromptProps,\n LocaleMultiPromptProps,\n LocalePromptProps,\n MultiSelectPromptProps,\n SelectPromptProps,\n TextPromptProps,\n} from './inkTypes.js';\nimport {\n CANCELLED,\n SELECTED_TAG_ROW_INDEX,\n complete,\n getInputWidth,\n getOptionWidth,\n getSafeIndex,\n getScrollWindow,\n getVisibleCount,\n nextIndex,\n previousIndex,\n} from './inkUtils.js';\n\nfunction resolveLocaleChoice({\n query,\n highlightedLocale,\n preferHighlightedLocale,\n}: {\n query: string;\n highlightedLocale?: string;\n preferHighlightedLocale: boolean;\n}) {\n if (preferHighlightedLocale) return highlightedLocale;\n return parseTypedLocale(query) ?? highlightedLocale;\n}\n\nfunction TextPrompt({\n message,\n defaultValue,\n validate,\n onComplete,\n footer = 'type to edit enter select esc cancel',\n placeholder,\n}: EditableTextPromptProps) {\n const { columns } = useTerminalSize();\n const [value, setValue] = useState(defaultValue ?? '');\n const [error, setError] = useState<string | undefined>();\n const inputWidth = getInputWidth(columns);\n\n useInput((input, key) => {\n if (key.escape || (key.ctrl && input === 'c')) {\n complete(CANCELLED, onComplete);\n return;\n }\n if (key.return) {\n const validation = validate?.(value);\n if (validation && validation !== true) {\n setError(validation.toString());\n return;\n }\n complete({ value, cancelled: false }, onComplete);\n return;\n }\n if (key.backspace || key.delete) {\n setValue((current) => current.slice(0, -1));\n setError(undefined);\n return;\n }\n if (input && !key.ctrl && !key.meta && !key.return) {\n setValue((current) => current + input);\n setError(undefined);\n }\n });\n\n return (\n <PromptFrame message={message} footer={footer}>\n <InputBox value={value} width={inputWidth} placeholder={placeholder} />\n {error ? <Text color='red'>{error}</Text> : null}\n </PromptFrame>\n );\n}\n\nfunction LocalePrompt({\n message,\n defaultValue,\n onComplete,\n}: LocalePromptProps) {\n const { columns, rows } = useTerminalSize();\n const localeOptions = getLocaleOptions();\n const defaultLocale = defaultValue ? getSupportedLocale(defaultValue) : null;\n const defaultIndex = defaultLocale\n ? Math.max(\n 0,\n localeOptions.findIndex((option) => option.code === defaultLocale)\n )\n : 0;\n const [query, setQuery] = useState('');\n const [index, setIndex] = useState(defaultIndex);\n const [preferHighlightedLocale, setPreferHighlightedLocale] = useState(false);\n const [error, setError] = useState<string | undefined>();\n const filteredOptions = getFilteredLocaleOptions(query);\n const activeIndex = getSafeIndex(index, filteredOptions.length);\n const visibleCount = getVisibleCount(rows, 14);\n const { start, visibleItems: visibleOptions } = getScrollWindow({\n items: filteredOptions,\n index: activeIndex,\n visibleCount,\n });\n const inputWidth = getInputWidth(columns);\n const optionWidth = getOptionWidth(columns);\n\n useInput((input, key) => {\n if (key.escape || (key.ctrl && input === 'c')) {\n complete(CANCELLED, onComplete);\n return;\n }\n if (key.upArrow) {\n setPreferHighlightedLocale(true);\n setIndex((current) => previousIndex(current, filteredOptions.length));\n return;\n }\n if (key.downArrow) {\n setPreferHighlightedLocale(true);\n setIndex((current) => nextIndex(current, filteredOptions.length));\n return;\n }\n if (key.backspace || key.delete) {\n setQuery((current) => current.slice(0, -1));\n setIndex(0);\n setPreferHighlightedLocale(false);\n setError(undefined);\n return;\n }\n if (key.return) {\n const finalLocale = resolveLocaleChoice({\n query,\n highlightedLocale: filteredOptions[activeIndex]?.code,\n preferHighlightedLocale,\n });\n if (!finalLocale) {\n setError('Enter a valid locale (e.g., en)');\n return;\n }\n complete({ value: finalLocale, cancelled: false }, onComplete);\n return;\n }\n if (input && !key.ctrl && !key.meta) {\n setQuery((current) => current + input);\n setIndex(0);\n setPreferHighlightedLocale(false);\n setError(undefined);\n }\n });\n\n return (\n <PromptFrame\n message={message}\n footer='↑↓ navigate enter select esc cancel'\n >\n <InputBox\n value={query}\n width={inputWidth}\n placeholder='Search locales...'\n />\n <LocaleOptionsList\n options={visibleOptions}\n activeIndex={activeIndex - start}\n width={optionWidth}\n />\n <RemainingMatches total={filteredOptions.length} visible={visibleCount} />\n {error ? <Text color='red'>{error}</Text> : null}\n </PromptFrame>\n );\n}\n\nfunction LocaleMultiPrompt({\n message,\n defaultValue = [],\n required,\n onComplete,\n}: LocaleMultiPromptProps) {\n const { columns, rows } = useTerminalSize();\n const [query, setQuery] = useState('');\n const [index, setIndex] = useState(0);\n const [preferHighlightedLocale, setPreferHighlightedLocale] = useState(false);\n const [selected, setSelected] = useState<Set<string>>(new Set(defaultValue));\n const [error, setError] = useState<string | undefined>();\n const selectedLocales = [...selected];\n const filteredOptions = getFilteredLocaleOptions(query).filter(\n (option) => !selected.has(option.code)\n );\n const activeOptionIndex = getSafeIndex(index, filteredOptions.length);\n const visibleCount = getVisibleCount(rows, 16);\n const { start, visibleItems: visibleOptions } = getScrollWindow({\n items: filteredOptions,\n index: activeOptionIndex,\n visibleCount,\n });\n const inputWidth = getInputWidth(columns);\n const optionWidth = getOptionWidth(columns);\n const [selectedTagIndex, setSelectedTagIndex] = useState(0);\n const moveSelectedTag = (direction: -1 | 1) =>\n setSelectedTagIndex((current) =>\n Math.max(0, Math.min(selectedLocales.length - 1, current + direction))\n );\n const removeSelectedTag = () => {\n const localeToRemove = selectedLocales[selectedTagIndex];\n if (!localeToRemove) return;\n setSelected((current) => {\n const next = new Set(current);\n next.delete(localeToRemove);\n return next;\n });\n setSelectedTagIndex((current) =>\n Math.max(0, Math.min(current, selectedLocales.length - 2))\n );\n if (selectedLocales.length === 1) setIndex(0);\n setError(undefined);\n };\n const toggleVisibleLocale = () => {\n const selectedLocale = resolveLocaleChoice({\n query,\n highlightedLocale: filteredOptions[activeOptionIndex]?.code,\n preferHighlightedLocale,\n });\n if (!selectedLocale) {\n setError('Enter a valid locale (e.g., es fr de)');\n return;\n }\n setSelected((current) => {\n const next = new Set(current);\n if (next.has(selectedLocale)) {\n next.delete(selectedLocale);\n } else {\n next.add(selectedLocale);\n }\n return next;\n });\n setQuery('');\n setError(undefined);\n };\n\n useInput((input, key) => {\n if (key.escape || (key.ctrl && input === 'c')) {\n complete(CANCELLED, onComplete);\n return;\n }\n if (key.upArrow) {\n setPreferHighlightedLocale(true);\n setIndex((current) => {\n if (current === SELECTED_TAG_ROW_INDEX) {\n if (selectedTagIndex > 0) {\n moveSelectedTag(-1);\n return SELECTED_TAG_ROW_INDEX;\n }\n return Math.max(filteredOptions.length - 1, 0);\n }\n if (current === 0 && selectedLocales.length > 0) {\n setSelectedTagIndex(selectedLocales.length - 1);\n return SELECTED_TAG_ROW_INDEX;\n }\n if (current === 0) {\n return Math.max(filteredOptions.length - 1, 0);\n }\n return current - 1;\n });\n return;\n }\n if (key.downArrow) {\n setPreferHighlightedLocale(true);\n setIndex((current) => {\n if (filteredOptions.length === 0) return 0;\n if (current === SELECTED_TAG_ROW_INDEX) {\n if (selectedTagIndex < selectedLocales.length - 1) {\n moveSelectedTag(1);\n return SELECTED_TAG_ROW_INDEX;\n }\n return 0;\n }\n return nextIndex(current, filteredOptions.length);\n });\n return;\n }\n if (index === SELECTED_TAG_ROW_INDEX && key.leftArrow) {\n setSelectedTagIndex((current) => Math.max(0, current - 1));\n return;\n }\n if (index === SELECTED_TAG_ROW_INDEX && key.rightArrow) {\n setSelectedTagIndex((current) =>\n Math.min(selectedLocales.length - 1, current + 1)\n );\n return;\n }\n if (key.backspace || key.delete) {\n setQuery((current) => current.slice(0, -1));\n setIndex(0);\n setPreferHighlightedLocale(false);\n setError(undefined);\n return;\n }\n if (input === ' ' && index === SELECTED_TAG_ROW_INDEX) {\n removeSelectedTag();\n return;\n }\n if (input === ' ') {\n toggleVisibleLocale();\n return;\n }\n if (key.return) {\n if (required && selected.size === 0) {\n setError('Select at least one locale');\n return;\n }\n complete({ value: [...selected], cancelled: false }, onComplete);\n return;\n }\n if (input && !key.ctrl && !key.meta) {\n setQuery((current) => current + input);\n setIndex(0);\n setPreferHighlightedLocale(false);\n setError(undefined);\n }\n });\n\n return (\n <PromptFrame\n message={message}\n footer='↑↓ navigate space toggle enter confirm esc cancel'\n >\n <InputBox\n value={query}\n width={inputWidth}\n placeholder='Search locales...'\n />\n <Box marginTop={1}>\n <SelectedTags\n selectedLocales={selectedLocales}\n active={index === SELECTED_TAG_ROW_INDEX}\n activeIndex={selectedTagIndex}\n width={optionWidth}\n />\n </Box>\n <LocaleOptionsList\n options={visibleOptions}\n activeIndex={\n index === SELECTED_TAG_ROW_INDEX\n ? SELECTED_TAG_ROW_INDEX\n : activeOptionIndex - start\n }\n width={optionWidth}\n />\n <RemainingMatches total={filteredOptions.length} visible={visibleCount} />\n {error ? <Text color='red'>{error}</Text> : null}\n </PromptFrame>\n );\n}\n\nfunction GlobPrompt({\n label,\n message,\n defaultValue,\n onComplete,\n}: GlobPromptProps) {\n return (\n <TextPrompt\n message={\n message ??\n `${label}: Enter space-separated glob patterns for files to translate. Include [locale].`\n }\n defaultValue={defaultValue}\n footer='enter save esc cancel'\n onComplete={onComplete}\n />\n );\n}\n\nfunction SelectPrompt<T>({\n message,\n options,\n defaultValue,\n onComplete,\n}: SelectPromptProps<T>) {\n const defaultIndex = Math.max(\n 0,\n options.findIndex((option) => option.value === defaultValue)\n );\n const [index, setIndex] = useState(defaultIndex);\n\n useInput((input, key) => {\n if (key.escape || (key.ctrl && input === 'c')) {\n complete(CANCELLED, onComplete);\n return;\n }\n if (key.upArrow) {\n setIndex((current) => (current === 0 ? options.length - 1 : current - 1));\n return;\n }\n if (key.downArrow) {\n setIndex((current) => (current + 1) % options.length);\n return;\n }\n if (key.return) {\n complete({ value: options[index]?.value, cancelled: false }, onComplete);\n }\n });\n\n return (\n <PromptFrame\n message={message}\n footer='↑↓ navigate enter select esc cancel'\n >\n {options.map((option, optionIndex) => (\n <OptionRow\n key={optionIndex}\n active={optionIndex === index}\n label={option.label}\n hint={option.hint}\n />\n ))}\n </PromptFrame>\n );\n}\n\nfunction MultiSelectPrompt<T extends string>({\n message,\n options,\n required,\n onComplete,\n}: MultiSelectPromptProps<T>) {\n const [index, setIndex] = useState(0);\n const [selected, setSelected] = useState<Set<number>>(new Set());\n const [error, setError] = useState<string | undefined>();\n\n useInput((input, key) => {\n if (key.escape || (key.ctrl && input === 'c')) {\n complete(CANCELLED, onComplete);\n return;\n }\n if (key.upArrow) {\n setIndex((current) => (current === 0 ? options.length - 1 : current - 1));\n return;\n }\n if (key.downArrow) {\n setIndex((current) => (current + 1) % options.length);\n return;\n }\n if (input === ' ') {\n setSelected((current) => {\n const next = new Set(current);\n if (next.has(index)) {\n next.delete(index);\n } else {\n next.add(index);\n }\n return next;\n });\n setError(undefined);\n return;\n }\n if (key.return) {\n if (required && selected.size === 0) {\n setError('Select at least one option');\n return;\n }\n const values = [...selected]\n .sort((a, b) => a - b)\n .map((selectedIndex) => options[selectedIndex]?.value)\n .filter((value): value is T => value != null);\n complete({ value: values, cancelled: false }, onComplete);\n }\n });\n\n return (\n <PromptFrame\n message={message}\n footer='↑↓ navigate space toggle enter select esc cancel'\n >\n {options.map((option, optionIndex) => (\n <OptionRow\n key={optionIndex}\n active={optionIndex === index}\n selected={selected.has(optionIndex)}\n label={option.label}\n hint={option.hint}\n />\n ))}\n {error ? <Text color='red'>{error}</Text> : null}\n </PromptFrame>\n );\n}\n\nfunction ConfirmPrompt({\n message,\n defaultValue,\n onComplete,\n}: ConfirmPromptProps) {\n const options = [\n { value: true, label: 'Yes' },\n { value: false, label: 'No' },\n ];\n const [index, setIndex] = useState(defaultValue ? 0 : 1);\n\n useInput((input, key) => {\n if (key.escape || (key.ctrl && input === 'c')) {\n complete(CANCELLED, onComplete);\n return;\n }\n if (key.leftArrow || key.upArrow || key.rightArrow || key.downArrow) {\n setIndex((current) => (current === 0 ? 1 : 0));\n return;\n }\n if (input.toLowerCase() === 'y') {\n complete({ value: true, cancelled: false }, onComplete);\n return;\n }\n if (input.toLowerCase() === 'n') {\n complete({ value: false, cancelled: false }, onComplete);\n return;\n }\n if (key.return) {\n complete({ value: options[index]!.value, cancelled: false }, onComplete);\n }\n });\n\n return (\n <PromptFrame\n message={message}\n footer='←→ choose y/n select enter confirm esc cancel'\n >\n {options.map((option, optionIndex) => (\n <OptionRow\n key={option.label}\n active={optionIndex === index}\n label={option.label}\n />\n ))}\n </PromptFrame>\n );\n}\n\nexport async function inkPromptText(\n options: Omit<TextPromptProps, 'onComplete'>\n) {\n return runPrompt<string>((onComplete) => (\n <TextPrompt {...options} onComplete={onComplete} />\n ));\n}\n\nexport async function inkPromptLocale(\n options: Omit<LocalePromptProps, 'onComplete'>\n) {\n return runPrompt<string>((onComplete) => (\n <LocalePrompt {...options} onComplete={onComplete} />\n ));\n}\n\nexport async function inkPromptLocaleMulti(\n options: Omit<LocaleMultiPromptProps, 'onComplete'>\n) {\n return runPrompt<string[]>((onComplete) => (\n <LocaleMultiPrompt {...options} onComplete={onComplete} />\n ));\n}\n\nexport async function inkPromptGlob(\n options: Omit<GlobPromptProps, 'onComplete'>\n) {\n return runPrompt<string>((onComplete) => (\n <GlobPrompt {...options} onComplete={onComplete} />\n ));\n}\n\nexport async function inkPromptSelect<T>(\n options: Omit<SelectPromptProps<T>, 'onComplete'>\n) {\n return runPrompt<T>((onComplete) => (\n <SelectPrompt {...options} onComplete={onComplete} />\n ));\n}\n\nexport async function inkPromptMultiSelect<T extends string>(\n options: Omit<MultiSelectPromptProps<T>, 'onComplete'>\n) {\n return runPrompt<Array<T>>((onComplete) => (\n <MultiSelectPrompt {...options} onComplete={onComplete} />\n ));\n}\n\nexport async function inkPromptConfirm(\n options: Omit<ConfirmPromptProps, 'onComplete'>\n) {\n return runPrompt<boolean>((onComplete) => (\n <ConfirmPrompt {...options} onComplete={onComplete} />\n ));\n}\n"],"mappings":";;;;;;;;;;;;AAqCA,SAAS,oBAAoB,EAC3B,OACA,mBACA,2BAKC;AACD,KAAI,wBAAyB,QAAO;AACpC,QAAO,iBAAiB,MAAM,IAAI;;AAGpC,SAAS,WAAW,EAClB,SACA,cACA,UACA,YACA,SAAS,4CACT,eAC0B;CAC1B,MAAM,EAAE,YAAY,iBAAiB;CACrC,MAAM,CAAC,OAAO,YAAY,SAAS,gBAAgB,GAAG;CACtD,MAAM,CAAC,OAAO,YAAY,UAA8B;CACxD,MAAM,aAAa,cAAc,QAAQ;AAEzC,WAAU,OAAO,QAAQ;AACvB,MAAI,IAAI,UAAW,IAAI,QAAQ,UAAU,KAAM;AAC7C,YAAS,WAAW,WAAW;AAC/B;;AAEF,MAAI,IAAI,QAAQ;GACd,MAAM,aAAa,WAAW,MAAM;AACpC,OAAI,cAAc,eAAe,MAAM;AACrC,aAAS,WAAW,UAAU,CAAC;AAC/B;;AAEF,YAAS;IAAE;IAAO,WAAW;IAAO,EAAE,WAAW;AACjD;;AAEF,MAAI,IAAI,aAAa,IAAI,QAAQ;AAC/B,aAAU,YAAY,QAAQ,MAAM,GAAG,GAAG,CAAC;AAC3C,YAAS,KAAA,EAAU;AACnB;;AAEF,MAAI,SAAS,CAAC,IAAI,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,QAAQ;AAClD,aAAU,YAAY,UAAU,MAAM;AACtC,YAAS,KAAA,EAAU;;GAErB;AAEF,QACE,qBAAC,aAAD;EAAsB;EAAiB;YAAvC,CACE,oBAAC,UAAD;GAAiB;GAAO,OAAO;GAAyB;GAAe,CAAA,EACtE,QAAQ,oBAAC,MAAD;GAAM,OAAM;aAAO;GAAa,CAAA,GAAG,KAChC;;;AAIlB,SAAS,aAAa,EACpB,SACA,cACA,cACoB;CACpB,MAAM,EAAE,SAAS,SAAS,iBAAiB;CAC3C,MAAM,gBAAgB,kBAAkB;CACxC,MAAM,gBAAgB,eAAe,mBAAmB,aAAa,GAAG;CACxE,MAAM,eAAe,gBACjB,KAAK,IACH,GACA,cAAc,WAAW,WAAW,OAAO,SAAS,cAAc,CACnE,GACD;CACJ,MAAM,CAAC,OAAO,YAAY,SAAS,GAAG;CACtC,MAAM,CAAC,OAAO,YAAY,SAAS,aAAa;CAChD,MAAM,CAAC,yBAAyB,8BAA8B,SAAS,MAAM;CAC7E,MAAM,CAAC,OAAO,YAAY,UAA8B;CACxD,MAAM,kBAAkB,yBAAyB,MAAM;CACvD,MAAM,cAAc,aAAa,OAAO,gBAAgB,OAAO;CAC/D,MAAM,eAAe,gBAAgB,MAAM,GAAG;CAC9C,MAAM,EAAE,OAAO,cAAc,mBAAmB,gBAAgB;EAC9D,OAAO;EACP,OAAO;EACP;EACD,CAAC;CACF,MAAM,aAAa,cAAc,QAAQ;CACzC,MAAM,cAAc,eAAe,QAAQ;AAE3C,WAAU,OAAO,QAAQ;AACvB,MAAI,IAAI,UAAW,IAAI,QAAQ,UAAU,KAAM;AAC7C,YAAS,WAAW,WAAW;AAC/B;;AAEF,MAAI,IAAI,SAAS;AACf,8BAA2B,KAAK;AAChC,aAAU,YAAY,cAAc,SAAS,gBAAgB,OAAO,CAAC;AACrE;;AAEF,MAAI,IAAI,WAAW;AACjB,8BAA2B,KAAK;AAChC,aAAU,YAAY,UAAU,SAAS,gBAAgB,OAAO,CAAC;AACjE;;AAEF,MAAI,IAAI,aAAa,IAAI,QAAQ;AAC/B,aAAU,YAAY,QAAQ,MAAM,GAAG,GAAG,CAAC;AAC3C,YAAS,EAAE;AACX,8BAA2B,MAAM;AACjC,YAAS,KAAA,EAAU;AACnB;;AAEF,MAAI,IAAI,QAAQ;GACd,MAAM,cAAc,oBAAoB;IACtC;IACA,mBAAmB,gBAAgB,cAAc;IACjD;IACD,CAAC;AACF,OAAI,CAAC,aAAa;AAChB,aAAS,kCAAkC;AAC3C;;AAEF,YAAS;IAAE,OAAO;IAAa,WAAW;IAAO,EAAE,WAAW;AAC9D;;AAEF,MAAI,SAAS,CAAC,IAAI,QAAQ,CAAC,IAAI,MAAM;AACnC,aAAU,YAAY,UAAU,MAAM;AACtC,YAAS,EAAE;AACX,8BAA2B,MAAM;AACjC,YAAS,KAAA,EAAU;;GAErB;AAEF,QACE,qBAAC,aAAD;EACW;EACT,QAAO;YAFT;GAIE,oBAAC,UAAD;IACE,OAAO;IACP,OAAO;IACP,aAAY;IACZ,CAAA;GACF,oBAAC,mBAAD;IACE,SAAS;IACT,aAAa,cAAc;IAC3B,OAAO;IACP,CAAA;GACF,oBAAC,kBAAD;IAAkB,OAAO,gBAAgB;IAAQ,SAAS;IAAgB,CAAA;GACzE,QAAQ,oBAAC,MAAD;IAAM,OAAM;cAAO;IAAa,CAAA,GAAG;GAChC;;;AAIlB,SAAS,kBAAkB,EACzB,SACA,eAAe,EAAE,EACjB,UACA,cACyB;CACzB,MAAM,EAAE,SAAS,SAAS,iBAAiB;CAC3C,MAAM,CAAC,OAAO,YAAY,SAAS,GAAG;CACtC,MAAM,CAAC,OAAO,YAAY,SAAS,EAAE;CACrC,MAAM,CAAC,yBAAyB,8BAA8B,SAAS,MAAM;CAC7E,MAAM,CAAC,UAAU,eAAe,SAAsB,IAAI,IAAI,aAAa,CAAC;CAC5E,MAAM,CAAC,OAAO,YAAY,UAA8B;CACxD,MAAM,kBAAkB,CAAC,GAAG,SAAS;CACrC,MAAM,kBAAkB,yBAAyB,MAAM,CAAC,QACrD,WAAW,CAAC,SAAS,IAAI,OAAO,KAAK,CACvC;CACD,MAAM,oBAAoB,aAAa,OAAO,gBAAgB,OAAO;CACrE,MAAM,eAAe,gBAAgB,MAAM,GAAG;CAC9C,MAAM,EAAE,OAAO,cAAc,mBAAmB,gBAAgB;EAC9D,OAAO;EACP,OAAO;EACP;EACD,CAAC;CACF,MAAM,aAAa,cAAc,QAAQ;CACzC,MAAM,cAAc,eAAe,QAAQ;CAC3C,MAAM,CAAC,kBAAkB,uBAAuB,SAAS,EAAE;CAC3D,MAAM,mBAAmB,cACvB,qBAAqB,YACnB,KAAK,IAAI,GAAG,KAAK,IAAI,gBAAgB,SAAS,GAAG,UAAU,UAAU,CAAC,CACvE;CACH,MAAM,0BAA0B;EAC9B,MAAM,iBAAiB,gBAAgB;AACvC,MAAI,CAAC,eAAgB;AACrB,eAAa,YAAY;GACvB,MAAM,OAAO,IAAI,IAAI,QAAQ;AAC7B,QAAK,OAAO,eAAe;AAC3B,UAAO;IACP;AACF,uBAAqB,YACnB,KAAK,IAAI,GAAG,KAAK,IAAI,SAAS,gBAAgB,SAAS,EAAE,CAAC,CAC3D;AACD,MAAI,gBAAgB,WAAW,EAAG,UAAS,EAAE;AAC7C,WAAS,KAAA,EAAU;;CAErB,MAAM,4BAA4B;EAChC,MAAM,iBAAiB,oBAAoB;GACzC;GACA,mBAAmB,gBAAgB,oBAAoB;GACvD;GACD,CAAC;AACF,MAAI,CAAC,gBAAgB;AACnB,YAAS,wCAAwC;AACjD;;AAEF,eAAa,YAAY;GACvB,MAAM,OAAO,IAAI,IAAI,QAAQ;AAC7B,OAAI,KAAK,IAAI,eAAe,CAC1B,MAAK,OAAO,eAAe;OAE3B,MAAK,IAAI,eAAe;AAE1B,UAAO;IACP;AACF,WAAS,GAAG;AACZ,WAAS,KAAA,EAAU;;AAGrB,WAAU,OAAO,QAAQ;AACvB,MAAI,IAAI,UAAW,IAAI,QAAQ,UAAU,KAAM;AAC7C,YAAS,WAAW,WAAW;AAC/B;;AAEF,MAAI,IAAI,SAAS;AACf,8BAA2B,KAAK;AAChC,aAAU,YAAY;AACpB,QAAI,YAAA,IAAoC;AACtC,SAAI,mBAAmB,GAAG;AACxB,sBAAgB,GAAG;AACnB,aAAA;;AAEF,YAAO,KAAK,IAAI,gBAAgB,SAAS,GAAG,EAAE;;AAEhD,QAAI,YAAY,KAAK,gBAAgB,SAAS,GAAG;AAC/C,yBAAoB,gBAAgB,SAAS,EAAE;AAC/C,YAAA;;AAEF,QAAI,YAAY,EACd,QAAO,KAAK,IAAI,gBAAgB,SAAS,GAAG,EAAE;AAEhD,WAAO,UAAU;KACjB;AACF;;AAEF,MAAI,IAAI,WAAW;AACjB,8BAA2B,KAAK;AAChC,aAAU,YAAY;AACpB,QAAI,gBAAgB,WAAW,EAAG,QAAO;AACzC,QAAI,YAAA,IAAoC;AACtC,SAAI,mBAAmB,gBAAgB,SAAS,GAAG;AACjD,sBAAgB,EAAE;AAClB,aAAA;;AAEF,YAAO;;AAET,WAAO,UAAU,SAAS,gBAAgB,OAAO;KACjD;AACF;;AAEF,MAAI,UAAA,MAAoC,IAAI,WAAW;AACrD,wBAAqB,YAAY,KAAK,IAAI,GAAG,UAAU,EAAE,CAAC;AAC1D;;AAEF,MAAI,UAAA,MAAoC,IAAI,YAAY;AACtD,wBAAqB,YACnB,KAAK,IAAI,gBAAgB,SAAS,GAAG,UAAU,EAAE,CAClD;AACD;;AAEF,MAAI,IAAI,aAAa,IAAI,QAAQ;AAC/B,aAAU,YAAY,QAAQ,MAAM,GAAG,GAAG,CAAC;AAC3C,YAAS,EAAE;AACX,8BAA2B,MAAM;AACjC,YAAS,KAAA,EAAU;AACnB;;AAEF,MAAI,UAAU,OAAO,UAAA,IAAkC;AACrD,sBAAmB;AACnB;;AAEF,MAAI,UAAU,KAAK;AACjB,wBAAqB;AACrB;;AAEF,MAAI,IAAI,QAAQ;AACd,OAAI,YAAY,SAAS,SAAS,GAAG;AACnC,aAAS,6BAA6B;AACtC;;AAEF,YAAS;IAAE,OAAO,CAAC,GAAG,SAAS;IAAE,WAAW;IAAO,EAAE,WAAW;AAChE;;AAEF,MAAI,SAAS,CAAC,IAAI,QAAQ,CAAC,IAAI,MAAM;AACnC,aAAU,YAAY,UAAU,MAAM;AACtC,YAAS,EAAE;AACX,8BAA2B,MAAM;AACjC,YAAS,KAAA,EAAU;;GAErB;AAEF,QACE,qBAAC,aAAD;EACW;EACT,QAAO;YAFT;GAIE,oBAAC,UAAD;IACE,OAAO;IACP,OAAO;IACP,aAAY;IACZ,CAAA;GACF,oBAAC,KAAD;IAAK,WAAW;cACd,oBAAC,cAAD;KACmB;KACjB,QAAQ,UAAA;KACR,aAAa;KACb,OAAO;KACP,CAAA;IACE,CAAA;GACN,oBAAC,mBAAD;IACE,SAAS;IACT,aACE,UAAA,KAAA,KAEI,oBAAoB;IAE1B,OAAO;IACP,CAAA;GACF,oBAAC,kBAAD;IAAkB,OAAO,gBAAgB;IAAQ,SAAS;IAAgB,CAAA;GACzE,QAAQ,oBAAC,MAAD;IAAM,OAAM;cAAO;IAAa,CAAA,GAAG;GAChC;;;AAIlB,SAAS,WAAW,EAClB,OACA,SACA,cACA,cACkB;AAClB,QACE,oBAAC,YAAD;EACE,SACE,WACA,GAAG,MAAM;EAEG;EACd,QAAO;EACK;EACZ,CAAA;;AAIN,SAAS,aAAgB,EACvB,SACA,SACA,cACA,cACuB;CAKvB,MAAM,CAAC,OAAO,YAAY,SAJL,KAAK,IACxB,GACA,QAAQ,WAAW,WAAW,OAAO,UAAU,aAAa,CAEf,CAAC;AAEhD,WAAU,OAAO,QAAQ;AACvB,MAAI,IAAI,UAAW,IAAI,QAAQ,UAAU,KAAM;AAC7C,YAAS,WAAW,WAAW;AAC/B;;AAEF,MAAI,IAAI,SAAS;AACf,aAAU,YAAa,YAAY,IAAI,QAAQ,SAAS,IAAI,UAAU,EAAG;AACzE;;AAEF,MAAI,IAAI,WAAW;AACjB,aAAU,aAAa,UAAU,KAAK,QAAQ,OAAO;AACrD;;AAEF,MAAI,IAAI,OACN,UAAS;GAAE,OAAO,QAAQ,QAAQ;GAAO,WAAW;GAAO,EAAE,WAAW;GAE1E;AAEF,QACE,oBAAC,aAAD;EACW;EACT,QAAO;YAEN,QAAQ,KAAK,QAAQ,gBACpB,oBAAC,WAAD;GAEE,QAAQ,gBAAgB;GACxB,OAAO,OAAO;GACd,MAAM,OAAO;GACb,EAJK,YAIL,CACF;EACU,CAAA;;AAIlB,SAAS,kBAAoC,EAC3C,SACA,SACA,UACA,cAC4B;CAC5B,MAAM,CAAC,OAAO,YAAY,SAAS,EAAE;CACrC,MAAM,CAAC,UAAU,eAAe,yBAAsB,IAAI,KAAK,CAAC;CAChE,MAAM,CAAC,OAAO,YAAY,UAA8B;AAExD,WAAU,OAAO,QAAQ;AACvB,MAAI,IAAI,UAAW,IAAI,QAAQ,UAAU,KAAM;AAC7C,YAAS,WAAW,WAAW;AAC/B;;AAEF,MAAI,IAAI,SAAS;AACf,aAAU,YAAa,YAAY,IAAI,QAAQ,SAAS,IAAI,UAAU,EAAG;AACzE;;AAEF,MAAI,IAAI,WAAW;AACjB,aAAU,aAAa,UAAU,KAAK,QAAQ,OAAO;AACrD;;AAEF,MAAI,UAAU,KAAK;AACjB,gBAAa,YAAY;IACvB,MAAM,OAAO,IAAI,IAAI,QAAQ;AAC7B,QAAI,KAAK,IAAI,MAAM,CACjB,MAAK,OAAO,MAAM;QAElB,MAAK,IAAI,MAAM;AAEjB,WAAO;KACP;AACF,YAAS,KAAA,EAAU;AACnB;;AAEF,MAAI,IAAI,QAAQ;AACd,OAAI,YAAY,SAAS,SAAS,GAAG;AACnC,aAAS,6BAA6B;AACtC;;AAMF,YAAS;IAAE,OAJI,CAAC,GAAG,SAAS,CACzB,MAAM,GAAG,MAAM,IAAI,EAAE,CACrB,KAAK,kBAAkB,QAAQ,gBAAgB,MAAM,CACrD,QAAQ,UAAsB,SAAS,KAClB;IAAE,WAAW;IAAO,EAAE,WAAW;;GAE3D;AAEF,QACE,qBAAC,aAAD;EACW;EACT,QAAO;YAFT,CAIG,QAAQ,KAAK,QAAQ,gBACpB,oBAAC,WAAD;GAEE,QAAQ,gBAAgB;GACxB,UAAU,SAAS,IAAI,YAAY;GACnC,OAAO,OAAO;GACd,MAAM,OAAO;GACb,EALK,YAKL,CACF,EACD,QAAQ,oBAAC,MAAD;GAAM,OAAM;aAAO;GAAa,CAAA,GAAG,KAChC;;;AAIlB,SAAS,cAAc,EACrB,SACA,cACA,cACqB;CACrB,MAAM,UAAU,CACd;EAAE,OAAO;EAAM,OAAO;EAAO,EAC7B;EAAE,OAAO;EAAO,OAAO;EAAM,CAC9B;CACD,MAAM,CAAC,OAAO,YAAY,SAAS,eAAe,IAAI,EAAE;AAExD,WAAU,OAAO,QAAQ;AACvB,MAAI,IAAI,UAAW,IAAI,QAAQ,UAAU,KAAM;AAC7C,YAAS,WAAW,WAAW;AAC/B;;AAEF,MAAI,IAAI,aAAa,IAAI,WAAW,IAAI,cAAc,IAAI,WAAW;AACnE,aAAU,YAAa,YAAY,IAAI,IAAI,EAAG;AAC9C;;AAEF,MAAI,MAAM,aAAa,KAAK,KAAK;AAC/B,YAAS;IAAE,OAAO;IAAM,WAAW;IAAO,EAAE,WAAW;AACvD;;AAEF,MAAI,MAAM,aAAa,KAAK,KAAK;AAC/B,YAAS;IAAE,OAAO;IAAO,WAAW;IAAO,EAAE,WAAW;AACxD;;AAEF,MAAI,IAAI,OACN,UAAS;GAAE,OAAO,QAAQ,OAAQ;GAAO,WAAW;GAAO,EAAE,WAAW;GAE1E;AAEF,QACE,oBAAC,aAAD;EACW;EACT,QAAO;YAEN,QAAQ,KAAK,QAAQ,gBACpB,oBAAC,WAAD;GAEE,QAAQ,gBAAgB;GACxB,OAAO,OAAO;GACd,EAHK,OAAO,MAGZ,CACF;EACU,CAAA;;AAIlB,eAAsB,cACpB,SACA;AACA,QAAO,WAAmB,eACxB,oBAAC,YAAD;EAAY,GAAI;EAAqB;EAAc,CAAA,CACnD;;AAGJ,eAAsB,gBACpB,SACA;AACA,QAAO,WAAmB,eACxB,oBAAC,cAAD;EAAc,GAAI;EAAqB;EAAc,CAAA,CACrD;;AAGJ,eAAsB,qBACpB,SACA;AACA,QAAO,WAAqB,eAC1B,oBAAC,mBAAD;EAAmB,GAAI;EAAqB;EAAc,CAAA,CAC1D;;AAGJ,eAAsB,cACpB,SACA;AACA,QAAO,WAAmB,eACxB,oBAAC,YAAD;EAAY,GAAI;EAAqB;EAAc,CAAA,CACnD;;AAGJ,eAAsB,gBACpB,SACA;AACA,QAAO,WAAc,eACnB,oBAAC,cAAD;EAAc,GAAI;EAAqB;EAAc,CAAA,CACrD;;AAGJ,eAAsB,qBACpB,SACA;AACA,QAAO,WAAqB,eAC1B,oBAAC,mBAAD;EAAmB,GAAI;EAAqB;EAAc,CAAA,CAC1D;;AAGJ,eAAsB,iBACpB,SACA;AACA,QAAO,WAAoB,eACzB,oBAAC,eAAD;EAAe,GAAI;EAAqB;EAAc,CAAA,CACtD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const PACKAGE_VERSION = "2.14.
|
|
1
|
+
export declare const PACKAGE_VERSION = "2.14.65";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","names":[],"sources":["../../src/generated/version.ts"],"sourcesContent":["// This file is auto-generated. Do not edit manually.\nexport const PACKAGE_VERSION = '2.14.
|
|
1
|
+
{"version":3,"file":"version.js","names":[],"sources":["../../src/generated/version.ts"],"sourcesContent":["// This file is auto-generated. Do not edit manually.\nexport const PACKAGE_VERSION = '2.14.65';\n"],"mappings":";AACA,MAAa,kBAAkB"}
|