@radix-ng/primitives 0.50.0 → 1.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/collection/README.md +1 -0
- package/fesm2022/radix-ng-primitives-accordion.mjs +134 -66
- package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-alert-dialog.mjs +224 -132
- package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-arrow.mjs +26 -10
- package/fesm2022/radix-ng-primitives-arrow.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-aspect-ratio.mjs +6 -6
- package/fesm2022/radix-ng-primitives-aspect-ratio.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-avatar.mjs +68 -75
- package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-button.mjs +123 -0
- package/fesm2022/radix-ng-primitives-button.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-calendar.mjs +104 -103
- package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-checkbox.mjs +414 -80
- package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-collapsible.mjs +193 -92
- package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-collection.mjs +72 -0
- package/fesm2022/radix-ng-primitives-collection.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-config.mjs +5 -5
- package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-context-menu.mjs +143 -427
- package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-core.mjs +757 -757
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-cropper.mjs +55 -53
- package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-date-field.mjs +93 -86
- package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dialog.mjs +658 -330
- package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +98 -76
- package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-drawer.mjs +1059 -0
- package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-editable.mjs +20 -20
- package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-field.mjs +363 -0
- package/fesm2022/radix-ng-primitives-field.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-fieldset.mjs +79 -0
- package/fesm2022/radix-ng-primitives-fieldset.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-focus-guards.mjs +3 -3
- package/fesm2022/radix-ng-primitives-focus-guards.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-focus-scope.mjs +29 -14
- package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-input.mjs +172 -0
- package/fesm2022/radix-ng-primitives-input.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-label.mjs +11 -11
- package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menu.mjs +1484 -353
- package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menubar.mjs +290 -162
- package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-meter.mjs +271 -0
- package/fesm2022/radix-ng-primitives-meter.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs +1060 -1553
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-number-field.mjs +1102 -366
- package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-pagination.mjs +51 -51
- package/fesm2022/radix-ng-primitives-pagination.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popover.mjs +980 -995
- package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popper.mjs +137 -82
- package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-portal.mjs +40 -16
- package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-presence.mjs +134 -246
- package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-preview-card.mjs +997 -0
- package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-progress.mjs +231 -92
- package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-radio.mjs +211 -70
- package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-roving-focus.mjs +127 -77
- package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-select.mjs +791 -511
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-separator.mjs +16 -45
- package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs +976 -720
- package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-stepper.mjs +69 -71
- package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-switch.mjs +128 -124
- package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tabs.mjs +388 -115
- package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-time-field.mjs +111 -117
- package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle-group.mjs +122 -248
- package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle.mjs +99 -62
- package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toolbar.mjs +307 -94
- package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tooltip.mjs +690 -1079
- package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-visually-hidden.mjs +46 -87
- package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives.mjs.map +1 -1
- package/meter/README.md +3 -0
- package/navigation-menu/README.md +2 -1
- package/package.json +85 -63
- package/portal/README.md +2 -0
- package/preview-card/README.md +3 -0
- package/schematics/collection.json +1 -0
- package/schematics/ng-add/index.d.ts +3 -2
- package/schematics/ng-add/index.js +62 -31
- package/schematics/ng-add/index.js.map +1 -1
- package/schematics/ng-add/package-config.d.ts +4 -2
- package/schematics/ng-add/package-config.js +10 -2
- package/schematics/ng-add/package-config.js.map +1 -1
- package/schematics/ng-add/schema.d.ts +3 -0
- package/schematics/ng-add/schema.js +3 -0
- package/schematics/ng-add/schema.js.map +1 -0
- package/schematics/ng-add/schema.json +14 -0
- package/select/README.md +2 -0
- package/{accordion/index.d.ts → types/radix-ng-primitives-accordion.d.ts} +102 -67
- package/types/radix-ng-primitives-alert-dialog.d.ts +114 -0
- package/{arrow/index.d.ts → types/radix-ng-primitives-arrow.d.ts} +1 -1
- package/{aspect-ratio/index.d.ts → types/radix-ng-primitives-aspect-ratio.d.ts} +1 -1
- package/{avatar/index.d.ts → types/radix-ng-primitives-avatar.d.ts} +7 -11
- package/types/radix-ng-primitives-button.d.ts +73 -0
- package/{calendar/index.d.ts → types/radix-ng-primitives-calendar.d.ts} +2 -3
- package/types/radix-ng-primitives-checkbox.d.ts +337 -0
- package/types/radix-ng-primitives-collapsible.d.ts +159 -0
- package/types/radix-ng-primitives-collection.d.ts +44 -0
- package/{config/index.d.ts → types/radix-ng-primitives-config.d.ts} +1 -1
- package/types/radix-ng-primitives-context-menu.d.ts +73 -0
- package/{core/index.d.ts → types/radix-ng-primitives-core.d.ts} +311 -236
- package/{cropper/index.d.ts → types/radix-ng-primitives-cropper.d.ts} +6 -5
- package/{date-field/index.d.ts → types/radix-ng-primitives-date-field.d.ts} +42 -27
- package/types/radix-ng-primitives-dialog.d.ts +323 -0
- package/{dismissable-layer/index.d.ts → types/radix-ng-primitives-dismissable-layer.d.ts} +15 -7
- package/types/radix-ng-primitives-drawer.d.ts +448 -0
- package/{editable/index.d.ts → types/radix-ng-primitives-editable.d.ts} +1 -1
- package/types/radix-ng-primitives-field.d.ts +373 -0
- package/types/radix-ng-primitives-fieldset.d.ts +48 -0
- package/{focus-scope/index.d.ts → types/radix-ng-primitives-focus-scope.d.ts} +13 -5
- package/types/radix-ng-primitives-input.d.ts +87 -0
- package/{label/index.d.ts → types/radix-ng-primitives-label.d.ts} +0 -1
- package/types/radix-ng-primitives-menu.d.ts +612 -0
- package/types/radix-ng-primitives-menubar.d.ts +66 -0
- package/types/radix-ng-primitives-meter.d.ts +193 -0
- package/types/radix-ng-primitives-navigation-menu.d.ts +488 -0
- package/types/radix-ng-primitives-number-field.d.ts +464 -0
- package/{pagination/index.d.ts → types/radix-ng-primitives-pagination.d.ts} +2 -2
- package/types/radix-ng-primitives-popover.d.ts +416 -0
- package/{popper/index.d.ts → types/radix-ng-primitives-popper.d.ts} +50 -9
- package/types/radix-ng-primitives-portal.d.ts +30 -0
- package/types/radix-ng-primitives-presence.d.ts +55 -0
- package/types/radix-ng-primitives-preview-card.d.ts +359 -0
- package/types/radix-ng-primitives-progress.d.ts +206 -0
- package/{radio/index.d.ts → types/radix-ng-primitives-radio.d.ts} +56 -26
- package/{roving-focus/index.d.ts → types/radix-ng-primitives-roving-focus.d.ts} +38 -27
- package/types/radix-ng-primitives-select.d.ts +512 -0
- package/types/radix-ng-primitives-separator.d.ts +38 -0
- package/types/radix-ng-primitives-slider.d.ts +377 -0
- package/{stepper/index.d.ts → types/radix-ng-primitives-stepper.d.ts} +21 -22
- package/types/radix-ng-primitives-switch.d.ts +121 -0
- package/types/radix-ng-primitives-tabs.d.ts +247 -0
- package/{time-field/index.d.ts → types/radix-ng-primitives-time-field.d.ts} +46 -31
- package/types/radix-ng-primitives-toggle-group.d.ts +116 -0
- package/types/radix-ng-primitives-toggle.d.ts +65 -0
- package/types/radix-ng-primitives-toolbar.d.ts +180 -0
- package/types/radix-ng-primitives-tooltip.d.ts +395 -0
- package/{visually-hidden/index.d.ts → types/radix-ng-primitives-visually-hidden.d.ts} +19 -19
- package/alert-dialog/index.d.ts +0 -57
- package/checkbox/index.d.ts +0 -164
- package/collapsible/index.d.ts +0 -85
- package/context-menu/index.d.ts +0 -129
- package/dialog/index.d.ts +0 -205
- package/dropdown-menu/README.md +0 -1
- package/dropdown-menu/index.d.ts +0 -171
- package/fesm2022/radix-ng-primitives-dropdown-menu.mjs +0 -583
- package/fesm2022/radix-ng-primitives-dropdown-menu.mjs.map +0 -1
- package/fesm2022/radix-ng-primitives-hover-card.mjs +0 -1246
- package/fesm2022/radix-ng-primitives-hover-card.mjs.map +0 -1
- package/fesm2022/radix-ng-primitives-tooltip2.mjs +0 -740
- package/fesm2022/radix-ng-primitives-tooltip2.mjs.map +0 -1
- package/hover-card/README.md +0 -3
- package/hover-card/index.d.ts +0 -472
- package/menu/index.d.ts +0 -139
- package/menubar/index.d.ts +0 -56
- package/navigation-menu/index.d.ts +0 -405
- package/number-field/index.d.ts +0 -203
- package/popover/index.d.ts +0 -403
- package/portal/index.d.ts +0 -22
- package/presence/index.d.ts +0 -103
- package/progress/index.d.ts +0 -79
- package/select/index.d.ts +0 -214
- package/separator/index.d.ts +0 -63
- package/slider/index.d.ts +0 -263
- package/switch/index.d.ts +0 -105
- package/tabs/index.d.ts +0 -112
- package/toggle/index.d.ts +0 -75
- package/toggle-group/index.d.ts +0 -194
- package/toolbar/index.d.ts +0 -55
- package/tooltip/index.d.ts +0 -433
- package/tooltip2/README.md +0 -3
- package/tooltip2/index.d.ts +0 -325
- /package/{focus-guards/index.d.ts → types/radix-ng-primitives-focus-guards.d.ts} +0 -0
- /package/{index.d.ts → types/radix-ng-primitives.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radix-ng-primitives-number-field.mjs","sources":["../tmp-esm2022/number-field/src/number-field-context.token.js","../tmp-esm2022/number-field/src/utils.js","../tmp-esm2022/number-field/src/number-field-decrement.directive.js","../tmp-esm2022/number-field/src/number-field-increment.directive.js","../tmp-esm2022/number-field/src/number-field-input.directive.js","../tmp-esm2022/number-field/src/number-field-root.directive.js","../tmp-esm2022/number-field/index.js","../tmp-esm2022/number-field/radix-ng-primitives-number-field.js"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nexport const NUMBER_FIELD_ROOT_CONTEXT = new InjectionToken('NUMBER_FIELD_ROOT_CONTEXT');\nexport function injectNumberFieldRootContext() {\n return inject(NUMBER_FIELD_ROOT_CONTEXT);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWZpZWxkLWNvbnRleHQudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL251bWJlci1maWVsZC9zcmMvbnVtYmVyLWZpZWxkLWNvbnRleHQudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQThELE1BQU0sZUFBZSxDQUFDO0FBd0JuSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLGNBQWMsQ0FBMEIsMkJBQTJCLENBQUMsQ0FBQztBQUVsSCxNQUFNLFVBQVUsNEJBQTRCO0lBQ3hDLE9BQU8sTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCwgTnVtYmVySW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgSW5wdXRTaWduYWwsIElucHV0U2lnbmFsV2l0aFRyYW5zZm9ybSwgTW9kZWxTaWduYWwsIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW5wdXRNb2RlIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVtYmVyRmllbGRDb250ZXh0VG9rZW4ge1xuICAgIHZhbHVlOiBNb2RlbFNpZ25hbDxudW1iZXIgfCB1bmRlZmluZWQ+O1xuICAgIGxvY2FsZTogSW5wdXRTaWduYWw8c3RyaW5nPjtcbiAgICBpbnB1dE1vZGU6IFNpZ25hbDxJbnB1dE1vZGU+O1xuICAgIHRleHRWYWx1ZTogU2lnbmFsPGFueT47XG4gICAgcmVhZG9ubHk6IElucHV0U2lnbmFsV2l0aFRyYW5zZm9ybTxib29sZWFuLCBCb29sZWFuSW5wdXQ+O1xuICAgIG1heDogSW5wdXRTaWduYWxXaXRoVHJhbnNmb3JtPG51bWJlciB8IHVuZGVmaW5lZCwgTnVtYmVySW5wdXQ+O1xuICAgIG1pbjogSW5wdXRTaWduYWxXaXRoVHJhbnNmb3JtPG51bWJlciB8IHVuZGVmaW5lZCwgTnVtYmVySW5wdXQ+O1xuICAgIG9uSW5wdXRFbGVtZW50OiAoZWw6IEhUTUxJbnB1dEVsZW1lbnQpID0+IHZvaWQ7XG4gICAgZGlzYWJsZWQ6IElucHV0U2lnbmFsV2l0aFRyYW5zZm9ybTxib29sZWFuLCBCb29sZWFuSW5wdXQ+O1xuICAgIGRpc2FibGVXaGVlbENoYW5nZTogSW5wdXRTaWduYWxXaXRoVHJhbnNmb3JtPGJvb2xlYW4sIEJvb2xlYW5JbnB1dD47XG4gICAgaGFuZGxlSW5jcmVhc2U6IChtdWx0aXBsaWVyPzogbnVtYmVyKSA9PiB2b2lkO1xuICAgIGhhbmRsZURlY3JlYXNlOiAobXVsdGlwbGllcj86IG51bWJlcikgPT4gdm9pZDtcbiAgICBhcHBseUlucHV0VmFsdWU6ICh2YWw6IHN0cmluZykgPT4gdm9pZDtcbiAgICB2YWxpZGF0ZTogKHZhbDogc3RyaW5nKSA9PiBib29sZWFuO1xuICAgIHNldElucHV0VmFsdWU6ICh2YWw6IHN0cmluZykgPT4gdm9pZDtcbiAgICBpc0luY3JlYXNlRGlzYWJsZWQ6IFNpZ25hbDxib29sZWFuPjtcbiAgICBpc0RlY3JlYXNlRGlzYWJsZWQ6IFNpZ25hbDxib29sZWFuPjtcbiAgICBoYW5kbGVNaW5NYXhWYWx1ZTogKHR5cGU6ICdtaW4nIHwgJ21heCcpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBOVU1CRVJfRklFTERfUk9PVF9DT05URVhUID0gbmV3IEluamVjdGlvblRva2VuPE51bWJlckZpZWxkQ29udGV4dFRva2VuPignTlVNQkVSX0ZJRUxEX1JPT1RfQ09OVEVYVCcpO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0TnVtYmVyRmllbGRSb290Q29udGV4dCgpOiBOdW1iZXJGaWVsZENvbnRleHRUb2tlbiB7XG4gICAgcmV0dXJuIGluamVjdChOVU1CRVJfRklFTERfUk9PVF9DT05URVhUKTtcbn1cbiJdfQ==","import { computed, DestroyRef, effect, inject, Injectable, signal } from '@angular/core';\nimport { NumberFormatter, NumberParser } from '@internationalized/number';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nexport class PressedHoldService {\n constructor() {\n this.destroyRef = inject(DestroyRef);\n }\n create(options) {\n const timeout = signal(undefined, ...(ngDevMode ? [{ debugName: \"timeout\" }] : []));\n const triggerHook = new Subject();\n const isPressed = signal(false, ...(ngDevMode ? [{ debugName: \"isPressed\" }] : []));\n const resetTimeout = () => {\n const timer = timeout();\n if (timer !== undefined) {\n window.clearTimeout(timer);\n timeout.set(undefined);\n }\n };\n const onIncrementPressStart = (delay) => {\n resetTimeout();\n if (options.disabled())\n return;\n triggerHook.next();\n timeout.set(window.setTimeout(() => {\n onIncrementPressStart(60);\n }, delay));\n };\n const onPressStart = (event) => {\n if (event.button !== 0 || isPressed())\n return;\n event.preventDefault();\n isPressed.set(true);\n onIncrementPressStart(400);\n };\n const onPressRelease = () => {\n isPressed.set(false);\n resetTimeout();\n };\n effect(() => {\n // Skip SSR environments\n if (typeof window === 'undefined')\n return;\n const targetElement = options.target?.() || window;\n const destroy$ = new Subject();\n const pointerDownSub = fromEvent(targetElement, 'pointerdown')\n .pipe(takeUntil(destroy$))\n .subscribe((e) => onPressStart(e));\n const pointerUpSub = fromEvent(window, 'pointerup').pipe(takeUntil(destroy$)).subscribe(onPressRelease);\n const pointerCancelSub = fromEvent(window, 'pointercancel')\n .pipe(takeUntil(destroy$))\n .subscribe(onPressRelease);\n this.destroyRef.onDestroy(() => {\n destroy$.next();\n destroy$.complete();\n pointerDownSub.unsubscribe();\n pointerUpSub.unsubscribe();\n pointerCancelSub.unsubscribe();\n });\n });\n return {\n isPressed: isPressed.asReadonly(),\n onTrigger: (fn) => {\n const sub = triggerHook.subscribe(fn);\n this.destroyRef.onDestroy(() => sub.unsubscribe());\n }\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: PressedHoldService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: PressedHoldService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: PressedHoldService, decorators: [{\n type: Injectable\n }] });\nexport function useNumberFormatter(locale, options = signal({})) {\n return computed(() => new NumberFormatter(locale(), options()));\n}\nexport function useNumberParser(locale, options = signal({})) {\n return computed(() => new NumberParser(locale(), options()));\n}\nexport function handleDecimalOperation(operator, value1, value2) {\n let result = operator === '+' ? value1 + value2 : value1 - value2;\n // Check if we have decimals\n if (value1 % 1 !== 0 || value2 % 1 !== 0) {\n const value1Decimal = value1.toString().split('.');\n const value2Decimal = value2.toString().split('.');\n const value1DecimalLength = (value1Decimal[1] && value1Decimal[1].length) || 0;\n const value2DecimalLength = (value2Decimal[1] && value2Decimal[1].length) || 0;\n const multiplier = 10 ** Math.max(value1DecimalLength, value2DecimalLength);\n // Transform the decimals to integers based on the precision\n value1 = Math.round(value1 * multiplier);\n value2 = Math.round(value2 * multiplier);\n // Perform the operation on integers values to make sure we don't get a fancy decimal value\n result = operator === '+' ? value1 + value2 : value1 - value2;\n // Transform the integer result back to decimal\n result /= multiplier;\n }\n return result;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL251bWJlci1maWVsZC9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUczQyxNQUFNLE9BQU8sa0JBQWtCO0lBRC9CO1FBRXFCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7S0EwRXBEO0lBeEVHLE1BQU0sQ0FBQyxPQUFnRjtRQUNuRixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQXFCLFNBQVMsbURBQUMsQ0FBQztRQUN0RCxNQUFNLFdBQVcsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3hDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLHFEQUFDLENBQUM7UUFFaEMsTUFBTSxZQUFZLEdBQUcsR0FBRyxFQUFFO1lBQ3RCLE1BQU0sS0FBSyxHQUFHLE9BQU8sRUFBRSxDQUFDO1lBQ3hCLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUN0QixNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRixNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUU7WUFDNUMsWUFBWSxFQUFFLENBQUM7WUFDZixJ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RSw0REFBNEQ7UUFDNUQsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQztRQUV6QywyRkFBMkY7UUFDM0YsTUFBTSxHQUFHLFFBQVEsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFFOUQsK0NBQStDO1FBQy9DLE1BQU0sSUFBSSxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgRGVzdHJveVJlZiwgZWZmZWN0LCBpbmplY3QsIEluamVjdGFibGUsIHNpZ25hbCwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOdW1iZXJGb3JtYXR0ZXIsIE51bWJlclBhcnNlciB9IGZyb20gJ0BpbnRlcm5hdGlvbmFsaXplZC9udW1iZXInO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQcmVzc2VkSG9sZFNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIGNyZWF0ZShvcHRpb25zOiB7IHRhcmdldD86IFNpZ25hbDxIVE1MRWxlbWVudCB8IHVuZGVmaW5lZD47IGRpc2FibGVkOiBTaWduYWw8Ym9vbGVhbj4gfSkge1xuICAgICAgICBjb25zdCB0aW1lb3V0ID0gc2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgICAgICAgY29uc3QgdHJpZ2dlckhvb2sgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgICAgICBjb25zdCBpc1ByZXNzZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gICAgICAgIGNvbnN0IHJlc2V0VGltZW91dCA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVyID0gdGltZW91dCgpO1xuICAgICAgICAgICAgaWYgKHRpbWVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgICAgICAgICB0aW1lb3V0LnNldCh1bmRlZmluZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IG9uSW5jcmVtZW50UHJlc3NTdGFydCA9IChkZWxheTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICByZXNldFRpbWVvdXQoKTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmRpc2FibGVkKCkpIHJldHVybjtcblxuICAgICAgICAgICAgdHJpZ2dlckhvb2submV4dCgpO1xuXG4gICAgICAgICAgICB0aW1lb3V0LnNldChcbiAgICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG9uSW5jcmVtZW50UHJlc3NTdGFydCg2MCk7XG4gICAgICAgICAgICAgICAgfSwgZGVsYXkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IG9uUHJlc3NTdGFydCA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwIHx8IGlzUHJlc3NlZCgpKSByZXR1cm47XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaXNQcmVzc2VkLnNldCh0cnVlKTtcbiAgICAgICAgICAgIG9uSW5jcmVtZW50UHJlc3NTdGFydCg0MDApO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IG9uUHJlc3NSZWxlYXNlID0gKCkgPT4ge1xuICAgICAgICAgICAgaXNQcmVzc2VkLnNldChmYWxzZSk7XG4gICAgICAgICAgICByZXNldFRpbWVvdXQoKTtcbiAgICAgICAgfTtcblxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgLy8gU2tpcCBTU1IgZW52aXJvbm1lbnRzXG4gICAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcblxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IG9wdGlvbnMudGFyZ2V0Py4oKSB8fCB3aW5kb3c7XG4gICAgICAgICAgICBjb25zdCBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHBvaW50ZXJEb3duU3ViID0gZnJvbUV2ZW50KHRhcmdldEVsZW1lbnQsICdwb2ludGVyZG93bicpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKGRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChlKSA9PiBvblByZXNzU3RhcnQoZSBhcyBQb2ludGVyRXZlbnQpKTtcblxuICAgICAgICAgICAgY29uc3QgcG9pbnRlclVwU3ViID0gZnJvbUV2ZW50KHdpbmRvdywgJ3BvaW50ZXJ1cCcpLnBpcGUodGFrZVVudGlsKGRlc3Ryb3kkKSkuc3Vic2NyaWJlKG9uUHJlc3NSZWxlYXNlKTtcblxuICAgICAgICAgICAgY29uc3QgcG9pbnRlckNhbmNlbFN1YiA9IGZyb21FdmVudCh3aW5kb3csICdwb2ludGVyY2FuY2VsJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwoZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUob25QcmVzc1JlbGVhc2UpO1xuXG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICAgICAgICAgICAgICBkZXN0cm95JC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICBwb2ludGVyRG93blN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIHBvaW50ZXJVcFN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIHBvaW50ZXJDYW5jZWxTdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXNQcmVzc2VkOiBpc1ByZXNzZWQuYXNSZWFkb25seSgpLFxuICAgICAgICAgICAgb25UcmlnZ2VyOiAoZm46ICgpID0+IHZvaWQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWIgPSB0cmlnZ2VySG9vay5zdWJzY3JpYmUoZm4pO1xuICAgICAgICAgICAgICAgIHRoaXMuZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZU51bWJlckZvcm1hdHRlcihcbiAgICBsb2NhbGU6IFNpZ25hbDxzdHJpbmc+LFxuICAgIG9wdGlvbnM6IFNpZ25hbDxJbnRsLk51bWJlckZvcm1hdE9wdGlvbnMgfCB1bmRlZmluZWQ+ID0gc2lnbmFsKHt9KVxuKTogU2lnbmFsPE51bWJlckZvcm1hdHRlcj4ge1xuICAgIHJldHVybiBjb21wdXRlZCgoKSA9PiBuZXcgTnVtYmVyRm9ybWF0dGVyKGxvY2FsZSgpLCBvcHRpb25zKCkpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZU51bWJlclBhcnNlcihcbiAgICBsb2NhbGU6IFNpZ25hbDxzdHJpbmc+LFxuICAgIG9wdGlvbnM6IFNpZ25hbDxJbnRsLk51bWJlckZvcm1hdE9wdGlvbnMgfCB1bmRlZmluZWQ+ID0gc2lnbmFsKHt9KVxuKTogU2lnbmFsPE51bWJlclBhcnNlcj4ge1xuICAgIHJldHVybiBjb21wdXRlZCgoKSA9PiBuZXcgTnVtYmVyUGFyc2VyKGxvY2FsZSgpLCBvcHRpb25zKCkpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZURlY2ltYWxPcGVyYXRpb24ob3BlcmF0b3I6ICctJyB8ICcrJywgdmFsdWUxOiBudW1iZXIsIHZhbHVlMjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBsZXQgcmVzdWx0ID0gb3BlcmF0b3IgPT09ICcrJyA/IHZhbHVlMSArIHZhbHVlMiA6IHZhbHVlMSAtIHZhbHVlMjtcblxuICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgZGVjaW1hbHNcbiAgICBpZiAodmFsdWUxICUgMSAhPT0gMCB8fCB2YWx1ZTIgJSAxICE9PSAwKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlMURlY2ltYWwgPSB2YWx1ZTEudG9TdHJpbmcoKS5zcGxpdCgnLicpO1xuICAgICAgICBjb25zdCB2YWx1ZTJEZWNpbWFsID0gdmFsdWUyLnRvU3RyaW5nKCkuc3BsaXQoJy4nKTtcbiAgICAgICAgY29uc3QgdmFsdWUxRGVjaW1hbExlbmd0aCA9ICh2YWx1ZTFEZWNpbWFsWzFdICYmIHZhbHVlMURlY2ltYWxbMV0ubGVuZ3RoKSB8fCAwO1xuICAgICAgICBjb25zdCB2YWx1ZTJEZWNpbWFsTGVuZ3RoID0gKHZhbHVlMkRlY2ltYWxbMV0gJiYgdmFsdWUyRGVjaW1hbFsxXS5sZW5ndGgpIHx8IDA7XG4gICAgICAgIGNvbnN0IG11bHRpcGxpZXIgPSAxMCAqKiBNYXRoLm1heCh2YWx1ZTFEZWNpbWFsTGVuZ3RoLCB2YWx1ZTJEZWNpbWFsTGVuZ3RoKTtcblxuICAgICAgICAvLyBUcmFuc2Zvcm0gdGhlIGRlY2ltYWxzIHRvIGludGVnZXJzIGJhc2VkIG9uIHRoZSBwcmVjaXNpb25cbiAgICAgICAgdmFsdWUxID0gTWF0aC5yb3VuZCh2YWx1ZTEgKiBtdWx0aXBsaWVyKTtcbiAgICAgICAgdmFsdWUyID0gTWF0aC5yb3VuZCh2YWx1ZTIgKiBtdWx0aXBsaWVyKTtcblxuICAgICAgICAvLyBQZXJmb3JtIHRoZSBvcGVyYXRpb24gb24gaW50ZWdlcnMgdmFsdWVzIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBnZXQgYSBmYW5jeSBkZWNpbWFsIHZhbHVlXG4gICAgICAgIHJlc3VsdCA9IG9wZXJhdG9yID09PSAnKycgPyB2YWx1ZTEgKyB2YWx1ZTIgOiB2YWx1ZTEgLSB2YWx1ZTI7XG5cbiAgICAgICAgLy8gVHJhbnNmb3JtIHRoZSBpbnRlZ2VyIHJlc3VsdCBiYWNrIHRvIGRlY2ltYWxcbiAgICAgICAgcmVzdWx0IC89IG11bHRpcGxpZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==","import { booleanAttribute, computed, Directive, ElementRef, inject, input, signal } from '@angular/core';\nimport { injectNumberFieldRootContext } from './number-field-context.token';\nimport { PressedHoldService } from './utils';\nimport * as i0 from \"@angular/core\";\nexport class RdxNumberFieldDecrementDirective {\n constructor() {\n this.elementRef = inject((ElementRef));\n this.pressedHold = inject(PressedHoldService);\n this.rootContext = injectNumberFieldRootContext();\n this.disabled = input(false, ...(ngDevMode ? [{ debugName: \"disabled\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n /**\n * @ignore\n */\n this.isDisabled = computed(() => this.rootContext.disabled() ||\n this.rootContext.readonly() ||\n this.disabled() ||\n this.rootContext.isDecreaseDisabled(), ...(ngDevMode ? [{ debugName: \"isDisabled\" }] : []));\n /**\n * @ignore\n */\n this.useHold = this.pressedHold.create({\n target: signal(this.elementRef.nativeElement),\n disabled: this.disabled\n });\n }\n ngOnInit() {\n this.useHold.onTrigger(() => this.rootContext.handleDecrease());\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxNumberFieldDecrementDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.3\", type: RdxNumberFieldDecrementDirective, isStandalone: true, selector: \"button[rdxNumberFieldDecrement]\", inputs: { disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { \"tabindex\": \"-1\", \"type\": \"\\\"button\\\"\" }, listeners: { \"contextmenu\": \"$event.preventDefault()\" }, properties: { \"attr.aria-label\": \"\\\"Decrease\\\"\", \"attr.disabled\": \"isDisabled() ? \\\"\\\" : undefined\", \"attr.data-disabled\": \"isDisabled() ? \\\"\\\" : undefined\", \"attr.data-pressed\": \"useHold.isPressed() ? \\\"true\\\" : undefined\", \"style.user-select\": \"useHold.isPressed() ? \\\"none\\\" : null\" } }, providers: [PressedHoldService], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxNumberFieldDecrementDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'button[rdxNumberFieldDecrement]',\n providers: [PressedHoldService],\n host: {\n tabindex: '-1',\n type: '\"button\"',\n '[attr.aria-label]': '\"Decrease\"',\n '[attr.disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-pressed]': 'useHold.isPressed() ? \"true\" : undefined',\n '[style.user-select]': 'useHold.isPressed() ? \"none\" : null',\n '(contextmenu)': '$event.preventDefault()'\n }\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWZpZWxkLWRlY3JlbWVudC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL251bWJlci1maWVsZC9zcmMvbnVtYmVyLWZpZWxkLWRlY3JlbWVudC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFrQjdDLE1BQU0sT0FBTyxnQ0FBZ0M7SUFoQjdDO1FBaUJxQixlQUFVLEdBQUcsTUFBTSxDQUFDLENBQUEsVUFBdUIsQ0FBQSxDQUFDLENBQUM7UUFDN0MsZ0JBQVcsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUV2QyxnQkFBVyxHQUFHLDRCQUE0QixFQUFFLENBQUM7UUFFdkQsYUFBUSxHQUFHLEtBQUssQ0FBd0IsS0FBSyw0Q0FBSSxTQUFTLEVBQUUsZ0JBQWdCLE9BQTdCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLEdBQUMsQ0FBQztRQUV6Rjs7V0FFRztRQUNNLGVBQVUsR0FBRyxRQUFRLENBQzFCLEdBQUcsRUFBRSxDQUNELElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFO1lBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFO1lBQzNCLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixFQUFFLHNEQUM1QyxDQUFDO1FBRUY7O1dBRUc7UUFDTSxZQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7WUFDdkMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztZQUM3QyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDMUIsQ0FBQyxDQUFDO0tBS047SUFIRyxRQUFRO1FBQ0osSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7OEdBN0JRLGdDQUFnQztrR0FBaEMsZ0NBQWdDLHVuQkFkOUIsQ0FBQyxrQkFBa0IsQ0FBQzs7MkZBY3RCLGdDQUFnQztrQkFoQjVDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGlDQUFpQztvQkFDM0MsU0FBUyxFQUFFLENBQUMsa0JBQWtCLENBQUM7b0JBQy9CLElBQUksRUFBRTt3QkFDRixRQUFRLEVBQUUsSUFBSTt3QkFDZCxJQUFJLEVBQUUsVUFBVTt3QkFDaEIsbUJBQW1CLEVBQUUsWUFBWTt3QkFDakMsaUJBQWlCLEVBQUUsK0JBQStCO3dCQUNsRCxzQkFBc0IsRUFBRSwrQkFBK0I7d0JBQ3ZELHFCQUFxQixFQUFFLDBDQUEwQzt3QkFFakUscUJBQXFCLEVBQUUscUNBQXFDO3dCQUU1RCxlQUFlLEVBQUUseUJBQXlCO3FCQUM3QztpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBjb21wdXRlZCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBpbmplY3QsIGlucHV0LCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0TnVtYmVyRmllbGRSb290Q29udGV4dCB9IGZyb20gJy4vbnVtYmVyLWZpZWxkLWNvbnRleHQudG9rZW4nO1xuaW1wb3J0IHsgUHJlc3NlZEhvbGRTZXJ2aWNlIH0gZnJvbSAnLi91dGlscyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnYnV0dG9uW3JkeE51bWJlckZpZWxkRGVjcmVtZW50XScsXG4gICAgcHJvdmlkZXJzOiBbUHJlc3NlZEhvbGRTZXJ2aWNlXSxcbiAgICBob3N0OiB7XG4gICAgICAgIHRhYmluZGV4OiAnLTEnLFxuICAgICAgICB0eXBlOiAnXCJidXR0b25cIicsXG4gICAgICAgICdbYXR0ci5hcmlhLWxhYmVsXSc6ICdcIkRlY3JlYXNlXCInLFxuICAgICAgICAnW2F0dHIuZGlzYWJsZWRdJzogJ2lzRGlzYWJsZWQoKSA/IFwiXCIgOiB1bmRlZmluZWQnLFxuICAgICAgICAnW2F0dHIuZGF0YS1kaXNhYmxlZF0nOiAnaXNEaXNhYmxlZCgpID8gXCJcIiA6IHVuZGVmaW5lZCcsXG4gICAgICAgICdbYXR0ci5kYXRhLXByZXNzZWRdJzogJ3VzZUhvbGQuaXNQcmVzc2VkKCkgPyBcInRydWVcIiA6IHVuZGVmaW5lZCcsXG5cbiAgICAgICAgJ1tzdHlsZS51c2VyLXNlbGVjdF0nOiAndXNlSG9sZC5pc1ByZXNzZWQoKSA/IFwibm9uZVwiIDogbnVsbCcsXG5cbiAgICAgICAgJyhjb250ZXh0bWVudSknOiAnJGV2ZW50LnByZXZlbnREZWZhdWx0KCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBSZHhOdW1iZXJGaWVsZERlY3JlbWVudERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByZXNzZWRIb2xkID0gaW5qZWN0KFByZXNzZWRIb2xkU2VydmljZSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm9vdENvbnRleHQgPSBpbmplY3ROdW1iZXJGaWVsZFJvb3RDb250ZXh0KCk7XG5cbiAgICByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4sIEJvb2xlYW5JbnB1dD4oZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gICAgLyoqXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGlzRGlzYWJsZWQgPSBjb21wdXRlZChcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICAgIHRoaXMucm9vdENvbnRleHQuZGlzYWJsZWQoKSB8fFxuICAgICAgICAgICAgdGhpcy5yb290Q29udGV4dC5yZWFkb25seSgpIHx8XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkKCkgfHxcbiAgICAgICAgICAgIHRoaXMucm9vdENvbnRleHQuaXNEZWNyZWFzZURpc2FibGVkKClcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IHVzZUhvbGQgPSB0aGlzLnByZXNzZWRIb2xkLmNyZWF0ZSh7XG4gICAgICAgIHRhcmdldDogc2lnbmFsKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSxcbiAgICAgICAgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWRcbiAgICB9KTtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnVzZUhvbGQub25UcmlnZ2VyKCgpID0+IHRoaXMucm9vdENvbnRleHQuaGFuZGxlRGVjcmVhc2UoKSk7XG4gICAgfVxufVxuIl19","import { booleanAttribute, computed, Directive, ElementRef, inject, input, signal } from '@angular/core';\nimport { injectNumberFieldRootContext } from './number-field-context.token';\nimport { PressedHoldService } from './utils';\nimport * as i0 from \"@angular/core\";\nexport class RdxNumberFieldIncrementDirective {\n constructor() {\n this.elementRef = inject((ElementRef));\n this.pressedHold = inject(PressedHoldService);\n this.rootContext = injectNumberFieldRootContext();\n this.disabled = input(false, ...(ngDevMode ? [{ debugName: \"disabled\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n /**\n * @ignore\n */\n this.isDisabled = computed(() => this.rootContext.disabled() ||\n this.rootContext.readonly() ||\n this.disabled() ||\n this.rootContext.isIncreaseDisabled(), ...(ngDevMode ? [{ debugName: \"isDisabled\" }] : []));\n /**\n * @ignore\n */\n this.useHold = this.pressedHold.create({\n target: signal(this.elementRef.nativeElement),\n disabled: this.disabled\n });\n }\n ngOnInit() {\n this.useHold.onTrigger(() => this.rootContext.handleIncrease());\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxNumberFieldIncrementDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.3\", type: RdxNumberFieldIncrementDirective, isStandalone: true, selector: \"button[rdxNumberFieldIncrement]\", inputs: { disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { \"tabindex\": \"-1\", \"type\": \"\\\"button\\\"\" }, listeners: { \"contextmenu\": \"$event.preventDefault()\" }, properties: { \"attr.aria-label\": \"\\\"Increase\\\"\", \"attr.disabled\": \"isDisabled() ? \\\"\\\" : undefined\", \"attr.data-disabled\": \"isDisabled() ? \\\"\\\" : undefined\", \"attr.data-pressed\": \"useHold.isPressed() ? \\\"true\\\" : undefined\", \"style.user-select\": \"useHold.isPressed() ? \\\"none\\\" : null\" } }, providers: [PressedHoldService], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxNumberFieldIncrementDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'button[rdxNumberFieldIncrement]',\n providers: [PressedHoldService],\n host: {\n tabindex: '-1',\n type: '\"button\"',\n '[attr.aria-label]': '\"Increase\"',\n '[attr.disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-pressed]': 'useHold.isPressed() ? \"true\" : undefined',\n '[style.user-select]': 'useHold.isPressed() ? \"none\" : null',\n '(contextmenu)': '$event.preventDefault()'\n }\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWZpZWxkLWluY3JlbWVudC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL251bWJlci1maWVsZC9zcmMvbnVtYmVyLWZpZWxkLWluY3JlbWVudC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFrQjdDLE1BQU0sT0FBTyxnQ0FBZ0M7SUFoQjdDO1FBaUJxQixlQUFVLEdBQUcsTUFBTSxDQUFDLENBQUEsVUFBdUIsQ0FBQSxDQUFDLENBQUM7UUFDN0MsZ0JBQVcsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUV2QyxnQkFBVyxHQUFHLDRCQUE0QixFQUFFLENBQUM7UUFFdkQsYUFBUSxHQUFHLEtBQUssQ0FBd0IsS0FBSyw0Q0FBSSxTQUFTLEVBQUUsZ0JBQWdCLE9BQTdCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLEdBQUMsQ0FBQztRQUV6Rjs7V0FFRztRQUNNLGVBQVUsR0FBRyxRQUFRLENBQzFCLEdBQUcsRUFBRSxDQUNELElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFO1lBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFO1lBQzNCLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixFQUFFLHNEQUM1QyxDQUFDO1FBRUY7O1dBRUc7UUFDTSxZQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7WUFDdkMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztZQUM3QyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDMUIsQ0FBQyxDQUFDO0tBS047SUFIRyxRQUFRO1FBQ0osSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7OEdBN0JRLGdDQUFnQztrR0FBaEMsZ0NBQWdDLHVuQkFkOUIsQ0FBQyxrQkFBa0IsQ0FBQzs7MkZBY3RCLGdDQUFnQztrQkFoQjVDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGlDQUFpQztvQkFDM0MsU0FBUyxFQUFFLENBQUMsa0JBQWtCLENBQUM7b0JBQy9CLElBQUksRUFBRTt3QkFDRixRQUFRLEVBQUUsSUFBSTt3QkFDZCxJQUFJLEVBQUUsVUFBVTt3QkFDaEIsbUJBQW1CLEVBQUUsWUFBWTt3QkFDakMsaUJBQWlCLEVBQUUsK0JBQStCO3dCQUNsRCxzQkFBc0IsRUFBRSwrQkFBK0I7d0JBQ3ZELHFCQUFxQixFQUFFLDBDQUEwQzt3QkFFakUscUJBQXFCLEVBQUUscUNBQXFDO3dCQUU1RCxlQUFlLEVBQUUseUJBQXlCO3FCQUM3QztpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBjb21wdXRlZCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBpbmplY3QsIGlucHV0LCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0TnVtYmVyRmllbGRSb290Q29udGV4dCB9IGZyb20gJy4vbnVtYmVyLWZpZWxkLWNvbnRleHQudG9rZW4nO1xuaW1wb3J0IHsgUHJlc3NlZEhvbGRTZXJ2aWNlIH0gZnJvbSAnLi91dGlscyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnYnV0dG9uW3JkeE51bWJlckZpZWxkSW5jcmVtZW50XScsXG4gICAgcHJvdmlkZXJzOiBbUHJlc3NlZEhvbGRTZXJ2aWNlXSxcbiAgICBob3N0OiB7XG4gICAgICAgIHRhYmluZGV4OiAnLTEnLFxuICAgICAgICB0eXBlOiAnXCJidXR0b25cIicsXG4gICAgICAgICdbYXR0ci5hcmlhLWxhYmVsXSc6ICdcIkluY3JlYXNlXCInLFxuICAgICAgICAnW2F0dHIuZGlzYWJsZWRdJzogJ2lzRGlzYWJsZWQoKSA/IFwiXCIgOiB1bmRlZmluZWQnLFxuICAgICAgICAnW2F0dHIuZGF0YS1kaXNhYmxlZF0nOiAnaXNEaXNhYmxlZCgpID8gXCJcIiA6IHVuZGVmaW5lZCcsXG4gICAgICAgICdbYXR0ci5kYXRhLXByZXNzZWRdJzogJ3VzZUhvbGQuaXNQcmVzc2VkKCkgPyBcInRydWVcIiA6IHVuZGVmaW5lZCcsXG5cbiAgICAgICAgJ1tzdHlsZS51c2VyLXNlbGVjdF0nOiAndXNlSG9sZC5pc1ByZXNzZWQoKSA/IFwibm9uZVwiIDogbnVsbCcsXG5cbiAgICAgICAgJyhjb250ZXh0bWVudSknOiAnJGV2ZW50LnByZXZlbnREZWZhdWx0KCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBSZHhOdW1iZXJGaWVsZEluY3JlbWVudERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByZXNzZWRIb2xkID0gaW5qZWN0KFByZXNzZWRIb2xkU2VydmljZSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm9vdENvbnRleHQgPSBpbmplY3ROdW1iZXJGaWVsZFJvb3RDb250ZXh0KCk7XG5cbiAgICByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4sIEJvb2xlYW5JbnB1dD4oZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gICAgLyoqXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGlzRGlzYWJsZWQgPSBjb21wdXRlZChcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICAgIHRoaXMucm9vdENvbnRleHQuZGlzYWJsZWQoKSB8fFxuICAgICAgICAgICAgdGhpcy5yb290Q29udGV4dC5yZWFkb25seSgpIHx8XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkKCkgfHxcbiAgICAgICAgICAgIHRoaXMucm9vdENvbnRleHQuaXNJbmNyZWFzZURpc2FibGVkKClcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IHVzZUhvbGQgPSB0aGlzLnByZXNzZWRIb2xkLmNyZWF0ZSh7XG4gICAgICAgIHRhcmdldDogc2lnbmFsKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSxcbiAgICAgICAgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWRcbiAgICB9KTtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnVzZUhvbGQub25UcmlnZ2VyKCgpID0+IHRoaXMucm9vdENvbnRleHQuaGFuZGxlSW5jcmVhc2UoKSk7XG4gICAgfVxufVxuIl19","import { Directive, effect, ElementRef, inject, signal } from '@angular/core';\nimport { getActiveElement } from '@radix-ng/primitives/core';\nimport { injectNumberFieldRootContext } from './number-field-context.token';\nimport * as i0 from \"@angular/core\";\nexport class RdxNumberFieldInputDirective {\n constructor() {\n this.elementRef = inject((ElementRef));\n this.rootContext = injectNumberFieldRootContext();\n this.inputValue = signal(this.rootContext.textValue(), ...(ngDevMode ? [{ debugName: \"inputValue\" }] : []));\n effect(() => {\n this.inputValue.set(this.rootContext.textValue());\n this.rootContext.setInputValue(this.inputValue());\n });\n }\n ngOnInit() {\n this.rootContext.onInputElement(this.elementRef.nativeElement);\n }\n onBeforeInput(event) {\n const target = event.target;\n const nextValue = target.value.slice(0, target.selectionStart ?? undefined) +\n (event.data ?? '') +\n target.value.slice(target.selectionEnd ?? undefined);\n if (!this.rootContext.validate(nextValue)) {\n event.preventDefault();\n }\n }\n onWheelEvent(event) {\n if (this.rootContext.disableWheelChange()) {\n return;\n }\n // only handle when in focus\n if (event.target !== getActiveElement())\n return;\n // if on a trackpad, users can scroll in both X and Y at once, check the magnitude of the change\n // if it's mostly in the X direction, then just return, the user probably doesn't mean to inc/dec\n // this isn't perfect, events come in fast with small deltas and a part of the scroll may give a false indication\n // especially if the user is scrolling near 45deg\n if (Math.abs(event.deltaY) <= Math.abs(event.deltaX)) {\n return;\n }\n event.preventDefault();\n if (event.deltaY > 0) {\n this.rootContext.handleIncrease();\n }\n else if (event.deltaY < 0) {\n this.rootContext.handleDecrease();\n }\n }\n onKeydownPageUp(event) {\n event.preventDefault();\n this.rootContext.handleIncrease(10);\n }\n onKeydownPageDown(event) {\n event.preventDefault();\n this.rootContext.handleDecrease(10);\n }\n onKeydownHome(event) {\n event.preventDefault();\n this.rootContext.handleMinMaxValue('min');\n }\n onKeydownEnd(event) {\n event.preventDefault();\n this.rootContext.handleMinMaxValue('max');\n }\n onInput(event) {\n const target = event.target;\n this.rootContext.applyInputValue(target.value);\n }\n onChange() {\n this.inputValue.set(this.rootContext.textValue());\n }\n onKeydownEnter(event) {\n const target = event.target;\n this.rootContext.applyInputValue(target.value);\n }\n onKeydownUp(event) {\n event.preventDefault();\n this.rootContext.handleIncrease();\n }\n onKeydownDown(event) {\n event.preventDefault();\n this.rootContext.handleDecrease();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxNumberFieldInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.3\", type: RdxNumberFieldInputDirective, isStandalone: true, selector: \"input[rdxNumberFieldInput]\", host: { attributes: { \"role\": \"spinbutton\", \"type\": \"text\", \"tabindex\": \"0\", \"autocomplete\": \"off\", \"autocorrect\": \"off\", \"spellcheck\": \"false\", \"aria-roledescription\": \"Number field\" }, listeners: { \"change\": \"onChange()\", \"input\": \"onInput($event)\", \"blur\": \"onKeydownEnter($event)\", \"beforeinput\": \"onBeforeInput($event)\", \"keydown.enter\": \"onKeydownEnter($event)\", \"keydown.arrowUp\": \"onKeydownUp($event)\", \"keydown.arrowDown\": \"onKeydownDown($event)\", \"keydown.home\": \"onKeydownHome($event)\", \"keydown.end\": \"onKeydownEnd($event)\", \"keydown.pageUp\": \"onKeydownPageUp($event)\", \"keydown.pageDown\": \"onKeydownPageDown($event)\", \"wheel\": \"onWheelEvent($event)\" }, properties: { \"attr.aria-valuenow\": \"rootContext.value()\", \"attr.aria-valuemin\": \"rootContext.min()\", \"attr.aria-valuemax\": \"rootContext.max()\", \"attr.inputmode\": \"rootContext.inputMode()\", \"attr.disabled\": \"rootContext.disabled() ? \\\"\\\" : undefined\", \"attr.data-disabled\": \"rootContext.disabled() ? \\\"\\\" : undefined\", \"attr.readonly\": \"rootContext.readonly() ? \\\"\\\" : undefined\", \"attr.data-readonly\": \"rootContext.readonly() ? \\\"\\\" : undefined\", \"attr.value\": \"inputValue()\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxNumberFieldInputDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[rdxNumberFieldInput]',\n host: {\n role: 'spinbutton',\n type: 'text',\n tabindex: '0',\n autocomplete: 'off',\n autocorrect: 'off',\n spellcheck: 'false',\n 'aria-roledescription': 'Number field',\n '[attr.aria-valuenow]': 'rootContext.value()',\n '[attr.aria-valuemin]': 'rootContext.min()',\n '[attr.aria-valuemax]': 'rootContext.max()',\n '[attr.inputmode]': 'rootContext.inputMode()',\n '[attr.disabled]': 'rootContext.disabled() ? \"\" : undefined',\n '[attr.data-disabled]': 'rootContext.disabled() ? \"\" : undefined',\n '[attr.readonly]': 'rootContext.readonly() ? \"\" : undefined',\n '[attr.data-readonly]': 'rootContext.readonly() ? \"\" : undefined',\n '[attr.value]': 'inputValue()',\n '(change)': 'onChange()',\n '(input)': 'onInput($event)',\n '(blur)': 'onKeydownEnter($event)',\n '(beforeinput)': 'onBeforeInput($event)',\n '(keydown.enter)': 'onKeydownEnter($event)',\n '(keydown.arrowUp)': 'onKeydownUp($event)',\n '(keydown.arrowDown)': 'onKeydownDown($event)',\n '(keydown.home)': 'onKeydownHome($event)',\n '(keydown.end)': 'onKeydownEnd($event)',\n '(keydown.pageUp)': 'onKeydownPageUp($event)',\n '(keydown.pageDown)': 'onKeydownPageDown($event)',\n '(wheel)': 'onWheelEvent($event)'\n }\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWZpZWxkLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvbnVtYmVyLWZpZWxkL3NyYy9udW1iZXItZmllbGQtaW5wdXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQXFDNUUsTUFBTSxPQUFPLDRCQUE0QjtJQU9yQztRQU5pQixlQUFVLEdBQUcsTUFBTSxDQUFDLENBQUEsVUFBdUIsQ0FBQSxDQUFDLENBQUM7UUFFM0MsZ0JBQVcsR0FBRyw0QkFBNEIsRUFBRSxDQUFDO1FBRXZELGVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsc0RBQUMsQ0FBQztRQUd2RCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWlDLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWlCO1FBQzNCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUEwQixDQUFDO1FBQ2hELE1BQU0sU0FBUyxHQUNYLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsY0FBYyxJQUFJLFNBQVMsQ0FBQztZQUN6RCxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2xCLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLElBQUksU0FBUyxDQUFDLENBQUM7UUFFekQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDeEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWlCO1FBQzFCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUM7WUFDeEMsT0FBTztRQUNYLENBQUM7UUFFRCw0QkFBNEI7UUFDNUIsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLGdCQUFnQixFQUFFO1lBQUUsT0FBTztRQUVoRCxnR0FBZ0c7UUFDaEcsaUdBQWlHO1FBQ2pHLGlIQUFpSDtRQUNqSCxpREFBaUQ7UUFDakQsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ25ELE9BQU87UUFDWCxDQUFDO1FBRUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RDLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFvQjtRQUNoQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQW9CO1FBQ2xDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQW9CO1FBQzlCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBb0I7UUFDN0IsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFpQjtRQUNyQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFvQjtRQUMvQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFvQjtRQUM1QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQW9CO1FBQzlCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3RDLENBQUM7OEdBaEdRLDRCQUE0QjtrR0FBNUIsNEJBQTRCOzsyRkFBNUIsNEJBQTRCO2tCQW5DeEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxJQUFJLEVBQUU7d0JBQ0YsSUFBSSxFQUFFLFlBQVk7d0JBQ2xCLElBQUksRUFBRSxNQUFNO3dCQUNaLFFBQVEsRUFBRSxHQUFHO3dCQUNiLFlBQVksRUFBRSxLQUFLO3dCQUNuQixXQUFXLEVBQUUsS0FBSzt3QkFDbEIsVUFBVSxFQUFFLE9BQU87d0JBQ25CLHNCQUFzQixFQUFFLGNBQWM7d0JBRXRDLHNCQUFzQixFQUFFLHFCQUFxQjt3QkFDN0Msc0JBQXNCLEVBQUUsbUJBQW1CO3dCQUMzQyxzQkFBc0IsRUFBRSxtQkFBbUI7d0JBQzNDLGtCQUFrQixFQUFFLHlCQUF5Qjt3QkFDN0MsaUJBQWlCLEVBQUUseUNBQXlDO3dCQUM1RCxzQkFBc0IsRUFBRSx5Q0FBeUM7d0JBQ2pFLGlCQUFpQixFQUFFLHlDQUF5Qzt3QkFDNUQsc0JBQXNCLEVBQUUseUNBQXlDO3dCQUNqRSxjQUFjLEVBQUUsY0FBYzt3QkFFOUIsVUFBVSxFQUFFLFlBQVk7d0JBQ3hCLFNBQVMsRUFBRSxpQkFBaUI7d0JBQzVCLFFBQVEsRUFBRSx3QkFBd0I7d0JBQ2xDLGVBQWUsRUFBRSx1QkFBdUI7d0JBQ3hDLGlCQUFpQixFQUFFLHdCQUF3Qjt3QkFDM0MsbUJBQW1CLEVBQUUscUJBQXFCO3dCQUMxQyxxQkFBcUIsRUFBRSx1QkFBdUI7d0JBQzlDLGdCQUFnQixFQUFFLHVCQUF1Qjt3QkFDekMsZUFBZSxFQUFFLHNCQUFzQjt3QkFDdkMsa0JBQWtCLEVBQUUseUJBQXlCO3dCQUM3QyxvQkFBb0IsRUFBRSwyQkFBMkI7d0JBQ2pELFNBQVMsRUFBRSxzQkFBc0I7cUJBQ3BDO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBlZmZlY3QsIEVsZW1lbnRSZWYsIGluamVjdCwgT25Jbml0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldEFjdGl2ZUVsZW1lbnQgfSBmcm9tICdAcmFkaXgtbmcvcHJpbWl0aXZlcy9jb3JlJztcbmltcG9ydCB7IGluamVjdE51bWJlckZpZWxkUm9vdENvbnRleHQgfSBmcm9tICcuL251bWJlci1maWVsZC1jb250ZXh0LnRva2VuJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdpbnB1dFtyZHhOdW1iZXJGaWVsZElucHV0XScsXG4gICAgaG9zdDoge1xuICAgICAgICByb2xlOiAnc3BpbmJ1dHRvbicsXG4gICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgdGFiaW5kZXg6ICcwJyxcbiAgICAgICAgYXV0b2NvbXBsZXRlOiAnb2ZmJyxcbiAgICAgICAgYXV0b2NvcnJlY3Q6ICdvZmYnLFxuICAgICAgICBzcGVsbGNoZWNrOiAnZmFsc2UnLFxuICAgICAgICAnYXJpYS1yb2xlZGVzY3JpcHRpb24nOiAnTnVtYmVyIGZpZWxkJyxcblxuICAgICAgICAnW2F0dHIuYXJpYS12YWx1ZW5vd10nOiAncm9vdENvbnRleHQudmFsdWUoKScsXG4gICAgICAgICdbYXR0ci5hcmlhLXZhbHVlbWluXSc6ICdyb290Q29udGV4dC5taW4oKScsXG4gICAgICAgICdbYXR0ci5hcmlhLXZhbHVlbWF4XSc6ICdyb290Q29udGV4dC5tYXgoKScsXG4gICAgICAgICdbYXR0ci5pbnB1dG1vZGVdJzogJ3Jvb3RDb250ZXh0LmlucHV0TW9kZSgpJyxcbiAgICAgICAgJ1thdHRyLmRpc2FibGVkXSc6ICdyb290Q29udGV4dC5kaXNhYmxlZCgpID8gXCJcIiA6IHVuZGVmaW5lZCcsXG4gICAgICAgICdbYXR0ci5kYXRhLWRpc2FibGVkXSc6ICdyb290Q29udGV4dC5kaXNhYmxlZCgpID8gXCJcIiA6IHVuZGVmaW5lZCcsXG4gICAgICAgICdbYXR0ci5yZWFkb25seV0nOiAncm9vdENvbnRleHQucmVhZG9ubHkoKSA/IFwiXCIgOiB1bmRlZmluZWQnLFxuICAgICAgICAnW2F0dHIuZGF0YS1yZWFkb25seV0nOiAncm9vdENvbnRleHQucmVhZG9ubHkoKSA/IFwiXCIgOiB1bmRlZmluZWQnLFxuICAgICAgICAnW2F0dHIudmFsdWVdJzogJ2lucHV0VmFsdWUoKScsXG5cbiAgICAgICAgJyhjaGFuZ2UpJzogJ29uQ2hhbmdlKCknLFxuICAgICAgICAnKGlucHV0KSc6ICdvbklucHV0KCRldmVudCknLFxuICAgICAgICAnKGJsdXIpJzogJ29uS2V5ZG93bkVudGVyKCRldmVudCknLFxuICAgICAgICAnKGJlZm9yZWlucHV0KSc6ICdvbkJlZm9yZUlucHV0KCRldmVudCknLFxuICAgICAgICAnKGtleWRvd24uZW50ZXIpJzogJ29uS2V5ZG93bkVudGVyKCRldmVudCknLFxuICAgICAgICAnKGtleWRvd24uYXJyb3dVcCknOiAnb25LZXlkb3duVXAoJGV2ZW50KScsXG4gICAgICAgICcoa2V5ZG93bi5hcnJvd0Rvd24pJzogJ29uS2V5ZG93bkRvd24oJGV2ZW50KScsXG4gICAgICAgICcoa2V5ZG93bi5ob21lKSc6ICdvbktleWRvd25Ib21lKCRldmVudCknLFxuICAgICAgICAnKGtleWRvd24uZW5kKSc6ICdvbktleWRvd25FbmQoJGV2ZW50KScsXG4gICAgICAgICcoa2V5ZG93bi5wYWdlVXApJzogJ29uS2V5ZG93blBhZ2VVcCgkZXZlbnQpJyxcbiAgICAgICAgJyhrZXlkb3duLnBhZ2VEb3duKSc6ICdvbktleWRvd25QYWdlRG93bigkZXZlbnQpJyxcbiAgICAgICAgJyh3aGVlbCknOiAnb25XaGVlbEV2ZW50KCRldmVudCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBSZHhOdW1iZXJGaWVsZElucHV0RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJvb3RDb250ZXh0ID0gaW5qZWN0TnVtYmVyRmllbGRSb290Q29udGV4dCgpO1xuXG4gICAgcmVhZG9ubHkgaW5wdXRWYWx1ZSA9IHNpZ25hbCh0aGlzLnJvb3RDb250ZXh0LnRleHRWYWx1ZSgpKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbnB1dFZhbHVlLnNldCh0aGlzLnJvb3RDb250ZXh0LnRleHRWYWx1ZSgpKTtcbiAgICAgICAgICAgIHRoaXMucm9vdENvbnRleHQuc2V0SW5wdXRWYWx1ZSh0aGlzLmlucHV0VmFsdWUoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnJvb3RDb250ZXh0Lm9uSW5wdXRFbGVtZW50KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQpO1xuICAgIH1cblxuICAgIG9uQmVmb3JlSW5wdXQoZXZlbnQ6IElucHV0RXZlbnQpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IG5leHRWYWx1ZSA9XG4gICAgICAgICAgICB0YXJnZXQudmFsdWUuc2xpY2UoMCwgdGFyZ2V0LnNlbGVjdGlvblN0YXJ0ID8/IHVuZGVmaW5lZCkgK1xuICAgICAgICAgICAgKGV2ZW50LmRhdGEgPz8gJycpICtcbiAgICAgICAgICAgIHRhcmdldC52YWx1ZS5zbGljZSh0YXJnZXQuc2VsZWN0aW9uRW5kID8/IHVuZGVmaW5lZCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnJvb3RDb250ZXh0LnZhbGlkYXRlKG5leHRWYWx1ZSkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbldoZWVsRXZlbnQoZXZlbnQ6IFdoZWVsRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMucm9vdENvbnRleHQuZGlzYWJsZVdoZWVsQ2hhbmdlKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIG9ubHkgaGFuZGxlIHdoZW4gaW4gZm9jdXNcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gZ2V0QWN0aXZlRWxlbWVudCgpKSByZXR1cm47XG5cbiAgICAgICAgLy8gaWYgb24gYSB0cmFja3BhZCwgdXNlcnMgY2FuIHNjcm9sbCBpbiBib3RoIFggYW5kIFkgYXQgb25jZSwgY2hlY2sgdGhlIG1hZ25pdHVkZSBvZiB0aGUgY2hhbmdlXG4gICAgICAgIC8vIGlmIGl0J3MgbW9zdGx5IGluIHRoZSBYIGRpcmVjdGlvbiwgdGhlbiBqdXN0IHJldHVybiwgdGhlIHVzZXIgcHJvYmFibHkgZG9lc24ndCBtZWFuIHRvIGluYy9kZWNcbiAgICAgICAgLy8gdGhpcyBpc24ndCBwZXJmZWN0LCBldmVudHMgY29tZSBpbiBmYXN0IHdpdGggc21hbGwgZGVsdGFzIGFuZCBhIHBhcnQgb2YgdGhlIHNjcm9sbCBtYXkgZ2l2ZSBhIGZhbHNlIGluZGljYXRpb25cbiAgICAgICAgLy8gZXNwZWNpYWxseSBpZiB0aGUgdXNlciBpcyBzY3JvbGxpbmcgbmVhciA0NWRlZ1xuICAgICAgICBpZiAoTWF0aC5hYnMoZXZlbnQuZGVsdGFZKSA8PSBNYXRoLmFicyhldmVudC5kZWx0YVgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoZXZlbnQuZGVsdGFZID4gMCkge1xuICAgICAgICAgICAgdGhpcy5yb290Q29udGV4dC5oYW5kbGVJbmNyZWFzZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmRlbHRhWSA8IDApIHtcbiAgICAgICAgICAgIHRoaXMucm9vdENvbnRleHQuaGFuZGxlRGVjcmVhc2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uS2V5ZG93blBhZ2VVcChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnJvb3RDb250ZXh0LmhhbmRsZUluY3JlYXNlKDEwKTtcbiAgICB9XG5cbiAgICBvbktleWRvd25QYWdlRG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnJvb3RDb250ZXh0LmhhbmRsZURlY3JlYXNlKDEwKTtcbiAgICB9XG5cbiAgICBvbktleWRvd25Ib21lKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMucm9vdENvbnRleHQuaGFuZGxlTWluTWF4VmFsdWUoJ21pbicpO1xuICAgIH1cblxuICAgIG9uS2V5ZG93bkVuZChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnJvb3RDb250ZXh0LmhhbmRsZU1pbk1heFZhbHVlKCdtYXgnKTtcbiAgICB9XG5cbiAgICBvbklucHV0KGV2ZW50OiBJbnB1dEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICB0aGlzLnJvb3RDb250ZXh0LmFwcGx5SW5wdXRWYWx1ZSh0YXJnZXQudmFsdWUpO1xuICAgIH1cblxuICAgIG9uQ2hhbmdlKCkge1xuICAgICAgICB0aGlzLmlucHV0VmFsdWUuc2V0KHRoaXMucm9vdENvbnRleHQudGV4dFZhbHVlKCkpO1xuICAgIH1cblxuICAgIG9uS2V5ZG93bkVudGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICB0aGlzLnJvb3RDb250ZXh0LmFwcGx5SW5wdXRWYWx1ZSh0YXJnZXQudmFsdWUpO1xuICAgIH1cblxuICAgIG9uS2V5ZG93blVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMucm9vdENvbnRleHQuaGFuZGxlSW5jcmVhc2UoKTtcbiAgICB9XG5cbiAgICBvbktleWRvd25Eb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMucm9vdENvbnRleHQuaGFuZGxlRGVjcmVhc2UoKTtcbiAgICB9XG59XG4iXX0=","import { booleanAttribute, computed, Directive, input, model, numberAttribute, signal } from '@angular/core';\nimport { clamp, isNullish, provideToken, snapValueToStep } from '@radix-ng/primitives/core';\nimport { NUMBER_FIELD_ROOT_CONTEXT } from './number-field-context.token';\nimport { handleDecimalOperation, useNumberFormatter, useNumberParser } from './utils';\nimport * as i0 from \"@angular/core\";\nexport class RdxNumberFieldRootDirective {\n constructor() {\n this.value = model(...(ngDevMode ? [undefined, { debugName: \"value\" }] : []));\n this.min = input(undefined, ...(ngDevMode ? [{ debugName: \"min\", transform: numberAttribute }] : [{ transform: numberAttribute }]));\n this.max = input(undefined, ...(ngDevMode ? [{ debugName: \"max\", transform: numberAttribute }] : [{ transform: numberAttribute }]));\n this.step = input(1, ...(ngDevMode ? [{ debugName: \"step\", transform: numberAttribute }] : [{ transform: numberAttribute }]));\n this.stepSnapping = input(false, ...(ngDevMode ? [{ debugName: \"stepSnapping\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.disableWheelChange = input(false, ...(ngDevMode ? [{ debugName: \"disableWheelChange\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.locale = input('en', ...(ngDevMode ? [{ debugName: \"locale\" }] : []));\n this.disabled = input(false, ...(ngDevMode ? [{ debugName: \"disabled\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.formatOptions = input(...(ngDevMode ? [undefined, { debugName: \"formatOptions\" }] : []));\n /**\n * When <code>true</code>, the Number Field is read-only.\n */\n this.readonly = input(false, ...(ngDevMode ? [{ debugName: \"readonly\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n /**\n * @ignore\n */\n this.inputEl = signal(undefined, ...(ngDevMode ? [{ debugName: \"inputEl\" }] : []));\n /**\n * @ignore\n */\n this.isDecreaseDisabled = computed(() => !isNullish(this.value()) &&\n (this.clampInputValue(this.value()) === this.min() || (this.min() && !isNaN(this.value()))\n ? handleDecimalOperation('-', this.value(), this.step()) < this.min()\n : false), ...(ngDevMode ? [{ debugName: \"isDecreaseDisabled\" }] : []));\n /**\n * @ignore\n */\n this.isIncreaseDisabled = computed(() => !isNullish(this.value()) &&\n (this.clampInputValue(this.value()) === this.max() || (this.min() && !isNaN(this.value()))\n ? handleDecimalOperation('+', this.value(), this.step()) > this.max()\n : false), ...(ngDevMode ? [{ debugName: \"isIncreaseDisabled\" }] : []));\n /**\n * @ignore\n */\n this.inputMode = computed(() => {\n // The inputMode attribute influences the software keyboard that is shown on touch devices.\n // Browsers and operating systems are quite inconsistent about what keys are available, however.\n // We choose between numeric and decimal based on whether we allow negative and fractional numbers,\n // and based on testing on various devices to determine what keys are available in each inputMode.\n const hasDecimals = this.numberFormatter().resolvedOptions().maximumFractionDigits > 0;\n return hasDecimals ? 'decimal' : 'numeric';\n }, ...(ngDevMode ? [{ debugName: \"inputMode\" }] : []));\n /**\n * Replace negative textValue formatted using currencySign: 'accounting'\n * with a textValue that can be announced using a minus sign.\n * @ignore\n */\n this.textValue = computed(() => isNullish(this.value()) || isNaN(this.value()) ? '' : this.textValueFormatter().format(this.value()), ...(ngDevMode ? [{ debugName: \"textValue\" }] : []));\n /**\n * @ignore\n */\n this.onInputElement = (el) => this.inputEl.set(el);\n }\n /**\n * @ignore\n */\n clampInputValue(val) {\n // Clamp to min and max, round to the nearest step, and round to the specified number of digits\n let clampedValue;\n if (this.step() === undefined || isNaN(this.step()) || !this.stepSnapping()) {\n clampedValue = clamp(val, this.min(), this.max());\n }\n else {\n clampedValue = snapValueToStep(val, this.min(), this.max(), this.step());\n }\n clampedValue = this.numberParser().parse(this.numberFormatter().format(clampedValue));\n return clampedValue;\n }\n ngOnInit() {\n this.numberParser = useNumberParser(this.locale, this.formatOptions);\n this.numberFormatter = useNumberFormatter(this.locale, this.formatOptions);\n this.textValueFormatter = useNumberFormatter(this.locale, this.formatOptions);\n }\n /**\n * @ignore\n */\n handleMinMaxValue(type) {\n if (type === 'min' && this.min() !== undefined) {\n this.value.set(this.clampInputValue(this.min()));\n }\n else if (type === 'max' && this.max() !== undefined) {\n this.value.set(this.clampInputValue(this.max()));\n }\n }\n /**\n * @ignore\n */\n handleDecrease(multiplier = 1) {\n this.handleChangingValue('decrease', multiplier);\n }\n /**\n * @ignore\n */\n handleIncrease(multiplier = 1) {\n this.handleChangingValue('increase', multiplier);\n }\n /**\n * @ignore\n */\n applyInputValue(val) {\n const parsedValue = this.numberParser().parse(val);\n this.value.set(isNaN(parsedValue) ? undefined : this.clampInputValue(parsedValue));\n // Set to empty state if input value is empty\n if (!val.length) {\n return this.setInputValue(val);\n }\n // if it failed to parse, then reset input to formatted version of current number\n if (isNaN(parsedValue)) {\n return this.setInputValue(this.textValue());\n }\n return this.setInputValue(this.textValue());\n }\n /**\n * @ignore\n */\n setInputValue(val) {\n if (this.inputEl()) {\n this.inputEl.update((el) => {\n if (el)\n el.value = val;\n return el;\n });\n }\n }\n /**\n * @ignore\n */\n validate(val) {\n return this.numberParser().isValidPartialNumber(val, this.min(), this.max());\n }\n handleChangingValue(type, multiplier = 1) {\n this.inputEl()?.focus();\n if (this.disabled() || this.readonly()) {\n return;\n }\n const currentInputValue = this.numberParser().parse(this.inputEl()?.value ?? '');\n if (isNaN(currentInputValue)) {\n this.value.set(this.min() ?? 0);\n }\n else {\n if (type === 'increase') {\n this.value.set(this.clampInputValue(currentInputValue + (this.step() ?? 1) * multiplier));\n }\n else {\n this.value.set(this.clampInputValue(currentInputValue - (this.step() ?? 1) * multiplier));\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxNumberFieldRootDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.3\", type: RdxNumberFieldRootDirective, isStandalone: true, selector: \"[rdxNumberFieldRoot]\", inputs: { value: { classPropertyName: \"value\", publicName: \"value\", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: \"min\", publicName: \"min\", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: \"max\", publicName: \"max\", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: \"step\", publicName: \"step\", isSignal: true, isRequired: false, transformFunction: null }, stepSnapping: { classPropertyName: \"stepSnapping\", publicName: \"stepSnapping\", isSignal: true, isRequired: false, transformFunction: null }, disableWheelChange: { classPropertyName: \"disableWheelChange\", publicName: \"disableWheelChange\", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: \"locale\", publicName: \"locale\", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null }, formatOptions: { classPropertyName: \"formatOptions\", publicName: \"formatOptions\", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: \"readonly\", publicName: \"readonly\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: \"valueChange\" }, host: { attributes: { \"role\": \"group\" }, properties: { \"attr.data-disabled\": \"disabled() ? \\\"\\\" : undefined\", \"attr.data-readonly\": \"readonly() ? \\\"\\\" : undefined\" } }, providers: [provideToken(NUMBER_FIELD_ROOT_CONTEXT, RdxNumberFieldRootDirective)], exportAs: [\"rdxNumberFieldRoot\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxNumberFieldRootDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdxNumberFieldRoot]',\n exportAs: 'rdxNumberFieldRoot',\n providers: [provideToken(NUMBER_FIELD_ROOT_CONTEXT, RdxNumberFieldRootDirective)],\n host: {\n role: 'group',\n '[attr.data-disabled]': 'disabled() ? \"\" : undefined',\n '[attr.data-readonly]': 'readonly() ? \"\" : undefined'\n }\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWZpZWxkLXJvb3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9udW1iZXItZmllbGQvc3JjL251bWJlci1maWVsZC1yb290LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVGLE9BQU8sRUFBRSx5QkFBeUIsRUFBMkIsTUFBTSw4QkFBOEIsQ0FBQztBQUVsRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDOztBQVl0RixNQUFNLE9BQU8sMkJBQTJCO0lBVnhDO1FBV2EsVUFBSyxHQUFHLEtBQUssMkRBQVUsQ0FBQztRQUV4QixRQUFHLEdBQUcsS0FBSyxDQUFrQyxTQUFTLHVDQUFJLFNBQVMsRUFBRSxlQUFlLE9BQTVCLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxHQUFDLENBQUM7UUFFeEYsUUFBRyxHQUFHLEtBQUssQ0FBa0MsU0FBUyx1Q0FBSSxTQUFTLEVBQUUsZUFBZSxPQUE1QixFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsR0FBQyxDQUFDO1FBRXhGLFNBQUksR0FBRyxLQUFLLENBQXNCLENBQUMsd0NBQUksU0FBUyxFQUFFLGVBQWUsT0FBNUIsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLEdBQUMsQ0FBQztRQUVyRSxpQkFBWSxHQUFHLEtBQUssQ0FBd0IsS0FBSyxnREFBSSxTQUFTLEVBQUUsZ0JBQWdCLE9BQTdCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLEdBQUMsQ0FBQztRQUVwRix1QkFBa0IsR0FBRyxLQUFLLENBQXdCLEtBQUssc0RBQUksU0FBUyxFQUFFLGdCQUFnQixPQUE3QixFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxHQUFDLENBQUM7UUFFMUYsV0FBTSxHQUFHLEtBQUssQ0FBUyxJQUFJLGtEQUFDLENBQUM7UUFFN0IsYUFBUSxHQUFHLEtBQUssQ0FBd0IsS0FBSyw0Q0FBSSxTQUFTLEVBQUUsZ0JBQWdCLE9BQTdCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLEdBQUMsQ0FBQztRQUVoRixrQkFBYSxHQUFHLEtBQUssbUVBQTRCLENBQUM7UUFFM0Q7O1dBRUc7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUF3QixLQUFLLDRDQUFJLFNBQVMsRUFBRSxnQkFBZ0IsT0FBN0IsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsR0FBQyxDQUFDO1FBRXpGOztXQUVHO1FBQ00sWUFBTyxHQUFHLE1BQU0sQ0FBK0IsU0FBUyxtREFBQyxDQUFDO1FBRW5FOztXQUVHO1FBQ00sdUJBQWtCLEdBQUcsUUFBUSxDQUNsQyxHQUFHLEVBQUUsQ0FDRCxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFHLENBQUM7WUFDekIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFHLENBQUMsQ0FBQztnQkFDeEYsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRztnQkFDdkUsQ0FBQyxDQUFDLEtBQUssQ0FBQyw4REFDbkIsQ0FBQztRQUVGOztXQUVHO1FBQ00sdUJBQWtCLEdBQUcsUUFBUSxDQUNsQyxHQUFHLEVBQUUsQ0FDRCxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFHLENBQUM7WUFDekIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFHLENBQUMsQ0FBQztnQkFDeEYsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRztnQkFDdkUsQ0FBQyxDQUFDLEtBQUssQ0FBQyw4REFDbkIsQ0FBQztRQUVGOztXQUVHO1FBQ00sY0FBUyxHQUFHLFFBQVEsQ0FBWSxHQUFHLEVBQUU7WUFDMUMsMkZBQTJGO1lBQzNGLGdHQUFnRztZQUNoRyxtR0FBbUc7WUFDbkcsa0dBQWtHO1lBQ2xHLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxxQkFBc0IsR0FBRyxDQUFDLENBQUM7WUFFeEYsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQy9DLENBQUMscURBQUMsQ0FBQztRQUVIOzs7O1dBSUc7UUFDTSxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUMvQixTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMscURBQ3pHLENBQUM7UUFFRjs7V0FFRztRQUNNLG1CQUFjLEdBQUcsQ0FBQyxFQUFvQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztLQXlINUU7SUExR0c7O09BRUc7SUFDSCxlQUFlLENBQUMsR0FBVztRQUN2QiwrRkFBK0Y7UUFDL0YsSUFBSSxZQUFvQixDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztZQUMxRSxZQUFZLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDdEQsQ0FBQzthQUFNLENBQUM7WUFDSixZQUFZLEdBQUcsZUFBZSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLENBQUM7UUFFRCxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDdEYsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsWUFBWSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsZUFBZSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQ7O09BRUc7SUFDSCxpQkFBaUIsQ0FBQyxJQUFtQjtRQUNqQyxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRyxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDO2FBQU0sSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNwRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWMsQ0FBQyxVQUFVLEdBQUcsQ0FBQztRQUN6QixJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWMsQ0FBQyxVQUFVLEdBQUcsQ0FBQztRQUN6QixJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWUsQ0FBQyxHQUFXO1FBQ3ZCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFbkQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUVuRiw2Q0FBNkM7UUFDN0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsaUZBQWlGO1FBQ2pGLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYSxDQUFDLEdBQVc7UUFDckIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO2dCQUN2QixJQUFJLEVBQUU7b0JBQUUsRUFBRSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7Z0JBQ3ZCLE9BQU8sRUFBRSxDQUFDO1lBQ2QsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUSxDQUFDLEdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsb0JBQW9CLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRU8sbUJBQW1CLENBQUMsSUFBNkIsRUFBRSxVQUFVLEdBQUcsQ0FBQztRQUNyRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFFeEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDckMsT0FBTztRQUNYLENBQUM7UUFFRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztRQUVqRixJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUM5RixDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQzlGLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQzs4R0FwTVEsMkJBQTJCO2tHQUEzQiwyQkFBMkIscWlEQVB6QixDQUFDLFlBQVksQ0FBQyx5QkFBeUIsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDOzsyRkFPeEUsMkJBQTJCO2tCQVZ2QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFNBQVMsRUFBRSxDQUFDLFlBQVksQ0FBQyx5QkFBeUIsOEJBQThCLENBQUM7b0JBQ2pGLElBQUksRUFBRTt3QkFDRixJQUFJLEVBQUUsT0FBTzt3QkFDYixzQkFBc0IsRUFBRSw2QkFBNkI7d0JBQ3JELHNCQUFzQixFQUFFLDZCQUE2QjtxQkFDeEQ7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQsIE51bWJlcklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IGJvb2xlYW5BdHRyaWJ1dGUsIGNvbXB1dGVkLCBEaXJlY3RpdmUsIGlucHV0LCBtb2RlbCwgbnVtYmVyQXR0cmlidXRlLCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xhbXAsIGlzTnVsbGlzaCwgcHJvdmlkZVRva2VuLCBzbmFwVmFsdWVUb1N0ZXAgfSBmcm9tICdAcmFkaXgtbmcvcHJpbWl0aXZlcy9jb3JlJztcbmltcG9ydCB7IE5VTUJFUl9GSUVMRF9ST09UX0NPTlRFWFQsIE51bWJlckZpZWxkQ29udGV4dFRva2VuIH0gZnJvbSAnLi9udW1iZXItZmllbGQtY29udGV4dC50b2tlbic7XG5pbXBvcnQgeyBJbnB1dE1vZGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGhhbmRsZURlY2ltYWxPcGVyYXRpb24sIHVzZU51bWJlckZvcm1hdHRlciwgdXNlTnVtYmVyUGFyc2VyIH0gZnJvbSAnLi91dGlscyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3JkeE51bWJlckZpZWxkUm9vdF0nLFxuICAgIGV4cG9ydEFzOiAncmR4TnVtYmVyRmllbGRSb290JyxcbiAgICBwcm92aWRlcnM6IFtwcm92aWRlVG9rZW4oTlVNQkVSX0ZJRUxEX1JPT1RfQ09OVEVYVCwgUmR4TnVtYmVyRmllbGRSb290RGlyZWN0aXZlKV0sXG4gICAgaG9zdDoge1xuICAgICAgICByb2xlOiAnZ3JvdXAnLFxuICAgICAgICAnW2F0dHIuZGF0YS1kaXNhYmxlZF0nOiAnZGlzYWJsZWQoKSA/IFwiXCIgOiB1bmRlZmluZWQnLFxuICAgICAgICAnW2F0dHIuZGF0YS1yZWFkb25seV0nOiAncmVhZG9ubHkoKSA/IFwiXCIgOiB1bmRlZmluZWQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBSZHhOdW1iZXJGaWVsZFJvb3REaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE51bWJlckZpZWxkQ29udGV4dFRva2VuIHtcbiAgICByZWFkb25seSB2YWx1ZSA9IG1vZGVsPG51bWJlcj4oKTtcblxuICAgIHJlYWRvbmx5IG1pbiA9IGlucHV0PG51bWJlciB8IHVuZGVmaW5lZCwgTnVtYmVySW5wdXQ+KHVuZGVmaW5lZCwgeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KTtcblxuICAgIHJlYWRvbmx5IG1heCA9IGlucHV0PG51bWJlciB8IHVuZGVmaW5lZCwgTnVtYmVySW5wdXQ+KHVuZGVmaW5lZCwgeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KTtcblxuICAgIHJlYWRvbmx5IHN0ZXAgPSBpbnB1dDxudW1iZXIsIE51bWJlcklucHV0PigxLCB7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pO1xuXG4gICAgcmVhZG9ubHkgc3RlcFNuYXBwaW5nID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0PihmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgICByZWFkb25seSBkaXNhYmxlV2hlZWxDaGFuZ2UgPSBpbnB1dDxib29sZWFuLCBCb29sZWFuSW5wdXQ+KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAgIHJlYWRvbmx5IGxvY2FsZSA9IGlucHV0PHN0cmluZz4oJ2VuJyk7XG5cbiAgICByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4sIEJvb2xlYW5JbnB1dD4oZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gICAgcmVhZG9ubHkgZm9ybWF0T3B0aW9ucyA9IGlucHV0PEludGwuTnVtYmVyRm9ybWF0T3B0aW9ucz4oKTtcblxuICAgIC8qKlxuICAgICAqIFdoZW4gPGNvZGU+dHJ1ZTwvY29kZT4sIHRoZSBOdW1iZXIgRmllbGQgaXMgcmVhZC1vbmx5LlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHJlYWRvbmx5ID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0PihmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgICAvKipcbiAgICAgKiBAaWdub3JlXG4gICAgICovXG4gICAgcmVhZG9ubHkgaW5wdXRFbCA9IHNpZ25hbDxIVE1MSW5wdXRFbGVtZW50IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gICAgLyoqXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGlzRGVjcmVhc2VEaXNhYmxlZCA9IGNvbXB1dGVkKFxuICAgICAgICAoKSA9PlxuICAgICAgICAgICAgIWlzTnVsbGlzaCh0aGlzLnZhbHVlKCkhKSAmJlxuICAgICAgICAgICAgKHRoaXMuY2xhbXBJbnB1dFZhbHVlKHRoaXMudmFsdWUoKSEpID09PSB0aGlzLm1pbigpIHx8ICh0aGlzLm1pbigpICYmICFpc05hTih0aGlzLnZhbHVlKCkhKSlcbiAgICAgICAgICAgICAgICA/IGhhbmRsZURlY2ltYWxPcGVyYXRpb24oJy0nLCB0aGlzLnZhbHVlKCkhLCB0aGlzLnN0ZXAoKSkgPCB0aGlzLm1pbigpIVxuICAgICAgICAgICAgICAgIDogZmFsc2UpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICByZWFkb25seSBpc0luY3JlYXNlRGlzYWJsZWQgPSBjb21wdXRlZChcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICFpc051bGxpc2godGhpcy52YWx1ZSgpISkgJiZcbiAgICAgICAgICAgICh0aGlzLmNsYW1wSW5wdXRWYWx1ZSh0aGlzLnZhbHVlKCkhKSA9PT0gdGhpcy5tYXgoKSB8fCAodGhpcy5taW4oKSAmJiAhaXNOYU4odGhpcy52YWx1ZSgpISkpXG4gICAgICAgICAgICAgICAgPyBoYW5kbGVEZWNpbWFsT3BlcmF0aW9uKCcrJywgdGhpcy52YWx1ZSgpISwgdGhpcy5zdGVwKCkpID4gdGhpcy5tYXgoKSFcbiAgICAgICAgICAgICAgICA6IGZhbHNlKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBAaWdub3JlXG4gICAgICovXG4gICAgcmVhZG9ubHkgaW5wdXRNb2RlID0gY29tcHV0ZWQ8SW5wdXRNb2RlPigoKSA9PiB7XG4gICAgICAgIC8vIFRoZSBpbnB1dE1vZGUgYXR0cmlidXRlIGluZmx1ZW5jZXMgdGhlIHNvZnR3YXJlIGtleWJvYXJkIHRoYXQgaXMgc2hvd24gb24gdG91Y2ggZGV2aWNlcy5cbiAgICAgICAgLy8gQnJvd3NlcnMgYW5kIG9wZXJhdGluZyBzeXN0ZW1zIGFyZSBxdWl0ZSBpbmNvbnNpc3RlbnQgYWJvdXQgd2hhdCBrZXlzIGFyZSBhdmFpbGFibGUsIGhvd2V2ZXIuXG4gICAgICAgIC8vIFdlIGNob29zZSBiZXR3ZWVuIG51bWVyaWMgYW5kIGRlY2ltYWwgYmFzZWQgb24gd2hldGhlciB3ZSBhbGxvdyBuZWdhdGl2ZSBhbmQgZnJhY3Rpb25hbCBudW1iZXJzLFxuICAgICAgICAvLyBhbmQgYmFzZWQgb24gdGVzdGluZyBvbiB2YXJpb3VzIGRldmljZXMgdG8gZGV0ZXJtaW5lIHdoYXQga2V5cyBhcmUgYXZhaWxhYmxlIGluIGVhY2ggaW5wdXRNb2RlLlxuICAgICAgICBjb25zdCBoYXNEZWNpbWFscyA9IHRoaXMubnVtYmVyRm9ybWF0dGVyKCkucmVzb2x2ZWRPcHRpb25zKCkubWF4aW11bUZyYWN0aW9uRGlnaXRzISA+IDA7XG5cbiAgICAgICAgcmV0dXJuIGhhc0RlY2ltYWxzID8gJ2RlY2ltYWwnIDogJ251bWVyaWMnO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogUmVwbGFjZSBuZWdhdGl2ZSB0ZXh0VmFsdWUgZm9ybWF0dGVkIHVzaW5nIGN1cnJlbmN5U2lnbjogJ2FjY291bnRpbmcnXG4gICAgICogd2l0aCBhIHRleHRWYWx1ZSB0aGF0IGNhbiBiZSBhbm5vdW5jZWQgdXNpbmcgYSBtaW51cyBzaWduLlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICByZWFkb25seSB0ZXh0VmFsdWUgPSBjb21wdXRlZCgoKSA9PlxuICAgICAgICBpc051bGxpc2godGhpcy52YWx1ZSgpISkgfHwgaXNOYU4odGhpcy52YWx1ZSgpISkgPyAnJyA6IHRoaXMudGV4dFZhbHVlRm9ybWF0dGVyKCkuZm9ybWF0KHRoaXMudmFsdWUoKSlcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IG9uSW5wdXRFbGVtZW50ID0gKGVsOiBIVE1MSW5wdXRFbGVtZW50KSA9PiB0aGlzLmlucHV0RWwuc2V0KGVsKTtcblxuICAgIC8qKlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBudW1iZXJQYXJzZXI6IGFueTtcbiAgICAvKipcbiAgICAgKiBAaWdub3JlXG4gICAgICovXG4gICAgbnVtYmVyRm9ybWF0dGVyOiBhbnk7XG4gICAgLyoqXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIHRleHRWYWx1ZUZvcm1hdHRlcjogYW55O1xuXG4gICAgLyoqXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIGNsYW1wSW5wdXRWYWx1ZSh2YWw6IG51bWJlcikge1xuICAgICAgICAvLyBDbGFtcCB0byBtaW4gYW5kIG1heCwgcm91bmQgdG8gdGhlIG5lYXJlc3Qgc3RlcCwgYW5kIHJvdW5kIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGRpZ2l0c1xuICAgICAgICBsZXQgY2xhbXBlZFZhbHVlOiBudW1iZXI7XG4gICAgICAgIGlmICh0aGlzLnN0ZXAoKSA9PT0gdW5kZWZpbmVkIHx8IGlzTmFOKHRoaXMuc3RlcCgpKSB8fCAhdGhpcy5zdGVwU25hcHBpbmcoKSkge1xuICAgICAgICAgICAgY2xhbXBlZFZhbHVlID0gY2xhbXAodmFsLCB0aGlzLm1pbigpLCB0aGlzLm1heCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsYW1wZWRWYWx1ZSA9IHNuYXBWYWx1ZVRvU3RlcCh2YWwsIHRoaXMubWluKCksIHRoaXMubWF4KCksIHRoaXMuc3RlcCgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNsYW1wZWRWYWx1ZSA9IHRoaXMubnVtYmVyUGFyc2VyKCkucGFyc2UodGhpcy5udW1iZXJGb3JtYXR0ZXIoKS5mb3JtYXQoY2xhbXBlZFZhbHVlKSk7XG4gICAgICAgIHJldHVybiBjbGFtcGVkVmFsdWU7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMubnVtYmVyUGFyc2VyID0gdXNlTnVtYmVyUGFyc2VyKHRoaXMubG9jYWxlLCB0aGlzLmZvcm1hdE9wdGlvbnMpO1xuICAgICAgICB0aGlzLm51bWJlckZvcm1hdHRlciA9IHVzZU51bWJlckZvcm1hdHRlcih0aGlzLmxvY2FsZSwgdGhpcy5mb3JtYXRPcHRpb25zKTtcbiAgICAgICAgdGhpcy50ZXh0VmFsdWVGb3JtYXR0ZXIgPSB1c2VOdW1iZXJGb3JtYXR0ZXIodGhpcy5sb2NhbGUsIHRoaXMuZm9ybWF0T3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIGhhbmRsZU1pbk1heFZhbHVlKHR5cGU6ICdtaW4nIHwgJ21heCcpIHtcbiAgICAgICAgaWYgKHR5cGUgPT09ICdtaW4nICYmIHRoaXMubWluKCkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZS5zZXQodGhpcy5jbGFtcElucHV0VmFsdWUodGhpcy5taW4oKSEpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnbWF4JyAmJiB0aGlzLm1heCgpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUuc2V0KHRoaXMuY2xhbXBJbnB1dFZhbHVlKHRoaXMubWF4KCkhKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaWdub3JlXG4gICAgICovXG4gICAgaGFuZGxlRGVjcmVhc2UobXVsdGlwbGllciA9IDEpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVDaGFuZ2luZ1ZhbHVlKCdkZWNyZWFzZScsIG11bHRpcGxpZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBoYW5kbGVJbmNyZWFzZShtdWx0aXBsaWVyID0gMSkge1xuICAgICAgICB0aGlzLmhhbmRsZUNoYW5naW5nVmFsdWUoJ2luY3JlYXNlJywgbXVsdGlwbGllcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIGFwcGx5SW5wdXRWYWx1ZSh2YWw6IHN0cmluZykge1xuICAgICAgICBjb25zdCBwYXJzZWRWYWx1ZSA9IHRoaXMubnVtYmVyUGFyc2VyKCkucGFyc2UodmFsKTtcblxuICAgICAgICB0aGlzLnZhbHVlLnNldChpc05hTihwYXJzZWRWYWx1ZSkgPyB1bmRlZmluZWQgOiB0aGlzLmNsYW1wSW5wdXRWYWx1ZShwYXJzZWRWYWx1ZSkpO1xuXG4gICAgICAgIC8vIFNldCB0byBlbXB0eSBzdGF0ZSBpZiBpbnB1dCB2YWx1ZSBpcyBlbXB0eVxuICAgICAgICBpZiAoIXZhbC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldElucHV0VmFsdWUodmFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIGl0IGZhaWxlZCB0byBwYXJzZSwgdGhlbiByZXNldCBpbnB1dCB0byBmb3JtYXR0ZWQgdmVyc2lvbiBvZiBjdXJyZW50IG51bWJlclxuICAgICAgICBpZiAoaXNOYU4ocGFyc2VkVmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRJbnB1dFZhbHVlKHRoaXMudGV4dFZhbHVlKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0SW5wdXRWYWx1ZSh0aGlzLnRleHRWYWx1ZSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaWdub3JlXG4gICAgICovXG4gICAgc2V0SW5wdXRWYWx1ZSh2YWw6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5pbnB1dEVsKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRFbC51cGRhdGUoKGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVsKSBlbC52YWx1ZSA9IHZhbDtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWw7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICB2YWxpZGF0ZSh2YWw6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5udW1iZXJQYXJzZXIoKS5pc1ZhbGlkUGFydGlhbE51bWJlcih2YWwsIHRoaXMubWluKCksIHRoaXMubWF4KCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQ2hhbmdpbmdWYWx1ZSh0eXBlOiAnaW5jcmVhc2UnIHwgJ2RlY3JlYXNlJywgbXVsdGlwbGllciA9IDEpIHtcbiAgICAgICAgdGhpcy5pbnB1dEVsKCk/LmZvY3VzKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQoKSB8fCB0aGlzLnJlYWRvbmx5KCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbnB1dFZhbHVlID0gdGhpcy5udW1iZXJQYXJzZXIoKS5wYXJzZSh0aGlzLmlucHV0RWwoKT8udmFsdWUgPz8gJycpO1xuXG4gICAgICAgIGlmIChpc05hTihjdXJyZW50SW5wdXRWYWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUuc2V0KHRoaXMubWluKCkgPz8gMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2luY3JlYXNlJykge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUuc2V0KHRoaXMuY2xhbXBJbnB1dFZhbHVlKGN1cnJlbnRJbnB1dFZhbHVlICsgKHRoaXMuc3RlcCgpID8/IDEpICogbXVsdGlwbGllcikpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlLnNldCh0aGlzLmNsYW1wSW5wdXRWYWx1ZShjdXJyZW50SW5wdXRWYWx1ZSAtICh0aGlzLnN0ZXAoKSA/PyAxKSAqIG11bHRpcGxpZXIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { RdxNumberFieldDecrementDirective } from './src/number-field-decrement.directive';\nimport { RdxNumberFieldIncrementDirective } from './src/number-field-increment.directive';\nimport { RdxNumberFieldInputDirective } from './src/number-field-input.directive';\nimport { RdxNumberFieldRootDirective } from './src/number-field-root.directive';\nimport * as i0 from \"@angular/core\";\nexport * from './src/number-field-context.token';\nexport * from './src/number-field-decrement.directive';\nexport * from './src/number-field-increment.directive';\nexport * from './src/number-field-input.directive';\nexport * from './src/number-field-root.directive';\nexport * from './src/types';\nexport * from './src/utils';\nconst _imports = [\n RdxNumberFieldRootDirective,\n RdxNumberFieldInputDirective,\n RdxNumberFieldIncrementDirective,\n RdxNumberFieldDecrementDirective\n];\nexport class RdxNumberFieldModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxNumberFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxNumberFieldModule, imports: [RdxNumberFieldRootDirective,\n RdxNumberFieldInputDirective,\n RdxNumberFieldIncrementDirective,\n RdxNumberFieldDecrementDirective], exports: [RdxNumberFieldRootDirective,\n RdxNumberFieldInputDirective,\n RdxNumberFieldIncrementDirective,\n RdxNumberFieldDecrementDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxNumberFieldModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxNumberFieldModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [..._imports],\n exports: [..._imports]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL251bWJlci1maWVsZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQUVoRixjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxhQUFhLENBQUM7QUFFNUIsTUFBTSxRQUFRLEdBQUc7SUFDYiwyQkFBMkI7SUFDM0IsNEJBQTRCO0lBQzVCLGdDQUFnQztJQUNoQyxnQ0FBZ0M7Q0FDbkMsQ0FBQztBQU1GLE1BQU0sT0FBTyxvQkFBb0I7OEdBQXBCLG9CQUFvQjsrR0FBcEIsb0JBQW9CLFlBVjdCLDJCQUEyQjtZQUMzQiw0QkFBNEI7WUFDNUIsZ0NBQWdDO1lBQ2hDLGdDQUFnQyxhQUhoQywyQkFBMkI7WUFDM0IsNEJBQTRCO1lBQzVCLGdDQUFnQztZQUNoQyxnQ0FBZ0M7K0dBT3ZCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFKaEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztvQkFDdEIsT0FBTyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUM7aUJBQ3pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJkeE51bWJlckZpZWxkRGVjcmVtZW50RGlyZWN0aXZlIH0gZnJvbSAnLi9zcmMvbnVtYmVyLWZpZWxkLWRlY3JlbWVudC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUmR4TnVtYmVyRmllbGRJbmNyZW1lbnREaXJlY3RpdmUgfSBmcm9tICcuL3NyYy9udW1iZXItZmllbGQtaW5jcmVtZW50LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBSZHhOdW1iZXJGaWVsZElucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi9zcmMvbnVtYmVyLWZpZWxkLWlucHV0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBSZHhOdW1iZXJGaWVsZFJvb3REaXJlY3RpdmUgfSBmcm9tICcuL3NyYy9udW1iZXItZmllbGQtcm9vdC5kaXJlY3RpdmUnO1xuXG5leHBvcnQgKiBmcm9tICcuL3NyYy9udW1iZXItZmllbGQtY29udGV4dC50b2tlbic7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9udW1iZXItZmllbGQtZGVjcmVtZW50LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9udW1iZXItZmllbGQtaW5jcmVtZW50LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9udW1iZXItZmllbGQtaW5wdXQuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL251bWJlci1maWVsZC1yb290LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy91dGlscyc7XG5cbmNvbnN0IF9pbXBvcnRzID0gW1xuICAgIFJkeE51bWJlckZpZWxkUm9vdERpcmVjdGl2ZSxcbiAgICBSZHhOdW1iZXJGaWVsZElucHV0RGlyZWN0aXZlLFxuICAgIFJkeE51bWJlckZpZWxkSW5jcmVtZW50RGlyZWN0aXZlLFxuICAgIFJkeE51bWJlckZpZWxkRGVjcmVtZW50RGlyZWN0aXZlXG5dO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFsuLi5faW1wb3J0c10sXG4gICAgZXhwb3J0czogWy4uLl9pbXBvcnRzXVxufSlcbmV4cG9ydCBjbGFzcyBSZHhOdW1iZXJGaWVsZE1vZHVsZSB7fVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaXgtbmctcHJpbWl0aXZlcy1udW1iZXItZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL251bWJlci1maWVsZC9yYWRpeC1uZy1wcmltaXRpdmVzLW51bWJlci1maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"radix-ng-primitives-number-field.mjs","sources":["../../../packages/primitives/number-field/src/number-field-context.ts","../../../packages/primitives/number-field/src/number-field.utils.ts","../../../packages/primitives/number-field/src/number-field-button.ts","../../../packages/primitives/number-field/src/number-field-decrement.ts","../../../packages/primitives/number-field/src/number-field-group.ts","../../../packages/primitives/number-field/src/number-field-hidden-input.ts","../../../packages/primitives/number-field/src/number-field-increment.ts","../../../packages/primitives/number-field/src/number-field-input.ts","../../../packages/primitives/number-field/src/types.ts","../../../packages/primitives/number-field/src/number-field-root.ts","../../../packages/primitives/number-field/src/number-field-scrub-area-context.ts","../../../packages/primitives/number-field/src/number-field-scrub-area.ts","../../../packages/primitives/number-field/src/number-field-scrub-area-cursor.ts","../../../packages/primitives/number-field/index.ts","../../../packages/primitives/number-field/radix-ng-primitives-number-field.ts"],"sourcesContent":["import { createContext } from '@radix-ng/primitives/core';\nimport type { RdxNumberFieldRoot } from './number-field-root';\n\n/**\n * The Number Field context exposes the root directive instance to every child part.\n * The root owns all state, parsing/formatting and value-change logic; parts read\n * signals and call methods off it.\n *\n * @see https://base-ui.com/react/components/number-field\n */\nexport const [injectNumberFieldRootContext, provideNumberFieldRootContext] =\n createContext<RdxNumberFieldRoot>('RdxNumberFieldRootContext');\n","import { computed, DestroyRef, inject, numberAttribute, signal, Signal } from '@angular/core';\nimport { NumberFormatter, NumberParser } from '@internationalized/number';\nimport { clamp, NumberInput } from '@radix-ng/primitives/core';\n\n/**\n * Coerces an optional numeric input, returning `undefined` for nullish/empty/non-numeric values.\n * Unlike `numberAttribute`, `numberOrUndefined(undefined)` is `undefined` (not `NaN`), so an unset\n * `[min]`/`[max]` does not poison clamping.\n */\nexport function numberOrUndefined(value: NumberInput): number | undefined {\n if (value == null || value === '') {\n return undefined;\n }\n const parsed = numberAttribute(value);\n return Number.isNaN(parsed) ? undefined : parsed;\n}\n\n/** Default step used when no `step` is provided. */\nexport const DEFAULT_STEP = 1;\n/** Delay between auto-repeat ticks while holding an increment/decrement button. */\nexport const CHANGE_VALUE_TICK_DELAY = 60;\n/** Delay before auto-repeat starts while holding an increment/decrement button. */\nexport const START_AUTO_CHANGE_DELAY = 400;\n/** Pointer travel (px) that cancels a hold, treating the gesture as a scroll. */\nexport const SCROLLING_POINTER_MOVE_DISTANCE = 8;\n\nconst STEP_EPSILON_FACTOR = 1e-10;\n// Matches Intl.NumberFormat's decimal maximumFractionDigits default.\nconst DEFAULT_DIGITS = 3;\n\n/** Reactive `Intl`-backed formatter built from the current locale and format options. */\nexport function useNumberFormatter(\n locale: Signal<string>,\n options: Signal<Intl.NumberFormatOptions | undefined> = signal({})\n): Signal<NumberFormatter> {\n return computed(() => new NumberFormatter(locale(), options() ?? {}));\n}\n\n/** Reactive `Intl`-backed parser built from the current locale and format options. */\nexport function useNumberParser(\n locale: Signal<string>,\n options: Signal<Intl.NumberFormatOptions | undefined> = signal({})\n): Signal<NumberParser> {\n return computed(() => new NumberParser(locale(), options() ?? {}));\n}\n\n/** Whether the format options would cause `Intl.NumberFormat` to round the value. */\nexport function hasNumberFormatRoundingOptions(format?: Intl.NumberFormatOptions): boolean {\n const opts = format as (Intl.NumberFormatOptions & Record<string, unknown>) | undefined;\n return !!(\n opts &&\n (opts.maximumFractionDigits != null ||\n opts.minimumFractionDigits != null ||\n opts.maximumSignificantDigits != null ||\n opts.minimumSignificantDigits != null ||\n opts['roundingIncrement'] != null ||\n opts['roundingMode'] != null ||\n opts['roundingPriority'] != null)\n );\n}\n\n/**\n * Strips floating-point representation errors (e.g. `0.1 + 0.2`) using the format's\n * rounding options when present, otherwise rounding to {@link DEFAULT_DIGITS} digits.\n */\nexport function removeFloatingPointErrors(value: number, locale: string, format?: Intl.NumberFormatOptions): number {\n if (!Number.isFinite(value)) {\n return value;\n }\n\n if (!hasNumberFormatRoundingOptions(format)) {\n return Number(value.toFixed(DEFAULT_DIGITS));\n }\n\n const formatter = new NumberFormatter('en-US', {\n ...format,\n // These options alter only display decoration, not numeric rounding.\n signDisplay: 'auto',\n currencySign: 'standard',\n notation: format!.notation === 'compact' ? 'standard' : format!.notation,\n useGrouping: false\n });\n const roundedText = formatter.format(value);\n const roundedValue = new NumberParser('en-US', format ?? {}).parse(roundedText);\n\n if (Number.isNaN(roundedValue)) {\n return value;\n }\n\n return formatter.format(roundedValue) === roundedText ? roundedValue : value;\n}\n\nfunction snapToStep(\n value: number,\n base: number,\n step: number,\n mode: 'directional' | 'nearest' = 'directional'\n): number {\n const stepSize = Math.abs(step);\n const direction = Math.sign(step);\n const tolerance = stepSize * STEP_EPSILON_FACTOR * direction;\n const rawSteps = value - base + tolerance;\n\n if (mode === 'nearest') {\n return base + Math.round(rawSteps / step) * step;\n }\n\n const snappedSteps = direction > 0 ? Math.floor(rawSteps / stepSize) : Math.ceil(rawSteps / stepSize);\n return base + snappedSteps * stepSize;\n}\n\nexport interface ValidateOptions {\n step: number | undefined;\n minWithDefault: number;\n maxWithDefault: number;\n minWithZeroDefault: number;\n format: Intl.NumberFormatOptions | undefined;\n locale: string;\n snapOnStep: boolean;\n small: boolean;\n clamp: boolean;\n}\n\n/**\n * Snaps (optionally), clamps (optionally) and rounds an unvalidated value, mirroring\n * Base UI's `toValidatedNumber`. Snapping happens before clamping so non-step-aligned\n * boundaries stay reachable.\n */\nexport function toValidatedNumber(value: number | null, options: ValidateOptions): number | null {\n if (value === null) {\n return value;\n }\n\n const { step, minWithDefault, maxWithDefault, minWithZeroDefault, format, locale, snapOnStep, small } = options;\n\n let nextValue = value;\n\n if (step != null && snapOnStep && step !== 0) {\n const base = small || minWithDefault === Number.MIN_SAFE_INTEGER ? minWithZeroDefault : minWithDefault;\n nextValue = snapToStep(nextValue, base, step, small ? 'nearest' : 'directional');\n }\n\n if (options.clamp) {\n nextValue = clamp(nextValue, minWithDefault, maxWithDefault);\n }\n\n const roundedValue = removeFloatingPointErrors(nextValue, locale, format);\n return options.clamp ? clamp(roundedValue, minWithDefault, maxWithDefault) : roundedValue;\n}\n\nexport interface PressAndHoldOptions {\n /** Whether interaction is currently blocked (disabled or read-only). */\n disabled: () => boolean;\n /** Delay before the first auto-repeat tick. */\n startDelay: number;\n /** Delay between subsequent auto-repeat ticks. */\n tickDelay: number;\n /** Pointer travel (px) that cancels the hold as a scroll. */\n scrollDistance: number;\n /** Runs on each tick; return `false` to stop auto-repeating (e.g. a bound was hit). */\n tick: (event: PointerEvent) => boolean | void;\n /** Runs once when the press ends (pointerup / cancel / scroll). */\n onStop?: (event: PointerEvent) => void;\n}\n\nexport interface PressAndHold {\n readonly isPressing: Signal<boolean>;\n onPointerDown(event: PointerEvent): void;\n /** Whether the following synthetic `click` should be ignored (a hold already ticked). */\n shouldSkipClick(): boolean;\n}\n\n/**\n * Pointer press-and-hold with auto-repeat, modelled on Base UI's `usePressAndHold`.\n * Must be called in an injection context — it registers cleanup via `DestroyRef`.\n */\nexport function createPressAndHold(options: PressAndHoldOptions): PressAndHold {\n const destroyRef = inject(DestroyRef);\n const isPressing = signal(false);\n\n let startEvent: PointerEvent | null = null;\n let startX = 0;\n let startY = 0;\n let didTick = false;\n let tickTimer: ReturnType<typeof setTimeout> | undefined;\n\n const clearTick = () => {\n if (tickTimer !== undefined) {\n clearTimeout(tickTimer);\n tickTimer = undefined;\n }\n };\n\n const scheduleTick = (delay: number) => {\n tickTimer = setTimeout(() => {\n if (options.disabled() || !startEvent) {\n stop(startEvent);\n return;\n }\n didTick = true;\n const shouldContinue = options.tick(startEvent);\n if (shouldContinue === false) {\n clearTick();\n return;\n }\n scheduleTick(options.tickDelay);\n }, delay);\n };\n\n const onPointerMove = (event: PointerEvent) => {\n // Treat a moving touch/pen gesture as a scroll and cancel the hold.\n if (startEvent && startEvent.pointerType !== 'mouse') {\n const dx = event.clientX - startX;\n const dy = event.clientY - startY;\n if (Math.hypot(dx, dy) > options.scrollDistance) {\n stop(event);\n }\n }\n };\n\n const stop = (event: PointerEvent | null) => {\n if (!isPressing()) {\n return;\n }\n clearTick();\n window.removeEventListener('pointerup', stop, true);\n window.removeEventListener('pointercancel', stop, true);\n window.removeEventListener('pointermove', onPointerMove, true);\n isPressing.set(false);\n if (event) {\n options.onStop?.(event);\n }\n };\n\n destroyRef.onDestroy(() => stop(null));\n\n return {\n isPressing: isPressing.asReadonly(),\n shouldSkipClick: () => didTick,\n onPointerDown(event: PointerEvent) {\n if (options.disabled() || isPressing()) {\n return;\n }\n startEvent = event;\n startX = event.clientX;\n startY = event.clientY;\n didTick = false;\n isPressing.set(true);\n window.addEventListener('pointerup', stop, true);\n window.addEventListener('pointercancel', stop, true);\n window.addEventListener('pointermove', onPointerMove, true);\n scheduleTick(options.startDelay);\n }\n };\n}\n","import { booleanAttribute, computed, Directive, input } from '@angular/core';\nimport { BooleanInput } from '@radix-ng/primitives/core';\nimport { injectNumberFieldRootContext } from './number-field-context';\nimport {\n CHANGE_VALUE_TICK_DELAY,\n createPressAndHold,\n PressAndHold,\n SCROLLING_POINTER_MOVE_DISTANCE,\n START_AUTO_CHANGE_DELAY\n} from './number-field.utils';\nimport { Direction, NumberFieldChangeReason } from './types';\n\n// Treat pen as touch-like to avoid forcing the software keyboard on stylus taps.\nfunction isTouchLikePointerType(pointerType: string): boolean {\n return pointerType === 'touch' || pointerType === 'pen';\n}\n\n/**\n * Shared behaviour for the increment and decrement stepper buttons: single-press,\n * press-and-hold auto-repeat, and committing a dirty (typed-but-not-blurred) input\n * value before stepping.\n *\n * @see https://base-ui.com/react/components/number-field\n */\n@Directive({\n host: {\n type: 'button',\n tabindex: '-1',\n '[attr.aria-controls]': 'rootContext.id()',\n '[attr.aria-readonly]': 'rootContext.readonly() ? \"true\" : undefined',\n '[attr.disabled]': 'buttonDisabled() ? \"\" : undefined',\n '[attr.data-disabled]': 'buttonDisabled() ? \"\" : undefined',\n '[attr.data-pressed]': 'press.isPressing() ? \"\" : undefined',\n '[style.user-select]': '\"none\"',\n '[style.-webkit-user-select]': '\"none\"',\n '(click)': 'onClick($event)',\n '(pointerdown)': 'onPointerDown($event)',\n '(contextmenu)': '$event.preventDefault()'\n }\n})\nexport abstract class RdxNumberFieldButton {\n protected readonly rootContext = injectNumberFieldRootContext()!;\n\n /** Whether this is the increment (`+1`) button; `false` for decrement (`-1`). */\n protected abstract readonly isIncrement: boolean;\n\n /**\n * When `true`, the button is disabled in addition to inheriting the root's disabled state.\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** @ignore Disabled for display/focus purposes (own state, root disabled, or bound reached). */\n readonly buttonDisabled = computed(\n () =>\n this.disabled() ||\n this.rootContext.isDisabled() ||\n (this.isIncrement ? this.rootContext.isIncrementDisabled() : this.rootContext.isDecrementDisabled())\n );\n\n /** @ignore Disabled for interaction purposes (also blocked while read-only). */\n private readonly interactionDisabled = computed(() => this.buttonDisabled() || this.rootContext.readonly());\n\n private get direction(): Direction {\n return this.isIncrement ? 1 : -1;\n }\n\n private get pressReason(): NumberFieldChangeReason {\n return this.isIncrement ? 'increment-press' : 'decrement-press';\n }\n\n /** @ignore */\n readonly press: PressAndHold;\n\n constructor() {\n const root = this.rootContext;\n this.press = createPressAndHold({\n disabled: () => this.interactionDisabled(),\n startDelay: START_AUTO_CHANGE_DELAY,\n tickDelay: CHANGE_VALUE_TICK_DELAY,\n scrollDistance: SCROLLING_POINTER_MOVE_DISTANCE,\n tick: (event) => {\n const amount = root.getStepAmount(event);\n return root.incrementValue(amount, {\n direction: this.direction,\n event,\n reason: this.pressReason\n });\n },\n onStop: () => root.commitValue(root.lastChangedValue ?? root.currentValue())\n });\n }\n\n onClick(event: MouseEvent): void {\n if (event.defaultPrevented || this.interactionDisabled() || this.press.shouldSkipClick()) {\n return;\n }\n\n this.commitDirtyValue(event);\n\n const amount = this.rootContext.getStepAmount(event);\n const prev = this.rootContext.currentValue();\n this.rootContext.incrementValue(amount, {\n direction: this.direction,\n event,\n reason: this.pressReason\n });\n\n const committed = this.rootContext.lastChangedValue ?? this.rootContext.currentValue();\n if (committed !== prev) {\n this.rootContext.commitValue(committed);\n }\n }\n\n onPointerDown(event: PointerEvent): void {\n const isMainButton = !event.button || event.button === 0;\n if (event.defaultPrevented || this.rootContext.readonly() || !isMainButton || this.buttonDisabled()) {\n return;\n }\n\n // Sync the dirty input value before starting the hold sequence.\n this.commitDirtyValue(event);\n\n if (!isTouchLikePointerType(event.pointerType)) {\n // Focus the input so the user can continue with the keyboard.\n this.rootContext.inputEl()?.focus();\n }\n\n this.press.onPointerDown(event);\n }\n\n /** Commits a typed-but-not-yet-blurred input value so stepping starts from it. */\n private commitDirtyValue(event: Event): void {\n const root = this.rootContext;\n root.allowInputSync = true;\n const parsed = root.parseNumber(root.inputValue());\n if (parsed !== null) {\n root.setValue(parsed, this.pressReason, event, this.direction);\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport { RdxNumberFieldButton } from './number-field-button';\n\n/**\n * A stepper button that decreases the field value when clicked or held.\n *\n * @see https://base-ui.com/react/components/number-field\n */\n@Directive({\n selector: 'button[rdxNumberFieldDecrement]',\n exportAs: 'rdxNumberFieldDecrement',\n host: {\n 'aria-label': 'Decrease'\n }\n})\nexport class RdxNumberFieldDecrement extends RdxNumberFieldButton {\n protected readonly isIncrement = false;\n}\n","import { Directive } from '@angular/core';\nimport { injectNumberFieldRootContext } from './number-field-context';\n\n/**\n * Groups the input with the increment and decrement buttons.\n *\n * @see https://base-ui.com/react/components/number-field\n */\n@Directive({\n selector: 'div[rdxNumberFieldGroup]',\n exportAs: 'rdxNumberFieldGroup',\n host: {\n role: 'group',\n '[attr.data-disabled]': 'rootContext.isDisabled() ? \"\" : undefined',\n '[attr.data-readonly]': 'rootContext.readonly() ? \"\" : undefined',\n '[attr.data-required]': 'rootContext.required() ? \"\" : undefined',\n '[attr.data-scrubbing]': 'rootContext.isScrubbing() ? \"\" : undefined'\n }\n})\nexport class RdxNumberFieldGroup {\n protected readonly rootContext = injectNumberFieldRootContext()!;\n}\n","import { Directive } from '@angular/core';\nimport { injectNumberFieldRootContext } from './number-field-context';\n\n/**\n * The hidden native `input[type=number]` that mirrors the field value for native form submission\n * and browser constraint validation (min/max/step/required). Place it inside the root, alongside\n * the visible `[rdxNumberFieldInput]`.\n *\n * @see https://base-ui.com/react/components/number-field\n */\n@Directive({\n selector: 'input[rdxNumberFieldHiddenInput]',\n exportAs: 'rdxNumberFieldHiddenInput',\n host: {\n type: 'number',\n tabindex: '-1',\n 'aria-hidden': 'true',\n '[attr.name]': 'rootContext.name()',\n '[attr.form]': 'rootContext.form()',\n '[value]': 'rootContext.currentValue() ?? \"\"',\n '[attr.min]': 'rootContext.min()',\n '[attr.max]': 'rootContext.max()',\n '[attr.step]': 'rootContext.step()',\n '[disabled]': 'rootContext.isDisabled()',\n '[attr.required]': 'rootContext.required() ? \"\" : undefined',\n style: 'transform: translateX(-100%); position: absolute; overflow: hidden; pointer-events: none; opacity: 0; margin: 0;',\n '(focus)': 'onFocus()',\n '(change)': 'onChange($event)'\n }\n})\nexport class RdxNumberFieldHiddenInput {\n protected readonly rootContext = injectNumberFieldRootContext()!;\n\n /** Move focus to the visible input when the hidden one is focused (e.g. via form validation). */\n onFocus(): void {\n this.rootContext.inputEl()?.focus();\n }\n\n /** Handle browser autofill, which writes directly to the hidden numeric input. */\n onChange(event: Event): void {\n const root = this.rootContext;\n if (root.isDisabled() || root.readonly()) {\n return;\n }\n\n const nextValue = (event.target as HTMLInputElement).valueAsNumber;\n const parsedValue = Number.isNaN(nextValue) ? null : nextValue;\n\n root.allowInputSync = true;\n root.setValue(parsedValue, 'none', event);\n root.commitValue(root.lastChangedValue ?? root.currentValue());\n }\n}\n","import { Directive } from '@angular/core';\nimport { RdxNumberFieldButton } from './number-field-button';\n\n/**\n * A stepper button that increases the field value when clicked or held.\n *\n * @see https://base-ui.com/react/components/number-field\n */\n@Directive({\n selector: 'button[rdxNumberFieldIncrement]',\n exportAs: 'rdxNumberFieldIncrement',\n host: {\n 'aria-label': 'Increase'\n }\n})\nexport class RdxNumberFieldIncrement extends RdxNumberFieldButton {\n protected readonly isIncrement = true;\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\nimport { getActiveElement } from '@radix-ng/primitives/core';\nimport { injectNumberFieldRootContext } from './number-field-context';\n\n/**\n * The native text input that displays the formatted value and accepts typed input.\n *\n * @see https://base-ui.com/react/components/number-field\n */\n@Directive({\n selector: 'input[rdxNumberFieldInput]',\n exportAs: 'rdxNumberFieldInput',\n host: {\n type: 'text',\n autocomplete: 'off',\n autocorrect: 'off',\n spellcheck: 'false',\n 'aria-roledescription': 'Number field',\n '[id]': 'rootContext.id()',\n '[value]': 'rootContext.inputValue()',\n '[attr.inputmode]': 'rootContext.inputMode()',\n '[attr.aria-invalid]': 'rootContext.required() && rootContext.currentValue() === null ? \"true\" : undefined',\n '[disabled]': 'rootContext.isDisabled()',\n '[attr.readonly]': 'rootContext.readonly() ? \"\" : undefined',\n '[required]': 'rootContext.required()',\n '[attr.data-disabled]': 'rootContext.isDisabled() ? \"\" : undefined',\n '[attr.data-readonly]': 'rootContext.readonly() ? \"\" : undefined',\n '[attr.data-required]': 'rootContext.required() ? \"\" : undefined',\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur($event)',\n '(input)': 'onInput($event)',\n '(beforeinput)': 'onBeforeInput($event)',\n '(keydown)': 'onKeydown($event)',\n '(paste)': 'onPaste($event)',\n '(wheel)': 'onWheel($event)'\n }\n})\nexport class RdxNumberFieldInput {\n private readonly elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n protected readonly rootContext = injectNumberFieldRootContext()!;\n\n /** Browsers place the caret at the start; we move it to the end on the first focus. */\n private hasTouchedInput = false;\n\n constructor() {\n this.rootContext.registerInput(this.elementRef.nativeElement);\n }\n\n onFocus(event: FocusEvent): void {\n const root = this.rootContext;\n if (root.readonly() || root.isDisabled() || this.hasTouchedInput) {\n return;\n }\n this.hasTouchedInput = true;\n const target = event.target as HTMLInputElement;\n const length = target.value.length;\n target.setSelectionRange(length, length);\n }\n\n onBeforeInput(event: InputEvent): void {\n // Only validate insertions; deletions and composition have `data === null`.\n if (event.data == null) {\n return;\n }\n const target = event.target as HTMLInputElement;\n const nextValue =\n target.value.slice(0, target.selectionStart ?? undefined) +\n event.data +\n target.value.slice(target.selectionEnd ?? undefined);\n\n if (!this.rootContext.isValidPartial(nextValue)) {\n event.preventDefault();\n }\n }\n\n onInput(event: Event): void {\n const root = this.rootContext;\n const targetValue = (event.target as HTMLInputElement).value;\n\n root.allowInputSync = false;\n\n if (targetValue.trim() === '') {\n root.setInputValue(targetValue);\n root.setValue(null, 'input-clear', event);\n return;\n }\n\n const parsedValue = root.parseNumber(targetValue);\n root.setInputValue(targetValue);\n\n if (parsedValue !== null) {\n root.setValue(parsedValue, 'input-change', event);\n }\n }\n\n onKeydown(event: KeyboardEvent): void {\n const root = this.rootContext;\n if (root.readonly() || root.isDisabled()) {\n return;\n }\n\n root.allowInputSync = true;\n const key = event.key;\n\n if (key === 'ArrowUp' || key === 'ArrowDown') {\n event.preventDefault();\n const parsed = root.parseNumber(root.inputValue());\n const amount = root.getStepAmount(event);\n root.incrementValue(amount, {\n direction: key === 'ArrowUp' ? 1 : -1,\n currentValue: parsed,\n event,\n reason: 'keyboard'\n });\n root.commitValue(root.lastChangedValue ?? root.currentValue());\n } else if (key === 'Home' && root.min() != null) {\n event.preventDefault();\n root.setValue(root.min()!, 'keyboard', event);\n root.commitValue(root.lastChangedValue ?? root.currentValue());\n } else if (key === 'End' && root.max() != null) {\n event.preventDefault();\n root.setValue(root.max()!, 'keyboard', event);\n root.commitValue(root.lastChangedValue ?? root.currentValue());\n }\n }\n\n onPaste(event: ClipboardEvent): void {\n const root = this.rootContext;\n if (root.readonly() || root.isDisabled()) {\n return;\n }\n\n const pastedData = event.clipboardData?.getData('text/plain') ?? '';\n // Prevent the subsequent `input` event from also handling the paste.\n event.preventDefault();\n\n const parsedValue = root.parseNumber(pastedData);\n if (parsedValue !== null) {\n root.allowInputSync = false;\n root.setValue(parsedValue, 'input-paste', event);\n root.setInputValue(pastedData);\n }\n }\n\n onBlur(event: FocusEvent): void {\n const root = this.rootContext;\n if (root.readonly() || root.isDisabled()) {\n return;\n }\n\n root.markAsTouched();\n\n const hadManualInput = !root.allowInputSync;\n const hadPendingCommit = root.hasPendingCommit;\n root.allowInputSync = true;\n\n const text = root.inputValue();\n\n if (text.trim() === '') {\n root.setValue(null, 'input-clear', event);\n root.commitValue(null);\n return;\n }\n\n const parsedValue = root.parseNumber(text);\n if (parsedValue === null) {\n return;\n }\n\n const value = root.currentValue();\n const shouldUpdate = value !== parsedValue;\n const shouldCommit = hadManualInput || shouldUpdate || hadPendingCommit;\n\n let committedValue = parsedValue;\n if (shouldUpdate) {\n root.setValue(parsedValue, 'input-blur', event);\n committedValue = root.lastChangedValue ?? parsedValue;\n }\n\n if (shouldCommit) {\n root.commitValue(committedValue);\n }\n\n const canonicalText = root.formatNumber(committedValue);\n if (root.inputValue() !== canonicalText) {\n root.setInputValue(canonicalText);\n }\n }\n\n onWheel(event: WheelEvent): void {\n const root = this.rootContext;\n if (!root.allowWheelScrub() || root.isDisabled() || root.readonly()) {\n return;\n }\n // Allow pinch-zoom and only scrub while focused.\n if (event.ctrlKey || getActiveElement() !== this.elementRef.nativeElement) {\n return;\n }\n\n event.preventDefault();\n root.allowInputSync = true;\n const amount = root.getStepAmount(event);\n root.incrementValue(amount, {\n direction: event.deltaY > 0 ? -1 : 1,\n event,\n reason: 'wheel'\n });\n }\n}\n","/**\n * The software keyboard hint shown on touch devices, mapped to the input's `inputmode` attribute.\n */\nexport type InputMode = 'numeric' | 'decimal' | 'text';\n\n/**\n * Direction of a step-based value change (`1` to increase, `-1` to decrease).\n */\nexport type Direction = 1 | -1;\n\n/**\n * Why a value change happened. Mirrors Base UI's change reasons and is used\n * internally to decide whether a change should be clamped (step interactions\n * always clamp; direct text entry may go out of range when `allowOutOfRange`).\n *\n * @see https://base-ui.com/react/components/number-field\n */\nexport type NumberFieldChangeReason =\n | 'input-change'\n | 'input-clear'\n | 'input-blur'\n | 'input-paste'\n | 'keyboard'\n | 'increment-press'\n | 'decrement-press'\n | 'wheel'\n | 'scrub'\n | 'none';\n\nexport const REASONS = {\n inputChange: 'input-change',\n inputClear: 'input-clear',\n inputBlur: 'input-blur',\n inputPaste: 'input-paste',\n keyboard: 'keyboard',\n incrementPress: 'increment-press',\n decrementPress: 'decrement-press',\n wheel: 'wheel',\n scrub: 'scrub',\n none: 'none'\n} as const;\n","import {\n booleanAttribute,\n computed,\n Directive,\n effect,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n untracked\n} from '@angular/core';\nimport {\n BooleanInput,\n injectControlValueAccessor,\n injectId,\n NumberInput,\n RdxControlValueAccessor,\n RdxFormValueControl\n} from '@radix-ng/primitives/core';\nimport { provideNumberFieldRootContext } from './number-field-context';\nimport { numberOrUndefined, toValidatedNumber, useNumberFormatter, useNumberParser } from './number-field.utils';\nimport { Direction, InputMode, NumberFieldChangeReason, REASONS } from './types';\n\nconst INPUT_REASONS: NumberFieldChangeReason[] = [\n REASONS.inputChange,\n REASONS.inputClear,\n REASONS.inputBlur,\n REASONS.inputPaste,\n REASONS.none\n];\n\n/**\n * Groups all parts of the number field and manages its state, parsing/formatting\n * and value-change logic. A single directive drives the whole family — parts read\n * signals and call methods off it through the root context.\n *\n * @see https://base-ui.com/react/components/number-field\n */\n@Directive({\n selector: 'div[rdxNumberFieldRoot]',\n exportAs: 'rdxNumberFieldRoot',\n providers: [provideNumberFieldRootContext(() => inject(RdxNumberFieldRoot))],\n hostDirectives: [\n {\n directive: RdxControlValueAccessor,\n inputs: ['value: value', 'disabled']\n }\n ],\n host: {\n role: 'group',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : undefined',\n '[attr.data-readonly]': 'readonly() ? \"\" : undefined',\n '[attr.data-required]': 'required() ? \"\" : undefined',\n '[attr.data-scrubbing]': 'isScrubbing() ? \"\" : undefined'\n }\n})\nexport class RdxNumberFieldRoot implements RdxFormValueControl<number | null> {\n /** @ignore */\n protected readonly cva = injectControlValueAccessor<number | null>();\n\n /** The id of the input element. */\n readonly id = input<string>(injectId('rdx-number-field-'));\n\n /** The minimum value of the field. */\n readonly min = input<number | undefined, NumberInput>(undefined, { transform: numberOrUndefined });\n\n /** The maximum value of the field. */\n readonly max = input<number | undefined, NumberInput>(undefined, { transform: numberOrUndefined });\n\n /**\n * Amount to increment and decrement with the buttons, arrow keys and scrub area.\n * @default 1\n */\n readonly step = input<number, NumberInput>(1, { transform: numberAttribute });\n\n /**\n * The step used when incrementing while the Alt key is held. Snaps to multiples of this value.\n * @default 0.1\n */\n readonly smallStep = input<number, NumberInput>(0.1, { transform: numberAttribute });\n\n /**\n * The step used when incrementing while the Shift key is held. Snaps to multiples of this value.\n * @default 10\n */\n readonly largeStep = input<number, NumberInput>(10, { transform: numberAttribute });\n\n /**\n * Whether the value should snap to the nearest step when incrementing or decrementing.\n * @default false\n */\n readonly snapOnStep = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * When `true`, direct text entry may go outside the `min`/`max` range without clamping.\n * Step interactions (arrow keys, buttons, wheel, scrub) still clamp.\n * @default false\n */\n readonly allowOutOfRange = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Whether the value can be changed with the mouse wheel while the input is focused.\n * @default false\n */\n readonly allowWheelScrub = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Options used to format the input value (forwarded to `Intl.NumberFormat`). */\n readonly format = input<Intl.NumberFormatOptions>();\n\n /** The locale used to parse and format the value. */\n readonly locale = input<string>('en');\n\n /**\n * When `true`, the user cannot interact with the field.\n * @default false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * When `true`, the field is focusable but its value cannot be changed.\n * @default false\n */\n readonly readonly = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * When `true`, the user must enter a value before the owning form can be submitted.\n * @default false\n */\n readonly required = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Name of the hidden input rendered by `[rdxNumberFieldHiddenInput]`, for form submission. */\n readonly name = input<string>();\n\n /** Id of the form the hidden input belongs to. Useful when it is rendered outside the form. */\n readonly form = input<string>();\n\n /** The uncontrolled value of the field when it is initially rendered. */\n readonly defaultValue = input<number>();\n\n /** The controlled value of the field. Use with `(onValueChange)` or two-way `[(value)]`. */\n readonly value = model<number | null>(null);\n\n /** Emitted when the value changes (during interaction or programmatically). */\n readonly onValueChange = output<number | null>();\n\n /**\n * Emitted when the value is committed: on blur after typing, or when a pointer is released\n * after scrubbing or pressing a button. Fires together with `onValueChange` for keyboard input.\n */\n readonly onValueCommitted = output<number | null>();\n\n /** @ignore The formatted text shown in the input element. */\n readonly inputValue = signal('');\n\n /** @ignore Whether a scrub gesture is in progress. */\n readonly isScrubbing = signal(false);\n\n /** @ignore The native input element, registered by `[rdxNumberFieldInput]`. */\n readonly inputEl = signal<HTMLInputElement | undefined>(undefined);\n\n /**\n * @ignore Gate that prevents the formatted value from overwriting in-progress typing.\n * Plain field (not a signal): it is toggled imperatively inside event handlers.\n */\n allowInputSync = true;\n /** @ignore Last value produced by `setValue`, used to report the committed value. */\n lastChangedValue: number | null = null;\n /** @ignore Whether a programmatic change is awaiting a commit. */\n hasPendingCommit = false;\n\n /** @ignore */\n readonly isDisabled = computed(() => !!this.cva.disabled());\n\n private readonly formatter = useNumberFormatter(this.locale, this.format);\n private readonly parser = useNumberParser(this.locale, this.format);\n\n /** @ignore The current numeric value (`null` when empty). */\n readonly currentValue = computed<number | null>(() => this.cva.value() ?? null);\n\n /** @ignore */\n readonly minWithDefault = computed(() => this.min() ?? Number.MIN_SAFE_INTEGER);\n /** @ignore */\n readonly maxWithDefault = computed(() => this.max() ?? Number.MAX_SAFE_INTEGER);\n /** @ignore */\n readonly minWithZeroDefault = computed(() => this.min() ?? 0);\n\n /** @ignore Whether incrementing further is a no-op (value already at max). */\n readonly isIncrementDisabled = computed(() => {\n const value = this.currentValue();\n return value != null && value >= this.maxWithDefault();\n });\n /** @ignore Whether decrementing further is a no-op (value already at min). */\n readonly isDecrementDisabled = computed(() => {\n const value = this.currentValue();\n return value != null && value <= this.minWithDefault();\n });\n\n /** @ignore Software-keyboard hint based on whether the format allows fractional digits. */\n readonly inputMode = computed<InputMode>(() => {\n const hasDecimals = (this.formatter().resolvedOptions().maximumFractionDigits ?? 0) > 0;\n return hasDecimals ? 'decimal' : 'numeric';\n });\n\n constructor() {\n // Apply the uncontrolled initial value once it is provided.\n effect(() => {\n const dv = this.defaultValue();\n if (dv !== undefined) {\n untracked(() => {\n this.value.set(dv);\n this.cva.setValue(dv);\n });\n }\n });\n\n // Keep the visible input in sync with the value whenever it changes externally or the\n // formatting options change. Skipped while the user is typing (`allowInputSync === false`).\n effect(() => {\n const formatted = this.formatNumber(this.currentValue());\n untracked(() => {\n if (this.allowInputSync && this.inputValue() !== formatted) {\n this.inputValue.set(formatted);\n }\n });\n });\n }\n\n /** @ignore Formats a numeric value to its display string (empty for `null`/`NaN`). */\n formatNumber(value: number | null): string {\n if (value === null || Number.isNaN(value)) {\n return '';\n }\n return this.formatter().format(value);\n }\n\n /** @ignore Parses a display string to a number, returning `null` when not parseable. */\n parseNumber(text: string): number | null {\n const parsed = this.parser().parse(text);\n return Number.isNaN(parsed) ? null : parsed;\n }\n\n /** @ignore Whether `text` is a valid partial number for the current locale and bounds. */\n isValidPartial(text: string): boolean {\n return this.parser().isValidPartialNumber(text, this.min(), this.max());\n }\n\n /** @ignore The step magnitude for an interaction, honouring Alt (small) and Shift (large). */\n getStepAmount(event?: { altKey?: boolean; shiftKey?: boolean }): number {\n if (event?.altKey) {\n return this.smallStep();\n }\n if (event?.shiftKey) {\n return this.largeStep();\n }\n return this.step();\n }\n\n /** @ignore Registers the native input element. */\n registerInput(el: HTMLInputElement): void {\n this.inputEl.set(el);\n }\n\n /** @ignore Sets the displayed text without changing the numeric value. */\n setInputValue(text: string): void {\n this.inputValue.set(text);\n }\n\n /** @ignore */\n markAsTouched(): void {\n this.cva.markAsTouched();\n }\n\n /**\n * @ignore\n * Validates and applies a candidate value, emitting `onValueChange` when it changes.\n * Returns whether a change was fired.\n */\n setValue(\n unvalidatedValue: number | null,\n reason: NumberFieldChangeReason,\n event?: Event,\n direction?: Direction\n ): boolean {\n const keyState = event as (Event & { altKey?: boolean; shiftKey?: boolean }) | undefined;\n // Step interactions always clamp; direct text entry may go out of range when allowed.\n const shouldClamp = !this.allowOutOfRange() || !INPUT_REASONS.includes(reason);\n\n const validatedValue = toValidatedNumber(unvalidatedValue, {\n step: direction ? this.getStepAmount(keyState) * direction : undefined,\n minWithDefault: this.minWithDefault(),\n maxWithDefault: this.maxWithDefault(),\n minWithZeroDefault: this.minWithZeroDefault(),\n format: this.format(),\n locale: this.locale(),\n snapOnStep: this.snapOnStep(),\n small: keyState?.altKey ?? false,\n clamp: shouldClamp\n });\n\n const value = this.currentValue();\n const isInputReason = INPUT_REASONS.includes(reason);\n const shouldFireChange =\n validatedValue !== value ||\n (isInputReason && (unvalidatedValue !== value || this.allowInputSync === false));\n\n if (shouldFireChange) {\n this.applyValue(validatedValue);\n this.onValueChange.emit(validatedValue);\n this.hasPendingCommit = true;\n }\n\n this.lastChangedValue = validatedValue;\n\n if (this.allowInputSync) {\n this.setInputValue(this.formatNumber(validatedValue));\n }\n\n return shouldFireChange;\n }\n\n /**\n * @ignore\n * Increments (or decrements) the value by `amount * direction`, starting from `currentValue`\n * when supplied (the live, possibly-dirty input value) or the committed value otherwise.\n */\n incrementValue(\n amount: number,\n params: { direction: Direction; currentValue?: number | null; event?: Event; reason: NumberFieldChangeReason }\n ): boolean {\n const prev = params.currentValue == null ? this.currentValue() : params.currentValue;\n const nextValue = typeof prev === 'number' ? prev + amount * params.direction : Math.max(0, this.min() ?? 0);\n return this.setValue(nextValue, params.reason, params.event, params.direction);\n }\n\n /** @ignore Emits the committed value at the end of an interaction. */\n commitValue(value: number | null): void {\n this.hasPendingCommit = false;\n this.onValueCommitted.emit(value);\n }\n\n private applyValue(value: number | null): void {\n this.value.set(value);\n this.cva.setValue(value);\n }\n}\n","import { Signal } from '@angular/core';\nimport { createContext } from '@radix-ng/primitives/core';\n\nexport interface RdxNumberFieldScrubAreaContext {\n /** Whether a scrub gesture is currently in progress. */\n readonly isScrubbing: Signal<boolean>;\n /** Whether the active scrub was started with touch input. */\n readonly isTouchInput: Signal<boolean>;\n /** Whether the browser denied the Pointer Lock request. */\n readonly isPointerLockDenied: Signal<boolean>;\n /** Registers (or clears) the virtual cursor element so the scrub area can move it. */\n registerCursor(element: HTMLElement | null): void;\n}\n\n/**\n * Context shared from the scrub area to its virtual cursor child.\n *\n * @see https://base-ui.com/react/components/number-field\n */\nexport const [injectNumberFieldScrubAreaContext, provideNumberFieldScrubAreaContext] =\n createContext<RdxNumberFieldScrubAreaContext>('RdxNumberFieldScrubAreaContext');\n","import { computed, Directive, effect, ElementRef, inject, input, numberAttribute, signal } from '@angular/core';\nimport { NumberInput } from '@radix-ng/primitives/core';\nimport { injectNumberFieldRootContext } from './number-field-context';\nimport { provideNumberFieldScrubAreaContext, RdxNumberFieldScrubAreaContext } from './number-field-scrub-area-context';\nimport { numberOrUndefined } from './number-field.utils';\n\ntype ScrubDirection = 'horizontal' | 'vertical';\n\nfunction isWebKitBrowser(): boolean {\n return (\n typeof navigator !== 'undefined' &&\n /AppleWebKit/.test(navigator.userAgent) &&\n !/Chrome/.test(navigator.userAgent)\n );\n}\n\nfunction isFirefoxBrowser(): boolean {\n return typeof navigator !== 'undefined' && /firefox/i.test(navigator.userAgent);\n}\n\n/** Calculates the viewport rect the virtual cursor loops within. */\nfunction getViewportRect(teleportDistance: number | undefined, scrubAreaEl: HTMLElement) {\n const win = scrubAreaEl.ownerDocument.defaultView ?? window;\n const rect = scrubAreaEl.getBoundingClientRect();\n\n if (rect && teleportDistance != null) {\n return {\n x: rect.left - teleportDistance / 2,\n y: rect.top - teleportDistance / 2,\n width: rect.right + teleportDistance / 2,\n height: rect.bottom + teleportDistance / 2\n };\n }\n\n const vV = win.visualViewport;\n if (vV) {\n return { x: vV.offsetLeft, y: vV.offsetTop, width: vV.offsetLeft + vV.width, height: vV.offsetTop + vV.height };\n }\n\n return {\n x: 0,\n y: 0,\n width: win.document.documentElement.clientWidth,\n height: win.document.documentElement.clientHeight\n };\n}\n\n/**\n * An interactive area where the user can click and drag to change the field value.\n * Uses the Pointer Lock API for continuous dragging (disabled in Safari to avoid layout shift).\n *\n * @see https://base-ui.com/react/components/number-field\n */\n@Directive({\n selector: '[rdxNumberFieldScrubArea]',\n exportAs: 'rdxNumberFieldScrubArea',\n providers: [provideNumberFieldScrubAreaContext(() => inject(RdxNumberFieldScrubArea).context)],\n host: {\n role: 'presentation',\n '[style.touch-action]': '\"none\"',\n '[style.user-select]': '\"none\"',\n '[style.-webkit-user-select]': '\"none\"',\n '[attr.data-disabled]': 'rootContext.isDisabled() ? \"\" : undefined',\n '[attr.data-readonly]': 'rootContext.readonly() ? \"\" : undefined',\n '[attr.data-scrubbing]': 'isScrubbing() ? \"\" : undefined',\n '(pointerdown)': 'onPointerDown($event)',\n '(touchstart)': 'onTouchStart($event)'\n }\n})\nexport class RdxNumberFieldScrubArea {\n protected readonly rootContext = injectNumberFieldRootContext()!;\n\n /**\n * The direction the cursor must move to change the value.\n * @default 'horizontal'\n */\n readonly direction = input<ScrubDirection>('horizontal');\n\n /**\n * How many pixels the cursor must move before the value changes. Higher is less sensitive.\n * @default 2\n */\n readonly pixelSensitivity = input<number, NumberInput>(2, { transform: numberAttribute });\n\n /**\n * If set, the distance the cursor may move from the scrub area center before it loops back.\n */\n readonly teleportDistance = input<number | undefined, NumberInput>(undefined, { transform: numberOrUndefined });\n\n protected readonly isScrubbing = signal(false);\n private readonly isTouchInput = signal(false);\n private readonly isPointerLockDenied = signal(false);\n private readonly cursorEl = signal<HTMLElement | null>(null);\n\n private readonly scrubAreaEl = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n private isScrubbingRef = false;\n private didMove = false;\n private pointerDownTarget: EventTarget | null = null;\n private virtualCursorCoords = { x: 0, y: 0 };\n private visualScale = 1;\n\n /** @ignore Exposed to the scrub-area context provider. */\n readonly context: RdxNumberFieldScrubAreaContext = {\n isScrubbing: this.isScrubbing.asReadonly(),\n isTouchInput: this.isTouchInput.asReadonly(),\n isPointerLockDenied: this.isPointerLockDenied.asReadonly(),\n registerCursor: (el) => this.cursorEl.set(el)\n };\n\n private readonly canScrub = computed(() => !this.rootContext.isDisabled() && !this.rootContext.readonly());\n\n constructor() {\n const root = this.rootContext;\n\n // Register global listeners only while actively scrubbing.\n effect((onCleanup) => {\n if (!root.inputEl() || !this.canScrub() || !this.isScrubbing()) {\n return;\n }\n\n let cumulativeDelta = 0;\n\n const handlePointerMove = (event: PointerEvent) => {\n if (!this.isScrubbingRef) {\n return;\n }\n event.preventDefault();\n this.onScrub(event);\n\n const { movementX, movementY } = event;\n cumulativeDelta += this.direction() === 'vertical' ? movementY : movementX;\n\n if (Math.abs(cumulativeDelta) >= this.pixelSensitivity()) {\n cumulativeDelta = 0;\n this.didMove = true;\n const dValue = this.direction() === 'vertical' ? -movementY : movementX;\n const stepAmount = root.getStepAmount(event);\n const rawAmount = dValue * stepAmount;\n\n if (rawAmount !== 0) {\n root.allowInputSync = true;\n root.incrementValue(Math.abs(rawAmount), {\n direction: rawAmount >= 0 ? 1 : -1,\n event,\n reason: 'scrub'\n });\n }\n }\n };\n\n const handlePointerUp = (event: PointerEvent) => {\n const finish = () => {\n try {\n this.scrubAreaEl.ownerDocument.exitPointerLock();\n } catch {\n // Ignore — pointer lock may not be active.\n }\n this.isScrubbingRef = false;\n this.onScrubbingChange(false, event);\n root.commitValue(root.lastChangedValue ?? root.currentValue());\n\n // Manually dispatch a click when no movement happened, since preventDefault on\n // pointerdown suppresses the browser's synthetic click.\n if (!this.didMove && this.pointerDownTarget && root.inputEl()) {\n this.pointerDownTarget.dispatchEvent(\n new MouseEvent('click', { bubbles: true, cancelable: true })\n );\n }\n\n this.didMove = false;\n this.pointerDownTarget = null;\n };\n\n if (isFirefoxBrowser()) {\n // Firefox needs a small delay or pointer lock won't release on a soft click.\n setTimeout(finish, 20);\n } else {\n finish();\n }\n };\n\n const win = this.scrubAreaEl.ownerDocument.defaultView ?? window;\n const vV = win.visualViewport;\n const handleVisualResize = () => {\n if (vV) {\n this.visualScale = vV.scale;\n }\n };\n handleVisualResize();\n\n win.addEventListener('pointermove', handlePointerMove, true);\n win.addEventListener('pointerup', handlePointerUp, true);\n win.addEventListener('pointercancel', handlePointerUp, true);\n vV?.addEventListener('resize', handleVisualResize);\n\n onCleanup(() => {\n win.removeEventListener('pointermove', handlePointerMove, true);\n win.removeEventListener('pointerup', handlePointerUp, true);\n win.removeEventListener('pointercancel', handlePointerUp, true);\n vV?.removeEventListener('resize', handleVisualResize);\n });\n });\n }\n\n async onPointerDown(event: PointerEvent): Promise<void> {\n const isMainButton = !event.button || event.button === 0;\n if (event.defaultPrevented || !isMainButton || !this.canScrub()) {\n return;\n }\n\n const isTouch = event.pointerType === 'touch';\n this.isTouchInput.set(isTouch);\n\n if (event.pointerType === 'mouse') {\n event.preventDefault();\n this.rootContext.inputEl()?.focus();\n }\n\n this.isScrubbingRef = true;\n this.didMove = false;\n this.pointerDownTarget = event.target;\n this.onScrubbingChange(true, event);\n\n // WebKit causes significant layout shift with the native pointer-lock message.\n if (!isTouch && !isWebKitBrowser()) {\n try {\n await this.scrubAreaEl.ownerDocument.body.requestPointerLock();\n this.isPointerLockDenied.set(false);\n } catch {\n this.isPointerLockDenied.set(true);\n } finally {\n if (this.isScrubbingRef) {\n this.onScrubbingChange(true, event);\n }\n }\n }\n }\n\n onTouchStart(event: TouchEvent): void {\n if (!this.canScrub()) {\n return;\n }\n // Prevent scrolling using touch input when scrubbing.\n if (event.touches.length === 1) {\n event.preventDefault();\n }\n }\n\n private onScrub(event: PointerEvent): void {\n const cursor = this.cursorEl();\n if (!cursor) {\n return;\n }\n\n const rect = getViewportRect(this.teleportDistance(), this.scrubAreaEl);\n const coords = this.virtualCursorCoords;\n const newCoords = { x: Math.round(coords.x + event.movementX), y: Math.round(coords.y + event.movementY) };\n\n const cursorWidth = cursor.offsetWidth;\n const cursorHeight = cursor.offsetHeight;\n\n if (newCoords.x + cursorWidth / 2 < rect.x) {\n newCoords.x = rect.width - cursorWidth / 2;\n } else if (newCoords.x + cursorWidth / 2 > rect.width) {\n newCoords.x = rect.x - cursorWidth / 2;\n }\n\n if (newCoords.y + cursorHeight / 2 < rect.y) {\n newCoords.y = rect.height - cursorHeight / 2;\n } else if (newCoords.y + cursorHeight / 2 > rect.height) {\n newCoords.y = rect.y - cursorHeight / 2;\n }\n\n this.virtualCursorCoords = newCoords;\n this.updateCursorTransform(newCoords.x, newCoords.y);\n }\n\n private onScrubbingChange(scrubbing: boolean, event: PointerEvent): void {\n this.isScrubbing.set(scrubbing);\n this.rootContext.isScrubbing.set(scrubbing);\n\n const cursor = this.cursorEl();\n if (!cursor || !scrubbing) {\n return;\n }\n\n const initialCoords = {\n x: event.clientX - cursor.offsetWidth / 2,\n y: event.clientY - cursor.offsetHeight / 2\n };\n this.virtualCursorCoords = initialCoords;\n this.updateCursorTransform(initialCoords.x, initialCoords.y);\n }\n\n private updateCursorTransform(x: number, y: number): void {\n const cursor = this.cursorEl();\n if (cursor) {\n cursor.style.transform = `translate3d(${x}px,${y}px,0) scale(${1 / this.visualScale})`;\n }\n }\n}\n","import { computed, DestroyRef, Directive, ElementRef, inject } from '@angular/core';\nimport { RdxPortal } from '@radix-ng/primitives/portal';\nimport { injectNumberFieldScrubAreaContext } from './number-field-scrub-area-context';\n\nfunction isWebKitBrowser(): boolean {\n return (\n typeof navigator !== 'undefined' &&\n /AppleWebKit/.test(navigator.userAgent) &&\n !/Chrome/.test(navigator.userAgent)\n );\n}\n\n/**\n * A custom element shown instead of the native cursor while scrubbing. It is portaled to the\n * document body and positioned with the Pointer Lock API. Hidden in Safari (which would shift\n * layout with the native pointer-lock notification) and for touch input.\n *\n * @see https://base-ui.com/react/components/number-field\n */\n@Directive({\n selector: '[rdxNumberFieldScrubAreaCursor]',\n exportAs: 'rdxNumberFieldScrubAreaCursor',\n hostDirectives: [RdxPortal],\n host: {\n role: 'presentation',\n '[style.position]': '\"fixed\"',\n '[style.top.px]': '0',\n '[style.left.px]': '0',\n '[style.pointer-events]': '\"none\"',\n '[style.opacity]': 'shouldRender() ? \"1\" : \"0\"'\n }\n})\nexport class RdxNumberFieldScrubAreaCursor {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly scrubContext = injectNumberFieldScrubAreaContext()!;\n\n protected readonly shouldRender = computed(\n () =>\n this.scrubContext.isScrubbing() &&\n !isWebKitBrowser() &&\n !this.scrubContext.isTouchInput() &&\n !this.scrubContext.isPointerLockDenied()\n );\n\n constructor() {\n this.scrubContext.registerCursor(this.elementRef.nativeElement);\n inject(DestroyRef).onDestroy(() => this.scrubContext.registerCursor(null));\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxNumberFieldDecrement } from './src/number-field-decrement';\nimport { RdxNumberFieldGroup } from './src/number-field-group';\nimport { RdxNumberFieldHiddenInput } from './src/number-field-hidden-input';\nimport { RdxNumberFieldIncrement } from './src/number-field-increment';\nimport { RdxNumberFieldInput } from './src/number-field-input';\nimport { RdxNumberFieldRoot } from './src/number-field-root';\nimport { RdxNumberFieldScrubArea } from './src/number-field-scrub-area';\nimport { RdxNumberFieldScrubAreaCursor } from './src/number-field-scrub-area-cursor';\n\nexport * from './src/number-field-button';\nexport * from './src/number-field-context';\nexport * from './src/number-field-decrement';\nexport * from './src/number-field-group';\nexport * from './src/number-field-hidden-input';\nexport * from './src/number-field-increment';\nexport * from './src/number-field-input';\nexport * from './src/number-field-root';\nexport * from './src/number-field-scrub-area';\nexport * from './src/number-field-scrub-area-context';\nexport * from './src/number-field-scrub-area-cursor';\nexport * from './src/number-field.utils';\nexport * from './src/types';\n\nconst _imports = [\n RdxNumberFieldRoot,\n RdxNumberFieldGroup,\n RdxNumberFieldInput,\n RdxNumberFieldHiddenInput,\n RdxNumberFieldIncrement,\n RdxNumberFieldDecrement,\n RdxNumberFieldScrubArea,\n RdxNumberFieldScrubAreaCursor\n];\n\n@NgModule({\n imports: [..._imports],\n exports: [..._imports]\n})\nexport class RdxNumberFieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["isWebKitBrowser","i1"],"mappings":"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"}
|