@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
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs'), require('rxjs/operators'), require('markdown-it'), require('@angular/common'), require('ngx-highlightjs'), require('@taiga-ui/cdk'), require('@taiga-ui/kit'), require('@taiga-ui/core'), require('@angular/forms'), require('@angular/router'), require('@angular/animations'), require('@angular/cdk/clipboard'), require('@ng-web-apis/common'), require('@tinkoff/ng-polymorpheus'), require('@taiga-ui/addon-mobile'), require('@angular/platform-browser')) :
3
- typeof define === 'function' && define.amd ? define('@taiga-ui/addon-doc', ['exports', '@angular/core', 'rxjs', 'rxjs/operators', 'markdown-it', '@angular/common', 'ngx-highlightjs', '@taiga-ui/cdk', '@taiga-ui/kit', '@taiga-ui/core', '@angular/forms', '@angular/router', '@angular/animations', '@angular/cdk/clipboard', '@ng-web-apis/common', '@tinkoff/ng-polymorpheus', '@taiga-ui/addon-mobile', '@angular/platform-browser'], factory) :
4
- (global = global || self, factory((global['taiga-ui'] = global['taiga-ui'] || {}, global['taiga-ui']['addon-doc'] = {}), global.ng.core, global.rxjs, global.rxjs.operators, global.MarkdownIt, global.ng.common, global.ngxHighlightjs, global.cdk, global.kit, global.core$1, global.ng.forms, global.ng.router, global.ng.animations, global.ng.cdk.clipboard, global.common$1, global.ngPolymorpheus, global.addonMobile, global.ng.platformBrowser));
5
- }(this, (function (exports, core, rxjs, operators, MarkdownIt, common, ngxHighlightjs, cdk, kit, core$1, forms, router, animations, clipboard, common$1, ngPolymorpheus, addonMobile, platformBrowser) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs'), require('rxjs/operators'), require('markdown-it'), require('@angular/common'), require('ngx-highlightjs'), require('@taiga-ui/cdk'), require('@taiga-ui/kit'), require('@taiga-ui/core'), require('@angular/forms'), require('@angular/router'), require('@angular/animations'), require('@angular/cdk/clipboard'), require('@ng-web-apis/common'), require('@tinkoff/ng-polymorpheus'), require('@taiga-ui/i18n'), require('@taiga-ui/addon-mobile'), require('@angular/platform-browser')) :
3
+ typeof define === 'function' && define.amd ? define('@taiga-ui/addon-doc', ['exports', '@angular/core', 'rxjs', 'rxjs/operators', 'markdown-it', '@angular/common', 'ngx-highlightjs', '@taiga-ui/cdk', '@taiga-ui/kit', '@taiga-ui/core', '@angular/forms', '@angular/router', '@angular/animations', '@angular/cdk/clipboard', '@ng-web-apis/common', '@tinkoff/ng-polymorpheus', '@taiga-ui/i18n', '@taiga-ui/addon-mobile', '@angular/platform-browser'], factory) :
4
+ (global = global || self, factory((global['taiga-ui'] = global['taiga-ui'] || {}, global['taiga-ui']['addon-doc'] = {}), global.ng.core, global.rxjs, global.rxjs.operators, global.MarkdownIt, global.ng.common, global.ngxHighlightjs, global.cdk, global.kit, global.core$1, global.ng.forms, global.ng.router, global.ng.animations, global.ng.cdk.clipboard, global.common$1, global.ngPolymorpheus, global.i18n, global.addonMobile, global.ng.platformBrowser));
5
+ }(this, (function (exports, core, rxjs, operators, MarkdownIt, common, ngxHighlightjs, cdk, kit, core$1, forms, router, animations, clipboard, common$1, ngPolymorpheus, i18n, addonMobile, platformBrowser) { 'use strict';
6
6
 
7
7
  MarkdownIt = MarkdownIt && Object.prototype.hasOwnProperty.call(MarkdownIt, 'default') ? MarkdownIt['default'] : MarkdownIt;
8
8
 
@@ -285,12 +285,12 @@
285
285
  */
286
286
  // eslint-disable-next-line @typescript-eslint/naming-convention
287
287
  function tryParseMarkdownCodeBlock(text) {
288
- if (text === void 0) { text = ''; }
288
+ if (text === void 0) { text = ""; }
289
289
  var tokens = new MarkdownIt().parse(text, {});
290
290
  var result = tokens
291
291
  .filter(function (_a) {
292
292
  var tag = _a.tag, type = _a.type;
293
- return tag === 'code' && type === 'fence';
293
+ return tag === "code" && type === "fence";
294
294
  })
295
295
  .map(function (_a) {
296
296
  var content = _a.content;
@@ -302,8 +302,8 @@
302
302
 
303
303
  var TuiDocCodeComponent = /** @class */ (function () {
304
304
  function TuiDocCodeComponent() {
305
- this.rawLoader$$ = new rxjs.BehaviorSubject('');
306
- this.filename = '';
305
+ this.rawLoader$$ = new rxjs.BehaviorSubject("");
306
+ this.filename = "";
307
307
  this.processor$ = this.rawLoader$$.pipe(operators.switchMap(rawLoad), operators.map(tryParseMarkdownCodeBlock));
308
308
  }
309
309
  Object.defineProperty(TuiDocCodeComponent.prototype, "code", {
@@ -327,11 +327,11 @@
327
327
  core.Input()
328
328
  ], TuiDocCodeComponent.prototype, "code", null);
329
329
  __decorate([
330
- core.HostBinding('class._has-filename')
330
+ core.HostBinding("class._has-filename")
331
331
  ], TuiDocCodeComponent.prototype, "hasFilename", null);
332
332
  TuiDocCodeComponent = __decorate([
333
333
  core.Component({
334
- selector: 'tui-doc-code',
334
+ selector: "tui-doc-code",
335
335
  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",
336
336
  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}"]
337
337
  })
@@ -377,7 +377,7 @@
377
377
  ], TuiDocCopyComponent.prototype, "copied$", null);
378
378
  TuiDocCopyComponent = __decorate([
379
379
  core.Component({
380
- selector: 'tui-doc-copy',
380
+ selector: "tui-doc-copy",
381
381
  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",
382
382
  changeDetection: core.ChangeDetectionStrategy.OnPush,
383
383
  providers: [cdk.TuiDestroyService],
@@ -408,8 +408,8 @@
408
408
  * Works with a tuple
409
409
  * [@string tuiMode tooltip content, @string word 'background', @string 'form value']
410
410
  */
411
- var TUI_DOC_DEMO_TEXTS = new core.InjectionToken('tui-doc-demo i18n texts', {
412
- factory: function () { return ['Read more more about modes: ', 'Background', 'Form value']; },
411
+ var TUI_DOC_DEMO_TEXTS = new core.InjectionToken("tui-doc-demo i18n texts", {
412
+ factory: function () { return ["Read more more about modes: ", "Background", "Form value"]; },
413
413
  });
414
414
  /**
415
415
  * Works with a tuple
@@ -421,13 +421,13 @@
421
421
  * @string message for tooltip about ng-polymorpheus
422
422
  * ]
423
423
  */
424
- var TUI_DOC_DOCUMENTATION_TEXTS = new core.InjectionToken('tui-doc-documentation i18n texts', {
424
+ var TUI_DOC_DOCUMENTATION_TEXTS = new core.InjectionToken("tui-doc-documentation i18n texts", {
425
425
  factory: function () { return [
426
- 'Argument',
427
- 'Type',
428
- 'Name and description',
429
- 'Value',
430
- 'Learn about our dynamic templates from ',
426
+ "Argument",
427
+ "Type",
428
+ "Name and description",
429
+ "Value",
430
+ "Learn about our dynamic templates from ",
431
431
  ]; },
432
432
  });
433
433
  /**
@@ -438,20 +438,20 @@
438
438
  * @string link to a sample copied message label
439
439
  * ]
440
440
  */
441
- var TUI_DOC_EXAMPLE_TEXTS = new core.InjectionToken('tui-doc-example i18n texts', {
442
- factory: function () { return ['Preview', 'Link to a sample was successfully copied', 'Done']; },
441
+ var TUI_DOC_EXAMPLE_TEXTS = new core.InjectionToken("tui-doc-example i18n texts", {
442
+ factory: function () { return ["Preview", "Link to a sample was successfully copied", "Done"]; },
443
443
  });
444
- var TUI_DOC_MENU_TEXT = new core.InjectionToken('menu i18n text', {
445
- factory: function () { return 'Menu'; },
444
+ var TUI_DOC_MENU_TEXT = new core.InjectionToken("menu i18n text", {
445
+ factory: function () { return "Menu"; },
446
446
  });
447
- var TUI_DOC_SEARCH_TEXT = new core.InjectionToken('search i18n text', {
448
- factory: function () { return 'Search'; },
447
+ var TUI_DOC_SEARCH_TEXT = new core.InjectionToken("search i18n text", {
448
+ factory: function () { return "Search"; },
449
449
  });
450
- var TUI_DOC_SEE_ALSO_TEXT = new core.InjectionToken('tui-doc-see-also i18n text', {
451
- factory: function () { return 'See also'; },
450
+ var TUI_DOC_SEE_ALSO_TEXT = new core.InjectionToken("tui-doc-see-also i18n text", {
451
+ factory: function () { return "See also"; },
452
452
  });
453
- var TUI_DOC_SOURCE_CODE_TEXT = new core.InjectionToken('tui-doc-source-code i18n text', {
454
- factory: function () { return 'Source code'; },
453
+ var TUI_DOC_SOURCE_CODE_TEXT = new core.InjectionToken("tui-doc-source-code i18n text", {
454
+ factory: function () { return "Source code"; },
455
455
  });
456
456
 
457
457
  var MIN_COMPONENT_WIDTH = 104;
@@ -467,14 +467,14 @@
467
467
  this.wrapperWidth = 0;
468
468
  this.control = null;
469
469
  this.template = null;
470
- this.updateOnVariants = ['change', 'blur', 'submit'];
471
- this.updateOn = 'change';
470
+ this.updateOnVariants = ["change", "blur", "submit"];
471
+ this.updateOn = "change";
472
472
  this.expanded = false;
473
473
  this.opaque = true;
474
474
  this.modeControl = new forms.FormControl();
475
475
  this.mode = null;
476
476
  this.change$ = new rxjs.Subject();
477
- this.items = ['onLight', 'onDark'];
477
+ this.items = ["onLight", "onDark"];
478
478
  this.isBrowser = common.isPlatformBrowser(platformId);
479
479
  var parsedMode = locationRef.path().match(/tuiMode=(onDark|onLight)/);
480
480
  if (parsedMode !== null && parsedMode.length > 0) {
@@ -506,9 +506,9 @@
506
506
  }
507
507
  var paddingLeft = this.isBrowser
508
508
  ? getComputedStyle(this.content.nativeElement).paddingLeft
509
- : '0';
509
+ : "0";
510
510
  var offsetWidth = this.content.nativeElement.offsetWidth;
511
- this.resizerText.nativeElement.textContent = String(offsetWidth - parseInt(paddingLeft || '0', 10) * 2);
511
+ this.resizerText.nativeElement.textContent = String(offsetWidth - parseInt(paddingLeft || "0", 10) * 2);
512
512
  };
513
513
  TuiDocDemoComponent.prototype.onDragStart = function (event) {
514
514
  event.preventDefault();
@@ -541,7 +541,7 @@
541
541
  if (!this.wrapper) {
542
542
  return;
543
543
  }
544
- this.renderer.setStyle(this.wrapper.nativeElement, 'width', cdk.px(Math.max(this.wrapperWidth - delta, MIN_COMPONENT_WIDTH)));
544
+ this.renderer.setStyle(this.wrapper.nativeElement, "width", cdk.px(Math.max(this.wrapperWidth - delta, MIN_COMPONENT_WIDTH)));
545
545
  };
546
546
  var TuiDocDemoComponent_1;
547
547
  TuiDocDemoComponent.ctorParameters = function () { return [
@@ -554,13 +554,13 @@
554
554
  { type: Array, decorators: [{ type: core.Inject, args: [TUI_DOC_DEMO_TEXTS,] }] }
555
555
  ]; };
556
556
  __decorate([
557
- core.ViewChild('content')
557
+ core.ViewChild("content")
558
558
  ], TuiDocDemoComponent.prototype, "content", void 0);
559
559
  __decorate([
560
- core.ViewChild('wrapper')
560
+ core.ViewChild("wrapper")
561
561
  ], TuiDocDemoComponent.prototype, "wrapper", void 0);
562
562
  __decorate([
563
- core.ViewChild('resizerText')
563
+ core.ViewChild("resizerText")
564
564
  ], TuiDocDemoComponent.prototype, "resizerText", void 0);
565
565
  __decorate([
566
566
  core.Input()
@@ -569,11 +569,11 @@
569
569
  core.ContentChild(core.TemplateRef)
570
570
  ], TuiDocDemoComponent.prototype, "template", void 0);
571
571
  __decorate([
572
- core.HostListener('window:resize')
572
+ core.HostListener("window:resize")
573
573
  ], TuiDocDemoComponent.prototype, "onResize", null);
574
574
  TuiDocDemoComponent = TuiDocDemoComponent_1 = __decorate([
575
575
  core.Component({
576
- selector: 'tui-doc-demo',
576
+ selector: "tui-doc-demo",
577
577
  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",
578
578
  changeDetection: core.ChangeDetectionStrategy.OnPush,
579
579
  providers: [
@@ -636,7 +636,7 @@
636
636
  */
637
637
  // eslint-disable-next-line @typescript-eslint/naming-convention
638
638
  function rgbToHex(r, g, b) {
639
- return "#" + [r, g, b].map(function (x) { return x.toString(16).padStart(2, '0'); }).join('');
639
+ return "#" + [r, g, b].map(function (x) { return x.toString(16).padStart(2, "0"); }).join("");
640
640
  }
641
641
  var tuiRgbToHex = rgbToHex;
642
642
  /**
@@ -645,10 +645,10 @@
645
645
  // eslint-disable-next-line @typescript-eslint/naming-convention
646
646
  function hexToRgb(hex) {
647
647
  var matches = hex
648
- .replace('#', '')
649
- .split('')
648
+ .replace("#", "")
649
+ .split("")
650
650
  .map(function (char, _, array) { return (array.length === 3 ? char + char : char); })
651
- .join('')
651
+ .join("")
652
652
  .match(/.{2}/g);
653
653
  return matches
654
654
  ? matches.map(function (x) { return Number.parseInt(x, 16); })
@@ -658,18 +658,18 @@
658
658
 
659
659
  function inspectArray(array, depth) {
660
660
  if (depth === 0) {
661
- return '[]';
661
+ return "[\u2026]";
662
662
  }
663
- var result = '';
663
+ var result = "";
664
664
  var first = true;
665
665
  for (var index = 0; index < array.length; index++) {
666
666
  if (first) {
667
667
  first = false;
668
668
  }
669
669
  else {
670
- result += ', ';
670
+ result += ", ";
671
671
  }
672
- result += index in array ? inspectAny(array[index], depth - 1) : 'empty';
672
+ result += index in array ? inspectAny(array[index], depth - 1) : "empty";
673
673
  }
674
674
  return "[" + result + "]";
675
675
  }
@@ -677,7 +677,7 @@
677
677
  if (depth === 0) {
678
678
  return "{\u2026}";
679
679
  }
680
- var result = '';
680
+ var result = "";
681
681
  var first = true;
682
682
  for (var key in object) {
683
683
  if (!object.hasOwnProperty(key)) {
@@ -687,7 +687,7 @@
687
687
  first = false;
688
688
  }
689
689
  else {
690
- result += ', ';
690
+ result += ", ";
691
691
  }
692
692
  result += key + ": " + inspectAny(object[key], depth - 1);
693
693
  }
@@ -703,15 +703,15 @@
703
703
  // eslint-disable-next-line @typescript-eslint/naming-convention
704
704
  function inspectAny(data, depth) {
705
705
  if (data === null) {
706
- return 'null';
706
+ return "null";
707
707
  }
708
708
  switch (typeof data) {
709
- case 'string':
709
+ case "string":
710
710
  return "'" + data + "'";
711
- case 'undefined':
712
- case 'number':
713
- case 'boolean':
714
- case 'function':
711
+ case "undefined":
712
+ case "number":
713
+ case "boolean":
714
+ case "function":
715
715
  return String(data);
716
716
  }
717
717
  if (data instanceof RegExp) {
@@ -734,7 +734,7 @@
734
734
  return null;
735
735
  }
736
736
  else if (isBooleanParamValue(prepared)) {
737
- return String(prepared) === 'true';
737
+ return String(prepared) === "true";
738
738
  }
739
739
  else if (isNumberParamValue(prepared)) {
740
740
  return Number(prepared);
@@ -751,10 +751,10 @@
751
751
  }
752
752
  var tuiCoerceValue = coerceValue;
753
753
  function isEmptyParamValue(value) {
754
- return ['undefined', 'null', 'NaN', 'Infinity'].includes(value);
754
+ return ["undefined", "null", "NaN", "Infinity"].includes(value);
755
755
  }
756
756
  function isBooleanParamValue(value) {
757
- return value === 'true' || value === 'false';
757
+ return value === "true" || value === "false";
758
758
  }
759
759
  function isNumberParamValue(value) {
760
760
  // TODO: investigate to disallow potentially catastrophic exponential-time regular expressions.
@@ -762,13 +762,13 @@
762
762
  return /^-?[\d.]+(?:e-?\d+)?$/.test(value);
763
763
  }
764
764
  function isPossibleArray(value) {
765
- return value.startsWith('[') && value.endsWith(']');
765
+ return value.startsWith("[") && value.endsWith("]");
766
766
  }
767
767
  function isPossibleObject(value) {
768
- return value.startsWith('{') && value.endsWith('}');
768
+ return value.startsWith("{") && value.endsWith("}");
769
769
  }
770
770
 
771
- var SERIALIZED_SUFFIX = '$';
771
+ var SERIALIZED_SUFFIX = "$";
772
772
  // @bad TODO: refactor output and value sync
773
773
  var TuiDocDocumentationPropertyConnectorDirective = /** @class */ (function () {
774
774
  function TuiDocDocumentationPropertyConnectorDirective(template, locationRef, activatedRoute, urlSerializer) {
@@ -776,9 +776,9 @@
776
776
  this.locationRef = locationRef;
777
777
  this.activatedRoute = activatedRoute;
778
778
  this.urlSerializer = urlSerializer;
779
- this.documentationPropertyName = '';
779
+ this.documentationPropertyName = "";
780
780
  this.documentationPropertyMode = null;
781
- this.documentationPropertyType = '';
781
+ this.documentationPropertyType = "";
782
782
  this.documentationPropertyDeprecated = false;
783
783
  this.documentationPropertyValues = null;
784
784
  this.documentationPropertyValueChange = new core.EventEmitter();
@@ -791,11 +791,11 @@
791
791
  Object.defineProperty(TuiDocDocumentationPropertyConnectorDirective.prototype, "attrName", {
792
792
  get: function () {
793
793
  switch (this.documentationPropertyMode) {
794
- case 'input':
794
+ case "input":
795
795
  return "[" + this.documentationPropertyName + "]";
796
- case 'output':
796
+ case "output":
797
797
  return "(" + this.documentationPropertyName + ")";
798
- case 'input-output':
798
+ case "input-output":
799
799
  return "[(" + this.documentationPropertyName + ")]";
800
800
  default:
801
801
  return this.documentationPropertyName;
@@ -813,7 +813,7 @@
813
813
  });
814
814
  Object.defineProperty(TuiDocDocumentationPropertyConnectorDirective.prototype, "shouldShowValues", {
815
815
  get: function () {
816
- return this.documentationPropertyMode !== 'output';
816
+ return this.documentationPropertyMode !== "output";
817
817
  },
818
818
  enumerable: true,
819
819
  configurable: true
@@ -849,7 +849,7 @@
849
849
  var computedValue = isValueAvailableByKey && this.documentationPropertyValues
850
850
  ? this.documentationPropertyValues.indexOf(value)
851
851
  : value;
852
- var suffix = isValueAvailableByKey ? SERIALIZED_SUFFIX : '';
852
+ var suffix = isValueAvailableByKey ? SERIALIZED_SUFFIX : "";
853
853
  var propName = this.documentationPropertyName + suffix;
854
854
  tree.queryParams = __assign(__assign({}, tree.queryParams), (_a = {}, _a[propName] = computedValue, _a));
855
855
  this.locationRef.go(String(tree));
@@ -883,8 +883,8 @@
883
883
  ], TuiDocDocumentationPropertyConnectorDirective.prototype, "documentationPropertyValueChange", void 0);
884
884
  TuiDocDocumentationPropertyConnectorDirective = __decorate([
885
885
  core.Directive({
886
- selector: 'ng-template[documentationPropertyName]',
887
- exportAs: 'documentationProperty',
886
+ selector: "ng-template[documentationPropertyName]",
887
+ exportAs: "documentationProperty",
888
888
  }),
889
889
  __param(0, core.Inject(core.TemplateRef)),
890
890
  __param(1, core.Inject(common.Location)),
@@ -901,7 +901,7 @@
901
901
  function TuiDocDocumentationComponent(changeDetectorRef, texts) {
902
902
  this.changeDetectorRef = changeDetectorRef;
903
903
  this.texts = texts;
904
- this.heading = '';
904
+ this.heading = "";
905
905
  this.showValues = true;
906
906
  this.isAPI = false;
907
907
  this.propertiesConnectors = cdk.EMPTY_QUERY;
@@ -925,71 +925,71 @@
925
925
  TuiDocDocumentationComponent.prototype.getColor = function (color) {
926
926
  if (color.length === 4) {
927
927
  return color
928
- .split('')
928
+ .split("")
929
929
  .reduce(function (result, current) { return __spread(result, [current, current]); }, [])
930
- .join('')
931
- .replace('#', '');
930
+ .join("")
931
+ .replace("#", "");
932
932
  }
933
- if (color.startsWith('#')) {
933
+ if (color.startsWith("#")) {
934
934
  return color;
935
935
  }
936
- if (color === 'transparent') {
937
- return '#000000';
936
+ if (color === "transparent") {
937
+ return "#000000";
938
938
  }
939
939
  var parsed = color
940
- .replace('rgb(', '')
941
- .replace('rgba(', '')
942
- .replace(')', '')
943
- .replace(' ', '')
944
- .split(',')
940
+ .replace("rgb(", "")
941
+ .replace("rgba(", "")
942
+ .replace(")", "")
943
+ .replace(" ", "")
944
+ .split(",")
945
945
  .map(function (v) { return Number.parseInt(v, 10); });
946
946
  return rgbToHex.apply(void 0, __spread(parsed));
947
947
  };
948
948
  TuiDocDocumentationComponent.prototype.getOpacity = function (color) {
949
- if (color.startsWith('#') || color.startsWith('rgb(')) {
949
+ if (color.startsWith("#") || color.startsWith("rgb(")) {
950
950
  return 100;
951
951
  }
952
- if (color === 'transparent') {
952
+ if (color === "transparent") {
953
953
  return 0;
954
954
  }
955
- var lastComma = color.lastIndexOf(',');
955
+ var lastComma = color.lastIndexOf(",");
956
956
  var parsed = color
957
957
  .slice(lastComma)
958
- .replace(')', '')
959
- .replace(' ', '')
960
- .replace(',', '');
958
+ .replace(")", "")
959
+ .replace(" ", "")
960
+ .replace(",", "");
961
961
  return Math.round(Number.parseFloat(parsed) * 100);
962
962
  };
963
963
  TuiDocDocumentationComponent.prototype.onColorChange = function (connector, color) {
964
- var opacity = this.getOpacity(connector.documentationPropertyValue || '');
964
+ var opacity = this.getOpacity(connector.documentationPropertyValue || "");
965
965
  if (opacity === 100) {
966
966
  connector.onValueChange(color);
967
967
  return;
968
968
  }
969
- var rgb = hexToRgb(color).join(', ');
969
+ var rgb = hexToRgb(color).join(", ");
970
970
  var result = "rgba(" + rgb + ", " + opacity / 100 + ")";
971
971
  connector.onValueChange(result);
972
972
  };
973
973
  TuiDocDocumentationComponent.prototype.onOpacityChange = function (connector, opacity) {
974
- var hex = this.getColor(connector.documentationPropertyValue || '');
974
+ var hex = this.getColor(connector.documentationPropertyValue || "");
975
975
  var rgb = hexToRgb(hex);
976
976
  var result = "rgba(" + rgb + ", " + opacity / 100 + ")";
977
977
  connector.onValueChange(result);
978
978
  };
979
979
  TuiDocDocumentationComponent.prototype.stripOptional = function (name) {
980
- return name.replace('?', '');
980
+ return name.replace("?", "");
981
981
  };
982
982
  TuiDocDocumentationComponent.prototype.isOptional = function (name) {
983
- return name.includes('?');
983
+ return name.includes("?");
984
984
  };
985
985
  TuiDocDocumentationComponent.prototype.isPrimitivePolymorpheusContent = function (value) {
986
- return typeof value === 'string' || typeof value === 'number';
986
+ return typeof value === "string" || typeof value === "number";
987
987
  };
988
988
  TuiDocDocumentationComponent.prototype.showCleaner = function (type) {
989
- return type.includes('null');
989
+ return type.includes("null");
990
990
  };
991
991
  TuiDocDocumentationComponent.prototype.showContentTooltip = function (type) {
992
- return type.includes('PolymorpheusContent');
992
+ return type.includes("PolymorpheusContent");
993
993
  };
994
994
  TuiDocDocumentationComponent.prototype.inspectAny = function (data) {
995
995
  return inspectAny(data, 2);
@@ -1012,12 +1012,12 @@
1012
1012
  ], TuiDocDocumentationComponent.prototype, "propertiesConnectors", void 0);
1013
1013
  TuiDocDocumentationComponent = __decorate([
1014
1014
  core.Component({
1015
- selector: 'tui-doc-documentation',
1015
+ selector: "tui-doc-documentation",
1016
1016
  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",
1017
1017
  changeDetection: core.ChangeDetectionStrategy.OnPush,
1018
1018
  animations: [
1019
- animations.trigger('emitEvent', [
1020
- animations.transition(':increment', [animations.style({ opacity: 1 }), animations.animate('500ms ease-in')]),
1019
+ animations.trigger("emitEvent", [
1020
+ animations.transition(":increment", [animations.style({ opacity: 1 }), animations.animate("500ms ease-in")]),
1021
1021
  ]),
1022
1022
  ],
1023
1023
  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)}"]
@@ -1037,7 +1037,7 @@
1037
1037
  set: function (opacity) {
1038
1038
  var nativeFocusableElement = this.tuiFocusableComponent.nativeFocusableElement;
1039
1039
  if (nativeFocusableElement) {
1040
- this.renderer.setStyle(nativeFocusableElement, 'opacity', opacity / 100);
1040
+ this.renderer.setStyle(nativeFocusableElement, "opacity", opacity / 100);
1041
1041
  }
1042
1042
  },
1043
1043
  enumerable: true,
@@ -1052,7 +1052,7 @@
1052
1052
  ], TuiInputOpacityDirective.prototype, "tuiInputOpacity", null);
1053
1053
  TuiInputOpacityDirective = __decorate([
1054
1054
  core.Directive({
1055
- selector: '[tuiInputOpacity]',
1055
+ selector: "[tuiInputOpacity]",
1056
1056
  }),
1057
1057
  __param(0, core.Inject(core.Renderer2)),
1058
1058
  __param(1, core.Inject(cdk.TUI_FOCUSABLE_ITEM_ACCESSOR))
@@ -1111,13 +1111,13 @@
1111
1111
  return TuiDocDocumentationModule;
1112
1112
  }());
1113
1113
 
1114
- var TUI_DOC_CODE_ACTIONS = new core.InjectionToken('Code actions for the opened tab with code example', {
1115
- factory: function () { return ''; },
1114
+ var TUI_DOC_CODE_ACTIONS = new core.InjectionToken("Code actions for the opened tab with code example", {
1115
+ factory: function () { return ""; },
1116
1116
  });
1117
1117
 
1118
- var TUI_DOC_CODE_EDITOR = new core.InjectionToken('Contains service for opening online IDE e.g. Stackblitz');
1118
+ var TUI_DOC_CODE_EDITOR = new core.InjectionToken("Contains service for opening online IDE e.g. Stackblitz");
1119
1119
 
1120
- var TUI_DOC_EXAMPLE_CONTENT_PROCESSOR = new core.InjectionToken('Processes content in example', { factory: function () { return rxjs.identity; } });
1120
+ var TUI_DOC_EXAMPLE_CONTENT_PROCESSOR = new core.InjectionToken("Processes content in example", { factory: function () { return rxjs.identity; } });
1121
1121
 
1122
1122
  /**
1123
1123
  * @deprecated: use {@link tuiRawLoadRecord} instead
@@ -1186,8 +1186,8 @@
1186
1186
  this.route = route;
1187
1187
  this.ngLocation = ngLocation;
1188
1188
  this.rawLoader$$ = new rxjs.BehaviorSubject({});
1189
- this.heading = '';
1190
- this.description = '';
1189
+ this.heading = "";
1190
+ this.description = "";
1191
1191
  this.componentName = this.location.pathname.slice(1);
1192
1192
  this.defaultTabIndex = 0;
1193
1193
  this.defaultTab = this.texts[this.defaultTabIndex];
@@ -1207,7 +1207,7 @@
1207
1207
  configurable: true
1208
1208
  });
1209
1209
  TuiDocExampleComponent.prototype.copyExampleLink = function () {
1210
- var hashPosition = this.location.href.indexOf('#');
1210
+ var hashPosition = this.location.href.indexOf("#");
1211
1211
  var currentUrl = hashPosition > -1
1212
1212
  ? this.location.href.slice(0, Math.max(0, hashPosition))
1213
1213
  : this.location.href;
@@ -1225,16 +1225,16 @@
1225
1225
  var _this = this;
1226
1226
  var _a, _b;
1227
1227
  this.loading$.next(true);
1228
- (_a = this.codeEditor) === null || _a === void 0 ? void 0 : _a.edit(this.componentName, (_b = this.id) !== null && _b !== void 0 ? _b : '', files).finally(function () { return _this.loading$.next(false); });
1228
+ (_a = this.codeEditor) === null || _a === void 0 ? void 0 : _a.edit(this.componentName, (_b = this.id) !== null && _b !== void 0 ? _b : "", files).finally(function () { return _this.loading$.next(false); });
1229
1229
  };
1230
1230
  TuiDocExampleComponent.prototype.setFragmentWithoutRedirect = function (id) {
1231
1231
  var url = this.router
1232
- .createUrlTree([], { relativeTo: this.route, fragment: id || '' })
1232
+ .createUrlTree([], { relativeTo: this.route, fragment: id || "" })
1233
1233
  .toString();
1234
1234
  this.ngLocation.go(url);
1235
1235
  };
1236
1236
  TuiDocExampleComponent.ctorParameters = function () { return [
1237
- { type: String, decorators: [{ type: core.Attribute, args: ['id',] }] },
1237
+ { type: String, decorators: [{ type: core.Attribute, args: ["id",] }] },
1238
1238
  { type: clipboard.Clipboard, decorators: [{ type: core.Inject, args: [clipboard.Clipboard,] }] },
1239
1239
  { type: core$1.TuiNotificationsService, decorators: [{ type: core.Inject, args: [core$1.TuiNotificationsService,] }] },
1240
1240
  { type: Location, decorators: [{ type: core.Inject, args: [common$1.LOCATION,] }] },
@@ -1262,12 +1262,12 @@
1262
1262
  ], TuiDocExampleComponent.prototype, "componentName", void 0);
1263
1263
  TuiDocExampleComponent = __decorate([
1264
1264
  core.Component({
1265
- selector: 'tui-doc-example',
1265
+ selector: "tui-doc-example",
1266
1266
  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",
1267
1267
  changeDetection: core.ChangeDetectionStrategy.OnPush,
1268
1268
  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}"]
1269
1269
  }),
1270
- __param(0, core.Attribute('id')),
1270
+ __param(0, core.Attribute("id")),
1271
1271
  __param(1, core.Inject(clipboard.Clipboard)),
1272
1272
  __param(2, core.Inject(core$1.TuiNotificationsService)),
1273
1273
  __param(3, core.Inject(common$1.LOCATION)),
@@ -1289,10 +1289,10 @@
1289
1289
  function TuiDocExampleCapitalizePipe() {
1290
1290
  }
1291
1291
  TuiDocExampleCapitalizePipe.prototype.transform = function (content) {
1292
- return typeof content === 'string' ? core$1.capitalizeFirstLetter(content) : content;
1292
+ return typeof content === "string" ? core$1.capitalizeFirstLetter(content) : content;
1293
1293
  };
1294
1294
  TuiDocExampleCapitalizePipe = __decorate([
1295
- core.Pipe({ name: 'tuiDocExampleCapitalize' })
1295
+ core.Pipe({ name: "tuiDocExampleCapitalize" })
1296
1296
  ], TuiDocExampleCapitalizePipe);
1297
1297
  return TuiDocExampleCapitalizePipe;
1298
1298
  }());
@@ -1304,7 +1304,7 @@
1304
1304
  return __spread([defaultTab], Object.keys(content));
1305
1305
  };
1306
1306
  TuiDocExampleGetTabsPipe = __decorate([
1307
- core.Pipe({ name: 'tuiDocExampleGetTabs' })
1307
+ core.Pipe({ name: "tuiDocExampleGetTabs" })
1308
1308
  ], TuiDocExampleGetTabsPipe);
1309
1309
  return TuiDocExampleGetTabsPipe;
1310
1310
  }());
@@ -1338,20 +1338,76 @@
1338
1338
  return TuiDocExampleModule;
1339
1339
  }());
1340
1340
 
1341
+ var TuiLanguageSwitcherComponent = /** @class */ (function () {
1342
+ function TuiLanguageSwitcherComponent(switcher, iconsPath) {
1343
+ this.switcher = switcher;
1344
+ this.iconsPath = iconsPath;
1345
+ this.path = this.iconsPath("tuiIcon").replace("tuiIcon.svg#tuiIcon", "");
1346
+ this.language = new forms.FormControl(core$1.tuiCapitalizeFirstLetter(this.switcher.language));
1347
+ this.flags = new Map([
1348
+ ["chinese", i18n.TuiCountryIsoCode.CN],
1349
+ ["dutch", i18n.TuiCountryIsoCode.NL],
1350
+ ["english", i18n.TuiCountryIsoCode.GB],
1351
+ ["french", i18n.TuiCountryIsoCode.FR],
1352
+ ["german", i18n.TuiCountryIsoCode.DE],
1353
+ ["italian", i18n.TuiCountryIsoCode.IT],
1354
+ ["polish", i18n.TuiCountryIsoCode.PL],
1355
+ ["portuguese", i18n.TuiCountryIsoCode.PT],
1356
+ ["russian", i18n.TuiCountryIsoCode.RU],
1357
+ ["spanish", i18n.TuiCountryIsoCode.ES],
1358
+ ["turkish", i18n.TuiCountryIsoCode.TR],
1359
+ ["ukrainian", i18n.TuiCountryIsoCode.UA],
1360
+ ["vietnamese", i18n.TuiCountryIsoCode.VN],
1361
+ ]);
1362
+ this.names = Array.from(this.flags.keys());
1363
+ }
1364
+ TuiLanguageSwitcherComponent.prototype.getFlagPath = function (code) {
1365
+ return code ? "" + this.path + code + ".png" : null;
1366
+ };
1367
+ TuiLanguageSwitcherComponent.ctorParameters = function () { return [
1368
+ { type: i18n.TuiLanguageSwitcher, decorators: [{ type: core.Inject, args: [i18n.TuiLanguageSwitcher,] }] },
1369
+ { type: undefined, decorators: [{ type: core.Inject, args: [core$1.TUI_ICONS_PATH,] }] }
1370
+ ]; };
1371
+ TuiLanguageSwitcherComponent = __decorate([
1372
+ core.Component({
1373
+ selector: "tui-language-switcher",
1374
+ 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",
1375
+ changeDetection: core.ChangeDetectionStrategy.OnPush,
1376
+ styles: [".t-flag{width:1.75rem;height:1.25rem;margin-right:.5rem}"]
1377
+ }),
1378
+ __param(0, core.Inject(i18n.TuiLanguageSwitcher)),
1379
+ __param(1, core.Inject(core$1.TUI_ICONS_PATH))
1380
+ ], TuiLanguageSwitcherComponent);
1381
+ return TuiLanguageSwitcherComponent;
1382
+ }());
1383
+
1384
+ var TuiLanguageSwitcherModule = /** @class */ (function () {
1385
+ function TuiLanguageSwitcherModule() {
1386
+ }
1387
+ TuiLanguageSwitcherModule = __decorate([
1388
+ core.NgModule({
1389
+ exports: [TuiLanguageSwitcherComponent],
1390
+ declarations: [TuiLanguageSwitcherComponent],
1391
+ imports: [common.CommonModule, kit.TuiSelectModule, core$1.TuiDataListModule, forms.ReactiveFormsModule],
1392
+ })
1393
+ ], TuiLanguageSwitcherModule);
1394
+ return TuiLanguageSwitcherModule;
1395
+ }());
1396
+
1341
1397
  // @dynamic
1342
1398
  var TuiDocMainComponent = /** @class */ (function () {
1343
1399
  function TuiDocMainComponent(storage, windowRef) {
1344
1400
  this.storage = storage;
1345
1401
  this.windowRef = windowRef;
1346
- this.night = this.storage.getItem('night') === 'true' ||
1347
- (this.storage.getItem('night') === null &&
1348
- this.windowRef.matchMedia('(prefers-color-scheme: dark)').matches);
1402
+ this.night = this.storage.getItem("night") === "true" ||
1403
+ (this.storage.getItem("night") === null &&
1404
+ this.windowRef.matchMedia("(prefers-color-scheme: dark)").matches);
1349
1405
  this.change$ = new rxjs.Subject();
1350
1406
  }
1351
1407
  TuiDocMainComponent_1 = TuiDocMainComponent;
1352
1408
  Object.defineProperty(TuiDocMainComponent.prototype, "mode", {
1353
1409
  get: function () {
1354
- return this.night ? 'onDark' : null;
1410
+ return this.night ? "onDark" : null;
1355
1411
  },
1356
1412
  enumerable: true,
1357
1413
  configurable: true
@@ -1359,7 +1415,7 @@
1359
1415
  TuiDocMainComponent.prototype.onMode = function (night) {
1360
1416
  this.night = night;
1361
1417
  this.change$.next();
1362
- this.storage.setItem('night', String(night));
1418
+ this.storage.setItem("night", String(night));
1363
1419
  };
1364
1420
  var TuiDocMainComponent_1;
1365
1421
  TuiDocMainComponent.ctorParameters = function () { return [
@@ -1367,11 +1423,11 @@
1367
1423
  { type: Window, decorators: [{ type: core.Inject, args: [common$1.WINDOW,] }] }
1368
1424
  ]; };
1369
1425
  __decorate([
1370
- core.HostBinding('attr.data-mode')
1426
+ core.HostBinding("attr.data-mode")
1371
1427
  ], TuiDocMainComponent.prototype, "mode", null);
1372
1428
  TuiDocMainComponent = TuiDocMainComponent_1 = __decorate([
1373
1429
  core.Component({
1374
- selector: 'tui-doc-main',
1430
+ selector: "tui-doc-main",
1375
1431
  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",
1376
1432
  encapsulation: core.ViewEncapsulation.None,
1377
1433
  providers: [
@@ -1381,7 +1437,7 @@
1381
1437
  },
1382
1438
  cdk.TuiSwipeService,
1383
1439
  ],
1384
- 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}"]
1440
+ 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}"]
1385
1441
  }),
1386
1442
  __param(0, core.Inject(common$1.LOCAL_STORAGE)),
1387
1443
  __param(1, core.Inject(common$1.WINDOW))
@@ -1389,7 +1445,7 @@
1389
1445
  return TuiDocMainComponent;
1390
1446
  }());
1391
1447
 
1392
- var TUI_DOC_PAGE_LOADED = new core.InjectionToken('[TUI_DOC_PAGE_LOADED] Stream that emits if loading of page is over (for example, to begin scrollIntoView)', { factory: function () { return rxjs.defer(function () { return rxjs.timer(200).pipe(operators.switchMapTo(rxjs.of(true))); }); } });
1448
+ var TUI_DOC_PAGE_LOADED = new core.InjectionToken("[TUI_DOC_PAGE_LOADED] Stream that emits if loading of page is over (for example, to begin scrollIntoView)", { factory: function () { return rxjs.defer(function () { return rxjs.timer(200).pipe(operators.switchMapTo(rxjs.of(true))); }); } });
1393
1449
 
1394
1450
  /**
1395
1451
  * @deprecated: use {@link TuiScrollIntoViewLinkDirective}
@@ -1423,7 +1479,7 @@
1423
1479
  ], ScrollIntoViewDirective.prototype, "scrollIntoView", null);
1424
1480
  ScrollIntoViewDirective = __decorate([
1425
1481
  core.Directive({
1426
- selector: '[scrollIntoView]',
1482
+ selector: "[scrollIntoView]",
1427
1483
  providers: [cdk.TuiDestroyService],
1428
1484
  })
1429
1485
  // eslint-disable-next-line @typescript-eslint/naming-convention
@@ -1441,7 +1497,7 @@
1441
1497
  }
1442
1498
  TuiScrollIntoViewLinkDirective = __decorate([
1443
1499
  core.Directive({
1444
- selector: '[tuiScrollIntoViewLink]',
1500
+ selector: "[tuiScrollIntoViewLink]",
1445
1501
  providers: [cdk.TuiDestroyService],
1446
1502
  })
1447
1503
  ], TuiScrollIntoViewLinkDirective);
@@ -1477,41 +1533,41 @@
1477
1533
  return TuiScrollIntoViewLinkModule;
1478
1534
  }());
1479
1535
 
1480
- var TUI_DOC_SCROLL_BEHAVIOR = new core.InjectionToken('[TUI_DOC_SCROLL_BEHAVIOR] Defines the transition animation for scroll', { factory: function () { return 'smooth'; } });
1536
+ var TUI_DOC_SCROLL_BEHAVIOR = new core.InjectionToken("[TUI_DOC_SCROLL_BEHAVIOR] Defines the transition animation for scroll", { factory: function () { return "smooth"; } });
1481
1537
 
1482
1538
  var MAP = {
1483
- а: 'f',
1484
- б: ',',
1485
- в: 'd',
1486
- г: 'u',
1487
- д: 'l',
1488
- е: 't',
1489
- ё: '`',
1490
- ж: ';',
1491
- з: 'p',
1492
- и: 'b',
1493
- й: 'q',
1494
- к: 'r',
1495
- л: 'k',
1496
- м: 'v',
1497
- н: 'y',
1498
- о: 'j',
1499
- п: 'g',
1500
- р: 'h',
1501
- с: 'c',
1502
- т: 'n',
1503
- у: 'e',
1504
- ф: 'a',
1505
- х: '[',
1506
- ц: 'w',
1507
- ч: 'x',
1508
- ш: 'i',
1509
- щ: 'o',
1510
- ъ: ']',
1511
- ы: 's',
1512
- ь: 'm',
1513
- ю: '.',
1514
- я: 'z',
1539
+ а: "f",
1540
+ б: ",",
1541
+ в: "d",
1542
+ г: "u",
1543
+ д: "l",
1544
+ е: "t",
1545
+ ё: "`",
1546
+ ж: ";",
1547
+ з: "p",
1548
+ и: "b",
1549
+ й: "q",
1550
+ к: "r",
1551
+ л: "k",
1552
+ м: "v",
1553
+ н: "y",
1554
+ о: "j",
1555
+ п: "g",
1556
+ р: "h",
1557
+ с: "c",
1558
+ т: "n",
1559
+ у: "e",
1560
+ ф: "a",
1561
+ х: "[",
1562
+ ц: "w",
1563
+ ч: "x",
1564
+ ш: "i",
1565
+ щ: "o",
1566
+ ъ: "]",
1567
+ ы: "s",
1568
+ ь: "m",
1569
+ ю: ".",
1570
+ я: "z",
1515
1571
  };
1516
1572
  /**
1517
1573
  * @deprecated: use {@link tuiTransliterateKeyboardLayout} instead
@@ -1521,7 +1577,7 @@
1521
1577
  */
1522
1578
  // eslint-disable-next-line @typescript-eslint/naming-convention
1523
1579
  function transliterateKeyboardLayout(string) {
1524
- var newStr = '';
1580
+ var newStr = "";
1525
1581
  for (var i = 0; i < string.length; i++) {
1526
1582
  newStr += string.charAt(i) in MAP ? MAP[string.charAt(i)] : string.charAt(i);
1527
1583
  }
@@ -1529,17 +1585,17 @@
1529
1585
  }
1530
1586
  var tuiTransliterateKeyboardLayout = transliterateKeyboardLayout;
1531
1587
 
1532
- var TUI_DOC_PAGES = new core.InjectionToken('Documentation pages', {
1588
+ var TUI_DOC_PAGES = new core.InjectionToken("Documentation pages", {
1533
1589
  factory: function () { return []; },
1534
1590
  });
1535
1591
 
1536
- var TUI_DOC_TITLE = new core.InjectionToken('Page title', {
1537
- factory: function () { return ''; },
1592
+ var TUI_DOC_TITLE = new core.InjectionToken("Page title", {
1593
+ factory: function () { return ""; },
1538
1594
  });
1539
1595
 
1540
- var NAVIGATION_TITLE = new core.InjectionToken('Page title');
1541
- var NAVIGATION_LABELS = new core.InjectionToken('Navigation sections labels for search');
1542
- var NAVIGATION_ITEMS = new core.InjectionToken('Navigation pages');
1596
+ var NAVIGATION_TITLE = new core.InjectionToken("Page title");
1597
+ var NAVIGATION_LABELS = new core.InjectionToken("Navigation sections labels for search");
1598
+ var NAVIGATION_ITEMS = new core.InjectionToken("Navigation pages");
1543
1599
  var NAVIGATION_PROVIDERS = [
1544
1600
  cdk.TuiDestroyService,
1545
1601
  {
@@ -1605,12 +1661,12 @@
1605
1661
  this.readyToScroll$ = readyToScroll$;
1606
1662
  this.scrollBehavior = scrollBehavior;
1607
1663
  this.menuOpen = false;
1608
- this.search = '';
1664
+ this.search = "";
1609
1665
  this.open = false;
1610
1666
  this.openPagesArr = [];
1611
1667
  this.openPagesGroupsArr = [];
1612
- this.active = '';
1613
- this.mode$ = this.mode.change$.pipe(operators.startWith(null), operators.map(function () { return _this.mode.mode || 'onLight'; }));
1668
+ this.active = "";
1669
+ this.mode$ = this.mode.change$.pipe(operators.startWith(null), operators.map(function () { return _this.mode.mode || "onLight"; }));
1614
1670
  // Angular can't navigate no anchor links
1615
1671
  // https://stackoverflow.com/questions/36101756/angular2-routing-with-hashtag-to-page-anchor
1616
1672
  title$.subscribe(function (title) {
@@ -1657,13 +1713,13 @@
1657
1713
  TuiDocNavigationComponent.prototype.onClick = function () {
1658
1714
  this.open = false;
1659
1715
  this.menuOpen = false;
1660
- this.search = '';
1716
+ this.search = "";
1661
1717
  this.openActivePageGroup();
1662
1718
  };
1663
1719
  TuiDocNavigationComponent.prototype.filterItems = function (items, search) {
1664
1720
  return items.map(function (section) {
1665
1721
  return cdk.uniqBy(section.filter(function (_a) {
1666
- var title = _a.title, _b = _a.keywords, keywords = _b === void 0 ? '' : _b;
1722
+ var title = _a.title, _b = _a.keywords, keywords = _b === void 0 ? "" : _b;
1667
1723
  title = title.toLowerCase();
1668
1724
  search = search.toLowerCase();
1669
1725
  keywords = keywords.toLowerCase();
@@ -1671,14 +1727,14 @@
1671
1727
  keywords.includes(search) ||
1672
1728
  title.includes(transliterateKeyboardLayout(search)) ||
1673
1729
  keywords.includes(transliterateKeyboardLayout(search)) ||
1674
- search.replace(/-/gi, '').includes(title));
1675
- }), 'title');
1730
+ search.replace(/-/gi, "").includes(title));
1731
+ }), "title");
1676
1732
  });
1677
1733
  };
1678
1734
  TuiDocNavigationComponent.prototype.flattenSubPages = function (items) {
1679
1735
  return items.reduce(function (array, item) { return __spread(array, [
1680
1736
  item.reduce(function (pages, page) {
1681
- return 'subPages' in page
1737
+ return "subPages" in page
1682
1738
  ? __spread(pages, page.subPages) : __spread(pages, [page]);
1683
1739
  }, []),
1684
1740
  ]); }, []);
@@ -1696,11 +1752,11 @@
1696
1752
  var _this = this;
1697
1753
  this.items.forEach(function (pages, pagesIndex) {
1698
1754
  pages.forEach(function (page, pageIndex) {
1699
- if ('route' in page && _this.isActiveRoute(page.route)) {
1755
+ if ("route" in page && _this.isActiveRoute(page.route)) {
1700
1756
  _this.openPagesArr[pagesIndex] = true;
1701
1757
  _this.active = page.route;
1702
1758
  }
1703
- if ('subPages' in page) {
1759
+ if ("subPages" in page) {
1704
1760
  page.subPages.forEach(function (subPage) {
1705
1761
  if (_this.isActiveRoute(subPage.route)) {
1706
1762
  _this.openPagesArr[pagesIndex] = true;
@@ -1717,10 +1773,10 @@
1717
1773
  if (!element) {
1718
1774
  return;
1719
1775
  }
1720
- element.classList.add('tui-doc-animated-example');
1776
+ element.classList.add("tui-doc-animated-example");
1721
1777
  element.scrollIntoView({
1722
- block: 'start',
1723
- inline: 'nearest',
1778
+ block: "start",
1779
+ inline: "nearest",
1724
1780
  behavior: this.scrollBehavior,
1725
1781
  });
1726
1782
  };
@@ -1741,7 +1797,7 @@
1741
1797
  { type: undefined, decorators: [{ type: core.Inject, args: [TUI_DOC_SCROLL_BEHAVIOR,] }] }
1742
1798
  ]; };
1743
1799
  __decorate([
1744
- core.HostBinding('class._open')
1800
+ core.HostBinding("class._open")
1745
1801
  ], TuiDocNavigationComponent.prototype, "menuOpen", void 0);
1746
1802
  __decorate([
1747
1803
  cdk.tuiPure
@@ -1751,7 +1807,7 @@
1751
1807
  ], TuiDocNavigationComponent.prototype, "flattenSubPages", null);
1752
1808
  TuiDocNavigationComponent = __decorate([
1753
1809
  core.Component({
1754
- selector: 'tui-doc-navigation',
1810
+ selector: "tui-doc-navigation",
1755
1811
  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",
1756
1812
  providers: NAVIGATION_PROVIDERS,
1757
1813
  changeDetection: core.ChangeDetectionStrategy.OnPush,
@@ -1810,8 +1866,8 @@
1810
1866
  return TuiDocNavigationModule;
1811
1867
  }());
1812
1868
 
1813
- var TUI_DOC_LOGO = new core.InjectionToken('Main logo', {
1814
- factory: function () { return ''; },
1869
+ var TUI_DOC_LOGO = new core.InjectionToken("Main logo", {
1870
+ factory: function () { return ""; },
1815
1871
  });
1816
1872
 
1817
1873
  var TuiDocHeaderComponent = /** @class */ (function () {
@@ -1821,7 +1877,7 @@
1821
1877
  this.router = router;
1822
1878
  this.swipes$ = swipes$;
1823
1879
  this.stream$ = new rxjs.Subject();
1824
- this.open$ = rxjs.merge(this.router.events.pipe(operators.mapTo(false)), this.stream$, this.swipes$.pipe(operators.filter(function (swipe) { return swipe.direction === 'left' || swipe.direction === 'right'; }), operators.map(function (swipe) { return swipe.direction === 'right'; }))).pipe(operators.startWith(false), operators.distinctUntilChanged());
1880
+ this.open$ = rxjs.merge(this.router.events.pipe(operators.mapTo(false)), this.stream$, this.swipes$.pipe(operators.filter(function (swipe) { return swipe.direction === "left" || swipe.direction === "right"; }), operators.map(function (swipe) { return swipe.direction === "right"; }))).pipe(operators.startWith(false), operators.distinctUntilChanged());
1825
1881
  }
1826
1882
  TuiDocHeaderComponent.prototype.onClick = function () {
1827
1883
  this.stream$.next(true);
@@ -1839,7 +1895,7 @@
1839
1895
  ]; };
1840
1896
  TuiDocHeaderComponent = __decorate([
1841
1897
  core.Component({
1842
- selector: 'header[tuiDocHeader]',
1898
+ selector: "header[tuiDocHeader]",
1843
1899
  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",
1844
1900
  changeDetection: core.ChangeDetectionStrategy.OnPush,
1845
1901
  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%}"]
@@ -1896,15 +1952,15 @@
1896
1952
  return TuiDocMainModule;
1897
1953
  }());
1898
1954
 
1899
- var TUI_DOC_DEFAULT_TABS = new core.InjectionToken('Array of default tab names', {
1955
+ var TUI_DOC_DEFAULT_TABS = new core.InjectionToken("Array of default tab names", {
1900
1956
  factory: function () { return []; },
1901
1957
  });
1902
1958
 
1903
- var TUI_DOC_SEE_ALSO = new core.InjectionToken('Array of arrays of related pages', {
1959
+ var TUI_DOC_SEE_ALSO = new core.InjectionToken("Array of arrays of related pages", {
1904
1960
  factory: function () { return []; },
1905
1961
  });
1906
1962
 
1907
- var PAGE_SEE_ALSO = new core.InjectionToken('Page see also');
1963
+ var PAGE_SEE_ALSO = new core.InjectionToken("Page see also");
1908
1964
  var PAGE_PROVIDERS = [
1909
1965
  {
1910
1966
  provide: PAGE_SEE_ALSO,
@@ -1915,11 +1971,11 @@
1915
1971
  // eslint-disable-next-line @typescript-eslint/naming-convention
1916
1972
  function seeAlsoProviderFactory(_a, seeAlsoGroups) {
1917
1973
  var nativeElement = _a.nativeElement;
1918
- var currentHeader = nativeElement.getAttribute('header');
1974
+ var currentHeader = nativeElement.getAttribute("header");
1919
1975
  var groups = seeAlsoGroups.filter(function (group) { return group.includes(currentHeader); }) || [];
1920
1976
  var seeAlsoSet = new Set(groups
1921
1977
  .join()
1922
- .split(',')
1978
+ .split(",")
1923
1979
  .filter(function (component) { return component && component !== currentHeader; }));
1924
1980
  return Array.from(seeAlsoSet);
1925
1981
  }
@@ -1937,7 +1993,7 @@
1937
1993
  ], TuiDocPageTabConnectorDirective.prototype, "pageTab", void 0);
1938
1994
  TuiDocPageTabConnectorDirective = __decorate([
1939
1995
  core.Directive({
1940
- selector: '[pageTab]',
1996
+ selector: "[pageTab]",
1941
1997
  }),
1942
1998
  __param(0, core.Inject(core.TemplateRef))
1943
1999
  ], TuiDocPageTabConnectorDirective);
@@ -1951,10 +2007,10 @@
1951
2007
  this.deprecated = deprecated;
1952
2008
  this.defaultTabs = defaultTabs;
1953
2009
  this.seeAlso = seeAlso;
1954
- this.header = '';
1955
- this.package = '';
1956
- this.type = '';
1957
- this.path = '';
2010
+ this.header = "";
2011
+ this.package = "";
2012
+ this.type = "";
2013
+ this.path = "";
1958
2014
  this.tabConnectors = cdk.EMPTY_QUERY;
1959
2015
  this.activeItemIndex = NaN;
1960
2016
  }
@@ -1966,11 +2022,11 @@
1966
2022
  configurable: true
1967
2023
  });
1968
2024
  TuiDocPageComponent.prototype.getRouterLink = function (tab) {
1969
- if (tab === void 0) { tab = ''; }
1970
- return "./" + tab.replace(/ /g, '_');
2025
+ if (tab === void 0) { tab = ""; }
2026
+ return "./" + tab.replace(/ /g, "_");
1971
2027
  };
1972
2028
  TuiDocPageComponent.ctorParameters = function () { return [
1973
- { type: String, decorators: [{ type: core.Attribute, args: ['deprecated',] }] },
2029
+ { type: String, decorators: [{ type: core.Attribute, args: ["deprecated",] }] },
1974
2030
  { type: undefined, decorators: [{ type: core.Inject, args: [TUI_DOC_DEFAULT_TABS,] }] },
1975
2031
  { type: undefined, decorators: [{ type: core.Inject, args: [PAGE_SEE_ALSO,] }] }
1976
2032
  ]; };
@@ -1991,13 +2047,13 @@
1991
2047
  ], TuiDocPageComponent.prototype, "tabConnectors", void 0);
1992
2048
  TuiDocPageComponent = __decorate([
1993
2049
  core.Component({
1994
- selector: 'tui-doc-page',
2050
+ selector: "tui-doc-page",
1995
2051
  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",
1996
2052
  changeDetection: core.ChangeDetectionStrategy.OnPush,
1997
2053
  providers: PAGE_PROVIDERS,
1998
2054
  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}"]
1999
2055
  }),
2000
- __param(0, core.Attribute('deprecated')),
2056
+ __param(0, core.Attribute("deprecated")),
2001
2057
  __param(1, core.Inject(TUI_DOC_DEFAULT_TABS)),
2002
2058
  __param(2, core.Inject(PAGE_SEE_ALSO))
2003
2059
  ], TuiDocPageComponent);
@@ -2014,14 +2070,14 @@
2014
2070
  TuiDocSeeAlsoComponent.prototype.getRouterLink = function (pageTitle) {
2015
2071
  for (var i = 0; i < this.pages.length; i++) {
2016
2072
  var page = this.pages
2017
- .map(function (page) { return ('subPages' in page ? page.subPages : [page]); })
2073
+ .map(function (page) { return ("subPages" in page ? page.subPages : [page]); })
2018
2074
  .reduce(function (pages, subPages) { return __spread(pages, subPages); }, [])
2019
2075
  .find(function (page) { return page.title === pageTitle; });
2020
2076
  if (page === null || page === void 0 ? void 0 : page.route) {
2021
2077
  return page.route;
2022
2078
  }
2023
2079
  }
2024
- return '';
2080
+ return "";
2025
2081
  };
2026
2082
  TuiDocSeeAlsoComponent.ctorParameters = function () { return [
2027
2083
  { type: String, decorators: [{ type: core.Inject, args: [TUI_DOC_SEE_ALSO_TEXT,] }] },
@@ -2032,10 +2088,10 @@
2032
2088
  ], TuiDocSeeAlsoComponent.prototype, "seeAlso", void 0);
2033
2089
  TuiDocSeeAlsoComponent = __decorate([
2034
2090
  core.Component({
2035
- selector: 'tui-doc-see-also',
2036
- 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",
2091
+ selector: "tui-doc-see-also",
2092
+ 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",
2037
2093
  changeDetection: core.ChangeDetectionStrategy.OnPush,
2038
- 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}"]
2094
+ 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}"]
2039
2095
  }),
2040
2096
  __param(0, core.Inject(TUI_DOC_SEE_ALSO_TEXT)),
2041
2097
  __param(1, core.Inject(TUI_DOC_PAGES))
@@ -2056,18 +2112,18 @@
2056
2112
  return TuiDocSeeAlsoModule;
2057
2113
  }());
2058
2114
 
2059
- var TUI_DOC_SOURCE_CODE = new core.InjectionToken('Source code link', {
2060
- factory: function () { return ''; },
2115
+ var TUI_DOC_SOURCE_CODE = new core.InjectionToken("Source code link", {
2116
+ factory: function () { return ""; },
2061
2117
  });
2062
2118
 
2063
2119
  var TuiDocSourceCodeComponent = /** @class */ (function () {
2064
2120
  function TuiDocSourceCodeComponent(sourceCode, text) {
2065
2121
  this.sourceCode = sourceCode;
2066
2122
  this.text = text;
2067
- this.header = '';
2068
- this.package = '';
2069
- this.type = '';
2070
- this.path = '';
2123
+ this.header = "";
2124
+ this.package = "";
2125
+ this.type = "";
2126
+ this.path = "";
2071
2127
  }
2072
2128
  Object.defineProperty(TuiDocSourceCodeComponent.prototype, "pathOptions", {
2073
2129
  get: function () {
@@ -2105,7 +2161,7 @@
2105
2161
  ], TuiDocSourceCodeComponent.prototype, "getPathOptions", null);
2106
2162
  TuiDocSourceCodeComponent = __decorate([
2107
2163
  core.Component({
2108
- selector: 'tui-doc-source-code',
2164
+ selector: "tui-doc-source-code",
2109
2165
  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",
2110
2166
  changeDetection: core.ChangeDetectionStrategy.OnPush
2111
2167
  }),
@@ -2149,21 +2205,21 @@
2149
2205
  }());
2150
2206
 
2151
2207
  var TUI_EXAMPLE_PRIMARY_FILE_NAME = {
2152
- TS: 'TypeScript',
2153
- LESS: 'LESS',
2154
- HTML: 'HTML',
2208
+ TS: "TypeScript",
2209
+ LESS: "LESS",
2210
+ HTML: "HTML",
2155
2211
  };
2156
2212
 
2157
2213
  // TODO: 3.0 remove in ivy compilation
2158
- var DEMO_TEXTS = ['Сделано с помощью директивы: ', 'Фон', 'Детали формы'];
2214
+ var DEMO_TEXTS = ["\u0421\u0434\u0435\u043B\u0430\u043D\u043E \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u0434\u0438\u0440\u0435\u043A\u0442\u0438\u0432\u044B: ", "\u0424\u043E\u043D", "\u0414\u0435\u0442\u0430\u043B\u0438 \u0444\u043E\u0440\u043C\u044B"];
2159
2215
  var DOC_TEXTS = [
2160
- 'Аргумент',
2161
- 'Тип',
2162
- 'Имя и описание',
2163
- 'Значение',
2164
- 'Для работы с динамическими шаблонами используется',
2216
+ "\u0410\u0440\u0433\u0443\u043C\u0435\u043D\u0442",
2217
+ "\u0422\u0438\u043F",
2218
+ "\u0418\u043C\u044F \u0438 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u0435",
2219
+ "\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435",
2220
+ "\u0414\u043B\u044F \u0440\u0430\u0431\u043E\u0442\u044B \u0441 \u0434\u0438\u043D\u0430\u043C\u0438\u0447\u0435\u0441\u043A\u0438\u043C\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0430\u043C\u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F",
2165
2221
  ];
2166
- var EXAMPLE_TEXTS = ['Превью', 'Ссылка на пример скопирована', 'Готово'];
2222
+ var EXAMPLE_TEXTS = ["\u041F\u0440\u0435\u0432\u044C\u044E", "\u0421\u0441\u044B\u043B\u043A\u0430 \u043D\u0430 \u043F\u0440\u0438\u043C\u0435\u0440 \u0441\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u0430", "\u0413\u043E\u0442\u043E\u0432\u043E"];
2167
2223
  var TUI_DOC_RUSSIAN = [
2168
2224
  {
2169
2225
  provide: TUI_DOC_DEMO_TEXTS,
@@ -2179,19 +2235,19 @@
2179
2235
  },
2180
2236
  {
2181
2237
  provide: TUI_DOC_MENU_TEXT,
2182
- useValue: 'Меню',
2238
+ useValue: "\u041C\u0435\u043D\u044E",
2183
2239
  },
2184
2240
  {
2185
2241
  provide: TUI_DOC_SEARCH_TEXT,
2186
- useValue: 'Поиск',
2242
+ useValue: "\u041F\u043E\u0438\u0441\u043A",
2187
2243
  },
2188
2244
  {
2189
2245
  provide: TUI_DOC_SEE_ALSO_TEXT,
2190
- useValue: 'Смотрите также',
2246
+ useValue: "\u0421\u043C\u043E\u0442\u0440\u0438\u0442\u0435 \u0442\u0430\u043A\u0436\u0435",
2191
2247
  },
2192
2248
  {
2193
2249
  provide: TUI_DOC_SOURCE_CODE_TEXT,
2194
- useValue: 'Исходный код',
2250
+ useValue: "\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043A\u043E\u0434",
2195
2251
  },
2196
2252
  ];
2197
2253
 
@@ -2220,11 +2276,11 @@
2220
2276
  function generateRoutes(type) {
2221
2277
  return [
2222
2278
  {
2223
- path: '',
2279
+ path: "",
2224
2280
  component: type,
2225
2281
  children: [
2226
2282
  {
2227
- path: ':tab',
2283
+ path: ":tab",
2228
2284
  component: type,
2229
2285
  },
2230
2286
  ],
@@ -2277,6 +2333,8 @@
2277
2333
  exports.TuiDocPageComponent = TuiDocPageComponent;
2278
2334
  exports.TuiDocPageModule = TuiDocPageModule;
2279
2335
  exports.TuiDocPageTabConnectorDirective = TuiDocPageTabConnectorDirective;
2336
+ exports.TuiLanguageSwitcherComponent = TuiLanguageSwitcherComponent;
2337
+ exports.TuiLanguageSwitcherModule = TuiLanguageSwitcherModule;
2280
2338
  exports.TuiScrollIntoViewLinkDirective = TuiScrollIntoViewLinkDirective;
2281
2339
  exports.TuiScrollIntoViewLinkModule = TuiScrollIntoViewLinkModule;
2282
2340
  exports.coerceValue = coerceValue;