@ng-doc/app 16.9.0 → 16.11.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.
@@ -5,7 +5,7 @@ import * as i1 from '@ng-doc/app/classes/root-page';
5
5
  import { NgDocCodeComponent } from '@ng-doc/app/components/code';
6
6
  import { NgDocDemoDisplayerComponent } from '@ng-doc/app/components/demo-displayer';
7
7
  import { asArray } from '@ng-doc/core/helpers/as-array';
8
- import { NgDocTabGroupComponent, NgDocTabComponent } from '@ng-doc/ui-kit';
8
+ import { NgDocTabGroupComponent, NgDocTabComponent, NgDocIconComponent, NgDocExecutePipe } from '@ng-doc/ui-kit';
9
9
  import * as i2 from '@tinkoff/ng-polymorpheus';
10
10
  import { PolymorpheusComponent, PolymorpheusModule } from '@tinkoff/ng-polymorpheus';
11
11
 
@@ -22,6 +22,9 @@ class NgDocDemoComponent {
22
22
  this.demo = this.getDemo();
23
23
  this.assets = this.getAssets();
24
24
  }
25
+ getOpenedAssetId(assets) {
26
+ return assets.find((asset) => asset.opened)?.title;
27
+ }
25
28
  getDemo() {
26
29
  if (this.componentName) {
27
30
  const component = this.rootPage.page?.demos && this.rootPage.page.demos[this.componentName];
@@ -36,7 +39,7 @@ class NgDocDemoComponent {
36
39
  return [];
37
40
  }
38
41
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgDocDemoComponent, deps: [{ token: i1.NgDocRootPage }], target: i0.ɵɵFactoryTarget.Component }); }
39
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgDocDemoComponent, isStandalone: true, selector: "ng-doc-demo", inputs: { componentName: "componentName", options: "options" }, host: { properties: { "class": "this.classes" } }, ngImport: i0, template: "<ng-container *ngIf=\"options.container ?? true; else demoTemplate\">\n\t<ng-doc-demo-displayer [codeContent]=\"codeContent\" [expanded]=\"!!options.expanded\">\n\t\t<ng-container *ngTemplateOutlet=\"demoTemplate\"></ng-container>\n\t\t<ng-template #codeContent>\n\t\t\t<ng-container *ngIf=\"assets.length === 1\">\n\t\t\t\t<ng-doc-code *ngFor=\"let asset of assets\" [html]=\"asset.code\"></ng-doc-code>\n\t\t\t</ng-container>\n\n\t\t\t<ng-container *ngIf=\"assets.length > 1\">\n\t\t\t\t<ng-doc-tab-group [openedTab]=\"options.defaultTab\">\n\t\t\t\t\t<ng-doc-tab\n\t\t\t\t\t\t*ngFor=\"let asset of assets\"\n\t\t\t\t\t\t[id]=\"asset.title\"\n\t\t\t\t\t\t[label]=\"asset.title\"\n\t\t\t\t\t\t[content]=\"assetContent\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ng-template #assetContent>\n\t\t\t\t\t\t\t<ng-doc-code [html]=\"asset.code\"></ng-doc-code>\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t</ng-doc-tab>\n\t\t\t\t</ng-doc-tab-group>\n\t\t\t</ng-container>\n\t\t</ng-template>\n\t</ng-doc-demo-displayer>\n</ng-container>\n\n<ng-template #demoTemplate>\n\t<ng-container *polymorpheusOutlet=\"demo ?? ''; context: {}\"></ng-container>\n</ng-template>\n", styles: [":host{display:block;--ng-doc-tab-group-background: var(--ng-doc-code-background)}:host .ng-doc-example{padding:calc(var(--ng-doc-base-gutter) * 3)}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgDocDemoDisplayerComponent, selector: "ng-doc-demo-displayer", inputs: ["codeContent", "code", "language", "container", "border", "expanded"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: NgDocCodeComponent, selector: "ng-doc-code", inputs: ["html", "copyButton", "name", "icon", "lineNumbers"] }, { kind: "component", type: NgDocTabGroupComponent, selector: "ng-doc-tab-group", inputs: ["openedTab"] }, { kind: "component", type: NgDocTabComponent, selector: "ng-doc-tab", inputs: ["label", "id", "content"] }, { kind: "ngmodule", type: PolymorpheusModule }, { kind: "directive", type: i2.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
42
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgDocDemoComponent, isStandalone: true, selector: "ng-doc-demo", inputs: { componentName: "componentName", options: "options" }, host: { properties: { "class": "this.classes" } }, ngImport: i0, template: "<ng-container *ngIf=\"options.container ?? true; else demoTemplate\">\n\t<ng-doc-demo-displayer [codeContent]=\"codeContent\" [expanded]=\"!!options.expanded\">\n\t\t<ng-container *ngTemplateOutlet=\"demoTemplate\"></ng-container>\n\t\t<ng-template #codeContent>\n\t\t\t<ng-container *ngIf=\"assets.length === 1\">\n\t\t\t\t<ng-doc-code *ngFor=\"let asset of assets\" [html]=\"asset.code\"></ng-doc-code>\n\t\t\t</ng-container>\n\n\t\t\t<ng-container *ngIf=\"assets.length > 1\">\n\t\t\t\t<ng-doc-tab-group [openedTab]=\"(getOpenedAssetId | execute: assets) ?? options.defaultTab\">\n\t\t\t\t\t<ng-doc-tab\n\t\t\t\t\t\t*ngFor=\"let asset of assets\"\n\t\t\t\t\t\t[id]=\"asset.title\"\n\t\t\t\t\t\t[label]=\"label\"\n\t\t\t\t\t\t[content]=\"assetContent\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ng-template #label>\n\t\t\t\t\t\t\t\t<ng-doc-icon [customIcon]=\"asset.icon\" *ngIf=\"asset.icon\"></ng-doc-icon>\n\t\t\t\t\t\t\t\t{{ asset.title }}\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t<ng-template #assetContent>\n\t\t\t\t\t\t\t<ng-doc-code [html]=\"asset.code\"></ng-doc-code>\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t</ng-doc-tab>\n\t\t\t\t</ng-doc-tab-group>\n\t\t\t</ng-container>\n\t\t</ng-template>\n\t</ng-doc-demo-displayer>\n</ng-container>\n\n<ng-template #demoTemplate>\n\t<ng-container *polymorpheusOutlet=\"demo ?? ''; context: {}\"></ng-container>\n</ng-template>\n", styles: [":host{display:block;--ng-doc-tab-group-background: var(--ng-doc-code-background)}:host .ng-doc-example{padding:calc(var(--ng-doc-base-gutter) * 3)}:host ng-doc-icon{margin-right:calc(var(--ng-doc-base-gutter) / 2)}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgDocDemoDisplayerComponent, selector: "ng-doc-demo-displayer", inputs: ["codeContent", "code", "language", "container", "border", "expanded"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: NgDocCodeComponent, selector: "ng-doc-code", inputs: ["html", "copyButton", "name", "icon", "lineNumbers"] }, { kind: "component", type: NgDocTabGroupComponent, selector: "ng-doc-tab-group", inputs: ["openedTab"] }, { kind: "component", type: NgDocTabComponent, selector: "ng-doc-tab", inputs: ["label", "id", "content"] }, { kind: "ngmodule", type: PolymorpheusModule }, { kind: "directive", type: i2.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "component", type: NgDocIconComponent, selector: "ng-doc-icon", inputs: ["icon", "customIcon", "size"] }, { kind: "pipe", type: NgDocExecutePipe, name: "execute" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
40
43
  }
41
44
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgDocDemoComponent, decorators: [{
42
45
  type: Component,
@@ -49,7 +52,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
49
52
  NgDocTabGroupComponent,
50
53
  NgDocTabComponent,
51
54
  PolymorpheusModule,
52
- ], template: "<ng-container *ngIf=\"options.container ?? true; else demoTemplate\">\n\t<ng-doc-demo-displayer [codeContent]=\"codeContent\" [expanded]=\"!!options.expanded\">\n\t\t<ng-container *ngTemplateOutlet=\"demoTemplate\"></ng-container>\n\t\t<ng-template #codeContent>\n\t\t\t<ng-container *ngIf=\"assets.length === 1\">\n\t\t\t\t<ng-doc-code *ngFor=\"let asset of assets\" [html]=\"asset.code\"></ng-doc-code>\n\t\t\t</ng-container>\n\n\t\t\t<ng-container *ngIf=\"assets.length > 1\">\n\t\t\t\t<ng-doc-tab-group [openedTab]=\"options.defaultTab\">\n\t\t\t\t\t<ng-doc-tab\n\t\t\t\t\t\t*ngFor=\"let asset of assets\"\n\t\t\t\t\t\t[id]=\"asset.title\"\n\t\t\t\t\t\t[label]=\"asset.title\"\n\t\t\t\t\t\t[content]=\"assetContent\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ng-template #assetContent>\n\t\t\t\t\t\t\t<ng-doc-code [html]=\"asset.code\"></ng-doc-code>\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t</ng-doc-tab>\n\t\t\t\t</ng-doc-tab-group>\n\t\t\t</ng-container>\n\t\t</ng-template>\n\t</ng-doc-demo-displayer>\n</ng-container>\n\n<ng-template #demoTemplate>\n\t<ng-container *polymorpheusOutlet=\"demo ?? ''; context: {}\"></ng-container>\n</ng-template>\n", styles: [":host{display:block;--ng-doc-tab-group-background: var(--ng-doc-code-background)}:host .ng-doc-example{padding:calc(var(--ng-doc-base-gutter) * 3)}\n"] }]
55
+ NgDocIconComponent,
56
+ NgDocExecutePipe,
57
+ ], template: "<ng-container *ngIf=\"options.container ?? true; else demoTemplate\">\n\t<ng-doc-demo-displayer [codeContent]=\"codeContent\" [expanded]=\"!!options.expanded\">\n\t\t<ng-container *ngTemplateOutlet=\"demoTemplate\"></ng-container>\n\t\t<ng-template #codeContent>\n\t\t\t<ng-container *ngIf=\"assets.length === 1\">\n\t\t\t\t<ng-doc-code *ngFor=\"let asset of assets\" [html]=\"asset.code\"></ng-doc-code>\n\t\t\t</ng-container>\n\n\t\t\t<ng-container *ngIf=\"assets.length > 1\">\n\t\t\t\t<ng-doc-tab-group [openedTab]=\"(getOpenedAssetId | execute: assets) ?? options.defaultTab\">\n\t\t\t\t\t<ng-doc-tab\n\t\t\t\t\t\t*ngFor=\"let asset of assets\"\n\t\t\t\t\t\t[id]=\"asset.title\"\n\t\t\t\t\t\t[label]=\"label\"\n\t\t\t\t\t\t[content]=\"assetContent\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ng-template #label>\n\t\t\t\t\t\t\t\t<ng-doc-icon [customIcon]=\"asset.icon\" *ngIf=\"asset.icon\"></ng-doc-icon>\n\t\t\t\t\t\t\t\t{{ asset.title }}\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t<ng-template #assetContent>\n\t\t\t\t\t\t\t<ng-doc-code [html]=\"asset.code\"></ng-doc-code>\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t</ng-doc-tab>\n\t\t\t\t</ng-doc-tab-group>\n\t\t\t</ng-container>\n\t\t</ng-template>\n\t</ng-doc-demo-displayer>\n</ng-container>\n\n<ng-template #demoTemplate>\n\t<ng-container *polymorpheusOutlet=\"demo ?? ''; context: {}\"></ng-container>\n</ng-template>\n", styles: [":host{display:block;--ng-doc-tab-group-background: var(--ng-doc-code-background)}:host .ng-doc-example{padding:calc(var(--ng-doc-base-gutter) * 3)}:host ng-doc-icon{margin-right:calc(var(--ng-doc-base-gutter) / 2)}\n"] }]
53
58
  }], ctorParameters: function () { return [{ type: i1.NgDocRootPage }]; }, propDecorators: { componentName: [{
54
59
  type: Input
55
60
  }], options: [{
@@ -1 +1 @@
1
- {"version":3,"file":"ng-doc-app-components-demo.mjs","sources":["../../../../libs/app/components/demo/demo.component.ts","../../../../libs/app/components/demo/demo.component.html","../../../../libs/app/components/demo/ng-doc-app-components-demo.ts"],"sourcesContent":["import {NgFor, NgIf, NgTemplateOutlet} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, HostBinding, Input, OnInit, Type} from '@angular/core';\nimport {NgDocRootPage} from '@ng-doc/app/classes/root-page';\nimport {NgDocCodeComponent} from '@ng-doc/app/components/code';\nimport {NgDocDemoDisplayerComponent} from '@ng-doc/app/components/demo-displayer';\nimport {NgDocDemoAsset} from '@ng-doc/app/interfaces';\nimport {asArray} from '@ng-doc/core/helpers/as-array';\nimport {NgDocDemoActionOptions} from '@ng-doc/core/interfaces';\nimport {NgDocTabComponent, NgDocTabGroupComponent} from '@ng-doc/ui-kit';\nimport {NgDocContent} from '@ng-doc/ui-kit/types';\nimport {PolymorpheusComponent, PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\n@Component({\n\tselector: 'ng-doc-demo',\n\ttemplateUrl: './demo.component.html',\n\tstyleUrls: ['./demo.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\timports: [\n\t\tNgIf,\n\t\tNgDocDemoDisplayerComponent,\n\t\tNgTemplateOutlet,\n\t\tNgFor,\n\t\tNgDocCodeComponent,\n\t\tNgDocTabGroupComponent,\n\t\tNgDocTabComponent,\n\t\tPolymorpheusModule,\n\t],\n})\nexport class NgDocDemoComponent implements OnInit {\n\t@Input()\n\tcomponentName?: string;\n\n\t@Input()\n\toptions: NgDocDemoActionOptions = {};\n\n\tdemo?: NgDocContent<object>;\n\tassets: NgDocDemoAsset[] = [];\n\n\tconstructor(private readonly rootPage: NgDocRootPage) {}\n\n\t@HostBinding('class')\n\tprotected get classes(): string | string[] {\n\t\treturn this.options.class ?? '';\n\t}\n\n\tngOnInit(): void {\n\t\tthis.demo = this.getDemo();\n\t\tthis.assets = this.getAssets();\n\t}\n\n\tprivate getDemo(): NgDocContent<object> | undefined {\n\t\tif (this.componentName) {\n\t\t\tconst component: Type<unknown> | undefined =\n\t\t\t\tthis.rootPage.page?.demos && this.rootPage.page.demos[this.componentName];\n\n\t\t\treturn component ? new PolymorpheusComponent(component as Type<object>) : undefined;\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tprivate getAssets(): NgDocDemoAsset[] {\n\t\tif (this.componentName) {\n\t\t\treturn ((this.rootPage.demoAssets && this.rootPage.demoAssets[this.componentName]) ?? []).filter(\n\t\t\t\t(asset: NgDocDemoAsset) => !this.options.tabs?.length || asArray(this.options.tabs).includes(asset.title),\n\t\t\t);\n\t\t}\n\n\t\treturn [];\n\t}\n}\n","<ng-container *ngIf=\"options.container ?? true; else demoTemplate\">\n\t<ng-doc-demo-displayer [codeContent]=\"codeContent\" [expanded]=\"!!options.expanded\">\n\t\t<ng-container *ngTemplateOutlet=\"demoTemplate\"></ng-container>\n\t\t<ng-template #codeContent>\n\t\t\t<ng-container *ngIf=\"assets.length === 1\">\n\t\t\t\t<ng-doc-code *ngFor=\"let asset of assets\" [html]=\"asset.code\"></ng-doc-code>\n\t\t\t</ng-container>\n\n\t\t\t<ng-container *ngIf=\"assets.length > 1\">\n\t\t\t\t<ng-doc-tab-group [openedTab]=\"options.defaultTab\">\n\t\t\t\t\t<ng-doc-tab\n\t\t\t\t\t\t*ngFor=\"let asset of assets\"\n\t\t\t\t\t\t[id]=\"asset.title\"\n\t\t\t\t\t\t[label]=\"asset.title\"\n\t\t\t\t\t\t[content]=\"assetContent\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ng-template #assetContent>\n\t\t\t\t\t\t\t<ng-doc-code [html]=\"asset.code\"></ng-doc-code>\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t</ng-doc-tab>\n\t\t\t\t</ng-doc-tab-group>\n\t\t\t</ng-container>\n\t\t</ng-template>\n\t</ng-doc-demo-displayer>\n</ng-container>\n\n<ng-template #demoTemplate>\n\t<ng-container *polymorpheusOutlet=\"demo ?? ''; context: {}\"></ng-container>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;AAYA,MAiBa,kBAAkB,CAAA;AAU9B,IAAA,WAAA,CAA6B,QAAuB,EAAA;QAAvB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAe;QALpD,IAAO,CAAA,OAAA,GAA2B,EAAE,CAAC;QAGrC,IAAM,CAAA,MAAA,GAAqB,EAAE,CAAC;KAE0B;AAExD,IAAA,IACc,OAAO,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;KAChC;IAED,QAAQ,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;KAC/B;IAEO,OAAO,GAAA;QACd,IAAI,IAAI,CAAC,aAAa,EAAE;YACvB,MAAM,SAAS,GACd,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAE3E,YAAA,OAAO,SAAS,GAAG,IAAI,qBAAqB,CAAC,SAAyB,CAAC,GAAG,SAAS,CAAC;AACpF,SAAA;AAED,QAAA,OAAO,SAAS,CAAC;KACjB;IAEO,SAAS,GAAA;QAChB,IAAI,IAAI,CAAC,aAAa,EAAE;YACvB,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,MAAM,CAC/F,CAAC,KAAqB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CACzG,CAAC;AACF,SAAA;AAED,QAAA,OAAO,EAAE,CAAC;KACV;8GAzCW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,0LC7B/B,qnCA6BA,EAAA,MAAA,EAAA,CAAA,uJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDVE,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,2BAA2B,EAC3B,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,KAAK,mHACL,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,sBAAsB,EACtB,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,iBAAiB,0FACjB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAjB9B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,mBAGN,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACR,IAAI;wBACJ,2BAA2B;wBAC3B,gBAAgB;wBAChB,KAAK;wBACL,kBAAkB;wBAClB,sBAAsB;wBACtB,iBAAiB;wBACjB,kBAAkB;AAClB,qBAAA,EAAA,QAAA,EAAA,qnCAAA,EAAA,MAAA,EAAA,CAAA,uJAAA,CAAA,EAAA,CAAA;oGAID,aAAa,EAAA,CAAA;sBADZ,KAAK;gBAIN,OAAO,EAAA,CAAA;sBADN,KAAK;gBASQ,OAAO,EAAA,CAAA;sBADpB,WAAW;uBAAC,OAAO,CAAA;;;AEzCrB;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-doc-app-components-demo.mjs","sources":["../../../../libs/app/components/demo/demo.component.ts","../../../../libs/app/components/demo/demo.component.html","../../../../libs/app/components/demo/ng-doc-app-components-demo.ts"],"sourcesContent":["import {NgFor, NgIf, NgTemplateOutlet} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, HostBinding, Input, OnInit, Type} from '@angular/core';\nimport {NgDocRootPage} from '@ng-doc/app/classes/root-page';\nimport {NgDocCodeComponent} from '@ng-doc/app/components/code';\nimport {NgDocDemoDisplayerComponent} from '@ng-doc/app/components/demo-displayer';\nimport {NgDocDemoAsset} from '@ng-doc/app/interfaces';\nimport {asArray} from '@ng-doc/core/helpers/as-array';\nimport {NgDocDemoActionOptions} from '@ng-doc/core/interfaces';\nimport {NgDocExecutePipe, NgDocIconComponent, NgDocTabComponent, NgDocTabGroupComponent} from '@ng-doc/ui-kit';\nimport {NgDocContent} from '@ng-doc/ui-kit/types';\nimport {PolymorpheusComponent, PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\n@Component({\n\tselector: 'ng-doc-demo',\n\ttemplateUrl: './demo.component.html',\n\tstyleUrls: ['./demo.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\timports: [\n\t\tNgIf,\n\t\tNgDocDemoDisplayerComponent,\n\t\tNgTemplateOutlet,\n\t\tNgFor,\n\t\tNgDocCodeComponent,\n\t\tNgDocTabGroupComponent,\n\t\tNgDocTabComponent,\n\t\tPolymorpheusModule,\n\t\tNgDocIconComponent,\n\t\tNgDocExecutePipe,\n\t],\n})\nexport class NgDocDemoComponent implements OnInit {\n\t@Input()\n\tcomponentName?: string;\n\n\t@Input()\n\toptions: NgDocDemoActionOptions = {};\n\n\tdemo?: NgDocContent<object>;\n\tassets: NgDocDemoAsset[] = [];\n\n\tconstructor(private readonly rootPage: NgDocRootPage) {}\n\n\t@HostBinding('class')\n\tprotected get classes(): string | string[] {\n\t\treturn this.options.class ?? '';\n\t}\n\n\tngOnInit(): void {\n\t\tthis.demo = this.getDemo();\n\t\tthis.assets = this.getAssets();\n\t}\n\n\tgetOpenedAssetId(assets: NgDocDemoAsset[]): string | undefined {\n\t\treturn assets.find((asset: NgDocDemoAsset) => asset.opened)?.title;\n\t}\n\n\tprivate getDemo(): NgDocContent<object> | undefined {\n\t\tif (this.componentName) {\n\t\t\tconst component: Type<unknown> | undefined =\n\t\t\t\tthis.rootPage.page?.demos && this.rootPage.page.demos[this.componentName];\n\n\t\t\treturn component ? new PolymorpheusComponent(component as Type<object>) : undefined;\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tprivate getAssets(): NgDocDemoAsset[] {\n\t\tif (this.componentName) {\n\t\t\treturn ((this.rootPage.demoAssets && this.rootPage.demoAssets[this.componentName]) ?? []).filter(\n\t\t\t\t(asset: NgDocDemoAsset) => !this.options.tabs?.length || asArray(this.options.tabs).includes(asset.title),\n\t\t\t);\n\t\t}\n\n\t\treturn [];\n\t}\n}\n","<ng-container *ngIf=\"options.container ?? true; else demoTemplate\">\n\t<ng-doc-demo-displayer [codeContent]=\"codeContent\" [expanded]=\"!!options.expanded\">\n\t\t<ng-container *ngTemplateOutlet=\"demoTemplate\"></ng-container>\n\t\t<ng-template #codeContent>\n\t\t\t<ng-container *ngIf=\"assets.length === 1\">\n\t\t\t\t<ng-doc-code *ngFor=\"let asset of assets\" [html]=\"asset.code\"></ng-doc-code>\n\t\t\t</ng-container>\n\n\t\t\t<ng-container *ngIf=\"assets.length > 1\">\n\t\t\t\t<ng-doc-tab-group [openedTab]=\"(getOpenedAssetId | execute: assets) ?? options.defaultTab\">\n\t\t\t\t\t<ng-doc-tab\n\t\t\t\t\t\t*ngFor=\"let asset of assets\"\n\t\t\t\t\t\t[id]=\"asset.title\"\n\t\t\t\t\t\t[label]=\"label\"\n\t\t\t\t\t\t[content]=\"assetContent\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ng-template #label>\n\t\t\t\t\t\t\t\t<ng-doc-icon [customIcon]=\"asset.icon\" *ngIf=\"asset.icon\"></ng-doc-icon>\n\t\t\t\t\t\t\t\t{{ asset.title }}\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t<ng-template #assetContent>\n\t\t\t\t\t\t\t<ng-doc-code [html]=\"asset.code\"></ng-doc-code>\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t</ng-doc-tab>\n\t\t\t\t</ng-doc-tab-group>\n\t\t\t</ng-container>\n\t\t</ng-template>\n\t</ng-doc-demo-displayer>\n</ng-container>\n\n<ng-template #demoTemplate>\n\t<ng-container *polymorpheusOutlet=\"demo ?? ''; context: {}\"></ng-container>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -14,23 +14,31 @@ class NgDocPageLinkComponent {
14
14
  ngOnInit() {
15
15
  this.isInCode = this.elementRef.nativeElement.closest('code') !== null;
16
16
  }
17
+ ngOnChanges() {
18
+ this.link = document.createElement('a');
19
+ this.link.href = this.href;
20
+ }
17
21
  get isExternalLink() {
18
22
  return this.href.startsWith('http');
19
23
  }
20
24
  get path() {
21
- return !this.isExternalLink ? this.href.split('#')[0] : this.href;
25
+ return (!this.isExternalLink ? this.link?.pathname : this.href) ?? '';
22
26
  }
23
27
  get fragment() {
24
- return this.href.split('#')[1];
28
+ return this.link?.hash.replace(/^#/, '') || undefined;
29
+ }
30
+ get queryParams() {
31
+ return Object.fromEntries(new URLSearchParams(this.link?.search.replace(/^\?/, '') ?? '').entries());
25
32
  }
26
33
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgDocPageLinkComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
27
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgDocPageLinkComponent, isStandalone: true, selector: "ng-doc-page-link", inputs: { href: "href", classes: "classes" }, ngImport: i0, template: "<a [class]=\"classes\" [routerLink]=\"path\" [fragment]=\"fragment\" *ngIf=\"!isExternalLink\">\n\t<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n\n<a [class]=\"classes\" [href]=\"path\" *ngIf=\"isExternalLink\" target=\"_blank\">\n\t<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n\t<ng-doc-icon icon=\"external-link\" *ngIf=\"!isInCode\"></ng-doc-icon>\n</a>\n\n<ng-template #content>\n\t<ng-content></ng-content>\n</ng-template>\n", styles: [":host{white-space:nowrap}:host ng-doc-icon{margin-left:calc(var(--ng-doc-base-gutter) / 2);--ng-doc-icon-color: currentColor}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NgDocIconComponent, selector: "ng-doc-icon", inputs: ["icon", "customIcon", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgDocPageLinkComponent, isStandalone: true, selector: "ng-doc-page-link", inputs: { href: "href", classes: "classes" }, usesOnChanges: true, ngImport: i0, template: "<a [class]=\"classes\" [routerLink]=\"path\" [fragment]=\"fragment\" [queryParams]=\"queryParams\" *ngIf=\"!isExternalLink\">\n\t<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n\n<a [class]=\"classes\" [href]=\"path\" *ngIf=\"isExternalLink\" target=\"_blank\">\n\t<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n\t<ng-doc-icon icon=\"external-link\" *ngIf=\"!isInCode\"></ng-doc-icon>\n</a>\n\n<ng-template #content>\n\t<ng-content></ng-content>\n</ng-template>\n", styles: [":host{white-space:nowrap}:host ng-doc-icon{margin-left:calc(var(--ng-doc-base-gutter) / 2);--ng-doc-icon-color: currentColor}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NgDocIconComponent, selector: "ng-doc-icon", inputs: ["icon", "customIcon", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
28
35
  }
29
36
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgDocPageLinkComponent, decorators: [{
30
37
  type: Component,
31
- args: [{ selector: 'ng-doc-page-link', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, RouterLink, NgTemplateOutlet, NgDocIconComponent], template: "<a [class]=\"classes\" [routerLink]=\"path\" [fragment]=\"fragment\" *ngIf=\"!isExternalLink\">\n\t<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n\n<a [class]=\"classes\" [href]=\"path\" *ngIf=\"isExternalLink\" target=\"_blank\">\n\t<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n\t<ng-doc-icon icon=\"external-link\" *ngIf=\"!isInCode\"></ng-doc-icon>\n</a>\n\n<ng-template #content>\n\t<ng-content></ng-content>\n</ng-template>\n", styles: [":host{white-space:nowrap}:host ng-doc-icon{margin-left:calc(var(--ng-doc-base-gutter) / 2);--ng-doc-icon-color: currentColor}\n"] }]
38
+ args: [{ selector: 'ng-doc-page-link', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, RouterLink, NgTemplateOutlet, NgDocIconComponent], template: "<a [class]=\"classes\" [routerLink]=\"path\" [fragment]=\"fragment\" [queryParams]=\"queryParams\" *ngIf=\"!isExternalLink\">\n\t<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n\n<a [class]=\"classes\" [href]=\"path\" *ngIf=\"isExternalLink\" target=\"_blank\">\n\t<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n\t<ng-doc-icon icon=\"external-link\" *ngIf=\"!isInCode\"></ng-doc-icon>\n</a>\n\n<ng-template #content>\n\t<ng-content></ng-content>\n</ng-template>\n", styles: [":host{white-space:nowrap}:host ng-doc-icon{margin-left:calc(var(--ng-doc-base-gutter) / 2);--ng-doc-icon-color: currentColor}\n"] }]
32
39
  }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { href: [{
33
- type: Input
40
+ type: Input,
41
+ args: [{ required: true }]
34
42
  }], classes: [{
35
43
  type: Input
36
44
  }] } });
@@ -1 +1 @@
1
- {"version":3,"file":"ng-doc-app-components-page-link.mjs","sources":["../../../../libs/app/components/page-link/page-link.component.ts","../../../../libs/app/components/page-link/page-link.component.html","../../../../libs/app/components/page-link/ng-doc-app-components-page-link.ts"],"sourcesContent":["import {NgIf, NgTemplateOutlet} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, ElementRef, Input, OnInit} from '@angular/core';\nimport {RouterLink} from '@angular/router';\nimport {NgDocIconComponent} from '@ng-doc/ui-kit';\n\n@Component({\n\tselector: 'ng-doc-page-link',\n\ttemplateUrl: './page-link.component.html',\n\tstyleUrls: ['./page-link.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\timports: [NgIf, RouterLink, NgTemplateOutlet, NgDocIconComponent],\n})\nexport class NgDocPageLinkComponent implements OnInit {\n\t@Input()\n\thref: string = '';\n\n\t@Input()\n\tclasses: string = '';\n\n\tprotected isInCode: boolean = false;\n\n\tconstructor(private elementRef: ElementRef<HTMLElement>) {}\n\n\tngOnInit(): void {\n\t\tthis.isInCode = this.elementRef.nativeElement.closest('code') !== null;\n\t}\n\n\tget isExternalLink(): boolean {\n\t\treturn this.href.startsWith('http');\n\t}\n\n\tget path(): string {\n\t\treturn !this.isExternalLink ? this.href.split('#')[0] : this.href;\n\t}\n\n\tget fragment(): string {\n\t\treturn this.href.split('#')[1];\n\t}\n}\n","<a [class]=\"classes\" [routerLink]=\"path\" [fragment]=\"fragment\" *ngIf=\"!isExternalLink\">\n\t<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n\n<a [class]=\"classes\" [href]=\"path\" *ngIf=\"isExternalLink\" target=\"_blank\">\n\t<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n\t<ng-doc-icon icon=\"external-link\" *ngIf=\"!isInCode\"></ng-doc-icon>\n</a>\n\n<ng-template #content>\n\t<ng-content></ng-content>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAKA,MAQa,sBAAsB,CAAA;AASlC,IAAA,WAAA,CAAoB,UAAmC,EAAA;QAAnC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAyB;QAPvD,IAAI,CAAA,IAAA,GAAW,EAAE,CAAC;QAGlB,IAAO,CAAA,OAAA,GAAW,EAAE,CAAC;QAEX,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;KAEuB;IAE3D,QAAQ,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;KACvE;AAED,IAAA,IAAI,cAAc,GAAA;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;KACpC;AAED,IAAA,IAAI,IAAI,GAAA;QACP,OAAO,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;KAClE;AAED,IAAA,IAAI,QAAQ,GAAA;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KAC/B;8GAzBW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbnC,odAYA,EDDW,MAAA,EAAA,CAAA,iIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAI,6FAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAEpD,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBARlC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAGX,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,IAAI,EAAA,OAAA,EACP,CAAC,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,odAAA,EAAA,MAAA,EAAA,CAAA,iIAAA,CAAA,EAAA,CAAA;iGAIjE,IAAI,EAAA,CAAA;sBADH,KAAK;gBAIN,OAAO,EAAA,CAAA;sBADN,KAAK;;;AEjBP;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-doc-app-components-page-link.mjs","sources":["../../../../libs/app/components/page-link/page-link.component.ts","../../../../libs/app/components/page-link/page-link.component.html","../../../../libs/app/components/page-link/ng-doc-app-components-page-link.ts"],"sourcesContent":["import {NgIf, NgTemplateOutlet} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, ElementRef, Input, OnChanges, OnInit} from '@angular/core';\nimport {Params, RouterLink} from '@angular/router';\nimport {NgDocIconComponent} from '@ng-doc/ui-kit';\n\n@Component({\n\tselector: 'ng-doc-page-link',\n\ttemplateUrl: './page-link.component.html',\n\tstyleUrls: ['./page-link.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\timports: [NgIf, RouterLink, NgTemplateOutlet, NgDocIconComponent],\n})\nexport class NgDocPageLinkComponent implements OnInit, OnChanges {\n\t@Input({required: true})\n\thref: string = '';\n\n\t@Input()\n\tclasses: string = '';\n\n\tprotected isInCode: boolean = false;\n\n\tprivate link: HTMLAnchorElement | undefined;\n\n\tconstructor(private elementRef: ElementRef<HTMLElement>) {}\n\n\tngOnInit(): void {\n\t\tthis.isInCode = this.elementRef.nativeElement.closest('code') !== null;\n\t}\n\n\tngOnChanges(): void {\n\t\tthis.link = document.createElement('a');\n\t\tthis.link.href = this.href;\n\t}\n\n\tget isExternalLink(): boolean {\n\t\treturn this.href.startsWith('http');\n\t}\n\n\tget path(): string {\n\t\treturn (!this.isExternalLink ? this.link?.pathname : this.href) ?? '';\n\t}\n\n\tget fragment(): string | undefined {\n\t\treturn this.link?.hash.replace(/^#/, '') || undefined;\n\t}\n\n\tget queryParams(): Params {\n\t\treturn Object.fromEntries(new URLSearchParams(this.link?.search.replace(/^\\?/, '') ?? '').entries());\n\t}\n}\n","<a [class]=\"classes\" [routerLink]=\"path\" [fragment]=\"fragment\" [queryParams]=\"queryParams\" *ngIf=\"!isExternalLink\">\n\t<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n\n<a [class]=\"classes\" [href]=\"path\" *ngIf=\"isExternalLink\" target=\"_blank\">\n\t<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n\t<ng-doc-icon icon=\"external-link\" *ngIf=\"!isInCode\"></ng-doc-icon>\n</a>\n\n<ng-template #content>\n\t<ng-content></ng-content>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { ViewContainerRef, Injector, Component, ChangeDetectionStrategy, Input, ViewChild, HostBinding, EventEmitter, isDevMode, Output, inject, Directive } from '@angular/core';
2
+ import { ViewContainerRef, Injector, Component, ChangeDetectionStrategy, Input, ViewChild, HostBinding, EventEmitter, isDevMode, Output, inject, ChangeDetectorRef, Directive } from '@angular/core';
3
3
  import { stringify, objectKeys as objectKeys$1, isPresent, extractValueOrThrow, extractFunctionDefaults } from '@ng-doc/core';
4
4
  import { AsyncPipe, NgIf, NgFor, KeyValuePipe } from '@angular/common';
5
5
  import * as i2 from '@angular/forms';
@@ -45,7 +45,7 @@ let NgDocPlaygroundDemoComponent = class NgDocPlaygroundDemoComponent {
45
45
  }
46
46
  updateDemo(data) {
47
47
  if (this.recreateDemo || !this.demoRef) {
48
- this.renderDemo();
48
+ this.createDemo();
49
49
  }
50
50
  if (data) {
51
51
  this.demoRef?.setInput('properties', data.properties ?? {});
@@ -54,13 +54,11 @@ let NgDocPlaygroundDemoComponent = class NgDocPlaygroundDemoComponent {
54
54
  }
55
55
  this.updateCodeView();
56
56
  }
57
- renderDemo() {
57
+ createDemo() {
58
58
  if (this.playgroundDemo) {
59
59
  this.demoRef?.destroy();
60
- if (this.playgroundDemo) {
61
- this.demoRef = this.demoOutlet?.createComponent(this.playgroundDemo);
62
- }
63
- this.demoRef?.changeDetectorRef.detectChanges();
60
+ this.demoRef = this.demoOutlet?.createComponent(this.playgroundDemo);
61
+ this.demoRef?.changeDetectorRef.markForCheck();
64
62
  }
65
63
  }
66
64
  updateCodeView() {
@@ -300,19 +298,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
300
298
  }] } });
301
299
 
302
300
  class NgDocPlaygroundComponent {
303
- constructor(rootPage, formBuilder, changeDetectorRef) {
301
+ constructor(rootPage, formBuilder) {
304
302
  this.rootPage = rootPage;
305
303
  this.formBuilder = formBuilder;
306
- this.changeDetectorRef = changeDetectorRef;
307
304
  this.id = '';
308
305
  this.pipeName = '';
309
306
  this.selectors = [];
310
307
  this.options = {};
311
308
  this.recreateDemo = false;
312
309
  }
313
- ngOnInit() {
314
- // Join configuration with options
315
- this.configuration = Object.assign({}, this.rootPage.page?.playgrounds?.[this.id], this.options);
310
+ ngOnChanges({ options }) {
311
+ if (options) {
312
+ // Join configuration with options
313
+ this.configuration = Object.assign({}, this.rootPage.page?.playgrounds?.[this.id], this.options);
314
+ }
316
315
  }
317
316
  ngAfterViewInit() {
318
317
  const propertiesForm = this.formBuilder.group(this.getPropertiesFormValues());
@@ -326,7 +325,6 @@ class NgDocPlaygroundComponent {
326
325
  properties: Object.assign({}, this.getPropertiesFormValues(), this.configuration.inputs),
327
326
  content: this.getContentFormValues(),
328
327
  });
329
- this.changeDetectorRef.detectChanges();
330
328
  }
331
329
  getPropertiesFormValues() {
332
330
  const formValues = objectKeys(this.properties ?? {}).reduce((controls, key) => {
@@ -344,7 +342,6 @@ class NgDocPlaygroundComponent {
344
342
  }
345
343
  return controls;
346
344
  }, {});
347
- return {};
348
345
  }
349
346
  resetForm() {
350
347
  this.formGroup?.patchValue({
@@ -352,13 +349,13 @@ class NgDocPlaygroundComponent {
352
349
  content: this.getContentFormValues(),
353
350
  });
354
351
  }
355
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgDocPlaygroundComponent, deps: [{ token: i1$1.NgDocRootPage }, { token: i2.FormBuilder }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
356
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgDocPlaygroundComponent, isStandalone: true, selector: "ng-doc-playground", inputs: { id: "id", pipeName: "pipeName", selectors: "selectors", properties: "properties", options: "options" }, ngImport: i0, template: "<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[hideSidePanel]=\"configuration.hideSidePanel ?? false\"\n\t\t[defaultValues]=\"defaultValues\"\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\t[expanded]=\"configuration.expanded ?? false\"\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", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgDocPlaygroundPropertiesComponent, selector: "ng-doc-playground-properties", inputs: ["form", "properties", "dynamicContent", "defaultValues", "hideSidePanel", "recreateDemo"], outputs: ["recreateDemoChange", "resetForm"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: NgDocPlaygroundDemoComponent, selector: "ng-doc-playground-demo", inputs: ["id", "pipeName", "selector", "configuration", "properties", "recreateDemo", "form", "expanded"] }, { kind: "pipe", type: NgDocAsArrayPipe, name: "asArray" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
352
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgDocPlaygroundComponent, deps: [{ token: i1$1.NgDocRootPage }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
353
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgDocPlaygroundComponent, isStandalone: true, selector: "ng-doc-playground", inputs: { id: "id", pipeName: "pipeName", selectors: "selectors", properties: "properties", options: "options" }, usesOnChanges: true, ngImport: i0, template: "<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[hideSidePanel]=\"configuration.hideSidePanel ?? false\"\n\t\t[defaultValues]=\"defaultValues\"\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\t[expanded]=\"configuration.expanded ?? false\"\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", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgDocPlaygroundPropertiesComponent, selector: "ng-doc-playground-properties", inputs: ["form", "properties", "dynamicContent", "defaultValues", "hideSidePanel", "recreateDemo"], outputs: ["recreateDemoChange", "resetForm"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: NgDocPlaygroundDemoComponent, selector: "ng-doc-playground-demo", inputs: ["id", "pipeName", "selector", "configuration", "properties", "recreateDemo", "form", "expanded"] }, { kind: "pipe", type: NgDocAsArrayPipe, name: "asArray" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
357
354
  }
358
355
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgDocPlaygroundComponent, decorators: [{
359
356
  type: Component,
360
357
  args: [{ selector: 'ng-doc-playground', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, NgDocPlaygroundPropertiesComponent, NgFor, NgDocPlaygroundDemoComponent, NgDocAsArrayPipe], template: "<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[hideSidePanel]=\"configuration.hideSidePanel ?? false\"\n\t\t[defaultValues]=\"defaultValues\"\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\t[expanded]=\"configuration.expanded ?? false\"\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", styles: [":host{display:block}\n"] }]
361
- }], ctorParameters: function () { return [{ type: i1$1.NgDocRootPage }, { type: i2.FormBuilder }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { id: [{
358
+ }], ctorParameters: function () { return [{ type: i1$1.NgDocRootPage }, { type: i2.FormBuilder }]; }, propDecorators: { id: [{
362
359
  type: Input,
363
360
  args: [{ required: true }]
364
361
  }], pipeName: [{
@@ -375,15 +372,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
375
372
  * Base class for playgrounds components.
376
373
  */
377
374
  class NgDocBasePlayground {
378
- constructor() {
375
+ static { this.selector = 'unknown'; }
376
+ constructor(playground, playgroundInstance) {
377
+ this.playground = playground;
378
+ this.playgroundInstance = playgroundInstance;
379
379
  this.properties = {};
380
380
  this.actionData = {};
381
381
  this.content = {};
382
382
  this.defaultValues = {};
383
383
  this.playgroundContainer = inject(NgDocPlaygroundComponent);
384
- }
385
- static { this.selector = 'unknown'; }
386
- ngOnInit() {
384
+ this.changeDetectorRef = inject(ChangeDetectorRef);
385
+ this.changeDetectorRef.detach();
387
386
  /*
388
387
  * Extract default values from playground properties. We do this in `ngOnInit` because in this case
389
388
  * input values provided from the template are not initialized yet, and we can read default values instead.
@@ -407,16 +406,23 @@ class NgDocBasePlayground {
407
406
  if (!this.playgroundContainer.defaultValues) {
408
407
  this.playgroundContainer.defaultValues = this.defaultValues;
409
408
  }
409
+ /*
410
+ This is a hack just to wait for the playground container to be initialized and only then
411
+ attach the change detector to have correct inputs values.
412
+ */
413
+ Promise.resolve().then(() => {
414
+ this.changeDetectorRef.reattach();
415
+ });
410
416
  }
411
417
  get data() {
412
418
  return Object.assign({}, this.configData, this.actionData);
413
419
  }
414
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgDocBasePlayground, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
420
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgDocBasePlayground, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); }
415
421
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: NgDocBasePlayground, inputs: { properties: "properties", actionData: "actionData", content: "content" }, ngImport: i0 }); }
416
422
  }
417
423
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgDocBasePlayground, decorators: [{
418
424
  type: Directive
419
- }], propDecorators: { properties: [{
425
+ }], ctorParameters: function () { return [{ type: i0.Type }, { type: undefined }]; }, propDecorators: { properties: [{
420
426
  type: Input
421
427
  }], actionData: [{
422
428
  type: Input
@@ -1 +1 @@
1
- {"version":3,"file":"ng-doc-app-components-playground.mjs","sources":["../../../../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/base-playground.ts","../../../../libs/app/components/playground/ng-doc-app-components-playground.ts"],"sourcesContent":["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 {stringify} from '@ng-doc/core';\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} from '@ng-doc/core/interfaces';\nimport {NgDocLetDirective, NgDocSmoothResizeComponent} from '@ng-doc/ui-kit';\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, NgDocSmoothResizeComponent, NgDocLetDirective],\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@Input()\n\texpanded: boolean = false;\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\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\tthis.demoRef?.setInput('actionData', this.configuration?.data ?? {});\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, unknown> = (this.form?.controls.properties.value as Record<string, unknown>) ?? {};\n\n\t\treturn objectKeys(formData).reduce((result: Record<string, string>, key: string) => {\n\t\t\tconst value: unknown = formData[key];\n\t\t\tconst property: unknown | undefined = this.demoRef?.instance?.defaultValues[key];\n\n\t\t\tif (property !== value) {\n\t\t\t\tresult[key] = stringify(value).replace(/\"/g, `'`);\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-smooth-resize *ngDocLet=\"code | async as codeContent\" [trigger]=\"codeContent\">\n\t<ng-doc-demo-displayer\n\t\t[code]=\"codeContent ?? ''\"\n\t\t[border]=\"false\"\n\t\t[expanded]=\"expanded\"\n\t\tlanguage=\"html\"\n\t>\n\t\t<ng-container #demoOutlet></ng-container>\n\t</ng-doc-demo-displayer>\n</ng-doc-smooth-resize>\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@Input()\n\tdefaultValue?: unknown;\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, defaultValue}: SimpleChanges): void {\n\t\tif ((property || control || typeControl || defaultValue) && 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 = this.defaultValue;\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\n\t\t\tif (this.control) {\n\t\t\t\tthis.control?.registerOnChange((value: string) => this.propertyTypeControl?.instance?.writeValue(value));\n\t\t\t\tthis.propertyTypeControl?.instance.registerOnChange((value: unknown) => this.control?.setValue(value));\n\t\t\t\tthis.propertyTypeControl?.instance.registerOnTouched(() => this.control?.markAsTouched());\n\t\t\t}\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, BreakpointState} 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 {map} 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\tdefaultValues?: Record<string, unknown>;\n\n\t@Input()\n\thideSidePanel: boolean = false;\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\n\t\t\t.observe(this.breakpoints)\n\t\t\t.pipe(map((state: BreakpointState) => state.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\" *ngIf=\"defaultValues\">\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\" *ngIf=\"!hideSidePanel\">\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[defaultValue]=\"defaultValues[propertyControl.propertyName]\"\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 {AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit} from '@angular/core';\nimport {FormBuilder, FormGroup} from '@angular/forms';\nimport {NgDocRootPage} from '@ng-doc/app/classes/root-page';\nimport {objectKeys} from '@ng-doc/core/helpers/object-keys';\nimport {NgDocPlaygroundConfig, NgDocPlaygroundOptions, NgDocPlaygroundProperties} from '@ng-doc/core/interfaces';\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, AfterViewInit\n{\n\t@Input({required: true})\n\tid: string = '';\n\n\t@Input()\n\tpipeName: string = '';\n\n\t@Input()\n\tselectors: string[] = [];\n\n\t@Input()\n\tproperties?: T;\n\n\t@Input()\n\toptions: NgDocPlaygroundOptions = {};\n\n\trecreateDemo: boolean = false;\n\tformGroup!: FormGroup<NgDocPlaygroundForm>;\n\tdefaultValues?: Record<string, unknown>;\n\tconfiguration!: NgDocPlaygroundConfig;\n\n\tconstructor(\n\t\tprivate readonly rootPage: NgDocRootPage,\n\t\tprivate readonly formBuilder: FormBuilder,\n\t\tprivate readonly changeDetectorRef: ChangeDetectorRef,\n\t) {}\n\n\tngOnInit(): void {\n\t\t// Join configuration with options\n\t\tthis.configuration = Object.assign({}, this.rootPage.page?.playgrounds?.[this.id], this.options);\n\t}\n\n\tngAfterViewInit(): 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\t// `patchValue` is needed to set `undefined` values, otherwise they will be ignored by the Angular form\n\t\tthis.formGroup.patchValue({\n\t\t\tproperties: Object.assign({}, this.getPropertiesFormValues(), this.configuration.inputs),\n\t\t\tcontent: this.getContentFormValues(),\n\t\t});\n\n\t\tthis.changeDetectorRef.detectChanges();\n\t}\n\n\tprivate getPropertiesFormValues(): Record<string, unknown> {\n\t\tconst formValues: Record<string, unknown> = objectKeys(this.properties ?? {}).reduce(\n\t\t\t(controls: Record<string, unknown>, key: string) => {\n\t\t\t\tif (this.properties) {\n\t\t\t\t\tcontrols[key] = this.defaultValues ? this.defaultValues[key] : undefined;\n\t\t\t\t}\n\n\t\t\t\treturn controls;\n\t\t\t},\n\t\t\t{} as Record<string, unknown>,\n\t\t);\n\n\t\treturn Object.assign({}, formValues, this.configuration.defaults);\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?.patchValue({\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[hideSidePanel]=\"configuration.hideSidePanel ?? false\"\n\t\t[defaultValues]=\"defaultValues\"\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\t[expanded]=\"configuration.expanded ?? false\"\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","import {Directive, inject, Input, OnInit, Type, ViewContainerRef} from '@angular/core';\nimport {Constructor, extractFunctionDefaults} from '@ng-doc/core';\nimport {NgDocPlaygroundConfig} from '@ng-doc/core/interfaces';\n\nimport {NgDocPlaygroundComponent} from './playground.component';\n\n/**\n * Base class for playgrounds components.\n */\n@Directive()\nexport abstract class NgDocBasePlayground implements Pick<NgDocPlaygroundConfig, 'data'>, OnInit {\n\tstatic readonly selector: string = 'unknown';\n\n\tabstract readonly playground?: Type<any>;\n\tabstract readonly playgroundInstance?: Constructor<unknown>;\n\tabstract readonly viewContainerRef?: ViewContainerRef;\n\tabstract readonly configData: Record<string, unknown>;\n\n\t@Input()\n\tproperties: Record<string, any> = {};\n\n\t@Input()\n\tactionData: Record<string, unknown> = {};\n\n\t@Input()\n\tcontent: any = {};\n\n\tdefaultValues: Record<string, unknown> = {};\n\n\tprivate playgroundContainer: NgDocPlaygroundComponent = inject(NgDocPlaygroundComponent);\n\n\tngOnInit(): void {\n\t\t/*\n\t\t * Extract default values from playground properties. We do this in `ngOnInit` because in this case\n\t\t * input values provided from the template are not initialized yet, and we can read default values instead.\n\t\t */\n\t\tif (this.playground) {\n\t\t\tthis.defaultValues = Object.keys(this.playground).reduce((values: Record<string, unknown>, key: string) => {\n\t\t\t\tif (this.playground) {\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tvalues[key] = this.playground[key];\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t}, {});\n\t\t} else if (this.playgroundInstance) {\n\t\t\tthis.defaultValues = extractFunctionDefaults(this.playgroundInstance.prototype.transform);\n\t\t} else {\n\t\t\tthrow new Error('Playground is not defined or initialized');\n\t\t}\n\n\t\tif (!this.playgroundContainer.defaultValues) {\n\t\t\tthis.playgroundContainer.defaultValues = this.defaultValues;\n\t\t}\n\t}\n\n\tget data(): any {\n\t\treturn Object.assign({}, this.configData, this.actionData);\n\t}\n}\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/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/base-playground.ts","../../../../libs/app/components/playground/ng-doc-app-components-playground.ts"],"sourcesContent":["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 {stringify} from '@ng-doc/core';\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} from '@ng-doc/core/interfaces';\nimport {NgDocLetDirective, NgDocSmoothResizeComponent} from '@ng-doc/ui-kit';\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, NgDocSmoothResizeComponent, NgDocLetDirective],\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@Input()\n\texpanded: boolean = false;\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\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.createDemo();\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\tthis.demoRef?.setInput('actionData', this.configuration?.data ?? {});\n\t\t}\n\n\t\tthis.updateCodeView();\n\t}\n\n\tprivate createDemo(): void {\n\t\tif (this.playgroundDemo) {\n\t\t\tthis.demoRef?.destroy();\n\t\t\tthis.demoRef = this.demoOutlet?.createComponent(this.playgroundDemo as unknown as Type<NgDocBasePlayground>);\n\t\t\tthis.demoRef?.changeDetectorRef.markForCheck();\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, unknown> = (this.form?.controls.properties.value as Record<string, unknown>) ?? {};\n\n\t\treturn objectKeys(formData).reduce((result: Record<string, string>, key: string) => {\n\t\t\tconst value: unknown = formData[key];\n\t\t\tconst property: unknown | undefined = this.demoRef?.instance?.defaultValues[key];\n\n\t\t\tif (property !== value) {\n\t\t\t\tresult[key] = stringify(value).replace(/\"/g, `'`);\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-smooth-resize *ngDocLet=\"code | async as codeContent\" [trigger]=\"codeContent\">\n\t<ng-doc-demo-displayer\n\t\t[code]=\"codeContent ?? ''\"\n\t\t[border]=\"false\"\n\t\t[expanded]=\"expanded\"\n\t\tlanguage=\"html\"\n\t>\n\t\t<ng-container #demoOutlet></ng-container>\n\t</ng-doc-demo-displayer>\n</ng-doc-smooth-resize>\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@Input()\n\tdefaultValue?: unknown;\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, defaultValue}: SimpleChanges): void {\n\t\tif ((property || control || typeControl || defaultValue) && 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 = this.defaultValue;\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\n\t\t\tif (this.control) {\n\t\t\t\tthis.control?.registerOnChange((value: string) => this.propertyTypeControl?.instance?.writeValue(value));\n\t\t\t\tthis.propertyTypeControl?.instance.registerOnChange((value: unknown) => this.control?.setValue(value));\n\t\t\t\tthis.propertyTypeControl?.instance.registerOnTouched(() => this.control?.markAsTouched());\n\t\t\t}\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, BreakpointState} 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 {map} 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\tdefaultValues?: Record<string, unknown>;\n\n\t@Input()\n\thideSidePanel: boolean = false;\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\n\t\t\t.observe(this.breakpoints)\n\t\t\t.pipe(map((state: BreakpointState) => state.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\" *ngIf=\"defaultValues\">\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\" *ngIf=\"!hideSidePanel\">\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[defaultValue]=\"defaultValues[propertyControl.propertyName]\"\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, Input, OnChanges, SimpleChanges} from '@angular/core';\nimport {FormBuilder, FormGroup} from '@angular/forms';\nimport {NgDocRootPage} from '@ng-doc/app/classes/root-page';\nimport {objectKeys} from '@ng-doc/core/helpers/object-keys';\nimport {NgDocPlaygroundConfig, NgDocPlaygroundOptions, NgDocPlaygroundProperties} from '@ng-doc/core/interfaces';\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 OnChanges\n{\n\t@Input({required: true})\n\tid: string = '';\n\n\t@Input()\n\tpipeName: string = '';\n\n\t@Input()\n\tselectors: string[] = [];\n\n\t@Input()\n\tproperties?: T;\n\n\t@Input()\n\toptions: NgDocPlaygroundOptions = {};\n\n\trecreateDemo: boolean = false;\n\tformGroup!: FormGroup<NgDocPlaygroundForm>;\n\tdefaultValues?: Record<string, unknown>;\n\tconfiguration!: NgDocPlaygroundConfig;\n\n\tconstructor(private readonly rootPage: NgDocRootPage, private readonly formBuilder: FormBuilder) {}\n\n\tngOnChanges({options}: SimpleChanges) {\n\t\tif (options) {\n\t\t\t// Join configuration with options\n\t\t\tthis.configuration = Object.assign({}, this.rootPage.page?.playgrounds?.[this.id], this.options);\n\t\t}\n\t}\n\n\tngAfterViewInit(): 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\t// `patchValue` is needed to set `undefined` values, otherwise they will be ignored by the Angular form\n\t\tthis.formGroup.patchValue({\n\t\t\tproperties: Object.assign({}, this.getPropertiesFormValues(), this.configuration.inputs),\n\t\t\tcontent: this.getContentFormValues(),\n\t\t});\n\t}\n\n\tprivate getPropertiesFormValues(): Record<string, unknown> {\n\t\tconst formValues: Record<string, unknown> = objectKeys(this.properties ?? {}).reduce(\n\t\t\t(controls: Record<string, unknown>, key: string) => {\n\t\t\t\tif (this.properties) {\n\t\t\t\t\tcontrols[key] = this.defaultValues ? this.defaultValues[key] : undefined;\n\t\t\t\t}\n\n\t\t\t\treturn controls;\n\t\t\t},\n\t\t\t{} as Record<string, unknown>,\n\t\t);\n\n\t\treturn Object.assign({}, formValues, this.configuration.defaults);\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}\n\n\tresetForm(): void {\n\t\tthis.formGroup?.patchValue({\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[hideSidePanel]=\"configuration.hideSidePanel ?? false\"\n\t\t[defaultValues]=\"defaultValues\"\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\t[expanded]=\"configuration.expanded ?? false\"\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","import {ChangeDetectorRef, Directive, inject, Input, Type, ViewContainerRef} from '@angular/core';\nimport {Constructor, extractFunctionDefaults} from '@ng-doc/core';\nimport {NgDocPlaygroundConfig} from '@ng-doc/core/interfaces';\n\nimport {NgDocPlaygroundComponent} from './playground.component';\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 viewContainerRef?: ViewContainerRef;\n\tabstract readonly configData: Record<string, unknown>;\n\n\t@Input()\n\tproperties: Record<string, any> = {};\n\n\t@Input()\n\tactionData: Record<string, unknown> = {};\n\n\t@Input()\n\tcontent: any = {};\n\n\tdefaultValues: Record<string, unknown> = {};\n\n\tprivate playgroundContainer: NgDocPlaygroundComponent = inject(NgDocPlaygroundComponent);\n\tprivate changeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\n\n\tprotected constructor(\n\t\tprivate playground?: Type<any>,\n\t\tprivate playgroundInstance?: Constructor<unknown>,\n\t) {\n\t\tthis.changeDetectorRef.detach();\n\t\t/*\n\t\t * Extract default values from playground properties. We do this in `ngOnInit` because in this case\n\t\t * input values provided from the template are not initialized yet, and we can read default values instead.\n\t\t */\n\t\tif (this.playground) {\n\t\t\tthis.defaultValues = Object.keys(this.playground).reduce((values: Record<string, unknown>, key: string) => {\n\t\t\t\tif (this.playground) {\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tvalues[key] = this.playground[key];\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t}, {});\n\t\t} else if (this.playgroundInstance) {\n\t\t\tthis.defaultValues = extractFunctionDefaults(this.playgroundInstance.prototype.transform);\n\t\t} else {\n\t\t\tthrow new Error('Playground is not defined or initialized');\n\t\t}\n\n\t\tif (!this.playgroundContainer.defaultValues) {\n\t\t\tthis.playgroundContainer.defaultValues = this.defaultValues;\n\t\t}\n\n\t\t/*\n\t\t \tThis is a hack just to wait for the playground container to be initialized and only then\n\t\t \tattach the change detector to have correct inputs values.\n\t\t */\n\t\tPromise.resolve().then(() => {\n\t\t\tthis.changeDetectorRef.reattach();\n\t\t})\n\t}\n\n\tget data(): any {\n\t\treturn Object.assign({}, this.configData, this.actionData);\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["objectKeys","i1"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { NgDocCodeType } from '@ng-doc/core/types/code-type';
2
1
  export interface NgDocDemoAssets {
3
2
  [name: string]: NgDocDemoAsset[];
4
3
  }
5
4
  export interface NgDocDemoAsset {
6
- codeType: NgDocCodeType;
7
5
  code: string;
8
6
  title: string;
7
+ icon?: string;
8
+ opened?: boolean;
9
9
  }
@@ -8,4 +8,6 @@ export interface NgDocNavigation extends NgDocBaseEntity {
8
8
  expanded?: boolean;
9
9
  /** Children of the navigation item */
10
10
  children?: NgDocNavigation[];
11
+ /** The route of the entity (current sourceFileFolder name by default) */
12
+ route: string;
11
13
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ng-doc/app",
3
- "version": "16.9.0",
3
+ "version": "16.11.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=16.0.0",
6
6
  "@angular/core": ">=16.0.0",
@@ -12,8 +12,8 @@
12
12
  },
13
13
  "dependencies": {
14
14
  "tslib": "^2.3.0",
15
- "@ng-doc/core": "16.9.0",
16
- "@ng-doc/ui-kit": "16.9.0",
15
+ "@ng-doc/core": "16.11.0",
16
+ "@ng-doc/ui-kit": "16.11.0",
17
17
  "@orama/plugin-match-highlight": "1.0.2",
18
18
  "@orama/stemmers": "1.0.2",
19
19
  "highlight.js": "11.5.1"