{"version":3,"names":["createContext","createMemo","createSignal","runWithOwner","untrack","useContext","createChangeEventDetails","REASONS","readOption","SNAPSHOT_KEYS","snapshotKeys","useIsoLayoutEffect","DEFAULT_STEP","formatNumber","formatNumberMaxPrecision","BASE_NON_NUMERIC_SYMBOLS","getNumberLocaleDetails","MINUS_SIGNS_WITH_ASCII","PERCENTAGES","PERMILLE","PLUS_SIGNS_WITH_ASCII","SPACE_SEPARATOR_RE","toValidatedNumber","NumberFieldContext","useNumberField","ctx","Error","getControlledInputValue","value","locale","format","explicitPrecision","maximumFractionDigits","minimumFractionDigits","IS_IOS","navigator","test","platform","createNumberField","options","name","smallStep","largeStep","stepRaw","step","s","min","max","minWithDefault","Number","MIN_SAFE_INTEGER","maxWithDefault","MAX_SAFE_INTEGER","minWithZeroDefault","allowOutOfRange","snapOnStep","inputValue","setInputValueState","ownedWrite","inputMode","setInputMode","lo","newMode","shouldSync","shouldSyncInput","undefined","current","nextInputValue","formatOptionsRef","getStepAmount","event","altKey","shiftKey","getAllowedNonNumericKeys","decimal","group","currency","literal","keys","Set","symbol","add","style","fmtUnit","unit","allowPercentSymbols","allowPermilleSymbols","k","ch","Array","from","setValue","raw","details","eventWithKeys","dir","direction","reason","shouldClamp","inputChange","inputBlur","inputPaste","inputClear","none","validatedValue","small","clamp","isInputReason","currentValue","shouldFireChange","onValueChange","isCanceled","increment","amount","prevValue","nextValue","Math","commitValue","next","onValueCommitted","setInputValue","api","Provider","props","children","NUMBER_FIELD_SNAPSHOT_KEYS"],"sources":["create-number-field.tsx"],"sourcesContent":["import type { JSX } from \"@solidjs/web\";\nimport {\n\ttype Accessor,\n\tcreateContext,\n\tcreateMemo,\n\tcreateSignal,\n\trunWithOwner,\n\tuntrack,\n\tuseContext,\n} from \"solid-js\";\nimport {\n\tcreateChangeEventDetails,\n\tREASONS,\n} from \"../internals/change-event-details\";\nimport { type MaybeAccessor, readOption } from \"../internals/maybe-accessor\";\nimport {\n\tSNAPSHOT_KEYS,\n\ttype Snapshottable,\n\tsnapshotKeys,\n} from \"../internals/observability/snapshot\";\nimport { useIsoLayoutEffect } from \"../internals/use-iso-layout-effect.ts\";\nimport type {\n\tNumberFieldRootChangeEventDetails,\n\tNumberFieldRootCommitEventDetails,\n} from \"./root/number-field-root-context.ts\";\nimport { DEFAULT_STEP } from \"./utils/constants.ts\";\nimport {\n\tformatNumber,\n\tformatNumberMaxPrecision,\n} from \"./utils/format-number.ts\";\nimport {\n\tBASE_NON_NUMERIC_SYMBOLS,\n\tgetNumberLocaleDetails,\n\tMINUS_SIGNS_WITH_ASCII,\n\tPERCENTAGES,\n\tPERMILLE,\n\tPLUS_SIGNS_WITH_ASCII,\n\tSPACE_SEPARATOR_RE,\n} from \"./utils/parse.ts\";\nimport type {\n\tEventWithOptionalKeyState,\n\tIncrementValueParameters,\n} from \"./utils/types.ts\";\nimport { toValidatedNumber } from \"./utils/validate.ts\";\n\nexport type {\n\tNumberFieldRootChangeEventDetails,\n\tNumberFieldRootCommitEventDetails,\n};\n\nexport type NumberFieldChangeReason =\n\t| typeof REASONS.inputChange\n\t| typeof REASONS.inputClear\n\t| typeof REASONS.inputBlur\n\t| typeof REASONS.inputPaste\n\t| typeof REASONS.keyboard\n\t| typeof REASONS.incrementPress\n\t| typeof REASONS.decrementPress\n\t| typeof REASONS.wheel\n\t| typeof REASONS.scrub\n\t| typeof REASONS.none;\n\nexport type NumberFieldCommitReason =\n\t| typeof REASONS.inputBlur\n\t| typeof REASONS.inputClear\n\t| typeof REASONS.keyboard\n\t| typeof REASONS.incrementPress\n\t| typeof REASONS.decrementPress\n\t| typeof REASONS.wheel\n\t| typeof REASONS.scrub\n\t| typeof REASONS.none;\n\nexport type NumberFieldInputMode = \"numeric\" | \"decimal\" | \"text\";\n\n/**\n * Options for {@link createNumberField}.\n *\n * All reactive inputs accept `MaybeAccessor<T>`. No internal state — the\n * consumer's signal is the sole source of truth.\n */\nexport interface CreateNumberFieldOptions {\n\t/** Consumer-owned value. `null` means empty. */\n\tvalue: MaybeAccessor<number | null>;\n\t/** @default 0.1 */\n\tsmallStep?: MaybeAccessor<number | undefined>;\n\t/** @default 1 */\n\tstep?: MaybeAccessor<number | \"any\" | undefined>;\n\t/** @default 10 */\n\tlargeStep?: MaybeAccessor<number | undefined>;\n\tmin?: MaybeAccessor<number | undefined>;\n\tmax?: MaybeAccessor<number | undefined>;\n\t/**\n\t * When true, keyboard/button/wheel changes still clamp, but direct text\n\t * entry may exceed the range so native `rangeUnderflow`/`rangeOverflow`\n\t * validation can fire.\n\t * @default false\n\t */\n\tallowOutOfRange?: MaybeAccessor<boolean | undefined>;\n\t/** @default false */\n\tsnapOnStep?: MaybeAccessor<boolean | undefined>;\n\tformat?: MaybeAccessor<Intl.NumberFormatOptions | undefined>;\n\tlocale?: MaybeAccessor<Intl.LocalesArgument | undefined>;\n\t/**\n\t * Pure event-emitter. The consumer's signal write is the only writer.\n\t * Use `runWithOwner(null, ...)` pattern — already applied internally.\n\t */\n\tonValueChange?: (\n\t\tvalue: number | null,\n\t\tdetails: NumberFieldRootChangeEventDetails,\n\t) => void;\n\t/**\n\t * Guard checked before syncing `inputValue` after a `setValue` call.\n\t * Pass `() => allowInputSyncRef.current` from the wrapper to suppress\n\t * input sync during IME composition.\n\t */\n\tshouldSyncInput?: MaybeAccessor<boolean | undefined>;\n\tonValueCommitted?: (\n\t\tvalue: number | null,\n\t\tdetails: NumberFieldRootCommitEventDetails,\n\t) => void;\n}\n\n/**\n * Public API returned by {@link createNumberField}.\n */\nexport interface NumberFieldApi {\n\t/** Consumer-supplied value (memoized, null = empty). */\n\tvalue: Accessor<number | null>;\n\t/** Formatted display string for the visible input. */\n\tinputValue: Accessor<string>;\n\t/** Resolved `min` (defaults to `Number.MIN_SAFE_INTEGER`). */\n\tminWithDefault: Accessor<number>;\n\t/** Resolved `max` (defaults to `Number.MAX_SAFE_INTEGER`). */\n\tmaxWithDefault: Accessor<number>;\n\t/** Raw `min` (undefined if not set). */\n\tmin: Accessor<number | undefined>;\n\t/** Raw `max` (undefined if not set). */\n\tmax: Accessor<number | undefined>;\n\t/** Resolved step amount (never \"any\" — \"any\" coerces to 1). */\n\tstep: Accessor<number>;\n\t/** Small-step amount (Alt+Arrow). */\n\tsmallStep: Accessor<number>;\n\t/** Large-step amount (Shift+Arrow). */\n\tlargeStep: Accessor<number>;\n\t/** `inputmode` attribute for the visible input (iOS-aware). */\n\tinputMode: Accessor<NumberFieldInputMode>;\n\t/**\n\t * Validated + formatted write. Returns whether a change was emitted.\n\t * Validation, clamping, step-snap, and formatting are applied before\n\t * `onValueChange` fires.\n\t */\n\tsetValue: (\n\t\traw: number | null,\n\t\tdetails: NumberFieldRootChangeEventDetails,\n\t) => boolean;\n\t/**\n\t * Step-based increment / decrement. Adds `amount * direction` to the\n\t * current value (or `max(0, min)` when empty) then validates.\n\t */\n\tincrement: (amount: number, params: IncrementValueParameters) => boolean;\n\t/** Fire `onValueCommitted`. */\n\tcommitValue: (\n\t\tnext: number | null,\n\t\tdetails: NumberFieldRootCommitEventDetails,\n\t) => void;\n\t/**\n\t * Step amount for a given keyboard event — `smallStep` (Alt), `largeStep`\n\t * (Shift), or `step`.\n\t */\n\tgetStepAmount: (event?: EventWithOptionalKeyState) => number | undefined;\n\t/**\n\t * Set of non-numeric characters the visible input should accept. Computed\n\t * from locale + format options.\n\t */\n\tgetAllowedNonNumericKeys: () => Set<string | undefined>;\n\t/** Resolved locale (undefined = runtime default). */\n\tlocale: Accessor<Intl.LocalesArgument | undefined>;\n\t/**\n\t * Override the displayed input string. Called by `<NumberField.Input>` to\n\t * hold partial input while editing (e.g. mid-entry decimal).\n\t */\n\tsetInputValue: (next: string) => void;\n\t/**\n\t * Context provider. Wrap a subtree to make the api accessible via\n\t * `useNumberField()` without prop-drilling.\n\t */\n\tProvider: (props: { children: JSX.Element }) => JSX.Element;\n}\n\nconst NumberFieldContext = createContext<NumberFieldApi | null>(null);\n\n/**\n * Read the nearest {@link NumberFieldApi} provided by `c.Provider`. Throws if\n * called outside a Provider.\n */\nexport function useNumberField(): NumberFieldApi {\n\tconst ctx = useContext(NumberFieldContext);\n\tif (ctx == null) {\n\t\tthrow new Error(\n\t\t\t\"Base UI: useNumberField() must be called inside a <c.Provider>.\",\n\t\t);\n\t}\n\treturn ctx;\n}\n\nfunction getControlledInputValue(\n\tvalue: number | null,\n\tlocale: Intl.LocalesArgument | undefined,\n\tformat: Intl.NumberFormatOptions | undefined,\n): string {\n\tconst explicitPrecision =\n\t\tformat?.maximumFractionDigits != null ||\n\t\tformat?.minimumFractionDigits != null;\n\treturn explicitPrecision\n\t\t? formatNumber(value, locale, format)\n\t\t: formatNumberMaxPrecision(value, locale, format);\n}\n\nconst IS_IOS =\n\ttypeof navigator !== \"undefined\" &&\n\t/iP(ad|hone|od)/.test(navigator.platform ?? \"\");\n\n/**\n * Solid 2.0-native headless primitive for a number field. Owns logical\n * state: value normalization, step math, formatting, and increment/decrement.\n * DOM concerns (visible input ref, hidden input, wheel listener, field\n * validation wiring) stay in `<NumberField.Root>`.\n */\nexport function createNumberField(\n\toptions: CreateNumberFieldOptions,\n): NumberFieldApi {\n\tconst value = createMemo<number | null>(\n\t\t() => readOption(options.value) ?? null,\n\t\t{ name: \"numberField.value\" },\n\t);\n\n\tconst smallStep = createMemo<number>(\n\t\t() => readOption(options.smallStep) ?? 0.1,\n\t\t{ name: \"numberField.smallStep\" },\n\t);\n\tconst largeStep = createMemo<number>(\n\t\t() => readOption(options.largeStep) ?? 10,\n\t\t{ name: \"numberField.largeStep\" },\n\t);\n\tconst stepRaw = createMemo<number | \"any\">(\n\t\t() => readOption(options.step) ?? 1,\n\t\t{ name: \"numberField.step\" },\n\t);\n\tconst step = createMemo<number>(\n\t\t() => {\n\t\t\tconst s = stepRaw();\n\t\t\treturn s === \"any\" ? 1 : s;\n\t\t},\n\t\t{ name: \"numberField.stepResolved\" },\n\t);\n\tconst min = createMemo<number | undefined>(() => readOption(options.min), {\n\t\tname: \"numberField.min\",\n\t});\n\tconst max = createMemo<number | undefined>(() => readOption(options.max), {\n\t\tname: \"numberField.max\",\n\t});\n\tconst minWithDefault = createMemo<number>(\n\t\t() => min() ?? Number.MIN_SAFE_INTEGER,\n\t\t{ name: \"numberField.minWithDefault\" },\n\t);\n\tconst maxWithDefault = createMemo<number>(\n\t\t() => max() ?? Number.MAX_SAFE_INTEGER,\n\t\t{ name: \"numberField.maxWithDefault\" },\n\t);\n\tconst minWithZeroDefault = createMemo<number>(() => min() ?? 0, {\n\t\tname: \"numberField.minWithZeroDefault\",\n\t});\n\tconst format = createMemo<Intl.NumberFormatOptions | undefined>(\n\t\t() => readOption(options.format),\n\t\t{ name: \"numberField.format\" },\n\t);\n\tconst locale = createMemo<Intl.LocalesArgument | undefined>(\n\t\t() => readOption(options.locale),\n\t\t{ name: \"numberField.locale\" },\n\t);\n\tconst allowOutOfRange = createMemo<boolean>(\n\t\t() => readOption(options.allowOutOfRange) === true,\n\t\t{ name: \"numberField.allowOutOfRange\" },\n\t);\n\tconst snapOnStep = createMemo<boolean>(\n\t\t() => readOption(options.snapOnStep) === true,\n\t\t{ name: \"numberField.snapOnStep\" },\n\t);\n\n\t// Visible input text. Initialized from the starting value.\n\tconst [inputValue, setInputValueState] = createSignal<string>(\n\t\tuntrack(() => getControlledInputValue(value(), locale(), format())),\n\t\t{ ownedWrite: true, name: \"numberField.inputValue\" },\n\t);\n\n\tconst [inputMode, setInputMode] = createSignal<NumberFieldInputMode>(\n\t\t\"numeric\",\n\t\t{ ownedWrite: true, name: \"numberField.inputMode\" },\n\t);\n\n\t// Keep inputMode in sync for iOS.\n\tif (IS_IOS) {\n\t\tcreateMemo(() => {\n\t\t\tconst lo = minWithDefault();\n\t\t\tconst newMode: NumberFieldInputMode = lo >= 0 ? \"decimal\" : \"text\";\n\t\t\tsetInputMode(newMode);\n\t\t});\n\t}\n\n\t// Sync inputValue whenever the external value / locale / format changes\n\t// (e.g. consumer writes their signal from outside). The shouldSyncInput\n\t// guard suppresses this during IME composition.\n\tuseIsoLayoutEffect(\n\t\t() => [value(), locale(), format()] as const,\n\t\t() =>\n\t\t\tuntrack(() => {\n\t\t\t\tconst shouldSync = readOption(options.shouldSyncInput) ?? true;\n\t\t\t\tif (!shouldSync) return undefined;\n\t\t\t\tconst current = value();\n\t\t\t\tconst nextInputValue = getControlledInputValue(\n\t\t\t\t\tcurrent,\n\t\t\t\t\tlocale(),\n\t\t\t\t\tformat(),\n\t\t\t\t);\n\t\t\t\tif (nextInputValue !== inputValue()) {\n\t\t\t\t\tsetInputValueState(nextInputValue);\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t\t}),\n\t);\n\n\t// Mutable ref — read synchronously from event handlers.\n\tconst formatOptionsRef: { current: Intl.NumberFormatOptions | undefined } = {\n\t\tcurrent: untrack(format),\n\t};\n\n\tfunction getStepAmount(\n\t\tevent?: EventWithOptionalKeyState,\n\t): number | undefined {\n\t\tif (event?.altKey) return smallStep();\n\t\tif (event?.shiftKey) return largeStep();\n\t\treturn step();\n\t}\n\n\tfunction getAllowedNonNumericKeys(): Set<string | undefined> {\n\t\tconst { decimal, group, currency, literal } = getNumberLocaleDetails(\n\t\t\tlocale(),\n\t\t\tformat(),\n\t\t);\n\n\t\tconst keys = new Set<string | undefined>();\n\t\tfor (const symbol of BASE_NON_NUMERIC_SYMBOLS) keys.add(symbol);\n\t\tif (decimal) keys.add(decimal);\n\t\tif (group) {\n\t\t\tkeys.add(group);\n\t\t\tif (SPACE_SEPARATOR_RE.test(group)) keys.add(\" \");\n\t\t}\n\n\t\tconst style = format()?.style;\n\t\tconst fmtUnit = format()?.unit;\n\t\tconst allowPercentSymbols =\n\t\t\tstyle === \"percent\" || (style === \"unit\" && fmtUnit === \"percent\");\n\t\tconst allowPermilleSymbols =\n\t\t\tstyle === \"percent\" || (style === \"unit\" && fmtUnit === \"permille\");\n\n\t\tif (allowPercentSymbols) for (const k of PERCENTAGES) keys.add(k);\n\t\tif (allowPermilleSymbols) for (const k of PERMILLE) keys.add(k);\n\n\t\tif (style === \"currency\" && currency) keys.add(currency);\n\n\t\tif (literal) {\n\t\t\tfor (const ch of Array.from(literal)) keys.add(ch);\n\t\t\tif (SPACE_SEPARATOR_RE.test(literal)) keys.add(\" \");\n\t\t}\n\n\t\tfor (const k of PLUS_SIGNS_WITH_ASCII) keys.add(k);\n\t\tif (minWithDefault() < 0) {\n\t\t\tfor (const k of MINUS_SIGNS_WITH_ASCII) keys.add(k);\n\t\t}\n\n\t\treturn keys;\n\t}\n\n\tfunction setValue(\n\t\traw: number | null,\n\t\tdetails: NumberFieldRootChangeEventDetails,\n\t): boolean {\n\t\tconst eventWithKeys = details.event as\n\t\t\t| EventWithOptionalKeyState\n\t\t\t| undefined;\n\t\tconst dir = (details as { direction?: -1 | 1 }).direction;\n\t\tconst reason = details.reason;\n\t\tconst shouldClamp =\n\t\t\t!allowOutOfRange() ||\n\t\t\t!(\n\t\t\t\treason === REASONS.inputChange ||\n\t\t\t\treason === REASONS.inputBlur ||\n\t\t\t\treason === REASONS.inputPaste ||\n\t\t\t\treason === REASONS.inputClear ||\n\t\t\t\treason === REASONS.none\n\t\t\t);\n\n\t\tconst validatedValue = toValidatedNumber(raw, {\n\t\t\tstep: dir\n\t\t\t\t? (getStepAmount(eventWithKeys) ?? DEFAULT_STEP) * dir\n\t\t\t\t: undefined,\n\t\t\tformat: formatOptionsRef.current,\n\t\t\tminWithDefault: minWithDefault(),\n\t\t\tmaxWithDefault: maxWithDefault(),\n\t\t\tminWithZeroDefault: minWithZeroDefault(),\n\t\t\tsnapOnStep: snapOnStep(),\n\t\t\tsmall: eventWithKeys?.altKey ?? false,\n\t\t\tclamp: shouldClamp,\n\t\t});\n\n\t\tconst isInputReason =\n\t\t\treason === REASONS.inputChange ||\n\t\t\treason === REASONS.inputClear ||\n\t\t\treason === REASONS.inputBlur ||\n\t\t\treason === REASONS.inputPaste ||\n\t\t\treason === REASONS.none;\n\t\tconst currentValue = value();\n\t\tconst shouldFireChange = validatedValue !== currentValue || isInputReason;\n\n\t\tif (shouldFireChange) {\n\t\t\t// Pure event-emitter — runWithOwner(null) escapes the reactive owner\n\t\t\t// so consumer signal writes don't trip SIGNAL_WRITE_IN_OWNED_SCOPE.\n\t\t\trunWithOwner(null, () =>\n\t\t\t\toptions.onValueChange?.(validatedValue, details),\n\t\t\t);\n\n\t\t\tif (details.isCanceled) {\n\t\t\t\treturn shouldFireChange;\n\t\t\t}\n\n\t\t\t// Respect the wrapper's IME-composition guard; defaults to true.\n\t\t\tconst shouldSync = readOption(options.shouldSyncInput) ?? true;\n\t\t\tif (shouldSync) {\n\t\t\t\tsetInputValueState(formatNumber(validatedValue, locale(), format()));\n\t\t\t}\n\t\t}\n\n\t\treturn shouldFireChange;\n\t}\n\n\tfunction increment(\n\t\tamount: number,\n\t\t{ direction, currentValue, event, reason }: IncrementValueParameters,\n\t): boolean {\n\t\tconst prevValue = currentValue == null ? untrack(value) : currentValue;\n\t\tconst nextValue =\n\t\t\ttypeof prevValue === \"number\"\n\t\t\t\t? prevValue + amount * direction\n\t\t\t\t: Math.max(0, untrack(min) ?? 0);\n\t\treturn setValue(\n\t\t\tnextValue,\n\t\t\tcreateChangeEventDetails(reason, event as never, undefined, {\n\t\t\t\tdirection,\n\t\t\t}),\n\t\t);\n\t}\n\n\tfunction commitValue(\n\t\tnext: number | null,\n\t\tdetails: NumberFieldRootCommitEventDetails,\n\t): void {\n\t\trunWithOwner(null, () => options.onValueCommitted?.(next, details));\n\t}\n\n\tfunction setInputValue(next: string): void {\n\t\tsetInputValueState(next);\n\t}\n\n\tconst api: NumberFieldApi = {\n\t\tvalue,\n\t\tinputValue,\n\t\tminWithDefault,\n\t\tmaxWithDefault,\n\t\tmin,\n\t\tmax,\n\t\tstep,\n\t\tsmallStep,\n\t\tlargeStep,\n\t\tinputMode,\n\t\tlocale,\n\t\tsetValue,\n\t\tincrement,\n\t\tcommitValue,\n\t\tgetStepAmount,\n\t\tgetAllowedNonNumericKeys,\n\t\tsetInputValue,\n\t\tProvider: (props) => (\n\t\t\t<NumberFieldContext value={api}>{props.children}</NumberFieldContext>\n\t\t),\n\t};\n\t(api as NumberFieldApi & Snapshottable)[SNAPSHOT_KEYS] =\n\t\tNUMBER_FIELD_SNAPSHOT_KEYS;\n\treturn api;\n}\n\nconst NUMBER_FIELD_SNAPSHOT_KEYS = snapshotKeys<NumberFieldApi>(\n\t\"value\",\n\t\"inputValue\",\n\t\"min\",\n\t\"max\",\n\t\"step\",\n\t\"smallStep\",\n\t\"largeStep\",\n\t\"inputMode\",\n);\n"],"mappings":"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","ignoreList":[]}