@unoff/ui 1.21.1 → 1.21.3
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/README.md +2 -2
- package/dist/assets/Bar.css +1 -1
- package/dist/assets/FormItem.css +1 -1
- package/dist/assets/MultipleSlider.css +1 -1
- package/dist/assets/SimpleSlider.css +1 -1
- package/dist/assets/styles/icons/icons.css +1 -1
- package/dist/assets/styles/icons/styles/figma.css +1 -1
- package/dist/assets/styles/icons/styles/framer.css +1 -1
- package/dist/assets/styles/icons/styles/penpot.css +1 -1
- package/dist/assets/styles/icons/styles/sketch.css +1 -1
- package/dist/components/actions/accordion/Accordion.d.ts +0 -1
- package/dist/components/actions/accordion/Accordion.d.ts.map +1 -1
- package/dist/components/actions/button/Button.d.ts +2 -3
- package/dist/components/actions/button/Button.d.ts.map +1 -1
- package/dist/components/actions/button/Button.js.map +1 -1
- package/dist/components/actions/card/Card.d.ts +0 -1
- package/dist/components/actions/card/Card.d.ts.map +1 -1
- package/dist/components/actions/knob/Knob.d.ts +2 -3
- package/dist/components/actions/knob/Knob.d.ts.map +1 -1
- package/dist/components/actions/knob/Knob.js.map +1 -1
- package/dist/components/actions/menu/Menu.d.ts +2 -3
- package/dist/components/actions/menu/Menu.d.ts.map +1 -1
- package/dist/components/actions/menu/Menu.js.map +1 -1
- package/dist/components/assets/avatar/Avatar.d.ts +0 -1
- package/dist/components/assets/avatar/Avatar.d.ts.map +1 -1
- package/dist/components/assets/icon/Icon.d.ts +0 -1
- package/dist/components/assets/icon/Icon.d.ts.map +1 -1
- package/dist/components/assets/section-title/SectionTitle.d.ts +0 -1
- package/dist/components/assets/section-title/SectionTitle.d.ts.map +1 -1
- package/dist/components/assets/text/Text.d.ts +0 -1
- package/dist/components/assets/text/Text.d.ts.map +1 -1
- package/dist/components/assets/thumbnail/Thumbnail.d.ts +0 -1
- package/dist/components/assets/thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/components/dialogs/consent/Consent.d.ts +2 -3
- package/dist/components/dialogs/consent/Consent.d.ts.map +1 -1
- package/dist/components/dialogs/consent/Consent.js.map +1 -1
- package/dist/components/dialogs/dialog/Dialog.d.ts +0 -1
- package/dist/components/dialogs/dialog/Dialog.d.ts.map +1 -1
- package/dist/components/dialogs/message/Message.d.ts +0 -1
- package/dist/components/dialogs/notification/Notification.d.ts +0 -1
- package/dist/components/dialogs/notification/Notification.d.ts.map +1 -1
- package/dist/components/dialogs/semantic-message/SemanticMessage.d.ts +2 -3
- package/dist/components/dialogs/semantic-message/SemanticMessage.d.ts.map +1 -1
- package/dist/components/dialogs/semantic-message/SemanticMessage.js.map +1 -1
- package/dist/components/inputs/dropdown/Dropdown.d.ts +2 -3
- package/dist/components/inputs/dropdown/Dropdown.d.ts.map +1 -1
- package/dist/components/inputs/dropdown/Dropdown.js.map +1 -1
- package/dist/components/inputs/dropzone/Dropzone.d.ts +2 -3
- package/dist/components/inputs/dropzone/Dropzone.d.ts.map +1 -1
- package/dist/components/inputs/dropzone/Dropzone.js.map +1 -1
- package/dist/components/inputs/input/Input.d.ts +2 -3
- package/dist/components/inputs/input/Input.d.ts.map +1 -1
- package/dist/components/inputs/input/Input.js.map +1 -1
- package/dist/components/inputs/inputs-bar/InputsBar.d.ts +0 -1
- package/dist/components/inputs/inputs-bar/InputsBar.d.ts.map +1 -1
- package/dist/components/inputs/multiple-slider/MultipleSlider.d.ts +15 -8
- package/dist/components/inputs/multiple-slider/MultipleSlider.d.ts.map +1 -1
- package/dist/components/inputs/multiple-slider/MultipleSlider.js +270 -241
- package/dist/components/inputs/multiple-slider/MultipleSlider.js.map +1 -1
- package/dist/components/inputs/multiple-slider/actions/addStop.d.ts.map +1 -1
- package/dist/components/inputs/multiple-slider/actions/deleteStop.d.ts.map +1 -1
- package/dist/components/inputs/multiple-slider/actions/shiftLeftStop.d.ts.map +1 -1
- package/dist/components/inputs/multiple-slider/actions/shiftRightStop.d.ts.map +1 -1
- package/dist/components/inputs/select/Select.d.ts +3 -4
- package/dist/components/inputs/select/Select.d.ts.map +1 -1
- package/dist/components/inputs/select/Select.js.map +1 -1
- package/dist/components/inputs/simple-slider/SimpleSlider.d.ts +14 -4
- package/dist/components/inputs/simple-slider/SimpleSlider.d.ts.map +1 -1
- package/dist/components/inputs/simple-slider/SimpleSlider.js +94 -74
- package/dist/components/inputs/simple-slider/SimpleSlider.js.map +1 -1
- package/dist/components/lists/actions-item/ActionsItem.d.ts +0 -1
- package/dist/components/lists/actions-list/ActionsList.d.ts +4 -5
- package/dist/components/lists/actions-list/ActionsList.d.ts.map +1 -1
- package/dist/components/lists/actions-list/ActionsList.js.map +1 -1
- package/dist/components/lists/color-item/ColorItem.d.ts +0 -1
- package/dist/components/lists/color-item/ColorItem.d.ts.map +1 -1
- package/dist/components/lists/draggable-item/DraggableItem.d.ts +2 -3
- package/dist/components/lists/draggable-item/DraggableItem.d.ts.map +1 -1
- package/dist/components/lists/draggable-item/DraggableItem.js.map +1 -1
- package/dist/components/lists/keyboard-shortcut-item/KeyboardShortcutItem.d.ts +0 -1
- package/dist/components/lists/keyboard-shortcut-item/KeyboardShortcutItem.d.ts.map +1 -1
- package/dist/components/lists/members-list/MembersList.d.ts +0 -1
- package/dist/components/lists/sortable-list/SortableList.d.ts +2 -3
- package/dist/components/lists/sortable-list/SortableList.d.ts.map +1 -1
- package/dist/components/lists/sortable-list/SortableList.js.map +1 -1
- package/dist/components/lists/tabs/Tabs.d.ts +0 -1
- package/dist/components/lists/tabs/Tabs.d.ts.map +1 -1
- package/dist/components/slots/bar/Bar.d.ts +6 -2
- package/dist/components/slots/bar/Bar.d.ts.map +1 -1
- package/dist/components/slots/bar/Bar.js +21 -18
- package/dist/components/slots/bar/Bar.js.map +1 -1
- package/dist/components/slots/draggable-window/DraggableWindow.d.ts +0 -1
- package/dist/components/slots/draggable-window/DraggableWindow.d.ts.map +1 -1
- package/dist/components/slots/drawer/Drawer.d.ts +1 -2
- package/dist/components/slots/drawer/Drawer.d.ts.map +1 -1
- package/dist/components/slots/form-item/FormItem.d.ts +0 -1
- package/dist/components/slots/form-item/FormItem.d.ts.map +1 -1
- package/dist/components/slots/layout/Layout.d.ts +0 -1
- package/dist/components/slots/layout/Layout.d.ts.map +1 -1
- package/dist/components/slots/list/List.d.ts +0 -1
- package/dist/components/slots/list/List.d.ts.map +1 -1
- package/dist/components/slots/popin/Popin.d.ts +0 -1
- package/dist/components/slots/popin/Popin.d.ts.map +1 -1
- package/dist/components/slots/section/Section.d.ts +1 -2
- package/dist/components/slots/section/Section.d.ts.map +1 -1
- package/dist/components/slots/simple-item/SimpleItem.d.ts +0 -1
- package/dist/components/tags/chip/Chip.d.ts +0 -1
- package/dist/components/tags/chip/Chip.d.ts.map +1 -1
- package/dist/components/tags/color-chip/ColorChip.d.ts +2 -3
- package/dist/components/tags/color-chip/ColorChip.d.ts.map +1 -1
- package/dist/components/tags/color-chip/ColorChip.js.map +1 -1
- package/dist/components/tags/icon-chip/IconChip.d.ts +2 -3
- package/dist/components/tags/icon-chip/IconChip.d.ts.map +1 -1
- package/dist/components/tags/icon-chip/IconChip.js.map +1 -1
- package/dist/components/tags/tooltip/Tooltip.d.ts +0 -1
- package/dist/components/tags/tooltip/Tooltip.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/styles/icons/icons.module.js +114 -110
- package/dist/styles/icons/icons.module.js.map +1 -1
- package/dist/tests/setup.d.ts +0 -1
- package/dist/types/consent.types.d.ts +0 -1
- package/dist/types/consent.types.d.ts.map +1 -1
- package/dist/types/icon.types.d.ts +2 -1
- package/dist/types/icon.types.d.ts.map +1 -1
- package/dist/types/icon.types.js +114 -1
- package/dist/types/icon.types.js.map +1 -1
- package/dist/types/list.types.d.ts +0 -1
- package/package.json +18 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Input.js","sources":["../../../../src/components/inputs/input/Input.tsx"],"sourcesContent":["import React from 'react'\nimport { doClassnames } from '@unoff/utils'\nimport Tooltip from '@components/tags/tooltip/Tooltip'\nimport IconChip from '@components/tags/icon-chip/IconChip'\nimport Chip from '@components/tags/chip/Chip'\nimport Icon from '@components/assets/icon/Icon'\nimport Button from '@components/actions/button/Button'\nimport type { IconList } from '@tps/icon.types'\nimport './input.scss'\n\nexport interface InputProps {\n /**\n * HTML id attribute\n */\n id?: string\n /**\n * Type of input\n */\n type: 'NUMBER' | 'COLOR' | 'TEXT' | 'LONG_TEXT' | 'CODE'\n /**\n * Icon configuration to display in the input\n */\n icon?: { type: 'LETTER' | 'PICTO'; value: IconList }\n /**\n * Unit suffix to display (% or °)\n */\n unit?: '%' | '°'\n /**\n * Visual state of the input\n * @default 'DEFAULT'\n */\n state?: 'DEFAULT' | 'ERROR'\n /**\n * Placeholder text\n */\n placeholder?: string\n /**\n * Current value of the input\n */\n value: string\n /**\n * Maximum number of characters allowed\n */\n charactersLimit?: number\n /**\n * Minimum value (for NUMBER type)\n */\n min?: string\n /**\n * Maximum value (for NUMBER type)\n */\n max?: string\n /**\n * Step value (for NUMBER type)\n */\n step?: string\n /**\n * Helper tooltip configuration\n */\n helper?: {\n /** Tooltip content */\n label: string | React.ReactNode\n /** Tooltip position */\n pin?: 'TOP' | 'BOTTOM'\n /** Tooltip display type */\n type?: 'MULTI_LINE' | 'SINGLE_LINE'\n }\n /**\n * Preview tooltip configuration with image\n */\n preview?: {\n /** Preview image URL */\n image: string\n /** Preview text */\n text: string | React.ReactNode\n /** Preview position */\n pin?: 'TOP' | 'BOTTOM'\n }\n /**\n * Warning tooltip configuration\n */\n warning?: {\n /** Warning message */\n label: string | React.ReactNode\n /** Warning position */\n pin?: 'TOP' | 'BOTTOM'\n /** Warning display type */\n type?: 'MULTI_LINE' | 'SINGLE_LINE'\n }\n /**\n * Feature identifier for tracking\n */\n feature?: string\n /**\n * Whether to blur the input after interaction\n */\n shouldBlur?: boolean\n /**\n * Whether to auto-focus on mount\n */\n isAutoFocus?: boolean\n /**\n * Whether the textarea should grow with content\n */\n isGrowing?: boolean\n /**\n * Whether to use flex layout\n */\n isFlex?: boolean\n /**\n * Whether to show a clear button\n */\n isClearable?: boolean\n /**\n * Whether to show a frame border\n */\n isFramed?: boolean\n /**\n * Whether the input can be empty\n */\n canBeEmpty?: boolean\n /**\n * Whether the input is blocked\n */\n isBlocked?: boolean\n /**\n * Whether the input is disabled\n */\n isDisabled?: boolean\n /**\n * Whether to show a \"New\" badge\n */\n isNew?: boolean\n /**\n * Change event handler\n */\n onChange?: React.ChangeEventHandler<HTMLInputElement | HTMLTextAreaElement>\n /**\n * Focus event handler\n */\n onFocus?: React.ChangeEventHandler<HTMLInputElement | HTMLTextAreaElement>\n /**\n * Blur event handler\n */\n onBlur?: React.ChangeEventHandler<HTMLInputElement | HTMLTextAreaElement>\n /**\n * Keyboard shift handler\n */\n onShift?: React.KeyboardEventHandler<HTMLInputElement | HTMLTextAreaElement>\n /**\n * Clear button handler\n */\n onClear?: (value: string) => void\n /**\n * Slider change handler (for NUMBER type)\n */\n onSlide?: React.ChangeEventHandler<HTMLInputElement | HTMLTextAreaElement>\n /**\n * Validation handler\n */\n onValid?: React.KeyboardEventHandler<HTMLInputElement | HTMLTextAreaElement>\n /**\n * Color picker handler (for COLOR type)\n */\n onPick?: React.ChangeEventHandler<HTMLInputElement | HTMLTextAreaElement>\n /**\n * Handler called when unblock is clicked\n */\n onUnblock?: React.MouseEventHandler & React.KeyboardEventHandler\n}\n\nexport interface InputStates {\n inputValue: string\n lastValidValue: string\n lastValidColorValue: string\n colorValue: string\n isTooltipVisible: boolean\n}\n\nexport default class Input extends React.Component<InputProps, InputStates> {\n inputRef: React.RefObject<HTMLInputElement>\n textareaRef: React.RefObject<HTMLTextAreaElement>\n\n static defaultProps: Partial<InputProps> = {\n icon: undefined,\n state: 'DEFAULT',\n step: '1',\n shouldBlur: false,\n isClearable: false,\n isFramed: true,\n canBeEmpty: true,\n isBlocked: false,\n isDisabled: false,\n isNew: false,\n isAutoFocus: false,\n isGrowing: false,\n isFlex: false,\n }\n\n constructor(props: InputProps) {\n super(props)\n this.state = {\n inputValue: props.value,\n lastValidValue: props.value,\n colorValue: props.value,\n lastValidColorValue: props.value,\n isTooltipVisible: false,\n }\n this.inputRef = React.createRef()\n this.textareaRef = React.createRef()\n }\n\n componentDidMount(): void {\n const { isGrowing } = this.props\n\n if (this.textareaRef.current) {\n this.textareaRef.current.style.height = 'auto'\n if (isGrowing)\n this.textareaRef.current.style.height = `${this.textareaRef.current.scrollHeight + 2}px`\n }\n const { isAutoFocus } = this.props\n if (isAutoFocus)\n setTimeout(() => {\n if (this.inputRef.current) this.inputRef.current.focus()\n else if (this.textareaRef.current) this.textareaRef.current.focus()\n }, 1)\n }\n\n componentDidUpdate(prevProps: InputProps) {\n const { value, isGrowing } = this.props\n\n if (prevProps.value !== value)\n this.setState({\n inputValue: value,\n colorValue: value,\n })\n\n if (prevProps.type === 'CODE' && this.textareaRef.current !== null)\n this.textareaRef.current.scrollTop = 0\n if (this.textareaRef.current) {\n this.textareaRef.current.style.height = 'auto'\n if (isGrowing)\n this.textareaRef.current.style.height = `${this.textareaRef.current.scrollHeight + 2}px`\n }\n }\n\n // Handlers\n onPickColorValue = (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const { onPick } = this.props\n const value = e.target.value\n\n this.setState({\n inputValue: value,\n colorValue: value,\n lastValidColorValue: value,\n })\n if (onPick) onPick(e)\n }\n\n onChangeColorValue = (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const { onChange } = this.props\n\n this.setState({\n inputValue: e.target.value,\n })\n if (onChange) onChange(e)\n }\n\n onChangeNumber = (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const { onChange } = this.props\n\n this.setState({\n inputValue: e.target.value,\n })\n if (onChange) onChange(e)\n }\n\n onChangeText = (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const { onChange } = this.props\n\n this.setState({\n inputValue: e.target.value,\n })\n if (onChange) onChange(e)\n }\n\n onFocus = (e: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n const { value, onFocus, canBeEmpty, type } = this.props\n\n const shouldPreventEvent =\n (type === 'TEXT' || type === 'LONG_TEXT') &&\n !canBeEmpty &&\n value.trim() === ''\n\n if (onFocus && !shouldPreventEvent) onFocus(e)\n }\n\n onBlur = (e: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n const { shouldBlur, onBlur, canBeEmpty, type, min, max } = this.props\n const { inputValue, lastValidValue, lastValidColorValue } = this.state\n\n if (type === 'NUMBER') {\n const isEmpty = inputValue.trim() === ''\n let transformedValue\n\n if (parseFloat(inputValue) < parseFloat(min ?? '0'))\n transformedValue = min ?? '0'\n else if (parseFloat(inputValue) > parseFloat(max ?? '100'))\n transformedValue = max ?? '100'\n else if (isEmpty) {\n transformedValue = lastValidValue\n this.setState({\n inputValue: transformedValue,\n })\n } else transformedValue = inputValue\n\n this.setState({\n inputValue: transformedValue ?? inputValue,\n lastValidValue: transformedValue ?? inputValue,\n })\n\n if (\n (transformedValue !== lastValidValue && onBlur) ||\n (shouldBlur && onBlur)\n ) {\n const syntheticEvent = {\n ...e,\n target: {\n ...e.target,\n value: transformedValue,\n closest: e.target.closest?.bind(e.target),\n getAttribute: e.target.getAttribute?.bind(e.target),\n querySelector: e.target.querySelector?.bind(e.target),\n querySelectorAll: e.target.querySelectorAll?.bind(e.target),\n matches: e.target.matches?.bind(e.target),\n contains: e.target.contains?.bind(e.target),\n classList: e.target.classList,\n dataset: e.target.dataset,\n },\n currentTarget: {\n ...e.currentTarget,\n value: transformedValue,\n closest: e.currentTarget.closest?.bind(e.currentTarget),\n getAttribute: e.currentTarget.getAttribute?.bind(e.currentTarget),\n querySelector: e.currentTarget.querySelector?.bind(e.currentTarget),\n querySelectorAll: e.currentTarget.querySelectorAll?.bind(\n e.currentTarget\n ),\n matches: e.currentTarget.matches?.bind(e.currentTarget),\n contains: e.currentTarget.contains?.bind(e.currentTarget),\n classList: e.currentTarget.classList,\n dataset: e.currentTarget.dataset,\n },\n }\n\n onBlur(\n syntheticEvent as React.FocusEvent<\n HTMLInputElement | HTMLTextAreaElement\n >\n )\n\n return\n }\n }\n\n if (type === 'COLOR') {\n const transformedValue = this.transformColorCode(e.target.value)\n\n this.setState({\n inputValue: transformedValue,\n colorValue: transformedValue,\n lastValidColorValue: transformedValue,\n })\n\n if (\n (transformedValue !== lastValidColorValue && onBlur !== undefined) ||\n (shouldBlur && onBlur !== undefined)\n ) {\n const syntheticEvent = {\n ...e,\n target: {\n ...e.target,\n value: transformedValue,\n closest: e.target.closest?.bind(e.target),\n getAttribute: e.target.getAttribute?.bind(e.target),\n querySelector: e.target.querySelector?.bind(e.target),\n querySelectorAll: e.target.querySelectorAll?.bind(e.target),\n matches: e.target.matches?.bind(e.target),\n contains: e.target.contains?.bind(e.target),\n classList: e.target.classList,\n dataset: e.target.dataset,\n },\n currentTarget: {\n ...e.currentTarget,\n value: transformedValue,\n closest: e.currentTarget.closest?.bind(e.currentTarget),\n getAttribute: e.currentTarget.getAttribute?.bind(e.currentTarget),\n querySelector: e.currentTarget.querySelector?.bind(e.currentTarget),\n querySelectorAll: e.currentTarget.querySelectorAll?.bind(\n e.currentTarget\n ),\n matches: e.currentTarget.matches?.bind(e.currentTarget),\n contains: e.currentTarget.contains?.bind(e.currentTarget),\n classList: e.currentTarget.classList,\n dataset: e.currentTarget.dataset,\n },\n }\n\n onBlur(\n syntheticEvent as React.FocusEvent<\n HTMLInputElement | HTMLTextAreaElement\n >\n )\n\n return\n }\n }\n\n if (type === 'TEXT' || type === 'LONG_TEXT') {\n const isEmpty = inputValue.trim() === ''\n const shouldPreventEvent =\n (type === 'TEXT' || type === 'LONG_TEXT') && !canBeEmpty && isEmpty\n\n if (shouldPreventEvent) {\n this.setState({\n inputValue: lastValidValue,\n })\n return\n }\n\n this.setState({\n lastValidValue: inputValue,\n })\n\n if ((inputValue !== lastValidValue && onBlur) || (shouldBlur && onBlur)) {\n onBlur(e)\n\n return\n }\n }\n }\n\n // Direct Actions\n onValidText = (\n e: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const { onValid } = this.props\n const target = e.target as HTMLInputElement\n\n if (e.key === 'Enter') {\n if (onValid !== undefined) onValid(e)\n target.blur()\n } else if (e.key === 'Escape') target.blur()\n }\n\n onValidLongText = (\n e: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const { onValid } = this.props\n const target = e.target as HTMLInputElement\n\n if ((e.ctrlKey || e.metaKey) && e.key === 'Enter') {\n if (onValid !== undefined) onValid(e)\n target.blur()\n } else if (e.key === 'Escape') target.blur()\n }\n\n onValidNumber = (\n e: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const { min, max, step, onShift } = this.props\n const { inputValue } = this.state\n const target = e.target as HTMLInputElement\n\n let nudge = 0\n\n if (e.key === 'ArrowUp') {\n if (e.shiftKey) nudge = 9\n const v =\n parseFloat(inputValue) + nudge < parseFloat(max ?? '100')\n ? (\n parseFloat(inputValue) +\n nudge * parseFloat(step === undefined ? '1' : step)\n ).toString()\n : (max ?? '100')\n\n this.setState({\n inputValue: v,\n lastValidValue: v,\n })\n if (parseFloat(inputValue) + nudge < parseFloat(max ?? '100'))\n onShift?.(e)\n } else if (e.key === 'ArrowDown') {\n if (e.shiftKey) nudge = 9\n const v =\n parseFloat(inputValue) - nudge > parseFloat(min ?? '0')\n ? (\n parseFloat(inputValue) -\n nudge * parseFloat(step === undefined ? '1' : step)\n ).toString()\n : (min ?? '0')\n this.setState({\n inputValue: v,\n lastValidValue: v,\n })\n if (parseFloat(inputValue) - nudge > parseFloat(min ?? '0')) onShift?.(e)\n } else if (e.key === 'Enter' || e.key === 'Escape') {\n if (parseFloat(inputValue) < parseFloat(min ?? '0'))\n this.setState({\n inputValue: min ?? '0',\n })\n else if (parseFloat(inputValue) > parseFloat(max ?? '100'))\n this.setState({\n inputValue: max ?? '100',\n })\n\n target.blur()\n }\n }\n\n onValidColor = (\n e: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const { onValid } = this.props\n const target = e.target as HTMLInputElement\n\n if (e.key === 'Enter') {\n if (onValid !== undefined) onValid(e)\n target.blur()\n } else if (e.key === 'Escape') target.blur()\n }\n\n doClear = () => this.setState({ inputValue: '' })\n\n onGrab = () => {\n if (this.inputRef.current) this.inputRef.current.focus()\n document.addEventListener('mousemove', this.onDrag)\n }\n\n onDrag = (e: MouseEvent) => {\n if (this.inputRef.current) this.inputRef.current.focus()\n const { min, max, onSlide } = this.props\n const { inputValue } = this.state\n\n const nMin = parseFloat(min ?? '0')\n const nMax = parseFloat(max ?? '100')\n const nValue = parseFloat(inputValue)\n const delta = nValue + e.movementX\n\n if (delta >= nMin && delta <= nMax) {\n this.setState({\n inputValue: delta.toString(),\n })\n if (this.inputRef.current) {\n const event = new Event('input', { bubbles: true })\n Object.defineProperty(event, 'target', {\n value: this.inputRef.current,\n enumerable: true,\n })\n Object.defineProperty(event, 'currentTarget', {\n value: this.inputRef.current,\n enumerable: true,\n })\n onSlide?.(event as unknown as React.ChangeEvent<HTMLInputElement>)\n }\n }\n\n document.body.style.setProperty('cursor', 'ew-resize', 'important')\n this.inputRef.current?.style.setProperty('cursor', 'ew-resize', 'important')\n document.addEventListener('mouseup', () => {\n document.removeEventListener('mousemove', this.onDrag)\n document.body.style.cursor = ''\n if (this.inputRef.current) this.inputRef.current.style.cursor = ''\n })\n }\n\n transformColorCode = (colorCode: string): string => {\n const { lastValidColorValue } = this.state\n\n const inputWithoutHash = colorCode.startsWith('#')\n ? colorCode.substring(1)\n : colorCode\n\n const validChars = inputWithoutHash\n .toLowerCase()\n .split('')\n .filter((char) => /[0-9a-f]/i.test(char))\n\n if (validChars.length === 0) return lastValidColorValue\n\n if (validChars.length >= 6) return `#${validChars.slice(0, 6).join('')}`\n\n let result = ''\n\n switch (validChars.length) {\n case 1:\n result = validChars[0].repeat(6)\n break\n\n case 2:\n result = `${validChars.join('')}`.repeat(3)\n break\n\n case 3:\n result = `${validChars[0]}${validChars[0]}${validChars[1]}${validChars[1]}${validChars[2]}${validChars[2]}`\n break\n\n case 4:\n result = `${validChars[0]}${validChars[0]}${validChars[1]}${validChars[1]}${validChars[2]}${validChars[2]}`\n break\n\n case 5:\n result = `${validChars[0]}${validChars[0]}${validChars[1]}${validChars[1]}${validChars[2]}${validChars[2]}`\n break\n\n default:\n result = validChars.slice(0, 6).join('')\n }\n\n result.indexOf('#') !== 0 && (result = `#${result}`)\n\n return result.toLowerCase()\n }\n\n // Templates\n Status = () => {\n const { warning, preview, isBlocked, isNew, onUnblock } = this.props\n\n if (warning || isBlocked || isNew)\n return (\n <div className=\"input__status\">\n {warning !== undefined && (\n <IconChip\n iconType=\"PICTO\"\n iconName=\"warning\"\n text={warning.label}\n pin={warning.pin}\n type={warning.type}\n />\n )}\n {(isBlocked || isNew) && (\n <Chip\n preview={preview}\n isSolo\n action={isBlocked ? onUnblock : undefined}\n >\n {isNew ? 'New' : 'Pro'}\n </Chip>\n )}\n </div>\n )\n }\n\n Color = () => {\n const { id, feature, helper, isBlocked, isDisabled, onBlur } = this.props\n const { inputValue, colorValue, isTooltipVisible } = this.state\n\n return (\n <div\n className={doClassnames([\n 'input',\n 'input--color',\n 'input--with-color',\n isBlocked && 'input--blocked',\n ])}\n role=\"group\"\n >\n <div\n className=\"input__wrapper\"\n onMouseEnter={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: true })\n }}\n onMouseLeave={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: false })\n }}\n >\n <input\n id={id}\n data-feature={feature}\n type=\"color\"\n className=\"input__color\"\n value={colorValue}\n disabled={isDisabled || isBlocked}\n aria-label=\"Color picker\"\n aria-disabled={isDisabled || isBlocked}\n onChange={\n !(isDisabled || isBlocked) ? this.onPickColorValue : undefined\n }\n onBlur={!(isDisabled || isBlocked) ? onBlur : undefined}\n ref={this.inputRef}\n />\n <input\n role=\"textbox\"\n id={id}\n data-feature={feature}\n type=\"text\"\n className=\"input__field\"\n value={inputValue.toUpperCase().replace('#', '')}\n maxLength={7}\n disabled={isDisabled || isBlocked}\n aria-label=\"Hex color code\"\n aria-disabled={isDisabled || isBlocked}\n onChange={\n !(isDisabled || isBlocked) ? this.onChangeColorValue : undefined\n }\n onFocus={(e) => {\n e.target.select()\n this.onFocus(e)\n }}\n onKeyDown={\n !(isDisabled || isBlocked) ? this.onValidColor : undefined\n }\n onBlur={!(isDisabled || isBlocked) ? this.onBlur : undefined}\n ref={this.inputRef}\n />\n {isTooltipVisible && helper !== undefined && (\n <Tooltip\n pin={helper?.pin || 'BOTTOM'}\n type={helper?.type || 'SINGLE_LINE'}\n >\n {helper?.label}\n </Tooltip>\n )}\n </div>\n {this.Status()}\n </div>\n )\n }\n\n Number = () => {\n const {\n id,\n icon,\n unit,\n min,\n max,\n step,\n helper,\n feature,\n isBlocked,\n isDisabled,\n isFlex,\n onSlide,\n } = this.props\n const { inputValue, isTooltipVisible } = this.state\n\n return (\n <div\n className={doClassnames([\n 'input',\n 'input--number',\n icon !== undefined && 'input--with-icon',\n isFlex && 'input--flex',\n isBlocked && 'input--blocked',\n ])}\n role=\"group\"\n >\n <div\n className=\"input__wrapper\"\n onMouseEnter={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: true })\n }}\n onMouseLeave={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: false })\n }}\n >\n {icon !== undefined && (\n <div\n className=\"input__icon\"\n style={{\n cursor:\n typeof onSlide === 'function' && !(isDisabled || isBlocked)\n ? 'ew-resize'\n : 'default',\n }}\n onMouseDown={() => {\n if (typeof onSlide === 'function' && !(isDisabled || isBlocked))\n this.onGrab()\n }}\n >\n <Icon\n type={icon?.type}\n iconName={icon?.value}\n iconLetter={icon?.value}\n />\n </div>\n )}\n <input\n role=\"spinbutton\"\n id={id}\n data-feature={feature}\n type=\"number\"\n className={doClassnames([\n 'input__field',\n isFlex && 'input__field--flex',\n unit !== undefined && 'input__field--unit',\n ])}\n value={inputValue}\n min={min}\n max={max}\n step={step}\n disabled={isDisabled || isBlocked}\n aria-label={`Number input${unit ? ` in ${unit}` : ''}${icon ? ` with ${icon.value} icon` : ''}`}\n aria-valuemin={min ? parseFloat(min) : undefined}\n aria-valuemax={max ? parseFloat(max) : undefined}\n aria-valuenow={parseFloat(inputValue)}\n aria-disabled={isDisabled || isBlocked}\n onKeyDown={\n !(isDisabled || isBlocked) ? this.onValidNumber : undefined\n }\n onChange={\n !(isDisabled || isBlocked) ? this.onChangeNumber : undefined\n }\n onFocus={(e) => {\n e.target.select()\n if (!(isDisabled || isBlocked)) this.onFocus(e)\n }}\n onBlur={!(isDisabled || isBlocked) ? this.onBlur : undefined}\n ref={this.inputRef}\n />\n {unit !== undefined && (\n <div className=\"input__unit\">\n <Icon\n type={'LETTER'}\n iconLetter={unit}\n />\n </div>\n )}\n {isTooltipVisible && helper !== undefined && (\n <Tooltip\n pin={helper?.pin || 'BOTTOM'}\n type={helper?.type || 'SINGLE_LINE'}\n >\n {helper?.label}\n </Tooltip>\n )}\n </div>\n {this.Status()}\n </div>\n )\n }\n\n Text = () => {\n const {\n id,\n icon,\n state,\n placeholder,\n charactersLimit,\n helper,\n feature,\n isClearable,\n isFlex,\n isFramed,\n isBlocked,\n isDisabled,\n onClear,\n } = this.props\n const { inputValue, isTooltipVisible } = this.state\n\n return (\n <div\n className={doClassnames([\n 'input',\n 'input--short-text',\n icon !== undefined && 'input--with-icon',\n isFlex && 'input__field--flex',\n isBlocked && 'input--blocked',\n ])}\n role=\"group\"\n >\n <div\n className=\"input__wrapper\"\n onMouseEnter={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: true })\n }}\n onMouseLeave={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: false })\n }}\n >\n {icon !== undefined && (\n <div className=\"input__icon\">\n <Icon\n type={icon?.type}\n iconName={icon?.value}\n iconLetter={icon?.value}\n />\n </div>\n )}\n <input\n role=\"textbox\"\n id={id}\n data-feature={feature}\n type=\"text\"\n className={doClassnames([\n 'input__field',\n !isFramed && 'input__field--no-frame',\n isClearable && inputValue.length > 0 && 'input__field--clearable',\n state === 'ERROR' && 'input__field--error',\n ])}\n placeholder={placeholder}\n value={inputValue}\n maxLength={charactersLimit}\n disabled={isDisabled || isBlocked}\n aria-label={placeholder || 'Text input'}\n aria-invalid={state === 'ERROR'}\n aria-disabled={isDisabled || isBlocked}\n onKeyDown={\n !(isDisabled || isBlocked) ? this.onValidText : undefined\n }\n onChange={\n !(isDisabled || isBlocked) ? this.onChangeText : undefined\n }\n onFocus={!(isDisabled || isBlocked) ? this.onFocus : undefined}\n onBlur={!(isDisabled || isBlocked) ? this.onBlur : undefined}\n ref={this.inputRef}\n ></input>\n {isClearable &&\n inputValue.length > 0 &&\n !(isDisabled || isBlocked) && (\n <div className=\"input__clear\">\n <Button\n type=\"icon\"\n size=\"small\"\n icon=\"close\"\n action={() => {\n this.setState({ inputValue: '' })\n if (onClear !== undefined) onClear('')\n }}\n />\n </div>\n )}\n {isTooltipVisible && helper !== undefined && (\n <Tooltip\n pin={helper?.pin || 'BOTTOM'}\n type={helper?.type || 'SINGLE_LINE'}\n >\n {helper?.label}\n </Tooltip>\n )}\n </div>\n {this.Status()}\n </div>\n )\n }\n\n LongText = () => {\n const { id, state, placeholder, helper, feature, isBlocked, isDisabled } =\n this.props\n const { inputValue, isTooltipVisible } = this.state\n\n return (\n <div\n className={doClassnames([\n 'input',\n 'input--long-text',\n isBlocked && 'input--blocked',\n ])}\n role=\"group\"\n >\n <div\n className=\"input__wrapper\"\n onMouseEnter={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: true })\n }}\n onMouseLeave={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: false })\n }}\n >\n <textarea\n role=\"textbox\"\n id={id}\n data-feature={feature}\n className={doClassnames([\n 'textarea',\n 'input__field',\n state === 'ERROR' && 'input__field--error',\n ])}\n rows={1}\n placeholder={placeholder}\n value={inputValue}\n disabled={isDisabled || isBlocked}\n aria-label={placeholder || 'Long text input'}\n aria-invalid={state === 'ERROR'}\n aria-disabled={isDisabled || isBlocked}\n onKeyDown={\n !(isDisabled || isBlocked) ? this.onValidLongText : undefined\n }\n onChange={\n !(isDisabled || isBlocked) ? this.onChangeText : undefined\n }\n onFocus={!(isDisabled || isBlocked) ? this.onFocus : undefined}\n onBlur={!(isDisabled || isBlocked) ? this.onBlur : undefined}\n ref={this.textareaRef}\n />\n {isTooltipVisible && helper !== undefined && (\n <Tooltip\n pin={helper?.pin || 'BOTTOM'}\n type={helper?.type || 'SINGLE_LINE'}\n >\n {helper?.label}\n </Tooltip>\n )}\n </div>\n {this.Status()}\n </div>\n )\n }\n\n CodeSnippet = () => {\n const { id, value, helper, feature, isBlocked, isDisabled } = this.props\n\n return (\n <div\n className={doClassnames([\n 'input',\n 'input--code',\n isBlocked && 'input--blocked',\n ])}\n role=\"group\"\n >\n <div\n className=\"input__wrapper\"\n onMouseEnter={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: true })\n }}\n onMouseLeave={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: false })\n }}\n >\n <textarea\n role=\"textbox\"\n id={id}\n data-feature={feature}\n className={doClassnames([\n 'textarea',\n 'input__field',\n 'textarea--monospace',\n ])}\n value={value}\n disabled={isDisabled || isBlocked}\n aria-label={'Code snippet'}\n aria-disabled={isDisabled || isBlocked}\n onChange={\n !(isDisabled || isBlocked) ? this.onChangeText : undefined\n }\n onFocus={(e) => e.target.select()}\n onBlur={() => window.getSelection()?.removeAllRanges()}\n readOnly\n ref={this.textareaRef}\n />\n </div>\n {this.Status()}\n </div>\n )\n }\n\n // Render\n render() {\n const { type } = this.props\n\n if (type === 'NUMBER') return this.Number()\n if (type === 'COLOR') return this.Color()\n if (type === 'LONG_TEXT') return this.LongText()\n if (type === 'CODE') return this.CodeSnippet()\n return this.Text()\n }\n}\n"],"names":["Input","React","props","isGrowing","isAutoFocus","prevProps","value","e","onPick","onChange","onFocus","canBeEmpty","type","shouldPreventEvent","shouldBlur","onBlur","min","max","inputValue","lastValidValue","lastValidColorValue","isEmpty","transformedValue","syntheticEvent","onValid","target","step","onShift","nudge","v","onSlide","nMin","nMax","delta","event","colorCode","validChars","char","result","warning","preview","isBlocked","isNew","onUnblock","jsxs","jsx","IconChip","Chip","id","feature","helper","isDisabled","colorValue","isTooltipVisible","doClassnames","Tooltip","icon","unit","isFlex","Icon","state","placeholder","charactersLimit","isClearable","isFramed","onClear","Button"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Input.js","sources":["../../../../src/components/inputs/input/Input.tsx"],"sourcesContent":["import React from 'react'\nimport { doClassnames } from '@unoff/utils'\nimport Tooltip from '@components/tags/tooltip/Tooltip'\nimport IconChip from '@components/tags/icon-chip/IconChip'\nimport Chip from '@components/tags/chip/Chip'\nimport Icon from '@components/assets/icon/Icon'\nimport Button from '@components/actions/button/Button'\nimport type { IconList } from '@tps/icon.types'\nimport './input.scss'\n\nexport interface InputProps {\n /**\n * HTML id attribute\n */\n id?: string\n /**\n * Type of input\n */\n type: 'NUMBER' | 'COLOR' | 'TEXT' | 'LONG_TEXT' | 'CODE'\n /**\n * Icon configuration to display in the input\n */\n icon?: { type: 'LETTER' | 'PICTO'; value: IconList }\n /**\n * Unit suffix to display (% or °)\n */\n unit?: '%' | '°'\n /**\n * Visual state of the input\n * @default 'DEFAULT'\n */\n state?: 'DEFAULT' | 'ERROR'\n /**\n * Placeholder text\n */\n placeholder?: string\n /**\n * Current value of the input\n */\n value: string\n /**\n * Maximum number of characters allowed\n */\n charactersLimit?: number\n /**\n * Minimum value (for NUMBER type)\n */\n min?: string\n /**\n * Maximum value (for NUMBER type)\n */\n max?: string\n /**\n * Step value (for NUMBER type)\n */\n step?: string\n /**\n * Helper tooltip configuration\n */\n helper?: {\n /** Tooltip content */\n label: string | React.ReactNode\n /** Tooltip position */\n pin?: 'TOP' | 'BOTTOM'\n /** Tooltip display type */\n type?: 'MULTI_LINE' | 'SINGLE_LINE'\n }\n /**\n * Preview tooltip configuration with image\n */\n preview?: {\n /** Preview image URL */\n image: string\n /** Preview text */\n text: string | React.ReactNode\n /** Preview position */\n pin?: 'TOP' | 'BOTTOM'\n }\n /**\n * Warning tooltip configuration\n */\n warning?: {\n /** Warning message */\n label: string | React.ReactNode\n /** Warning position */\n pin?: 'TOP' | 'BOTTOM'\n /** Warning display type */\n type?: 'MULTI_LINE' | 'SINGLE_LINE'\n }\n /**\n * Feature identifier for tracking\n */\n feature?: string\n /**\n * Whether to blur the input after interaction\n */\n shouldBlur?: boolean\n /**\n * Whether to auto-focus on mount\n */\n isAutoFocus?: boolean\n /**\n * Whether the textarea should grow with content\n */\n isGrowing?: boolean\n /**\n * Whether to use flex layout\n */\n isFlex?: boolean\n /**\n * Whether to show a clear button\n */\n isClearable?: boolean\n /**\n * Whether to show a frame border\n */\n isFramed?: boolean\n /**\n * Whether the input can be empty\n */\n canBeEmpty?: boolean\n /**\n * Whether the input is blocked\n */\n isBlocked?: boolean\n /**\n * Whether the input is disabled\n */\n isDisabled?: boolean\n /**\n * Whether to show a \"New\" badge\n */\n isNew?: boolean\n /**\n * Change event handler\n */\n onChange?: React.ChangeEventHandler<HTMLInputElement | HTMLTextAreaElement>\n /**\n * Focus event handler\n */\n onFocus?: React.ChangeEventHandler<HTMLInputElement | HTMLTextAreaElement>\n /**\n * Blur event handler\n */\n onBlur?: React.ChangeEventHandler<HTMLInputElement | HTMLTextAreaElement>\n /**\n * Keyboard shift handler\n */\n onShift?: React.KeyboardEventHandler<HTMLInputElement | HTMLTextAreaElement>\n /**\n * Clear button handler\n */\n onClear?: (value: string) => void\n /**\n * Slider change handler (for NUMBER type)\n */\n onSlide?: React.ChangeEventHandler<HTMLInputElement | HTMLTextAreaElement>\n /**\n * Validation handler\n */\n onValid?: React.KeyboardEventHandler<HTMLInputElement | HTMLTextAreaElement>\n /**\n * Color picker handler (for COLOR type)\n */\n onPick?: React.ChangeEventHandler<HTMLInputElement | HTMLTextAreaElement>\n /**\n * Handler called when unblock is clicked\n */\n onUnblock?: React.MouseEventHandler & React.KeyboardEventHandler\n}\n\nexport interface InputState {\n inputValue: string\n lastValidValue: string\n lastValidColorValue: string\n colorValue: string\n isTooltipVisible: boolean\n}\n\nexport default class Input extends React.Component<InputProps, InputState> {\n inputRef: React.RefObject<HTMLInputElement>\n textareaRef: React.RefObject<HTMLTextAreaElement>\n\n static defaultProps: Partial<InputProps> = {\n icon: undefined,\n state: 'DEFAULT',\n step: '1',\n shouldBlur: false,\n isClearable: false,\n isFramed: true,\n canBeEmpty: true,\n isBlocked: false,\n isDisabled: false,\n isNew: false,\n isAutoFocus: false,\n isGrowing: false,\n isFlex: false,\n }\n\n constructor(props: InputProps) {\n super(props)\n this.state = {\n inputValue: props.value,\n lastValidValue: props.value,\n colorValue: props.value,\n lastValidColorValue: props.value,\n isTooltipVisible: false,\n }\n this.inputRef = React.createRef()\n this.textareaRef = React.createRef()\n }\n\n componentDidMount(): void {\n const { isGrowing } = this.props\n\n if (this.textareaRef.current) {\n this.textareaRef.current.style.height = 'auto'\n if (isGrowing)\n this.textareaRef.current.style.height = `${this.textareaRef.current.scrollHeight + 2}px`\n }\n const { isAutoFocus } = this.props\n if (isAutoFocus)\n setTimeout(() => {\n if (this.inputRef.current) this.inputRef.current.focus()\n else if (this.textareaRef.current) this.textareaRef.current.focus()\n }, 1)\n }\n\n componentDidUpdate(prevProps: InputProps) {\n const { value, isGrowing } = this.props\n\n if (prevProps.value !== value)\n this.setState({\n inputValue: value,\n colorValue: value,\n })\n\n if (prevProps.type === 'CODE' && this.textareaRef.current !== null)\n this.textareaRef.current.scrollTop = 0\n if (this.textareaRef.current) {\n this.textareaRef.current.style.height = 'auto'\n if (isGrowing)\n this.textareaRef.current.style.height = `${this.textareaRef.current.scrollHeight + 2}px`\n }\n }\n\n // Handlers\n onPickColorValue = (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const { onPick } = this.props\n const value = e.target.value\n\n this.setState({\n inputValue: value,\n colorValue: value,\n lastValidColorValue: value,\n })\n if (onPick) onPick(e)\n }\n\n onChangeColorValue = (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const { onChange } = this.props\n\n this.setState({\n inputValue: e.target.value,\n })\n if (onChange) onChange(e)\n }\n\n onChangeNumber = (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const { onChange } = this.props\n\n this.setState({\n inputValue: e.target.value,\n })\n if (onChange) onChange(e)\n }\n\n onChangeText = (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const { onChange } = this.props\n\n this.setState({\n inputValue: e.target.value,\n })\n if (onChange) onChange(e)\n }\n\n onFocus = (e: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n const { value, onFocus, canBeEmpty, type } = this.props\n\n const shouldPreventEvent =\n (type === 'TEXT' || type === 'LONG_TEXT') &&\n !canBeEmpty &&\n value.trim() === ''\n\n if (onFocus && !shouldPreventEvent) onFocus(e)\n }\n\n onBlur = (e: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n const { shouldBlur, onBlur, canBeEmpty, type, min, max } = this.props\n const { inputValue, lastValidValue, lastValidColorValue } = this.state\n\n if (type === 'NUMBER') {\n const isEmpty = inputValue.trim() === ''\n let transformedValue\n\n if (parseFloat(inputValue) < parseFloat(min ?? '0'))\n transformedValue = min ?? '0'\n else if (parseFloat(inputValue) > parseFloat(max ?? '100'))\n transformedValue = max ?? '100'\n else if (isEmpty) {\n transformedValue = lastValidValue\n this.setState({\n inputValue: transformedValue,\n })\n } else transformedValue = inputValue\n\n this.setState({\n inputValue: transformedValue ?? inputValue,\n lastValidValue: transformedValue ?? inputValue,\n })\n\n if (\n (transformedValue !== lastValidValue && onBlur) ||\n (shouldBlur && onBlur)\n ) {\n const syntheticEvent = {\n ...e,\n target: {\n ...e.target,\n value: transformedValue,\n closest: e.target.closest?.bind(e.target),\n getAttribute: e.target.getAttribute?.bind(e.target),\n querySelector: e.target.querySelector?.bind(e.target),\n querySelectorAll: e.target.querySelectorAll?.bind(e.target),\n matches: e.target.matches?.bind(e.target),\n contains: e.target.contains?.bind(e.target),\n classList: e.target.classList,\n dataset: e.target.dataset,\n },\n currentTarget: {\n ...e.currentTarget,\n value: transformedValue,\n closest: e.currentTarget.closest?.bind(e.currentTarget),\n getAttribute: e.currentTarget.getAttribute?.bind(e.currentTarget),\n querySelector: e.currentTarget.querySelector?.bind(e.currentTarget),\n querySelectorAll: e.currentTarget.querySelectorAll?.bind(\n e.currentTarget\n ),\n matches: e.currentTarget.matches?.bind(e.currentTarget),\n contains: e.currentTarget.contains?.bind(e.currentTarget),\n classList: e.currentTarget.classList,\n dataset: e.currentTarget.dataset,\n },\n }\n\n onBlur(\n syntheticEvent as React.FocusEvent<\n HTMLInputElement | HTMLTextAreaElement\n >\n )\n\n return\n }\n }\n\n if (type === 'COLOR') {\n const transformedValue = this.transformColorCode(e.target.value)\n\n this.setState({\n inputValue: transformedValue,\n colorValue: transformedValue,\n lastValidColorValue: transformedValue,\n })\n\n if (\n (transformedValue !== lastValidColorValue && onBlur !== undefined) ||\n (shouldBlur && onBlur !== undefined)\n ) {\n const syntheticEvent = {\n ...e,\n target: {\n ...e.target,\n value: transformedValue,\n closest: e.target.closest?.bind(e.target),\n getAttribute: e.target.getAttribute?.bind(e.target),\n querySelector: e.target.querySelector?.bind(e.target),\n querySelectorAll: e.target.querySelectorAll?.bind(e.target),\n matches: e.target.matches?.bind(e.target),\n contains: e.target.contains?.bind(e.target),\n classList: e.target.classList,\n dataset: e.target.dataset,\n },\n currentTarget: {\n ...e.currentTarget,\n value: transformedValue,\n closest: e.currentTarget.closest?.bind(e.currentTarget),\n getAttribute: e.currentTarget.getAttribute?.bind(e.currentTarget),\n querySelector: e.currentTarget.querySelector?.bind(e.currentTarget),\n querySelectorAll: e.currentTarget.querySelectorAll?.bind(\n e.currentTarget\n ),\n matches: e.currentTarget.matches?.bind(e.currentTarget),\n contains: e.currentTarget.contains?.bind(e.currentTarget),\n classList: e.currentTarget.classList,\n dataset: e.currentTarget.dataset,\n },\n }\n\n onBlur(\n syntheticEvent as React.FocusEvent<\n HTMLInputElement | HTMLTextAreaElement\n >\n )\n\n return\n }\n }\n\n if (type === 'TEXT' || type === 'LONG_TEXT') {\n const isEmpty = inputValue.trim() === ''\n const shouldPreventEvent =\n (type === 'TEXT' || type === 'LONG_TEXT') && !canBeEmpty && isEmpty\n\n if (shouldPreventEvent) {\n this.setState({\n inputValue: lastValidValue,\n })\n return\n }\n\n this.setState({\n lastValidValue: inputValue,\n })\n\n if ((inputValue !== lastValidValue && onBlur) || (shouldBlur && onBlur)) {\n onBlur(e)\n\n return\n }\n }\n }\n\n // Direct Actions\n onValidText = (\n e: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const { onValid } = this.props\n const target = e.target as HTMLInputElement\n\n if (e.key === 'Enter') {\n if (onValid !== undefined) onValid(e)\n target.blur()\n } else if (e.key === 'Escape') target.blur()\n }\n\n onValidLongText = (\n e: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const { onValid } = this.props\n const target = e.target as HTMLInputElement\n\n if ((e.ctrlKey || e.metaKey) && e.key === 'Enter') {\n if (onValid !== undefined) onValid(e)\n target.blur()\n } else if (e.key === 'Escape') target.blur()\n }\n\n onValidNumber = (\n e: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const { min, max, step, onShift } = this.props\n const { inputValue } = this.state\n const target = e.target as HTMLInputElement\n\n let nudge = 0\n\n if (e.key === 'ArrowUp') {\n if (e.shiftKey) nudge = 9\n const v =\n parseFloat(inputValue) + nudge < parseFloat(max ?? '100')\n ? (\n parseFloat(inputValue) +\n nudge * parseFloat(step === undefined ? '1' : step)\n ).toString()\n : (max ?? '100')\n\n this.setState({\n inputValue: v,\n lastValidValue: v,\n })\n if (parseFloat(inputValue) + nudge < parseFloat(max ?? '100'))\n onShift?.(e)\n } else if (e.key === 'ArrowDown') {\n if (e.shiftKey) nudge = 9\n const v =\n parseFloat(inputValue) - nudge > parseFloat(min ?? '0')\n ? (\n parseFloat(inputValue) -\n nudge * parseFloat(step === undefined ? '1' : step)\n ).toString()\n : (min ?? '0')\n this.setState({\n inputValue: v,\n lastValidValue: v,\n })\n if (parseFloat(inputValue) - nudge > parseFloat(min ?? '0')) onShift?.(e)\n } else if (e.key === 'Enter' || e.key === 'Escape') {\n if (parseFloat(inputValue) < parseFloat(min ?? '0'))\n this.setState({\n inputValue: min ?? '0',\n })\n else if (parseFloat(inputValue) > parseFloat(max ?? '100'))\n this.setState({\n inputValue: max ?? '100',\n })\n\n target.blur()\n }\n }\n\n onValidColor = (\n e: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const { onValid } = this.props\n const target = e.target as HTMLInputElement\n\n if (e.key === 'Enter') {\n if (onValid !== undefined) onValid(e)\n target.blur()\n } else if (e.key === 'Escape') target.blur()\n }\n\n doClear = () => this.setState({ inputValue: '' })\n\n onGrab = () => {\n if (this.inputRef.current) this.inputRef.current.focus()\n document.addEventListener('mousemove', this.onDrag)\n }\n\n onDrag = (e: MouseEvent) => {\n if (this.inputRef.current) this.inputRef.current.focus()\n const { min, max, onSlide } = this.props\n const { inputValue } = this.state\n\n const nMin = parseFloat(min ?? '0')\n const nMax = parseFloat(max ?? '100')\n const nValue = parseFloat(inputValue)\n const delta = nValue + e.movementX\n\n if (delta >= nMin && delta <= nMax) {\n this.setState({\n inputValue: delta.toString(),\n })\n if (this.inputRef.current) {\n const event = new Event('input', { bubbles: true })\n Object.defineProperty(event, 'target', {\n value: this.inputRef.current,\n enumerable: true,\n })\n Object.defineProperty(event, 'currentTarget', {\n value: this.inputRef.current,\n enumerable: true,\n })\n onSlide?.(event as unknown as React.ChangeEvent<HTMLInputElement>)\n }\n }\n\n document.body.style.setProperty('cursor', 'ew-resize', 'important')\n this.inputRef.current?.style.setProperty('cursor', 'ew-resize', 'important')\n document.addEventListener('mouseup', () => {\n document.removeEventListener('mousemove', this.onDrag)\n document.body.style.cursor = ''\n if (this.inputRef.current) this.inputRef.current.style.cursor = ''\n })\n }\n\n transformColorCode = (colorCode: string): string => {\n const { lastValidColorValue } = this.state\n\n const inputWithoutHash = colorCode.startsWith('#')\n ? colorCode.substring(1)\n : colorCode\n\n const validChars = inputWithoutHash\n .toLowerCase()\n .split('')\n .filter((char) => /[0-9a-f]/i.test(char))\n\n if (validChars.length === 0) return lastValidColorValue\n\n if (validChars.length >= 6) return `#${validChars.slice(0, 6).join('')}`\n\n let result = ''\n\n switch (validChars.length) {\n case 1:\n result = validChars[0].repeat(6)\n break\n\n case 2:\n result = `${validChars.join('')}`.repeat(3)\n break\n\n case 3:\n result = `${validChars[0]}${validChars[0]}${validChars[1]}${validChars[1]}${validChars[2]}${validChars[2]}`\n break\n\n case 4:\n result = `${validChars[0]}${validChars[0]}${validChars[1]}${validChars[1]}${validChars[2]}${validChars[2]}`\n break\n\n case 5:\n result = `${validChars[0]}${validChars[0]}${validChars[1]}${validChars[1]}${validChars[2]}${validChars[2]}`\n break\n\n default:\n result = validChars.slice(0, 6).join('')\n }\n\n result.indexOf('#') !== 0 && (result = `#${result}`)\n\n return result.toLowerCase()\n }\n\n // Templates\n Status = () => {\n const { warning, preview, isBlocked, isNew, onUnblock } = this.props\n\n if (warning || isBlocked || isNew)\n return (\n <div className=\"input__status\">\n {warning !== undefined && (\n <IconChip\n iconType=\"PICTO\"\n iconName=\"warning\"\n text={warning.label}\n pin={warning.pin}\n type={warning.type}\n />\n )}\n {(isBlocked || isNew) && (\n <Chip\n preview={preview}\n isSolo\n action={isBlocked ? onUnblock : undefined}\n >\n {isNew ? 'New' : 'Pro'}\n </Chip>\n )}\n </div>\n )\n }\n\n Color = () => {\n const { id, feature, helper, isBlocked, isDisabled, onBlur } = this.props\n const { inputValue, colorValue, isTooltipVisible } = this.state\n\n return (\n <div\n className={doClassnames([\n 'input',\n 'input--color',\n 'input--with-color',\n isBlocked && 'input--blocked',\n ])}\n role=\"group\"\n >\n <div\n className=\"input__wrapper\"\n onMouseEnter={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: true })\n }}\n onMouseLeave={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: false })\n }}\n >\n <input\n id={id}\n data-feature={feature}\n type=\"color\"\n className=\"input__color\"\n value={colorValue}\n disabled={isDisabled || isBlocked}\n aria-label=\"Color picker\"\n aria-disabled={isDisabled || isBlocked}\n onChange={\n !(isDisabled || isBlocked) ? this.onPickColorValue : undefined\n }\n onBlur={!(isDisabled || isBlocked) ? onBlur : undefined}\n ref={this.inputRef}\n />\n <input\n role=\"textbox\"\n id={id}\n data-feature={feature}\n type=\"text\"\n className=\"input__field\"\n value={inputValue.toUpperCase().replace('#', '')}\n maxLength={7}\n disabled={isDisabled || isBlocked}\n aria-label=\"Hex color code\"\n aria-disabled={isDisabled || isBlocked}\n onChange={\n !(isDisabled || isBlocked) ? this.onChangeColorValue : undefined\n }\n onFocus={(e) => {\n e.target.select()\n this.onFocus(e)\n }}\n onKeyDown={\n !(isDisabled || isBlocked) ? this.onValidColor : undefined\n }\n onBlur={!(isDisabled || isBlocked) ? this.onBlur : undefined}\n ref={this.inputRef}\n />\n {isTooltipVisible && helper !== undefined && (\n <Tooltip\n pin={helper?.pin || 'BOTTOM'}\n type={helper?.type || 'SINGLE_LINE'}\n >\n {helper?.label}\n </Tooltip>\n )}\n </div>\n {this.Status()}\n </div>\n )\n }\n\n Number = () => {\n const {\n id,\n icon,\n unit,\n min,\n max,\n step,\n helper,\n feature,\n isBlocked,\n isDisabled,\n isFlex,\n onSlide,\n } = this.props\n const { inputValue, isTooltipVisible } = this.state\n\n return (\n <div\n className={doClassnames([\n 'input',\n 'input--number',\n icon !== undefined && 'input--with-icon',\n isFlex && 'input--flex',\n isBlocked && 'input--blocked',\n ])}\n role=\"group\"\n >\n <div\n className=\"input__wrapper\"\n onMouseEnter={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: true })\n }}\n onMouseLeave={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: false })\n }}\n >\n {icon !== undefined && (\n <div\n className=\"input__icon\"\n style={{\n cursor:\n typeof onSlide === 'function' && !(isDisabled || isBlocked)\n ? 'ew-resize'\n : 'default',\n }}\n onMouseDown={() => {\n if (typeof onSlide === 'function' && !(isDisabled || isBlocked))\n this.onGrab()\n }}\n >\n <Icon\n type={icon?.type}\n iconName={icon?.value}\n iconLetter={icon?.value}\n />\n </div>\n )}\n <input\n role=\"spinbutton\"\n id={id}\n data-feature={feature}\n type=\"number\"\n className={doClassnames([\n 'input__field',\n isFlex && 'input__field--flex',\n unit !== undefined && 'input__field--unit',\n ])}\n value={inputValue}\n min={min}\n max={max}\n step={step}\n disabled={isDisabled || isBlocked}\n aria-label={`Number input${unit ? ` in ${unit}` : ''}${icon ? ` with ${icon.value} icon` : ''}`}\n aria-valuemin={min ? parseFloat(min) : undefined}\n aria-valuemax={max ? parseFloat(max) : undefined}\n aria-valuenow={parseFloat(inputValue)}\n aria-disabled={isDisabled || isBlocked}\n onKeyDown={\n !(isDisabled || isBlocked) ? this.onValidNumber : undefined\n }\n onChange={\n !(isDisabled || isBlocked) ? this.onChangeNumber : undefined\n }\n onFocus={(e) => {\n e.target.select()\n if (!(isDisabled || isBlocked)) this.onFocus(e)\n }}\n onBlur={!(isDisabled || isBlocked) ? this.onBlur : undefined}\n ref={this.inputRef}\n />\n {unit !== undefined && (\n <div className=\"input__unit\">\n <Icon\n type={'LETTER'}\n iconLetter={unit}\n />\n </div>\n )}\n {isTooltipVisible && helper !== undefined && (\n <Tooltip\n pin={helper?.pin || 'BOTTOM'}\n type={helper?.type || 'SINGLE_LINE'}\n >\n {helper?.label}\n </Tooltip>\n )}\n </div>\n {this.Status()}\n </div>\n )\n }\n\n Text = () => {\n const {\n id,\n icon,\n state,\n placeholder,\n charactersLimit,\n helper,\n feature,\n isClearable,\n isFlex,\n isFramed,\n isBlocked,\n isDisabled,\n onClear,\n } = this.props\n const { inputValue, isTooltipVisible } = this.state\n\n return (\n <div\n className={doClassnames([\n 'input',\n 'input--short-text',\n icon !== undefined && 'input--with-icon',\n isFlex && 'input__field--flex',\n isBlocked && 'input--blocked',\n ])}\n role=\"group\"\n >\n <div\n className=\"input__wrapper\"\n onMouseEnter={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: true })\n }}\n onMouseLeave={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: false })\n }}\n >\n {icon !== undefined && (\n <div className=\"input__icon\">\n <Icon\n type={icon?.type}\n iconName={icon?.value}\n iconLetter={icon?.value}\n />\n </div>\n )}\n <input\n role=\"textbox\"\n id={id}\n data-feature={feature}\n type=\"text\"\n className={doClassnames([\n 'input__field',\n !isFramed && 'input__field--no-frame',\n isClearable && inputValue.length > 0 && 'input__field--clearable',\n state === 'ERROR' && 'input__field--error',\n ])}\n placeholder={placeholder}\n value={inputValue}\n maxLength={charactersLimit}\n disabled={isDisabled || isBlocked}\n aria-label={placeholder || 'Text input'}\n aria-invalid={state === 'ERROR'}\n aria-disabled={isDisabled || isBlocked}\n onKeyDown={\n !(isDisabled || isBlocked) ? this.onValidText : undefined\n }\n onChange={\n !(isDisabled || isBlocked) ? this.onChangeText : undefined\n }\n onFocus={!(isDisabled || isBlocked) ? this.onFocus : undefined}\n onBlur={!(isDisabled || isBlocked) ? this.onBlur : undefined}\n ref={this.inputRef}\n ></input>\n {isClearable &&\n inputValue.length > 0 &&\n !(isDisabled || isBlocked) && (\n <div className=\"input__clear\">\n <Button\n type=\"icon\"\n size=\"small\"\n icon=\"close\"\n action={() => {\n this.setState({ inputValue: '' })\n if (onClear !== undefined) onClear('')\n }}\n />\n </div>\n )}\n {isTooltipVisible && helper !== undefined && (\n <Tooltip\n pin={helper?.pin || 'BOTTOM'}\n type={helper?.type || 'SINGLE_LINE'}\n >\n {helper?.label}\n </Tooltip>\n )}\n </div>\n {this.Status()}\n </div>\n )\n }\n\n LongText = () => {\n const { id, state, placeholder, helper, feature, isBlocked, isDisabled } =\n this.props\n const { inputValue, isTooltipVisible } = this.state\n\n return (\n <div\n className={doClassnames([\n 'input',\n 'input--long-text',\n isBlocked && 'input--blocked',\n ])}\n role=\"group\"\n >\n <div\n className=\"input__wrapper\"\n onMouseEnter={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: true })\n }}\n onMouseLeave={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: false })\n }}\n >\n <textarea\n role=\"textbox\"\n id={id}\n data-feature={feature}\n className={doClassnames([\n 'textarea',\n 'input__field',\n state === 'ERROR' && 'input__field--error',\n ])}\n rows={1}\n placeholder={placeholder}\n value={inputValue}\n disabled={isDisabled || isBlocked}\n aria-label={placeholder || 'Long text input'}\n aria-invalid={state === 'ERROR'}\n aria-disabled={isDisabled || isBlocked}\n onKeyDown={\n !(isDisabled || isBlocked) ? this.onValidLongText : undefined\n }\n onChange={\n !(isDisabled || isBlocked) ? this.onChangeText : undefined\n }\n onFocus={!(isDisabled || isBlocked) ? this.onFocus : undefined}\n onBlur={!(isDisabled || isBlocked) ? this.onBlur : undefined}\n ref={this.textareaRef}\n />\n {isTooltipVisible && helper !== undefined && (\n <Tooltip\n pin={helper?.pin || 'BOTTOM'}\n type={helper?.type || 'SINGLE_LINE'}\n >\n {helper?.label}\n </Tooltip>\n )}\n </div>\n {this.Status()}\n </div>\n )\n }\n\n CodeSnippet = () => {\n const { id, value, helper, feature, isBlocked, isDisabled } = this.props\n\n return (\n <div\n className={doClassnames([\n 'input',\n 'input--code',\n isBlocked && 'input--blocked',\n ])}\n role=\"group\"\n >\n <div\n className=\"input__wrapper\"\n onMouseEnter={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: true })\n }}\n onMouseLeave={() => {\n if (helper !== undefined) this.setState({ isTooltipVisible: false })\n }}\n >\n <textarea\n role=\"textbox\"\n id={id}\n data-feature={feature}\n className={doClassnames([\n 'textarea',\n 'input__field',\n 'textarea--monospace',\n ])}\n value={value}\n disabled={isDisabled || isBlocked}\n aria-label={'Code snippet'}\n aria-disabled={isDisabled || isBlocked}\n onChange={\n !(isDisabled || isBlocked) ? this.onChangeText : undefined\n }\n onFocus={(e) => e.target.select()}\n onBlur={() => window.getSelection()?.removeAllRanges()}\n readOnly\n ref={this.textareaRef}\n />\n </div>\n {this.Status()}\n </div>\n )\n }\n\n // Render\n render() {\n const { type } = this.props\n\n if (type === 'NUMBER') return this.Number()\n if (type === 'COLOR') return this.Color()\n if (type === 'LONG_TEXT') return this.LongText()\n if (type === 'CODE') return this.CodeSnippet()\n return this.Text()\n }\n}\n"],"names":["Input","React","props","isGrowing","isAutoFocus","prevProps","value","e","onPick","onChange","onFocus","canBeEmpty","type","shouldPreventEvent","shouldBlur","onBlur","min","max","inputValue","lastValidValue","lastValidColorValue","isEmpty","transformedValue","syntheticEvent","onValid","target","step","onShift","nudge","v","onSlide","nMin","nMax","delta","event","colorCode","validChars","char","result","warning","preview","isBlocked","isNew","onUnblock","jsxs","jsx","IconChip","Chip","id","feature","helper","isDisabled","colorValue","isTooltipVisible","doClassnames","Tooltip","icon","unit","isFlex","Icon","state","placeholder","charactersLimit","isClearable","isFramed","onClear","Button"],"mappings":";;;;;;;;AAmLA,MAAqBA,UAAcC,EAAM,UAAkC;AAAA,EACzE;AAAA,EACA;AAAA,EAEA,OAAO,eAAoC;AAAA,IACzC,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,WAAW;AAAA,IACX,QAAQ;AAAA,EAAA;AAAA,EAGV,YAAYC,GAAmB;AAC7B,UAAMA,CAAK,GACX,KAAK,QAAQ;AAAA,MACX,YAAYA,EAAM;AAAA,MAClB,gBAAgBA,EAAM;AAAA,MACtB,YAAYA,EAAM;AAAA,MAClB,qBAAqBA,EAAM;AAAA,MAC3B,kBAAkB;AAAA,IAAA,GAEpB,KAAK,WAAWD,EAAM,UAAA,GACtB,KAAK,cAAcA,EAAM,UAAA;AAAA,EAC3B;AAAA,EAEA,oBAA0B;AACxB,UAAM,EAAE,WAAAE,MAAc,KAAK;AAE3B,IAAI,KAAK,YAAY,YACnB,KAAK,YAAY,QAAQ,MAAM,SAAS,QACpCA,MACF,KAAK,YAAY,QAAQ,MAAM,SAAS,GAAG,KAAK,YAAY,QAAQ,eAAe,CAAC;AAExF,UAAM,EAAE,aAAAC,MAAgB,KAAK;AAC7B,IAAIA,KACF,WAAW,MAAM;AACf,MAAI,KAAK,SAAS,UAAS,KAAK,SAAS,QAAQ,MAAA,IACxC,KAAK,YAAY,WAAS,KAAK,YAAY,QAAQ,MAAA;AAAA,IAC9D,GAAG,CAAC;AAAA,EACR;AAAA,EAEA,mBAAmBC,GAAuB;AACxC,UAAM,EAAE,OAAAC,GAAO,WAAAH,EAAA,IAAc,KAAK;AAElC,IAAIE,EAAU,UAAUC,KACtB,KAAK,SAAS;AAAA,MACZ,YAAYA;AAAA,MACZ,YAAYA;AAAA,IAAA,CACb,GAECD,EAAU,SAAS,UAAU,KAAK,YAAY,YAAY,SAC5D,KAAK,YAAY,QAAQ,YAAY,IACnC,KAAK,YAAY,YACnB,KAAK,YAAY,QAAQ,MAAM,SAAS,QACpCF,MACF,KAAK,YAAY,QAAQ,MAAM,SAAS,GAAG,KAAK,YAAY,QAAQ,eAAe,CAAC;AAAA,EAE1F;AAAA;AAAA,EAGA,mBAAmB,CACjBI,MACG;AACH,UAAM,EAAE,QAAAC,MAAW,KAAK,OAClBF,IAAQC,EAAE,OAAO;AAEvB,SAAK,SAAS;AAAA,MACZ,YAAYD;AAAA,MACZ,YAAYA;AAAA,MACZ,qBAAqBA;AAAA,IAAA,CACtB,GACGE,OAAeD,CAAC;AAAA,EACtB;AAAA,EAEA,qBAAqB,CACnBA,MACG;AACH,UAAM,EAAE,UAAAE,MAAa,KAAK;AAE1B,SAAK,SAAS;AAAA,MACZ,YAAYF,EAAE,OAAO;AAAA,IAAA,CACtB,GACGE,OAAmBF,CAAC;AAAA,EAC1B;AAAA,EAEA,iBAAiB,CACfA,MACG;AACH,UAAM,EAAE,UAAAE,MAAa,KAAK;AAE1B,SAAK,SAAS;AAAA,MACZ,YAAYF,EAAE,OAAO;AAAA,IAAA,CACtB,GACGE,OAAmBF,CAAC;AAAA,EAC1B;AAAA,EAEA,eAAe,CACbA,MACG;AACH,UAAM,EAAE,UAAAE,MAAa,KAAK;AAE1B,SAAK,SAAS;AAAA,MACZ,YAAYF,EAAE,OAAO;AAAA,IAAA,CACtB,GACGE,OAAmBF,CAAC;AAAA,EAC1B;AAAA,EAEA,UAAU,CAACA,MAAgE;AACzE,UAAM,EAAE,OAAAD,GAAO,SAAAI,GAAS,YAAAC,GAAY,MAAAC,EAAA,IAAS,KAAK,OAE5CC,KACHD,MAAS,UAAUA,MAAS,gBAC7B,CAACD,KACDL,EAAM,KAAA,MAAW;AAEnB,IAAII,KAAW,CAACG,KAAoBH,EAAQH,CAAC;AAAA,EAC/C;AAAA,EAEA,SAAS,CAACA,MAAgE;AACxE,UAAM,EAAE,YAAAO,GAAY,QAAAC,GAAQ,YAAAJ,GAAY,MAAAC,GAAM,KAAAI,GAAK,KAAAC,MAAQ,KAAK,OAC1D,EAAE,YAAAC,GAAY,gBAAAC,GAAgB,qBAAAC,EAAA,IAAwB,KAAK;AAEjE,QAAIR,MAAS,UAAU;AACrB,YAAMS,IAAUH,EAAW,KAAA,MAAW;AACtC,UAAII;AAkBJ,UAhBI,WAAWJ,CAAU,IAAI,WAAWF,KAAO,GAAG,IAChDM,IAAmBN,KAAO,MACnB,WAAWE,CAAU,IAAI,WAAWD,KAAO,KAAK,IACvDK,IAAmBL,KAAO,QACnBI,KACPC,IAAmBH,GACnB,KAAK,SAAS;AAAA,QACZ,YAAYG;AAAA,MAAA,CACb,KACIA,IAAmBJ,GAE1B,KAAK,SAAS;AAAA,QACZ,YAAYI,KAAoBJ;AAAA,QAChC,gBAAgBI,KAAoBJ;AAAA,MAAA,CACrC,GAGEI,MAAqBH,KAAkBJ,KACvCD,KAAcC,GACf;AACA,cAAMQ,IAAiB;AAAA,UACrB,GAAGhB;AAAA,UACH,QAAQ;AAAA,YACN,GAAGA,EAAE;AAAA,YACL,OAAOe;AAAA,YACP,SAASf,EAAE,OAAO,SAAS,KAAKA,EAAE,MAAM;AAAA,YACxC,cAAcA,EAAE,OAAO,cAAc,KAAKA,EAAE,MAAM;AAAA,YAClD,eAAeA,EAAE,OAAO,eAAe,KAAKA,EAAE,MAAM;AAAA,YACpD,kBAAkBA,EAAE,OAAO,kBAAkB,KAAKA,EAAE,MAAM;AAAA,YAC1D,SAASA,EAAE,OAAO,SAAS,KAAKA,EAAE,MAAM;AAAA,YACxC,UAAUA,EAAE,OAAO,UAAU,KAAKA,EAAE,MAAM;AAAA,YAC1C,WAAWA,EAAE,OAAO;AAAA,YACpB,SAASA,EAAE,OAAO;AAAA,UAAA;AAAA,UAEpB,eAAe;AAAA,YACb,GAAGA,EAAE;AAAA,YACL,OAAOe;AAAA,YACP,SAASf,EAAE,cAAc,SAAS,KAAKA,EAAE,aAAa;AAAA,YACtD,cAAcA,EAAE,cAAc,cAAc,KAAKA,EAAE,aAAa;AAAA,YAChE,eAAeA,EAAE,cAAc,eAAe,KAAKA,EAAE,aAAa;AAAA,YAClE,kBAAkBA,EAAE,cAAc,kBAAkB;AAAA,cAClDA,EAAE;AAAA,YAAA;AAAA,YAEJ,SAASA,EAAE,cAAc,SAAS,KAAKA,EAAE,aAAa;AAAA,YACtD,UAAUA,EAAE,cAAc,UAAU,KAAKA,EAAE,aAAa;AAAA,YACxD,WAAWA,EAAE,cAAc;AAAA,YAC3B,SAASA,EAAE,cAAc;AAAA,UAAA;AAAA,QAC3B;AAGF,QAAAQ;AAAA,UACEQ;AAAA,QAAA;AAKF;AAAA,MACF;AAAA,IACF;AAEA,QAAIX,MAAS,SAAS;AACpB,YAAMU,IAAmB,KAAK,mBAAmBf,EAAE,OAAO,KAAK;AAQ/D,UANA,KAAK,SAAS;AAAA,QACZ,YAAYe;AAAA,QACZ,YAAYA;AAAA,QACZ,qBAAqBA;AAAA,MAAA,CACtB,GAGEA,MAAqBF,KAAuBL,MAAW,UACvDD,KAAcC,MAAW,QAC1B;AACA,cAAMQ,IAAiB;AAAA,UACrB,GAAGhB;AAAA,UACH,QAAQ;AAAA,YACN,GAAGA,EAAE;AAAA,YACL,OAAOe;AAAA,YACP,SAASf,EAAE,OAAO,SAAS,KAAKA,EAAE,MAAM;AAAA,YACxC,cAAcA,EAAE,OAAO,cAAc,KAAKA,EAAE,MAAM;AAAA,YAClD,eAAeA,EAAE,OAAO,eAAe,KAAKA,EAAE,MAAM;AAAA,YACpD,kBAAkBA,EAAE,OAAO,kBAAkB,KAAKA,EAAE,MAAM;AAAA,YAC1D,SAASA,EAAE,OAAO,SAAS,KAAKA,EAAE,MAAM;AAAA,YACxC,UAAUA,EAAE,OAAO,UAAU,KAAKA,EAAE,MAAM;AAAA,YAC1C,WAAWA,EAAE,OAAO;AAAA,YACpB,SAASA,EAAE,OAAO;AAAA,UAAA;AAAA,UAEpB,eAAe;AAAA,YACb,GAAGA,EAAE;AAAA,YACL,OAAOe;AAAA,YACP,SAASf,EAAE,cAAc,SAAS,KAAKA,EAAE,aAAa;AAAA,YACtD,cAAcA,EAAE,cAAc,cAAc,KAAKA,EAAE,aAAa;AAAA,YAChE,eAAeA,EAAE,cAAc,eAAe,KAAKA,EAAE,aAAa;AAAA,YAClE,kBAAkBA,EAAE,cAAc,kBAAkB;AAAA,cAClDA,EAAE;AAAA,YAAA;AAAA,YAEJ,SAASA,EAAE,cAAc,SAAS,KAAKA,EAAE,aAAa;AAAA,YACtD,UAAUA,EAAE,cAAc,UAAU,KAAKA,EAAE,aAAa;AAAA,YACxD,WAAWA,EAAE,cAAc;AAAA,YAC3B,SAASA,EAAE,cAAc;AAAA,UAAA;AAAA,QAC3B;AAGF,QAAAQ;AAAA,UACEQ;AAAA,QAAA;AAKF;AAAA,MACF;AAAA,IACF;AAEA,QAAIX,MAAS,UAAUA,MAAS,aAAa;AAC3C,YAAMS,IAAUH,EAAW,KAAA,MAAW;AAItC,WAFGN,MAAS,UAAUA,MAAS,gBAAgB,CAACD,KAAcU,GAEtC;AACtB,aAAK,SAAS;AAAA,UACZ,YAAYF;AAAA,QAAA,CACb;AACD;AAAA,MACF;AAMA,UAJA,KAAK,SAAS;AAAA,QACZ,gBAAgBD;AAAA,MAAA,CACjB,GAEIA,MAAeC,KAAkBJ,KAAYD,KAAcC,GAAS;AACvE,QAAAA,EAAOR,CAAC;AAER;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA,EAGA,cAAc,CACZA,MACG;AACH,UAAM,EAAE,SAAAiB,MAAY,KAAK,OACnBC,IAASlB,EAAE;AAEjB,IAAIA,EAAE,QAAQ,WACRiB,MAAY,UAAWA,EAAQjB,CAAC,GACpCkB,EAAO,KAAA,KACElB,EAAE,QAAQ,cAAiB,KAAA;AAAA,EACxC;AAAA,EAEA,kBAAkB,CAChBA,MACG;AACH,UAAM,EAAE,SAAAiB,MAAY,KAAK,OACnBC,IAASlB,EAAE;AAEjB,KAAKA,EAAE,WAAWA,EAAE,YAAYA,EAAE,QAAQ,WACpCiB,MAAY,UAAWA,EAAQjB,CAAC,GACpCkB,EAAO,KAAA,KACElB,EAAE,QAAQ,cAAiB,KAAA;AAAA,EACxC;AAAA,EAEA,gBAAgB,CACdA,MACG;AACH,UAAM,EAAE,KAAAS,GAAK,KAAAC,GAAK,MAAAS,GAAM,SAAAC,EAAA,IAAY,KAAK,OACnC,EAAE,YAAAT,MAAe,KAAK,OACtBO,IAASlB,EAAE;AAEjB,QAAIqB,IAAQ;AAEZ,QAAIrB,EAAE,QAAQ,WAAW;AACvB,MAAIA,EAAE,aAAUqB,IAAQ;AACxB,YAAMC,IACJ,WAAWX,CAAU,IAAIU,IAAQ,WAAWX,KAAO,KAAK,KAElD,WAAWC,CAAU,IACrBU,IAAQ,WAAWF,MAAS,SAAY,MAAMA,CAAI,GAClD,aACDT,KAAO;AAEd,WAAK,SAAS;AAAA,QACZ,YAAYY;AAAA,QACZ,gBAAgBA;AAAA,MAAA,CACjB,GACG,WAAWX,CAAU,IAAIU,IAAQ,WAAWX,KAAO,KAAK,KAC1DU,IAAUpB,CAAC;AAAA,IACf,WAAWA,EAAE,QAAQ,aAAa;AAChC,MAAIA,EAAE,aAAUqB,IAAQ;AACxB,YAAMC,IACJ,WAAWX,CAAU,IAAIU,IAAQ,WAAWZ,KAAO,GAAG,KAEhD,WAAWE,CAAU,IACrBU,IAAQ,WAAWF,MAAS,SAAY,MAAMA,CAAI,GAClD,aACDV,KAAO;AACd,WAAK,SAAS;AAAA,QACZ,YAAYa;AAAA,QACZ,gBAAgBA;AAAA,MAAA,CACjB,GACG,WAAWX,CAAU,IAAIU,IAAQ,WAAWZ,KAAO,GAAG,KAAGW,IAAUpB,CAAC;AAAA,IAC1E,QAAWA,EAAE,QAAQ,WAAWA,EAAE,QAAQ,cACpC,WAAWW,CAAU,IAAI,WAAWF,KAAO,GAAG,IAChD,KAAK,SAAS;AAAA,MACZ,YAAYA,KAAO;AAAA,IAAA,CACpB,IACM,WAAWE,CAAU,IAAI,WAAWD,KAAO,KAAK,KACvD,KAAK,SAAS;AAAA,MACZ,YAAYA,KAAO;AAAA,IAAA,CACpB,GAEHQ,EAAO,KAAA;AAAA,EAEX;AAAA,EAEA,eAAe,CACblB,MACG;AACH,UAAM,EAAE,SAAAiB,MAAY,KAAK,OACnBC,IAASlB,EAAE;AAEjB,IAAIA,EAAE,QAAQ,WACRiB,MAAY,UAAWA,EAAQjB,CAAC,GACpCkB,EAAO,KAAA,KACElB,EAAE,QAAQ,cAAiB,KAAA;AAAA,EACxC;AAAA,EAEA,UAAU,MAAM,KAAK,SAAS,EAAE,YAAY,IAAI;AAAA,EAEhD,SAAS,MAAM;AACb,IAAI,KAAK,SAAS,WAAS,KAAK,SAAS,QAAQ,MAAA,GACjD,SAAS,iBAAiB,aAAa,KAAK,MAAM;AAAA,EACpD;AAAA,EAEA,SAAS,CAACA,MAAkB;AAC1B,IAAI,KAAK,SAAS,WAAS,KAAK,SAAS,QAAQ,MAAA;AACjD,UAAM,EAAE,KAAAS,GAAK,KAAAC,GAAK,SAAAa,EAAA,IAAY,KAAK,OAC7B,EAAE,YAAAZ,MAAe,KAAK,OAEtBa,IAAO,WAAWf,KAAO,GAAG,GAC5BgB,IAAO,WAAWf,KAAO,KAAK,GAE9BgB,IADS,WAAWf,CAAU,IACbX,EAAE;AAEzB,QAAI0B,KAASF,KAAQE,KAASD,MAC5B,KAAK,SAAS;AAAA,MACZ,YAAYC,EAAM,SAAA;AAAA,IAAS,CAC5B,GACG,KAAK,SAAS,UAAS;AACzB,YAAMC,IAAQ,IAAI,MAAM,SAAS,EAAE,SAAS,IAAM;AAClD,aAAO,eAAeA,GAAO,UAAU;AAAA,QACrC,OAAO,KAAK,SAAS;AAAA,QACrB,YAAY;AAAA,MAAA,CACb,GACD,OAAO,eAAeA,GAAO,iBAAiB;AAAA,QAC5C,OAAO,KAAK,SAAS;AAAA,QACrB,YAAY;AAAA,MAAA,CACb,GACDJ,IAAUI,CAAuD;AAAA,IACnE;AAGF,aAAS,KAAK,MAAM,YAAY,UAAU,aAAa,WAAW,GAClE,KAAK,SAAS,SAAS,MAAM,YAAY,UAAU,aAAa,WAAW,GAC3E,SAAS,iBAAiB,WAAW,MAAM;AACzC,eAAS,oBAAoB,aAAa,KAAK,MAAM,GACrD,SAAS,KAAK,MAAM,SAAS,IACzB,KAAK,SAAS,iBAAc,SAAS,QAAQ,MAAM,SAAS;AAAA,IAClE,CAAC;AAAA,EACH;AAAA,EAEA,qBAAqB,CAACC,MAA8B;AAClD,UAAM,EAAE,qBAAAf,MAAwB,KAAK,OAM/BgB,KAJmBD,EAAU,WAAW,GAAG,IAC7CA,EAAU,UAAU,CAAC,IACrBA,GAGD,YAAA,EACA,MAAM,EAAE,EACR,OAAO,CAACE,MAAS,YAAY,KAAKA,CAAI,CAAC;AAE1C,QAAID,EAAW,WAAW,EAAG,QAAOhB;AAEpC,QAAIgB,EAAW,UAAU,EAAG,QAAO,IAAIA,EAAW,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;AAEtE,QAAIE,IAAS;AAEb,YAAQF,EAAW,QAAA;AAAA,MACjB,KAAK;AACH,QAAAE,IAASF,EAAW,CAAC,EAAE,OAAO,CAAC;AAC/B;AAAA,MAEF,KAAK;AACH,QAAAE,IAAS,GAAGF,EAAW,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC;AAC1C;AAAA,MAEF,KAAK;AACH,QAAAE,IAAS,GAAGF,EAAW,CAAC,CAAC,GAAGA,EAAW,CAAC,CAAC,GAAGA,EAAW,CAAC,CAAC,GAAGA,EAAW,CAAC,CAAC,GAAGA,EAAW,CAAC,CAAC,GAAGA,EAAW,CAAC,CAAC;AACzG;AAAA,MAEF,KAAK;AACH,QAAAE,IAAS,GAAGF,EAAW,CAAC,CAAC,GAAGA,EAAW,CAAC,CAAC,GAAGA,EAAW,CAAC,CAAC,GAAGA,EAAW,CAAC,CAAC,GAAGA,EAAW,CAAC,CAAC,GAAGA,EAAW,CAAC,CAAC;AACzG;AAAA,MAEF,KAAK;AACH,QAAAE,IAAS,GAAGF,EAAW,CAAC,CAAC,GAAGA,EAAW,CAAC,CAAC,GAAGA,EAAW,CAAC,CAAC,GAAGA,EAAW,CAAC,CAAC,GAAGA,EAAW,CAAC,CAAC,GAAGA,EAAW,CAAC,CAAC;AACzG;AAAA,MAEF;AACE,QAAAE,IAASF,EAAW,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE;AAAA,IAAA;AAG3C,WAAAE,EAAO,QAAQ,GAAG,MAAM,MAAMA,IAAS,IAAIA,CAAM,KAE1CA,EAAO,YAAA;AAAA,EAChB;AAAA;AAAA,EAGA,SAAS,MAAM;AACb,UAAM,EAAE,SAAAC,GAAS,SAAAC,GAAS,WAAAC,GAAW,OAAAC,GAAO,WAAAC,EAAA,IAAc,KAAK;AAE/D,QAAIJ,KAAWE,KAAaC;AAC1B,aACE,gBAAAE,EAAC,OAAA,EAAI,WAAU,iBACZ,UAAA;AAAA,QAAAL,MAAY,UACX,gBAAAM;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,UAAS;AAAA,YACT,UAAS;AAAA,YACT,MAAMP,EAAQ;AAAA,YACd,KAAKA,EAAQ;AAAA,YACb,MAAMA,EAAQ;AAAA,UAAA;AAAA,QAAA;AAAA,SAGhBE,KAAaC,MACb,gBAAAG;AAAA,UAACE;AAAA,UAAA;AAAA,YACC,SAAAP;AAAA,YACA,QAAM;AAAA,YACN,QAAQC,IAAYE,IAAY;AAAA,YAE/B,cAAQ,QAAQ;AAAA,UAAA;AAAA,QAAA;AAAA,MACnB,GAEJ;AAAA,EAEN;AAAA,EAEA,QAAQ,MAAM;AACZ,UAAM,EAAE,IAAAK,GAAI,SAAAC,GAAS,QAAAC,GAAQ,WAAAT,GAAW,YAAAU,GAAY,QAAApC,MAAW,KAAK,OAC9D,EAAE,YAAAG,GAAY,YAAAkC,GAAY,kBAAAC,EAAA,IAAqB,KAAK;AAE1D,WACE,gBAAAT;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWU,EAAa;AAAA,UACtB;AAAA,UACA;AAAA,UACA;AAAA,UACAb,KAAa;AAAA,QAAA,CACd;AAAA,QACD,MAAK;AAAA,QAEL,UAAA;AAAA,UAAA,gBAAAG;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,cAAc,MAAM;AAClB,gBAAIM,MAAW,UAAW,KAAK,SAAS,EAAE,kBAAkB,IAAM;AAAA,cACpE;AAAA,cACA,cAAc,MAAM;AAClB,gBAAIA,MAAW,UAAW,KAAK,SAAS,EAAE,kBAAkB,IAAO;AAAA,cACrE;AAAA,cAEA,UAAA;AAAA,gBAAA,gBAAAL;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,IAAAG;AAAA,oBACA,gBAAcC;AAAA,oBACd,MAAK;AAAA,oBACL,WAAU;AAAA,oBACV,OAAOG;AAAA,oBACP,UAAUD,KAAcV;AAAA,oBACxB,cAAW;AAAA,oBACX,iBAAeU,KAAcV;AAAA,oBAC7B,UACIU,KAAcV,IAAqC,SAAxB,KAAK;AAAA,oBAEpC,QAAUU,KAAcV,IAAsB,SAAT1B;AAAA,oBACrC,KAAK,KAAK;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAEZ,gBAAA8B;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,IAAAG;AAAA,oBACA,gBAAcC;AAAA,oBACd,MAAK;AAAA,oBACL,WAAU;AAAA,oBACV,OAAO/B,EAAW,YAAA,EAAc,QAAQ,KAAK,EAAE;AAAA,oBAC/C,WAAW;AAAA,oBACX,UAAUiC,KAAcV;AAAA,oBACxB,cAAW;AAAA,oBACX,iBAAeU,KAAcV;AAAA,oBAC7B,UACIU,KAAcV,IAAuC,SAA1B,KAAK;AAAA,oBAEpC,SAAS,CAAClC,MAAM;AACd,sBAAAA,EAAE,OAAO,OAAA,GACT,KAAK,QAAQA,CAAC;AAAA,oBAChB;AAAA,oBACA,WACI4C,KAAcV,IAAiC,SAApB,KAAK;AAAA,oBAEpC,QAAUU,KAAcV,IAA2B,SAAd,KAAK;AAAA,oBAC1C,KAAK,KAAK;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAEXY,KAAoBH,MAAW,UAC9B,gBAAAL;AAAA,kBAACU;AAAA,kBAAA;AAAA,oBACC,KAAKL,GAAQ,OAAO;AAAA,oBACpB,MAAMA,GAAQ,QAAQ;AAAA,oBAErB,UAAAA,GAAQ;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACX;AAAA,YAAA;AAAA,UAAA;AAAA,UAGH,KAAK,OAAA;AAAA,QAAO;AAAA,MAAA;AAAA,IAAA;AAAA,EAGnB;AAAA,EAEA,SAAS,MAAM;AACb,UAAM;AAAA,MACJ,IAAAF;AAAA,MACA,MAAAQ;AAAA,MACA,MAAAC;AAAA,MACA,KAAAzC;AAAA,MACA,KAAAC;AAAA,MACA,MAAAS;AAAA,MACA,QAAAwB;AAAA,MACA,SAAAD;AAAA,MACA,WAAAR;AAAA,MACA,YAAAU;AAAA,MACA,QAAAO;AAAA,MACA,SAAA5B;AAAA,IAAA,IACE,KAAK,OACH,EAAE,YAAAZ,GAAY,kBAAAmC,EAAA,IAAqB,KAAK;AAE9C,WACE,gBAAAT;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWU,EAAa;AAAA,UACtB;AAAA,UACA;AAAA,UACAE,MAAS,UAAa;AAAA,UACtBE,KAAU;AAAA,UACVjB,KAAa;AAAA,QAAA,CACd;AAAA,QACD,MAAK;AAAA,QAEL,UAAA;AAAA,UAAA,gBAAAG;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,cAAc,MAAM;AAClB,gBAAIM,MAAW,UAAW,KAAK,SAAS,EAAE,kBAAkB,IAAM;AAAA,cACpE;AAAA,cACA,cAAc,MAAM;AAClB,gBAAIA,MAAW,UAAW,KAAK,SAAS,EAAE,kBAAkB,IAAO;AAAA,cACrE;AAAA,cAEC,UAAA;AAAA,gBAAAM,MAAS,UACR,gBAAAX;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,OAAO;AAAA,sBACL,QACE,OAAOf,KAAY,cAAc,EAAEqB,KAAcV,KAC7C,cACA;AAAA,oBAAA;AAAA,oBAER,aAAa,MAAM;AACjB,sBAAI,OAAOX,KAAY,cAAc,EAAEqB,KAAcV,MACnD,KAAK,OAAA;AAAA,oBACT;AAAA,oBAEA,UAAA,gBAAAI;AAAA,sBAACc;AAAA,sBAAA;AAAA,wBACC,MAAMH,GAAM;AAAA,wBACZ,UAAUA,GAAM;AAAA,wBAChB,YAAYA,GAAM;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBACpB;AAAA,gBAAA;AAAA,gBAGJ,gBAAAX;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,IAAAG;AAAA,oBACA,gBAAcC;AAAA,oBACd,MAAK;AAAA,oBACL,WAAWK,EAAa;AAAA,sBACtB;AAAA,sBACAI,KAAU;AAAA,sBACVD,MAAS,UAAa;AAAA,oBAAA,CACvB;AAAA,oBACD,OAAOvC;AAAA,oBACP,KAAAF;AAAA,oBACA,KAAAC;AAAA,oBACA,MAAAS;AAAA,oBACA,UAAUyB,KAAcV;AAAA,oBACxB,cAAY,eAAegB,IAAO,OAAOA,CAAI,KAAK,EAAE,GAAGD,IAAO,SAASA,EAAK,KAAK,UAAU,EAAE;AAAA,oBAC7F,iBAAexC,IAAM,WAAWA,CAAG,IAAI;AAAA,oBACvC,iBAAeC,IAAM,WAAWA,CAAG,IAAI;AAAA,oBACvC,iBAAe,WAAWC,CAAU;AAAA,oBACpC,iBAAeiC,KAAcV;AAAA,oBAC7B,WACIU,KAAcV,IAAkC,SAArB,KAAK;AAAA,oBAEpC,UACIU,KAAcV,IAAmC,SAAtB,KAAK;AAAA,oBAEpC,SAAS,CAAClC,MAAM;AACd,sBAAAA,EAAE,OAAO,OAAA,GACH4C,KAAcV,KAAY,KAAK,QAAQlC,CAAC;AAAA,oBAChD;AAAA,oBACA,QAAU4C,KAAcV,IAA2B,SAAd,KAAK;AAAA,oBAC1C,KAAK,KAAK;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAEXgB,MAAS,UACR,gBAAAZ,EAAC,OAAA,EAAI,WAAU,eACb,UAAA,gBAAAA;AAAA,kBAACc;AAAA,kBAAA;AAAA,oBACC,MAAM;AAAA,oBACN,YAAYF;AAAA,kBAAA;AAAA,gBAAA,GAEhB;AAAA,gBAEDJ,KAAoBH,MAAW,UAC9B,gBAAAL;AAAA,kBAACU;AAAA,kBAAA;AAAA,oBACC,KAAKL,GAAQ,OAAO;AAAA,oBACpB,MAAMA,GAAQ,QAAQ;AAAA,oBAErB,UAAAA,GAAQ;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACX;AAAA,YAAA;AAAA,UAAA;AAAA,UAGH,KAAK,OAAA;AAAA,QAAO;AAAA,MAAA;AAAA,IAAA;AAAA,EAGnB;AAAA,EAEA,OAAO,MAAM;AACX,UAAM;AAAA,MACJ,IAAAF;AAAA,MACA,MAAAQ;AAAA,MACA,OAAAI;AAAA,MACA,aAAAC;AAAA,MACA,iBAAAC;AAAA,MACA,QAAAZ;AAAA,MACA,SAAAD;AAAA,MACA,aAAAc;AAAA,MACA,QAAAL;AAAA,MACA,UAAAM;AAAA,MACA,WAAAvB;AAAA,MACA,YAAAU;AAAA,MACA,SAAAc;AAAA,IAAA,IACE,KAAK,OACH,EAAE,YAAA/C,GAAY,kBAAAmC,EAAA,IAAqB,KAAK;AAE9C,WACE,gBAAAT;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWU,EAAa;AAAA,UACtB;AAAA,UACA;AAAA,UACAE,MAAS,UAAa;AAAA,UACtBE,KAAU;AAAA,UACVjB,KAAa;AAAA,QAAA,CACd;AAAA,QACD,MAAK;AAAA,QAEL,UAAA;AAAA,UAAA,gBAAAG;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,cAAc,MAAM;AAClB,gBAAIM,MAAW,UAAW,KAAK,SAAS,EAAE,kBAAkB,IAAM;AAAA,cACpE;AAAA,cACA,cAAc,MAAM;AAClB,gBAAIA,MAAW,UAAW,KAAK,SAAS,EAAE,kBAAkB,IAAO;AAAA,cACrE;AAAA,cAEC,UAAA;AAAA,gBAAAM,MAAS,UACR,gBAAAX,EAAC,OAAA,EAAI,WAAU,eACb,UAAA,gBAAAA;AAAA,kBAACc;AAAA,kBAAA;AAAA,oBACC,MAAMH,GAAM;AAAA,oBACZ,UAAUA,GAAM;AAAA,oBAChB,YAAYA,GAAM;AAAA,kBAAA;AAAA,gBAAA,GAEtB;AAAA,gBAEF,gBAAAX;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,IAAAG;AAAA,oBACA,gBAAcC;AAAA,oBACd,MAAK;AAAA,oBACL,WAAWK,EAAa;AAAA,sBACtB;AAAA,sBACA,CAACU,KAAY;AAAA,sBACbD,KAAe7C,EAAW,SAAS,KAAK;AAAA,sBACxC0C,MAAU,WAAW;AAAA,oBAAA,CACtB;AAAA,oBACD,aAAAC;AAAA,oBACA,OAAO3C;AAAA,oBACP,WAAW4C;AAAA,oBACX,UAAUX,KAAcV;AAAA,oBACxB,cAAYoB,KAAe;AAAA,oBAC3B,gBAAcD,MAAU;AAAA,oBACxB,iBAAeT,KAAcV;AAAA,oBAC7B,WACIU,KAAcV,IAAgC,SAAnB,KAAK;AAAA,oBAEpC,UACIU,KAAcV,IAAiC,SAApB,KAAK;AAAA,oBAEpC,SAAWU,KAAcV,IAA4B,SAAf,KAAK;AAAA,oBAC3C,QAAUU,KAAcV,IAA2B,SAAd,KAAK;AAAA,oBAC1C,KAAK,KAAK;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAEXsB,KACC7C,EAAW,SAAS,KACpB,EAAEiC,KAAcV,MACd,gBAAAI,EAAC,OAAA,EAAI,WAAU,gBACb,UAAA,gBAAAA;AAAA,kBAACqB;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,MAAK;AAAA,oBACL,MAAK;AAAA,oBACL,QAAQ,MAAM;AACZ,2BAAK,SAAS,EAAE,YAAY,GAAA,CAAI,GAC5BD,MAAY,UAAWA,EAAQ,EAAE;AAAA,oBACvC;AAAA,kBAAA;AAAA,gBAAA,GAEJ;AAAA,gBAEHZ,KAAoBH,MAAW,UAC9B,gBAAAL;AAAA,kBAACU;AAAA,kBAAA;AAAA,oBACC,KAAKL,GAAQ,OAAO;AAAA,oBACpB,MAAMA,GAAQ,QAAQ;AAAA,oBAErB,UAAAA,GAAQ;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACX;AAAA,YAAA;AAAA,UAAA;AAAA,UAGH,KAAK,OAAA;AAAA,QAAO;AAAA,MAAA;AAAA,IAAA;AAAA,EAGnB;AAAA,EAEA,WAAW,MAAM;AACf,UAAM,EAAE,IAAAF,GAAI,OAAAY,GAAO,aAAAC,GAAa,QAAAX,GAAQ,SAAAD,GAAS,WAAAR,GAAW,YAAAU,MAC1D,KAAK,OACD,EAAE,YAAAjC,GAAY,kBAAAmC,EAAA,IAAqB,KAAK;AAE9C,WACE,gBAAAT;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWU,EAAa;AAAA,UACtB;AAAA,UACA;AAAA,UACAb,KAAa;AAAA,QAAA,CACd;AAAA,QACD,MAAK;AAAA,QAEL,UAAA;AAAA,UAAA,gBAAAG;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,cAAc,MAAM;AAClB,gBAAIM,MAAW,UAAW,KAAK,SAAS,EAAE,kBAAkB,IAAM;AAAA,cACpE;AAAA,cACA,cAAc,MAAM;AAClB,gBAAIA,MAAW,UAAW,KAAK,SAAS,EAAE,kBAAkB,IAAO;AAAA,cACrE;AAAA,cAEA,UAAA;AAAA,gBAAA,gBAAAL;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,IAAAG;AAAA,oBACA,gBAAcC;AAAA,oBACd,WAAWK,EAAa;AAAA,sBACtB;AAAA,sBACA;AAAA,sBACAM,MAAU,WAAW;AAAA,oBAAA,CACtB;AAAA,oBACD,MAAM;AAAA,oBACN,aAAAC;AAAA,oBACA,OAAO3C;AAAA,oBACP,UAAUiC,KAAcV;AAAA,oBACxB,cAAYoB,KAAe;AAAA,oBAC3B,gBAAcD,MAAU;AAAA,oBACxB,iBAAeT,KAAcV;AAAA,oBAC7B,WACIU,KAAcV,IAAoC,SAAvB,KAAK;AAAA,oBAEpC,UACIU,KAAcV,IAAiC,SAApB,KAAK;AAAA,oBAEpC,SAAWU,KAAcV,IAA4B,SAAf,KAAK;AAAA,oBAC3C,QAAUU,KAAcV,IAA2B,SAAd,KAAK;AAAA,oBAC1C,KAAK,KAAK;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAEXY,KAAoBH,MAAW,UAC9B,gBAAAL;AAAA,kBAACU;AAAA,kBAAA;AAAA,oBACC,KAAKL,GAAQ,OAAO;AAAA,oBACpB,MAAMA,GAAQ,QAAQ;AAAA,oBAErB,UAAAA,GAAQ;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACX;AAAA,YAAA;AAAA,UAAA;AAAA,UAGH,KAAK,OAAA;AAAA,QAAO;AAAA,MAAA;AAAA,IAAA;AAAA,EAGnB;AAAA,EAEA,cAAc,MAAM;AAClB,UAAM,EAAE,IAAAF,GAAI,OAAA1C,GAAO,QAAA4C,GAAQ,SAAAD,GAAS,WAAAR,GAAW,YAAAU,MAAe,KAAK;AAEnE,WACE,gBAAAP;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWU,EAAa;AAAA,UACtB;AAAA,UACA;AAAA,UACAb,KAAa;AAAA,QAAA,CACd;AAAA,QACD,MAAK;AAAA,QAEL,UAAA;AAAA,UAAA,gBAAAI;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,cAAc,MAAM;AAClB,gBAAIK,MAAW,UAAW,KAAK,SAAS,EAAE,kBAAkB,IAAM;AAAA,cACpE;AAAA,cACA,cAAc,MAAM;AAClB,gBAAIA,MAAW,UAAW,KAAK,SAAS,EAAE,kBAAkB,IAAO;AAAA,cACrE;AAAA,cAEA,UAAA,gBAAAL;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,IAAAG;AAAA,kBACA,gBAAcC;AAAA,kBACd,WAAWK,EAAa;AAAA,oBACtB;AAAA,oBACA;AAAA,oBACA;AAAA,kBAAA,CACD;AAAA,kBACD,OAAAhD;AAAA,kBACA,UAAU6C,KAAcV;AAAA,kBACxB,cAAY;AAAA,kBACZ,iBAAeU,KAAcV;AAAA,kBAC7B,UACIU,KAAcV,IAAiC,SAApB,KAAK;AAAA,kBAEpC,SAAS,CAAClC,MAAMA,EAAE,OAAO,OAAA;AAAA,kBACzB,QAAQ,MAAM,OAAO,aAAA,GAAgB,gBAAA;AAAA,kBACrC,UAAQ;AAAA,kBACR,KAAK,KAAK;AAAA,gBAAA;AAAA,cAAA;AAAA,YACZ;AAAA,UAAA;AAAA,UAED,KAAK,OAAA;AAAA,QAAO;AAAA,MAAA;AAAA,IAAA;AAAA,EAGnB;AAAA;AAAA,EAGA,SAAS;AACP,UAAM,EAAE,MAAAK,MAAS,KAAK;AAEtB,WAAIA,MAAS,WAAiB,KAAK,OAAA,IAC/BA,MAAS,UAAgB,KAAK,MAAA,IAC9BA,MAAS,cAAoB,KAAK,SAAA,IAClCA,MAAS,SAAe,KAAK,YAAA,IAC1B,KAAK,KAAA;AAAA,EACd;AACF;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputsBar.d.ts","sourceRoot":"","sources":["../../../../src/components/inputs/inputs-bar/InputsBar.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"InputsBar.d.ts","sourceRoot":"","sources":["../../../../src/components/inputs/inputs-bar/InputsBar.tsx"],"names":[],"mappings":"AAEA,OAAO,mBAAmB,CAAA;AAE1B,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED,QAAA,MAAM,SAAS,GAAI,OAAO,cAAc,4CASvC,CAAA;AAED,eAAe,SAAS,CAAA"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
2
|
import { Easing } from '@unoff/utils';
|
|
3
|
-
|
|
4
3
|
type UpdateEvent = 'TYPED' | 'UPDATING' | 'RELEASED' | 'SHIFTED';
|
|
5
4
|
interface SliderProps {
|
|
6
5
|
/**
|
|
@@ -40,12 +39,21 @@ interface SliderProps {
|
|
|
40
39
|
/**
|
|
41
40
|
* Colors for gradient display
|
|
42
41
|
*/
|
|
43
|
-
colors
|
|
42
|
+
colors?: {
|
|
44
43
|
/** Start color */
|
|
45
44
|
min: string;
|
|
46
45
|
/** End color */
|
|
47
46
|
max: string;
|
|
48
47
|
};
|
|
48
|
+
/**
|
|
49
|
+
* Whether to show a progress bar between the first and last stop
|
|
50
|
+
*/
|
|
51
|
+
hasProgressBar?: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Whether to apply horizontal padding
|
|
54
|
+
* @default true
|
|
55
|
+
*/
|
|
56
|
+
hasPadding?: boolean;
|
|
49
57
|
/**
|
|
50
58
|
* Tooltip configuration
|
|
51
59
|
*/
|
|
@@ -86,11 +94,11 @@ interface SliderProps {
|
|
|
86
94
|
*/
|
|
87
95
|
onUnblock?: React.MouseEventHandler & React.KeyboardEventHandler;
|
|
88
96
|
}
|
|
89
|
-
interface
|
|
97
|
+
interface SliderState {
|
|
90
98
|
isTooltipDisplay: Array<boolean>;
|
|
91
99
|
activeKnobId: string | null;
|
|
92
100
|
}
|
|
93
|
-
export default class Slider extends React.Component<SliderProps,
|
|
101
|
+
export default class Slider extends React.Component<SliderProps, SliderState> {
|
|
94
102
|
static defaultProps: {
|
|
95
103
|
scale: {};
|
|
96
104
|
stops: {
|
|
@@ -98,10 +106,8 @@ export default class Slider extends React.Component<SliderProps, SliderStates> {
|
|
|
98
106
|
min: number;
|
|
99
107
|
max: number;
|
|
100
108
|
};
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
max: string;
|
|
104
|
-
};
|
|
109
|
+
hasProgressBar: boolean;
|
|
110
|
+
hasPadding: boolean;
|
|
105
111
|
isBlocked: boolean;
|
|
106
112
|
isNew: boolean;
|
|
107
113
|
};
|
|
@@ -116,6 +122,7 @@ export default class Slider extends React.Component<SliderProps, SliderStates> {
|
|
|
116
122
|
onShiftLeft: (knob: HTMLElement, isShift: boolean) => void;
|
|
117
123
|
distributeStops: (type: string, value: number, stops: Array<HTMLElement>) => void;
|
|
118
124
|
linkStops: (value: number, src: HTMLElement, stops: Array<HTMLElement>) => void;
|
|
125
|
+
Progress: () => import("react/jsx-runtime").JSX.Element | null;
|
|
119
126
|
Status: () => import("react/jsx-runtime").JSX.Element | undefined;
|
|
120
127
|
Edit: () => import("react/jsx-runtime").JSX.Element;
|
|
121
128
|
FullyEdit: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultipleSlider.d.ts","sourceRoot":"","sources":["../../../../src/components/inputs/multiple-slider/MultipleSlider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAuB,MAAM,EAAE,MAAM,cAAc,CAAA;AAS1D,OAAO,wBAAwB,CAAA;AAE/B,KAAK,WAAW,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAA;AAEhE,UAAU,WAAW;IACnB;;OAEG;IACH,IAAI,EAAE,MAAM,GAAG,YAAY,CAAA;IAC3B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAA;IAC1B;;OAEG;IACH,KAAK,EAAE;QACL,6BAA6B;QAC7B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QACnB,iCAAiC;QACjC,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,iCAAiC;QACjC,GAAG,CAAC,EAAE,MAAM,CAAA;KACb,CAAA;IACD;;OAEG;IACH,KAAK,EAAE;QACL,oBAAoB;QACpB,GAAG,EAAE,MAAM,CAAA;QACX,oBAAoB;QACpB,GAAG,EAAE,MAAM,CAAA;QACX,qBAAqB;QACrB,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IACD;;OAEG;IACH,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"MultipleSlider.d.ts","sourceRoot":"","sources":["../../../../src/components/inputs/multiple-slider/MultipleSlider.tsx"],"names":[],"mappings":"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"}
|