@spectrum-web-components/number-field 0.39.0 → 0.39.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.
@@ -221,6 +221,12 @@
221
221
  "privacy": "private",
222
222
  "default": "''"
223
223
  },
224
+ {
225
+ "kind": "field",
226
+ "name": "lastCommitedValue",
227
+ "privacy": "private",
228
+ "default": "NaN"
229
+ },
224
230
  {
225
231
  "kind": "field",
226
232
  "name": "valueAsString",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spectrum-web-components/number-field",
3
- "version": "0.39.0",
3
+ "version": "0.39.2",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -58,13 +58,13 @@
58
58
  ],
59
59
  "dependencies": {
60
60
  "@internationalized/number": "^3.1.0",
61
- "@spectrum-web-components/action-button": "^0.39.0",
62
- "@spectrum-web-components/base": "^0.39.0",
63
- "@spectrum-web-components/icon": "^0.39.0",
64
- "@spectrum-web-components/icons-ui": "^0.39.0",
65
- "@spectrum-web-components/reactive-controllers": "^0.39.0",
66
- "@spectrum-web-components/shared": "^0.39.0",
67
- "@spectrum-web-components/textfield": "^0.39.0"
61
+ "@spectrum-web-components/action-button": "^0.39.2",
62
+ "@spectrum-web-components/base": "^0.39.2",
63
+ "@spectrum-web-components/icon": "^0.39.2",
64
+ "@spectrum-web-components/icons-ui": "^0.39.2",
65
+ "@spectrum-web-components/reactive-controllers": "^0.39.2",
66
+ "@spectrum-web-components/shared": "^0.39.2",
67
+ "@spectrum-web-components/textfield": "^0.39.2"
68
68
  },
69
69
  "devDependencies": {
70
70
  "@formatjs/intl-numberformat": "^8.3.5",
@@ -76,5 +76,5 @@
76
76
  "./sp-*.js",
77
77
  "./**/*.dev.js"
78
78
  ],
79
- "gitHead": "2acc8390ef0ac6cc940958d4da705c9859155c0d"
79
+ "gitHead": "23d7b50761ce6de28a82a7626632d3bbc88924fb"
80
80
  }
@@ -50,6 +50,7 @@ export declare class NumberField extends TextfieldBase {
50
50
  private get inputValue();
51
51
  _value: number;
52
52
  private _trackingValue;
53
+ private lastCommitedValue;
53
54
  /**
54
55
  * Retreive the value of the element parsed to a Number.
55
56
  */
@@ -96,6 +96,7 @@ export class NumberField extends TextfieldBase {
96
96
  this.stepModifier = 10;
97
97
  this._value = NaN;
98
98
  this._trackingValue = "";
99
+ this.lastCommitedValue = NaN;
99
100
  this.changeCount = 0;
100
101
  this.languageResolver = new LanguageResolutionController(this);
101
102
  this.wasIndeterminate = false;
@@ -114,6 +115,12 @@ export class NumberField extends TextfieldBase {
114
115
  }
115
116
  const oldValue = this._value;
116
117
  this._value = value;
118
+ if (!this.managedInput && this.lastCommitedValue !== this.value) {
119
+ this.dispatchEvent(
120
+ new Event("change", { bubbles: true, composed: true })
121
+ );
122
+ this.lastCommitedValue = this.value;
123
+ }
117
124
  this.requestUpdate("value", oldValue);
118
125
  }
119
126
  get value() {
@@ -196,9 +203,12 @@ export class NumberField extends TextfieldBase {
196
203
  this.buttons.releasePointerCapture(event.pointerId);
197
204
  cancelAnimationFrame(this.nextChange);
198
205
  clearTimeout(this.safty);
199
- this.dispatchEvent(
200
- new Event("change", { bubbles: true, composed: true })
201
- );
206
+ if (this.lastCommitedValue !== this.value) {
207
+ this.dispatchEvent(
208
+ new Event("change", { bubbles: true, composed: true })
209
+ );
210
+ this.lastCommitedValue = this.value;
211
+ }
202
212
  this.managedInput = false;
203
213
  }
204
214
  doNextChange(event) {
@@ -241,16 +251,10 @@ export class NumberField extends TextfieldBase {
241
251
  case "ArrowUp":
242
252
  event.preventDefault();
243
253
  this.increment(event.shiftKey ? this.stepModifier : 1);
244
- this.dispatchEvent(
245
- new Event("change", { bubbles: true, composed: true })
246
- );
247
254
  break;
248
255
  case "ArrowDown":
249
256
  event.preventDefault();
250
257
  this.decrement(event.shiftKey ? this.stepModifier : 1);
251
- this.dispatchEvent(
252
- new Event("change", { bubbles: true, composed: true })
253
- );
254
258
  break;
255
259
  }
256
260
  }
@@ -265,6 +269,7 @@ export class NumberField extends TextfieldBase {
265
269
  this.dispatchEvent(
266
270
  new Event("change", { bubbles: true, composed: true })
267
271
  );
272
+ this.lastCommitedValue = this.value;
268
273
  }, CHANGE_DEBOUNCE_MS);
269
274
  }
270
275
  this.managedInput = false;
@@ -299,7 +304,11 @@ export class NumberField extends TextfieldBase {
299
304
  }
300
305
  }
301
306
  this.value = value;
302
- super.handleChange();
307
+ this.inputElement.value = this.formattedValue;
308
+ if (this.lastCommitedValue !== this.value) {
309
+ this.lastCommitedValue = this.value;
310
+ super.handleChange();
311
+ }
303
312
  }
304
313
  handleCompositionStart() {
305
314
  this.isComposing = true;
@@ -352,6 +361,8 @@ export class NumberField extends TextfieldBase {
352
361
  this.inputElement.setSelectionRange(nextSelectStart, nextSelectStart);
353
362
  }
354
363
  validateInput(value) {
364
+ const signMultiplier = value < 0 ? -1 : 1;
365
+ value *= signMultiplier;
355
366
  if (typeof this.min !== "undefined") {
356
367
  value = Math.max(this.min, value);
357
368
  }
@@ -376,6 +387,7 @@ export class NumberField extends TextfieldBase {
376
387
  }
377
388
  }
378
389
  }
390
+ value *= signMultiplier;
379
391
  return value;
380
392
  }
