@ngstarter-ui/components 21.0.23 → 21.0.25

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.
Files changed (107) hide show
  1. package/ai/component-registry.json +14 -6
  2. package/fesm2022/ngstarter-ui-components-avatar.mjs +3 -3
  3. package/fesm2022/ngstarter-ui-components-avatar.mjs.map +1 -1
  4. package/fesm2022/ngstarter-ui-components-badge.mjs +1 -2
  5. package/fesm2022/ngstarter-ui-components-badge.mjs.map +1 -1
  6. package/fesm2022/ngstarter-ui-components-breadcrumbs.mjs +0 -2
  7. package/fesm2022/ngstarter-ui-components-breadcrumbs.mjs.map +1 -1
  8. package/fesm2022/ngstarter-ui-components-button-toggle.mjs +1 -1
  9. package/fesm2022/ngstarter-ui-components-button-toggle.mjs.map +1 -1
  10. package/fesm2022/ngstarter-ui-components-button.mjs +2 -2
  11. package/fesm2022/ngstarter-ui-components-button.mjs.map +1 -1
  12. package/fesm2022/ngstarter-ui-components-calendar.mjs +1 -1
  13. package/fesm2022/ngstarter-ui-components-calendar.mjs.map +1 -1
  14. package/fesm2022/ngstarter-ui-components-card-overlay.mjs +0 -1
  15. package/fesm2022/ngstarter-ui-components-card-overlay.mjs.map +1 -1
  16. package/fesm2022/ngstarter-ui-components-card.mjs +7 -12
  17. package/fesm2022/ngstarter-ui-components-card.mjs.map +1 -1
  18. package/fesm2022/ngstarter-ui-components-carousel.mjs +0 -3
  19. package/fesm2022/ngstarter-ui-components-carousel.mjs.map +1 -1
  20. package/fesm2022/ngstarter-ui-components-chips.mjs +16 -19
  21. package/fesm2022/ngstarter-ui-components-chips.mjs.map +1 -1
  22. package/fesm2022/ngstarter-ui-components-code-highlighter.mjs +4 -1
  23. package/fesm2022/ngstarter-ui-components-code-highlighter.mjs.map +1 -1
  24. package/fesm2022/ngstarter-ui-components-command-bar.mjs +2 -2
  25. package/fesm2022/ngstarter-ui-components-command-bar.mjs.map +1 -1
  26. package/fesm2022/ngstarter-ui-components-comment-editor.mjs +4 -16
  27. package/fesm2022/ngstarter-ui-components-comment-editor.mjs.map +1 -1
  28. package/fesm2022/{ngstarter-ui-components-content-editor-code-block.component-Czb0bvcr.mjs → ngstarter-ui-components-content-editor-code-block.component-CKrOhA7h.mjs} +2 -2
  29. package/fesm2022/{ngstarter-ui-components-content-editor-code-block.component-Czb0bvcr.mjs.map → ngstarter-ui-components-content-editor-code-block.component-CKrOhA7h.mjs.map} +1 -1
  30. package/fesm2022/{ngstarter-ui-components-content-editor-embed-block-c8Pq0Jdq.mjs → ngstarter-ui-components-content-editor-embed-block-zSApBzF3.mjs} +2 -2
  31. package/fesm2022/{ngstarter-ui-components-content-editor-embed-block-c8Pq0Jdq.mjs.map → ngstarter-ui-components-content-editor-embed-block-zSApBzF3.mjs.map} +1 -1
  32. package/fesm2022/{ngstarter-ui-components-content-editor-heading-block.component-CT5g3MLZ.mjs → ngstarter-ui-components-content-editor-heading-block.component-Dv8d0nCy.mjs} +2 -2
  33. package/fesm2022/{ngstarter-ui-components-content-editor-heading-block.component-CT5g3MLZ.mjs.map → ngstarter-ui-components-content-editor-heading-block.component-Dv8d0nCy.mjs.map} +1 -1
  34. package/fesm2022/{ngstarter-ui-components-content-editor-image-block.component-Cp_Yo7zI.mjs → ngstarter-ui-components-content-editor-image-block.component-g-H7a5Z_.mjs} +2 -2
  35. package/fesm2022/{ngstarter-ui-components-content-editor-image-block.component-Cp_Yo7zI.mjs.map → ngstarter-ui-components-content-editor-image-block.component-g-H7a5Z_.mjs.map} +1 -1
  36. package/fesm2022/{ngstarter-ui-components-content-editor-list-block.component-BvineUWy.mjs → ngstarter-ui-components-content-editor-list-block.component-PgqisgxY.mjs} +2 -2
  37. package/fesm2022/{ngstarter-ui-components-content-editor-list-block.component-BvineUWy.mjs.map → ngstarter-ui-components-content-editor-list-block.component-PgqisgxY.mjs.map} +1 -1
  38. package/fesm2022/{ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-4_TqxgpH.mjs → ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-BuMm25ea.mjs} +12 -13
  39. package/fesm2022/ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-BuMm25ea.mjs.map +1 -0
  40. package/fesm2022/{ngstarter-ui-components-content-editor-paragraph-block.component-sH44U1I8.mjs → ngstarter-ui-components-content-editor-paragraph-block.component-DS_6CzuA.mjs} +2 -2
  41. package/fesm2022/{ngstarter-ui-components-content-editor-paragraph-block.component-sH44U1I8.mjs.map → ngstarter-ui-components-content-editor-paragraph-block.component-DS_6CzuA.mjs.map} +1 -1
  42. package/fesm2022/{ngstarter-ui-components-content-editor-quote-block.component-CA3KoZ-u.mjs → ngstarter-ui-components-content-editor-quote-block.component-Df92Nqvp.mjs} +2 -2
  43. package/fesm2022/{ngstarter-ui-components-content-editor-quote-block.component-CA3KoZ-u.mjs.map → ngstarter-ui-components-content-editor-quote-block.component-Df92Nqvp.mjs.map} +1 -1
  44. package/fesm2022/{ngstarter-ui-components-content-editor-table-block.component-GTZiYUjU.mjs → ngstarter-ui-components-content-editor-table-block.component-D4rdPkGz.mjs} +2 -2
  45. package/fesm2022/{ngstarter-ui-components-content-editor-table-block.component-GTZiYUjU.mjs.map → ngstarter-ui-components-content-editor-table-block.component-D4rdPkGz.mjs.map} +1 -1
  46. package/fesm2022/{ngstarter-ui-components-content-editor-video-block.component-CzMZ1s6C.mjs → ngstarter-ui-components-content-editor-video-block.component-DqS9Lhp_.mjs} +2 -2
  47. package/fesm2022/{ngstarter-ui-components-content-editor-video-block.component-CzMZ1s6C.mjs.map → ngstarter-ui-components-content-editor-video-block.component-DqS9Lhp_.mjs.map} +1 -1
  48. package/fesm2022/ngstarter-ui-components-content-editor.mjs +1 -1
  49. package/fesm2022/ngstarter-ui-components-core.mjs +0 -9
  50. package/fesm2022/ngstarter-ui-components-core.mjs.map +1 -1
  51. package/fesm2022/ngstarter-ui-components-country-select.mjs +11 -11
  52. package/fesm2022/ngstarter-ui-components-country-select.mjs.map +1 -1
  53. package/fesm2022/ngstarter-ui-components-data-view.mjs +0 -3
  54. package/fesm2022/ngstarter-ui-components-data-view.mjs.map +1 -1
  55. package/fesm2022/ngstarter-ui-components-datepicker.mjs +27 -23
  56. package/fesm2022/ngstarter-ui-components-datepicker.mjs.map +1 -1
  57. package/fesm2022/ngstarter-ui-components-dialog.mjs +0 -1
  58. package/fesm2022/ngstarter-ui-components-dialog.mjs.map +1 -1
  59. package/fesm2022/ngstarter-ui-components-digit-roller.mjs +4 -4
  60. package/fesm2022/ngstarter-ui-components-digit-roller.mjs.map +1 -1
  61. package/fesm2022/ngstarter-ui-components-drawer.mjs +15 -7
  62. package/fesm2022/ngstarter-ui-components-drawer.mjs.map +1 -1
  63. package/fesm2022/ngstarter-ui-components-empty-state.mjs +6 -6
  64. package/fesm2022/ngstarter-ui-components-empty-state.mjs.map +1 -1
  65. package/fesm2022/ngstarter-ui-components-expansion.mjs +6 -6
  66. package/fesm2022/ngstarter-ui-components-expansion.mjs.map +1 -1
  67. package/fesm2022/ngstarter-ui-components-filter-builder.mjs +0 -3
  68. package/fesm2022/ngstarter-ui-components-filter-builder.mjs.map +1 -1
  69. package/fesm2022/ngstarter-ui-components-form-field.mjs +4 -4
  70. package/fesm2022/ngstarter-ui-components-form-field.mjs.map +1 -1
  71. package/fesm2022/{ngstarter-ui-components-form-renderer-autocomplete-many-field-BLhfO1zC.mjs → ngstarter-ui-components-form-renderer-autocomplete-many-field-CGQ3pJaG.mjs} +2 -2
  72. package/fesm2022/{ngstarter-ui-components-form-renderer-autocomplete-many-field-BLhfO1zC.mjs.map → ngstarter-ui-components-form-renderer-autocomplete-many-field-CGQ3pJaG.mjs.map} +1 -1
  73. package/fesm2022/{ngstarter-ui-components-form-renderer-datepicker-field-DRSVe0gK.mjs → ngstarter-ui-components-form-renderer-datepicker-field-Cf3jfPv7.mjs} +2 -2
  74. package/fesm2022/{ngstarter-ui-components-form-renderer-datepicker-field-DRSVe0gK.mjs.map → ngstarter-ui-components-form-renderer-datepicker-field-Cf3jfPv7.mjs.map} +1 -1
  75. package/fesm2022/{ngstarter-ui-components-form-renderer-input-field-DpGLKZjz.mjs → ngstarter-ui-components-form-renderer-input-field-tZHU8-_L.mjs} +2 -2
  76. package/fesm2022/{ngstarter-ui-components-form-renderer-input-field-DpGLKZjz.mjs.map → ngstarter-ui-components-form-renderer-input-field-tZHU8-_L.mjs.map} +1 -1
  77. package/fesm2022/{ngstarter-ui-components-form-renderer-radio-group-field-DUCSU3iT.mjs → ngstarter-ui-components-form-renderer-radio-group-field-lc1V-NeL.mjs} +2 -2
  78. package/fesm2022/{ngstarter-ui-components-form-renderer-radio-group-field-DUCSU3iT.mjs.map → ngstarter-ui-components-form-renderer-radio-group-field-lc1V-NeL.mjs.map} +1 -1
  79. package/fesm2022/{ngstarter-ui-components-form-renderer-select-field-CCbpYyZo.mjs → ngstarter-ui-components-form-renderer-select-field-DyBidcIU.mjs} +2 -2
  80. package/fesm2022/{ngstarter-ui-components-form-renderer-select-field-CCbpYyZo.mjs.map → ngstarter-ui-components-form-renderer-select-field-DyBidcIU.mjs.map} +1 -1
  81. package/fesm2022/{ngstarter-ui-components-form-renderer-textarea-field-D89GlMDO.mjs → ngstarter-ui-components-form-renderer-textarea-field-DxbPsw3z.mjs} +2 -2
  82. package/fesm2022/{ngstarter-ui-components-form-renderer-textarea-field-D89GlMDO.mjs.map → ngstarter-ui-components-form-renderer-textarea-field-DxbPsw3z.mjs.map} +1 -1
  83. package/fesm2022/{ngstarter-ui-components-form-renderer-timezone-field-C9wz7zPg.mjs → ngstarter-ui-components-form-renderer-timezone-field-DAWrM-jS.mjs} +2 -2
  84. package/fesm2022/{ngstarter-ui-components-form-renderer-timezone-field-C9wz7zPg.mjs.map → ngstarter-ui-components-form-renderer-timezone-field-DAWrM-jS.mjs.map} +1 -1
  85. package/fesm2022/ngstarter-ui-components-form-renderer.mjs +9 -9
  86. package/fesm2022/ngstarter-ui-components-form-renderer.mjs.map +1 -1
  87. package/fesm2022/ngstarter-ui-components-guided-tour.mjs +4 -5
  88. package/fesm2022/ngstarter-ui-components-guided-tour.mjs.map +1 -1
  89. package/fesm2022/ngstarter-ui-components-headless-stepper.mjs +2 -2
  90. package/fesm2022/ngstarter-ui-components-headless-stepper.mjs.map +1 -1
  91. package/fesm2022/ngstarter-ui-components-icon.mjs +1 -1
  92. package/fesm2022/ngstarter-ui-components-icon.mjs.map +1 -1
  93. package/fesm2022/ngstarter-ui-components-image-designer.mjs +1 -1
  94. package/fesm2022/ngstarter-ui-components-image-designer.mjs.map +1 -1
  95. package/fesm2022/ngstarter-ui-components-marquee.mjs +78 -8
  96. package/fesm2022/ngstarter-ui-components-marquee.mjs.map +1 -1
  97. package/fesm2022/ngstarter-ui-components-notifications.mjs +4 -5
  98. package/fesm2022/ngstarter-ui-components-notifications.mjs.map +1 -1
  99. package/package.json +1 -1
  100. package/types/ngstarter-ui-components-card.d.ts +1 -1
  101. package/types/ngstarter-ui-components-chips.d.ts +3 -3
  102. package/types/ngstarter-ui-components-datepicker.d.ts +6 -6
  103. package/types/ngstarter-ui-components-expansion.d.ts +2 -2
  104. package/types/ngstarter-ui-components-form-field.d.ts +2 -2
  105. package/types/ngstarter-ui-components-guided-tour.d.ts +1 -1
  106. package/types/ngstarter-ui-components-marquee.d.ts +19 -11
  107. package/fesm2022/ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-4_TqxgpH.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ngstarter-ui-components-dialog.mjs","sources":["../../../projects/components/dialog/src/dialog-config.ts","../../../projects/components/dialog/src/dialog-ref.ts","../../../projects/components/dialog/src/dialog-container/dialog-container.ts","../../../projects/components/dialog/src/dialog-container/dialog-container.html","../../../projects/components/dialog/src/dialog.service.ts","../../../projects/components/dialog/src/dialog-title/dialog-title.ts","../../../projects/components/dialog/src/dialog-content/dialog-content.ts","../../../projects/components/dialog/src/dialog-actions/dialog-actions.ts","../../../projects/components/dialog/src/dialog-close.ts","../../../projects/components/dialog/ngstarter-ui-components-dialog.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport class DialogConfig<D = any> {\n data?: D | null = null;\n width?: string = '';\n height?: string = '';\n minWidth?: string | number;\n minHeight?: string | number;\n maxWidth?: string | number;\n maxHeight?: string | number;\n hasBackdrop?: boolean = true;\n backdropClass?: string | string[] = 'ngs-dialog-backdrop';\n panelClass?: string | string[] = '';\n disableClose?: boolean = false;\n autoFocus?: boolean | string = 'first-tabbable';\n restoreFocus?: boolean = true;\n ariaDescribedBy?: string | null = null;\n ariaLabelledBy?: string | null = null;\n ariaLabel?: string | null = null;\n role?: 'dialog' | 'alertdialog' = 'dialog';\n closeOnNavigation?: boolean = true;\n}\n\nexport const DIALOG_DATA = new InjectionToken<any>('DialogData');\nexport const DIALOG_DEFAULT_OPTIONS = new InjectionToken<DialogConfig>('DialogConfig');\n","import { Subject, Observable, filter, take } from 'rxjs';\nimport { DialogContainer } from './dialog-container/dialog-container';\n\nexport class DialogRef<T, R = any> {\n private readonly _afterClosed = new Subject<R | undefined>();\n private readonly _afterOpened = new Subject<void>();\n private readonly _backdropClick = new Subject<MouseEvent>();\n private readonly _keydownEvents = new Subject<KeyboardEvent>();\n\n componentInstance: T | null = null;\n disableClose: boolean | undefined;\n\n /** @internal */\n _cdkRef: any;\n\n /** @internal */\n _container: DialogContainer | undefined;\n\n private _isClosing = false;\n\n close(dialogResult?: R): void {\n if (this._isClosing) {\n return;\n }\n\n this._isClosing = true;\n\n if (this._container && this._cdkRef) {\n\n // Start exit animation for the container\n this._container._startExitAnimation();\n\n // Start exit animation for the backdrop\n const overlayRef = this._cdkRef.overlayRef;\n const backdropElement = overlayRef.backdropElement;\n if (backdropElement) {\n // Remove both classes that could be forcing opacity: 1\n backdropElement.classList.remove('ngs-dialog-backdrop-showing');\n backdropElement.classList.remove('cdk-overlay-backdrop-showing');\n }\n\n // Wait for the container animation to finish before destroying the overlay\n this._container._animationStateChanged\n .pipe(\n filter((event: any) => event.phaseName === 'done' && event.toState === 'exit'),\n take(1)\n )\n .subscribe(() => {\n this._finishClose(dialogResult);\n });\n\n // Fallback in case transitionend never fires (e.g. if opacity was already 0 or style didn't apply)\n setTimeout(() => {\n if (this._isClosing && this._cdkRef) {\n this._finishClose(dialogResult);\n }\n }, 250);\n\n return;\n }\n this._finishClose(dialogResult);\n }\n\n private _finishClose(dialogResult?: R): void {\n if (this._cdkRef) {\n const cdkRef = this._cdkRef;\n this._cdkRef = null;\n cdkRef.close(dialogResult);\n }\n this._afterClosed.next(dialogResult);\n this._afterClosed.complete();\n this._afterOpened.complete();\n this._backdropClick.complete();\n this._keydownEvents.complete();\n }\n\n afterClosed(): Observable<R | undefined> {\n return this._afterClosed.asObservable();\n }\n\n afterOpened(): Observable<void> {\n return this._afterOpened.asObservable();\n }\n\n backdropClick(): Observable<MouseEvent> {\n return this._backdropClick.asObservable();\n }\n\n keydownEvents(): Observable<KeyboardEvent> {\n return this._keydownEvents.asObservable();\n }\n\n __fireAfterOpened(): void {\n this._afterOpened.next();\n }\n\n __fireBackdropClick(event: MouseEvent): void {\n this._backdropClick.next(event);\n }\n\n __fireKeydownEvent(event: KeyboardEvent): void {\n this._keydownEvents.next(event);\n }\n}\n","import { ChangeDetectorRef, Component, EventEmitter, inject, viewChild, ElementRef, OnInit } from '@angular/core';\nimport { CdkDialogContainer, DialogModule } from '@angular/cdk/dialog';\nimport { CdkPortalOutlet } from '@angular/cdk/portal';\n\n@Component({\n selector: 'ngs-dialog-container',\n imports: [DialogModule],\n templateUrl: './dialog-container.html',\n styleUrls: ['./dialog-container.scss'],\n host: {\n 'class': 'ngs-dialog-container',\n '[class.ngs-dialog-container-enter]': '_animationState === \"enter\"',\n '[class.ngs-dialog-container-exit]': '_animationState === \"exit\"',\n '(transitionend)': '_onTransitionEnd($event)',\n },\n})\nexport class DialogContainer extends CdkDialogContainer implements OnInit {\n private readonly _cdr = inject(ChangeDetectorRef);\n\n override readonly _portalOutlet = viewChild(CdkPortalOutlet) as any;\n\n /** State of the dialog animation. */\n _animationState: 'void' | 'enter' | 'exit' = 'void';\n\n /** Emits when an animation state changes. */\n _animationStateChanged = new EventEmitter<any>();\n\n ngOnInit() {\n const config = this._config;\n if (config) {\n const element = (this as any)._elementRef.nativeElement;\n\n if (config.maxWidth) {\n element.style.setProperty('--ngs-dialog-container-max-width', this._formatValue(config.maxWidth));\n }\n\n if (config.minWidth) {\n element.style.setProperty('--ngs-dialog-container-min-width', this._formatValue(config.minWidth));\n }\n\n if (config.width) {\n element.style.setProperty('--ngs-dialog-container-max-width', 'none');\n }\n }\n }\n\n private _formatValue(value: string | number): string {\n return typeof value === 'number' ? `${value}px` : value;\n }\n\n _onTransitionEnd(event: TransitionEvent) {\n if (event.propertyName === 'opacity' && event.target === event.currentTarget) {\n this._animationStateChanged.emit({\n fromState: this._animationState === 'enter' ? 'void' : 'enter',\n toState: this._animationState,\n totalTime: 150,\n phaseName: 'done',\n } as any);\n }\n }\n\n /** Starts the dialog enter animation. */\n _startEnterAnimation(): void {\n this._animationState = 'enter';\n this._cdr.markForCheck();\n }\n\n /** Starts the dialog exit animation. */\n _startExitAnimation(): void {\n this._animationState = 'exit';\n this._cdr.markForCheck();\n }\n}\n","<ng-template cdkPortalOutlet />\n","import { Injectable, Injector, Type, TemplateRef, inject, StaticProvider } from '@angular/core';\nimport { Dialog as CdkDialog, DialogConfig as CdkDialogConfig, DialogRef as CdkDialogRef } from '@angular/cdk/dialog';\nimport { filter, take } from 'rxjs/operators';\nimport { DialogConfig, DIALOG_DATA, DIALOG_DEFAULT_OPTIONS } from './dialog-config';\nimport { DialogRef } from './dialog-ref';\nimport { DialogContainer } from './dialog-container/dialog-container';\nimport { ComponentType } from '@angular/cdk/portal';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Dialog {\n private readonly _cdkDialog = inject(CdkDialog);\n private readonly _injector = inject(Injector);\n private readonly _defaultOptions = inject(DIALOG_DEFAULT_OPTIONS, { optional: true });\n\n open<T, D = any, R = any>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: DialogConfig<D>\n ): DialogRef<T, R> {\n const dialogRef = new DialogRef<T, R>();\n const mergedConfig = { ...new DialogConfig(), ...this._defaultOptions, ...config };\n\n // Set default maxWidth if not specified and no width is set\n if (!mergedConfig.maxWidth && !mergedConfig.width) {\n mergedConfig.maxWidth = 560;\n }\n\n // Set default minWidth if not specified\n if (!mergedConfig.minWidth) {\n mergedConfig.minWidth = 280;\n }\n\n let container: DialogContainer | undefined;\n const cdkConfig: CdkDialogConfig<D, any, DialogContainer> = {\n ...mergedConfig,\n container: DialogContainer,\n panelClass: this._buildPanelClass(mergedConfig?.panelClass),\n backdropClass: this._buildBackdropClass(mergedConfig?.backdropClass),\n providers: (ref: any, config: any, _container: DialogContainer) => {\n container = _container;\n dialogRef._container = _container;\n return [\n { provide: DialogRef, useValue: dialogRef },\n { provide: DIALOG_DATA, useValue: config?.data }\n ];\n }\n };\n\n const cdkRef = this._cdkDialog.open(componentOrTemplateRef, cdkConfig as any);\n\n dialogRef.disableClose = mergedConfig?.disableClose;\n dialogRef._cdkRef = cdkRef;\n\n if (container) {\n container._animationStateChanged\n .pipe(\n filter((event: any) => event.phaseName === 'done' && event.toState === 'enter'),\n take(1)\n )\n .subscribe(() => {\n dialogRef.__fireAfterOpened();\n });\n\n // Use double rAF to ensure the browser has rendered the initial state (opacity: 0)\n // before we trigger the transition to opacity: 1.\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (container) {\n container._startEnterAnimation();\n }\n\n const overlayRef = cdkRef.overlayRef;\n if (overlayRef.backdropElement) {\n overlayRef.backdropElement.classList.add('ngs-dialog-backdrop-showing');\n }\n });\n });\n }\n\n cdkRef.closed.subscribe(result => {\n if (dialogRef._cdkRef) {\n dialogRef._cdkRef = null;\n dialogRef.close(result as R);\n }\n });\n\n cdkRef.backdropClick.subscribe(event => {\n dialogRef.__fireBackdropClick(event);\n if (!dialogRef.disableClose) {\n dialogRef.close();\n }\n });\n\n cdkRef.keydownEvents.subscribe(event => {\n dialogRef.__fireKeydownEvent(event);\n if (event.key === 'Escape' && !dialogRef.disableClose) {\n dialogRef.close();\n }\n });\n\n return dialogRef;\n }\n\n close<T, R>(dialogRef: DialogRef<T, R>, result?: R): void {\n dialogRef.close(result);\n }\n\n closeAll(): void {\n this._cdkDialog.closeAll();\n }\n\n private _buildPanelClass(panelClass: string | string[] | undefined): string[] {\n const classes = ['ngs-dialog-panel', 'overflow-hidden', 'flex', 'flex-col'];\n\n if (Array.isArray(panelClass)) {\n classes.push(...panelClass);\n } else if (panelClass) {\n classes.push(panelClass);\n }\n\n return classes;\n }\n\n private _buildBackdropClass(backdropClass: string | string[] | undefined): string[] {\n const classes: string[] = ['ngs-dialog-backdrop'];\n\n if (Array.isArray(backdropClass)) {\n classes.push(...backdropClass);\n } else if (backdropClass) {\n classes.push(backdropClass);\n }\n\n return classes;\n }\n}\n","import { Component, input, OnInit, inject } from '@angular/core';\nimport { DialogRef } from '../dialog-ref';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ngs-dialog-title, [ngs-dialog-title], [ngsDialogTitle]',\n exportAs: 'ngsDialogTitle',\n template: '<ng-content/>',\n styleUrl: './dialog-title.scss',\n host: {\n 'class': 'ngs-dialog-title',\n '[id]': 'id()',\n },\n})\nexport class DialogTitle implements OnInit {\n private _dialogRef = inject(DialogRef, { optional: true });\n\n id = input<string>(`ngs-dialog-title-${nextUniqueId++}`);\n\n ngOnInit() {\n if (this._dialogRef && !this._dialogRef.disableClose) {\n // Logic for ARIA if needed\n }\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-dialog-content,[ngs-dialog-content],[ngsDialogContent]',\n styleUrl: './dialog-content.scss',\n template: '<ng-content/>',\n host: {\n 'class': 'ngs-dialog-content'\n }\n})\nexport class DialogContent {}\n","import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'ngs-dialog-actions, [ngs-dialog-actions], [ngsDialogActions]',\n styleUrl: './dialog-actions.scss',\n template: '<ng-content />',\n host: {\n 'class': 'ngs-dialog-actions',\n '[class.ngs-dialog-actions-align-center]': 'align() === \"center\"',\n '[class.ngs-dialog-actions-align-end]': 'align() === \"end\"',\n }\n})\nexport class DialogActions {\n align = input<'start' | 'center' | 'end'>('end');\n}\n","import { Directive, input, inject } from '@angular/core';\nimport { DialogRef } from './dialog-ref';\nimport { Dialog } from './dialog.service';\n\n@Directive({\n selector: '[ngs-dialog-close], [ngsDialogClose]',\n exportAs: 'ngsDialogClose',\n standalone: true,\n host: {\n '[attr.aria-label]': 'ariaLabel() || null',\n '[attr.type]': 'type()',\n '(click)': '_onClick()',\n }\n})\nexport class DialogClose {\n dialogResult = input<any>(undefined, {\n alias: 'ngs-dialog-close'\n });\n _dialogResult = input<any>(undefined, {\n alias: 'ngsDialogClose'\n });\n ariaLabel = input<string | null>(null);\n type = input<'submit' | 'button' | 'reset'>('button');\n\n private _dialogRef = inject(DialogRef, { optional: true });\n private _dialog = inject(Dialog);\n\n protected _onClick() {\n if (this._dialogRef) {\n this._dialog.close(this._dialogRef, this.dialogResult() || this._dialogResult());\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["CdkDialog","filter","take"],"mappings":"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"}
1
+ {"version":3,"file":"ngstarter-ui-components-dialog.mjs","sources":["../../../projects/components/dialog/src/dialog-config.ts","../../../projects/components/dialog/src/dialog-ref.ts","../../../projects/components/dialog/src/dialog-container/dialog-container.ts","../../../projects/components/dialog/src/dialog-container/dialog-container.html","../../../projects/components/dialog/src/dialog.service.ts","../../../projects/components/dialog/src/dialog-title/dialog-title.ts","../../../projects/components/dialog/src/dialog-content/dialog-content.ts","../../../projects/components/dialog/src/dialog-actions/dialog-actions.ts","../../../projects/components/dialog/src/dialog-close.ts","../../../projects/components/dialog/ngstarter-ui-components-dialog.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport class DialogConfig<D = any> {\n data?: D | null = null;\n width?: string = '';\n height?: string = '';\n minWidth?: string | number;\n minHeight?: string | number;\n maxWidth?: string | number;\n maxHeight?: string | number;\n hasBackdrop?: boolean = true;\n backdropClass?: string | string[] = 'ngs-dialog-backdrop';\n panelClass?: string | string[] = '';\n disableClose?: boolean = false;\n autoFocus?: boolean | string = 'first-tabbable';\n restoreFocus?: boolean = true;\n ariaDescribedBy?: string | null = null;\n ariaLabelledBy?: string | null = null;\n ariaLabel?: string | null = null;\n role?: 'dialog' | 'alertdialog' = 'dialog';\n closeOnNavigation?: boolean = true;\n}\n\nexport const DIALOG_DATA = new InjectionToken<any>('DialogData');\nexport const DIALOG_DEFAULT_OPTIONS = new InjectionToken<DialogConfig>('DialogConfig');\n","import { Subject, Observable, filter, take } from 'rxjs';\nimport { DialogContainer } from './dialog-container/dialog-container';\n\nexport class DialogRef<T, R = any> {\n private readonly _afterClosed = new Subject<R | undefined>();\n private readonly _afterOpened = new Subject<void>();\n private readonly _backdropClick = new Subject<MouseEvent>();\n private readonly _keydownEvents = new Subject<KeyboardEvent>();\n\n componentInstance: T | null = null;\n disableClose: boolean | undefined;\n\n /** @internal */\n _cdkRef: any;\n\n /** @internal */\n _container: DialogContainer | undefined;\n\n private _isClosing = false;\n\n close(dialogResult?: R): void {\n if (this._isClosing) {\n return;\n }\n\n this._isClosing = true;\n\n if (this._container && this._cdkRef) {\n\n // Start exit animation for the container\n this._container._startExitAnimation();\n\n // Start exit animation for the backdrop\n const overlayRef = this._cdkRef.overlayRef;\n const backdropElement = overlayRef.backdropElement;\n if (backdropElement) {\n // Remove both classes that could be forcing opacity: 1\n backdropElement.classList.remove('ngs-dialog-backdrop-showing');\n backdropElement.classList.remove('cdk-overlay-backdrop-showing');\n }\n\n // Wait for the container animation to finish before destroying the overlay\n this._container._animationStateChanged\n .pipe(\n filter((event: any) => event.phaseName === 'done' && event.toState === 'exit'),\n take(1)\n )\n .subscribe(() => {\n this._finishClose(dialogResult);\n });\n\n // Fallback in case transitionend never fires (e.g. if opacity was already 0 or style didn't apply)\n setTimeout(() => {\n if (this._isClosing && this._cdkRef) {\n this._finishClose(dialogResult);\n }\n }, 250);\n\n return;\n }\n this._finishClose(dialogResult);\n }\n\n private _finishClose(dialogResult?: R): void {\n if (this._cdkRef) {\n const cdkRef = this._cdkRef;\n this._cdkRef = null;\n cdkRef.close(dialogResult);\n }\n this._afterClosed.next(dialogResult);\n this._afterClosed.complete();\n this._afterOpened.complete();\n this._backdropClick.complete();\n this._keydownEvents.complete();\n }\n\n afterClosed(): Observable<R | undefined> {\n return this._afterClosed.asObservable();\n }\n\n afterOpened(): Observable<void> {\n return this._afterOpened.asObservable();\n }\n\n backdropClick(): Observable<MouseEvent> {\n return this._backdropClick.asObservable();\n }\n\n keydownEvents(): Observable<KeyboardEvent> {\n return this._keydownEvents.asObservable();\n }\n\n __fireAfterOpened(): void {\n this._afterOpened.next();\n }\n\n __fireBackdropClick(event: MouseEvent): void {\n this._backdropClick.next(event);\n }\n\n __fireKeydownEvent(event: KeyboardEvent): void {\n this._keydownEvents.next(event);\n }\n}\n","import { ChangeDetectorRef, Component, EventEmitter, inject, viewChild, ElementRef, OnInit } from '@angular/core';\nimport { CdkDialogContainer, DialogModule } from '@angular/cdk/dialog';\nimport { CdkPortalOutlet } from '@angular/cdk/portal';\n\n@Component({\n selector: 'ngs-dialog-container',\n imports: [DialogModule],\n templateUrl: './dialog-container.html',\n styleUrls: ['./dialog-container.scss'],\n host: {\n 'class': 'ngs-dialog-container',\n '[class.ngs-dialog-container-enter]': '_animationState === \"enter\"',\n '[class.ngs-dialog-container-exit]': '_animationState === \"exit\"',\n '(transitionend)': '_onTransitionEnd($event)',\n },\n})\nexport class DialogContainer extends CdkDialogContainer implements OnInit {\n private readonly _cdr = inject(ChangeDetectorRef);\n\n override readonly _portalOutlet = viewChild(CdkPortalOutlet) as any;\n\n /** State of the dialog animation. */\n _animationState: 'void' | 'enter' | 'exit' = 'void';\n\n /** Emits when an animation state changes. */\n _animationStateChanged = new EventEmitter<any>();\n\n ngOnInit() {\n const config = this._config;\n if (config) {\n const element = (this as any)._elementRef.nativeElement;\n\n if (config.maxWidth) {\n element.style.setProperty('--ngs-dialog-container-max-width', this._formatValue(config.maxWidth));\n }\n\n if (config.minWidth) {\n element.style.setProperty('--ngs-dialog-container-min-width', this._formatValue(config.minWidth));\n }\n\n if (config.width) {\n element.style.setProperty('--ngs-dialog-container-max-width', 'none');\n }\n }\n }\n\n private _formatValue(value: string | number): string {\n return typeof value === 'number' ? `${value}px` : value;\n }\n\n _onTransitionEnd(event: TransitionEvent) {\n if (event.propertyName === 'opacity' && event.target === event.currentTarget) {\n this._animationStateChanged.emit({\n fromState: this._animationState === 'enter' ? 'void' : 'enter',\n toState: this._animationState,\n totalTime: 150,\n phaseName: 'done',\n } as any);\n }\n }\n\n /** Starts the dialog enter animation. */\n _startEnterAnimation(): void {\n this._animationState = 'enter';\n this._cdr.markForCheck();\n }\n\n /** Starts the dialog exit animation. */\n _startExitAnimation(): void {\n this._animationState = 'exit';\n this._cdr.markForCheck();\n }\n}\n","<ng-template cdkPortalOutlet />\n","import { Injectable, Injector, Type, TemplateRef, inject, StaticProvider } from '@angular/core';\nimport { Dialog as CdkDialog, DialogConfig as CdkDialogConfig, DialogRef as CdkDialogRef } from '@angular/cdk/dialog';\nimport { filter, take } from 'rxjs/operators';\nimport { DialogConfig, DIALOG_DATA, DIALOG_DEFAULT_OPTIONS } from './dialog-config';\nimport { DialogRef } from './dialog-ref';\nimport { DialogContainer } from './dialog-container/dialog-container';\nimport { ComponentType } from '@angular/cdk/portal';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Dialog {\n private readonly _cdkDialog = inject(CdkDialog);\n private readonly _injector = inject(Injector);\n private readonly _defaultOptions = inject(DIALOG_DEFAULT_OPTIONS, { optional: true });\n\n open<T, D = any, R = any>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: DialogConfig<D>\n ): DialogRef<T, R> {\n const dialogRef = new DialogRef<T, R>();\n const mergedConfig = { ...new DialogConfig(), ...this._defaultOptions, ...config };\n\n // Set default maxWidth if not specified and no width is set\n if (!mergedConfig.maxWidth && !mergedConfig.width) {\n mergedConfig.maxWidth = 560;\n }\n\n // Set default minWidth if not specified\n if (!mergedConfig.minWidth) {\n mergedConfig.minWidth = 280;\n }\n\n let container: DialogContainer | undefined;\n const cdkConfig: CdkDialogConfig<D, any, DialogContainer> = {\n ...mergedConfig,\n container: DialogContainer,\n panelClass: this._buildPanelClass(mergedConfig?.panelClass),\n backdropClass: this._buildBackdropClass(mergedConfig?.backdropClass),\n providers: (ref: any, config: any, _container: DialogContainer) => {\n container = _container;\n dialogRef._container = _container;\n return [\n { provide: DialogRef, useValue: dialogRef },\n { provide: DIALOG_DATA, useValue: config?.data }\n ];\n }\n };\n\n const cdkRef = this._cdkDialog.open(componentOrTemplateRef, cdkConfig as any);\n\n dialogRef.disableClose = mergedConfig?.disableClose;\n dialogRef._cdkRef = cdkRef;\n\n if (container) {\n container._animationStateChanged\n .pipe(\n filter((event: any) => event.phaseName === 'done' && event.toState === 'enter'),\n take(1)\n )\n .subscribe(() => {\n dialogRef.__fireAfterOpened();\n });\n\n // Use double rAF to ensure the browser has rendered the initial state (opacity: 0)\n // before we trigger the transition to opacity: 1.\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (container) {\n container._startEnterAnimation();\n }\n\n const overlayRef = cdkRef.overlayRef;\n if (overlayRef.backdropElement) {\n overlayRef.backdropElement.classList.add('ngs-dialog-backdrop-showing');\n }\n });\n });\n }\n\n cdkRef.closed.subscribe(result => {\n if (dialogRef._cdkRef) {\n dialogRef._cdkRef = null;\n dialogRef.close(result as R);\n }\n });\n\n cdkRef.backdropClick.subscribe(event => {\n dialogRef.__fireBackdropClick(event);\n if (!dialogRef.disableClose) {\n dialogRef.close();\n }\n });\n\n cdkRef.keydownEvents.subscribe(event => {\n dialogRef.__fireKeydownEvent(event);\n if (event.key === 'Escape' && !dialogRef.disableClose) {\n dialogRef.close();\n }\n });\n\n return dialogRef;\n }\n\n close<T, R>(dialogRef: DialogRef<T, R>, result?: R): void {\n dialogRef.close(result);\n }\n\n closeAll(): void {\n this._cdkDialog.closeAll();\n }\n\n private _buildPanelClass(panelClass: string | string[] | undefined): string[] {\n const classes = ['ngs-dialog-panel', 'overflow-hidden', 'flex', 'flex-col'];\n\n if (Array.isArray(panelClass)) {\n classes.push(...panelClass);\n } else if (panelClass) {\n classes.push(panelClass);\n }\n\n return classes;\n }\n\n private _buildBackdropClass(backdropClass: string | string[] | undefined): string[] {\n const classes: string[] = ['ngs-dialog-backdrop'];\n\n if (Array.isArray(backdropClass)) {\n classes.push(...backdropClass);\n } else if (backdropClass) {\n classes.push(backdropClass);\n }\n\n return classes;\n }\n}\n","import { Component, input, OnInit, inject } from '@angular/core';\nimport { DialogRef } from '../dialog-ref';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ngs-dialog-title, [ngs-dialog-title], [ngsDialogTitle]',\n exportAs: 'ngsDialogTitle',\n template: '<ng-content/>',\n styleUrl: './dialog-title.scss',\n host: {\n 'class': 'ngs-dialog-title',\n '[id]': 'id()',\n },\n})\nexport class DialogTitle implements OnInit {\n private _dialogRef = inject(DialogRef, { optional: true });\n\n id = input<string>(`ngs-dialog-title-${nextUniqueId++}`);\n\n ngOnInit() {\n if (this._dialogRef && !this._dialogRef.disableClose) {\n // Logic for ARIA if needed\n }\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-dialog-content,[ngs-dialog-content],[ngsDialogContent]',\n styleUrl: './dialog-content.scss',\n template: '<ng-content/>',\n host: {\n 'class': 'ngs-dialog-content'\n }\n})\nexport class DialogContent {}\n","import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'ngs-dialog-actions, [ngs-dialog-actions], [ngsDialogActions]',\n styleUrl: './dialog-actions.scss',\n template: '<ng-content />',\n host: {\n 'class': 'ngs-dialog-actions',\n '[class.ngs-dialog-actions-align-center]': 'align() === \"center\"',\n '[class.ngs-dialog-actions-align-end]': 'align() === \"end\"',\n }\n})\nexport class DialogActions {\n align = input<'start' | 'center' | 'end'>('end');\n}\n","import { Directive, input, inject } from '@angular/core';\nimport { DialogRef } from './dialog-ref';\nimport { Dialog } from './dialog.service';\n\n@Directive({\n selector: '[ngs-dialog-close], [ngsDialogClose]',\n exportAs: 'ngsDialogClose',\n host: {\n '[attr.aria-label]': 'ariaLabel() || null',\n '[attr.type]': 'type()',\n '(click)': '_onClick()',\n }\n})\nexport class DialogClose {\n dialogResult = input<any>(undefined, {\n alias: 'ngs-dialog-close'\n });\n _dialogResult = input<any>(undefined, {\n alias: 'ngsDialogClose'\n });\n ariaLabel = input<string | null>(null);\n type = input<'submit' | 'button' | 'reset'>('button');\n\n private _dialogRef = inject(DialogRef, { optional: true });\n private _dialog = inject(Dialog);\n\n protected _onClick() {\n if (this._dialogRef) {\n this._dialog.close(this._dialogRef, this.dialogResult() || this._dialogResult());\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["CdkDialog","filter","take"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { isPlatformBrowser } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { InjectionToken, input, output, signal, computed, inject, PLATFORM_ID, ElementRef, DestroyRef, effect, untracked, afterEveryRender, ChangeDetectionStrategy, ViewEncapsulation, Component, contentChildren, forwardRef, Directive } from '@angular/core';
3
+ import { InjectionToken, input, output, signal, computed, inject, PLATFORM_ID, ElementRef, DestroyRef, effect, untracked, afterEveryRender, ChangeDetectionStrategy, Component, contentChildren, forwardRef, Directive } from '@angular/core';
4
4
 
5
5
  let staticCapable;
6
6
  let prefersReducedMotion;
@@ -677,14 +677,14 @@ class DigitRoller {
677
677
  return ghost;
678
678
  }
679
679
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: DigitRoller, deps: [], target: i0.ɵɵFactoryTarget.Component });
680
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: DigitRoller, isStandalone: true, selector: "ngs-digit-roller", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, locales: { classPropertyName: "locales", publicName: "locales", isSignal: true, isRequired: false, transformFunction: null }, prefix: { classPropertyName: "prefix", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, suffix: { classPropertyName: "suffix", publicName: "suffix", isSignal: true, isRequired: false, transformFunction: null }, animated: { classPropertyName: "animated", publicName: "animated", isSignal: true, isRequired: false, transformFunction: null }, duration: { classPropertyName: "duration", publicName: "duration", isSignal: true, isRequired: false, transformFunction: null }, opacityDuration: { classPropertyName: "opacityDuration", publicName: "opacityDuration", isSignal: true, isRequired: false, transformFunction: null }, transformTiming: { classPropertyName: "transformTiming", publicName: "transformTiming", isSignal: true, isRequired: false, transformFunction: null }, spinTiming: { classPropertyName: "spinTiming", publicName: "spinTiming", isSignal: true, isRequired: false, transformFunction: null }, opacityTiming: { classPropertyName: "opacityTiming", publicName: "opacityTiming", isSignal: true, isRequired: false, transformFunction: null }, spinEasing: { classPropertyName: "spinEasing", publicName: "spinEasing", isSignal: true, isRequired: false, transformFunction: null }, flipEasing: { classPropertyName: "flipEasing", publicName: "flipEasing", isSignal: true, isRequired: false, transformFunction: null }, trend: { classPropertyName: "trend", publicName: "trend", isSignal: true, isRequired: false, transformFunction: null }, continuous: { classPropertyName: "continuous", publicName: "continuous", isSignal: true, isRequired: false, transformFunction: null }, digits: { classPropertyName: "digits", publicName: "digits", isSignal: true, isRequired: false, transformFunction: null }, respectMotionPreference: { classPropertyName: "respectMotionPreference", publicName: "respectMotionPreference", isSignal: true, isRequired: false, transformFunction: null }, stagger: { classPropertyName: "stagger", publicName: "stagger", isSignal: true, isRequired: false, transformFunction: null }, colorOnIncrease: { classPropertyName: "colorOnIncrease", publicName: "colorOnIncrease", isSignal: true, isRequired: false, transformFunction: null }, colorOnDecrease: { classPropertyName: "colorOnDecrease", publicName: "colorOnDecrease", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { animationsStart: "animationsStart", animationsFinish: "animationsFinish" }, host: { properties: { "attr.data-animated": "animated()" }, classAttribute: "ngs-digit-roller" }, exportAs: ["ngsDigitRoller"], ngImport: i0, template: "<span class=\"ngs-digit-roller__number\" aria-hidden=\"true\">\n <span class=\"ngs-digit-roller__number-inner\">\n @if (data().pre.length) {\n <span class=\"ngs-digit-roller__section ngs-digit-roller__section--pre\">\n @for (part of data().pre; track part.key) {\n <span class=\"ngs-digit-roller__literal\" [attr.data-key]=\"part.key\">{{ part.value }}</span>\n }\n </span>\n }\n\n <span class=\"ngs-digit-roller__section ngs-digit-roller__section--integer\">\n @for (part of data().integer; track part.key) {\n @if (part.type === 'integer') {\n <span\n class=\"ngs-digit-roller__digit\"\n [attr.data-key]=\"part.key\"\n [style.--_ngs-digit-roller-current]=\"part.numericValue\"\n [style.--_ngs-digit-roller-len]=\"digitLengthForKey(part.key)\"\n >\n @for (digit of digitGlyphsForKey(part.key); track digit.value) {\n <span\n class=\"ngs-digit-roller__digit-number\"\n [style.--_ngs-digit-roller-n]=\"digit.value\"\n [attr.inert]=\"digit.value !== part.numericValue ? '' : null\"\n >\n {{ digit.glyph }}\n </span>\n }\n </span>\n } @else {\n <span class=\"ngs-digit-roller__separator\" [attr.data-key]=\"part.key\">{{ part.value }}</span>\n }\n }\n </span>\n\n @if (data().fraction.length) {\n <span class=\"ngs-digit-roller__section ngs-digit-roller__section--fraction\">\n @for (part of data().fraction; track part.key) {\n @if (part.type === 'fraction') {\n <span\n class=\"ngs-digit-roller__digit\"\n [attr.data-key]=\"part.key\"\n [style.--_ngs-digit-roller-current]=\"part.numericValue\"\n [style.--_ngs-digit-roller-len]=\"digitLengthForKey(part.key)\"\n >\n @for (digit of digitGlyphsForKey(part.key); track digit.value) {\n <span\n class=\"ngs-digit-roller__digit-number\"\n [style.--_ngs-digit-roller-n]=\"digit.value\"\n [attr.inert]=\"digit.value !== part.numericValue ? '' : null\"\n >\n {{ digit.glyph }}\n </span>\n }\n </span>\n } @else {\n <span class=\"ngs-digit-roller__separator\" [attr.data-key]=\"part.key\">{{ part.value }}</span>\n }\n }\n </span>\n }\n\n @if (data().post.length) {\n <span class=\"ngs-digit-roller__section ngs-digit-roller__section--post\">\n @for (part of data().post; track part.key) {\n <span class=\"ngs-digit-roller__literal\" [attr.data-key]=\"part.key\">{{ part.value }}</span>\n }\n </span>\n }\n </span>\n</span>\n\n<span class=\"ngs-digit-roller__sr-only\">{{ formattedPlainText() }}</span>\n", styles: ["@layer properties;@property --_ngs-digit-roller-d{syntax: \"<number>\"; inherits: true; initial-value: 0;}@property --_ngs-digit-roller-d-opacity{syntax: \"<number>\"; inherits: false; initial-value: 0;}@property --_ngs-digit-roller-d-width{syntax: \"<number>\"; inherits: false; initial-value: 0;}@property --_ngs-digit-roller-dx{syntax: \"<length>\"; inherits: true; initial-value: 0px;}ngs-digit-roller{--ngs-digit-roller-mask-height: .25em;--ngs-digit-roller-mask-width: .5em;--ngs-digit-roller-min-digit-width: .6em;display:inline-block;position:relative;direction:ltr;isolation:isolate;line-height:1;white-space:nowrap}ngs-digit-roller .ngs-digit-roller__number{--_ngs-digit-roller-width: 1;--_ngs-digit-roller-scale-x: calc( 1 + var(--_ngs-digit-roller-d-width) / var(--_ngs-digit-roller-width) );--_ngs-digit-roller-half-mask-height: round( nearest, calc(var(--ngs-digit-roller-mask-height) / 2), 1px );--_ngs-digit-roller-resolved-mask-height: calc(var(--_ngs-digit-roller-half-mask-height) * 2);--_ngs-digit-roller-scaled-mask-width: calc( var(--ngs-digit-roller-mask-width) / var(--_ngs-digit-roller-scale-x) );display:inline-block;line-height:1;font-variant-numeric:tabular-nums;font-feature-settings:\"tnum\";position:relative;transform-origin:left top;transform:translate(var(--_ngs-digit-roller-dx)) scaleX(var(--_ngs-digit-roller-scale-x));margin:0 calc(-1 * var(--ngs-digit-roller-mask-width));-webkit-mask-image:linear-gradient(to right,transparent 0,#000 var(--_ngs-digit-roller-scaled-mask-width),#000 calc(100% - var(--_ngs-digit-roller-scaled-mask-width)),transparent 100%),linear-gradient(to bottom,transparent 0,#000 var(--_ngs-digit-roller-resolved-mask-height),#000 calc(100% - var(--_ngs-digit-roller-resolved-mask-height)),transparent 100%),radial-gradient(at bottom right,#000 0,transparent 71%),radial-gradient(at bottom left,#000 0,transparent 71%),radial-gradient(at top left,#000 0,transparent 71%),radial-gradient(at top right,#000 0,transparent 71%);mask-image:linear-gradient(to right,transparent 0,#000 var(--_ngs-digit-roller-scaled-mask-width),#000 calc(100% - var(--_ngs-digit-roller-scaled-mask-width)),transparent 100%),linear-gradient(to bottom,transparent 0,#000 var(--_ngs-digit-roller-resolved-mask-height),#000 calc(100% - var(--_ngs-digit-roller-resolved-mask-height)),transparent 100%),radial-gradient(at bottom right,#000 0,transparent 71%),radial-gradient(at bottom left,#000 0,transparent 71%),radial-gradient(at top left,#000 0,transparent 71%),radial-gradient(at top right,#000 0,transparent 71%);-webkit-mask-size:100% calc(100% - var(--_ngs-digit-roller-resolved-mask-height) * 2),calc(100% - var(--_ngs-digit-roller-scaled-mask-width) * 2) 100%,var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height),var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height),var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height),var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height);mask-size:100% calc(100% - var(--_ngs-digit-roller-resolved-mask-height) * 2),calc(100% - var(--_ngs-digit-roller-scaled-mask-width) * 2) 100%,var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height),var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height),var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height),var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height);-webkit-mask-position:center,center,top left,top right,bottom right,bottom left;mask-position:center,center,top left,top right,bottom right,bottom left;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}ngs-digit-roller .ngs-digit-roller__number-inner{display:inline-flex;align-items:baseline;padding:var(--_ngs-digit-roller-half-mask-height) var(--ngs-digit-roller-mask-width);transform-origin:left top;transform:scaleX(calc(1 / var(--_ngs-digit-roller-scale-x))) translate(calc(-1 * var(--_ngs-digit-roller-dx)))}ngs-digit-roller .ngs-digit-roller__section{display:inline-flex;align-items:baseline}ngs-digit-roller .ngs-digit-roller__digit{display:inline-block;position:relative;height:calc(1em + var(--_ngs-digit-roller-resolved-mask-height, .25em));clip-path:inset(0 -.2em);vertical-align:top;--_ngs-digit-roller-c: var(--_ngs-digit-roller-current, 0) + var(--_ngs-digit-roller-d);--_ngs-digit-roller-len: 10}ngs-digit-roller .ngs-digit-roller__digit,ngs-digit-roller .ngs-digit-roller__separator,ngs-digit-roller .ngs-digit-roller__literal,ngs-digit-roller .ngs-digit-roller__ghost{opacity:calc(1 + var(--_ngs-digit-roller-d-opacity, 0))}ngs-digit-roller .ngs-digit-roller__digit-number{display:inline-block;height:1em;line-height:1;text-align:center;min-width:var(--ngs-digit-roller-min-digit-width);padding:var(--_ngs-digit-roller-half-mask-height, .125em) 0;box-sizing:content-box;--_ngs-digit-roller-offset-raw: mod( var(--_ngs-digit-roller-len) + var(--_ngs-digit-roller-n) - mod(var(--_ngs-digit-roller-c), var(--_ngs-digit-roller-len)), var(--_ngs-digit-roller-len) );--_ngs-digit-roller-offset: calc( var(--_ngs-digit-roller-offset-raw) - var(--_ngs-digit-roller-len) * round(down, var(--_ngs-digit-roller-offset-raw) / (var(--_ngs-digit-roller-len) / 2), 1) );--_ngs-digit-roller-y: clamp(-100%, var(--_ngs-digit-roller-offset) * 100%, 100%);transform:translateY(var(--_ngs-digit-roller-y))}ngs-digit-roller .ngs-digit-roller__digit-number[inert]{position:absolute;top:0;left:50%;transform:translate(-50%) translateY(var(--_ngs-digit-roller-y))}ngs-digit-roller .ngs-digit-roller__digit:not(.ngs-digit-roller__digit--spinning) .ngs-digit-roller__digit-number[inert]{display:none}ngs-digit-roller .ngs-digit-roller__separator,ngs-digit-roller .ngs-digit-roller__literal{display:inline-block}ngs-digit-roller .ngs-digit-roller__sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}ngs-digit-roller[data-animated=false] .ngs-digit-roller__digit-number,ngs-digit-roller[data-animated=false] .ngs-digit-roller__digit,ngs-digit-roller[data-animated=false] .ngs-digit-roller__separator,ngs-digit-roller[data-animated=false] .ngs-digit-roller__literal{transition:none!important;animation:none!important}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){:root,:host{--_ngs-digit-roller-d: 0;--_ngs-digit-roller-dx: 0px}*,:before,:after,::backdrop{--_ngs-digit-roller-d-opacity: 0;--_ngs-digit-roller-d-width: 0}}}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
680
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: DigitRoller, isStandalone: true, selector: "ngs-digit-roller", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, locales: { classPropertyName: "locales", publicName: "locales", isSignal: true, isRequired: false, transformFunction: null }, prefix: { classPropertyName: "prefix", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, suffix: { classPropertyName: "suffix", publicName: "suffix", isSignal: true, isRequired: false, transformFunction: null }, animated: { classPropertyName: "animated", publicName: "animated", isSignal: true, isRequired: false, transformFunction: null }, duration: { classPropertyName: "duration", publicName: "duration", isSignal: true, isRequired: false, transformFunction: null }, opacityDuration: { classPropertyName: "opacityDuration", publicName: "opacityDuration", isSignal: true, isRequired: false, transformFunction: null }, transformTiming: { classPropertyName: "transformTiming", publicName: "transformTiming", isSignal: true, isRequired: false, transformFunction: null }, spinTiming: { classPropertyName: "spinTiming", publicName: "spinTiming", isSignal: true, isRequired: false, transformFunction: null }, opacityTiming: { classPropertyName: "opacityTiming", publicName: "opacityTiming", isSignal: true, isRequired: false, transformFunction: null }, spinEasing: { classPropertyName: "spinEasing", publicName: "spinEasing", isSignal: true, isRequired: false, transformFunction: null }, flipEasing: { classPropertyName: "flipEasing", publicName: "flipEasing", isSignal: true, isRequired: false, transformFunction: null }, trend: { classPropertyName: "trend", publicName: "trend", isSignal: true, isRequired: false, transformFunction: null }, continuous: { classPropertyName: "continuous", publicName: "continuous", isSignal: true, isRequired: false, transformFunction: null }, digits: { classPropertyName: "digits", publicName: "digits", isSignal: true, isRequired: false, transformFunction: null }, respectMotionPreference: { classPropertyName: "respectMotionPreference", publicName: "respectMotionPreference", isSignal: true, isRequired: false, transformFunction: null }, stagger: { classPropertyName: "stagger", publicName: "stagger", isSignal: true, isRequired: false, transformFunction: null }, colorOnIncrease: { classPropertyName: "colorOnIncrease", publicName: "colorOnIncrease", isSignal: true, isRequired: false, transformFunction: null }, colorOnDecrease: { classPropertyName: "colorOnDecrease", publicName: "colorOnDecrease", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { animationsStart: "animationsStart", animationsFinish: "animationsFinish" }, host: { properties: { "attr.data-animated": "animated()" }, classAttribute: "ngs-digit-roller" }, exportAs: ["ngsDigitRoller"], ngImport: i0, template: "<span class=\"ngs-digit-roller__number\" aria-hidden=\"true\">\n <span class=\"ngs-digit-roller__number-inner\">\n @if (data().pre.length) {\n <span class=\"ngs-digit-roller__section ngs-digit-roller__section--pre\">\n @for (part of data().pre; track part.key) {\n <span class=\"ngs-digit-roller__literal\" [attr.data-key]=\"part.key\">{{ part.value }}</span>\n }\n </span>\n }\n\n <span class=\"ngs-digit-roller__section ngs-digit-roller__section--integer\">\n @for (part of data().integer; track part.key) {\n @if (part.type === 'integer') {\n <span\n class=\"ngs-digit-roller__digit\"\n [attr.data-key]=\"part.key\"\n [style.--_ngs-digit-roller-current]=\"part.numericValue\"\n [style.--_ngs-digit-roller-len]=\"digitLengthForKey(part.key)\"\n >\n @for (digit of digitGlyphsForKey(part.key); track digit.value) {\n <span\n class=\"ngs-digit-roller__digit-number\"\n [style.--_ngs-digit-roller-n]=\"digit.value\"\n [attr.inert]=\"digit.value !== part.numericValue ? '' : null\"\n >\n {{ digit.glyph }}\n </span>\n }\n </span>\n } @else {\n <span class=\"ngs-digit-roller__separator\" [attr.data-key]=\"part.key\">{{ part.value }}</span>\n }\n }\n </span>\n\n @if (data().fraction.length) {\n <span class=\"ngs-digit-roller__section ngs-digit-roller__section--fraction\">\n @for (part of data().fraction; track part.key) {\n @if (part.type === 'fraction') {\n <span\n class=\"ngs-digit-roller__digit\"\n [attr.data-key]=\"part.key\"\n [style.--_ngs-digit-roller-current]=\"part.numericValue\"\n [style.--_ngs-digit-roller-len]=\"digitLengthForKey(part.key)\"\n >\n @for (digit of digitGlyphsForKey(part.key); track digit.value) {\n <span\n class=\"ngs-digit-roller__digit-number\"\n [style.--_ngs-digit-roller-n]=\"digit.value\"\n [attr.inert]=\"digit.value !== part.numericValue ? '' : null\"\n >\n {{ digit.glyph }}\n </span>\n }\n </span>\n } @else {\n <span class=\"ngs-digit-roller__separator\" [attr.data-key]=\"part.key\">{{ part.value }}</span>\n }\n }\n </span>\n }\n\n @if (data().post.length) {\n <span class=\"ngs-digit-roller__section ngs-digit-roller__section--post\">\n @for (part of data().post; track part.key) {\n <span class=\"ngs-digit-roller__literal\" [attr.data-key]=\"part.key\">{{ part.value }}</span>\n }\n </span>\n }\n </span>\n</span>\n\n<span class=\"ngs-digit-roller__sr-only\">{{ formattedPlainText() }}</span>\n", styles: ["@layer properties;@property --_ngs-digit-roller-d{syntax: \"<number>\"; inherits: true; initial-value: 0;}@property --_ngs-digit-roller-d-opacity{syntax: \"<number>\"; inherits: false; initial-value: 0;}@property --_ngs-digit-roller-d-width{syntax: \"<number>\"; inherits: false; initial-value: 0;}@property --_ngs-digit-roller-dx{syntax: \"<length>\"; inherits: true; initial-value: 0px;}:host{--ngs-digit-roller-mask-height: .25em;--ngs-digit-roller-mask-width: .5em;--ngs-digit-roller-min-digit-width: .6em;display:inline-block;position:relative;direction:ltr;isolation:isolate;line-height:1;white-space:nowrap}:host .ngs-digit-roller__number{--_ngs-digit-roller-width: 1;--_ngs-digit-roller-scale-x: calc( 1 + var(--_ngs-digit-roller-d-width) / var(--_ngs-digit-roller-width) );--_ngs-digit-roller-half-mask-height: round( nearest, calc(var(--ngs-digit-roller-mask-height) / 2), 1px );--_ngs-digit-roller-resolved-mask-height: calc(var(--_ngs-digit-roller-half-mask-height) * 2);--_ngs-digit-roller-scaled-mask-width: calc( var(--ngs-digit-roller-mask-width) / var(--_ngs-digit-roller-scale-x) );display:inline-block;line-height:1;font-variant-numeric:tabular-nums;font-feature-settings:\"tnum\";position:relative;transform-origin:left top;transform:translate(var(--_ngs-digit-roller-dx)) scaleX(var(--_ngs-digit-roller-scale-x));margin:0 calc(-1 * var(--ngs-digit-roller-mask-width));-webkit-mask-image:linear-gradient(to right,transparent 0,#000 var(--_ngs-digit-roller-scaled-mask-width),#000 calc(100% - var(--_ngs-digit-roller-scaled-mask-width)),transparent 100%),linear-gradient(to bottom,transparent 0,#000 var(--_ngs-digit-roller-resolved-mask-height),#000 calc(100% - var(--_ngs-digit-roller-resolved-mask-height)),transparent 100%),radial-gradient(at bottom right,#000 0,transparent 71%),radial-gradient(at bottom left,#000 0,transparent 71%),radial-gradient(at top left,#000 0,transparent 71%),radial-gradient(at top right,#000 0,transparent 71%);mask-image:linear-gradient(to right,transparent 0,#000 var(--_ngs-digit-roller-scaled-mask-width),#000 calc(100% - var(--_ngs-digit-roller-scaled-mask-width)),transparent 100%),linear-gradient(to bottom,transparent 0,#000 var(--_ngs-digit-roller-resolved-mask-height),#000 calc(100% - var(--_ngs-digit-roller-resolved-mask-height)),transparent 100%),radial-gradient(at bottom right,#000 0,transparent 71%),radial-gradient(at bottom left,#000 0,transparent 71%),radial-gradient(at top left,#000 0,transparent 71%),radial-gradient(at top right,#000 0,transparent 71%);-webkit-mask-size:100% calc(100% - var(--_ngs-digit-roller-resolved-mask-height) * 2),calc(100% - var(--_ngs-digit-roller-scaled-mask-width) * 2) 100%,var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height),var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height),var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height),var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height);mask-size:100% calc(100% - var(--_ngs-digit-roller-resolved-mask-height) * 2),calc(100% - var(--_ngs-digit-roller-scaled-mask-width) * 2) 100%,var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height),var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height),var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height),var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height);-webkit-mask-position:center,center,top left,top right,bottom right,bottom left;mask-position:center,center,top left,top right,bottom right,bottom left;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}:host .ngs-digit-roller__number-inner{display:inline-flex;align-items:baseline;padding:var(--_ngs-digit-roller-half-mask-height) var(--ngs-digit-roller-mask-width);transform-origin:left top;transform:scaleX(calc(1 / var(--_ngs-digit-roller-scale-x))) translate(calc(-1 * var(--_ngs-digit-roller-dx)))}:host .ngs-digit-roller__section{display:inline-flex;align-items:baseline}:host .ngs-digit-roller__digit{display:inline-block;position:relative;height:calc(1em + var(--_ngs-digit-roller-resolved-mask-height, .25em));clip-path:inset(0 -.2em);vertical-align:top;--_ngs-digit-roller-c: var(--_ngs-digit-roller-current, 0) + var(--_ngs-digit-roller-d);--_ngs-digit-roller-len: 10}:host .ngs-digit-roller__digit,:host .ngs-digit-roller__separator,:host .ngs-digit-roller__literal,:host .ngs-digit-roller__ghost{opacity:calc(1 + var(--_ngs-digit-roller-d-opacity, 0))}:host .ngs-digit-roller__digit-number{display:inline-block;height:1em;line-height:1;text-align:center;min-width:var(--ngs-digit-roller-min-digit-width);padding:var(--_ngs-digit-roller-half-mask-height, .125em) 0;box-sizing:content-box;--_ngs-digit-roller-offset-raw: mod( var(--_ngs-digit-roller-len) + var(--_ngs-digit-roller-n) - mod(var(--_ngs-digit-roller-c), var(--_ngs-digit-roller-len)), var(--_ngs-digit-roller-len) );--_ngs-digit-roller-offset: calc( var(--_ngs-digit-roller-offset-raw) - var(--_ngs-digit-roller-len) * round(down, var(--_ngs-digit-roller-offset-raw) / (var(--_ngs-digit-roller-len) / 2), 1) );--_ngs-digit-roller-y: clamp(-100%, var(--_ngs-digit-roller-offset) * 100%, 100%);transform:translateY(var(--_ngs-digit-roller-y))}:host .ngs-digit-roller__digit-number[inert]{position:absolute;top:0;left:50%;transform:translate(-50%) translateY(var(--_ngs-digit-roller-y))}:host .ngs-digit-roller__digit:not(.ngs-digit-roller__digit--spinning) .ngs-digit-roller__digit-number[inert]{display:none}:host .ngs-digit-roller__separator,:host .ngs-digit-roller__literal{display:inline-block}:host .ngs-digit-roller__sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}:host[data-animated=false] .ngs-digit-roller__digit-number,:host[data-animated=false] .ngs-digit-roller__digit,:host[data-animated=false] .ngs-digit-roller__separator,:host[data-animated=false] .ngs-digit-roller__literal{transition:none!important;animation:none!important}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){:root,:host{--_ngs-digit-roller-d: 0;--_ngs-digit-roller-dx: 0px}*,:before,:after,::backdrop{--_ngs-digit-roller-d-opacity: 0;--_ngs-digit-roller-d-width: 0}}}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
681
681
  }
682
682
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: DigitRoller, decorators: [{
683
683
  type: Component,
684
- args: [{ selector: 'ngs-digit-roller', exportAs: 'ngsDigitRoller', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
684
+ args: [{ selector: 'ngs-digit-roller', exportAs: 'ngsDigitRoller', changeDetection: ChangeDetectionStrategy.OnPush, host: {
685
685
  class: 'ngs-digit-roller',
686
686
  '[attr.data-animated]': 'animated()',
687
- }, template: "<span class=\"ngs-digit-roller__number\" aria-hidden=\"true\">\n <span class=\"ngs-digit-roller__number-inner\">\n @if (data().pre.length) {\n <span class=\"ngs-digit-roller__section ngs-digit-roller__section--pre\">\n @for (part of data().pre; track part.key) {\n <span class=\"ngs-digit-roller__literal\" [attr.data-key]=\"part.key\">{{ part.value }}</span>\n }\n </span>\n }\n\n <span class=\"ngs-digit-roller__section ngs-digit-roller__section--integer\">\n @for (part of data().integer; track part.key) {\n @if (part.type === 'integer') {\n <span\n class=\"ngs-digit-roller__digit\"\n [attr.data-key]=\"part.key\"\n [style.--_ngs-digit-roller-current]=\"part.numericValue\"\n [style.--_ngs-digit-roller-len]=\"digitLengthForKey(part.key)\"\n >\n @for (digit of digitGlyphsForKey(part.key); track digit.value) {\n <span\n class=\"ngs-digit-roller__digit-number\"\n [style.--_ngs-digit-roller-n]=\"digit.value\"\n [attr.inert]=\"digit.value !== part.numericValue ? '' : null\"\n >\n {{ digit.glyph }}\n </span>\n }\n </span>\n } @else {\n <span class=\"ngs-digit-roller__separator\" [attr.data-key]=\"part.key\">{{ part.value }}</span>\n }\n }\n </span>\n\n @if (data().fraction.length) {\n <span class=\"ngs-digit-roller__section ngs-digit-roller__section--fraction\">\n @for (part of data().fraction; track part.key) {\n @if (part.type === 'fraction') {\n <span\n class=\"ngs-digit-roller__digit\"\n [attr.data-key]=\"part.key\"\n [style.--_ngs-digit-roller-current]=\"part.numericValue\"\n [style.--_ngs-digit-roller-len]=\"digitLengthForKey(part.key)\"\n >\n @for (digit of digitGlyphsForKey(part.key); track digit.value) {\n <span\n class=\"ngs-digit-roller__digit-number\"\n [style.--_ngs-digit-roller-n]=\"digit.value\"\n [attr.inert]=\"digit.value !== part.numericValue ? '' : null\"\n >\n {{ digit.glyph }}\n </span>\n }\n </span>\n } @else {\n <span class=\"ngs-digit-roller__separator\" [attr.data-key]=\"part.key\">{{ part.value }}</span>\n }\n }\n </span>\n }\n\n @if (data().post.length) {\n <span class=\"ngs-digit-roller__section ngs-digit-roller__section--post\">\n @for (part of data().post; track part.key) {\n <span class=\"ngs-digit-roller__literal\" [attr.data-key]=\"part.key\">{{ part.value }}</span>\n }\n </span>\n }\n </span>\n</span>\n\n<span class=\"ngs-digit-roller__sr-only\">{{ formattedPlainText() }}</span>\n", styles: ["@layer properties;@property --_ngs-digit-roller-d{syntax: \"<number>\"; inherits: true; initial-value: 0;}@property --_ngs-digit-roller-d-opacity{syntax: \"<number>\"; inherits: false; initial-value: 0;}@property --_ngs-digit-roller-d-width{syntax: \"<number>\"; inherits: false; initial-value: 0;}@property --_ngs-digit-roller-dx{syntax: \"<length>\"; inherits: true; initial-value: 0px;}ngs-digit-roller{--ngs-digit-roller-mask-height: .25em;--ngs-digit-roller-mask-width: .5em;--ngs-digit-roller-min-digit-width: .6em;display:inline-block;position:relative;direction:ltr;isolation:isolate;line-height:1;white-space:nowrap}ngs-digit-roller .ngs-digit-roller__number{--_ngs-digit-roller-width: 1;--_ngs-digit-roller-scale-x: calc( 1 + var(--_ngs-digit-roller-d-width) / var(--_ngs-digit-roller-width) );--_ngs-digit-roller-half-mask-height: round( nearest, calc(var(--ngs-digit-roller-mask-height) / 2), 1px );--_ngs-digit-roller-resolved-mask-height: calc(var(--_ngs-digit-roller-half-mask-height) * 2);--_ngs-digit-roller-scaled-mask-width: calc( var(--ngs-digit-roller-mask-width) / var(--_ngs-digit-roller-scale-x) );display:inline-block;line-height:1;font-variant-numeric:tabular-nums;font-feature-settings:\"tnum\";position:relative;transform-origin:left top;transform:translate(var(--_ngs-digit-roller-dx)) scaleX(var(--_ngs-digit-roller-scale-x));margin:0 calc(-1 * var(--ngs-digit-roller-mask-width));-webkit-mask-image:linear-gradient(to right,transparent 0,#000 var(--_ngs-digit-roller-scaled-mask-width),#000 calc(100% - var(--_ngs-digit-roller-scaled-mask-width)),transparent 100%),linear-gradient(to bottom,transparent 0,#000 var(--_ngs-digit-roller-resolved-mask-height),#000 calc(100% - var(--_ngs-digit-roller-resolved-mask-height)),transparent 100%),radial-gradient(at bottom right,#000 0,transparent 71%),radial-gradient(at bottom left,#000 0,transparent 71%),radial-gradient(at top left,#000 0,transparent 71%),radial-gradient(at top right,#000 0,transparent 71%);mask-image:linear-gradient(to right,transparent 0,#000 var(--_ngs-digit-roller-scaled-mask-width),#000 calc(100% - var(--_ngs-digit-roller-scaled-mask-width)),transparent 100%),linear-gradient(to bottom,transparent 0,#000 var(--_ngs-digit-roller-resolved-mask-height),#000 calc(100% - var(--_ngs-digit-roller-resolved-mask-height)),transparent 100%),radial-gradient(at bottom right,#000 0,transparent 71%),radial-gradient(at bottom left,#000 0,transparent 71%),radial-gradient(at top left,#000 0,transparent 71%),radial-gradient(at top right,#000 0,transparent 71%);-webkit-mask-size:100% calc(100% - var(--_ngs-digit-roller-resolved-mask-height) * 2),calc(100% - var(--_ngs-digit-roller-scaled-mask-width) * 2) 100%,var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height),var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height),var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height),var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height);mask-size:100% calc(100% - var(--_ngs-digit-roller-resolved-mask-height) * 2),calc(100% - var(--_ngs-digit-roller-scaled-mask-width) * 2) 100%,var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height),var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height),var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height),var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height);-webkit-mask-position:center,center,top left,top right,bottom right,bottom left;mask-position:center,center,top left,top right,bottom right,bottom left;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}ngs-digit-roller .ngs-digit-roller__number-inner{display:inline-flex;align-items:baseline;padding:var(--_ngs-digit-roller-half-mask-height) var(--ngs-digit-roller-mask-width);transform-origin:left top;transform:scaleX(calc(1 / var(--_ngs-digit-roller-scale-x))) translate(calc(-1 * var(--_ngs-digit-roller-dx)))}ngs-digit-roller .ngs-digit-roller__section{display:inline-flex;align-items:baseline}ngs-digit-roller .ngs-digit-roller__digit{display:inline-block;position:relative;height:calc(1em + var(--_ngs-digit-roller-resolved-mask-height, .25em));clip-path:inset(0 -.2em);vertical-align:top;--_ngs-digit-roller-c: var(--_ngs-digit-roller-current, 0) + var(--_ngs-digit-roller-d);--_ngs-digit-roller-len: 10}ngs-digit-roller .ngs-digit-roller__digit,ngs-digit-roller .ngs-digit-roller__separator,ngs-digit-roller .ngs-digit-roller__literal,ngs-digit-roller .ngs-digit-roller__ghost{opacity:calc(1 + var(--_ngs-digit-roller-d-opacity, 0))}ngs-digit-roller .ngs-digit-roller__digit-number{display:inline-block;height:1em;line-height:1;text-align:center;min-width:var(--ngs-digit-roller-min-digit-width);padding:var(--_ngs-digit-roller-half-mask-height, .125em) 0;box-sizing:content-box;--_ngs-digit-roller-offset-raw: mod( var(--_ngs-digit-roller-len) + var(--_ngs-digit-roller-n) - mod(var(--_ngs-digit-roller-c), var(--_ngs-digit-roller-len)), var(--_ngs-digit-roller-len) );--_ngs-digit-roller-offset: calc( var(--_ngs-digit-roller-offset-raw) - var(--_ngs-digit-roller-len) * round(down, var(--_ngs-digit-roller-offset-raw) / (var(--_ngs-digit-roller-len) / 2), 1) );--_ngs-digit-roller-y: clamp(-100%, var(--_ngs-digit-roller-offset) * 100%, 100%);transform:translateY(var(--_ngs-digit-roller-y))}ngs-digit-roller .ngs-digit-roller__digit-number[inert]{position:absolute;top:0;left:50%;transform:translate(-50%) translateY(var(--_ngs-digit-roller-y))}ngs-digit-roller .ngs-digit-roller__digit:not(.ngs-digit-roller__digit--spinning) .ngs-digit-roller__digit-number[inert]{display:none}ngs-digit-roller .ngs-digit-roller__separator,ngs-digit-roller .ngs-digit-roller__literal{display:inline-block}ngs-digit-roller .ngs-digit-roller__sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}ngs-digit-roller[data-animated=false] .ngs-digit-roller__digit-number,ngs-digit-roller[data-animated=false] .ngs-digit-roller__digit,ngs-digit-roller[data-animated=false] .ngs-digit-roller__separator,ngs-digit-roller[data-animated=false] .ngs-digit-roller__literal{transition:none!important;animation:none!important}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){:root,:host{--_ngs-digit-roller-d: 0;--_ngs-digit-roller-dx: 0px}*,:before,:after,::backdrop{--_ngs-digit-roller-d-opacity: 0;--_ngs-digit-roller-d-width: 0}}}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
687
+ }, template: "<span class=\"ngs-digit-roller__number\" aria-hidden=\"true\">\n <span class=\"ngs-digit-roller__number-inner\">\n @if (data().pre.length) {\n <span class=\"ngs-digit-roller__section ngs-digit-roller__section--pre\">\n @for (part of data().pre; track part.key) {\n <span class=\"ngs-digit-roller__literal\" [attr.data-key]=\"part.key\">{{ part.value }}</span>\n }\n </span>\n }\n\n <span class=\"ngs-digit-roller__section ngs-digit-roller__section--integer\">\n @for (part of data().integer; track part.key) {\n @if (part.type === 'integer') {\n <span\n class=\"ngs-digit-roller__digit\"\n [attr.data-key]=\"part.key\"\n [style.--_ngs-digit-roller-current]=\"part.numericValue\"\n [style.--_ngs-digit-roller-len]=\"digitLengthForKey(part.key)\"\n >\n @for (digit of digitGlyphsForKey(part.key); track digit.value) {\n <span\n class=\"ngs-digit-roller__digit-number\"\n [style.--_ngs-digit-roller-n]=\"digit.value\"\n [attr.inert]=\"digit.value !== part.numericValue ? '' : null\"\n >\n {{ digit.glyph }}\n </span>\n }\n </span>\n } @else {\n <span class=\"ngs-digit-roller__separator\" [attr.data-key]=\"part.key\">{{ part.value }}</span>\n }\n }\n </span>\n\n @if (data().fraction.length) {\n <span class=\"ngs-digit-roller__section ngs-digit-roller__section--fraction\">\n @for (part of data().fraction; track part.key) {\n @if (part.type === 'fraction') {\n <span\n class=\"ngs-digit-roller__digit\"\n [attr.data-key]=\"part.key\"\n [style.--_ngs-digit-roller-current]=\"part.numericValue\"\n [style.--_ngs-digit-roller-len]=\"digitLengthForKey(part.key)\"\n >\n @for (digit of digitGlyphsForKey(part.key); track digit.value) {\n <span\n class=\"ngs-digit-roller__digit-number\"\n [style.--_ngs-digit-roller-n]=\"digit.value\"\n [attr.inert]=\"digit.value !== part.numericValue ? '' : null\"\n >\n {{ digit.glyph }}\n </span>\n }\n </span>\n } @else {\n <span class=\"ngs-digit-roller__separator\" [attr.data-key]=\"part.key\">{{ part.value }}</span>\n }\n }\n </span>\n }\n\n @if (data().post.length) {\n <span class=\"ngs-digit-roller__section ngs-digit-roller__section--post\">\n @for (part of data().post; track part.key) {\n <span class=\"ngs-digit-roller__literal\" [attr.data-key]=\"part.key\">{{ part.value }}</span>\n }\n </span>\n }\n </span>\n</span>\n\n<span class=\"ngs-digit-roller__sr-only\">{{ formattedPlainText() }}</span>\n", styles: ["@layer properties;@property --_ngs-digit-roller-d{syntax: \"<number>\"; inherits: true; initial-value: 0;}@property --_ngs-digit-roller-d-opacity{syntax: \"<number>\"; inherits: false; initial-value: 0;}@property --_ngs-digit-roller-d-width{syntax: \"<number>\"; inherits: false; initial-value: 0;}@property --_ngs-digit-roller-dx{syntax: \"<length>\"; inherits: true; initial-value: 0px;}:host{--ngs-digit-roller-mask-height: .25em;--ngs-digit-roller-mask-width: .5em;--ngs-digit-roller-min-digit-width: .6em;display:inline-block;position:relative;direction:ltr;isolation:isolate;line-height:1;white-space:nowrap}:host .ngs-digit-roller__number{--_ngs-digit-roller-width: 1;--_ngs-digit-roller-scale-x: calc( 1 + var(--_ngs-digit-roller-d-width) / var(--_ngs-digit-roller-width) );--_ngs-digit-roller-half-mask-height: round( nearest, calc(var(--ngs-digit-roller-mask-height) / 2), 1px );--_ngs-digit-roller-resolved-mask-height: calc(var(--_ngs-digit-roller-half-mask-height) * 2);--_ngs-digit-roller-scaled-mask-width: calc( var(--ngs-digit-roller-mask-width) / var(--_ngs-digit-roller-scale-x) );display:inline-block;line-height:1;font-variant-numeric:tabular-nums;font-feature-settings:\"tnum\";position:relative;transform-origin:left top;transform:translate(var(--_ngs-digit-roller-dx)) scaleX(var(--_ngs-digit-roller-scale-x));margin:0 calc(-1 * var(--ngs-digit-roller-mask-width));-webkit-mask-image:linear-gradient(to right,transparent 0,#000 var(--_ngs-digit-roller-scaled-mask-width),#000 calc(100% - var(--_ngs-digit-roller-scaled-mask-width)),transparent 100%),linear-gradient(to bottom,transparent 0,#000 var(--_ngs-digit-roller-resolved-mask-height),#000 calc(100% - var(--_ngs-digit-roller-resolved-mask-height)),transparent 100%),radial-gradient(at bottom right,#000 0,transparent 71%),radial-gradient(at bottom left,#000 0,transparent 71%),radial-gradient(at top left,#000 0,transparent 71%),radial-gradient(at top right,#000 0,transparent 71%);mask-image:linear-gradient(to right,transparent 0,#000 var(--_ngs-digit-roller-scaled-mask-width),#000 calc(100% - var(--_ngs-digit-roller-scaled-mask-width)),transparent 100%),linear-gradient(to bottom,transparent 0,#000 var(--_ngs-digit-roller-resolved-mask-height),#000 calc(100% - var(--_ngs-digit-roller-resolved-mask-height)),transparent 100%),radial-gradient(at bottom right,#000 0,transparent 71%),radial-gradient(at bottom left,#000 0,transparent 71%),radial-gradient(at top left,#000 0,transparent 71%),radial-gradient(at top right,#000 0,transparent 71%);-webkit-mask-size:100% calc(100% - var(--_ngs-digit-roller-resolved-mask-height) * 2),calc(100% - var(--_ngs-digit-roller-scaled-mask-width) * 2) 100%,var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height),var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height),var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height),var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height);mask-size:100% calc(100% - var(--_ngs-digit-roller-resolved-mask-height) * 2),calc(100% - var(--_ngs-digit-roller-scaled-mask-width) * 2) 100%,var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height),var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height),var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height),var(--_ngs-digit-roller-scaled-mask-width) var(--_ngs-digit-roller-resolved-mask-height);-webkit-mask-position:center,center,top left,top right,bottom right,bottom left;mask-position:center,center,top left,top right,bottom right,bottom left;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}:host .ngs-digit-roller__number-inner{display:inline-flex;align-items:baseline;padding:var(--_ngs-digit-roller-half-mask-height) var(--ngs-digit-roller-mask-width);transform-origin:left top;transform:scaleX(calc(1 / var(--_ngs-digit-roller-scale-x))) translate(calc(-1 * var(--_ngs-digit-roller-dx)))}:host .ngs-digit-roller__section{display:inline-flex;align-items:baseline}:host .ngs-digit-roller__digit{display:inline-block;position:relative;height:calc(1em + var(--_ngs-digit-roller-resolved-mask-height, .25em));clip-path:inset(0 -.2em);vertical-align:top;--_ngs-digit-roller-c: var(--_ngs-digit-roller-current, 0) + var(--_ngs-digit-roller-d);--_ngs-digit-roller-len: 10}:host .ngs-digit-roller__digit,:host .ngs-digit-roller__separator,:host .ngs-digit-roller__literal,:host .ngs-digit-roller__ghost{opacity:calc(1 + var(--_ngs-digit-roller-d-opacity, 0))}:host .ngs-digit-roller__digit-number{display:inline-block;height:1em;line-height:1;text-align:center;min-width:var(--ngs-digit-roller-min-digit-width);padding:var(--_ngs-digit-roller-half-mask-height, .125em) 0;box-sizing:content-box;--_ngs-digit-roller-offset-raw: mod( var(--_ngs-digit-roller-len) + var(--_ngs-digit-roller-n) - mod(var(--_ngs-digit-roller-c), var(--_ngs-digit-roller-len)), var(--_ngs-digit-roller-len) );--_ngs-digit-roller-offset: calc( var(--_ngs-digit-roller-offset-raw) - var(--_ngs-digit-roller-len) * round(down, var(--_ngs-digit-roller-offset-raw) / (var(--_ngs-digit-roller-len) / 2), 1) );--_ngs-digit-roller-y: clamp(-100%, var(--_ngs-digit-roller-offset) * 100%, 100%);transform:translateY(var(--_ngs-digit-roller-y))}:host .ngs-digit-roller__digit-number[inert]{position:absolute;top:0;left:50%;transform:translate(-50%) translateY(var(--_ngs-digit-roller-y))}:host .ngs-digit-roller__digit:not(.ngs-digit-roller__digit--spinning) .ngs-digit-roller__digit-number[inert]{display:none}:host .ngs-digit-roller__separator,:host .ngs-digit-roller__literal{display:inline-block}:host .ngs-digit-roller__sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}:host[data-animated=false] .ngs-digit-roller__digit-number,:host[data-animated=false] .ngs-digit-roller__digit,:host[data-animated=false] .ngs-digit-roller__separator,:host[data-animated=false] .ngs-digit-roller__literal{transition:none!important;animation:none!important}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){:root,:host{--_ngs-digit-roller-d: 0;--_ngs-digit-roller-dx: 0px}*,:before,:after,::backdrop{--_ngs-digit-roller-d-opacity: 0;--_ngs-digit-roller-d-width: 0}}}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
688
688
  }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], format: [{ type: i0.Input, args: [{ isSignal: true, alias: "format", required: false }] }], locales: [{ type: i0.Input, args: [{ isSignal: true, alias: "locales", required: false }] }], prefix: [{ type: i0.Input, args: [{ isSignal: true, alias: "prefix", required: false }] }], suffix: [{ type: i0.Input, args: [{ isSignal: true, alias: "suffix", required: false }] }], animated: [{ type: i0.Input, args: [{ isSignal: true, alias: "animated", required: false }] }], duration: [{ type: i0.Input, args: [{ isSignal: true, alias: "duration", required: false }] }], opacityDuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "opacityDuration", required: false }] }], transformTiming: [{ type: i0.Input, args: [{ isSignal: true, alias: "transformTiming", required: false }] }], spinTiming: [{ type: i0.Input, args: [{ isSignal: true, alias: "spinTiming", required: false }] }], opacityTiming: [{ type: i0.Input, args: [{ isSignal: true, alias: "opacityTiming", required: false }] }], spinEasing: [{ type: i0.Input, args: [{ isSignal: true, alias: "spinEasing", required: false }] }], flipEasing: [{ type: i0.Input, args: [{ isSignal: true, alias: "flipEasing", required: false }] }], trend: [{ type: i0.Input, args: [{ isSignal: true, alias: "trend", required: false }] }], continuous: [{ type: i0.Input, args: [{ isSignal: true, alias: "continuous", required: false }] }], digits: [{ type: i0.Input, args: [{ isSignal: true, alias: "digits", required: false }] }], respectMotionPreference: [{ type: i0.Input, args: [{ isSignal: true, alias: "respectMotionPreference", required: false }] }], stagger: [{ type: i0.Input, args: [{ isSignal: true, alias: "stagger", required: false }] }], colorOnIncrease: [{ type: i0.Input, args: [{ isSignal: true, alias: "colorOnIncrease", required: false }] }], colorOnDecrease: [{ type: i0.Input, args: [{ isSignal: true, alias: "colorOnDecrease", required: false }] }], animationsStart: [{ type: i0.Output, args: ["animationsStart"] }], animationsFinish: [{ type: i0.Output, args: ["animationsFinish"] }] } });
689
689
 
690
690
  class DigitRollerGroupDirective {
@@ -1 +1 @@
1
- {"version":3,"file":"ngstarter-ui-components-digit-roller.mjs","sources":["../../../projects/components/digit-roller/src/digit-roller-capabilities.ts","../../../projects/components/digit-roller/src/digit-roller-formatter.ts","../../../projects/components/digit-roller/src/digit-roller-group.token.ts","../../../projects/components/digit-roller/src/digit-roller.types.ts","../../../projects/components/digit-roller/src/digit-roller/digit-roller.ts","../../../projects/components/digit-roller/src/digit-roller/digit-roller.html","../../../projects/components/digit-roller/src/digit-roller-group.directive.ts","../../../projects/components/digit-roller/ngstarter-ui-components-digit-roller.ts"],"sourcesContent":["export interface DigitRollerCapabilityOptions {\n respectMotionPreference?: boolean;\n}\n\nlet staticCapable: boolean | undefined;\nlet prefersReducedMotion: boolean | undefined;\n\nfunction isStaticallyCapable(): boolean {\n if (staticCapable !== undefined) {\n return staticCapable;\n }\n\n staticCapable =\n typeof window !== 'undefined' &&\n typeof window.CSS !== 'undefined' &&\n typeof window.Element !== 'undefined' &&\n typeof window.Element.prototype.animate === 'function' &&\n typeof window.CSS.registerProperty === 'function' &&\n window.CSS.supports('width', 'calc(mod(2, 10) * 1px)') &&\n supportsLinearEasing();\n\n return staticCapable;\n}\n\nfunction getPrefersReducedMotion(): boolean {\n if (prefersReducedMotion !== undefined) {\n return prefersReducedMotion;\n }\n\n if (typeof window === 'undefined' || !window.matchMedia) {\n return false;\n }\n\n const mediaQuery = window.matchMedia('(prefers-reduced-motion: reduce)');\n prefersReducedMotion = mediaQuery.matches;\n\n if (typeof mediaQuery.addEventListener === 'function') {\n mediaQuery.addEventListener('change', (event) => {\n prefersReducedMotion = event.matches;\n });\n }\n\n return prefersReducedMotion;\n}\n\nexport function resetDigitRollerCapabilityCache(): void {\n staticCapable = undefined;\n prefersReducedMotion = undefined;\n}\n\nexport function canAnimateDigitRoller(options: DigitRollerCapabilityOptions = {}): boolean {\n if (!isStaticallyCapable()) {\n return false;\n }\n\n return options.respectMotionPreference === false || !getPrefersReducedMotion();\n}\n\nfunction supportsLinearEasing(): boolean {\n try {\n document.createElement('div').animate({ opacity: 0 }, { easing: 'linear(0, 1)' });\n return true;\n } catch {\n return false;\n }\n}\n","import {\n DigitRollerFormattedNumber,\n DigitRollerNumberPart,\n} from './digit-roller.types';\n\nconst PRE_TYPES = new Set(['currency', 'literal', 'minusSign', 'plusSign', 'nan', 'infinity']);\nconst POST_TYPES = new Set(['percentSign', 'unit']);\n\nconst formatterCache = new Map<string, Intl.NumberFormat>();\n\nfunction getCachedFormatter(\n locales: string | string[] | undefined,\n options: Intl.NumberFormatOptions,\n): Intl.NumberFormat {\n const key = JSON.stringify(locales) + ':' + JSON.stringify(options);\n let formatter = formatterCache.get(key);\n\n if (!formatter) {\n formatter = new Intl.NumberFormat(locales, options);\n formatterCache.set(key, formatter);\n }\n\n return formatter;\n}\n\nexport interface DigitRollerGlyph {\n value: number;\n glyph: string;\n}\n\nexport function getDigitRollerGlyphs(\n locales?: string | string[],\n options: Intl.NumberFormatOptions = {},\n): DigitRollerGlyph[] {\n const formatter = getCachedFormatter(locales, {\n numberingSystem: options.numberingSystem,\n useGrouping: false,\n maximumFractionDigits: 0,\n });\n\n return Array.from({ length: 10 }, (_, value) => ({\n value,\n glyph: formatter.format(value),\n }));\n}\n\nfunction getDigitValueMap(\n locales?: string | string[],\n options: Intl.NumberFormatOptions = {},\n): Map<string, number> {\n return new Map(getDigitRollerGlyphs(locales, options).map(({ glyph, value }) => [glyph, value]));\n}\n\nexport function formatDigitRollerValue(\n value: number,\n options: Intl.NumberFormatOptions = {},\n locales?: string | string[],\n prefix = '',\n suffix = '',\n): DigitRollerFormattedNumber {\n const formatter = getCachedFormatter(locales, options);\n const digitValues = getDigitValueMap(locales, options);\n const parts = formatter.formatToParts(value);\n\n const pre: DigitRollerNumberPart[] = [];\n const rawInteger: Intl.NumberFormatPart[] = [];\n const fraction: DigitRollerNumberPart[] = [];\n const post: DigitRollerNumberPart[] = [];\n\n let seenInteger = false;\n let seenDecimal = false;\n\n for (const part of parts) {\n if (part.type === 'integer' || part.type === 'group') {\n seenInteger = true;\n rawInteger.push(part);\n } else if (part.type === 'decimal' || part.type === 'fraction') {\n seenDecimal = true;\n fraction.push({ type: part.type, value: part.value, key: '' });\n } else if (!seenInteger && PRE_TYPES.has(part.type)) {\n pre.push({ type: part.type, value: part.value, key: `pre-${pre.length}` });\n } else if (seenInteger && POST_TYPES.has(part.type)) {\n post.push({ type: part.type, value: part.value, key: `post-${post.length}` });\n } else if (seenDecimal || seenInteger) {\n post.push({ type: part.type, value: part.value, key: `post-${post.length}` });\n } else {\n pre.push({ type: part.type, value: part.value, key: `pre-${pre.length}` });\n }\n }\n\n if (prefix) {\n pre.unshift({ type: 'prefix', value: prefix, key: '__prefix' });\n }\n\n if (suffix) {\n post.push({ type: 'suffix', value: suffix, key: '__suffix' });\n }\n\n const splitInteger: Intl.NumberFormatPart[] = [];\n for (const part of rawInteger) {\n if (part.type === 'integer') {\n for (const char of part.value) {\n splitInteger.push({ type: 'integer', value: char });\n }\n } else {\n splitInteger.push(part);\n }\n }\n\n let digitIndex = 0;\n const reversedInteger: DigitRollerNumberPart[] = [];\n for (let i = splitInteger.length - 1; i >= 0; i--) {\n const part = splitInteger[i];\n if (part.type === 'integer') {\n reversedInteger.push({\n type: 'integer',\n value: part.value,\n key: `i${digitIndex}`,\n numericValue: digitValues.get(part.value) ?? Number(part.value),\n });\n digitIndex++;\n } else {\n reversedInteger.push({ type: 'group', value: part.value, key: `g${digitIndex}` });\n }\n }\n\n let fractionDigitIndex = 0;\n const keyedFraction: DigitRollerNumberPart[] = [];\n for (const part of fraction) {\n if (part.type === 'fraction') {\n for (const char of part.value) {\n keyedFraction.push({\n type: 'fraction',\n value: char,\n key: `f${++fractionDigitIndex}`,\n numericValue: digitValues.get(char) ?? Number(char),\n });\n }\n } else {\n keyedFraction.push({ ...part, key: 'decimal' });\n }\n }\n\n return { pre, integer: reversedInteger.reverse(), fraction: keyedFraction, post };\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface DigitRollerGroupMember {\n canGroupAnimateNow(): boolean;\n prepareGroupedUpdate(): void;\n queueGroupedAnimation(): void;\n}\n\nexport interface DigitRollerGroupCoordinator {\n requestGroupedUpdate(member: DigitRollerGroupMember, applyUpdate: () => void): boolean;\n}\n\nexport const DIGIT_ROLLER_GROUP = new InjectionToken<DigitRollerGroupCoordinator>('DIGIT_ROLLER_GROUP');\n","export interface DigitRollerNumberPart {\n type: string;\n value: string;\n key: string;\n numericValue?: number;\n}\n\nexport interface DigitRollerFormattedNumber {\n pre: DigitRollerNumberPart[];\n integer: DigitRollerNumberPart[];\n fraction: DigitRollerNumberPart[];\n post: DigitRollerNumberPart[];\n}\n\nexport const DIGIT_ROLLER_EMPTY_FORMATTED: DigitRollerFormattedNumber = {\n pre: [],\n integer: [],\n fraction: [],\n post: [],\n};\n\nexport type DigitRollerTrend = number | ((oldValue: number, value: number) => number);\n\nexport type DigitRollerTiming = Omit<KeyframeAnimationOptions, 'composite'>;\n\nexport type DigitRollerEasing = 'default' | 'spring' | 'overshoot' | (string & {});\n\nexport interface DigitRollerDigitConfig {\n max?: number;\n}\n\nexport type DigitRollerDigits = Record<number, DigitRollerDigitConfig>;\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n afterEveryRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n input,\n output,\n PLATFORM_ID,\n signal,\n untracked,\n ViewEncapsulation,\n} from '@angular/core';\nimport { canAnimateDigitRoller } from '../digit-roller-capabilities';\nimport { getDigitRollerGlyphs, formatDigitRollerValue } from '../digit-roller-formatter';\nimport { DIGIT_ROLLER_GROUP } from '../digit-roller-group.token';\nimport {\n DIGIT_ROLLER_EMPTY_FORMATTED,\n DigitRollerDigits,\n DigitRollerEasing,\n DigitRollerFormattedNumber,\n DigitRollerTiming,\n DigitRollerTrend,\n} from '../digit-roller.types';\n\nconst SPIN_EASING =\n 'linear(0,.005,.019,.039,.066,.096,.129,.165,.202,.24,.278,.316,.354,.39,.426,.461,' +\n '.494,.526,.557,.586,.614,.64,.665,.689,.711,.731,.751,.769,.786,.802,.817,.831,.844,' +\n '.856,.867,.877,.887,.896,.904,.912,.919,.925,.931,.937,.942,.947,.951,.955,.959,.962,' +\n '.965,.968,.971,.973,.976,.978,.98,.981,.983,.984,.986,.987,.988,.989,.99,.991,.992,' +\n '.992,.993,.994,.994,.995,.995,.996,.996,.9963,.9967,.9969,.9972,.9975,.9977,.9979,' +\n '.9981,.9982,.9984,.9985,.9987,.9988,.9989,1)';\n\nconst EASING_PRESETS: Record<string, string> = {\n default: SPIN_EASING,\n spring: SPIN_EASING,\n overshoot: 'cubic-bezier(0.34, 1.56, 0.64, 1)',\n};\n\n@Component({\n selector: 'ngs-digit-roller',\n exportAs: 'ngsDigitRoller',\n templateUrl: './digit-roller.html',\n styleUrl: './digit-roller.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ngs-digit-roller',\n '[attr.data-animated]': 'animated()',\n },\n})\nexport class DigitRoller {\n value = input.required<number>();\n format = input<Intl.NumberFormatOptions>({});\n locales = input<string | string[] | undefined>(undefined);\n prefix = input('');\n suffix = input('');\n animated = input(true);\n\n duration = input<number | undefined>(undefined);\n opacityDuration = input<number | undefined>(undefined);\n transformTiming = input<DigitRollerTiming | undefined>(undefined);\n spinTiming = input<DigitRollerTiming | undefined>(undefined);\n opacityTiming = input<DigitRollerTiming | undefined>(undefined);\n\n spinEasing = input<DigitRollerEasing | undefined>(undefined);\n flipEasing = input<DigitRollerEasing | undefined>(undefined);\n trend = input<DigitRollerTrend | undefined>(undefined);\n\n continuous = input(false);\n digits = input<DigitRollerDigits>({});\n respectMotionPreference = input(true);\n stagger = input(0);\n colorOnIncrease = input<string | undefined>(undefined);\n colorOnDecrease = input<string | undefined>(undefined);\n\n animationsStart = output<void>();\n animationsFinish = output<void>();\n\n protected data = signal<DigitRollerFormattedNumber>(DIGIT_ROLLER_EMPTY_FORMATTED);\n protected digitGlyphs = computed(() => getDigitRollerGlyphs(this.locales(), this.format()));\n protected formattedPlainText = computed(() =>\n new Intl.NumberFormat(this.locales(), this.format()).format(this.value()),\n );\n protected effectiveSettings = computed(() => {\n const duration = this.duration() ?? 900;\n\n return {\n duration,\n opacityDuration: this.opacityDuration() ?? 450,\n spinEasing: this.resolveEasing(this.spinEasing()),\n flipEasing: this.resolveEasing(this.flipEasing()),\n transformTiming: this.transformTiming(),\n spinTiming: this.spinTiming(),\n opacityTiming: this.opacityTiming(),\n };\n });\n\n private platformId = inject(PLATFORM_ID);\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private destroyRef = inject(DestroyRef);\n private group = inject(DIGIT_ROLLER_GROUP, { optional: true });\n\n private prevRects = new Map<string, DOMRect>();\n private prevInnerHTML = new Map<string, string>();\n private prevDigitD = new Map<string, string>();\n private prevDigitCurrent = new Map<string, string>();\n private prevDigitValues = new Map<string, number>();\n private prevDigitOrder: string[] = [];\n private prevNumberLeft = 0;\n private prevNumberWidth = 0;\n private prevNumericValue = 0;\n\n private animCount = 0;\n private pending = false;\n private destroyed = false;\n private hasRenderedValue = false;\n private liveAnimations: Animation[] = [];\n private spinCount = new Map<HTMLElement, number>();\n private animationsFinishAbort?: AbortController;\n private pendingCanAnimate = false;\n private pendingHostFont = '';\n private pendingHostColor = '';\n private pendingKeyedEls: Array<{ el: HTMLElement; key: string; newRect: DOMRect }> = [];\n private pendingNumberRect: DOMRect | null = null;\n private pendingNumberOffsetWidth = 0;\n private isNearViewport = true;\n private viewportObserver?: IntersectionObserver;\n\n constructor() {\n this.destroyRef.onDestroy(() => {\n this.destroyed = true;\n this.animationsFinishAbort?.abort();\n this.viewportObserver?.disconnect();\n\n for (const animation of this.liveAnimations) {\n try {\n animation.cancel();\n } catch {\n /* Animation cancellation can throw AbortError in some browsers. */\n }\n }\n\n this.liveAnimations = [];\n });\n\n effect(() => {\n const value = this.value();\n const format = this.format();\n const locales = this.locales();\n const prefix = this.prefix();\n const suffix = this.suffix();\n\n if (!this.hasRenderedValue) {\n untracked(() => this.data.set(formatDigitRollerValue(value, format, locales, prefix, suffix)));\n this.prevNumericValue = value;\n this.hasRenderedValue = true;\n return;\n }\n\n const canAnimateThisUpdate =\n isPlatformBrowser(this.platformId) && this.animated() && this.canAnimateNow();\n\n if (canAnimateThisUpdate) {\n const handledByGroup = this.group?.requestGroupedUpdate(this, () => {\n untracked(() => this.data.set(formatDigitRollerValue(value, format, locales, prefix, suffix)));\n });\n\n if (handledByGroup) {\n return;\n }\n\n this.snapshot();\n untracked(() => this.data.set(formatDigitRollerValue(value, format, locales, prefix, suffix)));\n this.pending = true;\n } else {\n untracked(() => this.data.set(formatDigitRollerValue(value, format, locales, prefix, suffix)));\n this.prevNumericValue = value;\n }\n });\n\n if (isPlatformBrowser(this.platformId)) {\n if (typeof IntersectionObserver !== 'undefined') {\n this.viewportObserver = new IntersectionObserver(\n (entries) => {\n this.isNearViewport = entries[entries.length - 1].isIntersecting;\n },\n { rootMargin: '240px' },\n );\n this.viewportObserver.observe(this.elementRef.nativeElement);\n }\n\n afterEveryRender({\n earlyRead: () => {\n if (this.pending) {\n this.readAnimationState();\n }\n },\n write: () => {\n if (this.pending) {\n this.pending = false;\n this.fireAnimations();\n }\n },\n });\n }\n }\n\n canGroupAnimateNow(): boolean {\n return isPlatformBrowser(this.platformId) && this.animated() && this.canAnimateNow();\n }\n\n prepareGroupedUpdate(): void {\n this.snapshot();\n }\n\n queueGroupedAnimation(): void {\n this.pending = true;\n }\n\n private snapshot(): void {\n const host = this.elementRef.nativeElement;\n this.prevRects.clear();\n this.prevInnerHTML.clear();\n this.prevDigitD.clear();\n this.prevDigitCurrent.clear();\n this.prevDigitValues.clear();\n this.prevDigitOrder = [];\n\n const number = host.querySelector<HTMLElement>('.ngs-digit-roller__number');\n if (number) {\n const numberRect = number.getBoundingClientRect();\n this.prevNumberLeft = numberRect.left;\n this.prevNumberWidth = numberRect.width;\n }\n\n untracked(() => {\n [...this.data().integer, ...this.data().fraction].forEach((part) => {\n if (part.type === 'integer' || part.type === 'fraction') {\n this.prevDigitValues.set(part.key, this.getPartDigitValue(part));\n this.prevDigitOrder.push(part.key);\n }\n });\n });\n\n host.querySelectorAll<HTMLElement>('[data-key]').forEach((element) => {\n const key = element.getAttribute('data-key')!;\n this.prevRects.set(key, element.getBoundingClientRect());\n this.prevInnerHTML.set(key, element.innerHTML);\n\n if (element.classList.contains('ngs-digit-roller__digit')) {\n const styles = getComputedStyle(element);\n this.prevDigitD.set(key, styles.getPropertyValue('--_ngs-digit-roller-d').trim() || '0');\n this.prevDigitCurrent.set(\n key,\n (element.style.getPropertyValue('--_ngs-digit-roller-current') || '0').trim(),\n );\n }\n });\n }\n\n private readAnimationState(): void {\n if (this.destroyed || !this.canAnimateNow()) {\n this.pendingCanAnimate = false;\n return;\n }\n\n this.pendingCanAnimate = true;\n const host = this.elementRef.nativeElement;\n const hostStyles = getComputedStyle(host);\n\n this.pendingHostFont = hostStyles.font;\n this.pendingHostColor = hostStyles.color;\n this.pendingKeyedEls = [];\n\n host.querySelectorAll<HTMLElement>('[data-key]').forEach((element) => {\n this.pendingKeyedEls.push({\n el: element,\n key: element.getAttribute('data-key')!,\n newRect: element.getBoundingClientRect(),\n });\n });\n\n const number = host.querySelector<HTMLElement>('.ngs-digit-roller__number');\n this.pendingNumberRect = number ? number.getBoundingClientRect() : null;\n this.pendingNumberOffsetWidth = number ? number.offsetWidth : 0;\n }\n\n private fireAnimations(): void {\n if (this.destroyed) {\n return;\n }\n\n const host = this.elementRef.nativeElement;\n const newNumericValue = untracked(() => this.value());\n\n if (!this.pendingCanAnimate) {\n this.prevNumericValue = newNumericValue;\n return;\n }\n\n const settings = this.effectiveSettings();\n const duration = settings.duration;\n const opacityDuration = settings.opacityDuration;\n const trend = this.resolveTrend(this.prevNumericValue, newNumericValue);\n const staggerMs = this.stagger();\n\n const baseTransformTiming = settings.transformTiming ?? {\n duration,\n easing: settings.flipEasing,\n };\n const spinOptions: KeyframeAnimationOptions = {\n ...baseTransformTiming,\n easing: settings.spinEasing,\n ...(settings.spinTiming ?? {}),\n duration: settings.spinTiming?.duration ?? baseTransformTiming.duration,\n fill: 'none',\n composite: 'accumulate',\n };\n const flipOptions: KeyframeAnimationOptions = {\n ...baseTransformTiming,\n duration: baseTransformTiming.duration,\n fill: 'none',\n composite: 'accumulate',\n };\n const fadeOptions: KeyframeAnimationOptions = {\n duration: opacityDuration,\n easing: 'ease-out',\n fill: 'none',\n composite: 'accumulate',\n ...(settings.opacityTiming ?? {}),\n };\n\n const continuousStartPosition =\n this.continuous() && duration > 0 && trend !== 0 ? this.getContinuousStartPosition() : undefined;\n\n const batch: Animation[] = [];\n const newKeys = new Set<string>();\n let elementIndex = 0;\n const number = host.querySelector<HTMLElement>('.ngs-digit-roller__number');\n\n for (const { el, key, newRect } of this.pendingKeyedEls) {\n newKeys.add(key);\n const prevRect = this.prevRects.get(key);\n const staggerDelay = staggerMs > 0 ? elementIndex * staggerMs : 0;\n elementIndex++;\n\n if (el.classList.contains('ngs-digit-roller__digit')) {\n const digit = this.getDigitValue(key);\n const fromDigit = this.prevDigitValues.has(key) ? this.prevDigitValues.get(key)! : 0;\n const rawDelta = this.getTrendDelta(fromDigit, digit, trend, this.getDigitLength(key));\n const digitPosition = this.getDigitPosition(key);\n const isLowerUnchanged =\n this.continuous() &&\n rawDelta === 0 &&\n continuousStartPosition !== undefined &&\n digitPosition !== undefined &&\n continuousStartPosition >= digitPosition;\n const delta = isLowerUnchanged ? this.getDigitLength(key) * trend : rawDelta;\n\n if (delta !== 0 && duration > 0) {\n this.incrementSpin(el);\n const animation = el.animate(\n { '--_ngs-digit-roller-d': [-delta, 0] } as PropertyIndexedKeyframes,\n spinOptions,\n );\n batch.push(animation);\n animation.finished.then(() => this.decrementSpin(el)).catch(() => this.decrementSpin(el));\n }\n\n this.animatePositionOrFade(el, prevRect, newRect, flipOptions, fadeOptions, staggerDelay, batch);\n } else {\n this.animatePositionOrFade(el, prevRect, newRect, flipOptions, fadeOptions, staggerDelay, batch);\n }\n }\n\n let exitIndex = 0;\n this.prevRects.forEach((rect, key) => {\n if (newKeys.has(key)) {\n return;\n }\n\n const ghost = this.buildGhost(key, rect, this.pendingHostFont, this.pendingHostColor);\n host.appendChild(ghost);\n ghost.style.setProperty('--_ngs-digit-roller-d-opacity', '-0.999');\n\n const staggerDelay = staggerMs > 0 ? exitIndex * staggerMs : 0;\n exitIndex++;\n\n const animation = ghost.animate(\n { '--_ngs-digit-roller-d-opacity': [0.999, 0] } as PropertyIndexedKeyframes,\n this.addStaggerDelay(fadeOptions, staggerDelay),\n );\n batch.push(animation);\n animation.finished.then(() => ghost.remove()).catch(() => ghost.remove());\n });\n\n if (number && this.pendingNumberRect) {\n const rect = this.pendingNumberRect;\n const dx = this.prevNumberLeft - rect.left;\n const width = rect.width || this.pendingNumberOffsetWidth;\n const dWidth = this.prevNumberWidth - width;\n\n number.style.setProperty('--_ngs-digit-roller-width', String(width || this.prevNumberWidth || 1));\n\n if (Math.abs(dx) > 0.5 || Math.abs(dWidth) > 0.5) {\n batch.push(\n number.animate(\n {\n '--_ngs-digit-roller-dx': [`${dx}px`, '0px'],\n '--_ngs-digit-roller-d-width': [dWidth, 0],\n } as PropertyIndexedKeyframes,\n flipOptions,\n ),\n );\n }\n }\n\n if (duration > 0) {\n const colorIncrease = this.colorOnIncrease();\n const colorDecrease = this.colorOnDecrease();\n\n if (trend > 0 && colorIncrease) {\n batch.push(\n host.animate([{ color: colorIncrease }, { color: '' }], {\n duration: Math.max(duration, 400),\n easing: 'ease-out',\n fill: 'none',\n }),\n );\n } else if (trend < 0 && colorDecrease) {\n batch.push(\n host.animate([{ color: colorDecrease }, { color: '' }], {\n duration: Math.max(duration, 400),\n easing: 'ease-out',\n fill: 'none',\n }),\n );\n }\n }\n\n this.prevNumericValue = newNumericValue;\n\n if (batch.length === 0) {\n return;\n }\n\n this.liveAnimations.push(...batch);\n this.animCount++;\n\n if (this.animationsFinishAbort) {\n this.animationsFinishAbort.abort();\n } else {\n this.animationsStart.emit();\n }\n\n const finishController = new AbortController();\n this.animationsFinishAbort = finishController;\n\n Promise.allSettled(batch.map((animation) => animation.finished)).then(() => {\n const batchSet = new Set(batch);\n this.liveAnimations = this.liveAnimations.filter((animation) => !batchSet.has(animation));\n this.animCount--;\n\n if (this.animCount === 0 && !this.destroyed && this.animationsFinishAbort) {\n this.animationsFinish.emit();\n this.animationsFinishAbort = undefined;\n }\n });\n }\n\n private animatePositionOrFade(\n element: HTMLElement,\n prevRect: DOMRect | undefined,\n newRect: DOMRect,\n flipOptions: KeyframeAnimationOptions,\n fadeOptions: KeyframeAnimationOptions,\n staggerDelay: number,\n batch: Animation[],\n ): void {\n if (prevRect) {\n const dx = prevRect.left - newRect.left;\n\n if (Math.abs(dx) > 0.5) {\n batch.push(\n element.animate(\n [{ transform: `translateX(${dx}px)` }, { transform: 'translateX(0)' }],\n flipOptions,\n ),\n );\n }\n } else {\n batch.push(\n element.animate(\n { '--_ngs-digit-roller-d-opacity': [-0.9999, 0] } as PropertyIndexedKeyframes,\n this.addStaggerDelay(fadeOptions, staggerDelay),\n ),\n );\n }\n }\n\n private getDigitValue(key: string): number {\n const part = [...this.data().integer, ...this.data().fraction].find((item) => item.key === key);\n return part ? this.getPartDigitValue(part) : 0;\n }\n\n private getPartDigitValue(part: { value: string; numericValue?: number }): number {\n return part.numericValue ?? Number(part.value);\n }\n\n private resolveTrend(oldValue: number, newValue: number): number {\n const configured = this.trend();\n const trend =\n typeof configured === 'function'\n ? configured(oldValue, newValue)\n : (configured ?? Math.sign(newValue - oldValue));\n return Math.sign(trend);\n }\n\n private canAnimateNow(): boolean {\n const host = this.elementRef.nativeElement;\n\n return (\n canAnimateDigitRoller({ respectMotionPreference: this.respectMotionPreference() }) &&\n this.animated() &&\n host.ownerDocument.visibilityState === 'visible' &&\n this.isHostNearViewport(host)\n );\n }\n\n private isHostNearViewport(host: HTMLElement): boolean {\n if (this.viewportObserver) {\n return this.isNearViewport;\n }\n\n const rect = host.getBoundingClientRect();\n if (rect.width <= 0 || rect.height <= 0) {\n return false;\n }\n\n const windowRef = host.ownerDocument.defaultView;\n if (!windowRef) {\n return true;\n }\n\n const margin = 240;\n return (\n rect.bottom >= -margin &&\n rect.right >= -margin &&\n rect.top <= windowRef.innerHeight + margin &&\n rect.left <= windowRef.innerWidth + margin\n );\n }\n\n private resolveEasing(easing: DigitRollerEasing | undefined): string {\n return easing ? (EASING_PRESETS[easing] ?? easing) : SPIN_EASING;\n }\n\n private getContinuousStartPosition(): number | undefined {\n const current = new Map<string, number>();\n const currentOrder: string[] = [];\n\n untracked(() => {\n [...this.data().integer, ...this.data().fraction].forEach((part) => {\n if (part.type === 'integer' || part.type === 'fraction') {\n current.set(part.key, this.getPartDigitValue(part));\n currentOrder.push(part.key);\n }\n });\n });\n\n const firstChangedPrev = this.prevDigitOrder.find(\n (key) => current.get(key) !== this.prevDigitValues.get(key),\n );\n const firstChangedCurrent = currentOrder.find(\n (key) => current.get(key) !== this.prevDigitValues.get(key),\n );\n const start = Math.max(\n this.getDigitPosition(firstChangedPrev) ?? -Infinity,\n this.getDigitPosition(firstChangedCurrent) ?? -Infinity,\n );\n\n return Number.isFinite(start) ? start : undefined;\n }\n\n private getDigitPosition(key?: string): number | undefined {\n if (!key) {\n return undefined;\n }\n\n if (key.startsWith('i')) {\n return Number(key.slice(1));\n }\n\n if (key.startsWith('f')) {\n return -Number(key.slice(1));\n }\n\n return undefined;\n }\n\n private getDigitLength(key: string): number {\n if (!key.startsWith('i')) {\n return 10;\n }\n\n const position = Number(key.slice(1));\n const max = this.digits()[position]?.max;\n return max !== undefined ? max + 1 : 10;\n }\n\n protected digitLengthForKey(key: string): number {\n return this.getDigitLength(key);\n }\n\n protected digitGlyphsForKey(key: string): { value: number; glyph: string }[] {\n return this.digitGlyphs().slice(0, this.getDigitLength(key));\n }\n\n private addStaggerDelay(\n options: KeyframeAnimationOptions,\n staggerDelay: number,\n ): KeyframeAnimationOptions {\n const currentDelay = typeof options.delay === 'number' ? options.delay : 0;\n return { ...options, delay: currentDelay + staggerDelay };\n }\n\n private getTrendDelta(from: number, to: number, trend: number, length = 10): number {\n const diff = to - from;\n const resolvedTrend = trend || Math.sign(diff);\n\n if (resolvedTrend > 0 && to < from) {\n return length - from + to;\n }\n\n if (resolvedTrend < 0 && to > from) {\n return to - length - from;\n }\n\n return diff;\n }\n\n private incrementSpin(element: HTMLElement): void {\n const count = (this.spinCount.get(element) ?? 0) + 1;\n this.spinCount.set(element, count);\n\n if (count === 1) {\n element.classList.add('ngs-digit-roller__digit--spinning');\n }\n }\n\n private decrementSpin(element: HTMLElement): void {\n const count = Math.max(0, (this.spinCount.get(element) ?? 1) - 1);\n\n if (count === 0) {\n this.spinCount.delete(element);\n element.classList.remove('ngs-digit-roller__digit--spinning');\n } else {\n this.spinCount.set(element, count);\n }\n }\n\n private buildGhost(key: string, rect: DOMRect, font: string, color: string): HTMLElement {\n const ghost = document.createElement('span');\n ghost.style.cssText =\n `position:fixed;left:${rect.left}px;top:${rect.top}px;` +\n `width:${rect.width}px;height:${rect.height}px;` +\n `pointer-events:none;overflow:hidden;display:inline-flex;` +\n `align-items:center;font:${font};color:${color}`;\n ghost.className = 'ngs-digit-roller__ghost';\n\n const savedHTML = this.prevInnerHTML.get(key);\n if (savedHTML) {\n ghost.innerHTML = savedHTML;\n\n const savedD = this.prevDigitD.get(key);\n const savedCurrent = this.prevDigitCurrent.get(key);\n\n if (savedD !== undefined) {\n ghost.style.setProperty('--_ngs-digit-roller-d', savedD);\n }\n\n if (savedCurrent !== undefined) {\n ghost.style.setProperty('--_ngs-digit-roller-current', savedCurrent);\n }\n\n ghost.querySelectorAll<HTMLElement>('[inert]').forEach((element) => {\n element.style.display = 'none';\n });\n }\n\n return ghost;\n }\n}\n","<span class=\"ngs-digit-roller__number\" aria-hidden=\"true\">\n <span class=\"ngs-digit-roller__number-inner\">\n @if (data().pre.length) {\n <span class=\"ngs-digit-roller__section ngs-digit-roller__section--pre\">\n @for (part of data().pre; track part.key) {\n <span class=\"ngs-digit-roller__literal\" [attr.data-key]=\"part.key\">{{ part.value }}</span>\n }\n </span>\n }\n\n <span class=\"ngs-digit-roller__section ngs-digit-roller__section--integer\">\n @for (part of data().integer; track part.key) {\n @if (part.type === 'integer') {\n <span\n class=\"ngs-digit-roller__digit\"\n [attr.data-key]=\"part.key\"\n [style.--_ngs-digit-roller-current]=\"part.numericValue\"\n [style.--_ngs-digit-roller-len]=\"digitLengthForKey(part.key)\"\n >\n @for (digit of digitGlyphsForKey(part.key); track digit.value) {\n <span\n class=\"ngs-digit-roller__digit-number\"\n [style.--_ngs-digit-roller-n]=\"digit.value\"\n [attr.inert]=\"digit.value !== part.numericValue ? '' : null\"\n >\n {{ digit.glyph }}\n </span>\n }\n </span>\n } @else {\n <span class=\"ngs-digit-roller__separator\" [attr.data-key]=\"part.key\">{{ part.value }}</span>\n }\n }\n </span>\n\n @if (data().fraction.length) {\n <span class=\"ngs-digit-roller__section ngs-digit-roller__section--fraction\">\n @for (part of data().fraction; track part.key) {\n @if (part.type === 'fraction') {\n <span\n class=\"ngs-digit-roller__digit\"\n [attr.data-key]=\"part.key\"\n [style.--_ngs-digit-roller-current]=\"part.numericValue\"\n [style.--_ngs-digit-roller-len]=\"digitLengthForKey(part.key)\"\n >\n @for (digit of digitGlyphsForKey(part.key); track digit.value) {\n <span\n class=\"ngs-digit-roller__digit-number\"\n [style.--_ngs-digit-roller-n]=\"digit.value\"\n [attr.inert]=\"digit.value !== part.numericValue ? '' : null\"\n >\n {{ digit.glyph }}\n </span>\n }\n </span>\n } @else {\n <span class=\"ngs-digit-roller__separator\" [attr.data-key]=\"part.key\">{{ part.value }}</span>\n }\n }\n </span>\n }\n\n @if (data().post.length) {\n <span class=\"ngs-digit-roller__section ngs-digit-roller__section--post\">\n @for (part of data().post; track part.key) {\n <span class=\"ngs-digit-roller__literal\" [attr.data-key]=\"part.key\">{{ part.value }}</span>\n }\n </span>\n }\n </span>\n</span>\n\n<span class=\"ngs-digit-roller__sr-only\">{{ formattedPlainText() }}</span>\n","import { contentChildren, Directive, forwardRef } from '@angular/core';\nimport { DigitRoller } from './digit-roller/digit-roller';\nimport {\n DIGIT_ROLLER_GROUP,\n DigitRollerGroupCoordinator,\n DigitRollerGroupMember,\n} from './digit-roller-group.token';\n\n@Directive({\n selector: '[ngsDigitRollerGroup]',\n providers: [\n {\n provide: DIGIT_ROLLER_GROUP,\n useExisting: forwardRef(() => DigitRollerGroupDirective),\n },\n ],\n})\nexport class DigitRollerGroupDirective implements DigitRollerGroupCoordinator {\n private children = contentChildren(DigitRoller, { descendants: true });\n private pendingUpdates = new Map<DigitRollerGroupMember, () => void>();\n private flushQueued = false;\n\n requestGroupedUpdate(member: DigitRollerGroupMember, applyUpdate: () => void): boolean {\n if (!member.canGroupAnimateNow()) {\n return false;\n }\n\n this.pendingUpdates.set(member, applyUpdate);\n\n if (!this.flushQueued) {\n this.flushQueued = true;\n queueMicrotask(() => this.flushGroupedUpdates());\n }\n\n return true;\n }\n\n private flushGroupedUpdates(): void {\n this.flushQueued = false;\n\n if (this.pendingUpdates.size === 0) {\n return;\n }\n\n const members = this.children().filter((child) => child.canGroupAnimateNow());\n\n for (const member of members) {\n member.prepareGroupedUpdate();\n }\n\n for (const applyUpdate of this.pendingUpdates.values()) {\n applyUpdate();\n }\n\n this.pendingUpdates.clear();\n\n for (const member of members) {\n member.queueGroupedAnimation();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngstarter-ui-components-digit-roller.mjs","sources":["../../../projects/components/digit-roller/src/digit-roller-capabilities.ts","../../../projects/components/digit-roller/src/digit-roller-formatter.ts","../../../projects/components/digit-roller/src/digit-roller-group.token.ts","../../../projects/components/digit-roller/src/digit-roller.types.ts","../../../projects/components/digit-roller/src/digit-roller/digit-roller.ts","../../../projects/components/digit-roller/src/digit-roller/digit-roller.html","../../../projects/components/digit-roller/src/digit-roller-group.directive.ts","../../../projects/components/digit-roller/ngstarter-ui-components-digit-roller.ts"],"sourcesContent":["export interface DigitRollerCapabilityOptions {\n respectMotionPreference?: boolean;\n}\n\nlet staticCapable: boolean | undefined;\nlet prefersReducedMotion: boolean | undefined;\n\nfunction isStaticallyCapable(): boolean {\n if (staticCapable !== undefined) {\n return staticCapable;\n }\n\n staticCapable =\n typeof window !== 'undefined' &&\n typeof window.CSS !== 'undefined' &&\n typeof window.Element !== 'undefined' &&\n typeof window.Element.prototype.animate === 'function' &&\n typeof window.CSS.registerProperty === 'function' &&\n window.CSS.supports('width', 'calc(mod(2, 10) * 1px)') &&\n supportsLinearEasing();\n\n return staticCapable;\n}\n\nfunction getPrefersReducedMotion(): boolean {\n if (prefersReducedMotion !== undefined) {\n return prefersReducedMotion;\n }\n\n if (typeof window === 'undefined' || !window.matchMedia) {\n return false;\n }\n\n const mediaQuery = window.matchMedia('(prefers-reduced-motion: reduce)');\n prefersReducedMotion = mediaQuery.matches;\n\n if (typeof mediaQuery.addEventListener === 'function') {\n mediaQuery.addEventListener('change', (event) => {\n prefersReducedMotion = event.matches;\n });\n }\n\n return prefersReducedMotion;\n}\n\nexport function resetDigitRollerCapabilityCache(): void {\n staticCapable = undefined;\n prefersReducedMotion = undefined;\n}\n\nexport function canAnimateDigitRoller(options: DigitRollerCapabilityOptions = {}): boolean {\n if (!isStaticallyCapable()) {\n return false;\n }\n\n return options.respectMotionPreference === false || !getPrefersReducedMotion();\n}\n\nfunction supportsLinearEasing(): boolean {\n try {\n document.createElement('div').animate({ opacity: 0 }, { easing: 'linear(0, 1)' });\n return true;\n } catch {\n return false;\n }\n}\n","import {\n DigitRollerFormattedNumber,\n DigitRollerNumberPart,\n} from './digit-roller.types';\n\nconst PRE_TYPES = new Set(['currency', 'literal', 'minusSign', 'plusSign', 'nan', 'infinity']);\nconst POST_TYPES = new Set(['percentSign', 'unit']);\n\nconst formatterCache = new Map<string, Intl.NumberFormat>();\n\nfunction getCachedFormatter(\n locales: string | string[] | undefined,\n options: Intl.NumberFormatOptions,\n): Intl.NumberFormat {\n const key = JSON.stringify(locales) + ':' + JSON.stringify(options);\n let formatter = formatterCache.get(key);\n\n if (!formatter) {\n formatter = new Intl.NumberFormat(locales, options);\n formatterCache.set(key, formatter);\n }\n\n return formatter;\n}\n\nexport interface DigitRollerGlyph {\n value: number;\n glyph: string;\n}\n\nexport function getDigitRollerGlyphs(\n locales?: string | string[],\n options: Intl.NumberFormatOptions = {},\n): DigitRollerGlyph[] {\n const formatter = getCachedFormatter(locales, {\n numberingSystem: options.numberingSystem,\n useGrouping: false,\n maximumFractionDigits: 0,\n });\n\n return Array.from({ length: 10 }, (_, value) => ({\n value,\n glyph: formatter.format(value),\n }));\n}\n\nfunction getDigitValueMap(\n locales?: string | string[],\n options: Intl.NumberFormatOptions = {},\n): Map<string, number> {\n return new Map(getDigitRollerGlyphs(locales, options).map(({ glyph, value }) => [glyph, value]));\n}\n\nexport function formatDigitRollerValue(\n value: number,\n options: Intl.NumberFormatOptions = {},\n locales?: string | string[],\n prefix = '',\n suffix = '',\n): DigitRollerFormattedNumber {\n const formatter = getCachedFormatter(locales, options);\n const digitValues = getDigitValueMap(locales, options);\n const parts = formatter.formatToParts(value);\n\n const pre: DigitRollerNumberPart[] = [];\n const rawInteger: Intl.NumberFormatPart[] = [];\n const fraction: DigitRollerNumberPart[] = [];\n const post: DigitRollerNumberPart[] = [];\n\n let seenInteger = false;\n let seenDecimal = false;\n\n for (const part of parts) {\n if (part.type === 'integer' || part.type === 'group') {\n seenInteger = true;\n rawInteger.push(part);\n } else if (part.type === 'decimal' || part.type === 'fraction') {\n seenDecimal = true;\n fraction.push({ type: part.type, value: part.value, key: '' });\n } else if (!seenInteger && PRE_TYPES.has(part.type)) {\n pre.push({ type: part.type, value: part.value, key: `pre-${pre.length}` });\n } else if (seenInteger && POST_TYPES.has(part.type)) {\n post.push({ type: part.type, value: part.value, key: `post-${post.length}` });\n } else if (seenDecimal || seenInteger) {\n post.push({ type: part.type, value: part.value, key: `post-${post.length}` });\n } else {\n pre.push({ type: part.type, value: part.value, key: `pre-${pre.length}` });\n }\n }\n\n if (prefix) {\n pre.unshift({ type: 'prefix', value: prefix, key: '__prefix' });\n }\n\n if (suffix) {\n post.push({ type: 'suffix', value: suffix, key: '__suffix' });\n }\n\n const splitInteger: Intl.NumberFormatPart[] = [];\n for (const part of rawInteger) {\n if (part.type === 'integer') {\n for (const char of part.value) {\n splitInteger.push({ type: 'integer', value: char });\n }\n } else {\n splitInteger.push(part);\n }\n }\n\n let digitIndex = 0;\n const reversedInteger: DigitRollerNumberPart[] = [];\n for (let i = splitInteger.length - 1; i >= 0; i--) {\n const part = splitInteger[i];\n if (part.type === 'integer') {\n reversedInteger.push({\n type: 'integer',\n value: part.value,\n key: `i${digitIndex}`,\n numericValue: digitValues.get(part.value) ?? Number(part.value),\n });\n digitIndex++;\n } else {\n reversedInteger.push({ type: 'group', value: part.value, key: `g${digitIndex}` });\n }\n }\n\n let fractionDigitIndex = 0;\n const keyedFraction: DigitRollerNumberPart[] = [];\n for (const part of fraction) {\n if (part.type === 'fraction') {\n for (const char of part.value) {\n keyedFraction.push({\n type: 'fraction',\n value: char,\n key: `f${++fractionDigitIndex}`,\n numericValue: digitValues.get(char) ?? Number(char),\n });\n }\n } else {\n keyedFraction.push({ ...part, key: 'decimal' });\n }\n }\n\n return { pre, integer: reversedInteger.reverse(), fraction: keyedFraction, post };\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface DigitRollerGroupMember {\n canGroupAnimateNow(): boolean;\n prepareGroupedUpdate(): void;\n queueGroupedAnimation(): void;\n}\n\nexport interface DigitRollerGroupCoordinator {\n requestGroupedUpdate(member: DigitRollerGroupMember, applyUpdate: () => void): boolean;\n}\n\nexport const DIGIT_ROLLER_GROUP = new InjectionToken<DigitRollerGroupCoordinator>('DIGIT_ROLLER_GROUP');\n","export interface DigitRollerNumberPart {\n type: string;\n value: string;\n key: string;\n numericValue?: number;\n}\n\nexport interface DigitRollerFormattedNumber {\n pre: DigitRollerNumberPart[];\n integer: DigitRollerNumberPart[];\n fraction: DigitRollerNumberPart[];\n post: DigitRollerNumberPart[];\n}\n\nexport const DIGIT_ROLLER_EMPTY_FORMATTED: DigitRollerFormattedNumber = {\n pre: [],\n integer: [],\n fraction: [],\n post: [],\n};\n\nexport type DigitRollerTrend = number | ((oldValue: number, value: number) => number);\n\nexport type DigitRollerTiming = Omit<KeyframeAnimationOptions, 'composite'>;\n\nexport type DigitRollerEasing = 'default' | 'spring' | 'overshoot' | (string & {});\n\nexport interface DigitRollerDigitConfig {\n max?: number;\n}\n\nexport type DigitRollerDigits = Record<number, DigitRollerDigitConfig>;\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n afterEveryRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n input,\n output,\n PLATFORM_ID,\n signal,\n untracked,\n} from '@angular/core';\nimport { canAnimateDigitRoller } from '../digit-roller-capabilities';\nimport { getDigitRollerGlyphs, formatDigitRollerValue } from '../digit-roller-formatter';\nimport { DIGIT_ROLLER_GROUP } from '../digit-roller-group.token';\nimport {\n DIGIT_ROLLER_EMPTY_FORMATTED,\n DigitRollerDigits,\n DigitRollerEasing,\n DigitRollerFormattedNumber,\n DigitRollerTiming,\n DigitRollerTrend,\n} from '../digit-roller.types';\n\nconst SPIN_EASING =\n 'linear(0,.005,.019,.039,.066,.096,.129,.165,.202,.24,.278,.316,.354,.39,.426,.461,' +\n '.494,.526,.557,.586,.614,.64,.665,.689,.711,.731,.751,.769,.786,.802,.817,.831,.844,' +\n '.856,.867,.877,.887,.896,.904,.912,.919,.925,.931,.937,.942,.947,.951,.955,.959,.962,' +\n '.965,.968,.971,.973,.976,.978,.98,.981,.983,.984,.986,.987,.988,.989,.99,.991,.992,' +\n '.992,.993,.994,.994,.995,.995,.996,.996,.9963,.9967,.9969,.9972,.9975,.9977,.9979,' +\n '.9981,.9982,.9984,.9985,.9987,.9988,.9989,1)';\n\nconst EASING_PRESETS: Record<string, string> = {\n default: SPIN_EASING,\n spring: SPIN_EASING,\n overshoot: 'cubic-bezier(0.34, 1.56, 0.64, 1)',\n};\n\n@Component({\n selector: 'ngs-digit-roller',\n exportAs: 'ngsDigitRoller',\n templateUrl: './digit-roller.html',\n styleUrl: './digit-roller.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ngs-digit-roller',\n '[attr.data-animated]': 'animated()',\n },\n})\nexport class DigitRoller {\n value = input.required<number>();\n format = input<Intl.NumberFormatOptions>({});\n locales = input<string | string[] | undefined>(undefined);\n prefix = input('');\n suffix = input('');\n animated = input(true);\n\n duration = input<number | undefined>(undefined);\n opacityDuration = input<number | undefined>(undefined);\n transformTiming = input<DigitRollerTiming | undefined>(undefined);\n spinTiming = input<DigitRollerTiming | undefined>(undefined);\n opacityTiming = input<DigitRollerTiming | undefined>(undefined);\n\n spinEasing = input<DigitRollerEasing | undefined>(undefined);\n flipEasing = input<DigitRollerEasing | undefined>(undefined);\n trend = input<DigitRollerTrend | undefined>(undefined);\n\n continuous = input(false);\n digits = input<DigitRollerDigits>({});\n respectMotionPreference = input(true);\n stagger = input(0);\n colorOnIncrease = input<string | undefined>(undefined);\n colorOnDecrease = input<string | undefined>(undefined);\n\n animationsStart = output<void>();\n animationsFinish = output<void>();\n\n protected data = signal<DigitRollerFormattedNumber>(DIGIT_ROLLER_EMPTY_FORMATTED);\n protected digitGlyphs = computed(() => getDigitRollerGlyphs(this.locales(), this.format()));\n protected formattedPlainText = computed(() =>\n new Intl.NumberFormat(this.locales(), this.format()).format(this.value()),\n );\n protected effectiveSettings = computed(() => {\n const duration = this.duration() ?? 900;\n\n return {\n duration,\n opacityDuration: this.opacityDuration() ?? 450,\n spinEasing: this.resolveEasing(this.spinEasing()),\n flipEasing: this.resolveEasing(this.flipEasing()),\n transformTiming: this.transformTiming(),\n spinTiming: this.spinTiming(),\n opacityTiming: this.opacityTiming(),\n };\n });\n\n private platformId = inject(PLATFORM_ID);\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private destroyRef = inject(DestroyRef);\n private group = inject(DIGIT_ROLLER_GROUP, { optional: true });\n\n private prevRects = new Map<string, DOMRect>();\n private prevInnerHTML = new Map<string, string>();\n private prevDigitD = new Map<string, string>();\n private prevDigitCurrent = new Map<string, string>();\n private prevDigitValues = new Map<string, number>();\n private prevDigitOrder: string[] = [];\n private prevNumberLeft = 0;\n private prevNumberWidth = 0;\n private prevNumericValue = 0;\n\n private animCount = 0;\n private pending = false;\n private destroyed = false;\n private hasRenderedValue = false;\n private liveAnimations: Animation[] = [];\n private spinCount = new Map<HTMLElement, number>();\n private animationsFinishAbort?: AbortController;\n private pendingCanAnimate = false;\n private pendingHostFont = '';\n private pendingHostColor = '';\n private pendingKeyedEls: Array<{ el: HTMLElement; key: string; newRect: DOMRect }> = [];\n private pendingNumberRect: DOMRect | null = null;\n private pendingNumberOffsetWidth = 0;\n private isNearViewport = true;\n private viewportObserver?: IntersectionObserver;\n\n constructor() {\n this.destroyRef.onDestroy(() => {\n this.destroyed = true;\n this.animationsFinishAbort?.abort();\n this.viewportObserver?.disconnect();\n\n for (const animation of this.liveAnimations) {\n try {\n animation.cancel();\n } catch {\n /* Animation cancellation can throw AbortError in some browsers. */\n }\n }\n\n this.liveAnimations = [];\n });\n\n effect(() => {\n const value = this.value();\n const format = this.format();\n const locales = this.locales();\n const prefix = this.prefix();\n const suffix = this.suffix();\n\n if (!this.hasRenderedValue) {\n untracked(() => this.data.set(formatDigitRollerValue(value, format, locales, prefix, suffix)));\n this.prevNumericValue = value;\n this.hasRenderedValue = true;\n return;\n }\n\n const canAnimateThisUpdate =\n isPlatformBrowser(this.platformId) && this.animated() && this.canAnimateNow();\n\n if (canAnimateThisUpdate) {\n const handledByGroup = this.group?.requestGroupedUpdate(this, () => {\n untracked(() => this.data.set(formatDigitRollerValue(value, format, locales, prefix, suffix)));\n });\n\n if (handledByGroup) {\n return;\n }\n\n this.snapshot();\n untracked(() => this.data.set(formatDigitRollerValue(value, format, locales, prefix, suffix)));\n this.pending = true;\n } else {\n untracked(() => this.data.set(formatDigitRollerValue(value, format, locales, prefix, suffix)));\n this.prevNumericValue = value;\n }\n });\n\n if (isPlatformBrowser(this.platformId)) {\n if (typeof IntersectionObserver !== 'undefined') {\n this.viewportObserver = new IntersectionObserver(\n (entries) => {\n this.isNearViewport = entries[entries.length - 1].isIntersecting;\n },\n { rootMargin: '240px' },\n );\n this.viewportObserver.observe(this.elementRef.nativeElement);\n }\n\n afterEveryRender({\n earlyRead: () => {\n if (this.pending) {\n this.readAnimationState();\n }\n },\n write: () => {\n if (this.pending) {\n this.pending = false;\n this.fireAnimations();\n }\n },\n });\n }\n }\n\n canGroupAnimateNow(): boolean {\n return isPlatformBrowser(this.platformId) && this.animated() && this.canAnimateNow();\n }\n\n prepareGroupedUpdate(): void {\n this.snapshot();\n }\n\n queueGroupedAnimation(): void {\n this.pending = true;\n }\n\n private snapshot(): void {\n const host = this.elementRef.nativeElement;\n this.prevRects.clear();\n this.prevInnerHTML.clear();\n this.prevDigitD.clear();\n this.prevDigitCurrent.clear();\n this.prevDigitValues.clear();\n this.prevDigitOrder = [];\n\n const number = host.querySelector<HTMLElement>('.ngs-digit-roller__number');\n if (number) {\n const numberRect = number.getBoundingClientRect();\n this.prevNumberLeft = numberRect.left;\n this.prevNumberWidth = numberRect.width;\n }\n\n untracked(() => {\n [...this.data().integer, ...this.data().fraction].forEach((part) => {\n if (part.type === 'integer' || part.type === 'fraction') {\n this.prevDigitValues.set(part.key, this.getPartDigitValue(part));\n this.prevDigitOrder.push(part.key);\n }\n });\n });\n\n host.querySelectorAll<HTMLElement>('[data-key]').forEach((element) => {\n const key = element.getAttribute('data-key')!;\n this.prevRects.set(key, element.getBoundingClientRect());\n this.prevInnerHTML.set(key, element.innerHTML);\n\n if (element.classList.contains('ngs-digit-roller__digit')) {\n const styles = getComputedStyle(element);\n this.prevDigitD.set(key, styles.getPropertyValue('--_ngs-digit-roller-d').trim() || '0');\n this.prevDigitCurrent.set(\n key,\n (element.style.getPropertyValue('--_ngs-digit-roller-current') || '0').trim(),\n );\n }\n });\n }\n\n private readAnimationState(): void {\n if (this.destroyed || !this.canAnimateNow()) {\n this.pendingCanAnimate = false;\n return;\n }\n\n this.pendingCanAnimate = true;\n const host = this.elementRef.nativeElement;\n const hostStyles = getComputedStyle(host);\n\n this.pendingHostFont = hostStyles.font;\n this.pendingHostColor = hostStyles.color;\n this.pendingKeyedEls = [];\n\n host.querySelectorAll<HTMLElement>('[data-key]').forEach((element) => {\n this.pendingKeyedEls.push({\n el: element,\n key: element.getAttribute('data-key')!,\n newRect: element.getBoundingClientRect(),\n });\n });\n\n const number = host.querySelector<HTMLElement>('.ngs-digit-roller__number');\n this.pendingNumberRect = number ? number.getBoundingClientRect() : null;\n this.pendingNumberOffsetWidth = number ? number.offsetWidth : 0;\n }\n\n private fireAnimations(): void {\n if (this.destroyed) {\n return;\n }\n\n const host = this.elementRef.nativeElement;\n const newNumericValue = untracked(() => this.value());\n\n if (!this.pendingCanAnimate) {\n this.prevNumericValue = newNumericValue;\n return;\n }\n\n const settings = this.effectiveSettings();\n const duration = settings.duration;\n const opacityDuration = settings.opacityDuration;\n const trend = this.resolveTrend(this.prevNumericValue, newNumericValue);\n const staggerMs = this.stagger();\n\n const baseTransformTiming = settings.transformTiming ?? {\n duration,\n easing: settings.flipEasing,\n };\n const spinOptions: KeyframeAnimationOptions = {\n ...baseTransformTiming,\n easing: settings.spinEasing,\n ...(settings.spinTiming ?? {}),\n duration: settings.spinTiming?.duration ?? baseTransformTiming.duration,\n fill: 'none',\n composite: 'accumulate',\n };\n const flipOptions: KeyframeAnimationOptions = {\n ...baseTransformTiming,\n duration: baseTransformTiming.duration,\n fill: 'none',\n composite: 'accumulate',\n };\n const fadeOptions: KeyframeAnimationOptions = {\n duration: opacityDuration,\n easing: 'ease-out',\n fill: 'none',\n composite: 'accumulate',\n ...(settings.opacityTiming ?? {}),\n };\n\n const continuousStartPosition =\n this.continuous() && duration > 0 && trend !== 0 ? this.getContinuousStartPosition() : undefined;\n\n const batch: Animation[] = [];\n const newKeys = new Set<string>();\n let elementIndex = 0;\n const number = host.querySelector<HTMLElement>('.ngs-digit-roller__number');\n\n for (const { el, key, newRect } of this.pendingKeyedEls) {\n newKeys.add(key);\n const prevRect = this.prevRects.get(key);\n const staggerDelay = staggerMs > 0 ? elementIndex * staggerMs : 0;\n elementIndex++;\n\n if (el.classList.contains('ngs-digit-roller__digit')) {\n const digit = this.getDigitValue(key);\n const fromDigit = this.prevDigitValues.has(key) ? this.prevDigitValues.get(key)! : 0;\n const rawDelta = this.getTrendDelta(fromDigit, digit, trend, this.getDigitLength(key));\n const digitPosition = this.getDigitPosition(key);\n const isLowerUnchanged =\n this.continuous() &&\n rawDelta === 0 &&\n continuousStartPosition !== undefined &&\n digitPosition !== undefined &&\n continuousStartPosition >= digitPosition;\n const delta = isLowerUnchanged ? this.getDigitLength(key) * trend : rawDelta;\n\n if (delta !== 0 && duration > 0) {\n this.incrementSpin(el);\n const animation = el.animate(\n { '--_ngs-digit-roller-d': [-delta, 0] } as PropertyIndexedKeyframes,\n spinOptions,\n );\n batch.push(animation);\n animation.finished.then(() => this.decrementSpin(el)).catch(() => this.decrementSpin(el));\n }\n\n this.animatePositionOrFade(el, prevRect, newRect, flipOptions, fadeOptions, staggerDelay, batch);\n } else {\n this.animatePositionOrFade(el, prevRect, newRect, flipOptions, fadeOptions, staggerDelay, batch);\n }\n }\n\n let exitIndex = 0;\n this.prevRects.forEach((rect, key) => {\n if (newKeys.has(key)) {\n return;\n }\n\n const ghost = this.buildGhost(key, rect, this.pendingHostFont, this.pendingHostColor);\n host.appendChild(ghost);\n ghost.style.setProperty('--_ngs-digit-roller-d-opacity', '-0.999');\n\n const staggerDelay = staggerMs > 0 ? exitIndex * staggerMs : 0;\n exitIndex++;\n\n const animation = ghost.animate(\n { '--_ngs-digit-roller-d-opacity': [0.999, 0] } as PropertyIndexedKeyframes,\n this.addStaggerDelay(fadeOptions, staggerDelay),\n );\n batch.push(animation);\n animation.finished.then(() => ghost.remove()).catch(() => ghost.remove());\n });\n\n if (number && this.pendingNumberRect) {\n const rect = this.pendingNumberRect;\n const dx = this.prevNumberLeft - rect.left;\n const width = rect.width || this.pendingNumberOffsetWidth;\n const dWidth = this.prevNumberWidth - width;\n\n number.style.setProperty('--_ngs-digit-roller-width', String(width || this.prevNumberWidth || 1));\n\n if (Math.abs(dx) > 0.5 || Math.abs(dWidth) > 0.5) {\n batch.push(\n number.animate(\n {\n '--_ngs-digit-roller-dx': [`${dx}px`, '0px'],\n '--_ngs-digit-roller-d-width': [dWidth, 0],\n } as PropertyIndexedKeyframes,\n flipOptions,\n ),\n );\n }\n }\n\n if (duration > 0) {\n const colorIncrease = this.colorOnIncrease();\n const colorDecrease = this.colorOnDecrease();\n\n if (trend > 0 && colorIncrease) {\n batch.push(\n host.animate([{ color: colorIncrease }, { color: '' }], {\n duration: Math.max(duration, 400),\n easing: 'ease-out',\n fill: 'none',\n }),\n );\n } else if (trend < 0 && colorDecrease) {\n batch.push(\n host.animate([{ color: colorDecrease }, { color: '' }], {\n duration: Math.max(duration, 400),\n easing: 'ease-out',\n fill: 'none',\n }),\n );\n }\n }\n\n this.prevNumericValue = newNumericValue;\n\n if (batch.length === 0) {\n return;\n }\n\n this.liveAnimations.push(...batch);\n this.animCount++;\n\n if (this.animationsFinishAbort) {\n this.animationsFinishAbort.abort();\n } else {\n this.animationsStart.emit();\n }\n\n const finishController = new AbortController();\n this.animationsFinishAbort = finishController;\n\n Promise.allSettled(batch.map((animation) => animation.finished)).then(() => {\n const batchSet = new Set(batch);\n this.liveAnimations = this.liveAnimations.filter((animation) => !batchSet.has(animation));\n this.animCount--;\n\n if (this.animCount === 0 && !this.destroyed && this.animationsFinishAbort) {\n this.animationsFinish.emit();\n this.animationsFinishAbort = undefined;\n }\n });\n }\n\n private animatePositionOrFade(\n element: HTMLElement,\n prevRect: DOMRect | undefined,\n newRect: DOMRect,\n flipOptions: KeyframeAnimationOptions,\n fadeOptions: KeyframeAnimationOptions,\n staggerDelay: number,\n batch: Animation[],\n ): void {\n if (prevRect) {\n const dx = prevRect.left - newRect.left;\n\n if (Math.abs(dx) > 0.5) {\n batch.push(\n element.animate(\n [{ transform: `translateX(${dx}px)` }, { transform: 'translateX(0)' }],\n flipOptions,\n ),\n );\n }\n } else {\n batch.push(\n element.animate(\n { '--_ngs-digit-roller-d-opacity': [-0.9999, 0] } as PropertyIndexedKeyframes,\n this.addStaggerDelay(fadeOptions, staggerDelay),\n ),\n );\n }\n }\n\n private getDigitValue(key: string): number {\n const part = [...this.data().integer, ...this.data().fraction].find((item) => item.key === key);\n return part ? this.getPartDigitValue(part) : 0;\n }\n\n private getPartDigitValue(part: { value: string; numericValue?: number }): number {\n return part.numericValue ?? Number(part.value);\n }\n\n private resolveTrend(oldValue: number, newValue: number): number {\n const configured = this.trend();\n const trend =\n typeof configured === 'function'\n ? configured(oldValue, newValue)\n : (configured ?? Math.sign(newValue - oldValue));\n return Math.sign(trend);\n }\n\n private canAnimateNow(): boolean {\n const host = this.elementRef.nativeElement;\n\n return (\n canAnimateDigitRoller({ respectMotionPreference: this.respectMotionPreference() }) &&\n this.animated() &&\n host.ownerDocument.visibilityState === 'visible' &&\n this.isHostNearViewport(host)\n );\n }\n\n private isHostNearViewport(host: HTMLElement): boolean {\n if (this.viewportObserver) {\n return this.isNearViewport;\n }\n\n const rect = host.getBoundingClientRect();\n if (rect.width <= 0 || rect.height <= 0) {\n return false;\n }\n\n const windowRef = host.ownerDocument.defaultView;\n if (!windowRef) {\n return true;\n }\n\n const margin = 240;\n return (\n rect.bottom >= -margin &&\n rect.right >= -margin &&\n rect.top <= windowRef.innerHeight + margin &&\n rect.left <= windowRef.innerWidth + margin\n );\n }\n\n private resolveEasing(easing: DigitRollerEasing | undefined): string {\n return easing ? (EASING_PRESETS[easing] ?? easing) : SPIN_EASING;\n }\n\n private getContinuousStartPosition(): number | undefined {\n const current = new Map<string, number>();\n const currentOrder: string[] = [];\n\n untracked(() => {\n [...this.data().integer, ...this.data().fraction].forEach((part) => {\n if (part.type === 'integer' || part.type === 'fraction') {\n current.set(part.key, this.getPartDigitValue(part));\n currentOrder.push(part.key);\n }\n });\n });\n\n const firstChangedPrev = this.prevDigitOrder.find(\n (key) => current.get(key) !== this.prevDigitValues.get(key),\n );\n const firstChangedCurrent = currentOrder.find(\n (key) => current.get(key) !== this.prevDigitValues.get(key),\n );\n const start = Math.max(\n this.getDigitPosition(firstChangedPrev) ?? -Infinity,\n this.getDigitPosition(firstChangedCurrent) ?? -Infinity,\n );\n\n return Number.isFinite(start) ? start : undefined;\n }\n\n private getDigitPosition(key?: string): number | undefined {\n if (!key) {\n return undefined;\n }\n\n if (key.startsWith('i')) {\n return Number(key.slice(1));\n }\n\n if (key.startsWith('f')) {\n return -Number(key.slice(1));\n }\n\n return undefined;\n }\n\n private getDigitLength(key: string): number {\n if (!key.startsWith('i')) {\n return 10;\n }\n\n const position = Number(key.slice(1));\n const max = this.digits()[position]?.max;\n return max !== undefined ? max + 1 : 10;\n }\n\n protected digitLengthForKey(key: string): number {\n return this.getDigitLength(key);\n }\n\n protected digitGlyphsForKey(key: string): { value: number; glyph: string }[] {\n return this.digitGlyphs().slice(0, this.getDigitLength(key));\n }\n\n private addStaggerDelay(\n options: KeyframeAnimationOptions,\n staggerDelay: number,\n ): KeyframeAnimationOptions {\n const currentDelay = typeof options.delay === 'number' ? options.delay : 0;\n return { ...options, delay: currentDelay + staggerDelay };\n }\n\n private getTrendDelta(from: number, to: number, trend: number, length = 10): number {\n const diff = to - from;\n const resolvedTrend = trend || Math.sign(diff);\n\n if (resolvedTrend > 0 && to < from) {\n return length - from + to;\n }\n\n if (resolvedTrend < 0 && to > from) {\n return to - length - from;\n }\n\n return diff;\n }\n\n private incrementSpin(element: HTMLElement): void {\n const count = (this.spinCount.get(element) ?? 0) + 1;\n this.spinCount.set(element, count);\n\n if (count === 1) {\n element.classList.add('ngs-digit-roller__digit--spinning');\n }\n }\n\n private decrementSpin(element: HTMLElement): void {\n const count = Math.max(0, (this.spinCount.get(element) ?? 1) - 1);\n\n if (count === 0) {\n this.spinCount.delete(element);\n element.classList.remove('ngs-digit-roller__digit--spinning');\n } else {\n this.spinCount.set(element, count);\n }\n }\n\n private buildGhost(key: string, rect: DOMRect, font: string, color: string): HTMLElement {\n const ghost = document.createElement('span');\n ghost.style.cssText =\n `position:fixed;left:${rect.left}px;top:${rect.top}px;` +\n `width:${rect.width}px;height:${rect.height}px;` +\n `pointer-events:none;overflow:hidden;display:inline-flex;` +\n `align-items:center;font:${font};color:${color}`;\n ghost.className = 'ngs-digit-roller__ghost';\n\n const savedHTML = this.prevInnerHTML.get(key);\n if (savedHTML) {\n ghost.innerHTML = savedHTML;\n\n const savedD = this.prevDigitD.get(key);\n const savedCurrent = this.prevDigitCurrent.get(key);\n\n if (savedD !== undefined) {\n ghost.style.setProperty('--_ngs-digit-roller-d', savedD);\n }\n\n if (savedCurrent !== undefined) {\n ghost.style.setProperty('--_ngs-digit-roller-current', savedCurrent);\n }\n\n ghost.querySelectorAll<HTMLElement>('[inert]').forEach((element) => {\n element.style.display = 'none';\n });\n }\n\n return ghost;\n }\n}\n","<span class=\"ngs-digit-roller__number\" aria-hidden=\"true\">\n <span class=\"ngs-digit-roller__number-inner\">\n @if (data().pre.length) {\n <span class=\"ngs-digit-roller__section ngs-digit-roller__section--pre\">\n @for (part of data().pre; track part.key) {\n <span class=\"ngs-digit-roller__literal\" [attr.data-key]=\"part.key\">{{ part.value }}</span>\n }\n </span>\n }\n\n <span class=\"ngs-digit-roller__section ngs-digit-roller__section--integer\">\n @for (part of data().integer; track part.key) {\n @if (part.type === 'integer') {\n <span\n class=\"ngs-digit-roller__digit\"\n [attr.data-key]=\"part.key\"\n [style.--_ngs-digit-roller-current]=\"part.numericValue\"\n [style.--_ngs-digit-roller-len]=\"digitLengthForKey(part.key)\"\n >\n @for (digit of digitGlyphsForKey(part.key); track digit.value) {\n <span\n class=\"ngs-digit-roller__digit-number\"\n [style.--_ngs-digit-roller-n]=\"digit.value\"\n [attr.inert]=\"digit.value !== part.numericValue ? '' : null\"\n >\n {{ digit.glyph }}\n </span>\n }\n </span>\n } @else {\n <span class=\"ngs-digit-roller__separator\" [attr.data-key]=\"part.key\">{{ part.value }}</span>\n }\n }\n </span>\n\n @if (data().fraction.length) {\n <span class=\"ngs-digit-roller__section ngs-digit-roller__section--fraction\">\n @for (part of data().fraction; track part.key) {\n @if (part.type === 'fraction') {\n <span\n class=\"ngs-digit-roller__digit\"\n [attr.data-key]=\"part.key\"\n [style.--_ngs-digit-roller-current]=\"part.numericValue\"\n [style.--_ngs-digit-roller-len]=\"digitLengthForKey(part.key)\"\n >\n @for (digit of digitGlyphsForKey(part.key); track digit.value) {\n <span\n class=\"ngs-digit-roller__digit-number\"\n [style.--_ngs-digit-roller-n]=\"digit.value\"\n [attr.inert]=\"digit.value !== part.numericValue ? '' : null\"\n >\n {{ digit.glyph }}\n </span>\n }\n </span>\n } @else {\n <span class=\"ngs-digit-roller__separator\" [attr.data-key]=\"part.key\">{{ part.value }}</span>\n }\n }\n </span>\n }\n\n @if (data().post.length) {\n <span class=\"ngs-digit-roller__section ngs-digit-roller__section--post\">\n @for (part of data().post; track part.key) {\n <span class=\"ngs-digit-roller__literal\" [attr.data-key]=\"part.key\">{{ part.value }}</span>\n }\n </span>\n }\n </span>\n</span>\n\n<span class=\"ngs-digit-roller__sr-only\">{{ formattedPlainText() }}</span>\n","import { contentChildren, Directive, forwardRef } from '@angular/core';\nimport { DigitRoller } from './digit-roller/digit-roller';\nimport {\n DIGIT_ROLLER_GROUP,\n DigitRollerGroupCoordinator,\n DigitRollerGroupMember,\n} from './digit-roller-group.token';\n\n@Directive({\n selector: '[ngsDigitRollerGroup]',\n providers: [\n {\n provide: DIGIT_ROLLER_GROUP,\n useExisting: forwardRef(() => DigitRollerGroupDirective),\n },\n ],\n})\nexport class DigitRollerGroupDirective implements DigitRollerGroupCoordinator {\n private children = contentChildren(DigitRoller, { descendants: true });\n private pendingUpdates = new Map<DigitRollerGroupMember, () => void>();\n private flushQueued = false;\n\n requestGroupedUpdate(member: DigitRollerGroupMember, applyUpdate: () => void): boolean {\n if (!member.canGroupAnimateNow()) {\n return false;\n }\n\n this.pendingUpdates.set(member, applyUpdate);\n\n if (!this.flushQueued) {\n this.flushQueued = true;\n queueMicrotask(() => this.flushGroupedUpdates());\n }\n\n return true;\n }\n\n private flushGroupedUpdates(): void {\n this.flushQueued = false;\n\n if (this.pendingUpdates.size === 0) {\n return;\n }\n\n const members = this.children().filter((child) => child.canGroupAnimateNow());\n\n for (const member of members) {\n member.prepareGroupedUpdate();\n }\n\n for (const applyUpdate of this.pendingUpdates.values()) {\n applyUpdate();\n }\n\n this.pendingUpdates.clear();\n\n for (const member of members) {\n member.queueGroupedAnimation();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}