@taiga-ui/core 2.39.0 → 2.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/bundles/taiga-ui-core-components-data-list.umd.js.map +1 -1
  2. package/bundles/taiga-ui-core-components-data-list.umd.min.js.map +1 -1
  3. package/bundles/taiga-ui-core-components-group.umd.js +1 -0
  4. package/bundles/taiga-ui-core-components-group.umd.js.map +1 -1
  5. package/bundles/taiga-ui-core-components-group.umd.min.js +1 -1
  6. package/bundles/taiga-ui-core-components-group.umd.min.js.map +1 -1
  7. package/bundles/taiga-ui-core-components-hints-host.umd.js +16 -1
  8. package/bundles/taiga-ui-core-components-hints-host.umd.js.map +1 -1
  9. package/bundles/taiga-ui-core-components-hints-host.umd.min.js +2 -2
  10. package/bundles/taiga-ui-core-components-hints-host.umd.min.js.map +1 -1
  11. package/bundles/taiga-ui-core-components-root.umd.js.map +1 -1
  12. package/bundles/taiga-ui-core-components-root.umd.min.js.map +1 -1
  13. package/bundles/taiga-ui-core-constants.umd.js +3 -1
  14. package/bundles/taiga-ui-core-constants.umd.js.map +1 -1
  15. package/bundles/taiga-ui-core-constants.umd.min.js +1 -1
  16. package/bundles/taiga-ui-core-constants.umd.min.js.map +1 -1
  17. package/bundles/taiga-ui-core-directives-mask-accessor.umd.js.map +1 -1
  18. package/bundles/taiga-ui-core-directives-mask-accessor.umd.min.js.map +1 -1
  19. package/bundles/taiga-ui-core-pipes-calendar-sheet.umd.js.map +1 -1
  20. package/bundles/taiga-ui-core-pipes-calendar-sheet.umd.min.js.map +1 -1
  21. package/bundles/taiga-ui-core-pipes-format-number.umd.js +4 -2
  22. package/bundles/taiga-ui-core-pipes-format-number.umd.js.map +1 -1
  23. package/bundles/taiga-ui-core-pipes-format-number.umd.min.js +1 -1
  24. package/bundles/taiga-ui-core-pipes-format-number.umd.min.js.map +1 -1
  25. package/bundles/taiga-ui-core-services.umd.js.map +1 -1
  26. package/bundles/taiga-ui-core-services.umd.min.js.map +1 -1
  27. package/bundles/taiga-ui-core-utils-format.umd.js +9 -8
  28. package/bundles/taiga-ui-core-utils-format.umd.js.map +1 -1
  29. package/bundles/taiga-ui-core-utils-format.umd.min.js +1 -1
  30. package/bundles/taiga-ui-core-utils-format.umd.min.js.map +1 -1
  31. package/bundles/taiga-ui-core-utils-mask.umd.js +3 -2
  32. package/bundles/taiga-ui-core-utils-mask.umd.js.map +1 -1
  33. package/bundles/taiga-ui-core-utils-mask.umd.min.js +1 -1
  34. package/bundles/taiga-ui-core-utils-mask.umd.min.js.map +1 -1
  35. package/components/data-list/data-list.component.d.ts +1 -1
  36. package/components/group/taiga-ui-core-components-group.metadata.json +1 -1
  37. package/components/hints-host/taiga-ui-core-components-hints-host.metadata.json +1 -1
  38. package/components/root/root.component.d.ts +2 -2
  39. package/components/root/taiga-ui-core-components-root.metadata.json +1 -1
  40. package/constants/decimal-symbols.d.ts +1 -1
  41. package/constants/regexp.d.ts +1 -0
  42. package/constants/taiga-ui-core-constants.metadata.json +1 -1
  43. package/constants/version.d.ts +1 -1
  44. package/directives/mask-accessor/mask-accessor.directive.d.ts +1 -1
  45. package/esm2015/components/data-list/data-list-dropdown-manager.directive.js +1 -1
  46. package/esm2015/components/data-list/data-list.component.js +1 -1
  47. package/esm2015/components/group/group.module.js +2 -1
  48. package/esm2015/components/hints-host/hint-box/hint-box.component.js +17 -2
  49. package/esm2015/components/root/root.component.js +1 -1
  50. package/esm2015/constants/decimal-symbols.js +1 -1
  51. package/esm2015/constants/regexp.js +2 -1
  52. package/esm2015/constants/version.js +2 -2
  53. package/esm2015/directives/mask-accessor/mask-accessor.directive.js +1 -1
  54. package/esm2015/interfaces/data-list-accessor.js +1 -1
  55. package/esm2015/pipes/calendar-sheet/calendar-sheet.pipe.js +1 -1
  56. package/esm2015/pipes/format-number/format-number.pipe.js +4 -3
  57. package/esm2015/services/hint.service.js +1 -1
  58. package/esm2015/types/direction.js +1 -1
  59. package/esm2015/utils/format/format-number.js +10 -9
  60. package/esm2015/utils/mask/create-auto-corrected-money-pipe.js +3 -3
  61. package/esm2015/utils/mask/create-number-mask.js +1 -1
  62. package/esm5/components/data-list/data-list-dropdown-manager.directive.js +1 -1
  63. package/esm5/components/data-list/data-list.component.js +1 -1
  64. package/esm5/components/group/group.module.js +2 -1
  65. package/esm5/components/hints-host/hint-box/hint-box.component.js +17 -2
  66. package/esm5/components/root/root.component.js +1 -1
  67. package/esm5/constants/decimal-symbols.js +1 -1
  68. package/esm5/constants/regexp.js +2 -1
  69. package/esm5/constants/version.js +2 -2
  70. package/esm5/directives/mask-accessor/mask-accessor.directive.js +1 -1
  71. package/esm5/interfaces/data-list-accessor.js +1 -1
  72. package/esm5/pipes/calendar-sheet/calendar-sheet.pipe.js +1 -1
  73. package/esm5/pipes/format-number/format-number.pipe.js +5 -3
  74. package/esm5/services/hint.service.js +1 -1
  75. package/esm5/types/direction.js +1 -1
  76. package/esm5/utils/format/format-number.js +10 -9
  77. package/esm5/utils/mask/create-auto-corrected-money-pipe.js +4 -3
  78. package/esm5/utils/mask/create-number-mask.js +1 -1
  79. package/fesm2015/taiga-ui-core-components-data-list.js.map +1 -1
  80. package/fesm2015/taiga-ui-core-components-group.js +1 -0
  81. package/fesm2015/taiga-ui-core-components-group.js.map +1 -1
  82. package/fesm2015/taiga-ui-core-components-hints-host.js +16 -1
  83. package/fesm2015/taiga-ui-core-components-hints-host.js.map +1 -1
  84. package/fesm2015/taiga-ui-core-components-root.js.map +1 -1
  85. package/fesm2015/taiga-ui-core-constants.js +3 -2
  86. package/fesm2015/taiga-ui-core-constants.js.map +1 -1
  87. package/fesm2015/taiga-ui-core-directives-mask-accessor.js.map +1 -1
  88. package/fesm2015/taiga-ui-core-pipes-calendar-sheet.js.map +1 -1
  89. package/fesm2015/taiga-ui-core-pipes-format-number.js +3 -2
  90. package/fesm2015/taiga-ui-core-pipes-format-number.js.map +1 -1
  91. package/fesm2015/taiga-ui-core-services.js.map +1 -1
  92. package/fesm2015/taiga-ui-core-utils-format.js +9 -8
  93. package/fesm2015/taiga-ui-core-utils-format.js.map +1 -1
  94. package/fesm2015/taiga-ui-core-utils-mask.js +2 -2
  95. package/fesm2015/taiga-ui-core-utils-mask.js.map +1 -1
  96. package/fesm5/taiga-ui-core-components-data-list.js.map +1 -1
  97. package/fesm5/taiga-ui-core-components-group.js +1 -0
  98. package/fesm5/taiga-ui-core-components-group.js.map +1 -1
  99. package/fesm5/taiga-ui-core-components-hints-host.js +16 -1
  100. package/fesm5/taiga-ui-core-components-hints-host.js.map +1 -1
  101. package/fesm5/taiga-ui-core-components-root.js.map +1 -1
  102. package/fesm5/taiga-ui-core-constants.js +3 -2
  103. package/fesm5/taiga-ui-core-constants.js.map +1 -1
  104. package/fesm5/taiga-ui-core-directives-mask-accessor.js.map +1 -1
  105. package/fesm5/taiga-ui-core-pipes-calendar-sheet.js.map +1 -1
  106. package/fesm5/taiga-ui-core-pipes-format-number.js +4 -2
  107. package/fesm5/taiga-ui-core-pipes-format-number.js.map +1 -1
  108. package/fesm5/taiga-ui-core-services.js.map +1 -1
  109. package/fesm5/taiga-ui-core-utils-format.js +9 -8
  110. package/fesm5/taiga-ui-core-utils-format.js.map +1 -1
  111. package/fesm5/taiga-ui-core-utils-mask.js +3 -2
  112. package/fesm5/taiga-ui-core-utils-mask.js.map +1 -1
  113. package/interfaces/data-list-accessor.d.ts +1 -1
  114. package/package.json +4 -4
  115. package/pipes/calendar-sheet/calendar-sheet.pipe.d.ts +1 -1
  116. package/pipes/format-number/format-number.pipe.d.ts +2 -1
  117. package/services/hint.service.d.ts +1 -1
  118. package/types/direction.d.ts +1 -1
  119. package/utils/mask/create-auto-corrected-money-pipe.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-components-hints-host.js","sources":["ng://@taiga-ui/core/components/hints-host/hints-host.component.ts","ng://@taiga-ui/core/components/hints-host/hint-box/hint-box.component.ts","ng://@taiga-ui/core/components/hints-host/hint-box/hint-box.module.ts","ng://@taiga-ui/core/components/hints-host/hints-host.module.ts","ng://@taiga-ui/core/components/hints-host/taiga-ui-core-components-hints-host.ts"],"sourcesContent":["import {AnimationOptions} from '@angular/animations';\nimport {ChangeDetectionStrategy, Component, ElementRef, Inject} from '@angular/core';\nimport {AbstractTuiHint} from '@taiga-ui/core/abstract';\nimport {tuiFadeIn} from '@taiga-ui/core/animations';\nimport {TuiHintDirective} from '@taiga-ui/core/directives/hint';\nimport {TuiHintService} from '@taiga-ui/core/services';\nimport {TUI_ANIMATION_OPTIONS} from '@taiga-ui/core/tokens';\n\n@Component({\n selector: 'tui-hints-host',\n templateUrl: './hints-host.template.html',\n styleUrls: ['./hints-host.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [tuiFadeIn],\n host: {\n 'aria-live': 'polite',\n },\n})\nexport class TuiHintsHostComponent {\n readonly animation = {\n value: '',\n ...this.options,\n } as const;\n\n constructor(\n @Inject(TUI_ANIMATION_OPTIONS) private readonly options: AnimationOptions,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(TuiHintService) readonly hints$: TuiHintService,\n ) {}\n\n get clientRect(): ClientRect {\n return this.elementRef.nativeElement.getBoundingClientRect();\n }\n\n onHovered(hovered: boolean, directive: AbstractTuiHint) {\n if (directive instanceof TuiHintDirective) {\n directive.componentHovered$.next(hovered);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n NgZone,\n ViewChild,\n} from '@angular/core';\nimport {ANIMATION_FRAME, WINDOW} from '@ng-web-apis/common';\nimport {px, TuiDestroyService, tuiPure, tuiZonefree} from '@taiga-ui/cdk';\nimport {AbstractTuiHint} from '@taiga-ui/core/abstract';\nimport {TuiPointerHintDirective} from '@taiga-ui/core/directives/pointer-hint';\nimport {TuiMedia} from '@taiga-ui/core/interfaces';\nimport {TUI_MEDIA} from '@taiga-ui/core/tokens';\nimport {TuiDirection, TuiHintModeT} from '@taiga-ui/core/types';\nimport {Observable} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {TuiHintsHostComponent} from '../hints-host.component';\n\nconst SPACE = 8;\nconst BORDER_WIDTH = 1;\nconst LEFT_PADDING = 16;\nconst TOP_PADDING = 12;\nconst ARROW_SIZE = 8;\nconst ARROW_OFFSET = 16;\nconst ARROWHEAD_OFFSET = ARROW_OFFSET + (ARROW_SIZE * Math.sqrt(2)) / 2;\nconst reverseDirectionsVertical: {[key in TuiDirection]: TuiDirection} = {\n 'top-left': 'bottom-left',\n 'top-right': 'bottom-right',\n 'bottom-left': 'top-left',\n 'bottom-right': 'top-right',\n left: 'right',\n right: 'left',\n};\nconst reverseDirectionsHorizontal: {[key in TuiDirection]: TuiDirection} = {\n 'top-left': 'top-right',\n 'top-right': 'top-left',\n 'bottom-left': 'bottom-right',\n 'bottom-right': 'bottom-left',\n left: 'right',\n right: 'left',\n};\n\n// TODO: consider abstracting UI and move to CDK, split hint and overflow\n// Ambient type cannot be used without dynamic https://github.com/angular/angular/issues/23395\n// @dynamic\n@Component({\n selector: 'tui-hint-box[hint]',\n templateUrl: './hint-box.template.html',\n styleUrls: ['./hint-box.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TuiDestroyService],\n})\nexport class TuiHintBoxComponent {\n @ViewChild('arrow')\n private readonly arrow?: ElementRef<HTMLElement>;\n\n @Input()\n hint!: AbstractTuiHint;\n\n constructor(\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n @Inject(TuiDestroyService) destroy$: Observable<void>,\n @Inject(NgZone) ngZone: NgZone,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(WINDOW) private readonly windowRef: Window,\n @Inject(TUI_MEDIA) private readonly media: TuiMedia,\n @Inject(TuiHintsHostComponent)\n private readonly hintsHost: TuiHintsHostComponent,\n ) {\n animationFrame$\n .pipe(tuiZonefree(ngZone), takeUntil(destroy$))\n .subscribe(() => this.calculatePosition());\n }\n\n @tuiPure\n @HostBinding('class._untouchable')\n get isUntouchable(): boolean {\n return this.hint instanceof TuiPointerHintDirective;\n }\n\n @HostBinding('attr.data-mode')\n get mode(): TuiHintModeT | null {\n return this.hint.mode;\n }\n\n get isMobile(): boolean {\n return this.windowRef.innerWidth <= this.media.mobile;\n }\n\n /**\n * Calculates wrapper position.\n * Styles are set directly to avoid visual shake of element\n */\n private calculatePosition() {\n if (this.mode !== 'overflow') {\n this.calculateCoordinates();\n } else {\n this.setOverflowStyles();\n }\n }\n\n private calculateCoordinates() {\n if (this.isMobile) {\n this.calculateMobileCoordinates();\n\n return;\n }\n\n const hostRect = this.hint.getElementClientRect();\n const portalRect = this.hintsHost.clientRect;\n const tooltip = this.elementRef.nativeElement;\n const {style} = tooltip;\n const tooltipRect = tooltip.getBoundingClientRect();\n const isHostLong = hostRect.width > ARROWHEAD_OFFSET * 2;\n const directions: TuiDirection[] = [\n 'left',\n 'right',\n 'bottom-left',\n 'bottom-right',\n 'top-left',\n 'top-right',\n ];\n\n let top = 0;\n let left = 0;\n let {direction} = this.hint;\n\n const horizontalTop =\n hostRect.top + hostRect.height / 2 - tooltipRect.height / 2 - portalRect.top;\n const horizontalLeft =\n hostRect.left - tooltipRect.width - SPACE - portalRect.left;\n const horizontalRight = hostRect.left + hostRect.width + SPACE - portalRect.left;\n const verticalBottom = hostRect.bottom + SPACE - portalRect.top;\n const verticalTop = hostRect.top - tooltipRect.height - SPACE - portalRect.top;\n const verticalRight = isHostLong\n ? hostRect.left - portalRect.left\n : hostRect.left + hostRect.width / 2 - ARROWHEAD_OFFSET - portalRect.left;\n const verticalLeft = isHostLong\n ? hostRect.left - tooltipRect.width + hostRect.width - portalRect.left\n : hostRect.left -\n tooltipRect.width +\n hostRect.width / 2 +\n ARROWHEAD_OFFSET -\n portalRect.left;\n\n directions.splice(directions.indexOf(direction), 1);\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n switch (direction) {\n case 'left':\n top = horizontalTop;\n left = horizontalLeft;\n break;\n case 'right':\n top = horizontalTop;\n left = horizontalRight;\n break;\n case 'top-right':\n top = verticalTop;\n left = verticalRight;\n break;\n case 'top-left':\n top = verticalTop;\n left = verticalLeft;\n break;\n case 'bottom-right':\n top = verticalBottom;\n left = verticalRight;\n break;\n case 'bottom-left':\n top = verticalBottom;\n left = verticalLeft;\n break;\n }\n\n const verticalFit =\n top + portalRect.top > SPACE &&\n top + tooltipRect.height + SPACE + portalRect.top <\n this.windowRef.innerHeight;\n const horizontalFit =\n left > SPACE &&\n left + tooltipRect.width + SPACE + portalRect.left < portalRect.width;\n\n if (directions.length === 0 || (verticalFit && horizontalFit)) {\n break;\n }\n\n direction = verticalFit\n ? reverseDirectionsHorizontal[direction]\n : reverseDirectionsVertical[direction];\n direction =\n directions.splice(directions.indexOf(direction), 1)[0] || direction;\n }\n\n style.top = px(top);\n style.left = px(left);\n\n tooltip.setAttribute('data-tui-host-direction', direction);\n }\n\n private calculateMobileCoordinates() {\n const hostRect = this.hint.getElementClientRect();\n const portalRect = this.hintsHost.clientRect;\n const tooltip = this.elementRef.nativeElement;\n const {style} = tooltip;\n const tooltipRect = tooltip.getBoundingClientRect();\n const verticalTop = hostRect.top - tooltipRect.height - SPACE - portalRect.top;\n const verticalBottom = hostRect.bottom + SPACE - portalRect.top;\n const verticalTopFit =\n verticalTop + portalRect.top > SPACE &&\n hostRect.top < this.windowRef.innerHeight;\n const verticalBottomFit =\n hostRect.bottom > 0 &&\n hostRect.bottom + 2 * SPACE + tooltipRect.height < this.windowRef.innerHeight;\n const direction =\n (this.hint.direction.includes('top') && verticalTopFit) || !verticalBottomFit\n ? 'top'\n : 'bottom';\n const attemptedLeft =\n portalRect.left + hostRect.left + hostRect.width / 2 - tooltipRect.width / 2;\n const left = Math.max(\n attemptedLeft + tooltipRect.width + SPACE > portalRect.right\n ? portalRect.right - SPACE - tooltipRect.width\n : attemptedLeft,\n SPACE * 2,\n );\n\n style.left = px(left);\n style.top = direction === 'top' ? px(verticalTop) : px(verticalBottom);\n\n if (this.arrow) {\n this.arrow.nativeElement.style.left = px(\n hostRect.left <= SPACE * 2 && hostRect.width > ARROW_OFFSET * 2\n ? ARROW_OFFSET\n : hostRect.left + hostRect.width / 2 - left - ARROW_SIZE / 2,\n );\n }\n\n tooltip.setAttribute('data-tui-host-direction', direction);\n }\n\n private setOverflowStyles() {\n const hostRect = this.hint.getElementClientRect();\n const {style} = this.elementRef.nativeElement;\n\n style.top = px(hostRect.top - window.innerHeight - TOP_PADDING - BORDER_WIDTH);\n style.left = px(hostRect.left - LEFT_PADDING - BORDER_WIDTH);\n style.width = px(hostRect.width + LEFT_PADDING * 2 + BORDER_WIDTH * 2);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\n\nimport {TuiHintBoxComponent} from './hint-box.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [TuiHintBoxComponent],\n exports: [TuiHintBoxComponent],\n})\nexport class TuiHintBoxModule {}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiActiveZoneModule, TuiHoveredModule} from '@taiga-ui/cdk';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiHintBoxModule} from './hint-box/hint-box.module';\nimport {TuiHintsHostComponent} from './hints-host.component';\n\n@NgModule({\n imports: [\n CommonModule,\n PolymorpheusModule,\n TuiHoveredModule,\n TuiHintBoxModule,\n TuiActiveZoneModule,\n ],\n declarations: [TuiHintsHostComponent],\n exports: [TuiHintsHostComponent],\n entryComponents: [TuiHintsHostComponent],\n})\nexport class TuiHintsHostModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-core-components-hints-host.js","sources":["ng://@taiga-ui/core/components/hints-host/hints-host.component.ts","ng://@taiga-ui/core/components/hints-host/hint-box/hint-box.component.ts","ng://@taiga-ui/core/components/hints-host/hint-box/hint-box.module.ts","ng://@taiga-ui/core/components/hints-host/hints-host.module.ts","ng://@taiga-ui/core/components/hints-host/taiga-ui-core-components-hints-host.ts"],"sourcesContent":["import {AnimationOptions} from '@angular/animations';\nimport {ChangeDetectionStrategy, Component, ElementRef, Inject} from '@angular/core';\nimport {AbstractTuiHint} from '@taiga-ui/core/abstract';\nimport {tuiFadeIn} from '@taiga-ui/core/animations';\nimport {TuiHintDirective} from '@taiga-ui/core/directives/hint';\nimport {TuiHintService} from '@taiga-ui/core/services';\nimport {TUI_ANIMATION_OPTIONS} from '@taiga-ui/core/tokens';\n\n@Component({\n selector: 'tui-hints-host',\n templateUrl: './hints-host.template.html',\n styleUrls: ['./hints-host.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [tuiFadeIn],\n host: {\n 'aria-live': 'polite',\n },\n})\nexport class TuiHintsHostComponent {\n readonly animation = {\n value: '',\n ...this.options,\n } as const;\n\n constructor(\n @Inject(TUI_ANIMATION_OPTIONS) private readonly options: AnimationOptions,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(TuiHintService) readonly hints$: TuiHintService,\n ) {}\n\n get clientRect(): ClientRect {\n return this.elementRef.nativeElement.getBoundingClientRect();\n }\n\n onHovered(hovered: boolean, directive: AbstractTuiHint) {\n if (directive instanceof TuiHintDirective) {\n directive.componentHovered$.next(hovered);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n NgZone,\n ViewChild,\n} from '@angular/core';\nimport {ANIMATION_FRAME, WINDOW} from '@ng-web-apis/common';\nimport {px, TuiDestroyService, tuiPure, tuiZonefree} from '@taiga-ui/cdk';\nimport {AbstractTuiHint} from '@taiga-ui/core/abstract';\nimport {TuiPointerHintDirective} from '@taiga-ui/core/directives/pointer-hint';\nimport {TuiMedia} from '@taiga-ui/core/interfaces';\nimport {TUI_MEDIA} from '@taiga-ui/core/tokens';\nimport {TuiDirection, TuiHintModeT} from '@taiga-ui/core/types';\nimport {Observable} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {TuiHintsHostComponent} from '../hints-host.component';\n\nconst SPACE = 8;\nconst BORDER_WIDTH = 1;\nconst LEFT_PADDING = 16;\nconst TOP_PADDING = 12;\nconst ARROW_SIZE = 8;\nconst ARROW_OFFSET = 16;\nconst ARROWHEAD_OFFSET = ARROW_OFFSET + (ARROW_SIZE * Math.sqrt(2)) / 2;\nconst reverseDirectionsVertical: {[key in TuiDirection]: TuiDirection} = {\n 'top-left': 'bottom-left',\n 'top-right': 'bottom-right',\n 'bottom-left': 'top-left',\n 'bottom-right': 'top-right',\n left: 'right',\n right: 'left',\n 'top-middle': 'bottom-middle',\n 'bottom-middle': 'top-middle',\n};\nconst reverseDirectionsHorizontal: {[key in TuiDirection]: TuiDirection} = {\n 'top-left': 'top-right',\n 'top-right': 'top-left',\n 'bottom-left': 'bottom-right',\n 'bottom-right': 'bottom-left',\n left: 'right',\n right: 'left',\n 'top-middle': 'top-middle',\n 'bottom-middle': 'bottom-middle',\n};\n\n// TODO: consider abstracting UI and move to CDK, split hint and overflow\n// Ambient type cannot be used without dynamic https://github.com/angular/angular/issues/23395\n// @dynamic\n@Component({\n selector: 'tui-hint-box[hint]',\n templateUrl: './hint-box.template.html',\n styleUrls: ['./hint-box.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TuiDestroyService],\n})\nexport class TuiHintBoxComponent {\n @ViewChild('arrow')\n private readonly arrow?: ElementRef<HTMLElement>;\n\n @Input()\n hint!: AbstractTuiHint;\n\n constructor(\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n @Inject(TuiDestroyService) destroy$: Observable<void>,\n @Inject(NgZone) ngZone: NgZone,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(WINDOW) private readonly windowRef: Window,\n @Inject(TUI_MEDIA) private readonly media: TuiMedia,\n @Inject(TuiHintsHostComponent)\n private readonly hintsHost: TuiHintsHostComponent,\n ) {\n animationFrame$\n .pipe(tuiZonefree(ngZone), takeUntil(destroy$))\n .subscribe(() => this.calculatePosition());\n }\n\n @tuiPure\n @HostBinding('class._untouchable')\n get isUntouchable(): boolean {\n return this.hint instanceof TuiPointerHintDirective;\n }\n\n @HostBinding('attr.data-mode')\n get mode(): TuiHintModeT | null {\n return this.hint.mode;\n }\n\n get isMobile(): boolean {\n return this.windowRef.innerWidth <= this.media.mobile;\n }\n\n /**\n * Calculates wrapper position.\n * Styles are set directly to avoid visual shake of element\n */\n private calculatePosition() {\n if (this.mode !== 'overflow') {\n this.calculateCoordinates();\n } else {\n this.setOverflowStyles();\n }\n }\n\n private calculateCoordinates() {\n if (this.isMobile) {\n this.calculateMobileCoordinates();\n\n return;\n }\n\n const hostRect = this.hint.getElementClientRect();\n const portalRect = this.hintsHost.clientRect;\n const tooltip = this.elementRef.nativeElement;\n const {style} = tooltip;\n const tooltipRect = tooltip.getBoundingClientRect();\n const isHostLong = hostRect.width > ARROWHEAD_OFFSET * 2;\n const directions: TuiDirection[] = [\n 'left',\n 'right',\n 'bottom-left',\n 'bottom-right',\n 'bottom-middle',\n 'top-left',\n 'top-right',\n 'top-middle',\n ];\n\n let top = 0;\n let left = 0;\n let {direction} = this.hint;\n\n const horizontalTop =\n hostRect.top + hostRect.height / 2 - tooltipRect.height / 2 - portalRect.top;\n const horizontalLeft =\n hostRect.left - tooltipRect.width - SPACE - portalRect.left;\n const horizontalRight = hostRect.left + hostRect.width + SPACE - portalRect.left;\n const verticalBottom = hostRect.bottom + SPACE - portalRect.top;\n const verticalTop = hostRect.top - tooltipRect.height - SPACE - portalRect.top;\n const verticalRight = isHostLong\n ? hostRect.left - portalRect.left\n : hostRect.left + hostRect.width / 2 - ARROWHEAD_OFFSET - portalRect.left;\n const verticalLeft = isHostLong\n ? hostRect.left - tooltipRect.width + hostRect.width - portalRect.left\n : hostRect.left -\n tooltipRect.width +\n hostRect.width / 2 +\n ARROWHEAD_OFFSET -\n portalRect.left;\n const verticalMiddle =\n hostRect.left - tooltipRect.width / 2 + hostRect.width / 2 - portalRect.left;\n\n directions.splice(directions.indexOf(direction), 1);\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n switch (direction) {\n case 'left':\n top = horizontalTop;\n left = horizontalLeft;\n break;\n case 'right':\n top = horizontalTop;\n left = horizontalRight;\n break;\n case 'top-right':\n top = verticalTop;\n left = verticalRight;\n break;\n case 'top-left':\n top = verticalTop;\n left = verticalLeft;\n break;\n case 'bottom-right':\n top = verticalBottom;\n left = verticalRight;\n break;\n case 'bottom-left':\n top = verticalBottom;\n left = verticalLeft;\n break;\n case 'bottom-middle':\n top = verticalBottom;\n left = verticalMiddle;\n break;\n case 'top-middle':\n top = verticalTop;\n left = verticalMiddle;\n break;\n }\n\n const verticalFit =\n top + portalRect.top > SPACE &&\n top + tooltipRect.height + SPACE + portalRect.top <\n this.windowRef.innerHeight;\n const horizontalFit =\n left > SPACE &&\n left + tooltipRect.width + SPACE + portalRect.left < portalRect.width;\n\n if (directions.length === 0 || (verticalFit && horizontalFit)) {\n break;\n }\n\n direction = verticalFit\n ? reverseDirectionsHorizontal[direction]\n : reverseDirectionsVertical[direction];\n direction =\n directions.splice(directions.indexOf(direction), 1)[0] || direction;\n }\n\n style.top = px(top);\n style.left = px(left);\n\n tooltip.setAttribute('data-tui-host-direction', direction);\n }\n\n private calculateMobileCoordinates() {\n const hostRect = this.hint.getElementClientRect();\n const portalRect = this.hintsHost.clientRect;\n const tooltip = this.elementRef.nativeElement;\n const {style} = tooltip;\n const tooltipRect = tooltip.getBoundingClientRect();\n const verticalTop = hostRect.top - tooltipRect.height - SPACE - portalRect.top;\n const verticalBottom = hostRect.bottom + SPACE - portalRect.top;\n const verticalTopFit =\n verticalTop + portalRect.top > SPACE &&\n hostRect.top < this.windowRef.innerHeight;\n const verticalBottomFit =\n hostRect.bottom > 0 &&\n hostRect.bottom + 2 * SPACE + tooltipRect.height < this.windowRef.innerHeight;\n const direction =\n (this.hint.direction.includes('top') && verticalTopFit) || !verticalBottomFit\n ? 'top'\n : 'bottom';\n const attemptedLeft =\n portalRect.left + hostRect.left + hostRect.width / 2 - tooltipRect.width / 2;\n const left = Math.max(\n attemptedLeft + tooltipRect.width + SPACE > portalRect.right\n ? portalRect.right - SPACE - tooltipRect.width\n : attemptedLeft,\n SPACE * 2,\n );\n\n style.left = px(left);\n style.top = direction === 'top' ? px(verticalTop) : px(verticalBottom);\n\n if (this.arrow) {\n this.arrow.nativeElement.style.left = px(\n hostRect.left <= SPACE * 2 && hostRect.width > ARROW_OFFSET * 2\n ? ARROW_OFFSET\n : hostRect.left + hostRect.width / 2 - left - ARROW_SIZE / 2,\n );\n }\n\n tooltip.setAttribute('data-tui-host-direction', direction);\n }\n\n private setOverflowStyles() {\n const hostRect = this.hint.getElementClientRect();\n const {style} = this.elementRef.nativeElement;\n\n style.top = px(hostRect.top - window.innerHeight - TOP_PADDING - BORDER_WIDTH);\n style.left = px(hostRect.left - LEFT_PADDING - BORDER_WIDTH);\n style.width = px(hostRect.width + LEFT_PADDING * 2 + BORDER_WIDTH * 2);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\n\nimport {TuiHintBoxComponent} from './hint-box.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [TuiHintBoxComponent],\n exports: [TuiHintBoxComponent],\n})\nexport class TuiHintBoxModule {}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiActiveZoneModule, TuiHoveredModule} from '@taiga-ui/cdk';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiHintBoxModule} from './hint-box/hint-box.module';\nimport {TuiHintsHostComponent} from './hints-host.component';\n\n@NgModule({\n imports: [\n CommonModule,\n PolymorpheusModule,\n TuiHoveredModule,\n TuiHintBoxModule,\n TuiActiveZoneModule,\n ],\n declarations: [TuiHintsHostComponent],\n exports: [TuiHintsHostComponent],\n entryComponents: [TuiHintsHostComponent],\n})\nexport class TuiHintsHostModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;IAwBI,+BACoD,OAAyB,EACpC,UAAmC,EACvC,MAAsB;QAFP,YAAO,GAAP,OAAO,CAAkB;QACpC,eAAU,GAAV,UAAU,CAAyB;QACvC,WAAM,GAAN,MAAM,CAAgB;QARlD,cAAS,GAAG,WACjB,KAAK,EAAE,EAAE,IACN,IAAI,CAAC,OAAO,CACT,CAAC;KAMP;IAEJ,sBAAI,6CAAU;aAAd;YACI,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;SAChE;;;OAAA;IAED,yCAAS,GAAT,UAAU,OAAgB,EAAE,SAA0B;QAClD,IAAI,SAAS,YAAY,gBAAgB,EAAE;YACvC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC7C;KACJ;;gDAbI,MAAM,SAAC,qBAAqB;gBACoB,UAAU,uBAA1D,MAAM,SAAC,UAAU;gBACuB,cAAc,uBAAtD,MAAM,SAAC,cAAc;;IATjB,qBAAqB;QAVjC,SAAS,CAAC;YACP,QAAQ,EAAE,gBAAgB;YAC1B,udAAyC;YAEzC,eAAe,EAAE,uBAAuB,CAAC,MAAM;YAC/C,UAAU,EAAE,CAAC,SAAS,CAAC;YACvB,IAAI,EAAE;gBACF,WAAW,EAAE,QAAQ;aACxB;;SACJ,CAAC;QAQO,WAAA,MAAM,CAAC,qBAAqB,CAAC,CAAA;QAC7B,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;QAClB,WAAA,MAAM,CAAC,cAAc,CAAC,CAAA;OATlB,qBAAqB,CAqBjC;IAAD,4BAAC;CArBD;;ACIA,IAAM,KAAK,GAAG,CAAC,CAAC;AAChB,IAAM,YAAY,GAAG,CAAC,CAAC;AACvB,IAAM,YAAY,GAAG,EAAE,CAAC;AACxB,IAAM,WAAW,GAAG,EAAE,CAAC;AACvB,IAAM,UAAU,GAAG,CAAC,CAAC;AACrB,IAAM,YAAY,GAAG,EAAE,CAAC;AACxB,IAAM,gBAAgB,GAAG,YAAY,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACxE,IAAM,yBAAyB,GAA0C;IACrE,UAAU,EAAE,aAAa;IACzB,WAAW,EAAE,cAAc;IAC3B,aAAa,EAAE,UAAU;IACzB,cAAc,EAAE,WAAW;IAC3B,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,MAAM;IACb,YAAY,EAAE,eAAe;IAC7B,eAAe,EAAE,YAAY;CAChC,CAAC;AACF,IAAM,2BAA2B,GAA0C;IACvE,UAAU,EAAE,WAAW;IACvB,WAAW,EAAE,UAAU;IACvB,aAAa,EAAE,cAAc;IAC7B,cAAc,EAAE,aAAa;IAC7B,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,MAAM;IACb,YAAY,EAAE,YAAY;IAC1B,eAAe,EAAE,eAAe;CACnC,CAAC;AAEF;AACA;AACA;;IAeI,6BAC6B,eAAmC,EACjC,QAA0B,EACrC,MAAc,EACO,UAAmC,EACvC,SAAiB,EACd,KAAe,EAElC,SAAgC;QARrD,iBAaC;QATwC,eAAU,GAAV,UAAU,CAAyB;QACvC,cAAS,GAAT,SAAS,CAAQ;QACd,UAAK,GAAL,KAAK,CAAU;QAElC,cAAS,GAAT,SAAS,CAAuB;QAEjD,eAAe;aACV,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;aAC9C,SAAS,CAAC,cAAM,OAAA,KAAI,CAAC,iBAAiB,EAAE,GAAA,CAAC,CAAC;KAClD;IAID,sBAAI,8CAAa;aAAjB;YACI,OAAO,IAAI,CAAC,IAAI,YAAY,uBAAuB,CAAC;SACvD;;;OAAA;IAGD,sBAAI,qCAAI;aAAR;YACI,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;SACzB;;;OAAA;IAED,sBAAI,yCAAQ;aAAZ;YACI,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;SACzD;;;OAAA;;;;;IAMO,+CAAiB,GAAzB;QACI,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;YAC1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC/B;aAAM;YACH,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC5B;KACJ;IAEO,kDAAoB,GAA5B;QACI,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,0BAA0B,EAAE,CAAC;YAElC,OAAO;SACV;QAED,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAClD,IAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QAC7C,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QACvC,IAAA,qBAAK,CAAY;QACxB,IAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;QACpD,IAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,GAAG,gBAAgB,GAAG,CAAC,CAAC;QACzD,IAAM,UAAU,GAAmB;YAC/B,MAAM;YACN,OAAO;YACP,aAAa;YACb,cAAc;YACd,eAAe;YACf,UAAU;YACV,WAAW;YACX,YAAY;SACf,CAAC;QAEF,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,IAAI,GAAG,CAAC,CAAC;QACR,IAAA,+BAAS,CAAc;QAE5B,IAAM,aAAa,GACf,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC;QACjF,IAAM,cAAc,GAChB,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC;QAChE,IAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,GAAG,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC;QACjF,IAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC;QAChE,IAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC;QAC/E,IAAM,aAAa,GAAG,UAAU;cAC1B,QAAQ,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI;cAC/B,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,GAAG,gBAAgB,GAAG,UAAU,CAAC,IAAI,CAAC;QAC9E,IAAM,YAAY,GAAG,UAAU;cACzB,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI;cACpE,QAAQ,CAAC,IAAI;gBACb,WAAW,CAAC,KAAK;gBACjB,QAAQ,CAAC,KAAK,GAAG,CAAC;gBAClB,gBAAgB;gBAChB,UAAU,CAAC,IAAI,CAAC;QACtB,IAAM,cAAc,GAChB,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC;QAEjF,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;;QAGpD,OAAO,IAAI,EAAE;YACT,QAAQ,SAAS;gBACb,KAAK,MAAM;oBACP,GAAG,GAAG,aAAa,CAAC;oBACpB,IAAI,GAAG,cAAc,CAAC;oBACtB,MAAM;gBACV,KAAK,OAAO;oBACR,GAAG,GAAG,aAAa,CAAC;oBACpB,IAAI,GAAG,eAAe,CAAC;oBACvB,MAAM;gBACV,KAAK,WAAW;oBACZ,GAAG,GAAG,WAAW,CAAC;oBAClB,IAAI,GAAG,aAAa,CAAC;oBACrB,MAAM;gBACV,KAAK,UAAU;oBACX,GAAG,GAAG,WAAW,CAAC;oBAClB,IAAI,GAAG,YAAY,CAAC;oBACpB,MAAM;gBACV,KAAK,cAAc;oBACf,GAAG,GAAG,cAAc,CAAC;oBACrB,IAAI,GAAG,aAAa,CAAC;oBACrB,MAAM;gBACV,KAAK,aAAa;oBACd,GAAG,GAAG,cAAc,CAAC;oBACrB,IAAI,GAAG,YAAY,CAAC;oBACpB,MAAM;gBACV,KAAK,eAAe;oBAChB,GAAG,GAAG,cAAc,CAAC;oBACrB,IAAI,GAAG,cAAc,CAAC;oBACtB,MAAM;gBACV,KAAK,YAAY;oBACb,GAAG,GAAG,WAAW,CAAC;oBAClB,IAAI,GAAG,cAAc,CAAC;oBACtB,MAAM;aACb;YAED,IAAM,WAAW,GACb,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,KAAK;gBAC5B,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC,GAAG;oBAC7C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;YACnC,IAAM,aAAa,GACf,IAAI,GAAG,KAAK;gBACZ,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,KAAK,GAAG,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC;YAE1E,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,KAAK,WAAW,IAAI,aAAa,CAAC,EAAE;gBAC3D,MAAM;aACT;YAED,SAAS,GAAG,WAAW;kBACjB,2BAA2B,CAAC,SAAS,CAAC;kBACtC,yBAAyB,CAAC,SAAS,CAAC,CAAC;YAC3C,SAAS;gBACL,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;SAC3E;QAED,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QACpB,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAEtB,OAAO,CAAC,YAAY,CAAC,yBAAyB,EAAE,SAAS,CAAC,CAAC;KAC9D;IAEO,wDAA0B,GAAlC;QACI,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAClD,IAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QAC7C,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QACvC,IAAA,qBAAK,CAAY;QACxB,IAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;QACpD,IAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC;QAC/E,IAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC;QAChE,IAAM,cAAc,GAChB,WAAW,GAAG,UAAU,CAAC,GAAG,GAAG,KAAK;YACpC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;QAC9C,IAAM,iBAAiB,GACnB,QAAQ,CAAC,MAAM,GAAG,CAAC;YACnB,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;QAClF,IAAM,SAAS,GACX,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,cAAc,KAAK,CAAC,iBAAiB;cACvE,KAAK;cACL,QAAQ,CAAC;QACnB,IAAM,aAAa,GACf,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC;QACjF,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CACjB,aAAa,GAAG,WAAW,CAAC,KAAK,GAAG,KAAK,GAAG,UAAU,CAAC,KAAK;cACtD,UAAU,CAAC,KAAK,GAAG,KAAK,GAAG,WAAW,CAAC,KAAK;cAC5C,aAAa,EACnB,KAAK,GAAG,CAAC,CACZ,CAAC;QAEF,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACtB,KAAK,CAAC,GAAG,GAAG,SAAS,KAAK,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC;QAEvE,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CACpC,QAAQ,CAAC,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,GAAG,YAAY,GAAG,CAAC;kBACzD,YAAY;kBACZ,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,UAAU,GAAG,CAAC,CACnE,CAAC;SACL;QAED,OAAO,CAAC,YAAY,CAAC,yBAAyB,EAAE,SAAS,CAAC,CAAC;KAC9D;IAEO,+CAAiB,GAAzB;QACI,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC3C,IAAA,2CAAK,CAAkC;QAE9C,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,GAAG,MAAM,CAAC,WAAW,GAAG,WAAW,GAAG,YAAY,CAAC,CAAC;QAC/E,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG,YAAY,GAAG,YAAY,CAAC,CAAC;QAC7D,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,GAAG,YAAY,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC;KAC1E;;gBAzM6C,UAAU,uBAAnD,MAAM,SAAC,eAAe;gBACc,UAAU,uBAA9C,MAAM,SAAC,iBAAiB;gBACD,MAAM,uBAA7B,MAAM,SAAC,MAAM;gBACmC,UAAU,uBAA1D,MAAM,SAAC,UAAU;gBAC0B,MAAM,uBAAjD,MAAM,SAAC,MAAM;gDACb,MAAM,SAAC,SAAS;gBAEW,qBAAqB,uBADhD,MAAM,SAAC,qBAAqB;;IAZjC;QADC,SAAS,CAAC,OAAO,CAAC;sDAC8B;IAGjD;QADC,KAAK,EAAE;qDACe;IAmBvB;QAFC,OAAO;QACP,WAAW,CAAC,oBAAoB,CAAC;4DAGjC;IAGD;QADC,WAAW,CAAC,gBAAgB,CAAC;mDAG7B;IA/BQ,mBAAmB;QAP/B,SAAS,CAAC;YACP,QAAQ,EAAE,oBAAoB;YAC9B,4OAAuC;YAEvC,eAAe,EAAE,uBAAuB,CAAC,MAAM;YAC/C,SAAS,EAAE,CAAC,iBAAiB,CAAC;;SACjC,CAAC;QASO,WAAA,MAAM,CAAC,eAAe,CAAC,CAAA;QACvB,WAAA,MAAM,CAAC,iBAAiB,CAAC,CAAA;QACzB,WAAA,MAAM,CAAC,MAAM,CAAC,CAAA;QACd,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;QAClB,WAAA,MAAM,CAAC,MAAM,CAAC,CAAA;QACd,WAAA,MAAM,CAAC,SAAS,CAAC,CAAA;QACjB,WAAA,MAAM,CAAC,qBAAqB,CAAC,CAAA;OAdzB,mBAAmB,CAkN/B;IAAD,0BAAC;CAlND;;;IClDA;KAAgC;IAAnB,gBAAgB;QAL5B,QAAQ,CAAC;YACN,OAAO,EAAE,CAAC,YAAY,CAAC;YACvB,YAAY,EAAE,CAAC,mBAAmB,CAAC;YACnC,OAAO,EAAE,CAAC,mBAAmB,CAAC;SACjC,CAAC;OACW,gBAAgB,CAAG;IAAD,uBAAC;CAAhC;;;ICUA;KAAkC;IAArB,kBAAkB;QAZ9B,QAAQ,CAAC;YACN,OAAO,EAAE;gBACL,YAAY;gBACZ,kBAAkB;gBAClB,gBAAgB;gBAChB,gBAAgB;gBAChB,mBAAmB;aACtB;YACD,YAAY,EAAE,CAAC,qBAAqB,CAAC;YACrC,OAAO,EAAE,CAAC,qBAAqB,CAAC;YAChC,eAAe,EAAE,CAAC,qBAAqB,CAAC;SAC3C,CAAC;OACW,kBAAkB,CAAG;IAAD,yBAAC;CAAlC;;ACpBA;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-components-root.js","sources":["ng://@taiga-ui/core/components/root/root.component.ts","ng://@taiga-ui/core/components/root/root.module.ts","ng://@taiga-ui/core/components/root/taiga-ui-core-components-root.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Inject,\n Optional,\n Type,\n} from '@angular/core';\nimport {TUI_DIALOGS, TUI_IS_MOBILE, tuiAssert} from '@taiga-ui/cdk';\nimport {VERSION} from '@taiga-ui/core/constants';\nimport {TuiNotificationsHostComponent} from '@taiga-ui/core/modules/notifications';\nimport {TUI_IS_MOBILE_RES_PROVIDER} from '@taiga-ui/core/providers';\nimport {\n TUI_ANIMATIONS_DURATION,\n TUI_ASSERT_ENABLED,\n TUI_IS_MOBILE_RES,\n TUI_THEME,\n} from '@taiga-ui/core/tokens';\nimport {merge, Observable, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\n// @dynamic\n@Component({\n selector: 'tui-root',\n templateUrl: 'root.template.html',\n styleUrls: ['./root.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TUI_IS_MOBILE_RES_PROVIDER],\n host: {\n 'data-tui-version': VERSION,\n '[style.--tui-duration]': 'duration + \"ms\"',\n '($.class._mobile)': 'isMobileRes$',\n },\n})\nexport class TuiRootComponent {\n readonly scrollbars$: Observable<boolean> =\n this.dialogs && !this.isMobile\n ? merge(...this.dialogs).pipe(map(({length}) => !length))\n : of(!this.isMobile);\n\n constructor(\n @Inject(TUI_ANIMATIONS_DURATION) readonly duration: number,\n @Inject(ElementRef) readonly elementRef: ElementRef<HTMLElement>,\n @Optional()\n @Inject(TUI_DIALOGS)\n readonly dialogs: readonly Observable<readonly unknown[]>[] | null,\n @Optional()\n @Inject(TuiNotificationsHostComponent)\n readonly notificationsHost: Type<unknown>,\n @Inject(TUI_IS_MOBILE) private readonly isMobile: boolean,\n @Inject(TUI_ASSERT_ENABLED) enabled: boolean,\n @Inject(TUI_IS_MOBILE_RES) readonly isMobileRes$: Observable<boolean>,\n @Inject(DOCUMENT) {body}: Document,\n @Inject(TUI_THEME) theme: string,\n ) {\n tuiAssert.enabled = enabled;\n body.setAttribute('data-tui-theme', theme.toLowerCase());\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiDialogHostModule, TuiDragModule, TuiDropdownHostModule} from '@taiga-ui/cdk';\nimport {TuiHintsHostModule} from '@taiga-ui/core/components/hints-host';\nimport {TuiScrollControlsModule} from '@taiga-ui/core/components/scroll-controls';\nimport {TuiSvgDefsHostModule} from '@taiga-ui/core/internal/svg-defs-host';\nimport {EventPluginsModule} from '@tinkoff/ng-event-plugins';\n\nimport {TuiRootComponent} from './root.component';\n\n@NgModule({\n imports: [\n CommonModule,\n EventPluginsModule,\n TuiDragModule,\n TuiDropdownHostModule,\n TuiSvgDefsHostModule,\n TuiHintsHostModule,\n TuiDialogHostModule,\n TuiScrollControlsModule,\n ],\n declarations: [TuiRootComponent],\n exports: [TuiRootComponent],\n})\nexport class TuiRootModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAsBA;;IAmBI,0BAC8C,QAAgB,EAC7B,UAAmC,EAGvD,OAAyD,EAGzD,iBAAgC,EACD,QAAiB,EAC7B,OAAgB,EACR,YAAiC,EACnD,EAAgB,EACf,KAAa;YADb,cAAI;QAXmB,aAAQ,GAAR,QAAQ,CAAQ;QAC7B,eAAU,GAAV,UAAU,CAAyB;QAGvD,YAAO,GAAP,OAAO,CAAkD;QAGzD,sBAAiB,GAAjB,iBAAiB,CAAe;QACD,aAAQ,GAAR,QAAQ,CAAS;QAErB,iBAAY,GAAZ,YAAY,CAAqB;QAhBhE,gBAAW,GAChB,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ;cACxB,KAAK,wBAAI,IAAI,CAAC,OAAO,GAAE,IAAI,CAAC,GAAG,CAAC,UAAC,EAAQ;oBAAP,kBAAM;gBAAM,OAAA,CAAC,MAAM;aAAA,CAAC,CAAC;cACvD,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAiBzB,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;QAC5B,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;KAC5D;;6CAhBI,MAAM,SAAC,uBAAuB;gBACU,UAAU,uBAAlD,MAAM,SAAC,UAAU;gDACjB,QAAQ,YACR,MAAM,SAAC,WAAW;gBAIS,IAAI,uBAF/B,QAAQ,YACR,MAAM,SAAC,6BAA6B;8CAEpC,MAAM,SAAC,aAAa;8CACpB,MAAM,SAAC,kBAAkB;gBACwB,UAAU,uBAA3D,MAAM,SAAC,iBAAiB;gBACC,QAAQ,uBAAjC,MAAM,SAAC,QAAQ;6CACf,MAAM,SAAC,SAAS;;IAnBZ,gBAAgB;QAZ5B,SAAS,CAAC;YACP,QAAQ,EAAE,UAAU;YACpB,iyBAAiC;YAEjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;YAC/C,SAAS,EAAE,CAAC,0BAA0B,CAAC;YACvC,IAAI,EAAE;gBACF,kBAAkB,EAAE,OAAO;gBAC3B,wBAAwB,EAAE,iBAAiB;gBAC3C,mBAAmB,EAAE,cAAc;aACtC;;SACJ,CAAC;QAQO,WAAA,MAAM,CAAC,uBAAuB,CAAC,CAAA;QAC/B,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;QAClB,WAAA,QAAQ,EAAE,CAAA;QACV,WAAA,MAAM,CAAC,WAAW,CAAC,CAAA;QAEnB,WAAA,QAAQ,EAAE,CAAA;QACV,WAAA,MAAM,CAAC,6BAA6B,CAAC,CAAA;QAErC,WAAA,MAAM,CAAC,aAAa,CAAC,CAAA;QACrB,WAAA,MAAM,CAAC,kBAAkB,CAAC,CAAA;QAC1B,WAAA,MAAM,CAAC,iBAAiB,CAAC,CAAA;QACzB,WAAA,MAAM,CAAC,QAAQ,CAAC,CAAA;QAChB,WAAA,MAAM,CAAC,SAAS,CAAC,CAAA;OAnBb,gBAAgB,CAwB5B;IAAD,uBAAC;CAxBD;;;ICXA;KAA6B;IAAhB,aAAa;QAdzB,QAAQ,CAAC;YACN,OAAO,EAAE;gBACL,YAAY;gBACZ,kBAAkB;gBAClB,aAAa;gBACb,qBAAqB;gBACrB,oBAAoB;gBACpB,kBAAkB;gBAClB,mBAAmB;gBACnB,uBAAuB;aAC1B;YACD,YAAY,EAAE,CAAC,gBAAgB,CAAC;YAChC,OAAO,EAAE,CAAC,gBAAgB,CAAC;SAC9B,CAAC;OACW,aAAa,CAAG;IAAD,oBAAC;CAA7B;;ACxBA;;;;;;"}