381
393
  get displayValue() {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["NumberField.ts"],
4
- "sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport {\n CSSResultArray,\n html,\n nothing,\n PropertyValues,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n property,\n query,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport {\n LanguageResolutionController,\n languageResolverUpdatedSymbol,\n} from '@spectrum-web-components/reactive-controllers/src/LanguageResolution.js';\nimport { streamingListener } from '@spectrum-web-components/base/src/streaming-listener.js';\nimport { NumberFormatter, NumberParser } from '@internationalized/number';\n\nimport '@spectrum-web-components/icons-ui/icons/sp-icon-chevron75.js';\nimport '@spectrum-web-components/icons-ui/icons/sp-icon-chevron100.js';\nimport '@spectrum-web-components/icons-ui/icons/sp-icon-chevron200.js';\nimport '@spectrum-web-components/action-button/sp-action-button.js';\nimport {\n isAndroid,\n isIPhone,\n} from '@spectrum-web-components/shared/src/platform.js';\nimport { TextfieldBase } from '@spectrum-web-components/textfield';\nimport chevronStyles from '@spectrum-web-components/icon/src/spectrum-icon-chevron.css.js';\nimport styles from './number-field.css.js';\n\nexport const FRAMES_PER_CHANGE = 5;\n// Debounce duration for inserting a `change` event after a batch of `wheel` originating `input` events.\nexport const CHANGE_DEBOUNCE_MS = 100;\nexport const indeterminatePlaceholder = '-';\nexport const remapMultiByteCharacters: Record<string, string> = {\n '\uFF11': '1',\n '\uFF12': '2',\n '\uFF13': '3',\n '\uFF14': '4',\n '\uFF15': '5',\n '\uFF16': '6',\n '\uFF17': '7',\n '\uFF18': '8',\n '\uFF19': '9',\n '\uFF10': '0',\n '\u3001': ',',\n '\uFF0C': ',',\n '\u3002': '.',\n '\uFF0E': '.',\n '\uFF05': '%',\n '\uFF0B': '+',\n \u30FC: '-',\n};\n\nconst chevronIcon: Record<string, (dir: 'Down' | 'Up') => TemplateResult> = {\n s: (dir) => html`\n <sp-icon-chevron75\n slot=\"icon\"\n class=\"stepper-icon spectrum-UIIcon-Chevron${dir}75\"\n ></sp-icon-chevron75>\n `,\n m: (dir) => html`\n <sp-icon-chevron75\n slot=\"icon\"\n class=\"stepper-icon spectrum-UIIcon-Chevron${dir}75\"\n ></sp-icon-chevron75>\n `,\n l: (dir) => html`\n <sp-icon-chevron100\n slot=\"icon\"\n class=\"stepper-icon spectrum-UIIcon-Chevron${dir}100\"\n ></sp-icon-chevron100>\n `,\n xl: (dir) => html`\n <sp-icon-chevron200\n slot=\"icon\"\n class=\"stepper-icon spectrum-UIIcon-Chevron${dir}200\"\n ></sp-icon-chevron200>\n `,\n};\n\n/**\n * @element sp-number-field\n * @slot help-text - default or non-negative help text to associate to your form element\n * @slot negative-help-text - negative help text to associate to your form element when `invalid`\n */\nexport class NumberField extends TextfieldBase {\n public static override get styles(): CSSResultArray {\n return [...super.styles, styles, chevronStyles];\n }\n\n @query('.buttons')\n private buttons!: HTMLDivElement;\n\n @property({ type: Boolean, reflect: true })\n public override focused = false;\n\n _forcedUnit = '';\n\n /**\n * An `&lt;sp-number-field&gt;` element will process its numeric value with\n * `new Intl.NumberFormat(this.resolvedLanguage, this.formatOptions).format(this.valueAsNumber)`\n * in order to prepare it for visual delivery in the input. In order to customize this\n * processing supply your own `Intl.NumberFormatOptions` object here.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat\n */\n @property({ type: Object, attribute: 'format-options' })\n public formatOptions: Intl.NumberFormatOptions = {};\n\n /**\n * Whether the stepper UI is hidden or not.\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-stepper' })\n public hideStepper = false;\n\n @property({ type: Boolean, reflect: true })\n public indeterminate = false;\n\n @property({ type: Boolean, reflect: true, attribute: 'keyboard-focused' })\n public keyboardFocused = false;\n\n @property({ type: Number })\n public max?: number;\n\n @property({ type: Number })\n public min?: number;\n\n /**\n * The distance by which to alter the value of the element when taking a \"step\".\n *\n * When `this.formatOptions.style === 'percentage'` the default step will be\n * set to 0.01 unless otherwise supplied to the element.\n */\n @property({ type: Number })\n public step?: number;\n\n public managedInput = false;\n\n @property({ type: Number, reflect: true, attribute: 'step-modifier' })\n public stepModifier = 10;\n\n @property({ type: Number })\n public override set value(rawValue: number) {\n const value = this.validateInput(rawValue);\n if (value === this.value) {\n return;\n }\n const oldValue = this._value;\n this._value = value;\n this.requestUpdate('value', oldValue);\n }\n\n public override get value(): number {\n return this._value;\n }\n\n private get inputValue(): string {\n return this.indeterminate\n ? this.formattedValue\n : this.inputElement.value;\n }\n\n public override _value = NaN;\n private _trackingValue = '';\n\n /**\n * Retreive the value of the element parsed to a Number.\n */\n public get valueAsString(): string {\n return this._value.toString();\n }\n\n public set valueAsString(value: string) {\n this.value = this.numberParser.parse(value);\n }\n\n public get formattedValue(): string {\n if (isNaN(this.value)) return '';\n return (\n this.numberFormatter.format(this.value) +\n (this.focused ? '' : this._forcedUnit)\n );\n }\n\n private convertValueToNumber(value: string): number {\n if (isIPhone() && this.inputElement.inputMode === 'decimal') {\n const parts = this.numberFormatter.formatToParts(1000.1);\n const sourceDecimal = value\n .split('')\n .find((char) => char === ',' || char === '.');\n const replacementDecimal = parts.find(\n (part) => part.type === 'decimal'\n )?.value;\n if (sourceDecimal && replacementDecimal) {\n value = value.replace(sourceDecimal, replacementDecimal);\n }\n }\n return this.numberParser.parse(value);\n }\n\n private get _step(): number {\n if (typeof this.step !== 'undefined') {\n return this.step;\n }\n if (this.formatOptions?.style === 'percent') {\n return 0.01;\n }\n return 1;\n }\n\n private nextChange!: number;\n private changeCount = 0;\n private findChange!: (event: PointerEvent) => void;\n private change!: (event: PointerEvent) => void;\n private safty!: number;\n private languageResolver = new LanguageResolutionController(this);\n\n private handlePointerdown(event: PointerEvent): void {\n if (event.button !== 0) {\n event.preventDefault();\n return;\n }\n this.managedInput = true;\n this.buttons.setPointerCapture(event.pointerId);\n const stepUpRect = this.buttons.children[0].getBoundingClientRect();\n const stepDownRect = this.buttons.children[1].getBoundingClientRect();\n this.findChange = (event: PointerEvent) => {\n if (\n event.clientX >= stepUpRect.x &&\n event.clientY >= stepUpRect.y &&\n event.clientX <= stepUpRect.x + stepUpRect.width &&\n event.clientY <= stepUpRect.y + stepUpRect.height\n ) {\n this.change = (event: PointerEvent) =>\n this.increment(event.shiftKey ? this.stepModifier : 1);\n } else if (\n event.clientX >= stepDownRect.x &&\n event.clientY >= stepDownRect.y &&\n event.clientX <= stepDownRect.x + stepDownRect.width &&\n event.clientY <= stepDownRect.y + stepDownRect.height\n ) {\n this.change = (event: PointerEvent) =>\n this.decrement(event.shiftKey ? this.stepModifier : 1);\n }\n };\n this.findChange(event);\n this.startChange(event);\n }\n\n private startChange(event: PointerEvent): void {\n this.changeCount = 0;\n this.doChange(event);\n this.safty = setTimeout(() => {\n this.doNextChange(event);\n }, 400) as unknown as number;\n }\n\n private doChange(event: PointerEvent): void {\n this.change(event);\n }\n\n private handlePointermove(event: PointerEvent): void {\n this.findChange(event);\n }\n\n private handlePointerup(event: PointerEvent): void {\n this.buttons.releasePointerCapture(event.pointerId);\n cancelAnimationFrame(this.nextChange);\n clearTimeout(this.safty);\n this.dispatchEvent(\n new Event('change', { bubbles: true, composed: true })\n );\n this.managedInput = false;\n }\n\n private doNextChange(event: PointerEvent): number {\n this.changeCount += 1;\n if (this.changeCount % FRAMES_PER_CHANGE === 0) {\n this.doChange(event);\n }\n return requestAnimationFrame(() => {\n this.nextChange = this.doNextChange(event);\n });\n }\n\n private stepBy(count: number): void {\n if (this.disabled || this.readonly) {\n return;\n }\n const min = typeof this.min !== 'undefined' ? this.min : 0;\n let value = this.value;\n value += count * this._step;\n if (isNaN(this.value)) {\n this.value = min;\n } else {\n this.value = value;\n }\n this.dispatchEvent(\n new Event('input', { bubbles: true, composed: true })\n );\n this.indeterminate = false;\n this.focus();\n }\n\n private increment(factor = 1): void {\n this.stepBy(1 * factor);\n }\n\n private decrement(factor = 1): void {\n this.stepBy(-1 * factor);\n }\n\n private handleKeydown(event: KeyboardEvent): void {\n if (this.isComposing) return;\n switch (event.code) {\n case 'ArrowUp':\n event.preventDefault();\n this.increment(event.shiftKey ? this.stepModifier : 1);\n this.dispatchEvent(\n new Event('change', { bubbles: true, composed: true })\n );\n break;\n case 'ArrowDown':\n event.preventDefault();\n this.decrement(event.shiftKey ? this.stepModifier : 1);\n this.dispatchEvent(\n new Event('change', { bubbles: true, composed: true })\n );\n break;\n }\n }\n\n private queuedChangeEvent!: number;\n\n protected onScroll(event: WheelEvent): void {\n event.preventDefault();\n this.managedInput = true;\n const direction = event.shiftKey\n ? event.deltaX / Math.abs(event.deltaX)\n : event.deltaY / Math.abs(event.deltaY);\n if (direction !== 0 && !isNaN(direction)) {\n this.stepBy(direction * (event.shiftKey ? this.stepModifier : 1));\n clearTimeout(this.queuedChangeEvent);\n this.queuedChangeEvent = setTimeout(() => {\n this.dispatchEvent(\n new Event('change', { bubbles: true, composed: true })\n );\n }, CHANGE_DEBOUNCE_MS) as unknown as number;\n }\n this.managedInput = false;\n }\n\n protected override onFocus(): void {\n super.onFocus();\n this._trackingValue = this.inputValue;\n this.keyboardFocused = !this.readonly && true;\n this.addEventListener('wheel', this.onScroll, { passive: false });\n }\n\n protected override onBlur(): void {\n super.onBlur();\n this.keyboardFocused = !this.readonly && false;\n this.removeEventListener('wheel', this.onScroll);\n }\n\n private handleFocusin(): void {\n this.focused = !this.readonly && true;\n this.keyboardFocused = !this.readonly && true;\n }\n\n private handleFocusout(): void {\n this.focused = !this.readonly && false;\n this.keyboardFocused = !this.readonly && false;\n }\n\n private wasIndeterminate = false;\n private indeterminateValue?: number;\n\n protected override handleChange(): void {\n const value = this.convertValueToNumber(this.inputValue);\n if (this.wasIndeterminate) {\n this.wasIndeterminate = false;\n this.indeterminateValue = undefined;\n if (isNaN(value)) {\n this.indeterminate = true;\n return;\n }\n }\n this.value = value;\n super.handleChange();\n }\n\n protected handleCompositionStart(): void {\n this.isComposing = true;\n }\n\n protected handleCompositionEnd(): void {\n this.isComposing = false;\n requestAnimationFrame(() => {\n this.inputElement.dispatchEvent(\n new Event('input', {\n composed: true,\n bubbles: true,\n })\n );\n });\n }\n\n protected override handleInput(event: Event): void {\n if (this.isComposing) {\n event.stopPropagation();\n return;\n }\n if (this.indeterminate) {\n this.wasIndeterminate = true;\n this.indeterminateValue = this.value;\n this.inputElement.value = this.inputElement.value.replace(\n indeterminatePlaceholder,\n ''\n );\n }\n const { value: originalValue, selectionStart } = this.inputElement;\n const value = originalValue\n .split('')\n .map((char) => remapMultiByteCharacters[char] || char)\n .join('');\n if (this.numberParser.isValidPartialNumber(value)) {\n const valueAsNumber = this.convertValueToNumber(value);\n if (!value && this.indeterminateValue) {\n this.indeterminate = true;\n this._value = this.indeterminateValue;\n } else {\n this.indeterminate = false;\n this._value = this.validateInput(valueAsNumber);\n }\n this._trackingValue = value;\n this.inputElement.value = value;\n this.inputElement.setSelectionRange(selectionStart, selectionStart);\n return;\n } else {\n this.inputElement.value = this.indeterminate\n ? indeterminatePlaceholder\n : this._trackingValue;\n }\n const currentLength = value.length;\n const previousLength = this._trackingValue.length;\n const nextSelectStart =\n (selectionStart || currentLength) -\n (currentLength - previousLength);\n this.inputElement.setSelectionRange(nextSelectStart, nextSelectStart);\n }\n\n private validateInput(value: number): number {\n if (typeof this.min !== 'undefined') {\n value = Math.max(this.min, value);\n }\n if (typeof this.max !== 'undefined') {\n value = Math.min(this.max, value);\n }\n // Step shouldn't validate when 0...\n if (this.step) {\n const min = typeof this.min !== 'undefined' ? this.min : 0;\n const moduloStep = (value - min) % this.step;\n const fallsOnStep = moduloStep === 0;\n if (!fallsOnStep) {\n const overUnder = Math.round(moduloStep / this.step);\n if (overUnder === 1) {\n value += this.step - moduloStep;\n } else {\n value -= moduloStep;\n }\n }\n if (typeof this.max !== 'undefined') {\n while (value > this.max) {\n value -= this.step;\n }\n }\n }\n return value;\n }\n\n protected override get displayValue(): string {\n const indeterminateValue = this.focused ? '' : indeterminatePlaceholder;\n return this.indeterminate ? indeterminateValue : this.formattedValue;\n }\n\n protected clearNumberFormatterCache(): void {\n this._numberFormatter = undefined;\n this._numberParser = undefined;\n }\n\n protected get numberFormatter(): NumberFormatter {\n if (!this._numberFormatter || !this._numberFormatterFocused) {\n const {\n style,\n unit,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n unitDisplay,\n ...formatOptionsNoUnit\n } = this.formatOptions;\n if (style !== 'unit') {\n (formatOptionsNoUnit as Intl.NumberFormatOptions).style = style;\n }\n this._numberFormatterFocused = new NumberFormatter(\n this.languageResolver.language,\n formatOptionsNoUnit\n );\n try {\n this._numberFormatter = new NumberFormatter(\n this.languageResolver.language,\n this.formatOptions\n );\n this._forcedUnit = '';\n this._numberFormatter.format(1);\n } catch (error) {\n if (style === 'unit') {\n this._forcedUnit = unit as string;\n }\n this._numberFormatter = this._numberFormatterFocused;\n }\n }\n return this.focused\n ? this._numberFormatterFocused\n : this._numberFormatter;\n }\n\n private _numberFormatter?: NumberFormatter;\n private _numberFormatterFocused?: NumberFormatter;\n\n protected get numberParser(): NumberParser {\n if (!this._numberParser || !this._numberParserFocused) {\n const {\n style,\n unit,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n unitDisplay,\n ...formatOptionsNoUnit\n } = this.formatOptions;\n if (style !== 'unit') {\n (formatOptionsNoUnit as Intl.NumberFormatOptions).style = style;\n }\n this._numberParserFocused = new NumberParser(\n this.languageResolver.language,\n formatOptionsNoUnit\n );\n try {\n this._numberParser = new NumberParser(\n this.languageResolver.language,\n this.formatOptions\n );\n this._forcedUnit = '';\n this._numberParser.parse('0');\n } catch (error) {\n if (style === 'unit') {\n this._forcedUnit = unit as string;\n }\n this._numberParser = this._numberParserFocused;\n }\n }\n return this.focused ? this._numberParserFocused : this._numberParser;\n }\n\n applyFocusElementLabel = (value?: string): void => {\n this.appliedLabel = value;\n };\n\n private _numberParser?: NumberParser;\n private _numberParserFocused?: NumberParser;\n\n protected override renderField(): TemplateResult {\n this.autocomplete = 'off';\n return html`\n ${super.renderField()}\n ${this.hideStepper\n ? nothing\n : html`\n <span\n class=\"buttons\"\n @focusin=${this.handleFocusin}\n @focusout=${this.handleFocusout}\n ${streamingListener({\n start: ['pointerdown', this.handlePointerdown],\n streamInside: [\n [\n 'pointermove',\n 'pointerenter',\n 'pointerleave',\n 'pointerover',\n 'pointerout',\n ],\n this.handlePointermove,\n ],\n end: [\n [\n 'pointerup',\n 'pointercancel',\n 'pointerleave',\n ],\n this.handlePointerup,\n ],\n })}\n >\n <sp-action-button\n class=\"step-up\"\n aria-describedby=${this.helpTextId}\n label=${'Increase ' + this.appliedLabel}\n tabindex=\"-1\"\n ?focused=${this.focused}\n ?disabled=${this.disabled ||\n this.readonly ||\n (typeof this.max !== 'undefined' &&\n this.value === this.max)}\n ?quiet=${this.quiet}\n >\n ${chevronIcon[this.size]('Up')}\n </sp-action-button>\n <sp-action-button\n class=\"step-down\"\n aria-describedby=${this.helpTextId}\n label=${'Decrease ' + this.appliedLabel}\n tabindex=\"-1\"\n ?focused=${this.focused}\n ?disabled=${this.disabled ||\n this.readonly ||\n (typeof this.min !== 'undefined' &&\n this.value === this.min)}\n ?quiet=${this.quiet}\n >\n ${chevronIcon[this.size]('Down')}\n </sp-action-button>\n </span>\n `}\n `;\n }\n\n protected override update(changes: PropertyValues): void {\n if (changes.has('formatOptions') || changes.has('resolvedLanguage')) {\n this.clearNumberFormatterCache();\n }\n if (changes.has('value') || changes.has('max') || changes.has('min')) {\n const value = this.numberParser.parse(\n this.formattedValue.replace(this._forcedUnit, '')\n );\n this.value = value;\n }\n super.update(changes);\n }\n\n public override willUpdate(changes: PropertyValues): void {\n this.multiline = false;\n if (changes.has(languageResolverUpdatedSymbol)) {\n this.clearNumberFormatterCache();\n }\n }\n\n private isComposing = false;\n\n protected override firstUpdated(changes: PropertyValues): void {\n super.firstUpdated(changes);\n this.addEventListener('keydown', this.handleKeydown);\n this.addEventListener('compositionstart', this.handleCompositionStart);\n this.addEventListener('compositionend', this.handleCompositionEnd);\n }\n\n protected override updated(changes: PropertyValues<this>): void {\n if (changes.has('min') || changes.has('formatOptions')) {\n let inputMode = 'numeric';\n const hasNegative = typeof this.min !== 'undefined' && this.min < 0;\n const { maximumFractionDigits } =\n this.numberFormatter.resolvedOptions();\n const hasDecimals = maximumFractionDigits > 0;\n /* c8 ignore next 18 */\n if (isIPhone()) {\n // iPhone doesn't have a minus sign in either numeric or decimal.\n // Note this is only for iPhone, not iPad, which always has both\n // minus and decimal in numeric.\n if (hasNegative) {\n inputMode = 'text';\n } else if (hasDecimals) {\n inputMode = 'decimal';\n }\n } else if (isAndroid()) {\n // Android numeric has both a decimal point and minus key.\n // decimal does not have a minus key.\n if (hasNegative) {\n inputMode = 'numeric';\n } else if (hasDecimals) {\n inputMode = 'decimal';\n }\n }\n this.inputElement.inputMode = inputMode;\n }\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/*\nCopyright 2020 Adobe. All rights reserved.\nThis file is licensed to you under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under\nthe License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\nOF ANY KIND, either express or implied. See the License for the specific language\ngoverning permissions and limitations under the License.\n*/\n\nimport {\n CSSResultArray,\n html,\n nothing,\n PropertyValues,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n property,\n query,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport {\n LanguageResolutionController,\n languageResolverUpdatedSymbol,\n} from '@spectrum-web-components/reactive-controllers/src/LanguageResolution.js';\nimport { streamingListener } from '@spectrum-web-components/base/src/streaming-listener.js';\nimport { NumberFormatter, NumberParser } from '@internationalized/number';\n\nimport '@spectrum-web-components/icons-ui/icons/sp-icon-chevron75.js';\nimport '@spectrum-web-components/icons-ui/icons/sp-icon-chevron100.js';\nimport '@spectrum-web-components/icons-ui/icons/sp-icon-chevron200.js';\nimport '@spectrum-web-components/action-button/sp-action-button.js';\nimport {\n isAndroid,\n isIPhone,\n} from '@spectrum-web-components/shared/src/platform.js';\nimport { TextfieldBase } from '@spectrum-web-components/textfield';\nimport chevronStyles from '@spectrum-web-components/icon/src/spectrum-icon-chevron.css.js';\nimport styles from './number-field.css.js';\n\nexport const FRAMES_PER_CHANGE = 5;\n// Debounce duration for inserting a `change` event after a batch of `wheel` originating `input` events.\nexport const CHANGE_DEBOUNCE_MS = 100;\nexport const indeterminatePlaceholder = '-';\nexport const remapMultiByteCharacters: Record<string, string> = {\n '\uFF11': '1',\n '\uFF12': '2',\n '\uFF13': '3',\n '\uFF14': '4',\n '\uFF15': '5',\n '\uFF16': '6',\n '\uFF17': '7',\n '\uFF18': '8',\n '\uFF19': '9',\n '\uFF10': '0',\n '\u3001': ',',\n '\uFF0C': ',',\n '\u3002': '.',\n '\uFF0E': '.',\n '\uFF05': '%',\n '\uFF0B': '+',\n \u30FC: '-',\n};\n\nconst chevronIcon: Record<string, (dir: 'Down' | 'Up') => TemplateResult> = {\n s: (dir) => html`\n <sp-icon-chevron75\n slot=\"icon\"\n class=\"stepper-icon spectrum-UIIcon-Chevron${dir}75\"\n ></sp-icon-chevron75>\n `,\n m: (dir) => html`\n <sp-icon-chevron75\n slot=\"icon\"\n class=\"stepper-icon spectrum-UIIcon-Chevron${dir}75\"\n ></sp-icon-chevron75>\n `,\n l: (dir) => html`\n <sp-icon-chevron100\n slot=\"icon\"\n class=\"stepper-icon spectrum-UIIcon-Chevron${dir}100\"\n ></sp-icon-chevron100>\n `,\n xl: (dir) => html`\n <sp-icon-chevron200\n slot=\"icon\"\n class=\"stepper-icon spectrum-UIIcon-Chevron${dir}200\"\n ></sp-icon-chevron200>\n `,\n};\n\n/**\n * @element sp-number-field\n * @slot help-text - default or non-negative help text to associate to your form element\n * @slot negative-help-text - negative help text to associate to your form element when `invalid`\n */\nexport class NumberField extends TextfieldBase {\n public static override get styles(): CSSResultArray {\n return [...super.styles, styles, chevronStyles];\n }\n\n @query('.buttons')\n private buttons!: HTMLDivElement;\n\n @property({ type: Boolean, reflect: true })\n public override focused = false;\n\n _forcedUnit = '';\n\n /**\n * An `&lt;sp-number-field&gt;` element will process its numeric value with\n * `new Intl.NumberFormat(this.resolvedLanguage, this.formatOptions).format(this.valueAsNumber)`\n * in order to prepare it for visual delivery in the input. In order to customize this\n * processing supply your own `Intl.NumberFormatOptions` object here.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat\n */\n @property({ type: Object, attribute: 'format-options' })\n public formatOptions: Intl.NumberFormatOptions = {};\n\n /**\n * Whether the stepper UI is hidden or not.\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-stepper' })\n public hideStepper = false;\n\n @property({ type: Boolean, reflect: true })\n public indeterminate = false;\n\n @property({ type: Boolean, reflect: true, attribute: 'keyboard-focused' })\n public keyboardFocused = false;\n\n @property({ type: Number })\n public max?: number;\n\n @property({ type: Number })\n public min?: number;\n\n /**\n * The distance by which to alter the value of the element when taking a \"step\".\n *\n * When `this.formatOptions.style === 'percentage'` the default step will be\n * set to 0.01 unless otherwise supplied to the element.\n */\n @property({ type: Number })\n public step?: number;\n\n public managedInput = false;\n\n @property({ type: Number, reflect: true, attribute: 'step-modifier' })\n public stepModifier = 10;\n\n @property({ type: Number })\n public override set value(rawValue: number) {\n const value = this.validateInput(rawValue);\n if (value === this.value) {\n return;\n }\n const oldValue = this._value;\n this._value = value;\n if (!this.managedInput && this.lastCommitedValue !== this.value) {\n this.dispatchEvent(\n new Event('change', { bubbles: true, composed: true })\n );\n this.lastCommitedValue = this.value;\n }\n this.requestUpdate('value', oldValue);\n }\n\n public override get value(): number {\n return this._value;\n }\n\n private get inputValue(): string {\n return this.indeterminate\n ? this.formattedValue\n : this.inputElement.value;\n }\n\n public override _value = NaN;\n private _trackingValue = '';\n private lastCommitedValue = NaN;\n\n /**\n * Retreive the value of the element parsed to a Number.\n */\n public get valueAsString(): string {\n return this._value.toString();\n }\n\n public set valueAsString(value: string) {\n this.value = this.numberParser.parse(value);\n }\n\n public get formattedValue(): string {\n if (isNaN(this.value)) return '';\n return (\n this.numberFormatter.format(this.value) +\n (this.focused ? '' : this._forcedUnit)\n );\n }\n\n private convertValueToNumber(value: string): number {\n if (isIPhone() && this.inputElement.inputMode === 'decimal') {\n const parts = this.numberFormatter.formatToParts(1000.1);\n const sourceDecimal = value\n .split('')\n .find((char) => char === ',' || char === '.');\n const replacementDecimal = parts.find(\n (part) => part.type === 'decimal'\n )?.value;\n if (sourceDecimal && replacementDecimal) {\n value = value.replace(sourceDecimal, replacementDecimal);\n }\n }\n return this.numberParser.parse(value);\n }\n\n private get _step(): number {\n if (typeof this.step !== 'undefined') {\n return this.step;\n }\n if (this.formatOptions?.style === 'percent') {\n return 0.01;\n }\n return 1;\n }\n\n private nextChange!: number;\n private changeCount = 0;\n private findChange!: (event: PointerEvent) => void;\n private change!: (event: PointerEvent) => void;\n private safty!: number;\n private languageResolver = new LanguageResolutionController(this);\n\n private handlePointerdown(event: PointerEvent): void {\n if (event.button !== 0) {\n event.preventDefault();\n return;\n }\n this.managedInput = true;\n this.buttons.setPointerCapture(event.pointerId);\n const stepUpRect = this.buttons.children[0].getBoundingClientRect();\n const stepDownRect = this.buttons.children[1].getBoundingClientRect();\n this.findChange = (event: PointerEvent) => {\n if (\n event.clientX >= stepUpRect.x &&\n event.clientY >= stepUpRect.y &&\n event.clientX <= stepUpRect.x + stepUpRect.width &&\n event.clientY <= stepUpRect.y + stepUpRect.height\n ) {\n this.change = (event: PointerEvent) =>\n this.increment(event.shiftKey ? this.stepModifier : 1);\n } else if (\n event.clientX >= stepDownRect.x &&\n event.clientY >= stepDownRect.y &&\n event.clientX <= stepDownRect.x + stepDownRect.width &&\n event.clientY <= stepDownRect.y + stepDownRect.height\n ) {\n this.change = (event: PointerEvent) =>\n this.decrement(event.shiftKey ? this.stepModifier : 1);\n }\n };\n this.findChange(event);\n this.startChange(event);\n }\n\n private startChange(event: PointerEvent): void {\n this.changeCount = 0;\n this.doChange(event);\n this.safty = setTimeout(() => {\n this.doNextChange(event);\n }, 400) as unknown as number;\n }\n\n private doChange(event: PointerEvent): void {\n this.change(event);\n }\n\n private handlePointermove(event: PointerEvent): void {\n this.findChange(event);\n }\n\n private handlePointerup(event: PointerEvent): void {\n this.buttons.releasePointerCapture(event.pointerId);\n cancelAnimationFrame(this.nextChange);\n clearTimeout(this.safty);\n if (this.lastCommitedValue !== this.value) {\n this.dispatchEvent(\n new Event('change', { bubbles: true, composed: true })\n );\n this.lastCommitedValue = this.value;\n }\n this.managedInput = false;\n }\n\n private doNextChange(event: PointerEvent): number {\n this.changeCount += 1;\n if (this.changeCount % FRAMES_PER_CHANGE === 0) {\n this.doChange(event);\n }\n return requestAnimationFrame(() => {\n this.nextChange = this.doNextChange(event);\n });\n }\n\n private stepBy(count: number): void {\n if (this.disabled || this.readonly) {\n return;\n }\n const min = typeof this.min !== 'undefined' ? this.min : 0;\n let value = this.value;\n value += count * this._step;\n if (isNaN(this.value)) {\n this.value = min;\n } else {\n this.value = value;\n }\n this.dispatchEvent(\n new Event('input', { bubbles: true, composed: true })\n );\n this.indeterminate = false;\n this.focus();\n }\n\n private increment(factor = 1): void {\n this.stepBy(1 * factor);\n }\n\n private decrement(factor = 1): void {\n this.stepBy(-1 * factor);\n }\n\n private handleKeydown(event: KeyboardEvent): void {\n if (this.isComposing) return;\n switch (event.code) {\n case 'ArrowUp':\n event.preventDefault();\n this.increment(event.shiftKey ? this.stepModifier : 1);\n break;\n case 'ArrowDown':\n event.preventDefault();\n this.decrement(event.shiftKey ? this.stepModifier : 1);\n break;\n }\n }\n\n private queuedChangeEvent!: number;\n\n protected onScroll(event: WheelEvent): void {\n event.preventDefault();\n this.managedInput = true;\n const direction = event.shiftKey\n ? event.deltaX / Math.abs(event.deltaX)\n : event.deltaY / Math.abs(event.deltaY);\n if (direction !== 0 && !isNaN(direction)) {\n this.stepBy(direction * (event.shiftKey ? this.stepModifier : 1));\n clearTimeout(this.queuedChangeEvent);\n this.queuedChangeEvent = setTimeout(() => {\n this.dispatchEvent(\n new Event('change', { bubbles: true, composed: true })\n );\n this.lastCommitedValue = this.value;\n }, CHANGE_DEBOUNCE_MS) as unknown as number;\n }\n this.managedInput = false;\n }\n\n protected override onFocus(): void {\n super.onFocus();\n this._trackingValue = this.inputValue;\n this.keyboardFocused = !this.readonly && true;\n this.addEventListener('wheel', this.onScroll, { passive: false });\n }\n\n protected override onBlur(): void {\n super.onBlur();\n this.keyboardFocused = !this.readonly && false;\n this.removeEventListener('wheel', this.onScroll);\n }\n\n private handleFocusin(): void {\n this.focused = !this.readonly && true;\n this.keyboardFocused = !this.readonly && true;\n }\n\n private handleFocusout(): void {\n this.focused = !this.readonly && false;\n this.keyboardFocused = !this.readonly && false;\n }\n\n private wasIndeterminate = false;\n private indeterminateValue?: number;\n\n protected override handleChange(): void {\n const value = this.convertValueToNumber(this.inputValue);\n if (this.wasIndeterminate) {\n this.wasIndeterminate = false;\n this.indeterminateValue = undefined;\n if (isNaN(value)) {\n this.indeterminate = true;\n return;\n }\n }\n this.value = value;\n this.inputElement.value = this.formattedValue;\n if (this.lastCommitedValue !== this.value) {\n this.lastCommitedValue = this.value;\n super.handleChange();\n }\n }\n\n protected handleCompositionStart(): void {\n this.isComposing = true;\n }\n\n protected handleCompositionEnd(): void {\n this.isComposing = false;\n requestAnimationFrame(() => {\n this.inputElement.dispatchEvent(\n new Event('input', {\n composed: true,\n bubbles: true,\n })\n );\n });\n }\n\n protected override handleInput(event: Event): void {\n if (this.isComposing) {\n event.stopPropagation();\n return;\n }\n if (this.indeterminate) {\n this.wasIndeterminate = true;\n this.indeterminateValue = this.value;\n this.inputElement.value = this.inputElement.value.replace(\n indeterminatePlaceholder,\n ''\n );\n }\n const { value: originalValue, selectionStart } = this.inputElement;\n const value = originalValue\n .split('')\n .map((char) => remapMultiByteCharacters[char] || char)\n .join('');\n if (this.numberParser.isValidPartialNumber(value)) {\n const valueAsNumber = this.convertValueToNumber(value);\n if (!value && this.indeterminateValue) {\n this.indeterminate = true;\n this._value = this.indeterminateValue;\n } else {\n this.indeterminate = false;\n this._value = this.validateInput(valueAsNumber);\n }\n this._trackingValue = value;\n this.inputElement.value = value;\n this.inputElement.setSelectionRange(selectionStart, selectionStart);\n return;\n } else {\n this.inputElement.value = this.indeterminate\n ? indeterminatePlaceholder\n : this._trackingValue;\n }\n const currentLength = value.length;\n const previousLength = this._trackingValue.length;\n const nextSelectStart =\n (selectionStart || currentLength) -\n (currentLength - previousLength);\n this.inputElement.setSelectionRange(nextSelectStart, nextSelectStart);\n }\n\n private validateInput(value: number): number {\n const signMultiplier = value < 0 ? -1 : 1; // 'signMultiplier' adjusts 'value' for 'validateInput' and reverts it before returning.\n value *= signMultiplier;\n if (typeof this.min !== 'undefined') {\n value = Math.max(this.min, value);\n }\n if (typeof this.max !== 'undefined') {\n value = Math.min(this.max, value);\n }\n // Step shouldn't validate when 0...\n if (this.step) {\n const min = typeof this.min !== 'undefined' ? this.min : 0;\n const moduloStep = (value - min) % this.step;\n const fallsOnStep = moduloStep === 0;\n if (!fallsOnStep) {\n const overUnder = Math.round(moduloStep / this.step);\n if (overUnder === 1) {\n value += this.step - moduloStep;\n } else {\n value -= moduloStep;\n }\n }\n if (typeof this.max !== 'undefined') {\n while (value > this.max) {\n value -= this.step;\n }\n }\n }\n value *= signMultiplier;\n return value;\n }\n\n protected override get displayValue(): string {\n const indeterminateValue = this.focused ? '' : indeterminatePlaceholder;\n return this.indeterminate ? indeterminateValue : this.formattedValue;\n }\n\n protected clearNumberFormatterCache(): void {\n this._numberFormatter = undefined;\n this._numberParser = undefined;\n }\n\n protected get numberFormatter(): NumberFormatter {\n if (!this._numberFormatter || !this._numberFormatterFocused) {\n const {\n style,\n unit,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n unitDisplay,\n ...formatOptionsNoUnit\n } = this.formatOptions;\n if (style !== 'unit') {\n (formatOptionsNoUnit as Intl.NumberFormatOptions).style = style;\n }\n this._numberFormatterFocused = new NumberFormatter(\n this.languageResolver.language,\n formatOptionsNoUnit\n );\n try {\n this._numberFormatter = new NumberFormatter(\n this.languageResolver.language,\n this.formatOptions\n );\n this._forcedUnit = '';\n this._numberFormatter.format(1);\n } catch (error) {\n if (style === 'unit') {\n this._forcedUnit = unit as string;\n }\n this._numberFormatter = this._numberFormatterFocused;\n }\n }\n return this.focused\n ? this._numberFormatterFocused\n : this._numberFormatter;\n }\n\n private _numberFormatter?: NumberFormatter;\n private _numberFormatterFocused?: NumberFormatter;\n\n protected get numberParser(): NumberParser {\n if (!this._numberParser || !this._numberParserFocused) {\n const {\n style,\n unit,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n unitDisplay,\n ...formatOptionsNoUnit\n } = this.formatOptions;\n if (style !== 'unit') {\n (formatOptionsNoUnit as Intl.NumberFormatOptions).style = style;\n }\n this._numberParserFocused = new NumberParser(\n this.languageResolver.language,\n formatOptionsNoUnit\n );\n try {\n this._numberParser = new NumberParser(\n this.languageResolver.language,\n this.formatOptions\n );\n this._forcedUnit = '';\n this._numberParser.parse('0');\n } catch (error) {\n if (style === 'unit') {\n this._forcedUnit = unit as string;\n }\n this._numberParser = this._numberParserFocused;\n }\n }\n return this.focused ? this._numberParserFocused : this._numberParser;\n }\n\n applyFocusElementLabel = (value?: string): void => {\n this.appliedLabel = value;\n };\n\n private _numberParser?: NumberParser;\n private _numberParserFocused?: NumberParser;\n\n protected override renderField(): TemplateResult {\n this.autocomplete = 'off';\n return html`\n ${super.renderField()}\n ${this.hideStepper\n ? nothing\n : html`\n <span\n class=\"buttons\"\n @focusin=${this.handleFocusin}\n @focusout=${this.handleFocusout}\n ${streamingListener({\n start: ['pointerdown', this.handlePointerdown],\n streamInside: [\n [\n 'pointermove',\n 'pointerenter',\n 'pointerleave',\n 'pointerover',\n 'pointerout',\n ],\n this.handlePointermove,\n ],\n end: [\n [\n 'pointerup',\n 'pointercancel',\n 'pointerleave',\n ],\n this.handlePointerup,\n ],\n })}\n >\n <sp-action-button\n class=\"step-up\"\n aria-describedby=${this.helpTextId}\n label=${'Increase ' + this.appliedLabel}\n tabindex=\"-1\"\n ?focused=${this.focused}\n ?disabled=${this.disabled ||\n this.readonly ||\n (typeof this.max !== 'undefined' &&\n this.value === this.max)}\n ?quiet=${this.quiet}\n >\n ${chevronIcon[this.size]('Up')}\n </sp-action-button>\n <sp-action-button\n class=\"step-down\"\n aria-describedby=${this.helpTextId}\n label=${'Decrease ' + this.appliedLabel}\n tabindex=\"-1\"\n ?focused=${this.focused}\n ?disabled=${this.disabled ||\n this.readonly ||\n (typeof this.min !== 'undefined' &&\n this.value === this.min)}\n ?quiet=${this.quiet}\n >\n ${chevronIcon[this.size]('Down')}\n </sp-action-button>\n </span>\n `}\n `;\n }\n\n protected override update(changes: PropertyValues): void {\n if (changes.has('formatOptions') || changes.has('resolvedLanguage')) {\n this.clearNumberFormatterCache();\n }\n if (changes.has('value') || changes.has('max') || changes.has('min')) {\n const value = this.numberParser.parse(\n this.formattedValue.replace(this._forcedUnit, '')\n );\n this.value = value;\n }\n super.update(changes);\n }\n\n public override willUpdate(changes: PropertyValues): void {\n this.multiline = false;\n if (changes.has(languageResolverUpdatedSymbol)) {\n this.clearNumberFormatterCache();\n }\n }\n\n private isComposing = false;\n\n protected override firstUpdated(changes: PropertyValues): void {\n super.firstUpdated(changes);\n this.addEventListener('keydown', this.handleKeydown);\n this.addEventListener('compositionstart', this.handleCompositionStart);\n this.addEventListener('compositionend', this.handleCompositionEnd);\n }\n\n protected override updated(changes: PropertyValues<this>): void {\n if (changes.has('min') || changes.has('formatOptions')) {\n let inputMode = 'numeric';\n const hasNegative = typeof this.min !== 'undefined' && this.min < 0;\n const { maximumFractionDigits } =\n this.numberFormatter.resolvedOptions();\n const hasDecimals = maximumFractionDigits > 0;\n /* c8 ignore next 18 */\n if (isIPhone()) {\n // iPhone doesn't have a minus sign in either numeric or decimal.\n // Note this is only for iPhone, not iPad, which always has both\n // minus and decimal in numeric.\n if (hasNegative) {\n inputMode = 'text';\n } else if (hasDecimals) {\n inputMode = 'decimal';\n }\n } else if (isAndroid()) {\n // Android numeric has both a decimal point and minus key.\n // decimal does not have a minus key.\n if (hasNegative) {\n inputMode = 'numeric';\n } else if (hasDecimals) {\n inputMode = 'decimal';\n }\n }\n this.inputElement.inputMode = inputMode;\n }\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;AAYA;AAAA,EAEI;AAAA,EACA;AAAA,OAGG;AACP;AAAA,EACI;AAAA,EACA;AAAA,OACG;AACP;AAAA,EACI;AAAA,EACA;AAAA,OACG;AACP,SAAS,yBAAyB;AAClC,SAAS,iBAAiB,oBAAoB;AAE9C,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP;AAAA,EACI;AAAA,EACA;AAAA,OACG;AACP,SAAS,qBAAqB;AAC9B,OAAO,mBAAmB;AAC1B,OAAO,YAAY;AAEZ,aAAM,oBAAoB;AAE1B,aAAM,qBAAqB;AAC3B,aAAM,2BAA2B;AACjC,aAAM,2BAAmD;AAAA,EAC5D,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,UAAK;AAAA,EACL,QAAG;AACP;AAEA,MAAM,cAAsE;AAAA,EACxE,GAAG,CAAC,QAAQ;AAAA;AAAA;AAAA,yDAGyC,GAAG;AAAA;AAAA;AAAA,EAGxD,GAAG,CAAC,QAAQ;AAAA;AAAA;AAAA,yDAGyC,GAAG;AAAA;AAAA;AAAA,EAGxD,GAAG,CAAC,QAAQ;AAAA;AAAA;AAAA,yDAGyC,GAAG;AAAA;AAAA;AAAA,EAGxD,IAAI,CAAC,QAAQ;AAAA;AAAA;AAAA,yDAGwC,GAAG;AAAA;AAAA;AAG5D;AAOO,aAAM,oBAAoB,cAAc;AAAA,EAAxC;AAAA;AASH,SAAgB,UAAU;AAE1B,uBAAc;AAWd,SAAO,gBAA0C,CAAC;AAMlD,SAAO,cAAc;AAGrB,SAAO,gBAAgB;AAGvB,SAAO,kBAAkB;AAiBzB,SAAO,eAAe;AAGtB,SAAO,eAAe;AA6BtB,SAAgB,SAAS;AACzB,SAAQ,iBAAiB;AACzB,SAAQ,oBAAoB;AAgD5B,SAAQ,cAAc;AAItB,SAAQ,mBAAmB,IAAI,6BAA6B,IAAI;AA8JhE,SAAQ,mBAAmB;AAkM3B,kCAAyB,CAAC,UAAyB;AAC/C,WAAK,eAAe;AAAA,IACxB;AA2FA,SAAQ,cAAc;AAAA;AAAA,EArkBtB,WAA2B,SAAyB;AAChD,WAAO,CAAC,GAAG,MAAM,QAAQ,QAAQ,aAAa;AAAA,EAClD;AAAA,EAsDA,IAAoB,MAAM,UAAkB;AACxC,UAAM,QAAQ,KAAK,cAAc,QAAQ;AACzC,QAAI,UAAU,KAAK,OAAO;AACtB;AAAA,IACJ;AACA,UAAM,WAAW,KAAK;AACtB,SAAK,SAAS;AACd,QAAI,CAAC,KAAK,gBAAgB,KAAK,sBAAsB,KAAK,OAAO;AAC7D,WAAK;AAAA,QACD,IAAI,MAAM,UAAU,EAAE,SAAS,MAAM,UAAU,KAAK,CAAC;AAAA,MACzD;AACA,WAAK,oBAAoB,KAAK;AAAA,IAClC;AACA,SAAK,cAAc,SAAS,QAAQ;AAAA,EACxC;AAAA,EAEA,IAAoB,QAAgB;AAChC,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAY,aAAqB;AAC7B,WAAO,KAAK,gBACN,KAAK,iBACL,KAAK,aAAa;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA,EASA,IAAW,gBAAwB;AAC/B,WAAO,KAAK,OAAO,SAAS;AAAA,EAChC;AAAA,EAEA,IAAW,cAAc,OAAe;AACpC,SAAK,QAAQ,KAAK,aAAa,MAAM,KAAK;AAAA,EAC9C;AAAA,EAEA,IAAW,iBAAyB;AAChC,QAAI,MAAM,KAAK,KAAK;AAAG,aAAO;AAC9B,WACI,KAAK,gBAAgB,OAAO,KAAK,KAAK,KACrC,KAAK,UAAU,KAAK,KAAK;AAAA,EAElC;AAAA,EAEQ,qBAAqB,OAAuB;AA5MxD;AA6MQ,QAAI,SAAS,KAAK,KAAK,aAAa,cAAc,WAAW;AACzD,YAAM,QAAQ,KAAK,gBAAgB,cAAc,MAAM;AACvD,YAAM,gBAAgB,MACjB,MAAM,EAAE,EACR,KAAK,CAAC,SAAS,SAAS,OAAO,SAAS,GAAG;AAChD,YAAM,sBAAqB,WAAM;AAAA,QAC7B,CAAC,SAAS,KAAK,SAAS;AAAA,MAC5B,MAF2B,mBAExB;AACH,UAAI,iBAAiB,oBAAoB;AACrC,gBAAQ,MAAM,QAAQ,eAAe,kBAAkB;AAAA,MAC3D;AAAA,IACJ;AACA,WAAO,KAAK,aAAa,MAAM,KAAK;AAAA,EACxC;AAAA,EAEA,IAAY,QAAgB;AA5NhC;AA6NQ,QAAI,OAAO,KAAK,SAAS,aAAa;AAClC,aAAO,KAAK;AAAA,IAChB;AACA,UAAI,UAAK,kBAAL,mBAAoB,WAAU,WAAW;AACzC,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX;AAAA,EASQ,kBAAkB,OAA2B;AACjD,QAAI,MAAM,WAAW,GAAG;AACpB,YAAM,eAAe;AACrB;AAAA,IACJ;AACA,SAAK,eAAe;AACpB,SAAK,QAAQ,kBAAkB,MAAM,SAAS;AAC9C,UAAM,aAAa,KAAK,QAAQ,SAAS,CAAC,EAAE,sBAAsB;AAClE,UAAM,eAAe,KAAK,QAAQ,SAAS,CAAC,EAAE,sBAAsB;AACpE,SAAK,aAAa,CAACA,WAAwB;AACvC,UACIA,OAAM,WAAW,WAAW,KAC5BA,OAAM,WAAW,WAAW,KAC5BA,OAAM,WAAW,WAAW,IAAI,WAAW,SAC3CA,OAAM,WAAW,WAAW,IAAI,WAAW,QAC7C;AACE,aAAK,SAAS,CAACA,WACX,KAAK,UAAUA,OAAM,WAAW,KAAK,eAAe,CAAC;AAAA,MAC7D,WACIA,OAAM,WAAW,aAAa,KAC9BA,OAAM,WAAW,aAAa,KAC9BA,OAAM,WAAW,aAAa,IAAI,aAAa,SAC/CA,OAAM,WAAW,aAAa,IAAI,aAAa,QACjD;AACE,aAAK,SAAS,CAACA,WACX,KAAK,UAAUA,OAAM,WAAW,KAAK,eAAe,CAAC;AAAA,MAC7D;AAAA,IACJ;AACA,SAAK,WAAW,KAAK;AACrB,SAAK,YAAY,KAAK;AAAA,EAC1B;AAAA,EAEQ,YAAY,OAA2B;AAC3C,SAAK,cAAc;AACnB,SAAK,SAAS,KAAK;AACnB,SAAK,QAAQ,WAAW,MAAM;AAC1B,WAAK,aAAa,KAAK;AAAA,IAC3B,GAAG,GAAG;AAAA,EACV;AAAA,EAEQ,SAAS,OAA2B;AACxC,SAAK,OAAO,KAAK;AAAA,EACrB;AAAA,EAEQ,kBAAkB,OAA2B;AACjD,SAAK,WAAW,KAAK;AAAA,EACzB;AAAA,EAEQ,gBAAgB,OAA2B;AAC/C,SAAK,QAAQ,sBAAsB,MAAM,SAAS;AAClD,yBAAqB,KAAK,UAAU;AACpC,iBAAa,KAAK,KAAK;AACvB,QAAI,KAAK,sBAAsB,KAAK,OAAO;AACvC,WAAK;AAAA,QACD,IAAI,MAAM,UAAU,EAAE,SAAS,MAAM,UAAU,KAAK,CAAC;AAAA,MACzD;AACA,WAAK,oBAAoB,KAAK;AAAA,IAClC;AACA,SAAK,eAAe;AAAA,EACxB;AAAA,EAEQ,aAAa,OAA6B;AAC9C,SAAK,eAAe;AACpB,QAAI,KAAK,cAAc,sBAAsB,GAAG;AAC5C,WAAK,SAAS,KAAK;AAAA,IACvB;AACA,WAAO,sBAAsB,MAAM;AAC/B,WAAK,aAAa,KAAK,aAAa,KAAK;AAAA,IAC7C,CAAC;AAAA,EACL;AAAA,EAEQ,OAAO,OAAqB;AAChC,QAAI,KAAK,YAAY,KAAK,UAAU;AAChC;AAAA,IACJ;AACA,UAAM,MAAM,OAAO,KAAK,QAAQ,cAAc,KAAK,MAAM;AACzD,QAAI,QAAQ,KAAK;AACjB,aAAS,QAAQ,KAAK;AACtB,QAAI,MAAM,KAAK,KAAK,GAAG;AACnB,WAAK,QAAQ;AAAA,IACjB,OAAO;AACH,WAAK,QAAQ;AAAA,IACjB;AACA,SAAK;AAAA,MACD,IAAI,MAAM,SAAS,EAAE,SAAS,MAAM,UAAU,KAAK,CAAC;AAAA,IACxD;AACA,SAAK,gBAAgB;AACrB,SAAK,MAAM;AAAA,EACf;AAAA,EAEQ,UAAU,SAAS,GAAS;AAChC,SAAK,OAAO,IAAI,MAAM;AAAA,EAC1B;AAAA,EAEQ,UAAU,SAAS,GAAS;AAChC,SAAK,OAAO,KAAK,MAAM;AAAA,EAC3B;AAAA,EAEQ,cAAc,OAA4B;AAC9C,QAAI,KAAK;AAAa;AACtB,YAAQ,MAAM,MAAM;AAAA,MAChB,KAAK;AACD,cAAM,eAAe;AACrB,aAAK,UAAU,MAAM,WAAW,KAAK,eAAe,CAAC;AACrD;AAAA,MACJ,KAAK;AACD,cAAM,eAAe;AACrB,aAAK,UAAU,MAAM,WAAW,KAAK,eAAe,CAAC;AACrD;AAAA,IACR;AAAA,EACJ;AAAA,EAIU,SAAS,OAAyB;AACxC,UAAM,eAAe;AACrB,SAAK,eAAe;AACpB,UAAM,YAAY,MAAM,WAClB,MAAM,SAAS,KAAK,IAAI,MAAM,MAAM,IACpC,MAAM,SAAS,KAAK,IAAI,MAAM,MAAM;AAC1C,QAAI,cAAc,KAAK,CAAC,MAAM,SAAS,GAAG;AACtC,WAAK,OAAO,aAAa,MAAM,WAAW,KAAK,eAAe,EAAE;AAChE,mBAAa,KAAK,iBAAiB;AACnC,WAAK,oBAAoB,WAAW,MAAM;AACtC,aAAK;AAAA,UACD,IAAI,MAAM,UAAU,EAAE,SAAS,MAAM,UAAU,KAAK,CAAC;AAAA,QACzD;AACA,aAAK,oBAAoB,KAAK;AAAA,MAClC,GAAG,kBAAkB;AAAA,IACzB;AACA,SAAK,eAAe;AAAA,EACxB;AAAA,EAEmB,UAAgB;AAC/B,UAAM,QAAQ;AACd,SAAK,iBAAiB,KAAK;AAC3B,SAAK,kBAAkB,CAAC,KAAK,YAAY;AACzC,SAAK,iBAAiB,SAAS,KAAK,UAAU,EAAE,SAAS,MAAM,CAAC;AAAA,EACpE;AAAA,EAEmB,SAAe;AAC9B,UAAM,OAAO;AACb,SAAK,kBAAkB,CAAC,KAAK,YAAY;AACzC,SAAK,oBAAoB,SAAS,KAAK,QAAQ;AAAA,EACnD;AAAA,EAEQ,gBAAsB;AAC1B,SAAK,UAAU,CAAC,KAAK,YAAY;AACjC,SAAK,kBAAkB,CAAC,KAAK,YAAY;AAAA,EAC7C;AAAA,EAEQ,iBAAuB;AAC3B,SAAK,UAAU,CAAC,KAAK,YAAY;AACjC,SAAK,kBAAkB,CAAC,KAAK,YAAY;AAAA,EAC7C;AAAA,EAKmB,eAAqB;AACpC,UAAM,QAAQ,KAAK,qBAAqB,KAAK,UAAU;AACvD,QAAI,KAAK,kBAAkB;AACvB,WAAK,mBAAmB;AACxB,WAAK,qBAAqB;AAC1B,UAAI,MAAM,KAAK,GAAG;AACd,aAAK,gBAAgB;AACrB;AAAA,MACJ;AAAA,IACJ;AACA,SAAK,QAAQ;AACb,SAAK,aAAa,QAAQ,KAAK;AAC/B,QAAI,KAAK,sBAAsB,KAAK,OAAO;AACvC,WAAK,oBAAoB,KAAK;AAC9B,YAAM,aAAa;AAAA,IACvB;AAAA,EACJ;AAAA,EAEU,yBAA+B;AACrC,SAAK,cAAc;AAAA,EACvB;AAAA,EAEU,uBAA6B;AACnC,SAAK,cAAc;AACnB,0BAAsB,MAAM;AACxB,WAAK,aAAa;AAAA,QACd,IAAI,MAAM,SAAS;AAAA,UACf,UAAU;AAAA,UACV,SAAS;AAAA,QACb,CAAC;AAAA,MACL;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEmB,YAAY,OAAoB;AAC/C,QAAI,KAAK,aAAa;AAClB,YAAM,gBAAgB;AACtB;AAAA,IACJ;AACA,QAAI,KAAK,eAAe;AACpB,WAAK,mBAAmB;AACxB,WAAK,qBAAqB,KAAK;AAC/B,WAAK,aAAa,QAAQ,KAAK,aAAa,MAAM;AAAA,QAC9C;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AACA,UAAM,EAAE,OAAO,eAAe,eAAe,IAAI,KAAK;AACtD,UAAM,QAAQ,cACT,MAAM,EAAE,EACR,IAAI,CAAC,SAAS,yBAAyB,IAAI,KAAK,IAAI,EACpD,KAAK,EAAE;AACZ,QAAI,KAAK,aAAa,qBAAqB,KAAK,GAAG;AAC/C,YAAM,gBAAgB,KAAK,qBAAqB,KAAK;AACrD,UAAI,CAAC,SAAS,KAAK,oBAAoB;AACnC,aAAK,gBAAgB;AACrB,aAAK,SAAS,KAAK;AAAA,MACvB,OAAO;AACH,aAAK,gBAAgB;AACrB,aAAK,SAAS,KAAK,cAAc,aAAa;AAAA,MAClD;AACA,WAAK,iBAAiB;AACtB,WAAK,aAAa,QAAQ;AAC1B,WAAK,aAAa,kBAAkB,gBAAgB,cAAc;AAClE;AAAA,IACJ,OAAO;AACH,WAAK,aAAa,QAAQ,KAAK,gBACzB,2BACA,KAAK;AAAA,IACf;AACA,UAAM,gBAAgB,MAAM;AAC5B,UAAM,iBAAiB,KAAK,eAAe;AAC3C,UAAM,mBACD,kBAAkB,kBAClB,gBAAgB;AACrB,SAAK,aAAa,kBAAkB,iBAAiB,eAAe;AAAA,EACxE;AAAA,EAEQ,cAAc,OAAuB;AACzC,UAAM,iBAAiB,QAAQ,IAAI,KAAK;AACxC,aAAS;AACT,QAAI,OAAO,KAAK,QAAQ,aAAa;AACjC,cAAQ,KAAK,IAAI,KAAK,KAAK,KAAK;AAAA,IACpC;AACA,QAAI,OAAO,KAAK,QAAQ,aAAa;AACjC,cAAQ,KAAK,IAAI,KAAK,KAAK,KAAK;AAAA,IACpC;AAEA,QAAI,KAAK,MAAM;AACX,YAAM,MAAM,OAAO,KAAK,QAAQ,cAAc,KAAK,MAAM;AACzD,YAAM,cAAc,QAAQ,OAAO,KAAK;AACxC,YAAM,cAAc,eAAe;AACnC,UAAI,CAAC,aAAa;AACd,cAAM,YAAY,KAAK,MAAM,aAAa,KAAK,IAAI;AACnD,YAAI,cAAc,GAAG;AACjB,mBAAS,KAAK,OAAO;AAAA,QACzB,OAAO;AACH,mBAAS;AAAA,QACb;AAAA,MACJ;AACA,UAAI,OAAO,KAAK,QAAQ,aAAa;AACjC,eAAO,QAAQ,KAAK,KAAK;AACrB,mBAAS,KAAK;AAAA,QAClB;AAAA,MACJ;AAAA,IACJ;AACA,aAAS;AACT,WAAO;AAAA,EACX;AAAA,EAEA,IAAuB,eAAuB;AAC1C,UAAM,qBAAqB,KAAK,UAAU,KAAK;AAC/C,WAAO,KAAK,gBAAgB,qBAAqB,KAAK;AAAA,EAC1D;AAAA,EAEU,4BAAkC;AACxC,SAAK,mBAAmB;AACxB,SAAK,gBAAgB;AAAA,EACzB;AAAA,EAEA,IAAc,kBAAmC;AAC7C,QAAI,CAAC,KAAK,oBAAoB,CAAC,KAAK,yBAAyB;AACzD,YAAM;AAAA,QACF;AAAA,QACA;AAAA;AAAA,QAEA;AAAA,QACA,GAAG;AAAA,MACP,IAAI,KAAK;AACT,UAAI,UAAU,QAAQ;AAClB,QAAC,oBAAiD,QAAQ;AAAA,MAC9D;AACA,WAAK,0BAA0B,IAAI;AAAA,QAC/B,KAAK,iBAAiB;AAAA,QACtB;AAAA,MACJ;AACA,UAAI;AACA,aAAK,mBAAmB,IAAI;AAAA,UACxB,KAAK,iBAAiB;AAAA,UACtB,KAAK;AAAA,QACT;AACA,aAAK,cAAc;AACnB,aAAK,iBAAiB,OAAO,CAAC;AAAA,MAClC,SAAS,OAAO;AACZ,YAAI,UAAU,QAAQ;AAClB,eAAK,cAAc;AAAA,QACvB;AACA,aAAK,mBAAmB,KAAK;AAAA,MACjC;AAAA,IACJ;AACA,WAAO,KAAK,UACN,KAAK,0BACL,KAAK;AAAA,EACf;AAAA,EAKA,IAAc,eAA6B;AACvC,QAAI,CAAC,KAAK,iBAAiB,CAAC,KAAK,sBAAsB;AACnD,YAAM;AAAA,QACF;AAAA,QACA;AAAA;AAAA,QAEA;AAAA,QACA,GAAG;AAAA,MACP,IAAI,KAAK;AACT,UAAI,UAAU,QAAQ;AAClB,QAAC,oBAAiD,QAAQ;AAAA,MAC9D;AACA,WAAK,uBAAuB,IAAI;AAAA,QAC5B,KAAK,iBAAiB;AAAA,QACtB;AAAA,MACJ;AACA,UAAI;AACA,aAAK,gBAAgB,IAAI;AAAA,UACrB,KAAK,iBAAiB;AAAA,UACtB,KAAK;AAAA,QACT;AACA,aAAK,cAAc;AACnB,aAAK,cAAc,MAAM,GAAG;AAAA,MAChC,SAAS,OAAO;AACZ,YAAI,UAAU,QAAQ;AAClB,eAAK,cAAc;AAAA,QACvB;AACA,aAAK,gBAAgB,KAAK;AAAA,MAC9B;AAAA,IACJ;AACA,WAAO,KAAK,UAAU,KAAK,uBAAuB,KAAK;AAAA,EAC3D;AAAA,EASmB,cAA8B;AAC7C,SAAK,eAAe;AACpB,WAAO;AAAA,cACD,MAAM,YAAY,CAAC;AAAA,cACnB,KAAK,cACD,UACA;AAAA;AAAA;AAAA,qCAGmB,KAAK,aAAa;AAAA,sCACjB,KAAK,cAAc;AAAA,4BAC7B,kBAAkB;AAAA,MAChB,OAAO,CAAC,eAAe,KAAK,iBAAiB;AAAA,MAC7C,cAAc;AAAA,QACV;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA,KAAK;AAAA,MACT;AAAA,MACA,KAAK;AAAA,QACD;AAAA,UACI;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,QACA,KAAK;AAAA,MACT;AAAA,IACJ,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA,iDAIqB,KAAK,UAAU;AAAA,sCAC1B,cAAc,KAAK,YAAY;AAAA;AAAA,yCAE5B,KAAK,OAAO;AAAA,0CACX,KAAK,YACjB,KAAK,YACJ,OAAO,KAAK,QAAQ,eACjB,KAAK,UAAU,KAAK,GAAI;AAAA,uCACnB,KAAK,KAAK;AAAA;AAAA,gCAEjB,YAAY,KAAK,IAAI,EAAE,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA,iDAIX,KAAK,UAAU;AAAA,sCAC1B,cAAc,KAAK,YAAY;AAAA;AAAA,yCAE5B,KAAK,OAAO;AAAA,0CACX,KAAK,YACjB,KAAK,YACJ,OAAO,KAAK,QAAQ,eACjB,KAAK,UAAU,KAAK,GAAI;AAAA,uCACnB,KAAK,KAAK;AAAA;AAAA,gCAEjB,YAAY,KAAK,IAAI,EAAE,MAAM,CAAC;AAAA;AAAA;AAAA,mBAG3C;AAAA;AAAA,EAEf;AAAA,EAEmB,OAAO,SAA+B;AACrD,QAAI,QAAQ,IAAI,eAAe,KAAK,QAAQ,IAAI,kBAAkB,GAAG;AACjE,WAAK,0BAA0B;AAAA,IACnC;AACA,QAAI,QAAQ,IAAI,OAAO,KAAK,QAAQ,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG;AAClE,YAAM,QAAQ,KAAK,aAAa;AAAA,QAC5B,KAAK,eAAe,QAAQ,KAAK,aAAa,EAAE;AAAA,MACpD;AACA,WAAK,QAAQ;AAAA,IACjB;AACA,UAAM,OAAO,OAAO;AAAA,EACxB;AAAA,EAEgB,WAAW,SAA+B;AACtD,SAAK,YAAY;AACjB,QAAI,QAAQ,IAAI,6BAA6B,GAAG;AAC5C,WAAK,0BAA0B;AAAA,IACnC;AAAA,EACJ;AAAA,EAImB,aAAa,SAA+B;AAC3D,UAAM,aAAa,OAAO;AAC1B,SAAK,iBAAiB,WAAW,KAAK,aAAa;AACnD,SAAK,iBAAiB,oBAAoB,KAAK,sBAAsB;AACrE,SAAK,iBAAiB,kBAAkB,KAAK,oBAAoB;AAAA,EACrE;AAAA,EAEmB,QAAQ,SAAqC;AAC5D,QAAI,QAAQ,IAAI,KAAK,KAAK,QAAQ,IAAI,eAAe,GAAG;AACpD,UAAI,YAAY;AAChB,YAAM,cAAc,OAAO,KAAK,QAAQ,eAAe,KAAK,MAAM;AAClE,YAAM,EAAE,sBAAsB,IAC1B,KAAK,gBAAgB,gBAAgB;AACzC,YAAM,cAAc,wBAAwB;AAE5C,UAAI,SAAS,GAAG;AAIZ,YAAI,aAAa;AACb,sBAAY;AAAA,QAChB,WAAW,aAAa;AACpB,sBAAY;AAAA,QAChB;AAAA,MACJ,WAAW,UAAU,GAAG;AAGpB,YAAI,aAAa;AACb,sBAAY;AAAA,QAChB,WAAW,aAAa;AACpB,sBAAY;AAAA,QAChB;AAAA,MACJ;AACA,WAAK,aAAa,YAAY;AAAA,IAClC;AAAA,EACJ;AACJ;AAtmBY;AAAA,EADP,MAAM,UAAU;AAAA,GALR,YAMD;AAGQ;AAAA,EADf,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GARjC,YASO;AAaT;AAAA,EADN,SAAS,EAAE,MAAM,QAAQ,WAAW,iBAAiB,CAAC;AAAA,GArB9C,YAsBF;AAMA;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM,WAAW,eAAe,CAAC;AAAA,GA3B5D,YA4BF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,KAAK,CAAC;AAAA,GA9BjC,YA+BF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM,WAAW,mBAAmB,CAAC;AAAA,GAjChE,YAkCF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GApCjB,YAqCF;AAGA;AAAA,EADN,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAvCjB,YAwCF;AASA;AAAA,EADN,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAhDjB,YAiDF;AAKA;AAAA,EADN,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM,WAAW,gBAAgB,CAAC;AAAA,GArD5D,YAsDF;AAGa;AAAA,EADnB,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAxDjB,YAyDW;",
6
6
  "names": ["event"]
7
7
  }
