@ng-doc/app 16.6.6 → 16.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/code/code.component.d.ts +2 -2
- package/components/index.d.ts +1 -0
- package/components/tabs/index.d.ts +1 -0
- package/components/tabs/tabs.component.d.ts +9 -0
- package/esm2022/components/code/code.component.mjs +5 -5
- package/esm2022/components/demo/demo.component.mjs +2 -2
- package/esm2022/components/demo-displayer/demo-displayer.component.mjs +2 -2
- package/esm2022/components/demo-pane/demo-pane.component.mjs +2 -2
- package/esm2022/components/index.mjs +2 -1
- package/esm2022/components/page/page.component.mjs +6 -5
- package/esm2022/components/playground/playground-properties/playground-properties.component.mjs +5 -5
- package/esm2022/components/search/search.component.mjs +5 -5
- package/esm2022/components/tabs/index.mjs +2 -0
- package/esm2022/components/tabs/ng-doc-app-components-tabs.mjs +5 -0
- package/esm2022/components/tabs/tabs.component.mjs +34 -0
- package/esm2022/interfaces/index.mjs +2 -1
- package/esm2022/interfaces/processor-options.mjs +1 -1
- package/esm2022/interfaces/tab.mjs +2 -0
- package/esm2022/processors/code-processor/code-processor.directive.mjs +2 -2
- package/esm2022/processors/html-processor/html-processor.directive.mjs +16 -13
- package/esm2022/processors/index.mjs +2 -1
- package/esm2022/processors/tabs-processor/index.mjs +2 -0
- package/esm2022/processors/tabs-processor/ng-doc-app-processors-tabs-processor.mjs +5 -0
- package/esm2022/processors/tabs-processor/tabs-processor.directive.mjs +44 -0
- package/fesm2022/ng-doc-app-components-code.mjs +4 -4
- package/fesm2022/ng-doc-app-components-code.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-demo-displayer.mjs +1 -1
- package/fesm2022/ng-doc-app-components-demo-displayer.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-demo-pane.mjs +1 -1
- package/fesm2022/ng-doc-app-components-demo-pane.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-demo.mjs +1 -1
- package/fesm2022/ng-doc-app-components-demo.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-page.mjs +5 -4
- package/fesm2022/ng-doc-app-components-page.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-playground.mjs +4 -4
- package/fesm2022/ng-doc-app-components-playground.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-search.mjs +4 -4
- package/fesm2022/ng-doc-app-components-search.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-tabs.mjs +40 -0
- package/fesm2022/ng-doc-app-components-tabs.mjs.map +1 -0
- package/fesm2022/ng-doc-app-components.mjs +1 -0
- package/fesm2022/ng-doc-app-components.mjs.map +1 -1
- package/fesm2022/ng-doc-app-processors-code-processor.mjs +1 -1
- package/fesm2022/ng-doc-app-processors-code-processor.mjs.map +1 -1
- package/fesm2022/ng-doc-app-processors-html-processor.mjs +15 -12
- package/fesm2022/ng-doc-app-processors-html-processor.mjs.map +1 -1
- package/fesm2022/ng-doc-app-processors-tabs-processor.mjs +50 -0
- package/fesm2022/ng-doc-app-processors-tabs-processor.mjs.map +1 -0
- package/fesm2022/ng-doc-app-processors.mjs +1 -0
- package/fesm2022/ng-doc-app-processors.mjs.map +1 -1
- package/interfaces/index.d.ts +1 -0
- package/interfaces/processor-options.d.ts +1 -0
- package/interfaces/tab.d.ts +5 -0
- package/package.json +15 -3
- package/processors/html-processor/html-processor.directive.d.ts +1 -1
- package/processors/index.d.ts +1 -0
- package/processors/tabs-processor/index.d.ts +1 -0
- package/processors/tabs-processor/tabs-processor.directive.d.ts +15 -0
- package/styles/global.css +4 -0
- package/styles/main.css +4 -0
|
@@ -6,7 +6,7 @@ import { FormsModule } from '@angular/forms';
|
|
|
6
6
|
import * as i1$1 from '@ng-doc/app/classes/root-page';
|
|
7
7
|
import { extractValue } from '@ng-doc/core/helpers/extract-value';
|
|
8
8
|
import { objectKeys } from '@ng-doc/core/helpers/object-keys';
|
|
9
|
-
import { NgDocLabelComponent, NgDocTooltipDirective, NgDocTextComponent, NgDocButtonComponent, NgDocCheckboxComponent, NgDocIconComponent, NgDocTextRightDirective, NgDocBindPipe,
|
|
9
|
+
import { NgDocLabelComponent, NgDocTooltipDirective, NgDocTextComponent, NgDocButtonComponent, NgDocCheckboxComponent, NgDocIconComponent, NgDocTextRightDirective, NgDocBindPipe, NgDocExecutePipe, NgDocAsArrayPipe } from '@ng-doc/ui-kit';
|
|
10
10
|
import { __decorate, __metadata } from 'tslib';
|
|
11
11
|
import { NgDocDemoDisplayerComponent } from '@ng-doc/app/components/demo-displayer';
|
|
12
12
|
import { getPlaygroundDemoToken, formatHtml, isPlaygroundProperty, getTokenForType } from '@ng-doc/app/helpers';
|
|
@@ -282,7 +282,7 @@ class NgDocPlaygroundPropertiesComponent {
|
|
|
282
282
|
return undefined;
|
|
283
283
|
}
|
|
284
284
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgDocPlaygroundPropertiesComponent, deps: [{ token: i1.BreakpointObserver }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
285
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgDocPlaygroundPropertiesComponent, isStandalone: true, selector: "ng-doc-playground-properties", inputs: { form: "form", properties: "properties", dynamicContent: "dynamicContent", recreateDemo: "recreateDemo" }, outputs: { recreateDemoChange: "recreateDemoChange", resetForm: "resetForm" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"ng-doc-playground-properties-wrapper\" [class.vertical]=\"observer | async\">\n\t<div class=\"ng-doc-playground-demos\">\n\t\t<ng-content></ng-content>\n\t</div>\n\t<div class=\"ng-doc-playground-properties\">\n\t\t<div class=\"ng-doc-playground-header\">\n\t\t\t<h4 ng-doc-text>Playground</h4>\n\t\t\t<button ng-doc-button color=\"red\" (click)=\"resetForm.emit()\">Reset</button>\n\t\t</div>\n\t\t<div class=\"ng-doc-playground-setting\">\n\t\t\t<ng-doc-checkbox [(ngModel)]=\"recreateDemo\" (ngModelChange)=\"recreateDemoChange.emit($event)\">\n\t\t\t\t<span\n\t\t\t\t\tng-doc-text\n\t\t\t\t\t[ngDocTooltip]=\"'Recreates demo everytime\\none of the input has changed'\"\n\t\t\t\t\t[positions]=\"['bottom-right', 'left-center']\"\n\t\t\t\t>\n\t\t\t\t\tRecreate\n\t\t\t\t\t<ng-doc-icon icon=\"info\" ngDocTextRight></ng-doc-icon>\n\t\t\t\t</span>\n\t\t\t</ng-doc-checkbox>\n\t\t</div>\n\t\t<div class=\"ng-doc-playground-divider\"></div>\n\t\t<ng-container *ngIf=\"propertyControls.length\">\n\t\t\t<h5 class=\"ng-doc-title\" ng-doc-text>Settings</h5>\n\t\t\t<ng-doc-playground-property\n\t\t\t\t*ngFor=\"let propertyControl of propertyControls\"\n\t\t\t\t[name]=\"propertyControl.property.inputName\"\n\t\t\t\t[property]=\"propertyControl.property\"\n\t\t\t\t[typeControl]=\"propertyControl.typeControl\"\n\t\t\t\t[control]=\"getFormControl |
|
|
285
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgDocPlaygroundPropertiesComponent, isStandalone: true, selector: "ng-doc-playground-properties", inputs: { form: "form", properties: "properties", dynamicContent: "dynamicContent", recreateDemo: "recreateDemo" }, outputs: { recreateDemoChange: "recreateDemoChange", resetForm: "resetForm" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"ng-doc-playground-properties-wrapper\" [class.vertical]=\"observer | async\">\n\t<div class=\"ng-doc-playground-demos\">\n\t\t<ng-content></ng-content>\n\t</div>\n\t<div class=\"ng-doc-playground-properties\">\n\t\t<div class=\"ng-doc-playground-header\">\n\t\t\t<h4 ng-doc-text>Playground</h4>\n\t\t\t<button ng-doc-button color=\"red\" (click)=\"resetForm.emit()\">Reset</button>\n\t\t</div>\n\t\t<div class=\"ng-doc-playground-setting\">\n\t\t\t<ng-doc-checkbox [(ngModel)]=\"recreateDemo\" (ngModelChange)=\"recreateDemoChange.emit($event)\">\n\t\t\t\t<span\n\t\t\t\t\tng-doc-text\n\t\t\t\t\t[ngDocTooltip]=\"'Recreates demo everytime\\none of the input has changed'\"\n\t\t\t\t\t[positions]=\"['bottom-right', 'left-center']\"\n\t\t\t\t>\n\t\t\t\t\tRecreate\n\t\t\t\t\t<ng-doc-icon icon=\"info\" ngDocTextRight></ng-doc-icon>\n\t\t\t\t</span>\n\t\t\t</ng-doc-checkbox>\n\t\t</div>\n\t\t<div class=\"ng-doc-playground-divider\"></div>\n\t\t<ng-container *ngIf=\"propertyControls.length\">\n\t\t\t<h5 class=\"ng-doc-title\" ng-doc-text>Settings</h5>\n\t\t\t<ng-doc-playground-property\n\t\t\t\t*ngFor=\"let propertyControl of propertyControls\"\n\t\t\t\t[name]=\"propertyControl.property.inputName\"\n\t\t\t\t[property]=\"propertyControl.property\"\n\t\t\t\t[typeControl]=\"propertyControl.typeControl\"\n\t\t\t\t[control]=\"getFormControl | bind: this | execute: 'properties': propertyControl.propertyName\"\n\t\t\t>\n\t\t\t</ng-doc-playground-property>\n\t\t</ng-container>\n\n\t\t<ng-container *ngIf=\"(dynamicContent | keyvalue)?.length\">\n\t\t\t<h5 class=\"ng-doc-title\" ng-doc-text>Content</h5>\n\t\t\t<ng-doc-playground-property\n\t\t\t\t*ngFor=\"let content of dynamicContent | keyvalue\"\n\t\t\t\t[name]=\"content.value.label\"\n\t\t\t\t[property]=\"content.value\"\n\t\t\t\t[typeControl]=\"contentTypeControl\"\n\t\t\t\t[control]=\"getFormControl | bind: this | execute: 'content': content.key\"\n\t\t\t>\n\t\t\t</ng-doc-playground-property>\n\t\t</ng-container>\n\t</div>\n</div>\n", styles: [":host .ng-doc-playground-properties-wrapper{position:relative;display:flex}:host .ng-doc-playground-properties-wrapper.vertical{flex-direction:column}:host .ng-doc-playground-properties-wrapper.vertical .ng-doc-playground-demos{margin-right:0;margin-bottom:calc(var(--ng-doc-base-gutter) * 2)}:host .ng-doc-playground-properties-wrapper.vertical .ng-doc-playground-properties{width:100%}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-demos{display:flex;flex-direction:column;width:100%;overflow:hidden;margin-right:calc(var(--ng-doc-base-gutter) * 2)}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-properties{flex-shrink:0;width:300px;padding:calc(var(--ng-doc-base-gutter) * 2) calc(var(--ng-doc-base-gutter) * 3);background-color:var(--ng-doc-base-1);border-radius:var(--ng-doc-base-gutter)}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-properties ng-doc-playground-property:not(:last-child){margin-bottom:calc(var(--ng-doc-base-gutter) * 2)}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-properties .ng-doc-playground-controls{display:flex;justify-content:flex-end}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-properties .ng-doc-playground-header{display:flex;align-items:center;justify-content:space-between;height:40px;margin-bottom:calc(var(--ng-doc-base-gutter) * 2)}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-properties .ng-doc-playground-header h4{margin:0}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-properties .ng-doc-playground-setting{display:flex;flex-direction:column}:host .ng-doc-playground-properties-wrapper .ng-doc-title{margin-top:0;margin-bottom:calc(var(--ng-doc-base-gutter) + var(--ng-doc-base-gutter) / 2)}:host .ng-doc-playground-divider{margin:calc(var(--ng-doc-base-gutter) * 2) 0;height:1px;background-color:var(--ng-doc-base-2)}\n"], dependencies: [{ kind: "component", type: NgDocTextComponent, selector: "[ng-doc-text]", inputs: ["size", "color", "align", "absoluteContent"] }, { kind: "component", type: NgDocButtonComponent, selector: "button[ng-doc-button], a[ng-doc-button], button[ng-doc-button-flat], a[ng-doc-button-flat], button[ng-doc-button-text], a[ng-doc-button-text]", inputs: ["size", "color", "rounded"] }, { kind: "component", type: NgDocCheckboxComponent, selector: "ng-doc-checkbox", inputs: ["color"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgDocTooltipDirective, selector: "[ngDocTooltip]", inputs: ["ngDocTooltip", "delay", "displayOrigin", "pointerOrigin", "positions", "canOpen", "panelClass", "minHeight", "maxHeight", "height", "minWidth", "maxWidth", "width"], outputs: ["beforeOpen", "afterOpen", "beforeClose", "afterClose"], exportAs: ["ngDocTooltip"] }, { kind: "component", type: NgDocIconComponent, selector: "ng-doc-icon", inputs: ["icon", "size"] }, { kind: "directive", type: NgDocTextRightDirective, selector: "[ngDocTextRight]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: NgDocPlaygroundPropertyComponent, selector: "ng-doc-playground-property", inputs: ["name", "property", "typeControl", "control"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: NgDocBindPipe, name: "bind" }, { kind: "pipe", type: NgDocExecutePipe, name: "execute" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
286
286
|
}
|
|
287
287
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgDocPlaygroundPropertiesComponent, decorators: [{
|
|
288
288
|
type: Component,
|
|
@@ -300,8 +300,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
|
300
300
|
AsyncPipe,
|
|
301
301
|
KeyValuePipe,
|
|
302
302
|
NgDocBindPipe,
|
|
303
|
-
|
|
304
|
-
], template: "<div class=\"ng-doc-playground-properties-wrapper\" [class.vertical]=\"observer | async\">\n\t<div class=\"ng-doc-playground-demos\">\n\t\t<ng-content></ng-content>\n\t</div>\n\t<div class=\"ng-doc-playground-properties\">\n\t\t<div class=\"ng-doc-playground-header\">\n\t\t\t<h4 ng-doc-text>Playground</h4>\n\t\t\t<button ng-doc-button color=\"red\" (click)=\"resetForm.emit()\">Reset</button>\n\t\t</div>\n\t\t<div class=\"ng-doc-playground-setting\">\n\t\t\t<ng-doc-checkbox [(ngModel)]=\"recreateDemo\" (ngModelChange)=\"recreateDemoChange.emit($event)\">\n\t\t\t\t<span\n\t\t\t\t\tng-doc-text\n\t\t\t\t\t[ngDocTooltip]=\"'Recreates demo everytime\\none of the input has changed'\"\n\t\t\t\t\t[positions]=\"['bottom-right', 'left-center']\"\n\t\t\t\t>\n\t\t\t\t\tRecreate\n\t\t\t\t\t<ng-doc-icon icon=\"info\" ngDocTextRight></ng-doc-icon>\n\t\t\t\t</span>\n\t\t\t</ng-doc-checkbox>\n\t\t</div>\n\t\t<div class=\"ng-doc-playground-divider\"></div>\n\t\t<ng-container *ngIf=\"propertyControls.length\">\n\t\t\t<h5 class=\"ng-doc-title\" ng-doc-text>Settings</h5>\n\t\t\t<ng-doc-playground-property\n\t\t\t\t*ngFor=\"let propertyControl of propertyControls\"\n\t\t\t\t[name]=\"propertyControl.property.inputName\"\n\t\t\t\t[property]=\"propertyControl.property\"\n\t\t\t\t[typeControl]=\"propertyControl.typeControl\"\n\t\t\t\t[control]=\"getFormControl |
|
|
303
|
+
NgDocExecutePipe,
|
|
304
|
+
], template: "<div class=\"ng-doc-playground-properties-wrapper\" [class.vertical]=\"observer | async\">\n\t<div class=\"ng-doc-playground-demos\">\n\t\t<ng-content></ng-content>\n\t</div>\n\t<div class=\"ng-doc-playground-properties\">\n\t\t<div class=\"ng-doc-playground-header\">\n\t\t\t<h4 ng-doc-text>Playground</h4>\n\t\t\t<button ng-doc-button color=\"red\" (click)=\"resetForm.emit()\">Reset</button>\n\t\t</div>\n\t\t<div class=\"ng-doc-playground-setting\">\n\t\t\t<ng-doc-checkbox [(ngModel)]=\"recreateDemo\" (ngModelChange)=\"recreateDemoChange.emit($event)\">\n\t\t\t\t<span\n\t\t\t\t\tng-doc-text\n\t\t\t\t\t[ngDocTooltip]=\"'Recreates demo everytime\\none of the input has changed'\"\n\t\t\t\t\t[positions]=\"['bottom-right', 'left-center']\"\n\t\t\t\t>\n\t\t\t\t\tRecreate\n\t\t\t\t\t<ng-doc-icon icon=\"info\" ngDocTextRight></ng-doc-icon>\n\t\t\t\t</span>\n\t\t\t</ng-doc-checkbox>\n\t\t</div>\n\t\t<div class=\"ng-doc-playground-divider\"></div>\n\t\t<ng-container *ngIf=\"propertyControls.length\">\n\t\t\t<h5 class=\"ng-doc-title\" ng-doc-text>Settings</h5>\n\t\t\t<ng-doc-playground-property\n\t\t\t\t*ngFor=\"let propertyControl of propertyControls\"\n\t\t\t\t[name]=\"propertyControl.property.inputName\"\n\t\t\t\t[property]=\"propertyControl.property\"\n\t\t\t\t[typeControl]=\"propertyControl.typeControl\"\n\t\t\t\t[control]=\"getFormControl | bind: this | execute: 'properties': propertyControl.propertyName\"\n\t\t\t>\n\t\t\t</ng-doc-playground-property>\n\t\t</ng-container>\n\n\t\t<ng-container *ngIf=\"(dynamicContent | keyvalue)?.length\">\n\t\t\t<h5 class=\"ng-doc-title\" ng-doc-text>Content</h5>\n\t\t\t<ng-doc-playground-property\n\t\t\t\t*ngFor=\"let content of dynamicContent | keyvalue\"\n\t\t\t\t[name]=\"content.value.label\"\n\t\t\t\t[property]=\"content.value\"\n\t\t\t\t[typeControl]=\"contentTypeControl\"\n\t\t\t\t[control]=\"getFormControl | bind: this | execute: 'content': content.key\"\n\t\t\t>\n\t\t\t</ng-doc-playground-property>\n\t\t</ng-container>\n\t</div>\n</div>\n", styles: [":host .ng-doc-playground-properties-wrapper{position:relative;display:flex}:host .ng-doc-playground-properties-wrapper.vertical{flex-direction:column}:host .ng-doc-playground-properties-wrapper.vertical .ng-doc-playground-demos{margin-right:0;margin-bottom:calc(var(--ng-doc-base-gutter) * 2)}:host .ng-doc-playground-properties-wrapper.vertical .ng-doc-playground-properties{width:100%}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-demos{display:flex;flex-direction:column;width:100%;overflow:hidden;margin-right:calc(var(--ng-doc-base-gutter) * 2)}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-properties{flex-shrink:0;width:300px;padding:calc(var(--ng-doc-base-gutter) * 2) calc(var(--ng-doc-base-gutter) * 3);background-color:var(--ng-doc-base-1);border-radius:var(--ng-doc-base-gutter)}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-properties ng-doc-playground-property:not(:last-child){margin-bottom:calc(var(--ng-doc-base-gutter) * 2)}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-properties .ng-doc-playground-controls{display:flex;justify-content:flex-end}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-properties .ng-doc-playground-header{display:flex;align-items:center;justify-content:space-between;height:40px;margin-bottom:calc(var(--ng-doc-base-gutter) * 2)}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-properties .ng-doc-playground-header h4{margin:0}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-properties .ng-doc-playground-setting{display:flex;flex-direction:column}:host .ng-doc-playground-properties-wrapper .ng-doc-title{margin-top:0;margin-bottom:calc(var(--ng-doc-base-gutter) + var(--ng-doc-base-gutter) / 2)}:host .ng-doc-playground-divider{margin:calc(var(--ng-doc-base-gutter) * 2) 0;height:1px;background-color:var(--ng-doc-base-2)}\n"] }]
|
|
305
305
|
}], ctorParameters: function () { return [{ type: i1.BreakpointObserver }, { type: i0.Injector }]; }, propDecorators: { form: [{
|
|
306
306
|
type: Input
|
|
307
307
|
}], properties: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-doc-app-components-playground.mjs","sources":["../../../../libs/app/components/playground/base-playground.ts","../../../../libs/app/components/playground/playground-demo/playground-demo.component.ts","../../../../libs/app/components/playground/playground-demo/playground-demo.component.html","../../../../libs/app/components/playground/playground-property/playground-property.component.ts","../../../../libs/app/components/playground/playground-property/playground-property.component.html","../../../../libs/app/components/playground/playground-properties/playground-properties.component.ts","../../../../libs/app/components/playground/playground-properties/playground-properties.component.html","../../../../libs/app/components/playground/playground.component.ts","../../../../libs/app/components/playground/playground.component.html","../../../../libs/app/components/playground/ng-doc-app-components-playground.ts"],"sourcesContent":["import {Directive, Input, Type, ViewContainerRef} from '@angular/core';\nimport {NgDocPlaygroundConfig} from '@ng-doc/core/interfaces';\n\n/**\n * Base class for playgrounds components.\n */\n@Directive()\nexport abstract class NgDocBasePlayground implements Pick<NgDocPlaygroundConfig, 'data'> {\n\tstatic readonly selector: string = 'unknown';\n\tabstract readonly playground?: Type<unknown>;\n\tabstract readonly viewContainerRef?: ViewContainerRef;\n\n\t@Input()\n\tproperties: Record<string, any> = {};\n\n\t@Input()\n\tdata: Record<string, any> = {};\n\n\t@Input()\n\tcontent: any = {};\n}\n","import {AsyncPipe} from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tComponentRef,\n\tInjectionToken,\n\tInjector,\n\tInput,\n\tOnChanges,\n\tOnDestroy,\n\tSimpleChanges,\n\tType,\n\tViewChild,\n\tViewContainerRef,\n} from '@angular/core';\nimport {FormGroup} from '@angular/forms';\nimport {NgDocDemoDisplayerComponent} from '@ng-doc/app/components/demo-displayer';\nimport {formatHtml, getPlaygroundDemoToken} from '@ng-doc/app/helpers';\nimport {NgDocFormPartialValue} from '@ng-doc/app/types';\nimport {\n\tbuildPlaygroundDemoPipeTemplate,\n\tbuildPlaygroundDemoTemplate,\n} from '@ng-doc/core/helpers/build-playground-demo-template';\nimport {objectKeys} from '@ng-doc/core/helpers/object-keys';\nimport {NgDocPlaygroundConfig, NgDocPlaygroundProperties, NgDocPlaygroundProperty} from '@ng-doc/core/interfaces';\nimport {NgDocExtractedValue} from '@ng-doc/core/types';\nimport {UntilDestroy, untilDestroyed} from '@ngneat/until-destroy';\nimport {from, Observable, of, Subject} from 'rxjs';\nimport {startWith, takeUntil} from 'rxjs/operators';\n\nimport {NgDocBasePlayground} from '../base-playground';\nimport {NgDocPlaygroundForm} from '../playground-form';\n\n@Component({\n\tselector: 'ng-doc-playground-demo',\n\ttemplateUrl: './playground-demo.component.html',\n\tstyleUrls: ['./playground-demo.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\timports: [NgDocDemoDisplayerComponent, AsyncPipe],\n})\n@UntilDestroy()\nexport class NgDocPlaygroundDemoComponent<T extends NgDocPlaygroundProperties = NgDocPlaygroundProperties>\n\timplements OnChanges, OnDestroy\n{\n\t@Input()\n\tid: string = '';\n\n\t@Input()\n\tpipeName: string = '';\n\n\t@Input()\n\tselector: string = '';\n\n\t@Input()\n\tconfiguration?: NgDocPlaygroundConfig;\n\n\t@Input()\n\tproperties?: T;\n\n\t@Input()\n\trecreateDemo: boolean = false;\n\n\t@Input()\n\tform!: FormGroup<NgDocPlaygroundForm>;\n\n\t@ViewChild('demoOutlet', {static: true, read: ViewContainerRef})\n\tdemoOutlet?: ViewContainerRef;\n\n\tplaygroundDemo?: typeof NgDocBasePlayground;\n\n\tcode: Observable<string> = of('');\n\n\tprivate demoRef?: ComponentRef<NgDocBasePlayground>;\n\tprivate readonly unsubscribe$: Subject<void> = new Subject<void>();\n\n\tconstructor(private readonly injector: Injector) {}\n\n\tngOnChanges({form, id}: SimpleChanges): void {\n\t\tif (form && id) {\n\t\t\tthis.unsubscribe$.next();\n\n\t\t\tconst demoInjector: InjectionToken<Array<typeof NgDocBasePlayground>> | undefined = getPlaygroundDemoToken(\n\t\t\t\tthis.id,\n\t\t\t);\n\n\t\t\tif (demoInjector) {\n\t\t\t\tconst demos: Array<typeof NgDocBasePlayground> = this.injector.get(demoInjector, []);\n\t\t\t\tthis.playgroundDemo = demos.find(\n\t\t\t\t\t(demo: typeof NgDocBasePlayground) => demo.selector === this.selector || demo.selector === this.pipeName,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.updateDemo();\n\n\t\t\tthis.form?.valueChanges\n\t\t\t\t.pipe(takeUntil(this.unsubscribe$), untilDestroyed(this), startWith(this.form?.value))\n\t\t\t\t.subscribe((data: NgDocFormPartialValue<typeof this.form>) => this.updateDemo(data));\n\t\t}\n\t}\n\n\tprivate updateDemo(data?: NgDocFormPartialValue<typeof this.form>): void {\n\t\tif (this.recreateDemo || !this.demoRef) {\n\t\t\tthis.renderDemo();\n\t\t}\n\n\t\tif (data) {\n\t\t\tthis.demoRef?.setInput('properties', data.properties ?? {});\n\t\t\tthis.demoRef?.setInput('content', data.content ?? {});\n\t\t}\n\n\t\tthis.updateCodeView();\n\t}\n\n\tprivate renderDemo(): void {\n\t\tif (this.playgroundDemo) {\n\t\t\tthis.demoRef?.destroy();\n\n\t\t\tif (this.playgroundDemo) {\n\t\t\t\tthis.demoRef = this.demoOutlet?.createComponent(this.playgroundDemo as unknown as Type<NgDocBasePlayground>);\n\t\t\t}\n\n\t\t\tthis.demoRef?.changeDetectorRef.detectChanges();\n\t\t}\n\t}\n\n\tprivate updateCodeView(): void {\n\t\tconst template: string = this.pipeName\n\t\t\t? buildPlaygroundDemoPipeTemplate(\n\t\t\t\t\tthis.configuration?.template ?? '',\n\t\t\t\t\tthis.pipeName,\n\t\t\t\t\tthis.getActiveContent(),\n\t\t\t\t\tthis.getActiveInputs(),\n\t\t\t )\n\t\t\t: buildPlaygroundDemoTemplate(\n\t\t\t\t\tthis.configuration?.template ?? '',\n\t\t\t\t\tthis.selector,\n\t\t\t\t\tthis.getActiveContent(),\n\t\t\t\t\tthis.getActiveInputs(),\n\t\t\t );\n\n\t\tthis.code = from(formatHtml(template));\n\t}\n\n\tprivate getActiveContent(): Record<string, string> {\n\t\tconst formData: Record<string, boolean> = (this.form?.controls.content.value as Record<string, boolean>) ?? {};\n\n\t\treturn objectKeys(formData).reduce((result: Record<string, string>, key: string) => {\n\t\t\tresult[key] = formData[key] ? this.configuration?.content?.[key].template ?? '' : '';\n\n\t\t\treturn result;\n\t\t}, {});\n\t}\n\n\tprivate getActiveInputs(): Record<string, string> {\n\t\tconst formData: Record<string, NgDocExtractedValue> =\n\t\t\t(this.form?.controls.properties.value as Record<string, NgDocExtractedValue>) ?? {};\n\n\t\treturn objectKeys(formData).reduce((result: Record<string, string>, key: string) => {\n\t\t\tconst property: NgDocPlaygroundProperty | undefined = this.properties?.[key];\n\n\t\t\tif (property) {\n\t\t\t\tconst value: NgDocExtractedValue = formData[key];\n\t\t\t\tconst isString: boolean = typeof value === 'string';\n\t\t\t\tconst inputValue: string = isString ? `'${value}'` : `${JSON.stringify(value)}`;\n\n\t\t\t\tif ((property.default ?? '') !== inputValue) {\n\t\t\t\t\tresult[property.inputName] = inputValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}, {});\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.unsubscribe$.next();\n\t\tthis.unsubscribe$.complete();\n\t}\n}\n","<ng-doc-demo-displayer [code]=\"(code | async) ?? ''\" [border]=\"false\" language=\"html\">\n\t<ng-container #demoOutlet></ng-container>\n</ng-doc-demo-displayer>\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tComponentRef,\n\tHostBinding,\n\tInput,\n\tOnChanges,\n\tSimpleChanges,\n\tViewChild,\n\tViewContainerRef,\n} from '@angular/core';\nimport {FormControl} from '@angular/forms';\nimport {isPlaygroundProperty} from '@ng-doc/app/helpers';\nimport {NgDocProvidedTypeControl, NgDocTypeControl, NgDocTypeControlProviderOptions} from '@ng-doc/app/interfaces';\nimport {NgDocSanitizeHtmlPipe} from '@ng-doc/app/pipes';\nimport {NgDocPlaygroundContent, NgDocPlaygroundProperty} from '@ng-doc/core/interfaces';\nimport {NgDocLabelComponent, NgDocTooltipDirective} from '@ng-doc/ui-kit';\n\n@Component({\n\tselector: 'ng-doc-playground-property',\n\ttemplateUrl: './playground-property.component.html',\n\tstyleUrls: ['./playground-property.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\timports: [NgDocLabelComponent, NgDocTooltipDirective, NgDocSanitizeHtmlPipe],\n})\nexport class NgDocPlaygroundPropertyComponent implements OnChanges {\n\t@Input()\n\tname: string = '';\n\n\t@Input()\n\tproperty?: NgDocPlaygroundProperty | NgDocPlaygroundContent;\n\n\t@Input()\n\ttypeControl?: NgDocProvidedTypeControl;\n\n\t@Input()\n\tcontrol?: FormControl;\n\n\t@ViewChild('propertyOutlet', {read: ViewContainerRef, static: true})\n\tpropertyOutlet?: ViewContainerRef;\n\n\tprotected option?: NgDocTypeControlProviderOptions;\n\tprivate propertyTypeControl?: ComponentRef<NgDocTypeControl>;\n\n\tngOnChanges({property, control, typeControl}: SimpleChanges): void {\n\t\tif ((property || control || typeControl) && this.property && this.typeControl) {\n\t\t\tthis.propertyTypeControl?.destroy();\n\t\t\tthis.propertyTypeControl = undefined;\n\n\t\t\tif (this.typeControl && this.propertyOutlet) {\n\t\t\t\tthis.propertyTypeControl = this.propertyOutlet.createComponent(this.typeControl.control);\n\t\t\t\tthis.propertyTypeControl.instance.name = this.name;\n\t\t\t\tthis.propertyTypeControl.instance.description = this.tooltipContent;\n\t\t\t\tthis.propertyTypeControl.instance.options = isPlaygroundProperty(this.property)\n\t\t\t\t\t? this.property.options\n\t\t\t\t\t: undefined;\n\t\t\t\tthis.propertyTypeControl.instance.default = isPlaygroundProperty(this.property)\n\t\t\t\t\t? this.property.default\n\t\t\t\t\t: undefined;\n\t\t\t\tthis.propertyTypeControl.instance.writeValue(this.control?.value);\n\n\t\t\t\tthis.option = this.typeControl.options;\n\t\t\t}\n\t\t}\n\n\t\tif (control) {\n\t\t\tthis.control?.registerOnChange((value: string) => this.propertyTypeControl?.instance?.writeValue(value));\n\t\t\tthis.propertyTypeControl?.instance.registerOnChange((value: unknown) => this.control?.setValue(value));\n\t\t\tthis.propertyTypeControl?.instance.registerOnTouched(() => this.control?.markAsTouched());\n\t\t}\n\t}\n\n\t@HostBinding('attr.data-has-property-control')\n\tget hasPropertyControl(): boolean {\n\t\treturn !!this.propertyTypeControl;\n\t}\n\n\tget tooltipContent(): string {\n\t\treturn this.property && isPlaygroundProperty(this.property) ? this.property.description ?? '' : '';\n\t}\n}\n","<label [ng-doc-label]=\"option?.hideLabel ? '' : labelContent\">\n\t<ng-template #labelContent>\n\t\t<span [ngDocTooltip]=\"tooltipTemplate\" [canOpen]=\"!!tooltipContent\"\n\t\t\t [positions]=\"['left-center', 'top-right', 'bottom-right']\">{{name}}</span>\n\t\t<ng-template #tooltipTemplate>\n\t\t\t<div [innerHTML]=\"tooltipContent | ngDocSanitizeHtml\"></div>\n\t\t</ng-template>\n\t</ng-template>\n\t<ng-container #propertyOutlet></ng-container>\n</label>\n","import {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\nimport {AsyncPipe, KeyValuePipe, NgFor, NgIf} from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tEventEmitter,\n\tInjectionToken,\n\tInjector,\n\tInput,\n\tisDevMode,\n\tOnChanges,\n\tOutput,\n\tSimpleChanges,\n} from '@angular/core';\nimport {FormControl, FormGroup, FormsModule} from '@angular/forms';\nimport {getTokenForType, isPlaygroundProperty} from '@ng-doc/app/helpers';\nimport {NgDocProvidedTypeControl} from '@ng-doc/app/interfaces';\nimport {extractValueOrThrow, isPresent, objectKeys} from '@ng-doc/core';\nimport {NgDocPlaygroundContent, NgDocPlaygroundProperties, NgDocPlaygroundProperty} from '@ng-doc/core/interfaces';\nimport {\n\tNgDocBindPipe,\n\tNgDocButtonComponent,\n\tNgDocCheckboxComponent,\n\tNgDocIconComponent,\n\tNgDocRunPipe,\n\tNgDocTextComponent,\n\tNgDocTextRightDirective,\n\tNgDocTooltipDirective,\n} from '@ng-doc/ui-kit';\nimport {Observable} from 'rxjs';\nimport {pluck} from 'rxjs/operators';\n\nimport {NgDocPlaygroundForm} from '../playground-form';\nimport {NgDocPlaygroundPropertyComponent} from '../playground-property/playground-property.component';\nimport {NgDocPlaygroundPropertyControl} from '../playground-property-control';\n\n@Component({\n\tselector: 'ng-doc-playground-properties',\n\ttemplateUrl: './playground-properties.component.html',\n\tstyleUrls: ['./playground-properties.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\timports: [\n\t\tNgDocTextComponent,\n\t\tNgDocButtonComponent,\n\t\tNgDocCheckboxComponent,\n\t\tFormsModule,\n\t\tNgDocTooltipDirective,\n\t\tNgDocIconComponent,\n\t\tNgDocTextRightDirective,\n\t\tNgIf,\n\t\tNgFor,\n\t\tNgDocPlaygroundPropertyComponent,\n\t\tAsyncPipe,\n\t\tKeyValuePipe,\n\t\tNgDocBindPipe,\n\t\tNgDocRunPipe,\n\t],\n})\nexport class NgDocPlaygroundPropertiesComponent<\n\tP extends NgDocPlaygroundProperties,\n\tC extends Record<string, NgDocPlaygroundContent>,\n> implements OnChanges\n{\n\t@Input()\n\tform!: FormGroup<NgDocPlaygroundForm>;\n\n\t@Input()\n\tproperties?: P;\n\n\t@Input()\n\tdynamicContent?: C;\n\n\t@Input()\n\trecreateDemo: boolean = false;\n\n\t@Output()\n\trecreateDemoChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n\t@Output()\n\tresetForm: EventEmitter<void> = new EventEmitter<void>();\n\n\treadonly breakpoints: string[] = [Breakpoints.XSmall];\n\treadonly observer: Observable<boolean>;\n\n\tprotected propertyControls: NgDocPlaygroundPropertyControl[] = [];\n\tprotected contentTypeControl?: NgDocProvidedTypeControl = this.getControlForType('boolean');\n\n\tconstructor(protected readonly breakpointObserver: BreakpointObserver, private injector: Injector) {\n\t\tthis.observer = this.breakpointObserver.observe(this.breakpoints).pipe(pluck('matches'));\n\t}\n\n\tngOnChanges({properties}: SimpleChanges): void {\n\t\tif (properties && this.properties) {\n\t\t\tthis.propertyControls = objectKeys(this.properties)\n\t\t\t\t.map((key: keyof P) => {\n\t\t\t\t\tif (this.properties) {\n\t\t\t\t\t\tconst property: NgDocPlaygroundProperty = this.properties[key];\n\t\t\t\t\t\tconst typeControl: NgDocProvidedTypeControl | undefined = this.getTypeControl(property);\n\n\t\t\t\t\t\tif (typeControl) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tpropertyName: String(key),\n\t\t\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\t\ttypeControl,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn null;\n\t\t\t\t})\n\t\t\t\t.filter(isPresent)\n\t\t\t\t.sort((a: NgDocPlaygroundPropertyControl, b: NgDocPlaygroundPropertyControl) => {\n\t\t\t\t\tconst aOrder: number | undefined = a.typeControl.options?.order;\n\t\t\t\t\tconst bOrder: number | undefined = b.typeControl.options?.order;\n\n\t\t\t\t\tif (isPresent(aOrder) && isPresent(bOrder)) {\n\t\t\t\t\t\treturn aOrder - bOrder;\n\t\t\t\t\t}\n\t\t\t\t\tif (isPresent(aOrder)) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (isPresent(bOrder)) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn a.property.inputName.localeCompare(b.property.inputName);\n\t\t\t\t});\n\t\t}\n\t}\n\n\tgetFormControl(controlType: keyof typeof this.form.controls, key: string): FormControl {\n\t\treturn this.form.get(controlType)?.get(key) as FormControl;\n\t}\n\n\tprivate getTypeControl(property: NgDocPlaygroundProperty): NgDocProvidedTypeControl | undefined {\n\t\tconst type: string = property.type;\n\t\tconst typeControl: NgDocProvidedTypeControl | undefined =\n\t\t\tthis.getControlForType(type) ??\n\t\t\tthis.getControlForTypeAlias(isPlaygroundProperty(property) ? property.options : undefined);\n\n\t\tif (!typeControl && isDevMode()) {\n\t\t\tconsole.warn(\n\t\t\t\t`NgDocPlayground didn't find the control for the @Input \"${property.inputName}\", the type \"${type}\" was not recognized'`,\n\t\t\t);\n\t\t}\n\n\t\treturn typeControl;\n\t}\n\n\tprivate getControlForType(type: string): NgDocProvidedTypeControl | undefined {\n\t\tconst token: InjectionToken<NgDocProvidedTypeControl> | undefined = getTokenForType(type);\n\n\t\treturn token ? this.injector.get(token) : undefined;\n\t}\n\n\tprivate getControlForTypeAlias(options?: string[]): NgDocProvidedTypeControl | undefined {\n\t\tif (options && options.length) {\n\t\t\tlet optionsIsValid: boolean = true;\n\n\t\t\ttry {\n\t\t\t\t// checking that all values are extractable\n\t\t\t\toptions.forEach((item: string) => extractValueOrThrow(item));\n\t\t\t} catch {\n\t\t\t\toptionsIsValid = false;\n\t\t\t}\n\n\t\t\tif (optionsIsValid) {\n\t\t\t\tconst token: InjectionToken<NgDocProvidedTypeControl> | undefined = getTokenForType('NgDocTypeAlias');\n\n\t\t\t\treturn token ? this.injector.get(token) : undefined;\n\t\t\t}\n\t\t}\n\n\t\treturn undefined;\n\t}\n}\n","<div class=\"ng-doc-playground-properties-wrapper\" [class.vertical]=\"observer | async\">\n\t<div class=\"ng-doc-playground-demos\">\n\t\t<ng-content></ng-content>\n\t</div>\n\t<div class=\"ng-doc-playground-properties\">\n\t\t<div class=\"ng-doc-playground-header\">\n\t\t\t<h4 ng-doc-text>Playground</h4>\n\t\t\t<button ng-doc-button color=\"red\" (click)=\"resetForm.emit()\">Reset</button>\n\t\t</div>\n\t\t<div class=\"ng-doc-playground-setting\">\n\t\t\t<ng-doc-checkbox [(ngModel)]=\"recreateDemo\" (ngModelChange)=\"recreateDemoChange.emit($event)\">\n\t\t\t\t<span\n\t\t\t\t\tng-doc-text\n\t\t\t\t\t[ngDocTooltip]=\"'Recreates demo everytime\\none of the input has changed'\"\n\t\t\t\t\t[positions]=\"['bottom-right', 'left-center']\"\n\t\t\t\t>\n\t\t\t\t\tRecreate\n\t\t\t\t\t<ng-doc-icon icon=\"info\" ngDocTextRight></ng-doc-icon>\n\t\t\t\t</span>\n\t\t\t</ng-doc-checkbox>\n\t\t</div>\n\t\t<div class=\"ng-doc-playground-divider\"></div>\n\t\t<ng-container *ngIf=\"propertyControls.length\">\n\t\t\t<h5 class=\"ng-doc-title\" ng-doc-text>Settings</h5>\n\t\t\t<ng-doc-playground-property\n\t\t\t\t*ngFor=\"let propertyControl of propertyControls\"\n\t\t\t\t[name]=\"propertyControl.property.inputName\"\n\t\t\t\t[property]=\"propertyControl.property\"\n\t\t\t\t[typeControl]=\"propertyControl.typeControl\"\n\t\t\t\t[control]=\"getFormControl | ngDocBind: this | ngDocRun: 'properties': propertyControl.propertyName\"\n\t\t\t>\n\t\t\t</ng-doc-playground-property>\n\t\t</ng-container>\n\n\t\t<ng-container *ngIf=\"(dynamicContent | keyvalue)?.length\">\n\t\t\t<h5 class=\"ng-doc-title\" ng-doc-text>Content</h5>\n\t\t\t<ng-doc-playground-property\n\t\t\t\t*ngFor=\"let content of dynamicContent | keyvalue\"\n\t\t\t\t[name]=\"content.value.label\"\n\t\t\t\t[property]=\"content.value\"\n\t\t\t\t[typeControl]=\"contentTypeControl\"\n\t\t\t\t[control]=\"getFormControl | ngDocBind: this | ngDocRun: 'content': content.key\"\n\t\t\t>\n\t\t\t</ng-doc-playground-property>\n\t\t</ng-container>\n\t</div>\n</div>\n","import {NgFor, NgIf} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\nimport {FormBuilder, FormGroup} from '@angular/forms';\nimport {NgDocRootPage} from '@ng-doc/app/classes/root-page';\nimport {extractValue} from '@ng-doc/core/helpers/extract-value';\nimport {objectKeys} from '@ng-doc/core/helpers/object-keys';\nimport {NgDocPlaygroundConfig, NgDocPlaygroundProperties} from '@ng-doc/core/interfaces';\nimport {NgDocExtractedValue} from '@ng-doc/core/types';\nimport {NgDocAsArrayPipe} from '@ng-doc/ui-kit';\n\nimport {NgDocPlaygroundDemoComponent} from './playground-demo/playground-demo.component';\nimport {NgDocPlaygroundForm} from './playground-form';\nimport {NgDocPlaygroundPropertiesComponent} from './playground-properties/playground-properties.component';\n\n@Component({\n\tselector: 'ng-doc-playground',\n\ttemplateUrl: './playground.component.html',\n\tstyleUrls: ['./playground.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\timports: [NgIf, NgDocPlaygroundPropertiesComponent, NgFor, NgDocPlaygroundDemoComponent, NgDocAsArrayPipe],\n})\nexport class NgDocPlaygroundComponent<T extends NgDocPlaygroundProperties = NgDocPlaygroundProperties>\n\timplements OnInit\n{\n\tid: string = '';\n\tpipeName: string = '';\n\tselectors: string[] = [];\n\tproperties?: T;\n\tformGroup!: FormGroup<NgDocPlaygroundForm>;\n\trecreateDemo: boolean = false;\n\n\tconstructor(private readonly rootPage: NgDocRootPage, private readonly formBuilder: FormBuilder) {}\n\n\tngOnInit(): void {\n\t\tconst propertiesForm: FormGroup = this.formBuilder.group(this.getPropertiesFormValues());\n\t\tconst contentForm: FormGroup = this.formBuilder.group(this.getContentFormValues());\n\n\t\tthis.formGroup = this.formBuilder.group({\n\t\t\tproperties: propertiesForm,\n\t\t\tcontent: contentForm,\n\t\t});\n\t}\n\n\tget configuration(): NgDocPlaygroundConfig | undefined {\n\t\treturn this.rootPage.page?.playgrounds?.[this.id];\n\t}\n\n\tprivate getPropertiesFormValues<K extends keyof T>(): Record<K, NgDocExtractedValue> {\n\t\treturn objectKeys(this.properties ?? {}).reduce((controls: Record<K, NgDocExtractedValue>, key: K) => {\n\t\t\tif (this.properties) {\n\t\t\t\tcontrols[key] = extractValue(this.properties[key]?.default ?? 'undefined');\n\t\t\t}\n\n\t\t\treturn controls;\n\t\t}, {} as Record<K, NgDocExtractedValue>);\n\t}\n\n\tprivate getContentFormValues(): Record<string, boolean> {\n\t\treturn objectKeys(this.configuration?.content ?? {}).reduce((controls: Record<string, boolean>, key: string) => {\n\t\t\tif (this.configuration?.content) {\n\t\t\t\tcontrols[key] = false;\n\t\t\t}\n\n\t\t\treturn controls;\n\t\t}, {} as Record<keyof T, boolean>);\n\t\treturn {};\n\t}\n\n\tresetForm(): void {\n\t\tthis.formGroup?.reset({\n\t\t\tproperties: this.getPropertiesFormValues(),\n\t\t\tcontent: this.getContentFormValues(),\n\t\t});\n\t}\n}\n","<ng-container *ngIf=\"configuration\">\n\t<ng-doc-playground-properties\n\t\t[form]=\"formGroup\"\n\t\t[properties]=\"properties\"\n\t\t[dynamicContent]=\"configuration.content\"\n\t\t[(recreateDemo)]=\"recreateDemo\"\n\t\t(resetForm)=\"resetForm()\"\n\t>\n\t\t<ng-doc-playground-demo\n\t\t\t*ngFor=\"let selector of configuration.selectors ?? selectors | asArray\"\n\t\t\t[id]=\"id\"\n\t\t\t[selector]=\"selector\"\n\t\t\t[properties]=\"properties\"\n\t\t\t[configuration]=\"configuration\"\n\t\t\t[recreateDemo]=\"recreateDemo\"\n\t\t\t[form]=\"formGroup\"\n\t\t>\n\t\t</ng-doc-playground-demo>\n\n\t\t<ng-doc-playground-demo\n\t\t\t*ngIf=\"pipeName\"\n\t\t\t[id]=\"id\"\n\t\t\t[pipeName]=\"pipeName\"\n\t\t\t[properties]=\"properties\"\n\t\t\t[configuration]=\"configuration\"\n\t\t\t[recreateDemo]=\"recreateDemo\"\n\t\t\t[form]=\"formGroup\"\n\t\t>\n\t\t</ng-doc-playground-demo>\n\t</ng-doc-playground-properties>\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["objectKeys","i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-doc-app-components-playground.mjs","sources":["../../../../libs/app/components/playground/base-playground.ts","../../../../libs/app/components/playground/playground-demo/playground-demo.component.ts","../../../../libs/app/components/playground/playground-demo/playground-demo.component.html","../../../../libs/app/components/playground/playground-property/playground-property.component.ts","../../../../libs/app/components/playground/playground-property/playground-property.component.html","../../../../libs/app/components/playground/playground-properties/playground-properties.component.ts","../../../../libs/app/components/playground/playground-properties/playground-properties.component.html","../../../../libs/app/components/playground/playground.component.ts","../../../../libs/app/components/playground/playground.component.html","../../../../libs/app/components/playground/ng-doc-app-components-playground.ts"],"sourcesContent":["import {Directive, Input, Type, ViewContainerRef} from '@angular/core';\nimport {NgDocPlaygroundConfig} from '@ng-doc/core/interfaces';\n\n/**\n * Base class for playgrounds components.\n */\n@Directive()\nexport abstract class NgDocBasePlayground implements Pick<NgDocPlaygroundConfig, 'data'> {\n\tstatic readonly selector: string = 'unknown';\n\tabstract readonly playground?: Type<unknown>;\n\tabstract readonly viewContainerRef?: ViewContainerRef;\n\n\t@Input()\n\tproperties: Record<string, any> = {};\n\n\t@Input()\n\tdata: Record<string, any> = {};\n\n\t@Input()\n\tcontent: any = {};\n}\n","import {AsyncPipe} from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tComponentRef,\n\tInjectionToken,\n\tInjector,\n\tInput,\n\tOnChanges,\n\tOnDestroy,\n\tSimpleChanges,\n\tType,\n\tViewChild,\n\tViewContainerRef,\n} from '@angular/core';\nimport {FormGroup} from '@angular/forms';\nimport {NgDocDemoDisplayerComponent} from '@ng-doc/app/components/demo-displayer';\nimport {formatHtml, getPlaygroundDemoToken} from '@ng-doc/app/helpers';\nimport {NgDocFormPartialValue} from '@ng-doc/app/types';\nimport {\n\tbuildPlaygroundDemoPipeTemplate,\n\tbuildPlaygroundDemoTemplate,\n} from '@ng-doc/core/helpers/build-playground-demo-template';\nimport {objectKeys} from '@ng-doc/core/helpers/object-keys';\nimport {NgDocPlaygroundConfig, NgDocPlaygroundProperties, NgDocPlaygroundProperty} from '@ng-doc/core/interfaces';\nimport {NgDocExtractedValue} from '@ng-doc/core/types';\nimport {UntilDestroy, untilDestroyed} from '@ngneat/until-destroy';\nimport {from, Observable, of, Subject} from 'rxjs';\nimport {startWith, takeUntil} from 'rxjs/operators';\n\nimport {NgDocBasePlayground} from '../base-playground';\nimport {NgDocPlaygroundForm} from '../playground-form';\n\n@Component({\n\tselector: 'ng-doc-playground-demo',\n\ttemplateUrl: './playground-demo.component.html',\n\tstyleUrls: ['./playground-demo.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\timports: [NgDocDemoDisplayerComponent, AsyncPipe],\n})\n@UntilDestroy()\nexport class NgDocPlaygroundDemoComponent<T extends NgDocPlaygroundProperties = NgDocPlaygroundProperties>\n\timplements OnChanges, OnDestroy\n{\n\t@Input()\n\tid: string = '';\n\n\t@Input()\n\tpipeName: string = '';\n\n\t@Input()\n\tselector: string = '';\n\n\t@Input()\n\tconfiguration?: NgDocPlaygroundConfig;\n\n\t@Input()\n\tproperties?: T;\n\n\t@Input()\n\trecreateDemo: boolean = false;\n\n\t@Input()\n\tform!: FormGroup<NgDocPlaygroundForm>;\n\n\t@ViewChild('demoOutlet', {static: true, read: ViewContainerRef})\n\tdemoOutlet?: ViewContainerRef;\n\n\tplaygroundDemo?: typeof NgDocBasePlayground;\n\n\tcode: Observable<string> = of('');\n\n\tprivate demoRef?: ComponentRef<NgDocBasePlayground>;\n\tprivate readonly unsubscribe$: Subject<void> = new Subject<void>();\n\n\tconstructor(private readonly injector: Injector) {}\n\n\tngOnChanges({form, id}: SimpleChanges): void {\n\t\tif (form && id) {\n\t\t\tthis.unsubscribe$.next();\n\n\t\t\tconst demoInjector: InjectionToken<Array<typeof NgDocBasePlayground>> | undefined = getPlaygroundDemoToken(\n\t\t\t\tthis.id,\n\t\t\t);\n\n\t\t\tif (demoInjector) {\n\t\t\t\tconst demos: Array<typeof NgDocBasePlayground> = this.injector.get(demoInjector, []);\n\t\t\t\tthis.playgroundDemo = demos.find(\n\t\t\t\t\t(demo: typeof NgDocBasePlayground) => demo.selector === this.selector || demo.selector === this.pipeName,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.updateDemo();\n\n\t\t\tthis.form?.valueChanges\n\t\t\t\t.pipe(takeUntil(this.unsubscribe$), untilDestroyed(this), startWith(this.form?.value))\n\t\t\t\t.subscribe((data: NgDocFormPartialValue<typeof this.form>) => this.updateDemo(data));\n\t\t}\n\t}\n\n\tprivate updateDemo(data?: NgDocFormPartialValue<typeof this.form>): void {\n\t\tif (this.recreateDemo || !this.demoRef) {\n\t\t\tthis.renderDemo();\n\t\t}\n\n\t\tif (data) {\n\t\t\tthis.demoRef?.setInput('properties', data.properties ?? {});\n\t\t\tthis.demoRef?.setInput('content', data.content ?? {});\n\t\t}\n\n\t\tthis.updateCodeView();\n\t}\n\n\tprivate renderDemo(): void {\n\t\tif (this.playgroundDemo) {\n\t\t\tthis.demoRef?.destroy();\n\n\t\t\tif (this.playgroundDemo) {\n\t\t\t\tthis.demoRef = this.demoOutlet?.createComponent(this.playgroundDemo as unknown as Type<NgDocBasePlayground>);\n\t\t\t}\n\n\t\t\tthis.demoRef?.changeDetectorRef.detectChanges();\n\t\t}\n\t}\n\n\tprivate updateCodeView(): void {\n\t\tconst template: string = this.pipeName\n\t\t\t? buildPlaygroundDemoPipeTemplate(\n\t\t\t\t\tthis.configuration?.template ?? '',\n\t\t\t\t\tthis.pipeName,\n\t\t\t\t\tthis.getActiveContent(),\n\t\t\t\t\tthis.getActiveInputs(),\n\t\t\t )\n\t\t\t: buildPlaygroundDemoTemplate(\n\t\t\t\t\tthis.configuration?.template ?? '',\n\t\t\t\t\tthis.selector,\n\t\t\t\t\tthis.getActiveContent(),\n\t\t\t\t\tthis.getActiveInputs(),\n\t\t\t );\n\n\t\tthis.code = from(formatHtml(template));\n\t}\n\n\tprivate getActiveContent(): Record<string, string> {\n\t\tconst formData: Record<string, boolean> = (this.form?.controls.content.value as Record<string, boolean>) ?? {};\n\n\t\treturn objectKeys(formData).reduce((result: Record<string, string>, key: string) => {\n\t\t\tresult[key] = formData[key] ? this.configuration?.content?.[key].template ?? '' : '';\n\n\t\t\treturn result;\n\t\t}, {});\n\t}\n\n\tprivate getActiveInputs(): Record<string, string> {\n\t\tconst formData: Record<string, NgDocExtractedValue> =\n\t\t\t(this.form?.controls.properties.value as Record<string, NgDocExtractedValue>) ?? {};\n\n\t\treturn objectKeys(formData).reduce((result: Record<string, string>, key: string) => {\n\t\t\tconst property: NgDocPlaygroundProperty | undefined = this.properties?.[key];\n\n\t\t\tif (property) {\n\t\t\t\tconst value: NgDocExtractedValue = formData[key];\n\t\t\t\tconst isString: boolean = typeof value === 'string';\n\t\t\t\tconst inputValue: string = isString ? `'${value}'` : `${JSON.stringify(value)}`;\n\n\t\t\t\tif ((property.default ?? '') !== inputValue) {\n\t\t\t\t\tresult[property.inputName] = inputValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}, {});\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.unsubscribe$.next();\n\t\tthis.unsubscribe$.complete();\n\t}\n}\n","<ng-doc-demo-displayer [code]=\"(code | async) ?? ''\" [border]=\"false\" language=\"html\">\n\t<ng-container #demoOutlet></ng-container>\n</ng-doc-demo-displayer>\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tComponentRef,\n\tHostBinding,\n\tInput,\n\tOnChanges,\n\tSimpleChanges,\n\tViewChild,\n\tViewContainerRef,\n} from '@angular/core';\nimport {FormControl} from '@angular/forms';\nimport {isPlaygroundProperty} from '@ng-doc/app/helpers';\nimport {NgDocProvidedTypeControl, NgDocTypeControl, NgDocTypeControlProviderOptions} from '@ng-doc/app/interfaces';\nimport {NgDocSanitizeHtmlPipe} from '@ng-doc/app/pipes';\nimport {NgDocPlaygroundContent, NgDocPlaygroundProperty} from '@ng-doc/core/interfaces';\nimport {NgDocLabelComponent, NgDocTooltipDirective} from '@ng-doc/ui-kit';\n\n@Component({\n\tselector: 'ng-doc-playground-property',\n\ttemplateUrl: './playground-property.component.html',\n\tstyleUrls: ['./playground-property.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\timports: [NgDocLabelComponent, NgDocTooltipDirective, NgDocSanitizeHtmlPipe],\n})\nexport class NgDocPlaygroundPropertyComponent implements OnChanges {\n\t@Input()\n\tname: string = '';\n\n\t@Input()\n\tproperty?: NgDocPlaygroundProperty | NgDocPlaygroundContent;\n\n\t@Input()\n\ttypeControl?: NgDocProvidedTypeControl;\n\n\t@Input()\n\tcontrol?: FormControl;\n\n\t@ViewChild('propertyOutlet', {read: ViewContainerRef, static: true})\n\tpropertyOutlet?: ViewContainerRef;\n\n\tprotected option?: NgDocTypeControlProviderOptions;\n\tprivate propertyTypeControl?: ComponentRef<NgDocTypeControl>;\n\n\tngOnChanges({property, control, typeControl}: SimpleChanges): void {\n\t\tif ((property || control || typeControl) && this.property && this.typeControl) {\n\t\t\tthis.propertyTypeControl?.destroy();\n\t\t\tthis.propertyTypeControl = undefined;\n\n\t\t\tif (this.typeControl && this.propertyOutlet) {\n\t\t\t\tthis.propertyTypeControl = this.propertyOutlet.createComponent(this.typeControl.control);\n\t\t\t\tthis.propertyTypeControl.instance.name = this.name;\n\t\t\t\tthis.propertyTypeControl.instance.description = this.tooltipContent;\n\t\t\t\tthis.propertyTypeControl.instance.options = isPlaygroundProperty(this.property)\n\t\t\t\t\t? this.property.options\n\t\t\t\t\t: undefined;\n\t\t\t\tthis.propertyTypeControl.instance.default = isPlaygroundProperty(this.property)\n\t\t\t\t\t? this.property.default\n\t\t\t\t\t: undefined;\n\t\t\t\tthis.propertyTypeControl.instance.writeValue(this.control?.value);\n\n\t\t\t\tthis.option = this.typeControl.options;\n\t\t\t}\n\t\t}\n\n\t\tif (control) {\n\t\t\tthis.control?.registerOnChange((value: string) => this.propertyTypeControl?.instance?.writeValue(value));\n\t\t\tthis.propertyTypeControl?.instance.registerOnChange((value: unknown) => this.control?.setValue(value));\n\t\t\tthis.propertyTypeControl?.instance.registerOnTouched(() => this.control?.markAsTouched());\n\t\t}\n\t}\n\n\t@HostBinding('attr.data-has-property-control')\n\tget hasPropertyControl(): boolean {\n\t\treturn !!this.propertyTypeControl;\n\t}\n\n\tget tooltipContent(): string {\n\t\treturn this.property && isPlaygroundProperty(this.property) ? this.property.description ?? '' : '';\n\t}\n}\n","<label [ng-doc-label]=\"option?.hideLabel ? '' : labelContent\">\n\t<ng-template #labelContent>\n\t\t<span [ngDocTooltip]=\"tooltipTemplate\" [canOpen]=\"!!tooltipContent\"\n\t\t\t [positions]=\"['left-center', 'top-right', 'bottom-right']\">{{name}}</span>\n\t\t<ng-template #tooltipTemplate>\n\t\t\t<div [innerHTML]=\"tooltipContent | ngDocSanitizeHtml\"></div>\n\t\t</ng-template>\n\t</ng-template>\n\t<ng-container #propertyOutlet></ng-container>\n</label>\n","import {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\nimport {AsyncPipe, KeyValuePipe, NgFor, NgIf} from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tEventEmitter,\n\tInjectionToken,\n\tInjector,\n\tInput,\n\tisDevMode,\n\tOnChanges,\n\tOutput,\n\tSimpleChanges,\n} from '@angular/core';\nimport {FormControl, FormGroup, FormsModule} from '@angular/forms';\nimport {getTokenForType, isPlaygroundProperty} from '@ng-doc/app/helpers';\nimport {NgDocProvidedTypeControl} from '@ng-doc/app/interfaces';\nimport {extractValueOrThrow, isPresent, objectKeys} from '@ng-doc/core';\nimport {NgDocPlaygroundContent, NgDocPlaygroundProperties, NgDocPlaygroundProperty} from '@ng-doc/core/interfaces';\nimport {\n\tNgDocBindPipe,\n\tNgDocButtonComponent,\n\tNgDocCheckboxComponent,\n\tNgDocExecutePipe,\n\tNgDocIconComponent,\n\tNgDocTextComponent,\n\tNgDocTextRightDirective,\n\tNgDocTooltipDirective,\n} from '@ng-doc/ui-kit';\nimport {Observable} from 'rxjs';\nimport {pluck} from 'rxjs/operators';\n\nimport {NgDocPlaygroundForm} from '../playground-form';\nimport {NgDocPlaygroundPropertyComponent} from '../playground-property/playground-property.component';\nimport {NgDocPlaygroundPropertyControl} from '../playground-property-control';\n\n@Component({\n\tselector: 'ng-doc-playground-properties',\n\ttemplateUrl: './playground-properties.component.html',\n\tstyleUrls: ['./playground-properties.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\timports: [\n\t\tNgDocTextComponent,\n\t\tNgDocButtonComponent,\n\t\tNgDocCheckboxComponent,\n\t\tFormsModule,\n\t\tNgDocTooltipDirective,\n\t\tNgDocIconComponent,\n\t\tNgDocTextRightDirective,\n\t\tNgIf,\n\t\tNgFor,\n\t\tNgDocPlaygroundPropertyComponent,\n\t\tAsyncPipe,\n\t\tKeyValuePipe,\n\t\tNgDocBindPipe,\n\t\tNgDocExecutePipe,\n\t],\n})\nexport class NgDocPlaygroundPropertiesComponent<\n\tP extends NgDocPlaygroundProperties,\n\tC extends Record<string, NgDocPlaygroundContent>,\n> implements OnChanges\n{\n\t@Input()\n\tform!: FormGroup<NgDocPlaygroundForm>;\n\n\t@Input()\n\tproperties?: P;\n\n\t@Input()\n\tdynamicContent?: C;\n\n\t@Input()\n\trecreateDemo: boolean = false;\n\n\t@Output()\n\trecreateDemoChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n\t@Output()\n\tresetForm: EventEmitter<void> = new EventEmitter<void>();\n\n\treadonly breakpoints: string[] = [Breakpoints.XSmall];\n\treadonly observer: Observable<boolean>;\n\n\tprotected propertyControls: NgDocPlaygroundPropertyControl[] = [];\n\tprotected contentTypeControl?: NgDocProvidedTypeControl = this.getControlForType('boolean');\n\n\tconstructor(protected readonly breakpointObserver: BreakpointObserver, private injector: Injector) {\n\t\tthis.observer = this.breakpointObserver.observe(this.breakpoints).pipe(pluck('matches'));\n\t}\n\n\tngOnChanges({properties}: SimpleChanges): void {\n\t\tif (properties && this.properties) {\n\t\t\tthis.propertyControls = objectKeys(this.properties)\n\t\t\t\t.map((key: keyof P) => {\n\t\t\t\t\tif (this.properties) {\n\t\t\t\t\t\tconst property: NgDocPlaygroundProperty = this.properties[key];\n\t\t\t\t\t\tconst typeControl: NgDocProvidedTypeControl | undefined = this.getTypeControl(property);\n\n\t\t\t\t\t\tif (typeControl) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tpropertyName: String(key),\n\t\t\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\t\ttypeControl,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn null;\n\t\t\t\t})\n\t\t\t\t.filter(isPresent)\n\t\t\t\t.sort((a: NgDocPlaygroundPropertyControl, b: NgDocPlaygroundPropertyControl) => {\n\t\t\t\t\tconst aOrder: number | undefined = a.typeControl.options?.order;\n\t\t\t\t\tconst bOrder: number | undefined = b.typeControl.options?.order;\n\n\t\t\t\t\tif (isPresent(aOrder) && isPresent(bOrder)) {\n\t\t\t\t\t\treturn aOrder - bOrder;\n\t\t\t\t\t}\n\t\t\t\t\tif (isPresent(aOrder)) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (isPresent(bOrder)) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn a.property.inputName.localeCompare(b.property.inputName);\n\t\t\t\t});\n\t\t}\n\t}\n\n\tgetFormControl(controlType: keyof typeof this.form.controls, key: string): FormControl {\n\t\treturn this.form.get(controlType)?.get(key) as FormControl;\n\t}\n\n\tprivate getTypeControl(property: NgDocPlaygroundProperty): NgDocProvidedTypeControl | undefined {\n\t\tconst type: string = property.type;\n\t\tconst typeControl: NgDocProvidedTypeControl | undefined =\n\t\t\tthis.getControlForType(type) ??\n\t\t\tthis.getControlForTypeAlias(isPlaygroundProperty(property) ? property.options : undefined);\n\n\t\tif (!typeControl && isDevMode()) {\n\t\t\tconsole.warn(\n\t\t\t\t`NgDocPlayground didn't find the control for the @Input \"${property.inputName}\", the type \"${type}\" was not recognized'`,\n\t\t\t);\n\t\t}\n\n\t\treturn typeControl;\n\t}\n\n\tprivate getControlForType(type: string): NgDocProvidedTypeControl | undefined {\n\t\tconst token: InjectionToken<NgDocProvidedTypeControl> | undefined = getTokenForType(type);\n\n\t\treturn token ? this.injector.get(token) : undefined;\n\t}\n\n\tprivate getControlForTypeAlias(options?: string[]): NgDocProvidedTypeControl | undefined {\n\t\tif (options && options.length) {\n\t\t\tlet optionsIsValid: boolean = true;\n\n\t\t\ttry {\n\t\t\t\t// checking that all values are extractable\n\t\t\t\toptions.forEach((item: string) => extractValueOrThrow(item));\n\t\t\t} catch {\n\t\t\t\toptionsIsValid = false;\n\t\t\t}\n\n\t\t\tif (optionsIsValid) {\n\t\t\t\tconst token: InjectionToken<NgDocProvidedTypeControl> | undefined = getTokenForType('NgDocTypeAlias');\n\n\t\t\t\treturn token ? this.injector.get(token) : undefined;\n\t\t\t}\n\t\t}\n\n\t\treturn undefined;\n\t}\n}\n","<div class=\"ng-doc-playground-properties-wrapper\" [class.vertical]=\"observer | async\">\n\t<div class=\"ng-doc-playground-demos\">\n\t\t<ng-content></ng-content>\n\t</div>\n\t<div class=\"ng-doc-playground-properties\">\n\t\t<div class=\"ng-doc-playground-header\">\n\t\t\t<h4 ng-doc-text>Playground</h4>\n\t\t\t<button ng-doc-button color=\"red\" (click)=\"resetForm.emit()\">Reset</button>\n\t\t</div>\n\t\t<div class=\"ng-doc-playground-setting\">\n\t\t\t<ng-doc-checkbox [(ngModel)]=\"recreateDemo\" (ngModelChange)=\"recreateDemoChange.emit($event)\">\n\t\t\t\t<span\n\t\t\t\t\tng-doc-text\n\t\t\t\t\t[ngDocTooltip]=\"'Recreates demo everytime\\none of the input has changed'\"\n\t\t\t\t\t[positions]=\"['bottom-right', 'left-center']\"\n\t\t\t\t>\n\t\t\t\t\tRecreate\n\t\t\t\t\t<ng-doc-icon icon=\"info\" ngDocTextRight></ng-doc-icon>\n\t\t\t\t</span>\n\t\t\t</ng-doc-checkbox>\n\t\t</div>\n\t\t<div class=\"ng-doc-playground-divider\"></div>\n\t\t<ng-container *ngIf=\"propertyControls.length\">\n\t\t\t<h5 class=\"ng-doc-title\" ng-doc-text>Settings</h5>\n\t\t\t<ng-doc-playground-property\n\t\t\t\t*ngFor=\"let propertyControl of propertyControls\"\n\t\t\t\t[name]=\"propertyControl.property.inputName\"\n\t\t\t\t[property]=\"propertyControl.property\"\n\t\t\t\t[typeControl]=\"propertyControl.typeControl\"\n\t\t\t\t[control]=\"getFormControl | bind: this | execute: 'properties': propertyControl.propertyName\"\n\t\t\t>\n\t\t\t</ng-doc-playground-property>\n\t\t</ng-container>\n\n\t\t<ng-container *ngIf=\"(dynamicContent | keyvalue)?.length\">\n\t\t\t<h5 class=\"ng-doc-title\" ng-doc-text>Content</h5>\n\t\t\t<ng-doc-playground-property\n\t\t\t\t*ngFor=\"let content of dynamicContent | keyvalue\"\n\t\t\t\t[name]=\"content.value.label\"\n\t\t\t\t[property]=\"content.value\"\n\t\t\t\t[typeControl]=\"contentTypeControl\"\n\t\t\t\t[control]=\"getFormControl | bind: this | execute: 'content': content.key\"\n\t\t\t>\n\t\t\t</ng-doc-playground-property>\n\t\t</ng-container>\n\t</div>\n</div>\n","import {NgFor, NgIf} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\nimport {FormBuilder, FormGroup} from '@angular/forms';\nimport {NgDocRootPage} from '@ng-doc/app/classes/root-page';\nimport {extractValue} from '@ng-doc/core/helpers/extract-value';\nimport {objectKeys} from '@ng-doc/core/helpers/object-keys';\nimport {NgDocPlaygroundConfig, NgDocPlaygroundProperties} from '@ng-doc/core/interfaces';\nimport {NgDocExtractedValue} from '@ng-doc/core/types';\nimport {NgDocAsArrayPipe} from '@ng-doc/ui-kit';\n\nimport {NgDocPlaygroundDemoComponent} from './playground-demo/playground-demo.component';\nimport {NgDocPlaygroundForm} from './playground-form';\nimport {NgDocPlaygroundPropertiesComponent} from './playground-properties/playground-properties.component';\n\n@Component({\n\tselector: 'ng-doc-playground',\n\ttemplateUrl: './playground.component.html',\n\tstyleUrls: ['./playground.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\timports: [NgIf, NgDocPlaygroundPropertiesComponent, NgFor, NgDocPlaygroundDemoComponent, NgDocAsArrayPipe],\n})\nexport class NgDocPlaygroundComponent<T extends NgDocPlaygroundProperties = NgDocPlaygroundProperties>\n\timplements OnInit\n{\n\tid: string = '';\n\tpipeName: string = '';\n\tselectors: string[] = [];\n\tproperties?: T;\n\tformGroup!: FormGroup<NgDocPlaygroundForm>;\n\trecreateDemo: boolean = false;\n\n\tconstructor(private readonly rootPage: NgDocRootPage, private readonly formBuilder: FormBuilder) {}\n\n\tngOnInit(): void {\n\t\tconst propertiesForm: FormGroup = this.formBuilder.group(this.getPropertiesFormValues());\n\t\tconst contentForm: FormGroup = this.formBuilder.group(this.getContentFormValues());\n\n\t\tthis.formGroup = this.formBuilder.group({\n\t\t\tproperties: propertiesForm,\n\t\t\tcontent: contentForm,\n\t\t});\n\t}\n\n\tget configuration(): NgDocPlaygroundConfig | undefined {\n\t\treturn this.rootPage.page?.playgrounds?.[this.id];\n\t}\n\n\tprivate getPropertiesFormValues<K extends keyof T>(): Record<K, NgDocExtractedValue> {\n\t\treturn objectKeys(this.properties ?? {}).reduce((controls: Record<K, NgDocExtractedValue>, key: K) => {\n\t\t\tif (this.properties) {\n\t\t\t\tcontrols[key] = extractValue(this.properties[key]?.default ?? 'undefined');\n\t\t\t}\n\n\t\t\treturn controls;\n\t\t}, {} as Record<K, NgDocExtractedValue>);\n\t}\n\n\tprivate getContentFormValues(): Record<string, boolean> {\n\t\treturn objectKeys(this.configuration?.content ?? {}).reduce((controls: Record<string, boolean>, key: string) => {\n\t\t\tif (this.configuration?.content) {\n\t\t\t\tcontrols[key] = false;\n\t\t\t}\n\n\t\t\treturn controls;\n\t\t}, {} as Record<keyof T, boolean>);\n\t\treturn {};\n\t}\n\n\tresetForm(): void {\n\t\tthis.formGroup?.reset({\n\t\t\tproperties: this.getPropertiesFormValues(),\n\t\t\tcontent: this.getContentFormValues(),\n\t\t});\n\t}\n}\n","<ng-container *ngIf=\"configuration\">\n\t<ng-doc-playground-properties\n\t\t[form]=\"formGroup\"\n\t\t[properties]=\"properties\"\n\t\t[dynamicContent]=\"configuration.content\"\n\t\t[(recreateDemo)]=\"recreateDemo\"\n\t\t(resetForm)=\"resetForm()\"\n\t>\n\t\t<ng-doc-playground-demo\n\t\t\t*ngFor=\"let selector of configuration.selectors ?? selectors | asArray\"\n\t\t\t[id]=\"id\"\n\t\t\t[selector]=\"selector\"\n\t\t\t[properties]=\"properties\"\n\t\t\t[configuration]=\"configuration\"\n\t\t\t[recreateDemo]=\"recreateDemo\"\n\t\t\t[form]=\"formGroup\"\n\t\t>\n\t\t</ng-doc-playground-demo>\n\n\t\t<ng-doc-playground-demo\n\t\t\t*ngIf=\"pipeName\"\n\t\t\t[id]=\"id\"\n\t\t\t[pipeName]=\"pipeName\"\n\t\t\t[properties]=\"properties\"\n\t\t\t[configuration]=\"configuration\"\n\t\t\t[recreateDemo]=\"recreateDemo\"\n\t\t\t[form]=\"formGroup\"\n\t\t>\n\t\t</ng-doc-playground-demo>\n\t</ng-doc-playground-properties>\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["objectKeys","i1"],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ import { RouterLink, RouterModule } from '@angular/router';
|
|
|
8
8
|
import * as i1 from '@ng-doc/app/classes/search-engine';
|
|
9
9
|
import { NgDocSearchEngine } from '@ng-doc/app/classes/search-engine';
|
|
10
10
|
import { NgDocSanitizeHtmlPipe } from '@ng-doc/app/pipes';
|
|
11
|
-
import { observableState, NgDocLetDirective, NgDocButtonIconComponent, NgDocDropdownOriginDirective, NgDocIconComponent, NgDocDropdownComponent, NgDocInputWrapperComponent, NgDocInputStringDirective, NgDocAutofocusDirective, NgDocFocusCatcherDirective, NgDocHotkeyDirective, NgDocTagComponent, NgDocDataListComponent, NgDocTextComponent, NgDocSpinnerComponent, NgDocHighlighterPipe,
|
|
11
|
+
import { observableState, NgDocLetDirective, NgDocButtonIconComponent, NgDocDropdownOriginDirective, NgDocIconComponent, NgDocDropdownComponent, NgDocInputWrapperComponent, NgDocInputStringDirective, NgDocAutofocusDirective, NgDocFocusCatcherDirective, NgDocHotkeyDirective, NgDocTagComponent, NgDocDataListComponent, NgDocTextComponent, NgDocSpinnerComponent, NgDocHighlighterPipe, NgDocExecutePipe, NgDocDropdownModule } from '@ng-doc/ui-kit';
|
|
12
12
|
import { NgDocListHost } from '@ng-doc/ui-kit/classes';
|
|
13
13
|
import { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';
|
|
14
14
|
import { BehaviorSubject, NEVER } from 'rxjs';
|
|
@@ -41,7 +41,7 @@ let NgDocSearchComponent = NgDocSearchComponent_1 = class NgDocSearchComponent {
|
|
|
41
41
|
provide: NgDocListHost,
|
|
42
42
|
useExisting: forwardRef(() => NgDocSearchComponent_1),
|
|
43
43
|
},
|
|
44
|
-
], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true }], ngImport: i0, template: "<ng-container *ngDocLet=\"search$ | async as state\">\n\t<ng-container *ngIf=\"mod === 'icon'; else searchInput\">\n\t\t<button ng-doc-button-icon size=\"large\" (click)=\"inputDropdown.toggle()\" ngDocDropdownOrigin>\n\t\t\t<ng-doc-icon icon=\"search\" [size]=\"24\"></ng-doc-icon>\n\n\t\t\t<ng-doc-dropdown\n\t\t\t\t[content]=\"dropdownContent\"\n\t\t\t\tpanelClass=\"ng-doc-search-dropdown\"\n\t\t\t\twidth=\"100%\"\n\t\t\t\theight=\"80vh\"\n\t\t\t\t#inputDropdown\n\t\t\t>\n\t\t\t\t<ng-template #dropdownContent>\n\t\t\t\t\t<div class=\"ng-doc-search-wrapper\">\n\t\t\t\t\t\t<ng-doc-input-wrapper [leftContent]=\"leftContent\" ngDocDropdownOrigin>\n\t\t\t\t\t\t\t<ng-template #leftContent>\n\t\t\t\t\t\t\t\t<ng-doc-icon icon=\"search\"></ng-doc-icon>\n\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tngDocInputString\n\t\t\t\t\t\t\t\t[(ngModel)]=\"searchTerm\"\n\t\t\t\t\t\t\t\t(ngModelChange)=\"query$.next($event)\"\n\t\t\t\t\t\t\t\tplaceholder=\"Search...\"\n\t\t\t\t\t\t\t\tngDocAutofocus\n\t\t\t\t\t\t\t\t[selectAll]=\"true\"\n\t\t\t\t\t\t\t\t#inputElement\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ng-doc-input-wrapper>\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"searchResults\"></ng-container>\n\t\t\t\t\t</div>\n\t\t\t\t</ng-template>\n\t\t\t</ng-doc-dropdown>\n\t\t</button>\n\t</ng-container>\n\n\t<ng-template #searchInput>\n\t\t<ng-doc-input-wrapper\n\t\t\t[leftContent]=\"leftContent\"\n\t\t\t[rightContent]=\"rightContent\"\n\t\t\tngDocDropdownOrigin\n\t\t\tngDocFocusCatcher\n\t\t\t(focusEvent)=\"inputElement.value ? dropdown.open() : null\"\n\t\t\t(click)=\"inputElement.value ? dropdown.open() : null\"\n\t\t\t#input\n\t\t>\n\t\t\t<ng-template #leftContent>\n\t\t\t\t<ng-doc-icon icon=\"search\"></ng-doc-icon>\n\t\t\t</ng-template>\n\t\t\t<input\n\t\t\t\tngDocInputString\n\t\t\t\t[(ngModel)]=\"searchTerm\"\n\t\t\t\t(ngModelChange)=\"query$.next($event); dropdown.open()\"\n\t\t\t\tplaceholder=\"Search...\"\n\t\t\t\t[ngDocHotkey]=\"{ctrlKey: false, altKey: false, shiftKey: false, code: 'Slash'}\"\n\t\t\t\t(ngDocHotkey)=\"inputElement.focus(); inputElement.select()\"\n\t\t\t\t#inputElement\n\t\t\t/>\n\t\t\t<ng-template #rightContent>\n\t\t\t\t<ng-doc-tag class=\"search-hotkey\">/</ng-doc-tag>\n\t\t\t</ng-template>\n\t\t\t<ng-doc-dropdown\n\t\t\t\t[content]=\"searchResults\"\n\t\t\t\tpositions=\"bottom-right\"\n\t\t\t\t[width]=\"input.elementRef.nativeElement.offsetWidth\"\n\t\t\t\tmaxHeight=\"calc(95vh - var(--ng-doc-navbar-height)\"\n\t\t\t\t#dropdown\n\t\t\t>\n\t\t\t\t<\n\t\t\t</ng-doc-dropdown>\n\t\t</ng-doc-input-wrapper>\n\t</ng-template>\n\n\t<ng-template #searchResults>\n\t\t<div class=\"ng-doc-search-result-content\" [attr.data-ng-doc-mod]=\"mod\">\n\t\t\t<ng-doc-data-list [items]=\"state?.result ?? []\" [itemContent]=\"itemContent\" [emptyContent]=\"emptyContent\">\n\t\t\t\t<ng-template let-item #itemContent>\n\t\t\t\t\t<a class=\"ng-doc-search-option\" [routerLink]=\"item.index.route\" [fragment]=\"item.index.fragment\">\n\t\t\t\t\t\t<div class=\"ng-doc-search-option-header\">\n\t\t\t\t\t\t\t<ng-doc-tag size=\"small\" [attr.data-ng-doc-page-type]=\"item.index.pageType\">\n\t\t\t\t\t\t\t\t{{ item.index.pageType }}\n\t\t\t\t\t\t\t</ng-doc-tag>\n\t\t\t\t\t\t\t<span class=\"ng-doc-search-option-breadcrumbs\" ng-doc-text>\n\t\t\t\t\t\t\t\t<ng-container *ngFor=\"let breadcrum of item.index.breadcrumbs; let i = index\">\n\t\t\t\t\t\t\t\t\t<span>{{ breadcrum }}</span>\n\t\t\t\t\t\t\t\t\t<span class=\"ng-doc-search-option-breadcrumb-divider\" *ngIf=\"i !== item.index.breadcrumbs.length - 1\"\n\t\t\t\t\t\t\t\t\t\t>/</span\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<h5\n\t\t\t\t\t\t\tclass=\"ng-doc-search-section-title\"\n\t\t\t\t\t\t\tng-doc-text\n\t\t\t\t\t\t\t[innerHTML]=\"\n\t\t\t\t\t\t\t\t(item.index.section\n\t\t\t\t\t\t\t\t\t| ngDocHighlighterPipe: (getPositions | ngDocRun: 'section':item)\n\t\t\t\t\t\t\t\t\t| ngDocSanitizeHtml) || item.index.title\n\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t></h5>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t*ngIf=\"item.index.content\"\n\t\t\t\t\t\t\tclass=\"ng-doc-search-content\"\n\t\t\t\t\t\t\t[innerHTML]=\"\n\t\t\t\t\t\t\t\titem.index.content | ngDocHighlighterPipe: (getPositions | ngDocRun: 'content':item) | ngDocSanitizeHtml\n\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\tng-doc-text\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</a>\n\t\t\t\t</ng-template>\n\t\t\t\t<ng-template #emptyContent>\n\t\t\t\t\t<ng-container *ngIf=\"!state?.pending\">\n\t\t\t\t\t\t<div class=\"ng-doc-search-empty\">\n\t\t\t\t\t\t\t<ng-container *ngIf=\"query$.value.length\">Nothing found</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"!query$.value.length\">Please enter your search query</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<ng-container *ngIf=\"state?.pending\">\n\t\t\t\t\t\t<div class=\"ng-doc-search-progress\">\n\t\t\t\t\t\t\t<ng-doc-spinner size=\"small\"></ng-doc-spinner>\n\t\t\t\t\t\t\tSearching...\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</ng-template>\n\t\t\t</ng-doc-data-list>\n\t\t</div>\n\t</ng-template>\n</ng-container>\n", styles: [":host{max-width:500px;--ng-doc-floated-border-radius: var(--ng-doc-base-gutter);--ng-doc-input-background-color: var(--ng-doc-base-1);--ng-doc-input-border: none;--ng-doc-input-border-hover: none;--ng-doc-icon-color: var(--ng-doc-base-8)}:host[data-ng-doc-mod=input]{width:480px}.ng-doc-search-result-content{height:100%;overflow:auto;--ng-doc-option-padding: 0}.ng-doc-search-result-content[data-ng-doc-mod=icon] .ng-doc-search-wrapper{padding:calc(var(--ng-doc-base-gutter) * 2) 0}.ng-doc-search-result-content[data-ng-doc-mod=icon] .ng-doc-search-option{padding:12px 16px}.ng-doc-search-wrapper{display:flex;flex-direction:column;height:100%;padding:calc(var(--ng-doc-base-gutter) * 2) 0}.ng-doc-search-wrapper ng-doc-input-wrapper{padding:0 calc(var(--ng-doc-base-gutter) * 2)}.ng-doc-search-wrapper .ng-doc-search-result-content{padding:0;margin-top:calc(var(--ng-doc-base-gutter) * 3)}.search-hotkey{display:flex;align-items:center;justify-content:center;width:calc(var(--ng-doc-base-gutter) * 3);height:calc(var(--ng-doc-base-gutter) * 3);margin-right:var(--ng-doc-base-gutter);--ng-doc-tag-border: 1px solid var(--ng-doc-base-7);--ng-doc-tag-color: var(--ng-doc-base-7);--ng-doc-tag-background: transparent}::ng-deep .ng-doc-search-dropdown{--ng-doc-overlay-border-radius: 0px !important}.ng-doc-search-option{display:block;padding:12px 36px;text-decoration:none}.ng-doc-search-option .ng-doc-search-option-header{display:flex;align-items:center}.ng-doc-search-option .ng-doc-search-option-header ng-doc-tag{text-transform:uppercase;margin-right:calc(var(--ng-doc-base-gutter) / 2);--ng-doc-font-weight: 900}.ng-doc-search-option .ng-doc-search-option-header ng-doc-tag[data-ng-doc-page-type=guide]{--ng-doc-tag-color: var(--ng-doc-guide-tag-color);--ng-doc-tag-background: var(--ng-doc-guide-tag-background)}.ng-doc-search-option .ng-doc-search-option-header ng-doc-tag[data-ng-doc-page-type=api]{--ng-doc-tag-color: var(--ng-doc-api-tag-color);--ng-doc-tag-background: var(--ng-doc-api-tag-background)}.ng-doc-search-option .ng-doc-search-option-header .ng-doc-search-option-breadcrumbs{--ng-doc-text: var(--ng-doc-text-muted);--ng-doc-font-size: 12px;--ng-doc-line-height: 16px;--ng-doc-font-weight: 600}.ng-doc-search-option .ng-doc-search-option-header .ng-doc-search-option-breadcrumbs .ng-doc-search-option-breadcrumb-divider{margin:0 6px}.ng-doc-search-option .ng-doc-search-section-title{display:block;color:var(--ng-doc-search-result-header-color, var(--ng-doc-text));--ng-doc-line-height: 20px;margin:4px 0}.ng-doc-search-option .ng-doc-search-content{display:block;color:var(--ng-doc-search-result-color, var(--ng-doc-text));--ng-doc-font-size: 14px;--ng-doc-line-height: 19px;--ng-doc-font-weight: 600}.ng-doc-search-empty{padding:0 22px}.ng-doc-search-progress{display:flex;align-items:center}.ng-doc-search-progress ng-doc-spinner{margin-right:var(--ng-doc-base-gutter)}\n"], dependencies: [{ kind: "directive", type: NgDocLetDirective, selector: "[ngDocLet]", inputs: ["ngDocLet"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgDocButtonIconComponent, selector: "button[ng-doc-button-icon], a[ng-doc-button-icon]", inputs: ["size", "rounded"] }, { kind: "directive", type: NgDocDropdownOriginDirective, selector: "[ngDocDropdownOrigin]", exportAs: ["ngDocDropdownOrigin"] }, { kind: "component", type: NgDocIconComponent, selector: "ng-doc-icon", inputs: ["icon", "size"] }, { kind: "component", type: NgDocDropdownComponent, selector: "ng-doc-dropdown", inputs: ["content", "origin", "closeIfOutsideClick", "closeIfInnerClick", "withArrow", "borderOffset", "panelClass", "contactBorder", "hasBackdrop", "positions", "minHeight", "maxHeight", "height", "minWidth", "maxWidth", "width"], outputs: ["beforeOpen", "afterOpen", "beforeClose", "afterClose"] }, { kind: "component", type: NgDocInputWrapperComponent, selector: "ng-doc-input-wrapper", inputs: ["blurContent", "blurContext", "leftContent", "rightContent", "align"] }, { kind: "directive", type: NgDocInputStringDirective, selector: "input[ngDocInputString]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgDocAutofocusDirective, selector: "[ngDocAutofocus]", inputs: ["selectAll"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgDocFocusCatcherDirective, selector: "[ngDocFocusCatcher]", outputs: ["focusEvent", "blurEvent"], exportAs: ["ngDocFocusCatcher"] }, { kind: "directive", type: NgDocHotkeyDirective, selector: "[ngDocHotkey]", inputs: ["ngDocHotkey"], outputs: ["ngDocHotkey"] }, { kind: "component", type: NgDocTagComponent, selector: "ng-doc-tag", inputs: ["color", "size", "mod"] }, { kind: "component", type: NgDocDataListComponent, selector: "ng-doc-data-list", inputs: ["autofocus", "items", "itemContent", "emptyContent", "itemDisabledFn", "defineValueFn", "trackByFn"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: NgDocTextComponent, selector: "[ng-doc-text]", inputs: ["size", "color", "align", "absoluteContent"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: NgDocSpinnerComponent, selector: "ng-doc-spinner", inputs: ["size"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: NgDocHighlighterPipe, name: "ngDocHighlighterPipe" }, { kind: "pipe", type: NgDocRunPipe, name: "ngDocRun" }, { kind: "pipe", type: NgDocSanitizeHtmlPipe, name: "ngDocSanitizeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
44
|
+
], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true }], ngImport: i0, template: "<ng-container *ngDocLet=\"search$ | async as state\">\n\t<ng-container *ngIf=\"mod === 'icon'; else searchInput\">\n\t\t<button ng-doc-button-icon size=\"large\" (click)=\"inputDropdown.toggle()\" ngDocDropdownOrigin>\n\t\t\t<ng-doc-icon icon=\"search\" [size]=\"24\"></ng-doc-icon>\n\n\t\t\t<ng-doc-dropdown\n\t\t\t\t[content]=\"dropdownContent\"\n\t\t\t\tpanelClass=\"ng-doc-search-dropdown\"\n\t\t\t\twidth=\"100%\"\n\t\t\t\theight=\"80vh\"\n\t\t\t\t#inputDropdown\n\t\t\t>\n\t\t\t\t<ng-template #dropdownContent>\n\t\t\t\t\t<div class=\"ng-doc-search-wrapper\">\n\t\t\t\t\t\t<ng-doc-input-wrapper [leftContent]=\"leftContent\" ngDocDropdownOrigin>\n\t\t\t\t\t\t\t<ng-template #leftContent>\n\t\t\t\t\t\t\t\t<ng-doc-icon icon=\"search\"></ng-doc-icon>\n\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tngDocInputString\n\t\t\t\t\t\t\t\t[(ngModel)]=\"searchTerm\"\n\t\t\t\t\t\t\t\t(ngModelChange)=\"query$.next($event)\"\n\t\t\t\t\t\t\t\tplaceholder=\"Search...\"\n\t\t\t\t\t\t\t\tngDocAutofocus\n\t\t\t\t\t\t\t\t[selectAll]=\"true\"\n\t\t\t\t\t\t\t\t#inputElement\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ng-doc-input-wrapper>\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"searchResults\"></ng-container>\n\t\t\t\t\t</div>\n\t\t\t\t</ng-template>\n\t\t\t</ng-doc-dropdown>\n\t\t</button>\n\t</ng-container>\n\n\t<ng-template #searchInput>\n\t\t<ng-doc-input-wrapper\n\t\t\t[leftContent]=\"leftContent\"\n\t\t\t[rightContent]=\"rightContent\"\n\t\t\tngDocDropdownOrigin\n\t\t\tngDocFocusCatcher\n\t\t\t(focusEvent)=\"inputElement.value ? dropdown.open() : null\"\n\t\t\t(click)=\"inputElement.value ? dropdown.open() : null\"\n\t\t\t#input\n\t\t>\n\t\t\t<ng-template #leftContent>\n\t\t\t\t<ng-doc-icon icon=\"search\"></ng-doc-icon>\n\t\t\t</ng-template>\n\t\t\t<input\n\t\t\t\tngDocInputString\n\t\t\t\t[(ngModel)]=\"searchTerm\"\n\t\t\t\t(ngModelChange)=\"query$.next($event); dropdown.open()\"\n\t\t\t\tplaceholder=\"Search...\"\n\t\t\t\t[ngDocHotkey]=\"{ctrlKey: false, altKey: false, shiftKey: false, code: 'Slash'}\"\n\t\t\t\t(ngDocHotkey)=\"inputElement.focus(); inputElement.select()\"\n\t\t\t\t#inputElement\n\t\t\t/>\n\t\t\t<ng-template #rightContent>\n\t\t\t\t<ng-doc-tag class=\"search-hotkey\">/</ng-doc-tag>\n\t\t\t</ng-template>\n\t\t\t<ng-doc-dropdown\n\t\t\t\t[content]=\"searchResults\"\n\t\t\t\tpositions=\"bottom-right\"\n\t\t\t\t[width]=\"input.elementRef.nativeElement.offsetWidth\"\n\t\t\t\tmaxHeight=\"calc(95vh - var(--ng-doc-navbar-height)\"\n\t\t\t\t#dropdown\n\t\t\t>\n\t\t\t\t<\n\t\t\t</ng-doc-dropdown>\n\t\t</ng-doc-input-wrapper>\n\t</ng-template>\n\n\t<ng-template #searchResults>\n\t\t<div class=\"ng-doc-search-result-content\" [attr.data-ng-doc-mod]=\"mod\">\n\t\t\t<ng-doc-data-list [items]=\"state?.result ?? []\" [itemContent]=\"itemContent\" [emptyContent]=\"emptyContent\">\n\t\t\t\t<ng-template let-item #itemContent>\n\t\t\t\t\t<a class=\"ng-doc-search-option\" [routerLink]=\"item.index.route\" [fragment]=\"item.index.fragment\">\n\t\t\t\t\t\t<div class=\"ng-doc-search-option-header\">\n\t\t\t\t\t\t\t<ng-doc-tag size=\"small\" [attr.data-ng-doc-page-type]=\"item.index.pageType\">\n\t\t\t\t\t\t\t\t{{ item.index.pageType }}\n\t\t\t\t\t\t\t</ng-doc-tag>\n\t\t\t\t\t\t\t<span class=\"ng-doc-search-option-breadcrumbs\" ng-doc-text>\n\t\t\t\t\t\t\t\t<ng-container *ngFor=\"let breadcrum of item.index.breadcrumbs; let i = index\">\n\t\t\t\t\t\t\t\t\t<span>{{ breadcrum }}</span>\n\t\t\t\t\t\t\t\t\t<span class=\"ng-doc-search-option-breadcrumb-divider\" *ngIf=\"i !== item.index.breadcrumbs.length - 1\"\n\t\t\t\t\t\t\t\t\t\t>/</span\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<h5\n\t\t\t\t\t\t\tclass=\"ng-doc-search-section-title\"\n\t\t\t\t\t\t\tng-doc-text\n\t\t\t\t\t\t\t[innerHTML]=\"\n\t\t\t\t\t\t\t\t(item.index.section\n\t\t\t\t\t\t\t\t\t| ngDocHighlighterPipe: (getPositions | execute: 'section':item)\n\t\t\t\t\t\t\t\t\t| ngDocSanitizeHtml) || item.index.title\n\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t></h5>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t*ngIf=\"item.index.content\"\n\t\t\t\t\t\t\tclass=\"ng-doc-search-content\"\n\t\t\t\t\t\t\t[innerHTML]=\"\n\t\t\t\t\t\t\t\titem.index.content | ngDocHighlighterPipe: (getPositions | execute: 'content':item) | ngDocSanitizeHtml\n\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\tng-doc-text\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</a>\n\t\t\t\t</ng-template>\n\t\t\t\t<ng-template #emptyContent>\n\t\t\t\t\t<ng-container *ngIf=\"!state?.pending\">\n\t\t\t\t\t\t<div class=\"ng-doc-search-empty\">\n\t\t\t\t\t\t\t<ng-container *ngIf=\"query$.value.length\">Nothing found</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"!query$.value.length\">Please enter your search query</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<ng-container *ngIf=\"state?.pending\">\n\t\t\t\t\t\t<div class=\"ng-doc-search-progress\">\n\t\t\t\t\t\t\t<ng-doc-spinner size=\"small\"></ng-doc-spinner>\n\t\t\t\t\t\t\tSearching...\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</ng-template>\n\t\t\t</ng-doc-data-list>\n\t\t</div>\n\t</ng-template>\n</ng-container>\n", styles: [":host{max-width:500px;--ng-doc-floated-border-radius: var(--ng-doc-base-gutter);--ng-doc-input-background-color: var(--ng-doc-base-1);--ng-doc-input-border: none;--ng-doc-input-border-hover: none;--ng-doc-icon-color: var(--ng-doc-base-8)}:host[data-ng-doc-mod=input]{width:480px}.ng-doc-search-result-content{height:100%;overflow:auto;--ng-doc-option-padding: 0}.ng-doc-search-result-content[data-ng-doc-mod=icon] .ng-doc-search-wrapper{padding:calc(var(--ng-doc-base-gutter) * 2) 0}.ng-doc-search-result-content[data-ng-doc-mod=icon] .ng-doc-search-option{padding:12px 16px}.ng-doc-search-wrapper{display:flex;flex-direction:column;height:100%;padding:calc(var(--ng-doc-base-gutter) * 2) 0}.ng-doc-search-wrapper ng-doc-input-wrapper{padding:0 calc(var(--ng-doc-base-gutter) * 2)}.ng-doc-search-wrapper .ng-doc-search-result-content{padding:0;margin-top:calc(var(--ng-doc-base-gutter) * 3)}.search-hotkey{display:flex;align-items:center;justify-content:center;width:calc(var(--ng-doc-base-gutter) * 3);height:calc(var(--ng-doc-base-gutter) * 3);margin-right:var(--ng-doc-base-gutter);--ng-doc-tag-border: 1px solid var(--ng-doc-base-7);--ng-doc-tag-color: var(--ng-doc-base-7);--ng-doc-tag-background: transparent}::ng-deep .ng-doc-search-dropdown{--ng-doc-overlay-border-radius: 0px !important}.ng-doc-search-option{display:block;padding:12px 36px;text-decoration:none}.ng-doc-search-option .ng-doc-search-option-header{display:flex;align-items:center}.ng-doc-search-option .ng-doc-search-option-header ng-doc-tag{text-transform:uppercase;margin-right:calc(var(--ng-doc-base-gutter) / 2);--ng-doc-font-weight: 900}.ng-doc-search-option .ng-doc-search-option-header ng-doc-tag[data-ng-doc-page-type=guide]{--ng-doc-tag-color: var(--ng-doc-guide-tag-color);--ng-doc-tag-background: var(--ng-doc-guide-tag-background)}.ng-doc-search-option .ng-doc-search-option-header ng-doc-tag[data-ng-doc-page-type=api]{--ng-doc-tag-color: var(--ng-doc-api-tag-color);--ng-doc-tag-background: var(--ng-doc-api-tag-background)}.ng-doc-search-option .ng-doc-search-option-header .ng-doc-search-option-breadcrumbs{--ng-doc-text: var(--ng-doc-text-muted);--ng-doc-font-size: 12px;--ng-doc-line-height: 16px;--ng-doc-font-weight: 600}.ng-doc-search-option .ng-doc-search-option-header .ng-doc-search-option-breadcrumbs .ng-doc-search-option-breadcrumb-divider{margin:0 6px}.ng-doc-search-option .ng-doc-search-section-title{display:block;color:var(--ng-doc-search-result-header-color, var(--ng-doc-text));--ng-doc-line-height: 20px;margin:4px 0}.ng-doc-search-option .ng-doc-search-content{display:block;color:var(--ng-doc-search-result-color, var(--ng-doc-text));--ng-doc-font-size: 14px;--ng-doc-line-height: 19px;--ng-doc-font-weight: 600}.ng-doc-search-empty{padding:0 22px}.ng-doc-search-progress{display:flex;align-items:center}.ng-doc-search-progress ng-doc-spinner{margin-right:var(--ng-doc-base-gutter)}\n"], dependencies: [{ kind: "directive", type: NgDocLetDirective, selector: "[ngDocLet]", inputs: ["ngDocLet"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgDocButtonIconComponent, selector: "button[ng-doc-button-icon], a[ng-doc-button-icon]", inputs: ["size", "rounded"] }, { kind: "directive", type: NgDocDropdownOriginDirective, selector: "[ngDocDropdownOrigin]", exportAs: ["ngDocDropdownOrigin"] }, { kind: "component", type: NgDocIconComponent, selector: "ng-doc-icon", inputs: ["icon", "size"] }, { kind: "component", type: NgDocDropdownComponent, selector: "ng-doc-dropdown", inputs: ["content", "origin", "closeIfOutsideClick", "closeIfInnerClick", "withArrow", "borderOffset", "panelClass", "contactBorder", "hasBackdrop", "positions", "minHeight", "maxHeight", "height", "minWidth", "maxWidth", "width"], outputs: ["beforeOpen", "afterOpen", "beforeClose", "afterClose"] }, { kind: "component", type: NgDocInputWrapperComponent, selector: "ng-doc-input-wrapper", inputs: ["blurContent", "blurContext", "leftContent", "rightContent", "align"] }, { kind: "directive", type: NgDocInputStringDirective, selector: "input[ngDocInputString]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgDocAutofocusDirective, selector: "[ngDocAutofocus]", inputs: ["selectAll"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgDocFocusCatcherDirective, selector: "[ngDocFocusCatcher]", outputs: ["focusEvent", "blurEvent"], exportAs: ["ngDocFocusCatcher"] }, { kind: "directive", type: NgDocHotkeyDirective, selector: "[ngDocHotkey]", inputs: ["ngDocHotkey"], outputs: ["ngDocHotkey"] }, { kind: "component", type: NgDocTagComponent, selector: "ng-doc-tag", inputs: ["color", "size", "mod"] }, { kind: "component", type: NgDocDataListComponent, selector: "ng-doc-data-list", inputs: ["autofocus", "items", "itemContent", "emptyContent", "itemDisabledFn", "defineValueFn", "trackByFn"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: NgDocTextComponent, selector: "[ng-doc-text]", inputs: ["size", "color", "align", "absoluteContent"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: NgDocSpinnerComponent, selector: "ng-doc-spinner", inputs: ["size"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: NgDocHighlighterPipe, name: "ngDocHighlighterPipe" }, { kind: "pipe", type: NgDocExecutePipe, name: "execute" }, { kind: "pipe", type: NgDocSanitizeHtmlPipe, name: "ngDocSanitizeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
45
45
|
};
|
|
46
46
|
NgDocSearchComponent = NgDocSearchComponent_1 = __decorate([
|
|
47
47
|
UntilDestroy(),
|
|
@@ -77,9 +77,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
|
77
77
|
NgDocSpinnerComponent,
|
|
78
78
|
AsyncPipe,
|
|
79
79
|
NgDocHighlighterPipe,
|
|
80
|
-
|
|
80
|
+
NgDocExecutePipe,
|
|
81
81
|
NgDocSanitizeHtmlPipe,
|
|
82
|
-
], template: "<ng-container *ngDocLet=\"search$ | async as state\">\n\t<ng-container *ngIf=\"mod === 'icon'; else searchInput\">\n\t\t<button ng-doc-button-icon size=\"large\" (click)=\"inputDropdown.toggle()\" ngDocDropdownOrigin>\n\t\t\t<ng-doc-icon icon=\"search\" [size]=\"24\"></ng-doc-icon>\n\n\t\t\t<ng-doc-dropdown\n\t\t\t\t[content]=\"dropdownContent\"\n\t\t\t\tpanelClass=\"ng-doc-search-dropdown\"\n\t\t\t\twidth=\"100%\"\n\t\t\t\theight=\"80vh\"\n\t\t\t\t#inputDropdown\n\t\t\t>\n\t\t\t\t<ng-template #dropdownContent>\n\t\t\t\t\t<div class=\"ng-doc-search-wrapper\">\n\t\t\t\t\t\t<ng-doc-input-wrapper [leftContent]=\"leftContent\" ngDocDropdownOrigin>\n\t\t\t\t\t\t\t<ng-template #leftContent>\n\t\t\t\t\t\t\t\t<ng-doc-icon icon=\"search\"></ng-doc-icon>\n\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tngDocInputString\n\t\t\t\t\t\t\t\t[(ngModel)]=\"searchTerm\"\n\t\t\t\t\t\t\t\t(ngModelChange)=\"query$.next($event)\"\n\t\t\t\t\t\t\t\tplaceholder=\"Search...\"\n\t\t\t\t\t\t\t\tngDocAutofocus\n\t\t\t\t\t\t\t\t[selectAll]=\"true\"\n\t\t\t\t\t\t\t\t#inputElement\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ng-doc-input-wrapper>\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"searchResults\"></ng-container>\n\t\t\t\t\t</div>\n\t\t\t\t</ng-template>\n\t\t\t</ng-doc-dropdown>\n\t\t</button>\n\t</ng-container>\n\n\t<ng-template #searchInput>\n\t\t<ng-doc-input-wrapper\n\t\t\t[leftContent]=\"leftContent\"\n\t\t\t[rightContent]=\"rightContent\"\n\t\t\tngDocDropdownOrigin\n\t\t\tngDocFocusCatcher\n\t\t\t(focusEvent)=\"inputElement.value ? dropdown.open() : null\"\n\t\t\t(click)=\"inputElement.value ? dropdown.open() : null\"\n\t\t\t#input\n\t\t>\n\t\t\t<ng-template #leftContent>\n\t\t\t\t<ng-doc-icon icon=\"search\"></ng-doc-icon>\n\t\t\t</ng-template>\n\t\t\t<input\n\t\t\t\tngDocInputString\n\t\t\t\t[(ngModel)]=\"searchTerm\"\n\t\t\t\t(ngModelChange)=\"query$.next($event); dropdown.open()\"\n\t\t\t\tplaceholder=\"Search...\"\n\t\t\t\t[ngDocHotkey]=\"{ctrlKey: false, altKey: false, shiftKey: false, code: 'Slash'}\"\n\t\t\t\t(ngDocHotkey)=\"inputElement.focus(); inputElement.select()\"\n\t\t\t\t#inputElement\n\t\t\t/>\n\t\t\t<ng-template #rightContent>\n\t\t\t\t<ng-doc-tag class=\"search-hotkey\">/</ng-doc-tag>\n\t\t\t</ng-template>\n\t\t\t<ng-doc-dropdown\n\t\t\t\t[content]=\"searchResults\"\n\t\t\t\tpositions=\"bottom-right\"\n\t\t\t\t[width]=\"input.elementRef.nativeElement.offsetWidth\"\n\t\t\t\tmaxHeight=\"calc(95vh - var(--ng-doc-navbar-height)\"\n\t\t\t\t#dropdown\n\t\t\t>\n\t\t\t\t<\n\t\t\t</ng-doc-dropdown>\n\t\t</ng-doc-input-wrapper>\n\t</ng-template>\n\n\t<ng-template #searchResults>\n\t\t<div class=\"ng-doc-search-result-content\" [attr.data-ng-doc-mod]=\"mod\">\n\t\t\t<ng-doc-data-list [items]=\"state?.result ?? []\" [itemContent]=\"itemContent\" [emptyContent]=\"emptyContent\">\n\t\t\t\t<ng-template let-item #itemContent>\n\t\t\t\t\t<a class=\"ng-doc-search-option\" [routerLink]=\"item.index.route\" [fragment]=\"item.index.fragment\">\n\t\t\t\t\t\t<div class=\"ng-doc-search-option-header\">\n\t\t\t\t\t\t\t<ng-doc-tag size=\"small\" [attr.data-ng-doc-page-type]=\"item.index.pageType\">\n\t\t\t\t\t\t\t\t{{ item.index.pageType }}\n\t\t\t\t\t\t\t</ng-doc-tag>\n\t\t\t\t\t\t\t<span class=\"ng-doc-search-option-breadcrumbs\" ng-doc-text>\n\t\t\t\t\t\t\t\t<ng-container *ngFor=\"let breadcrum of item.index.breadcrumbs; let i = index\">\n\t\t\t\t\t\t\t\t\t<span>{{ breadcrum }}</span>\n\t\t\t\t\t\t\t\t\t<span class=\"ng-doc-search-option-breadcrumb-divider\" *ngIf=\"i !== item.index.breadcrumbs.length - 1\"\n\t\t\t\t\t\t\t\t\t\t>/</span\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<h5\n\t\t\t\t\t\t\tclass=\"ng-doc-search-section-title\"\n\t\t\t\t\t\t\tng-doc-text\n\t\t\t\t\t\t\t[innerHTML]=\"\n\t\t\t\t\t\t\t\t(item.index.section\n\t\t\t\t\t\t\t\t\t| ngDocHighlighterPipe: (getPositions |
|
|
82
|
+
], template: "<ng-container *ngDocLet=\"search$ | async as state\">\n\t<ng-container *ngIf=\"mod === 'icon'; else searchInput\">\n\t\t<button ng-doc-button-icon size=\"large\" (click)=\"inputDropdown.toggle()\" ngDocDropdownOrigin>\n\t\t\t<ng-doc-icon icon=\"search\" [size]=\"24\"></ng-doc-icon>\n\n\t\t\t<ng-doc-dropdown\n\t\t\t\t[content]=\"dropdownContent\"\n\t\t\t\tpanelClass=\"ng-doc-search-dropdown\"\n\t\t\t\twidth=\"100%\"\n\t\t\t\theight=\"80vh\"\n\t\t\t\t#inputDropdown\n\t\t\t>\n\t\t\t\t<ng-template #dropdownContent>\n\t\t\t\t\t<div class=\"ng-doc-search-wrapper\">\n\t\t\t\t\t\t<ng-doc-input-wrapper [leftContent]=\"leftContent\" ngDocDropdownOrigin>\n\t\t\t\t\t\t\t<ng-template #leftContent>\n\t\t\t\t\t\t\t\t<ng-doc-icon icon=\"search\"></ng-doc-icon>\n\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tngDocInputString\n\t\t\t\t\t\t\t\t[(ngModel)]=\"searchTerm\"\n\t\t\t\t\t\t\t\t(ngModelChange)=\"query$.next($event)\"\n\t\t\t\t\t\t\t\tplaceholder=\"Search...\"\n\t\t\t\t\t\t\t\tngDocAutofocus\n\t\t\t\t\t\t\t\t[selectAll]=\"true\"\n\t\t\t\t\t\t\t\t#inputElement\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ng-doc-input-wrapper>\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"searchResults\"></ng-container>\n\t\t\t\t\t</div>\n\t\t\t\t</ng-template>\n\t\t\t</ng-doc-dropdown>\n\t\t</button>\n\t</ng-container>\n\n\t<ng-template #searchInput>\n\t\t<ng-doc-input-wrapper\n\t\t\t[leftContent]=\"leftContent\"\n\t\t\t[rightContent]=\"rightContent\"\n\t\t\tngDocDropdownOrigin\n\t\t\tngDocFocusCatcher\n\t\t\t(focusEvent)=\"inputElement.value ? dropdown.open() : null\"\n\t\t\t(click)=\"inputElement.value ? dropdown.open() : null\"\n\t\t\t#input\n\t\t>\n\t\t\t<ng-template #leftContent>\n\t\t\t\t<ng-doc-icon icon=\"search\"></ng-doc-icon>\n\t\t\t</ng-template>\n\t\t\t<input\n\t\t\t\tngDocInputString\n\t\t\t\t[(ngModel)]=\"searchTerm\"\n\t\t\t\t(ngModelChange)=\"query$.next($event); dropdown.open()\"\n\t\t\t\tplaceholder=\"Search...\"\n\t\t\t\t[ngDocHotkey]=\"{ctrlKey: false, altKey: false, shiftKey: false, code: 'Slash'}\"\n\t\t\t\t(ngDocHotkey)=\"inputElement.focus(); inputElement.select()\"\n\t\t\t\t#inputElement\n\t\t\t/>\n\t\t\t<ng-template #rightContent>\n\t\t\t\t<ng-doc-tag class=\"search-hotkey\">/</ng-doc-tag>\n\t\t\t</ng-template>\n\t\t\t<ng-doc-dropdown\n\t\t\t\t[content]=\"searchResults\"\n\t\t\t\tpositions=\"bottom-right\"\n\t\t\t\t[width]=\"input.elementRef.nativeElement.offsetWidth\"\n\t\t\t\tmaxHeight=\"calc(95vh - var(--ng-doc-navbar-height)\"\n\t\t\t\t#dropdown\n\t\t\t>\n\t\t\t\t<\n\t\t\t</ng-doc-dropdown>\n\t\t</ng-doc-input-wrapper>\n\t</ng-template>\n\n\t<ng-template #searchResults>\n\t\t<div class=\"ng-doc-search-result-content\" [attr.data-ng-doc-mod]=\"mod\">\n\t\t\t<ng-doc-data-list [items]=\"state?.result ?? []\" [itemContent]=\"itemContent\" [emptyContent]=\"emptyContent\">\n\t\t\t\t<ng-template let-item #itemContent>\n\t\t\t\t\t<a class=\"ng-doc-search-option\" [routerLink]=\"item.index.route\" [fragment]=\"item.index.fragment\">\n\t\t\t\t\t\t<div class=\"ng-doc-search-option-header\">\n\t\t\t\t\t\t\t<ng-doc-tag size=\"small\" [attr.data-ng-doc-page-type]=\"item.index.pageType\">\n\t\t\t\t\t\t\t\t{{ item.index.pageType }}\n\t\t\t\t\t\t\t</ng-doc-tag>\n\t\t\t\t\t\t\t<span class=\"ng-doc-search-option-breadcrumbs\" ng-doc-text>\n\t\t\t\t\t\t\t\t<ng-container *ngFor=\"let breadcrum of item.index.breadcrumbs; let i = index\">\n\t\t\t\t\t\t\t\t\t<span>{{ breadcrum }}</span>\n\t\t\t\t\t\t\t\t\t<span class=\"ng-doc-search-option-breadcrumb-divider\" *ngIf=\"i !== item.index.breadcrumbs.length - 1\"\n\t\t\t\t\t\t\t\t\t\t>/</span\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<h5\n\t\t\t\t\t\t\tclass=\"ng-doc-search-section-title\"\n\t\t\t\t\t\t\tng-doc-text\n\t\t\t\t\t\t\t[innerHTML]=\"\n\t\t\t\t\t\t\t\t(item.index.section\n\t\t\t\t\t\t\t\t\t| ngDocHighlighterPipe: (getPositions | execute: 'section':item)\n\t\t\t\t\t\t\t\t\t| ngDocSanitizeHtml) || item.index.title\n\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t></h5>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t*ngIf=\"item.index.content\"\n\t\t\t\t\t\t\tclass=\"ng-doc-search-content\"\n\t\t\t\t\t\t\t[innerHTML]=\"\n\t\t\t\t\t\t\t\titem.index.content | ngDocHighlighterPipe: (getPositions | execute: 'content':item) | ngDocSanitizeHtml\n\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\tng-doc-text\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</a>\n\t\t\t\t</ng-template>\n\t\t\t\t<ng-template #emptyContent>\n\t\t\t\t\t<ng-container *ngIf=\"!state?.pending\">\n\t\t\t\t\t\t<div class=\"ng-doc-search-empty\">\n\t\t\t\t\t\t\t<ng-container *ngIf=\"query$.value.length\">Nothing found</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"!query$.value.length\">Please enter your search query</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<ng-container *ngIf=\"state?.pending\">\n\t\t\t\t\t\t<div class=\"ng-doc-search-progress\">\n\t\t\t\t\t\t\t<ng-doc-spinner size=\"small\"></ng-doc-spinner>\n\t\t\t\t\t\t\tSearching...\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</ng-template>\n\t\t\t</ng-doc-data-list>\n\t\t</div>\n\t</ng-template>\n</ng-container>\n", styles: [":host{max-width:500px;--ng-doc-floated-border-radius: var(--ng-doc-base-gutter);--ng-doc-input-background-color: var(--ng-doc-base-1);--ng-doc-input-border: none;--ng-doc-input-border-hover: none;--ng-doc-icon-color: var(--ng-doc-base-8)}:host[data-ng-doc-mod=input]{width:480px}.ng-doc-search-result-content{height:100%;overflow:auto;--ng-doc-option-padding: 0}.ng-doc-search-result-content[data-ng-doc-mod=icon] .ng-doc-search-wrapper{padding:calc(var(--ng-doc-base-gutter) * 2) 0}.ng-doc-search-result-content[data-ng-doc-mod=icon] .ng-doc-search-option{padding:12px 16px}.ng-doc-search-wrapper{display:flex;flex-direction:column;height:100%;padding:calc(var(--ng-doc-base-gutter) * 2) 0}.ng-doc-search-wrapper ng-doc-input-wrapper{padding:0 calc(var(--ng-doc-base-gutter) * 2)}.ng-doc-search-wrapper .ng-doc-search-result-content{padding:0;margin-top:calc(var(--ng-doc-base-gutter) * 3)}.search-hotkey{display:flex;align-items:center;justify-content:center;width:calc(var(--ng-doc-base-gutter) * 3);height:calc(var(--ng-doc-base-gutter) * 3);margin-right:var(--ng-doc-base-gutter);--ng-doc-tag-border: 1px solid var(--ng-doc-base-7);--ng-doc-tag-color: var(--ng-doc-base-7);--ng-doc-tag-background: transparent}::ng-deep .ng-doc-search-dropdown{--ng-doc-overlay-border-radius: 0px !important}.ng-doc-search-option{display:block;padding:12px 36px;text-decoration:none}.ng-doc-search-option .ng-doc-search-option-header{display:flex;align-items:center}.ng-doc-search-option .ng-doc-search-option-header ng-doc-tag{text-transform:uppercase;margin-right:calc(var(--ng-doc-base-gutter) / 2);--ng-doc-font-weight: 900}.ng-doc-search-option .ng-doc-search-option-header ng-doc-tag[data-ng-doc-page-type=guide]{--ng-doc-tag-color: var(--ng-doc-guide-tag-color);--ng-doc-tag-background: var(--ng-doc-guide-tag-background)}.ng-doc-search-option .ng-doc-search-option-header ng-doc-tag[data-ng-doc-page-type=api]{--ng-doc-tag-color: var(--ng-doc-api-tag-color);--ng-doc-tag-background: var(--ng-doc-api-tag-background)}.ng-doc-search-option .ng-doc-search-option-header .ng-doc-search-option-breadcrumbs{--ng-doc-text: var(--ng-doc-text-muted);--ng-doc-font-size: 12px;--ng-doc-line-height: 16px;--ng-doc-font-weight: 600}.ng-doc-search-option .ng-doc-search-option-header .ng-doc-search-option-breadcrumbs .ng-doc-search-option-breadcrumb-divider{margin:0 6px}.ng-doc-search-option .ng-doc-search-section-title{display:block;color:var(--ng-doc-search-result-header-color, var(--ng-doc-text));--ng-doc-line-height: 20px;margin:4px 0}.ng-doc-search-option .ng-doc-search-content{display:block;color:var(--ng-doc-search-result-color, var(--ng-doc-text));--ng-doc-font-size: 14px;--ng-doc-line-height: 19px;--ng-doc-font-weight: 600}.ng-doc-search-empty{padding:0 22px}.ng-doc-search-progress{display:flex;align-items:center}.ng-doc-search-progress ng-doc-spinner{margin-right:var(--ng-doc-base-gutter)}\n"] }]
|
|
83
83
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.NgDocSearchEngine, decorators: [{
|
|
84
84
|
type: Optional
|
|
85
85
|
}] }]; }, propDecorators: { mod: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-doc-app-components-search.mjs","sources":["../../../../libs/app/components/search/search.component.ts","../../../../libs/app/components/search/search.component.html","../../../../libs/app/components/search/search.module.ts","../../../../libs/app/components/search/ng-doc-app-components-search.ts"],"sourcesContent":["import {AsyncPipe, NgFor, NgIf, NgTemplateOutlet} from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tforwardRef,\n\tHostBinding,\n\tInput,\n\tOptional,\n\tViewChild,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {RouterLink} from '@angular/router';\nimport {NgDocSearchEngine} from '@ng-doc/app/classes/search-engine';\nimport {NgDocSearchResult} from '@ng-doc/app/interfaces';\nimport {NgDocSanitizeHtmlPipe} from '@ng-doc/app/pipes';\nimport {\n\tNgDocAutofocusDirective,\n\tNgDocButtonIconComponent,\n\tNgDocDataListComponent,\n\tNgDocDropdownComponent,\n\tNgDocDropdownOriginDirective,\n\tNgDocFocusCatcherDirective,\n\tNgDocHighlighterPipe,\n\tNgDocHighlightPosition,\n\tNgDocHotkeyDirective,\n\tNgDocIconComponent,\n\tNgDocInputStringDirective,\n\tNgDocInputWrapperComponent,\n\tNgDocLetDirective,\n\tNgDocRunPipe,\n\tNgDocSpinnerComponent,\n\tNgDocTagComponent,\n\tNgDocTextComponent,\n\tobservableState,\n\tStatedObservable,\n} from '@ng-doc/ui-kit';\nimport {NgDocListHost} from '@ng-doc/ui-kit/classes';\nimport {UntilDestroy, untilDestroyed} from '@ngneat/until-destroy';\nimport {BehaviorSubject, NEVER} from 'rxjs';\nimport {skip, switchMap} from 'rxjs/operators';\n\n@Component({\n\tselector: 'ng-doc-search',\n\ttemplateUrl: './search.component.html',\n\tstyleUrls: ['./search.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NgDocListHost,\n\t\t\tuseExisting: forwardRef(() => NgDocSearchComponent),\n\t\t},\n\t],\n\tstandalone: true,\n\timports: [\n\t\tNgDocLetDirective,\n\t\tNgIf,\n\t\tNgDocButtonIconComponent,\n\t\tNgDocDropdownOriginDirective,\n\t\tNgDocIconComponent,\n\t\tNgDocDropdownComponent,\n\t\tNgDocInputWrapperComponent,\n\t\tNgDocInputStringDirective,\n\t\tFormsModule,\n\t\tNgDocAutofocusDirective,\n\t\tNgTemplateOutlet,\n\t\tNgDocFocusCatcherDirective,\n\t\tNgDocHotkeyDirective,\n\t\tNgDocTagComponent,\n\t\tNgDocDataListComponent,\n\t\tRouterLink,\n\t\tNgDocTextComponent,\n\t\tNgFor,\n\t\tNgDocSpinnerComponent,\n\t\tAsyncPipe,\n\t\tNgDocHighlighterPipe,\n\t\tNgDocRunPipe,\n\t\tNgDocSanitizeHtmlPipe,\n\t],\n})\n@UntilDestroy()\nexport class NgDocSearchComponent implements NgDocListHost {\n\t@Input()\n\t@HostBinding('attr.data-ng-doc-mod')\n\tmod: 'input' | 'icon' = 'input';\n\n\t@ViewChild('inputElement')\n\tinputElement?: ElementRef<HTMLElement>;\n\n\tsearchTerm: string = '';\n\n\treadonly query$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n\treadonly search$: StatedObservable<NgDocSearchResult[]>;\n\n\tconstructor(\n\t\tprivate readonly elementRef: ElementRef<HTMLElement>,\n\t\t@Optional()\n\t\tprivate readonly searchEngine?: NgDocSearchEngine,\n\t) {\n\t\tif (!this.searchEngine) {\n\t\t\tthrow new Error(`NgDoc: Search engine is not provided,\n\t\t\tplease check this article: https://ng-doc.com/getting-started/installation#importing-global-modules\n\t\t\tto learn how to provide it.`);\n\t\t}\n\n\t\tthis.search$ = this.query$.pipe(\n\t\t\tskip(1),\n\t\t\tswitchMap((term: string) => this.searchEngine?.search(term).pipe(observableState()) ?? NEVER),\n\t\t\tuntilDestroyed(this),\n\t\t);\n\t}\n\n\tget listHostOrigin(): ElementRef<HTMLElement> {\n\t\treturn this.inputElement ?? this.elementRef;\n\t}\n\n\tgetPositions<T extends NgDocSearchResult, K extends keyof T['positions']>(key: K, item: T): NgDocHighlightPosition[] {\n\t\treturn item.positions[key] ?? [];\n\t}\n}\n","<ng-container *ngDocLet=\"search$ | async as state\">\n\t<ng-container *ngIf=\"mod === 'icon'; else searchInput\">\n\t\t<button ng-doc-button-icon size=\"large\" (click)=\"inputDropdown.toggle()\" ngDocDropdownOrigin>\n\t\t\t<ng-doc-icon icon=\"search\" [size]=\"24\"></ng-doc-icon>\n\n\t\t\t<ng-doc-dropdown\n\t\t\t\t[content]=\"dropdownContent\"\n\t\t\t\tpanelClass=\"ng-doc-search-dropdown\"\n\t\t\t\twidth=\"100%\"\n\t\t\t\theight=\"80vh\"\n\t\t\t\t#inputDropdown\n\t\t\t>\n\t\t\t\t<ng-template #dropdownContent>\n\t\t\t\t\t<div class=\"ng-doc-search-wrapper\">\n\t\t\t\t\t\t<ng-doc-input-wrapper [leftContent]=\"leftContent\" ngDocDropdownOrigin>\n\t\t\t\t\t\t\t<ng-template #leftContent>\n\t\t\t\t\t\t\t\t<ng-doc-icon icon=\"search\"></ng-doc-icon>\n\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tngDocInputString\n\t\t\t\t\t\t\t\t[(ngModel)]=\"searchTerm\"\n\t\t\t\t\t\t\t\t(ngModelChange)=\"query$.next($event)\"\n\t\t\t\t\t\t\t\tplaceholder=\"Search...\"\n\t\t\t\t\t\t\t\tngDocAutofocus\n\t\t\t\t\t\t\t\t[selectAll]=\"true\"\n\t\t\t\t\t\t\t\t#inputElement\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ng-doc-input-wrapper>\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"searchResults\"></ng-container>\n\t\t\t\t\t</div>\n\t\t\t\t</ng-template>\n\t\t\t</ng-doc-dropdown>\n\t\t</button>\n\t</ng-container>\n\n\t<ng-template #searchInput>\n\t\t<ng-doc-input-wrapper\n\t\t\t[leftContent]=\"leftContent\"\n\t\t\t[rightContent]=\"rightContent\"\n\t\t\tngDocDropdownOrigin\n\t\t\tngDocFocusCatcher\n\t\t\t(focusEvent)=\"inputElement.value ? dropdown.open() : null\"\n\t\t\t(click)=\"inputElement.value ? dropdown.open() : null\"\n\t\t\t#input\n\t\t>\n\t\t\t<ng-template #leftContent>\n\t\t\t\t<ng-doc-icon icon=\"search\"></ng-doc-icon>\n\t\t\t</ng-template>\n\t\t\t<input\n\t\t\t\tngDocInputString\n\t\t\t\t[(ngModel)]=\"searchTerm\"\n\t\t\t\t(ngModelChange)=\"query$.next($event); dropdown.open()\"\n\t\t\t\tplaceholder=\"Search...\"\n\t\t\t\t[ngDocHotkey]=\"{ctrlKey: false, altKey: false, shiftKey: false, code: 'Slash'}\"\n\t\t\t\t(ngDocHotkey)=\"inputElement.focus(); inputElement.select()\"\n\t\t\t\t#inputElement\n\t\t\t/>\n\t\t\t<ng-template #rightContent>\n\t\t\t\t<ng-doc-tag class=\"search-hotkey\">/</ng-doc-tag>\n\t\t\t</ng-template>\n\t\t\t<ng-doc-dropdown\n\t\t\t\t[content]=\"searchResults\"\n\t\t\t\tpositions=\"bottom-right\"\n\t\t\t\t[width]=\"input.elementRef.nativeElement.offsetWidth\"\n\t\t\t\tmaxHeight=\"calc(95vh - var(--ng-doc-navbar-height)\"\n\t\t\t\t#dropdown\n\t\t\t>\n\t\t\t\t<\n\t\t\t</ng-doc-dropdown>\n\t\t</ng-doc-input-wrapper>\n\t</ng-template>\n\n\t<ng-template #searchResults>\n\t\t<div class=\"ng-doc-search-result-content\" [attr.data-ng-doc-mod]=\"mod\">\n\t\t\t<ng-doc-data-list [items]=\"state?.result ?? []\" [itemContent]=\"itemContent\" [emptyContent]=\"emptyContent\">\n\t\t\t\t<ng-template let-item #itemContent>\n\t\t\t\t\t<a class=\"ng-doc-search-option\" [routerLink]=\"item.index.route\" [fragment]=\"item.index.fragment\">\n\t\t\t\t\t\t<div class=\"ng-doc-search-option-header\">\n\t\t\t\t\t\t\t<ng-doc-tag size=\"small\" [attr.data-ng-doc-page-type]=\"item.index.pageType\">\n\t\t\t\t\t\t\t\t{{ item.index.pageType }}\n\t\t\t\t\t\t\t</ng-doc-tag>\n\t\t\t\t\t\t\t<span class=\"ng-doc-search-option-breadcrumbs\" ng-doc-text>\n\t\t\t\t\t\t\t\t<ng-container *ngFor=\"let breadcrum of item.index.breadcrumbs; let i = index\">\n\t\t\t\t\t\t\t\t\t<span>{{ breadcrum }}</span>\n\t\t\t\t\t\t\t\t\t<span class=\"ng-doc-search-option-breadcrumb-divider\" *ngIf=\"i !== item.index.breadcrumbs.length - 1\"\n\t\t\t\t\t\t\t\t\t\t>/</span\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<h5\n\t\t\t\t\t\t\tclass=\"ng-doc-search-section-title\"\n\t\t\t\t\t\t\tng-doc-text\n\t\t\t\t\t\t\t[innerHTML]=\"\n\t\t\t\t\t\t\t\t(item.index.section\n\t\t\t\t\t\t\t\t\t| ngDocHighlighterPipe: (getPositions | ngDocRun: 'section':item)\n\t\t\t\t\t\t\t\t\t| ngDocSanitizeHtml) || item.index.title\n\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t></h5>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t*ngIf=\"item.index.content\"\n\t\t\t\t\t\t\tclass=\"ng-doc-search-content\"\n\t\t\t\t\t\t\t[innerHTML]=\"\n\t\t\t\t\t\t\t\titem.index.content | ngDocHighlighterPipe: (getPositions | ngDocRun: 'content':item) | ngDocSanitizeHtml\n\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\tng-doc-text\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</a>\n\t\t\t\t</ng-template>\n\t\t\t\t<ng-template #emptyContent>\n\t\t\t\t\t<ng-container *ngIf=\"!state?.pending\">\n\t\t\t\t\t\t<div class=\"ng-doc-search-empty\">\n\t\t\t\t\t\t\t<ng-container *ngIf=\"query$.value.length\">Nothing found</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"!query$.value.length\">Please enter your search query</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<ng-container *ngIf=\"state?.pending\">\n\t\t\t\t\t\t<div class=\"ng-doc-search-progress\">\n\t\t\t\t\t\t\t<ng-doc-spinner size=\"small\"></ng-doc-spinner>\n\t\t\t\t\t\t\tSearching...\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</ng-template>\n\t\t\t</ng-doc-data-list>\n\t\t</div>\n\t</ng-template>\n</ng-container>\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {RouterModule} from '@angular/router';\nimport {NgDocDropdownModule} from '@ng-doc/ui-kit';\n\nimport {NgDocSearchComponent} from './search.component';\n\n@NgModule({\n\timports: [CommonModule, FormsModule, RouterModule, NgDocDropdownModule, NgDocSearchComponent],\n\texports: [NgDocSearchComponent],\n})\nexport class NgDocSearchModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-doc-app-components-search.mjs","sources":["../../../../libs/app/components/search/search.component.ts","../../../../libs/app/components/search/search.component.html","../../../../libs/app/components/search/search.module.ts","../../../../libs/app/components/search/ng-doc-app-components-search.ts"],"sourcesContent":["import {AsyncPipe, NgFor, NgIf, NgTemplateOutlet} from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tforwardRef,\n\tHostBinding,\n\tInput,\n\tOptional,\n\tViewChild,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {RouterLink} from '@angular/router';\nimport {NgDocSearchEngine} from '@ng-doc/app/classes/search-engine';\nimport {NgDocSearchResult} from '@ng-doc/app/interfaces';\nimport {NgDocSanitizeHtmlPipe} from '@ng-doc/app/pipes';\nimport {\n\tNgDocAutofocusDirective,\n\tNgDocButtonIconComponent,\n\tNgDocDataListComponent,\n\tNgDocDropdownComponent,\n\tNgDocDropdownOriginDirective,\n\tNgDocExecutePipe,\n\tNgDocFocusCatcherDirective,\n\tNgDocHighlighterPipe,\n\tNgDocHighlightPosition,\n\tNgDocHotkeyDirective,\n\tNgDocIconComponent,\n\tNgDocInputStringDirective,\n\tNgDocInputWrapperComponent,\n\tNgDocLetDirective,\n\tNgDocSpinnerComponent,\n\tNgDocTagComponent,\n\tNgDocTextComponent,\n\tobservableState,\n\tStatedObservable,\n} from '@ng-doc/ui-kit';\nimport {NgDocListHost} from '@ng-doc/ui-kit/classes';\nimport {UntilDestroy, untilDestroyed} from '@ngneat/until-destroy';\nimport {BehaviorSubject, NEVER} from 'rxjs';\nimport {skip, switchMap} from 'rxjs/operators';\n\n@Component({\n\tselector: 'ng-doc-search',\n\ttemplateUrl: './search.component.html',\n\tstyleUrls: ['./search.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NgDocListHost,\n\t\t\tuseExisting: forwardRef(() => NgDocSearchComponent),\n\t\t},\n\t],\n\tstandalone: true,\n\timports: [\n\t\tNgDocLetDirective,\n\t\tNgIf,\n\t\tNgDocButtonIconComponent,\n\t\tNgDocDropdownOriginDirective,\n\t\tNgDocIconComponent,\n\t\tNgDocDropdownComponent,\n\t\tNgDocInputWrapperComponent,\n\t\tNgDocInputStringDirective,\n\t\tFormsModule,\n\t\tNgDocAutofocusDirective,\n\t\tNgTemplateOutlet,\n\t\tNgDocFocusCatcherDirective,\n\t\tNgDocHotkeyDirective,\n\t\tNgDocTagComponent,\n\t\tNgDocDataListComponent,\n\t\tRouterLink,\n\t\tNgDocTextComponent,\n\t\tNgFor,\n\t\tNgDocSpinnerComponent,\n\t\tAsyncPipe,\n\t\tNgDocHighlighterPipe,\n\t\tNgDocExecutePipe,\n\t\tNgDocSanitizeHtmlPipe,\n\t],\n})\n@UntilDestroy()\nexport class NgDocSearchComponent implements NgDocListHost {\n\t@Input()\n\t@HostBinding('attr.data-ng-doc-mod')\n\tmod: 'input' | 'icon' = 'input';\n\n\t@ViewChild('inputElement')\n\tinputElement?: ElementRef<HTMLElement>;\n\n\tsearchTerm: string = '';\n\n\treadonly query$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n\treadonly search$: StatedObservable<NgDocSearchResult[]>;\n\n\tconstructor(\n\t\tprivate readonly elementRef: ElementRef<HTMLElement>,\n\t\t@Optional()\n\t\tprivate readonly searchEngine?: NgDocSearchEngine,\n\t) {\n\t\tif (!this.searchEngine) {\n\t\t\tthrow new Error(`NgDoc: Search engine is not provided,\n\t\t\tplease check this article: https://ng-doc.com/getting-started/installation#importing-global-modules\n\t\t\tto learn how to provide it.`);\n\t\t}\n\n\t\tthis.search$ = this.query$.pipe(\n\t\t\tskip(1),\n\t\t\tswitchMap((term: string) => this.searchEngine?.search(term).pipe(observableState()) ?? NEVER),\n\t\t\tuntilDestroyed(this),\n\t\t);\n\t}\n\n\tget listHostOrigin(): ElementRef<HTMLElement> {\n\t\treturn this.inputElement ?? this.elementRef;\n\t}\n\n\tgetPositions<T extends NgDocSearchResult, K extends keyof T['positions']>(key: K, item: T): NgDocHighlightPosition[] {\n\t\treturn item.positions[key] ?? [];\n\t}\n}\n","<ng-container *ngDocLet=\"search$ | async as state\">\n\t<ng-container *ngIf=\"mod === 'icon'; else searchInput\">\n\t\t<button ng-doc-button-icon size=\"large\" (click)=\"inputDropdown.toggle()\" ngDocDropdownOrigin>\n\t\t\t<ng-doc-icon icon=\"search\" [size]=\"24\"></ng-doc-icon>\n\n\t\t\t<ng-doc-dropdown\n\t\t\t\t[content]=\"dropdownContent\"\n\t\t\t\tpanelClass=\"ng-doc-search-dropdown\"\n\t\t\t\twidth=\"100%\"\n\t\t\t\theight=\"80vh\"\n\t\t\t\t#inputDropdown\n\t\t\t>\n\t\t\t\t<ng-template #dropdownContent>\n\t\t\t\t\t<div class=\"ng-doc-search-wrapper\">\n\t\t\t\t\t\t<ng-doc-input-wrapper [leftContent]=\"leftContent\" ngDocDropdownOrigin>\n\t\t\t\t\t\t\t<ng-template #leftContent>\n\t\t\t\t\t\t\t\t<ng-doc-icon icon=\"search\"></ng-doc-icon>\n\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tngDocInputString\n\t\t\t\t\t\t\t\t[(ngModel)]=\"searchTerm\"\n\t\t\t\t\t\t\t\t(ngModelChange)=\"query$.next($event)\"\n\t\t\t\t\t\t\t\tplaceholder=\"Search...\"\n\t\t\t\t\t\t\t\tngDocAutofocus\n\t\t\t\t\t\t\t\t[selectAll]=\"true\"\n\t\t\t\t\t\t\t\t#inputElement\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ng-doc-input-wrapper>\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"searchResults\"></ng-container>\n\t\t\t\t\t</div>\n\t\t\t\t</ng-template>\n\t\t\t</ng-doc-dropdown>\n\t\t</button>\n\t</ng-container>\n\n\t<ng-template #searchInput>\n\t\t<ng-doc-input-wrapper\n\t\t\t[leftContent]=\"leftContent\"\n\t\t\t[rightContent]=\"rightContent\"\n\t\t\tngDocDropdownOrigin\n\t\t\tngDocFocusCatcher\n\t\t\t(focusEvent)=\"inputElement.value ? dropdown.open() : null\"\n\t\t\t(click)=\"inputElement.value ? dropdown.open() : null\"\n\t\t\t#input\n\t\t>\n\t\t\t<ng-template #leftContent>\n\t\t\t\t<ng-doc-icon icon=\"search\"></ng-doc-icon>\n\t\t\t</ng-template>\n\t\t\t<input\n\t\t\t\tngDocInputString\n\t\t\t\t[(ngModel)]=\"searchTerm\"\n\t\t\t\t(ngModelChange)=\"query$.next($event); dropdown.open()\"\n\t\t\t\tplaceholder=\"Search...\"\n\t\t\t\t[ngDocHotkey]=\"{ctrlKey: false, altKey: false, shiftKey: false, code: 'Slash'}\"\n\t\t\t\t(ngDocHotkey)=\"inputElement.focus(); inputElement.select()\"\n\t\t\t\t#inputElement\n\t\t\t/>\n\t\t\t<ng-template #rightContent>\n\t\t\t\t<ng-doc-tag class=\"search-hotkey\">/</ng-doc-tag>\n\t\t\t</ng-template>\n\t\t\t<ng-doc-dropdown\n\t\t\t\t[content]=\"searchResults\"\n\t\t\t\tpositions=\"bottom-right\"\n\t\t\t\t[width]=\"input.elementRef.nativeElement.offsetWidth\"\n\t\t\t\tmaxHeight=\"calc(95vh - var(--ng-doc-navbar-height)\"\n\t\t\t\t#dropdown\n\t\t\t>\n\t\t\t\t<\n\t\t\t</ng-doc-dropdown>\n\t\t</ng-doc-input-wrapper>\n\t</ng-template>\n\n\t<ng-template #searchResults>\n\t\t<div class=\"ng-doc-search-result-content\" [attr.data-ng-doc-mod]=\"mod\">\n\t\t\t<ng-doc-data-list [items]=\"state?.result ?? []\" [itemContent]=\"itemContent\" [emptyContent]=\"emptyContent\">\n\t\t\t\t<ng-template let-item #itemContent>\n\t\t\t\t\t<a class=\"ng-doc-search-option\" [routerLink]=\"item.index.route\" [fragment]=\"item.index.fragment\">\n\t\t\t\t\t\t<div class=\"ng-doc-search-option-header\">\n\t\t\t\t\t\t\t<ng-doc-tag size=\"small\" [attr.data-ng-doc-page-type]=\"item.index.pageType\">\n\t\t\t\t\t\t\t\t{{ item.index.pageType }}\n\t\t\t\t\t\t\t</ng-doc-tag>\n\t\t\t\t\t\t\t<span class=\"ng-doc-search-option-breadcrumbs\" ng-doc-text>\n\t\t\t\t\t\t\t\t<ng-container *ngFor=\"let breadcrum of item.index.breadcrumbs; let i = index\">\n\t\t\t\t\t\t\t\t\t<span>{{ breadcrum }}</span>\n\t\t\t\t\t\t\t\t\t<span class=\"ng-doc-search-option-breadcrumb-divider\" *ngIf=\"i !== item.index.breadcrumbs.length - 1\"\n\t\t\t\t\t\t\t\t\t\t>/</span\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<h5\n\t\t\t\t\t\t\tclass=\"ng-doc-search-section-title\"\n\t\t\t\t\t\t\tng-doc-text\n\t\t\t\t\t\t\t[innerHTML]=\"\n\t\t\t\t\t\t\t\t(item.index.section\n\t\t\t\t\t\t\t\t\t| ngDocHighlighterPipe: (getPositions | execute: 'section':item)\n\t\t\t\t\t\t\t\t\t| ngDocSanitizeHtml) || item.index.title\n\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t></h5>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t*ngIf=\"item.index.content\"\n\t\t\t\t\t\t\tclass=\"ng-doc-search-content\"\n\t\t\t\t\t\t\t[innerHTML]=\"\n\t\t\t\t\t\t\t\titem.index.content | ngDocHighlighterPipe: (getPositions | execute: 'content':item) | ngDocSanitizeHtml\n\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\tng-doc-text\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</a>\n\t\t\t\t</ng-template>\n\t\t\t\t<ng-template #emptyContent>\n\t\t\t\t\t<ng-container *ngIf=\"!state?.pending\">\n\t\t\t\t\t\t<div class=\"ng-doc-search-empty\">\n\t\t\t\t\t\t\t<ng-container *ngIf=\"query$.value.length\">Nothing found</ng-container>\n\t\t\t\t\t\t\t<ng-container *ngIf=\"!query$.value.length\">Please enter your search query</ng-container>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ng-container>\n\t\t\t\t\t<ng-container *ngIf=\"state?.pending\">\n\t\t\t\t\t\t<div class=\"ng-doc-search-progress\">\n\t\t\t\t\t\t\t<ng-doc-spinner size=\"small\"></ng-doc-spinner>\n\t\t\t\t\t\t\tSearching...\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</ng-template>\n\t\t\t</ng-doc-data-list>\n\t\t</div>\n\t</ng-template>\n</ng-container>\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {RouterModule} from '@angular/router';\nimport {NgDocDropdownModule} from '@ng-doc/ui-kit';\n\nimport {NgDocSearchComponent} from './search.component';\n\n@NgModule({\n\timports: [CommonModule, FormsModule, RouterModule, NgDocDropdownModule, NgDocSearchComponent],\n\texports: [NgDocSearchComponent],\n})\nexport class NgDocSearchModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as i1 from '@angular/common';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from '@angular/core';
|
|
4
|
+
import { Component, ChangeDetectionStrategy, Input } from '@angular/core';
|
|
5
|
+
import { NgDocSanitizeHtmlPipe } from '@ng-doc/app/pipes';
|
|
6
|
+
import { NgDocTabGroupComponent, NgDocTabComponent, NgDocExecutePipe, NgDocBindPipe } from '@ng-doc/ui-kit';
|
|
7
|
+
|
|
8
|
+
class NgDocTabsComponent {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.tabs = [];
|
|
11
|
+
}
|
|
12
|
+
getActiveIndex(tabs) {
|
|
13
|
+
return Math.max(tabs.findIndex((tab) => tab.active), 0);
|
|
14
|
+
}
|
|
15
|
+
appendElement(element, parent) {
|
|
16
|
+
parent.appendChild(element);
|
|
17
|
+
}
|
|
18
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgDocTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgDocTabsComponent, isStandalone: true, selector: "ng-doc-tabs", inputs: { tabs: "tabs" }, ngImport: i0, template: "<ng-doc-tab-group [openedTab]=\"getActiveIndex | execute: tabs\">\n\t<ng-doc-tab *ngFor=\"let tab of tabs; let i = index\" [label]=\"label\" [content]=\"content\" [id]=\"i\">\n\t\t<ng-template #label>\n\t\t\t{{tab.title}}\n\t\t</ng-template>\n\t\t<ng-template #content>\n\t\t\t<div #element>\n\t\t\t\t{{ appendElement | execute: tab.content: element }}\n\t\t\t</div>\n\t\t</ng-template>\n\t</ng-doc-tab>\n</ng-doc-tab-group>\n", styles: [":host{display:block;border-radius:var(--ng-doc-tabs-border-radius);border:var(--ng-doc-tabs-border);margin:var(--ng-doc-tabs-margin);overflow:hidden;--ng-doc-code-margin: 0;--ng-doc-code-border-radius: 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: NgDocTabGroupComponent, selector: "ng-doc-tab-group", inputs: ["openedTab"] }, { kind: "component", type: NgDocTabComponent, selector: "ng-doc-tab", inputs: ["label", "id", "content"] }, { kind: "pipe", type: NgDocExecutePipe, name: "execute" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
20
|
+
}
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgDocTabsComponent, decorators: [{
|
|
22
|
+
type: Component,
|
|
23
|
+
args: [{ selector: 'ng-doc-tabs', standalone: true, imports: [
|
|
24
|
+
CommonModule,
|
|
25
|
+
NgDocTabGroupComponent,
|
|
26
|
+
NgDocTabComponent,
|
|
27
|
+
NgDocSanitizeHtmlPipe,
|
|
28
|
+
NgDocExecutePipe,
|
|
29
|
+
NgDocBindPipe,
|
|
30
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-doc-tab-group [openedTab]=\"getActiveIndex | execute: tabs\">\n\t<ng-doc-tab *ngFor=\"let tab of tabs; let i = index\" [label]=\"label\" [content]=\"content\" [id]=\"i\">\n\t\t<ng-template #label>\n\t\t\t{{tab.title}}\n\t\t</ng-template>\n\t\t<ng-template #content>\n\t\t\t<div #element>\n\t\t\t\t{{ appendElement | execute: tab.content: element }}\n\t\t\t</div>\n\t\t</ng-template>\n\t</ng-doc-tab>\n</ng-doc-tab-group>\n", styles: [":host{display:block;border-radius:var(--ng-doc-tabs-border-radius);border:var(--ng-doc-tabs-border);margin:var(--ng-doc-tabs-margin);overflow:hidden;--ng-doc-code-margin: 0;--ng-doc-code-border-radius: 0}\n"] }]
|
|
31
|
+
}], propDecorators: { tabs: [{
|
|
32
|
+
type: Input
|
|
33
|
+
}] } });
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Generated bundle index. Do not edit.
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
export { NgDocTabsComponent };
|
|
40
|
+
//# sourceMappingURL=ng-doc-app-components-tabs.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ng-doc-app-components-tabs.mjs","sources":["../../../../libs/app/components/tabs/tabs.component.ts","../../../../libs/app/components/tabs/tabs.component.html","../../../../libs/app/components/tabs/ng-doc-app-components-tabs.ts"],"sourcesContent":["import {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {NgDocTab} from '@ng-doc/app/interfaces';\nimport {NgDocSanitizeHtmlPipe} from '@ng-doc/app/pipes';\nimport {NgDocBindPipe, NgDocExecutePipe, NgDocTabComponent, NgDocTabGroupComponent} from '@ng-doc/ui-kit';\n\n@Component({\n\tselector: 'ng-doc-tabs',\n\tstandalone: true,\n\timports: [\n\t\tCommonModule,\n\t\tNgDocTabGroupComponent,\n\t\tNgDocTabComponent,\n\t\tNgDocSanitizeHtmlPipe,\n\t\tNgDocExecutePipe,\n\t\tNgDocBindPipe,\n\t],\n\ttemplateUrl: './tabs.component.html',\n\tstyleUrls: ['./tabs.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgDocTabsComponent {\n\t@Input()\n\ttabs: NgDocTab[] = [];\n\n\tgetActiveIndex(tabs: NgDocTab[]): number {\n\t\treturn Math.max(\n\t\t\ttabs.findIndex((tab: NgDocTab) => tab.active),\n\t\t\t0,\n\t\t);\n\t}\n\n\tappendElement(element: Element, parent: Element): void {\n\t\tparent.appendChild(element);\n\t}\n}\n","<ng-doc-tab-group [openedTab]=\"getActiveIndex | execute: tabs\">\n\t<ng-doc-tab *ngFor=\"let tab of tabs; let i = index\" [label]=\"label\" [content]=\"content\" [id]=\"i\">\n\t\t<ng-template #label>\n\t\t\t{{tab.title}}\n\t\t</ng-template>\n\t\t<ng-template #content>\n\t\t\t<div #element>\n\t\t\t\t{{ appendElement | execute: tab.content: element }}\n\t\t\t</div>\n\t\t</ng-template>\n\t</ng-doc-tab>\n</ng-doc-tab-group>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAMA,MAea,kBAAkB,CAAA;AAf/B,IAAA,WAAA,GAAA;QAiBC,IAAI,CAAA,IAAA,GAAe,EAAE,CAAC;AAYtB,KAAA;AAVA,IAAA,cAAc,CAAC,IAAgB,EAAA;QAC9B,OAAO,IAAI,CAAC,GAAG,CACd,IAAI,CAAC,SAAS,CAAC,CAAC,GAAa,KAAK,GAAG,CAAC,MAAM,CAAC,EAC7C,CAAC,CACD,CAAC;KACF;IAED,aAAa,CAAC,OAAgB,EAAE,MAAe,EAAA;AAC9C,QAAA,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;KAC5B;8GAbW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrB/B,4aAYA,EDFE,MAAA,EAAA,CAAA,gNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,4JACZ,sBAAsB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,iBAAiB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAEjB,gBAAgB,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAOL,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAf9B,SAAS;+BACC,aAAa,EAAA,UAAA,EACX,IAAI,EACP,OAAA,EAAA;wBACR,YAAY;wBACZ,sBAAsB;wBACtB,iBAAiB;wBACjB,qBAAqB;wBACrB,gBAAgB;wBAChB,aAAa;qBACb,EAGgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4aAAA,EAAA,MAAA,EAAA,CAAA,gNAAA,CAAA,EAAA,CAAA;8BAI/C,IAAI,EAAA,CAAA;sBADH,KAAK;;;AEtBP;;AAEG;;;;"}
|
|
@@ -14,6 +14,7 @@ export * from '@ng-doc/app/components/root';
|
|
|
14
14
|
export * from '@ng-doc/app/components/search';
|
|
15
15
|
export * from '@ng-doc/app/components/search-result';
|
|
16
16
|
export * from '@ng-doc/app/components/sidebar';
|
|
17
|
+
export * from '@ng-doc/app/components/tabs';
|
|
17
18
|
export * from '@ng-doc/app/components/theme-toggle';
|
|
18
19
|
export * from '@ng-doc/app/components/toc';
|
|
19
20
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-doc-app-components.mjs","sources":["../../../../libs/app/components/ng-doc-app-components.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ng-doc-app-components.mjs","sources":["../../../../libs/app/components/ng-doc-app-components.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;;AAEG"}
|
|
@@ -16,7 +16,7 @@ class NgDocCodeProcessorDirective extends NgDocHtmlProcessor {
|
|
|
16
16
|
return {
|
|
17
17
|
inputs: {
|
|
18
18
|
copyButton: element.getAttribute('copyButton') !== 'false',
|
|
19
|
-
|
|
19
|
+
name: element.getAttribute('name') || undefined,
|
|
20
20
|
lineNumbers: element.getAttribute('lineNumbers') !== 'false',
|
|
21
21
|
},
|
|
22
22
|
content: [[element.closest('pre') ?? element]],
|