@taiga-ui/addon-doc 5.4.0 → 5.5.0-canary.d684136
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.
|
@@ -399,7 +399,7 @@ class TuiDocDemo {
|
|
|
399
399
|
return this.urlSerializer.parse(this.locationRef.path());
|
|
400
400
|
}
|
|
401
401
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TuiDocDemo, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
402
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: TuiDocDemo, isStandalone: true, selector: "tui-doc-demo", inputs: { control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: false, transformFunction: null }, sticky: { classPropertyName: "sticky", publicName: "sticky", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "window:resize": "onResize()", "document:mouseup.zoneless": "onMouseUp()" }, properties: { "class._sticky": "sticky()", "attr.tuiTheme": "theme()" } }, queries: [{ propertyName: "template", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], viewQueries: [{ propertyName: "resizable", first: true, predicate: TuiResizable, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"t-settings\">\n <label tuiLabel>\n <input\n size=\"s\"\n tuiSwitch\n type=\"checkbox\"\n [ngModel]=\"dark()\"\n (ngModelChange)=\"onModeChange($event)\"\n />\n <small>{{ texts()[0] }}</small>\n </label>\n <label tuiLabel>\n <input\n size=\"s\"\n tuiSwitch\n type=\"checkbox\"\n [ngModel]=\"opaque\"\n (ngModelChange)=\"changeOpaque($event)\"\n />\n <small>{{ texts()[1] }}</small>\n </label>\n</div>\n<div\n tuiResizable\n class=\"t-wrapper\"\n [class.t-wrapper_transparent]=\"!opaque\"\n [style.visibility]=\"rendered() ? 'visible' : 'hidden'\"\n>\n <div class=\"t-content\">\n <div\n #content\n id=\"demo-content\"\n >\n @if (form) {\n <form\n id=\"tui-demo-form\"\n [formGroup]=\"form\"\n >\n <ng-container [ngTemplateOutlet]=\"template() || null\" />\n </form>\n }\n <ng-content />\n </div>\n </div>\n <div\n class=\"t-resizer\"\n [tuiResizer]=\"[1, 0]\"\n (tuiSizeChange)=\"updateWidth($event[0])\"\n >\n <tui-icon [icon]=\"icons.resizer\" />\n </div>\n</div>\n@if (form) {\n <tui-expand [expanded]=\"expanded\">\n <ng-template tuiItem>\n <pre class=\"t-value\">Form data: {{ form.value | json }}</pre>\n </ng-template>\n </tui-expand>\n <div class=\"t-footer\">\n <button\n appearance=\"flat-grayscale\"\n automation-id=\"tui-demo-button__toggle-details\"\n size=\"s\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [tuiChevron]=\"expanded\"\n (click)=\"toggleDetails()\"\n >\n {{ texts()[2] }}\n </button>\n <tui-textfield\n tuiChevron\n tuiTextfieldAppearance=\"secondary-grayscale\"\n tuiTextfieldSize=\"s\"\n class=\"t-select\"\n [tuiTextfieldCleaner]=\"false\"\n >\n <input\n automation-id=\"tui-demo-select__expand-update-on\"\n tuiSelect\n [ngModel]=\"updateOn\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"updateOnChange($event)\"\n />\n <tui-data-list-wrapper\n *tuiDropdown\n [items]=\"updateOnVariants\"\n />\n </tui-textfield>\n <button\n appearance=\"secondary-grayscale\"\n automation-id=\"tui-demo-button__reset-state\"\n form=\"tui-demo-form\"\n size=\"s\"\n tuiButton\n type=\"reset\"\n >\n Reset\n </button>\n <button\n appearance=\"secondary-grayscale\"\n automation-id=\"tui-demo-button__submit-state\"\n form=\"tui-demo-form\"\n size=\"s\"\n tuiButton\n type=\"submit\"\n >\n Submit\n </button>\n </div>\n}\n", styles: [":host{position:relative;display:block;min-inline-size:100%;margin:0 0 1.5rem;font:var(--tui-typography-body-s);color:var(--tui-text-primary);background:var(--tui-background-base-alt);box-shadow:0 0 1rem .5rem var(--tui-background-base);border-radius:var(--tui-radius-m);overflow:hidden;box-sizing:border-box}:host[tuiTheme=dark]{box-shadow:none}:host :host-context([tuiTheme=\"dark\"]){background:var(--tui-background-elevation-2);box-shadow:0 0 1rem .5rem var(--tui-background-base)}:host :host-context([tuiTheme=\"dark\"])[tuiTheme=light]{box-shadow:none}.t-settings{display:flex;gap:1rem;align-items:center;justify-content:flex-end;padding:.5rem .75rem .25rem}.t-wrapper{display:flex;max-inline-size:100%;min-block-size:6rem;inline-size:100%;min-inline-size:10rem;color:var(--tui-text-primary);background-color:var(--tui-background-base);padding:.25rem;border-radius:var(--tui-radius-m);box-sizing:border-box;box-shadow:inset 0 0 0 .25rem var(--tui-background-base-alt);overflow:hidden;pointer-events:auto}:host-context([tuiTheme=\"dark\"]) .t-wrapper{box-shadow:inset 0 0 0 .25rem var(--tui-background-elevation-2)}.t-wrapper.t-wrapper_transparent{background-image:linear-gradient(45deg,var(--tui-background-base-alt) 25%,transparent 25%),linear-gradient(-45deg,var(--tui-background-base-alt) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--tui-background-base-alt) 75%),linear-gradient(-45deg,transparent 75%,var(--tui-background-base-alt) 75%);background-size:1.25rem 1.25rem;background-position:0 0,0 .625rem,.625rem -.625rem,-.625rem 0}@media screen and (max-width: 767.4px){.t-wrapper{min-block-size:auto}}.t-content{flex:1 1 0;min-inline-size:0;padding:1.5rem;box-sizing:border-box;overflow:hidden}@media screen and (max-width: 767.4px){.t-content{padding:1rem}}.t-footer{display:flex;gap:.25rem;padding:0 .25rem .25rem}.t-select{inline-size:6rem;margin-inline-start:auto}.t-value{flex:1;background:var(--tui-background-base);border-radius:var(--tui-radius-m);box-shadow:inset 0 -.25rem 0 .25rem var(--tui-background-base-alt);padding:.5rem .75rem 1rem;margin:0 0 -.25rem}:host-context([tuiTheme=\"dark\"]) .t-value{box-shadow:inset 0 -.25rem 0 .25rem var(--tui-background-elevation-2)}.t-resizer{transition-property:color;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:relative;display:flex;min-block-size:inherit;align-items:center;justify-content:center;flex-shrink:0;color:var(--tui-text-tertiary)}.t-resizer:hover,.t-resizer:active{color:var(--tui-text-secondary)}@media screen and (max-width: 767.4px){.t-resizer{display:none}}@media screen and (min-height: 37.5rem){:host._sticky{position:sticky;z-index:2;inset-block-start:4.625rem}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "component", type: i2.TuiDataListWrapperComponent, selector: "tui-data-list-wrapper:not([labels])", inputs: ["items", "emptyContent", "size", "itemContent"], outputs: ["itemClick"] }, { kind: "component", type: TuiExpand, selector: "tui-expand", inputs: ["expanded"] }, { kind: "component", type: TuiIcon, selector: "tui-icon:not([tuiBadge])", inputs: ["background"] }, { kind: "directive", type: TuiItem, selector: "[tuiItem]" }, { kind: "pipe", type: TuiJsonPipe, name: "json" }, { kind: "directive", type: TuiResizable, selector: "[tuiResizable]" }, { kind: "directive", type: TuiResizer, selector: "[tuiResizer]", inputs: ["tuiResizer"], outputs: ["tuiSizeChange"] }, { kind: "directive", type: i3$1.TuiSelectDirective, selector: "input[tuiSelect]" }, { kind: "directive", type: i4.TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: i5.TuiTextfieldComponent, selector: "tui-textfield:not([multi])", inputs: ["content", "filler"] }, { kind: "directive", type: i5.TuiTextfieldOptionsDirective, selector: "[tuiTextfieldAppearance],[tuiTextfieldSize],[tuiTextfieldCleaner]", inputs: ["tuiTextfieldAppearance", "tuiTextfieldSize", "tuiTextfieldCleaner"] }, { kind: "directive", type: i6.TuiDropdownContent, selector: "ng-template[tuiDropdown]" }, { kind: "component", type: TuiSwitch, selector: "input[type=\"checkbox\"][tuiSwitch]", inputs: ["showIcons"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
402
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: TuiDocDemo, isStandalone: true, selector: "tui-doc-demo", inputs: { control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: false, transformFunction: null }, sticky: { classPropertyName: "sticky", publicName: "sticky", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:mouseup.zoneless": "onMouseUp()", "window:resize": "onResize()" }, properties: { "attr.tuiTheme": "theme()", "class._sticky": "sticky()" } }, queries: [{ propertyName: "template", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], viewQueries: [{ propertyName: "resizable", first: true, predicate: TuiResizable, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"t-settings\">\n <label tuiLabel>\n <input\n size=\"s\"\n tuiSwitch\n type=\"checkbox\"\n [ngModel]=\"dark()\"\n (ngModelChange)=\"onModeChange($event)\"\n />\n <small>{{ texts()[0] }}</small>\n </label>\n <label tuiLabel>\n <input\n size=\"s\"\n tuiSwitch\n type=\"checkbox\"\n [ngModel]=\"opaque\"\n (ngModelChange)=\"changeOpaque($event)\"\n />\n <small>{{ texts()[1] }}</small>\n </label>\n</div>\n<div\n tuiResizable\n class=\"t-wrapper\"\n [class.t-wrapper_transparent]=\"!opaque\"\n [style.visibility]=\"rendered() ? 'visible' : 'hidden'\"\n>\n <div class=\"t-content\">\n <div\n #content\n id=\"demo-content\"\n >\n @if (form) {\n <form\n id=\"tui-demo-form\"\n [formGroup]=\"form\"\n >\n <ng-container [ngTemplateOutlet]=\"template() || null\" />\n </form>\n }\n <ng-content />\n </div>\n </div>\n <div\n class=\"t-resizer\"\n [tuiResizer]=\"[1, 0]\"\n (tuiSizeChange)=\"updateWidth($event[0])\"\n >\n <tui-icon [icon]=\"icons.resizer\" />\n </div>\n</div>\n@if (form) {\n <tui-expand [expanded]=\"expanded\">\n <ng-template tuiItem>\n <pre class=\"t-value\">Form data: {{ form.value | json }}</pre>\n </ng-template>\n </tui-expand>\n <div class=\"t-footer\">\n <button\n appearance=\"flat-grayscale\"\n automation-id=\"tui-demo-button__toggle-details\"\n size=\"s\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [tuiChevron]=\"expanded\"\n (click)=\"toggleDetails()\"\n >\n {{ texts()[2] }}\n </button>\n <tui-textfield\n tuiChevron\n tuiTextfieldAppearance=\"secondary-grayscale\"\n tuiTextfieldSize=\"s\"\n class=\"t-select\"\n [tuiTextfieldCleaner]=\"false\"\n >\n <input\n automation-id=\"tui-demo-select__expand-update-on\"\n tuiSelect\n [ngModel]=\"updateOn\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"updateOnChange($event)\"\n />\n <tui-data-list-wrapper\n *tuiDropdown\n [items]=\"updateOnVariants\"\n />\n </tui-textfield>\n <button\n appearance=\"secondary-grayscale\"\n automation-id=\"tui-demo-button__reset-state\"\n form=\"tui-demo-form\"\n size=\"s\"\n tuiButton\n type=\"reset\"\n >\n Reset\n </button>\n <button\n appearance=\"secondary-grayscale\"\n automation-id=\"tui-demo-button__submit-state\"\n form=\"tui-demo-form\"\n size=\"s\"\n tuiButton\n type=\"submit\"\n >\n Submit\n </button>\n </div>\n}\n", styles: [":host{position:relative;display:block;min-inline-size:100%;margin:0 0 1.5rem;font:var(--tui-typography-body-s);color:var(--tui-text-primary);background:var(--tui-background-base-alt);box-shadow:0 0 1rem .5rem var(--tui-background-base);border-radius:var(--tui-radius-m);overflow:hidden;box-sizing:border-box}:host[tuiTheme=dark]{box-shadow:none}:host :host-context([tuiTheme=\"dark\"]){background:var(--tui-background-elevation-2);box-shadow:0 0 1rem .5rem var(--tui-background-base)}:host :host-context([tuiTheme=\"dark\"])[tuiTheme=light]{box-shadow:none}.t-settings{display:flex;gap:1rem;align-items:center;justify-content:flex-end;padding:.5rem .75rem .25rem}.t-wrapper{display:flex;max-inline-size:100%;min-block-size:6rem;inline-size:100%;min-inline-size:10rem;color:var(--tui-text-primary);background-color:var(--tui-background-base);padding:.25rem;border-radius:var(--tui-radius-m);box-sizing:border-box;box-shadow:inset 0 0 0 .25rem var(--tui-background-base-alt);overflow:hidden;pointer-events:auto}:host-context([tuiTheme=\"dark\"]) .t-wrapper{box-shadow:inset 0 0 0 .25rem var(--tui-background-elevation-2)}.t-wrapper.t-wrapper_transparent{background-image:linear-gradient(45deg,var(--tui-background-base-alt) 25%,transparent 25%),linear-gradient(-45deg,var(--tui-background-base-alt) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--tui-background-base-alt) 75%),linear-gradient(-45deg,transparent 75%,var(--tui-background-base-alt) 75%);background-size:1.25rem 1.25rem;background-position:0 0,0 .625rem,.625rem -.625rem,-.625rem 0}@media screen and (max-width: 767.4px){.t-wrapper{min-block-size:auto}}.t-content{flex:1 1 0;min-inline-size:0;padding:1.5rem;box-sizing:border-box;overflow:hidden}@media screen and (max-width: 767.4px){.t-content{padding:1rem}}.t-footer{display:flex;gap:.25rem;padding:0 .25rem .25rem}.t-select{inline-size:6rem;margin-inline-start:auto}.t-value{flex:1;background:var(--tui-background-base);border-radius:var(--tui-radius-m);box-shadow:inset 0 -.25rem 0 .25rem var(--tui-background-base-alt);padding:.5rem .75rem 1rem;margin:0 0 -.25rem}:host-context([tuiTheme=\"dark\"]) .t-value{box-shadow:inset 0 -.25rem 0 .25rem var(--tui-background-elevation-2)}.t-resizer{transition-property:color;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:relative;display:flex;min-block-size:inherit;align-items:center;justify-content:center;flex-shrink:0;color:var(--tui-text-tertiary)}.t-resizer:hover,.t-resizer:active{color:var(--tui-text-secondary)}@media screen and (max-width: 767.4px){.t-resizer{display:none}}@media screen and (min-height: 37.5rem){:host._sticky{position:sticky;z-index:2;inset-block-start:4.625rem}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "component", type: i2.TuiDataListWrapperComponent, selector: "tui-data-list-wrapper:not([labels])", inputs: ["items", "emptyContent", "size", "itemContent"], outputs: ["itemClick"] }, { kind: "component", type: TuiExpand, selector: "tui-expand", inputs: ["expanded"] }, { kind: "component", type: TuiIcon, selector: "tui-icon:not([tuiBadge])", inputs: ["background"] }, { kind: "directive", type: TuiItem, selector: "[tuiItem]" }, { kind: "pipe", type: TuiJsonPipe, name: "json" }, { kind: "directive", type: TuiResizable, selector: "[tuiResizable]" }, { kind: "directive", type: TuiResizer, selector: "[tuiResizer]", inputs: ["tuiResizer"], outputs: ["tuiSizeChange"] }, { kind: "directive", type: i3$1.TuiSelectDirective, selector: "input[tuiSelect]" }, { kind: "directive", type: i4.TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: i5.TuiTextfieldComponent, selector: "tui-textfield:not([multi])", inputs: ["content", "filler"] }, { kind: "directive", type: i5.TuiTextfieldOptionsDirective, selector: "[tuiTextfieldAppearance],[tuiTextfieldSize],[tuiTextfieldCleaner]", inputs: ["tuiTextfieldAppearance", "tuiTextfieldSize", "tuiTextfieldCleaner"] }, { kind: "directive", type: i6.TuiDropdownContent, selector: "ng-template[tuiDropdown]" }, { kind: "component", type: TuiSwitch, selector: "input[type=\"checkbox\"][tuiSwitch]", inputs: ["showIcons"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
403
403
|
}
|
|
404
404
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TuiDocDemo, decorators: [{
|
|
405
405
|
type: Component,
|
|
@@ -420,10 +420,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
420
420
|
TuiSwitch,
|
|
421
421
|
TuiTextfield,
|
|
422
422
|
], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
423
|
-
'[class._sticky]': 'sticky()',
|
|
424
423
|
'[attr.tuiTheme]': 'theme()',
|
|
425
|
-
'
|
|
424
|
+
'[class._sticky]': 'sticky()',
|
|
426
425
|
'(document:mouseup.zoneless)': 'onMouseUp()',
|
|
426
|
+
'(window:resize)': 'onResize()',
|
|
427
427
|
}, template: "<div class=\"t-settings\">\n <label tuiLabel>\n <input\n size=\"s\"\n tuiSwitch\n type=\"checkbox\"\n [ngModel]=\"dark()\"\n (ngModelChange)=\"onModeChange($event)\"\n />\n <small>{{ texts()[0] }}</small>\n </label>\n <label tuiLabel>\n <input\n size=\"s\"\n tuiSwitch\n type=\"checkbox\"\n [ngModel]=\"opaque\"\n (ngModelChange)=\"changeOpaque($event)\"\n />\n <small>{{ texts()[1] }}</small>\n </label>\n</div>\n<div\n tuiResizable\n class=\"t-wrapper\"\n [class.t-wrapper_transparent]=\"!opaque\"\n [style.visibility]=\"rendered() ? 'visible' : 'hidden'\"\n>\n <div class=\"t-content\">\n <div\n #content\n id=\"demo-content\"\n >\n @if (form) {\n <form\n id=\"tui-demo-form\"\n [formGroup]=\"form\"\n >\n <ng-container [ngTemplateOutlet]=\"template() || null\" />\n </form>\n }\n <ng-content />\n </div>\n </div>\n <div\n class=\"t-resizer\"\n [tuiResizer]=\"[1, 0]\"\n (tuiSizeChange)=\"updateWidth($event[0])\"\n >\n <tui-icon [icon]=\"icons.resizer\" />\n </div>\n</div>\n@if (form) {\n <tui-expand [expanded]=\"expanded\">\n <ng-template tuiItem>\n <pre class=\"t-value\">Form data: {{ form.value | json }}</pre>\n </ng-template>\n </tui-expand>\n <div class=\"t-footer\">\n <button\n appearance=\"flat-grayscale\"\n automation-id=\"tui-demo-button__toggle-details\"\n size=\"s\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [tuiChevron]=\"expanded\"\n (click)=\"toggleDetails()\"\n >\n {{ texts()[2] }}\n </button>\n <tui-textfield\n tuiChevron\n tuiTextfieldAppearance=\"secondary-grayscale\"\n tuiTextfieldSize=\"s\"\n class=\"t-select\"\n [tuiTextfieldCleaner]=\"false\"\n >\n <input\n automation-id=\"tui-demo-select__expand-update-on\"\n tuiSelect\n [ngModel]=\"updateOn\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"updateOnChange($event)\"\n />\n <tui-data-list-wrapper\n *tuiDropdown\n [items]=\"updateOnVariants\"\n />\n </tui-textfield>\n <button\n appearance=\"secondary-grayscale\"\n automation-id=\"tui-demo-button__reset-state\"\n form=\"tui-demo-form\"\n size=\"s\"\n tuiButton\n type=\"reset\"\n >\n Reset\n </button>\n <button\n appearance=\"secondary-grayscale\"\n automation-id=\"tui-demo-button__submit-state\"\n form=\"tui-demo-form\"\n size=\"s\"\n tuiButton\n type=\"submit\"\n >\n Submit\n </button>\n </div>\n}\n", styles: [":host{position:relative;display:block;min-inline-size:100%;margin:0 0 1.5rem;font:var(--tui-typography-body-s);color:var(--tui-text-primary);background:var(--tui-background-base-alt);box-shadow:0 0 1rem .5rem var(--tui-background-base);border-radius:var(--tui-radius-m);overflow:hidden;box-sizing:border-box}:host[tuiTheme=dark]{box-shadow:none}:host :host-context([tuiTheme=\"dark\"]){background:var(--tui-background-elevation-2);box-shadow:0 0 1rem .5rem var(--tui-background-base)}:host :host-context([tuiTheme=\"dark\"])[tuiTheme=light]{box-shadow:none}.t-settings{display:flex;gap:1rem;align-items:center;justify-content:flex-end;padding:.5rem .75rem .25rem}.t-wrapper{display:flex;max-inline-size:100%;min-block-size:6rem;inline-size:100%;min-inline-size:10rem;color:var(--tui-text-primary);background-color:var(--tui-background-base);padding:.25rem;border-radius:var(--tui-radius-m);box-sizing:border-box;box-shadow:inset 0 0 0 .25rem var(--tui-background-base-alt);overflow:hidden;pointer-events:auto}:host-context([tuiTheme=\"dark\"]) .t-wrapper{box-shadow:inset 0 0 0 .25rem var(--tui-background-elevation-2)}.t-wrapper.t-wrapper_transparent{background-image:linear-gradient(45deg,var(--tui-background-base-alt) 25%,transparent 25%),linear-gradient(-45deg,var(--tui-background-base-alt) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--tui-background-base-alt) 75%),linear-gradient(-45deg,transparent 75%,var(--tui-background-base-alt) 75%);background-size:1.25rem 1.25rem;background-position:0 0,0 .625rem,.625rem -.625rem,-.625rem 0}@media screen and (max-width: 767.4px){.t-wrapper{min-block-size:auto}}.t-content{flex:1 1 0;min-inline-size:0;padding:1.5rem;box-sizing:border-box;overflow:hidden}@media screen and (max-width: 767.4px){.t-content{padding:1rem}}.t-footer{display:flex;gap:.25rem;padding:0 .25rem .25rem}.t-select{inline-size:6rem;margin-inline-start:auto}.t-value{flex:1;background:var(--tui-background-base);border-radius:var(--tui-radius-m);box-shadow:inset 0 -.25rem 0 .25rem var(--tui-background-base-alt);padding:.5rem .75rem 1rem;margin:0 0 -.25rem}:host-context([tuiTheme=\"dark\"]) .t-value{box-shadow:inset 0 -.25rem 0 .25rem var(--tui-background-elevation-2)}.t-resizer{transition-property:color;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:relative;display:flex;min-block-size:inherit;align-items:center;justify-content:center;flex-shrink:0;color:var(--tui-text-tertiary)}.t-resizer:hover,.t-resizer:active{color:var(--tui-text-secondary)}@media screen and (max-width: 767.4px){.t-resizer{display:none}}@media screen and (min-height: 37.5rem){:host._sticky{position:sticky;z-index:2;inset-block-start:4.625rem}}\n"] }]
|
|
428
428
|
}] });
|
|
429
429
|
|
|
@@ -526,7 +526,7 @@ class TuiDocExample {
|
|
|
526
526
|
this.doc.dispatchEvent(new CustomEvent('tui-example', { detail: this.resolvedId() }));
|
|
527
527
|
}
|
|
528
528
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TuiDocExample, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
529
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: TuiDocExample, isStandalone: true, selector: "tui-doc-example", inputs: { heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, fullsize: { classPropertyName: "fullsize", publicName: "fullsize", isSignal: true, isRequired: false, transformFunction: null }, component: { classPropertyName: "component", publicName: "component", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null }, preview: { classPropertyName: "preview", publicName: "preview", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "waIntersectionThreshold": "1", "waIntersectionRootMargin": "-40px 0px 1000000% 0px" }, listeners: { "waIntersectionObservee": "onIntersection()" }, properties: { "attr.id": "resolvedId()", "class._fullsize": "fullsize()" } }, usesOnChanges: true, hostDirectives: [{ directive: i1$2.WaIntersectionObserverDirective }, { directive: i1$2.WaIntersectionObservee, outputs: ["waIntersectionObservee", "waIntersectionObservee"] }], ngImport: i0, template: "@if (heading()) {\n <header tuiHeader=\"h6\">\n <hgroup tuiTitle>\n <h3>\n <a\n appearance=\"\"\n routerLink=\".\"\n tuiLink\n class=\"t-link\"\n [attr.title]=\"copy()\"\n [fragment]=\"resolvedId()\"\n [iconEnd]=\"icons.link\"\n [relativeTo]=\"route.firstChild ?? route\"\n (click)=\"copyExampleLink($event.currentTarget)\"\n >\n {{ heading() }}\n </a>\n </h3>\n </hgroup>\n </header>\n\n @if (description()) {\n <div tuiDescription>\n <ng-container *polymorpheusOutlet=\"description() as text\">\n {{ text }}\n </ng-container>\n </div>\n }\n}\n<div\n class=\"t-example\"\n [(tuiFullscreen)]=\"fullscreen\"\n>\n @if (processor() | tuiDocExampleGetTabs: defaultTab(); as all) {\n @let tabs = preview() ? all : all.slice(1);\n @if (tabs.length) {\n <div class=\"t-header\">\n <tui-segmented\n class=\"t-tabs\"\n [(activeItemIndex)]=\"activeItemIndex\"\n >\n @for (tab of tabs; track tab) {\n <button type=\"button\">\n <ng-container *polymorpheusOutlet=\"getTabTitle(tab) as text\">\n {{ text }}\n </ng-container>\n </button>\n }\n </tui-segmented>\n @if (processor() | tuiMapper: visible) {\n <tui-loader\n size=\"xs\"\n class=\"t-code-editor\"\n [loading]=\"loading()\"\n [overlay]=\"true\"\n (click)=\"edit(processor())\"\n >\n @if (codeEditor?.content; as content) {\n <ng-container *polymorpheusOutlet=\"content as editContent\">\n {{ editContent }}\n </ng-container>\n } @else {\n <button\n appearance=\"flat\"\n size=\"s\"\n tuiButton\n type=\"button\"\n >\n Edit on {{ codeEditor?.name }}\n </button>\n }\n </tui-loader>\n }\n @if (fullscreenEnabled && preview()) {\n <button\n appearance=\"flat-grayscale\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n [iconStart]=\"fullscreen ? icons.shrink : icons.expand\"\n (click)=\"fullscreen = !fullscreen\"\n >\n Fullscreen\n </button>\n }\n </div>\n }\n @for (tab of tabs; track tab) {\n <div class=\"t-content\">\n @if (!$index && preview()) {\n <section\n automation-id=\"tui-doc-example\"\n class=\"t-demo\"\n [style.display]=\"activeItemIndex === $index ? 'block' : 'none'\"\n >\n <ng-container *ngTemplateOutlet=\"content\" />\n <ng-container *ngComponentOutlet=\"lazyComponent.value() ?? null\" />\n </section>\n }\n @let code = processor()[tab] || '';\n <tui-doc-code\n [code]=\"code\"\n [style.display]=\"activeItemIndex === $index && ($index || !preview()) ? 'block' : 'none'\"\n >\n @for (action of codeActions; track action) {\n <ng-container *polymorpheusOutlet=\"action as text; context: {$implicit: code}\">\n {{ text }}\n </ng-container>\n }\n </tui-doc-code>\n </div>\n } @empty {\n <div class=\"t-content\">\n <section class=\"t-demo\">\n <ng-container *ngTemplateOutlet=\"content\" />\n </section>\n </div>\n }\n }\n</div>\n<ng-template #content>\n <ng-content />\n</ng-template>\n", styles: [":host{position:relative;display:block;padding-block-start:2rem;scroll-margin-top:4rem}:host :host-context(tui-doc-toc +){padding-block-start:0}:host :host-context(tui-doc-toc ~){inline-size:calc(100% - 20rem)}@media screen and (max-width: 1279.4px){:host :host-context(tui-doc-toc ~){inline-size:100%}}:host :host-context(tui-doc-toc:empty ~){inline-size:100%}:host ::ng-deep :fullscreen .t-header{padding:.25rem}.t-link.t-link{text-decoration:none!important;font:inherit}.t-link.t-link:after{transition-property:color;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;color:transparent}.t-link.t-link:hover,.t-link.t-link:hover:after{color:var(--tui-text-secondary)}.t-example{position:relative;border:.25rem solid var(--tui-background-base-alt);border-radius:var(--tui-radius-m);overflow:hidden}:host-context([tuiTheme=\"dark\"]) .t-example{border:.25rem solid var(--tui-background-elevation-2)}.t-example:not(:first-child){margin-block-start:1.25rem}@media screen and (max-width: 767.4px){.t-example:not(:first-child){margin-block-start:.75rem}}.t-header{display:flex;justify-content:space-between;align-items:center;overflow:auto;gap:.25rem;padding-block-end:.25rem;padding-inline-end:.125rem;background:var(--tui-background-base-alt);--tui-stroke-width: .09375rem}:host-context([tuiTheme=\"dark\"]) .t-header{background:var(--tui-background-elevation-2)}.t-tabs{flex-grow:1;background:none;margin:-.125rem}.t-tabs:before{filter:none}.t-content{border-radius:var(--tui-radius-m);box-shadow:-1rem -1rem var(--tui-background-base-alt),1rem -1rem var(--tui-background-base-alt)}:host-context([tuiTheme=\"dark\"]) .t-content{box-shadow:-1rem -1rem var(--tui-background-elevation-2),1rem -1rem var(--tui-background-elevation-2)}.t-content:first-child{box-shadow:none}.t-code-editor{flex-shrink:0;block-size:auto}@media screen and (max-width: 767.4px){.t-code-editor{font-size:0;inline-size:1.5rem}}.t-demo{position:relative;padding:2rem;max-inline-size:100%;box-sizing:border-box;overflow-x:auto}:host:not(._fullsize) .t-demo{inline-size:min-content;min-inline-size:21rem}@media screen and (max-width: 767.4px){.t-demo{min-inline-size:100%!important;padding:1rem}}tui-doc-code{overflow:hidden}\n"], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: TuiDocCode, selector: "tui-doc-code", inputs: ["filename", "code", "lineNumbers"] }, { kind: "pipe", type: TuiDocExampleGetTabsPipe, name: "tuiDocExampleGetTabs" }, { kind: "component", type: TuiFullscreen, selector: "[tuiFullscreen]", inputs: ["tuiFullscreen", "tuiFullscreenOptions"], outputs: ["tuiFullscreenChange"] }, { kind: "directive", type: TuiHeader, selector: "[tuiHeader]", inputs: ["tuiHeader"] }, { kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]" }, { kind: "component", type: TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "loading"] }, { kind: "pipe", type: TuiMapperPipe, name: "tuiMapper" }, { kind: "component", type: TuiSegmented, selector: "tui-segmented", inputs: ["size", "activeItemIndex"], outputs: ["activeItemIndexChange"] }, { kind: "directive", type: TuiTitle, selector: "[tuiTitle]", inputs: ["tuiTitle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
529
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: TuiDocExample, isStandalone: true, selector: "tui-doc-example", inputs: { heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, fullsize: { classPropertyName: "fullsize", publicName: "fullsize", isSignal: true, isRequired: false, transformFunction: null }, component: { classPropertyName: "component", publicName: "component", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null }, preview: { classPropertyName: "preview", publicName: "preview", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "waIntersectionRootMargin": "-40px 0px 1000000% 0px", "waIntersectionThreshold": "1" }, listeners: { "waIntersectionObservee": "onIntersection()" }, properties: { "attr.id": "resolvedId()", "class._fullsize": "fullsize()" } }, usesOnChanges: true, hostDirectives: [{ directive: i1$2.WaIntersectionObserverDirective }, { directive: i1$2.WaIntersectionObservee, outputs: ["waIntersectionObservee", "waIntersectionObservee"] }], ngImport: i0, template: "@if (heading()) {\n <header tuiHeader=\"h6\">\n <hgroup tuiTitle>\n <h3>\n <a\n appearance=\"\"\n routerLink=\".\"\n tuiLink\n class=\"t-link\"\n [attr.title]=\"copy()\"\n [fragment]=\"resolvedId()\"\n [iconEnd]=\"icons.link\"\n [relativeTo]=\"route.firstChild ?? route\"\n (click)=\"copyExampleLink($event.currentTarget)\"\n >\n {{ heading() }}\n </a>\n </h3>\n </hgroup>\n </header>\n\n @if (description()) {\n <div tuiDescription>\n <ng-container *polymorpheusOutlet=\"description() as text\">\n {{ text }}\n </ng-container>\n </div>\n }\n}\n<div\n class=\"t-example\"\n [(tuiFullscreen)]=\"fullscreen\"\n>\n @if (processor() | tuiDocExampleGetTabs: defaultTab(); as all) {\n @let tabs = preview() ? all : all.slice(1);\n @if (tabs.length) {\n <div class=\"t-header\">\n <tui-segmented\n class=\"t-tabs\"\n [(activeItemIndex)]=\"activeItemIndex\"\n >\n @for (tab of tabs; track tab) {\n <button type=\"button\">\n <ng-container *polymorpheusOutlet=\"getTabTitle(tab) as text\">\n {{ text }}\n </ng-container>\n </button>\n }\n </tui-segmented>\n @if (processor() | tuiMapper: visible) {\n <tui-loader\n size=\"xs\"\n class=\"t-code-editor\"\n [loading]=\"loading()\"\n [overlay]=\"true\"\n (click)=\"edit(processor())\"\n >\n @if (codeEditor?.content; as content) {\n <ng-container *polymorpheusOutlet=\"content as editContent\">\n {{ editContent }}\n </ng-container>\n } @else {\n <button\n appearance=\"flat\"\n size=\"s\"\n tuiButton\n type=\"button\"\n >\n Edit on {{ codeEditor?.name }}\n </button>\n }\n </tui-loader>\n }\n @if (fullscreenEnabled && preview()) {\n <button\n appearance=\"flat-grayscale\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n [iconStart]=\"fullscreen ? icons.shrink : icons.expand\"\n (click)=\"fullscreen = !fullscreen\"\n >\n Fullscreen\n </button>\n }\n </div>\n }\n @for (tab of tabs; track tab) {\n <div class=\"t-content\">\n @if (!$index && preview()) {\n <section\n automation-id=\"tui-doc-example\"\n class=\"t-demo\"\n [style.display]=\"activeItemIndex === $index ? 'block' : 'none'\"\n >\n <ng-container *ngTemplateOutlet=\"content\" />\n <ng-container *ngComponentOutlet=\"lazyComponent.value() ?? null\" />\n </section>\n }\n @let code = processor()[tab] || '';\n <tui-doc-code\n [code]=\"code\"\n [style.display]=\"activeItemIndex === $index && ($index || !preview()) ? 'block' : 'none'\"\n >\n @for (action of codeActions; track action) {\n <ng-container *polymorpheusOutlet=\"action as text; context: {$implicit: code}\">\n {{ text }}\n </ng-container>\n }\n </tui-doc-code>\n </div>\n } @empty {\n <div class=\"t-content\">\n <section class=\"t-demo\">\n <ng-container *ngTemplateOutlet=\"content\" />\n </section>\n </div>\n }\n }\n</div>\n<ng-template #content>\n <ng-content />\n</ng-template>\n", styles: [":host{position:relative;display:block;padding-block-start:2rem;scroll-margin-top:4rem}:host :host-context(tui-doc-toc +){padding-block-start:0}:host :host-context(tui-doc-toc ~){inline-size:calc(100% - 20rem)}@media screen and (max-width: 1279.4px){:host :host-context(tui-doc-toc ~){inline-size:100%}}:host :host-context(tui-doc-toc:empty ~){inline-size:100%}:host ::ng-deep :fullscreen .t-header{padding:.25rem}.t-link.t-link{text-decoration:none!important;font:inherit}.t-link.t-link:after{transition-property:color;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;color:transparent}.t-link.t-link:hover,.t-link.t-link:hover:after{color:var(--tui-text-secondary)}.t-example{position:relative;border:.25rem solid var(--tui-background-base-alt);border-radius:var(--tui-radius-m);overflow:hidden}:host-context([tuiTheme=\"dark\"]) .t-example{border:.25rem solid var(--tui-background-elevation-2)}.t-example:not(:first-child){margin-block-start:1.25rem}@media screen and (max-width: 767.4px){.t-example:not(:first-child){margin-block-start:.75rem}}.t-header{display:flex;justify-content:space-between;align-items:center;overflow:auto;gap:.25rem;padding-block-end:.25rem;padding-inline-end:.125rem;background:var(--tui-background-base-alt);--tui-stroke-width: .09375rem}:host-context([tuiTheme=\"dark\"]) .t-header{background:var(--tui-background-elevation-2)}.t-tabs{flex-grow:1;background:none;margin:-.125rem}.t-tabs:before{filter:none}.t-content{border-radius:var(--tui-radius-m);box-shadow:-1rem -1rem var(--tui-background-base-alt),1rem -1rem var(--tui-background-base-alt)}:host-context([tuiTheme=\"dark\"]) .t-content{box-shadow:-1rem -1rem var(--tui-background-elevation-2),1rem -1rem var(--tui-background-elevation-2)}.t-content:first-child{box-shadow:none}.t-code-editor{flex-shrink:0;block-size:auto}@media screen and (max-width: 767.4px){.t-code-editor{font-size:0;inline-size:1.5rem}}.t-demo{position:relative;padding:2rem;max-inline-size:100%;box-sizing:border-box;overflow-x:auto}:host:not(._fullsize) .t-demo{inline-size:min-content;min-inline-size:21rem}@media screen and (max-width: 767.4px){.t-demo{min-inline-size:100%!important;padding:1rem}}tui-doc-code{overflow:hidden}\n"], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: TuiDocCode, selector: "tui-doc-code", inputs: ["filename", "code", "lineNumbers"] }, { kind: "pipe", type: TuiDocExampleGetTabsPipe, name: "tuiDocExampleGetTabs" }, { kind: "component", type: TuiFullscreen, selector: "[tuiFullscreen]", inputs: ["tuiFullscreen", "tuiFullscreenOptions"], outputs: ["tuiFullscreenChange"] }, { kind: "directive", type: TuiHeader, selector: "[tuiHeader]", inputs: ["tuiHeader"] }, { kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]" }, { kind: "component", type: TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "loading"] }, { kind: "pipe", type: TuiMapperPipe, name: "tuiMapper" }, { kind: "component", type: TuiSegmented, selector: "tui-segmented", inputs: ["size", "activeItemIndex", "disabled"], outputs: ["activeItemIndexChange"] }, { kind: "directive", type: TuiTitle, selector: "[tuiTitle]", inputs: ["tuiTitle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
530
530
|
}
|
|
531
531
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TuiDocExample, decorators: [{
|
|
532
532
|
type: Component,
|
|
@@ -552,8 +552,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
552
552
|
outputs: ['waIntersectionObservee'],
|
|
553
553
|
},
|
|
554
554
|
], host: {
|
|
555
|
-
waIntersectionThreshold: '1',
|
|
556
555
|
waIntersectionRootMargin: '-40px 0px 1000000% 0px',
|
|
556
|
+
waIntersectionThreshold: '1',
|
|
557
557
|
'[attr.id]': 'resolvedId()',
|
|
558
558
|
'[class._fullsize]': 'fullsize()',
|
|
559
559
|
'(waIntersectionObservee)': 'onIntersection()',
|
|
@@ -922,7 +922,7 @@ class TuiDocPage {
|
|
|
922
922
|
this.activeItemIndex = model(0);
|
|
923
923
|
}
|
|
924
924
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TuiDocPage, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
925
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: TuiDocPage, isStandalone: true, selector: "tui-doc-page", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, package: { classPropertyName: "package", publicName: "package", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, tags: { classPropertyName: "tags", publicName: "tags", isSignal: true, isRequired: false, transformFunction: null }, path: { classPropertyName: "path", publicName: "path", isSignal: true, isRequired: false, transformFunction: null }, activeItemIndex: { classPropertyName: "activeItemIndex", publicName: "activeItemIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeItemIndex: "activeItemIndexChange" }, queries: [{ propertyName: "tabConnectors", predicate: TuiDocPageTabConnector, isSignal: true }], ngImport: i0, template: "<header\n tuiHeader\n class=\"t-header\"\n>\n @if (header()) {\n <hgroup tuiTitle>\n <h1>\n {{ header() }}\n @if (package()) {\n <span\n appearance=\"custom\"\n size=\"m\"\n tuiBadge\n class=\"t-badge\"\n [style.background]=\"package() | tuiAutoColor\"\n >\n {{ package() }}\n </span>\n }\n @for (tag of tags(); track $index) {\n <span\n appearance=\"custom\"\n size=\"m\"\n tuiBadge\n class=\"t-badge\"\n [style.background]=\"tag | tuiAutoColor\"\n >\n {{ tag }}\n </span>\n }\n </h1>\n <p\n tuiFade\n class=\"t-navigation\"\n >\n @if (tabConnectors().length > 1) {\n <tui-segmented [(activeItemIndex)]=\"activeItemIndex\">\n @for (tab of tabConnectors(); track tab) {\n @if (tab.pageTab() || defaultTabs[$index]; as tabName) {\n <a\n routerLinkActive\n [routerLink]=\"$first ? './' : tabName.replace(from, to)\"\n [routerLinkActiveOptions]=\"{exact: $first}\"\n >\n {{ tabName }}\n </a>\n }\n }\n @for (tab of tabs | keyvalue; track tab) {\n <a\n routerLinkActive\n [routerLink]=\"tab.key\"\n >\n {{ tab.key }}\n </a>\n }\n </tui-segmented>\n }\n\n @if (package() || path() || type()) {\n <tui-doc-source-code\n class=\"t-source-code\"\n [header]=\"header()\"\n [package]=\"package()\"\n [path]=\"path()\"\n [type]=\"type()\"\n />\n }\n </p>\n </hgroup>\n }\n</header>\n<ng-content />\n@for (tab of tabConnectors(); track tab) {\n @if ($index === activeItemIndex()) {\n <tui-doc-toc />\n <ng-container [ngTemplateOutlet]=\"tab.template\" />\n }\n}\n@for (tab of tabs | keyvalue; track tab) {\n @if ($index + tabConnectors().length === activeItemIndex()) {\n <ng-container *polymorpheusOutlet=\"tab.value as text\">{{ text }}</ng-container>\n }\n}\n", styles: [":host{display:block;max-inline-size:70rem;font:var(--tui-typography-body-m);padding:3rem;margin:0 auto}@media screen and (max-width: 767.4px){:host{padding:1rem 1.5rem}}.t-header{margin-block-end:2rem}.t-navigation{scrollbar-width:none;-ms-overflow-style:none;display:flex;gap:.625rem;margin-block-start:1rem;overflow:auto}.t-navigation::-webkit-scrollbar,.t-navigation::-webkit-scrollbar-thumb{display:none}@media screen and (max-width: 767.4px){.t-navigation{margin:.5rem 0 1rem}}.t-badge{vertical-align:middle;text-transform:uppercase;margin-inline-end:.5rem;color:#000}.t-content{padding:1rem 2rem}@media screen and (max-width: 767.4px){.t-content{padding:1rem 1.5rem}}.t-source-code{display:flex}\n"], dependencies: [{ kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "pipe", type: TuiAutoColorPipe, name: "tuiAutoColor" }, { kind: "directive", type: TuiBadge, selector: "[tuiBadge],tui-icon[tuiBadge]", inputs: ["size"] }, { kind: "component", type: TuiDocSourceCode, selector: "tui-doc-source-code", inputs: ["header", "package", "type", "path"] }, { kind: "component", type: TuiDocToc, selector: "tui-doc-toc" }, { kind: "directive", type: TuiFade, selector: "[tuiFade]", inputs: ["tuiFadeHeight", "tuiFadeSize", "tuiFadeOffset", "tuiFade"] }, { kind: "directive", type: TuiHeader, selector: "[tuiHeader]", inputs: ["tuiHeader"] }, { kind: "component", type: TuiSegmented, selector: "tui-segmented", inputs: ["size", "activeItemIndex"], outputs: ["activeItemIndexChange"] }, { kind: "directive", type: TuiTitle, selector: "[tuiTitle]", inputs: ["tuiTitle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
925
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: TuiDocPage, isStandalone: true, selector: "tui-doc-page", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, package: { classPropertyName: "package", publicName: "package", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, tags: { classPropertyName: "tags", publicName: "tags", isSignal: true, isRequired: false, transformFunction: null }, path: { classPropertyName: "path", publicName: "path", isSignal: true, isRequired: false, transformFunction: null }, activeItemIndex: { classPropertyName: "activeItemIndex", publicName: "activeItemIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeItemIndex: "activeItemIndexChange" }, queries: [{ propertyName: "tabConnectors", predicate: TuiDocPageTabConnector, isSignal: true }], ngImport: i0, template: "<header\n tuiHeader\n class=\"t-header\"\n>\n @if (header()) {\n <hgroup tuiTitle>\n <h1>\n {{ header() }}\n @if (package()) {\n <span\n appearance=\"custom\"\n size=\"m\"\n tuiBadge\n class=\"t-badge\"\n [style.background]=\"package() | tuiAutoColor\"\n >\n {{ package() }}\n </span>\n }\n @for (tag of tags(); track $index) {\n <span\n appearance=\"custom\"\n size=\"m\"\n tuiBadge\n class=\"t-badge\"\n [style.background]=\"tag | tuiAutoColor\"\n >\n {{ tag }}\n </span>\n }\n </h1>\n <p\n tuiFade\n class=\"t-navigation\"\n >\n @if (tabConnectors().length > 1) {\n <tui-segmented [(activeItemIndex)]=\"activeItemIndex\">\n @for (tab of tabConnectors(); track tab) {\n @if (tab.pageTab() || defaultTabs[$index]; as tabName) {\n <a\n routerLinkActive\n [routerLink]=\"$first ? './' : tabName.replace(from, to)\"\n [routerLinkActiveOptions]=\"{exact: $first}\"\n >\n {{ tabName }}\n </a>\n }\n }\n @for (tab of tabs | keyvalue; track tab) {\n <a\n routerLinkActive\n [routerLink]=\"tab.key\"\n >\n {{ tab.key }}\n </a>\n }\n </tui-segmented>\n }\n\n @if (package() || path() || type()) {\n <tui-doc-source-code\n class=\"t-source-code\"\n [header]=\"header()\"\n [package]=\"package()\"\n [path]=\"path()\"\n [type]=\"type()\"\n />\n }\n </p>\n </hgroup>\n }\n</header>\n<ng-content />\n@for (tab of tabConnectors(); track tab) {\n @if ($index === activeItemIndex()) {\n <tui-doc-toc />\n <ng-container [ngTemplateOutlet]=\"tab.template\" />\n }\n}\n@for (tab of tabs | keyvalue; track tab) {\n @if ($index + tabConnectors().length === activeItemIndex()) {\n <ng-container *polymorpheusOutlet=\"tab.value as text\">{{ text }}</ng-container>\n }\n}\n", styles: [":host{display:block;max-inline-size:70rem;font:var(--tui-typography-body-m);padding:3rem;margin:0 auto}@media screen and (max-width: 767.4px){:host{padding:1rem 1.5rem}}.t-header{margin-block-end:2rem}.t-navigation{scrollbar-width:none;-ms-overflow-style:none;display:flex;gap:.625rem;margin-block-start:1rem;overflow:auto}.t-navigation::-webkit-scrollbar,.t-navigation::-webkit-scrollbar-thumb{display:none}@media screen and (max-width: 767.4px){.t-navigation{margin:.5rem 0 1rem}}.t-badge{vertical-align:middle;text-transform:uppercase;margin-inline-end:.5rem;color:#000}.t-content{padding:1rem 2rem}@media screen and (max-width: 767.4px){.t-content{padding:1rem 1.5rem}}.t-source-code{display:flex}\n"], dependencies: [{ kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "pipe", type: TuiAutoColorPipe, name: "tuiAutoColor" }, { kind: "directive", type: TuiBadge, selector: "[tuiBadge],tui-icon[tuiBadge]", inputs: ["size"] }, { kind: "component", type: TuiDocSourceCode, selector: "tui-doc-source-code", inputs: ["header", "package", "type", "path"] }, { kind: "component", type: TuiDocToc, selector: "tui-doc-toc" }, { kind: "directive", type: TuiFade, selector: "[tuiFade]", inputs: ["tuiFadeHeight", "tuiFadeSize", "tuiFadeOffset", "tuiFade"] }, { kind: "directive", type: TuiHeader, selector: "[tuiHeader]", inputs: ["tuiHeader"] }, { kind: "component", type: TuiSegmented, selector: "tui-segmented", inputs: ["size", "activeItemIndex", "disabled"], outputs: ["activeItemIndexChange"] }, { kind: "directive", type: TuiTitle, selector: "[tuiTitle]", inputs: ["tuiTitle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
926
926
|
}
|
|
927
927
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TuiDocPage, decorators: [{
|
|
928
928
|
type: Component,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-addon-doc-components.mjs","sources":["../../../projects/addon-doc/components/api/api.component.ts","../../../projects/addon-doc/components/api/api-item-number.directive.ts","../../../projects/addon-doc/components/api/inspect.pipe.ts","../../../projects/addon-doc/components/api/type-reference.pipe.ts","../../../projects/addon-doc/components/api/api-item.component.ts","../../../projects/addon-doc/components/api/api-item.template.html","../../../projects/addon-doc/components/code/index.ts","../../../projects/addon-doc/components/code/index.html","../../../projects/addon-doc/components/copy/index.ts","../../../projects/addon-doc/components/copy/index.html","../../../projects/addon-doc/components/demo/index.ts","../../../projects/addon-doc/components/demo/index.html","../../../projects/addon-doc/components/doc-tab/index.ts","../../../projects/addon-doc/components/doc-tab/index.html","../../../projects/addon-doc/components/example/example.options.ts","../../../projects/addon-doc/components/example/example-get-tabs.pipe.ts","../../../projects/addon-doc/components/example/example.component.ts","../../../projects/addon-doc/components/example/example.template.html","../../../projects/addon-doc/components/navigation/navigation.providers.ts","../../../projects/addon-doc/components/navigation/scroll-into-view.directive.ts","../../../projects/addon-doc/components/navigation/navigation.component.ts","../../../projects/addon-doc/components/navigation/navigation.template.html","../../../projects/addon-doc/components/internal/header/index.ts","../../../projects/addon-doc/components/internal/header/index.html","../../../projects/addon-doc/components/internal/source-code/source-code.component.ts","../../../projects/addon-doc/components/internal/source-code/source-code.template.html","../../../projects/addon-doc/components/main/main.component.ts","../../../projects/addon-doc/components/main/main.template.html","../../../projects/addon-doc/components/toc/index.ts","../../../projects/addon-doc/components/toc/index.html","../../../projects/addon-doc/components/page/page.providers.ts","../../../projects/addon-doc/components/page/page-tab.directive.ts","../../../projects/addon-doc/components/page/page.component.ts","../../../projects/addon-doc/components/page/page.template.html","../../../projects/addon-doc/components/theme-switcher/theme-switcher.component.ts","../../../projects/addon-doc/components/theme-switcher/theme-switcher.template.html","../../../projects/addon-doc/components/taiga-ui-addon-doc-components.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\nimport {tuiHintOptionsProvider} from '@taiga-ui/core/portals/hint';\n\n@Component({\n selector: 'table[tuiDocAPI]',\n template: `\n <thead>\n <tr>\n <ng-content select=\"th\" />\n </tr>\n </thead>\n <tbody><ng-content /></tbody>\n <ng-content select=\"tbody\" />\n `,\n styleUrl: './api.style.less',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiHintOptionsProvider({appearance: 'floating'})],\n})\nexport class TuiDocAPI {}\n","import {Directive, input} from '@angular/core';\n\n@Directive({selector: 'tr[tuiDocAPIItem][type=number]'})\nexport class TuiDocAPINumberItem {\n public readonly min = input<number | null>(null);\n\n public readonly max = input<number | null>(null);\n}\n","import {inject, Pipe, type PipeTransform, TemplateRef} from '@angular/core';\nimport {WA_IS_E2E} from '@ng-web-apis/platform';\nimport {tuiInspect} from '@taiga-ui/addon-doc/utils';\n\n@Pipe({name: 'tuiInspect'})\nexport class TuiInspectPipe implements PipeTransform {\n private readonly isE2E = inject(WA_IS_E2E);\n\n public transform(value: unknown, depth = 2): string {\n if (this.isE2E && typeof value === 'function') {\n /**\n * @description:\n * When developing in production mode the webpack bundler minify\n * functions in different ways, then due to which the string content\n * of the function may differ from build to build, which can be to\n * various problems when screenshot testing on e2e.\n */\n return 'λ(x) => y';\n }\n\n return value instanceof TemplateRef ? 'TemplateRef' : tuiInspect(value, depth);\n }\n}\n","import {inject, Pipe, type PipeTransform} from '@angular/core';\nimport {\n TUI_DOC_TYPE_REFERENCE_HANDLER,\n TUI_DOC_TYPE_REFERENCE_PARSER,\n} from '@taiga-ui/addon-doc/tokens';\n\n@Pipe({name: 'tuiTypeReference'})\nexport class TuiTypeReferencePipe implements PipeTransform {\n private readonly parser = inject(TUI_DOC_TYPE_REFERENCE_PARSER);\n private readonly linkHandler = inject(TUI_DOC_TYPE_REFERENCE_HANDLER);\n\n public transform(original: string): ReadonlyArray<{\n type: string;\n extracted: string;\n reference: string | null;\n }> {\n return this.parser(original)\n .map(({type, extracted}) => ({\n type,\n extracted,\n reference: this.linkHandler?.(extracted) ?? null,\n }))\n .sort((a, b) => b.reference?.localeCompare(a.reference ?? '') ?? -1);\n }\n}\n","import {Location, NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n model,\n type OnInit,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {ActivatedRoute, type Params, UrlSerializer} from '@angular/router';\nimport {TUI_DOC_URL_STATE_HANDLER} from '@taiga-ui/addon-doc/tokens';\nimport {tuiCoerceValue, tuiInspect} from '@taiga-ui/addon-doc/utils';\nimport {tuiIsNumber} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiInput} from '@taiga-ui/core/components/input';\nimport {TuiNotificationService} from '@taiga-ui/core/components/notification';\nimport {TuiHint} from '@taiga-ui/core/portals/hint';\nimport {TuiDataListWrapper} from '@taiga-ui/kit/components/data-list-wrapper';\nimport {TuiInputNumber} from '@taiga-ui/kit/components/input-number';\nimport {TuiSelect} from '@taiga-ui/kit/components/select';\nimport {TuiSwitch} from '@taiga-ui/kit/components/switch';\nimport {TuiChevron} from '@taiga-ui/kit/directives/chevron';\n\nimport {TuiDocAPINumberItem} from './api-item-number.directive';\nimport {TuiInspectPipe} from './inspect.pipe';\nimport {TuiTypeReferencePipe} from './type-reference.pipe';\n\nconst SERIALIZED_SUFFIX = '$';\n\n@Component({\n selector: 'tr[tuiDocAPIItem]',\n imports: [\n FormsModule,\n NgTemplateOutlet,\n TuiChevron,\n TuiDataListWrapper,\n TuiHint,\n TuiInput,\n TuiInputNumber,\n TuiInspectPipe,\n TuiSelect,\n TuiSwitch,\n TuiTypeReferencePipe,\n ],\n templateUrl: './api-item.template.html',\n styleUrl: './api-item.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiDocAPIItem<T> implements OnInit {\n private readonly locationRef = inject(Location);\n private readonly activatedRoute = inject(ActivatedRoute);\n private readonly urlSerializer = inject(UrlSerializer);\n private readonly urlStateHandler = inject(TUI_DOC_URL_STATE_HANDLER);\n private readonly alerts = inject(TuiNotificationService);\n\n protected readonly numberItem = inject(TuiDocAPINumberItem, {\n self: true,\n optional: true,\n });\n\n protected readonly isBananaBox = computed(() => this.name().startsWith('[('));\n protected readonly isInput = computed(() => this.name().startsWith('['));\n protected readonly isOutput = computed(() => this.name().startsWith('('));\n\n public readonly name = input('');\n public readonly type = input('');\n public readonly value = model<T>();\n public readonly items = input([], {transform: (v?: readonly T[]) => v || []});\n\n protected readonly hasCleaner = computed(\n () => this.type().includes('null') || this.type().includes('PolymorpheusContent'),\n );\n\n public ngOnInit(): void {\n this.parseParams(this.activatedRoute.snapshot.queryParams);\n }\n\n public onValueChange(value: T): void {\n this.value.set(value);\n this.setQueryParam(value);\n }\n\n public emitEvent(event: unknown): void {\n console.info('emitEvent', event);\n\n const alert =\n !event || event?.toString() === '[object Object]'\n ? tuiInspect(event, 2)\n : (event as string);\n\n this.alerts.open(alert, {label: this.name()}).subscribe();\n }\n\n private clearBrackets(value: string): string {\n return value.replaceAll(/[()[\\]]/g, '');\n }\n\n private parseParams(params: Params): void {\n const name = this.clearBrackets(this.name());\n const propertyValue: string | undefined = params[name];\n const propertyValueWithSuffix: number | string | undefined =\n params[`${name}${SERIALIZED_SUFFIX}`];\n\n if (!propertyValue && !propertyValueWithSuffix) {\n return;\n }\n\n const items = this.items();\n let value =\n !!propertyValueWithSuffix && items\n ? items[propertyValueWithSuffix as number]\n : tuiCoerceValue(propertyValue);\n\n if (this.type() === 'string' && tuiIsNumber(value)) {\n value = value.toString();\n }\n\n this.onValueChange(value as T);\n }\n\n private setQueryParam(value: T | boolean | number | string | null): void {\n const tree = this.urlSerializer.parse(this.locationRef.path());\n\n const isValueAvailableByKey = value instanceof Object;\n const items = this.items();\n const computedValue =\n isValueAvailableByKey && items ? items.indexOf(value as T) : value;\n\n const suffix = isValueAvailableByKey ? SERIALIZED_SUFFIX : '';\n const propName = `${this.clearBrackets(this.name())}${suffix}`;\n\n tree.queryParams = {\n ...tree.queryParams,\n [propName]: computedValue,\n };\n\n this.locationRef.go(this.urlStateHandler(tree));\n }\n}\n","<td class=\"t-td\">\n <code\n tuiHintDirection=\"top-end\"\n class=\"t-name\"\n [class.t-name_banana]=\"isBananaBox()\"\n [class.t-name_input]=\"isInput()\"\n [class.t-name_output]=\"isOutput()\"\n [tuiHint]=\"hint\"\n >\n {{ name() }}\n </code>\n <ng-template #hint>\n <ng-content>{{ name() }}</ng-content>\n </ng-template>\n <div class=\"t-description\">\n <ng-container *ngTemplateOutlet=\"hint\" />\n </div>\n</td>\n<td class=\"t-td\">\n <code class=\"t-type\">\n @for (item of type() | tuiTypeReference; track item) {\n @if (item.reference) {\n <a\n rel=\"noreferrer\"\n target=\"_blank\"\n class=\"t-reference\"\n [attr.href]=\"item.reference\"\n >\n {{ item.type }}\n </a>\n } @else {\n {{ item.type }}\n }\n @if (!$last) {\n <span> | </span>\n }\n }\n </code>\n</td>\n<td\n tuiTextfieldSize=\"m\"\n class=\"t-td\"\n>\n @if (items().length) {\n <tui-textfield\n tuiChevron\n class=\"t-input\"\n [content]=\"content\"\n [tuiTextfieldCleaner]=\"hasCleaner()\"\n >\n <input\n tuiSelect\n [ngModel]=\"value() ?? null\"\n (ngModelChange)=\"onValueChange($event)\"\n />\n <tui-data-list-wrapper\n *tuiDropdown\n [itemContent]=\"content\"\n [items]=\"items()\"\n />\n </tui-textfield>\n } @else {\n @if (value() !== undefined) {\n @if (type() === 'boolean') {\n <input\n tuiSwitch\n type=\"checkbox\"\n [id]=\"name()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"onValueChange($event)\"\n />\n }\n\n @if (type() === 'string') {\n <tui-textfield class=\"t-input\">\n <input\n tuiInput\n [id]=\"name()\"\n [ngModel]=\"value() || ''\"\n (ngModelChange)=\"onValueChange($event)\"\n />\n </tui-textfield>\n }\n\n @if (type() === 'number' || type() === 'bigint' || type() === 'number | bigint') {\n <tui-textfield class=\"t-input\">\n <input\n tuiInputNumber\n [id]=\"name()\"\n [max]=\"numberItem?.max() ?? null\"\n [min]=\"numberItem?.min() ?? null\"\n [ngModel]=\"value()\"\n [step]=\"1\"\n (ngModelChange)=\"onValueChange($event || 0)\"\n />\n </tui-textfield>\n }\n }\n }\n <ng-template\n #content\n let-data\n >\n <code [style.margin]=\"0\">{{ data | tuiInspect }}</code>\n </ng-template>\n</td>\n","import {ClipboardModule} from '@angular/cdk/clipboard';\nimport {isPlatformServer} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n type OnChanges,\n PLATFORM_ID,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {TUI_DOC_EXAMPLE_MARKDOWN_CODE_PROCESSOR} from '@taiga-ui/addon-doc/tokens';\nimport {type TuiRawLoaderContent} from '@taiga-ui/addon-doc/types';\nimport {tuiRawLoad} from '@taiga-ui/addon-doc/utils';\nimport {type TuiHandler} from '@taiga-ui/cdk/types';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {TUI_COPY_OPTIONS} from '@taiga-ui/kit/components/copy';\nimport {TUI_COPY_TEXTS} from '@taiga-ui/kit/tokens';\nimport {HighlightAuto} from 'ngx-highlightjs';\nimport {HighlightLineNumbers} from 'ngx-highlightjs/line-numbers';\nimport {BehaviorSubject, map, startWith, Subject, switchMap, timer} from 'rxjs';\n\n@Component({\n selector: 'tui-doc-code',\n imports: [ClipboardModule, HighlightAuto, HighlightLineNumbers, TuiButton],\n templateUrl: './index.html',\n styleUrl: './index.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'[class._has-filename]': 'hasFilename'},\n})\nexport class TuiDocCode implements OnChanges {\n private readonly copy = inject(TUI_COPY_OPTIONS).icon;\n private readonly icons = inject(TUI_COMMON_ICONS);\n private readonly rawLoader$$ = new BehaviorSubject<TuiRawLoaderContent>('');\n private readonly texts = inject(TUI_COPY_TEXTS);\n\n protected readonly isServer = isPlatformServer(inject(PLATFORM_ID));\n\n protected readonly markdownCodeProcessor: TuiHandler<string, readonly string[]> =\n inject(TUI_DOC_EXAMPLE_MARKDOWN_CODE_PROCESSOR);\n\n protected readonly copy$ = new Subject<void>();\n protected readonly copyText = computed(() => this.texts()[0]);\n\n protected readonly icon = toSignal(\n this.copy$.pipe(\n switchMap(() =>\n timer(2000).pipe(\n map(() => this.copy),\n startWith(this.icons.check),\n ),\n ),\n ),\n {initialValue: this.copy},\n );\n\n protected readonly processor = toSignal(\n this.rawLoader$$.pipe(\n switchMap(tuiRawLoad),\n map((value: string) => this.markdownCodeProcessor(value)),\n ),\n {initialValue: []},\n );\n\n public readonly filename = input('');\n\n public readonly code = input<TuiRawLoaderContent>('');\n public readonly lineNumbers = input(true);\n\n public get hasFilename(): boolean {\n return !!this.filename();\n }\n\n public ngOnChanges(): void {\n this.rawLoader$$.next(this.code());\n }\n}\n","@if (filename()) {\n <p class=\"t-header\">\n {{ filename() }}\n </p>\n}\n@for (content of processor(); track content) {\n <pre class=\"t-code\">\n @if (lineNumbers()) {\n <code [highlightAuto]=\"content\" lineNumbers>{{isServer ? content : ''}}</code>\n } @else {\n <code [highlightAuto]=\"content\">{{isServer ? content : ''}}</code>\n }\n <div class=\"t-code-actions\">\n <button\n tuiIconButton\n type=\"button\"\n appearance=\"\"\n size=\"s\"\n class=\"t-copy-button\"\n [iconStart]=\"icon()\"\n [cdkCopyToClipboard]=\"content\"\n (click)=\"copy$.next()\"\n >\n {{ copyText() }}\n </button>\n <ng-content />\n </div>\n </pre>\n}\n","import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TUI_COPY_TEXTS} from '@taiga-ui/kit/tokens';\nimport {map, startWith, Subject, switchMap, timer} from 'rxjs';\n\nconst COPIED_TIMEOUT = 1500;\n\n@Component({\n selector: 'tui-doc-copy',\n imports: [TuiButton],\n templateUrl: './index.html',\n styleUrl: './index.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiDocCopy {\n private readonly copy$ = new Subject<void>();\n\n protected readonly texts = inject(TUI_COPY_TEXTS);\n\n protected readonly copied = toSignal(\n this.copy$.pipe(\n switchMap(() =>\n timer(COPIED_TIMEOUT).pipe(map(TUI_FALSE_HANDLER), startWith(true)),\n ),\n ),\n {initialValue: false},\n );\n\n protected onClick(): void {\n this.copy$.next();\n }\n}\n","<button\n appearance=\"\"\n size=\"s\"\n tuiButton\n type=\"button\"\n class=\"t-copy\"\n (click)=\"onClick()\"\n>\n <span class=\"t-content\">\n <span\n class=\"t-initial\"\n [attr.data-text]=\"copied() ? '' : texts()[0]\"\n >\n @if (!copied()) {\n <ng-content />\n }\n </span>\n {{ copied() ? texts()[1] : '' }}\n </span>\n</button>\n","import {Location, NgTemplateOutlet} from '@angular/common';\nimport {\n type AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n ElementRef,\n inject,\n input,\n Pipe,\n type PipeTransform,\n type Signal,\n signal,\n TemplateRef,\n viewChild,\n} from '@angular/core';\nimport {takeUntilDestroyed, toObservable} from '@angular/core/rxjs-interop';\nimport {\n type AbstractControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport {type Params, UrlSerializer, type UrlTree} from '@angular/router';\nimport {\n TUI_DOC_DEMO_TEXTS,\n TUI_DOC_ICONS,\n TUI_DOC_URL_STATE_HANDLER,\n} from '@taiga-ui/addon-doc/tokens';\nimport {type TuiDemoParams} from '@taiga-ui/addon-doc/types';\nimport {tuiCleanObject, tuiCoerceValueIsTrue} from '@taiga-ui/addon-doc/utils';\nimport {TuiItem} from '@taiga-ui/cdk/directives/item';\nimport {TuiResizable, TuiResizer} from '@taiga-ui/cdk/directives/resizer';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiExpand} from '@taiga-ui/core/components/expand';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {TuiTextfield} from '@taiga-ui/core/components/textfield';\nimport {TUI_DARK_MODE} from '@taiga-ui/core/tokens';\nimport {TuiDataListWrapper} from '@taiga-ui/kit/components/data-list-wrapper';\nimport {TuiSelect} from '@taiga-ui/kit/components/select';\nimport {TuiSwitch} from '@taiga-ui/kit/components/switch';\nimport {TuiChevron} from '@taiga-ui/kit/directives/chevron';\nimport {skip} from 'rxjs';\n\nconst MIN_WIDTH = 160;\n\n@Pipe({name: 'json'})\nexport class TuiJsonPipe implements PipeTransform {\n public transform(value: unknown): string {\n return JSON.stringify(\n value,\n (_, x) => (typeof x === 'bigint' ? `${String(x)}n` : x),\n 2,\n );\n }\n}\n\n@Component({\n selector: 'tui-doc-demo',\n imports: [\n FormsModule,\n NgTemplateOutlet,\n ReactiveFormsModule,\n TuiButton,\n TuiChevron,\n TuiDataListWrapper,\n TuiExpand,\n TuiIcon,\n TuiItem,\n TuiJsonPipe,\n TuiResizable,\n TuiResizer,\n TuiSelect,\n TuiSwitch,\n TuiTextfield,\n ],\n templateUrl: './index.html',\n styleUrl: './index.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class._sticky]': 'sticky()',\n '[attr.tuiTheme]': 'theme()',\n '(window:resize)': 'onResize()',\n '(document:mouseup.zoneless)': 'onMouseUp()',\n },\n})\nexport class TuiDocDemo implements AfterViewInit {\n private readonly resizable: Signal<ElementRef<HTMLElement>> = viewChild.required(\n TuiResizable,\n {read: ElementRef},\n );\n\n private readonly content = viewChild.required<ElementRef<HTMLElement>>('content');\n\n private readonly el = tuiInjectElement();\n private readonly locationRef = inject(Location);\n private readonly urlSerializer = inject(UrlSerializer);\n private readonly urlStateHandler = inject(TUI_DOC_URL_STATE_HANDLER);\n private readonly darkMode = inject(TUI_DARK_MODE);\n\n protected readonly template = contentChild(TemplateRef<Record<string, unknown>>);\n\n protected readonly rendered = signal(false);\n\n protected readonly theme = computed(() => (this.dark() ? 'dark' : 'light'));\n\n protected readonly icons = inject(TUI_DOC_ICONS);\n\n protected readonly dark = signal(\n tuiCoerceValueIsTrue(this.params.darkMode ?? this.darkMode()),\n );\n\n protected readonly $ = toObservable(this.darkMode)\n .pipe(skip(1), takeUntilDestroyed())\n .subscribe((mode) => this.onModeChange(mode));\n\n protected form?: FormGroup;\n\n protected readonly updateOnVariants = ['change', 'blur', 'submit'] as const;\n\n protected updateOn: 'blur' | 'change' | 'submit' =\n this.params.updateOn || this.updateOnVariants[0];\n\n protected opaque = tuiCoerceValueIsTrue(this.params.sandboxOpaque ?? true);\n protected expanded = tuiCoerceValueIsTrue(this.params.sandboxExpanded ?? false);\n protected sandboxWidth = Number.parseInt(this.params.sandboxWidth, 10);\n protected readonly texts = inject(TUI_DOC_DEMO_TEXTS);\n\n public readonly control = input<AbstractControl | null>(null);\n public readonly sticky = input(true);\n\n public ngAfterViewInit(): void {\n this.createForm();\n this.updateWidth(this.sandboxWidth + this.delta);\n this.rendered.set(true);\n }\n\n protected onResize(): void {\n this.updateWidth();\n this.onMouseUp();\n }\n\n protected onMouseUp(): void {\n this.updateUrl({sandboxWidth: this.sandboxWidth});\n }\n\n protected onModeChange(darkMode: boolean): void {\n this.dark.set(darkMode);\n this.updateUrl({sandboxWidth: this.sandboxWidth, darkMode});\n }\n\n protected toggleDetails(): void {\n this.expanded = !this.expanded;\n this.updateUrl({sandboxExpanded: this.expanded});\n }\n\n protected changeOpaque(opaque: boolean): void {\n this.opaque = opaque;\n this.updateUrl({sandboxOpaque: this.opaque});\n }\n\n protected updateOnChange(updateOn: 'blur' | 'change' | 'submit'): void {\n this.updateOn = updateOn;\n this.updateUrl({updateOn});\n this.createForm();\n }\n\n protected updateWidth(width = Number.NaN): void {\n if (!this.resizable() || !this.content()) {\n return;\n }\n\n const safe = width || this.resizable().nativeElement.clientWidth;\n const total = this.el.clientWidth;\n const clamped = Math.round(tuiClamp(safe, MIN_WIDTH, total)) - this.delta;\n const validated = safe < total ? clamped : Number.NaN;\n\n this.resizable().nativeElement.style.width = validated ? tuiPx(safe) : '';\n this.sandboxWidth = validated;\n }\n\n private get delta(): number {\n return this.resizable() && this.content()\n ? this.resizable().nativeElement.clientWidth -\n this.content().nativeElement.clientWidth\n : 0;\n }\n\n private get params(): Params | TuiDemoParams {\n return this.getUrlTree().queryParams;\n }\n\n private updateUrl(params: TuiDemoParams): void {\n const tree = this.getUrlTree();\n const {queryParams} = tree;\n\n delete queryParams.sandboxWidth;\n\n tree.queryParams = {\n ...queryParams,\n ...tuiCleanObject({...params}),\n };\n\n this.locationRef.go(this.urlStateHandler(tree));\n }\n\n private createForm(): void {\n const control = this.control();\n\n if (control) {\n this.form = new FormGroup({value: control}, {updateOn: this.updateOn});\n }\n }\n\n private getUrlTree(): UrlTree {\n return this.urlSerializer.parse(this.locationRef.path());\n }\n}\n","<div class=\"t-settings\">\n <label tuiLabel>\n <input\n size=\"s\"\n tuiSwitch\n type=\"checkbox\"\n [ngModel]=\"dark()\"\n (ngModelChange)=\"onModeChange($event)\"\n />\n <small>{{ texts()[0] }}</small>\n </label>\n <label tuiLabel>\n <input\n size=\"s\"\n tuiSwitch\n type=\"checkbox\"\n [ngModel]=\"opaque\"\n (ngModelChange)=\"changeOpaque($event)\"\n />\n <small>{{ texts()[1] }}</small>\n </label>\n</div>\n<div\n tuiResizable\n class=\"t-wrapper\"\n [class.t-wrapper_transparent]=\"!opaque\"\n [style.visibility]=\"rendered() ? 'visible' : 'hidden'\"\n>\n <div class=\"t-content\">\n <div\n #content\n id=\"demo-content\"\n >\n @if (form) {\n <form\n id=\"tui-demo-form\"\n [formGroup]=\"form\"\n >\n <ng-container [ngTemplateOutlet]=\"template() || null\" />\n </form>\n }\n <ng-content />\n </div>\n </div>\n <div\n class=\"t-resizer\"\n [tuiResizer]=\"[1, 0]\"\n (tuiSizeChange)=\"updateWidth($event[0])\"\n >\n <tui-icon [icon]=\"icons.resizer\" />\n </div>\n</div>\n@if (form) {\n <tui-expand [expanded]=\"expanded\">\n <ng-template tuiItem>\n <pre class=\"t-value\">Form data: {{ form.value | json }}</pre>\n </ng-template>\n </tui-expand>\n <div class=\"t-footer\">\n <button\n appearance=\"flat-grayscale\"\n automation-id=\"tui-demo-button__toggle-details\"\n size=\"s\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [tuiChevron]=\"expanded\"\n (click)=\"toggleDetails()\"\n >\n {{ texts()[2] }}\n </button>\n <tui-textfield\n tuiChevron\n tuiTextfieldAppearance=\"secondary-grayscale\"\n tuiTextfieldSize=\"s\"\n class=\"t-select\"\n [tuiTextfieldCleaner]=\"false\"\n >\n <input\n automation-id=\"tui-demo-select__expand-update-on\"\n tuiSelect\n [ngModel]=\"updateOn\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"updateOnChange($event)\"\n />\n <tui-data-list-wrapper\n *tuiDropdown\n [items]=\"updateOnVariants\"\n />\n </tui-textfield>\n <button\n appearance=\"secondary-grayscale\"\n automation-id=\"tui-demo-button__reset-state\"\n form=\"tui-demo-form\"\n size=\"s\"\n tuiButton\n type=\"reset\"\n >\n Reset\n </button>\n <button\n appearance=\"secondary-grayscale\"\n automation-id=\"tui-demo-button__submit-state\"\n form=\"tui-demo-form\"\n size=\"s\"\n tuiButton\n type=\"submit\"\n >\n Submit\n </button>\n </div>\n}\n","import {ChangeDetectionStrategy, Component, input} from '@angular/core';\n\n@Component({\n selector: 'tui-doc-tab',\n templateUrl: './index.html',\n styleUrl: './index.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiDocTab {\n public readonly src = input('');\n}\n","<div class=\"t-tab\">\n <img\n alt=\"Documentation tab icon\"\n class=\"t-icon\"\n [src]=\"src()\"\n />\n <ng-content />\n</div>\n","import {TUI_EXAMPLE_PRIMARY_FILE_NAME} from '@taiga-ui/addon-doc/types';\nimport {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nexport interface TuiDocExampleOptions {\n codeEditorVisibilityHandler: TuiBooleanHandler<Record<string, string>>;\n fullsize: boolean;\n tabTitles: Map<unknown, PolymorpheusContent>;\n}\n\nexport const TUI_DOC_EXAMPLE_DEFAULT_OPTIONS: TuiDocExampleOptions = {\n codeEditorVisibilityHandler: (files) =>\n Boolean(\n files[TUI_EXAMPLE_PRIMARY_FILE_NAME.TS] &&\n files[TUI_EXAMPLE_PRIMARY_FILE_NAME.HTML],\n ),\n tabTitles: new Map(),\n fullsize: true,\n};\n\n/**\n * Default parameters for DocExample component\n */\nexport const [TUI_DOC_EXAMPLE_OPTIONS, tuiDocExampleOptionsProvider] = tuiCreateOptions(\n TUI_DOC_EXAMPLE_DEFAULT_OPTIONS,\n);\n","import {Pipe, type PipeTransform} from '@angular/core';\n\n@Pipe({name: 'tuiDocExampleGetTabs'})\nexport class TuiDocExampleGetTabsPipe implements PipeTransform {\n public transform(content: Record<string, string>, defaultTab: string): string[] {\n return [defaultTab, ...Object.keys(content).filter((tab) => content[tab])];\n }\n}\n","import {Clipboard} from '@angular/cdk/clipboard';\nimport {DOCUMENT, NgComponentOutlet, NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n type OnChanges,\n resource,\n type Signal,\n signal,\n type Type,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {ActivatedRoute, RouterLink} from '@angular/router';\nimport {WA_LOCATION} from '@ng-web-apis/common';\nimport {\n WaIntersectionObservee,\n WaIntersectionObserverDirective,\n} from '@ng-web-apis/intersection-observer';\nimport {\n TUI_DOC_CODE_ACTIONS,\n TUI_DOC_CODE_EDITOR,\n TUI_DOC_EXAMPLE_CONTENT_PROCESSOR,\n TUI_DOC_ICONS,\n TUI_DOC_PREVIEW_TEXT,\n} from '@taiga-ui/addon-doc/tokens';\nimport {type TuiRawLoaderContent} from '@taiga-ui/addon-doc/types';\nimport {tuiRawLoadRecord, tuiToKebab} from '@taiga-ui/addon-doc/utils';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {TuiLoader} from '@taiga-ui/core/components/loader';\nimport {TuiNotificationService} from '@taiga-ui/core/components/notification';\nimport {TuiTitle} from '@taiga-ui/core/components/title';\nimport {TuiFullscreen} from '@taiga-ui/kit/components/fullscreen';\nimport {TuiSegmented} from '@taiga-ui/kit/components/segmented';\nimport {TUI_COPY_TEXTS, TUI_DONE_WORD} from '@taiga-ui/kit/tokens';\nimport {TuiHeader} from '@taiga-ui/layout/components/header';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {BehaviorSubject, map, switchMap} from 'rxjs';\n\nimport {TuiDocCode} from '../code';\nimport {TUI_DOC_EXAMPLE_OPTIONS} from './example.options';\nimport {TuiDocExampleGetTabsPipe} from './example-get-tabs.pipe';\n\n@Component({\n selector: 'tui-doc-example',\n imports: [\n NgComponentOutlet,\n NgTemplateOutlet,\n PolymorpheusOutlet,\n RouterLink,\n TuiButton,\n TuiDocCode,\n TuiDocExampleGetTabsPipe,\n TuiFullscreen,\n TuiHeader,\n TuiLink,\n TuiLoader,\n TuiMapperPipe,\n TuiSegmented,\n TuiTitle,\n ],\n templateUrl: './example.template.html',\n styleUrl: './example.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n WaIntersectionObserverDirective,\n {\n directive: WaIntersectionObservee,\n outputs: ['waIntersectionObservee'],\n },\n ],\n host: {\n waIntersectionThreshold: '1',\n waIntersectionRootMargin: '-40px 0px 1000000% 0px',\n '[attr.id]': 'resolvedId()',\n '[class._fullsize]': 'fullsize()',\n '(waIntersectionObservee)': 'onIntersection()',\n },\n})\nexport class TuiDocExample implements OnChanges {\n private readonly doc = inject(DOCUMENT);\n private readonly clipboard = inject(Clipboard);\n private readonly alerts = inject(TuiNotificationService);\n private readonly location = inject(WA_LOCATION);\n private readonly copyTexts = inject(TUI_COPY_TEXTS);\n private readonly doneWord = inject(TUI_DONE_WORD);\n private readonly processContent = inject(TUI_DOC_EXAMPLE_CONTENT_PROCESSOR);\n private readonly rawLoader$$ = new BehaviorSubject<\n Record<string, TuiRawLoaderContent>\n >({});\n\n protected readonly fullscreenEnabled = inject(DOCUMENT).fullscreenEnabled;\n protected readonly icons = inject(TUI_DOC_ICONS);\n protected readonly options = inject(TUI_DOC_EXAMPLE_OPTIONS);\n protected readonly defaultTab = inject(TUI_DOC_PREVIEW_TEXT);\n protected readonly codeEditor = inject(TUI_DOC_CODE_EDITOR, {optional: true});\n protected readonly codeActions =\n inject<ReadonlyArray<PolymorpheusContent<TuiContext<string>>>>(\n TUI_DOC_CODE_ACTIONS,\n );\n\n protected readonly route = inject(ActivatedRoute);\n protected activeItemIndex = 0;\n protected fullscreen = false;\n protected readonly copy = computed(() => this.copyTexts()[0]);\n protected readonly loading = signal(false);\n\n protected readonly resolvedId = computed(\n () => this.id() || tuiToKebab(this.heading()),\n );\n\n protected readonly processor: Signal<Record<string, string>> = toSignal(\n this.rawLoader$$.pipe(\n switchMap(tuiRawLoadRecord),\n map((value) => this.processContent(value)),\n ),\n {initialValue: {}},\n );\n\n protected readonly lazyComponent = resource({\n request: async () => this.component(),\n loader: async ({request}) => {\n if (!request) {\n return null;\n }\n\n const component = await request;\n\n return component && 'default' in component ? component.default : component;\n },\n });\n\n public readonly heading = input('');\n public readonly id = input('');\n public readonly description = input<PolymorpheusContent>();\n public readonly fullsize = input(inject(TUI_DOC_EXAMPLE_OPTIONS).fullsize);\n public readonly component =\n input<Promise<Type<unknown> | {default: Type<unknown>}>>();\n\n public readonly content = input<Record<string, TuiRawLoaderContent>>({});\n public readonly preview = input(true);\n\n public ngOnChanges(): void {\n this.rawLoader$$.next(this.content());\n }\n\n protected readonly visible = (files: Record<string, string>): boolean =>\n Boolean(this.codeEditor && this.options.codeEditorVisibilityHandler(files));\n\n protected getTabTitle(fileName: string): PolymorpheusContent {\n return this.options.tabTitles.get(fileName) || fileName;\n }\n\n protected copyExampleLink(target: EventTarget | null): void {\n this.clipboard.copy((target as HTMLAnchorElement | null)?.href ?? '');\n this.alerts\n .open(this.copyTexts()[1], {label: this.doneWord(), appearance: 'positive'})\n .subscribe();\n }\n\n protected edit(files: Record<string, string>): void {\n this.loading.set(true);\n this.codeEditor\n ?.edit(this.location.pathname.slice(1), this.resolvedId() || '', files)\n .finally(() => this.loading.set(false));\n }\n\n protected onIntersection(): void {\n this.doc.dispatchEvent(\n new CustomEvent('tui-example', {detail: this.resolvedId()}),\n );\n }\n}\n","@if (heading()) {\n <header tuiHeader=\"h6\">\n <hgroup tuiTitle>\n <h3>\n <a\n appearance=\"\"\n routerLink=\".\"\n tuiLink\n class=\"t-link\"\n [attr.title]=\"copy()\"\n [fragment]=\"resolvedId()\"\n [iconEnd]=\"icons.link\"\n [relativeTo]=\"route.firstChild ?? route\"\n (click)=\"copyExampleLink($event.currentTarget)\"\n >\n {{ heading() }}\n </a>\n </h3>\n </hgroup>\n </header>\n\n @if (description()) {\n <div tuiDescription>\n <ng-container *polymorpheusOutlet=\"description() as text\">\n {{ text }}\n </ng-container>\n </div>\n }\n}\n<div\n class=\"t-example\"\n [(tuiFullscreen)]=\"fullscreen\"\n>\n @if (processor() | tuiDocExampleGetTabs: defaultTab(); as all) {\n @let tabs = preview() ? all : all.slice(1);\n @if (tabs.length) {\n <div class=\"t-header\">\n <tui-segmented\n class=\"t-tabs\"\n [(activeItemIndex)]=\"activeItemIndex\"\n >\n @for (tab of tabs; track tab) {\n <button type=\"button\">\n <ng-container *polymorpheusOutlet=\"getTabTitle(tab) as text\">\n {{ text }}\n </ng-container>\n </button>\n }\n </tui-segmented>\n @if (processor() | tuiMapper: visible) {\n <tui-loader\n size=\"xs\"\n class=\"t-code-editor\"\n [loading]=\"loading()\"\n [overlay]=\"true\"\n (click)=\"edit(processor())\"\n >\n @if (codeEditor?.content; as content) {\n <ng-container *polymorpheusOutlet=\"content as editContent\">\n {{ editContent }}\n </ng-container>\n } @else {\n <button\n appearance=\"flat\"\n size=\"s\"\n tuiButton\n type=\"button\"\n >\n Edit on {{ codeEditor?.name }}\n </button>\n }\n </tui-loader>\n }\n @if (fullscreenEnabled && preview()) {\n <button\n appearance=\"flat-grayscale\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n [iconStart]=\"fullscreen ? icons.shrink : icons.expand\"\n (click)=\"fullscreen = !fullscreen\"\n >\n Fullscreen\n </button>\n }\n </div>\n }\n @for (tab of tabs; track tab) {\n <div class=\"t-content\">\n @if (!$index && preview()) {\n <section\n automation-id=\"tui-doc-example\"\n class=\"t-demo\"\n [style.display]=\"activeItemIndex === $index ? 'block' : 'none'\"\n >\n <ng-container *ngTemplateOutlet=\"content\" />\n <ng-container *ngComponentOutlet=\"lazyComponent.value() ?? null\" />\n </section>\n }\n @let code = processor()[tab] || '';\n <tui-doc-code\n [code]=\"code\"\n [style.display]=\"activeItemIndex === $index && ($index || !preview()) ? 'block' : 'none'\"\n >\n @for (action of codeActions; track action) {\n <ng-container *polymorpheusOutlet=\"action as text; context: {$implicit: code}\">\n {{ text }}\n </ng-container>\n }\n </tui-doc-code>\n </div>\n } @empty {\n <div class=\"t-content\">\n <section class=\"t-demo\">\n <ng-container *ngTemplateOutlet=\"content\" />\n </section>\n </div>\n }\n }\n</div>\n<ng-template #content>\n <ng-content />\n</ng-template>\n","import {InjectionToken, type Provider} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {ActivatedRoute, type Event, NavigationEnd, Router, Scroll} from '@angular/router';\nimport {TUI_DOC_PAGES, TUI_DOC_TITLE} from '@taiga-ui/addon-doc/tokens';\nimport {type TuiDocRoutePages} from '@taiga-ui/addon-doc/types';\nimport {tuiAutoFocusOptionsProvider} from '@taiga-ui/cdk/directives/auto-focus';\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiLinkOptionsProvider} from '@taiga-ui/core/components/link';\nimport {tuiScrollbarOptionsProvider} from '@taiga-ui/core/components/scrollbar';\nimport {filter, map, mergeMap, type Observable} from 'rxjs';\n\nfunction labelsProviderFactory(pages: TuiDocRoutePages): readonly string[] {\n return pages\n .map(({section}) => section)\n .filter(tuiIsPresent)\n .filter((item, index, array) => array.indexOf(item) === index);\n}\n\n/**\n * Page title\n */\nexport const NAVIGATION_TITLE = new InjectionToken<Observable<string>>(\n ngDevMode ? 'NAVIGATION_TITLE' : '',\n);\n\n/**\n * Navigation sections labels for search\n */\nexport const NAVIGATION_LABELS = new InjectionToken<readonly string[]>(\n ngDevMode ? 'NAVIGATION_LABELS' : '',\n);\n\n/**\n * Navigation pages\n */\nexport const NAVIGATION_ITEMS = new InjectionToken<readonly TuiDocRoutePages[]>(\n ngDevMode ? 'NAVIGATION_ITEMS' : '',\n);\n\nexport const NAVIGATION_PROVIDERS: Provider[] = [\n tuiAutoFocusOptionsProvider({preventScroll: true}),\n tuiLinkOptionsProvider({appearance: 'action-grayscale'}),\n {\n provide: NAVIGATION_TITLE,\n deps: [Router, ActivatedRoute, TUI_DOC_TITLE],\n useFactory: (\n router: Router,\n activatedRoute: ActivatedRoute,\n titlePrefix: string,\n ): Observable<string> =>\n router.events.pipe(\n filter(\n (event: Event) =>\n event instanceof NavigationEnd ||\n (event instanceof Scroll\n ? event.routerEvent instanceof NavigationEnd\n : false),\n ),\n map(() => activatedRoute.firstChild),\n filter(tuiIsPresent),\n mergeMap(({data}) => data),\n map(({title}) => `${titlePrefix}${title}`),\n takeUntilDestroyed(),\n ),\n },\n {\n provide: NAVIGATION_LABELS,\n deps: [TUI_DOC_PAGES],\n useFactory: labelsProviderFactory,\n },\n {\n provide: NAVIGATION_ITEMS,\n deps: [TUI_DOC_PAGES],\n useFactory: (pages: TuiDocRoutePages): readonly TuiDocRoutePages[] => {\n const labels = labelsProviderFactory(pages);\n\n return [\n ...labels.map((label) => pages.filter(({section}) => section === label)),\n pages.filter((page) => !page.section),\n ];\n },\n },\n tuiScrollbarOptionsProvider({mode: 'hover'}),\n];\n","import {Directive, inject, input, type OnChanges} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TUI_DOC_PAGE_LOADED} from '@taiga-ui/addon-doc/tokens';\nimport {tuiZonefreeScheduler} from '@taiga-ui/cdk/observables';\nimport {tuiGetElementObscures, tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {debounceTime, filter, ReplaySubject, switchMap, take} from 'rxjs';\n\n@Directive({selector: '[tuiDocScrollIntoViewLink]'})\nexport class TuiDocScrollIntoViewLink implements OnChanges {\n private readonly scroll$ = new ReplaySubject<boolean>(1);\n private readonly el = tuiInjectElement();\n\n protected readonly sub = inject(TUI_DOC_PAGE_LOADED)\n .pipe(\n filter(Boolean),\n take(1),\n switchMap(() => this.scroll$),\n debounceTime(750, tuiZonefreeScheduler()),\n filter((shallWe) => shallWe && !!tuiGetElementObscures(this.el)),\n takeUntilDestroyed(),\n )\n .subscribe(() => this.el.scrollIntoView());\n\n public readonly tuiDocScrollIntoViewLink = input(false);\n\n public ngOnChanges(): void {\n this.scroll$.next(this.tuiDocScrollIntoViewLink());\n }\n}\n","import {DOCUMENT, NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n type Signal,\n signal,\n viewChild,\n} from '@angular/core';\nimport {takeUntilDestroyed, toSignal} from '@angular/core/rxjs-interop';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\nimport {Title} from '@angular/platform-browser';\nimport {Router, RouterLink, RouterLinkActive, Scroll} from '@angular/router';\nimport {\n TUI_DOC_ICONS,\n TUI_DOC_PAGE_LOADED,\n TUI_DOC_PAGES_ICONS,\n TUI_DOC_SEARCH_ENABLED,\n TUI_DOC_SEARCH_TEXT,\n} from '@taiga-ui/addon-doc/tokens';\nimport {type TuiDocRoutePage, type TuiDocRoutePages} from '@taiga-ui/addon-doc/types';\nimport {tuiTransliterateKeyboardLayout} from '@taiga-ui/addon-doc/utils';\nimport {TuiAutoFocus} from '@taiga-ui/cdk/directives/auto-focus';\nimport {tuiControlValue, tuiWatch} from '@taiga-ui/cdk/observables';\nimport {TuiDataList} from '@taiga-ui/core/components/data-list';\nimport {TuiExpand} from '@taiga-ui/core/components/expand';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {TuiInput, TuiInputDirective} from '@taiga-ui/core/components/input';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {TuiScrollbar} from '@taiga-ui/core/components/scrollbar';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {TuiAccordion} from '@taiga-ui/kit/components/accordion';\nimport {TuiDrawer} from '@taiga-ui/kit/components/drawer';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {combineLatest, filter, fromEvent, map, of, switchMap, take} from 'rxjs';\n\nimport {\n NAVIGATION_ITEMS,\n NAVIGATION_LABELS,\n NAVIGATION_PROVIDERS,\n NAVIGATION_TITLE,\n} from './navigation.providers';\nimport {TuiDocScrollIntoViewLink} from './scroll-into-view.directive';\n\nfunction tuiUniqBy<T extends Record<string, any>>(\n array: readonly T[],\n key: keyof T,\n): readonly T[] {\n return Array.from(\n array\n .reduce(\n (map, item) => (map.has(item[key]) ? map : map.set(item[key], item)),\n new Map<T[keyof T], T>(),\n )\n .values(),\n );\n}\n\n@Component({\n selector: 'tui-doc-navigation',\n imports: [\n NgTemplateOutlet,\n PolymorpheusOutlet,\n ReactiveFormsModule,\n RouterLink,\n RouterLinkActive,\n TuiAccordion,\n TuiAutoFocus,\n TuiDataList,\n TuiDocScrollIntoViewLink,\n TuiExpand,\n TuiIcon,\n TuiInput,\n TuiLink,\n TuiScrollbar,\n ],\n templateUrl: './navigation.template.html',\n styleUrl: './navigation.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: NAVIGATION_PROVIDERS,\n host: {\n '[class._open]': 'menuOpen',\n '(window:keydown)': 'onFocusSearch($event)',\n },\n})\nexport class TuiDocNavigation {\n private readonly searchInput: Signal<ElementRef<HTMLInputElement> | undefined> =\n viewChild(TuiInputDirective, {read: ElementRef});\n\n private readonly router = inject(Router);\n private readonly doc = inject(DOCUMENT);\n\n protected readonly open = signal(false);\n protected menuOpen = false;\n\n protected readonly drawer = inject(TuiDrawer, {optional: true});\n protected readonly labels = inject(NAVIGATION_LABELS);\n protected readonly items = inject(NAVIGATION_ITEMS);\n protected readonly searchText = inject(TUI_DOC_SEARCH_TEXT);\n protected readonly searchEnabled = inject(TUI_DOC_SEARCH_ENABLED);\n protected readonly docIcons = inject(TUI_DOC_ICONS);\n protected readonly pagesIcons = inject(TUI_DOC_PAGES_ICONS);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly flat = this.items.reduce<\n ReadonlyArray<readonly TuiDocRoutePage[]>\n >(\n (array, item) => [\n ...array,\n item.reduce<readonly TuiDocRoutePage[]>(\n (pages, page) =>\n 'subPages' in page ? [...pages, ...page.subPages] : [...pages, page],\n [],\n ),\n ],\n [],\n );\n\n protected openPagesArr: boolean[] = [];\n protected openPagesGroupsArr: boolean[] = [];\n protected active = '';\n\n protected readonly search = new FormControl('');\n\n protected readonly filtered = toSignal(\n tuiControlValue<string>(this.search).pipe(\n filter((search) => search.trim().length > 2),\n map((search) => this.filterItems(this.flat, search)),\n ),\n {initialValue: []},\n );\n\n constructor() {\n const titleService = inject(Title);\n const readyToScroll$ = inject(TUI_DOC_PAGE_LOADED);\n\n inject(NAVIGATION_TITLE)\n .pipe(tuiWatch(), takeUntilDestroyed())\n .subscribe((title) => {\n titleService.setTitle(title);\n this.openActivePageGroup();\n });\n\n combineLatest([\n this.router.events.pipe(\n filter((event): event is Scroll => event instanceof Scroll),\n switchMap(({anchor}) =>\n 'onscrollend' in this.doc\n ? fromEvent(this.doc, 'scrollend').pipe(map(() => anchor))\n : of(anchor),\n ),\n ),\n inject(NAVIGATION_TITLE).pipe(\n switchMap(() => readyToScroll$.pipe(filter(Boolean))),\n ),\n ])\n .pipe(\n take(1),\n map(([anchor]) => anchor || ''),\n filter<string>(Boolean),\n takeUntilDestroyed(),\n )\n .subscribe((anchor) => this.navigateToAnchorLink(anchor));\n }\n\n protected get canOpen(): boolean {\n return (this.search.value?.length ?? 0) > 2;\n }\n\n protected get itemsWithoutSections(): TuiDocRoutePages {\n return this.items[this.items.length - 1] ?? [];\n }\n\n protected $pages<T extends TuiDocRoutePage[]>(pages: T): readonly TuiDocRoutePage[] {\n return pages as TuiDocRoutePage[];\n }\n\n protected isActive(route: string): boolean {\n return route === this.active;\n }\n\n protected onGroupClick(index: number): void {\n this.openPagesGroupsArr[index] = !this.openPagesGroupsArr[index];\n }\n\n protected closeMenu(): void {\n this.menuOpen = false;\n }\n\n protected onClick(): void {\n this.open.set(false);\n this.menuOpen = false;\n this.search.setValue('');\n this.openActivePageGroup();\n }\n\n protected onFocusSearch(event: KeyboardEvent): void {\n if (\n event.code === 'Slash' &&\n !this.doc.activeElement?.matches('input,textarea,[contenteditable]')\n ) {\n this.searchInput()?.nativeElement?.focus();\n event.preventDefault();\n }\n }\n\n private filterItems(\n items: ReadonlyArray<readonly TuiDocRoutePage[]>,\n search: string,\n ): ReadonlyArray<readonly TuiDocRoutePage[]> {\n return items.map((section) =>\n tuiUniqBy(\n section.filter(({title, keywords = ''}) => {\n search = search.toLowerCase().trim();\n keywords = keywords.toLowerCase();\n title = title.toLowerCase();\n\n return (\n title.includes(search) ||\n keywords.includes(search) ||\n title.includes(tuiTransliterateKeyboardLayout(search)) ||\n keywords.includes(tuiTransliterateKeyboardLayout(search)) ||\n search.replaceAll('-', '').includes(title) ||\n title.includes(search.replaceAll(/\\s|tui/g, '')) ||\n keywords.includes(search.replaceAll(/\\s|tui/g, '')) ||\n search.split(/\\s/).find((word) => title.includes(word))\n );\n }),\n 'title',\n ),\n );\n }\n\n private isActiveRoute(route: string): boolean {\n return this.router.isActive(route, {\n paths: 'subset',\n queryParams: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored',\n });\n }\n\n private openActivePageGroup(): void {\n this.items.forEach((pages, pagesIndex) => {\n pages.forEach((page, pageIndex) => {\n if ('route' in page && this.isActiveRoute(page.route)) {\n this.openPagesArr[pagesIndex] = true;\n this.active = page.route;\n }\n\n if ('subPages' in page) {\n page.subPages.forEach((subPage) => {\n if (this.isActiveRoute(subPage.route)) {\n this.openPagesArr[pagesIndex] = true;\n this.openPagesGroupsArr[pagesIndex * 100 + pageIndex] = true;\n this.active = subPage.route;\n }\n });\n }\n });\n });\n }\n\n private navigateToAnchorLink(fragment: string): void {\n const nodes = fragment ? this.doc.querySelectorAll(`#${fragment}`) : [];\n const element = nodes.length && nodes[nodes.length - 1];\n\n if (!element) {\n return;\n }\n\n // emulate :target event\n const target = this.doc.createElement('a');\n\n target.href = `${this.doc.location.pathname}#${fragment}`;\n target.style.display = 'none';\n target.style.position = 'absolute';\n this.doc.body.appendChild(target);\n target.click();\n target.remove();\n }\n}\n","@if (searchEnabled()) {\n <tui-textfield\n tuiTextfieldSize=\"m\"\n class=\"t-input\"\n [iconStart]=\"docIcons.search\"\n [open]=\"open() && canOpen\"\n (keyup)=\"open.set(canOpen && $event.code !== 'Escape')\"\n (openChange)=\"open.set($event)\"\n >\n @if (!search.value) {\n <code class=\"t-slash\">/</code>\n }\n\n <input\n tuiInput\n class=\"t-prevent-ios-scroll\"\n [formControl]=\"search\"\n [placeholder]=\"searchText()\"\n [tuiAutoFocus]=\"!!drawer\"\n />\n\n @if (canOpen) {\n <tui-data-list *tuiDropdown>\n @for (group of filtered(); track group) {\n <tui-opt-group [label]=\"labels[$index] || ''\">\n @for (item of group; track item) {\n @if (item.route.includes('://')) {\n <a\n tuiOption\n [attr.rel]=\"item.rel\"\n [href]=\"item.route\"\n [target]=\"item.target || '_self'\"\n [textContent]=\"item.title\"\n ></a>\n } @else {\n <a\n tuiOption\n [attr.rel]=\"item.rel\"\n [fragment]=\"item.fragment\"\n [routerLink]=\"item.route\"\n [target]=\"item.target || '_self'\"\n [textContent]=\"item.title\"\n (click)=\"onClick()\"\n ></a>\n }\n }\n </tui-opt-group>\n }\n </tui-data-list>\n }\n </tui-textfield>\n}\n\n<nav class=\"t-navigation\">\n <tui-scrollbar class=\"t-scrollbar\">\n <tui-accordion\n size=\"s\"\n class=\"t-accordion\"\n [closeOthers]=\"false\"\n >\n @for (item of itemsWithoutSections; track item) {\n <ng-container\n [ngTemplateOutlet]=\"page\"\n [ngTemplateOutletContext]=\"{$implicit: item}\"\n />\n }\n @for (label of labels; track $index; let index = $index) {\n <button\n appearance=\"\"\n iconEnd=\"\"\n class=\"t-accordion-item\"\n [iconStart]=\"pagesIcons[label]\"\n [tuiAccordion]=\"!!openPagesArr[$index]\"\n (tuiAccordionChange)=\"openPagesArr[$index] = !!$event\"\n >\n <span class=\"t-label\">{{ label }}</span>\n <tui-icon\n class=\"t-chevron\"\n [class.t-chevron_active]=\"!!openPagesArr[$index]\"\n [icon]=\"icons.more\"\n [style.margin]=\"0\"\n />\n </button>\n <tui-expand [style.padding-block]=\"0\">\n <div\n *tuiItem\n class=\"t-section\"\n >\n @for (item of items[$index]; track $index) {\n <ng-container\n [ngTemplateOutlet]=\"pages\"\n [ngTemplateOutletContext]=\"{item: item, index: index * 100 + $index}\"\n />\n }\n </div>\n </tui-expand>\n }\n </tui-accordion>\n\n <ng-template\n #page\n let-item\n >\n @if (item.route.includes('://')) {\n <a\n tuiLink\n class=\"t-sublink\"\n [attr.rel]=\"item.rel\"\n [href]=\"item.route\"\n [iconStart]=\"item.section ? '' : pagesIcons[item.title]\"\n [target]=\"item.target || '_self'\"\n [textContent]=\"item.title\"\n ></a>\n } @else {\n <a\n routerLinkActive=\"t-sublink_active\"\n tuiLink\n class=\"t-sublink\"\n [attr.rel]=\"item.rel\"\n [iconStart]=\"item.section ? '' : pagesIcons[item.title]\"\n [routerLink]=\"item.route\"\n [target]=\"item.target || '_self'\"\n [textContent]=\"item.title\"\n [tuiDocScrollIntoViewLink]=\"isActive(item.route)\"\n (click)=\"closeMenu()\"\n ></a>\n }\n </ng-template>\n\n <ng-template\n #pages\n let-index=\"index\"\n let-item=\"item\"\n >\n @if (!item.subPages) {\n <ng-container\n [ngTemplateOutlet]=\"page\"\n [ngTemplateOutletContext]=\"{$implicit: item}\"\n />\n } @else {\n <div\n routerLinkActive\n class=\"t-subsection\"\n [routerLinkActiveOptions]=\"{exact: false}\"\n >\n @if (item.subPages) {\n <button\n tuiLink\n type=\"button\"\n class=\"t-sublink t-sublink_subsection\"\n (click)=\"onGroupClick(index)\"\n >\n <tui-icon\n class=\"t-chevron\"\n [class.t-chevron_active]=\"!!openPagesGroupsArr[index]\"\n [icon]=\"icons.more\"\n />\n {{ item.title }}\n <tui-icon\n *polymorpheusOutlet=\"item.icon as icon\"\n class=\"t-icon\"\n [icon]=\"icon\"\n />\n </button>\n }\n\n <tui-expand\n class=\"t-expand\"\n [expanded]=\"!!openPagesGroupsArr[index]\"\n >\n <div class=\"t-section t-section_nested\">\n @for (subPage of $pages(item.subPages); track subPage) {\n @if (subPage.route.includes('://')) {\n <a\n tuiLink\n class=\"t-sublink t-sublink_small\"\n [attr.rel]=\"subPage.rel\"\n [href]=\"subPage.route\"\n [target]=\"subPage.target || '_self'\"\n [textContent]=\"subPage.title\"\n ></a>\n } @else {\n <a\n routerLinkActive=\"t-sublink_active\"\n tuiLink\n class=\"t-sublink t-sublink_small\"\n [attr.rel]=\"subPage.rel\"\n [fragment]=\"subPage.fragment\"\n [routerLink]=\"subPage.route\"\n [target]=\"subPage.target || '_self'\"\n [textContent]=\"subPage.title\"\n [tuiDocScrollIntoViewLink]=\"isActive(subPage.route)\"\n (click)=\"closeMenu()\"\n ></a>\n }\n }\n </div>\n </tui-expand>\n </div>\n }\n </ng-template>\n </tui-scrollbar>\n</nav>\n\n<ng-content />\n","import {ChangeDetectionStrategy, Component, effect, inject, signal} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {Router} from '@angular/router';\nimport {TUI_DOC_ICONS, TUI_DOC_LOGO, TUI_DOC_MENU_TEXT} from '@taiga-ui/addon-doc/tokens';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiPopup} from '@taiga-ui/core/portals/popup';\nimport {TuiDrawer} from '@taiga-ui/kit/components/drawer';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TuiDocNavigation} from '../../navigation/navigation.component';\n\n@Component({\n selector: 'header[tuiDocHeader]',\n imports: [PolymorpheusOutlet, TuiButton, TuiDocNavigation, TuiDrawer, TuiPopup],\n templateUrl: './index.html',\n styleUrl: './index.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiDocHeader {\n private readonly router = inject(Router);\n private readonly routeEvents = toSignal(this.router.events, {initialValue: null});\n\n protected readonly icons = inject(TUI_DOC_ICONS);\n protected readonly logo = inject(TUI_DOC_LOGO);\n protected readonly menu = inject(TUI_DOC_MENU_TEXT);\n protected readonly open = signal(false);\n\n constructor() {\n effect(() => this.routeEvents() && this.open.set(false));\n }\n}\n","<button\n appearance=\"flat-grayscale\"\n tuiIconButton\n type=\"button\"\n class=\"t-menu\"\n [iconStart]=\"icons.menu\"\n [title]=\"menu()\"\n (click)=\"open.set(true)\"\n></button>\n\n<tui-drawer\n *tuiPopup=\"open()\"\n direction=\"start\"\n class=\"t-drawer\"\n [overlay]=\"true\"\n (click.self)=\"open.set(false)\"\n>\n <tui-doc-navigation>\n <ng-content select=\"tuiDocMobileNavigation\" />\n </tui-doc-navigation>\n</tui-drawer>\n\n<div class=\"t-logo\">\n <img\n *polymorpheusOutlet=\"logo as src\"\n alt=\"Logo\"\n class=\"t-img\"\n [src]=\"src\"\n />\n</div>\n<ng-content />\n","import {ChangeDetectionStrategy, Component, computed, inject, input} from '@angular/core';\nimport {\n TUI_DOC_ICONS,\n TUI_DOC_SOURCE_CODE,\n TUI_DOC_SOURCE_CODE_TEXT,\n} from '@taiga-ui/addon-doc/tokens';\nimport {type TuiDocSourceCodePathOptions} from '@taiga-ui/addon-doc/types';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\n@Component({\n selector: 'tui-doc-source-code',\n imports: [PolymorpheusOutlet, TuiButton],\n templateUrl: './source-code.template.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiDocSourceCode {\n protected readonly icons = inject(TUI_DOC_ICONS);\n protected readonly sourceCode = inject(TUI_DOC_SOURCE_CODE);\n protected readonly text = inject(TUI_DOC_SOURCE_CODE_TEXT);\n\n public readonly header = input('');\n public readonly package = input('');\n public readonly type = input('');\n public readonly path = input('');\n\n protected readonly pathOptions = computed(\n (): TuiDocSourceCodePathOptions => ({\n header: this.header(),\n package: this.package(),\n type: this.type(),\n path: this.path(),\n }),\n );\n\n protected readonly pathIsUrl = computed(\n (): boolean => this.path()?.startsWith('http') ?? false,\n );\n}\n","<a\n *polymorpheusOutlet=\"pathIsUrl() ? path() : sourceCode as link; context: pathOptions()\"\n appearance=\"secondary-grayscale\"\n size=\"s\"\n target=\"_blank\"\n tuiButton\n [href]=\"link\"\n [iconStart]=\"icons.code\"\n>\n {{ text() }}\n</a>\n","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\nimport {RouterOutlet} from '@angular/router';\nimport {TuiRoot} from '@taiga-ui/core/components/root';\n\nimport {TuiDocHeader} from '../internal/header';\nimport {TuiDocNavigation} from '../navigation/navigation.component';\n\n@Component({\n selector: 'tui-doc-main',\n imports: [RouterOutlet, TuiDocHeader, TuiDocNavigation, TuiRoot],\n templateUrl: './main.template.html',\n styleUrl: './main.style.less',\n encapsulation: ViewEncapsulation.None,\n // @note: This one was default on purpose, so we can test demo in default mode.\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class TuiDocMain {}\n","<tui-root>\n <div class=\"tui-doc-page\">\n <tui-doc-navigation class=\"tui-doc-navigation\">\n <ng-content select=\"tuiDocNavigation\" />\n </tui-doc-navigation>\n <div class=\"tui-doc-content\">\n <router-outlet class=\"tui-doc-outlet\" />\n </div>\n </div>\n <header tuiDocHeader>\n <ng-content\n ngProjectAs=\"tuiDocMobileNavigation\"\n select=\"tuiDocMobileNavigation\"\n />\n <ng-content select=\"tuiDocHeader\" />\n </header>\n <ng-container ngProjectAs=\"tuiOverContent\">\n <ng-content select=\"tuiOverContent\" />\n </ng-container>\n</tui-root>\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n type OnInit,\n signal,\n} from '@angular/core';\nimport {ActivatedRoute, RouterLink} from '@angular/router';\nimport {\n TUI_DOC_MAP_PAGES,\n TUI_DOC_SEE_ALSO,\n TUI_DOC_SEE_ALSO_TEXT,\n TUI_DOC_TOC_TEXT,\n} from '@taiga-ui/addon-doc/tokens';\nimport {TuiDocKebabPipe, tuiToKebab} from '@taiga-ui/addon-doc/utils';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiArrayToggle} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {TuiTitle} from '@taiga-ui/core/components/title';\n\nimport {TuiDocPage} from '../page/page.component';\n\n@Component({\n selector: 'tui-doc-toc',\n imports: [RouterLink, TuiDocKebabPipe, TuiLink, TuiTitle],\n templateUrl: './index.html',\n styleUrl: './index.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'(document:tui-example)': 'onExample($event.detail)'},\n})\nexport class TuiDocToc implements OnInit {\n private readonly el = tuiInjectElement();\n private readonly pages = inject(TUI_DOC_MAP_PAGES);\n private examples: readonly string[] = [];\n private active = '';\n\n protected readonly toc = signal<readonly string[]>([]);\n protected readonly route = inject(ActivatedRoute);\n protected readonly seeAlso = getSeeAlso();\n protected readonly text = {\n toc: inject(TUI_DOC_TOC_TEXT),\n seeAlso: inject(TUI_DOC_SEE_ALSO_TEXT),\n };\n\n public ngOnInit(): void {\n setTimeout(() => {\n const page = this.el.closest('tui-doc-page');\n const links = page?.querySelectorAll('tui-doc-example > header .t-link');\n const toc = Array.from(links || []).map((el) => el.textContent?.trim() || '');\n\n this.toc.set(toc);\n });\n }\n\n protected isActive(fragment: string): boolean {\n return this.active ? fragment === this.active : fragment === this.toc()[0];\n }\n\n protected getRouterLink(pageTitle: string): string {\n return this.pages.get(pageTitle)?.route ?? '';\n }\n\n protected onExample(example: string): void {\n const toc = this.toc();\n\n this.examples = tuiArrayToggle(this.examples, example);\n this.active =\n toc.find((item) => this.examples.includes(tuiToKebab(item))) ||\n toc[toc.length - 1] ||\n '';\n }\n}\n\nfunction getSeeAlso(): string[] {\n const current = inject(TuiDocPage).header() || '';\n const groups =\n inject(TUI_DOC_SEE_ALSO).filter((group) => group.includes(current)) || [];\n\n return Array.from(\n new Set(\n groups\n .join()\n .split(',')\n .filter((component) => component && component !== current),\n ),\n );\n}\n","@if (toc().length > 1) {\n <h2 tuiTitle=\"s\">\n <b>{{ text.toc() }}</b>\n </h2>\n <nav>\n @for (item of toc(); track $index) {\n <a\n appearance=\"action-grayscale\"\n routerLink=\".\"\n tuiLink\n type=\"button\"\n [class._active]=\"isActive(item)\"\n [fragment]=\"item | tuiKebab\"\n [relativeTo]=\"route.firstChild ?? route\"\n >\n {{ item }}\n </a>\n }\n </nav>\n @if (seeAlso.length) {\n <h2 tuiTitle=\"s\">\n <b>{{ text.seeAlso() }}</b>\n </h2>\n @for (item of seeAlso; track $index) {\n <a\n tuiLink\n [innerText]=\"item\"\n [routerLink]=\"getRouterLink(item)\"\n ></a>\n @if (!$last) {\n <span>{{ ', ' }}</span>\n }\n }\n }\n}\n","import {InjectionToken} from '@angular/core';\nimport {type ActivatedRouteSnapshot} from '@angular/router';\nimport {type TuiHandler} from '@taiga-ui/cdk/types';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nexport const TUI_DOC_TABS = new InjectionToken<\n TuiHandler<ActivatedRouteSnapshot, Record<string, PolymorpheusContent>>\n>(ngDevMode ? 'TUI_DOC_TABS' : '', {factory: () => () => ({})});\n","import {Directive, inject, input, TemplateRef} from '@angular/core';\n\n@Directive({selector: 'ng-template[pageTab]'})\nexport class TuiDocPageTabConnector {\n public readonly pageTab = input<string>();\n\n public readonly template = inject(TemplateRef<Record<string, unknown>>);\n}\n","import {KeyValuePipe, NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n inject,\n input,\n model,\n} from '@angular/core';\nimport {ActivatedRoute, RouterLink, RouterLinkActive} from '@angular/router';\nimport {TUI_DOC_DEFAULT_TABS} from '@taiga-ui/addon-doc/tokens';\nimport {TuiTitle} from '@taiga-ui/core/components/title';\nimport {TuiBadge} from '@taiga-ui/kit/components/badge';\nimport {TuiSegmented} from '@taiga-ui/kit/components/segmented';\nimport {TuiFade} from '@taiga-ui/kit/directives/fade';\nimport {TuiAutoColorPipe} from '@taiga-ui/kit/pipes/auto-color';\nimport {TuiHeader} from '@taiga-ui/layout/components/header';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TuiDocSourceCode} from '../internal/source-code/source-code.component';\nimport {TuiDocToc} from '../toc';\nimport {TUI_DOC_TABS} from './page.providers';\nimport {TuiDocPageTabConnector} from './page-tab.directive';\n\n@Component({\n selector: 'tui-doc-page',\n imports: [\n KeyValuePipe,\n NgTemplateOutlet,\n PolymorpheusOutlet,\n RouterLink,\n RouterLinkActive,\n TuiAutoColorPipe,\n TuiBadge,\n TuiDocSourceCode,\n TuiDocToc,\n TuiFade,\n TuiHeader,\n TuiSegmented,\n TuiTitle,\n ],\n templateUrl: './page.template.html',\n styleUrl: './page.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiDocPage {\n protected readonly tabConnectors = contentChildren(TuiDocPageTabConnector);\n protected readonly tabs = inject(TUI_DOC_TABS)(inject(ActivatedRoute).snapshot);\n protected readonly defaultTabs = inject(TUI_DOC_DEFAULT_TABS);\n protected readonly from = / /g;\n protected readonly to = '_';\n\n public readonly header = input('');\n public readonly package = input('');\n public readonly type = input('');\n public readonly tags = input<string[]>([]);\n public readonly path = input('');\n public readonly activeItemIndex = model(0);\n}\n","<header\n tuiHeader\n class=\"t-header\"\n>\n @if (header()) {\n <hgroup tuiTitle>\n <h1>\n {{ header() }}\n @if (package()) {\n <span\n appearance=\"custom\"\n size=\"m\"\n tuiBadge\n class=\"t-badge\"\n [style.background]=\"package() | tuiAutoColor\"\n >\n {{ package() }}\n </span>\n }\n @for (tag of tags(); track $index) {\n <span\n appearance=\"custom\"\n size=\"m\"\n tuiBadge\n class=\"t-badge\"\n [style.background]=\"tag | tuiAutoColor\"\n >\n {{ tag }}\n </span>\n }\n </h1>\n <p\n tuiFade\n class=\"t-navigation\"\n >\n @if (tabConnectors().length > 1) {\n <tui-segmented [(activeItemIndex)]=\"activeItemIndex\">\n @for (tab of tabConnectors(); track tab) {\n @if (tab.pageTab() || defaultTabs[$index]; as tabName) {\n <a\n routerLinkActive\n [routerLink]=\"$first ? './' : tabName.replace(from, to)\"\n [routerLinkActiveOptions]=\"{exact: $first}\"\n >\n {{ tabName }}\n </a>\n }\n }\n @for (tab of tabs | keyvalue; track tab) {\n <a\n routerLinkActive\n [routerLink]=\"tab.key\"\n >\n {{ tab.key }}\n </a>\n }\n </tui-segmented>\n }\n\n @if (package() || path() || type()) {\n <tui-doc-source-code\n class=\"t-source-code\"\n [header]=\"header()\"\n [package]=\"package()\"\n [path]=\"path()\"\n [type]=\"type()\"\n />\n }\n </p>\n </hgroup>\n }\n</header>\n<ng-content />\n@for (tab of tabConnectors(); track tab) {\n @if ($index === activeItemIndex()) {\n <tui-doc-toc />\n <ng-container [ngTemplateOutlet]=\"tab.template\" />\n }\n}\n@for (tab of tabs | keyvalue; track tab) {\n @if ($index + tabConnectors().length === activeItemIndex()) {\n <ng-container *polymorpheusOutlet=\"tab.value as text\">{{ text }}</ng-container>\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, inject, InjectionToken} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {WA_LOCAL_STORAGE, WA_LOCATION} from '@ng-web-apis/common';\nimport {TuiDataList} from '@taiga-ui/core/components/data-list';\nimport {TuiTextfield} from '@taiga-ui/core/components/textfield';\nimport {TuiSelect} from '@taiga-ui/kit/components/select';\nimport {TuiChevron} from '@taiga-ui/kit/directives/chevron';\n\nexport const TUI_THEME_KEY = new InjectionToken(ngDevMode ? 'TUI_THEME_KEY' : '', {\n factory: () => 'data-tui-theme',\n});\n\nexport const TUI_THEME = new InjectionToken(ngDevMode ? 'TUI_THEME' : '', {\n factory: () => inject(WA_LOCAL_STORAGE)?.getItem(inject(TUI_THEME_KEY)) || 'Taiga UI',\n});\n\nexport const TUI_THEMES = new InjectionToken<Record<string, string>>(\n ngDevMode ? 'TUI_THEMES' : '',\n {factory: () => ({})},\n);\n\n@Component({\n selector: 'tui-doc-theme-switcher',\n imports: [FormsModule, TuiChevron, TuiDataList, TuiSelect, TuiTextfield],\n templateUrl: './theme-switcher.template.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiDocThemeSwitcher {\n private readonly storage = inject(WA_LOCAL_STORAGE);\n private readonly key = inject(TUI_THEME_KEY);\n private readonly location = inject(WA_LOCATION);\n\n protected readonly theme = inject(TUI_THEME);\n protected readonly themes = inject(TUI_THEMES);\n protected readonly keys = Object.keys(this.themes);\n\n constructor() {\n inject(DOCUMENT).documentElement.setAttribute(this.key, this.theme);\n }\n\n public onTheme(theme: string): void {\n this.storage?.setItem(this.key, theme);\n this.location.reload();\n }\n}\n","<tui-textfield\n tuiChevron\n [tuiTextfieldCleaner]=\"false\"\n>\n <label tuiLabel>\n <ng-content />\n </label>\n <input\n tuiSelect\n [ngModel]=\"theme\"\n (ngModelChange)=\"onTheme($event)\"\n />\n <tui-data-list *tuiDropdown>\n @for (key of keys; track key) {\n <button\n tuiOption\n type=\"button\"\n [value]=\"key\"\n >\n <img\n alt=\"\"\n [src]=\"themes[key]\"\n [style.margin-inline-end.rem]=\"0.5\"\n [style.width.rem]=\"1.75\"\n />\n {{ key }}\n </button>\n }\n </tui-data-list>\n</tui-textfield>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4","i5","i6","i8","i1","i2","i3","i7"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-addon-doc-components.mjs","sources":["../../../projects/addon-doc/components/api/api.component.ts","../../../projects/addon-doc/components/api/api-item-number.directive.ts","../../../projects/addon-doc/components/api/inspect.pipe.ts","../../../projects/addon-doc/components/api/type-reference.pipe.ts","../../../projects/addon-doc/components/api/api-item.component.ts","../../../projects/addon-doc/components/api/api-item.template.html","../../../projects/addon-doc/components/code/index.ts","../../../projects/addon-doc/components/code/index.html","../../../projects/addon-doc/components/copy/index.ts","../../../projects/addon-doc/components/copy/index.html","../../../projects/addon-doc/components/demo/index.ts","../../../projects/addon-doc/components/demo/index.html","../../../projects/addon-doc/components/doc-tab/index.ts","../../../projects/addon-doc/components/doc-tab/index.html","../../../projects/addon-doc/components/example/example.options.ts","../../../projects/addon-doc/components/example/example-get-tabs.pipe.ts","../../../projects/addon-doc/components/example/example.component.ts","../../../projects/addon-doc/components/example/example.template.html","../../../projects/addon-doc/components/navigation/navigation.providers.ts","../../../projects/addon-doc/components/navigation/scroll-into-view.directive.ts","../../../projects/addon-doc/components/navigation/navigation.component.ts","../../../projects/addon-doc/components/navigation/navigation.template.html","../../../projects/addon-doc/components/internal/header/index.ts","../../../projects/addon-doc/components/internal/header/index.html","../../../projects/addon-doc/components/internal/source-code/source-code.component.ts","../../../projects/addon-doc/components/internal/source-code/source-code.template.html","../../../projects/addon-doc/components/main/main.component.ts","../../../projects/addon-doc/components/main/main.template.html","../../../projects/addon-doc/components/toc/index.ts","../../../projects/addon-doc/components/toc/index.html","../../../projects/addon-doc/components/page/page.providers.ts","../../../projects/addon-doc/components/page/page-tab.directive.ts","../../../projects/addon-doc/components/page/page.component.ts","../../../projects/addon-doc/components/page/page.template.html","../../../projects/addon-doc/components/theme-switcher/theme-switcher.component.ts","../../../projects/addon-doc/components/theme-switcher/theme-switcher.template.html","../../../projects/addon-doc/components/taiga-ui-addon-doc-components.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\nimport {tuiHintOptionsProvider} from '@taiga-ui/core/portals/hint';\n\n@Component({\n selector: 'table[tuiDocAPI]',\n template: `\n <thead>\n <tr>\n <ng-content select=\"th\" />\n </tr>\n </thead>\n <tbody><ng-content /></tbody>\n <ng-content select=\"tbody\" />\n `,\n styleUrl: './api.style.less',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiHintOptionsProvider({appearance: 'floating'})],\n})\nexport class TuiDocAPI {}\n","import {Directive, input} from '@angular/core';\n\n@Directive({selector: 'tr[tuiDocAPIItem][type=number]'})\nexport class TuiDocAPINumberItem {\n public readonly min = input<number | null>(null);\n public readonly max = input<number | null>(null);\n}\n","import {inject, Pipe, type PipeTransform, TemplateRef} from '@angular/core';\nimport {WA_IS_E2E} from '@ng-web-apis/platform';\nimport {tuiInspect} from '@taiga-ui/addon-doc/utils';\n\n@Pipe({name: 'tuiInspect'})\nexport class TuiInspectPipe implements PipeTransform {\n private readonly isE2E = inject(WA_IS_E2E);\n\n public transform(value: unknown, depth = 2): string {\n if (this.isE2E && typeof value === 'function') {\n /**\n * @description:\n * When developing in production mode the webpack bundler minify\n * functions in different ways, then due to which the string content\n * of the function may differ from build to build, which can be to\n * various problems when screenshot testing on e2e.\n */\n return 'λ(x) => y';\n }\n\n return value instanceof TemplateRef ? 'TemplateRef' : tuiInspect(value, depth);\n }\n}\n","import {inject, Pipe, type PipeTransform} from '@angular/core';\nimport {\n TUI_DOC_TYPE_REFERENCE_HANDLER,\n TUI_DOC_TYPE_REFERENCE_PARSER,\n} from '@taiga-ui/addon-doc/tokens';\n\n@Pipe({name: 'tuiTypeReference'})\nexport class TuiTypeReferencePipe implements PipeTransform {\n private readonly parser = inject(TUI_DOC_TYPE_REFERENCE_PARSER);\n private readonly linkHandler = inject(TUI_DOC_TYPE_REFERENCE_HANDLER);\n\n public transform(original: string): ReadonlyArray<{\n type: string;\n extracted: string;\n reference: string | null;\n }> {\n return this.parser(original)\n .map(({type, extracted}) => ({\n type,\n extracted,\n reference: this.linkHandler?.(extracted) ?? null,\n }))\n .sort((a, b) => b.reference?.localeCompare(a.reference ?? '') ?? -1);\n }\n}\n","import {Location, NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n model,\n type OnInit,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {ActivatedRoute, type Params, UrlSerializer} from '@angular/router';\nimport {TUI_DOC_URL_STATE_HANDLER} from '@taiga-ui/addon-doc/tokens';\nimport {tuiCoerceValue, tuiInspect} from '@taiga-ui/addon-doc/utils';\nimport {tuiIsNumber} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiInput} from '@taiga-ui/core/components/input';\nimport {TuiNotificationService} from '@taiga-ui/core/components/notification';\nimport {TuiHint} from '@taiga-ui/core/portals/hint';\nimport {TuiDataListWrapper} from '@taiga-ui/kit/components/data-list-wrapper';\nimport {TuiInputNumber} from '@taiga-ui/kit/components/input-number';\nimport {TuiSelect} from '@taiga-ui/kit/components/select';\nimport {TuiSwitch} from '@taiga-ui/kit/components/switch';\nimport {TuiChevron} from '@taiga-ui/kit/directives/chevron';\n\nimport {TuiDocAPINumberItem} from './api-item-number.directive';\nimport {TuiInspectPipe} from './inspect.pipe';\nimport {TuiTypeReferencePipe} from './type-reference.pipe';\n\nconst SERIALIZED_SUFFIX = '$';\n\n@Component({\n selector: 'tr[tuiDocAPIItem]',\n imports: [\n FormsModule,\n NgTemplateOutlet,\n TuiChevron,\n TuiDataListWrapper,\n TuiHint,\n TuiInput,\n TuiInputNumber,\n TuiInspectPipe,\n TuiSelect,\n TuiSwitch,\n TuiTypeReferencePipe,\n ],\n templateUrl: './api-item.template.html',\n styleUrl: './api-item.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiDocAPIItem<T> implements OnInit {\n private readonly locationRef = inject(Location);\n private readonly activatedRoute = inject(ActivatedRoute);\n private readonly urlSerializer = inject(UrlSerializer);\n private readonly urlStateHandler = inject(TUI_DOC_URL_STATE_HANDLER);\n private readonly alerts = inject(TuiNotificationService);\n\n protected readonly numberItem = inject(TuiDocAPINumberItem, {\n self: true,\n optional: true,\n });\n\n protected readonly isBananaBox = computed(() => this.name().startsWith('[('));\n protected readonly isInput = computed(() => this.name().startsWith('['));\n protected readonly isOutput = computed(() => this.name().startsWith('('));\n public readonly name = input('');\n public readonly type = input('');\n public readonly value = model<T>();\n public readonly items = input([], {transform: (v?: readonly T[]) => v || []});\n\n protected readonly hasCleaner = computed(\n () => this.type().includes('null') || this.type().includes('PolymorpheusContent'),\n );\n\n public ngOnInit(): void {\n this.parseParams(this.activatedRoute.snapshot.queryParams);\n }\n\n public onValueChange(value: T): void {\n this.value.set(value);\n this.setQueryParam(value);\n }\n\n public emitEvent(event: unknown): void {\n console.info('emitEvent', event);\n\n const alert =\n !event || event?.toString() === '[object Object]'\n ? tuiInspect(event, 2)\n : (event as string);\n\n this.alerts.open(alert, {label: this.name()}).subscribe();\n }\n\n private clearBrackets(value: string): string {\n return value.replaceAll(/[()[\\]]/g, '');\n }\n\n private parseParams(params: Params): void {\n const name = this.clearBrackets(this.name());\n const propertyValue: string | undefined = params[name];\n\n const propertyValueWithSuffix: number | string | undefined =\n params[`${name}${SERIALIZED_SUFFIX}`];\n\n if (!propertyValue && !propertyValueWithSuffix) {\n return;\n }\n\n const items = this.items();\n\n let value =\n !!propertyValueWithSuffix && items\n ? items[propertyValueWithSuffix as number]\n : tuiCoerceValue(propertyValue);\n\n if (this.type() === 'string' && tuiIsNumber(value)) {\n value = value.toString();\n }\n\n this.onValueChange(value as T);\n }\n\n private setQueryParam(value: T | boolean | number | string | null): void {\n const tree = this.urlSerializer.parse(this.locationRef.path());\n const isValueAvailableByKey = value instanceof Object;\n const items = this.items();\n\n const computedValue =\n isValueAvailableByKey && items ? items.indexOf(value as T) : value;\n\n const suffix = isValueAvailableByKey ? SERIALIZED_SUFFIX : '';\n const propName = `${this.clearBrackets(this.name())}${suffix}`;\n\n tree.queryParams = {\n ...tree.queryParams,\n [propName]: computedValue,\n };\n\n this.locationRef.go(this.urlStateHandler(tree));\n }\n}\n","<td class=\"t-td\">\n <code\n tuiHintDirection=\"top-end\"\n class=\"t-name\"\n [class.t-name_banana]=\"isBananaBox()\"\n [class.t-name_input]=\"isInput()\"\n [class.t-name_output]=\"isOutput()\"\n [tuiHint]=\"hint\"\n >\n {{ name() }}\n </code>\n <ng-template #hint>\n <ng-content>{{ name() }}</ng-content>\n </ng-template>\n <div class=\"t-description\">\n <ng-container *ngTemplateOutlet=\"hint\" />\n </div>\n</td>\n<td class=\"t-td\">\n <code class=\"t-type\">\n @for (item of type() | tuiTypeReference; track item) {\n @if (item.reference) {\n <a\n rel=\"noreferrer\"\n target=\"_blank\"\n class=\"t-reference\"\n [attr.href]=\"item.reference\"\n >\n {{ item.type }}\n </a>\n } @else {\n {{ item.type }}\n }\n @if (!$last) {\n <span> | </span>\n }\n }\n </code>\n</td>\n<td\n tuiTextfieldSize=\"m\"\n class=\"t-td\"\n>\n @if (items().length) {\n <tui-textfield\n tuiChevron\n class=\"t-input\"\n [content]=\"content\"\n [tuiTextfieldCleaner]=\"hasCleaner()\"\n >\n <input\n tuiSelect\n [ngModel]=\"value() ?? null\"\n (ngModelChange)=\"onValueChange($event)\"\n />\n <tui-data-list-wrapper\n *tuiDropdown\n [itemContent]=\"content\"\n [items]=\"items()\"\n />\n </tui-textfield>\n } @else {\n @if (value() !== undefined) {\n @if (type() === 'boolean') {\n <input\n tuiSwitch\n type=\"checkbox\"\n [id]=\"name()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"onValueChange($event)\"\n />\n }\n\n @if (type() === 'string') {\n <tui-textfield class=\"t-input\">\n <input\n tuiInput\n [id]=\"name()\"\n [ngModel]=\"value() || ''\"\n (ngModelChange)=\"onValueChange($event)\"\n />\n </tui-textfield>\n }\n\n @if (type() === 'number' || type() === 'bigint' || type() === 'number | bigint') {\n <tui-textfield class=\"t-input\">\n <input\n tuiInputNumber\n [id]=\"name()\"\n [max]=\"numberItem?.max() ?? null\"\n [min]=\"numberItem?.min() ?? null\"\n [ngModel]=\"value()\"\n [step]=\"1\"\n (ngModelChange)=\"onValueChange($event || 0)\"\n />\n </tui-textfield>\n }\n }\n }\n <ng-template\n #content\n let-data\n >\n <code [style.margin]=\"0\">{{ data | tuiInspect }}</code>\n </ng-template>\n</td>\n","import {ClipboardModule} from '@angular/cdk/clipboard';\nimport {isPlatformServer} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n type OnChanges,\n PLATFORM_ID,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {TUI_DOC_EXAMPLE_MARKDOWN_CODE_PROCESSOR} from '@taiga-ui/addon-doc/tokens';\nimport {type TuiRawLoaderContent} from '@taiga-ui/addon-doc/types';\nimport {tuiRawLoad} from '@taiga-ui/addon-doc/utils';\nimport {type TuiHandler} from '@taiga-ui/cdk/types';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {TUI_COPY_OPTIONS} from '@taiga-ui/kit/components/copy';\nimport {TUI_COPY_TEXTS} from '@taiga-ui/kit/tokens';\nimport {HighlightAuto} from 'ngx-highlightjs';\nimport {HighlightLineNumbers} from 'ngx-highlightjs/line-numbers';\nimport {BehaviorSubject, map, startWith, Subject, switchMap, timer} from 'rxjs';\n\n@Component({\n selector: 'tui-doc-code',\n imports: [ClipboardModule, HighlightAuto, HighlightLineNumbers, TuiButton],\n templateUrl: './index.html',\n styleUrl: './index.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'[class._has-filename]': 'hasFilename'},\n})\nexport class TuiDocCode implements OnChanges {\n private readonly copy = inject(TUI_COPY_OPTIONS).icon;\n private readonly icons = inject(TUI_COMMON_ICONS);\n private readonly rawLoader$$ = new BehaviorSubject<TuiRawLoaderContent>('');\n private readonly texts = inject(TUI_COPY_TEXTS);\n protected readonly isServer = isPlatformServer(inject(PLATFORM_ID));\n\n protected readonly markdownCodeProcessor: TuiHandler<string, readonly string[]> =\n inject(TUI_DOC_EXAMPLE_MARKDOWN_CODE_PROCESSOR);\n\n protected readonly copy$ = new Subject<void>();\n protected readonly copyText = computed(() => this.texts()[0]);\n\n protected readonly icon = toSignal(\n this.copy$.pipe(\n switchMap(() =>\n timer(2000).pipe(\n map(() => this.copy),\n startWith(this.icons.check),\n ),\n ),\n ),\n {initialValue: this.copy},\n );\n\n protected readonly processor = toSignal(\n this.rawLoader$$.pipe(\n switchMap(tuiRawLoad),\n map((value: string) => this.markdownCodeProcessor(value)),\n ),\n {initialValue: []},\n );\n\n public readonly filename = input('');\n public readonly code = input<TuiRawLoaderContent>('');\n public readonly lineNumbers = input(true);\n\n public get hasFilename(): boolean {\n return !!this.filename();\n }\n\n public ngOnChanges(): void {\n this.rawLoader$$.next(this.code());\n }\n}\n","@if (filename()) {\n <p class=\"t-header\">\n {{ filename() }}\n </p>\n}\n@for (content of processor(); track content) {\n <pre class=\"t-code\">\n @if (lineNumbers()) {\n <code [highlightAuto]=\"content\" lineNumbers>{{isServer ? content : ''}}</code>\n } @else {\n <code [highlightAuto]=\"content\">{{isServer ? content : ''}}</code>\n }\n <div class=\"t-code-actions\">\n <button\n tuiIconButton\n type=\"button\"\n appearance=\"\"\n size=\"s\"\n class=\"t-copy-button\"\n [iconStart]=\"icon()\"\n [cdkCopyToClipboard]=\"content\"\n (click)=\"copy$.next()\"\n >\n {{ copyText() }}\n </button>\n <ng-content />\n </div>\n </pre>\n}\n","import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TUI_COPY_TEXTS} from '@taiga-ui/kit/tokens';\nimport {map, startWith, Subject, switchMap, timer} from 'rxjs';\n\nconst COPIED_TIMEOUT = 1500;\n\n@Component({\n selector: 'tui-doc-copy',\n imports: [TuiButton],\n templateUrl: './index.html',\n styleUrl: './index.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiDocCopy {\n private readonly copy$ = new Subject<void>();\n protected readonly texts = inject(TUI_COPY_TEXTS);\n\n protected readonly copied = toSignal(\n this.copy$.pipe(\n switchMap(() =>\n timer(COPIED_TIMEOUT).pipe(map(TUI_FALSE_HANDLER), startWith(true)),\n ),\n ),\n {initialValue: false},\n );\n\n protected onClick(): void {\n this.copy$.next();\n }\n}\n","<button\n appearance=\"\"\n size=\"s\"\n tuiButton\n type=\"button\"\n class=\"t-copy\"\n (click)=\"onClick()\"\n>\n <span class=\"t-content\">\n <span\n class=\"t-initial\"\n [attr.data-text]=\"copied() ? '' : texts()[0]\"\n >\n @if (!copied()) {\n <ng-content />\n }\n </span>\n {{ copied() ? texts()[1] : '' }}\n </span>\n</button>\n","import {Location, NgTemplateOutlet} from '@angular/common';\nimport {\n type AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n ElementRef,\n inject,\n input,\n Pipe,\n type PipeTransform,\n type Signal,\n signal,\n TemplateRef,\n viewChild,\n} from '@angular/core';\nimport {takeUntilDestroyed, toObservable} from '@angular/core/rxjs-interop';\nimport {\n type AbstractControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport {type Params, UrlSerializer, type UrlTree} from '@angular/router';\nimport {\n TUI_DOC_DEMO_TEXTS,\n TUI_DOC_ICONS,\n TUI_DOC_URL_STATE_HANDLER,\n} from '@taiga-ui/addon-doc/tokens';\nimport {type TuiDemoParams} from '@taiga-ui/addon-doc/types';\nimport {tuiCleanObject, tuiCoerceValueIsTrue} from '@taiga-ui/addon-doc/utils';\nimport {TuiItem} from '@taiga-ui/cdk/directives/item';\nimport {TuiResizable, TuiResizer} from '@taiga-ui/cdk/directives/resizer';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiExpand} from '@taiga-ui/core/components/expand';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {TuiTextfield} from '@taiga-ui/core/components/textfield';\nimport {TUI_DARK_MODE} from '@taiga-ui/core/tokens';\nimport {TuiDataListWrapper} from '@taiga-ui/kit/components/data-list-wrapper';\nimport {TuiSelect} from '@taiga-ui/kit/components/select';\nimport {TuiSwitch} from '@taiga-ui/kit/components/switch';\nimport {TuiChevron} from '@taiga-ui/kit/directives/chevron';\nimport {skip} from 'rxjs';\n\nconst MIN_WIDTH = 160;\n\n@Pipe({name: 'json'})\nexport class TuiJsonPipe implements PipeTransform {\n public transform(value: unknown): string {\n return JSON.stringify(\n value,\n (_, x) => (typeof x === 'bigint' ? `${String(x)}n` : x),\n 2,\n );\n }\n}\n\n@Component({\n selector: 'tui-doc-demo',\n imports: [\n FormsModule,\n NgTemplateOutlet,\n ReactiveFormsModule,\n TuiButton,\n TuiChevron,\n TuiDataListWrapper,\n TuiExpand,\n TuiIcon,\n TuiItem,\n TuiJsonPipe,\n TuiResizable,\n TuiResizer,\n TuiSelect,\n TuiSwitch,\n TuiTextfield,\n ],\n templateUrl: './index.html',\n styleUrl: './index.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.tuiTheme]': 'theme()',\n '[class._sticky]': 'sticky()',\n '(document:mouseup.zoneless)': 'onMouseUp()',\n '(window:resize)': 'onResize()',\n },\n})\nexport class TuiDocDemo implements AfterViewInit {\n private readonly resizable: Signal<ElementRef<HTMLElement>> = viewChild.required(\n TuiResizable,\n {read: ElementRef},\n );\n\n private readonly content = viewChild.required<ElementRef<HTMLElement>>('content');\n private readonly el = tuiInjectElement();\n private readonly locationRef = inject(Location);\n private readonly urlSerializer = inject(UrlSerializer);\n private readonly urlStateHandler = inject(TUI_DOC_URL_STATE_HANDLER);\n private readonly darkMode = inject(TUI_DARK_MODE);\n protected readonly template = contentChild(TemplateRef<Record<string, unknown>>);\n protected readonly rendered = signal(false);\n protected readonly theme = computed(() => (this.dark() ? 'dark' : 'light'));\n protected readonly icons = inject(TUI_DOC_ICONS);\n\n protected readonly dark = signal(\n tuiCoerceValueIsTrue(this.params.darkMode ?? this.darkMode()),\n );\n\n protected readonly $ = toObservable(this.darkMode)\n .pipe(skip(1), takeUntilDestroyed())\n .subscribe((mode) => this.onModeChange(mode));\n\n protected form?: FormGroup;\n protected readonly updateOnVariants = ['change', 'blur', 'submit'] as const;\n\n protected updateOn: 'blur' | 'change' | 'submit' =\n this.params.updateOn || this.updateOnVariants[0];\n\n protected opaque = tuiCoerceValueIsTrue(this.params.sandboxOpaque ?? true);\n protected expanded = tuiCoerceValueIsTrue(this.params.sandboxExpanded ?? false);\n protected sandboxWidth = Number.parseInt(this.params.sandboxWidth, 10);\n protected readonly texts = inject(TUI_DOC_DEMO_TEXTS);\n public readonly control = input<AbstractControl | null>(null);\n public readonly sticky = input(true);\n\n public ngAfterViewInit(): void {\n this.createForm();\n this.updateWidth(this.sandboxWidth + this.delta);\n this.rendered.set(true);\n }\n\n protected onResize(): void {\n this.updateWidth();\n this.onMouseUp();\n }\n\n protected onMouseUp(): void {\n this.updateUrl({sandboxWidth: this.sandboxWidth});\n }\n\n protected onModeChange(darkMode: boolean): void {\n this.dark.set(darkMode);\n this.updateUrl({sandboxWidth: this.sandboxWidth, darkMode});\n }\n\n protected toggleDetails(): void {\n this.expanded = !this.expanded;\n this.updateUrl({sandboxExpanded: this.expanded});\n }\n\n protected changeOpaque(opaque: boolean): void {\n this.opaque = opaque;\n this.updateUrl({sandboxOpaque: this.opaque});\n }\n\n protected updateOnChange(updateOn: 'blur' | 'change' | 'submit'): void {\n this.updateOn = updateOn;\n this.updateUrl({updateOn});\n this.createForm();\n }\n\n protected updateWidth(width = Number.NaN): void {\n if (!this.resizable() || !this.content()) {\n return;\n }\n\n const safe = width || this.resizable().nativeElement.clientWidth;\n const total = this.el.clientWidth;\n const clamped = Math.round(tuiClamp(safe, MIN_WIDTH, total)) - this.delta;\n const validated = safe < total ? clamped : Number.NaN;\n\n this.resizable().nativeElement.style.width = validated ? tuiPx(safe) : '';\n this.sandboxWidth = validated;\n }\n\n private get delta(): number {\n return this.resizable() && this.content()\n ? this.resizable().nativeElement.clientWidth -\n this.content().nativeElement.clientWidth\n : 0;\n }\n\n private get params(): Params | TuiDemoParams {\n return this.getUrlTree().queryParams;\n }\n\n private updateUrl(params: TuiDemoParams): void {\n const tree = this.getUrlTree();\n const {queryParams} = tree;\n\n delete queryParams.sandboxWidth;\n\n tree.queryParams = {\n ...queryParams,\n ...tuiCleanObject({...params}),\n };\n\n this.locationRef.go(this.urlStateHandler(tree));\n }\n\n private createForm(): void {\n const control = this.control();\n\n if (control) {\n this.form = new FormGroup({value: control}, {updateOn: this.updateOn});\n }\n }\n\n private getUrlTree(): UrlTree {\n return this.urlSerializer.parse(this.locationRef.path());\n }\n}\n","<div class=\"t-settings\">\n <label tuiLabel>\n <input\n size=\"s\"\n tuiSwitch\n type=\"checkbox\"\n [ngModel]=\"dark()\"\n (ngModelChange)=\"onModeChange($event)\"\n />\n <small>{{ texts()[0] }}</small>\n </label>\n <label tuiLabel>\n <input\n size=\"s\"\n tuiSwitch\n type=\"checkbox\"\n [ngModel]=\"opaque\"\n (ngModelChange)=\"changeOpaque($event)\"\n />\n <small>{{ texts()[1] }}</small>\n </label>\n</div>\n<div\n tuiResizable\n class=\"t-wrapper\"\n [class.t-wrapper_transparent]=\"!opaque\"\n [style.visibility]=\"rendered() ? 'visible' : 'hidden'\"\n>\n <div class=\"t-content\">\n <div\n #content\n id=\"demo-content\"\n >\n @if (form) {\n <form\n id=\"tui-demo-form\"\n [formGroup]=\"form\"\n >\n <ng-container [ngTemplateOutlet]=\"template() || null\" />\n </form>\n }\n <ng-content />\n </div>\n </div>\n <div\n class=\"t-resizer\"\n [tuiResizer]=\"[1, 0]\"\n (tuiSizeChange)=\"updateWidth($event[0])\"\n >\n <tui-icon [icon]=\"icons.resizer\" />\n </div>\n</div>\n@if (form) {\n <tui-expand [expanded]=\"expanded\">\n <ng-template tuiItem>\n <pre class=\"t-value\">Form data: {{ form.value | json }}</pre>\n </ng-template>\n </tui-expand>\n <div class=\"t-footer\">\n <button\n appearance=\"flat-grayscale\"\n automation-id=\"tui-demo-button__toggle-details\"\n size=\"s\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [tuiChevron]=\"expanded\"\n (click)=\"toggleDetails()\"\n >\n {{ texts()[2] }}\n </button>\n <tui-textfield\n tuiChevron\n tuiTextfieldAppearance=\"secondary-grayscale\"\n tuiTextfieldSize=\"s\"\n class=\"t-select\"\n [tuiTextfieldCleaner]=\"false\"\n >\n <input\n automation-id=\"tui-demo-select__expand-update-on\"\n tuiSelect\n [ngModel]=\"updateOn\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"updateOnChange($event)\"\n />\n <tui-data-list-wrapper\n *tuiDropdown\n [items]=\"updateOnVariants\"\n />\n </tui-textfield>\n <button\n appearance=\"secondary-grayscale\"\n automation-id=\"tui-demo-button__reset-state\"\n form=\"tui-demo-form\"\n size=\"s\"\n tuiButton\n type=\"reset\"\n >\n Reset\n </button>\n <button\n appearance=\"secondary-grayscale\"\n automation-id=\"tui-demo-button__submit-state\"\n form=\"tui-demo-form\"\n size=\"s\"\n tuiButton\n type=\"submit\"\n >\n Submit\n </button>\n </div>\n}\n","import {ChangeDetectionStrategy, Component, input} from '@angular/core';\n\n@Component({\n selector: 'tui-doc-tab',\n templateUrl: './index.html',\n styleUrl: './index.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiDocTab {\n public readonly src = input('');\n}\n","<div class=\"t-tab\">\n <img\n alt=\"Documentation tab icon\"\n class=\"t-icon\"\n [src]=\"src()\"\n />\n <ng-content />\n</div>\n","import {TUI_EXAMPLE_PRIMARY_FILE_NAME} from '@taiga-ui/addon-doc/types';\nimport {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nexport interface TuiDocExampleOptions {\n codeEditorVisibilityHandler: TuiBooleanHandler<Record<string, string>>;\n fullsize: boolean;\n tabTitles: Map<unknown, PolymorpheusContent>;\n}\n\nexport const TUI_DOC_EXAMPLE_DEFAULT_OPTIONS: TuiDocExampleOptions = {\n codeEditorVisibilityHandler: (files) =>\n Boolean(\n files[TUI_EXAMPLE_PRIMARY_FILE_NAME.TS] &&\n files[TUI_EXAMPLE_PRIMARY_FILE_NAME.HTML],\n ),\n tabTitles: new Map(),\n fullsize: true,\n};\n\n/**\n * Default parameters for DocExample component\n */\nexport const [TUI_DOC_EXAMPLE_OPTIONS, tuiDocExampleOptionsProvider] = tuiCreateOptions(\n TUI_DOC_EXAMPLE_DEFAULT_OPTIONS,\n);\n","import {Pipe, type PipeTransform} from '@angular/core';\n\n@Pipe({name: 'tuiDocExampleGetTabs'})\nexport class TuiDocExampleGetTabsPipe implements PipeTransform {\n public transform(content: Record<string, string>, defaultTab: string): string[] {\n return [defaultTab, ...Object.keys(content).filter((tab) => content[tab])];\n }\n}\n","import {Clipboard} from '@angular/cdk/clipboard';\nimport {DOCUMENT, NgComponentOutlet, NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n type OnChanges,\n resource,\n type Signal,\n signal,\n type Type,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {ActivatedRoute, RouterLink} from '@angular/router';\nimport {WA_LOCATION} from '@ng-web-apis/common';\nimport {\n WaIntersectionObservee,\n WaIntersectionObserverDirective,\n} from '@ng-web-apis/intersection-observer';\nimport {\n TUI_DOC_CODE_ACTIONS,\n TUI_DOC_CODE_EDITOR,\n TUI_DOC_EXAMPLE_CONTENT_PROCESSOR,\n TUI_DOC_ICONS,\n TUI_DOC_PREVIEW_TEXT,\n} from '@taiga-ui/addon-doc/tokens';\nimport {type TuiRawLoaderContent} from '@taiga-ui/addon-doc/types';\nimport {tuiRawLoadRecord, tuiToKebab} from '@taiga-ui/addon-doc/utils';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {TuiLoader} from '@taiga-ui/core/components/loader';\nimport {TuiNotificationService} from '@taiga-ui/core/components/notification';\nimport {TuiTitle} from '@taiga-ui/core/components/title';\nimport {TuiFullscreen} from '@taiga-ui/kit/components/fullscreen';\nimport {TuiSegmented} from '@taiga-ui/kit/components/segmented';\nimport {TUI_COPY_TEXTS, TUI_DONE_WORD} from '@taiga-ui/kit/tokens';\nimport {TuiHeader} from '@taiga-ui/layout/components/header';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {BehaviorSubject, map, switchMap} from 'rxjs';\n\nimport {TuiDocCode} from '../code';\nimport {TUI_DOC_EXAMPLE_OPTIONS} from './example.options';\nimport {TuiDocExampleGetTabsPipe} from './example-get-tabs.pipe';\n\n@Component({\n selector: 'tui-doc-example',\n imports: [\n NgComponentOutlet,\n NgTemplateOutlet,\n PolymorpheusOutlet,\n RouterLink,\n TuiButton,\n TuiDocCode,\n TuiDocExampleGetTabsPipe,\n TuiFullscreen,\n TuiHeader,\n TuiLink,\n TuiLoader,\n TuiMapperPipe,\n TuiSegmented,\n TuiTitle,\n ],\n templateUrl: './example.template.html',\n styleUrl: './example.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n WaIntersectionObserverDirective,\n {\n directive: WaIntersectionObservee,\n outputs: ['waIntersectionObservee'],\n },\n ],\n host: {\n waIntersectionRootMargin: '-40px 0px 1000000% 0px',\n waIntersectionThreshold: '1',\n '[attr.id]': 'resolvedId()',\n '[class._fullsize]': 'fullsize()',\n '(waIntersectionObservee)': 'onIntersection()',\n },\n})\nexport class TuiDocExample implements OnChanges {\n private readonly doc = inject(DOCUMENT);\n private readonly clipboard = inject(Clipboard);\n private readonly alerts = inject(TuiNotificationService);\n private readonly location = inject(WA_LOCATION);\n private readonly copyTexts = inject(TUI_COPY_TEXTS);\n private readonly doneWord = inject(TUI_DONE_WORD);\n private readonly processContent = inject(TUI_DOC_EXAMPLE_CONTENT_PROCESSOR);\n\n private readonly rawLoader$$ = new BehaviorSubject<\n Record<string, TuiRawLoaderContent>\n >({});\n\n protected readonly fullscreenEnabled = inject(DOCUMENT).fullscreenEnabled;\n protected readonly icons = inject(TUI_DOC_ICONS);\n protected readonly options = inject(TUI_DOC_EXAMPLE_OPTIONS);\n protected readonly defaultTab = inject(TUI_DOC_PREVIEW_TEXT);\n protected readonly codeEditor = inject(TUI_DOC_CODE_EDITOR, {optional: true});\n\n protected readonly codeActions =\n inject<ReadonlyArray<PolymorpheusContent<TuiContext<string>>>>(\n TUI_DOC_CODE_ACTIONS,\n );\n\n protected readonly route = inject(ActivatedRoute);\n protected activeItemIndex = 0;\n protected fullscreen = false;\n protected readonly copy = computed(() => this.copyTexts()[0]);\n protected readonly loading = signal(false);\n\n protected readonly resolvedId = computed(\n () => this.id() || tuiToKebab(this.heading()),\n );\n\n protected readonly processor: Signal<Record<string, string>> = toSignal(\n this.rawLoader$$.pipe(\n switchMap(tuiRawLoadRecord),\n map((value) => this.processContent(value)),\n ),\n {initialValue: {}},\n );\n\n protected readonly lazyComponent = resource({\n request: async () => this.component(),\n loader: async ({request}) => {\n if (!request) {\n return null;\n }\n\n const component = await request;\n\n return component && 'default' in component ? component.default : component;\n },\n });\n\n public readonly heading = input('');\n public readonly id = input('');\n public readonly description = input<PolymorpheusContent>();\n public readonly fullsize = input(inject(TUI_DOC_EXAMPLE_OPTIONS).fullsize);\n\n public readonly component =\n input<Promise<Type<unknown> | {default: Type<unknown>}>>();\n\n public readonly content = input<Record<string, TuiRawLoaderContent>>({});\n public readonly preview = input(true);\n\n public ngOnChanges(): void {\n this.rawLoader$$.next(this.content());\n }\n\n protected readonly visible = (files: Record<string, string>): boolean =>\n Boolean(this.codeEditor && this.options.codeEditorVisibilityHandler(files));\n\n protected getTabTitle(fileName: string): PolymorpheusContent {\n return this.options.tabTitles.get(fileName) || fileName;\n }\n\n protected copyExampleLink(target: EventTarget | null): void {\n this.clipboard.copy((target as HTMLAnchorElement | null)?.href ?? '');\n this.alerts\n .open(this.copyTexts()[1], {label: this.doneWord(), appearance: 'positive'})\n .subscribe();\n }\n\n protected edit(files: Record<string, string>): void {\n this.loading.set(true);\n this.codeEditor\n ?.edit(this.location.pathname.slice(1), this.resolvedId() || '', files)\n .finally(() => this.loading.set(false));\n }\n\n protected onIntersection(): void {\n this.doc.dispatchEvent(\n new CustomEvent('tui-example', {detail: this.resolvedId()}),\n );\n }\n}\n","@if (heading()) {\n <header tuiHeader=\"h6\">\n <hgroup tuiTitle>\n <h3>\n <a\n appearance=\"\"\n routerLink=\".\"\n tuiLink\n class=\"t-link\"\n [attr.title]=\"copy()\"\n [fragment]=\"resolvedId()\"\n [iconEnd]=\"icons.link\"\n [relativeTo]=\"route.firstChild ?? route\"\n (click)=\"copyExampleLink($event.currentTarget)\"\n >\n {{ heading() }}\n </a>\n </h3>\n </hgroup>\n </header>\n\n @if (description()) {\n <div tuiDescription>\n <ng-container *polymorpheusOutlet=\"description() as text\">\n {{ text }}\n </ng-container>\n </div>\n }\n}\n<div\n class=\"t-example\"\n [(tuiFullscreen)]=\"fullscreen\"\n>\n @if (processor() | tuiDocExampleGetTabs: defaultTab(); as all) {\n @let tabs = preview() ? all : all.slice(1);\n @if (tabs.length) {\n <div class=\"t-header\">\n <tui-segmented\n class=\"t-tabs\"\n [(activeItemIndex)]=\"activeItemIndex\"\n >\n @for (tab of tabs; track tab) {\n <button type=\"button\">\n <ng-container *polymorpheusOutlet=\"getTabTitle(tab) as text\">\n {{ text }}\n </ng-container>\n </button>\n }\n </tui-segmented>\n @if (processor() | tuiMapper: visible) {\n <tui-loader\n size=\"xs\"\n class=\"t-code-editor\"\n [loading]=\"loading()\"\n [overlay]=\"true\"\n (click)=\"edit(processor())\"\n >\n @if (codeEditor?.content; as content) {\n <ng-container *polymorpheusOutlet=\"content as editContent\">\n {{ editContent }}\n </ng-container>\n } @else {\n <button\n appearance=\"flat\"\n size=\"s\"\n tuiButton\n type=\"button\"\n >\n Edit on {{ codeEditor?.name }}\n </button>\n }\n </tui-loader>\n }\n @if (fullscreenEnabled && preview()) {\n <button\n appearance=\"flat-grayscale\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n [iconStart]=\"fullscreen ? icons.shrink : icons.expand\"\n (click)=\"fullscreen = !fullscreen\"\n >\n Fullscreen\n </button>\n }\n </div>\n }\n @for (tab of tabs; track tab) {\n <div class=\"t-content\">\n @if (!$index && preview()) {\n <section\n automation-id=\"tui-doc-example\"\n class=\"t-demo\"\n [style.display]=\"activeItemIndex === $index ? 'block' : 'none'\"\n >\n <ng-container *ngTemplateOutlet=\"content\" />\n <ng-container *ngComponentOutlet=\"lazyComponent.value() ?? null\" />\n </section>\n }\n @let code = processor()[tab] || '';\n <tui-doc-code\n [code]=\"code\"\n [style.display]=\"activeItemIndex === $index && ($index || !preview()) ? 'block' : 'none'\"\n >\n @for (action of codeActions; track action) {\n <ng-container *polymorpheusOutlet=\"action as text; context: {$implicit: code}\">\n {{ text }}\n </ng-container>\n }\n </tui-doc-code>\n </div>\n } @empty {\n <div class=\"t-content\">\n <section class=\"t-demo\">\n <ng-container *ngTemplateOutlet=\"content\" />\n </section>\n </div>\n }\n }\n</div>\n<ng-template #content>\n <ng-content />\n</ng-template>\n","import {InjectionToken, type Provider} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {ActivatedRoute, type Event, NavigationEnd, Router, Scroll} from '@angular/router';\nimport {TUI_DOC_PAGES, TUI_DOC_TITLE} from '@taiga-ui/addon-doc/tokens';\nimport {type TuiDocRoutePages} from '@taiga-ui/addon-doc/types';\nimport {tuiAutoFocusOptionsProvider} from '@taiga-ui/cdk/directives/auto-focus';\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiLinkOptionsProvider} from '@taiga-ui/core/components/link';\nimport {tuiScrollbarOptionsProvider} from '@taiga-ui/core/components/scrollbar';\nimport {filter, map, mergeMap, type Observable} from 'rxjs';\n\nfunction labelsProviderFactory(pages: TuiDocRoutePages): readonly string[] {\n return pages\n .map(({section}) => section)\n .filter(tuiIsPresent)\n .filter((item, index, array) => array.indexOf(item) === index);\n}\n\n/**\n * Page title\n */\nexport const NAVIGATION_TITLE = new InjectionToken<Observable<string>>(\n ngDevMode ? 'NAVIGATION_TITLE' : '',\n);\n\n/**\n * Navigation sections labels for search\n */\nexport const NAVIGATION_LABELS = new InjectionToken<readonly string[]>(\n ngDevMode ? 'NAVIGATION_LABELS' : '',\n);\n\n/**\n * Navigation pages\n */\nexport const NAVIGATION_ITEMS = new InjectionToken<readonly TuiDocRoutePages[]>(\n ngDevMode ? 'NAVIGATION_ITEMS' : '',\n);\n\nexport const NAVIGATION_PROVIDERS: Provider[] = [\n tuiAutoFocusOptionsProvider({preventScroll: true}),\n tuiLinkOptionsProvider({appearance: 'action-grayscale'}),\n {\n provide: NAVIGATION_TITLE,\n deps: [Router, ActivatedRoute, TUI_DOC_TITLE],\n useFactory: (\n router: Router,\n activatedRoute: ActivatedRoute,\n titlePrefix: string,\n ): Observable<string> =>\n router.events.pipe(\n filter(\n (event: Event) =>\n event instanceof NavigationEnd ||\n (event instanceof Scroll\n ? event.routerEvent instanceof NavigationEnd\n : false),\n ),\n map(() => activatedRoute.firstChild),\n filter(tuiIsPresent),\n mergeMap(({data}) => data),\n map(({title}) => `${titlePrefix}${title}`),\n takeUntilDestroyed(),\n ),\n },\n {\n provide: NAVIGATION_LABELS,\n deps: [TUI_DOC_PAGES],\n useFactory: labelsProviderFactory,\n },\n {\n provide: NAVIGATION_ITEMS,\n deps: [TUI_DOC_PAGES],\n useFactory: (pages: TuiDocRoutePages): readonly TuiDocRoutePages[] => {\n const labels = labelsProviderFactory(pages);\n\n return [\n ...labels.map((label) => pages.filter(({section}) => section === label)),\n pages.filter((page) => !page.section),\n ];\n },\n },\n tuiScrollbarOptionsProvider({mode: 'hover'}),\n];\n","import {Directive, inject, input, type OnChanges} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TUI_DOC_PAGE_LOADED} from '@taiga-ui/addon-doc/tokens';\nimport {tuiZonefreeScheduler} from '@taiga-ui/cdk/observables';\nimport {tuiGetElementObscures, tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {debounceTime, filter, ReplaySubject, switchMap, take} from 'rxjs';\n\n@Directive({selector: '[tuiDocScrollIntoViewLink]'})\nexport class TuiDocScrollIntoViewLink implements OnChanges {\n private readonly scroll$ = new ReplaySubject<boolean>(1);\n private readonly el = tuiInjectElement();\n\n protected readonly sub = inject(TUI_DOC_PAGE_LOADED)\n .pipe(\n filter(Boolean),\n take(1),\n switchMap(() => this.scroll$),\n debounceTime(750, tuiZonefreeScheduler()),\n filter((shallWe) => shallWe && !!tuiGetElementObscures(this.el)),\n takeUntilDestroyed(),\n )\n .subscribe(() => this.el.scrollIntoView());\n\n public readonly tuiDocScrollIntoViewLink = input(false);\n\n public ngOnChanges(): void {\n this.scroll$.next(this.tuiDocScrollIntoViewLink());\n }\n}\n","import {DOCUMENT, NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n type Signal,\n signal,\n viewChild,\n} from '@angular/core';\nimport {takeUntilDestroyed, toSignal} from '@angular/core/rxjs-interop';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\nimport {Title} from '@angular/platform-browser';\nimport {Router, RouterLink, RouterLinkActive, Scroll} from '@angular/router';\nimport {\n TUI_DOC_ICONS,\n TUI_DOC_PAGE_LOADED,\n TUI_DOC_PAGES_ICONS,\n TUI_DOC_SEARCH_ENABLED,\n TUI_DOC_SEARCH_TEXT,\n} from '@taiga-ui/addon-doc/tokens';\nimport {type TuiDocRoutePage, type TuiDocRoutePages} from '@taiga-ui/addon-doc/types';\nimport {tuiTransliterateKeyboardLayout} from '@taiga-ui/addon-doc/utils';\nimport {TuiAutoFocus} from '@taiga-ui/cdk/directives/auto-focus';\nimport {tuiControlValue, tuiWatch} from '@taiga-ui/cdk/observables';\nimport {TuiDataList} from '@taiga-ui/core/components/data-list';\nimport {TuiExpand} from '@taiga-ui/core/components/expand';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {TuiInput, TuiInputDirective} from '@taiga-ui/core/components/input';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {TuiScrollbar} from '@taiga-ui/core/components/scrollbar';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {TuiAccordion} from '@taiga-ui/kit/components/accordion';\nimport {TuiDrawer} from '@taiga-ui/kit/components/drawer';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {combineLatest, filter, fromEvent, map, of, switchMap, take} from 'rxjs';\n\nimport {\n NAVIGATION_ITEMS,\n NAVIGATION_LABELS,\n NAVIGATION_PROVIDERS,\n NAVIGATION_TITLE,\n} from './navigation.providers';\nimport {TuiDocScrollIntoViewLink} from './scroll-into-view.directive';\n\nfunction tuiUniqBy<T extends Record<string, any>>(\n array: readonly T[],\n key: keyof T,\n): readonly T[] {\n return Array.from(\n array\n .reduce(\n (map, item) => (map.has(item[key]) ? map : map.set(item[key], item)),\n new Map<T[keyof T], T>(),\n )\n .values(),\n );\n}\n\n@Component({\n selector: 'tui-doc-navigation',\n imports: [\n NgTemplateOutlet,\n PolymorpheusOutlet,\n ReactiveFormsModule,\n RouterLink,\n RouterLinkActive,\n TuiAccordion,\n TuiAutoFocus,\n TuiDataList,\n TuiDocScrollIntoViewLink,\n TuiExpand,\n TuiIcon,\n TuiInput,\n TuiLink,\n TuiScrollbar,\n ],\n templateUrl: './navigation.template.html',\n styleUrl: './navigation.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: NAVIGATION_PROVIDERS,\n host: {\n '[class._open]': 'menuOpen',\n '(window:keydown)': 'onFocusSearch($event)',\n },\n})\nexport class TuiDocNavigation {\n private readonly searchInput: Signal<ElementRef<HTMLInputElement> | undefined> =\n viewChild(TuiInputDirective, {read: ElementRef});\n\n private readonly router = inject(Router);\n private readonly doc = inject(DOCUMENT);\n protected readonly open = signal(false);\n protected menuOpen = false;\n protected readonly drawer = inject(TuiDrawer, {optional: true});\n protected readonly labels = inject(NAVIGATION_LABELS);\n protected readonly items = inject(NAVIGATION_ITEMS);\n protected readonly searchText = inject(TUI_DOC_SEARCH_TEXT);\n protected readonly searchEnabled = inject(TUI_DOC_SEARCH_ENABLED);\n protected readonly docIcons = inject(TUI_DOC_ICONS);\n protected readonly pagesIcons = inject(TUI_DOC_PAGES_ICONS);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n\n protected readonly flat = this.items.reduce<\n ReadonlyArray<readonly TuiDocRoutePage[]>\n >(\n (array, item) => [\n ...array,\n item.reduce<readonly TuiDocRoutePage[]>(\n (pages, page) =>\n 'subPages' in page ? [...pages, ...page.subPages] : [...pages, page],\n [],\n ),\n ],\n [],\n );\n\n protected openPagesArr: boolean[] = [];\n protected openPagesGroupsArr: boolean[] = [];\n protected active = '';\n protected readonly search = new FormControl('');\n\n protected readonly filtered = toSignal(\n tuiControlValue<string>(this.search).pipe(\n filter((search) => search.trim().length > 2),\n map((search) => this.filterItems(this.flat, search)),\n ),\n {initialValue: []},\n );\n\n constructor() {\n const titleService = inject(Title);\n const readyToScroll$ = inject(TUI_DOC_PAGE_LOADED);\n\n inject(NAVIGATION_TITLE)\n .pipe(tuiWatch(), takeUntilDestroyed())\n .subscribe((title) => {\n titleService.setTitle(title);\n this.openActivePageGroup();\n });\n\n combineLatest([\n this.router.events.pipe(\n filter((event): event is Scroll => event instanceof Scroll),\n switchMap(({anchor}) =>\n 'onscrollend' in this.doc\n ? fromEvent(this.doc, 'scrollend').pipe(map(() => anchor))\n : of(anchor),\n ),\n ),\n inject(NAVIGATION_TITLE).pipe(\n switchMap(() => readyToScroll$.pipe(filter(Boolean))),\n ),\n ])\n .pipe(\n take(1),\n map(([anchor]) => anchor || ''),\n filter<string>(Boolean),\n takeUntilDestroyed(),\n )\n .subscribe((anchor) => this.navigateToAnchorLink(anchor));\n }\n\n protected get canOpen(): boolean {\n return (this.search.value?.length ?? 0) > 2;\n }\n\n protected get itemsWithoutSections(): TuiDocRoutePages {\n return this.items[this.items.length - 1] ?? [];\n }\n\n protected $pages<T extends TuiDocRoutePage[]>(pages: T): readonly TuiDocRoutePage[] {\n return pages;\n }\n\n protected isActive(route: string): boolean {\n return route === this.active;\n }\n\n protected onGroupClick(index: number): void {\n this.openPagesGroupsArr[index] = !this.openPagesGroupsArr[index];\n }\n\n protected closeMenu(): void {\n this.menuOpen = false;\n }\n\n protected onClick(): void {\n this.open.set(false);\n this.menuOpen = false;\n this.search.setValue('');\n this.openActivePageGroup();\n }\n\n protected onFocusSearch(event: KeyboardEvent): void {\n if (\n event.code === 'Slash' &&\n !this.doc.activeElement?.matches('input,textarea,[contenteditable]')\n ) {\n this.searchInput()?.nativeElement?.focus();\n event.preventDefault();\n }\n }\n\n private filterItems(\n items: ReadonlyArray<readonly TuiDocRoutePage[]>,\n search: string,\n ): ReadonlyArray<readonly TuiDocRoutePage[]> {\n return items.map((section) =>\n tuiUniqBy(\n section.filter(({title, keywords = ''}) => {\n search = search.toLowerCase().trim();\n keywords = keywords.toLowerCase();\n title = title.toLowerCase();\n\n return (\n title.includes(search) ||\n keywords.includes(search) ||\n title.includes(tuiTransliterateKeyboardLayout(search)) ||\n keywords.includes(tuiTransliterateKeyboardLayout(search)) ||\n search.replaceAll('-', '').includes(title) ||\n title.includes(search.replaceAll(/\\s|tui/g, '')) ||\n keywords.includes(search.replaceAll(/\\s|tui/g, '')) ||\n search.split(/\\s/).find((word) => title.includes(word))\n );\n }),\n 'title',\n ),\n );\n }\n\n private isActiveRoute(route: string): boolean {\n return this.router.isActive(route, {\n paths: 'subset',\n queryParams: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored',\n });\n }\n\n private openActivePageGroup(): void {\n this.items.forEach((pages, pagesIndex) => {\n pages.forEach((page, pageIndex) => {\n if ('route' in page && this.isActiveRoute(page.route)) {\n this.openPagesArr[pagesIndex] = true;\n this.active = page.route;\n }\n\n if ('subPages' in page) {\n page.subPages.forEach((subPage) => {\n if (this.isActiveRoute(subPage.route)) {\n this.openPagesArr[pagesIndex] = true;\n this.openPagesGroupsArr[pagesIndex * 100 + pageIndex] = true;\n this.active = subPage.route;\n }\n });\n }\n });\n });\n }\n\n private navigateToAnchorLink(fragment: string): void {\n const nodes = fragment ? this.doc.querySelectorAll(`#${fragment}`) : [];\n const element = nodes.length && nodes[nodes.length - 1];\n\n if (!element) {\n return;\n }\n\n // emulate :target event\n const target = this.doc.createElement('a');\n\n target.href = `${this.doc.location.pathname}#${fragment}`;\n target.style.display = 'none';\n target.style.position = 'absolute';\n this.doc.body.appendChild(target);\n target.click();\n target.remove();\n }\n}\n","@if (searchEnabled()) {\n <tui-textfield\n tuiTextfieldSize=\"m\"\n class=\"t-input\"\n [iconStart]=\"docIcons.search\"\n [open]=\"open() && canOpen\"\n (keyup)=\"open.set(canOpen && $event.code !== 'Escape')\"\n (openChange)=\"open.set($event)\"\n >\n @if (!search.value) {\n <code class=\"t-slash\">/</code>\n }\n\n <input\n tuiInput\n class=\"t-prevent-ios-scroll\"\n [formControl]=\"search\"\n [placeholder]=\"searchText()\"\n [tuiAutoFocus]=\"!!drawer\"\n />\n\n @if (canOpen) {\n <tui-data-list *tuiDropdown>\n @for (group of filtered(); track group) {\n <tui-opt-group [label]=\"labels[$index] || ''\">\n @for (item of group; track item) {\n @if (item.route.includes('://')) {\n <a\n tuiOption\n [attr.rel]=\"item.rel\"\n [href]=\"item.route\"\n [target]=\"item.target || '_self'\"\n [textContent]=\"item.title\"\n ></a>\n } @else {\n <a\n tuiOption\n [attr.rel]=\"item.rel\"\n [fragment]=\"item.fragment\"\n [routerLink]=\"item.route\"\n [target]=\"item.target || '_self'\"\n [textContent]=\"item.title\"\n (click)=\"onClick()\"\n ></a>\n }\n }\n </tui-opt-group>\n }\n </tui-data-list>\n }\n </tui-textfield>\n}\n\n<nav class=\"t-navigation\">\n <tui-scrollbar class=\"t-scrollbar\">\n <tui-accordion\n size=\"s\"\n class=\"t-accordion\"\n [closeOthers]=\"false\"\n >\n @for (item of itemsWithoutSections; track item) {\n <ng-container\n [ngTemplateOutlet]=\"page\"\n [ngTemplateOutletContext]=\"{$implicit: item}\"\n />\n }\n @for (label of labels; track $index; let index = $index) {\n <button\n appearance=\"\"\n iconEnd=\"\"\n class=\"t-accordion-item\"\n [iconStart]=\"pagesIcons[label]\"\n [tuiAccordion]=\"!!openPagesArr[$index]\"\n (tuiAccordionChange)=\"openPagesArr[$index] = !!$event\"\n >\n <span class=\"t-label\">{{ label }}</span>\n <tui-icon\n class=\"t-chevron\"\n [class.t-chevron_active]=\"!!openPagesArr[$index]\"\n [icon]=\"icons.more\"\n [style.margin]=\"0\"\n />\n </button>\n <tui-expand [style.padding-block]=\"0\">\n <div\n *tuiItem\n class=\"t-section\"\n >\n @for (item of items[$index]; track $index) {\n <ng-container\n [ngTemplateOutlet]=\"pages\"\n [ngTemplateOutletContext]=\"{item: item, index: index * 100 + $index}\"\n />\n }\n </div>\n </tui-expand>\n }\n </tui-accordion>\n\n <ng-template\n #page\n let-item\n >\n @if (item.route.includes('://')) {\n <a\n tuiLink\n class=\"t-sublink\"\n [attr.rel]=\"item.rel\"\n [href]=\"item.route\"\n [iconStart]=\"item.section ? '' : pagesIcons[item.title]\"\n [target]=\"item.target || '_self'\"\n [textContent]=\"item.title\"\n ></a>\n } @else {\n <a\n routerLinkActive=\"t-sublink_active\"\n tuiLink\n class=\"t-sublink\"\n [attr.rel]=\"item.rel\"\n [iconStart]=\"item.section ? '' : pagesIcons[item.title]\"\n [routerLink]=\"item.route\"\n [target]=\"item.target || '_self'\"\n [textContent]=\"item.title\"\n [tuiDocScrollIntoViewLink]=\"isActive(item.route)\"\n (click)=\"closeMenu()\"\n ></a>\n }\n </ng-template>\n\n <ng-template\n #pages\n let-index=\"index\"\n let-item=\"item\"\n >\n @if (!item.subPages) {\n <ng-container\n [ngTemplateOutlet]=\"page\"\n [ngTemplateOutletContext]=\"{$implicit: item}\"\n />\n } @else {\n <div\n routerLinkActive\n class=\"t-subsection\"\n [routerLinkActiveOptions]=\"{exact: false}\"\n >\n @if (item.subPages) {\n <button\n tuiLink\n type=\"button\"\n class=\"t-sublink t-sublink_subsection\"\n (click)=\"onGroupClick(index)\"\n >\n <tui-icon\n class=\"t-chevron\"\n [class.t-chevron_active]=\"!!openPagesGroupsArr[index]\"\n [icon]=\"icons.more\"\n />\n {{ item.title }}\n <tui-icon\n *polymorpheusOutlet=\"item.icon as icon\"\n class=\"t-icon\"\n [icon]=\"icon\"\n />\n </button>\n }\n\n <tui-expand\n class=\"t-expand\"\n [expanded]=\"!!openPagesGroupsArr[index]\"\n >\n <div class=\"t-section t-section_nested\">\n @for (subPage of $pages(item.subPages); track subPage) {\n @if (subPage.route.includes('://')) {\n <a\n tuiLink\n class=\"t-sublink t-sublink_small\"\n [attr.rel]=\"subPage.rel\"\n [href]=\"subPage.route\"\n [target]=\"subPage.target || '_self'\"\n [textContent]=\"subPage.title\"\n ></a>\n } @else {\n <a\n routerLinkActive=\"t-sublink_active\"\n tuiLink\n class=\"t-sublink t-sublink_small\"\n [attr.rel]=\"subPage.rel\"\n [fragment]=\"subPage.fragment\"\n [routerLink]=\"subPage.route\"\n [target]=\"subPage.target || '_self'\"\n [textContent]=\"subPage.title\"\n [tuiDocScrollIntoViewLink]=\"isActive(subPage.route)\"\n (click)=\"closeMenu()\"\n ></a>\n }\n }\n </div>\n </tui-expand>\n </div>\n }\n </ng-template>\n </tui-scrollbar>\n</nav>\n\n<ng-content />\n","import {ChangeDetectionStrategy, Component, effect, inject, signal} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {Router} from '@angular/router';\nimport {TUI_DOC_ICONS, TUI_DOC_LOGO, TUI_DOC_MENU_TEXT} from '@taiga-ui/addon-doc/tokens';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiPopup} from '@taiga-ui/core/portals/popup';\nimport {TuiDrawer} from '@taiga-ui/kit/components/drawer';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TuiDocNavigation} from '../../navigation/navigation.component';\n\n@Component({\n selector: 'header[tuiDocHeader]',\n imports: [PolymorpheusOutlet, TuiButton, TuiDocNavigation, TuiDrawer, TuiPopup],\n templateUrl: './index.html',\n styleUrl: './index.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiDocHeader {\n private readonly router = inject(Router);\n private readonly routeEvents = toSignal(this.router.events, {initialValue: null});\n protected readonly icons = inject(TUI_DOC_ICONS);\n protected readonly logo = inject(TUI_DOC_LOGO);\n protected readonly menu = inject(TUI_DOC_MENU_TEXT);\n protected readonly open = signal(false);\n\n constructor() {\n effect(() => this.routeEvents() && this.open.set(false));\n }\n}\n","<button\n appearance=\"flat-grayscale\"\n tuiIconButton\n type=\"button\"\n class=\"t-menu\"\n [iconStart]=\"icons.menu\"\n [title]=\"menu()\"\n (click)=\"open.set(true)\"\n></button>\n\n<tui-drawer\n *tuiPopup=\"open()\"\n direction=\"start\"\n class=\"t-drawer\"\n [overlay]=\"true\"\n (click.self)=\"open.set(false)\"\n>\n <tui-doc-navigation>\n <ng-content select=\"tuiDocMobileNavigation\" />\n </tui-doc-navigation>\n</tui-drawer>\n\n<div class=\"t-logo\">\n <img\n *polymorpheusOutlet=\"logo as src\"\n alt=\"Logo\"\n class=\"t-img\"\n [src]=\"src\"\n />\n</div>\n<ng-content />\n","import {ChangeDetectionStrategy, Component, computed, inject, input} from '@angular/core';\nimport {\n TUI_DOC_ICONS,\n TUI_DOC_SOURCE_CODE,\n TUI_DOC_SOURCE_CODE_TEXT,\n} from '@taiga-ui/addon-doc/tokens';\nimport {type TuiDocSourceCodePathOptions} from '@taiga-ui/addon-doc/types';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\n@Component({\n selector: 'tui-doc-source-code',\n imports: [PolymorpheusOutlet, TuiButton],\n templateUrl: './source-code.template.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiDocSourceCode {\n protected readonly icons = inject(TUI_DOC_ICONS);\n protected readonly sourceCode = inject(TUI_DOC_SOURCE_CODE);\n protected readonly text = inject(TUI_DOC_SOURCE_CODE_TEXT);\n public readonly header = input('');\n public readonly package = input('');\n public readonly type = input('');\n public readonly path = input('');\n\n protected readonly pathOptions = computed(\n (): TuiDocSourceCodePathOptions => ({\n header: this.header(),\n package: this.package(),\n type: this.type(),\n path: this.path(),\n }),\n );\n\n protected readonly pathIsUrl = computed(\n (): boolean => this.path()?.startsWith('http') ?? false,\n );\n}\n","<a\n *polymorpheusOutlet=\"pathIsUrl() ? path() : sourceCode as link; context: pathOptions()\"\n appearance=\"secondary-grayscale\"\n size=\"s\"\n target=\"_blank\"\n tuiButton\n [href]=\"link\"\n [iconStart]=\"icons.code\"\n>\n {{ text() }}\n</a>\n","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\nimport {RouterOutlet} from '@angular/router';\nimport {TuiRoot} from '@taiga-ui/core/components/root';\n\nimport {TuiDocHeader} from '../internal/header';\nimport {TuiDocNavigation} from '../navigation/navigation.component';\n\n@Component({\n selector: 'tui-doc-main',\n imports: [RouterOutlet, TuiDocHeader, TuiDocNavigation, TuiRoot],\n templateUrl: './main.template.html',\n styleUrl: './main.style.less',\n encapsulation: ViewEncapsulation.None,\n // @note: This one was default on purpose, so we can test demo in default mode.\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class TuiDocMain {}\n","<tui-root>\n <div class=\"tui-doc-page\">\n <tui-doc-navigation class=\"tui-doc-navigation\">\n <ng-content select=\"tuiDocNavigation\" />\n </tui-doc-navigation>\n <div class=\"tui-doc-content\">\n <router-outlet class=\"tui-doc-outlet\" />\n </div>\n </div>\n <header tuiDocHeader>\n <ng-content\n ngProjectAs=\"tuiDocMobileNavigation\"\n select=\"tuiDocMobileNavigation\"\n />\n <ng-content select=\"tuiDocHeader\" />\n </header>\n <ng-container ngProjectAs=\"tuiOverContent\">\n <ng-content select=\"tuiOverContent\" />\n </ng-container>\n</tui-root>\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n type OnInit,\n signal,\n} from '@angular/core';\nimport {ActivatedRoute, RouterLink} from '@angular/router';\nimport {\n TUI_DOC_MAP_PAGES,\n TUI_DOC_SEE_ALSO,\n TUI_DOC_SEE_ALSO_TEXT,\n TUI_DOC_TOC_TEXT,\n} from '@taiga-ui/addon-doc/tokens';\nimport {TuiDocKebabPipe, tuiToKebab} from '@taiga-ui/addon-doc/utils';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiArrayToggle} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {TuiTitle} from '@taiga-ui/core/components/title';\n\nimport {TuiDocPage} from '../page/page.component';\n\n@Component({\n selector: 'tui-doc-toc',\n imports: [RouterLink, TuiDocKebabPipe, TuiLink, TuiTitle],\n templateUrl: './index.html',\n styleUrl: './index.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'(document:tui-example)': 'onExample($event.detail)'},\n})\nexport class TuiDocToc implements OnInit {\n private readonly el = tuiInjectElement();\n private readonly pages = inject(TUI_DOC_MAP_PAGES);\n private examples: readonly string[] = [];\n private active = '';\n protected readonly toc = signal<readonly string[]>([]);\n protected readonly route = inject(ActivatedRoute);\n protected readonly seeAlso = getSeeAlso();\n\n protected readonly text = {\n toc: inject(TUI_DOC_TOC_TEXT),\n seeAlso: inject(TUI_DOC_SEE_ALSO_TEXT),\n };\n\n public ngOnInit(): void {\n setTimeout(() => {\n const page = this.el.closest('tui-doc-page');\n const links = page?.querySelectorAll('tui-doc-example > header .t-link');\n const toc = Array.from(links || []).map((el) => el.textContent?.trim() || '');\n\n this.toc.set(toc);\n });\n }\n\n protected isActive(fragment: string): boolean {\n return this.active ? fragment === this.active : fragment === this.toc()[0];\n }\n\n protected getRouterLink(pageTitle: string): string {\n return this.pages.get(pageTitle)?.route ?? '';\n }\n\n protected onExample(example: string): void {\n const toc = this.toc();\n\n this.examples = tuiArrayToggle(this.examples, example);\n this.active =\n toc.find((item) => this.examples.includes(tuiToKebab(item))) ||\n toc[toc.length - 1] ||\n '';\n }\n}\n\nfunction getSeeAlso(): string[] {\n const current = inject(TuiDocPage).header() || '';\n\n const groups =\n inject(TUI_DOC_SEE_ALSO).filter((group) => group.includes(current)) || [];\n\n return Array.from(\n new Set(\n groups\n .join()\n .split(',')\n .filter((component) => component && component !== current),\n ),\n );\n}\n","@if (toc().length > 1) {\n <h2 tuiTitle=\"s\">\n <b>{{ text.toc() }}</b>\n </h2>\n <nav>\n @for (item of toc(); track $index) {\n <a\n appearance=\"action-grayscale\"\n routerLink=\".\"\n tuiLink\n type=\"button\"\n [class._active]=\"isActive(item)\"\n [fragment]=\"item | tuiKebab\"\n [relativeTo]=\"route.firstChild ?? route\"\n >\n {{ item }}\n </a>\n }\n </nav>\n @if (seeAlso.length) {\n <h2 tuiTitle=\"s\">\n <b>{{ text.seeAlso() }}</b>\n </h2>\n @for (item of seeAlso; track $index) {\n <a\n tuiLink\n [innerText]=\"item\"\n [routerLink]=\"getRouterLink(item)\"\n ></a>\n @if (!$last) {\n <span>{{ ', ' }}</span>\n }\n }\n }\n}\n","import {InjectionToken} from '@angular/core';\nimport {type ActivatedRouteSnapshot} from '@angular/router';\nimport {type TuiHandler} from '@taiga-ui/cdk/types';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nexport const TUI_DOC_TABS = new InjectionToken<\n TuiHandler<ActivatedRouteSnapshot, Record<string, PolymorpheusContent>>\n>(ngDevMode ? 'TUI_DOC_TABS' : '', {factory: () => () => ({})});\n","import {Directive, inject, input, TemplateRef} from '@angular/core';\n\n@Directive({selector: 'ng-template[pageTab]'})\nexport class TuiDocPageTabConnector {\n public readonly pageTab = input<string>();\n public readonly template = inject(TemplateRef<Record<string, unknown>>);\n}\n","import {KeyValuePipe, NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n inject,\n input,\n model,\n} from '@angular/core';\nimport {ActivatedRoute, RouterLink, RouterLinkActive} from '@angular/router';\nimport {TUI_DOC_DEFAULT_TABS} from '@taiga-ui/addon-doc/tokens';\nimport {TuiTitle} from '@taiga-ui/core/components/title';\nimport {TuiBadge} from '@taiga-ui/kit/components/badge';\nimport {TuiSegmented} from '@taiga-ui/kit/components/segmented';\nimport {TuiFade} from '@taiga-ui/kit/directives/fade';\nimport {TuiAutoColorPipe} from '@taiga-ui/kit/pipes/auto-color';\nimport {TuiHeader} from '@taiga-ui/layout/components/header';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TuiDocSourceCode} from '../internal/source-code/source-code.component';\nimport {TuiDocToc} from '../toc';\nimport {TUI_DOC_TABS} from './page.providers';\nimport {TuiDocPageTabConnector} from './page-tab.directive';\n\n@Component({\n selector: 'tui-doc-page',\n imports: [\n KeyValuePipe,\n NgTemplateOutlet,\n PolymorpheusOutlet,\n RouterLink,\n RouterLinkActive,\n TuiAutoColorPipe,\n TuiBadge,\n TuiDocSourceCode,\n TuiDocToc,\n TuiFade,\n TuiHeader,\n TuiSegmented,\n TuiTitle,\n ],\n templateUrl: './page.template.html',\n styleUrl: './page.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiDocPage {\n protected readonly tabConnectors = contentChildren(TuiDocPageTabConnector);\n protected readonly tabs = inject(TUI_DOC_TABS)(inject(ActivatedRoute).snapshot);\n protected readonly defaultTabs = inject(TUI_DOC_DEFAULT_TABS);\n protected readonly from = / /g;\n protected readonly to = '_';\n public readonly header = input('');\n public readonly package = input('');\n public readonly type = input('');\n public readonly tags = input<string[]>([]);\n public readonly path = input('');\n public readonly activeItemIndex = model(0);\n}\n","<header\n tuiHeader\n class=\"t-header\"\n>\n @if (header()) {\n <hgroup tuiTitle>\n <h1>\n {{ header() }}\n @if (package()) {\n <span\n appearance=\"custom\"\n size=\"m\"\n tuiBadge\n class=\"t-badge\"\n [style.background]=\"package() | tuiAutoColor\"\n >\n {{ package() }}\n </span>\n }\n @for (tag of tags(); track $index) {\n <span\n appearance=\"custom\"\n size=\"m\"\n tuiBadge\n class=\"t-badge\"\n [style.background]=\"tag | tuiAutoColor\"\n >\n {{ tag }}\n </span>\n }\n </h1>\n <p\n tuiFade\n class=\"t-navigation\"\n >\n @if (tabConnectors().length > 1) {\n <tui-segmented [(activeItemIndex)]=\"activeItemIndex\">\n @for (tab of tabConnectors(); track tab) {\n @if (tab.pageTab() || defaultTabs[$index]; as tabName) {\n <a\n routerLinkActive\n [routerLink]=\"$first ? './' : tabName.replace(from, to)\"\n [routerLinkActiveOptions]=\"{exact: $first}\"\n >\n {{ tabName }}\n </a>\n }\n }\n @for (tab of tabs | keyvalue; track tab) {\n <a\n routerLinkActive\n [routerLink]=\"tab.key\"\n >\n {{ tab.key }}\n </a>\n }\n </tui-segmented>\n }\n\n @if (package() || path() || type()) {\n <tui-doc-source-code\n class=\"t-source-code\"\n [header]=\"header()\"\n [package]=\"package()\"\n [path]=\"path()\"\n [type]=\"type()\"\n />\n }\n </p>\n </hgroup>\n }\n</header>\n<ng-content />\n@for (tab of tabConnectors(); track tab) {\n @if ($index === activeItemIndex()) {\n <tui-doc-toc />\n <ng-container [ngTemplateOutlet]=\"tab.template\" />\n }\n}\n@for (tab of tabs | keyvalue; track tab) {\n @if ($index + tabConnectors().length === activeItemIndex()) {\n <ng-container *polymorpheusOutlet=\"tab.value as text\">{{ text }}</ng-container>\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, inject, InjectionToken} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {WA_LOCAL_STORAGE, WA_LOCATION} from '@ng-web-apis/common';\nimport {TuiDataList} from '@taiga-ui/core/components/data-list';\nimport {TuiTextfield} from '@taiga-ui/core/components/textfield';\nimport {TuiSelect} from '@taiga-ui/kit/components/select';\nimport {TuiChevron} from '@taiga-ui/kit/directives/chevron';\n\nexport const TUI_THEME_KEY = new InjectionToken(ngDevMode ? 'TUI_THEME_KEY' : '', {\n factory: () => 'data-tui-theme',\n});\n\nexport const TUI_THEME = new InjectionToken(ngDevMode ? 'TUI_THEME' : '', {\n factory: () => inject(WA_LOCAL_STORAGE)?.getItem(inject(TUI_THEME_KEY)) || 'Taiga UI',\n});\n\nexport const TUI_THEMES = new InjectionToken<Record<string, string>>(\n ngDevMode ? 'TUI_THEMES' : '',\n {factory: () => ({})},\n);\n\n@Component({\n selector: 'tui-doc-theme-switcher',\n imports: [FormsModule, TuiChevron, TuiDataList, TuiSelect, TuiTextfield],\n templateUrl: './theme-switcher.template.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiDocThemeSwitcher {\n private readonly storage = inject(WA_LOCAL_STORAGE);\n private readonly key = inject(TUI_THEME_KEY);\n private readonly location = inject(WA_LOCATION);\n protected readonly theme = inject(TUI_THEME);\n protected readonly themes = inject(TUI_THEMES);\n protected readonly keys = Object.keys(this.themes);\n\n constructor() {\n inject(DOCUMENT).documentElement.setAttribute(this.key, this.theme);\n }\n\n public onTheme(theme: string): void {\n this.storage?.setItem(this.key, theme);\n this.location.reload();\n }\n}\n","<tui-textfield\n tuiChevron\n [tuiTextfieldCleaner]=\"false\"\n>\n <label tuiLabel>\n <ng-content />\n </label>\n <input\n tuiSelect\n [ngModel]=\"theme\"\n (ngModelChange)=\"onTheme($event)\"\n />\n <tui-data-list *tuiDropdown>\n @for (key of keys; track key) {\n <button\n tuiOption\n type=\"button\"\n [value]=\"key\"\n >\n <img\n alt=\"\"\n [src]=\"themes[key]\"\n [style.margin-inline-end.rem]=\"0.5\"\n [style.width.rem]=\"1.75\"\n />\n {{ key }}\n </button>\n }\n </tui-data-list>\n</tui-textfield>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4","i5","i6","i8","i1","i2","i3","i7"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-addon-doc-utils.mjs","sources":["../../../projects/addon-doc/utils/clean-object.ts","../../../projects/addon-doc/utils/coerce-boolean.ts","../../../projects/addon-doc/utils/coerce-value.ts","../../../projects/addon-doc/utils/inspect.ts","../../../projects/addon-doc/utils/is-page-group.ts","../../../projects/addon-doc/utils/parse-code-block.ts","../../../projects/addon-doc/utils/provide-route-page-tab.ts","../../../projects/addon-doc/utils/raw-load.ts","../../../projects/addon-doc/utils/raw-load-record.ts","../../../projects/addon-doc/utils/sort-pages.ts","../../../projects/addon-doc/utils/to-flat-map-pages.ts","../../../projects/addon-doc/utils/to-kebab.ts","../../../projects/addon-doc/utils/transliterate-keyboard-layout.ts","../../../projects/addon-doc/utils/type-reference-parser.ts","../../../projects/addon-doc/utils/taiga-ui-addon-doc-utils.ts"],"sourcesContent":["import {tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport type TuiDeepPartial<T> = {\n [K in keyof T]?: T[K] extends object ? TuiDeepPartial<T[K]> : T[K];\n};\n\ntype EmptyValue = '' | null | undefined;\n\nfunction checkValueIsEmpty<T>(value: EmptyValue | T): value is EmptyValue {\n return tuiIsString(value)\n ? value.trim() === ''\n : value == null || Number.isNaN(value);\n}\n\nexport function tuiCleanObject<T>(object: T): TuiDeepPartial<T> {\n return JSON.parse(\n JSON.stringify(object, (_key: string, value: unknown) =>\n checkValueIsEmpty(value) ? undefined : value,\n ),\n );\n}\n","export function tuiCoerceValueIsTrue(value?: boolean | string): boolean {\n return value?.toString() === 'true';\n}\n","function isEmptyParamValue(value: string): boolean {\n return ['NaN', 'null', 'undefined'].includes(value);\n}\n\nfunction isBooleanParamValue(value: unknown): value is boolean {\n return value === 'true' || value === 'false';\n}\n\nfunction isNumberParamValue(value: unknown): value is boolean {\n return (\n !!String(value).trim() &&\n !Number.isNaN(Number(value)) &&\n !String(value).startsWith('+')\n );\n}\n\nfunction isPossibleArray(value: string): boolean {\n return value.startsWith('[') && value.endsWith(']');\n}\n\nfunction isPossibleObject(value: string): boolean {\n return value.startsWith('{') && value.endsWith('}');\n}\n\nexport function tuiCoerceValue<T>(\n value?: T,\n): Record<string, unknown> | T | boolean | number | string | null {\n const prepared = String(value).trim();\n\n if (isEmptyParamValue(prepared)) {\n return null;\n }\n\n if (isBooleanParamValue(prepared)) {\n return String(prepared) === 'true';\n }\n\n if (isNumberParamValue(prepared)) {\n return Number(prepared);\n }\n\n if (prepared === '%') {\n // https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#exceptions\n return prepared;\n }\n\n const decodedValue = decodeURIComponent(prepared);\n\n try {\n return isPossibleArray(decodedValue) || isPossibleObject(decodedValue)\n ? JSON.parse(decodedValue)\n : decodedValue;\n } catch {\n return decodedValue;\n }\n}\n","function inspectArray(array: readonly unknown[], depth: number): string {\n if (depth === 0) {\n return '[…]';\n }\n\n let result = '';\n let first = true;\n\n for (let index = 0; index < array.length; index++) {\n if (first) {\n first = false;\n } else {\n result += ', ';\n }\n\n result += index in array ? tuiInspect(array[index], depth - 1) : 'empty';\n }\n\n return `[${result}]`;\n}\n\nfunction inspectObject(object: Record<string, unknown>, depth: number): string {\n if (depth === 0) {\n return '{…}';\n }\n\n let result = '';\n\n let first = true;\n\n for (const key in object) {\n if (!object.hasOwnProperty(key)) {\n continue;\n }\n\n if (first) {\n first = false;\n } else {\n result += ', ';\n }\n\n result += `${key}: ${tuiInspect(object[key], depth - 1)}`;\n }\n\n return `{${result}}`;\n}\n\n/**\n * Returns readable JS entity\n * @param data\n * @param depth\n * @return readable JS entity\n */\nexport function tuiInspect<T>(data: T, depth: number): string {\n if (data === null) {\n return 'null';\n }\n\n switch (typeof data) {\n case 'boolean':\n case 'function':\n case 'number':\n case 'undefined':\n return String(data);\n case 'string':\n return `'${data}'`;\n default:\n break;\n }\n\n if (data instanceof RegExp) {\n return String(data);\n }\n\n if (Array.isArray(data)) {\n return inspectArray(data, depth);\n }\n\n return inspectObject(data as unknown as Record<string, unknown>, depth);\n}\n","import {type TuiDocRoutePage, type TuiDocRoutePageGroup} from '@taiga-ui/addon-doc/types';\n\nexport function tuiIsRoutePageGroup(\n page: TuiDocRoutePage | TuiDocRoutePageGroup,\n): page is TuiDocRoutePageGroup {\n return 'subPages' in page;\n}\n","import MarkdownIt from 'markdown-it';\n\nexport function tuiTryParseMarkdownCodeBlock(text = ''): string[] {\n const tokens = new MarkdownIt().parse(text, {});\n const result = tokens\n .filter(({tag, type}) => tag === 'code' && type === 'fence')\n .map(({content}) => content.trim());\n\n return result.length ? result : [text];\n}\n","import {type Type} from '@angular/core';\nimport {type DefaultExport, type LoadChildren, type Route} from '@angular/router';\nimport {type Observable} from 'rxjs';\n\ninterface Options {\n path?: string;\n title?: string;\n loadComponent?():\n | Observable<DefaultExport<Type<unknown>> | Type<unknown>>\n | Promise<DefaultExport<Type<unknown>> | Type<unknown>>\n | Type<unknown>;\n loadChildren?: LoadChildren;\n}\n\nexport function tuiProvideRoutePageTab({\n path,\n title,\n loadComponent,\n loadChildren,\n}: Options = {}): Route {\n return {\n path: path?.replace(/^\\//, ''), // Error: NG04014: Invalid configuration of route: path cannot start with a slash\n loadComponent,\n loadChildren,\n data: {title},\n ...(!loadChildren && path !== ''\n ? {children: [{path: ':tab', loadComponent}]}\n : {}),\n };\n}\n","import {type TuiRawLoaderContent} from '@taiga-ui/addon-doc/types';\n\nexport async function tuiRawLoad(content: TuiRawLoaderContent): Promise<string> {\n return Promise.resolve(content).then((x) =>\n typeof x === 'object' && 'default' in x ? String(x.default) : x,\n );\n}\n","import {type TuiRawLoaderContent} from '@taiga-ui/addon-doc/types';\n\nimport {tuiRawLoad} from './raw-load';\n\nexport async function tuiRawLoadRecord(\n example: Record<string, TuiRawLoaderContent>,\n): Promise<Record<string, string>> {\n const processedContent: Record<string, string> = {};\n\n for (const [key, content] of Object.entries(example)) {\n if (content) {\n processedContent[key] = await tuiRawLoad(content);\n }\n }\n\n return processedContent;\n}\n","import {type TuiDocRoutePage, type TuiDocRoutePageGroup} from '@taiga-ui/addon-doc/types';\n\nimport {tuiIsRoutePageGroup} from './is-page-group';\n\nexport function tuiSortPages<T extends TuiDocRoutePage | TuiDocRoutePageGroup>(\n pages: readonly T[],\n excludeSections = new Set<string>(),\n): readonly T[] {\n const sections = Array.from(new Set(pages.map((page) => page.section)));\n\n const sortedPages = pages.slice().sort((a, b) => {\n if (\n excludeSections.has(a.section ?? '') ||\n excludeSections.has(b.section ?? '')\n ) {\n return 0;\n }\n\n const aSectionIndex = sections.indexOf(a.section);\n const bSectionIndex = sections.indexOf(b.section);\n\n if (aSectionIndex !== bSectionIndex) {\n return aSectionIndex - bSectionIndex;\n }\n\n if (a.title > b.title) {\n return 1;\n }\n\n return a.title.localeCompare(b.title);\n });\n\n return sortedPages.map((page) =>\n tuiIsRoutePageGroup(page)\n ? {\n ...page,\n subPages: tuiSortPages(page.subPages, excludeSections),\n }\n : page,\n );\n}\n","import {type TuiDocRoutePage, type TuiDocRoutePages} from '@taiga-ui/addon-doc/types';\n\nfunction assertTitle(page: TuiDocRoutePage, map: Map<string, TuiDocRoutePage>): void {\n if (map.has(page.title) && map.get(page.title)?.route !== page.route) {\n console.error(\n 'Title for page should be unique for prevent inconsistent page names',\n page,\n '<== Collisions between ==>',\n map.get(page.title),\n );\n }\n}\n\nexport function tuiToFlatMapPages(pages: TuiDocRoutePages): Map<string, TuiDocRoutePage> {\n const map = new Map<string, TuiDocRoutePage>();\n\n pages.forEach((page) => {\n if ('subPages' in page) {\n page.subPages.forEach((subPage) => {\n ngDevMode && assertTitle(subPage, map);\n map.set(subPage.title, subPage);\n });\n } else {\n ngDevMode && assertTitle(page, map);\n map.set(page.title, page);\n }\n });\n\n return map;\n}\n","import {Pipe, type PipeTransform} from '@angular/core';\n\nexport function tuiToKebab(str: string): string {\n return str\n .replaceAll(' ', '-')\n .replaceAll(\n /[A-Z]+(?![a-z])|[A-Z]/g,\n ($, ofs) => `${ofs ? '-' : ''}${$.toLowerCase()}`,\n );\n}\n\n@Pipe({name: 'tuiKebab'})\nexport class TuiDocKebabPipe implements PipeTransform {\n public readonly transform = tuiToKebab;\n}\n","const MAP: Record<string, string> = {\n а: 'f',\n б: ',',\n в: 'd',\n г: 'u',\n д: 'l',\n е: 't',\n ё: '`',\n ж: ';',\n з: 'p',\n и: 'b',\n й: 'q',\n к: 'r',\n л: 'k',\n м: 'v',\n н: 'y',\n о: 'j',\n п: 'g',\n р: 'h',\n с: 'c',\n т: 'n',\n у: 'e',\n ф: 'a',\n х: '[',\n ц: 'w',\n ч: 'x',\n ш: 'i',\n щ: 'o',\n ъ: ']',\n ы: 's',\n ь: 'm',\n ю: '.',\n я: 'z',\n};\n\n/**\n * Translates text mistakenly typed in the Russian layout into English\n * @param string string with Russian layout characters\n * @return string with English layout characters\n */\nexport function tuiTransliterateKeyboardLayout(string: string): string {\n let newStr = '';\n\n for (let i = 0; i < string.length; i++) {\n newStr += string.charAt(i) in MAP ? MAP[string.charAt(i)] : string.charAt(i);\n }\n\n return newStr;\n}\n","export type TuiDocTypeReferenceParsed = ReadonlyArray<{type: string; extracted: string}>;\n\nexport function tuiTypeReferenceParser(types: string): TuiDocTypeReferenceParsed {\n const generics = types.match(/<[^>]+>/g);\n\n const escaped = generics\n ? generics\n .reduce(\n (result, current) =>\n result.replace(current, current.replaceAll('|', '&')),\n types,\n )\n .split('|')\n .map((item) => item.trim())\n : types.split('|').map((item) => item.trim());\n\n return escaped.reduce<TuiDocTypeReferenceParsed>((result, type) => {\n let extracted = type.trim().replaceAll('readonly ', '').replaceAll('[]', '');\n\n extracted =\n /ReadonlyArray<([^>]+)>/.exec(extracted)?.[1]?.split('&')?.[0] ?? extracted;\n extracted = /\\[([^\\]]+)\\]/.exec(extracted)?.[1]?.split(',')?.[0] ?? extracted;\n extracted = (extracted.split('<')?.[0] ?? extracted)?.trim() ?? '';\n extracted = Number.isNaN(Number.parseFloat(extracted)) ? extracted : 'number';\n extracted = /^'.+'$|^\".+\"$|^`.+`$/.test(extracted) ? 'string' : extracted;\n extracted = extracted.length === 1 ? 'unknown' : extracted;\n\n return result.concat({type: type.replaceAll('&', '|'), extracted});\n }, []);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-addon-doc-utils.mjs","sources":["../../../projects/addon-doc/utils/clean-object.ts","../../../projects/addon-doc/utils/coerce-boolean.ts","../../../projects/addon-doc/utils/coerce-value.ts","../../../projects/addon-doc/utils/inspect.ts","../../../projects/addon-doc/utils/is-page-group.ts","../../../projects/addon-doc/utils/parse-code-block.ts","../../../projects/addon-doc/utils/provide-route-page-tab.ts","../../../projects/addon-doc/utils/raw-load.ts","../../../projects/addon-doc/utils/raw-load-record.ts","../../../projects/addon-doc/utils/sort-pages.ts","../../../projects/addon-doc/utils/to-flat-map-pages.ts","../../../projects/addon-doc/utils/to-kebab.ts","../../../projects/addon-doc/utils/transliterate-keyboard-layout.ts","../../../projects/addon-doc/utils/type-reference-parser.ts","../../../projects/addon-doc/utils/taiga-ui-addon-doc-utils.ts"],"sourcesContent":["import {tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport type TuiDeepPartial<T> = {\n [K in keyof T]?: T[K] extends object ? TuiDeepPartial<T[K]> : T[K];\n};\n\ntype EmptyValue = '' | null | undefined;\n\nfunction checkValueIsEmpty<T>(value: EmptyValue | T): value is EmptyValue {\n return tuiIsString(value)\n ? value.trim() === ''\n : value == null || Number.isNaN(value);\n}\n\nexport function tuiCleanObject<T>(object: T): TuiDeepPartial<T> {\n return JSON.parse(\n JSON.stringify(object, (_key: string, value: unknown) =>\n checkValueIsEmpty(value) ? undefined : value,\n ),\n );\n}\n","export function tuiCoerceValueIsTrue(value?: boolean | string): boolean {\n return value?.toString() === 'true';\n}\n","function isEmptyParamValue(value: string): boolean {\n return ['NaN', 'null', 'undefined'].includes(value);\n}\n\nfunction isBooleanParamValue(value: unknown): value is boolean {\n return value === 'true' || value === 'false';\n}\n\nfunction isNumberParamValue(value: unknown): value is boolean {\n return (\n !!String(value).trim() &&\n !Number.isNaN(Number(value)) &&\n !String(value).startsWith('+')\n );\n}\n\nfunction isPossibleArray(value: string): boolean {\n return value.startsWith('[') && value.endsWith(']');\n}\n\nfunction isPossibleObject(value: string): boolean {\n return value.startsWith('{') && value.endsWith('}');\n}\n\nexport function tuiCoerceValue<T>(\n value?: T,\n): Record<string, unknown> | T | boolean | number | string | null {\n const prepared = String(value).trim();\n\n if (isEmptyParamValue(prepared)) {\n return null;\n }\n\n if (isBooleanParamValue(prepared)) {\n return String(prepared) === 'true';\n }\n\n if (isNumberParamValue(prepared)) {\n return Number(prepared);\n }\n\n if (prepared === '%') {\n // https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#exceptions\n return prepared;\n }\n\n const decodedValue = decodeURIComponent(prepared);\n\n try {\n return isPossibleArray(decodedValue) || isPossibleObject(decodedValue)\n ? JSON.parse(decodedValue)\n : decodedValue;\n } catch {\n return decodedValue;\n }\n}\n","function inspectArray(array: readonly unknown[], depth: number): string {\n if (depth === 0) {\n return '[…]';\n }\n\n let result = '';\n let first = true;\n\n for (let index = 0; index < array.length; index++) {\n if (first) {\n first = false;\n } else {\n result += ', ';\n }\n\n result += index in array ? tuiInspect(array[index], depth - 1) : 'empty';\n }\n\n return `[${result}]`;\n}\n\nfunction inspectObject(object: Record<string, unknown>, depth: number): string {\n if (depth === 0) {\n return '{…}';\n }\n\n let result = '';\n let first = true;\n\n for (const key in object) {\n if (!object.hasOwnProperty(key)) {\n continue;\n }\n\n if (first) {\n first = false;\n } else {\n result += ', ';\n }\n\n result += `${key}: ${tuiInspect(object[key], depth - 1)}`;\n }\n\n return `{${result}}`;\n}\n\n/**\n * Returns readable JS entity\n * @param data\n * @param depth\n * @return readable JS entity\n */\nexport function tuiInspect<T>(data: T, depth: number): string {\n if (data === null) {\n return 'null';\n }\n\n switch (typeof data) {\n case 'boolean':\n case 'function':\n case 'number':\n case 'undefined':\n return String(data);\n case 'string':\n return `'${data}'`;\n default:\n break;\n }\n\n if (data instanceof RegExp) {\n return String(data);\n }\n\n if (Array.isArray(data)) {\n return inspectArray(data, depth);\n }\n\n return inspectObject(data as unknown as Record<string, unknown>, depth);\n}\n","import {type TuiDocRoutePage, type TuiDocRoutePageGroup} from '@taiga-ui/addon-doc/types';\n\nexport function tuiIsRoutePageGroup(\n page: TuiDocRoutePage | TuiDocRoutePageGroup,\n): page is TuiDocRoutePageGroup {\n return 'subPages' in page;\n}\n","import MarkdownIt from 'markdown-it';\n\nexport function tuiTryParseMarkdownCodeBlock(text = ''): string[] {\n const tokens = new MarkdownIt().parse(text, {});\n\n const result = tokens\n .filter(({tag, type}) => tag === 'code' && type === 'fence')\n .map(({content}) => content.trim());\n\n return result.length ? result : [text];\n}\n","import {type Type} from '@angular/core';\nimport {type DefaultExport, type LoadChildren, type Route} from '@angular/router';\nimport {type Observable} from 'rxjs';\n\ninterface Options {\n path?: string;\n title?: string;\n loadComponent?():\n | Observable<DefaultExport<Type<unknown>> | Type<unknown>>\n | Promise<DefaultExport<Type<unknown>> | Type<unknown>>\n | Type<unknown>;\n loadChildren?: LoadChildren;\n}\n\nexport function tuiProvideRoutePageTab({\n path,\n title,\n loadComponent,\n loadChildren,\n}: Options = {}): Route {\n return {\n path: path?.replace(/^\\//, ''), // Error: NG04014: Invalid configuration of route: path cannot start with a slash\n loadComponent,\n loadChildren,\n data: {title},\n ...(!loadChildren && path !== ''\n ? {children: [{path: ':tab', loadComponent}]}\n : {}),\n };\n}\n","import {type TuiRawLoaderContent} from '@taiga-ui/addon-doc/types';\n\nexport async function tuiRawLoad(content: TuiRawLoaderContent): Promise<string> {\n return Promise.resolve(content).then((x) =>\n typeof x === 'object' && 'default' in x ? String(x.default) : x,\n );\n}\n","import {type TuiRawLoaderContent} from '@taiga-ui/addon-doc/types';\n\nimport {tuiRawLoad} from './raw-load';\n\nexport async function tuiRawLoadRecord(\n example: Record<string, TuiRawLoaderContent>,\n): Promise<Record<string, string>> {\n const processedContent: Record<string, string> = {};\n\n for (const [key, content] of Object.entries(example)) {\n if (content) {\n processedContent[key] = await tuiRawLoad(content);\n }\n }\n\n return processedContent;\n}\n","import {type TuiDocRoutePage, type TuiDocRoutePageGroup} from '@taiga-ui/addon-doc/types';\n\nimport {tuiIsRoutePageGroup} from './is-page-group';\n\nexport function tuiSortPages<T extends TuiDocRoutePage | TuiDocRoutePageGroup>(\n pages: readonly T[],\n excludeSections = new Set<string>(),\n): readonly T[] {\n const sections = Array.from(new Set(pages.map((page) => page.section)));\n\n const sortedPages = pages.slice().sort((a, b) => {\n if (\n excludeSections.has(a.section ?? '') ||\n excludeSections.has(b.section ?? '')\n ) {\n return 0;\n }\n\n const aSectionIndex = sections.indexOf(a.section);\n const bSectionIndex = sections.indexOf(b.section);\n\n if (aSectionIndex !== bSectionIndex) {\n return aSectionIndex - bSectionIndex;\n }\n\n if (a.title > b.title) {\n return 1;\n }\n\n return a.title.localeCompare(b.title);\n });\n\n return sortedPages.map((page) =>\n tuiIsRoutePageGroup(page)\n ? {\n ...page,\n subPages: tuiSortPages(page.subPages, excludeSections),\n }\n : page,\n );\n}\n","import {type TuiDocRoutePage, type TuiDocRoutePages} from '@taiga-ui/addon-doc/types';\n\nfunction assertTitle(page: TuiDocRoutePage, map: Map<string, TuiDocRoutePage>): void {\n if (map.has(page.title) && map.get(page.title)?.route !== page.route) {\n console.error(\n 'Title for page should be unique for prevent inconsistent page names',\n page,\n '<== Collisions between ==>',\n map.get(page.title),\n );\n }\n}\n\nexport function tuiToFlatMapPages(pages: TuiDocRoutePages): Map<string, TuiDocRoutePage> {\n const map = new Map<string, TuiDocRoutePage>();\n\n pages.forEach((page) => {\n if ('subPages' in page) {\n page.subPages.forEach((subPage) => {\n ngDevMode && assertTitle(subPage, map);\n map.set(subPage.title, subPage);\n });\n } else {\n ngDevMode && assertTitle(page, map);\n map.set(page.title, page);\n }\n });\n\n return map;\n}\n","import {Pipe, type PipeTransform} from '@angular/core';\n\nexport function tuiToKebab(str: string): string {\n return str\n .replaceAll(' ', '-')\n .replaceAll(\n /[A-Z]+(?![a-z])|[A-Z]/g,\n ($, ofs) => `${ofs ? '-' : ''}${$.toLowerCase()}`,\n );\n}\n\n@Pipe({name: 'tuiKebab'})\nexport class TuiDocKebabPipe implements PipeTransform {\n public readonly transform = tuiToKebab;\n}\n","const MAP: Record<string, string> = {\n а: 'f',\n б: ',',\n в: 'd',\n г: 'u',\n д: 'l',\n е: 't',\n ё: '`',\n ж: ';',\n з: 'p',\n и: 'b',\n й: 'q',\n к: 'r',\n л: 'k',\n м: 'v',\n н: 'y',\n о: 'j',\n п: 'g',\n р: 'h',\n с: 'c',\n т: 'n',\n у: 'e',\n ф: 'a',\n х: '[',\n ц: 'w',\n ч: 'x',\n ш: 'i',\n щ: 'o',\n ъ: ']',\n ы: 's',\n ь: 'm',\n ю: '.',\n я: 'z',\n};\n\n/**\n * Translates text mistakenly typed in the Russian layout into English\n * @param string string with Russian layout characters\n * @return string with English layout characters\n */\nexport function tuiTransliterateKeyboardLayout(string: string): string {\n let newStr = '';\n\n for (let i = 0; i < string.length; i++) {\n newStr += string.charAt(i) in MAP ? MAP[string.charAt(i)] : string.charAt(i);\n }\n\n return newStr;\n}\n","export type TuiDocTypeReferenceParsed = ReadonlyArray<{type: string; extracted: string}>;\n\nexport function tuiTypeReferenceParser(types: string): TuiDocTypeReferenceParsed {\n const generics = types.match(/<[^>]+>/g);\n\n const escaped = generics\n ? generics\n .reduce(\n (result, current) =>\n result.replace(current, current.replaceAll('|', '&')),\n types,\n )\n .split('|')\n .map((item) => item.trim())\n : types.split('|').map((item) => item.trim());\n\n return escaped.reduce<TuiDocTypeReferenceParsed>((result, type) => {\n let extracted = type.trim().replaceAll('readonly ', '').replaceAll('[]', '');\n\n extracted =\n /ReadonlyArray<([^>]+)>/.exec(extracted)?.[1]?.split('&')?.[0] ?? extracted;\n extracted = /\\[([^\\]]+)\\]/.exec(extracted)?.[1]?.split(',')?.[0] ?? extracted;\n extracted = (extracted.split('<')?.[0] ?? extracted)?.trim() ?? '';\n extracted = Number.isNaN(Number.parseFloat(extracted)) ? extracted : 'number';\n extracted = /^'.+'$|^\".+\"$|^`.+`$/.test(extracted) ? 'string' : extracted;\n extracted = extracted.length === 1 ? 'unknown' : extracted;\n\n return result.concat({type: type.replaceAll('&', '|'), extracted});\n }, []);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taiga-ui/addon-doc",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.5.0-canary.d684136",
|
|
4
4
|
"description": "Taiga UI based library for developing documentation portals for Angular libraries.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"angular",
|
|
@@ -38,10 +38,10 @@
|
|
|
38
38
|
"@angular/router": ">=19.0.0",
|
|
39
39
|
"@ng-web-apis/common": "^5.2.0",
|
|
40
40
|
"@ng-web-apis/platform": "^5.2.0",
|
|
41
|
-
"@taiga-ui/cdk": "5.
|
|
42
|
-
"@taiga-ui/core": "5.
|
|
43
|
-
"@taiga-ui/kit": "5.
|
|
44
|
-
"@taiga-ui/legacy": "5.
|
|
41
|
+
"@taiga-ui/cdk": "5.5.0",
|
|
42
|
+
"@taiga-ui/core": "5.5.0",
|
|
43
|
+
"@taiga-ui/kit": "5.5.0",
|
|
44
|
+
"@taiga-ui/legacy": "5.5.0",
|
|
45
45
|
"@taiga-ui/polymorpheus": "^5.0.0",
|
|
46
46
|
"@types/markdown-it": "^14.1.2",
|
|
47
47
|
"markdown-it": "^14.1.1",
|
|
@@ -57,17 +57,17 @@
|
|
|
57
57
|
"types": "./index.d.ts",
|
|
58
58
|
"default": "./fesm2022/taiga-ui-addon-doc.mjs"
|
|
59
59
|
},
|
|
60
|
-
"./
|
|
61
|
-
"types": "./
|
|
62
|
-
"default": "./fesm2022/taiga-ui-addon-doc-
|
|
60
|
+
"./tokens": {
|
|
61
|
+
"types": "./tokens/index.d.ts",
|
|
62
|
+
"default": "./fesm2022/taiga-ui-addon-doc-tokens.mjs"
|
|
63
63
|
},
|
|
64
64
|
"./services": {
|
|
65
65
|
"types": "./services/index.d.ts",
|
|
66
66
|
"default": "./fesm2022/taiga-ui-addon-doc-services.mjs"
|
|
67
67
|
},
|
|
68
|
-
"./
|
|
69
|
-
"types": "./
|
|
70
|
-
"default": "./fesm2022/taiga-ui-addon-doc-
|
|
68
|
+
"./components": {
|
|
69
|
+
"types": "./components/index.d.ts",
|
|
70
|
+
"default": "./fesm2022/taiga-ui-addon-doc-components.mjs"
|
|
71
71
|
},
|
|
72
72
|
"./types": {
|
|
73
73
|
"types": "./types/index.d.ts",
|