@@ -1,24 +1,24 @@
1
- "use strict";var b=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var n=(o,l,e,t)=>{for(var i=t>1?void 0:t?g(l,e):l,r=o.length-1,s;r>=0;r--)(s=o[r])&&(i=(t?s(l,e,i):s(i))||i);return t&&i&&b(l,e,i),i};import{html as h,nothing as y}from"@spectrum-web-components/base";import{property as a,query as E}from"@spectrum-web-components/base/src/decorators.js";import{LanguageResolutionController as C,languageResolverUpdatedSymbol as P}from"@spectrum-web-components/reactive-controllers/src/LanguageResolution.js";import{streamingListener as _}from"@spectrum-web-components/base/src/streaming-listener.js";import{NumberFormatter as c,NumberParser as m}from"@internationalized/number";import"@spectrum-web-components/icons-ui/icons/sp-icon-chevron75.js";import"@spectrum-web-components/icons-ui/icons/sp-icon-chevron100.js";import"@spectrum-web-components/icons-ui/icons/sp-icon-chevron200.js";import"@spectrum-web-components/action-button/sp-action-button.js";import{isAndroid as F,isIPhone as f}from"@spectrum-web-components/shared/src/platform.js";import{TextfieldBase as w}from"@spectrum-web-components/textfield";import x from"@spectrum-web-components/icon/src/spectrum-icon-chevron.css.js";import N from"./number-field.css.js";export const FRAMES_PER_CHANGE=5,CHANGE_DEBOUNCE_MS=100,indeterminatePlaceholder="-",remapMultiByteCharacters={"\uFF11":"1","\uFF12":"2","\uFF13":"3","\uFF14":"4","\uFF15":"5","\uFF16":"6","\uFF17":"7","\uFF18":"8","\uFF19":"9","\uFF10":"0","\u3001":",","\uFF0C":",","\u3002":".","\uFF0E":".","\uFF05":"%","\uFF0B":"+",\u30FC:"-"};const v={s:o=>h`
1
+ "use strict";var b=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var n=(a,l,e,t)=>{for(var s=t>1?void 0:t?g(l,e):l,i=a.length-1,r;i>=0;i--)(r=a[i])&&(s=(t?r(l,e,s):r(s))||s);return t&&s&&b(l,e,s),s};import{html as h,nothing as y}from"@spectrum-web-components/base";import{property as o,query as C}from"@spectrum-web-components/base/src/decorators.js";import{LanguageResolutionController as E,languageResolverUpdatedSymbol as P}from"@spectrum-web-components/reactive-controllers/src/LanguageResolution.js";import{streamingListener as _}from"@spectrum-web-components/base/src/streaming-listener.js";import{NumberFormatter as m,NumberParser as c}from"@internationalized/number";import"@spectrum-web-components/icons-ui/icons/sp-icon-chevron75.js";import"@spectrum-web-components/icons-ui/icons/sp-icon-chevron100.js";import"@spectrum-web-components/icons-ui/icons/sp-icon-chevron200.js";import"@spectrum-web-components/action-button/sp-action-button.js";import{isAndroid as F,isIPhone as f}from"@spectrum-web-components/shared/src/platform.js";import{TextfieldBase as V}from"@spectrum-web-components/textfield";import w from"@spectrum-web-components/icon/src/spectrum-icon-chevron.css.js";import N from"./number-field.css.js";export const FRAMES_PER_CHANGE=5,CHANGE_DEBOUNCE_MS=100,indeterminatePlaceholder="-",remapMultiByteCharacters={"\uFF11":"1","\uFF12":"2","\uFF13":"3","\uFF14":"4","\uFF15":"5","\uFF16":"6","\uFF17":"7","\uFF18":"8","\uFF19":"9","\uFF10":"0","\u3001":",","\uFF0C":",","\u3002":".","\uFF0E":".","\uFF05":"%","\uFF0B":"+",\u30FC:"-"};const v={s:a=>h`
2
2
  <sp-icon-chevron75
3
3
  slot="icon"
4
- class="stepper-icon spectrum-UIIcon-Chevron${o}75"
4
+ class="stepper-icon spectrum-UIIcon-Chevron${a}75"
5
5
  ></sp-icon-chevron75>
6
- `,m:o=>h`
6
+ `,m:a=>h`
7
7
  <sp-icon-chevron75
8
8
  slot="icon"
9
- class="stepper-icon spectrum-UIIcon-Chevron${o}75"
9
+ class="stepper-icon spectrum-UIIcon-Chevron${a}75"
10
10
  ></sp-icon-chevron75>
11
- `,l:o=>h`
11
+ `,l:a=>h`
12
12
  <sp-icon-chevron100
13
13
  slot="icon"
14
- class="stepper-icon spectrum-UIIcon-Chevron${o}100"
14
+ class="stepper-icon spectrum-UIIcon-Chevron${a}100"
15
15
  ></sp-icon-chevron100>
16
- `,xl:o=>h`
16
+ `,xl:a=>h`
17
17
  <sp-icon-chevron200
18
18
  slot="icon"
19
- class="stepper-icon spectrum-UIIcon-Chevron${o}200"
19
+ class="stepper-icon spectrum-UIIcon-Chevron${a}200"
20
20
  ></sp-icon-chevron200>
21
- `};export class NumberField extends w{constructor(){super(...arguments);this.focused=!1;this._forcedUnit="";this.formatOptions={};this.hideStepper=!1;this.indeterminate=!1;this.keyboardFocused=!1;this.managedInput=!1;this.stepModifier=10;this._value=NaN;this._trackingValue="";this.changeCount=0;this.languageResolver=new C(this);this.wasIndeterminate=!1;this.applyFocusElementLabel=e=>{this.appliedLabel=e};this.isComposing=!1}static get styles(){return[...super.styles,N,x]}set value(e){const t=this.validateInput(e);if(t===this.value)return;const i=this._value;this._value=t,this.requestUpdate("value",i)}get value(){return this._value}get inputValue(){return this.indeterminate?this.formattedValue:this.inputElement.value}get valueAsString(){return this._value.toString()}set valueAsString(e){this.value=this.numberParser.parse(e)}get formattedValue(){return isNaN(this.value)?"":this.numberFormatter.format(this.value)+(this.focused?"":this._forcedUnit)}convertValueToNumber(e){var t;if(f()&&this.inputElement.inputMode==="decimal"){const i=this.numberFormatter.formatToParts(1000.1),r=e.split("").find(u=>u===","||u==="."),s=(t=i.find(u=>u.type==="decimal"))==null?void 0:t.value;r&&s&&(e=e.replace(r,s))}return this.numberParser.parse(e)}get _step(){var e;return typeof this.step!="undefined"?this.step:((e=this.formatOptions)==null?void 0:e.style)==="percent"?.01:1}handlePointerdown(e){if(e.button!==0){e.preventDefault();return}this.managedInput=!0,this.buttons.setPointerCapture(e.pointerId);const t=this.buttons.children[0].getBoundingClientRect(),i=this.buttons.children[1].getBoundingClientRect();this.findChange=r=>{r.clientX>=t.x&&r.clientY>=t.y&&r.clientX<=t.x+t.width&&r.clientY<=t.y+t.height?this.change=s=>this.increment(s.shiftKey?this.stepModifier:1):r.clientX>=i.x&&r.clientY>=i.y&&r.clientX<=i.x+i.width&&r.clientY<=i.y+i.height&&(this.change=s=>this.decrement(s.shiftKey?this.stepModifier:1))},this.findChange(e),this.startChange(e)}startChange(e){this.changeCount=0,this.doChange(e),this.safty=setTimeout(()=>{this.doNextChange(e)},400)}doChange(e){this.change(e)}handlePointermove(e){this.findChange(e)}handlePointerup(e){this.buttons.releasePointerCapture(e.pointerId),cancelAnimationFrame(this.nextChange),clearTimeout(this.safty),this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0})),this.managedInput=!1}doNextChange(e){return this.changeCount+=1,this.changeCount%FRAMES_PER_CHANGE===0&&this.doChange(e),requestAnimationFrame(()=>{this.nextChange=this.doNextChange(e)})}stepBy(e){if(this.disabled||this.readonly)return;const t=typeof this.min!="undefined"?this.min:0;let i=this.value;i+=e*this._step,isNaN(this.value)?this.value=t:this.value=i,this.dispatchEvent(new Event("input",{bubbles:!0,composed:!0})),this.indeterminate=!1,this.focus()}increment(e=1){this.stepBy(1*e)}decrement(e=1){this.stepBy(-1*e)}handleKeydown(e){if(!this.isComposing)switch(e.code){case"ArrowUp":e.preventDefault(),this.increment(e.shiftKey?this.stepModifier:1),this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0}));break;case"ArrowDown":e.preventDefault(),this.decrement(e.shiftKey?this.stepModifier:1),this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0}));break}}onScroll(e){e.preventDefault(),this.managedInput=!0;const t=e.shiftKey?e.deltaX/Math.abs(e.deltaX):e.deltaY/Math.abs(e.deltaY);t!==0&&!isNaN(t)&&(this.stepBy(t*(e.shiftKey?this.stepModifier:1)),clearTimeout(this.queuedChangeEvent),this.queuedChangeEvent=setTimeout(()=>{this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0}))},CHANGE_DEBOUNCE_MS)),this.managedInput=!1}onFocus(){super.onFocus(),this._trackingValue=this.inputValue,this.keyboardFocused=!this.readonly&&!0,this.addEventListener("wheel",this.onScroll,{passive:!1})}onBlur(){super.onBlur(),this.keyboardFocused=!this.readonly&&!1,this.removeEventListener("wheel",this.onScroll)}handleFocusin(){this.focused=!this.readonly&&!0,this.keyboardFocused=!this.readonly&&!0}handleFocusout(){this.focused=!this.readonly&&!1,this.keyboardFocused=!this.readonly&&!1}handleChange(){const e=this.convertValueToNumber(this.inputValue);if(this.wasIndeterminate&&(this.wasIndeterminate=!1,this.indeterminateValue=void 0,isNaN(e))){this.indeterminate=!0;return}this.value=e,super.handleChange()}handleCompositionStart(){this.isComposing=!0}handleCompositionEnd(){this.isComposing=!1,requestAnimationFrame(()=>{this.inputElement.dispatchEvent(new Event("input",{composed:!0,bubbles:!0}))})}handleInput(e){if(this.isComposing){e.stopPropagation();return}this.indeterminate&&(this.wasIndeterminate=!0,this.indeterminateValue=this.value,this.inputElement.value=this.inputElement.value.replace(indeterminatePlaceholder,""));const{value:t,selectionStart:i}=this.inputElement,r=t.split("").map(p=>remapMultiByteCharacters[p]||p).join("");if(this.numberParser.isValidPartialNumber(r)){const p=this.convertValueToNumber(r);!r&&this.indeterminateValue?(this.indeterminate=!0,this._value=this.indeterminateValue):(this.indeterminate=!1,this._value=this.validateInput(p)),this._trackingValue=r,this.inputElement.value=r,this.inputElement.setSelectionRange(i,i);return}else this.inputElement.value=this.indeterminate?indeterminatePlaceholder:this._trackingValue;const s=r.length,u=this._trackingValue.length,d=(i||s)-(s-u);this.inputElement.setSelectionRange(d,d)}validateInput(e){if(typeof this.min!="undefined"&&(e=Math.max(this.min,e)),typeof this.max!="undefined"&&(e=Math.min(this.max,e)),this.step){const t=typeof this.min!="undefined"?this.min:0,i=(e-t)%this.step;if(i===0||(Math.round(i/this.step)===1?e+=this.step-i:e-=i),typeof this.max!="undefined")for(;e>this.max;)e-=this.step}return e}get displayValue(){const e=this.focused?"":indeterminatePlaceholder;return this.indeterminate?e:this.formattedValue}clearNumberFormatterCache(){this._numberFormatter=void 0,this._numberParser=void 0}get numberFormatter(){if(!this._numberFormatter||!this._numberFormatterFocused){const{style:e,unit:t,unitDisplay:i,...r}=this.formatOptions;e!=="unit"&&(r.style=e),this._numberFormatterFocused=new c(this.languageResolver.language,r);try{this._numberFormatter=new c(this.languageResolver.language,this.formatOptions),this._forcedUnit="",this._numberFormatter.format(1)}catch(s){e==="unit"&&(this._forcedUnit=t),this._numberFormatter=this._numberFormatterFocused}}return this.focused?this._numberFormatterFocused:this._numberFormatter}get numberParser(){if(!this._numberParser||!this._numberParserFocused){const{style:e,unit:t,unitDisplay:i,...r}=this.formatOptions;e!=="unit"&&(r.style=e),this._numberParserFocused=new m(this.languageResolver.language,r);try{this._numberParser=new m(this.languageResolver.language,this.formatOptions),this._forcedUnit="",this._numberParser.parse("0")}catch(s){e==="unit"&&(this._forcedUnit=t),this._numberParser=this._numberParserFocused}}return this.focused?this._numberParserFocused:this._numberParser}renderField(){return this.autocomplete="off",h`
21
+ `};export class NumberField extends V{constructor(){super(...arguments);this.focused=!1;this._forcedUnit="";this.formatOptions={};this.hideStepper=!1;this.indeterminate=!1;this.keyboardFocused=!1;this.managedInput=!1;this.stepModifier=10;this._value=NaN;this._trackingValue="";this.lastCommitedValue=NaN;this.changeCount=0;this.languageResolver=new E(this);this.wasIndeterminate=!1;this.applyFocusElementLabel=e=>{this.appliedLabel=e};this.isComposing=!1}static get styles(){return[...super.styles,N,w]}set value(e){const t=this.validateInput(e);if(t===this.value)return;const s=this._value;this._value=t,!this.managedInput&&this.lastCommitedValue!==this.value&&(this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0})),this.lastCommitedValue=this.value),this.requestUpdate("value",s)}get value(){return this._value}get inputValue(){return this.indeterminate?this.formattedValue:this.inputElement.value}get valueAsString(){return this._value.toString()}set valueAsString(e){this.value=this.numberParser.parse(e)}get formattedValue(){return isNaN(this.value)?"":this.numberFormatter.format(this.value)+(this.focused?"":this._forcedUnit)}convertValueToNumber(e){var t;if(f()&&this.inputElement.inputMode==="decimal"){const s=this.numberFormatter.formatToParts(1000.1),i=e.split("").find(u=>u===","||u==="."),r=(t=s.find(u=>u.type==="decimal"))==null?void 0:t.value;i&&r&&(e=e.replace(i,r))}return this.numberParser.parse(e)}get _step(){var e;return typeof this.step!="undefined"?this.step:((e=this.formatOptions)==null?void 0:e.style)==="percent"?.01:1}handlePointerdown(e){if(e.button!==0){e.preventDefault();return}this.managedInput=!0,this.buttons.setPointerCapture(e.pointerId);const t=this.buttons.children[0].getBoundingClientRect(),s=this.buttons.children[1].getBoundingClientRect();this.findChange=i=>{i.clientX>=t.x&&i.clientY>=t.y&&i.clientX<=t.x+t.width&&i.clientY<=t.y+t.height?this.change=r=>this.increment(r.shiftKey?this.stepModifier:1):i.clientX>=s.x&&i.clientY>=s.y&&i.clientX<=s.x+s.width&&i.clientY<=s.y+s.height&&(this.change=r=>this.decrement(r.shiftKey?this.stepModifier:1))},this.findChange(e),this.startChange(e)}startChange(e){this.changeCount=0,this.doChange(e),this.safty=setTimeout(()=>{this.doNextChange(e)},400)}doChange(e){this.change(e)}handlePointermove(e){this.findChange(e)}handlePointerup(e){this.buttons.releasePointerCapture(e.pointerId),cancelAnimationFrame(this.nextChange),clearTimeout(this.safty),this.lastCommitedValue!==this.value&&(this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0})),this.lastCommitedValue=this.value),this.managedInput=!1}doNextChange(e){return this.changeCount+=1,this.changeCount%FRAMES_PER_CHANGE===0&&this.doChange(e),requestAnimationFrame(()=>{this.nextChange=this.doNextChange(e)})}stepBy(e){if(this.disabled||this.readonly)return;const t=typeof this.min!="undefined"?this.min:0;let s=this.value;s+=e*this._step,isNaN(this.value)?this.value=t:this.value=s,this.dispatchEvent(new Event("input",{bubbles:!0,composed:!0})),this.indeterminate=!1,this.focus()}increment(e=1){this.stepBy(1*e)}decrement(e=1){this.stepBy(-1*e)}handleKeydown(e){if(!this.isComposing)switch(e.code){case"ArrowUp":e.preventDefault(),this.increment(e.shiftKey?this.stepModifier:1);break;case"ArrowDown":e.preventDefault(),this.decrement(e.shiftKey?this.stepModifier:1);break}}onScroll(e){e.preventDefault(),this.managedInput=!0;const t=e.shiftKey?e.deltaX/Math.abs(e.deltaX):e.deltaY/Math.abs(e.deltaY);t!==0&&!isNaN(t)&&(this.stepBy(t*(e.shiftKey?this.stepModifier:1)),clearTimeout(this.queuedChangeEvent),this.queuedChangeEvent=setTimeout(()=>{this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0})),this.lastCommitedValue=this.value},CHANGE_DEBOUNCE_MS)),this.managedInput=!1}onFocus(){super.onFocus(),this._trackingValue=this.inputValue,this.keyboardFocused=!this.readonly&&!0,this.addEventListener("wheel",this.onScroll,{passive:!1})}onBlur(){super.onBlur(),this.keyboardFocused=!this.readonly&&!1,this.removeEventListener("wheel",this.onScroll)}handleFocusin(){this.focused=!this.readonly&&!0,this.keyboardFocused=!this.readonly&&!0}handleFocusout(){this.focused=!this.readonly&&!1,this.keyboardFocused=!this.readonly&&!1}handleChange(){const e=this.convertValueToNumber(this.inputValue);if(this.wasIndeterminate&&(this.wasIndeterminate=!1,this.indeterminateValue=void 0,isNaN(e))){this.indeterminate=!0;return}this.value=e,this.inputElement.value=this.formattedValue,this.lastCommitedValue!==this.value&&(this.lastCommitedValue=this.value,super.handleChange())}handleCompositionStart(){this.isComposing=!0}handleCompositionEnd(){this.isComposing=!1,requestAnimationFrame(()=>{this.inputElement.dispatchEvent(new Event("input",{composed:!0,bubbles:!0}))})}handleInput(e){if(this.isComposing){e.stopPropagation();return}this.indeterminate&&(this.wasIndeterminate=!0,this.indeterminateValue=this.value,this.inputElement.value=this.inputElement.value.replace(indeterminatePlaceholder,""));const{value:t,selectionStart:s}=this.inputElement,i=t.split("").map(d=>remapMultiByteCharacters[d]||d).join("");if(this.numberParser.isValidPartialNumber(i)){const d=this.convertValueToNumber(i);!i&&this.indeterminateValue?(this.indeterminate=!0,this._value=this.indeterminateValue):(this.indeterminate=!1,this._value=this.validateInput(d)),this._trackingValue=i,this.inputElement.value=i,this.inputElement.setSelectionRange(s,s);return}else this.inputElement.value=this.indeterminate?indeterminatePlaceholder:this._trackingValue;const r=i.length,u=this._trackingValue.length,p=(s||r)-(r-u);this.inputElement.setSelectionRange(p,p)}validateInput(e){const t=e<0?-1:1;if(e*=t,typeof this.min!="undefined"&&(e=Math.max(this.min,e)),typeof this.max!="undefined"&&(e=Math.min(this.max,e)),this.step){const s=typeof this.min!="undefined"?this.min:0,i=(e-s)%this.step;if(i===0||(Math.round(i/this.step)===1?e+=this.step-i:e-=i),typeof this.max!="undefined")for(;e>this.max;)e-=this.step}return e*=t,e}get displayValue(){const e=this.focused?"":indeterminatePlaceholder;return this.indeterminate?e:this.formattedValue}clearNumberFormatterCache(){this._numberFormatter=void 0,this._numberParser=void 0}get numberFormatter(){if(!this._numberFormatter||!this._numberFormatterFocused){const{style:e,unit:t,unitDisplay:s,...i}=this.formatOptions;e!=="unit"&&(i.style=e),this._numberFormatterFocused=new m(this.languageResolver.language,i);try{this._numberFormatter=new m(this.languageResolver.language,this.formatOptions),this._forcedUnit="",this._numberFormatter.format(1)}catch(r){e==="unit"&&(this._forcedUnit=t),this._numberFormatter=this._numberFormatterFocused}}return this.focused?this._numberFormatterFocused:this._numberFormatter}get numberParser(){if(!this._numberParser||!this._numberParserFocused){const{style:e,unit:t,unitDisplay:s,...i}=this.formatOptions;e!=="unit"&&(i.style=e),this._numberParserFocused=new c(this.languageResolver.language,i);try{this._numberParser=new c(this.languageResolver.language,this.formatOptions),this._forcedUnit="",this._numberParser.parse("0")}catch(r){e==="unit"&&(this._forcedUnit=t),this._numberParser=this._numberParserFocused}}return this.focused?this._numberParserFocused:this._numberParser}renderField(){return this.autocomplete="off",h`
22
22
  ${super.renderField()}
23
23
  ${this.hideStepper?y:h`
24
24
  <span
@@ -51,5 +51,5 @@
51
51
  </sp-action-button>
52
52
  </span>
53
53
  `}
54
- `}update(e){if((e.has("formatOptions")||e.has("resolvedLanguage"))&&this.clearNumberFormatterCache(),e.has("value")||e.has("max")||e.has("min")){const t=this.numberParser.parse(this.formattedValue.replace(this._forcedUnit,""));this.value=t}super.update(e)}willUpdate(e){this.multiline=!1,e.has(P)&&this.clearNumberFormatterCache()}firstUpdated(e){super.firstUpdated(e),this.addEventListener("keydown",this.handleKeydown),this.addEventListener("compositionstart",this.handleCompositionStart),this.addEventListener("compositionend",this.handleCompositionEnd)}updated(e){if(e.has("min")||e.has("formatOptions")){let t="numeric";const i=typeof this.min!="undefined"&&this.min<0,{maximumFractionDigits:r}=this.numberFormatter.resolvedOptions(),s=r>0;f()?i?t="text":s&&(t="decimal"):F()&&(i?t="numeric":s&&(t="decimal")),this.inputElement.inputMode=t}}}n([E(".buttons")],NumberField.prototype,"buttons",2),n([a({type:Boolean,reflect:!0})],NumberField.prototype,"focused",2),n([a({type:Object,attribute:"format-options"})],NumberField.prototype,"formatOptions",2),n([a({type:Boolean,reflect:!0,attribute:"hide-stepper"})],NumberField.prototype,"hideStepper",2),n([a({type:Boolean,reflect:!0})],NumberField.prototype,"indeterminate",2),n([a({type:Boolean,reflect:!0,attribute:"keyboard-focused"})],NumberField.prototype,"keyboardFocused",2),n([a({type:Number})],NumberField.prototype,"max",2),n([a({type:Number})],NumberField.prototype,"min",2),n([a({type:Number})],NumberField.prototype,"step",2),n([a({type:Number,reflect:!0,attribute:"step-modifier"})],NumberField.prototype,"stepModifier",2),n([a({type:Number})],NumberField.prototype,"value",1);
54
+ `}update(e){if((e.has("formatOptions")||e.has("resolvedLanguage"))&&this.clearNumberFormatterCache(),e.has("value")||e.has("max")||e.has("min")){const t=this.numberParser.parse(this.formattedValue.replace(this._forcedUnit,""));this.value=t}super.update(e)}willUpdate(e){this.multiline=!1,e.has(P)&&this.clearNumberFormatterCache()}firstUpdated(e){super.firstUpdated(e),this.addEventListener("keydown",this.handleKeydown),this.addEventListener("compositionstart",this.handleCompositionStart),this.addEventListener("compositionend",this.handleCompositionEnd)}updated(e){if(e.has("min")||e.has("formatOptions")){let t="numeric";const s=typeof this.min!="undefined"&&this.min<0,{maximumFractionDigits:i}=this.numberFormatter.resolvedOptions(),r=i>0;f()?s?t="text":r&&(t="decimal"):F()&&(s?t="numeric":r&&(t="decimal")),this.inputElement.inputMode=t}}}n([C(".buttons")],NumberField.prototype,"buttons",2),n([o({type:Boolean,reflect:!0})],NumberField.prototype,"focused",2),n([o({type:Object,attribute:"format-options"})],NumberField.prototype,"formatOptions",2),n([o({type:Boolean,reflect:!0,attribute:"hide-stepper"})],NumberField.prototype,"hideStepper",2),n([o({type:Boolean,reflect:!0})],NumberField.prototype,"indeterminate",2),n([o({type:Boolean,reflect:!0,attribute:"keyboard-focused"})],NumberField.prototype,"keyboardFocused",2),n([o({type:Number})],NumberField.prototype,"max",2),n([o({type:Number})],NumberField.prototype,"min",2),n([o({type:Number})],NumberField.prototype,"step",2),n([o({type:Number,reflect:!0,attribute:"step-modifier"})],NumberField.prototype,"stepModifier",2),n([o({type:Number})],NumberField.prototype,"value",1);
55
55
  //# sourceMappingURL=NumberField.js.map