@taiga-ui/addon-doc 2.55.0 → 2.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/bundles/taiga-ui-addon-doc.umd.js +288 -230
  2. package/bundles/taiga-ui-addon-doc.umd.js.map +1 -1
  3. package/bundles/taiga-ui-addon-doc.umd.min.js +1 -1
  4. package/bundles/taiga-ui-addon-doc.umd.min.js.map +1 -1
  5. package/components/language-switcher/language-switcher.component.d.ts +13 -0
  6. package/components/language-switcher/language-switcher.module.d.ts +2 -0
  7. package/esm2015/components/code/code.component.js +5 -5
  8. package/esm2015/components/code/parse-code-block.js +3 -3
  9. package/esm2015/components/copy/copy.component.js +2 -2
  10. package/esm2015/components/demo/demo.component.js +12 -12
  11. package/esm2015/components/documentation/documentation-property-connector.directive.js +11 -11
  12. package/esm2015/components/documentation/documentation.component.js +30 -30
  13. package/esm2015/components/example/example-capitalize.pipe.js +3 -3
  14. package/esm2015/components/example/example-get-tabs.pipe.js +2 -2
  15. package/esm2015/components/example/example.component.js +9 -9
  16. package/esm2015/components/language-switcher/language-switcher.component.js +48 -0
  17. package/esm2015/components/language-switcher/language-switcher.module.js +18 -0
  18. package/esm2015/components/main/main.component.js +9 -9
  19. package/esm2015/components/navigation/navigation.component.js +16 -16
  20. package/esm2015/components/navigation/navigation.providers.js +4 -4
  21. package/esm2015/components/page/page-tab.directive.js +2 -2
  22. package/esm2015/components/page/page.component.js +10 -10
  23. package/esm2015/components/page/page.providers.js +4 -4
  24. package/esm2015/directives/scroll-into-view/scroll-into-view.directive.js +3 -3
  25. package/esm2015/interfaces/page.js +4 -4
  26. package/esm2015/internal/header/header.component.js +3 -3
  27. package/esm2015/internal/input-opacity/input-opacity.directive.js +3 -3
  28. package/esm2015/internal/see-also/see-also.component.js +6 -6
  29. package/esm2015/internal/source-code/source-code.component.js +6 -6
  30. package/esm2015/languages/russian.js +12 -12
  31. package/esm2015/public-api.js +3 -1
  32. package/esm2015/tokens/code-actions.js +3 -3
  33. package/esm2015/tokens/code-editor.js +2 -2
  34. package/esm2015/tokens/default-tabs.js +2 -2
  35. package/esm2015/tokens/example-content-processor.js +2 -2
  36. package/esm2015/tokens/i18n.js +19 -19
  37. package/esm2015/tokens/logo.js +3 -3
  38. package/esm2015/tokens/page-loaded.js +2 -2
  39. package/esm2015/tokens/pages.js +2 -2
  40. package/esm2015/tokens/scroll-behavior.js +2 -2
  41. package/esm2015/tokens/see-also.js +2 -2
  42. package/esm2015/tokens/source-code.js +3 -3
  43. package/esm2015/tokens/title.js +3 -3
  44. package/esm2015/utils/coerce-value.js +6 -6
  45. package/esm2015/utils/color-conversion.js +5 -5
  46. package/esm2015/utils/generate-routes.js +3 -3
  47. package/esm2015/utils/inspect.js +13 -13
  48. package/esm2015/utils/transliterate-keyboard-layout.js +34 -34
  49. package/esm5/components/code/code.component.js +5 -5
  50. package/esm5/components/code/parse-code-block.js +3 -3
  51. package/esm5/components/copy/copy.component.js +2 -2
  52. package/esm5/components/demo/demo.component.js +12 -12
  53. package/esm5/components/documentation/documentation-property-connector.directive.js +11 -11
  54. package/esm5/components/documentation/documentation.component.js +30 -30
  55. package/esm5/components/example/example-capitalize.pipe.js +3 -3
  56. package/esm5/components/example/example-get-tabs.pipe.js +2 -2
  57. package/esm5/components/example/example.component.js +9 -9
  58. package/esm5/components/language-switcher/language-switcher.component.js +49 -0
  59. package/esm5/components/language-switcher/language-switcher.module.js +21 -0
  60. package/esm5/components/main/main.component.js +9 -9
  61. package/esm5/components/navigation/navigation.component.js +16 -16
  62. package/esm5/components/navigation/navigation.providers.js +4 -4
  63. package/esm5/components/page/page-tab.directive.js +2 -2
  64. package/esm5/components/page/page.component.js +10 -10
  65. package/esm5/components/page/page.providers.js +4 -4
  66. package/esm5/directives/scroll-into-view/scroll-into-view.directive.js +3 -3
  67. package/esm5/interfaces/page.js +4 -4
  68. package/esm5/internal/header/header.component.js +3 -3
  69. package/esm5/internal/input-opacity/input-opacity.directive.js +3 -3
  70. package/esm5/internal/see-also/see-also.component.js +6 -6
  71. package/esm5/internal/source-code/source-code.component.js +6 -6
  72. package/esm5/languages/russian.js +12 -12
  73. package/esm5/public-api.js +3 -1
  74. package/esm5/tokens/code-actions.js +3 -3
  75. package/esm5/tokens/code-editor.js +2 -2
  76. package/esm5/tokens/default-tabs.js +2 -2
  77. package/esm5/tokens/example-content-processor.js +2 -2
  78. package/esm5/tokens/i18n.js +19 -19
  79. package/esm5/tokens/logo.js +3 -3
  80. package/esm5/tokens/page-loaded.js +2 -2
  81. package/esm5/tokens/pages.js +2 -2
  82. package/esm5/tokens/scroll-behavior.js +2 -2
  83. package/esm5/tokens/see-also.js +2 -2
  84. package/esm5/tokens/source-code.js +3 -3
  85. package/esm5/tokens/title.js +3 -3
  86. package/esm5/utils/coerce-value.js +6 -6
  87. package/esm5/utils/color-conversion.js +5 -5
  88. package/esm5/utils/generate-routes.js +3 -3
  89. package/esm5/utils/inspect.js +13 -13
  90. package/esm5/utils/transliterate-keyboard-layout.js +34 -34
  91. package/fesm2015/taiga-ui-addon-doc.js +281 -228
  92. package/fesm2015/taiga-ui-addon-doc.js.map +1 -1
  93. package/fesm5/taiga-ui-addon-doc.js +285 -228
  94. package/fesm5/taiga-ui-addon-doc.js.map +1 -1
  95. package/package.json +5 -5
  96. package/public-api.d.ts +2 -0
  97. package/taiga-ui-addon-doc.metadata.json +1 -1
@@ -7,13 +7,14 @@ import { CommonModule, isPlatformBrowser, Location as Location$1, DOCUMENT } fro
7
7
  import { HighlightModule } from 'ngx-highlightjs';
8
8
  import { tuiPure, TuiDestroyService, px, TUI_IS_MOBILE, TuiDragModule, EMPTY_QUERY, itemsQueryListObservable, watch, TUI_FOCUSABLE_ITEM_ACCESSOR, TUI_IS_CYPRESS, TuiSwipeService, getElementObscurers, isPresent, uniqBy, TuiActiveZoneModule, TuiLetModule, TuiAutoFocusModule, tuiDefaultProp } from '@taiga-ui/cdk';
9
9
  import { TUI_COPY_TEXTS, TuiSelectModule, TuiRadioBlockModule, TuiCheckboxLabeledModule, TuiDataListWrapperModule, TuiBadgeModule, TuiToggleModule, TuiInputCountModule, TuiTabsModule, TuiAccordionModule, TuiTagModule } from '@taiga-ui/kit';
10
- import { TuiButtonModule, TuiModeDirective, TuiLinkModule, TuiExpandModule, TuiGroupModule, TuiTooltipModule, TuiModeModule, TuiSvgModule, TuiDataListModule, TuiTextfieldControllerModule, TuiHintControllerModule, TuiPrimitiveTextfieldModule, TuiDropdownControllerModule, TuiNotificationModule, TuiNotificationsService, capitalizeFirstLetter, TuiHostedDropdownModule, TuiScrollbarModule, TuiThemeNightModule, TuiRootModule, TuiDialogModule, TuiAlertModule } from '@taiga-ui/core';
10
+ import { TuiButtonModule, TuiModeDirective, TuiLinkModule, TuiExpandModule, TuiGroupModule, TuiTooltipModule, TuiModeModule, TuiSvgModule, TuiDataListModule, TuiTextfieldControllerModule, TuiHintControllerModule, TuiPrimitiveTextfieldModule, TuiDropdownControllerModule, TuiNotificationModule, TuiNotificationsService, capitalizeFirstLetter, tuiCapitalizeFirstLetter, TUI_ICONS_PATH, TuiHostedDropdownModule, TuiScrollbarModule, TuiThemeNightModule, TuiRootModule, TuiDialogModule, TuiAlertModule } from '@taiga-ui/core';
11
11
  import { FormControl, FormGroup, ReactiveFormsModule, FormsModule } from '@angular/forms';
12
12
  import { UrlSerializer, RouterModule, ActivatedRoute, Router, NavigationEnd } from '@angular/router';
13
13
  import { trigger, transition, style, animate } from '@angular/animations';
14
14
  import { Clipboard, ClipboardModule } from '@angular/cdk/clipboard';
15
15
  import { LOCATION, LOCAL_STORAGE, WINDOW } from '@ng-web-apis/common';
