@taiga-ui/kit 4.5.0 → 4.6.0-canary.0a513eb

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 (152) hide show
  1. package/components/badged-content/badged-content.component.d.ts +2 -0
  2. package/components/calendar-range/calendar-range.component.d.ts +1 -2
  3. package/components/confirm/confirm.component.d.ts +1 -1
  4. package/components/files/input-files/input-files.directive.d.ts +4 -3
  5. package/components/input-password/input-password.component.d.ts +3 -0
  6. package/components/input-password/input-password.options.d.ts +12 -0
  7. package/components/line-clamp/line-clamp.component.d.ts +1 -1
  8. package/components/preview/preview.component.d.ts +2 -0
  9. package/components/segmented/segmented.component.d.ts +0 -2
  10. package/components/stepper/step.component.d.ts +1 -2
  11. package/components/stepper/stepper.component.d.ts +1 -1
  12. package/components/tiles/tile.service.d.ts +1 -1
  13. package/directives/copy/copy.directive.d.ts +17 -0
  14. package/directives/copy/copy.options.d.ts +6 -0
  15. package/directives/copy/index.d.ts +2 -0
  16. package/directives/index.d.ts +2 -0
  17. package/directives/password/index.d.ts +1 -0
  18. package/directives/password/password.directive.d.ts +16 -0
  19. package/directives/password/password.options.d.ts +9 -0
  20. package/esm2022/components/accordion/accordion-item.component.mjs +3 -3
  21. package/esm2022/components/badged-content/badged-content.component.mjs +10 -4
  22. package/esm2022/components/block/block.directive.mjs +2 -2
  23. package/esm2022/components/breadcrumbs/breadcrumbs.component.mjs +3 -3
  24. package/esm2022/components/calendar-month/calendar-month.component.mjs +7 -7
  25. package/esm2022/components/calendar-range/calendar-range.component.mjs +14 -16
  26. package/esm2022/components/carousel/carousel-scroll.directive.mjs +3 -3
  27. package/esm2022/components/carousel/carousel.component.mjs +12 -7
  28. package/esm2022/components/confirm/confirm.component.mjs +6 -5
  29. package/esm2022/components/data-list-wrapper/data-list-group-wrapper.component.mjs +3 -3
  30. package/esm2022/components/data-list-wrapper/data-list-wrapper.component.mjs +3 -3
  31. package/esm2022/components/files/file/file.component.mjs +3 -3
  32. package/esm2022/components/files/files/files.component.mjs +3 -3
  33. package/esm2022/components/files/input-files/input-files.component.mjs +5 -5
  34. package/esm2022/components/files/input-files/input-files.content.mjs +4 -3
  35. package/esm2022/components/files/input-files/input-files.directive.mjs +7 -4
  36. package/esm2022/components/filter/filter.component.mjs +4 -4
  37. package/esm2022/components/input-inline/input-inline.component.mjs +4 -4
  38. package/esm2022/components/input-password/input-password.component.mjs +8 -5
  39. package/esm2022/components/input-password/input-password.options.mjs +10 -1
  40. package/esm2022/components/input-phone-international/input-phone-international.component.mjs +3 -3
  41. package/esm2022/components/items-with-more/items-with-more.component.mjs +3 -3
  42. package/esm2022/components/line-clamp/line-clamp.component.mjs +11 -13
  43. package/esm2022/components/pagination/pagination.component.mjs +3 -3
  44. package/esm2022/components/pdf-viewer/pdf-viewer.component.mjs +5 -5
  45. package/esm2022/components/preview/pagination/preview-pagination.component.mjs +3 -3
  46. package/esm2022/components/preview/preview-dialog/preview-dialog.component.mjs +3 -3
  47. package/esm2022/components/preview/preview.component.mjs +10 -8
  48. package/esm2022/components/preview/zoom/preview-zoom.component.mjs +8 -8
  49. package/esm2022/components/push/push-alert.component.mjs +6 -6
  50. package/esm2022/components/push/push.component.mjs +3 -3
  51. package/esm2022/components/radio-list/radio-list.component.mjs +6 -6
  52. package/esm2022/components/range/range.component.mjs +5 -5
  53. package/esm2022/components/rating/rating.component.mjs +3 -3
  54. package/esm2022/components/segmented/segmented.component.mjs +13 -13
  55. package/esm2022/components/slider/helpers/slider-readonly.directive.mjs +4 -4
  56. package/esm2022/components/stepper/step.component.mjs +6 -6
  57. package/esm2022/components/stepper/stepper.component.mjs +5 -5
  58. package/esm2022/components/tabs/tabs-with-more.component.mjs +6 -4
  59. package/esm2022/components/tiles/tile.service.mjs +3 -2
  60. package/esm2022/components/tree/components/tree/tree.component.mjs +7 -7
  61. package/esm2022/components/tree/components/tree-item/tree-item.component.mjs +3 -3
  62. package/esm2022/components/tree/components/tree-item-content/tree-item-content.component.mjs +5 -5
  63. package/esm2022/directives/copy/copy.directive.mjs +71 -0
  64. package/esm2022/directives/copy/copy.options.mjs +5 -0
  65. package/esm2022/directives/copy/index.mjs +3 -0
  66. package/esm2022/directives/copy/taiga-ui-kit-directives-copy.mjs +5 -0
  67. package/esm2022/directives/icon-badge/icon-badge.directive.mjs +2 -2
  68. package/esm2022/directives/index.mjs +3 -1
  69. package/esm2022/directives/password/index.mjs +2 -0
  70. package/esm2022/directives/password/password.directive.mjs +71 -0
  71. package/esm2022/directives/password/password.options.mjs +8 -0
  72. package/esm2022/directives/password/taiga-ui-kit-directives-password.mjs +5 -0
  73. package/esm2022/directives/skeleton/skeleton.directive.mjs +2 -2
  74. package/esm2022/pipes/filter-by-input/filter-by-input.pipe.mjs +1 -1
  75. package/esm2022/utils/toggle-day.mjs +2 -2
  76. package/fesm2022/taiga-ui-kit-components-accordion.mjs +2 -2
  77. package/fesm2022/taiga-ui-kit-components-accordion.mjs.map +1 -1
  78. package/fesm2022/taiga-ui-kit-components-badged-content.mjs +9 -3
  79. package/fesm2022/taiga-ui-kit-components-badged-content.mjs.map +1 -1
  80. package/fesm2022/taiga-ui-kit-components-block.mjs +2 -2
  81. package/fesm2022/taiga-ui-kit-components-block.mjs.map +1 -1
  82. package/fesm2022/taiga-ui-kit-components-breadcrumbs.mjs +3 -3
  83. package/fesm2022/taiga-ui-kit-components-breadcrumbs.mjs.map +1 -1
  84. package/fesm2022/taiga-ui-kit-components-calendar-month.mjs +7 -7
  85. package/fesm2022/taiga-ui-kit-components-calendar-month.mjs.map +1 -1
  86. package/fesm2022/taiga-ui-kit-components-calendar-range.mjs +14 -16
  87. package/fesm2022/taiga-ui-kit-components-calendar-range.mjs.map +1 -1
  88. package/fesm2022/taiga-ui-kit-components-carousel.mjs +14 -9
  89. package/fesm2022/taiga-ui-kit-components-carousel.mjs.map +1 -1
  90. package/fesm2022/taiga-ui-kit-components-confirm.mjs +4 -4
  91. package/fesm2022/taiga-ui-kit-components-confirm.mjs.map +1 -1
  92. package/fesm2022/taiga-ui-kit-components-data-list-wrapper.mjs +5 -5
  93. package/fesm2022/taiga-ui-kit-components-data-list-wrapper.mjs.map +1 -1
  94. package/fesm2022/taiga-ui-kit-components-files.mjs +15 -11
  95. package/fesm2022/taiga-ui-kit-components-files.mjs.map +1 -1
  96. package/fesm2022/taiga-ui-kit-components-filter.mjs +3 -3
  97. package/fesm2022/taiga-ui-kit-components-filter.mjs.map +1 -1
  98. package/fesm2022/taiga-ui-kit-components-input-inline.mjs +4 -4
  99. package/fesm2022/taiga-ui-kit-components-input-inline.mjs.map +1 -1
  100. package/fesm2022/taiga-ui-kit-components-input-password.mjs +16 -4
  101. package/fesm2022/taiga-ui-kit-components-input-password.mjs.map +1 -1
  102. package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs +2 -2
  103. package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs.map +1 -1
  104. package/fesm2022/taiga-ui-kit-components-items-with-more.mjs +3 -3
  105. package/fesm2022/taiga-ui-kit-components-items-with-more.mjs.map +1 -1
  106. package/fesm2022/taiga-ui-kit-components-line-clamp.mjs +10 -12
  107. package/fesm2022/taiga-ui-kit-components-line-clamp.mjs.map +1 -1
  108. package/fesm2022/taiga-ui-kit-components-pagination.mjs +3 -3
  109. package/fesm2022/taiga-ui-kit-components-pagination.mjs.map +1 -1
  110. package/fesm2022/taiga-ui-kit-components-pdf-viewer.mjs +4 -4
  111. package/fesm2022/taiga-ui-kit-components-pdf-viewer.mjs.map +1 -1
  112. package/fesm2022/taiga-ui-kit-components-preview-preview-dialog.mjs +2 -2
  113. package/fesm2022/taiga-ui-kit-components-preview-preview-dialog.mjs.map +1 -1
  114. package/fesm2022/taiga-ui-kit-components-preview.mjs +21 -19
  115. package/fesm2022/taiga-ui-kit-components-preview.mjs.map +1 -1
  116. package/fesm2022/taiga-ui-kit-components-push.mjs +8 -8
  117. package/fesm2022/taiga-ui-kit-components-push.mjs.map +1 -1
  118. package/fesm2022/taiga-ui-kit-components-radio-list.mjs +5 -5
  119. package/fesm2022/taiga-ui-kit-components-radio-list.mjs.map +1 -1
  120. package/fesm2022/taiga-ui-kit-components-range.mjs +4 -4
  121. package/fesm2022/taiga-ui-kit-components-range.mjs.map +1 -1
  122. package/fesm2022/taiga-ui-kit-components-rating.mjs +2 -2
  123. package/fesm2022/taiga-ui-kit-components-rating.mjs.map +1 -1
  124. package/fesm2022/taiga-ui-kit-components-segmented.mjs +12 -12
  125. package/fesm2022/taiga-ui-kit-components-segmented.mjs.map +1 -1
  126. package/fesm2022/taiga-ui-kit-components-slider.mjs +3 -3
  127. package/fesm2022/taiga-ui-kit-components-slider.mjs.map +1 -1
  128. package/fesm2022/taiga-ui-kit-components-stepper.mjs +9 -10
  129. package/fesm2022/taiga-ui-kit-components-stepper.mjs.map +1 -1
  130. package/fesm2022/taiga-ui-kit-components-tabs.mjs +5 -3
  131. package/fesm2022/taiga-ui-kit-components-tabs.mjs.map +1 -1
  132. package/fesm2022/taiga-ui-kit-components-tiles.mjs +2 -1
  133. package/fesm2022/taiga-ui-kit-components-tiles.mjs.map +1 -1
  134. package/fesm2022/taiga-ui-kit-components-tree.mjs +13 -13
  135. package/fesm2022/taiga-ui-kit-components-tree.mjs.map +1 -1
  136. package/fesm2022/taiga-ui-kit-directives-copy.mjs +81 -0
  137. package/fesm2022/taiga-ui-kit-directives-copy.mjs.map +1 -0
  138. package/fesm2022/taiga-ui-kit-directives-icon-badge.mjs +2 -2
  139. package/fesm2022/taiga-ui-kit-directives-icon-badge.mjs.map +1 -1
  140. package/fesm2022/taiga-ui-kit-directives-password.mjs +84 -0
  141. package/fesm2022/taiga-ui-kit-directives-password.mjs.map +1 -0
  142. package/fesm2022/taiga-ui-kit-directives-skeleton.mjs +2 -2
  143. package/fesm2022/taiga-ui-kit-directives-skeleton.mjs.map +1 -1
  144. package/fesm2022/taiga-ui-kit-directives.mjs +2 -0
  145. package/fesm2022/taiga-ui-kit-directives.mjs.map +1 -1
  146. package/fesm2022/taiga-ui-kit-pipes-filter-by-input.mjs.map +1 -1
  147. package/fesm2022/taiga-ui-kit-utils.mjs +1 -1
  148. package/fesm2022/taiga-ui-kit-utils.mjs.map +1 -1
  149. package/package.json +517 -505
  150. package/pipes/filter-by-input/filter-by-input.pipe.d.ts +1 -3
  151. package/styles/components/block.less +1 -4
  152. package/utils/toggle-day.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-pdf-viewer.mjs","sources":["../../../projects/kit/components/pdf-viewer/pdf-viewer.component.ts","../../../projects/kit/components/pdf-viewer/pdf-viewer.template.html","../../../projects/kit/components/pdf-viewer/pdf-viewer.options.ts","../../../projects/kit/components/pdf-viewer/pdf-viewer.service.ts","../../../projects/kit/components/pdf-viewer/pdf-viewer.directive.ts","../../../projects/kit/components/pdf-viewer/taiga-ui-kit-components-pdf-viewer.ts"],"sourcesContent":["import {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport type {TuiPopover} from '@taiga-ui/cdk/services';\nimport {tuiFadeIn, tuiSlideInTop} from '@taiga-ui/core/animations';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {\n TUI_ANIMATIONS_SPEED,\n TUI_CLOSE_WORD,\n TUI_COMMON_ICONS,\n} from '@taiga-ui/core/tokens';\nimport {tuiToAnimationOptions} from '@taiga-ui/core/utils/miscellaneous';\nimport {\n POLYMORPHEUS_CONTEXT,\n PolymorpheusOutlet,\n PolymorpheusTemplate,\n} from '@taiga-ui/polymorpheus';\n\nimport type {TuiPdfViewerOptions} from './pdf-viewer.options';\n\n@Component({\n standalone: true,\n selector: 'tui-pdf-viewer',\n imports: [PolymorpheusOutlet, PolymorpheusTemplate, TuiButton, AsyncPipe],\n templateUrl: './pdf-viewer.template.html',\n styleUrls: ['./pdf-viewer.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [tuiSlideInTop, tuiFadeIn],\n host: {\n '[@tuiFadeIn]': 'options',\n '[@tuiSlideInTop]': 'options',\n '(document:keydown.esc)': 'onKeyDownEsc()',\n },\n})\nexport class TuiPdfViewerComponent<I, O> {\n protected readonly options = tuiToAnimationOptions(inject(TUI_ANIMATIONS_SPEED));\n protected readonly closeWord$ = inject(TUI_CLOSE_WORD);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly context =\n inject<TuiPopover<TuiPdfViewerOptions<I>, O>>(POLYMORPHEUS_CONTEXT);\n\n protected onKeyDownEsc(): void {\n this.context.$implicit.complete();\n }\n}\n","<header class=\"t-header\">\n <h2\n automation-id=\"tui-pdf-viewer__label\"\n class=\"t-title\"\n >\n {{ context.label }}\n </h2>\n <div class=\"t-actions\">\n <ng-container *polymorpheusOutlet=\"context.actions as text; context: context\">\n {{ text }}\n </ng-container>\n </div>\n <button\n appearance=\"\"\n size=\"s\"\n tuiIconButton\n type=\"button\"\n class=\"t-close\"\n [iconStart]=\"icons.close\"\n [style.border-radius.%]=\"100\"\n (click)=\"context.$implicit.complete()\"\n >\n {{ closeWord$ | async }}\n </button>\n</header>\n<section class=\"t-content\">\n <iframe\n *polymorpheusOutlet=\"context.content as content; context: context\"\n title=\"pdf\"\n class=\"t-iframe\"\n [src]=\"content\"\n ></iframe>\n</section>\n","import type {Provider} from '@angular/core';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nexport const TUI_PDF_VIEWER_DEFAULT_OPTIONS: TuiPdfViewerOptions = {\n label: '',\n actions: '',\n data: undefined,\n};\n\n/**\n * Default parameters for PdfViewer component\n */\nexport const TUI_PDF_VIEWER_OPTIONS = tuiCreateToken(TUI_PDF_VIEWER_DEFAULT_OPTIONS);\n\nexport function tuiPdfViewerOptionsProvider(\n options: Partial<TuiPdfViewerOptions>,\n): Provider {\n return tuiProvideOptions(\n TUI_PDF_VIEWER_OPTIONS,\n options,\n TUI_PDF_VIEWER_DEFAULT_OPTIONS,\n );\n}\n\nexport interface TuiPdfViewerOptions<I = undefined> {\n readonly actions: PolymorpheusContent<TuiPdfViewerOptions<I>>;\n readonly data: I;\n readonly label: string;\n}\n","import {inject, Injectable} from '@angular/core';\nimport type {SafeResourceUrl} from '@angular/platform-browser';\nimport type {TuiPopoverContext} from '@taiga-ui/cdk/services';\nimport {TuiPopoverService} from '@taiga-ui/cdk/services';\nimport {TUI_DIALOGS} from '@taiga-ui/core/components/dialog';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport type {Observable} from 'rxjs';\n\nimport {TuiPdfViewerComponent} from './pdf-viewer.component';\nimport type {TuiPdfViewerOptions} from './pdf-viewer.options';\nimport {TUI_PDF_VIEWER_OPTIONS} from './pdf-viewer.options';\n\ntype Content<G> = PolymorpheusContent<\n TuiPdfViewerOptions<unknown> & TuiPopoverContext<G>\n>;\n\n@Injectable({\n providedIn: 'root',\n useFactory: () =>\n new TuiPdfViewerService(\n TUI_DIALOGS,\n TuiPdfViewerComponent,\n inject(TUI_PDF_VIEWER_OPTIONS),\n ),\n})\nexport class TuiPdfViewerService extends TuiPopoverService<TuiPdfViewerOptions<unknown>> {\n public override open<G>(\n content: Content<G> | SafeResourceUrl,\n options: Partial<TuiPdfViewerOptions<any>> = {},\n ): Observable<G> {\n return super.open(content as Content<G>, options);\n }\n}\n","import {Directive} from '@angular/core';\nimport {TuiPopoverDirective} from '@taiga-ui/cdk/directives/popover';\nimport {tuiAsPopover} from '@taiga-ui/cdk/services';\n\nimport type {TuiPdfViewerOptions} from './pdf-viewer.options';\nimport {TuiPdfViewerService} from './pdf-viewer.service';\n\n@Directive({\n standalone: true,\n selector: 'ng-template[tuiPdfViewer]',\n inputs: ['options: tuiPdfViewerOptions', 'open: tuiPdfViewer'],\n outputs: ['openChange: tuiPdfViewerChange'],\n providers: [tuiAsPopover(TuiPdfViewerService)],\n})\nexport class TuiPdfViewerDirective<T> extends TuiPopoverDirective<\n TuiPdfViewerOptions<T>\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-kit-components-pdf-viewer.mjs","sources":["../../../projects/kit/components/pdf-viewer/pdf-viewer.component.ts","../../../projects/kit/components/pdf-viewer/pdf-viewer.template.html","../../../projects/kit/components/pdf-viewer/pdf-viewer.options.ts","../../../projects/kit/components/pdf-viewer/pdf-viewer.service.ts","../../../projects/kit/components/pdf-viewer/pdf-viewer.directive.ts","../../../projects/kit/components/pdf-viewer/taiga-ui-kit-components-pdf-viewer.ts"],"sourcesContent":["import {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport type {TuiPopover} from '@taiga-ui/cdk/services';\nimport {tuiFadeIn, tuiSlideInTop} from '@taiga-ui/core/animations';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {\n TUI_ANIMATIONS_SPEED,\n TUI_CLOSE_WORD,\n TUI_COMMON_ICONS,\n} from '@taiga-ui/core/tokens';\nimport {tuiToAnimationOptions} from '@taiga-ui/core/utils/miscellaneous';\nimport {\n injectContext,\n PolymorpheusOutlet,\n PolymorpheusTemplate,\n} from '@taiga-ui/polymorpheus';\n\nimport type {TuiPdfViewerOptions} from './pdf-viewer.options';\n\n@Component({\n standalone: true,\n selector: 'tui-pdf-viewer',\n imports: [AsyncPipe, PolymorpheusOutlet, PolymorpheusTemplate, TuiButton],\n templateUrl: './pdf-viewer.template.html',\n styleUrls: ['./pdf-viewer.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [tuiSlideInTop, tuiFadeIn],\n host: {\n '[@tuiFadeIn]': 'options',\n '[@tuiSlideInTop]': 'options',\n '(document:keydown.esc)': 'onKeyDownEsc()',\n },\n})\nexport class TuiPdfViewerComponent<I, O> {\n protected readonly options = tuiToAnimationOptions(inject(TUI_ANIMATIONS_SPEED));\n protected readonly closeWord$ = inject(TUI_CLOSE_WORD);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly context = injectContext<TuiPopover<TuiPdfViewerOptions<I>, O>>();\n\n protected onKeyDownEsc(): void {\n this.context.$implicit.complete();\n }\n}\n","<header class=\"t-header\">\n <h2\n automation-id=\"tui-pdf-viewer__label\"\n class=\"t-title\"\n >\n {{ context.label }}\n </h2>\n <div class=\"t-actions\">\n <ng-container *polymorpheusOutlet=\"context.actions as text; context: context\">\n {{ text }}\n </ng-container>\n </div>\n <button\n appearance=\"\"\n size=\"s\"\n tuiIconButton\n type=\"button\"\n class=\"t-close\"\n [iconStart]=\"icons.close\"\n [style.border-radius.%]=\"100\"\n (click)=\"context.$implicit.complete()\"\n >\n {{ closeWord$ | async }}\n </button>\n</header>\n<section class=\"t-content\">\n <iframe\n *polymorpheusOutlet=\"context.content as content; context: context\"\n title=\"pdf\"\n class=\"t-iframe\"\n [src]=\"content\"\n ></iframe>\n</section>\n","import type {Provider} from '@angular/core';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nexport const TUI_PDF_VIEWER_DEFAULT_OPTIONS: TuiPdfViewerOptions = {\n label: '',\n actions: '',\n data: undefined,\n};\n\n/**\n * Default parameters for PdfViewer component\n */\nexport const TUI_PDF_VIEWER_OPTIONS = tuiCreateToken(TUI_PDF_VIEWER_DEFAULT_OPTIONS);\n\nexport function tuiPdfViewerOptionsProvider(\n options: Partial<TuiPdfViewerOptions>,\n): Provider {\n return tuiProvideOptions(\n TUI_PDF_VIEWER_OPTIONS,\n options,\n TUI_PDF_VIEWER_DEFAULT_OPTIONS,\n );\n}\n\nexport interface TuiPdfViewerOptions<I = undefined> {\n readonly actions: PolymorpheusContent<TuiPdfViewerOptions<I>>;\n readonly data: I;\n readonly label: string;\n}\n","import {inject, Injectable} from '@angular/core';\nimport type {SafeResourceUrl} from '@angular/platform-browser';\nimport type {TuiPopoverContext} from '@taiga-ui/cdk/services';\nimport {TuiPopoverService} from '@taiga-ui/cdk/services';\nimport {TUI_DIALOGS} from '@taiga-ui/core/components/dialog';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport type {Observable} from 'rxjs';\n\nimport {TuiPdfViewerComponent} from './pdf-viewer.component';\nimport type {TuiPdfViewerOptions} from './pdf-viewer.options';\nimport {TUI_PDF_VIEWER_OPTIONS} from './pdf-viewer.options';\n\ntype Content<G> = PolymorpheusContent<\n TuiPdfViewerOptions<unknown> & TuiPopoverContext<G>\n>;\n\n@Injectable({\n providedIn: 'root',\n useFactory: () =>\n new TuiPdfViewerService(\n TUI_DIALOGS,\n TuiPdfViewerComponent,\n inject(TUI_PDF_VIEWER_OPTIONS),\n ),\n})\nexport class TuiPdfViewerService extends TuiPopoverService<TuiPdfViewerOptions<unknown>> {\n public override open<G>(\n content: Content<G> | SafeResourceUrl,\n options: Partial<TuiPdfViewerOptions<any>> = {},\n ): Observable<G> {\n return super.open(content as Content<G>, options);\n }\n}\n","import {Directive} from '@angular/core';\nimport {TuiPopoverDirective} from '@taiga-ui/cdk/directives/popover';\nimport {tuiAsPopover} from '@taiga-ui/cdk/services';\n\nimport type {TuiPdfViewerOptions} from './pdf-viewer.options';\nimport {TuiPdfViewerService} from './pdf-viewer.service';\n\n@Directive({\n standalone: true,\n selector: 'ng-template[tuiPdfViewer]',\n inputs: ['options: tuiPdfViewerOptions', 'open: tuiPdfViewer'],\n outputs: ['openChange: tuiPdfViewerChange'],\n providers: [tuiAsPopover(TuiPdfViewerService)],\n})\nexport class TuiPdfViewerDirective<T> extends TuiPopoverDirective<\n TuiPdfViewerOptions<T>\n> {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -3,14 +3,14 @@ import { inject, Component, ViewEncapsulation, ChangeDetectionStrategy, Injectab
3
3
  import { tuiSlideInTop, tuiFadeIn } from '@taiga-ui/core/animations';
4
4
  import { TUI_ANIMATIONS_SPEED } from '@taiga-ui/core/tokens';
5
5
  import { tuiGetDuration } from '@taiga-ui/core/utils/miscellaneous';
6
- import { POLYMORPHEUS_CONTEXT, PolymorpheusOutlet, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';
6
+ import { injectContext, PolymorpheusOutlet, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';
7
7
  import { TuiPopoverDirective } from '@taiga-ui/cdk/directives/popover';
8
8
  import { TuiPopoverService, tuiAsPopover } from '@taiga-ui/cdk/services';
9
9
  import { TUI_DIALOGS } from '@taiga-ui/core/components/dialog';
10
10
 
11
11
  class TuiPreviewDialog {
12
12
  constructor() {
13
- this.context = inject(POLYMORPHEUS_CONTEXT);
13
+ this.context = injectContext();
14
14
  this.animation = {
15
15
  value: '',
16
16
  params: {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-preview-preview-dialog.mjs","sources":["../../../projects/kit/components/preview/preview-dialog/preview-dialog.component.ts","../../../projects/kit/components/preview/preview-dialog/preview-dialog.service.ts","../../../projects/kit/components/preview/preview-dialog/preview-dialog.directive.ts","../../../projects/kit/components/preview/preview-dialog/taiga-ui-kit-components-preview-preview-dialog.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport type {TuiPopover} from '@taiga-ui/cdk/services';\nimport {tuiFadeIn, tuiSlideInTop} from '@taiga-ui/core/animations';\nimport {TUI_ANIMATIONS_SPEED} from '@taiga-ui/core/tokens';\nimport {tuiGetDuration} from '@taiga-ui/core/utils/miscellaneous';\nimport {\n POLYMORPHEUS_CONTEXT,\n PolymorpheusOutlet,\n PolymorpheusTemplate,\n} from '@taiga-ui/polymorpheus';\n\n@Component({\n standalone: true,\n selector: 'tui-preview-dialog',\n imports: [PolymorpheusOutlet, PolymorpheusTemplate],\n template: `\n <ng-container *polymorpheusOutlet=\"context.content as text; context: context\">\n {{ text }}\n </ng-container>\n `,\n styleUrls: ['./preview-dialog.style.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [tuiSlideInTop, tuiFadeIn],\n host: {\n '(document:keydown.esc)': 'context.$implicit.complete()',\n '[@tuiSlideInTop]': 'animation',\n '[@tuiFadeIn]': 'animation',\n },\n})\nexport class TuiPreviewDialog {\n protected readonly context = inject<TuiPopover<void, void>>(POLYMORPHEUS_CONTEXT);\n protected readonly animation = {\n value: '',\n params: {\n start: '100vh',\n duration: tuiGetDuration(inject(TUI_ANIMATIONS_SPEED)),\n },\n };\n}\n","import {Injectable} from '@angular/core';\nimport {TuiPopoverService} from '@taiga-ui/cdk/services';\nimport {TUI_DIALOGS} from '@taiga-ui/core/components/dialog';\n\nimport {TuiPreviewDialog} from './preview-dialog.component';\n\n@Injectable({\n providedIn: 'root',\n useFactory: () => new TuiPreviewDialogService(TUI_DIALOGS, TuiPreviewDialog),\n})\nexport class TuiPreviewDialogService extends TuiPopoverService<unknown> {}\n","import {Directive} from '@angular/core';\nimport {TuiPopoverDirective} from '@taiga-ui/cdk/directives/popover';\nimport {tuiAsPopover} from '@taiga-ui/cdk/services';\n\nimport {TuiPreviewDialogService} from './preview-dialog.service';\n\n@Directive({\n standalone: true,\n selector: 'ng-template[tuiPreviewDialog]',\n inputs: ['open: tuiPreviewDialog'],\n outputs: ['openChange: tuiPreviewDialogChange'],\n providers: [tuiAsPopover(TuiPreviewDialogService)],\n})\nexport class TuiPreviewDialogDirective extends TuiPopoverDirective<unknown> {}\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-kit-components-preview-preview-dialog.mjs","sources":["../../../projects/kit/components/preview/preview-dialog/preview-dialog.component.ts","../../../projects/kit/components/preview/preview-dialog/preview-dialog.service.ts","../../../projects/kit/components/preview/preview-dialog/preview-dialog.directive.ts","../../../projects/kit/components/preview/preview-dialog/taiga-ui-kit-components-preview-preview-dialog.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport type {TuiPopover} from '@taiga-ui/cdk/services';\nimport {tuiFadeIn, tuiSlideInTop} from '@taiga-ui/core/animations';\nimport {TUI_ANIMATIONS_SPEED} from '@taiga-ui/core/tokens';\nimport {tuiGetDuration} from '@taiga-ui/core/utils/miscellaneous';\nimport {\n injectContext,\n PolymorpheusOutlet,\n PolymorpheusTemplate,\n} from '@taiga-ui/polymorpheus';\n\n@Component({\n standalone: true,\n selector: 'tui-preview-dialog',\n imports: [PolymorpheusOutlet, PolymorpheusTemplate],\n template: `\n <ng-container *polymorpheusOutlet=\"context.content as text; context: context\">\n {{ text }}\n </ng-container>\n `,\n styleUrls: ['./preview-dialog.style.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [tuiSlideInTop, tuiFadeIn],\n host: {\n '(document:keydown.esc)': 'context.$implicit.complete()',\n '[@tuiSlideInTop]': 'animation',\n '[@tuiFadeIn]': 'animation',\n },\n})\nexport class TuiPreviewDialog {\n protected readonly context = injectContext<TuiPopover<void, void>>();\n protected readonly animation = {\n value: '',\n params: {\n start: '100vh',\n duration: tuiGetDuration(inject(TUI_ANIMATIONS_SPEED)),\n },\n };\n}\n","import {Injectable} from '@angular/core';\nimport {TuiPopoverService} from '@taiga-ui/cdk/services';\nimport {TUI_DIALOGS} from '@taiga-ui/core/components/dialog';\n\nimport {TuiPreviewDialog} from './preview-dialog.component';\n\n@Injectable({\n providedIn: 'root',\n useFactory: () => new TuiPreviewDialogService(TUI_DIALOGS, TuiPreviewDialog),\n})\nexport class TuiPreviewDialogService extends TuiPopoverService<unknown> {}\n","import {Directive} from '@angular/core';\nimport {TuiPopoverDirective} from '@taiga-ui/cdk/directives/popover';\nimport {tuiAsPopover} from '@taiga-ui/cdk/services';\n\nimport {TuiPreviewDialogService} from './preview-dialog.service';\n\n@Directive({\n standalone: true,\n selector: 'ng-template[tuiPreviewDialog]',\n inputs: ['open: tuiPreviewDialog'],\n outputs: ['openChange: tuiPreviewDialogChange'],\n providers: [tuiAsPopover(TuiPreviewDialogService)],\n})\nexport class TuiPreviewDialogDirective extends TuiPopoverDirective<unknown> {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { NgIf, AsyncPipe, PercentPipe } from '@angular/common';
1
+ import { AsyncPipe, NgIf, PercentPipe } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { Directive, inject, EventEmitter, Component, ChangeDetectionStrategy, Input, Output, ViewEncapsulation, Injectable } from '@angular/core';
3
+ import { Directive, inject, EventEmitter, Component, ChangeDetectionStrategy, Input, Output, ChangeDetectorRef, ViewEncapsulation, Injectable } from '@angular/core';
4
4
  import { tuiClamp, tuiRound } from '@taiga-ui/cdk/utils/math';
5
5
  import { tuiButtonOptionsProvider, TuiButton } from '@taiga-ui/core/components/button';
6
6
  import { TUI_PREVIEW_ICONS, TUI_PAGINATION_TEXTS, TUI_PREVIEW_ZOOM_TEXTS, TUI_PREVIEW_TEXTS } from '@taiga-ui/kit/tokens';
@@ -13,16 +13,16 @@ import { tuiDragAndDropFrom, tuiTypedFromEvent } from '@taiga-ui/cdk/observables
13
13
  import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
14
14
  import { tuiPx } from '@taiga-ui/cdk/utils/miscellaneous';
15
15
  import { tuiSlideInTop, tuiFadeIn } from '@taiga-ui/core/animations';
16
- import * as i1 from '@taiga-ui/core/directives/hint';
16
+ import * as i2 from '@taiga-ui/core/directives/hint';
17
17
  import { TuiHint } from '@taiga-ui/core/directives/hint';
18
18
  import { switchMap, merge, of, timer, map, startWith, BehaviorSubject, combineLatest } from 'rxjs';
19
- import * as i2 from '@angular/forms';
19
+ import * as i1 from '@angular/forms';
20
20
  import { FormsModule } from '@angular/forms';
21
21
  import * as i3 from '@taiga-ui/kit/components/slider';
22
22
  import { TuiSlider } from '@taiga-ui/kit/components/slider';
23
23
  import { TUI_ANIMATIONS_SPEED } from '@taiga-ui/core/tokens';
24
24
  import { tuiGetDuration } from '@taiga-ui/core/utils/miscellaneous';
25
- import { POLYMORPHEUS_CONTEXT, PolymorpheusOutlet, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';
25
+ import { injectContext, PolymorpheusOutlet, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';
26
26
  import { TuiPopoverDirective } from '@taiga-ui/cdk/directives/popover';
27
27
  import { TuiPopoverService, tuiAsPopover } from '@taiga-ui/cdk/services';
28
28
  import { TUI_DIALOGS } from '@taiga-ui/core/components/dialog';
@@ -78,11 +78,11 @@ class TuiPreviewPagination {
78
78
  this.indexChange.emit(index);
79
79
  }
80
80
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPreviewPagination, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
81
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiPreviewPagination, isStandalone: true, selector: "tui-preview-pagination", inputs: { length: "length", index: "index" }, outputs: { indexChange: "indexChange" }, host: { listeners: { "document:keydown.arrowRight.prevent": "onArrowClick(1)", "document:keydown.arrowLeft.prevent": "onArrowClick(-1)" } }, ngImport: i0, template: "<ng-container *ngIf=\"texts$ | async as texts\">\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-arrow_left\"\n [disabled]=\"leftButtonDisabled\"\n [iconStart]=\"icons.prev\"\n (click)=\"onArrowClick(-1)\"\n >\n {{ texts[0] }}\n </button>\n {{ index + 1 }}/{{ length }}\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-arrow_right\"\n [disabled]=\"rightButtonDisabled\"\n [iconStart]=\"icons.next\"\n (click)=\"onArrowClick(1)\"\n >\n {{ texts[1] }}\n </button>\n</ng-container>\n", styles: [":host{border-radius:1rem;background:#686868f5;color:#fff;display:flex;font:var(--tui-font-text-s);justify-content:space-between;align-items:center;inline-size:6.25rem}.t-arrow_left{border-start-end-radius:0;border-end-end-radius:0}.t-arrow_right{border-start-start-radius:0;border-end-start-radius:0}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiPreviewAction, selector: "[tuiPreviewAction]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
81
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiPreviewPagination, isStandalone: true, selector: "tui-preview-pagination", inputs: { length: "length", index: "index" }, outputs: { indexChange: "indexChange" }, host: { listeners: { "document:keydown.arrowRight.prevent": "onArrowClick(1)", "document:keydown.arrowLeft.prevent": "onArrowClick(-1)" } }, ngImport: i0, template: "<ng-container *ngIf=\"texts$ | async as texts\">\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-arrow_left\"\n [disabled]=\"leftButtonDisabled\"\n [iconStart]=\"icons.prev\"\n (click)=\"onArrowClick(-1)\"\n >\n {{ texts[0] }}\n </button>\n {{ index + 1 }}/{{ length }}\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-arrow_right\"\n [disabled]=\"rightButtonDisabled\"\n [iconStart]=\"icons.next\"\n (click)=\"onArrowClick(1)\"\n >\n {{ texts[1] }}\n </button>\n</ng-container>\n", styles: [":host{border-radius:1rem;background:#686868f5;color:#fff;display:flex;font:var(--tui-font-text-s);justify-content:space-between;align-items:center;inline-size:6.25rem}.t-arrow_left{border-start-end-radius:0;border-end-end-radius:0}.t-arrow_right{border-start-start-radius:0;border-end-start-radius:0}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiPreviewAction, selector: "[tuiPreviewAction]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
82
82
  }
83
83
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPreviewPagination, decorators: [{
84
84
  type: Component,
85
- args: [{ standalone: true, selector: 'tui-preview-pagination', imports: [NgIf, AsyncPipe, TuiButton, TuiPreviewAction], changeDetection: ChangeDetectionStrategy.OnPush, host: {
85
+ args: [{ standalone: true, selector: 'tui-preview-pagination', imports: [AsyncPipe, NgIf, TuiButton, TuiPreviewAction], changeDetection: ChangeDetectionStrategy.OnPush, host: {
86
86
  '(document:keydown.arrowRight.prevent)': 'onArrowClick(1)',
87
87
  '(document:keydown.arrowLeft.prevent)': 'onArrowClick(-1)',
88
88
  }, template: "<ng-container *ngIf=\"texts$ | async as texts\">\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-arrow_left\"\n [disabled]=\"leftButtonDisabled\"\n [iconStart]=\"icons.prev\"\n (click)=\"onArrowClick(-1)\"\n >\n {{ texts[0] }}\n </button>\n {{ index + 1 }}/{{ length }}\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-arrow_right\"\n [disabled]=\"rightButtonDisabled\"\n [iconStart]=\"icons.next\"\n (click)=\"onArrowClick(1)\"\n >\n {{ texts[1] }}\n </button>\n</ng-container>\n", styles: [":host{border-radius:1rem;background:#686868f5;color:#fff;display:flex;font:var(--tui-font-text-s);justify-content:space-between;align-items:center;inline-size:6.25rem}.t-arrow_left{border-start-end-radius:0;border-end-end-radius:0}.t-arrow_right{border-start-start-radius:0;border-end-start-radius:0}\n"] }]
@@ -133,19 +133,19 @@ class TuiPreviewZoom {
133
133
  this.onModelChange(this.value < 1 ? 1 : this.value + STEP);
134
134
  }
135
135
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPreviewZoom, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
136
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiPreviewZoom, isStandalone: true, selector: "tui-preview-zoom", inputs: { min: "min", max: "max", value: "value" }, outputs: { valueChange: "valueChange", reset: "reset" }, ngImport: i0, template: "<ng-container *ngIf=\"zoomTexts$ | async as texts\">\n <section class=\"t-zoom\">\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_minus\"\n [disabled]=\"leftButtonDisabled\"\n [iconStart]=\"icons.zoomOut\"\n (click)=\"onMinus()\"\n >\n {{ texts.zoomOut }}\n </button>\n <label tuiSliderThumbLabel>\n <div\n tuiHintAppearance=\"dark\"\n tuiHintDirection=\"top-right\"\n [tuiHint]=\"hint\"\n [tuiHintManual]=\"!!(hintShow$ | async)\"\n ></div>\n\n <ng-template #hint>\n {{ (valueChange | async) || value | percent }}\n </ng-template>\n\n <input\n step=\"any\"\n tuiSlider\n tuiTheme=\"dark\"\n type=\"range\"\n class=\"t-slider\"\n [max]=\"max\"\n [min]=\"min\"\n [ngModel]=\"value\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onModelChange($event)\"\n />\n </label>\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_plus\"\n [disabled]=\"rightButtonDisabled\"\n [iconStart]=\"icons.zoomIn\"\n (click)=\"onPlus()\"\n >\n {{ texts.zoomIn }}\n </button>\n </section>\n\n <button\n tuiHintAppearance=\"dark\"\n tuiHintDescribe\n tuiHintDirection=\"top-right\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-reset-button\"\n [class.t-invisible]=\"!collapseVisible\"\n [iconStart]=\"icons.zoomReset\"\n [tuiHint]=\"texts.reset\"\n (click)=\"onReset()\"\n ></button>\n</ng-container>\n", styles: [":host{position:relative;display:flex}.t-zoom{border-radius:1rem;background:#686868f5;color:#fff;display:flex;font:var(--tui-font-text-s);justify-content:space-between;align-items:center;inline-size:12rem}.t-slider{inline-size:7.5rem}.t-sign_minus{border-start-end-radius:0;border-end-end-radius:0}.t-sign_plus{border-start-start-radius:0;border-end-start-radius:0}.t-invisible{visibility:hidden}.t-reset-button{margin-left:.3125rem}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: i1.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"] }, { kind: "directive", type: i1.TuiHintDescribe, selector: "[tuiHintDescribe]", inputs: ["tuiHintDescribe"] }, { kind: "directive", type: i1.TuiHintManual, selector: "[tuiHint][tuiHintManual]", inputs: ["tuiHintManual"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.TuiSliderComponent, selector: "input[type=range][tuiSlider]", inputs: ["size", "segments"] }, { kind: "component", type: i3.TuiSliderThumbLabel, selector: "[tuiSliderThumbLabel]" }, { kind: "pipe", type: PercentPipe, name: "percent" }, { kind: "directive", type: TuiPreviewAction, selector: "[tuiPreviewAction]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
136
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiPreviewZoom, isStandalone: true, selector: "tui-preview-zoom", inputs: { min: "min", max: "max", value: "value" }, outputs: { valueChange: "valueChange", reset: "reset" }, ngImport: i0, template: "<ng-container *ngIf=\"zoomTexts$ | async as texts\">\n <section class=\"t-zoom\">\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_minus\"\n [disabled]=\"leftButtonDisabled\"\n [iconStart]=\"icons.zoomOut\"\n (click)=\"onMinus()\"\n >\n {{ texts.zoomOut }}\n </button>\n <label tuiSliderThumbLabel>\n <div\n tuiHintAppearance=\"dark\"\n tuiHintDirection=\"top-right\"\n [tuiHint]=\"hint\"\n [tuiHintManual]=\"!!(hintShow$ | async)\"\n ></div>\n\n <ng-template #hint>\n {{ (valueChange | async) || value | percent }}\n </ng-template>\n\n <input\n step=\"any\"\n tuiSlider\n tuiTheme=\"dark\"\n type=\"range\"\n class=\"t-slider\"\n [max]=\"max\"\n [min]=\"min\"\n [ngModel]=\"value\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onModelChange($event)\"\n />\n </label>\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_plus\"\n [disabled]=\"rightButtonDisabled\"\n [iconStart]=\"icons.zoomIn\"\n (click)=\"onPlus()\"\n >\n {{ texts.zoomIn }}\n </button>\n </section>\n\n <button\n tuiHintAppearance=\"dark\"\n tuiHintDescribe\n tuiHintDirection=\"top-right\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-reset-button\"\n [class.t-invisible]=\"!collapseVisible\"\n [iconStart]=\"icons.zoomReset\"\n [tuiHint]=\"texts.reset\"\n (click)=\"onReset()\"\n ></button>\n</ng-container>\n", styles: [":host{position:relative;display:flex}.t-zoom{border-radius:1rem;background:#686868f5;color:#fff;display:flex;font:var(--tui-font-text-s);justify-content:space-between;align-items:center;inline-size:12rem}.t-slider{inline-size:7.5rem}.t-sign_minus{border-start-end-radius:0;border-end-end-radius:0}.t-sign_plus{border-start-start-radius:0;border-end-start-radius:0}.t-invisible{visibility:hidden}.t-reset-button{margin-left:.3125rem}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: PercentPipe, name: "percent" }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i2.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"] }, { kind: "directive", type: i2.TuiHintDescribe, selector: "[tuiHintDescribe]", inputs: ["tuiHintDescribe"] }, { kind: "directive", type: i2.TuiHintManual, selector: "[tuiHint][tuiHintManual]", inputs: ["tuiHintManual"] }, { kind: "directive", type: TuiPreviewAction, selector: "[tuiPreviewAction]" }, { kind: "component", type: i3.TuiSliderComponent, selector: "input[type=range][tuiSlider]", inputs: ["size", "segments"] }, { kind: "component", type: i3.TuiSliderThumbLabel, selector: "[tuiSliderThumbLabel]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
137
137
  }
138
138
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPreviewZoom, decorators: [{
139
139
  type: Component,
140
140
  args: [{ standalone: true, selector: 'tui-preview-zoom', imports: [
141
- NgIf,
142
- TuiButton,
143
141
  AsyncPipe,
144
- TuiHint,
145
142
  FormsModule,
146
- TuiSlider,
143
+ NgIf,
147
144
  PercentPipe,
145
+ TuiButton,
146
+ TuiHint,
148
147
  TuiPreviewAction,
148
+ TuiSlider,
149
149
  ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"zoomTexts$ | async as texts\">\n <section class=\"t-zoom\">\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_minus\"\n [disabled]=\"leftButtonDisabled\"\n [iconStart]=\"icons.zoomOut\"\n (click)=\"onMinus()\"\n >\n {{ texts.zoomOut }}\n </button>\n <label tuiSliderThumbLabel>\n <div\n tuiHintAppearance=\"dark\"\n tuiHintDirection=\"top-right\"\n [tuiHint]=\"hint\"\n [tuiHintManual]=\"!!(hintShow$ | async)\"\n ></div>\n\n <ng-template #hint>\n {{ (valueChange | async) || value | percent }}\n </ng-template>\n\n <input\n step=\"any\"\n tuiSlider\n tuiTheme=\"dark\"\n type=\"range\"\n class=\"t-slider\"\n [max]=\"max\"\n [min]=\"min\"\n [ngModel]=\"value\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onModelChange($event)\"\n />\n </label>\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_plus\"\n [disabled]=\"rightButtonDisabled\"\n [iconStart]=\"icons.zoomIn\"\n (click)=\"onPlus()\"\n >\n {{ texts.zoomIn }}\n </button>\n </section>\n\n <button\n tuiHintAppearance=\"dark\"\n tuiHintDescribe\n tuiHintDirection=\"top-right\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-reset-button\"\n [class.t-invisible]=\"!collapseVisible\"\n [iconStart]=\"icons.zoomReset\"\n [tuiHint]=\"texts.reset\"\n (click)=\"onReset()\"\n ></button>\n</ng-container>\n", styles: [":host{position:relative;display:flex}.t-zoom{border-radius:1rem;background:#686868f5;color:#fff;display:flex;font:var(--tui-font-text-s);justify-content:space-between;align-items:center;inline-size:12rem}.t-slider{inline-size:7.5rem}.t-sign_minus{border-start-end-radius:0;border-end-end-radius:0}.t-sign_plus{border-start-start-radius:0;border-end-start-radius:0}.t-invisible{visibility:hidden}.t-reset-button{margin-left:.3125rem}\n"] }]
150
150
  }], propDecorators: { min: [{
151
151
  type: Input
@@ -170,6 +170,7 @@ class TuiPreviewComponent {
170
170
  this.height = 0;
171
171
  this.texts$ = inject(TUI_PREVIEW_TEXTS);
172
172
  this.icons = inject(TUI_PREVIEW_ICONS);
173
+ this.cdr = inject(ChangeDetectorRef);
173
174
  this.zoom$ = new BehaviorSubject(this.minZoom);
174
175
  this.rotation$ = new BehaviorSubject(0);
175
176
  this.coordinates$ = new BehaviorSubject(EMPTY_COORDINATES);
@@ -203,6 +204,7 @@ class TuiPreviewComponent {
203
204
  onResize([entry]) {
204
205
  if (entry?.contentRect) {
205
206
  this.refresh(entry.contentRect.width, entry.contentRect.height);
207
+ this.cdr.detectChanges();
206
208
  }
207
209
  }
208
210
  reset() {
@@ -255,21 +257,21 @@ class TuiPreviewComponent {
255
257
  ];
256
258
  }
257
259
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
258
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiPreviewComponent, isStandalone: true, selector: "tui-preview", inputs: { zoomable: "zoomable", rotatable: "rotatable" }, ngImport: i0, template: "<ng-container *ngIf=\"texts$ | async as texts\">\n <section\n #contentWrapper\n attributeFilter=\"src\"\n characterData\n childList\n subtree\n class=\"t-wrapper\"\n [class.t-not-interactive-content]=\"zoomable\"\n [class.t-transitive]=\"transitioned$ | async\"\n [style.cursor]=\"cursor$ | async\"\n [style.transform]=\"wrapperTransform$ | async\"\n (tuiPan)=\"onPan($event)\"\n (tuiZoom)=\"onZoom($event)\"\n (waMutationObserver)=\"onMutation(contentWrapper)\"\n (waResizeObserver)=\"onResize($event)\"\n >\n <ng-content />\n </section>\n\n <header class=\"t-header\">\n <div class=\"t-title\">\n <ng-content select=\"tui-preview-title\" />\n </div>\n\n <ng-content select=\"tui-preview-pagination\" />\n\n <div class=\"t-actions\">\n <ng-content select=\"[tuiPreviewAction]\" />\n </div>\n </header>\n\n <footer class=\"t-footer\">\n <button\n *ngIf=\"rotatable\"\n tuiHintAppearance=\"dark\"\n tuiHintDescribe\n tuiHintDirection=\"top-right\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-rotate-button\"\n [iconStart]=\"icons.rotate\"\n [tuiHint]=\"texts.rotate\"\n (click)=\"rotate()\"\n ></button>\n\n <tui-preview-zoom\n *ngIf=\"zoomable\"\n [min]=\"minZoom\"\n [value]=\"(zoom$ | async) || 1\"\n (reset)=\"reset()\"\n (valueChange)=\"setZoom($event)\"\n />\n </footer>\n</ng-container>\n", styles: [":host{position:relative;display:flex;justify-content:center;align-items:center;inline-size:100%;block-size:100%;-webkit-user-select:none;user-select:none}.t-header{position:fixed;top:1rem;display:flex;inline-size:100%;padding:0 1rem;box-sizing:border-box}.t-footer{position:absolute;bottom:1rem;display:flex;inline-size:100%;padding:0 1rem;box-sizing:border-box;justify-content:center}.t-actions{display:flex;flex:1;justify-content:flex-end}.t-actions ::ng-deep>*{margin-left:.625rem}.t-rotate-button{margin-right:.3125rem}.t-title{flex:1}:host-context(tui-root._mobile) .t-title{display:none}.t-not-interactive-content ::ng-deep>*{pointer-events:none}.t-wrapper{will-change:transform}.t-transitive{transition-duration:.3s}\n"], dependencies: [{ kind: "directive", type: TuiZoom, selector: "[tuiZoom]", outputs: ["tuiZoom"] }, { kind: "directive", type: WaMutationObserver, selector: "[waMutationObserver]", inputs: ["attributeFilter", "attributeOldValue", "attributes", "characterData", "characterDataOldValue", "childList", "subtree"], outputs: ["waMutationObserver"], exportAs: ["MutationObserver"] }, { kind: "directive", type: WaResizeObserver, selector: "[waResizeObserver]", inputs: ["box"], outputs: ["waResizeObserver"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: TuiPan, selector: "[tuiPan]", outputs: ["tuiPan"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i1.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"] }, { kind: "directive", type: i1.TuiHintDescribe, selector: "[tuiHintDescribe]", inputs: ["tuiHintDescribe"] }, { kind: "directive", type: TuiPreviewAction, selector: "[tuiPreviewAction]" }, { kind: "component", type: TuiPreviewZoom, selector: "tui-preview-zoom", inputs: ["min", "max", "value"], outputs: ["valueChange", "reset"] }], animations: [tuiSlideInTop], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
260
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiPreviewComponent, isStandalone: true, selector: "tui-preview", inputs: { zoomable: "zoomable", rotatable: "rotatable" }, ngImport: i0, template: "<ng-container *ngIf=\"texts$ | async as texts\">\n <section\n #contentWrapper\n attributeFilter=\"src\"\n characterData\n childList\n subtree\n class=\"t-wrapper\"\n [class.t-not-interactive-content]=\"zoomable\"\n [class.t-transitive]=\"transitioned$ | async\"\n [style.cursor]=\"cursor$ | async\"\n [style.transform]=\"wrapperTransform$ | async\"\n (tuiPan)=\"onPan($event)\"\n (tuiZoom)=\"onZoom($event)\"\n (waMutationObserver)=\"onMutation(contentWrapper)\"\n (waResizeObserver)=\"onResize($event)\"\n >\n <ng-content />\n </section>\n\n <header class=\"t-header\">\n <div class=\"t-title\">\n <ng-content select=\"tui-preview-title\" />\n </div>\n\n <ng-content select=\"tui-preview-pagination\" />\n\n <div class=\"t-actions\">\n <ng-content select=\"[tuiPreviewAction]\" />\n </div>\n </header>\n\n <footer class=\"t-footer\">\n <button\n *ngIf=\"rotatable\"\n tuiHintAppearance=\"dark\"\n tuiHintDescribe\n tuiHintDirection=\"top-right\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-rotate-button\"\n [iconStart]=\"icons.rotate\"\n [tuiHint]=\"texts.rotate\"\n (click)=\"rotate()\"\n ></button>\n\n <tui-preview-zoom\n *ngIf=\"zoomable\"\n [min]=\"minZoom\"\n [value]=\"(zoom$ | async) || 1\"\n (reset)=\"reset()\"\n (valueChange)=\"setZoom($event)\"\n />\n </footer>\n</ng-container>\n", styles: [":host{position:relative;display:flex;justify-content:center;align-items:center;inline-size:100%;block-size:100%;-webkit-user-select:none;user-select:none}.t-header{position:fixed;top:1rem;display:flex;inline-size:100%;padding:0 1rem;box-sizing:border-box}.t-footer{position:absolute;bottom:1rem;display:flex;inline-size:100%;padding:0 1rem;box-sizing:border-box;justify-content:center}.t-actions{display:flex;flex:1;justify-content:flex-end}.t-actions ::ng-deep>*{margin-left:.625rem}.t-rotate-button{margin-right:.3125rem}.t-title{flex:1}:host-context(tui-root._mobile) .t-title{display:none}.t-not-interactive-content ::ng-deep>*{pointer-events:none}.t-wrapper{will-change:transform}.t-transitive{transition-duration:.3s}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i2.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"] }, { kind: "directive", type: i2.TuiHintDescribe, selector: "[tuiHintDescribe]", inputs: ["tuiHintDescribe"] }, { kind: "directive", type: TuiPan, selector: "[tuiPan]", outputs: ["tuiPan"] }, { kind: "directive", type: TuiPreviewAction, selector: "[tuiPreviewAction]" }, { kind: "component", type: TuiPreviewZoom, selector: "tui-preview-zoom", inputs: ["min", "max", "value"], outputs: ["valueChange", "reset"] }, { kind: "directive", type: TuiZoom, selector: "[tuiZoom]", outputs: ["tuiZoom"] }, { kind: "directive", type: WaMutationObserver, selector: "[waMutationObserver]", inputs: ["attributeFilter", "attributeOldValue", "attributes", "characterData", "characterDataOldValue", "childList", "subtree"], outputs: ["waMutationObserver"], exportAs: ["MutationObserver"] }, { kind: "directive", type: WaResizeObserver, selector: "[waResizeObserver]", inputs: ["box"], outputs: ["waResizeObserver"] }], animations: [tuiSlideInTop], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
259
261
  }
260
262
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPreviewComponent, decorators: [{
261
263
  type: Component,
262
264
  args: [{ standalone: true, selector: 'tui-preview', imports: [
263
- TuiZoom,
264
- WaMutationObserver,
265
- WaResizeObserver,
266
- NgIf,
267
265
  AsyncPipe,
268
- TuiPan,
266
+ NgIf,
269
267
  TuiButton,
270
268
  TuiHint,
269
+ TuiPan,
271
270
  TuiPreviewAction,
272
271
  TuiPreviewZoom,
272
+ TuiZoom,
273
+ WaMutationObserver,
274
+ WaResizeObserver,
273
275
  ], changeDetection: ChangeDetectionStrategy.OnPush, animations: [tuiSlideInTop], template: "<ng-container *ngIf=\"texts$ | async as texts\">\n <section\n #contentWrapper\n attributeFilter=\"src\"\n characterData\n childList\n subtree\n class=\"t-wrapper\"\n [class.t-not-interactive-content]=\"zoomable\"\n [class.t-transitive]=\"transitioned$ | async\"\n [style.cursor]=\"cursor$ | async\"\n [style.transform]=\"wrapperTransform$ | async\"\n (tuiPan)=\"onPan($event)\"\n (tuiZoom)=\"onZoom($event)\"\n (waMutationObserver)=\"onMutation(contentWrapper)\"\n (waResizeObserver)=\"onResize($event)\"\n >\n <ng-content />\n </section>\n\n <header class=\"t-header\">\n <div class=\"t-title\">\n <ng-content select=\"tui-preview-title\" />\n </div>\n\n <ng-content select=\"tui-preview-pagination\" />\n\n <div class=\"t-actions\">\n <ng-content select=\"[tuiPreviewAction]\" />\n </div>\n </header>\n\n <footer class=\"t-footer\">\n <button\n *ngIf=\"rotatable\"\n tuiHintAppearance=\"dark\"\n tuiHintDescribe\n tuiHintDirection=\"top-right\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-rotate-button\"\n [iconStart]=\"icons.rotate\"\n [tuiHint]=\"texts.rotate\"\n (click)=\"rotate()\"\n ></button>\n\n <tui-preview-zoom\n *ngIf=\"zoomable\"\n [min]=\"minZoom\"\n [value]=\"(zoom$ | async) || 1\"\n (reset)=\"reset()\"\n (valueChange)=\"setZoom($event)\"\n />\n </footer>\n</ng-container>\n", styles: [":host{position:relative;display:flex;justify-content:center;align-items:center;inline-size:100%;block-size:100%;-webkit-user-select:none;user-select:none}.t-header{position:fixed;top:1rem;display:flex;inline-size:100%;padding:0 1rem;box-sizing:border-box}.t-footer{position:absolute;bottom:1rem;display:flex;inline-size:100%;padding:0 1rem;box-sizing:border-box;justify-content:center}.t-actions{display:flex;flex:1;justify-content:flex-end}.t-actions ::ng-deep>*{margin-left:.625rem}.t-rotate-button{margin-right:.3125rem}.t-title{flex:1}:host-context(tui-root._mobile) .t-title{display:none}.t-not-interactive-content ::ng-deep>*{pointer-events:none}.t-wrapper{will-change:transform}.t-transitive{transition-duration:.3s}\n"] }]
274
276
  }], propDecorators: { zoomable: [{
275
277
  type: Input
@@ -300,7 +302,7 @@ const TuiPreview = [
300
302
 
301
303
  class TuiPreviewDialog {
302
304
  constructor() {
303
- this.context = inject(POLYMORPHEUS_CONTEXT);
305
+ this.context = injectContext();
304
306
  this.animation = {
305
307
  value: '',
306
308
  params: {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-preview.mjs","sources":["../../../projects/kit/components/preview/preview-action/preview-action.directive.ts","../../../projects/kit/components/preview/pagination/preview-pagination.component.ts","../../../projects/kit/components/preview/pagination/preview-pagination.template.html","../../../projects/kit/components/preview/zoom/preview-zoom.component.ts","../../../projects/kit/components/preview/zoom/preview-zoom.template.html","../../../projects/kit/components/preview/preview.component.ts","../../../projects/kit/components/preview/preview.template.html","../../../projects/kit/components/preview/title/preview-title.component.ts","../../../projects/kit/components/preview/preview.ts","../../../projects/kit/components/preview/preview-dialog/preview-dialog.component.ts","../../../projects/kit/components/preview/preview-dialog/preview-dialog.service.ts","../../../projects/kit/components/preview/preview-dialog/preview-dialog.directive.ts","../../../projects/kit/components/preview/taiga-ui-kit-components-preview.ts"],"sourcesContent":["import {Directive} from '@angular/core';\nimport {tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\n\n@Directive({\n standalone: true,\n selector: '[tuiPreviewAction]',\n providers: [\n tuiButtonOptionsProvider({\n appearance: 'preview-action',\n size: 's',\n }),\n ],\n host: {\n '[style.border-radius.rem]': '100',\n },\n})\nexport class TuiPreviewAction {}\n","import {AsyncPipe, NgIf} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n} from '@angular/core';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TUI_PAGINATION_TEXTS, TUI_PREVIEW_ICONS} from '@taiga-ui/kit/tokens';\n\nimport {TuiPreviewAction} from '../preview-action/preview-action.directive';\n\n@Component({\n standalone: true,\n selector: 'tui-preview-pagination',\n imports: [NgIf, AsyncPipe, TuiButton, TuiPreviewAction],\n templateUrl: './preview-pagination.template.html',\n styleUrls: ['./preview-pagination.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:keydown.arrowRight.prevent)': 'onArrowClick(1)',\n '(document:keydown.arrowLeft.prevent)': 'onArrowClick(-1)',\n },\n})\nexport class TuiPreviewPagination {\n protected readonly icons = inject(TUI_PREVIEW_ICONS);\n protected readonly texts$ = inject(TUI_PAGINATION_TEXTS);\n\n @Input()\n public length = 1;\n\n @Input()\n public index = 0;\n\n @Output()\n public readonly indexChange = new EventEmitter<number>();\n\n public onArrowClick(step: number): void {\n this.updateIndex(tuiClamp(this.index + step, 0, this.length - 1));\n }\n\n protected get leftButtonDisabled(): boolean {\n return this.index === 0;\n }\n\n protected get rightButtonDisabled(): boolean {\n return this.index === this.length - 1;\n }\n\n private updateIndex(index: number): void {\n if (this.index === index) {\n return;\n }\n\n this.index = index;\n this.indexChange.emit(index);\n }\n}\n","<ng-container *ngIf=\"texts$ | async as texts\">\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-arrow_left\"\n [disabled]=\"leftButtonDisabled\"\n [iconStart]=\"icons.prev\"\n (click)=\"onArrowClick(-1)\"\n >\n {{ texts[0] }}\n </button>\n {{ index + 1 }}/{{ length }}\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-arrow_right\"\n [disabled]=\"rightButtonDisabled\"\n [iconStart]=\"icons.next\"\n (click)=\"onArrowClick(1)\"\n >\n {{ texts[1] }}\n </button>\n</ng-container>\n","import {AsyncPipe, NgIf, PercentPipe} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiHint} from '@taiga-ui/core/directives/hint';\nimport {TuiSlider} from '@taiga-ui/kit/components/slider';\nimport {TUI_PREVIEW_ICONS, TUI_PREVIEW_ZOOM_TEXTS} from '@taiga-ui/kit/tokens';\nimport {map, merge, of, startWith, switchMap, timer} from 'rxjs';\n\nimport {TuiPreviewAction} from '../preview-action/preview-action.directive';\n\nconst STEP = 0.5;\n\n@Component({\n standalone: true,\n selector: 'tui-preview-zoom',\n imports: [\n NgIf,\n TuiButton,\n AsyncPipe,\n TuiHint,\n FormsModule,\n TuiSlider,\n PercentPipe,\n TuiPreviewAction,\n ],\n templateUrl: './preview-zoom.template.html',\n styleUrls: ['./preview-zoom.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiPreviewZoom {\n protected readonly icons = inject(TUI_PREVIEW_ICONS);\n protected readonly zoomTexts$ = inject(TUI_PREVIEW_ZOOM_TEXTS);\n\n @Input()\n public min = 0.5;\n\n @Input()\n public max = 2;\n\n @Input()\n public value = 1;\n\n @Output()\n public readonly valueChange = new EventEmitter<number>();\n\n @Output()\n public readonly reset = new EventEmitter<void>();\n\n public readonly hintShow$ = this.valueChange.pipe(\n switchMap(() => merge(of(true), timer(1000).pipe(map(TUI_FALSE_HANDLER)))),\n startWith(false),\n );\n\n protected get leftButtonDisabled(): boolean {\n return this.value === this.min;\n }\n\n protected get rightButtonDisabled(): boolean {\n return this.value === this.max;\n }\n\n protected get collapseVisible(): boolean {\n return this.value > this.min;\n }\n\n protected onModelChange(value: number): void {\n const clamped = tuiClamp(value, this.min, this.max);\n\n if (clamped === this.value) {\n return;\n }\n\n this.value = clamped;\n this.valueChange.emit(clamped);\n }\n\n protected onReset(): void {\n this.reset.emit();\n }\n\n protected onMinus(): void {\n this.onModelChange(this.value - STEP);\n }\n\n protected onPlus(): void {\n this.onModelChange(this.value < 1 ? 1 : this.value + STEP);\n }\n}\n","<ng-container *ngIf=\"zoomTexts$ | async as texts\">\n <section class=\"t-zoom\">\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_minus\"\n [disabled]=\"leftButtonDisabled\"\n [iconStart]=\"icons.zoomOut\"\n (click)=\"onMinus()\"\n >\n {{ texts.zoomOut }}\n </button>\n <label tuiSliderThumbLabel>\n <div\n tuiHintAppearance=\"dark\"\n tuiHintDirection=\"top-right\"\n [tuiHint]=\"hint\"\n [tuiHintManual]=\"!!(hintShow$ | async)\"\n ></div>\n\n <ng-template #hint>\n {{ (valueChange | async) || value | percent }}\n </ng-template>\n\n <input\n step=\"any\"\n tuiSlider\n tuiTheme=\"dark\"\n type=\"range\"\n class=\"t-slider\"\n [max]=\"max\"\n [min]=\"min\"\n [ngModel]=\"value\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onModelChange($event)\"\n />\n </label>\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_plus\"\n [disabled]=\"rightButtonDisabled\"\n [iconStart]=\"icons.zoomIn\"\n (click)=\"onPlus()\"\n >\n {{ texts.zoomIn }}\n </button>\n </section>\n\n <button\n tuiHintAppearance=\"dark\"\n tuiHintDescribe\n tuiHintDirection=\"top-right\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-reset-button\"\n [class.t-invisible]=\"!collapseVisible\"\n [iconStart]=\"icons.zoomReset\"\n [tuiHint]=\"texts.reset\"\n (click)=\"onReset()\"\n ></button>\n</ng-container>\n","import {AsyncPipe, NgIf} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, inject, Input} from '@angular/core';\nimport {WaMutationObserver} from '@ng-web-apis/mutation-observer';\nimport {WaResizeObserver} from '@ng-web-apis/resize-observer';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {TuiPan} from '@taiga-ui/cdk/directives/pan';\nimport type {TuiZoomEvent} from '@taiga-ui/cdk/directives/zoom';\nimport {TuiZoom} from '@taiga-ui/cdk/directives/zoom';\nimport {tuiDragAndDropFrom, tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp, tuiRound} from '@taiga-ui/cdk/utils/math';\nimport {tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiSlideInTop} from '@taiga-ui/core/animations';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiHint} from '@taiga-ui/core/directives/hint';\nimport {TUI_PREVIEW_ICONS, TUI_PREVIEW_TEXTS} from '@taiga-ui/kit/tokens';\nimport {BehaviorSubject, combineLatest, map, merge, startWith} from 'rxjs';\n\nimport {TuiPreviewAction} from './preview-action/preview-action.directive';\nimport {TuiPreviewZoom} from './zoom/preview-zoom.component';\n\nconst INITIAL_SCALE_COEF = 0.8;\nconst EMPTY_COORDINATES: [number, number] = [0, 0];\nconst ROTATION_ANGLE = 90;\n\n@Component({\n standalone: true,\n selector: 'tui-preview',\n imports: [\n TuiZoom,\n WaMutationObserver,\n WaResizeObserver,\n NgIf,\n AsyncPipe,\n TuiPan,\n TuiButton,\n TuiHint,\n TuiPreviewAction,\n TuiPreviewZoom,\n ],\n templateUrl: './preview.template.html',\n styleUrls: ['./preview.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [tuiSlideInTop],\n})\nexport class TuiPreviewComponent {\n private readonly el = tuiInjectElement();\n\n protected minZoom = 1;\n protected width = 0;\n protected height = 0;\n protected readonly texts$ = inject(TUI_PREVIEW_TEXTS);\n protected readonly icons = inject(TUI_PREVIEW_ICONS);\n protected readonly zoom$ = new BehaviorSubject<number>(this.minZoom);\n protected readonly rotation$ = new BehaviorSubject<number>(0);\n protected readonly coordinates$ = new BehaviorSubject<readonly [number, number]>(\n EMPTY_COORDINATES,\n );\n\n protected readonly transitioned$ = merge(\n tuiDragAndDropFrom(this.el).pipe(map(({stage}) => stage !== 'continues')),\n tuiTypedFromEvent(this.el, 'touchmove', {\n passive: true,\n }).pipe(map(TUI_FALSE_HANDLER)),\n tuiTypedFromEvent(this.el, 'wheel', {passive: true}).pipe(map(TUI_FALSE_HANDLER)),\n );\n\n protected readonly cursor$ = tuiDragAndDropFrom(this.el).pipe(\n map(({stage}) => (stage === 'continues' ? 'grabbing' : 'initial')),\n startWith('initial'),\n );\n\n protected readonly wrapperTransform$ = combineLatest([\n this.coordinates$.pipe(map(([x, y]) => `${tuiPx(x)}, ${tuiPx(y)}`)),\n this.zoom$,\n this.rotation$,\n ]).pipe(\n map(\n ([translate, zoom, rotation]) =>\n `translate(${translate}) scale(${zoom}) rotate(${rotation}deg)`,\n ),\n );\n\n @Input()\n public zoomable = true;\n\n @Input()\n public rotatable = false;\n\n protected rotate(): void {\n this.rotation$.next(this.rotation$.value - ROTATION_ANGLE);\n }\n\n protected onPan(delta: readonly [number, number]): void {\n this.coordinates$.next(\n this.getGuardedCoordinates(\n this.coordinates$.value[0] + delta[0],\n this.coordinates$.value[1] + delta[1],\n ),\n );\n }\n\n protected onMutation(contentWrapper: HTMLElement): void {\n const {clientWidth, clientHeight} = contentWrapper;\n\n this.refresh(clientWidth, clientHeight);\n }\n\n protected onZoom({clientX, clientY, delta}: TuiZoomEvent): void {\n if (this.zoomable) {\n this.processZoom(clientX, clientY, delta);\n }\n }\n\n protected onResize([entry]: readonly ResizeObserverEntry[]): void {\n if (entry?.contentRect) {\n this.refresh(entry.contentRect.width, entry.contentRect.height);\n }\n }\n\n protected reset(): void {\n this.zoom$.next(this.minZoom);\n this.coordinates$.next(EMPTY_COORDINATES);\n }\n\n protected setZoom(zoom: number): void {\n this.zoom$.next(zoom);\n const [x, y] = this.coordinates$.value;\n\n this.coordinates$.next(this.getGuardedCoordinates(x, y));\n }\n\n private get offsets(): {offsetX: number; offsetY: number} {\n const offsetX = ((this.zoom$.value - this.minZoom) * this.width) / 2;\n const offsetY = ((this.zoom$.value - this.minZoom) * this.height) / 2;\n\n return {offsetX, offsetY};\n }\n\n private calculateMinZoom(\n contentHeight: number,\n contentWidth: number,\n boxHeight: number,\n boxWidth: number,\n ): number {\n const bigSize =\n contentHeight > boxHeight * INITIAL_SCALE_COEF ||\n contentWidth > boxWidth * INITIAL_SCALE_COEF;\n const {clientHeight, clientWidth} = this.el;\n\n return bigSize\n ? tuiRound(\n Math.min(\n (clientHeight * INITIAL_SCALE_COEF) / contentHeight,\n (clientWidth * INITIAL_SCALE_COEF) / contentWidth,\n ),\n 2,\n )\n : 1;\n }\n\n private refresh(width: number, height: number): void {\n this.width = width;\n this.height = height;\n this.minZoom = this.calculateMinZoom(\n height,\n width,\n this.el.clientHeight,\n this.el.clientWidth,\n );\n this.zoom$.next(this.minZoom);\n this.coordinates$.next(EMPTY_COORDINATES);\n this.rotation$.next(0);\n }\n\n private processZoom(clientX: number, clientY: number, delta: number): void {\n const oldScale = this.zoom$.value;\n const newScale = tuiClamp(oldScale + delta, this.minZoom, 2);\n\n const center = this.getScaleCenter(\n {clientX, clientY},\n this.coordinates$.value,\n this.zoom$.value,\n );\n\n const moveX = center[0] * oldScale - center[0] * newScale;\n const moveY = center[1] * oldScale - center[1] * newScale;\n\n this.zoom$.next(newScale);\n this.coordinates$.next(\n this.getGuardedCoordinates(\n this.coordinates$.value[0] + moveX,\n this.coordinates$.value[1] + moveY,\n ),\n );\n }\n\n private getGuardedCoordinates(x: number, y: number): readonly [number, number] {\n const {offsetX, offsetY} = this.offsets;\n\n return [tuiClamp(x, -offsetX, offsetX), tuiClamp(y, -offsetY, offsetY)];\n }\n\n private getScaleCenter(\n {clientX, clientY}: {clientX: number; clientY: number},\n [x, y]: readonly [number, number],\n scale: number,\n ): [number, number] {\n return [\n (clientX - x - this.el.offsetWidth / 2) / scale,\n (clientY - y - this.el.offsetHeight / 2) / scale,\n ];\n }\n}\n","<ng-container *ngIf=\"texts$ | async as texts\">\n <section\n #contentWrapper\n attributeFilter=\"src\"\n characterData\n childList\n subtree\n class=\"t-wrapper\"\n [class.t-not-interactive-content]=\"zoomable\"\n [class.t-transitive]=\"transitioned$ | async\"\n [style.cursor]=\"cursor$ | async\"\n [style.transform]=\"wrapperTransform$ | async\"\n (tuiPan)=\"onPan($event)\"\n (tuiZoom)=\"onZoom($event)\"\n (waMutationObserver)=\"onMutation(contentWrapper)\"\n (waResizeObserver)=\"onResize($event)\"\n >\n <ng-content />\n </section>\n\n <header class=\"t-header\">\n <div class=\"t-title\">\n <ng-content select=\"tui-preview-title\" />\n </div>\n\n <ng-content select=\"tui-preview-pagination\" />\n\n <div class=\"t-actions\">\n <ng-content select=\"[tuiPreviewAction]\" />\n </div>\n </header>\n\n <footer class=\"t-footer\">\n <button\n *ngIf=\"rotatable\"\n tuiHintAppearance=\"dark\"\n tuiHintDescribe\n tuiHintDirection=\"top-right\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-rotate-button\"\n [iconStart]=\"icons.rotate\"\n [tuiHint]=\"texts.rotate\"\n (click)=\"rotate()\"\n ></button>\n\n <tui-preview-zoom\n *ngIf=\"zoomable\"\n [min]=\"minZoom\"\n [value]=\"(zoom$ | async) || 1\"\n (reset)=\"reset()\"\n (valueChange)=\"setZoom($event)\"\n />\n </footer>\n</ng-container>\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\n@Component({\n standalone: true,\n selector: 'tui-preview-title',\n template: `\n <ng-content></ng-content>\n `,\n styleUrls: ['./preview-title.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiPreviewTitle {}\n","import {TuiPreviewPagination} from './pagination/preview-pagination.component';\nimport {TuiPreviewComponent} from './preview.component';\nimport {TuiPreviewAction} from './preview-action/preview-action.directive';\nimport {TuiPreviewTitle} from './title/preview-title.component';\nimport {TuiPreviewZoom} from './zoom/preview-zoom.component';\n\nexport const TuiPreview = [\n TuiPreviewComponent,\n TuiPreviewTitle,\n TuiPreviewPagination,\n TuiPreviewAction,\n TuiPreviewZoom,\n] as const;\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport type {TuiPopover} from '@taiga-ui/cdk/services';\nimport {tuiFadeIn, tuiSlideInTop} from '@taiga-ui/core/animations';\nimport {TUI_ANIMATIONS_SPEED} from '@taiga-ui/core/tokens';\nimport {tuiGetDuration} from '@taiga-ui/core/utils/miscellaneous';\nimport {\n POLYMORPHEUS_CONTEXT,\n PolymorpheusOutlet,\n PolymorpheusTemplate,\n} from '@taiga-ui/polymorpheus';\n\n@Component({\n standalone: true,\n selector: 'tui-preview-dialog',\n imports: [PolymorpheusOutlet, PolymorpheusTemplate],\n template: `\n <ng-container *polymorpheusOutlet=\"context.content as text; context: context\">\n {{ text }}\n </ng-container>\n `,\n styleUrls: ['./preview-dialog.style.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [tuiSlideInTop, tuiFadeIn],\n host: {\n '(document:keydown.esc)': 'context.$implicit.complete()',\n '[@tuiSlideInTop]': 'animation',\n '[@tuiFadeIn]': 'animation',\n },\n})\nexport class TuiPreviewDialog {\n protected readonly context = inject<TuiPopover<void, void>>(POLYMORPHEUS_CONTEXT);\n protected readonly animation = {\n value: '',\n params: {\n start: '100vh',\n duration: tuiGetDuration(inject(TUI_ANIMATIONS_SPEED)),\n },\n };\n}\n","import {Injectable} from '@angular/core';\nimport {TuiPopoverService} from '@taiga-ui/cdk/services';\nimport {TUI_DIALOGS} from '@taiga-ui/core/components/dialog';\n\nimport {TuiPreviewDialog} from './preview-dialog.component';\n\n@Injectable({\n providedIn: 'root',\n useFactory: () => new TuiPreviewDialogService(TUI_DIALOGS, TuiPreviewDialog),\n})\nexport class TuiPreviewDialogService extends TuiPopoverService<unknown> {}\n","import {Directive} from '@angular/core';\nimport {TuiPopoverDirective} from '@taiga-ui/cdk/directives/popover';\nimport {tuiAsPopover} from '@taiga-ui/cdk/services';\n\nimport {TuiPreviewDialogService} from './preview-dialog.service';\n\n@Directive({\n standalone: true,\n selector: 'ng-template[tuiPreviewDialog]',\n inputs: ['open: tuiPreviewDialog'],\n outputs: ['openChange: tuiPreviewDialogChange'],\n providers: [tuiAsPopover(TuiPreviewDialogService)],\n})\nexport class TuiPreviewDialogDirective extends TuiPopoverDirective<unknown> {}\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-kit-components-preview.mjs","sources":["../../../projects/kit/components/preview/preview-action/preview-action.directive.ts","../../../projects/kit/components/preview/pagination/preview-pagination.component.ts","../../../projects/kit/components/preview/pagination/preview-pagination.template.html","../../../projects/kit/components/preview/zoom/preview-zoom.component.ts","../../../projects/kit/components/preview/zoom/preview-zoom.template.html","../../../projects/kit/components/preview/preview.component.ts","../../../projects/kit/components/preview/preview.template.html","../../../projects/kit/components/preview/title/preview-title.component.ts","../../../projects/kit/components/preview/preview.ts","../../../projects/kit/components/preview/preview-dialog/preview-dialog.component.ts","../../../projects/kit/components/preview/preview-dialog/preview-dialog.service.ts","../../../projects/kit/components/preview/preview-dialog/preview-dialog.directive.ts","../../../projects/kit/components/preview/taiga-ui-kit-components-preview.ts"],"sourcesContent":["import {Directive} from '@angular/core';\nimport {tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\n\n@Directive({\n standalone: true,\n selector: '[tuiPreviewAction]',\n providers: [\n tuiButtonOptionsProvider({\n appearance: 'preview-action',\n size: 's',\n }),\n ],\n host: {\n '[style.border-radius.rem]': '100',\n },\n})\nexport class TuiPreviewAction {}\n","import {AsyncPipe, NgIf} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n} from '@angular/core';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TUI_PAGINATION_TEXTS, TUI_PREVIEW_ICONS} from '@taiga-ui/kit/tokens';\n\nimport {TuiPreviewAction} from '../preview-action/preview-action.directive';\n\n@Component({\n standalone: true,\n selector: 'tui-preview-pagination',\n imports: [AsyncPipe, NgIf, TuiButton, TuiPreviewAction],\n templateUrl: './preview-pagination.template.html',\n styleUrls: ['./preview-pagination.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:keydown.arrowRight.prevent)': 'onArrowClick(1)',\n '(document:keydown.arrowLeft.prevent)': 'onArrowClick(-1)',\n },\n})\nexport class TuiPreviewPagination {\n protected readonly icons = inject(TUI_PREVIEW_ICONS);\n protected readonly texts$ = inject(TUI_PAGINATION_TEXTS);\n\n @Input()\n public length = 1;\n\n @Input()\n public index = 0;\n\n @Output()\n public readonly indexChange = new EventEmitter<number>();\n\n public onArrowClick(step: number): void {\n this.updateIndex(tuiClamp(this.index + step, 0, this.length - 1));\n }\n\n protected get leftButtonDisabled(): boolean {\n return this.index === 0;\n }\n\n protected get rightButtonDisabled(): boolean {\n return this.index === this.length - 1;\n }\n\n private updateIndex(index: number): void {\n if (this.index === index) {\n return;\n }\n\n this.index = index;\n this.indexChange.emit(index);\n }\n}\n","<ng-container *ngIf=\"texts$ | async as texts\">\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-arrow_left\"\n [disabled]=\"leftButtonDisabled\"\n [iconStart]=\"icons.prev\"\n (click)=\"onArrowClick(-1)\"\n >\n {{ texts[0] }}\n </button>\n {{ index + 1 }}/{{ length }}\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-arrow_right\"\n [disabled]=\"rightButtonDisabled\"\n [iconStart]=\"icons.next\"\n (click)=\"onArrowClick(1)\"\n >\n {{ texts[1] }}\n </button>\n</ng-container>\n","import {AsyncPipe, NgIf, PercentPipe} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiHint} from '@taiga-ui/core/directives/hint';\nimport {TuiSlider} from '@taiga-ui/kit/components/slider';\nimport {TUI_PREVIEW_ICONS, TUI_PREVIEW_ZOOM_TEXTS} from '@taiga-ui/kit/tokens';\nimport {map, merge, of, startWith, switchMap, timer} from 'rxjs';\n\nimport {TuiPreviewAction} from '../preview-action/preview-action.directive';\n\nconst STEP = 0.5;\n\n@Component({\n standalone: true,\n selector: 'tui-preview-zoom',\n imports: [\n AsyncPipe,\n FormsModule,\n NgIf,\n PercentPipe,\n TuiButton,\n TuiHint,\n TuiPreviewAction,\n TuiSlider,\n ],\n templateUrl: './preview-zoom.template.html',\n styleUrls: ['./preview-zoom.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiPreviewZoom {\n protected readonly icons = inject(TUI_PREVIEW_ICONS);\n protected readonly zoomTexts$ = inject(TUI_PREVIEW_ZOOM_TEXTS);\n\n @Input()\n public min = 0.5;\n\n @Input()\n public max = 2;\n\n @Input()\n public value = 1;\n\n @Output()\n public readonly valueChange = new EventEmitter<number>();\n\n @Output()\n public readonly reset = new EventEmitter<void>();\n\n public readonly hintShow$ = this.valueChange.pipe(\n switchMap(() => merge(of(true), timer(1000).pipe(map(TUI_FALSE_HANDLER)))),\n startWith(false),\n );\n\n protected get leftButtonDisabled(): boolean {\n return this.value === this.min;\n }\n\n protected get rightButtonDisabled(): boolean {\n return this.value === this.max;\n }\n\n protected get collapseVisible(): boolean {\n return this.value > this.min;\n }\n\n protected onModelChange(value: number): void {\n const clamped = tuiClamp(value, this.min, this.max);\n\n if (clamped === this.value) {\n return;\n }\n\n this.value = clamped;\n this.valueChange.emit(clamped);\n }\n\n protected onReset(): void {\n this.reset.emit();\n }\n\n protected onMinus(): void {\n this.onModelChange(this.value - STEP);\n }\n\n protected onPlus(): void {\n this.onModelChange(this.value < 1 ? 1 : this.value + STEP);\n }\n}\n","<ng-container *ngIf=\"zoomTexts$ | async as texts\">\n <section class=\"t-zoom\">\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_minus\"\n [disabled]=\"leftButtonDisabled\"\n [iconStart]=\"icons.zoomOut\"\n (click)=\"onMinus()\"\n >\n {{ texts.zoomOut }}\n </button>\n <label tuiSliderThumbLabel>\n <div\n tuiHintAppearance=\"dark\"\n tuiHintDirection=\"top-right\"\n [tuiHint]=\"hint\"\n [tuiHintManual]=\"!!(hintShow$ | async)\"\n ></div>\n\n <ng-template #hint>\n {{ (valueChange | async) || value | percent }}\n </ng-template>\n\n <input\n step=\"any\"\n tuiSlider\n tuiTheme=\"dark\"\n type=\"range\"\n class=\"t-slider\"\n [max]=\"max\"\n [min]=\"min\"\n [ngModel]=\"value\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onModelChange($event)\"\n />\n </label>\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_plus\"\n [disabled]=\"rightButtonDisabled\"\n [iconStart]=\"icons.zoomIn\"\n (click)=\"onPlus()\"\n >\n {{ texts.zoomIn }}\n </button>\n </section>\n\n <button\n tuiHintAppearance=\"dark\"\n tuiHintDescribe\n tuiHintDirection=\"top-right\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-reset-button\"\n [class.t-invisible]=\"!collapseVisible\"\n [iconStart]=\"icons.zoomReset\"\n [tuiHint]=\"texts.reset\"\n (click)=\"onReset()\"\n ></button>\n</ng-container>\n","import {AsyncPipe, NgIf} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n Input,\n} from '@angular/core';\nimport {WaMutationObserver} from '@ng-web-apis/mutation-observer';\nimport {WaResizeObserver} from '@ng-web-apis/resize-observer';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {TuiPan} from '@taiga-ui/cdk/directives/pan';\nimport type {TuiZoomEvent} from '@taiga-ui/cdk/directives/zoom';\nimport {TuiZoom} from '@taiga-ui/cdk/directives/zoom';\nimport {tuiDragAndDropFrom, tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp, tuiRound} from '@taiga-ui/cdk/utils/math';\nimport {tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiSlideInTop} from '@taiga-ui/core/animations';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiHint} from '@taiga-ui/core/directives/hint';\nimport {TUI_PREVIEW_ICONS, TUI_PREVIEW_TEXTS} from '@taiga-ui/kit/tokens';\nimport {BehaviorSubject, combineLatest, map, merge, startWith} from 'rxjs';\n\nimport {TuiPreviewAction} from './preview-action/preview-action.directive';\nimport {TuiPreviewZoom} from './zoom/preview-zoom.component';\n\nconst INITIAL_SCALE_COEF = 0.8;\nconst EMPTY_COORDINATES: [number, number] = [0, 0];\nconst ROTATION_ANGLE = 90;\n\n@Component({\n standalone: true,\n selector: 'tui-preview',\n imports: [\n AsyncPipe,\n NgIf,\n TuiButton,\n TuiHint,\n TuiPan,\n TuiPreviewAction,\n TuiPreviewZoom,\n TuiZoom,\n WaMutationObserver,\n WaResizeObserver,\n ],\n templateUrl: './preview.template.html',\n styleUrls: ['./preview.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [tuiSlideInTop],\n})\nexport class TuiPreviewComponent {\n private readonly el = tuiInjectElement();\n\n protected minZoom = 1;\n protected width = 0;\n protected height = 0;\n protected readonly texts$ = inject(TUI_PREVIEW_TEXTS);\n protected readonly icons = inject(TUI_PREVIEW_ICONS);\n protected readonly cdr = inject(ChangeDetectorRef);\n protected readonly zoom$ = new BehaviorSubject<number>(this.minZoom);\n protected readonly rotation$ = new BehaviorSubject<number>(0);\n protected readonly coordinates$ = new BehaviorSubject<readonly [number, number]>(\n EMPTY_COORDINATES,\n );\n\n protected readonly transitioned$ = merge(\n tuiDragAndDropFrom(this.el).pipe(map(({stage}) => stage !== 'continues')),\n tuiTypedFromEvent(this.el, 'touchmove', {\n passive: true,\n }).pipe(map(TUI_FALSE_HANDLER)),\n tuiTypedFromEvent(this.el, 'wheel', {passive: true}).pipe(map(TUI_FALSE_HANDLER)),\n );\n\n protected readonly cursor$ = tuiDragAndDropFrom(this.el).pipe(\n map(({stage}) => (stage === 'continues' ? 'grabbing' : 'initial')),\n startWith('initial'),\n );\n\n protected readonly wrapperTransform$ = combineLatest([\n this.coordinates$.pipe(map(([x, y]) => `${tuiPx(x)}, ${tuiPx(y)}`)),\n this.zoom$,\n this.rotation$,\n ]).pipe(\n map(\n ([translate, zoom, rotation]) =>\n `translate(${translate}) scale(${zoom}) rotate(${rotation}deg)`,\n ),\n );\n\n @Input()\n public zoomable = true;\n\n @Input()\n public rotatable = false;\n\n protected rotate(): void {\n this.rotation$.next(this.rotation$.value - ROTATION_ANGLE);\n }\n\n protected onPan(delta: readonly [number, number]): void {\n this.coordinates$.next(\n this.getGuardedCoordinates(\n this.coordinates$.value[0] + delta[0],\n this.coordinates$.value[1] + delta[1],\n ),\n );\n }\n\n protected onMutation(contentWrapper: HTMLElement): void {\n const {clientWidth, clientHeight} = contentWrapper;\n\n this.refresh(clientWidth, clientHeight);\n }\n\n protected onZoom({clientX, clientY, delta}: TuiZoomEvent): void {\n if (this.zoomable) {\n this.processZoom(clientX, clientY, delta);\n }\n }\n\n protected onResize([entry]: readonly ResizeObserverEntry[]): void {\n if (entry?.contentRect) {\n this.refresh(entry.contentRect.width, entry.contentRect.height);\n this.cdr.detectChanges();\n }\n }\n\n protected reset(): void {\n this.zoom$.next(this.minZoom);\n this.coordinates$.next(EMPTY_COORDINATES);\n }\n\n protected setZoom(zoom: number): void {\n this.zoom$.next(zoom);\n const [x, y] = this.coordinates$.value;\n\n this.coordinates$.next(this.getGuardedCoordinates(x, y));\n }\n\n private get offsets(): {offsetX: number; offsetY: number} {\n const offsetX = ((this.zoom$.value - this.minZoom) * this.width) / 2;\n const offsetY = ((this.zoom$.value - this.minZoom) * this.height) / 2;\n\n return {offsetX, offsetY};\n }\n\n private calculateMinZoom(\n contentHeight: number,\n contentWidth: number,\n boxHeight: number,\n boxWidth: number,\n ): number {\n const bigSize =\n contentHeight > boxHeight * INITIAL_SCALE_COEF ||\n contentWidth > boxWidth * INITIAL_SCALE_COEF;\n const {clientHeight, clientWidth} = this.el;\n\n return bigSize\n ? tuiRound(\n Math.min(\n (clientHeight * INITIAL_SCALE_COEF) / contentHeight,\n (clientWidth * INITIAL_SCALE_COEF) / contentWidth,\n ),\n 2,\n )\n : 1;\n }\n\n private refresh(width: number, height: number): void {\n this.width = width;\n this.height = height;\n this.minZoom = this.calculateMinZoom(\n height,\n width,\n this.el.clientHeight,\n this.el.clientWidth,\n );\n this.zoom$.next(this.minZoom);\n this.coordinates$.next(EMPTY_COORDINATES);\n this.rotation$.next(0);\n }\n\n private processZoom(clientX: number, clientY: number, delta: number): void {\n const oldScale = this.zoom$.value;\n const newScale = tuiClamp(oldScale + delta, this.minZoom, 2);\n\n const center = this.getScaleCenter(\n {clientX, clientY},\n this.coordinates$.value,\n this.zoom$.value,\n );\n\n const moveX = center[0] * oldScale - center[0] * newScale;\n const moveY = center[1] * oldScale - center[1] * newScale;\n\n this.zoom$.next(newScale);\n this.coordinates$.next(\n this.getGuardedCoordinates(\n this.coordinates$.value[0] + moveX,\n this.coordinates$.value[1] + moveY,\n ),\n );\n }\n\n private getGuardedCoordinates(x: number, y: number): readonly [number, number] {\n const {offsetX, offsetY} = this.offsets;\n\n return [tuiClamp(x, -offsetX, offsetX), tuiClamp(y, -offsetY, offsetY)];\n }\n\n private getScaleCenter(\n {clientX, clientY}: {clientX: number; clientY: number},\n [x, y]: readonly [number, number],\n scale: number,\n ): [number, number] {\n return [\n (clientX - x - this.el.offsetWidth / 2) / scale,\n (clientY - y - this.el.offsetHeight / 2) / scale,\n ];\n }\n}\n","<ng-container *ngIf=\"texts$ | async as texts\">\n <section\n #contentWrapper\n attributeFilter=\"src\"\n characterData\n childList\n subtree\n class=\"t-wrapper\"\n [class.t-not-interactive-content]=\"zoomable\"\n [class.t-transitive]=\"transitioned$ | async\"\n [style.cursor]=\"cursor$ | async\"\n [style.transform]=\"wrapperTransform$ | async\"\n (tuiPan)=\"onPan($event)\"\n (tuiZoom)=\"onZoom($event)\"\n (waMutationObserver)=\"onMutation(contentWrapper)\"\n (waResizeObserver)=\"onResize($event)\"\n >\n <ng-content />\n </section>\n\n <header class=\"t-header\">\n <div class=\"t-title\">\n <ng-content select=\"tui-preview-title\" />\n </div>\n\n <ng-content select=\"tui-preview-pagination\" />\n\n <div class=\"t-actions\">\n <ng-content select=\"[tuiPreviewAction]\" />\n </div>\n </header>\n\n <footer class=\"t-footer\">\n <button\n *ngIf=\"rotatable\"\n tuiHintAppearance=\"dark\"\n tuiHintDescribe\n tuiHintDirection=\"top-right\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-rotate-button\"\n [iconStart]=\"icons.rotate\"\n [tuiHint]=\"texts.rotate\"\n (click)=\"rotate()\"\n ></button>\n\n <tui-preview-zoom\n *ngIf=\"zoomable\"\n [min]=\"minZoom\"\n [value]=\"(zoom$ | async) || 1\"\n (reset)=\"reset()\"\n (valueChange)=\"setZoom($event)\"\n />\n </footer>\n</ng-container>\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\n@Component({\n standalone: true,\n selector: 'tui-preview-title',\n template: `\n <ng-content></ng-content>\n `,\n styleUrls: ['./preview-title.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiPreviewTitle {}\n","import {TuiPreviewPagination} from './pagination/preview-pagination.component';\nimport {TuiPreviewComponent} from './preview.component';\nimport {TuiPreviewAction} from './preview-action/preview-action.directive';\nimport {TuiPreviewTitle} from './title/preview-title.component';\nimport {TuiPreviewZoom} from './zoom/preview-zoom.component';\n\nexport const TuiPreview = [\n TuiPreviewComponent,\n TuiPreviewTitle,\n TuiPreviewPagination,\n TuiPreviewAction,\n TuiPreviewZoom,\n] as const;\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport type {TuiPopover} from '@taiga-ui/cdk/services';\nimport {tuiFadeIn, tuiSlideInTop} from '@taiga-ui/core/animations';\nimport {TUI_ANIMATIONS_SPEED} from '@taiga-ui/core/tokens';\nimport {tuiGetDuration} from '@taiga-ui/core/utils/miscellaneous';\nimport {\n injectContext,\n PolymorpheusOutlet,\n PolymorpheusTemplate,\n} from '@taiga-ui/polymorpheus';\n\n@Component({\n standalone: true,\n selector: 'tui-preview-dialog',\n imports: [PolymorpheusOutlet, PolymorpheusTemplate],\n template: `\n <ng-container *polymorpheusOutlet=\"context.content as text; context: context\">\n {{ text }}\n </ng-container>\n `,\n styleUrls: ['./preview-dialog.style.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [tuiSlideInTop, tuiFadeIn],\n host: {\n '(document:keydown.esc)': 'context.$implicit.complete()',\n '[@tuiSlideInTop]': 'animation',\n '[@tuiFadeIn]': 'animation',\n },\n})\nexport class TuiPreviewDialog {\n protected readonly context = injectContext<TuiPopover<void, void>>();\n protected readonly animation = {\n value: '',\n params: {\n start: '100vh',\n duration: tuiGetDuration(inject(TUI_ANIMATIONS_SPEED)),\n },\n };\n}\n","import {Injectable} from '@angular/core';\nimport {TuiPopoverService} from '@taiga-ui/cdk/services';\nimport {TUI_DIALOGS} from '@taiga-ui/core/components/dialog';\n\nimport {TuiPreviewDialog} from './preview-dialog.component';\n\n@Injectable({\n providedIn: 'root',\n useFactory: () => new TuiPreviewDialogService(TUI_DIALOGS, TuiPreviewDialog),\n})\nexport class TuiPreviewDialogService extends TuiPopoverService<unknown> {}\n","import {Directive} from '@angular/core';\nimport {TuiPopoverDirective} from '@taiga-ui/cdk/directives/popover';\nimport {tuiAsPopover} from '@taiga-ui/cdk/services';\n\nimport {TuiPreviewDialogService} from './preview-dialog.service';\n\n@Directive({\n standalone: true,\n selector: 'ng-template[tuiPreviewDialog]',\n inputs: ['open: tuiPreviewDialog'],\n outputs: ['openChange: tuiPreviewDialogChange'],\n providers: [tuiAsPopover(TuiPreviewDialogService)],\n})\nexport class TuiPreviewDialogDirective extends TuiPopoverDirective<unknown> {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { NgIf, AsyncPipe } from '@angular/common';
1
+ import { AsyncPipe, NgIf } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
3
  import { inject, EventEmitter, Component, ChangeDetectionStrategy, Input, Output, Injectable, TemplateRef, ChangeDetectorRef, forwardRef, Directive } from '@angular/core';
4
4
  import { tuiIsString, tuiCreateToken, tuiProvideOptions } from '@taiga-ui/cdk/utils/miscellaneous';
@@ -7,7 +7,7 @@ import { TuiFormatDatePipe } from '@taiga-ui/core/pipes/format-date';
7
7
  import { TUI_CLOSE_WORD, TUI_COMMON_ICONS, TUI_ANIMATIONS_SPEED } from '@taiga-ui/core/tokens';
8
8
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
9
9
  import { tuiIfMap } from '@taiga-ui/cdk/observables';
10
- import { POLYMORPHEUS_CONTEXT, PolymorpheusOutlet, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';
10
+ import { injectContext, PolymorpheusOutlet, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';
11
11
  import { Subject } from 'rxjs';
12
12
  import { TuiPopoverService } from '@taiga-ui/cdk/services';
13
13
  import { TUI_ALERTS } from '@taiga-ui/core/components/alert';
@@ -27,11 +27,11 @@ class TuiPushComponent {
27
27
  this.close = new EventEmitter();
28
28
  }
29
29
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPushComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiPushComponent, isStandalone: true, selector: "tui-push", inputs: { heading: "heading", type: "type", timestamp: "timestamp" }, outputs: { close: "close" }, providers: [tuiButtonOptionsProvider({ size: 's', appearance: 'secondary' })], ngImport: i0, template: "<div class=\"t-image\">\n <ng-content select=\"img\" />\n</div>\n<button\n *ngIf=\"close.observed\"\n appearance=\"\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-close\"\n [iconStart]=\"icons.close\"\n [style.border-radius.%]=\"100\"\n (click)=\"close.emit()\"\n>\n {{ closeWord$ | async }}\n</button>\n<div class=\"t-top\">\n <span class=\"t-icon\">\n <ng-content select=\"tui-svg,tui-icon\" />\n </span>\n {{ type }}\n <span\n *ngIf=\"timestamp\"\n class=\"t-time\"\n [textContent]=\"isString(timestamp) ? timestamp : (timestamp | tuiFormatDate | async)\"\n ></span>\n</div>\n<h3\n automation-id=\"tui-push__heading\"\n class=\"t-heading\"\n>\n {{ heading }}\n</h3>\n<div class=\"t-content\">\n <ng-content />\n</div>\n<div class=\"t-actions\">\n <span class=\"t-button\">\n <ng-content select=\"[tuiButton]\" />\n </span>\n <span class=\"t-link\">\n <ng-content select=\"[tuiLink]\" />\n </span>\n</div>\n", styles: [":host{position:relative;display:block;inline-size:22.5rem;max-inline-size:100%;box-sizing:border-box;padding:1.25rem 1.25rem .25rem;overflow:hidden;font:var(--tui-font-text-m);border-radius:var(--tui-radius-xl);background:var(--tui-background-elevation-2);box-shadow:var(--tui-shadow-small)}.t-image{display:flex;flex-direction:column;max-block-size:10.625rem;overflow:hidden;margin:-1.25rem -1.25rem 1.25rem}.t-close{position:absolute;top:.75rem;right:.75rem;color:#0000008a;background:#f2f2f252;-webkit-backdrop-filter:blur(1rem);backdrop-filter:blur(1rem)}.t-top{display:flex;align-items:center;font:var(--tui-font-text-s);color:var(--tui-text-secondary)}.t-icon{block-size:1.25rem;margin-right:.5rem;transform:scale(.833);transform-origin:top left;color:var(--tui-text-action)}.t-time:before{content:\"\\2022\";display:inline-block;inline-size:1rem;text-align:center}.t-heading{line-height:1.25rem;font-weight:700;margin:.75rem 0 .25rem}.t-heading,.t-content{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;word-break:break-word;overflow:hidden}.t-actions{display:flex;align-items:center;font:var(--tui-font-text-s)}.t-button:not(:empty){margin:.75rem .75rem .75rem 0}.t-link{margin:.75rem 0}.t-link:empty{margin:.5rem}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "pipe", type: TuiFormatDatePipe, name: "tuiFormatDate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiPushComponent, isStandalone: true, selector: "tui-push", inputs: { heading: "heading", type: "type", timestamp: "timestamp" }, outputs: { close: "close" }, providers: [tuiButtonOptionsProvider({ size: 's', appearance: 'secondary' })], ngImport: i0, template: "<div class=\"t-image\">\n <ng-content select=\"img\" />\n</div>\n<button\n *ngIf=\"close.observed\"\n appearance=\"\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-close\"\n [iconStart]=\"icons.close\"\n [style.border-radius.%]=\"100\"\n (click)=\"close.emit()\"\n>\n {{ closeWord$ | async }}\n</button>\n<div class=\"t-top\">\n <span class=\"t-icon\">\n <ng-content select=\"tui-svg,tui-icon\" />\n </span>\n {{ type }}\n <span\n *ngIf=\"timestamp\"\n class=\"t-time\"\n [textContent]=\"isString(timestamp) ? timestamp : (timestamp | tuiFormatDate | async)\"\n ></span>\n</div>\n<h3\n automation-id=\"tui-push__heading\"\n class=\"t-heading\"\n>\n {{ heading }}\n</h3>\n<div class=\"t-content\">\n <ng-content />\n</div>\n<div class=\"t-actions\">\n <span class=\"t-button\">\n <ng-content select=\"[tuiButton]\" />\n </span>\n <span class=\"t-link\">\n <ng-content select=\"[tuiLink]\" />\n </span>\n</div>\n", styles: [":host{position:relative;display:block;inline-size:22.5rem;max-inline-size:100%;box-sizing:border-box;padding:1.25rem 1.25rem .25rem;overflow:hidden;font:var(--tui-font-text-m);border-radius:var(--tui-radius-xl);background:var(--tui-background-elevation-3);box-shadow:var(--tui-shadow-small)}.t-image{display:flex;flex-direction:column;max-block-size:10.625rem;overflow:hidden;margin:-1.25rem -1.25rem 1.25rem}.t-close{position:absolute;top:.75rem;right:.75rem;color:#0000008a;background:#f2f2f252;-webkit-backdrop-filter:blur(1rem);backdrop-filter:blur(1rem)}.t-top{display:flex;align-items:center;font:var(--tui-font-text-s);color:var(--tui-text-secondary)}.t-icon{block-size:1.25rem;margin-right:.5rem;transform:scale(.833);transform-origin:top left;color:var(--tui-text-action)}.t-time:before{content:\"\\2022\";display:inline-block;inline-size:1rem;text-align:center}.t-heading{line-height:1.25rem;font-weight:700;margin:.75rem 0 .25rem}.t-heading,.t-content{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;word-break:break-word;overflow:hidden}.t-actions{display:flex;align-items:center;font:var(--tui-font-text-s)}.t-button:not(:empty){margin:.75rem .75rem .75rem 0}.t-link{margin:.75rem 0}.t-link:empty{margin:.5rem}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "pipe", type: TuiFormatDatePipe, name: "tuiFormatDate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31
31
  }
32
32
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPushComponent, decorators: [{
33
33
  type: Component,
34
- args: [{ standalone: true, selector: 'tui-push', imports: [NgIf, AsyncPipe, TuiButton, TuiFormatDatePipe], changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiButtonOptionsProvider({ size: 's', appearance: 'secondary' })], template: "<div class=\"t-image\">\n <ng-content select=\"img\" />\n</div>\n<button\n *ngIf=\"close.observed\"\n appearance=\"\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-close\"\n [iconStart]=\"icons.close\"\n [style.border-radius.%]=\"100\"\n (click)=\"close.emit()\"\n>\n {{ closeWord$ | async }}\n</button>\n<div class=\"t-top\">\n <span class=\"t-icon\">\n <ng-content select=\"tui-svg,tui-icon\" />\n </span>\n {{ type }}\n <span\n *ngIf=\"timestamp\"\n class=\"t-time\"\n [textContent]=\"isString(timestamp) ? timestamp : (timestamp | tuiFormatDate | async)\"\n ></span>\n</div>\n<h3\n automation-id=\"tui-push__heading\"\n class=\"t-heading\"\n>\n {{ heading }}\n</h3>\n<div class=\"t-content\">\n <ng-content />\n</div>\n<div class=\"t-actions\">\n <span class=\"t-button\">\n <ng-content select=\"[tuiButton]\" />\n </span>\n <span class=\"t-link\">\n <ng-content select=\"[tuiLink]\" />\n </span>\n</div>\n", styles: [":host{position:relative;display:block;inline-size:22.5rem;max-inline-size:100%;box-sizing:border-box;padding:1.25rem 1.25rem .25rem;overflow:hidden;font:var(--tui-font-text-m);border-radius:var(--tui-radius-xl);background:var(--tui-background-elevation-2);box-shadow:var(--tui-shadow-small)}.t-image{display:flex;flex-direction:column;max-block-size:10.625rem;overflow:hidden;margin:-1.25rem -1.25rem 1.25rem}.t-close{position:absolute;top:.75rem;right:.75rem;color:#0000008a;background:#f2f2f252;-webkit-backdrop-filter:blur(1rem);backdrop-filter:blur(1rem)}.t-top{display:flex;align-items:center;font:var(--tui-font-text-s);color:var(--tui-text-secondary)}.t-icon{block-size:1.25rem;margin-right:.5rem;transform:scale(.833);transform-origin:top left;color:var(--tui-text-action)}.t-time:before{content:\"\\2022\";display:inline-block;inline-size:1rem;text-align:center}.t-heading{line-height:1.25rem;font-weight:700;margin:.75rem 0 .25rem}.t-heading,.t-content{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;word-break:break-word;overflow:hidden}.t-actions{display:flex;align-items:center;font:var(--tui-font-text-s)}.t-button:not(:empty){margin:.75rem .75rem .75rem 0}.t-link{margin:.75rem 0}.t-link:empty{margin:.5rem}\n"] }]
34
+ args: [{ standalone: true, selector: 'tui-push', imports: [AsyncPipe, NgIf, TuiButton, TuiFormatDatePipe], changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiButtonOptionsProvider({ size: 's', appearance: 'secondary' })], template: "<div class=\"t-image\">\n <ng-content select=\"img\" />\n</div>\n<button\n *ngIf=\"close.observed\"\n appearance=\"\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n class=\"t-close\"\n [iconStart]=\"icons.close\"\n [style.border-radius.%]=\"100\"\n (click)=\"close.emit()\"\n>\n {{ closeWord$ | async }}\n</button>\n<div class=\"t-top\">\n <span class=\"t-icon\">\n <ng-content select=\"tui-svg,tui-icon\" />\n </span>\n {{ type }}\n <span\n *ngIf=\"timestamp\"\n class=\"t-time\"\n [textContent]=\"isString(timestamp) ? timestamp : (timestamp | tuiFormatDate | async)\"\n ></span>\n</div>\n<h3\n automation-id=\"tui-push__heading\"\n class=\"t-heading\"\n>\n {{ heading }}\n</h3>\n<div class=\"t-content\">\n <ng-content />\n</div>\n<div class=\"t-actions\">\n <span class=\"t-button\">\n <ng-content select=\"[tuiButton]\" />\n </span>\n <span class=\"t-link\">\n <ng-content select=\"[tuiLink]\" />\n </span>\n</div>\n", styles: [":host{position:relative;display:block;inline-size:22.5rem;max-inline-size:100%;box-sizing:border-box;padding:1.25rem 1.25rem .25rem;overflow:hidden;font:var(--tui-font-text-m);border-radius:var(--tui-radius-xl);background:var(--tui-background-elevation-3);box-shadow:var(--tui-shadow-small)}.t-image{display:flex;flex-direction:column;max-block-size:10.625rem;overflow:hidden;margin:-1.25rem -1.25rem 1.25rem}.t-close{position:absolute;top:.75rem;right:.75rem;color:#0000008a;background:#f2f2f252;-webkit-backdrop-filter:blur(1rem);backdrop-filter:blur(1rem)}.t-top{display:flex;align-items:center;font:var(--tui-font-text-s);color:var(--tui-text-secondary)}.t-icon{block-size:1.25rem;margin-right:.5rem;transform:scale(.833);transform-origin:top left;color:var(--tui-text-action)}.t-time:before{content:\"\\2022\";display:inline-block;inline-size:1rem;text-align:center}.t-heading{line-height:1.25rem;font-weight:700;margin:.75rem 0 .25rem}.t-heading,.t-content{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;word-break:break-word;overflow:hidden}.t-actions{display:flex;align-items:center;font:var(--tui-font-text-s)}.t-button:not(:empty){margin:.75rem .75rem .75rem 0}.t-link{margin:.75rem 0}.t-link:empty{margin:.5rem}\n"] }]
35
35
  }], propDecorators: { heading: [{
36
36
  type: Input
37
37
  }], type: [{
@@ -62,13 +62,13 @@ function tuiPushOptionsProvider(options) {
62
62
  class TuiPushAlert {
63
63
  constructor() {
64
64
  this.options = tuiToAnimationOptions(inject(TUI_ANIMATIONS_SPEED));
65
- this.context = inject(POLYMORPHEUS_CONTEXT);
65
+ this.context = injectContext();
66
66
  }
67
67
  get isDirective() {
68
68
  return this.context.content instanceof TuiPushDirective;
69
69
  }
70
70
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPushAlert, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
71
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiPushAlert, isStandalone: true, selector: "ng-component", host: { attributes: { "role": "alert" }, properties: { "@tuiFadeIn": "options", "@tuiSlideInRight": "options", "@tuiHeightCollapse": "options" } }, ngImport: i0, template: "<tui-push\n *ngIf=\"!isDirective; else directive\"\n [heading]=\"context.heading\"\n [timestamp]=\"context.timestamp\"\n [type]=\"context.type\"\n (close)=\"context.$implicit.complete()\"\n>\n <img\n *ngIf=\"context.image\"\n alt=\"\"\n [src]=\"context.image\"\n />\n <tui-icon\n *ngIf=\"context.icon\"\n [icon]=\"context.icon\"\n [style.color]=\"context.iconColor\"\n />\n <div\n *polymorpheusOutlet=\"context.content as text; context: context\"\n [innerHTML]=\"text\"\n ></div>\n <button\n *ngIf=\"context.buttons.length > 1\"\n tuiButton\n type=\"button\"\n (click)=\"context.$implicit.next(context.buttons[0] || '')\"\n >\n {{ context.buttons[0] }}\n </button>\n <button\n *ngIf=\"context.buttons.length\"\n tuiLink\n type=\"button\"\n (click)=\"context.$implicit.next(context.buttons[context.buttons.length - 1] || '')\"\n >\n {{ context.buttons[context.buttons.length - 1] }}\n </button>\n</tui-push>\n<ng-template #directive>\n <ng-container *polymorpheusOutlet=\"context.content\" />\n</ng-template>\n", styles: [":host{max-inline-size:calc(100% - 2rem);margin:0 1rem 1rem auto}:host:first-child{margin-top:auto}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "component", type: TuiPushComponent, selector: "tui-push", inputs: ["heading", "type", "timestamp"], outputs: ["close"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }], animations: [tuiFadeIn, tuiSlideInRight, tuiHeightCollapse], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
71
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiPushAlert, isStandalone: true, selector: "ng-component", host: { attributes: { "role": "alert" }, properties: { "@tuiFadeIn": "options", "@tuiSlideInRight": "options", "@tuiHeightCollapse": "options" } }, ngImport: i0, template: "<tui-push\n *ngIf=\"!isDirective; else directive\"\n [heading]=\"context.heading\"\n [timestamp]=\"context.timestamp\"\n [type]=\"context.type\"\n (close)=\"context.$implicit.complete()\"\n>\n <img\n *ngIf=\"context.image\"\n alt=\"\"\n [src]=\"context.image\"\n />\n <tui-icon\n *ngIf=\"context.icon\"\n [icon]=\"context.icon\"\n [style.color]=\"context.iconColor\"\n />\n <div\n *polymorpheusOutlet=\"context.content as text; context: context\"\n [innerHTML]=\"text\"\n ></div>\n <button\n *ngIf=\"context.buttons.length > 1\"\n tuiButton\n type=\"button\"\n (click)=\"context.$implicit.next(context.buttons[0] || '')\"\n >\n {{ context.buttons[0] }}\n </button>\n <button\n *ngIf=\"context.buttons.length\"\n tuiLink\n type=\"button\"\n (click)=\"context.$implicit.next(context.buttons[context.buttons.length - 1] || '')\"\n >\n {{ context.buttons[context.buttons.length - 1] }}\n </button>\n</tui-push>\n<ng-template #directive>\n <ng-container *polymorpheusOutlet=\"context.content\" />\n</ng-template>\n", styles: [":host{max-inline-size:calc(100% - 2rem);margin:0 1rem 1rem auto}:host:first-child{margin-top:auto}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "component", type: TuiPushComponent, selector: "tui-push", inputs: ["heading", "type", "timestamp"], outputs: ["close"] }], animations: [tuiFadeIn, tuiSlideInRight, tuiHeightCollapse], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
72
72
  }
73
73
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPushAlert, decorators: [{
74
74
  type: Component,
@@ -76,10 +76,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
76
76
  NgIf,
77
77
  PolymorpheusOutlet,
78
78
  PolymorpheusTemplate,
79
- TuiPushComponent,
80
- TuiIcon,
81
79
  TuiButton,
80
+ TuiIcon,
82
81
  TuiLink,
82
+ TuiPushComponent,
83
83
  ], changeDetection: ChangeDetectionStrategy.OnPush, animations: [tuiFadeIn, tuiSlideInRight, tuiHeightCollapse], host: {
84
84
  role: 'alert',
85
85
  '[@tuiFadeIn]': 'options',