@acusti/css-value-input 2.0.0 → 2.1.1
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/dist/CSSValueInput.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CSSValueType } from '../../css-values/src';
|
|
2
|
-
import
|
|
2
|
+
import { ChangeEvent, FocusEvent, KeyboardEvent, ReactNode } from 'react';
|
|
3
3
|
export type Props = {
|
|
4
4
|
/**
|
|
5
5
|
* Boolean indicating if the user can submit an empty value (i.e. clear
|
|
@@ -14,16 +14,16 @@ export type Props = {
|
|
|
14
14
|
* (i.e. '12px' → 12). Defaults to parseFloat().
|
|
15
15
|
*/
|
|
16
16
|
getValueAsNumber?: (value: number | string) => number;
|
|
17
|
-
icon?:
|
|
17
|
+
icon?: ReactNode;
|
|
18
18
|
label?: string;
|
|
19
19
|
max?: number;
|
|
20
20
|
min?: number;
|
|
21
21
|
name?: string;
|
|
22
|
-
onBlur?: (event:
|
|
23
|
-
onChange?: (event:
|
|
24
|
-
onFocus?: (event:
|
|
25
|
-
onKeyDown?: (event:
|
|
26
|
-
onKeyUp?: (event:
|
|
22
|
+
onBlur?: (event: FocusEvent<HTMLInputElement>) => unknown;
|
|
23
|
+
onChange?: (event: ChangeEvent<HTMLInputElement>) => unknown;
|
|
24
|
+
onFocus?: (event: FocusEvent<HTMLInputElement>) => unknown;
|
|
25
|
+
onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => unknown;
|
|
26
|
+
onKeyUp?: (event: KeyboardEvent<HTMLInputElement>) => unknown;
|
|
27
27
|
/**
|
|
28
28
|
* Custom event handler triggered when the user presses enter/return
|
|
29
29
|
* or blurs the input after making a change. Hitting esc will restore
|
|
@@ -39,5 +39,5 @@ export type Props = {
|
|
|
39
39
|
validator?: ((value: string) => boolean) | RegExp;
|
|
40
40
|
value?: string;
|
|
41
41
|
};
|
|
42
|
-
declare const _default:
|
|
42
|
+
declare const _default: import('react').ForwardRefExoticComponent<Props & import('react').RefAttributes<HTMLInputElement>>;
|
|
43
43
|
export default _default;
|
package/dist/CSSValueInput.js
CHANGED
|
@@ -3,14 +3,9 @@ import { c } from "react/compiler-runtime";
|
|
|
3
3
|
import { DEFAULT_UNIT_BY_CSS_VALUE_TYPE, DEFAULT_CSS_VALUE_TYPE, getCSSValueAsNumber, getUnitFromCSSValue, getCSSValueWithUnit, roundToPrecision } from "@acusti/css-values";
|
|
4
4
|
import InputText from "@acusti/input-text";
|
|
5
5
|
import clsx from "clsx";
|
|
6
|
-
import
|
|
7
|
-
const {
|
|
8
|
-
useEffect,
|
|
9
|
-
useImperativeHandle,
|
|
10
|
-
useRef
|
|
11
|
-
} = React;
|
|
6
|
+
import { forwardRef, useRef, useImperativeHandle, useEffect } from "react";
|
|
12
7
|
const ROOT_CLASS_NAME = "cssvalueinput";
|
|
13
|
-
const CSSValueInput =
|
|
8
|
+
const CSSValueInput = forwardRef(function CSSValueInput2(t0, ref) {
|
|
14
9
|
const $ = c(56);
|
|
15
10
|
const {
|
|
16
11
|
allowEmpty: t1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CSSValueInput.js","sources":["../src/CSSValueInput.tsx"],"sourcesContent":["import {\n type CSSValueType,\n DEFAULT_CSS_VALUE_TYPE,\n DEFAULT_UNIT_BY_CSS_VALUE_TYPE,\n getCSSValueAsNumber,\n getCSSValueWithUnit,\n getUnitFromCSSValue,\n roundToPrecision,\n} from '@acusti/css-values';\nimport InputText from '@acusti/input-text';\nimport clsx from 'clsx';\nimport * as React from 'react';\n\nexport type Props = {\n /**\n * Boolean indicating if the user can submit an empty value (i.e. clear\n * the value). Defaults to true.\n */\n allowEmpty?: boolean;\n className?: string;\n cssValueType?: CSSValueType;\n disabled?: boolean;\n /**\n * Function that receives a value and converts it to its numerical equivalent\n * (i.e. '12px' → 12). Defaults to parseFloat().\n */\n getValueAsNumber?: (value: number | string) => number;\n icon?: React.ReactNode;\n label?: string;\n max?: number;\n min?: number;\n name?: string;\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => unknown;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => unknown;\n onFocus?: (event: React.FocusEvent<HTMLInputElement>) => unknown;\n onKeyDown?: (event: React.KeyboardEvent<HTMLInputElement>) => unknown;\n onKeyUp?: (event: React.KeyboardEvent<HTMLInputElement>) => unknown;\n /**\n * Custom event handler triggered when the user presses enter/return\n * or blurs the input after making a change. Hitting esc will restore\n * the previous submitted value or original value.\n */\n onSubmitValue: (value: string) => unknown;\n placeholder?: string;\n step?: number;\n tabIndex?: number;\n title?: string;\n unit?: string;\n /** Regex or validator function to validate non-numeric values */\n validator?: ((value: string) => boolean) | RegExp;\n value?: string;\n};\n\ntype InputRef = HTMLInputElement | null;\n\nconst { useEffect, useImperativeHandle, useRef } = React;\n\nconst ROOT_CLASS_NAME = 'cssvalueinput';\n\nexport default React.forwardRef<HTMLInputElement, Props>(function CSSValueInput(\n {\n allowEmpty = true,\n className,\n cssValueType = DEFAULT_CSS_VALUE_TYPE,\n disabled,\n getValueAsNumber = getCSSValueAsNumber,\n icon,\n label,\n max,\n min,\n name,\n onBlur,\n onChange,\n onFocus,\n onKeyDown,\n onKeyUp,\n onSubmitValue,\n placeholder,\n step = 1,\n tabIndex,\n title,\n unit = DEFAULT_UNIT_BY_CSS_VALUE_TYPE[cssValueType],\n validator,\n value: valueFromProps,\n }: Props,\n ref,\n) {\n const inputRef = useRef<InputRef>(null);\n useImperativeHandle<InputRef, InputRef>(ref, () => inputRef.current);\n // props.value should be a string; if it’s a number, convert it here\n const value =\n typeof valueFromProps === 'number' && !Number.isNaN(valueFromProps)\n ? `${valueFromProps}`\n : valueFromProps;\n const submittedValueRef = useRef<string>(value ?? '');\n\n useEffect(() => {\n submittedValueRef.current = value ?? '';\n }, [value]);\n\n const handleSubmitValue = (event: React.SyntheticEvent<HTMLInputElement>) => {\n const currentValue = event.currentTarget.value;\n // Store last submittedValue (used to reset value on invalid input)\n submittedValueRef.current = currentValue;\n onSubmitValue(currentValue);\n };\n\n const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const input = event.currentTarget;\n inputRef.current = input;\n if (onBlur) onBlur(event);\n\n const currentValue = input.value.trim();\n\n // If allowEmpty and value is empty, skip all validation + normalization\n if (allowEmpty && !currentValue) {\n handleSubmitValue(event);\n return;\n }\n\n const currentValueAsNumber = getValueAsNumber(currentValue);\n const isCurrentValueFinite = Number.isFinite(currentValueAsNumber);\n // Inherit unit from last submitted value unless default is unitless;\n // ensures that submitting a new value with no unit doesn’t add a unit\n const defaultUnit = unit\n ? getUnitFromCSSValue({\n cssValueType,\n defaultUnit: unit,\n value: submittedValueRef.current,\n })\n : '';\n\n if (!isCurrentValueFinite) {\n let isValid = false;\n if (validator instanceof RegExp) {\n isValid = validator.test(currentValue);\n } else if (validator) {\n isValid = validator(currentValue);\n }\n\n if (isValid) {\n handleSubmitValue(event);\n } else {\n // If current value isn’t valid, revert to last submitted value\n input.value = submittedValueRef.current;\n }\n\n return;\n }\n\n // Normalize value by applying min/max and integer constraints\n let normalizedValueAsNumber = currentValueAsNumber;\n\n if (isCurrentValueFinite) {\n if (min != null && currentValueAsNumber < min) {\n normalizedValueAsNumber = min;\n } else if (max != null && currentValueAsNumber > max) {\n normalizedValueAsNumber = max;\n } else if (cssValueType === 'integer') {\n normalizedValueAsNumber = Math.floor(currentValueAsNumber);\n }\n }\n\n if (normalizedValueAsNumber !== currentValueAsNumber) {\n const currentUnit = getUnitFromCSSValue({\n cssValueType,\n defaultUnit,\n value: currentValue,\n });\n input.value = normalizedValueAsNumber + currentUnit;\n } else {\n input.value = getCSSValueWithUnit({\n cssValueType,\n defaultUnit,\n value: currentValue,\n });\n }\n\n handleSubmitValue(event);\n };\n\n const getNextValue = ({\n currentValue,\n multiplier = 1,\n signum = 1,\n }: {\n currentValue: number | string;\n multiplier?: number;\n signum?: number;\n }) => {\n const modifier = multiplier * step * signum;\n const currentValueAsNumber = getValueAsNumber(currentValue);\n // If currentValue isn’t numeric, don’t try to increment/decrement it\n if (typeof currentValue === 'string' && Number.isNaN(currentValueAsNumber)) {\n return currentValue;\n }\n\n let nextValue = currentValueAsNumber + modifier;\n if (cssValueType === 'integer') {\n nextValue = Math.floor(nextValue);\n } else {\n nextValue = roundToPrecision(nextValue, 5);\n }\n\n if (typeof max === 'number' && Number.isFinite(max)) {\n nextValue = Math.min(max, nextValue);\n }\n\n if (typeof min === 'number' && Number.isFinite(min)) {\n nextValue = Math.max(min, nextValue);\n }\n\n const nextUnit = getUnitFromCSSValue({\n cssValueType,\n defaultUnit: unit,\n value: currentValue,\n });\n return `${nextValue}${nextUnit}`;\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const input = event.currentTarget;\n inputRef.current = input;\n if (onKeyDown) onKeyDown(event);\n\n const currentValue = input.value ?? placeholder ?? `0${unit}`;\n let nextValue = '';\n\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowUp':\n nextValue = getNextValue({\n currentValue,\n multiplier: event.shiftKey ? 10 : 1,\n signum: event.key === 'ArrowUp' ? 1 : -1,\n });\n\n if (nextValue === currentValue) return;\n\n event.stopPropagation();\n event.preventDefault();\n\n input.value = nextValue;\n return;\n case 'Enter':\n case 'Escape':\n if (event.key === 'Escape') {\n input.value = submittedValueRef.current;\n }\n input.blur();\n return;\n default:\n // No default key handling\n }\n };\n\n const handleKeyUp = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (onKeyUp) onKeyUp(event);\n // If this is the key up from ↑ or ↓ keys, time to handleSubmitValue\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n handleSubmitValue(event);\n }\n };\n\n return (\n <label\n aria-label={label ? undefined : title}\n className={clsx(ROOT_CLASS_NAME, className, { disabled })}\n title={title}\n >\n {icon == null ? null : (\n <div className={`${ROOT_CLASS_NAME}-icon`}>{icon}</div>\n )}\n {label ? (\n <div className={`${ROOT_CLASS_NAME}-label`}>\n <p className={`${ROOT_CLASS_NAME}-label-text`}>{label}</p>\n </div>\n ) : null}\n <div className={`${ROOT_CLASS_NAME}-value`}>\n <InputText\n disabled={disabled}\n initialValue={value}\n name={name}\n onBlur={handleBlur}\n onChange={onChange}\n onFocus={onFocus}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n placeholder={placeholder}\n ref={inputRef}\n selectTextOnFocus\n tabIndex={tabIndex}\n />\n </div>\n </label>\n );\n});\n"],"names":["useEffect","useImperativeHandle","useRef","React","ROOT_CLASS_NAME","forwardRef","CSSValueInput","t0","ref","$","_c","allowEmpty","t1","className","cssValueType","t2","disabled","getValueAsNumber","t3","icon","label","max","min","name","onBlur","onChange","onFocus","onKeyDown","onKeyUp","onSubmitValue","placeholder","step","t4","tabIndex","title","unit","t5","validator","value","valueFromProps","undefined","DEFAULT_CSS_VALUE_TYPE","getCSSValueAsNumber","DEFAULT_UNIT_BY_CSS_VALUE_TYPE","inputRef","t6","Symbol","for","current","Number","isNaN","submittedValueRef","t7","t8","t9","event","currentValue","currentTarget","handleSubmitValue","t10","event_0","input","currentValue_0","trim","currentValueAsNumber","isCurrentValueFinite","isFinite","defaultUnit","getUnitFromCSSValue","isValid","RegExp","test","normalizedValueAsNumber","currentUnit","getCSSValueWithUnit","handleBlur","t11","t12","currentValue_1","multiplier","t13","signum","t14","modifier","currentValueAsNumber_0","nextValue","nextUnit","getNextValue","event_1","input_0","currentValue_2","nextValue_0","key","shiftKey","stopPropagation","preventDefault","blur","handleKeyDown","event_2","handleKeyUp","t15","clsx","t16","t17","t18","t19"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CSSValueInput.js","sources":["../src/CSSValueInput.tsx"],"sourcesContent":["import {\n type CSSValueType,\n DEFAULT_CSS_VALUE_TYPE,\n DEFAULT_UNIT_BY_CSS_VALUE_TYPE,\n getCSSValueAsNumber,\n getCSSValueWithUnit,\n getUnitFromCSSValue,\n roundToPrecision,\n} from '@acusti/css-values';\nimport InputText from '@acusti/input-text';\nimport clsx from 'clsx';\nimport {\n type ChangeEvent,\n type FocusEvent,\n forwardRef,\n type KeyboardEvent,\n type ReactNode,\n type SyntheticEvent,\n useEffect,\n useImperativeHandle,\n useRef,\n} from 'react';\n\nexport type Props = {\n /**\n * Boolean indicating if the user can submit an empty value (i.e. clear\n * the value). Defaults to true.\n */\n allowEmpty?: boolean;\n className?: string;\n cssValueType?: CSSValueType;\n disabled?: boolean;\n /**\n * Function that receives a value and converts it to its numerical equivalent\n * (i.e. '12px' → 12). Defaults to parseFloat().\n */\n getValueAsNumber?: (value: number | string) => number;\n icon?: ReactNode;\n label?: string;\n max?: number;\n min?: number;\n name?: string;\n onBlur?: (event: FocusEvent<HTMLInputElement>) => unknown;\n onChange?: (event: ChangeEvent<HTMLInputElement>) => unknown;\n onFocus?: (event: FocusEvent<HTMLInputElement>) => unknown;\n onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => unknown;\n onKeyUp?: (event: KeyboardEvent<HTMLInputElement>) => unknown;\n /**\n * Custom event handler triggered when the user presses enter/return\n * or blurs the input after making a change. Hitting esc will restore\n * the previous submitted value or original value.\n */\n onSubmitValue: (value: string) => unknown;\n placeholder?: string;\n step?: number;\n tabIndex?: number;\n title?: string;\n unit?: string;\n /** Regex or validator function to validate non-numeric values */\n validator?: ((value: string) => boolean) | RegExp;\n value?: string;\n};\n\ntype InputRef = HTMLInputElement | null;\n\nconst ROOT_CLASS_NAME = 'cssvalueinput';\n\nexport default forwardRef<HTMLInputElement, Props>(function CSSValueInput(\n {\n allowEmpty = true,\n className,\n cssValueType = DEFAULT_CSS_VALUE_TYPE,\n disabled,\n getValueAsNumber = getCSSValueAsNumber,\n icon,\n label,\n max,\n min,\n name,\n onBlur,\n onChange,\n onFocus,\n onKeyDown,\n onKeyUp,\n onSubmitValue,\n placeholder,\n step = 1,\n tabIndex,\n title,\n unit = DEFAULT_UNIT_BY_CSS_VALUE_TYPE[cssValueType],\n validator,\n value: valueFromProps,\n }: Props,\n ref,\n) {\n const inputRef = useRef<InputRef>(null);\n useImperativeHandle<InputRef, InputRef>(ref, () => inputRef.current);\n // props.value should be a string; if it’s a number, convert it here\n const value =\n typeof valueFromProps === 'number' && !Number.isNaN(valueFromProps)\n ? `${valueFromProps}`\n : valueFromProps;\n const submittedValueRef = useRef<string>(value ?? '');\n\n useEffect(() => {\n submittedValueRef.current = value ?? '';\n }, [value]);\n\n const handleSubmitValue = (event: SyntheticEvent<HTMLInputElement>) => {\n const currentValue = event.currentTarget.value;\n // Store last submittedValue (used to reset value on invalid input)\n submittedValueRef.current = currentValue;\n onSubmitValue(currentValue);\n };\n\n const handleBlur = (event: FocusEvent<HTMLInputElement>) => {\n const input = event.currentTarget;\n inputRef.current = input;\n if (onBlur) onBlur(event);\n\n const currentValue = input.value.trim();\n\n // If allowEmpty and value is empty, skip all validation + normalization\n if (allowEmpty && !currentValue) {\n handleSubmitValue(event);\n return;\n }\n\n const currentValueAsNumber = getValueAsNumber(currentValue);\n const isCurrentValueFinite = Number.isFinite(currentValueAsNumber);\n // Inherit unit from last submitted value unless default is unitless;\n // ensures that submitting a new value with no unit doesn’t add a unit\n const defaultUnit = unit\n ? getUnitFromCSSValue({\n cssValueType,\n defaultUnit: unit,\n value: submittedValueRef.current,\n })\n : '';\n\n if (!isCurrentValueFinite) {\n let isValid = false;\n if (validator instanceof RegExp) {\n isValid = validator.test(currentValue);\n } else if (validator) {\n isValid = validator(currentValue);\n }\n\n if (isValid) {\n handleSubmitValue(event);\n } else {\n // If current value isn’t valid, revert to last submitted value\n input.value = submittedValueRef.current;\n }\n\n return;\n }\n\n // Normalize value by applying min/max and integer constraints\n let normalizedValueAsNumber = currentValueAsNumber;\n\n if (isCurrentValueFinite) {\n if (min != null && currentValueAsNumber < min) {\n normalizedValueAsNumber = min;\n } else if (max != null && currentValueAsNumber > max) {\n normalizedValueAsNumber = max;\n } else if (cssValueType === 'integer') {\n normalizedValueAsNumber = Math.floor(currentValueAsNumber);\n }\n }\n\n if (normalizedValueAsNumber !== currentValueAsNumber) {\n const currentUnit = getUnitFromCSSValue({\n cssValueType,\n defaultUnit,\n value: currentValue,\n });\n input.value = normalizedValueAsNumber + currentUnit;\n } else {\n input.value = getCSSValueWithUnit({\n cssValueType,\n defaultUnit,\n value: currentValue,\n });\n }\n\n handleSubmitValue(event);\n };\n\n const getNextValue = ({\n currentValue,\n multiplier = 1,\n signum = 1,\n }: {\n currentValue: number | string;\n multiplier?: number;\n signum?: number;\n }) => {\n const modifier = multiplier * step * signum;\n const currentValueAsNumber = getValueAsNumber(currentValue);\n // If currentValue isn’t numeric, don’t try to increment/decrement it\n if (typeof currentValue === 'string' && Number.isNaN(currentValueAsNumber)) {\n return currentValue;\n }\n\n let nextValue = currentValueAsNumber + modifier;\n if (cssValueType === 'integer') {\n nextValue = Math.floor(nextValue);\n } else {\n nextValue = roundToPrecision(nextValue, 5);\n }\n\n if (typeof max === 'number' && Number.isFinite(max)) {\n nextValue = Math.min(max, nextValue);\n }\n\n if (typeof min === 'number' && Number.isFinite(min)) {\n nextValue = Math.max(min, nextValue);\n }\n\n const nextUnit = getUnitFromCSSValue({\n cssValueType,\n defaultUnit: unit,\n value: currentValue,\n });\n return `${nextValue}${nextUnit}`;\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n const input = event.currentTarget;\n inputRef.current = input;\n if (onKeyDown) onKeyDown(event);\n\n const currentValue = input.value ?? placeholder ?? `0${unit}`;\n let nextValue = '';\n\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowUp':\n nextValue = getNextValue({\n currentValue,\n multiplier: event.shiftKey ? 10 : 1,\n signum: event.key === 'ArrowUp' ? 1 : -1,\n });\n\n if (nextValue === currentValue) return;\n\n event.stopPropagation();\n event.preventDefault();\n\n input.value = nextValue;\n return;\n case 'Enter':\n case 'Escape':\n if (event.key === 'Escape') {\n input.value = submittedValueRef.current;\n }\n input.blur();\n return;\n default:\n // No default key handling\n }\n };\n\n const handleKeyUp = (event: KeyboardEvent<HTMLInputElement>) => {\n if (onKeyUp) onKeyUp(event);\n // If this is the key up from ↑ or ↓ keys, time to handleSubmitValue\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n handleSubmitValue(event);\n }\n };\n\n return (\n <label\n aria-label={label ? undefined : title}\n className={clsx(ROOT_CLASS_NAME, className, { disabled })}\n title={title}\n >\n {icon == null ? null : (\n <div className={`${ROOT_CLASS_NAME}-icon`}>{icon}</div>\n )}\n {label ? (\n <div className={`${ROOT_CLASS_NAME}-label`}>\n <p className={`${ROOT_CLASS_NAME}-label-text`}>{label}</p>\n </div>\n ) : null}\n <div className={`${ROOT_CLASS_NAME}-value`}>\n <InputText\n disabled={disabled}\n initialValue={value}\n name={name}\n onBlur={handleBlur}\n onChange={onChange}\n onFocus={onFocus}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n placeholder={placeholder}\n ref={inputRef}\n selectTextOnFocus\n tabIndex={tabIndex}\n />\n </div>\n </label>\n );\n});\n"],"names":["ROOT_CLASS_NAME","forwardRef","CSSValueInput","t0","ref","$","_c","allowEmpty","t1","className","cssValueType","t2","disabled","getValueAsNumber","t3","icon","label","max","min","name","onBlur","onChange","onFocus","onKeyDown","onKeyUp","onSubmitValue","placeholder","step","t4","tabIndex","title","unit","t5","validator","value","valueFromProps","undefined","DEFAULT_CSS_VALUE_TYPE","getCSSValueAsNumber","DEFAULT_UNIT_BY_CSS_VALUE_TYPE","inputRef","useRef","t6","Symbol","for","current","useImperativeHandle","Number","isNaN","submittedValueRef","t7","t8","useEffect","t9","event","currentValue","currentTarget","handleSubmitValue","t10","event_0","input","currentValue_0","trim","currentValueAsNumber","isCurrentValueFinite","isFinite","defaultUnit","getUnitFromCSSValue","isValid","RegExp","test","normalizedValueAsNumber","currentUnit","getCSSValueWithUnit","handleBlur","t11","t12","currentValue_1","multiplier","t13","signum","t14","modifier","currentValueAsNumber_0","nextValue","nextUnit","getNextValue","event_1","input_0","currentValue_2","nextValue_0","key","shiftKey","stopPropagation","preventDefault","blur","handleKeyDown","event_2","handleKeyUp","t15","clsx","t16","t17","t18","t19"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acusti/css-value-input",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"exports": "./dist/CSSValueInput.js",
|
|
@@ -41,20 +41,20 @@
|
|
|
41
41
|
"@testing-library/dom": "^10.4.0",
|
|
42
42
|
"@testing-library/react": "^16.3.0",
|
|
43
43
|
"@testing-library/user-event": "^14.6.1",
|
|
44
|
-
"@types/react": "^19.1.
|
|
45
|
-
"@vitejs/plugin-react": "^4.
|
|
44
|
+
"@types/react": "^19.1.8",
|
|
45
|
+
"@vitejs/plugin-react": "^4.6.0",
|
|
46
46
|
"babel-plugin-react-compiler": "rc",
|
|
47
|
-
"happy-dom": "^
|
|
47
|
+
"happy-dom": "^18.0.1",
|
|
48
48
|
"react": "^19.0.0",
|
|
49
49
|
"react-dom": "^19.0.0",
|
|
50
50
|
"typescript": "5.8.3",
|
|
51
|
-
"unplugin-dts": "^1.0.0-beta.
|
|
52
|
-
"vite": "^
|
|
53
|
-
"vitest": "^3.
|
|
51
|
+
"unplugin-dts": "^1.0.0-beta.2",
|
|
52
|
+
"vite": "^7.0.0-0",
|
|
53
|
+
"vitest": "^3.2.4"
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
56
|
"@acusti/css-values": "^1.2.0",
|
|
57
|
-
"@acusti/input-text": "^2.
|
|
57
|
+
"@acusti/input-text": "^2.1.0",
|
|
58
58
|
"clsx": "^2"
|
|
59
59
|
},
|
|
60
60
|
"peerDependencies": {
|