@acusti/css-value-input 2.2.1 → 2.2.2
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.js +113 -123
- package/dist/CSSValueInput.js.map +1 -1
- package/package.json +2 -2
package/dist/CSSValueInput.js
CHANGED
|
@@ -3,7 +3,7 @@ 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 { useRef,
|
|
6
|
+
import { useRef, useEffect } from "react";
|
|
7
7
|
const ROOT_CLASS_NAME = "cssvalueinput";
|
|
8
8
|
function CSSValueInput(t0) {
|
|
9
9
|
const $ = c(56);
|
|
@@ -38,49 +38,39 @@ function CSSValueInput(t0) {
|
|
|
38
38
|
const getValueAsNumber = t3 === void 0 ? getCSSValueAsNumber : t3;
|
|
39
39
|
const step = t4 === void 0 ? 1 : t4;
|
|
40
40
|
const unit = t5 === void 0 ? DEFAULT_UNIT_BY_CSS_VALUE_TYPE[cssValueType] : t5;
|
|
41
|
-
const inputRef = useRef(null);
|
|
42
|
-
let t6;
|
|
43
|
-
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
44
|
-
t6 = () => inputRef.current;
|
|
45
|
-
$[0] = t6;
|
|
46
|
-
} else {
|
|
47
|
-
t6 = $[0];
|
|
48
|
-
}
|
|
49
|
-
useImperativeHandle(ref, t6);
|
|
50
41
|
const value = typeof valueFromProps === "number" && Number.isFinite(valueFromProps) ? `${valueFromProps}` : valueFromProps;
|
|
51
42
|
const submittedValueRef = useRef(value ?? "");
|
|
43
|
+
let t6;
|
|
52
44
|
let t7;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
t7 = () => {
|
|
45
|
+
if ($[0] !== value) {
|
|
46
|
+
t6 = () => {
|
|
56
47
|
submittedValueRef.current = value ?? "";
|
|
57
48
|
};
|
|
58
|
-
|
|
59
|
-
$[
|
|
49
|
+
t7 = [value];
|
|
50
|
+
$[0] = value;
|
|
51
|
+
$[1] = t6;
|
|
60
52
|
$[2] = t7;
|
|
61
|
-
$[3] = t8;
|
|
62
53
|
} else {
|
|
54
|
+
t6 = $[1];
|
|
63
55
|
t7 = $[2];
|
|
64
|
-
t8 = $[3];
|
|
65
56
|
}
|
|
66
|
-
useEffect(
|
|
67
|
-
let
|
|
68
|
-
if ($[
|
|
69
|
-
|
|
57
|
+
useEffect(t6, t7);
|
|
58
|
+
let t8;
|
|
59
|
+
if ($[3] !== onSubmitValue) {
|
|
60
|
+
t8 = (event) => {
|
|
70
61
|
submittedValueRef.current = event.currentTarget.value;
|
|
71
62
|
onSubmitValue(event.currentTarget.value);
|
|
72
63
|
};
|
|
73
|
-
$[
|
|
74
|
-
$[
|
|
64
|
+
$[3] = onSubmitValue;
|
|
65
|
+
$[4] = t8;
|
|
75
66
|
} else {
|
|
76
|
-
|
|
67
|
+
t8 = $[4];
|
|
77
68
|
}
|
|
78
|
-
const handleSubmitValue =
|
|
79
|
-
let
|
|
80
|
-
if ($[
|
|
81
|
-
|
|
69
|
+
const handleSubmitValue = t8;
|
|
70
|
+
let t9;
|
|
71
|
+
if ($[5] !== allowEmpty || $[6] !== cssValueType || $[7] !== getValueAsNumber || $[8] !== handleSubmitValue || $[9] !== max || $[10] !== min || $[11] !== onBlur || $[12] !== unit || $[13] !== validator) {
|
|
72
|
+
t9 = (event_0) => {
|
|
82
73
|
const input = event_0.currentTarget;
|
|
83
|
-
inputRef.current = input;
|
|
84
74
|
if (onBlur) {
|
|
85
75
|
onBlur(event_0);
|
|
86
76
|
}
|
|
@@ -142,30 +132,30 @@ function CSSValueInput(t0) {
|
|
|
142
132
|
}
|
|
143
133
|
handleSubmitValue(event_0);
|
|
144
134
|
};
|
|
145
|
-
$[
|
|
146
|
-
$[
|
|
147
|
-
$[
|
|
148
|
-
$[
|
|
149
|
-
$[
|
|
150
|
-
$[
|
|
151
|
-
$[
|
|
152
|
-
$[
|
|
153
|
-
$[
|
|
154
|
-
$[
|
|
135
|
+
$[5] = allowEmpty;
|
|
136
|
+
$[6] = cssValueType;
|
|
137
|
+
$[7] = getValueAsNumber;
|
|
138
|
+
$[8] = handleSubmitValue;
|
|
139
|
+
$[9] = max;
|
|
140
|
+
$[10] = min;
|
|
141
|
+
$[11] = onBlur;
|
|
142
|
+
$[12] = unit;
|
|
143
|
+
$[13] = validator;
|
|
144
|
+
$[14] = t9;
|
|
155
145
|
} else {
|
|
156
|
-
|
|
146
|
+
t9 = $[14];
|
|
157
147
|
}
|
|
158
|
-
const handleBlur =
|
|
159
|
-
let
|
|
160
|
-
if ($[
|
|
161
|
-
|
|
148
|
+
const handleBlur = t9;
|
|
149
|
+
let t10;
|
|
150
|
+
if ($[15] !== cssValueType || $[16] !== getValueAsNumber || $[17] !== max || $[18] !== min || $[19] !== step || $[20] !== unit) {
|
|
151
|
+
t10 = (t112) => {
|
|
162
152
|
const {
|
|
163
153
|
currentValue: currentValue_0,
|
|
164
|
-
multiplier:
|
|
165
|
-
signum:
|
|
166
|
-
} =
|
|
167
|
-
const multiplier =
|
|
168
|
-
const signum =
|
|
154
|
+
multiplier: t122,
|
|
155
|
+
signum: t132
|
|
156
|
+
} = t112;
|
|
157
|
+
const multiplier = t122 === void 0 ? 1 : t122;
|
|
158
|
+
const signum = t132 === void 0 ? 1 : t132;
|
|
169
159
|
const modifier = multiplier * step * signum;
|
|
170
160
|
const currentValueAsNumber_0 = getValueAsNumber(currentValue_0);
|
|
171
161
|
if (typeof currentValue_0 === "string" && Number.isNaN(currentValueAsNumber_0)) {
|
|
@@ -190,22 +180,21 @@ function CSSValueInput(t0) {
|
|
|
190
180
|
});
|
|
191
181
|
return `${nextValue}${nextUnit}`;
|
|
192
182
|
};
|
|
193
|
-
$[
|
|
194
|
-
$[
|
|
195
|
-
$[
|
|
196
|
-
$[
|
|
197
|
-
$[
|
|
198
|
-
$[
|
|
199
|
-
$[
|
|
183
|
+
$[15] = cssValueType;
|
|
184
|
+
$[16] = getValueAsNumber;
|
|
185
|
+
$[17] = max;
|
|
186
|
+
$[18] = min;
|
|
187
|
+
$[19] = step;
|
|
188
|
+
$[20] = unit;
|
|
189
|
+
$[21] = t10;
|
|
200
190
|
} else {
|
|
201
|
-
|
|
191
|
+
t10 = $[21];
|
|
202
192
|
}
|
|
203
|
-
const getNextValue =
|
|
204
|
-
let
|
|
205
|
-
if ($[
|
|
206
|
-
|
|
193
|
+
const getNextValue = t10;
|
|
194
|
+
let t11;
|
|
195
|
+
if ($[22] !== getNextValue || $[23] !== onKeyDown || $[24] !== placeholder || $[25] !== unit) {
|
|
196
|
+
t11 = (event_1) => {
|
|
207
197
|
const input_0 = event_1.currentTarget;
|
|
208
|
-
inputRef.current = input_0;
|
|
209
198
|
if (onKeyDown) {
|
|
210
199
|
onKeyDown(event_1);
|
|
211
200
|
}
|
|
@@ -225,18 +214,18 @@ function CSSValueInput(t0) {
|
|
|
225
214
|
event_1.preventDefault();
|
|
226
215
|
input_0.value = nextValue_0;
|
|
227
216
|
};
|
|
228
|
-
$[
|
|
229
|
-
$[
|
|
230
|
-
$[
|
|
231
|
-
$[
|
|
232
|
-
$[
|
|
217
|
+
$[22] = getNextValue;
|
|
218
|
+
$[23] = onKeyDown;
|
|
219
|
+
$[24] = placeholder;
|
|
220
|
+
$[25] = unit;
|
|
221
|
+
$[26] = t11;
|
|
233
222
|
} else {
|
|
234
|
-
|
|
223
|
+
t11 = $[26];
|
|
235
224
|
}
|
|
236
|
-
const handleKeyDown =
|
|
237
|
-
let
|
|
238
|
-
if ($[
|
|
239
|
-
|
|
225
|
+
const handleKeyDown = t11;
|
|
226
|
+
let t12;
|
|
227
|
+
if ($[27] !== handleSubmitValue || $[28] !== onKeyUp) {
|
|
228
|
+
t12 = (event_2) => {
|
|
240
229
|
if (onKeyUp) {
|
|
241
230
|
onKeyUp(event_2);
|
|
242
231
|
}
|
|
@@ -244,76 +233,77 @@ function CSSValueInput(t0) {
|
|
|
244
233
|
handleSubmitValue(event_2);
|
|
245
234
|
}
|
|
246
235
|
};
|
|
247
|
-
$[
|
|
248
|
-
$[
|
|
249
|
-
$[
|
|
236
|
+
$[27] = handleSubmitValue;
|
|
237
|
+
$[28] = onKeyUp;
|
|
238
|
+
$[29] = t12;
|
|
250
239
|
} else {
|
|
251
|
-
|
|
240
|
+
t12 = $[29];
|
|
252
241
|
}
|
|
253
|
-
const handleKeyUp =
|
|
254
|
-
const
|
|
255
|
-
let
|
|
256
|
-
if ($[
|
|
257
|
-
|
|
242
|
+
const handleKeyUp = t12;
|
|
243
|
+
const t13 = label ? void 0 : title;
|
|
244
|
+
let t14;
|
|
245
|
+
if ($[30] !== className || $[31] !== disabled) {
|
|
246
|
+
t14 = clsx(ROOT_CLASS_NAME, className, {
|
|
258
247
|
disabled
|
|
259
248
|
});
|
|
260
|
-
$[
|
|
261
|
-
$[
|
|
262
|
-
$[
|
|
249
|
+
$[30] = className;
|
|
250
|
+
$[31] = disabled;
|
|
251
|
+
$[32] = t14;
|
|
263
252
|
} else {
|
|
264
|
-
|
|
253
|
+
t14 = $[32];
|
|
265
254
|
}
|
|
266
|
-
let
|
|
267
|
-
if ($[
|
|
268
|
-
|
|
269
|
-
$[
|
|
270
|
-
$[
|
|
255
|
+
let t15;
|
|
256
|
+
if ($[33] !== icon) {
|
|
257
|
+
t15 = icon == null ? null : /* @__PURE__ */ jsx("div", { className: `${ROOT_CLASS_NAME}-icon`, children: icon });
|
|
258
|
+
$[33] = icon;
|
|
259
|
+
$[34] = t15;
|
|
271
260
|
} else {
|
|
272
|
-
|
|
261
|
+
t15 = $[34];
|
|
273
262
|
}
|
|
274
|
-
let
|
|
275
|
-
if ($[
|
|
276
|
-
|
|
277
|
-
$[
|
|
278
|
-
$[
|
|
263
|
+
let t16;
|
|
264
|
+
if ($[35] !== label) {
|
|
265
|
+
t16 = label ? /* @__PURE__ */ jsx("div", { className: `${ROOT_CLASS_NAME}-label`, children: /* @__PURE__ */ jsx("p", { className: `${ROOT_CLASS_NAME}-label-text`, children: label }) }) : null;
|
|
266
|
+
$[35] = label;
|
|
267
|
+
$[36] = t16;
|
|
279
268
|
} else {
|
|
280
|
-
|
|
269
|
+
t16 = $[36];
|
|
281
270
|
}
|
|
282
|
-
let
|
|
283
|
-
if ($[
|
|
284
|
-
|
|
285
|
-
$[
|
|
286
|
-
$[
|
|
287
|
-
$[
|
|
288
|
-
$[
|
|
289
|
-
$[
|
|
290
|
-
$[
|
|
291
|
-
$[
|
|
292
|
-
$[
|
|
271
|
+
let t17;
|
|
272
|
+
if ($[37] !== disabled || $[38] !== handleBlur || $[39] !== handleKeyDown || $[40] !== handleKeyUp || $[41] !== name || $[42] !== onChange || $[43] !== onFocus || $[44] !== placeholder || $[45] !== ref || $[46] !== tabIndex || $[47] !== value) {
|
|
273
|
+
t17 = /* @__PURE__ */ jsx("div", { className: `${ROOT_CLASS_NAME}-value`, children: /* @__PURE__ */ jsx(InputText, { disabled, discardOnEscape: true, initialValue: value, name, onBlur: handleBlur, onChange, onFocus, onKeyDown: handleKeyDown, onKeyUp: handleKeyUp, placeholder, ref, selectTextOnFocus: true, tabIndex }) });
|
|
274
|
+
$[37] = disabled;
|
|
275
|
+
$[38] = handleBlur;
|
|
276
|
+
$[39] = handleKeyDown;
|
|
277
|
+
$[40] = handleKeyUp;
|
|
278
|
+
$[41] = name;
|
|
279
|
+
$[42] = onChange;
|
|
280
|
+
$[43] = onFocus;
|
|
281
|
+
$[44] = placeholder;
|
|
282
|
+
$[45] = ref;
|
|
293
283
|
$[46] = tabIndex;
|
|
294
284
|
$[47] = value;
|
|
295
|
-
$[48] =
|
|
285
|
+
$[48] = t17;
|
|
296
286
|
} else {
|
|
297
|
-
|
|
287
|
+
t17 = $[48];
|
|
298
288
|
}
|
|
299
|
-
let
|
|
300
|
-
if ($[49] !==
|
|
301
|
-
|
|
289
|
+
let t18;
|
|
290
|
+
if ($[49] !== t13 || $[50] !== t14 || $[51] !== t15 || $[52] !== t16 || $[53] !== t17 || $[54] !== title) {
|
|
291
|
+
t18 = /* @__PURE__ */ jsxs("label", { "aria-label": t13, className: t14, title, children: [
|
|
292
|
+
t15,
|
|
302
293
|
t16,
|
|
303
|
-
t17
|
|
304
|
-
t18
|
|
294
|
+
t17
|
|
305
295
|
] });
|
|
306
|
-
$[49] =
|
|
307
|
-
$[50] =
|
|
308
|
-
$[51] =
|
|
309
|
-
$[52] =
|
|
310
|
-
$[53] =
|
|
296
|
+
$[49] = t13;
|
|
297
|
+
$[50] = t14;
|
|
298
|
+
$[51] = t15;
|
|
299
|
+
$[52] = t16;
|
|
300
|
+
$[53] = t17;
|
|
311
301
|
$[54] = title;
|
|
312
|
-
$[55] =
|
|
302
|
+
$[55] = t18;
|
|
313
303
|
} else {
|
|
314
|
-
|
|
304
|
+
t18 = $[55];
|
|
315
305
|
}
|
|
316
|
-
return
|
|
306
|
+
return t18;
|
|
317
307
|
}
|
|
318
308
|
export {
|
|
319
309
|
CSSValueInput as default
|
|
@@ -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 {\n type ChangeEvent,\n type FocusEvent,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\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 ref?: Ref<HTMLInputElement>;\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 function CSSValueInput({\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 ref,\n step = 1,\n tabIndex,\n title,\n unit = DEFAULT_UNIT_BY_CSS_VALUE_TYPE[cssValueType],\n validator,\n value: valueFromProps,\n}: Props) {\n const inputRef = useRef<InputRef>(null);\n\n useImperativeHandle<InputRef, InputRef>(ref, () => inputRef.current);\n\n // props.value should be a string; if it’s a number, convert it here\n const value =\n typeof valueFromProps === 'number' && Number.isFinite(valueFromProps)\n ? `${valueFromProps}`\n : valueFromProps;\n const submittedValueRef = useRef(value ?? '');\n\n useEffect(() => {\n submittedValueRef.current = value ?? '';\n }, [value]);\n\n const handleSubmitValue = (event: SyntheticEvent<HTMLInputElement>) => {\n // Store last submittedValue (used to reset value on invalid input)\n submittedValueRef.current = event.currentTarget.value;\n onSubmitValue(event.currentTarget.value);\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 if (event.key !== 'ArrowDown' && event.key !== 'ArrowUp') return;\n\n const currentValue = input.value ?? placeholder ?? `0${unit}`;\n const 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 };\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 discardOnEscape\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","CSSValueInput","t0","$","_c","allowEmpty","t1","className","cssValueType","t2","disabled","getValueAsNumber","t3","icon","label","max","min","name","onBlur","onChange","onFocus","onKeyDown","onKeyUp","onSubmitValue","placeholder","ref","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","isFinite","submittedValueRef","t7","t8","useEffect","t9","event","currentTarget","handleSubmitValue","t10","event_0","input","currentValue","trim","currentValueAsNumber","isCurrentValueFinite","defaultUnit","getUnitFromCSSValue","isValid","RegExp","test","normalizedValueAsNumber","Math","floor","currentUnit","getCSSValueWithUnit","handleBlur","t11","t12","currentValue_0","multiplier","t13","signum","t14","modifier","currentValueAsNumber_0","isNaN","nextValue","roundToPrecision","nextUnit","getNextValue","event_1","input_0","key","currentValue_1","nextValue_0","shiftKey","stopPropagation","preventDefault","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 type KeyboardEvent,\n type ReactNode,\n type Ref,\n type SyntheticEvent,\n useEffect,\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 ref?: Ref<HTMLInputElement>;\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\nconst ROOT_CLASS_NAME = 'cssvalueinput';\n\nexport default function CSSValueInput({\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 ref,\n step = 1,\n tabIndex,\n title,\n unit = DEFAULT_UNIT_BY_CSS_VALUE_TYPE[cssValueType],\n validator,\n value: valueFromProps,\n}: Props) {\n // props.value should be a string; if it’s a number, convert it here\n const value =\n typeof valueFromProps === 'number' && Number.isFinite(valueFromProps)\n ? `${valueFromProps}`\n : valueFromProps;\n const submittedValueRef = useRef(value ?? '');\n\n useEffect(() => {\n submittedValueRef.current = value ?? '';\n }, [value]);\n\n const handleSubmitValue = (event: SyntheticEvent<HTMLInputElement>) => {\n // Store last submittedValue (used to reset value on invalid input)\n submittedValueRef.current = event.currentTarget.value;\n onSubmitValue(event.currentTarget.value);\n };\n\n const handleBlur = (event: FocusEvent<HTMLInputElement>) => {\n const input = event.currentTarget;\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 if (onKeyDown) onKeyDown(event);\n if (event.key !== 'ArrowDown' && event.key !== 'ArrowUp') return;\n\n const currentValue = input.value ?? placeholder ?? `0${unit}`;\n const 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 };\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 discardOnEscape\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={ref}\n selectTextOnFocus\n tabIndex={tabIndex}\n />\n </div>\n </label>\n );\n}\n"],"names":["ROOT_CLASS_NAME","CSSValueInput","t0","$","_c","allowEmpty","t1","className","cssValueType","t2","disabled","getValueAsNumber","t3","icon","label","max","min","name","onBlur","onChange","onFocus","onKeyDown","onKeyUp","onSubmitValue","placeholder","ref","step","t4","tabIndex","title","unit","t5","validator","value","valueFromProps","undefined","DEFAULT_CSS_VALUE_TYPE","getCSSValueAsNumber","DEFAULT_UNIT_BY_CSS_VALUE_TYPE","Number","isFinite","submittedValueRef","useRef","t6","t7","current","useEffect","t8","event","currentTarget","handleSubmitValue","t9","event_0","input","currentValue","trim","currentValueAsNumber","isCurrentValueFinite","defaultUnit","getUnitFromCSSValue","isValid","RegExp","test","normalizedValueAsNumber","Math","floor","currentUnit","getCSSValueWithUnit","handleBlur","t10","t11","currentValue_0","multiplier","t12","signum","t13","modifier","currentValueAsNumber_0","isNaN","nextValue","roundToPrecision","nextUnit","getNextValue","event_1","input_0","key","currentValue_1","nextValue_0","shiftKey","stopPropagation","preventDefault","handleKeyDown","event_2","handleKeyUp","t14","clsx","t15","t16","t17","t18"],"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.2.
|
|
3
|
+
"version": "2.2.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"exports": "./dist/CSSValueInput.js",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
56
|
"@acusti/css-values": "^1.2.0",
|
|
57
|
-
"@acusti/input-text": "^2.2.
|
|
57
|
+
"@acusti/input-text": "^2.2.2",
|
|
58
58
|
"clsx": "^2"
|
|
59
59
|
},
|
|
60
60
|
"peerDependencies": {
|