@ng-doc/app
Version:
<!-- PROJECT LOGO --> <br /> <div align="center"> <a href="https://github.com/ng-doc/ng-doc"> <img src="https://ng-doc.com/assets/images/ng-doc.svg?raw=true" alt="Logo" height="150px"> </a>
1 lines • 136 kB
Source Map (JSON)
{"version":3,"file":"ng-doc-app-components-playground.mjs","sources":["../tmp-esm2022/components/playground/playground-demo/playground-demo.component.js","../tmp-esm2022/components/playground/playground-property/playground-property.component.js","../tmp-esm2022/components/playground/playground-properties/playground-properties.component.js","../tmp-esm2022/components/playground/playground.component.js","../tmp-esm2022/components/playground/base-playground.js","../tmp-esm2022/components/playground/ng-doc-app-components-playground.js"],"sourcesContent":["import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, inject, Injector, Input, ViewChild, ViewContainerRef, } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormGroup } from '@angular/forms';\nimport { NgDocDemoDisplayerComponent } from '@ng-doc/app/components/demo-displayer';\nimport { formatHtml } from '@ng-doc/app/helpers';\nimport { getPlaygroundDemoToken } from '@ng-doc/app/providers/playground-demo';\nimport { buildPlaygroundDemoPipeTemplate, buildPlaygroundDemoTemplate, } from '@ng-doc/core/helpers/build-playground-demo-template';\nimport { objectKeys } from '@ng-doc/core/helpers/object-keys';\nimport { stringify } from '@ng-doc/core/helpers/stringify';\nimport { NgDocSmoothResizeComponent } from '@ng-doc/ui-kit';\nimport { Subject } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nexport class NgDocPlaygroundDemoComponent {\n constructor() {\n this.id = '';\n this.pipeName = '';\n this.selector = '';\n this.recreateDemo = false;\n this.expanded = false;\n this.code = '';\n this.injector = inject(Injector);\n this.changeDetectorRef = inject(ChangeDetectorRef);\n this.destroyRef = inject(DestroyRef);\n this.unsubscribe$ = new Subject();\n }\n async ngOnChanges({ form, id }) {\n if (form || id) {\n this.unsubscribe$.next();\n const demoInjector = getPlaygroundDemoToken(this.id);\n if (demoInjector) {\n const demos = this.injector.get(demoInjector, []);\n this.playgroundDemo = demos.find((demo) => demo.selector === this.selector || demo.selector === this.pipeName);\n }\n await this.updateDemo();\n this.form?.valueChanges\n .pipe(takeUntil(this.unsubscribe$), startWith(this.form?.value), takeUntilDestroyed(this.destroyRef))\n .subscribe((data) => this.updateDemo(data));\n }\n }\n async updateDemo(data) {\n if (this.recreateDemo || !this.demoRef) {\n this.createDemo();\n }\n if (data) {\n this.demoRef?.setInput('properties', data.properties ?? {});\n this.demoRef?.setInput('content', data.content ?? {});\n this.demoRef?.setInput('actionData', this.configuration?.data ?? {});\n if (this.recreateDemo) {\n this.demoRef?.instance.onReattached.subscribe(() => {\n this.demoRef?.changeDetectorRef.detectChanges();\n });\n }\n }\n await this.updateCodeView();\n }\n createDemo() {\n if (this.playgroundDemo) {\n this.demoRef?.destroy();\n this.demoRef = this.demoOutlet?.createComponent(this.playgroundDemo);\n this.demoRef?.changeDetectorRef.markForCheck();\n }\n }\n async updateCodeView() {\n const template = this.pipeName\n ? buildPlaygroundDemoPipeTemplate(this.configuration?.template ?? '', this.pipeName, this.getActiveContent(), this.getPipeActiveInputs())\n : buildPlaygroundDemoTemplate(this.configuration?.template ?? '', this.selector, this.getActiveContent(), this.getActiveInputs());\n this.code = await formatHtml(template);\n this.changeDetectorRef.markForCheck();\n }\n getActiveContent() {\n const formData = this.form?.controls.content.value ?? {};\n return objectKeys(formData).reduce((result, key) => {\n result[key] = formData[key] ? this.configuration?.content?.[key].template ?? '' : '';\n return result;\n }, {});\n }\n getActiveInputs() {\n const formData = this.form?.controls.properties.value ?? {};\n return objectKeys(formData).reduce((result, key) => {\n const inputName = this.properties?.[key]?.inputName ?? key;\n const value = formData[key];\n const property = this.demoRef?.instance?.defaultValues[key];\n if (property !== value) {\n result[inputName] = stringify(value).replace(/\"/g, `'`);\n }\n return result;\n }, {});\n }\n getPipeActiveInputs() {\n const formData = this.form?.controls.properties.value ?? {};\n let changedInputIndex = -1;\n return objectKeys(formData)\n .map((key, i) => {\n const value = formData[key];\n const defaultValue = this.demoRef?.instance?.defaultValues[key];\n if (defaultValue !== value) {\n changedInputIndex = i;\n }\n return key;\n })\n .slice(0, changedInputIndex + 1)\n .reduce((result, key) => {\n result[key] = stringify(formData[key]).replace(/\"/g, `'`);\n return result;\n }, {});\n }\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: NgDocPlaygroundDemoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.3\", type: NgDocPlaygroundDemoComponent, isStandalone: true, selector: \"ng-doc-playground-demo\", inputs: { id: \"id\", pipeName: \"pipeName\", selector: \"selector\", configuration: \"configuration\", properties: \"properties\", recreateDemo: \"recreateDemo\", form: \"form\", expanded: \"expanded\" }, viewQueries: [{ propertyName: \"demoOutlet\", first: true, predicate: [\"demoOutlet\"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: \"<ng-doc-smooth-resize [trigger]=\\\"code\\\">\\n <ng-doc-demo-displayer\\n [code]=\\\"code\\\"\\n [border]=\\\"false\\\"\\n [expanded]=\\\"expanded\\\"\\n language=\\\"angular-html\\\">\\n <ng-container #demoOutlet></ng-container>\\n </ng-doc-demo-displayer>\\n</ng-doc-smooth-resize>\\n\", styles: [\":host{display:block;border:var(--ng-doc-demo-displayer-border);border-radius:var(--ng-doc-demo-displayer-border-radius);overflow:hidden}:host:not(:last-child){border-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0}:host:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}\\n\"], dependencies: [{ kind: \"component\", type: NgDocDemoDisplayerComponent, selector: \"ng-doc-demo-displayer\", inputs: [\"codeContent\", \"code\", \"language\", \"container\", \"border\", \"expanded\"] }, { kind: \"component\", type: NgDocSmoothResizeComponent, selector: \"ng-doc-smooth-resize\", inputs: [\"trigger\", \"animateOpacity\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: NgDocPlaygroundDemoComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ng-doc-playground-demo', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgDocDemoDisplayerComponent, NgDocSmoothResizeComponent], template: \"<ng-doc-smooth-resize [trigger]=\\\"code\\\">\\n <ng-doc-demo-displayer\\n [code]=\\\"code\\\"\\n [border]=\\\"false\\\"\\n [expanded]=\\\"expanded\\\"\\n language=\\\"angular-html\\\">\\n <ng-container #demoOutlet></ng-container>\\n </ng-doc-demo-displayer>\\n</ng-doc-smooth-resize>\\n\", styles: [\":host{display:block;border:var(--ng-doc-demo-displayer-border);border-radius:var(--ng-doc-demo-displayer-border-radius);overflow:hidden}:host:not(:last-child){border-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0}:host:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}\\n\"] }]\n }], propDecorators: { id: [{\n type: Input\n }], pipeName: [{\n type: Input\n }], selector: [{\n type: Input\n }], configuration: [{\n type: Input\n }], properties: [{\n type: Input\n }], recreateDemo: [{\n type: Input\n }], form: [{\n type: Input\n }], expanded: [{\n type: Input\n }], demoOutlet: [{\n type: ViewChild,\n args: ['demoOutlet', { static: true, read: ViewContainerRef }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWdyb3VuZC1kZW1vLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBwL2NvbXBvbmVudHMvcGxheWdyb3VuZC9wbGF5Z3JvdW5kLWRlbW8vcGxheWdyb3VuZC1kZW1vLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBwL2NvbXBvbmVudHMvcGxheWdyb3VuZC9wbGF5Z3JvdW5kLWRlbW8vcGxheWdyb3VuZC1kZW1vLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsTUFBTSxFQUVOLFFBQVEsRUFDUixLQUFLLEVBS0wsU0FBUyxFQUNULGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDcEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRS9FLE9BQU8sRUFDTCwrQkFBK0IsRUFDL0IsMkJBQTJCLEdBQzVCLE1BQU0scURBQXFELENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUUzRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxT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UUFBUTtzQkFEUCxLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRSZWYsXG4gIERlc3Ryb3lSZWYsXG4gIGluamVjdCxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFR5cGUsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOZ0RvY0RlbW9EaXNwbGF5ZXJDb21wb25lbnQgfSBmcm9tICdAbmctZG9jL2FwcC9jb21wb25lbnRzL2RlbW8tZGlzcGxheWVyJztcbmltcG9ydCB7IGZvcm1hdEh0bWwgfSBmcm9tICdAbmctZG9jL2FwcC9oZWxwZXJzJztcbmltcG9ydCB7IGdldFBsYXlncm91bmREZW1vVG9rZW4gfSBmcm9tICdAbmctZG9jL2FwcC9wcm92aWRlcnMvcGxheWdyb3VuZC1kZW1vJztcbmltcG9ydCB7IE5nRG9jRm9ybVBhcnRpYWxWYWx1ZSB9IGZyb20gJ0BuZy1kb2MvYXBwL3R5cGVzJztcbmltcG9ydCB7XG4gIGJ1aWxkUGxheWdyb3VuZERlbW9QaXBlVGVtcGxhdGUsXG4gIGJ1aWxkUGxheWdyb3VuZERlbW9UZW1wbGF0ZSxcbn0gZnJvbSAnQG5nLWRvYy9jb3JlL2hlbHBlcnMvYnVpbGQtcGxheWdyb3VuZC1kZW1vLXRlbXBsYXRlJztcbmltcG9ydCB7IG9iamVjdEtleXMgfSBmcm9tICdAbmctZG9jL2NvcmUvaGVscGVycy9vYmplY3Qta2V5cyc7XG5pbXBvcnQgeyBzdHJpbmdpZnkgfSBmcm9tICdAbmctZG9jL2NvcmUvaGVscGVycy9zdHJpbmdpZnknO1xuaW1wb3J0IHsgTmdEb2NQbGF5Z3JvdW5kQ29uZmlnLCBOZ0RvY1BsYXlncm91bmRQcm9wZXJ0aWVzIH0gZnJvbSAnQG5nLWRvYy9jb3JlL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTmdEb2NTbW9vdGhSZXNpemVDb21wb25lbnQgfSBmcm9tICdAbmctZG9jL3VpLWtpdCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzdGFydFdpdGgsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTmdEb2NCYXNlUGxheWdyb3VuZCB9IGZyb20gJy4uL2Jhc2UtcGxheWdyb3VuZCc7XG5pbXBvcnQgeyBOZ0RvY1BsYXlncm91bmRGb3JtIH0gZnJvbSAnLi4vcGxheWdyb3VuZC1mb3JtJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctZG9jLXBsYXlncm91bmQtZGVtbycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wbGF5Z3JvdW5kLWRlbW8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wbGF5Z3JvdW5kLWRlbW8uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtOZ0RvY0RlbW9EaXNwbGF5ZXJDb21wb25lbnQsIE5nRG9jU21vb3RoUmVzaXplQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTmdEb2NQbGF5Z3JvdW5kRGVtb0NvbXBvbmVudDxcbiAgICBUIGV4dGVuZHMgTmdEb2NQbGF5Z3JvdW5kUHJvcGVydGllcyA9IE5nRG9jUGxheWdyb3VuZFByb3BlcnRpZXMsXG4gID5cbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveVxue1xuICBASW5wdXQoKVxuICBpZDogc3RyaW5nID0gJyc7XG5cbiAgQElucHV0KClcbiAgcGlwZU5hbWU6IHN0cmluZyA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdG9yOiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKVxuICBjb25maWd1cmF0aW9uPzogTmdEb2NQbGF5Z3JvdW5kQ29uZmlnO1xuXG4gIEBJbnB1dCgpXG4gIHByb3BlcnRpZXM/OiBUO1xuXG4gIEBJbnB1dCgpXG4gIHJlY3JlYXRlRGVtbzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGZvcm0hOiBGb3JtR3JvdXA8TmdEb2NQbGF5Z3JvdW5kRm9ybT47XG5cbiAgQElucHV0KClcbiAgZXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdkZW1vT3V0bGV0JywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcbiAgZGVtb091dGxldD86IFZpZXdDb250YWluZXJSZWY7XG5cbiAgcGxheWdyb3VuZERlbW8/OiB0eXBlb2YgTmdEb2NCYXNlUGxheWdyb3VuZDtcblxuICBwcm90ZWN0ZWQgY29kZSA9ICcnO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByb3RlY3RlZCByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByb3RlY3RlZCByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIHByaXZhdGUgZGVtb1JlZj86IENvbXBvbmVudFJlZjxOZ0RvY0Jhc2VQbGF5Z3JvdW5kPjtcbiAgcHJpdmF0ZSByZWFkb25seSB1bnN1YnNjcmliZSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGFzeW5jIG5nT25DaGFuZ2VzKHsgZm9ybSwgaWQgfTogU2ltcGxlQ2hhbmdlcyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChmb3JtIHx8IGlkKSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG5cbiAgICAgIGNvbnN0IGRlbW9JbmplY3RvcjogSW5qZWN0aW9uVG9rZW48QXJyYXk8dHlwZW9mIE5nRG9jQmFzZVBsYXlncm91bmQ+PiB8IHVuZGVmaW5lZCA9XG4gICAgICAgIGdldFBsYXlncm91bmREZW1vVG9rZW4odGhpcy5pZCk7XG5cbiAgICAgIGlmIChkZW1vSW5qZWN0b3IpIHtcbiAgICAgICAgY29uc3QgZGVtb3M6IEFycmF5PHR5cGVvZiBOZ0RvY0Jhc2VQbGF5Z3JvdW5kPiA9IHRoaXMuaW5qZWN0b3IuZ2V0KGRlbW9JbmplY3RvciwgW10pO1xuXG4gICAgICAgIHRoaXMucGxheWdyb3VuZERlbW8gPSBkZW1vcy5maW5kKFxuICAgICAgICAgIChkZW1vOiB0eXBlb2YgTmdEb2NCYXNlUGxheWdyb3VuZCkgPT5cbiAgICAgICAgICAgIGRlbW8uc2VsZWN0b3IgPT09IHRoaXMuc2VsZWN0b3IgfHwgZGVtby5zZWxlY3RvciA9PT0gdGhpcy5waXBlTmFtZSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgdGhpcy51cGRhdGVEZW1vKCk7XG5cbiAgICAgIHRoaXMuZm9ybT8udmFsdWVDaGFuZ2VzXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCksXG4gICAgICAgICAgc3RhcnRXaXRoKHRoaXMuZm9ybT8udmFsdWUpLFxuICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IE5nRG9jRm9ybVBhcnRpYWxWYWx1ZTx0eXBlb2YgdGhpcy5mb3JtPikgPT4gdGhpcy51cGRhdGVEZW1vKGRhdGEpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZURlbW8oZGF0YT86IE5nRG9jRm9ybVBhcnRpYWxWYWx1ZTx0eXBlb2YgdGhpcy5mb3JtPik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLnJlY3JlYXRlRGVtbyB8fCAhdGhpcy5kZW1vUmVmKSB7XG4gICAgICB0aGlzLmNyZWF0ZURlbW8oKTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5kZW1vUmVmPy5zZXRJbnB1dCgncHJvcGVydGllcycsIGRhdGEucHJvcGVydGllcyA/PyB7fSk7XG4gICAgICB0aGlzLmRlbW9SZWY/LnNldElucHV0KCdjb250ZW50JywgZGF0YS5jb250ZW50ID8/IHt9KTtcbiAgICAgIHRoaXMuZGVtb1JlZj8uc2V0SW5wdXQoJ2FjdGlvbkRhdGEnLCB0aGlzLmNvbmZpZ3VyYXRpb24/LmRhdGEgPz8ge30pO1xuXG4gICAgICBpZiAodGhpcy5yZWNyZWF0ZURlbW8pIHtcbiAgICAgICAgdGhpcy5kZW1vUmVmPy5pbnN0YW5jZS5vblJlYXR0YWNoZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmRlbW9SZWY/LmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy51cGRhdGVDb2RlVmlldygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEZW1vKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBsYXlncm91bmREZW1vKSB7XG4gICAgICB0aGlzLmRlbW9SZWY/LmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuZGVtb1JlZiA9IHRoaXMuZGVtb091dGxldD8uY3JlYXRlQ29tcG9uZW50KFxuICAgICAgICB0aGlzLnBsYXlncm91bmREZW1vIGFzIHVua25vd24gYXMgVHlwZTxOZ0RvY0Jhc2VQbGF5Z3JvdW5kPixcbiAgICAgICk7XG4gICAgICB0aGlzLmRlbW9SZWY/LmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlQ29kZVZpZXcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdGVtcGxhdGU6IHN0cmluZyA9IHRoaXMucGlwZU5hbWVcbiAgICAgID8gYnVpbGRQbGF5Z3JvdW5kRGVtb1BpcGVUZW1wbGF0ZShcbiAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24/LnRlbXBsYXRlID8/ICcnLFxuICAgICAgICAgIHRoaXMucGlwZU5hbWUsXG4gICAgICAgICAgdGhpcy5nZXRBY3RpdmVDb250ZW50KCksXG4gICAgICAgICAgdGhpcy5nZXRQaXBlQWN0aXZlSW5wdXRzKCksXG4gICAgICAgIClcbiAgICAgIDogYnVpbGRQbGF5Z3JvdW5kRGVtb1RlbXBsYXRlKFxuICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbj8udGVtcGxhdGUgPz8gJycsXG4gICAgICAgICAgdGhpcy5zZWxlY3RvcixcbiAgICAgICAgICB0aGlzLmdldEFjdGl2ZUNvbnRlbnQoKSxcbiAgICAgICAgICB0aGlzLmdldEFjdGl2ZUlucHV0cygpLFxuICAgICAgICApO1xuXG4gICAgdGhpcy5jb2RlID0gYXdhaXQgZm9ybWF0SHRtbCh0ZW1wbGF0ZSk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWN0aXZlQ29udGVudCgpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBmb3JtRGF0YTogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPVxuICAgICAgKHRoaXMuZm9ybT8uY29udHJvbHMuY29udGVudC52YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPikgPz8ge307XG5cbiAgICByZXR1cm4gb2JqZWN0S2V5cyhmb3JtRGF0YSkucmVkdWNlKChyZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICByZXN1bHRba2V5XSA9IGZvcm1EYXRhW2tleV0gPyB0aGlzLmNvbmZpZ3VyYXRpb24/LmNvbnRlbnQ/LltrZXldLnRlbXBsYXRlID8/ICcnIDogJyc7XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSwge30pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBY3RpdmVJbnB1dHMoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgY29uc3QgZm9ybURhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID1cbiAgICAgICh0aGlzLmZvcm0/LmNvbnRyb2xzLnByb3BlcnRpZXMudmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID8/IHt9O1xuXG4gICAgcmV0dXJuIG9iamVjdEtleXMoZm9ybURhdGEpLnJlZHVjZSgocmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgaW5wdXROYW1lID0gdGhpcy5wcm9wZXJ0aWVzPy5ba2V5XT8uaW5wdXROYW1lID8/IGtleTtcbiAgICAgIGNvbnN0IHZhbHVlOiB1bmtub3duID0gZm9ybURhdGFba2V5XTtcbiAgICAgIGNvbnN0IHByb3BlcnR5OiB1bmtub3duIHwgdW5kZWZpbmVkID0gdGhpcy5kZW1vUmVmPy5pbnN0YW5jZT8uZGVmYXVsdFZhbHVlc1trZXldO1xuXG4gICAgICBpZiAocHJvcGVydHkgIT09IHZhbHVlKSB7XG4gICAgICAgIHJlc3VsdFtpbnB1dE5hbWVdID0gc3RyaW5naWZ5KHZhbHVlKS5yZXBsYWNlKC9cIi9nLCBgJ2ApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sIHt9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGlwZUFjdGl2ZUlucHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBmb3JtRGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPVxuICAgICAgKHRoaXMuZm9ybT8uY29udHJvbHMucHJvcGVydGllcy52YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPz8ge307XG4gICAgbGV0IGNoYW5nZWRJbnB1dEluZGV4OiBudW1iZXIgPSAtMTtcblxuICAgIHJldHVybiBvYmplY3RLZXlzKGZvcm1EYXRhKVxuICAgICAgLm1hcCgoa2V5OiBzdHJpbmcsIGk6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZTogdW5rbm93biA9IGZvcm1EYXRhW2tleV07XG4gICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZTogdW5rbm93biB8IHVuZGVmaW5lZCA9IHRoaXMuZGVtb1JlZj8uaW5zdGFuY2U/LmRlZmF1bHRWYWx1ZXNba2V5XTtcblxuICAgICAgICBpZiAoZGVmYXVsdFZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgIGNoYW5nZWRJbnB1dEluZGV4ID0gaTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgICB9KVxuICAgICAgLnNsaWNlKDAsIGNoYW5nZWRJbnB1dEluZGV4ICsgMSlcbiAgICAgIC5yZWR1Y2UoKHJlc3VsdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBzdHJpbmdpZnkoZm9ybURhdGFba2V5XSkucmVwbGFjZSgvXCIvZywgYCdgKTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSwge30pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxuZy1kb2Mtc21vb3RoLXJlc2l6ZSBbdHJpZ2dlcl09XCJjb2RlXCI+XG4gIDxuZy1kb2MtZGVtby1kaXNwbGF5ZXJcbiAgICBbY29kZV09XCJjb2RlXCJcbiAgICBbYm9yZGVyXT1cImZhbHNlXCJcbiAgICBbZXhwYW5kZWRdPVwiZXhwYW5kZWRcIlxuICAgIGxhbmd1YWdlPVwiYW5ndWxhci1odG1sXCI+XG4gICAgPG5nLWNvbnRhaW5lciAjZGVtb091dGxldD48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1kb2MtZGVtby1kaXNwbGF5ZXI+XG48L25nLWRvYy1zbW9vdGgtcmVzaXplPlxuIl19","import { ChangeDetectionStrategy, Component, HostBinding, Input, ViewChild, ViewContainerRef, } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { isPlaygroundProperty } from '@ng-doc/app/helpers';\nimport { NgDocSanitizeHtmlPipe } from '@ng-doc/app/pipes';\nimport { NgDocLabelComponent, NgDocTooltipDirective } from '@ng-doc/ui-kit';\nimport * as i0 from \"@angular/core\";\nexport class NgDocPlaygroundPropertyComponent {\n constructor() {\n this.name = '';\n }\n ngOnChanges({ property, control, typeControl, defaultValue }) {\n if ((property || control || typeControl || defaultValue) && this.property && this.typeControl) {\n this.propertyTypeControl?.destroy();\n this.propertyTypeControl = undefined;\n if (this.typeControl && this.propertyOutlet) {\n this.propertyTypeControl = this.propertyOutlet.createComponent(this.typeControl.control);\n this.propertyTypeControl.instance.name = this.name;\n this.propertyTypeControl.instance.description = this.tooltipContent;\n this.propertyTypeControl.instance.options = isPlaygroundProperty(this.property)\n ? this.property.options\n : undefined;\n this.propertyTypeControl.instance.default = this.defaultValue;\n this.propertyTypeControl.instance.isManual = isPlaygroundProperty(this.property)\n ? this.property.isManual\n : undefined;\n this.propertyTypeControl.instance.writeValue(this.control?.value);\n this.option = this.typeControl.options;\n }\n if (this.control) {\n this.control?.registerOnChange((value) => this.propertyTypeControl?.instance?.writeValue(value));\n this.propertyTypeControl?.instance.registerOnChange((value) => this.control?.setValue(value));\n this.propertyTypeControl?.instance.registerOnTouched(() => this.control?.markAsTouched());\n }\n }\n }\n get hasPropertyControl() {\n return !!this.propertyTypeControl;\n }\n get tooltipContent() {\n return this.property && isPlaygroundProperty(this.property)\n ? this.property.description ?? ''\n : '';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: NgDocPlaygroundPropertyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.3\", type: NgDocPlaygroundPropertyComponent, isStandalone: true, selector: \"ng-doc-playground-property\", inputs: { name: \"name\", property: \"property\", typeControl: \"typeControl\", control: \"control\", defaultValue: \"defaultValue\" }, host: { properties: { \"attr.data-has-property-control\": \"this.hasPropertyControl\" } }, viewQueries: [{ propertyName: \"propertyOutlet\", first: true, predicate: [\"propertyOutlet\"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: \"<label [ng-doc-label]=\\\"option?.hideLabel ? '' : labelContent\\\">\\n\\t<ng-template #labelContent>\\n\\t\\t<span\\n\\t\\t\\t[ngDocTooltip]=\\\"tooltipTemplate\\\"\\n\\t\\t\\t[canOpen]=\\\"!!tooltipContent\\\"\\n\\t\\t\\t[positions]=\\\"['left-center', 'top-right', 'bottom-right']\\\"\\n\\t\\t\\t>{{ name }}</span\\n\\t\\t>\\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\", styles: [\":host{display:block}:host[data-has-property-control=false]{display:none}\\n\"], dependencies: [{ kind: \"component\", type: NgDocLabelComponent, selector: \"label[ng-doc-label]\", inputs: [\"ng-doc-label\", \"align\"] }, { kind: \"directive\", type: NgDocTooltipDirective, selector: \"[ngDocTooltip]\", inputs: [\"ngDocTooltip\", \"delay\", \"displayOrigin\", \"pointerOrigin\", \"positions\", \"canOpen\", \"panelClass\", \"minHeight\", \"maxHeight\", \"height\", \"minWidth\", \"maxWidth\", \"width\"], outputs: [\"beforeOpen\", \"afterOpen\", \"beforeClose\", \"afterClose\"], exportAs: [\"ngDocTooltip\"] }, { kind: \"pipe\", type: NgDocSanitizeHtmlPipe, name: \"ngDocSanitizeHtml\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: NgDocPlaygroundPropertyComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ng-doc-playground-property', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgDocLabelComponent, NgDocTooltipDirective, NgDocSanitizeHtmlPipe], template: \"<label [ng-doc-label]=\\\"option?.hideLabel ? '' : labelContent\\\">\\n\\t<ng-template #labelContent>\\n\\t\\t<span\\n\\t\\t\\t[ngDocTooltip]=\\\"tooltipTemplate\\\"\\n\\t\\t\\t[canOpen]=\\\"!!tooltipContent\\\"\\n\\t\\t\\t[positions]=\\\"['left-center', 'top-right', 'bottom-right']\\\"\\n\\t\\t\\t>{{ name }}</span\\n\\t\\t>\\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\", styles: [\":host{display:block}:host[data-has-property-control=false]{display:none}\\n\"] }]\n }], propDecorators: { name: [{\n type: Input\n }], property: [{\n type: Input\n }], typeControl: [{\n type: Input\n }], control: [{\n type: Input\n }], defaultValue: [{\n type: Input\n }], propertyOutlet: [{\n type: ViewChild,\n args: ['propertyOutlet', { read: ViewContainerRef, static: true }]\n }], hasPropertyControl: [{\n type: HostBinding,\n args: ['attr.data-has-property-control']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWdyb3VuZC1wcm9wZXJ0eS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwcC9jb21wb25lbnRzL3BsYXlncm91bmQvcGxheWdyb3VuZC1wcm9wZXJ0eS9wbGF5Z3JvdW5kLXByb3BlcnR5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBwL2NvbXBvbmVudHMvcGxheWdyb3VuZC9wbGF5Z3JvdW5kLXByb3BlcnR5L3BsYXlncm91bmQtcHJvcGVydHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssRUFHTCxTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQU0zRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFTNUUsTUFBTSxPQUFPLGdDQUFnQztJQVA3QztRQVNFLFNBQUksR0FBVyxFQUFFLENBQUM7S0ErRG5CO0lBM0NDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBaUI7UUFDekUsSUFBSSxDQUFDLFFBQVEsSUFBSSxPQUFPLElBQUksV0FBVyxJQUFJLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzlGLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDO1lBRXJDLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN6RixJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNuRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO2dCQUNwRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO29CQUM3RSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPO29CQUN2QixDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUNkLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7Z0JBQzlELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7b0JBQzlFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVE7b0JBQ3hCLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFFbEUsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztZQUN6QyxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUMvQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FDdEQsQ0FBQztnQkFDRixJQUFJLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsS0FBYyxFQUFFLEVBQUUsQ0FDckUsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQzlCLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7WUFDNUYsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsSUFDSSxrQkFBa0I7UUFDcEIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDekQsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxJQUFJLEVBQUU7WUFDakMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNULENBQUM7OEdBaEVVLGdDQUFnQztrR0FBaEMsZ0NBQWdDLHdZQWdCTixnQkFBZ0IsZ0VDN0N2RCw2ZUFjQSxvSURhWSxtQkFBbUIsbUdBQUUscUJBQXFCLHFVQUFFLHFCQUFxQjs7MkZBRWhFLGdDQUFnQztrQkFQNUMsU0FBUzsrQkFDRSw0QkFBNEIsbUJBR3JCLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxxQkFBcUIsQ0FBQzs4QkFJNUUsSUFBSTtzQkFESCxLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixjQUFjO3NCQURiLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkF3Q2pFLGtCQUFrQjtzQkFEckIsV0FBVzt1QkFBQyxnQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBpc1BsYXlncm91bmRQcm9wZXJ0eSB9IGZyb20gJ0BuZy1kb2MvYXBwL2hlbHBlcnMnO1xuaW1wb3J0IHtcbiAgTmdEb2NQcm92aWRlZFR5cGVDb250cm9sLFxuICBOZ0RvY1R5cGVDb250cm9sLFxuICBOZ0RvY1R5cGVDb250cm9sUHJvdmlkZXJPcHRpb25zLFxufSBmcm9tICdAbmctZG9jL2FwcC9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE5nRG9jU2FuaXRpemVIdG1sUGlwZSB9IGZyb20gJ0BuZy1kb2MvYXBwL3BpcGVzJztcbmltcG9ydCB7IE5nRG9jUGxheWdyb3VuZENvbnRlbnQsIE5nRG9jUGxheWdyb3VuZFByb3BlcnR5IH0gZnJvbSAnQG5nLWRvYy9jb3JlL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTmdEb2NMYWJlbENvbXBvbmVudCwgTmdEb2NUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnQG5nLWRvYy91aS1raXQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1kb2MtcGxheWdyb3VuZC1wcm9wZXJ0eScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wbGF5Z3JvdW5kLXByb3BlcnR5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGxheWdyb3VuZC1wcm9wZXJ0eS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW05nRG9jTGFiZWxDb21wb25lbnQsIE5nRG9jVG9vbHRpcERpcmVjdGl2ZSwgTmdEb2NTYW5pdGl6ZUh0bWxQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgTmdEb2NQbGF5Z3JvdW5kUHJvcGVydHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBuYW1lOiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKVxuICBwcm9wZXJ0eT86IE5nRG9jUGxheWdyb3VuZFByb3BlcnR5IHwgTmdEb2NQbGF5Z3JvdW5kQ29udGVudDtcblxuICBASW5wdXQoKVxuICB0eXBlQ29udHJvbD86IE5nRG9jUHJvdmlkZWRUeXBlQ29udHJvbDtcblxuICBASW5wdXQoKVxuICBjb250cm9sPzogRm9ybUNvbnRyb2w7XG5cbiAgQElucHV0KClcbiAgZGVmYXVsdFZhbHVlPzogdW5rbm93bjtcblxuICBAVmlld0NoaWxkKCdwcm9wZXJ0eU91dGxldCcsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHByb3BlcnR5T3V0bGV0PzogVmlld0NvbnRhaW5lclJlZjtcblxuICBwcm90ZWN0ZWQgb3B0aW9uPzogTmdEb2NUeXBlQ29udHJvbFByb3ZpZGVyT3B0aW9ucztcbiAgcHJpdmF0ZSBwcm9wZXJ0eVR5cGVDb250cm9sPzogQ29tcG9uZW50UmVmPE5nRG9jVHlwZUNvbnRyb2w+O1xuXG4gIG5nT25DaGFuZ2VzKHsgcHJvcGVydHksIGNvbnRyb2wsIHR5cGVDb250cm9sLCBkZWZhdWx0VmFsdWUgfTogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICgocHJvcGVydHkgfHwgY29udHJvbCB8fCB0eXBlQ29udHJvbCB8fCBkZWZhdWx0VmFsdWUpICYmIHRoaXMucHJvcGVydHkgJiYgdGhpcy50eXBlQ29udHJvbCkge1xuICAgICAgdGhpcy5wcm9wZXJ0eVR5cGVDb250cm9sPy5kZXN0cm95KCk7XG4gICAgICB0aGlzLnByb3BlcnR5VHlwZUNvbnRyb2wgPSB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICh0aGlzLnR5cGVDb250cm9sICYmIHRoaXMucHJvcGVydHlPdXRsZXQpIHtcbiAgICAgICAgdGhpcy5wcm9wZXJ0eVR5cGVDb250cm9sID0gdGhpcy5wcm9wZXJ0eU91dGxldC5jcmVhdGVDb21wb25lbnQodGhpcy50eXBlQ29udHJvbC5jb250cm9sKTtcbiAgICAgICAgdGhpcy5wcm9wZXJ0eVR5cGVDb250cm9sLmluc3RhbmNlLm5hbWUgPSB0aGlzLm5hbWU7XG4gICAgICAgIHRoaXMucHJvcGVydHlUeXBlQ29udHJvbC5pbnN0YW5jZS5kZXNjcmlwdGlvbiA9IHRoaXMudG9vbHRpcENvbnRlbnQ7XG4gICAgICAgIHRoaXMucHJvcGVydHlUeXBlQ29udHJvbC5pbnN0YW5jZS5vcHRpb25zID0gaXNQbGF5Z3JvdW5kUHJvcGVydHkodGhpcy5wcm9wZXJ0eSlcbiAgICAgICAgICA/IHRoaXMucHJvcGVydHkub3B0aW9uc1xuICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnByb3BlcnR5VHlwZUNvbnRyb2wuaW5zdGFuY2UuZGVmYXVsdCA9IHRoaXMuZGVmYXVsdFZhbHVlO1xuICAgICAgICB0aGlzLnByb3BlcnR5VHlwZUNvbnRyb2wuaW5zdGFuY2UuaXNNYW51YWwgPSBpc1BsYXlncm91bmRQcm9wZXJ0eSh0aGlzLnByb3BlcnR5KVxuICAgICAgICAgID8gdGhpcy5wcm9wZXJ0eS5pc01hbnVhbFxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnByb3BlcnR5VHlwZUNvbnRyb2wuaW5zdGFuY2Uud3JpdGVWYWx1ZSh0aGlzLmNvbnRyb2w/LnZhbHVlKTtcblxuICAgICAgICB0aGlzLm9wdGlvbiA9IHRoaXMudHlwZUNvbnRyb2wub3B0aW9ucztcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgICB0aGlzLmNvbnRyb2w/LnJlZ2lzdGVyT25DaGFuZ2UoKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgICAgICAgdGhpcy5wcm9wZXJ0eVR5cGVDb250cm9sPy5pbnN0YW5jZT8ud3JpdGVWYWx1ZSh2YWx1ZSksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucHJvcGVydHlUeXBlQ29udHJvbD8uaW5zdGFuY2UucmVnaXN0ZXJPbkNoYW5nZSgodmFsdWU6IHVua25vd24pID0+XG4gICAgICAgICAgdGhpcy5jb250cm9sPy5zZXRWYWx1ZSh2YWx1ZSksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucHJvcGVydHlUeXBlQ29udHJvbD8uaW5zdGFuY2UucmVnaXN0ZXJPblRvdWNoZWQoKCkgPT4gdGhpcy5jb250cm9sPy5tYXJrQXNUb3VjaGVkKCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWhhcy1wcm9wZXJ0eS1jb250cm9sJylcbiAgZ2V0IGhhc1Byb3BlcnR5Q29udHJvbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnByb3BlcnR5VHlwZUNvbnRyb2w7XG4gIH1cblxuICBnZXQgdG9vbHRpcENvbnRlbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eSAmJiBpc1BsYXlncm91bmRQcm9wZXJ0eSh0aGlzLnByb3BlcnR5KVxuICAgICAgPyB0aGlzLnByb3BlcnR5LmRlc2NyaXB0aW9uID8/ICcnXG4gICAgICA6ICcnO1xuICB9XG59XG4iLCI8bGFiZWwgW25nLWRvYy1sYWJlbF09XCJvcHRpb24/LmhpZGVMYWJlbCA/ICcnIDogbGFiZWxDb250ZW50XCI+XG5cdDxuZy10ZW1wbGF0ZSAjbGFiZWxDb250ZW50PlxuXHRcdDxzcGFuXG5cdFx0XHRbbmdEb2NUb29sdGlwXT1cInRvb2x0aXBUZW1wbGF0ZVwiXG5cdFx0XHRbY2FuT3Blbl09XCIhIXRvb2x0aXBDb250ZW50XCJcblx0XHRcdFtwb3NpdGlvbnNdPVwiWydsZWZ0LWNlbnRlcicsICd0b3AtcmlnaHQnLCAnYm90dG9tLXJpZ2h0J11cIlxuXHRcdFx0Pnt7IG5hbWUgfX08L3NwYW5cblx0XHQ+XG5cdFx0PG5nLXRlbXBsYXRlICN0b29sdGlwVGVtcGxhdGU+XG5cdFx0XHQ8ZGl2IFtpbm5lckhUTUxdPVwidG9vbHRpcENvbnRlbnQgfCBuZ0RvY1Nhbml0aXplSHRtbFwiPjwvZGl2PlxuXHRcdDwvbmctdGVtcGxhdGU+XG5cdDwvbmctdGVtcGxhdGU+XG5cdDxuZy1jb250YWluZXIgI3Byb3BlcnR5T3V0bGV0PjwvbmctY29udGFpbmVyPlxuPC9sYWJlbD5cbiJdfQ==","import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { AsyncPipe, KeyValuePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, inject, Injector, Input, isDevMode, Output, } from '@angular/core';\nimport { FormGroup, FormsModule } from '@angular/forms';\nimport { isPlaygroundProperty } from '@ng-doc/app/helpers';\nimport { getTokenForType } from '@ng-doc/app/providers/type-control';\nimport { extractValueOrThrow } from '@ng-doc/core/helpers/extract-value';\nimport { isPresent } from '@ng-doc/core/helpers/is-present';\nimport { objectKeys } from '@ng-doc/core/helpers/object-keys';\nimport { NgDocBindPipe, NgDocButtonComponent, NgDocCheckboxComponent, NgDocExecutePipe, NgDocIconComponent, NgDocTextComponent, NgDocTextRightDirective, NgDocTooltipDirective, } from '@ng-doc/ui-kit';\nimport { map } from 'rxjs/operators';\nimport { NgDocPlaygroundPropertyComponent } from '../playground-property/playground-property.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nexport class NgDocPlaygroundPropertiesComponent {\n constructor() {\n this.breakpointObserver = inject(BreakpointObserver);\n this.injector = inject(Injector);\n this.ignoreInputs = [];\n this.hideSidePanel = false;\n this.recreateDemo = false;\n this.showResetButton = false;\n this.recreateDemoChange = new EventEmitter();\n this.resetForm = new EventEmitter();\n this.breakpoints = [Breakpoints.XSmall];\n this.propertyControls = [];\n this.contentTypeControl = this.getControlForType('boolean');\n this.observer = this.breakpointObserver\n .observe(this.breakpoints)\n .pipe(map((state) => state.matches));\n }\n ngOnChanges({ properties }) {\n if (properties && this.properties) {\n this.propertyControls = objectKeys(this.properties)\n .filter((key) => this.ignoreInputs?.includes(String(key)) !== true)\n .map((key) => {\n if (this.properties) {\n const property = this.properties[key];\n const typeControl = this.getTypeControl(property);\n if (typeControl) {\n return {\n propertyName: String(key),\n property,\n typeControl,\n };\n }\n }\n return null;\n })\n .filter(isPresent)\n .sort((a, b) => {\n const aOrder = a.typeControl.options?.order;\n const bOrder = b.typeControl.options?.order;\n if (isPresent(aOrder) && isPresent(bOrder)) {\n return aOrder - bOrder;\n }\n if (isPresent(aOrder)) {\n return -1;\n }\n if (isPresent(bOrder)) {\n return 1;\n }\n return a.property.inputName.localeCompare(b.property.inputName);\n });\n }\n }\n getFormControl(controlType, key) {\n return this.form.get(controlType)?.get(key);\n }\n getTypeControl(property) {\n const type = property.type;\n const typeControl = this.getControlForType(type) ??\n this.getControlForTypeAlias(isPlaygroundProperty(property) ? property.options : undefined, property.isManual);\n if (!typeControl && isDevMode()) {\n console.warn(`NgDocPlayground didn't find the control for the @Input \"${property.inputName}\", the type \"${type}\" was not recognized'`);\n }\n return typeControl;\n }\n getControlForType(type) {\n const token = getTokenForType(type);\n return token ? this.injector.get(token) : undefined;\n }\n getControlForTypeAlias(options, isManual) {\n if (options && options.length) {\n let optionsIsValid = true;\n if (!isManual) {\n try {\n // checking that all values are extractable\n options.forEach((item) => extractValueOrThrow(item));\n }\n catch {\n optionsIsValid = false;\n }\n }\n if (optionsIsValid) {\n const token = getTokenForType('NgDocTypeAlias');\n return token ? this.injector.get(token) : undefined;\n }\n }\n return undefined;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: NgDocPlaygroundPropertiesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.3\", type: NgDocPlaygroundPropertiesComponent, isStandalone: true, selector: \"ng-doc-playground-properties\", inputs: { form: \"form\", properties: \"properties\", ignoreInputs: \"ignoreInputs\", dynamicContent: \"dynamicContent\", defaultValues: \"defaultValues\", hideSidePanel: \"hideSidePanel\", recreateDemo: \"recreateDemo\", showResetButton: \"showResetButton\" }, outputs: { recreateDemoChange: \"recreateDemoChange\", resetForm: \"resetForm\" }, usesOnChanges: true, ngImport: i0, template: \"@if (defaultValues) {\\n <div class=\\\"ng-doc-playground-properties-wrapper\\\" [class.vertical]=\\\"observer | async\\\">\\n <div class=\\\"ng-doc-playground-demos\\\">\\n <ng-content></ng-content>\\n </div>\\n @if (!hideSidePanel) {\\n <div class=\\\"ng-doc-playground-properties\\\">\\n <div class=\\\"ng-doc-playground-header\\\">\\n <h4 ng-doc-text>Playground</h4>\\n @if (showResetButton) {\\n <button ng-doc-button color=\\\"alert\\\" (click)=\\\"resetForm.emit()\\\">Reset</button>\\n }\\n </div>\\n <div class=\\\"ng-doc-playground-setting\\\">\\n <ng-doc-checkbox\\n [(ngModel)]=\\\"recreateDemo\\\"\\n (ngModelChange)=\\\"recreateDemoChange.emit($event)\\\">\\n <span\\n ng-doc-text\\n [ngDocTooltip]=\\\"'Recreates demo everytime\\\\none of the input has changed'\\\"\\n [positions]=\\\"['bottom-right', 'left-center']\\\">\\n Recreate\\n <ng-doc-icon icon=\\\"info\\\" ngDocTextRight></ng-doc-icon>\\n </span>\\n </ng-doc-checkbox>\\n </div>\\n <div class=\\\"ng-doc-playground-divider\\\"></div>\\n @if (propertyControls.length) {\\n <h5 class=\\\"ng-doc-title\\\" ng-doc-text>Settings</h5>\\n @for (propertyControl of propertyControls; track propertyControl) {\\n <ng-doc-playground-property\\n [name]=\\\"propertyControl.property.inputName\\\"\\n [property]=\\\"propertyControl.property\\\"\\n [typeControl]=\\\"propertyControl.typeControl\\\"\\n [defaultValue]=\\\"defaultValues[propertyControl.propertyName]\\\"\\n [control]=\\\"\\n getFormControl | bind: this | execute: 'properties' : propertyControl.propertyName\\n \\\">\\n </ng-doc-playground-property>\\n }\\n }\\n @if ((dynamicContent | keyvalue)?.length) {\\n <h5 class=\\\"ng-doc-title\\\" ng-doc-text>Content</h5>\\n @for (content of dynamicContent | keyvalue; track content) {\\n <ng-doc-playground-property\\n [name]=\\\"content.value.label\\\"\\n [property]=\\\"content.value\\\"\\n [typeControl]=\\\"contentTypeControl\\\"\\n [control]=\\\"getFormControl | bind: this | execute: 'content' : content.key\\\">\\n </ng-doc-playground-property>\\n }\\n }\\n </div>\\n }\\n </div>\\n}\\n\", styles: [\":host .ng-doc-playground-properties-wrapper{position:relative;display:flex;align-items:flex-start;gap:calc(var(--ng-doc-base-gutter) * 2)}:host .ng-doc-playground-properties-wrapper.vertical{flex-direction:column}:host .ng-doc-playground-properties-wrapper.vertical .ng-doc-playground-demos{margin-right:0;margin-bottom:calc(var(--ng-doc-base-gutter) * 2)}:host .ng-doc-playground-properties-wrapper.vertical .ng-doc-playground-properties{width:100%}:host .ng-doc-playground-properties-wrapper .ng-doc-playground-demos{position:sticky;display:flex;flex-direction:column;width:100%;min-width:0;z-index:4;top:calc(var(--ng-doc-page-stic