1
+ {"version":3,"file":"taiga-ui-core-components-root.js","sources":["ng://@taiga-ui/core/components/root/root.component.ts","ng://@taiga-ui/core/components/root/root.module.ts","ng://@taiga-ui/core/components/root/taiga-ui-core-components-root.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Inject,\n Optional,\n Type,\n} from '@angular/core';\nimport {TUI_DIALOGS, TUI_IS_MOBILE, tuiAssert} from '@taiga-ui/cdk';\nimport {VERSION} from '@taiga-ui/core/constants';\nimport {TuiNotificationsHostComponent} from '@taiga-ui/core/modules/notifications';\nimport {TUI_IS_MOBILE_RES_PROVIDER} from '@taiga-ui/core/providers';\nimport {\n TUI_ANIMATIONS_DURATION,\n TUI_ASSERT_ENABLED,\n TUI_IS_MOBILE_RES,\n TUI_THEME,\n} from '@taiga-ui/core/tokens';\nimport {merge, Observable, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\n// @dynamic\n@Component({\n selector: 'tui-root',\n templateUrl: 'root.template.html',\n styleUrls: ['./root.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TUI_IS_MOBILE_RES_PROVIDER],\n host: {\n 'data-tui-version': VERSION,\n '[style.--tui-duration]': 'duration + \"ms\"',\n '($.class._mobile)': 'isMobileRes$',\n },\n})\nexport class TuiRootComponent {\n readonly scrollbars$: Observable<boolean> =\n this.dialogs && !this.isMobile\n ? merge(...this.dialogs).pipe(map(({length}) => !length))\n : of(!this.isMobile);\n\n constructor(\n @Inject(TUI_ANIMATIONS_DURATION) readonly duration: number,\n @Inject(ElementRef) readonly elementRef: ElementRef<HTMLElement>,\n @Optional()\n @Inject(TUI_DIALOGS)\n readonly dialogs: ReadonlyArray<Observable<readonly unknown[]>> | null,\n @Optional()\n @Inject(TuiNotificationsHostComponent)\n readonly notificationsHost: Type<unknown>,\n @Inject(TUI_IS_MOBILE) private readonly isMobile: boolean,\n @Inject(TUI_ASSERT_ENABLED) enabled: boolean,\n @Inject(TUI_IS_MOBILE_RES) readonly isMobileRes$: Observable<boolean>,\n @Inject(DOCUMENT) {body}: Document,\n @Inject(TUI_THEME) theme: string,\n ) {\n tuiAssert.enabled = enabled;\n body.setAttribute('data-tui-theme', theme.toLowerCase());\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiDialogHostModule, TuiDragModule, TuiDropdownHostModule} from '@taiga-ui/cdk';\nimport {TuiHintsHostModule} from '@taiga-ui/core/components/hints-host';\nimport {TuiScrollControlsModule} from '@taiga-ui/core/components/scroll-controls';\nimport {TuiSvgDefsHostModule} from '@taiga-ui/core/internal/svg-defs-host';\nimport {EventPluginsModule} from '@tinkoff/ng-event-plugins';\n\nimport {TuiRootComponent} from './root.component';\n\n@NgModule({\n imports: [\n CommonModule,\n EventPluginsModule,\n TuiDragModule,\n TuiDropdownHostModule,\n TuiSvgDefsHostModule,\n TuiHintsHostModule,\n TuiDialogHostModule,\n TuiScrollControlsModule,\n ],\n declarations: [TuiRootComponent],\n exports: [TuiRootComponent],\n})\nexport class TuiRootModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAsBA;;IAmBI,0BAC8C,QAAgB,EAC7B,UAAmC,EAGvD,OAA6D,EAG7D,iBAAgC,EACD,QAAiB,EAC7B,OAAgB,EACR,YAAiC,EACnD,EAAgB,EACf,KAAa;YADb,cAAI;QAXmB,aAAQ,GAAR,QAAQ,CAAQ;QAC7B,eAAU,GAAV,UAAU,CAAyB;QAGvD,YAAO,GAAP,OAAO,CAAsD;QAG7D,sBAAiB,GAAjB,iBAAiB,CAAe;QACD,aAAQ,GAAR,QAAQ,CAAS;QAErB,iBAAY,GAAZ,YAAY,CAAqB;QAhBhE,gBAAW,GAChB,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ;cACxB,KAAK,wBAAI,IAAI,CAAC,OAAO,GAAE,IAAI,CAAC,GAAG,CAAC,UAAC,EAAQ;oBAAP,kBAAM;gBAAM,OAAA,CAAC,MAAM;aAAA,CAAC,CAAC;cACvD,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAiBzB,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;QAC5B,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;KAC5D;;6CAhBI,MAAM,SAAC,uBAAuB;gBACU,UAAU,uBAAlD,MAAM,SAAC,UAAU;gDACjB,QAAQ,YACR,MAAM,SAAC,WAAW;gBAIS,IAAI,uBAF/B,QAAQ,YACR,MAAM,SAAC,6BAA6B;8CAEpC,MAAM,SAAC,aAAa;8CACpB,MAAM,SAAC,kBAAkB;gBACwB,UAAU,uBAA3D,MAAM,SAAC,iBAAiB;gBACC,QAAQ,uBAAjC,MAAM,SAAC,QAAQ;6CACf,MAAM,SAAC,SAAS;;IAnBZ,gBAAgB;QAZ5B,SAAS,CAAC;YACP,QAAQ,EAAE,UAAU;YACpB,iyBAAiC;YAEjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;YAC/C,SAAS,EAAE,CAAC,0BAA0B,CAAC;YACvC,IAAI,EAAE;gBACF,kBAAkB,EAAE,OAAO;gBAC3B,wBAAwB,EAAE,iBAAiB;gBAC3C,mBAAmB,EAAE,cAAc;aACtC;;SACJ,CAAC;QAQO,WAAA,MAAM,CAAC,uBAAuB,CAAC,CAAA;QAC/B,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;QAClB,WAAA,QAAQ,EAAE,CAAA;QACV,WAAA,MAAM,CAAC,WAAW,CAAC,CAAA;QAEnB,WAAA,QAAQ,EAAE,CAAA;QACV,WAAA,MAAM,CAAC,6BAA6B,CAAC,CAAA;QAErC,WAAA,MAAM,CAAC,aAAa,CAAC,CAAA;QACrB,WAAA,MAAM,CAAC,kBAAkB,CAAC,CAAA;QAC1B,WAAA,MAAM,CAAC,iBAAiB,CAAC,CAAA;QACzB,WAAA,MAAM,CAAC,QAAQ,CAAC,CAAA;QAChB,WAAA,MAAM,CAAC,SAAS,CAAC,CAAA;OAnBb,gBAAgB,CAwB5B;IAAD,uBAAC;CAxBD;;;ICXA;KAA6B;IAAhB,aAAa;QAdzB,QAAQ,CAAC;YACN,OAAO,EAAE;gBACL,YAAY;gBACZ,kBAAkB;gBAClB,aAAa;gBACb,qBAAqB;gBACrB,oBAAoB;gBACpB,kBAAkB;gBAClB,mBAAmB;gBACnB,uBAAuB;aAC1B;YACD,YAAY,EAAE,CAAC,gBAAgB,CAAC;YAChC,OAAO,EAAE,CAAC,gBAAgB,CAAC;SAC9B,CAAC;OACW,aAAa,CAAG;IAAD,oBAAC;CAA7B;;ACxBA;;;;;;"}
@@ -61,15 +61,16 @@ var TUI_DIGIT_REGEXP = /\d/;
61
61
  var TUI_NON_DIGIT_REGEXP = /\D/;
62
62
  var TUI_NON_DIGITS_REGEXP = /\D+/g;
63
63
  var TUI_LEADING_ZEROES_REGEXP = /^0+/;
64
+ var TUI_MASK_SYMBOLS_REGEXP = /[ \-_()]/g;
64
65
  var TUI_LAST_PUNCTUATION_MARK_REGEXP = /[.,\\/#!$%\\^&\\*;:{}=\\-_`~()]$/;
65
66
  var TUI_LATIN_REGEXP = /[A-z]/;
66
67
  var TUI_LATIN_AND_NUMBERS_REGEXP = /[A-z|0-9]/;
67
68
 
68
- var VERSION = '2.39.0';
69
+ var VERSION = '2.40.0';
69
70
 
70
71
  /**
71
72
  * Generated bundle index. Do not edit.
72
73
  */
73
74
 
74
- export { DEFAULT_ICONS_PATH, DEFAULT_MARGIN, DEFAULT_MAX_HEIGHT, DEFAULT_MAX_WIDTH, DEFAULT_MIN_HEIGHT, MASK_CARET_TRAP, MEDIA, TUI_DECIMAL_SYMBOLS, TUI_DEFAULT_MARKER_HANDLER, TUI_DIGIT_REGEXP, TUI_EXPAND_LOADED, TUI_ICON_ERROR, TUI_LAST_PUNCTUATION_MARK_REGEXP, TUI_LATIN_AND_NUMBERS_REGEXP, TUI_LATIN_REGEXP, TUI_LEADING_ZEROES_REGEXP, TUI_NON_DIGITS_REGEXP, TUI_NON_DIGIT_REGEXP, TUI_SCROLLABLE, TUI_SCROLL_INTO_VIEW, VERSION, tuiEditingKeys };
75
+ export { DEFAULT_ICONS_PATH, DEFAULT_MARGIN, DEFAULT_MAX_HEIGHT, DEFAULT_MAX_WIDTH, DEFAULT_MIN_HEIGHT, MASK_CARET_TRAP, MEDIA, TUI_DECIMAL_SYMBOLS, TUI_DEFAULT_MARKER_HANDLER, TUI_DIGIT_REGEXP, TUI_EXPAND_LOADED, TUI_ICON_ERROR, TUI_LAST_PUNCTUATION_MARK_REGEXP, TUI_LATIN_AND_NUMBERS_REGEXP, TUI_LATIN_REGEXP, TUI_LEADING_ZEROES_REGEXP, TUI_MASK_SYMBOLS_REGEXP, TUI_NON_DIGITS_REGEXP, TUI_NON_DIGIT_REGEXP, TUI_SCROLLABLE, TUI_SCROLL_INTO_VIEW, VERSION, tuiEditingKeys };
75
76
  //# sourceMappingURL=taiga-ui-core-constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-constants.js","sources":["ng://@taiga-ui/core/constants/absolute-box-sizes.ts","ng://@taiga-ui/core/constants/decimal-symbols.ts","ng://@taiga-ui/core/constants/default-icons-path.ts","ng://@taiga-ui/core/constants/default-marker-handler.ts","ng://@taiga-ui/core/constants/editing-keys.ts","ng://@taiga-ui/core/constants/events.ts","ng://@taiga-ui/core/constants/mask-caret-trap.ts","ng://@taiga-ui/core/constants/media.ts","ng://@taiga-ui/core/constants/regexp.ts","ng://@taiga-ui/core/constants/version.ts","ng://@taiga-ui/core/constants/taiga-ui-core-constants.ts"],"sourcesContent":["export const DEFAULT_MARGIN = 4;\nexport const DEFAULT_MIN_HEIGHT = 80;\nexport const DEFAULT_MAX_HEIGHT = 400;\nexport const DEFAULT_MAX_WIDTH = 600;\n","export const TUI_DECIMAL_SYMBOLS: ReadonlyArray<string> = [',', '.'];\n","import {TuiStringHandler} from '@taiga-ui/cdk';\n\nexport const DEFAULT_ICONS_PATH: TuiStringHandler<string> = name =>\n name.includes('.svg#') ? name : `#${name}`;\n","import {EMPTY_ARRAY} from '@taiga-ui/cdk';\nimport {TuiMarkerHandler} from '@taiga-ui/core/types';\n\nexport const TUI_DEFAULT_MARKER_HANDLER: TuiMarkerHandler = () => EMPTY_ARRAY;\n","export const tuiEditingKeys: readonly string[] = [\n 'Spacebar',\n 'Backspace',\n 'Delete',\n 'ArrowLeft',\n 'ArrowRight',\n 'Left',\n 'Right',\n 'End',\n 'Home',\n];\n","/**\n * An event indicating that async data for expand has finished loading.\n * Dispatch to finish loading states for {@link TuiExpandComponent}.\n */\nexport const TUI_EXPAND_LOADED = 'tui-expand-loaded';\n\n/**\n * An event for scrolling an element into view within {@link TuiScrollbarComponent}.\n */\nexport const TUI_SCROLL_INTO_VIEW = 'tui-scroll-into-view';\n\n/**\n * An event to notify {@link TuiScrollbarComponent} that\n * it should control a nested element.\n */\nexport const TUI_SCROLLABLE = 'tui-scrollable';\n\n/**\n * An event indicating and error during icon loading in {@link TuiSvgComponent}.\n */\nexport const TUI_ICON_ERROR = 'tui-icon-error';\n","export const MASK_CARET_TRAP = '[]';\n","/**\n * Media constants are exact the same as css media breakpoints\n * @deprecated use TUI_MEDIA token\n */\nexport const MEDIA = {\n mobile: 320,\n tablet: 600,\n desktopSmall: 1024,\n desktopLarge: 1280,\n};\n","export const TUI_DIGIT_REGEXP = /\\d/;\nexport const TUI_NON_DIGIT_REGEXP = /\\D/;\nexport const TUI_NON_DIGITS_REGEXP = /\\D+/g;\nexport const TUI_LEADING_ZEROES_REGEXP = /^0+/;\nexport const TUI_LAST_PUNCTUATION_MARK_REGEXP = /[.,\\\\/#!$%\\\\^&\\\\*;:{}=\\\\-_`~()]$/;\nexport const TUI_LATIN_REGEXP = /[A-z]/;\nexport const TUI_LATIN_AND_NUMBERS_REGEXP = /[A-z|0-9]/;\n","export const VERSION = '2.39.0';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;IAAa,cAAc,GAAG,EAAE;IACnB,kBAAkB,GAAG,GAAG;IACxB,kBAAkB,GAAG,IAAI;IACzB,iBAAiB,GAAG;;ICHpB,mBAAmB,GAA0B,CAAC,GAAG,EAAE,GAAG;;ICEtD,kBAAkB,GAA6B,UAAA,IAAI;IAC5D,OAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,MAAI,IAAM;AAA1C;;ICAS,0BAA0B,GAAqB,cAAM,OAAA,WAAW;;ICHhE,cAAc,GAAsB;IAC7C,UAAU;IACV,WAAW;IACX,QAAQ;IACR,WAAW;IACX,YAAY;IACZ,MAAM;IACN,OAAO;IACP,KAAK;IACL,MAAM;;;ACTV;;;;IAIa,iBAAiB,GAAG,oBAAoB;AAErD;;;IAGa,oBAAoB,GAAG,uBAAuB;AAE3D;;;;IAIa,cAAc,GAAG,iBAAiB;AAE/C;;;IAGa,cAAc,GAAG;;ICpBjB,eAAe,GAAG;;ACA/B;;;;IAIa,KAAK,GAAG;IACjB,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,IAAI;;;ICRT,gBAAgB,GAAG,KAAK;IACxB,oBAAoB,GAAG,KAAK;IAC5B,qBAAqB,GAAG,OAAO;IAC/B,yBAAyB,GAAG,MAAM;IAClC,gCAAgC,GAAG,mCAAmC;IACtE,gBAAgB,GAAG,QAAQ;IAC3B,4BAA4B,GAAG;;ICN/B,OAAO,GAAG;;ACAvB;;;;;;"}
1
+ {"version":3,"file":"taiga-ui-core-constants.js","sources":["ng://@taiga-ui/core/constants/absolute-box-sizes.ts","ng://@taiga-ui/core/constants/decimal-symbols.ts","ng://@taiga-ui/core/constants/default-icons-path.ts","ng://@taiga-ui/core/constants/default-marker-handler.ts","ng://@taiga-ui/core/constants/editing-keys.ts","ng://@taiga-ui/core/constants/events.ts","ng://@taiga-ui/core/constants/mask-caret-trap.ts","ng://@taiga-ui/core/constants/media.ts","ng://@taiga-ui/core/constants/regexp.ts","ng://@taiga-ui/core/constants/version.ts","ng://@taiga-ui/core/constants/taiga-ui-core-constants.ts"],"sourcesContent":["export const DEFAULT_MARGIN = 4;\nexport const DEFAULT_MIN_HEIGHT = 80;\nexport const DEFAULT_MAX_HEIGHT = 400;\nexport const DEFAULT_MAX_WIDTH = 600;\n","export const TUI_DECIMAL_SYMBOLS: readonly string[] = [',', '.'];\n","import {TuiStringHandler} from '@taiga-ui/cdk';\n\nexport const DEFAULT_ICONS_PATH: TuiStringHandler<string> = name =>\n name.includes('.svg#') ? name : `#${name}`;\n","import {EMPTY_ARRAY} from '@taiga-ui/cdk';\nimport {TuiMarkerHandler} from '@taiga-ui/core/types';\n\nexport const TUI_DEFAULT_MARKER_HANDLER: TuiMarkerHandler = () => EMPTY_ARRAY;\n","export const tuiEditingKeys: readonly string[] = [\n 'Spacebar',\n 'Backspace',\n 'Delete',\n 'ArrowLeft',\n 'ArrowRight',\n 'Left',\n 'Right',\n 'End',\n 'Home',\n];\n","/**\n * An event indicating that async data for expand has finished loading.\n * Dispatch to finish loading states for {@link TuiExpandComponent}.\n */\nexport const TUI_EXPAND_LOADED = 'tui-expand-loaded';\n\n/**\n * An event for scrolling an element into view within {@link TuiScrollbarComponent}.\n */\nexport const TUI_SCROLL_INTO_VIEW = 'tui-scroll-into-view';\n\n/**\n * An event to notify {@link TuiScrollbarComponent} that\n * it should control a nested element.\n */\nexport const TUI_SCROLLABLE = 'tui-scrollable';\n\n/**\n * An event indicating and error during icon loading in {@link TuiSvgComponent}.\n */\nexport const TUI_ICON_ERROR = 'tui-icon-error';\n","export const MASK_CARET_TRAP = '[]';\n","/**\n * Media constants are exact the same as css media breakpoints\n * @deprecated use TUI_MEDIA token\n */\nexport const MEDIA = {\n mobile: 320,\n tablet: 600,\n desktopSmall: 1024,\n desktopLarge: 1280,\n};\n","export const TUI_DIGIT_REGEXP = /\\d/;\nexport const TUI_NON_DIGIT_REGEXP = /\\D/;\nexport const TUI_NON_DIGITS_REGEXP = /\\D+/g;\nexport const TUI_LEADING_ZEROES_REGEXP = /^0+/;\nexport const TUI_MASK_SYMBOLS_REGEXP = /[ \\-_()]/g;\nexport const TUI_LAST_PUNCTUATION_MARK_REGEXP = /[.,\\\\/#!$%\\\\^&\\\\*;:{}=\\\\-_`~()]$/;\nexport const TUI_LATIN_REGEXP = /[A-z]/;\nexport const TUI_LATIN_AND_NUMBERS_REGEXP = /[A-z|0-9]/;\n","export const VERSION = '2.40.0';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;IAAa,cAAc,GAAG,EAAE;IACnB,kBAAkB,GAAG,GAAG;IACxB,kBAAkB,GAAG,IAAI;IACzB,iBAAiB,GAAG;;ICHpB,mBAAmB,GAAsB,CAAC,GAAG,EAAE,GAAG;;ICElD,kBAAkB,GAA6B,UAAA,IAAI;IAC5D,OAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,MAAI,IAAM;AAA1C;;ICAS,0BAA0B,GAAqB,cAAM,OAAA,WAAW;;ICHhE,cAAc,GAAsB;IAC7C,UAAU;IACV,WAAW;IACX,QAAQ;IACR,WAAW;IACX,YAAY;IACZ,MAAM;IACN,OAAO;IACP,KAAK;IACL,MAAM;;;ACTV;;;;IAIa,iBAAiB,GAAG,oBAAoB;AAErD;;;IAGa,oBAAoB,GAAG,uBAAuB;AAE3D;;;;IAIa,cAAc,GAAG,iBAAiB;AAE/C;;;IAGa,cAAc,GAAG;;ICpBjB,eAAe,GAAG;;ACA/B;;;;IAIa,KAAK,GAAG;IACjB,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,IAAI;;;ICRT,gBAAgB,GAAG,KAAK;IACxB,oBAAoB,GAAG,KAAK;IAC5B,qBAAqB,GAAG,OAAO;IAC/B,yBAAyB,GAAG,MAAM;IAClC,uBAAuB,GAAG,YAAY;IACtC,gCAAgC,GAAG,mCAAmC;IACtE,gBAAgB,GAAG,QAAQ;IAC3B,4BAA4B,GAAG;;ICP/B,OAAO,GAAG;;ACAvB;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-directives-mask-accessor.js","sources":["ng://@taiga-ui/core/directives/mask-accessor/mask-accessor.directive.ts","ng://@taiga-ui/core/directives/mask-accessor/mask-accessor.module.ts","ng://@taiga-ui/core/directives/mask-accessor/taiga-ui-core-directives-mask-accessor.ts"],"sourcesContent":["import {Directive, Optional} from '@angular/core';\nimport {\n ControlValueAccessor,\n DefaultValueAccessor,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport {TUI_VALUE_ACCESSOR} from '@taiga-ui/core/tokens';\n\nexport function fallbackAccessorFactory(\n accessor: ReadonlyArray<ControlValueAccessor> | null,\n fallback: ControlValueAccessor,\n): ControlValueAccessor {\n return accessor ? accessor[0] : fallback;\n}\n\n@Directive({\n selector: 'input[tuiMaskAccessor]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n deps: [[new Optional(), TUI_VALUE_ACCESSOR], DefaultValueAccessor],\n useFactory: fallbackAccessorFactory,\n multi: true,\n },\n ],\n})\nexport class TuiMaskAccessorDirective {}\n","import {NgModule} from '@angular/core';\n\nimport {TuiMaskAccessorDirective} from './mask-accessor.directive';\n\n/**\n * @internal\n */\n@NgModule({\n declarations: [TuiMaskAccessorDirective],\n exports: [TuiMaskAccessorDirective],\n})\nexport class TuiMaskAccessorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;SAQgB,uBAAuB,CACnC,QAAoD,EACpD,QAA8B;IAE9B,OAAO,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;AAC7C,CAAC;;IAaD;KAAwC;IAA3B,wBAAwB;QAXpC,SAAS,CAAC;YACP,QAAQ,EAAE,wBAAwB;YAClC,SAAS,EAAE;gBACP;oBACI,OAAO,EAAE,iBAAiB;oBAC1B,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,kBAAkB,CAAC,EAAE,oBAAoB,CAAC;oBAClE,UAAU,EAAE,uBAAuB;oBACnC,KAAK,EAAE,IAAI;iBACd;aACJ;SACJ,CAAC;OACW,wBAAwB,CAAG;IAAD,+BAAC;CAAxC;;ACtBA;;;;IAOA;KAAqC;IAAxB,qBAAqB;QAJjC,QAAQ,CAAC;YACN,YAAY,EAAE,CAAC,wBAAwB,CAAC;YACxC,OAAO,EAAE,CAAC,wBAAwB,CAAC;SACtC,CAAC;OACW,qBAAqB,CAAG;IAAD,4BAAC;CAArC;;ACXA;;;;;;"}
1
+ {"version":3,"file":"taiga-ui-core-directives-mask-accessor.js","sources":["ng://@taiga-ui/core/directives/mask-accessor/mask-accessor.directive.ts","ng://@taiga-ui/core/directives/mask-accessor/mask-accessor.module.ts","ng://@taiga-ui/core/directives/mask-accessor/taiga-ui-core-directives-mask-accessor.ts"],"sourcesContent":["import {Directive, Optional} from '@angular/core';\nimport {\n ControlValueAccessor,\n DefaultValueAccessor,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport {TUI_VALUE_ACCESSOR} from '@taiga-ui/core/tokens';\n\nexport function fallbackAccessorFactory(\n accessor: readonly ControlValueAccessor[] | null,\n fallback: ControlValueAccessor,\n): ControlValueAccessor {\n return accessor ? accessor[0] : fallback;\n}\n\n@Directive({\n selector: 'input[tuiMaskAccessor]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n deps: [[new Optional(), TUI_VALUE_ACCESSOR], DefaultValueAccessor],\n useFactory: fallbackAccessorFactory,\n multi: true,\n },\n ],\n})\nexport class TuiMaskAccessorDirective {}\n","import {NgModule} from '@angular/core';\n\nimport {TuiMaskAccessorDirective} from './mask-accessor.directive';\n\n/**\n * @internal\n */\n@NgModule({\n declarations: [TuiMaskAccessorDirective],\n exports: [TuiMaskAccessorDirective],\n})\nexport class TuiMaskAccessorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;SAQgB,uBAAuB,CACnC,QAAgD,EAChD,QAA8B;IAE9B,OAAO,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;AAC7C,CAAC;;IAaD;KAAwC;IAA3B,wBAAwB;QAXpC,SAAS,CAAC;YACP,QAAQ,EAAE,wBAAwB;YAClC,SAAS,EAAE;gBACP;oBACI,OAAO,EAAE,iBAAiB;oBAC1B,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,kBAAkB,CAAC,EAAE,oBAAoB,CAAC;oBAClE,UAAU,EAAE,uBAAuB;oBACnC,KAAK,EAAE,IAAI;iBACd;aACJ;SACJ,CAAC;OACW,wBAAwB,CAAG;IAAD,+BAAC;CAAxC;;ACtBA;;;;IAOA;KAAqC;IAAxB,qBAAqB;QAJjC,QAAQ,CAAC;YACN,YAAY,EAAE,CAAC,wBAAwB,CAAC;YACxC,OAAO,EAAE,CAAC,wBAAwB,CAAC;SACtC,CAAC;OACW,qBAAqB,CAAG;IAAD,4BAAC;CAArC;;ACXA;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-pipes-calendar-sheet.js","sources":["ng://@taiga-ui/core/pipes/calendar-sheet/utils.ts","ng://@taiga-ui/core/pipes/calendar-sheet/calendar-sheet.pipe.ts","ng://@taiga-ui/core/pipes/calendar-sheet/calendar-sheet.module.ts","ng://@taiga-ui/core/pipes/calendar-sheet/taiga-ui-core-pipes-calendar-sheet.ts"],"sourcesContent":["import {\n DAYS_IN_WEEK,\n inRange,\n tuiAssert,\n TuiDay,\n TuiDayOfWeek,\n TuiMonth,\n} from '@taiga-ui/cdk';\n\n// TODO: Remove export in ivy compiation\n/**\n * Computes day of week offset of the beginning of the month\n */\nexport const getMonthStartDaysOffset = (\n month: TuiMonth,\n firstDayOfWeek: TuiDayOfWeek,\n): number => {\n const startMonthOffsetFromSunday = new Date(month.year, month.month, 1).getDay();\n\n return startMonthOffsetFromSunday >= firstDayOfWeek\n ? startMonthOffsetFromSunday - firstDayOfWeek\n : DAYS_IN_WEEK - (firstDayOfWeek - startMonthOffsetFromSunday);\n};\n\n/*\nTODO: delete in v3.0:\n * TuiDay.getDayFromMonthRowCol\n * TuiMonth.monthStartDaysOffset\n * TuiMonth.weeksRowsCount\n * TuiYear.yearStartDaysOffset\n * TuiYear.getYearStartDaysOffset\n */\n/**\n * Calculated day on a calendar grid\n * @return resulting day on these coordinates (could exceed passed month)\n */\nexport const getDayFromMonthRowCol = ({\n month,\n rowIndex,\n colIndex,\n firstDayOfWeek,\n}: {\n month: TuiMonth;\n /**\n * row in a calendar\n */\n rowIndex: number;\n /**\n * column in a calendar\n */\n colIndex: number;\n /**\n * first day of the week index (Sunday - 0, Saturday - 6)\n */\n firstDayOfWeek: TuiDayOfWeek;\n}): TuiDay => {\n tuiAssert.assert(Number.isInteger(rowIndex));\n tuiAssert.assert(inRange(rowIndex, 0, 6));\n tuiAssert.assert(Number.isInteger(colIndex));\n tuiAssert.assert(inRange(colIndex, 0, DAYS_IN_WEEK));\n\n let day =\n rowIndex * DAYS_IN_WEEK +\n colIndex -\n getMonthStartDaysOffset(month, firstDayOfWeek) +\n 1;\n\n if (day > month.daysCount) {\n day = day - month.daysCount;\n month = month.append({month: 1});\n }\n\n if (day <= 0) {\n month = month.append({month: -1});\n day = month.daysCount + day;\n }\n\n return new TuiDay(month.year, month.month, day);\n};\n","import {Inject, Pipe, PipeTransform} from '@angular/core';\nimport {DAYS_IN_WEEK, TuiDay, TuiDayOfWeek, TuiMonth} from '@taiga-ui/cdk';\nimport {TUI_FIRST_DAY_OF_WEEK} from '@taiga-ui/core/tokens';\n\nimport {getDayFromMonthRowCol} from './utils';\n\nconst CALENDAR_ROWS_COUNT = 6;\n\n@Pipe({\n name: 'tuiCalendarSheet',\n})\nexport class TuiCalendarSheetPipe implements PipeTransform {\n private currentMonth: TuiMonth | null = null;\n private currentSheet: ReadonlyArray<ReadonlyArray<TuiDay>> = [];\n\n constructor(\n @Inject(TUI_FIRST_DAY_OF_WEEK)\n private readonly firstDayOfWeek: TuiDayOfWeek,\n ) {}\n\n transform(\n month: TuiMonth,\n showAdjacentDays: boolean = false,\n ): ReadonlyArray<ReadonlyArray<TuiDay>> {\n if (this.currentMonth && this.currentMonth.monthSame(month)) {\n return this.currentSheet;\n }\n\n const sheet: Array<readonly TuiDay[]> = [];\n\n for (let rowIndex = 0; rowIndex < CALENDAR_ROWS_COUNT; rowIndex++) {\n const row: TuiDay[] = [];\n\n for (let colIndex = 0; colIndex < DAYS_IN_WEEK; colIndex++) {\n const day = getDayFromMonthRowCol({\n month,\n rowIndex,\n colIndex,\n firstDayOfWeek: this.firstDayOfWeek,\n });\n\n const isPrevMonthDay = (day: TuiDay, relativeToMonth = month) =>\n day.year < relativeToMonth.year || day.month < relativeToMonth.month;\n\n const isNextMonthDay = (day: TuiDay, relativeToMonth = month) =>\n day.year > relativeToMonth.year || day.month > relativeToMonth.month;\n\n if (isPrevMonthDay(day) && !showAdjacentDays) {\n continue;\n }\n\n if (isNextMonthDay(day) && !showAdjacentDays) {\n break;\n }\n\n row.push(day);\n }\n\n sheet.push(row);\n }\n\n this.currentSheet = sheet.filter(row => row.length);\n this.currentMonth = month;\n\n return this.currentSheet;\n }\n}\n","import {NgModule} from '@angular/core';\n\nimport {TuiCalendarSheetPipe} from './calendar-sheet.pipe';\n\n@NgModule({\n declarations: [TuiCalendarSheetPipe],\n exports: [TuiCalendarSheetPipe],\n})\nexport class TuiCalendarSheetPipeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-core-pipes-calendar-sheet.js","sources":["ng://@taiga-ui/core/pipes/calendar-sheet/utils.ts","ng://@taiga-ui/core/pipes/calendar-sheet/calendar-sheet.pipe.ts","ng://@taiga-ui/core/pipes/calendar-sheet/calendar-sheet.module.ts","ng://@taiga-ui/core/pipes/calendar-sheet/taiga-ui-core-pipes-calendar-sheet.ts"],"sourcesContent":["import {\n DAYS_IN_WEEK,\n inRange,\n tuiAssert,\n TuiDay,\n TuiDayOfWeek,\n TuiMonth,\n} from '@taiga-ui/cdk';\n\n// TODO: Remove export in ivy compiation\n/**\n * Computes day of week offset of the beginning of the month\n */\nexport const getMonthStartDaysOffset = (\n month: TuiMonth,\n firstDayOfWeek: TuiDayOfWeek,\n): number => {\n const startMonthOffsetFromSunday = new Date(month.year, month.month, 1).getDay();\n\n return startMonthOffsetFromSunday >= firstDayOfWeek\n ? startMonthOffsetFromSunday - firstDayOfWeek\n : DAYS_IN_WEEK - (firstDayOfWeek - startMonthOffsetFromSunday);\n};\n\n/*\nTODO: delete in v3.0:\n * TuiDay.getDayFromMonthRowCol\n * TuiMonth.monthStartDaysOffset\n * TuiMonth.weeksRowsCount\n * TuiYear.yearStartDaysOffset\n * TuiYear.getYearStartDaysOffset\n */\n/**\n * Calculated day on a calendar grid\n * @return resulting day on these coordinates (could exceed passed month)\n */\nexport const getDayFromMonthRowCol = ({\n month,\n rowIndex,\n colIndex,\n firstDayOfWeek,\n}: {\n month: TuiMonth;\n /**\n * row in a calendar\n */\n rowIndex: number;\n /**\n * column in a calendar\n */\n colIndex: number;\n /**\n * first day of the week index (Sunday - 0, Saturday - 6)\n */\n firstDayOfWeek: TuiDayOfWeek;\n}): TuiDay => {\n tuiAssert.assert(Number.isInteger(rowIndex));\n tuiAssert.assert(inRange(rowIndex, 0, 6));\n tuiAssert.assert(Number.isInteger(colIndex));\n tuiAssert.assert(inRange(colIndex, 0, DAYS_IN_WEEK));\n\n let day =\n rowIndex * DAYS_IN_WEEK +\n colIndex -\n getMonthStartDaysOffset(month, firstDayOfWeek) +\n 1;\n\n if (day > month.daysCount) {\n day = day - month.daysCount;\n month = month.append({month: 1});\n }\n\n if (day <= 0) {\n month = month.append({month: -1});\n day = month.daysCount + day;\n }\n\n return new TuiDay(month.year, month.month, day);\n};\n","import {Inject, Pipe, PipeTransform} from '@angular/core';\nimport {DAYS_IN_WEEK, TuiDay, TuiDayOfWeek, TuiMonth} from '@taiga-ui/cdk';\nimport {TUI_FIRST_DAY_OF_WEEK} from '@taiga-ui/core/tokens';\n\nimport {getDayFromMonthRowCol} from './utils';\n\nconst CALENDAR_ROWS_COUNT = 6;\n\n@Pipe({\n name: 'tuiCalendarSheet',\n})\nexport class TuiCalendarSheetPipe implements PipeTransform {\n private currentMonth: TuiMonth | null = null;\n private currentSheet: ReadonlyArray<readonly TuiDay[]> = [];\n\n constructor(\n @Inject(TUI_FIRST_DAY_OF_WEEK)\n private readonly firstDayOfWeek: TuiDayOfWeek,\n ) {}\n\n transform(\n month: TuiMonth,\n showAdjacentDays: boolean = false,\n ): ReadonlyArray<readonly TuiDay[]> {\n if (this.currentMonth && this.currentMonth.monthSame(month)) {\n return this.currentSheet;\n }\n\n const sheet: (readonly TuiDay[])[] = [];\n\n for (let rowIndex = 0; rowIndex < CALENDAR_ROWS_COUNT; rowIndex++) {\n const row: TuiDay[] = [];\n\n for (let colIndex = 0; colIndex < DAYS_IN_WEEK; colIndex++) {\n const day = getDayFromMonthRowCol({\n month,\n rowIndex,\n colIndex,\n firstDayOfWeek: this.firstDayOfWeek,\n });\n\n const isPrevMonthDay = (day: TuiDay, relativeToMonth = month) =>\n day.year < relativeToMonth.year || day.month < relativeToMonth.month;\n\n const isNextMonthDay = (day: TuiDay, relativeToMonth = month) =>\n day.year > relativeToMonth.year || day.month > relativeToMonth.month;\n\n if (isPrevMonthDay(day) && !showAdjacentDays) {\n continue;\n }\n\n if (isNextMonthDay(day) && !showAdjacentDays) {\n break;\n }\n\n row.push(day);\n }\n\n sheet.push(row);\n }\n\n this.currentSheet = sheet.filter(row => row.length);\n this.currentMonth = month;\n\n return this.currentSheet;\n }\n}\n","import {NgModule} from '@angular/core';\n\nimport {TuiCalendarSheetPipe} from './calendar-sheet.pipe';\n\n@NgModule({\n declarations: [TuiCalendarSheetPipe],\n exports: [TuiCalendarSheetPipe],\n})\nexport class TuiCalendarSheetPipeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -14,12 +14,14 @@ var TuiFormatNumberPipe = /** @class */ (function () {
14
14
  * @param decimalSeparator
15
15
  * @param thousandSeparator
16
16
  * @param decimalLimit number of digits of decimal part, null to keep untouched
17
+ * @param zeroPadding enable zeros at the end of decimal part
17
18
  */
18
- TuiFormatNumberPipe.prototype.transform = function (value, decimalLimit, decimalSeparator, thousandSeparator) {
19
+ TuiFormatNumberPipe.prototype.transform = function (value, decimalLimit, decimalSeparator, thousandSeparator, zeroPadding) {
19
20
  if (decimalLimit === void 0) { decimalLimit = null; }
20
21
  if (decimalSeparator === void 0) { decimalSeparator = this.numberFormat.decimalSeparator; }
21
22
  if (thousandSeparator === void 0) { thousandSeparator = this.numberFormat.thousandSeparator; }
22
- return formatNumber(value, decimalLimit, decimalSeparator, thousandSeparator);
23
+ if (zeroPadding === void 0) { zeroPadding = this.numberFormat.zeroPadding; }
24
+ return formatNumber(value, decimalLimit, decimalSeparator, thousandSeparator, zeroPadding);
23
25
  };
24
26
  TuiFormatNumberPipe.ctorParameters = function () { return [
25
27
  { type: undefined, decorators: [{ type: Inject, args: [TUI_NUMBER_FORMAT,] }] }
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-pipes-format-number.js","sources":["ng://@taiga-ui/core/pipes/format-number/format-number.pipe.ts","ng://@taiga-ui/core/pipes/format-number/format-number.module.ts","ng://@taiga-ui/core/pipes/format-number/taiga-ui-core-pipes-format-number.ts"],"sourcesContent":["import {Inject, Pipe, PipeTransform} from '@angular/core';\nimport {NumberFormatSettings} from '@taiga-ui/core/interfaces';\nimport {TUI_NUMBER_FORMAT} from '@taiga-ui/core/tokens';\nimport {formatNumber} from '@taiga-ui/core/utils/format';\n\n@Pipe({name: 'tuiFormatNumber'})\nexport class TuiFormatNumberPipe implements PipeTransform {\n constructor(\n @Inject(TUI_NUMBER_FORMAT)\n private readonly numberFormat: NumberFormatSettings,\n ) {}\n\n /**\n * Formats number adding thousand separators and correct decimal separator\n * padding decimal part with zeroes to given length\n * @param value number\n * @param decimalSeparator\n * @param thousandSeparator\n * @param decimalLimit number of digits of decimal part, null to keep untouched\n */\n transform(\n value: number,\n decimalLimit: number | null = null,\n decimalSeparator: string = this.numberFormat.decimalSeparator,\n thousandSeparator: string = this.numberFormat.thousandSeparator,\n ): string {\n return formatNumber(value, decimalLimit, decimalSeparator, thousandSeparator);\n }\n}\n","import {NgModule} from '@angular/core';\n\nimport {TuiFormatNumberPipe} from './format-number.pipe';\n\n@NgModule({\n exports: [TuiFormatNumberPipe],\n declarations: [TuiFormatNumberPipe],\n})\nexport class TuiFormatNumberPipeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;IAOI,6BAEqB,YAAkC;QAAlC,iBAAY,GAAZ,YAAY,CAAsB;KACnD;;;;;;;;;IAUJ,uCAAS,GAAT,UACI,KAAa,EACb,YAAkC,EAClC,gBAA6D,EAC7D,iBAA+D;QAF/D,6BAAA,EAAA,mBAAkC;QAClC,iCAAA,EAAA,mBAA2B,IAAI,CAAC,YAAY,CAAC,gBAAgB;QAC7D,kCAAA,EAAA,oBAA4B,IAAI,CAAC,YAAY,CAAC,iBAAiB;QAE/D,OAAO,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;KACjF;;gDAnBI,MAAM,SAAC,iBAAiB;;IAFpB,mBAAmB;QAD/B,IAAI,CAAC,EAAC,IAAI,EAAE,iBAAiB,EAAC,CAAC;QAGvB,WAAA,MAAM,CAAC,iBAAiB,CAAC,CAAA;OAFrB,mBAAmB,CAsB/B;IAAD,0BAAC;CAtBD;;;ICEA;KAAyC;IAA5B,yBAAyB;QAJrC,QAAQ,CAAC;YACN,OAAO,EAAE,CAAC,mBAAmB,CAAC;YAC9B,YAAY,EAAE,CAAC,mBAAmB,CAAC;SACtC,CAAC;OACW,yBAAyB,CAAG;IAAD,gCAAC;CAAzC;;ACRA;;;;;;"}
1
+ {"version":3,"file":"taiga-ui-core-pipes-format-number.js","sources":["ng://@taiga-ui/core/pipes/format-number/format-number.pipe.ts","ng://@taiga-ui/core/pipes/format-number/format-number.module.ts","ng://@taiga-ui/core/pipes/format-number/taiga-ui-core-pipes-format-number.ts"],"sourcesContent":["import {Inject, Pipe, PipeTransform} from '@angular/core';\nimport {NumberFormatSettings} from '@taiga-ui/core/interfaces';\nimport {TUI_NUMBER_FORMAT} from '@taiga-ui/core/tokens';\nimport {formatNumber} from '@taiga-ui/core/utils/format';\n\n@Pipe({name: 'tuiFormatNumber'})\nexport class TuiFormatNumberPipe implements PipeTransform {\n constructor(\n @Inject(TUI_NUMBER_FORMAT)\n private readonly numberFormat: NumberFormatSettings,\n ) {}\n\n /**\n * Formats number adding thousand separators and correct decimal separator\n * padding decimal part with zeroes to given length\n * @param value number\n * @param decimalSeparator\n * @param thousandSeparator\n * @param decimalLimit number of digits of decimal part, null to keep untouched\n * @param zeroPadding enable zeros at the end of decimal part\n */\n transform(\n value: number,\n decimalLimit: number | null = null,\n decimalSeparator: string = this.numberFormat.decimalSeparator,\n thousandSeparator: string = this.numberFormat.thousandSeparator,\n zeroPadding: boolean = this.numberFormat.zeroPadding,\n ): string {\n return formatNumber(\n value,\n decimalLimit,\n decimalSeparator,\n thousandSeparator,\n zeroPadding,\n );\n }\n}\n","import {NgModule} from '@angular/core';\n\nimport {TuiFormatNumberPipe} from './format-number.pipe';\n\n@NgModule({\n exports: [TuiFormatNumberPipe],\n declarations: [TuiFormatNumberPipe],\n})\nexport class TuiFormatNumberPipeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;IAOI,6BAEqB,YAAkC;QAAlC,iBAAY,GAAZ,YAAY,CAAsB;KACnD;;;;;;;;;;IAWJ,uCAAS,GAAT,UACI,KAAa,EACb,YAAkC,EAClC,gBAA6D,EAC7D,iBAA+D,EAC/D,WAAoD;QAHpD,6BAAA,EAAA,mBAAkC;QAClC,iCAAA,EAAA,mBAA2B,IAAI,CAAC,YAAY,CAAC,gBAAgB;QAC7D,kCAAA,EAAA,oBAA4B,IAAI,CAAC,YAAY,CAAC,iBAAiB;QAC/D,4BAAA,EAAA,cAAuB,IAAI,CAAC,YAAY,CAAC,WAAW;QAEpD,OAAO,YAAY,CACf,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,CACd,CAAC;KACL;;gDA3BI,MAAM,SAAC,iBAAiB;;IAFpB,mBAAmB;QAD/B,IAAI,CAAC,EAAC,IAAI,EAAE,iBAAiB,EAAC,CAAC;QAGvB,WAAA,MAAM,CAAC,iBAAiB,CAAC,CAAA;OAFrB,mBAAmB,CA8B/B;IAAD,0BAAC;CA9BD;;;ICEA;KAAyC;IAA5B,yBAAyB;QAJrC,QAAQ,CAAC;YACN,OAAO,EAAE,CAAC,mBAAmB,CAAC;YAC9B,YAAY,EAAE,CAAC,mBAAmB,CAAC;SACtC,CAAC;OACW,yBAAyB,CAAG;IAAD,gCAAC;CAAzC;;ACRA;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-services.js","sources":["ng://@taiga-ui/core/services/hint.service.ts","ng://@taiga-ui/core/services/night-theme.service.ts","ng://@taiga-ui/core/services/router-link-active.service.ts","ng://@taiga-ui/core/services/svg.service.ts","ng://@taiga-ui/core/services/taiga-ui-core-services.ts"],"sourcesContent":["import {Injectable} from '@angular/core';\nimport {BehaviorSubject} from 'rxjs';\n\n// TODO: remove after v2.0 separating. It prevents seps cycling.\ntype TuiHintDirective = any;\n\ntype AbstractTuiHint = any;\n\n/**\n * Service for displaying hints/tooltips\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiHintService extends BehaviorSubject<ReadonlyArray<AbstractTuiHint>> {\n /**\n * TODO: v2.0\n * We need the following logic for desribedBy\n * move it into another service that can register hints and\n * manage it using TuiHintService inside\n */\n private directives: ReadonlyArray<TuiHintDirective> = [];\n\n constructor() {\n super([]);\n }\n\n add(directive: AbstractTuiHint) {\n this.next(this.value.concat(directive));\n }\n\n remove(directive: AbstractTuiHint) {\n if (this.value.includes(directive)) {\n this.next(this.value.filter(hint => hint !== directive));\n }\n }\n\n register(directive: TuiHintDirective) {\n this.directives = [...this.directives, directive];\n }\n\n unregister(directive: TuiHintDirective) {\n this.remove(directive);\n this.directives = this.directives.filter(dir => dir !== directive);\n }\n\n showHintForId(id: string) {\n const directive = this.findDirectiveWithHintId(id);\n\n if (directive) {\n this.add(directive);\n }\n }\n\n hideHintForId(id: string) {\n const directive = this.findDirectiveWithHintId(id);\n\n if (directive) {\n this.remove(directive);\n }\n }\n\n private findDirectiveWithHintId(id: string): TuiHintDirective | undefined {\n return this.directives.find(directive => directive.tuiHintId === id);\n }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {fromEvent, Observable} from 'rxjs';\nimport {map, share, startWith} from 'rxjs/operators';\n\n// @dynamic\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiNightThemeService extends Observable<boolean> {\n constructor(@Inject(WINDOW) windowRef: Window) {\n const media = windowRef.matchMedia('(prefers-color-scheme: dark)');\n const media$ = fromEvent(media, 'change').pipe(\n startWith(null),\n map(() => media.matches),\n share(),\n );\n\n super(subscriber => media$.subscribe(subscriber));\n }\n}\n","import {Inject, Injectable, NgZone, Optional} from '@angular/core';\nimport {RouterLinkActive} from '@angular/router';\nimport {ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {TuiDestroyService, tuiZoneOptimized} from '@taiga-ui/cdk';\nimport {EMPTY, Observable} from 'rxjs';\nimport {distinctUntilChanged, map, takeUntil} from 'rxjs/operators';\n\n@Injectable()\nexport class TuiRouterLinkActiveService extends Observable<boolean> {\n constructor(\n @Optional()\n @Inject(RouterLinkActive)\n routerLinkActive: RouterLinkActive | null,\n @Inject(NgZone) ngZone: NgZone,\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n @Inject(TuiDestroyService) destroy$: TuiDestroyService,\n ) {\n const stream$ = routerLinkActive\n ? animationFrame$.pipe(\n map(() => routerLinkActive.isActive),\n distinctUntilChanged(),\n tuiZoneOptimized(ngZone),\n takeUntil(destroy$),\n )\n : EMPTY;\n\n super(subscriber => stream$.subscribe(subscriber));\n }\n}\n","import {Inject, Injectable, Optional, Sanitizer, SecurityContext} from '@angular/core';\nimport {DomSanitizer, SafeHtml} from '@angular/platform-browser';\nimport {tuiAssert} from '@taiga-ui/cdk';\nimport {TUI_ICONS, TUI_SANITIZER} from '@taiga-ui/core/tokens';\nimport {processIcon} from '@taiga-ui/core/utils/dom';\nimport {BehaviorSubject} from 'rxjs';\n\n/**\n * Service for reusing SVGs without inlining each instance\n */\n// @dynamic\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiSvgService {\n private originals: Record<string, string> = {};\n\n readonly items$ = new BehaviorSubject<Map<string, SafeHtml>>(new Map());\n\n constructor(\n @Optional()\n @Inject(TUI_SANITIZER)\n private readonly tuiSanitizer: Sanitizer | null,\n @Inject(DomSanitizer) private readonly sanitizer: DomSanitizer,\n @Inject(TUI_ICONS) icons: Record<string, string>,\n ) {\n this.define(icons);\n }\n\n define(icons: Record<string, string>) {\n const {value} = this.items$;\n\n Object.keys(icons).forEach(key => {\n this.defineIcon(key, icons[key], value);\n });\n\n this.items$.next(value);\n }\n\n getOriginal(name: string): string | null {\n return this.originals[name] || null;\n }\n\n private defineIcon(name: string, src: string, map: Map<string, SafeHtml>) {\n if (map.has(name)) {\n return;\n }\n\n const parsed = this.parseSrc(name, src);\n\n if (!parsed) {\n tuiAssert.assert(false, 'Unable to parse given SVG src');\n\n return;\n }\n\n map.set(name, parsed);\n this.originals = {\n ...this.originals,\n [name]: src,\n };\n }\n\n private parseSrc(name: string, src: string): SafeHtml {\n return this.sanitize(processIcon(src, name));\n }\n\n private sanitize(src: string): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(\n (this.tuiSanitizer\n ? this.tuiSanitizer.sanitize(SecurityContext.HTML, src)\n : this.sanitizer.sanitize(SecurityContext.HTML, src)) || '',\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":"taiga-ui-core-services.js","sources":["ng://@taiga-ui/core/services/hint.service.ts","ng://@taiga-ui/core/services/night-theme.service.ts","ng://@taiga-ui/core/services/router-link-active.service.ts","ng://@taiga-ui/core/services/svg.service.ts","ng://@taiga-ui/core/services/taiga-ui-core-services.ts"],"sourcesContent":["import {Injectable} from '@angular/core';\nimport {BehaviorSubject} from 'rxjs';\n\n// TODO: remove after v2.0 separating. It prevents seps cycling.\ntype TuiHintDirective = any;\n\ntype AbstractTuiHint = any;\n\n/**\n * Service for displaying hints/tooltips\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiHintService extends BehaviorSubject<readonly AbstractTuiHint[]> {\n /**\n * TODO: v2.0\n * We need the following logic for desribedBy\n * move it into another service that can register hints and\n * manage it using TuiHintService inside\n */\n private directives: readonly TuiHintDirective[] = [];\n\n constructor() {\n super([]);\n }\n\n add(directive: AbstractTuiHint) {\n this.next(this.value.concat(directive));\n }\n\n remove(directive: AbstractTuiHint) {\n if (this.value.includes(directive)) {\n this.next(this.value.filter(hint => hint !== directive));\n }\n }\n\n register(directive: TuiHintDirective) {\n this.directives = [...this.directives, directive];\n }\n\n unregister(directive: TuiHintDirective) {\n this.remove(directive);\n this.directives = this.directives.filter(dir => dir !== directive);\n }\n\n showHintForId(id: string) {\n const directive = this.findDirectiveWithHintId(id);\n\n if (directive) {\n this.add(directive);\n }\n }\n\n hideHintForId(id: string) {\n const directive = this.findDirectiveWithHintId(id);\n\n if (directive) {\n this.remove(directive);\n }\n }\n\n private findDirectiveWithHintId(id: string): TuiHintDirective | undefined {\n return this.directives.find(directive => directive.tuiHintId === id);\n }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {fromEvent, Observable} from 'rxjs';\nimport {map, share, startWith} from 'rxjs/operators';\n\n// @dynamic\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiNightThemeService extends Observable<boolean> {\n constructor(@Inject(WINDOW) windowRef: Window) {\n const media = windowRef.matchMedia('(prefers-color-scheme: dark)');\n const media$ = fromEvent(media, 'change').pipe(\n startWith(null),\n map(() => media.matches),\n share(),\n );\n\n super(subscriber => media$.subscribe(subscriber));\n }\n}\n","import {Inject, Injectable, NgZone, Optional} from '@angular/core';\nimport {RouterLinkActive} from '@angular/router';\nimport {ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {TuiDestroyService, tuiZoneOptimized} from '@taiga-ui/cdk';\nimport {EMPTY, Observable} from 'rxjs';\nimport {distinctUntilChanged, map, takeUntil} from 'rxjs/operators';\n\n@Injectable()\nexport class TuiRouterLinkActiveService extends Observable<boolean> {\n constructor(\n @Optional()\n @Inject(RouterLinkActive)\n routerLinkActive: RouterLinkActive | null,\n @Inject(NgZone) ngZone: NgZone,\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n @Inject(TuiDestroyService) destroy$: TuiDestroyService,\n ) {\n const stream$ = routerLinkActive\n ? animationFrame$.pipe(\n map(() => routerLinkActive.isActive),\n distinctUntilChanged(),\n tuiZoneOptimized(ngZone),\n takeUntil(destroy$),\n )\n : EMPTY;\n\n super(subscriber => stream$.subscribe(subscriber));\n }\n}\n","import {Inject, Injectable, Optional, Sanitizer, SecurityContext} from '@angular/core';\nimport {DomSanitizer, SafeHtml} from '@angular/platform-browser';\nimport {tuiAssert} from '@taiga-ui/cdk';\nimport {TUI_ICONS, TUI_SANITIZER} from '@taiga-ui/core/tokens';\nimport {processIcon} from '@taiga-ui/core/utils/dom';\nimport {BehaviorSubject} from 'rxjs';\n\n/**\n * Service for reusing SVGs without inlining each instance\n */\n// @dynamic\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiSvgService {\n private originals: Record<string, string> = {};\n\n readonly items$ = new BehaviorSubject<Map<string, SafeHtml>>(new Map());\n\n constructor(\n @Optional()\n @Inject(TUI_SANITIZER)\n private readonly tuiSanitizer: Sanitizer | null,\n @Inject(DomSanitizer) private readonly sanitizer: DomSanitizer,\n @Inject(TUI_ICONS) icons: Record<string, string>,\n ) {\n this.define(icons);\n }\n\n define(icons: Record<string, string>) {\n const {value} = this.items$;\n\n Object.keys(icons).forEach(key => {\n this.defineIcon(key, icons[key], value);\n });\n\n this.items$.next(value);\n }\n\n getOriginal(name: string): string | null {\n return this.originals[name] || null;\n }\n\n private defineIcon(name: string, src: string, map: Map<string, SafeHtml>) {\n if (map.has(name)) {\n return;\n }\n\n const parsed = this.parseSrc(name, src);\n\n if (!parsed) {\n tuiAssert.assert(false, 'Unable to parse given SVG src');\n\n return;\n }\n\n map.set(name, parsed);\n this.originals = {\n ...this.originals,\n [name]: src,\n };\n }\n\n private parseSrc(name: string, src: string): SafeHtml {\n return this.sanitize(processIcon(src, name));\n }\n\n private sanitize(src: string): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(\n (this.tuiSanitizer\n ? this.tuiSanitizer.sanitize(SecurityContext.HTML, src)\n : this.sanitizer.sanitize(SecurityContext.HTML, src)) || '',\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -67,11 +67,14 @@ function formatNumber(value, decimalLimit, decimalSeparator, thousandSeparator,
67
67
  var integerPartString = String(Math.floor(Math.abs(value)));
68
68
  var fractionPartPadded = getFractionPartPadded(value, decimalLimit);
69
69
  if (decimalLimit !== null) {
70
- var zeroPaddingSize = zeroPadding
71
- ? Math.max(decimalLimit - fractionPartPadded.length, 0)
72
- : 0;
73
- var zeroPartString = '0'.repeat(zeroPaddingSize);
74
- fractionPartPadded = "" + fractionPartPadded + zeroPartString;
70
+ if (zeroPadding) {
71
+ var zeroPaddingSize = Math.max(decimalLimit - fractionPartPadded.length, 0);
72
+ var zeroPartString = '0'.repeat(zeroPaddingSize);
73
+ fractionPartPadded = "" + fractionPartPadded + zeroPartString;
74
+ }
75
+ else {
76
+ fractionPartPadded = fractionPartPadded.replace(/0*$/, '');
77
+ }
75
78
  }
76
79
  var remainder = integerPartString.length % 3;
77
80
  var sign = value < 0 ? '-' : '';
@@ -82,9 +85,7 @@ function formatNumber(value, decimalLimit, decimalSeparator, thousandSeparator,
82
85
  }
83
86
  result += integerPartString.charAt(i);
84
87
  }
85
- return !!fractionPartPadded || decimalLimit
86
- ? result + decimalSeparator + fractionPartPadded
87
- : result;
88
+ return fractionPartPadded ? result + decimalSeparator + fractionPartPadded : result;
88
89
  }
89
90
 
90
91
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-utils-format.js","sources":["ng://@taiga-ui/core/utils/format/capitalize.ts","ng://@taiga-ui/core/utils/format/capitalize-first-letter.ts","ng://@taiga-ui/core/utils/format/number-to-string-without-exp.ts","ng://@taiga-ui/core/utils/format/get-fractional-part-padded.ts","ng://@taiga-ui/core/utils/format/format-number.ts","ng://@taiga-ui/core/utils/format/format-phone.ts","ng://@taiga-ui/core/utils/format/other-decimal-symbol.ts","ng://@taiga-ui/core/utils/format/pluralize.ts","ng://@taiga-ui/core/utils/format/pluralize-to-icu.ts","ng://@taiga-ui/core/utils/format/taiga-ui-core-utils-format.ts"],"sourcesContent":["/**\n * Capitalizes a given string, replacing it with a lowercase string and making\n * the first letter of each word uppercase.\n *\n * @param value the input string\n * @return the capitalized string\n */\nexport function capitalize(value: string): string {\n return value.toLowerCase().replace(/(?:^|\\s)\\S/g, char => char.toUpperCase());\n}\n","export function capitalizeFirstLetter(value: string): string {\n return `${value.charAt(0).toUpperCase()}${value.slice(1)}`;\n}\n","/**\n * Convert number to string with replacing exponent part on decimals\n *\n * @param value the number\n * @return string representation of a number\n */\nexport function numberToStringWithoutExp(value: number): string {\n const valueAsString = String(value);\n const [numberPart, expPart] = valueAsString.split('e-');\n\n let valueWithoutExp = valueAsString;\n\n if (expPart) {\n const [, fractionalPart] = numberPart.split('.');\n const decimalDigits = Number(expPart) + (fractionalPart?.length || 0);\n\n valueWithoutExp = value.toFixed(decimalDigits);\n }\n\n return valueWithoutExp;\n}\n","import {numberToStringWithoutExp} from './number-to-string-without-exp';\n\n/**\n * Return fractional part of number\n *\n * @param value the number\n * @param precision number of digits of decimal part, null to keep untouched\n * @return the fractional part of number\n */\nexport function getFractionPartPadded(value: number, precision?: number | null): string {\n const [, fractionPartPadded = ''] = numberToStringWithoutExp(value).split('.');\n\n return typeof precision === 'number'\n ? fractionPartPadded.substr(0, precision)\n : fractionPartPadded;\n}\n","import {CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk';\n\nimport {getFractionPartPadded} from './get-fractional-part-padded';\n\n/**\n * Formats number adding a thousand separators and correct decimal separator\n * padding decimal part with zeroes to given length\n *\n * @param value the input number\n * @param decimalLimit number of digits of decimal part, null to keep untouched\n * @param decimalSeparator separator between the integer and the decimal part\n * @param thousandSeparator separator between thousands\n * @param zeroPadding enable zeros at the end of decimal part\n * @return the formatted string\n */\nexport function formatNumber(\n value: number,\n decimalLimit: number | null = null,\n decimalSeparator: string = ',',\n thousandSeparator: string = CHAR_NO_BREAK_SPACE,\n zeroPadding: boolean = true,\n): string {\n const integerPartString = String(Math.floor(Math.abs(value)));\n\n let fractionPartPadded = getFractionPartPadded(value, decimalLimit);\n\n if (decimalLimit !== null) {\n const zeroPaddingSize: number = zeroPadding\n ? Math.max(decimalLimit - fractionPartPadded.length, 0)\n : 0;\n const zeroPartString = '0'.repeat(zeroPaddingSize);\n\n fractionPartPadded = `${fractionPartPadded}${zeroPartString}`;\n }\n\n const remainder = integerPartString.length % 3;\n const sign = value < 0 ? '-' : '';\n let result = sign + integerPartString.charAt(0);\n\n for (let i = 1; i < integerPartString.length; i++) {\n if (i % 3 === remainder && integerPartString.length > 3) {\n result += thousandSeparator;\n }\n\n result += integerPartString.charAt(i);\n }\n\n return !!fractionPartPadded || decimalLimit\n ? result + decimalSeparator + fractionPartPadded\n : result;\n}\n","/**\n * Formats a string with the phone format +7XXXXXXXXXXXX or XXXXXXXXXXXX,\n * adding parentheses and hyphens.\n *\n * @param value the input string\n * @param countryCode a country code\n * @param phoneMask a phone number mask\n * @return the formatted phone string of the form +7 XXX XXX-XX-XX\n */\nexport function formatPhone(\n value: string,\n countryCode: string,\n phoneMask: string,\n): string {\n if (!value) {\n return '';\n }\n\n let result = countryCode;\n\n countryCode = countryCode.replace(/[()]/g, '');\n\n if (!value.startsWith(countryCode)) {\n value = countryCode + value.replace('+', '');\n }\n\n const splitPhoneMask = phoneMask.split('');\n const splitValue = value.slice(countryCode.length).split('');\n\n result += ' ';\n\n if (splitValue.length === 0) {\n return result;\n }\n\n for (let i = 0; i < splitPhoneMask.length; i++) {\n if (splitValue.length === 0) {\n break;\n }\n\n if (splitPhoneMask[i] === '#') {\n result += splitValue[0] || '';\n splitValue.splice(0, 1);\n } else {\n result += splitPhoneMask[i];\n }\n }\n\n return result;\n}\n","import {TuiDecimalSymbol} from '@taiga-ui/core/types';\n\nexport function otherDecimalSymbol(symbol: TuiDecimalSymbol): TuiDecimalSymbol {\n return symbol === '.' ? ',' : '.';\n}\n","import {TuiPluralize} from '@taiga-ui/core/types';\n\n/**\n * Selects the correct plural form to display.\n *\n * @param value the input number\n * @param args an array of three plural forms, e.g. ['год', 'года', 'лет']\n * @deprecated This implementation targets Russian.\n * Use https://angular.io/api/common/NgPlural for your implementations.\n */\nexport function pluralize(value: number, [one, few, many]: TuiPluralize): string {\n const ten = value % 10;\n const hundred = value % 100;\n\n // 1, 21, 101, 121, но не 11, 111, 211...\n if (ten === 1 && hundred !== 11) {\n return one;\n }\n\n // 2, 3, 4, 22, 33, 44, 152, 163, 174, но не 12, 13, 14, 112, 213, 314...\n if (ten >= 2 && ten <= 4 && (hundred < 10 || hundred >= 20)) {\n return few;\n }\n\n return many;\n}\n","import {TuiPluralize} from '@taiga-ui/core/types';\n\n// TODO: remove in 3.0\n\n/**\n * Temporary util for mapping TuiPluralize array to ICU format\n */\nexport function tuiPluralizeToICU(pluralize: TuiPluralize): Record<string, string> {\n return {\n one: pluralize[0],\n few: pluralize[1],\n many: pluralize[2],\n other: pluralize[2],\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":"taiga-ui-core-utils-format.js","sources":["ng://@taiga-ui/core/utils/format/capitalize.ts","ng://@taiga-ui/core/utils/format/capitalize-first-letter.ts","ng://@taiga-ui/core/utils/format/number-to-string-without-exp.ts","ng://@taiga-ui/core/utils/format/get-fractional-part-padded.ts","ng://@taiga-ui/core/utils/format/format-number.ts","ng://@taiga-ui/core/utils/format/format-phone.ts","ng://@taiga-ui/core/utils/format/other-decimal-symbol.ts","ng://@taiga-ui/core/utils/format/pluralize.ts","ng://@taiga-ui/core/utils/format/pluralize-to-icu.ts","ng://@taiga-ui/core/utils/format/taiga-ui-core-utils-format.ts"],"sourcesContent":["/**\n * Capitalizes a given string, replacing it with a lowercase string and making\n * the first letter of each word uppercase.\n *\n * @param value the input string\n * @return the capitalized string\n */\nexport function capitalize(value: string): string {\n return value.toLowerCase().replace(/(?:^|\\s)\\S/g, char => char.toUpperCase());\n}\n","export function capitalizeFirstLetter(value: string): string {\n return `${value.charAt(0).toUpperCase()}${value.slice(1)}`;\n}\n","/**\n * Convert number to string with replacing exponent part on decimals\n *\n * @param value the number\n * @return string representation of a number\n */\nexport function numberToStringWithoutExp(value: number): string {\n const valueAsString = String(value);\n const [numberPart, expPart] = valueAsString.split('e-');\n\n let valueWithoutExp = valueAsString;\n\n if (expPart) {\n const [, fractionalPart] = numberPart.split('.');\n const decimalDigits = Number(expPart) + (fractionalPart?.length || 0);\n\n valueWithoutExp = value.toFixed(decimalDigits);\n }\n\n return valueWithoutExp;\n}\n","import {numberToStringWithoutExp} from './number-to-string-without-exp';\n\n/**\n * Return fractional part of number\n *\n * @param value the number\n * @param precision number of digits of decimal part, null to keep untouched\n * @return the fractional part of number\n */\nexport function getFractionPartPadded(value: number, precision?: number | null): string {\n const [, fractionPartPadded = ''] = numberToStringWithoutExp(value).split('.');\n\n return typeof precision === 'number'\n ? fractionPartPadded.substr(0, precision)\n : fractionPartPadded;\n}\n","import {CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk';\n\nimport {getFractionPartPadded} from './get-fractional-part-padded';\n\n/**\n * Formats number adding a thousand separators and correct decimal separator\n * padding decimal part with zeroes to given length\n *\n * @param value the input number\n * @param decimalLimit number of digits of decimal part, null to keep untouched\n * @param decimalSeparator separator between the integer and the decimal part\n * @param thousandSeparator separator between thousands\n * @param zeroPadding enable zeros at the end of decimal part\n * @return the formatted string\n */\nexport function formatNumber(\n value: number,\n decimalLimit: number | null = null,\n decimalSeparator: string = ',',\n thousandSeparator: string = CHAR_NO_BREAK_SPACE,\n zeroPadding: boolean = true,\n): string {\n const integerPartString = String(Math.floor(Math.abs(value)));\n\n let fractionPartPadded = getFractionPartPadded(value, decimalLimit);\n\n if (decimalLimit !== null) {\n if (zeroPadding) {\n const zeroPaddingSize: number = Math.max(\n decimalLimit - fractionPartPadded.length,\n 0,\n );\n const zeroPartString = '0'.repeat(zeroPaddingSize);\n\n fractionPartPadded = `${fractionPartPadded}${zeroPartString}`;\n } else {\n fractionPartPadded = fractionPartPadded.replace(/0*$/, '');\n }\n }\n\n const remainder = integerPartString.length % 3;\n const sign = value < 0 ? '-' : '';\n let result = sign + integerPartString.charAt(0);\n\n for (let i = 1; i < integerPartString.length; i++) {\n if (i % 3 === remainder && integerPartString.length > 3) {\n result += thousandSeparator;\n }\n\n result += integerPartString.charAt(i);\n }\n\n return fractionPartPadded ? result + decimalSeparator + fractionPartPadded : result;\n}\n","/**\n * Formats a string with the phone format +7XXXXXXXXXXXX or XXXXXXXXXXXX,\n * adding parentheses and hyphens.\n *\n * @param value the input string\n * @param countryCode a country code\n * @param phoneMask a phone number mask\n * @return the formatted phone string of the form +7 XXX XXX-XX-XX\n */\nexport function formatPhone(\n value: string,\n countryCode: string,\n phoneMask: string,\n): string {\n if (!value) {\n return '';\n }\n\n let result = countryCode;\n\n countryCode = countryCode.replace(/[()]/g, '');\n\n if (!value.startsWith(countryCode)) {\n value = countryCode + value.replace('+', '');\n }\n\n const splitPhoneMask = phoneMask.split('');\n const splitValue = value.slice(countryCode.length).split('');\n\n result += ' ';\n\n if (splitValue.length === 0) {\n return result;\n }\n\n for (let i = 0; i < splitPhoneMask.length; i++) {\n if (splitValue.length === 0) {\n break;\n }\n\n if (splitPhoneMask[i] === '#') {\n result += splitValue[0] || '';\n splitValue.splice(0, 1);\n } else {\n result += splitPhoneMask[i];\n }\n }\n\n return result;\n}\n","import {TuiDecimalSymbol} from '@taiga-ui/core/types';\n\nexport function otherDecimalSymbol(symbol: TuiDecimalSymbol): TuiDecimalSymbol {\n return symbol === '.' ? ',' : '.';\n}\n","import {TuiPluralize} from '@taiga-ui/core/types';\n\n/**\n * Selects the correct plural form to display.\n *\n * @param value the input number\n * @param args an array of three plural forms, e.g. ['год', 'года', 'лет']\n * @deprecated This implementation targets Russian.\n * Use https://angular.io/api/common/NgPlural for your implementations.\n */\nexport function pluralize(value: number, [one, few, many]: TuiPluralize): string {\n const ten = value % 10;\n const hundred = value % 100;\n\n // 1, 21, 101, 121, но не 11, 111, 211...\n if (ten === 1 && hundred !== 11) {\n return one;\n }\n\n // 2, 3, 4, 22, 33, 44, 152, 163, 174, но не 12, 13, 14, 112, 213, 314...\n if (ten >= 2 && ten <= 4 && (hundred < 10 || hundred >= 20)) {\n return few;\n }\n\n return many;\n}\n","import {TuiPluralize} from '@taiga-ui/core/types';\n\n// TODO: remove in 3.0\n\n/**\n * Temporary util for mapping TuiPluralize array to ICU format\n */\nexport function tuiPluralizeToICU(pluralize: TuiPluralize): Record<string, string> {\n return {\n one: pluralize[0],\n few: pluralize[1],\n many: pluralize[2],\n other: pluralize[2],\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -6,15 +6,16 @@ import { otherDecimalSymbol } from '@taiga-ui/core/utils/format';
6
6
  /**
7
7
  * Used to finish a number with zeros to a given precision
8
8
  */
9
- function tuiCreateAutoCorrectedNumberPipe(decimalLimit, decimalSymbol, thousandSymbol, nativeInput, allowNegative) {
9
+ function tuiCreateAutoCorrectedNumberPipe(decimalLimit, decimalSymbol, thousandSymbol, nativeInput, allowNegative, isIOS) {
10
10
  if (decimalLimit === void 0) { decimalLimit = 0; }
11
11
  if (decimalSymbol === void 0) { decimalSymbol = ','; }
12
12
  if (thousandSymbol === void 0) { thousandSymbol = CHAR_NO_BREAK_SPACE; }
13
+ if (isIOS === void 0) { isIOS = false; }
13
14
  tuiAssert.assert(Number.isInteger(decimalLimit));
14
15
  tuiAssert.assert(decimalLimit >= 0);
15
16
  // Guess for which browser I need this :)
16
17
  var previousCaret = -1;
17
- var unlucky = !!nativeInput && isSafari(nativeInput);
18
+ var unlucky = (!!nativeInput && isSafari(nativeInput)) || isIOS;
18
19
  if (nativeInput && unlucky) {
19
20
  nativeInput.addEventListener('beforeinput', function () {
20
21
  previousCaret = nativeInput.selectionStart || 0;
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-utils-mask.js","sources":["ng://@taiga-ui/core/utils/mask/create-auto-corrected-money-pipe.ts","ng://@taiga-ui/core/utils/mask/create-correction-mask.ts","ng://@taiga-ui/core/utils/mask/create-number-mask.ts","ng://@taiga-ui/core/utils/mask/enable-auto-correct-decimal-symbol.ts","ng://@taiga-ui/core/utils/mask/masked-money-value-is-empty.ts","ng://@taiga-ui/core/utils/mask/masked-number-string-to-number.ts","ng://@taiga-ui/core/utils/mask/taiga-ui-core-utils-mask.ts"],"sourcesContent":["import {\n CHAR_NO_BREAK_SPACE,\n getDocumentOrShadowRoot,\n isNativeFocused,\n isSafari,\n tuiAssert,\n} from '@taiga-ui/cdk';\nimport {TuiTextMaskPipeHandler} from '@taiga-ui/core/mask';\nimport {TuiDecimalSymbol} from '@taiga-ui/core/types';\n\n/**\n * Used to finish a number with zeros to a given precision\n */\nexport function tuiCreateAutoCorrectedNumberPipe(\n decimalLimit: number = 0,\n decimalSymbol: TuiDecimalSymbol = ',',\n thousandSymbol: string = CHAR_NO_BREAK_SPACE,\n nativeInput?: HTMLInputElement | null,\n allowNegative?: boolean,\n): TuiTextMaskPipeHandler {\n tuiAssert.assert(Number.isInteger(decimalLimit));\n tuiAssert.assert(decimalLimit >= 0);\n\n // Guess for which browser I need this :)\n let previousCaret = -1;\n\n const unlucky = !!nativeInput && isSafari(nativeInput);\n\n if (nativeInput && unlucky) {\n nativeInput.addEventListener('beforeinput', () => {\n previousCaret = nativeInput.selectionStart || 0;\n });\n }\n\n return (conformedValue, config) => {\n // Removing everything by selecting and pressing '-'\n if (!conformedValue && config.rawValue === '-' && allowNegative) {\n return '-';\n }\n\n // remove these hacks after text mask library has changed\n if (nativeInput && unlucky && isNativeFocused(nativeInput)) {\n const caret = calculateSafariCaret(\n config.previousConformedValue,\n conformedValue,\n previousCaret,\n );\n\n setTimeout(() => {\n nativeInput.setSelectionRange(caret, caret);\n });\n }\n\n if (\n nativeInput &&\n nativeInput.ownerDocument !== getDocumentOrShadowRoot(nativeInput) &&\n isNativeFocused(nativeInput) &&\n config.currentCaretPosition\n ) {\n const realCaretPosition =\n config.currentCaretPosition +\n calculateCaretGap(\n config.previousConformedValue,\n conformedValue,\n thousandSymbol,\n );\n\n setTimeout(() => {\n nativeInput.setSelectionRange(realCaretPosition, realCaretPosition);\n });\n }\n\n if (conformedValue === '' || !decimalLimit) {\n return {value: conformedValue};\n }\n\n const withDecimalSymbol = addDecimalSymbolIfNeeded(conformedValue, decimalSymbol);\n const decimalPart = withDecimalSymbol.split(decimalSymbol)[1];\n const zeroPaddingSize = decimalLimit - decimalPart.length;\n\n return {\n value: withDecimalSymbol + '0'.repeat(zeroPaddingSize),\n };\n };\n}\n\nfunction addDecimalSymbolIfNeeded(\n value: string,\n decimalSymbol: TuiDecimalSymbol = ',',\n): string {\n return !value.includes(decimalSymbol) ? value + decimalSymbol : value;\n}\n\nfunction calculateSafariCaret(\n previousValue: string = '',\n current: string,\n previousCaret: number,\n decimalSymbol: string = ',',\n): number {\n const tailRegex = new RegExp(`${decimalSymbol}.+`);\n const previousWithoutTail = previousValue.replace(tailRegex, '');\n const currentWithoutTail = current.replace(tailRegex, '');\n\n const pasteOrCutOperation =\n Math.abs(previousWithoutTail.length - currentWithoutTail.length) > 2;\n\n if (pasteOrCutOperation) {\n return current.length;\n }\n\n if (previousValue.length === current.length) {\n if (previousValue.indexOf(decimalSymbol) <= previousCaret) {\n return calculateChangedTailIndex(previousValue, current);\n }\n\n return previousWithoutTail === currentWithoutTail\n ? previousCaret - 1\n : previousCaret + 1;\n }\n\n if (previousValue.length === 0) {\n return 1;\n }\n\n const changeLength = current.length - previousValue.length;\n\n return previousCaret + changeLength;\n}\n\nfunction calculateChangedTailIndex(previous: string, current: string): number {\n for (let i = 0; i < current.length; i++) {\n if (previous[i] !== current[i]) {\n return current[i] === '0' ? i : i + 1;\n }\n }\n\n return current.length;\n}\n\nfunction calculateCaretGap(\n previousValue: string = '',\n current: string,\n thousandSymbol: string,\n): number {\n const pasteOrCutOperation = Math.abs(previousValue.length - current.length) > 2;\n\n if (pasteOrCutOperation) {\n return 0;\n }\n\n const wereSpaces = previousValue.split(thousandSymbol).length;\n const nowSpaces = current.split(thousandSymbol).length;\n\n return nowSpaces - wereSpaces;\n}\n","import {tuiAssert} from '@taiga-ui/cdk';\nimport {MASK_CARET_TRAP} from '@taiga-ui/core/constants';\nimport {\n TuiTextMaskCorrectionHandler,\n TuiTextMaskList,\n TuiTextMaskListHandler,\n} from '@taiga-ui/core/mask';\n\nconst ASSERTION = 'Correction function must return single char or null';\n\nexport function tuiCreateCorrectionMask(\n allowed: RegExp,\n correctionHandler: TuiTextMaskCorrectionHandler,\n): TuiTextMaskListHandler {\n return rawValue => {\n const mask = rawValue.split('').reduce<TuiTextMaskList>((result, char, index) => {\n const corrected = correctionHandler(char, index);\n\n tuiAssert.assert(corrected === null || corrected.length === 1, ASSERTION);\n\n if (!allowed.test(char) && !corrected) {\n return result;\n }\n\n if (allowed.test(char)) {\n return [...result, allowed];\n }\n\n if (corrected) {\n return [...result, corrected, MASK_CARET_TRAP];\n }\n\n return result;\n }, []);\n const lastIndex = mask.lastIndexOf(MASK_CARET_TRAP);\n const filtered = mask.filter(\n (item, index) => item !== MASK_CARET_TRAP || index === lastIndex,\n );\n\n return filtered.some(item => item !== allowed)\n ? [...filtered, allowed]\n : filtered;\n };\n}\n","import {CHAR_EN_DASH, CHAR_NO_BREAK_SPACE, tuiAssert} from '@taiga-ui/cdk';\nimport {\n MASK_CARET_TRAP,\n TUI_DIGIT_REGEXP,\n TUI_LEADING_ZEROES_REGEXP,\n TUI_NON_DIGITS_REGEXP,\n} from '@taiga-ui/core/constants';\nimport {TuiNumberMaskOptions, TuiTextMaskListHandler} from '@taiga-ui/core/mask';\nimport {TuiDecimalSymbol} from '@taiga-ui/core/types';\nimport {otherDecimalSymbol} from '@taiga-ui/core/utils/format';\n\nconst NON_ZERO_DIGIT = /[1-9]/;\n\n/**\n * Adaptation for {@link https://github.com/text-mask/text-mask/tree/master/addons#createnumbermask `createNumberMask`}\n */\nexport function tuiCreateNumberMask({\n allowDecimal = false,\n decimalSymbol = ',',\n thousandSymbol = CHAR_NO_BREAK_SPACE,\n autoCorrectDecimalSymbol = true,\n decimalLimit = 2,\n requireDecimal = false,\n allowNegative = false,\n integerLimit = 0,\n}: TuiNumberMaskOptions = {}): TuiTextMaskListHandler {\n tuiAssert.assert(Number.isInteger(decimalLimit));\n tuiAssert.assert(decimalLimit >= 0);\n tuiAssert.assert(Number.isInteger(integerLimit));\n tuiAssert.assert(integerLimit >= 0);\n\n return (rawValue, {previousConformedValue}) => {\n if (previousConformedValue && requireDecimal) {\n const conformedWithoutSeparator = rawValue.split(thousandSymbol).join('');\n const previousConformedValueWithoutDecimalSymbolAndSeparator =\n previousConformedValue\n .split(thousandSymbol)\n .join('')\n .split(decimalSymbol)\n .join('');\n\n // Forbid removal of decimal separator if decimal part is required\n if (\n conformedWithoutSeparator ===\n previousConformedValueWithoutDecimalSymbolAndSeparator\n ) {\n rawValue = previousConformedValue;\n }\n }\n\n const isNegative =\n (rawValue[0] === '-' || rawValue[0] === CHAR_EN_DASH) && allowNegative;\n\n if (\n isDecimalSymbol(rawValue, decimalSymbol, autoCorrectDecimalSymbol) &&\n allowDecimal\n ) {\n return ['0', decimalSymbol, TUI_DIGIT_REGEXP];\n }\n\n if (isNegative) {\n rawValue = rawValue.substr(1);\n }\n\n const decimalIndex = getDecimalSymbolIndex(\n rawValue,\n decimalSymbol,\n autoCorrectDecimalSymbol,\n );\n const hasDecimal = decimalIndex !== -1;\n const integer = hasDecimal ? rawValue.slice(0, decimalIndex) : rawValue;\n const thousandSeparators = integer.match(new RegExp(thousandSymbol, 'g')) || [];\n const integerCapped = integerLimit\n ? integer.slice(0, integerLimit + thousandSeparators.length)\n : integer;\n const integerCappedClean = integerCapped.replace(TUI_NON_DIGITS_REGEXP, '');\n const [leadingZerosMatch] = integerCappedClean.match(\n TUI_LEADING_ZEROES_REGEXP,\n ) || [''];\n const leadingZerosAmount = leadingZerosMatch.length;\n const integerCappedZerosClean = integerCappedClean\n .replace(/^0+(?!\\.|$)/, '')\n .trim();\n const withSeparator = addThousandsSeparator(\n integerCappedZerosClean,\n thousandSymbol,\n );\n const mask = convertToMask(withSeparator);\n\n if ((hasDecimal && allowDecimal) || requireDecimal) {\n const fraction = hasDecimal\n ? convertToMask(\n rawValue.slice(decimalIndex + 1).replace(TUI_NON_DIGITS_REGEXP, ''),\n )\n : [];\n const fractionCapped = decimalLimit\n ? fraction.slice(0, decimalLimit)\n : fraction;\n\n if (rawValue[decimalIndex] !== otherDecimalSymbol(decimalSymbol)) {\n mask.push(MASK_CARET_TRAP);\n }\n\n mask.push(decimalSymbol, MASK_CARET_TRAP, ...fractionCapped);\n\n for (let i = 0; i < decimalLimit - fractionCapped.length; i++) {\n mask.push(TUI_DIGIT_REGEXP);\n }\n }\n\n const isOnlyZeroDigit = mask.length === 1 && integerCappedZerosClean === '0';\n\n if (isNegative) {\n if (mask.length === 0) {\n mask.push(TUI_DIGIT_REGEXP);\n }\n\n mask.unshift('-');\n }\n\n return preventLeadingZeroes(mask, isOnlyZeroDigit, leadingZerosAmount);\n };\n}\n\nfunction preventLeadingZeroes(\n mask: Array<string | RegExp>,\n isOnlyZeroDigit: boolean = false,\n leadingZerosAmount: number = 0,\n): Array<string | RegExp> {\n if (isOnlyZeroDigit || leadingZerosAmount === 0) {\n return mask;\n }\n\n const firstDigitIndex = mask.indexOf(TUI_DIGIT_REGEXP);\n\n if (firstDigitIndex === -1) {\n return mask;\n }\n\n const secondMaskDigit = mask[firstDigitIndex + 1];\n const isCaretTrap = secondMaskDigit === MASK_CARET_TRAP;\n\n if (isCaretTrap && leadingZerosAmount === 1) {\n return mask;\n } else if (isCaretTrap) {\n mask.unshift(NON_ZERO_DIGIT);\n\n return mask;\n }\n\n mask[firstDigitIndex] = NON_ZERO_DIGIT;\n\n return mask;\n}\n\nfunction getDecimalSymbolIndex(\n str: string,\n decimalSymbol: TuiDecimalSymbol,\n autoCorrectDecimalSymbol: boolean,\n): number {\n if (!autoCorrectDecimalSymbol) {\n return str.lastIndexOf(decimalSymbol);\n }\n\n return Math.max(\n str.lastIndexOf(decimalSymbol),\n str.lastIndexOf(otherDecimalSymbol(decimalSymbol)),\n );\n}\n\nfunction isDecimalSymbol(\n str: string,\n decimalSymbol: TuiDecimalSymbol,\n autoCorrectDecimalSymbol: boolean,\n): boolean {\n if (autoCorrectDecimalSymbol) {\n return /^[,.]$/.test(str);\n }\n\n return str === decimalSymbol;\n}\n\nfunction convertToMask(strNumber: string): Array<string | RegExp> {\n return strNumber\n .split('')\n .map(char => (TUI_DIGIT_REGEXP.test(char) ? TUI_DIGIT_REGEXP : char));\n}\n\nfunction addThousandsSeparator(strNumber: string, thousandSymbol: string): string {\n return strNumber.length > 3\n ? strNumber.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSymbol)\n : strNumber;\n}\n","import {TUI_DECIMAL_SYMBOLS} from '@taiga-ui/core/constants';\nimport {NumberFormatSettings} from '@taiga-ui/core/interfaces';\n\nexport function tuiEnableAutoCorrectDecimalSymbol({\n thousandSeparator,\n}: NumberFormatSettings): boolean {\n return !TUI_DECIMAL_SYMBOLS.includes(thousandSeparator);\n}\n","export function maskedMoneyValueIsEmpty(value: string): boolean {\n switch (value) {\n case '':\n case '-':\n case ',':\n case '-,':\n return true;\n default:\n return false;\n }\n}\n","import {TuiDecimalSymbol} from '@taiga-ui/core/types';\n\nexport function maskedNumberStringToNumber(\n value: string,\n decimalsSymbol: TuiDecimalSymbol,\n thousandSymbol: string,\n): number {\n return parseFloat(\n value.split(thousandSymbol).join('').split(decimalsSymbol).join('.'),\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":"taiga-ui-core-utils-mask.js","sources":["ng://@taiga-ui/core/utils/mask/create-auto-corrected-money-pipe.ts","ng://@taiga-ui/core/utils/mask/create-correction-mask.ts","ng://@taiga-ui/core/utils/mask/create-number-mask.ts","ng://@taiga-ui/core/utils/mask/enable-auto-correct-decimal-symbol.ts","ng://@taiga-ui/core/utils/mask/masked-money-value-is-empty.ts","ng://@taiga-ui/core/utils/mask/masked-number-string-to-number.ts","ng://@taiga-ui/core/utils/mask/taiga-ui-core-utils-mask.ts"],"sourcesContent":["import {\n CHAR_NO_BREAK_SPACE,\n getDocumentOrShadowRoot,\n isNativeFocused,\n isSafari,\n tuiAssert,\n} from '@taiga-ui/cdk';\nimport {TuiTextMaskPipeHandler} from '@taiga-ui/core/mask';\nimport {TuiDecimalSymbol} from '@taiga-ui/core/types';\n\n/**\n * Used to finish a number with zeros to a given precision\n */\nexport function tuiCreateAutoCorrectedNumberPipe(\n decimalLimit: number = 0,\n decimalSymbol: TuiDecimalSymbol = ',',\n thousandSymbol: string = CHAR_NO_BREAK_SPACE,\n nativeInput?: HTMLInputElement | null,\n allowNegative?: boolean,\n isIOS = false,\n): TuiTextMaskPipeHandler {\n tuiAssert.assert(Number.isInteger(decimalLimit));\n tuiAssert.assert(decimalLimit >= 0);\n\n // Guess for which browser I need this :)\n let previousCaret = -1;\n const unlucky = (!!nativeInput && isSafari(nativeInput)) || isIOS;\n\n if (nativeInput && unlucky) {\n nativeInput.addEventListener('beforeinput', () => {\n previousCaret = nativeInput.selectionStart || 0;\n });\n }\n\n return (conformedValue, config) => {\n // Removing everything by selecting and pressing '-'\n if (!conformedValue && config.rawValue === '-' && allowNegative) {\n return '-';\n }\n\n // remove these hacks after text mask library has changed\n if (nativeInput && unlucky && isNativeFocused(nativeInput)) {\n const caret = calculateSafariCaret(\n config.previousConformedValue,\n conformedValue,\n previousCaret,\n );\n\n setTimeout(() => {\n nativeInput.setSelectionRange(caret, caret);\n });\n }\n\n if (\n nativeInput &&\n nativeInput.ownerDocument !== getDocumentOrShadowRoot(nativeInput) &&\n isNativeFocused(nativeInput) &&\n config.currentCaretPosition\n ) {\n const realCaretPosition =\n config.currentCaretPosition +\n calculateCaretGap(\n config.previousConformedValue,\n conformedValue,\n thousandSymbol,\n );\n\n setTimeout(() => {\n nativeInput.setSelectionRange(realCaretPosition, realCaretPosition);\n });\n }\n\n if (conformedValue === '' || !decimalLimit) {\n return {value: conformedValue};\n }\n\n const withDecimalSymbol = addDecimalSymbolIfNeeded(conformedValue, decimalSymbol);\n const decimalPart = withDecimalSymbol.split(decimalSymbol)[1];\n const zeroPaddingSize = decimalLimit - decimalPart.length;\n\n return {\n value: withDecimalSymbol + '0'.repeat(zeroPaddingSize),\n };\n };\n}\n\nfunction addDecimalSymbolIfNeeded(\n value: string,\n decimalSymbol: TuiDecimalSymbol = ',',\n): string {\n return !value.includes(decimalSymbol) ? value + decimalSymbol : value;\n}\n\nfunction calculateSafariCaret(\n previousValue: string = '',\n current: string,\n previousCaret: number,\n decimalSymbol: string = ',',\n): number {\n const tailRegex = new RegExp(`${decimalSymbol}.+`);\n const previousWithoutTail = previousValue.replace(tailRegex, '');\n const currentWithoutTail = current.replace(tailRegex, '');\n\n const pasteOrCutOperation =\n Math.abs(previousWithoutTail.length - currentWithoutTail.length) > 2;\n\n if (pasteOrCutOperation) {\n return current.length;\n }\n\n if (previousValue.length === current.length) {\n if (previousValue.indexOf(decimalSymbol) <= previousCaret) {\n return calculateChangedTailIndex(previousValue, current);\n }\n\n return previousWithoutTail === currentWithoutTail\n ? previousCaret - 1\n : previousCaret + 1;\n }\n\n if (previousValue.length === 0) {\n return 1;\n }\n\n const changeLength = current.length - previousValue.length;\n\n return previousCaret + changeLength;\n}\n\nfunction calculateChangedTailIndex(previous: string, current: string): number {\n for (let i = 0; i < current.length; i++) {\n if (previous[i] !== current[i]) {\n return current[i] === '0' ? i : i + 1;\n }\n }\n\n return current.length;\n}\n\nfunction calculateCaretGap(\n previousValue: string = '',\n current: string,\n thousandSymbol: string,\n): number {\n const pasteOrCutOperation = Math.abs(previousValue.length - current.length) > 2;\n\n if (pasteOrCutOperation) {\n return 0;\n }\n\n const wereSpaces = previousValue.split(thousandSymbol).length;\n const nowSpaces = current.split(thousandSymbol).length;\n\n return nowSpaces - wereSpaces;\n}\n","import {tuiAssert} from '@taiga-ui/cdk';\nimport {MASK_CARET_TRAP} from '@taiga-ui/core/constants';\nimport {\n TuiTextMaskCorrectionHandler,\n TuiTextMaskList,\n TuiTextMaskListHandler,\n} from '@taiga-ui/core/mask';\n\nconst ASSERTION = 'Correction function must return single char or null';\n\nexport function tuiCreateCorrectionMask(\n allowed: RegExp,\n correctionHandler: TuiTextMaskCorrectionHandler,\n): TuiTextMaskListHandler {\n return rawValue => {\n const mask = rawValue.split('').reduce<TuiTextMaskList>((result, char, index) => {\n const corrected = correctionHandler(char, index);\n\n tuiAssert.assert(corrected === null || corrected.length === 1, ASSERTION);\n\n if (!allowed.test(char) && !corrected) {\n return result;\n }\n\n if (allowed.test(char)) {\n return [...result, allowed];\n }\n\n if (corrected) {\n return [...result, corrected, MASK_CARET_TRAP];\n }\n\n return result;\n }, []);\n const lastIndex = mask.lastIndexOf(MASK_CARET_TRAP);\n const filtered = mask.filter(\n (item, index) => item !== MASK_CARET_TRAP || index === lastIndex,\n );\n\n return filtered.some(item => item !== allowed)\n ? [...filtered, allowed]\n : filtered;\n };\n}\n","import {CHAR_EN_DASH, CHAR_NO_BREAK_SPACE, tuiAssert} from '@taiga-ui/cdk';\nimport {\n MASK_CARET_TRAP,\n TUI_DIGIT_REGEXP,\n TUI_LEADING_ZEROES_REGEXP,\n TUI_NON_DIGITS_REGEXP,\n} from '@taiga-ui/core/constants';\nimport {TuiNumberMaskOptions, TuiTextMaskListHandler} from '@taiga-ui/core/mask';\nimport {TuiDecimalSymbol} from '@taiga-ui/core/types';\nimport {otherDecimalSymbol} from '@taiga-ui/core/utils/format';\n\nconst NON_ZERO_DIGIT = /[1-9]/;\n\n/**\n * Adaptation for {@link https://github.com/text-mask/text-mask/tree/master/addons#createnumbermask `createNumberMask`}\n */\nexport function tuiCreateNumberMask({\n allowDecimal = false,\n decimalSymbol = ',',\n thousandSymbol = CHAR_NO_BREAK_SPACE,\n autoCorrectDecimalSymbol = true,\n decimalLimit = 2,\n requireDecimal = false,\n allowNegative = false,\n integerLimit = 0,\n}: TuiNumberMaskOptions = {}): TuiTextMaskListHandler {\n tuiAssert.assert(Number.isInteger(decimalLimit));\n tuiAssert.assert(decimalLimit >= 0);\n tuiAssert.assert(Number.isInteger(integerLimit));\n tuiAssert.assert(integerLimit >= 0);\n\n return (rawValue, {previousConformedValue}) => {\n if (previousConformedValue && requireDecimal) {\n const conformedWithoutSeparator = rawValue.split(thousandSymbol).join('');\n const previousConformedValueWithoutDecimalSymbolAndSeparator =\n previousConformedValue\n .split(thousandSymbol)\n .join('')\n .split(decimalSymbol)\n .join('');\n\n // Forbid removal of decimal separator if decimal part is required\n if (\n conformedWithoutSeparator ===\n previousConformedValueWithoutDecimalSymbolAndSeparator\n ) {\n rawValue = previousConformedValue;\n }\n }\n\n const isNegative =\n (rawValue[0] === '-' || rawValue[0] === CHAR_EN_DASH) && allowNegative;\n\n if (\n isDecimalSymbol(rawValue, decimalSymbol, autoCorrectDecimalSymbol) &&\n allowDecimal\n ) {\n return ['0', decimalSymbol, TUI_DIGIT_REGEXP];\n }\n\n if (isNegative) {\n rawValue = rawValue.substr(1);\n }\n\n const decimalIndex = getDecimalSymbolIndex(\n rawValue,\n decimalSymbol,\n autoCorrectDecimalSymbol,\n );\n const hasDecimal = decimalIndex !== -1;\n const integer = hasDecimal ? rawValue.slice(0, decimalIndex) : rawValue;\n const thousandSeparators = integer.match(new RegExp(thousandSymbol, 'g')) || [];\n const integerCapped = integerLimit\n ? integer.slice(0, integerLimit + thousandSeparators.length)\n : integer;\n const integerCappedClean = integerCapped.replace(TUI_NON_DIGITS_REGEXP, '');\n const [leadingZerosMatch] = integerCappedClean.match(\n TUI_LEADING_ZEROES_REGEXP,\n ) || [''];\n const leadingZerosAmount = leadingZerosMatch.length;\n const integerCappedZerosClean = integerCappedClean\n .replace(/^0+(?!\\.|$)/, '')\n .trim();\n const withSeparator = addThousandsSeparator(\n integerCappedZerosClean,\n thousandSymbol,\n );\n const mask = convertToMask(withSeparator);\n\n if ((hasDecimal && allowDecimal) || requireDecimal) {\n const fraction = hasDecimal\n ? convertToMask(\n rawValue.slice(decimalIndex + 1).replace(TUI_NON_DIGITS_REGEXP, ''),\n )\n : [];\n const fractionCapped = decimalLimit\n ? fraction.slice(0, decimalLimit)\n : fraction;\n\n if (rawValue[decimalIndex] !== otherDecimalSymbol(decimalSymbol)) {\n mask.push(MASK_CARET_TRAP);\n }\n\n mask.push(decimalSymbol, MASK_CARET_TRAP, ...fractionCapped);\n\n for (let i = 0; i < decimalLimit - fractionCapped.length; i++) {\n mask.push(TUI_DIGIT_REGEXP);\n }\n }\n\n const isOnlyZeroDigit = mask.length === 1 && integerCappedZerosClean === '0';\n\n if (isNegative) {\n if (mask.length === 0) {\n mask.push(TUI_DIGIT_REGEXP);\n }\n\n mask.unshift('-');\n }\n\n return preventLeadingZeroes(mask, isOnlyZeroDigit, leadingZerosAmount);\n };\n}\n\nfunction preventLeadingZeroes(\n mask: (string | RegExp)[],\n isOnlyZeroDigit: boolean = false,\n leadingZerosAmount: number = 0,\n): (string | RegExp)[] {\n if (isOnlyZeroDigit || leadingZerosAmount === 0) {\n return mask;\n }\n\n const firstDigitIndex = mask.indexOf(TUI_DIGIT_REGEXP);\n\n if (firstDigitIndex === -1) {\n return mask;\n }\n\n const secondMaskDigit = mask[firstDigitIndex + 1];\n const isCaretTrap = secondMaskDigit === MASK_CARET_TRAP;\n\n if (isCaretTrap && leadingZerosAmount === 1) {\n return mask;\n } else if (isCaretTrap) {\n mask.unshift(NON_ZERO_DIGIT);\n\n return mask;\n }\n\n mask[firstDigitIndex] = NON_ZERO_DIGIT;\n\n return mask;\n}\n\nfunction getDecimalSymbolIndex(\n str: string,\n decimalSymbol: TuiDecimalSymbol,\n autoCorrectDecimalSymbol: boolean,\n): number {\n if (!autoCorrectDecimalSymbol) {\n return str.lastIndexOf(decimalSymbol);\n }\n\n return Math.max(\n str.lastIndexOf(decimalSymbol),\n str.lastIndexOf(otherDecimalSymbol(decimalSymbol)),\n );\n}\n\nfunction isDecimalSymbol(\n str: string,\n decimalSymbol: TuiDecimalSymbol,\n autoCorrectDecimalSymbol: boolean,\n): boolean {\n if (autoCorrectDecimalSymbol) {\n return /^[,.]$/.test(str);\n }\n\n return str === decimalSymbol;\n}\n\nfunction convertToMask(strNumber: string): (string | RegExp)[] {\n return strNumber\n .split('')\n .map(char => (TUI_DIGIT_REGEXP.test(char) ? TUI_DIGIT_REGEXP : char));\n}\n\nfunction addThousandsSeparator(strNumber: string, thousandSymbol: string): string {\n return strNumber.length > 3\n ? strNumber.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSymbol)\n : strNumber;\n}\n","import {TUI_DECIMAL_SYMBOLS} from '@taiga-ui/core/constants';\nimport {NumberFormatSettings} from '@taiga-ui/core/interfaces';\n\nexport function tuiEnableAutoCorrectDecimalSymbol({\n thousandSeparator,\n}: NumberFormatSettings): boolean {\n return !TUI_DECIMAL_SYMBOLS.includes(thousandSeparator);\n}\n","export function maskedMoneyValueIsEmpty(value: string): boolean {\n switch (value) {\n case '':\n case '-':\n case ',':\n case '-,':\n return true;\n default:\n return false;\n }\n}\n","import {TuiDecimalSymbol} from '@taiga-ui/core/types';\n\nexport function maskedNumberStringToNumber(\n value: string,\n decimalsSymbol: TuiDecimalSymbol,\n thousandSymbol: string,\n): number {\n return parseFloat(\n value.split(thousandSymbol).join('').split(decimalsSymbol).join('.'),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  export interface TuiDataListAccessor<T = unknown> {
2
- getOptions(includeDisabled?: boolean): ReadonlyArray<T>;
2
+ getOptions(includeDisabled?: boolean): readonly T[];
3
3
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/core",
3
- "version": "2.39.0",
3
+ "version": "2.40.0",
4
4
  "description": "Core library for creating Angular components and applications using Taiga UI",
5
5
  "keywords": [
6
6
  "angular",
@@ -16,12 +16,12 @@
16
16
  "homepage": "https://github.com/tinkoff/taiga-ui",
17
17
  "schematics": "./schematics/collection.json",
18
18
  "dependencies": {
19
- "@taiga-ui/i18n": "^2.39.0",
19
+ "@taiga-ui/i18n": "^2.40.0",
20
20
  "tslib": "^1.10.0"
21
21
  },
22
22
  "peerDependencies": {
23
- "@taiga-ui/i18n": ">=2.39.0",
24
- "@taiga-ui/cdk": ">=2.39.0",
23
+ "@taiga-ui/i18n": ">=2.40.0",
24
+ "@taiga-ui/cdk": ">=2.40.0",
25
25
  "@angular/animations": ">=9.0.0",
26
26
  "@angular/common": ">=9.0.0",
27
27
  "@angular/core": ">=9.0.0",