16
16
  import { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';
17
+ import { TuiCountryIsoCode, TuiLanguageSwitcher } from '@taiga-ui/i18n';
17
18
  import { TuiSidebarDirective, TuiSidebarModule } from '@taiga-ui/addon-mobile';
18
19
  import { Title } from '@angular/platform-browser';
19
20
 
@@ -32,10 +33,10 @@ const tuiRawLoad = rawLoad;
32
33
  * @deprecated: use {@link tuiTryParseMarkdownCodeBlock} instead
33
34
  */
34
35
  // eslint-disable-next-line @typescript-eslint/naming-convention
35
- function tryParseMarkdownCodeBlock(text = '') {
36
+ function tryParseMarkdownCodeBlock(text = ``) {
36
37
  const tokens = new MarkdownIt().parse(text, {});
37
38
  const result = tokens
38
- .filter(({ tag, type }) => tag === 'code' && type === 'fence')
39
+ .filter(({ tag, type }) => tag === `code` && type === `fence`)
39
40
  .map(({ content }) => content);
40
41
  return result.length ? result : [text];
41
42
  }
@@ -43,8 +44,8 @@ const tuiTryParseMarkdownCodeBlock = tryParseMarkdownCodeBlock;
43
44
 
44
45
  let TuiDocCodeComponent = class TuiDocCodeComponent {
45
46
  constructor() {
46
- this.rawLoader$$ = new BehaviorSubject('');
47
- this.filename = '';
47
+ this.rawLoader$$ = new BehaviorSubject(``);
48
+ this.filename = ``;
48
49
  this.processor$ = this.rawLoader$$.pipe(switchMap(rawLoad), map(tryParseMarkdownCodeBlock));
49
50
  }
50
51
  set code(code) {
@@ -61,11 +62,11 @@ __decorate([
61
62
  Input()
62
63
  ], TuiDocCodeComponent.prototype, "code", null);
63
64
  __decorate([
64
- HostBinding('class._has-filename')
65
+ HostBinding(`class._has-filename`)
65
66
  ], TuiDocCodeComponent.prototype, "hasFilename", null);
66
67
  TuiDocCodeComponent = __decorate([
67
68
  Component({
68
- selector: 'tui-doc-code',
69
+ selector: `tui-doc-code`,
69
70
  template: "<p\n *ngIf=\"filename\"\n class=\"t-header\"\n>\n {{ filename }}\n</p>\n<pre\n *ngFor=\"let content of processor$ | async\"\n class=\"t-code\"\n><code [lineNumbers]=\"true\" [highlight]=\"content\"></code></pre>\n",
70
71
  styles: [":host{display:block}.t-header{font:var(--tui-font-text-s);font-weight:700}.t-code{margin:0}.t-code+.t-code{margin-top:1rem}.hljs:not(:empty){font:var(--tui-font-text-m);padding:1.5rem 2rem;font-family:monospace;background:var(--tui-clear-disabled);word-wrap:break-word;white-space:pre-wrap}@media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution:0.001dpcm){.hljs:not(:empty)::-webkit-scrollbar,.hljs:not(:empty)::-webkit-scrollbar-thumb{width:1rem;height:1rem;border-radius:6.25rem;background-clip:padding-box;border:2.667rem solid transparent}.hljs:not(:empty)::-webkit-scrollbar{background-color:transparent}.hljs:not(:empty)::-webkit-scrollbar-thumb{background-color:var(--tui-clear-hover)}.hljs:not(:empty)::-webkit-scrollbar-thumb:hover{background-color:var(--tui-clear-active)}.hljs:not(:empty)::-webkit-scrollbar-thumb:active{background-color:var(--tui-text-03)}}:host._has-filename .hljs:not(:empty){border-radius:.75rem}:host-context(tui-root._mobile) .hljs:not(:empty){padding:1rem}"]
71
72
  })
@@ -103,7 +104,7 @@ __decorate([
103
104
  ], TuiDocCopyComponent.prototype, "copied$", null);
104
105
  TuiDocCopyComponent = __decorate([
105
106
  Component({
106
- selector: 'tui-doc-copy',
107
+ selector: `tui-doc-copy`,
107
108
  template: "<button\n *ngIf=\"texts$ | async as texts\"\n tuiButton\n type=\"button\"\n appearance=\"\"\n size=\"s\"\n class=\"t-copy\"\n [title]=\"texts[0]\"\n (click)=\"onClick()\"\n>\n <span\n class=\"t-content\"\n [class.t-content_moved]=\"copied$ | async\"\n >\n <span\n class=\"t-initial\"\n [attr.data-text]=\"texts[0]\"\n >\n <ng-content></ng-content>\n </span>\n {{ texts[1] }}\n </span>\n</button>\n",
108
109
  changeDetection: ChangeDetectionStrategy.OnPush,
109
110
  providers: [TuiDestroyService],
@@ -129,8 +130,8 @@ TuiDocCopyModule = __decorate([
129
130
  * Works with a tuple
130
131
  * [@string tuiMode tooltip content, @string word 'background', @string 'form value']
131
132
  */
132
- const TUI_DOC_DEMO_TEXTS = new InjectionToken('tui-doc-demo i18n texts', {
133
- factory: () => ['Read more more about modes: ', 'Background', 'Form value'],
133
+ const TUI_DOC_DEMO_TEXTS = new InjectionToken(`tui-doc-demo i18n texts`, {
134
+ factory: () => [`Read more more about modes: `, `Background`, `Form value`],
134
135
  });
135
136
  /**
136
137
  * Works with a tuple
@@ -142,13 +143,13 @@ const TUI_DOC_DEMO_TEXTS = new InjectionToken('tui-doc-demo i18n texts', {
142
143
  * @string message for tooltip about ng-polymorpheus
143
144
  * ]
144
145
  */
145
- const TUI_DOC_DOCUMENTATION_TEXTS = new InjectionToken('tui-doc-documentation i18n texts', {
146
+ const TUI_DOC_DOCUMENTATION_TEXTS = new InjectionToken(`tui-doc-documentation i18n texts`, {
146
147
  factory: () => [
147
- 'Argument',
148
- 'Type',
149
- 'Name and description',
150
- 'Value',
151
- 'Learn about our dynamic templates from ',
148
+ `Argument`,
149
+ `Type`,
150
+ `Name and description`,
151
+ `Value`,
152
+ `Learn about our dynamic templates from `,
152
153
  ],
153
154
  });
154
155
  /**
@@ -159,20 +160,20 @@ const TUI_DOC_DOCUMENTATION_TEXTS = new InjectionToken('tui-doc-documentation i1
159
160
  * @string link to a sample copied message label
160
161
  * ]
161
162
  */
162
- const TUI_DOC_EXAMPLE_TEXTS = new InjectionToken('tui-doc-example i18n texts', {
163
- factory: () => ['Preview', 'Link to a sample was successfully copied', 'Done'],
163
+ const TUI_DOC_EXAMPLE_TEXTS = new InjectionToken(`tui-doc-example i18n texts`, {
164
+ factory: () => [`Preview`, `Link to a sample was successfully copied`, `Done`],
164
165
  });
165
- const TUI_DOC_MENU_TEXT = new InjectionToken('menu i18n text', {
166
- factory: () => 'Menu',
166
+ const TUI_DOC_MENU_TEXT = new InjectionToken(`menu i18n text`, {
167
+ factory: () => `Menu`,
167
168
  });
168
- const TUI_DOC_SEARCH_TEXT = new InjectionToken('search i18n text', {
169
- factory: () => 'Search',
169
+ const TUI_DOC_SEARCH_TEXT = new InjectionToken(`search i18n text`, {
170
+ factory: () => `Search`,
170
171
  });
171
- const TUI_DOC_SEE_ALSO_TEXT = new InjectionToken('tui-doc-see-also i18n text', {
172
- factory: () => 'See also',
172
+ const TUI_DOC_SEE_ALSO_TEXT = new InjectionToken(`tui-doc-see-also i18n text`, {
173
+ factory: () => `See also`,
173
174
  });
174
- const TUI_DOC_SOURCE_CODE_TEXT = new InjectionToken('tui-doc-source-code i18n text', {
175
- factory: () => 'Source code',
175
+ const TUI_DOC_SOURCE_CODE_TEXT = new InjectionToken(`tui-doc-source-code i18n text`, {
176
+ factory: () => `Source code`,
176
177
  });
177
178
 
178
179
  var TuiDocDemoComponent_1;
@@ -188,14 +189,14 @@ let TuiDocDemoComponent = TuiDocDemoComponent_1 = class TuiDocDemoComponent {
188
189
  this.wrapperWidth = 0;
189
190
  this.control = null;
190
191
  this.template = null;
191
- this.updateOnVariants = ['change', 'blur', 'submit'];
192
- this.updateOn = 'change';
192
+ this.updateOnVariants = [`change`, `blur`, `submit`];
193
+ this.updateOn = `change`;
193
194
  this.expanded = false;
194
195
  this.opaque = true;
195
196
  this.modeControl = new FormControl();
196
197
  this.mode = null;
197
198
  this.change$ = new Subject();
198
- this.items = ['onLight', 'onDark'];
199
+ this.items = [`onLight`, `onDark`];
199
200
  this.isBrowser = isPlatformBrowser(platformId);
200
201
  const parsedMode = locationRef.path().match(/tuiMode=(onDark|onLight)/);
201
202
  if (parsedMode !== null && parsedMode.length > 0) {
@@ -226,9 +227,9 @@ let TuiDocDemoComponent = TuiDocDemoComponent_1 = class TuiDocDemoComponent {
226
227
  }
227
228
  const paddingLeft = this.isBrowser
228
229
  ? getComputedStyle(this.content.nativeElement).paddingLeft
229
- : '0';
230
+ : `0`;
230
231
  const { offsetWidth } = this.content.nativeElement;
231
- this.resizerText.nativeElement.textContent = String(offsetWidth - parseInt(paddingLeft || '0', 10) * 2);
232
+ this.resizerText.nativeElement.textContent = String(offsetWidth - parseInt(paddingLeft || `0`, 10) * 2);
232
233
  }
233
234
  onDragStart(event) {
234
235
  event.preventDefault();
@@ -261,7 +262,7 @@ let TuiDocDemoComponent = TuiDocDemoComponent_1 = class TuiDocDemoComponent {
261
262
  if (!this.wrapper) {
262
263
  return;
263
264
  }
264
- this.renderer.setStyle(this.wrapper.nativeElement, 'width', px(Math.max(this.wrapperWidth - delta, MIN_COMPONENT_WIDTH)));
265
+ this.renderer.setStyle(this.wrapper.nativeElement, `width`, px(Math.max(this.wrapperWidth - delta, MIN_COMPONENT_WIDTH)));
265
266
  }
266
267
  };
267
268
  TuiDocDemoComponent.ctorParameters = () => [
@@ -274,13 +275,13 @@ TuiDocDemoComponent.ctorParameters = () => [
274
275
  { type: Array, decorators: [{ type: Inject, args: [TUI_DOC_DEMO_TEXTS,] }] }
275
276
  ];
276
277
  __decorate([
277
- ViewChild('content')
278
+ ViewChild(`content`)
278
279
  ], TuiDocDemoComponent.prototype, "content", void 0);
279
280
  __decorate([
280
- ViewChild('wrapper')
281
+ ViewChild(`wrapper`)
281
282
  ], TuiDocDemoComponent.prototype, "wrapper", void 0);
282
283
  __decorate([
283
- ViewChild('resizerText')
284
+ ViewChild(`resizerText`)
284
285
  ], TuiDocDemoComponent.prototype, "resizerText", void 0);
285
286
  __decorate([
286
287
  Input()
@@ -289,11 +290,11 @@ __decorate([
289
290
  ContentChild(TemplateRef)
290
291
  ], TuiDocDemoComponent.prototype, "template", void 0);
291
292
  __decorate([
292
- HostListener('window:resize')
293
+ HostListener(`window:resize`)
293
294
  ], TuiDocDemoComponent.prototype, "onResize", null);
294
295
  TuiDocDemoComponent = TuiDocDemoComponent_1 = __decorate([
295
296
  Component({
296
- selector: 'tui-doc-demo',
297
+ selector: `tui-doc-demo`,
297
298
  template: "<div\n class=\"t-bg-toggle\"\n [tuiMode]=\"null\"\n>\n <ng-template #tooltip>\n {{ texts[0] }}\n <a\n tuiLink\n tuiMode=\"onDark\"\n routerLink=\"/directives/mode\"\n >\n <code>tuiMode</code>\n </a>\n </ng-template>\n <ng-container *ngIf=\"isMobile; else desktop\">\n <tui-select\n tuiTextfieldSize=\"s\"\n class=\"t-mode\"\n [tuiTextfieldCleaner]=\"true\"\n [tuiHintContent]=\"tooltip\"\n [formControl]=\"modeControl\"\n >\n tuiMode\n <tui-data-list-wrapper\n *tuiDataList\n [items]=\"items\"\n ></tui-data-list-wrapper>\n </tui-select>\n </ng-container>\n <ng-template #desktop>\n tuiMode:\n <tui-tooltip\n describeId=\"form\"\n [content]=\"tooltip\"\n ></tui-tooltip>\n <div\n tuiGroup\n class=\"t-group\"\n [collapsed]=\"true\"\n >\n <tui-radio-block\n size=\"s\"\n nativeId=\"form\"\n class=\"tui-group__auto-width-item\"\n [item]=\"null\"\n [hideRadio]=\"true\"\n [formControl]=\"modeControl\"\n >\n null\n </tui-radio-block>\n <tui-radio-block\n item=\"onDark\"\n size=\"s\"\n nativeId=\"form\"\n class=\"tui-group__auto-width-item\"\n [hideRadio]=\"true\"\n [formControl]=\"modeControl\"\n >\n onDark\n </tui-radio-block>\n <tui-radio-block\n item=\"onLight\"\n size=\"s\"\n nativeId=\"form\"\n class=\"tui-group__auto-width-item\"\n [hideRadio]=\"true\"\n [formControl]=\"modeControl\"\n >\n onLight\n </tui-radio-block>\n </div>\n </ng-template>\n <tui-checkbox-labeled\n size=\"m\"\n class=\"t-checkbox\"\n [(ngModel)]=\"opaque\"\n >\n {{ texts[1] }}\n </tui-checkbox-labeled>\n</div>\n<div\n #wrapper\n class=\"t-wrapper\"\n [class.t-wrapper_dark]=\"modeControl.value === 'onDark'\"\n [class.t-wrapper_gray]=\"modeControl.value === 'onLight'\"\n [class.t-wrapper_transparent]=\"!opaque\"\n>\n <div\n #content\n id=\"demoContent\"\n class=\"t-content\"\n >\n <form\n *ngIf=\"testForm\"\n class=\"t-form\"\n [formGroup]=\"testForm\"\n >\n <div class=\"t-input-wrapper\">\n <ng-container [ngTemplateOutlet]=\"template\"></ng-container>\n </div>\n <button\n tuiButton\n type=\"button\"\n size=\"s\"\n class=\"t-button\"\n [iconRight]=\"icon\"\n (click)=\"toggleDetails()\"\n >\n {{ texts[2] }}\n </button>\n <ng-template #icon>\n <tui-svg\n src=\"tuiIconChevronDown\"\n class=\"t-icon\"\n [class.t-icon_rotated]=\"expanded\"\n ></tui-svg>\n </ng-template>\n <tui-expand\n class=\"t-expand\"\n [expanded]=\"expanded\"\n >\n <ng-template tuiExpandContent>\n <pre class=\"t-value\">Form data: {{ testForm.value | json }}</pre>\n <div\n tuiGroup\n class=\"t-form-controls\"\n >\n <tui-select\n tuiTextfieldSize=\"s\"\n class=\"t-select\"\n [ngModel]=\"updateOn\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"updateOnChange($event)\"\n >\n updateOn\n <tui-data-list-wrapper\n *tuiDataList\n [items]=\"updateOnVariants\"\n ></tui-data-list-wrapper>\n </tui-select>\n <button\n tuiButton\n type=\"reset\"\n size=\"s\"\n class=\"tui-group__auto-width-item\"\n >\n Reset\n </button>\n <button\n tuiButton\n type=\"submit\"\n size=\"s\"\n class=\"tui-group__auto-width-item\"\n >\n Submit\n </button>\n </div>\n </ng-template>\n </tui-expand>\n </form>\n <ng-content></ng-content>\n </div>\n <button\n tabindex=\"-1\"\n class=\"t-resizer\"\n (tuiDragStart)=\"onDragStart($event)\"\n (tuiDragContinues)=\"onDragContinues($event)\"\n (tuiDragEnd)=\"onDragEnd()\"\n >\n <span\n #resizerText\n class=\"t-resizer-text\"\n ></span>\n </button>\n</div>\n",
298
299
  changeDetection: ChangeDetectionStrategy.OnPush,
299
300
  providers: [
@@ -351,7 +352,7 @@ TuiDocDemoModule = __decorate([
351
352
  */
352
353
  // eslint-disable-next-line @typescript-eslint/naming-convention
353
354
  function rgbToHex(r, g, b) {
354
- return `#${[r, g, b].map(x => x.toString(16).padStart(2, '0')).join('')}`;
355
+ return `#${[r, g, b].map(x => x.toString(16).padStart(2, `0`)).join(``)}`;
355
356
  }
356
357
  const tuiRgbToHex = rgbToHex;
357
358
  /**
@@ -360,10 +361,10 @@ const tuiRgbToHex = rgbToHex;
360
361
  // eslint-disable-next-line @typescript-eslint/naming-convention
361
362
  function hexToRgb(hex) {
362
363
  const matches = hex
363
- .replace('#', '')
364
- .split('')
364
+ .replace(`#`, ``)
365
+ .split(``)
365
366
  .map((char, _, array) => (array.length === 3 ? char + char : char))
366
- .join('')
367
+ .join(``)
367
368
  .match(/.{2}/g);
368
369
  return matches
369
370
  ? matches.map(x => Number.parseInt(x, 16))
@@ -373,18 +374,18 @@ const tuiHexToRgb = hexToRgb;
373
374
 
374
375
  function inspectArray(array, depth) {
375
376
  if (depth === 0) {
376
- return '[…]';
377
+ return `[…]`;
377
378
  }
378
- let result = '';
379
+ let result = ``;
379
380
  let first = true;
380
381
  for (let index = 0; index < array.length; index++) {
381
382
  if (first) {
382
383
  first = false;
383
384
  }
384
385
  else {
385
- result += ', ';
386
+ result += `, `;
386
387
  }
387
- result += index in array ? inspectAny(array[index], depth - 1) : 'empty';
388
+ result += index in array ? inspectAny(array[index], depth - 1) : `empty`;
388
389
  }
389
390
  return `[${result}]`;
390
391
  }
@@ -392,7 +393,7 @@ function inspectObject(object, depth) {
392
393
  if (depth === 0) {
393
394
  return `{…}`;
394
395
  }
395
- let result = '';
396
+ let result = ``;
396
397
  let first = true;
397
398
  for (const key in object) {
398
399
  if (!object.hasOwnProperty(key)) {
@@ -402,7 +403,7 @@ function inspectObject(object, depth) {
402
403
  first = false;
403
404
  }
404
405
  else {
405
- result += ', ';
406
+ result += `, `;
406
407
  }
407
408
  result += `${key}: ${inspectAny(object[key], depth - 1)}`;
408
409
  }
@@ -418,15 +419,15 @@ function inspectObject(object, depth) {
418
419
  // eslint-disable-next-line @typescript-eslint/naming-convention
419
420
  function inspectAny(data, depth) {
420
421
  if (data === null) {
421
- return 'null';
422
+ return `null`;
422
423
  }
423
424
  switch (typeof data) {
424
- case 'string':
425
+ case `string`:
425
426
  return `'${data}'`;
426
- case 'undefined':
427
- case 'number':
428
- case 'boolean':
429
- case 'function':
427
+ case `undefined`:
428
+ case `number`:
429
+ case `boolean`:
430
+ case `function`:
430
431
  return String(data);
431
432
  }
432
433
  if (data instanceof RegExp) {
@@ -449,7 +450,7 @@ function coerceValue(value) {
449
450
  return null;
450
451
  }
451
452
  else if (isBooleanParamValue(prepared)) {
452
- return String(prepared) === 'true';
453
+ return String(prepared) === `true`;
453
454
  }
454
455
  else if (isNumberParamValue(prepared)) {
455
456
  return Number(prepared);
@@ -466,10 +467,10 @@ function coerceValue(value) {
466
467
  }
467
468
  const tuiCoerceValue = coerceValue;
468
469
  function isEmptyParamValue(value) {
469
- return ['undefined', 'null', 'NaN', 'Infinity'].includes(value);
470
+ return [`undefined`, `null`, `NaN`, `Infinity`].includes(value);
470
471
  }
471
472
  function isBooleanParamValue(value) {
472
- return value === 'true' || value === 'false';
473
+ return value === `true` || value === `false`;
473
474
  }
474
475
  function isNumberParamValue(value) {
475
476
  // TODO: investigate to disallow potentially catastrophic exponential-time regular expressions.
@@ -477,13 +478,13 @@ function isNumberParamValue(value) {
477
478
  return /^-?[\d.]+(?:e-?\d+)?$/.test(value);
478
479
  }
479
480
  function isPossibleArray(value) {
480
- return value.startsWith('[') && value.endsWith(']');
481
+ return value.startsWith(`[`) && value.endsWith(`]`);
481
482
  }
482
483
  function isPossibleObject(value) {
483
- return value.startsWith('{') && value.endsWith('}');
484
+ return value.startsWith(`{`) && value.endsWith(`}`);
484
485
  }
485
486
 
486
- const SERIALIZED_SUFFIX = '$';
487
+ const SERIALIZED_SUFFIX = `$`;
487
488
  // @bad TODO: refactor output and value sync
488
489
  let TuiDocDocumentationPropertyConnectorDirective = class TuiDocDocumentationPropertyConnectorDirective {
489
490
  constructor(template, locationRef, activatedRoute, urlSerializer) {
@@ -491,9 +492,9 @@ let TuiDocDocumentationPropertyConnectorDirective = class TuiDocDocumentationPro
491
492
  this.locationRef = locationRef;
492
493
  this.activatedRoute = activatedRoute;
493
494
  this.urlSerializer = urlSerializer;
494
- this.documentationPropertyName = '';
495
+ this.documentationPropertyName = ``;
495
496
  this.documentationPropertyMode = null;
496
- this.documentationPropertyType = '';
497
+ this.documentationPropertyType = ``;
497
498
  this.documentationPropertyDeprecated = false;
498
499
  this.documentationPropertyValues = null;
499
500
  this.documentationPropertyValueChange = new EventEmitter();
@@ -505,11 +506,11 @@ let TuiDocDocumentationPropertyConnectorDirective = class TuiDocDocumentationPro
505
506
  }
506
507
  get attrName() {
507
508
  switch (this.documentationPropertyMode) {
508
- case 'input':
509
+ case `input`:
509
510
  return `[${this.documentationPropertyName}]`;
510
- case 'output':
511
+ case `output`:
511
512
  return `(${this.documentationPropertyName})`;
512
- case 'input-output':
513
+ case `input-output`:
513
514
  return `[(${this.documentationPropertyName})]`;
514
515
  default:
515
516
  return this.documentationPropertyName;
@@ -519,7 +520,7 @@ let TuiDocDocumentationPropertyConnectorDirective = class TuiDocDocumentationPro
519
520
  return !!this.documentationPropertyValues;
520
521
  }
521
522
  get shouldShowValues() {
522
- return this.documentationPropertyMode !== 'output';
523
+ return this.documentationPropertyMode !== `output`;
523
524
  }
524
525
  ngOnChanges() {
525
526
  this.changed$.next();
@@ -551,7 +552,7 @@ let TuiDocDocumentationPropertyConnectorDirective = class TuiDocDocumentationPro
551
552
  const computedValue = isValueAvailableByKey && this.documentationPropertyValues
552
553
  ? this.documentationPropertyValues.indexOf(value)
553
554
  : value;
554
- const suffix = isValueAvailableByKey ? SERIALIZED_SUFFIX : '';
555
+ const suffix = isValueAvailableByKey ? SERIALIZED_SUFFIX : ``;
555
556
  const propName = this.documentationPropertyName + suffix;
556
557
  tree.queryParams = Object.assign(Object.assign({}, tree.queryParams), { [propName]: computedValue });
557
558
  this.locationRef.go(String(tree));
@@ -586,8 +587,8 @@ __decorate([
586
587
  ], TuiDocDocumentationPropertyConnectorDirective.prototype, "documentationPropertyValueChange", void 0);
587
588
  TuiDocDocumentationPropertyConnectorDirective = __decorate([
588
589
  Directive({
589
- selector: 'ng-template[documentationPropertyName]',
590
- exportAs: 'documentationProperty',
590
+ selector: `ng-template[documentationPropertyName]`,
591
+ exportAs: `documentationProperty`,
591
592
  }),
592
593
  __param(0, Inject(TemplateRef)),
593
594
  __param(1, Inject(Location$1)),
@@ -602,7 +603,7 @@ let TuiDocDocumentationComponent = class TuiDocDocumentationComponent {
602
603
  constructor(changeDetectorRef, texts) {
603
604
  this.changeDetectorRef = changeDetectorRef;
604
605
  this.texts = texts;
605
- this.heading = '';
606
+ this.heading = ``;
606
607
  this.showValues = true;
607
608
  this.isAPI = false;
608
609
  this.propertiesConnectors = EMPTY_QUERY;
@@ -619,71 +620,71 @@ let TuiDocDocumentationComponent = class TuiDocDocumentationComponent {
619
620
  getColor(color) {
620
621
  if (color.length === 4) {
621
622
  return color
622
- .split('')
623
+ .split(``)
623
624
  .reduce((result, current) => [...result, current, current], [])
624
- .join('')
625
- .replace('#', '');
625
+ .join(``)
626
+ .replace(`#`, ``);
626
627
  }
627
- if (color.startsWith('#')) {
628
+ if (color.startsWith(`#`)) {
628
629
  return color;
629
630
  }
630
- if (color === 'transparent') {
631
- return '#000000';
631
+ if (color === `transparent`) {
632
+ return `#000000`;
632
633
  }
633
634
  const parsed = color
634
- .replace('rgb(', '')
635
- .replace('rgba(', '')
636
- .replace(')', '')
637
- .replace(' ', '')
638
- .split(',')
635
+ .replace(`rgb(`, ``)
636
+ .replace(`rgba(`, ``)
637
+ .replace(`)`, ``)
638
+ .replace(` `, ``)
639
+ .split(`,`)
639
640
  .map(v => Number.parseInt(v, 10));
640
641
  return rgbToHex(...parsed);
641
642
  }
642
643
  getOpacity(color) {
643
- if (color.startsWith('#') || color.startsWith('rgb(')) {
644
+ if (color.startsWith(`#`) || color.startsWith(`rgb(`)) {
644
645
  return 100;
645
646
  }
646
- if (color === 'transparent') {
647
+ if (color === `transparent`) {
647
648
  return 0;
648
649
  }
649
- const lastComma = color.lastIndexOf(',');
650
+ const lastComma = color.lastIndexOf(`,`);
650
651
  const parsed = color
651
652
  .slice(lastComma)
652
- .replace(')', '')
653
- .replace(' ', '')
654
- .replace(',', '');
653
+ .replace(`)`, ``)
654
+ .replace(` `, ``)
655
+ .replace(`,`, ``);
655
656
  return Math.round(Number.parseFloat(parsed) * 100);
656
657
  }
657
658
  onColorChange(connector, color) {
658
- const opacity = this.getOpacity(connector.documentationPropertyValue || '');
659
+ const opacity = this.getOpacity(connector.documentationPropertyValue || ``);
659
660
  if (opacity === 100) {
660
661
  connector.onValueChange(color);
661
662
  return;
662
663
  }
663
- const rgb = hexToRgb(color).join(', ');
664
+ const rgb = hexToRgb(color).join(`, `);
664
665
  const result = `rgba(${rgb}, ${opacity / 100})`;
665
666
  connector.onValueChange(result);
666
667
  }
667
668
  onOpacityChange(connector, opacity) {
668
- const hex = this.getColor(connector.documentationPropertyValue || '');
669
+ const hex = this.getColor(connector.documentationPropertyValue || ``);
669
670
  const rgb = hexToRgb(hex);
670
671
  const result = `rgba(${rgb}, ${opacity / 100})`;
671
672
  connector.onValueChange(result);
672
673
  }
673
674
  stripOptional(name) {
674
- return name.replace('?', '');
675
+ return name.replace(`?`, ``);
675
676
  }
676
677
  isOptional(name) {
677
- return name.includes('?');
678
+ return name.includes(`?`);
678
679
  }
679
680
  isPrimitivePolymorpheusContent(value) {
680
- return typeof value === 'string' || typeof value === 'number';
681
+ return typeof value === `string` || typeof value === `number`;
681
682
  }
682
683
  showCleaner(type) {
683
- return type.includes('null');
684
+ return type.includes(`null`);
684
685
  }
685
686
  showContentTooltip(type) {
686
- return type.includes('PolymorpheusContent');
687
+ return type.includes(`PolymorpheusContent`);
687
688
  }
688
689
  inspectAny(data) {
689
690
  return inspectAny(data, 2);
@@ -707,12 +708,12 @@ __decorate([
707
708
  ], TuiDocDocumentationComponent.prototype, "propertiesConnectors", void 0);
708
709
  TuiDocDocumentationComponent = __decorate([
709
710
  Component({
710
- selector: 'tui-doc-documentation',
711
+ selector: `tui-doc-documentation`,
711
712
  template: "<h1\n *ngIf=\"heading\"\n class=\"t-heading\"\n>\n {{ heading }}\n</h1>\n<ng-content></ng-content>\n<table class=\"t-table\">\n <tr class=\"t-row t-row_header\">\n <th class=\"t-th t-cell t-cell_prop\">{{ texts[2] }}</th>\n <th class=\"t-th\">{{ type }}</th>\n <th\n *ngIf=\"showValues && !isAPI\"\n class=\"t-th t-cell t-cell_value\"\n >\n {{ texts[3] }}\n </th>\n </tr>\n <tr\n *ngFor=\"let propertyConnector of propertiesConnectors\"\n class=\"t-row\"\n [class.t-deprecated]=\"propertyConnector.documentationPropertyDeprecated\"\n >\n <td class=\"t-cell\">\n <div\n automation-id=\"tui-documentation__property-name\"\n class=\"t-property\"\n >\n {{ stripOptional(propertyConnector.attrName) }}\n <tui-badge\n *ngIf=\"isOptional(propertyConnector.attrName)\"\n size=\"s\"\n value=\"Optional\"\n ></tui-badge>\n </div>\n <span\n *ngIf=\"propertyConnector.documentationPropertyDeprecated\"\n class=\"t-deprecated-label\"\n >\n deprecated\n </span>\n <ng-container [ngTemplateOutlet]=\"propertyConnector.template\"></ng-container>\n </td>\n <td class=\"t-cell\">\n <span class=\"type\">\n {{ propertyConnector.documentationPropertyType }}\n <tui-tooltip\n *ngIf=\"showContentTooltip(propertyConnector.documentationPropertyType)\"\n [describeId]=\"propertyConnector.attrName\"\n [content]=\"content\"\n >\n <ng-template #content>\n {{ texts[4] }}\n <a\n tuiLink\n tuiMode=\"onDark\"\n target=\"_blank\"\n href=\"https://github.com/tinkoff/ng-polymorpheus\"\n >\n <code>ng-polymorpheus</code>\n </a>\n </ng-template>\n </tui-tooltip>\n </span>\n </td>\n <td\n *ngIf=\"showValues\"\n class=\"t-cell\"\n >\n <ng-container *ngIf=\"propertyConnector.shouldShowValues; else elseEmitter\">\n <tui-select\n *ngIf=\"propertyConnector.hasItems; else noItems\"\n tuiTextfieldSize=\"m\"\n tuiDropdownLimitWidth=\"min\"\n [tuiTextfieldCleaner]=\"showCleaner(propertyConnector.documentationPropertyType)\"\n [tuiTextfieldLabelOutside]=\"true\"\n [nativeId]=\"propertyConnector.attrName\"\n [valueContent]=\"selectContent\"\n [ngModel]=\"propertyConnector.documentationPropertyValue\"\n (ngModelChange)=\"propertyConnector.onValueChange($event)\"\n >\n <code class=\"t-exception\">null</code>\n <tui-data-list-wrapper\n *tuiDataList\n [items]=\"propertyConnector.documentationPropertyValues\"\n [itemContent]=\"selectContent\"\n ></tui-data-list-wrapper>\n </tui-select>\n <ng-template\n #selectContent\n let-data\n >\n <code>{{ inspectAny(data) }}</code>\n </ng-template>\n\n <ng-template #noItems>\n <ng-container [ngSwitch]=\"propertyConnector.documentationPropertyType\">\n <tui-toggle\n *ngSwitchCase=\"'boolean'\"\n size=\"l\"\n [nativeId]=\"propertyConnector.attrName\"\n [showIcons]=\"true\"\n [ngModel]=\"propertyConnector.documentationPropertyValue\"\n (ngModelChange)=\"propertyConnector.onValueChange($event)\"\n ></tui-toggle>\n\n <tui-primitive-textfield\n *ngSwitchCase=\"'string'\"\n tuiTextfieldSize=\"m\"\n [nativeId]=\"propertyConnector.attrName\"\n [tuiTextfieldLabelOutside]=\"true\"\n [tuiTextfieldCleaner]=\"true\"\n [value]=\"propertyConnector.documentationPropertyValue || ''\"\n (valueChange)=\"propertyConnector.onValueChange($event)\"\n ></tui-primitive-textfield>\n\n <div\n *ngSwitchCase=\"'color'\"\n tuiGroup\n >\n <tui-primitive-textfield\n tuiTextfieldType=\"text\"\n tuiTextfieldSize=\"m\"\n [attr.id]=\"propertyConnector.attrName\"\n [tuiTextfieldLabelOutside]=\"true\"\n [tuiInputOpacity]=\"getOpacity(propertyConnector.documentationPropertyValue)\"\n [value]=\"getColor(propertyConnector.documentationPropertyValue)\"\n (valueChange)=\"onColorChange(propertyConnector, $event)\"\n ></tui-primitive-textfield>\n <tui-input-count\n tuiTextfieldSize=\"m\"\n [max]=\"100\"\n [ngModel]=\"getOpacity(propertyConnector.documentationPropertyValue)\"\n (ngModelChange)=\"onOpacityChange(propertyConnector, $event)\"\n >\n Opacity\n </tui-input-count>\n </div>\n\n <tui-input-count\n *ngSwitchCase=\"'number'\"\n tuiTextfieldSize=\"m\"\n [nativeId]=\"propertyConnector.attrName\"\n [tuiTextfieldLabelOutside]=\"true\"\n [ngModel]=\"propertyConnector.documentationPropertyValue\"\n (ngModelChange)=\"propertyConnector.onValueChange($event)\"\n ></tui-input-count>\n\n <ng-container *ngSwitchCase=\"'PolymorpheusContent'\">\n <tui-primitive-textfield\n *ngIf=\"isPrimitivePolymorpheusContent(propertyConnector.documentationPropertyValue)\"\n tuiTextfieldSize=\"m\"\n [nativeId]=\"propertyConnector.attrName\"\n [tuiTextfieldLabelOutside]=\"true\"\n [tuiTextfieldCleaner]=\"true\"\n [value]=\"propertyConnector.documentationPropertyValue.toString()\"\n (valueChange)=\"propertyConnector.onValueChange($event)\"\n >\n Default content\n </tui-primitive-textfield>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n\n <ng-template #elseEmitter>\n <tui-notification\n class=\"t-output\"\n [@emitEvent]=\"propertyConnector.emits$ | async\"\n >\n Emit!\n </tui-notification>\n </ng-template>\n </td>\n </tr>\n</table>\n",
712
713
  changeDetection: ChangeDetectionStrategy.OnPush,
713
714
  animations: [
714
- trigger('emitEvent', [
715
- transition(':increment', [style({ opacity: 1 }), animate('500ms ease-in')]),
715
+ trigger(`emitEvent`, [
716
+ transition(`:increment`, [style({ opacity: 1 }), animate(`500ms ease-in`)]),
716
717
  ]),
717
718
  ],
718
719
  styles: [":host{display:block;min-width:100%}.t-table{width:100%;table-layout:fixed}.t-row:not(:last-child){border-bottom:1px solid var(--tui-base-03)}:host-context(tui-root._mobile) .t-row{display:flex;flex-wrap:wrap}:host-context(tui-root._mobile) .t-row_header{display:none}.t-cell{padding:1rem 1rem .875rem}.t-cell:first-child{padding-left:0}.t-cell:last-child{padding-right:0;text-align:right}.t-cell_prop{width:40%}.t-cell_value{max-width:20rem}:host-context(tui-root._mobile) .t-cell_value{width:9.375rem}:host-context(tui-root._mobile) .t-cell{width:100%;height:auto;padding:.5rem 0;text-align:left}.t-th{padding:.5rem 1rem;color:var(--tui-text-02);font-weight:400;text-align:left}.t-property{font:var(--tui-font-text-m);margin-bottom:.25rem;font-family:monospace;color:#8f75d1}:host-context(tui-root._mobile) .t-property{padding:.5rem 0}.t-type{font-family:monospace}.t-deprecated{background-color:var(--tui-error-bg);box-shadow:-1rem 0 var(--tui-error-bg),1rem 0 var(--tui-error-bg)}.t-deprecated-label{margin-right:.125rem;color:var(--tui-error-fill)}.t-exception{display:block;width:-webkit-max-content;width:-moz-max-content;width:max-content}.t-output{text-align:left;opacity:0}.t-heading{font:var(--tui-font-heading-4)}"]
@@ -729,7 +730,7 @@ let TuiInputOpacityDirective = class TuiInputOpacityDirective {
729
730
  set tuiInputOpacity(opacity) {
730
731
  const { nativeFocusableElement } = this.tuiFocusableComponent;
731
732
  if (nativeFocusableElement) {
732
- this.renderer.setStyle(nativeFocusableElement, 'opacity', opacity / 100);
733
+ this.renderer.setStyle(nativeFocusableElement, `opacity`, opacity / 100);
733
734
  }
734
735
  }
735
736
  };
@@ -742,7 +743,7 @@ __decorate([
742
743
  ], TuiInputOpacityDirective.prototype, "tuiInputOpacity", null);
743
744
  TuiInputOpacityDirective = __decorate([
744
745
  Directive({
745
- selector: '[tuiInputOpacity]',
746
+ selector: `[tuiInputOpacity]`,
746
747
  }),
747
748
  __param(0, Inject(Renderer2)),
748
749
  __param(1, Inject(TUI_FOCUSABLE_ITEM_ACCESSOR))
@@ -793,13 +794,13 @@ TuiDocDocumentationModule = __decorate([
793
794
  })
794
795
  ], TuiDocDocumentationModule);
795
796
 
796
- const TUI_DOC_CODE_ACTIONS = new InjectionToken('Code actions for the opened tab with code example', {
797
- factory: () => '',
797
+ const TUI_DOC_CODE_ACTIONS = new InjectionToken(`Code actions for the opened tab with code example`, {
798
+ factory: () => ``,
798
799
  });
799
800
 
800
- const TUI_DOC_CODE_EDITOR = new InjectionToken('Contains service for opening online IDE e.g. Stackblitz');
801
+ const TUI_DOC_CODE_EDITOR = new InjectionToken(`Contains service for opening online IDE e.g. Stackblitz`);
801
802
 
802
- const TUI_DOC_EXAMPLE_CONTENT_PROCESSOR = new InjectionToken('Processes content in example', { factory: () => identity });
803
+ const TUI_DOC_EXAMPLE_CONTENT_PROCESSOR = new InjectionToken(`Processes content in example`, { factory: () => identity });
803
804
 
804
805
  /**
805
806
  * @deprecated: use {@link tuiRawLoadRecord} instead
@@ -836,8 +837,8 @@ let TuiDocExampleComponent = class TuiDocExampleComponent {
836
837
  this.route = route;
837
838
  this.ngLocation = ngLocation;
838
839
  this.rawLoader$$ = new BehaviorSubject({});
839
- this.heading = '';
840
- this.description = '';
840
+ this.heading = ``;
841
+ this.description = ``;
841
842
  this.componentName = this.location.pathname.slice(1);
842
843
  this.defaultTabIndex = 0;
843
844
  this.defaultTab = this.texts[this.defaultTabIndex];
@@ -850,7 +851,7 @@ let TuiDocExampleComponent = class TuiDocExampleComponent {
850
851
  this.rawLoader$$.next(content);
851
852
  }
852
853
  copyExampleLink() {
853
- const hashPosition = this.location.href.indexOf('#');
854
+ const hashPosition = this.location.href.indexOf(`#`);
854
855
  const currentUrl = hashPosition > -1
855
856
  ? this.location.href.slice(0, Math.max(0, hashPosition))
856
857
  : this.location.href;
@@ -867,17 +868,17 @@ let TuiDocExampleComponent = class TuiDocExampleComponent {
867
868
  edit(files) {
868
869
  var _a, _b;
869
870
  this.loading$.next(true);
870
- (_a = this.codeEditor) === null || _a === void 0 ? void 0 : _a.edit(this.componentName, (_b = this.id) !== null && _b !== void 0 ? _b : '', files).finally(() => this.loading$.next(false));
871
+ (_a = this.codeEditor) === null || _a === void 0 ? void 0 : _a.edit(this.componentName, (_b = this.id) !== null && _b !== void 0 ? _b : ``, files).finally(() => this.loading$.next(false));
871
872
  }
872
873
  setFragmentWithoutRedirect(id) {
873
874
  const url = this.router
874
- .createUrlTree([], { relativeTo: this.route, fragment: id || '' })
875
+ .createUrlTree([], { relativeTo: this.route, fragment: id || `` })
875
876
  .toString();
876
877
  this.ngLocation.go(url);
877
878
  }
878
879
  };
879
880
  TuiDocExampleComponent.ctorParameters = () => [
880
- { type: String, decorators: [{ type: Attribute, args: ['id',] }] },
881
+ { type: String, decorators: [{ type: Attribute, args: [`id`,] }] },
881
882
  { type: Clipboard, decorators: [{ type: Inject, args: [Clipboard,] }] },
882
883
  { type: TuiNotificationsService, decorators: [{ type: Inject, args: [TuiNotificationsService,] }] },
883
884
  { type: Location, decorators: [{ type: Inject, args: [LOCATION,] }] },
@@ -905,12 +906,12 @@ __decorate([
905
906
  ], TuiDocExampleComponent.prototype, "componentName", void 0);
906
907
  TuiDocExampleComponent = __decorate([
907
908
  Component({
908
- selector: 'tui-doc-example',
909
+ selector: `tui-doc-example`,
909
910
  template: "<h3\n *ngIf=\"heading\"\n class=\"t-title\"\n>\n <span\n polymorpheus-outlet\n [content]=\"heading | tuiDocExampleCapitalize\"\n ></span>\n <button\n *ngIf=\"id\"\n tuiIconButton\n type=\"button\"\n size=\"xs\"\n icon=\"tuiIconLinkLarge\"\n appearance=\"icon\"\n class=\"t-link-icon\"\n [title]=\"copy$ | async\"\n (click)=\"copyExampleLink()\"\n ></button>\n</h3>\n<h4\n *ngIf=\"description\"\n polymorpheus-outlet\n class=\"t-description\"\n [content]=\"description | tuiDocExampleCapitalize\"\n></h4>\n\n<div\n *ngIf=\"processor$ | async as files\"\n class=\"t-example\"\n>\n <ng-container *ngIf=\"files | tuiDocExampleGetTabs: defaultTab as tabs\">\n <div class=\"t-tabs-wrapper\">\n <tui-tabs-with-more\n class=\"t-tabs\"\n [(activeItemIndex)]=\"activeItemIndex\"\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <button\n *tuiTab\n tuiTab\n >\n {{ tab }}\n </button>\n </ng-container>\n </tui-tabs-with-more>\n\n <button\n *ngIf=\"codeEditor\"\n tuiButton\n appearance=\"flat\"\n size=\"s\"\n [showLoader]=\"!!(loading$ | async)\"\n (click)=\"edit(files)\"\n >\n Edit on {{ codeEditor.name }}\n </button>\n </div>\n\n <div\n *ngFor=\"let tab of tabs; let index = index\"\n class=\"t-content\"\n [class.t-content_animated]=\"!isCypress\"\n [class.t-content_visible]=\"activeItemIndex === index\"\n >\n <ng-container\n *ngIf=\"index === defaultTabIndex; else anotherTab\"\n [ngTemplateOutlet]=\"preview\"\n ></ng-container>\n <ng-template #anotherTab>\n <ng-container\n [ngTemplateOutlet]=\"codeSection\"\n [ngTemplateOutletContext]=\"{$implicit: files[tabs[activeItemIndex]] || ''}\"\n ></ng-container>\n </ng-template>\n </div>\n </ng-container>\n</div>\n\n<ng-template #preview>\n <div\n automation-id=\"tui-doc-example\"\n class=\"t-demo\"\n >\n <ng-content></ng-content>\n </div>\n</ng-template>\n\n<ng-template\n #codeSection\n let-code\n>\n <section class=\"t-code-actions\">\n <ng-container *ngFor=\"let action of codeActions\">\n <div\n polymorpheus-outlet\n [content]=\"action\"\n [context]=\"{$implicit: code}\"\n ></div>\n </ng-container>\n <tui-doc-copy [cdkCopyToClipboard]=\"code\"></tui-doc-copy>\n </section>\n <tui-doc-code [code]=\"code\"></tui-doc-code>\n</ng-template>\n",
910
911
  changeDetection: ChangeDetectionStrategy.OnPush,
911
912
  styles: [":host{position:relative;display:block;padding-top:3.5rem;clear:right}:host :host-context(tui-root._mobile){padding-top:2rem}.t-title{font:var(--tui-font-heading-5);margin:0 0 .5rem}:host-context(tui-root._mobile) .t-title{font:var(--tui-font-heading-6)}.t-description{font:var(--tui-font-text-m);font-weight:400;margin:0}.t-example{position:relative;margin-top:1.5rem;border:1px solid var(--tui-base-03);border-radius:var(--tui-radius-m);box-shadow:0 .125rem .1875rem rgba(0,0,0,.1)}:host-context(tui-root._mobile) .t-example{margin-top:.75rem}.t-tabs-wrapper{display:flex;padding:0 2rem;box-shadow:inset 0 -1px var(--tui-base-03);justify-content:space-between;align-items:center}:host-context(tui-root._mobile) .t-tabs-wrapper{padding:0 1rem}.t-tabs{flex-grow:1}.t-demo{padding:2rem;overflow-x:auto}@media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution:0.001dpcm){.t-demo::-webkit-scrollbar,.t-demo::-webkit-scrollbar-thumb{width:1rem;height:1rem;border-radius:6.25rem;background-clip:padding-box;border:2.667rem solid transparent}.t-demo::-webkit-scrollbar{background-color:transparent}.t-demo::-webkit-scrollbar-thumb{background-color:var(--tui-clear-hover)}.t-demo::-webkit-scrollbar-thumb:hover{background-color:var(--tui-clear-active)}.t-demo::-webkit-scrollbar-thumb:active{background-color:var(--tui-text-03)}}:host-context(tui-root._mobile) .t-demo{padding:1rem}.t-code-actions{position:absolute;top:4.375rem;right:1rem;display:flex;justify-content:flex-end;align-items:center}.t-code-actions>*{margin-left:.5rem}.t-link-icon{margin-left:.3rem;vertical-align:baseline}.t-content{will-change:opacity;height:0;visibility:hidden;opacity:0}.t-content_animated{transition:opacity .3s ease-in-out}.t-content_visible{height:auto;visibility:visible;opacity:1}"]
912
913
  }),
913
- __param(0, Attribute('id')),
914
+ __param(0, Attribute(`id`)),
914
915
  __param(1, Inject(Clipboard)),
915
916
  __param(2, Inject(TuiNotificationsService)),
916
917
  __param(3, Inject(LOCATION)),
@@ -928,11 +929,11 @@ TuiDocExampleComponent = __decorate([
928
929
 
929
930
  let TuiDocExampleCapitalizePipe = class TuiDocExampleCapitalizePipe {
930
931
  transform(content) {
931
- return typeof content === 'string' ? capitalizeFirstLetter(content) : content;
932
+ return typeof content === `string` ? capitalizeFirstLetter(content) : content;
932
933
  }
933
934
  };
934
935
  TuiDocExampleCapitalizePipe = __decorate([
935
- Pipe({ name: 'tuiDocExampleCapitalize' })
936
+ Pipe({ name: `tuiDocExampleCapitalize` })
936
937
  ], TuiDocExampleCapitalizePipe);
937
938
 
938
939
  let TuiDocExampleGetTabsPipe = class TuiDocExampleGetTabsPipe {
@@ -941,7 +942,7 @@ let TuiDocExampleGetTabsPipe = class TuiDocExampleGetTabsPipe {
941
942
  }
942
943
  };
943
944
  TuiDocExampleGetTabsPipe = __decorate([
944
- Pipe({ name: 'tuiDocExampleGetTabs' })
945
+ Pipe({ name: `tuiDocExampleGetTabs` })
945
946
  ], TuiDocExampleGetTabsPipe);
946
947
 
947
948
  let TuiDocExampleModule = class TuiDocExampleModule {
@@ -970,24 +971,76 @@ TuiDocExampleModule = __decorate([
970
971
  })
971
972
  ], TuiDocExampleModule);
972
973
 
974
+ let TuiLanguageSwitcherComponent = class TuiLanguageSwitcherComponent {
975
+ constructor(switcher, iconsPath) {
976
+ this.switcher = switcher;
977
+ this.iconsPath = iconsPath;
978
+ this.path = this.iconsPath(`tuiIcon`).replace(`tuiIcon.svg#tuiIcon`, ``);
979
+ this.language = new FormControl(tuiCapitalizeFirstLetter(this.switcher.language));
980
+ this.flags = new Map([
981
+ [`chinese`, TuiCountryIsoCode.CN],
982
+ [`dutch`, TuiCountryIsoCode.NL],
983
+ [`english`, TuiCountryIsoCode.GB],
984
+ [`french`, TuiCountryIsoCode.FR],
985
+ [`german`, TuiCountryIsoCode.DE],
986
+ [`italian`, TuiCountryIsoCode.IT],
987
+ [`polish`, TuiCountryIsoCode.PL],
988
+ [`portuguese`, TuiCountryIsoCode.PT],
989
+ [`russian`, TuiCountryIsoCode.RU],
990
+ [`spanish`, TuiCountryIsoCode.ES],
991
+ [`turkish`, TuiCountryIsoCode.TR],
992
+ [`ukrainian`, TuiCountryIsoCode.UA],
993
+ [`vietnamese`, TuiCountryIsoCode.VN],
994
+ ]);
995
+ this.names = Array.from(this.flags.keys());
996
+ }
997
+ getFlagPath(code) {
998
+ return code ? `${this.path}${code}.png` : null;
999
+ }
1000
+ };
1001
+ TuiLanguageSwitcherComponent.ctorParameters = () => [
1002
+ { type: TuiLanguageSwitcher, decorators: [{ type: Inject, args: [TuiLanguageSwitcher,] }] },
1003
+ { type: undefined, decorators: [{ type: Inject, args: [TUI_ICONS_PATH,] }] }
1004
+ ];
1005
+ TuiLanguageSwitcherComponent = __decorate([
1006
+ Component({
1007
+ selector: `tui-language-switcher`,
1008
+ template: "<tui-select [formControl]=\"language\">\n <ng-content></ng-content>\n <tui-data-list *tuiDataList>\n <button\n *ngFor=\"let name of names\"\n tuiOption\n [value]=\"name | titlecase\"\n (click)=\"switcher.setLanguage(name)\"\n >\n <img\n alt=\"\"\n class=\"t-flag\"\n [src]=\"getFlagPath(flags.get(name))\"\n />\n {{ name | titlecase }}\n </button>\n </tui-data-list>\n</tui-select>\n",
1009
+ changeDetection: ChangeDetectionStrategy.OnPush,
1010
+ styles: [".t-flag{width:1.75rem;height:1.25rem;margin-right:.5rem}"]
1011
+ }),
1012
+ __param(0, Inject(TuiLanguageSwitcher)),
1013
+ __param(1, Inject(TUI_ICONS_PATH))
1014
+ ], TuiLanguageSwitcherComponent);
1015
+
1016
+ let TuiLanguageSwitcherModule = class TuiLanguageSwitcherModule {
1017
+ };
1018
+ TuiLanguageSwitcherModule = __decorate([
1019
+ NgModule({
1020
+ exports: [TuiLanguageSwitcherComponent],
1021
+ declarations: [TuiLanguageSwitcherComponent],
1022
+ imports: [CommonModule, TuiSelectModule, TuiDataListModule, ReactiveFormsModule],
1023
+ })
1024
+ ], TuiLanguageSwitcherModule);
1025
+
973
1026
  var TuiDocMainComponent_1;
974
1027
  // @dynamic
975
1028
  let TuiDocMainComponent = TuiDocMainComponent_1 = class TuiDocMainComponent {
976
1029
  constructor(storage, windowRef) {
977
1030
  this.storage = storage;
978
1031
  this.windowRef = windowRef;
979
- this.night = this.storage.getItem('night') === 'true' ||
980
- (this.storage.getItem('night') === null &&
981
- this.windowRef.matchMedia('(prefers-color-scheme: dark)').matches);
1032
+ this.night = this.storage.getItem(`night`) === `true` ||
1033
+ (this.storage.getItem(`night`) === null &&
1034
+ this.windowRef.matchMedia(`(prefers-color-scheme: dark)`).matches);
982
1035
  this.change$ = new Subject();
983
1036
  }
984
1037
  get mode() {
985
- return this.night ? 'onDark' : null;
1038
+ return this.night ? `onDark` : null;
986
1039
  }
987
1040
  onMode(night) {
988
1041
  this.night = night;
989
1042
  this.change$.next();
990
- this.storage.setItem('night', String(night));
1043
+ this.storage.setItem(`night`, String(night));
991
1044
  }
992
1045
  };
993
1046
  TuiDocMainComponent.ctorParameters = () => [
@@ -995,11 +1048,11 @@ TuiDocMainComponent.ctorParameters = () => [
995
1048
  { type: Window, decorators: [{ type: Inject, args: [WINDOW,] }] }
996
1049
  ];
997
1050
  __decorate([
998
- HostBinding('attr.data-mode')
1051
+ HostBinding(`attr.data-mode`)
999
1052
  ], TuiDocMainComponent.prototype, "mode", null);
1000
1053
  TuiDocMainComponent = TuiDocMainComponent_1 = __decorate([
1001
1054
  Component({
1002
- selector: 'tui-doc-main',
1055
+ selector: `tui-doc-main`,
1003
1056
  template: "<tui-theme-night *ngIf=\"night\"></tui-theme-night>\n<tui-root>\n <div class=\"tui-doc-page\">\n <tui-doc-navigation class=\"tui-doc-navigation\">\n <ng-content select=\"tuiDocNavigation\"></ng-content>\n </tui-doc-navigation>\n <div class=\"tui-doc-content\">\n <router-outlet class=\"tui-doc-outlet\"></router-outlet>\n </div>\n </div>\n <header tuiDocHeader>\n <label class=\"night-mode\">\n Night mode\n <tui-toggle\n class=\"tui-toggle\"\n [ngModel]=\"night\"\n (ngModelChange)=\"onMode($event)\"\n ></tui-toggle>\n </label>\n <ng-content select=\"tuiDocHeader\"></ng-content>\n </header>\n <ng-container ngProjectAs=\"tuiOverContent\">\n <ng-content select=\"tuiOverContent\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"tuiOverDialogs\">\n <ng-content select=\"tuiOverDialogs\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"tuiOverAlerts\">\n <ng-content select=\"tuiOverAlerts\"></ng-content>\n </ng-container>\n <!-- TODO: 3.0 Remove-->\n <ng-container ngProjectAs=\"tuiOverNotifications\">\n <ng-content select=\"tuiOverNotifications\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"tuiOverPortals\">\n <ng-content select=\"tuiOverPortals\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"tuiOverHints\">\n <ng-content select=\"tuiOverHints\"></ng-content>\n </ng-container>\n</tui-root>\n",
1004
1057
  encapsulation: ViewEncapsulation.None,
1005
1058
  providers: [
@@ -1009,13 +1062,13 @@ TuiDocMainComponent = TuiDocMainComponent_1 = __decorate([
1009
1062
  },
1010
1063
  TuiSwipeService,
1011
1064
  ],
1012
- styles: ["html{scroll-padding-top:4rem;height:auto}tui-root>tui-scroll-controls>.bar_vertical{top:4rem!important}@-webkit-keyframes tuiShaking{from,to{transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{transform:translate3d(-.3125rem,0,0)}20%,40%,60%,80%{transform:translate3d(.3125rem,0,0)}}@keyframes tuiShaking{from,to{transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{transform:translate3d(-.3125rem,0,0)}20%,40%,60%,80%{transform:translate3d(.3125rem,0,0)}}body{background:var(--tui-base-01);height:auto}tui-doc-main{display:block}code:not(.hljs):not([class*=language-]):not(.exception){transition-property:background;transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;background:var(--tui-base-02);color:var(--tui-text-02);vertical-align:middle;box-shadow:inset 0 -2px var(--tui-secondary);padding:.375rem .5rem;font-size:.875rem;border-radius:.5rem}a:focus code,button:focus code{background:var(--tui-base-01)}.tui-doc-page{position:relative;z-index:0;padding-top:4rem}tui-doc-navigation.tui-doc-navigation{position:fixed;top:4rem;bottom:0;width:16.25rem;border-right:1px solid var(--tui-base-03)}.tui-doc-content{margin-left:16.25rem}@media screen and (max-width:47.9375em){tui-doc-navigation.tui-doc-navigation{display:none}.tui-doc-content{margin-left:0}}.tui-doc-outlet+*{display:block}.tui-doc-animated-example{-webkit-animation:1s .3s tuiShaking;animation:1s .3s tuiShaking}label.night-mode{cursor:pointer}label.night-mode .tui-toggle{margin-left:.5rem}.hljs-tag{background:0 0}.hljs{display:block;overflow-x:auto;padding:.5em;color:var(--tui-text-01);background-color:var(--tui-clear-disabled)}.hljs.hljs-line-numbers{background:0 0}.hljs-subst,.hljs-title{font-weight:400;color:var(--tui-text-01)}.hljs-comment,.hljs-quote{color:var(--tui-text-03);font-style:italic}.hljs-meta{color:#e38162}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-selector-tag,.hljs-type{font-weight:700;color:var(--tui-link)}.hljs-attribute,.hljs-link,.hljs-number,.hljs-regexp{font-weight:700;color:var(--tui-support-06)}.hljs-link,.hljs-number,.hljs-regexp{font-weight:400}.hljs-string{color:var(--tui-positive);font-weight:700}.hljs-bullet,.hljs-formula,.hljs-symbol{color:var(--tui-text-01);background:var(--tui-base-02);font-style:italic}.hljs-doctag{text-decoration:underline}.hljs-template-variable,.hljs-variable{color:var(--tui-link-hover)}[data-mode=onDark] .hljs-template-variable,[data-mode=onDark] .hljs-variable{color:var(--tui-warning-fill)}.hljs-addition{background:var(--tui-success-bg)}.hljs-deletion{background:var(--tui-error-bg)}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs .hljs-line-numbers{padding:0}.hljs-ln-numbers{vertical-align:top;opacity:.3;text-align:right;padding-right:1em!important}"]
1065
+ styles: ["html{scroll-padding-top:4rem;height:auto}tui-root>tui-scroll-controls>.t-bar_vertical{top:4rem!important}@-webkit-keyframes tuiShaking{from,to{transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{transform:translate3d(-.3125rem,0,0)}20%,40%,60%,80%{transform:translate3d(.3125rem,0,0)}}@keyframes tuiShaking{from,to{transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{transform:translate3d(-.3125rem,0,0)}20%,40%,60%,80%{transform:translate3d(.3125rem,0,0)}}body{background:var(--tui-base-01);height:auto}tui-doc-main{display:block}code:not(.hljs):not([class*=language-]):not(.exception){transition-property:background;transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;background:var(--tui-base-02);color:var(--tui-text-02);vertical-align:middle;box-shadow:inset 0 -2px var(--tui-secondary);padding:.375rem .5rem;font-size:.875rem;border-radius:.5rem}a:focus code,button:focus code{background:var(--tui-base-01)}.tui-doc-page{position:relative;z-index:0;padding-top:4rem}tui-doc-navigation.tui-doc-navigation{position:fixed;top:4rem;bottom:0;width:16.25rem;border-right:1px solid var(--tui-base-03)}.tui-doc-content{margin-left:16.25rem}@media screen and (max-width:47.9375em){tui-doc-navigation.tui-doc-navigation{display:none}.tui-doc-content{margin-left:0}}.tui-doc-outlet+*{display:block}.tui-doc-animated-example{-webkit-animation:1s .3s tuiShaking;animation:1s .3s tuiShaking}label.night-mode{cursor:pointer}label.night-mode .tui-toggle{margin-left:.5rem}.hljs-tag{background:0 0}.hljs{display:block;overflow-x:auto;padding:.5em;color:var(--tui-text-01);background-color:var(--tui-clear-disabled)}.hljs.hljs-line-numbers{background:0 0}.hljs-subst,.hljs-title{font-weight:400;color:var(--tui-text-01)}.hljs-comment,.hljs-quote{color:var(--tui-text-03);font-style:italic}.hljs-meta{color:#e38162}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-selector-tag,.hljs-type{font-weight:700;color:var(--tui-link)}.hljs-attribute,.hljs-link,.hljs-number,.hljs-regexp{font-weight:700;color:var(--tui-support-06)}.hljs-link,.hljs-number,.hljs-regexp{font-weight:400}.hljs-string{color:var(--tui-positive);font-weight:700}.hljs-bullet,.hljs-formula,.hljs-symbol{color:var(--tui-text-01);background:var(--tui-base-02);font-style:italic}.hljs-doctag{text-decoration:underline}.hljs-template-variable,.hljs-variable{color:var(--tui-link-hover)}[data-mode=onDark] .hljs-template-variable,[data-mode=onDark] .hljs-variable{color:var(--tui-warning-fill)}.hljs-addition{background:var(--tui-success-bg)}.hljs-deletion{background:var(--tui-error-bg)}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs .hljs-line-numbers{padding:0}.hljs-ln-numbers{vertical-align:top;opacity:.3;text-align:right;padding-right:1em!important}"]
1013
1066
  }),
1014
1067
  __param(0, Inject(LOCAL_STORAGE)),
1015
1068
  __param(1, Inject(WINDOW))
1016
1069
  ], TuiDocMainComponent);
1017
1070
 
1018
- const TUI_DOC_PAGE_LOADED = new InjectionToken('[TUI_DOC_PAGE_LOADED] Stream that emits if loading of page is over (for example, to begin scrollIntoView)', { factory: () => defer(() => timer(200).pipe(switchMapTo(of(true)))) });
1071
+ const TUI_DOC_PAGE_LOADED = new InjectionToken(`[TUI_DOC_PAGE_LOADED] Stream that emits if loading of page is over (for example, to begin scrollIntoView)`, { factory: () => defer(() => timer(200).pipe(switchMapTo(of(true)))) });
1019
1072
 
1020
1073
  /**
1021
1074
  * @deprecated: use {@link TuiScrollIntoViewLinkDirective}
@@ -1047,7 +1100,7 @@ __decorate([
1047
1100
  ], ScrollIntoViewDirective.prototype, "scrollIntoView", null);
1048
1101
  ScrollIntoViewDirective = __decorate([
1049
1102
  Directive({
1050
- selector: '[scrollIntoView]',
1103
+ selector: `[scrollIntoView]`,
1051
1104
  providers: [TuiDestroyService],
1052
1105
  })
1053
1106
  // eslint-disable-next-line @typescript-eslint/naming-convention
@@ -1060,7 +1113,7 @@ let TuiScrollIntoViewLinkDirective = class TuiScrollIntoViewLinkDirective extend
1060
1113
  };
1061
1114
  TuiScrollIntoViewLinkDirective = __decorate([
1062
1115
  Directive({
1063
- selector: '[tuiScrollIntoViewLink]',
1116
+ selector: `[tuiScrollIntoViewLink]`,
1064
1117
  providers: [TuiDestroyService],
1065
1118
  })
1066
1119
  ], TuiScrollIntoViewLinkDirective);
@@ -1089,41 +1142,41 @@ TuiScrollIntoViewLinkModule = __decorate([
1089
1142
  })
1090
1143
  ], TuiScrollIntoViewLinkModule);
1091
1144
 
1092
- const TUI_DOC_SCROLL_BEHAVIOR = new InjectionToken('[TUI_DOC_SCROLL_BEHAVIOR] Defines the transition animation for scroll', { factory: () => 'smooth' });
1145
+ const TUI_DOC_SCROLL_BEHAVIOR = new InjectionToken(`[TUI_DOC_SCROLL_BEHAVIOR] Defines the transition animation for scroll`, { factory: () => `smooth` });
1093
1146
 
1094
1147
  const MAP = {
1095
- а: 'f',
1096
- б: ',',
1097
- в: 'd',
1098
- г: 'u',
1099
- д: 'l',
1100
- е: 't',
1101
- ё: '`',
1102
- ж: ';',
1103
- з: 'p',
1104
- и: 'b',
1105
- й: 'q',
1106
- к: 'r',
1107
- л: 'k',
1108
- м: 'v',
1109
- н: 'y',
1110
- о: 'j',
1111
- п: 'g',
1112
- р: 'h',
1113
- с: 'c',
1114
- т: 'n',
1115
- у: 'e',
1116
- ф: 'a',
1117
- х: '[',
1118
- ц: 'w',
1119
- ч: 'x',
1120
- ш: 'i',
1121
- щ: 'o',
1122
- ъ: ']',
1123
- ы: 's',
1124
- ь: 'm',
1125
- ю: '.',
1126
- я: 'z',
1148
+ а: `f`,
1149
+ б: `,`,
1150
+ в: `d`,
1151
+ г: `u`,
1152
+ д: `l`,
1153
+ е: `t`,
1154
+ ё: `\``,
1155
+ ж: `;`,
1156
+ з: `p`,
1157
+ и: `b`,
1158
+ й: `q`,
1159
+ к: `r`,
1160
+ л: `k`,
1161
+ м: `v`,
1162
+ н: `y`,
1163
+ о: `j`,
1164
+ п: `g`,
1165
+ р: `h`,
1166
+ с: `c`,
1167
+ т: `n`,
1168
+ у: `e`,
1169
+ ф: `a`,
1170
+ х: `[`,
1171
+ ц: `w`,
1172
+ ч: `x`,
1173
+ ш: `i`,
1174
+ щ: `o`,
1175
+ ъ: `]`,
1176
+ ы: `s`,
1177
+ ь: `m`,
1178
+ ю: `.`,
1179
+ я: `z`,
1127
1180
  };
1128
1181
  /**
1129
1182
  * @deprecated: use {@link tuiTransliterateKeyboardLayout} instead
@@ -1133,7 +1186,7 @@ const MAP = {
1133
1186
  */
1134
1187
  // eslint-disable-next-line @typescript-eslint/naming-convention
1135
1188
  function transliterateKeyboardLayout(string) {
1136
- let newStr = '';
1189
+ let newStr = ``;
1137
1190
  for (let i = 0; i < string.length; i++) {
1138
1191
  newStr += string.charAt(i) in MAP ? MAP[string.charAt(i)] : string.charAt(i);
1139
1192
  }
@@ -1141,17 +1194,17 @@ function transliterateKeyboardLayout(string) {
1141
1194
  }
1142
1195
  const tuiTransliterateKeyboardLayout = transliterateKeyboardLayout;
1143
1196
 
1144
- const TUI_DOC_PAGES = new InjectionToken('Documentation pages', {
1197
+ const TUI_DOC_PAGES = new InjectionToken(`Documentation pages`, {
1145
1198
  factory: () => [],
1146
1199
  });
1147
1200
 
1148
- const TUI_DOC_TITLE = new InjectionToken('Page title', {
1149
- factory: () => '',
1201
+ const TUI_DOC_TITLE = new InjectionToken(`Page title`, {
1202
+ factory: () => ``,
1150
1203
  });
1151
1204
 
1152
- const NAVIGATION_TITLE = new InjectionToken('Page title');
1153
- const NAVIGATION_LABELS = new InjectionToken('Navigation sections labels for search');
1154
- const NAVIGATION_ITEMS = new InjectionToken('Navigation pages');
1205
+ const NAVIGATION_TITLE = new InjectionToken(`Page title`);
1206
+ const NAVIGATION_LABELS = new InjectionToken(`Navigation sections labels for search`);
1207
+ const NAVIGATION_ITEMS = new InjectionToken(`Navigation pages`);
1155
1208
  const NAVIGATION_PROVIDERS = [
1156
1209
  TuiDestroyService,
1157
1210
  {
@@ -1205,12 +1258,12 @@ let TuiDocNavigationComponent = class TuiDocNavigationComponent {
1205
1258
  this.readyToScroll$ = readyToScroll$;
1206
1259
  this.scrollBehavior = scrollBehavior;
1207
1260
  this.menuOpen = false;
1208
- this.search = '';
1261
+ this.search = ``;
1209
1262
  this.open = false;
1210
1263
  this.openPagesArr = [];
1211
1264
  this.openPagesGroupsArr = [];
1212
- this.active = '';
1213
- this.mode$ = this.mode.change$.pipe(startWith(null), map(() => this.mode.mode || 'onLight'));
1265
+ this.active = ``;
1266
+ this.mode$ = this.mode.change$.pipe(startWith(null), map(() => this.mode.mode || `onLight`));
1214
1267
  // Angular can't navigate no anchor links
1215
1268
  // https://stackoverflow.com/questions/36101756/angular2-routing-with-hashtag-to-page-anchor
1216
1269
  title$.subscribe(title => {
@@ -1245,11 +1298,11 @@ let TuiDocNavigationComponent = class TuiDocNavigationComponent {
1245
1298
  onClick() {
1246
1299
  this.open = false;
1247
1300
  this.menuOpen = false;
1248
- this.search = '';
1301
+ this.search = ``;
1249
1302
  this.openActivePageGroup();
1250
1303
  }
1251
1304
  filterItems(items, search) {
1252
- return items.map(section => uniqBy(section.filter(({ title, keywords = '' }) => {
1305
+ return items.map(section => uniqBy(section.filter(({ title, keywords = `` }) => {
1253
1306
  title = title.toLowerCase();
1254
1307
  search = search.toLowerCase();
1255
1308
  keywords = keywords.toLowerCase();
@@ -1257,13 +1310,13 @@ let TuiDocNavigationComponent = class TuiDocNavigationComponent {
1257
1310
  keywords.includes(search) ||
1258
1311
  title.includes(transliterateKeyboardLayout(search)) ||
1259
1312
  keywords.includes(transliterateKeyboardLayout(search)) ||
1260
- search.replace(/-/gi, '').includes(title));
1261
- }), 'title'));
1313
+ search.replace(/-/gi, ``).includes(title));
1314
+ }), `title`));
1262
1315
  }
1263
1316
  flattenSubPages(items) {
1264
1317
  return items.reduce((array, item) => [
1265
1318
  ...array,
1266
- item.reduce((pages, page) => 'subPages' in page
1319
+ item.reduce((pages, page) => `subPages` in page
1267
1320
  ? [...pages, ...page.subPages]
1268
1321
  : [...pages, page], []),
1269
1322
  ], []);
@@ -1279,11 +1332,11 @@ let TuiDocNavigationComponent = class TuiDocNavigationComponent {
1279
1332
  openActivePageGroup() {
1280
1333
  this.items.forEach((pages, pagesIndex) => {
1281
1334
  pages.forEach((page, pageIndex) => {
1282
- if ('route' in page && this.isActiveRoute(page.route)) {
1335
+ if (`route` in page && this.isActiveRoute(page.route)) {
1283
1336
  this.openPagesArr[pagesIndex] = true;
1284
1337
  this.active = page.route;
1285
1338
  }
1286
- if ('subPages' in page) {
1339
+ if (`subPages` in page) {
1287
1340
  page.subPages.forEach(subPage => {
1288
1341
  if (this.isActiveRoute(subPage.route)) {
1289
1342
  this.openPagesArr[pagesIndex] = true;
@@ -1300,10 +1353,10 @@ let TuiDocNavigationComponent = class TuiDocNavigationComponent {
1300
1353
  if (!element) {
1301
1354
  return;
1302
1355
  }
1303
- element.classList.add('tui-doc-animated-example');
1356
+ element.classList.add(`tui-doc-animated-example`);
1304
1357
  element.scrollIntoView({
1305
- block: 'start',
1306
- inline: 'nearest',
1358
+ block: `start`,
1359
+ inline: `nearest`,
1307
1360
  behavior: this.scrollBehavior,
1308
1361
  });
1309
1362
  }
@@ -1325,7 +1378,7 @@ TuiDocNavigationComponent.ctorParameters = () => [
1325
1378
  { type: undefined, decorators: [{ type: Inject, args: [TUI_DOC_SCROLL_BEHAVIOR,] }] }
1326
1379
  ];
1327
1380
  __decorate([
1328
- HostBinding('class._open')
1381
+ HostBinding(`class._open`)
1329
1382
  ], TuiDocNavigationComponent.prototype, "menuOpen", void 0);
1330
1383
  __decorate([
1331
1384
  tuiPure
@@ -1335,7 +1388,7 @@ __decorate([
1335
1388
  ], TuiDocNavigationComponent.prototype, "flattenSubPages", null);
1336
1389
  TuiDocNavigationComponent = __decorate([
1337
1390
  Component({
1338
- selector: 'tui-doc-navigation',
1391
+ selector: `tui-doc-navigation`,
1339
1392
  template: "<tui-hosted-dropdown\n *tuiLet=\"filteredItems as filtered\"\n tuiAutoFocus\n tuiDropdownLimitWidth=\"fixed\"\n class=\"t-input\"\n [autoFocus]=\"!!sidebar\"\n [content]=\"dropdown\"\n [canOpen]=\"canOpen\"\n [(open)]=\"open\"\n>\n <tui-primitive-textfield\n iconAlign=\"left\"\n tuiTextfieldSize=\"m\"\n iconContent=\"tuiIconSearch\"\n [pseudoFocused]=\"open || null\"\n [tuiTextfieldCleaner]=\"true\"\n [tuiTextfieldLabelOutside]=\"true\"\n [value]=\"search\"\n (valueChange)=\"onSearchChange($event)\"\n >\n {{ searchText }}\n </tui-primitive-textfield>\n <ng-template\n #dropdown\n let-activeZone\n >\n <tui-data-list>\n <tui-opt-group\n *ngFor=\"let group of filtered; let index = index\"\n [label]=\"labels[index] || ''\"\n >\n <a\n *ngFor=\"let item of group\"\n tuiOption\n [routerLink]=\"item.route\"\n (click)=\"onClick()\"\n >\n {{ item.title }}\n </a>\n </tui-opt-group>\n </tui-data-list>\n </ng-template>\n</tui-hosted-dropdown>\n\n<nav class=\"t-navigation\">\n <tui-scrollbar\n class=\"t-scrollbar\"\n [tuiMode]=\"mode$ | async\"\n >\n <tui-accordion\n [closeOthers]=\"false\"\n [rounded]=\"false\"\n >\n <tui-accordion-item\n *ngFor=\"let label of labels; index as index\"\n size=\"s\"\n [borders]=\"null\"\n [(open)]=\"!!openPagesArr[index]\"\n >\n <span class=\"t-label\">\n <strong>{{ label }}</strong>\n </span>\n <ng-template tuiAccordionItemContent>\n <div class=\"t-section\">\n <ng-container\n *ngFor=\"let item of items[index]; index as subIndex\"\n [ngTemplateOutlet]=\"pages\"\n [ngTemplateOutletContext]=\"{item: item, index: index * 100 + subIndex}\"\n ></ng-container>\n </div>\n </ng-template>\n </tui-accordion-item>\n </tui-accordion>\n <div class=\"t-items-container\">\n <ng-container\n *ngFor=\"let item of itemsWithoutSections; let index = index\"\n [ngTemplateOutlet]=\"pages\"\n [ngTemplateOutletContext]=\"{item: item, index: items.length - 1 + index}\"\n ></ng-container>\n </div>\n\n <ng-template\n #pages\n let-item=\"item\"\n let-index=\"index\"\n >\n <a\n *ngIf=\"!item.subPages; else subPages\"\n tuiLink\n routerLinkActive=\"t-sublink_active\"\n class=\"t-sublink\"\n [routerLink]=\"item.route\"\n [scrollIntoView]=\"isActive(item.route)\"\n (click)=\"closeMenu()\"\n >\n {{ item.title }}\n </a>\n <ng-template #subPages>\n <div\n routerLinkActive\n class=\"t-subsection\"\n [routerLinkActiveOptions]=\"{exact: false}\"\n >\n <button\n *ngIf=\"item.subPages\"\n tuiLink\n type=\"button\"\n class=\"t-sublink t-sublink_subsection\"\n (click)=\"onGroupClick(index)\"\n >\n <tui-svg\n src=\"tuiIconChevronRight\"\n class=\"t-chevron\"\n [class.t-chevron_active]=\"!!openPagesGroupsArr[index]\"\n ></tui-svg>\n {{ item.title }}\n </button>\n <tui-expand\n class=\"t-expand\"\n [expanded]=\"!!openPagesGroupsArr[index]\"\n >\n <div class=\"t-section t-section_bordered\">\n <a\n *ngFor=\"let subPage of item.subPages\"\n tuiLink\n routerLinkActive=\"t-sublink_active\"\n class=\"t-sublink t-sublink_small\"\n [routerLink]=\"subPage.route\"\n [scrollIntoView]=\"isActive(subPage.route)\"\n (click)=\"closeMenu()\"\n >\n {{ subPage.title }}\n </a>\n </div>\n </tui-expand>\n </div>\n </ng-template>\n </ng-template>\n </tui-scrollbar>\n</nav>\n\n<ng-content></ng-content>\n",
1340
1393
  providers: NAVIGATION_PROVIDERS,
1341
1394
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -1389,8 +1442,8 @@ TuiDocNavigationModule = __decorate([
1389
1442
  })
1390
1443
  ], TuiDocNavigationModule);
1391
1444
 
1392
- const TUI_DOC_LOGO = new InjectionToken('Main logo', {
1393
- factory: () => '',
1445
+ const TUI_DOC_LOGO = new InjectionToken(`Main logo`, {
1446
+ factory: () => ``,
1394
1447
  });
1395
1448
 
1396
1449
  let TuiDocHeaderComponent = class TuiDocHeaderComponent {
@@ -1400,7 +1453,7 @@ let TuiDocHeaderComponent = class TuiDocHeaderComponent {
1400
1453
  this.router = router;
1401
1454
  this.swipes$ = swipes$;
1402
1455
  this.stream$ = new Subject();
1403
- this.open$ = merge(this.router.events.pipe(mapTo(false)), this.stream$, this.swipes$.pipe(filter(swipe => swipe.direction === 'left' || swipe.direction === 'right'), map(swipe => swipe.direction === 'right'))).pipe(startWith(false), distinctUntilChanged());
1456
+ this.open$ = merge(this.router.events.pipe(mapTo(false)), this.stream$, this.swipes$.pipe(filter(swipe => swipe.direction === `left` || swipe.direction === `right`), map(swipe => swipe.direction === `right`))).pipe(startWith(false), distinctUntilChanged());
1404
1457
  }
1405
1458
  onClick() {
1406
1459
  this.stream$.next(true);
@@ -1419,7 +1472,7 @@ TuiDocHeaderComponent.ctorParameters = () => [
1419
1472
  ];
1420
1473
  TuiDocHeaderComponent = __decorate([
1421
1474
  Component({
1422
- selector: 'header[tuiDocHeader]',
1475
+ selector: `header[tuiDocHeader]`,
1423
1476
  template: "<button\n tuiIconButton\n icon=\"tuiIconMenuLarge\"\n appearance=\"icon\"\n class=\"t-menu\"\n [title]=\"menu\"\n (click)=\"onClick()\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <tui-doc-navigation\n *tuiSidebar=\"!!(open$ | async)\"\n class=\"t-navigation\"\n ></tui-doc-navigation>\n</button>\n<div\n polymorpheus-outlet\n class=\"t-logo\"\n [content]=\"logo\"\n>\n <ng-template let-src>\n <img\n alt=\"Logo\"\n class=\"t-img\"\n [src]=\"src\"\n />\n </ng-template>\n</div>\n<ng-content></ng-content>\n",
1424
1477
  changeDetection: ChangeDetectionStrategy.OnPush,
1425
1478
  styles: [":host{box-shadow:0 .125rem 1rem rgba(0,0,0,.08);position:fixed;top:0;left:0;right:0;z-index:1;display:flex;height:3.9375rem;align-items:center;padding:0 1.25rem;background:var(--tui-base-01);border-bottom:1px solid var(--tui-base-03)}.t-logo{margin-right:auto;font:var(--tui-font-heading-5)}.t-img{display:block}.t-menu{margin-left:-1.25rem}@media screen and (min-width:48em){.t-menu{display:none}}.t-navigation{min-height:100%}"]
@@ -1468,15 +1521,15 @@ TuiDocMainModule = __decorate([
1468
1521
  })
1469
1522
  ], TuiDocMainModule);
1470
1523
 
1471
- const TUI_DOC_DEFAULT_TABS = new InjectionToken('Array of default tab names', {
1524
+ const TUI_DOC_DEFAULT_TABS = new InjectionToken(`Array of default tab names`, {
1472
1525
  factory: () => [],
1473
1526
  });
1474
1527
 
1475
- const TUI_DOC_SEE_ALSO = new InjectionToken('Array of arrays of related pages', {
1528
+ const TUI_DOC_SEE_ALSO = new InjectionToken(`Array of arrays of related pages`, {
1476
1529
  factory: () => [],
1477
1530
  });
1478
1531
 
1479
- const PAGE_SEE_ALSO = new InjectionToken('Page see also');
1532
+ const PAGE_SEE_ALSO = new InjectionToken(`Page see also`);
1480
1533
  const PAGE_PROVIDERS = [
1481
1534
  {
1482
1535
  provide: PAGE_SEE_ALSO,
@@ -1486,11 +1539,11 @@ const PAGE_PROVIDERS = [
1486
1539
  ];
1487
1540
  // eslint-disable-next-line @typescript-eslint/naming-convention
1488
1541
  function seeAlsoProviderFactory({ nativeElement }, seeAlsoGroups) {
1489
- const currentHeader = nativeElement.getAttribute('header');
1542
+ const currentHeader = nativeElement.getAttribute(`header`);
1490
1543
  const groups = seeAlsoGroups.filter(group => group.includes(currentHeader)) || [];
1491
1544
  const seeAlsoSet = new Set(groups
1492
1545
  .join()
1493
- .split(',')
1546
+ .split(`,`)
1494
1547
  .filter(component => component && component !== currentHeader));
1495
1548
  return Array.from(seeAlsoSet);
1496
1549
  }
@@ -1509,7 +1562,7 @@ __decorate([
1509
1562
  ], TuiDocPageTabConnectorDirective.prototype, "pageTab", void 0);
1510
1563
  TuiDocPageTabConnectorDirective = __decorate([
1511
1564
  Directive({
1512
- selector: '[pageTab]',
1565
+ selector: `[pageTab]`,
1513
1566
  }),
1514
1567
  __param(0, Inject(TemplateRef))
1515
1568
  ], TuiDocPageTabConnectorDirective);
@@ -1521,22 +1574,22 @@ let TuiDocPageComponent = class TuiDocPageComponent {
1521
1574
  this.deprecated = deprecated;
1522
1575
  this.defaultTabs = defaultTabs;
1523
1576
  this.seeAlso = seeAlso;
1524
- this.header = '';
1525
- this.package = '';
1526
- this.type = '';
1527
- this.path = '';
1577
+ this.header = ``;
1578
+ this.package = ``;
1579
+ this.type = ``;
1580
+ this.path = ``;
1528
1581
  this.tabConnectors = EMPTY_QUERY;
1529
1582
  this.activeItemIndex = NaN;
1530
1583
  }
1531
1584
  get showSeeAlso() {
1532
1585
  return !!this.seeAlso.length && this.activeItemIndex === 0;
1533
1586
  }
1534
- getRouterLink(tab = '') {
1535
- return `./${tab.replace(/ /g, '_')}`;
1587
+ getRouterLink(tab = ``) {
1588
+ return `./${tab.replace(/ /g, `_`)}`;
1536
1589
  }
1537
1590
  };
1538
1591
  TuiDocPageComponent.ctorParameters = () => [
1539
- { type: String, decorators: [{ type: Attribute, args: ['deprecated',] }] },
1592
+ { type: String, decorators: [{ type: Attribute, args: [`deprecated`,] }] },
1540
1593
  { type: undefined, decorators: [{ type: Inject, args: [TUI_DOC_DEFAULT_TABS,] }] },
1541
1594
  { type: undefined, decorators: [{ type: Inject, args: [PAGE_SEE_ALSO,] }] }
1542
1595
  ];
@@ -1557,13 +1610,13 @@ __decorate([
1557
1610
  ], TuiDocPageComponent.prototype, "tabConnectors", void 0);
1558
1611
  TuiDocPageComponent = __decorate([
1559
1612
  Component({
1560
- selector: 'tui-doc-page',
1613
+ selector: `tui-doc-page`,
1561
1614
  template: "<header class=\"t-header\">\n <h1 class=\"t-title\">\n {{ header }}\n <tui-tag\n *ngIf=\"deprecated !== null\"\n value=\"deprecated\"\n status=\"custom\"\n class=\"t-tag t-tag_deprecated\"\n ></tui-tag>\n <tui-tag\n *ngIf=\"package\"\n status=\"custom\"\n class=\"t-tag t-tag_package\"\n [value]=\"package\"\n [autoColor]=\"true\"\n ></tui-tag>\n </h1>\n <tui-tabs-with-more\n *ngIf=\"tabConnectors.length\"\n class=\"t-tabs\"\n [(activeItemIndex)]=\"activeItemIndex\"\n >\n <ng-container *ngFor=\"let tab of tabConnectors; first as first; index as index\">\n <ng-container *ngIf=\"first; else dynamicTab\">\n <a\n *tuiTab\n tuiTab\n routerLink=\"./\"\n routerLinkActive\n [routerLinkActiveOptions]=\"{exact: true}\"\n >\n {{ tab.pageTab || defaultTabs[index] }}\n </a>\n </ng-container>\n <ng-template #dynamicTab>\n <a\n *tuiTab\n tuiTab\n routerLinkActive\n [routerLink]=\"getRouterLink(tab.pageTab || defaultTabs[index])\"\n >\n {{ tab.pageTab || defaultTabs[index] }}\n </a>\n </ng-template>\n </ng-container>\n </tui-tabs-with-more>\n <tui-doc-source-code\n class=\"t-source-code\"\n [header]=\"header\"\n [package]=\"package\"\n [type]=\"type\"\n [path]=\"path\"\n ></tui-doc-source-code>\n</header>\n<div class=\"t-content\">\n <ng-content></ng-content>\n <tui-doc-see-also\n *ngIf=\"showSeeAlso\"\n class=\"t-see-also\"\n [seeAlso]=\"seeAlso\"\n ></tui-doc-see-also>\n <ng-container *ngFor=\"let tab of tabConnectors; index as index\">\n <ng-container\n *ngIf=\"index === activeItemIndex\"\n [ngTemplateOutlet]=\"tab.template\"\n ></ng-container>\n </ng-container>\n</div>\n",
1562
1615
  changeDetection: ChangeDetectionStrategy.OnPush,
1563
1616
  providers: PAGE_PROVIDERS,
1564
1617
  styles: [":host{display:flex;flex-direction:column;min-height:0;flex-basis:0;flex-grow:1}.t-header{display:flex;font:var(--tui-font-heading-3);flex-wrap:wrap;min-height:7.25rem;color:var(--tui-text-01);box-shadow:inset 0 -1px 0 0 var(--tui-base-03);padding:3.75rem 0 0;box-sizing:border-box;flex-shrink:0;margin:0 min(10vw,8.75rem)}:host-context(tui-root._mobile) .t-header{font:var(--tui-font-heading-4);min-height:4.5rem;padding:1.25rem 1.25rem 0;margin:0}.t-title{min-width:100%;font-size:inherit;margin:0}.t-tag{vertical-align:middle;text-transform:uppercase;margin-right:.5rem}.t-tag_deprecated{background-color:var(--tui-error-fill)}.t-tag.t-tag_package{color:#000}.t-tabs{flex:1;margin:1.125rem .3125rem 0 0}:host-context(tui-root._mobile) .t-tabs{margin-top:.25rem}.t-content{padding:2rem 0;margin:0 min(10vw,8.75rem)}:host-context(tui-root._mobile) .t-content{padding:2rem 1.25rem;margin:0}.t-see-also{min-width:18.75rem;width:30%;float:right;margin-left:1.5rem}:host-context(tui-root._mobile) .t-see-also{float:none;width:100%;margin:0 0 1.5rem}.t-source-code{align-self:flex-end;line-height:2.75rem}"]
1565
1618
  }),
1566
- __param(0, Attribute('deprecated')),
1619
+ __param(0, Attribute(`deprecated`)),
1567
1620
  __param(1, Inject(TUI_DOC_DEFAULT_TABS)),
1568
1621
  __param(2, Inject(PAGE_SEE_ALSO))
1569
1622
  ], TuiDocPageComponent);
@@ -1578,14 +1631,14 @@ let TuiDocSeeAlsoComponent = class TuiDocSeeAlsoComponent {
1578
1631
  getRouterLink(pageTitle) {
1579
1632
  for (let i = 0; i < this.pages.length; i++) {
1580
1633
  const page = this.pages
1581
- .map(page => ('subPages' in page ? page.subPages : [page]))
1634
+ .map(page => (`subPages` in page ? page.subPages : [page]))
1582
1635
  .reduce((pages, subPages) => [...pages, ...subPages], [])
1583
1636
  .find((page) => page.title === pageTitle);
1584
1637
  if (page === null || page === void 0 ? void 0 : page.route) {
1585
1638
  return page.route;
1586
1639
  }
1587
1640
  }
1588
- return '';
1641
+ return ``;
1589
1642
  }
1590
1643
  };
1591
1644
  TuiDocSeeAlsoComponent.ctorParameters = () => [
@@ -1597,10 +1650,10 @@ __decorate([
1597
1650
  ], TuiDocSeeAlsoComponent.prototype, "seeAlso", void 0);
1598
1651
  TuiDocSeeAlsoComponent = __decorate([
1599
1652
  Component({
1600
- selector: 'tui-doc-see-also',
1601
- template: "<h5 class=\"header\">{{ text }}</h5>\n<ng-container *ngFor=\"let item of seeAlso; last as last\">\n <a\n tuiLink\n [routerLink]=\"getRouterLink(item)\"\n >\n {{ item }}\n </a>\n <ng-container *ngIf=\"!last\">{{ ', ' }}</ng-container>\n</ng-container>\n",
1653
+ selector: `tui-doc-see-also`,
1654
+ template: "<h5 class=\"t-header\">{{ text }}</h5>\n<ng-container *ngFor=\"let item of seeAlso; last as last\">\n <a\n tuiLink\n [routerLink]=\"getRouterLink(item)\"\n >\n {{ item }}\n </a>\n <ng-container *ngIf=\"!last\">{{ ', ' }}</ng-container>\n</ng-container>\n",
1602
1655
  changeDetection: ChangeDetectionStrategy.OnPush,
1603
- styles: [":host{display:block}.header{font-size:.6875rem;line-height:1rem;text-transform:uppercase;letter-spacing:.075em;color:var(--tui-text-02);margin:0 0 .5rem;white-space:nowrap}"]
1656
+ styles: [":host{display:block}.t-header{font-size:.6875rem;line-height:1rem;text-transform:uppercase;letter-spacing:.075em;color:var(--tui-text-02);margin:0 0 .5rem;white-space:nowrap}"]
1604
1657
  }),
1605
1658
  __param(0, Inject(TUI_DOC_SEE_ALSO_TEXT)),
1606
1659
  __param(1, Inject(TUI_DOC_PAGES))
@@ -1616,18 +1669,18 @@ TuiDocSeeAlsoModule = __decorate([
1616
1669
  })
1617
1670
  ], TuiDocSeeAlsoModule);
1618
1671
 
1619
- const TUI_DOC_SOURCE_CODE = new InjectionToken('Source code link', {
1620
- factory: () => '',
1672
+ const TUI_DOC_SOURCE_CODE = new InjectionToken(`Source code link`, {
1673
+ factory: () => ``,
1621
1674
  });
1622
1675
 
1623
1676
  let TuiDocSourceCodeComponent = class TuiDocSourceCodeComponent {
1624
1677
  constructor(sourceCode, text) {
1625
1678
  this.sourceCode = sourceCode;
1626
1679
  this.text = text;
1627
- this.header = '';
1628
- this.package = '';
1629
- this.type = '';
1630
- this.path = '';
1680
+ this.header = ``;
1681
+ this.package = ``;
1682
+ this.type = ``;
1683
+ this.path = ``;
1631
1684
  }
1632
1685
  get pathOptions() {
1633
1686
  return this.getPathOptions(this.header, this.package, this.type, this.path);
@@ -1662,7 +1715,7 @@ __decorate([
1662
1715
  ], TuiDocSourceCodeComponent.prototype, "getPathOptions", null);
1663
1716
  TuiDocSourceCodeComponent = __decorate([
1664
1717
  Component({
1665
- selector: 'tui-doc-source-code',
1718
+ selector: `tui-doc-source-code`,
1666
1719
  template: "<div\n *ngIf=\"!!sourceCode\"\n polymorpheus-outlet\n [content]=\"sourceCode\"\n [context]=\"pathOptions\"\n>\n <ng-template let-link>\n <a\n *ngIf=\"link\"\n tuiIconButton\n type=\"button\"\n icon=\"tuiIconCodeLarge\"\n appearance=\"icon\"\n target=\"_blank\"\n size=\"s\"\n [title]=\"text\"\n [href]=\"link\"\n ></a>\n </ng-template>\n</div>\n",
1667
1720
  changeDetection: ChangeDetectionStrategy.OnPush
1668
1721
  }),
@@ -1698,21 +1751,21 @@ TuiDocPageModule = __decorate([
1698
1751
  ], TuiDocPageModule);
1699
1752
 
1700
1753
  const TUI_EXAMPLE_PRIMARY_FILE_NAME = {
1701
- TS: 'TypeScript',
1702
- LESS: 'LESS',
1703
- HTML: 'HTML',
1754
+ TS: `TypeScript`,
1755
+ LESS: `LESS`,
1756
+ HTML: `HTML`,
1704
1757
  };
1705
1758
 
1706
1759
  // TODO: 3.0 remove in ivy compilation
1707
- const DEMO_TEXTS = ['Сделано с помощью директивы: ', 'Фон', 'Детали формы'];
1760
+ const DEMO_TEXTS = [`Сделано с помощью директивы: `, `Фон`, `Детали формы`];
1708
1761
  const DOC_TEXTS = [
1709
- 'Аргумент',
1710
- 'Тип',
1711
- 'Имя и описание',
1712
- 'Значение',
1713
- 'Для работы с динамическими шаблонами используется',
1762
+ `Аргумент`,
1763
+ `Тип`,
1764
+ `Имя и описание`,
1765
+ `Значение`,
1766
+ `Для работы с динамическими шаблонами используется`,
1714
1767
  ];
1715
- const EXAMPLE_TEXTS = ['Превью', 'Ссылка на пример скопирована', 'Готово'];
1768
+ const EXAMPLE_TEXTS = [`Превью`, `Ссылка на пример скопирована`, `Готово`];
1716
1769
  const TUI_DOC_RUSSIAN = [
1717
1770
  {
1718
1771
  provide: TUI_DOC_DEMO_TEXTS,
@@ -1728,19 +1781,19 @@ const TUI_DOC_RUSSIAN = [
1728
1781
  },
1729
1782
  {
1730
1783
  provide: TUI_DOC_MENU_TEXT,
1731
- useValue: 'Меню',
1784
+ useValue: `Меню`,
1732
1785
  },
1733
1786
  {
1734
1787
  provide: TUI_DOC_SEARCH_TEXT,
1735
- useValue: 'Поиск',
1788
+ useValue: `Поиск`,
1736
1789
  },
1737
1790
  {
1738
1791
  provide: TUI_DOC_SEE_ALSO_TEXT,
1739
- useValue: 'Смотрите также',
1792
+ useValue: `Смотрите также`,
1740
1793
  },
1741
1794
  {
1742
1795
  provide: TUI_DOC_SOURCE_CODE_TEXT,
1743
- useValue: 'Исходный код',
1796
+ useValue: `Исходный код`,
1744
1797
  },
1745
1798
  ];
1746
1799
 
@@ -1766,11 +1819,11 @@ TuiAddonDocModule = __decorate([
1766
1819
  function generateRoutes(type) {
1767
1820
  return [
1768
1821
  {
1769
- path: '',
1822
+ path: ``,
1770
1823
  component: type,
1771
1824
  children: [
1772
1825
  {
1773
- path: ':tab',
1826
+ path: `:tab`,
1774
1827
  component: type,
1775
1828
  },
1776
1829
  ],
@@ -1787,5 +1840,5 @@ const tuiGenerateRoutes = generateRoutes;
1787
1840
  * Generated bundle index. Do not edit.
1788
1841
  */
1789
1842
 
1790
- export { DEMO_TEXTS, DOC_TEXTS, EXAMPLE_TEXTS, ScrollIntoViewDirective, ScrollIntoViewModule, TUI_DOC_CODE_ACTIONS, TUI_DOC_CODE_EDITOR, TUI_DOC_DEFAULT_TABS, TUI_DOC_DEMO_TEXTS, TUI_DOC_DOCUMENTATION_TEXTS, TUI_DOC_EXAMPLE_CONTENT_PROCESSOR, TUI_DOC_EXAMPLE_TEXTS, TUI_DOC_LOGO, TUI_DOC_MENU_TEXT, TUI_DOC_PAGES, TUI_DOC_PAGE_LOADED, TUI_DOC_RUSSIAN, TUI_DOC_SCROLL_BEHAVIOR, TUI_DOC_SEARCH_TEXT, TUI_DOC_SEE_ALSO, TUI_DOC_SEE_ALSO_TEXT, TUI_DOC_SOURCE_CODE, TUI_DOC_SOURCE_CODE_TEXT, TUI_DOC_TITLE, TUI_EXAMPLE_PRIMARY_FILE_NAME, TuiAddonDocModule, TuiDocCodeComponent, TuiDocCodeModule, TuiDocCopyComponent, TuiDocCopyModule, TuiDocDemoComponent, TuiDocDemoModule, TuiDocDocumentationComponent, TuiDocDocumentationModule, TuiDocDocumentationPropertyConnectorDirective, TuiDocExampleComponent, TuiDocExampleModule, TuiDocMainComponent, TuiDocMainModule, TuiDocNavigationComponent, TuiDocNavigationModule, TuiDocPageComponent, TuiDocPageModule, TuiDocPageTabConnectorDirective, TuiScrollIntoViewLinkDirective, TuiScrollIntoViewLinkModule, coerceValue, generateRoutes, rawLoad, rawLoadRecord, tryParseMarkdownCodeBlock, tuiCoerceValue, tuiGenerateRoutes, tuiRawLoad, tuiRawLoadRecord, tuiTryParseMarkdownCodeBlock, TuiInputOpacityModule as ɵa, TuiInputOpacityDirective as ɵb, TuiDocExampleGetTabsPipe as ɵc, TuiDocExampleCapitalizePipe as ɵd, TuiDocHeaderModule as ɵe, NAVIGATION_TITLE as ɵf, NAVIGATION_LABELS as ɵg, NAVIGATION_ITEMS as ɵh, NAVIGATION_PROVIDERS as ɵi, titleProviderFactory as ɵj, labelsProviderFactory as ɵk, itemsProviderFactory as ɵl, TuiDocHeaderComponent as ɵm, PAGE_SEE_ALSO as ɵn, PAGE_PROVIDERS as ɵo, seeAlsoProviderFactory as ɵp, TuiDocSeeAlsoModule as ɵq, TuiDocSeeAlsoComponent as ɵr, TuiDocSourceCodeModule as ɵs, TuiDocSourceCodeComponent as ɵt };
1843
+ export { DEMO_TEXTS, DOC_TEXTS, EXAMPLE_TEXTS, ScrollIntoViewDirective, ScrollIntoViewModule, TUI_DOC_CODE_ACTIONS, TUI_DOC_CODE_EDITOR, TUI_DOC_DEFAULT_TABS, TUI_DOC_DEMO_TEXTS, TUI_DOC_DOCUMENTATION_TEXTS, TUI_DOC_EXAMPLE_CONTENT_PROCESSOR, TUI_DOC_EXAMPLE_TEXTS, TUI_DOC_LOGO, TUI_DOC_MENU_TEXT, TUI_DOC_PAGES, TUI_DOC_PAGE_LOADED, TUI_DOC_RUSSIAN, TUI_DOC_SCROLL_BEHAVIOR, TUI_DOC_SEARCH_TEXT, TUI_DOC_SEE_ALSO, TUI_DOC_SEE_ALSO_TEXT, TUI_DOC_SOURCE_CODE, TUI_DOC_SOURCE_CODE_TEXT, TUI_DOC_TITLE, TUI_EXAMPLE_PRIMARY_FILE_NAME, TuiAddonDocModule, TuiDocCodeComponent, TuiDocCodeModule, TuiDocCopyComponent, TuiDocCopyModule, TuiDocDemoComponent, TuiDocDemoModule, TuiDocDocumentationComponent, TuiDocDocumentationModule, TuiDocDocumentationPropertyConnectorDirective, TuiDocExampleComponent, TuiDocExampleModule, TuiDocMainComponent, TuiDocMainModule, TuiDocNavigationComponent, TuiDocNavigationModule, TuiDocPageComponent, TuiDocPageModule, TuiDocPageTabConnectorDirective, TuiLanguageSwitcherComponent, TuiLanguageSwitcherModule, TuiScrollIntoViewLinkDirective, TuiScrollIntoViewLinkModule, coerceValue, generateRoutes, rawLoad, rawLoadRecord, tryParseMarkdownCodeBlock, tuiCoerceValue, tuiGenerateRoutes, tuiRawLoad, tuiRawLoadRecord, tuiTryParseMarkdownCodeBlock, TuiInputOpacityModule as ɵa, TuiInputOpacityDirective as ɵb, TuiDocExampleGetTabsPipe as ɵc, TuiDocExampleCapitalizePipe as ɵd, TuiDocHeaderModule as ɵe, NAVIGATION_TITLE as ɵf, NAVIGATION_LABELS as ɵg, NAVIGATION_ITEMS as ɵh, NAVIGATION_PROVIDERS as ɵi, titleProviderFactory as ɵj, labelsProviderFactory as ɵk, itemsProviderFactory as ɵl, TuiDocHeaderComponent as ɵm, PAGE_SEE_ALSO as ɵn, PAGE_PROVIDERS as ɵo, seeAlsoProviderFactory as ɵp, TuiDocSeeAlsoModule as ɵq, TuiDocSeeAlsoComponent as ɵr, TuiDocSourceCodeModule as ɵs, TuiDocSourceCodeComponent as ɵt };
1791
1844
  //# sourceMappingURL=taiga-ui-addon-doc.js.map