@ng-doc/app 19.1.0 → 19.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/playground/playground-demo/playground-demo.component.d.ts +2 -1
- package/components/toc/toc.component.d.ts +2 -1
- package/directives/route-active/route-active.directive.d.ts +2 -6
- package/fesm2022/ng-doc-app-classes-search-engine.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-breadcrumb.mjs +2 -4
- package/fesm2022/ng-doc-app-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-code.mjs +1 -4
- package/fesm2022/ng-doc-app-components-code.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-heading-anchor.mjs +2 -2
- package/fesm2022/ng-doc-app-components-heading-anchor.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-image-viewer.mjs +1 -2
- package/fesm2022/ng-doc-app-components-image-viewer.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-navbar.mjs +8 -25
- package/fesm2022/ng-doc-app-components-navbar.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-page.mjs +4 -17
- package/fesm2022/ng-doc-app-components-page.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-playground.mjs +9 -12
- package/fesm2022/ng-doc-app-components-playground.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-root.mjs +4 -9
- package/fesm2022/ng-doc-app-components-root.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-search-dialog.mjs +1 -4
- package/fesm2022/ng-doc-app-components-search-dialog.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-search.mjs +5 -28
- package/fesm2022/ng-doc-app-components-search.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-sidebar.mjs +3 -10
- package/fesm2022/ng-doc-app-components-sidebar.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-tabs.mjs +1 -4
- package/fesm2022/ng-doc-app-components-tabs.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-theme-toggle.mjs +1 -2
- package/fesm2022/ng-doc-app-components-theme-toggle.mjs.map +1 -1
- package/fesm2022/ng-doc-app-components-toc.mjs +8 -12
- package/fesm2022/ng-doc-app-components-toc.mjs.map +1 -1
- package/fesm2022/ng-doc-app-defaults-default-skeleton.mjs.map +1 -1
- package/fesm2022/ng-doc-app-directives-route-active.mjs +15 -23
- package/fesm2022/ng-doc-app-directives-route-active.mjs.map +1 -1
- package/fesm2022/ng-doc-app-helpers.mjs.map +1 -1
- package/fesm2022/ng-doc-app-services-sidebar.mjs +2 -8
- package/fesm2022/ng-doc-app-services-sidebar.mjs.map +1 -1
- package/fesm2022/ng-doc-app-services-theme.mjs +2 -7
- package/fesm2022/ng-doc-app-services-theme.mjs.map +1 -1
- package/package.json +7 -7
- package/styles/global.css +3 -0
- package/styles/main.css +3 -0
- package/styles/themes/dark.css +22 -22
|
@@ -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 ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n inject,\n InjectionToken,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\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 { NgDocFormPartialValue } from '@ng-doc/app/types';\nimport {\n buildPlaygroundDemoPipeTemplate,\n buildPlaygroundDemoTemplate,\n} 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 { NgDocPlaygroundConfig, NgDocPlaygroundProperties } from '@ng-doc/core/interfaces';\nimport { NgDocLetDirective, NgDocSmoothResizeComponent } from '@ng-doc/ui-kit';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { Subject } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\n\nimport { NgDocBasePlayground } from '../base-playground';\nimport { NgDocPlaygroundForm } from '../playground-form';\n\n@Component({\n selector: 'ng-doc-playground-demo',\n templateUrl: './playground-demo.component.html',\n styleUrls: ['./playground-demo.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgDocDemoDisplayerComponent, AsyncPipe, NgDocSmoothResizeComponent, NgDocLetDirective],\n})\n@UntilDestroy()\nexport class NgDocPlaygroundDemoComponent<\n T extends NgDocPlaygroundProperties = NgDocPlaygroundProperties,\n >\n implements OnChanges, OnDestroy\n{\n @Input()\n id: string = '';\n\n @Input()\n pipeName: string = '';\n\n @Input()\n selector: string = '';\n\n @Input()\n configuration?: NgDocPlaygroundConfig;\n\n @Input()\n properties?: T;\n\n @Input()\n recreateDemo: boolean = false;\n\n @Input()\n form!: FormGroup<NgDocPlaygroundForm>;\n\n @Input()\n expanded: boolean = false;\n\n @ViewChild('demoOutlet', { static: true, read: ViewContainerRef })\n demoOutlet?: ViewContainerRef;\n\n playgroundDemo?: typeof NgDocBasePlayground;\n\n protected code = '';\n\n protected readonly injector = inject(Injector);\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n private demoRef?: ComponentRef<NgDocBasePlayground>;\n private readonly unsubscribe$: Subject<void> = new Subject<void>();\n\n async ngOnChanges({ form, id }: SimpleChanges): Promise<void> {\n if (form || id) {\n this.unsubscribe$.next();\n\n const demoInjector: InjectionToken<Array<typeof NgDocBasePlayground>> | undefined =\n getPlaygroundDemoToken(this.id);\n\n if (demoInjector) {\n const demos: Array<typeof NgDocBasePlayground> = this.injector.get(demoInjector, []);\n\n this.playgroundDemo = demos.find(\n (demo: typeof NgDocBasePlayground) =>\n demo.selector === this.selector || demo.selector === this.pipeName,\n );\n }\n\n await this.updateDemo();\n\n this.form?.valueChanges\n .pipe(takeUntil(this.unsubscribe$), untilDestroyed(this), startWith(this.form?.value))\n .subscribe((data: NgDocFormPartialValue<typeof this.form>) => this.updateDemo(data));\n }\n }\n\n private async updateDemo(data?: NgDocFormPartialValue<typeof this.form>): Promise<void> {\n if (this.recreateDemo || !this.demoRef) {\n this.createDemo();\n }\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\n if (this.recreateDemo) {\n this.demoRef?.instance.onReattached.subscribe(() => {\n this.demoRef?.changeDetectorRef.detectChanges();\n });\n }\n }\n\n await this.updateCodeView();\n }\n\n private createDemo(): void {\n if (this.playgroundDemo) {\n this.demoRef?.destroy();\n this.demoRef = this.demoOutlet?.createComponent(\n this.playgroundDemo as unknown as Type<NgDocBasePlayground>,\n );\n this.demoRef?.changeDetectorRef.markForCheck();\n }\n }\n\n private async updateCodeView(): Promise<void> {\n const template: string = this.pipeName\n ? buildPlaygroundDemoPipeTemplate(\n this.configuration?.template ?? '',\n this.pipeName,\n this.getActiveContent(),\n this.getPipeActiveInputs(),\n )\n : buildPlaygroundDemoTemplate(\n this.configuration?.template ?? '',\n this.selector,\n this.getActiveContent(),\n this.getActiveInputs(),\n );\n\n this.code = await formatHtml(template);\n this.changeDetectorRef.markForCheck();\n }\n\n private getActiveContent(): Record<string, string> {\n const formData: Record<string, boolean> =\n (this.form?.controls.content.value as Record<string, boolean>) ?? {};\n\n return objectKeys(formData).reduce((result: Record<string, string>, key: string) => {\n result[key] = formData[key] ? this.configuration?.content?.[key].template ?? '' : '';\n\n return result;\n }, {});\n }\n\n private getActiveInputs(): Record<string, string> {\n const formData: Record<string, unknown> =\n (this.form?.controls.properties.value as Record<string, unknown>) ?? {};\n\n return objectKeys(formData).reduce((result: Record<string, string>, key: string) => {\n const inputName = this.properties?.[key]?.inputName ?? key;\n const value: unknown = formData[key];\n const property: unknown | undefined = this.demoRef?.instance?.defaultValues[key];\n\n if (property !== value) {\n result[inputName] = stringify(value).replace(/\"/g, `'`);\n }\n\n return result;\n }, {});\n }\n\n private getPipeActiveInputs(): Record<string, string> {\n const formData: Record<string, unknown> =\n (this.form?.controls.properties.value as Record<string, unknown>) ?? {};\n let changedInputIndex: number = -1;\n\n return objectKeys(formData)\n .map((key: string, i: number) => {\n const value: unknown = formData[key];\n const defaultValue: unknown | undefined = this.demoRef?.instance?.defaultValues[key];\n\n if (defaultValue !== value) {\n changedInputIndex = i;\n }\n\n return key;\n })\n .slice(0, changedInputIndex + 1)\n .reduce((result: Record<string, string>, key: string) => {\n result[key] = stringify(formData[key]).replace(/\"/g, `'`);\n\n return result;\n }, {});\n }\n\n ngOnDestroy(): void {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","<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","import {\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n HostBinding,\n Input,\n OnChanges,\n SimpleChanges,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { isPlaygroundProperty } from '@ng-doc/app/helpers';\nimport {\n NgDocProvidedTypeControl,\n NgDocTypeControl,\n NgDocTypeControlProviderOptions,\n} 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 selector: 'ng-doc-playground-property',\n templateUrl: './playground-property.component.html',\n styleUrls: ['./playground-property.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgDocLabelComponent, NgDocTooltipDirective, NgDocSanitizeHtmlPipe],\n})\nexport class NgDocPlaygroundPropertyComponent implements OnChanges {\n @Input()\n name: string = '';\n\n @Input()\n property?: NgDocPlaygroundProperty | NgDocPlaygroundContent;\n\n @Input()\n typeControl?: NgDocProvidedTypeControl;\n\n @Input()\n control?: FormControl;\n\n @Input()\n defaultValue?: unknown;\n\n @ViewChild('propertyOutlet', { read: ViewContainerRef, static: true })\n propertyOutlet?: ViewContainerRef;\n\n protected option?: NgDocTypeControlProviderOptions;\n private propertyTypeControl?: ComponentRef<NgDocTypeControl>;\n\n ngOnChanges({ property, control, typeControl, defaultValue }: SimpleChanges): void {\n if ((property || control || typeControl || defaultValue) && this.property && this.typeControl) {\n this.propertyTypeControl?.destroy();\n this.propertyTypeControl = undefined;\n\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\n this.option = this.typeControl.options;\n }\n\n if (this.control) {\n this.control?.registerOnChange((value: string) =>\n this.propertyTypeControl?.instance?.writeValue(value),\n );\n this.propertyTypeControl?.instance.registerOnChange((value: unknown) =>\n this.control?.setValue(value),\n );\n this.propertyTypeControl?.instance.registerOnTouched(() => this.control?.markAsTouched());\n }\n }\n }\n\n @HostBinding('attr.data-has-property-control')\n get hasPropertyControl(): boolean {\n return !!this.propertyTypeControl;\n }\n\n get tooltipContent(): string {\n return this.property && isPlaygroundProperty(this.property)\n ? this.property.description ?? ''\n : '';\n }\n}\n","<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","import { BreakpointObserver, Breakpoints, BreakpointState } from '@angular/cdk/layout';\nimport { AsyncPipe, KeyValuePipe, NgFor, NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n InjectionToken,\n Injector,\n Input,\n isDevMode,\n OnChanges,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { FormControl, FormGroup, FormsModule } from '@angular/forms';\nimport { isPlaygroundProperty } from '@ng-doc/app/helpers';\nimport { NgDocProvidedTypeControl } from '@ng-doc/app/interfaces';\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 {\n NgDocPlaygroundContent,\n NgDocPlaygroundProperties,\n NgDocPlaygroundProperty,\n} from '@ng-doc/core/interfaces';\nimport {\n NgDocBindPipe,\n NgDocButtonComponent,\n NgDocCheckboxComponent,\n NgDocExecutePipe,\n NgDocIconComponent,\n NgDocTextComponent,\n NgDocTextRightDirective,\n NgDocTooltipDirective,\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 selector: 'ng-doc-playground-properties',\n templateUrl: './playground-properties.component.html',\n styleUrls: ['./playground-properties.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgDocTextComponent,\n NgDocButtonComponent,\n NgDocCheckboxComponent,\n FormsModule,\n NgDocTooltipDirective,\n NgDocIconComponent,\n NgDocTextRightDirective,\n NgIf,\n NgFor,\n NgDocPlaygroundPropertyComponent,\n AsyncPipe,\n KeyValuePipe,\n NgDocBindPipe,\n NgDocExecutePipe,\n ],\n})\nexport class NgDocPlaygroundPropertiesComponent<\n P extends NgDocPlaygroundProperties,\n C extends Record<string, NgDocPlaygroundContent>,\n> implements OnChanges\n{\n @Input()\n form!: FormGroup<NgDocPlaygroundForm>;\n\n @Input()\n properties?: P;\n\n @Input()\n ignoreInputs?: string[] = [];\n\n @Input()\n dynamicContent?: C;\n\n @Input()\n defaultValues?: Record<string, unknown>;\n\n @Input()\n hideSidePanel: boolean = false;\n\n @Input()\n recreateDemo: boolean = false;\n\n @Input()\n showResetButton: boolean = false;\n\n @Output()\n recreateDemoChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @Output()\n resetForm: EventEmitter<void> = new EventEmitter<void>();\n\n readonly breakpoints: string[] = [Breakpoints.XSmall];\n readonly observer: Observable<boolean>;\n\n protected propertyControls: NgDocPlaygroundPropertyControl[] = [];\n protected contentTypeControl?: NgDocProvidedTypeControl = this.getControlForType('boolean');\n\n constructor(\n protected readonly breakpointObserver: BreakpointObserver,\n private injector: Injector,\n ) {\n this.observer = this.breakpointObserver\n .observe(this.breakpoints)\n .pipe(map((state: BreakpointState) => state.matches));\n }\n\n ngOnChanges({ properties }: SimpleChanges): void {\n if (properties && this.properties) {\n this.propertyControls = objectKeys(this.properties)\n .filter((key: keyof P) => this.ignoreInputs?.includes(String(key)) !== true)\n .map((key: keyof P) => {\n if (this.properties) {\n const property: NgDocPlaygroundProperty = this.properties[key];\n const typeControl: NgDocProvidedTypeControl | undefined = this.getTypeControl(property);\n\n if (typeControl) {\n return {\n propertyName: String(key),\n property,\n typeControl,\n };\n }\n }\n\n return null;\n })\n .filter(isPresent)\n .sort((a: NgDocPlaygroundPropertyControl, b: NgDocPlaygroundPropertyControl) => {\n const aOrder: number | undefined = a.typeControl.options?.order;\n const bOrder: number | undefined = b.typeControl.options?.order;\n\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\n getFormControl(controlType: keyof typeof this.form.controls, key: string): FormControl {\n return this.form.get(controlType)?.get(key) as FormControl;\n }\n\n private getTypeControl(property: NgDocPlaygroundProperty): NgDocProvidedTypeControl | undefined {\n const type: string = property.type;\n const typeControl: NgDocProvidedTypeControl | undefined =\n this.getControlForType(type) ??\n this.getControlForTypeAlias(\n isPlaygroundProperty(property) ? property.options : undefined,\n property.isManual,\n );\n\n if (!typeControl && isDevMode()) {\n console.warn(\n `NgDocPlayground didn't find the control for the @Input \"${property.inputName}\", the type \"${type}\" was not recognized'`,\n );\n }\n\n return typeControl;\n }\n\n private getControlForType(type: string): NgDocProvidedTypeControl | undefined {\n const token: InjectionToken<NgDocProvidedTypeControl> | undefined = getTokenForType(type);\n\n return token ? this.injector.get(token) : undefined;\n }\n\n private getControlForTypeAlias(\n options?: string[],\n isManual?: boolean,\n ): NgDocProvidedTypeControl | undefined {\n if (options && options.length) {\n let optionsIsValid: boolean = true;\n\n if (!isManual) {\n try {\n // checking that all values are extractable\n options.forEach((item: string) => extractValueOrThrow(item));\n } catch {\n optionsIsValid = false;\n }\n }\n\n if (optionsIsValid) {\n const token: InjectionToken<NgDocProvidedTypeControl> | undefined =\n getTokenForType('NgDocTypeAlias');\n\n return token ? this.injector.get(token) : undefined;\n }\n }\n\n return undefined;\n }\n}\n","<div\n\tclass=\"ng-doc-playground-properties-wrapper\"\n\t[class.vertical]=\"observer | async\"\n\t*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=\"alert\" (click)=\"resetForm.emit()\" *ngIf=\"showResetButton\">\n\t\t\t\tReset\n\t\t\t</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\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]=\"\n\t\t\t\t\tgetFormControl | bind: this | execute: 'properties':propertyControl.propertyName\n\t\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</ng-doc-playground-property>\n\t\t</ng-container>\n\t</div>\n</div>\n","import { NgFor, NgIf } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n Input,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { NgDocRootPage } from '@ng-doc/app/classes/root-page';\nimport { isSameObject } from '@ng-doc/core/helpers/is-same-object';\nimport { objectKeys } from '@ng-doc/core/helpers/object-keys';\nimport {\n NgDocPlaygroundConfig,\n NgDocPlaygroundOptions,\n NgDocPlaygroundProperties,\n} 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 selector: 'ng-doc-playground',\n templateUrl: './playground.component.html',\n styleUrls: ['./playground.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgIf,\n NgDocPlaygroundPropertiesComponent,\n NgFor,\n NgDocPlaygroundDemoComponent,\n NgDocAsArrayPipe,\n ],\n})\nexport class NgDocPlaygroundComponent<\n T extends NgDocPlaygroundProperties = NgDocPlaygroundProperties,\n >\n implements OnChanges, AfterViewInit\n{\n @Input({ required: true })\n id: string = '';\n\n @Input()\n pipeName: string = '';\n\n @Input()\n selectors: string[] = [];\n\n @Input()\n properties?: T;\n\n @Input()\n options: NgDocPlaygroundOptions = {};\n\n recreateDemo: boolean = false;\n formGroup!: FormGroup<NgDocPlaygroundForm>;\n defaultValues?: Record<string, unknown>;\n configuration!: NgDocPlaygroundConfig;\n\n private defaultProperties: Record<string, unknown> = {};\n private defaultContent: Record<string, boolean> = {};\n\n constructor(\n private readonly rootPage: NgDocRootPage,\n private readonly formBuilder: FormBuilder,\n ) {}\n\n ngOnChanges({ options }: SimpleChanges) {\n if (options) {\n // Join configuration with options\n this.configuration = Object.assign(\n {},\n this.rootPage.page?.playgrounds?.[this.id],\n this.options,\n );\n }\n }\n\n ngAfterViewInit(): void {\n this.defaultProperties = this.getPropertiesFormValues();\n this.defaultContent = this.getContentFormValues();\n\n const propertiesForm: FormGroup = this.formBuilder.group(this.defaultProperties);\n const contentForm: FormGroup = this.formBuilder.group(this.defaultContent);\n\n this.formGroup = this.formBuilder.group({\n properties: propertiesForm,\n content: contentForm,\n });\n // `patchValue` is needed to set `undefined` values, otherwise they will be ignored by the Angular form\n this.formGroup.patchValue({\n properties: Object.assign({}, this.defaultProperties, this.configuration.inputs),\n content: this.defaultContent,\n });\n }\n\n protected isDefaultState(): boolean {\n if (!this.formGroup) {\n return false;\n }\n\n return (\n isSameObject(this.formGroup.value.properties ?? {}, this.defaultValues ?? {}) &&\n isSameObject(this.formGroup.value.content ?? {}, this.defaultContent ?? {})\n );\n }\n\n private getPropertiesFormValues(): Record<string, unknown> {\n const formValues: Record<string, unknown> = objectKeys(this.properties ?? {}).reduce(\n (controls: Record<string, unknown>, key: string) => {\n if (this.properties) {\n controls[key] = this.defaultValues ? this.defaultValues[key] : undefined;\n }\n\n return controls;\n },\n {} as Record<string, unknown>,\n );\n\n return Object.assign({}, formValues, this.configuration.defaults);\n }\n\n private getContentFormValues(): Record<string, boolean> {\n return objectKeys(this.configuration?.content ?? {}).reduce(\n (controls: Record<string, boolean>, key: string) => {\n if (this.configuration?.content) {\n controls[key] = false;\n }\n\n return controls;\n },\n {} as Record<keyof T, boolean>,\n );\n }\n\n resetForm(): void {\n this.formGroup.reset({}, { emitEvent: false });\n this.formGroup?.patchValue({\n properties: this.defaultProperties,\n content: this.defaultContent,\n });\n }\n}\n","<ng-container *ngIf=\"configuration\">\n <ng-doc-playground-properties\n [form]=\"formGroup\"\n [properties]=\"properties\"\n [ignoreInputs]=\"configuration.hiddenInputs\"\n [dynamicContent]=\"configuration.content\"\n [hideSidePanel]=\"configuration.hideSidePanel ?? false\"\n [defaultValues]=\"defaultValues\"\n [showResetButton]=\"!isDefaultState()\"\n [(recreateDemo)]=\"recreateDemo\"\n (resetForm)=\"resetForm()\">\n <ng-doc-playground-demo\n *ngFor=\"let selector of configuration.selectors ?? selectors | asArray\"\n [id]=\"id\"\n [selector]=\"selector\"\n [properties]=\"properties\"\n [configuration]=\"configuration\"\n [recreateDemo]=\"recreateDemo\"\n [form]=\"formGroup\"\n [expanded]=\"configuration.expanded ?? false\">\n </ng-doc-playground-demo>\n\n <ng-doc-playground-demo\n *ngIf=\"pipeName\"\n [id]=\"id\"\n [pipeName]=\"pipeName\"\n [properties]=\"properties\"\n [configuration]=\"configuration\"\n [recreateDemo]=\"recreateDemo\"\n [form]=\"formGroup\">\n </ng-doc-playground-demo>\n </ng-doc-playground-properties>\n</ng-container>\n","import {\n ChangeDetectorRef,\n Directive,\n inject,\n Input,\n OnInit,\n Type,\n ViewContainerRef,\n} from '@angular/core';\nimport { extractFunctionDefaults } from '@ng-doc/core/helpers/extract-function-defaults';\nimport { NgDocPlaygroundConfig } from '@ng-doc/core/interfaces';\nimport { Constructor } from '@ng-doc/core/types';\nimport { Observable, Subject, take } from 'rxjs';\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 static readonly selector: string = 'unknown';\n abstract readonly playground?: Type<any>;\n abstract readonly viewContainerRef?: ViewContainerRef;\n abstract readonly configData: Record<string, unknown>;\n\n @Input()\n properties: Record<string, any> = {};\n\n @Input()\n actionData: Record<string, unknown> = {};\n\n @Input()\n content: any = {};\n\n defaultValues: Record<string, unknown> = {};\n\n private reattached: Subject<void> = new Subject<void>();\n\n private playgroundContainer: NgDocPlaygroundComponent = inject(NgDocPlaygroundComponent);\n protected changeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\n\n protected constructor(private playgroundInstance?: Constructor<unknown>) {\n this.changeDetectorRef.detach();\n }\n\n get onReattached(): Observable<void> {\n return this.reattached.pipe(take(1));\n }\n\n ngOnInit(): void {\n /*\n * Extract default values from playground properties. We do this in `ngOnInit` because in this case\n * input values provided from the template are not initialized yet, and we can read default values instead.\n */\n if (this.playground) {\n this.defaultValues = Object.keys(this.playground).reduce(\n (values: Record<string, unknown>, key: string) => {\n if (this.playground) {\n try {\n values[key] =\n // @ts-expect-error we do not know the type of the playground\n typeof this.playground[key] === 'function'\n ? // @ts-expect-error we do not know the type of the playground\n this.playground[key]()\n : // @ts-expect-error we do not know the type of the playground\n this.playground[key];\n } catch (e) {\n // we do catch here because some of the playground properties can be getters and throw an error\n }\n }\n\n return values;\n },\n {},\n );\n } else if (this.playgroundInstance) {\n const defaults = extractFunctionDefaults(this.playgroundInstance.prototype.transform);\n\n this.defaultValues = Object.keys(this.playgroundContainer.properties ?? {}).reduce(\n (def: Record<string, unknown>, key: string, i: number) => {\n // we do +1 because the first argument is the `value` of the transform function\n def[key] = defaults[i + 1];\n\n return def;\n },\n {},\n );\n } else {\n throw new Error('Playground is not defined or initialized');\n }\n\n if (!this.playgroundContainer.defaultValues) {\n this.playgroundContainer.defaultValues = this.defaultValues;\n }\n\n /*\n This is a hack just to wait for the playground container to be initialized and only then\n attach the change detector to have correct inputs values.\n */\n Promise.resolve().then(() => {\n this.changeDetectorRef.reattach();\n this.reattached.next();\n });\n }\n\n get data(): any {\n return Object.assign({}, this.configData, this.actionData);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["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 {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n DestroyRef,\n inject,\n InjectionToken,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n Type,\n ViewChild,\n ViewContainerRef,\n} 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 { NgDocFormPartialValue } from '@ng-doc/app/types';\nimport {\n buildPlaygroundDemoPipeTemplate,\n buildPlaygroundDemoTemplate,\n} 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 { NgDocPlaygroundConfig, NgDocPlaygroundProperties } from '@ng-doc/core/interfaces';\nimport { NgDocSmoothResizeComponent } from '@ng-doc/ui-kit';\nimport { Subject } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\n\nimport { NgDocBasePlayground } from '../base-playground';\nimport { NgDocPlaygroundForm } from '../playground-form';\n\n@Component({\n selector: 'ng-doc-playground-demo',\n templateUrl: './playground-demo.component.html',\n styleUrls: ['./playground-demo.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgDocDemoDisplayerComponent, NgDocSmoothResizeComponent],\n})\nexport class NgDocPlaygroundDemoComponent<\n T extends NgDocPlaygroundProperties = NgDocPlaygroundProperties,\n >\n implements OnChanges, OnDestroy\n{\n @Input()\n id: string = '';\n\n @Input()\n pipeName: string = '';\n\n @Input()\n selector: string = '';\n\n @Input()\n configuration?: NgDocPlaygroundConfig;\n\n @Input()\n properties?: T;\n\n @Input()\n recreateDemo: boolean = false;\n\n @Input()\n form!: FormGroup<NgDocPlaygroundForm>;\n\n @Input()\n expanded: boolean = false;\n\n @ViewChild('demoOutlet', { static: true, read: ViewContainerRef })\n demoOutlet?: ViewContainerRef;\n\n playgroundDemo?: typeof NgDocBasePlayground;\n\n protected code = '';\n\n protected readonly injector = inject(Injector);\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n protected readonly destroyRef = inject(DestroyRef);\n\n private demoRef?: ComponentRef<NgDocBasePlayground>;\n private readonly unsubscribe$: Subject<void> = new Subject<void>();\n\n async ngOnChanges({ form, id }: SimpleChanges): Promise<void> {\n if (form || id) {\n this.unsubscribe$.next();\n\n const demoInjector: InjectionToken<Array<typeof NgDocBasePlayground>> | undefined =\n getPlaygroundDemoToken(this.id);\n\n if (demoInjector) {\n const demos: Array<typeof NgDocBasePlayground> = this.injector.get(demoInjector, []);\n\n this.playgroundDemo = demos.find(\n (demo: typeof NgDocBasePlayground) =>\n demo.selector === this.selector || demo.selector === this.pipeName,\n );\n }\n\n await this.updateDemo();\n\n this.form?.valueChanges\n .pipe(\n takeUntil(this.unsubscribe$),\n startWith(this.form?.value),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((data: NgDocFormPartialValue<typeof this.form>) => this.updateDemo(data));\n }\n }\n\n private async updateDemo(data?: NgDocFormPartialValue<typeof this.form>): Promise<void> {\n if (this.recreateDemo || !this.demoRef) {\n this.createDemo();\n }\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\n if (this.recreateDemo) {\n this.demoRef?.instance.onReattached.subscribe(() => {\n this.demoRef?.changeDetectorRef.detectChanges();\n });\n }\n }\n\n await this.updateCodeView();\n }\n\n private createDemo(): void {\n if (this.playgroundDemo) {\n this.demoRef?.destroy();\n this.demoRef = this.demoOutlet?.createComponent(\n this.playgroundDemo as unknown as Type<NgDocBasePlayground>,\n );\n this.demoRef?.changeDetectorRef.markForCheck();\n }\n }\n\n private async updateCodeView(): Promise<void> {\n const template: string = this.pipeName\n ? buildPlaygroundDemoPipeTemplate(\n this.configuration?.template ?? '',\n this.pipeName,\n this.getActiveContent(),\n this.getPipeActiveInputs(),\n )\n : buildPlaygroundDemoTemplate(\n this.configuration?.template ?? '',\n this.selector,\n this.getActiveContent(),\n this.getActiveInputs(),\n );\n\n this.code = await formatHtml(template);\n this.changeDetectorRef.markForCheck();\n }\n\n private getActiveContent(): Record<string, string> {\n const formData: Record<string, boolean> =\n (this.form?.controls.content.value as Record<string, boolean>) ?? {};\n\n return objectKeys(formData).reduce((result: Record<string, string>, key: string) => {\n result[key] = formData[key] ? this.configuration?.content?.[key].template ?? '' : '';\n\n return result;\n }, {});\n }\n\n private getActiveInputs(): Record<string, string> {\n const formData: Record<string, unknown> =\n (this.form?.controls.properties.value as Record<string, unknown>) ?? {};\n\n return objectKeys(formData).reduce((result: Record<string, string>, key: string) => {\n const inputName = this.properties?.[key]?.inputName ?? key;\n const value: unknown = formData[key];\n const property: unknown | undefined = this.demoRef?.instance?.defaultValues[key];\n\n if (property !== value) {\n result[inputName] = stringify(value).replace(/\"/g, `'`);\n }\n\n return result;\n }, {});\n }\n\n private getPipeActiveInputs(): Record<string, string> {\n const formData: Record<string, unknown> =\n (this.form?.controls.properties.value as Record<string, unknown>) ?? {};\n let changedInputIndex: number = -1;\n\n return objectKeys(formData)\n .map((key: string, i: number) => {\n const value: unknown = formData[key];\n const defaultValue: unknown | undefined = this.demoRef?.instance?.defaultValues[key];\n\n if (defaultValue !== value) {\n changedInputIndex = i;\n }\n\n return key;\n })\n .slice(0, changedInputIndex + 1)\n .reduce((result: Record<string, string>, key: string) => {\n result[key] = stringify(formData[key]).replace(/\"/g, `'`);\n\n return result;\n }, {});\n }\n\n ngOnDestroy(): void {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","<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","import {\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n HostBinding,\n Input,\n OnChanges,\n SimpleChanges,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { isPlaygroundProperty } from '@ng-doc/app/helpers';\nimport {\n NgDocProvidedTypeControl,\n NgDocTypeControl,\n NgDocTypeControlProviderOptions,\n} 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 selector: 'ng-doc-playground-property',\n templateUrl: './playground-property.component.html',\n styleUrls: ['./playground-property.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgDocLabelComponent, NgDocTooltipDirective, NgDocSanitizeHtmlPipe],\n})\nexport class NgDocPlaygroundPropertyComponent implements OnChanges {\n @Input()\n name: string = '';\n\n @Input()\n property?: NgDocPlaygroundProperty | NgDocPlaygroundContent;\n\n @Input()\n typeControl?: NgDocProvidedTypeControl;\n\n @Input()\n control?: FormControl;\n\n @Input()\n defaultValue?: unknown;\n\n @ViewChild('propertyOutlet', { read: ViewContainerRef, static: true })\n propertyOutlet?: ViewContainerRef;\n\n protected option?: NgDocTypeControlProviderOptions;\n private propertyTypeControl?: ComponentRef<NgDocTypeControl>;\n\n ngOnChanges({ property, control, typeControl, defaultValue }: SimpleChanges): void {\n if ((property || control || typeControl || defaultValue) && this.property && this.typeControl) {\n this.propertyTypeControl?.destroy();\n this.propertyTypeControl = undefined;\n\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\n this.option = this.typeControl.options;\n }\n\n if (this.control) {\n this.control?.registerOnChange((value: string) =>\n this.propertyTypeControl?.instance?.writeValue(value),\n );\n this.propertyTypeControl?.instance.registerOnChange((value: unknown) =>\n this.control?.setValue(value),\n );\n this.propertyTypeControl?.instance.registerOnTouched(() => this.control?.markAsTouched());\n }\n }\n }\n\n @HostBinding('attr.data-has-property-control')\n get hasPropertyControl(): boolean {\n return !!this.propertyTypeControl;\n }\n\n get tooltipContent(): string {\n return this.property && isPlaygroundProperty(this.property)\n ? this.property.description ?? ''\n : '';\n }\n}\n","<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","import { BreakpointObserver, Breakpoints, BreakpointState } from '@angular/cdk/layout';\nimport { AsyncPipe, KeyValuePipe, NgFor, NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n InjectionToken,\n Injector,\n Input,\n isDevMode,\n OnChanges,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { FormControl, FormGroup, FormsModule } from '@angular/forms';\nimport { isPlaygroundProperty } from '@ng-doc/app/helpers';\nimport { NgDocProvidedTypeControl } from '@ng-doc/app/interfaces';\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 {\n NgDocPlaygroundContent,\n NgDocPlaygroundProperties,\n NgDocPlaygroundProperty,\n} from '@ng-doc/core/interfaces';\nimport {\n NgDocBindPipe,\n NgDocButtonComponent,\n NgDocCheckboxComponent,\n NgDocExecutePipe,\n NgDocIconComponent,\n NgDocTextComponent,\n NgDocTextRightDirective,\n NgDocTooltipDirective,\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 selector: 'ng-doc-playground-properties',\n templateUrl: './playground-properties.component.html',\n styleUrls: ['./playground-properties.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgDocTextComponent,\n NgDocButtonComponent,\n NgDocCheckboxComponent,\n FormsModule,\n NgDocTooltipDirective,\n NgDocIconComponent,\n NgDocTextRightDirective,\n NgIf,\n NgFor,\n NgDocPlaygroundPropertyComponent,\n AsyncPipe,\n KeyValuePipe,\n NgDocBindPipe,\n NgDocExecutePipe,\n ],\n})\nexport class NgDocPlaygroundPropertiesComponent<\n P extends NgDocPlaygroundProperties,\n C extends Record<string, NgDocPlaygroundContent>,\n> implements OnChanges\n{\n @Input()\n form!: FormGroup<NgDocPlaygroundForm>;\n\n @Input()\n properties?: P;\n\n @Input()\n ignoreInputs?: string[] = [];\n\n @Input()\n dynamicContent?: C;\n\n @Input()\n defaultValues?: Record<string, unknown>;\n\n @Input()\n hideSidePanel: boolean = false;\n\n @Input()\n recreateDemo: boolean = false;\n\n @Input()\n showResetButton: boolean = false;\n\n @Output()\n recreateDemoChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @Output()\n resetForm: EventEmitter<void> = new EventEmitter<void>();\n\n readonly breakpoints: string[] = [Breakpoints.XSmall];\n readonly observer: Observable<boolean>;\n\n protected propertyControls: NgDocPlaygroundPropertyControl[] = [];\n protected contentTypeControl?: NgDocProvidedTypeControl = this.getControlForType('boolean');\n\n constructor(\n protected readonly breakpointObserver: BreakpointObserver,\n private injector: Injector,\n ) {\n this.observer = this.breakpointObserver\n .observe(this.breakpoints)\n .pipe(map((state: BreakpointState) => state.matches));\n }\n\n ngOnChanges({ properties }: SimpleChanges): void {\n if (properties && this.properties) {\n this.propertyControls = objectKeys(this.properties)\n .filter((key: keyof P) => this.ignoreInputs?.includes(String(key)) !== true)\n .map((key: keyof P) => {\n if (this.properties) {\n const property: NgDocPlaygroundProperty = this.properties[key];\n const typeControl: NgDocProvidedTypeControl | undefined = this.getTypeControl(property);\n\n if (typeControl) {\n return {\n propertyName: String(key),\n property,\n typeControl,\n };\n }\n }\n\n return null;\n })\n .filter(isPresent)\n .sort((a: NgDocPlaygroundPropertyControl, b: NgDocPlaygroundPropertyControl) => {\n const aOrder: number | undefined = a.typeControl.options?.order;\n const bOrder: number | undefined = b.typeControl.options?.order;\n\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\n getFormControl(controlType: keyof typeof this.form.controls, key: string): FormControl {\n return this.form.get(controlType)?.get(key) as FormControl;\n }\n\n private getTypeControl(property: NgDocPlaygroundProperty): NgDocProvidedTypeControl | undefined {\n const type: string = property.type;\n const typeControl: NgDocProvidedTypeControl | undefined =\n this.getControlForType(type) ??\n this.getControlForTypeAlias(\n isPlaygroundProperty(property) ? property.options : undefined,\n property.isManual,\n );\n\n if (!typeControl && isDevMode()) {\n console.warn(\n `NgDocPlayground didn't find the control for the @Input \"${property.inputName}\", the type \"${type}\" was not recognized'`,\n );\n }\n\n return typeControl;\n }\n\n private getControlForType(type: string): NgDocProvidedTypeControl | undefined {\n const token: InjectionToken<NgDocProvidedTypeControl> | undefined = getTokenForType(type);\n\n return token ? this.injector.get(token) : undefined;\n }\n\n private getControlForTypeAlias(\n options?: string[],\n isManual?: boolean,\n ): NgDocProvidedTypeControl | undefined {\n if (options && options.length) {\n let optionsIsValid: boolean = true;\n\n if (!isManual) {\n try {\n // checking that all values are extractable\n options.forEach((item: string) => extractValueOrThrow(item));\n } catch {\n optionsIsValid = false;\n }\n }\n\n if (optionsIsValid) {\n const token: InjectionToken<NgDocProvidedTypeControl> | undefined =\n getTokenForType('NgDocTypeAlias');\n\n return token ? this.injector.get(token) : undefined;\n }\n }\n\n return undefined;\n }\n}\n","<div\n\tclass=\"ng-doc-playground-properties-wrapper\"\n\t[class.vertical]=\"observer | async\"\n\t*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=\"alert\" (click)=\"resetForm.emit()\" *ngIf=\"showResetButton\">\n\t\t\t\tReset\n\t\t\t</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\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]=\"\n\t\t\t\t\tgetFormControl | bind: this | execute: 'properties':propertyControl.propertyName\n\t\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</ng-doc-playground-property>\n\t\t</ng-container>\n\t</div>\n</div>\n","import { NgFor, NgIf } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n Input,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { NgDocRootPage } from '@ng-doc/app/classes/root-page';\nimport { isSameObject } from '@ng-doc/core/helpers/is-same-object';\nimport { objectKeys } from '@ng-doc/core/helpers/object-keys';\nimport {\n NgDocPlaygroundConfig,\n NgDocPlaygroundOptions,\n NgDocPlaygroundProperties,\n} 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 selector: 'ng-doc-playground',\n templateUrl: './playground.component.html',\n styleUrls: ['./playground.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgIf,\n NgDocPlaygroundPropertiesComponent,\n NgFor,\n NgDocPlaygroundDemoComponent,\n NgDocAsArrayPipe,\n ],\n})\nexport class NgDocPlaygroundComponent<\n T extends NgDocPlaygroundProperties = NgDocPlaygroundProperties,\n >\n implements OnChanges, AfterViewInit\n{\n @Input({ required: true })\n id: string = '';\n\n @Input()\n pipeName: string = '';\n\n @Input()\n selectors: string[] = [];\n\n @Input()\n properties?: T;\n\n @Input()\n options: NgDocPlaygroundOptions = {};\n\n recreateDemo: boolean = false;\n formGroup!: FormGroup<NgDocPlaygroundForm>;\n defaultValues?: Record<string, unknown>;\n configuration!: NgDocPlaygroundConfig;\n\n private defaultProperties: Record<string, unknown> = {};\n private defaultContent: Record<string, boolean> = {};\n\n constructor(\n private readonly rootPage: NgDocRootPage,\n private readonly formBuilder: FormBuilder,\n ) {}\n\n ngOnChanges({ options }: SimpleChanges) {\n if (options) {\n // Join configuration with options\n this.configuration = Object.assign(\n {},\n this.rootPage.page?.playgrounds?.[this.id],\n this.options,\n );\n }\n }\n\n ngAfterViewInit(): void {\n this.defaultProperties = this.getPropertiesFormValues();\n this.defaultContent = this.getContentFormValues();\n\n const propertiesForm: FormGroup = this.formBuilder.group(this.defaultProperties);\n const contentForm: FormGroup = this.formBuilder.group(this.defaultContent);\n\n this.formGroup = this.formBuilder.group({\n properties: propertiesForm,\n content: contentForm,\n });\n // `patchValue` is needed to set `undefined` values, otherwise they will be ignored by the Angular form\n this.formGroup.patchValue({\n properties: Object.assign({}, this.defaultProperties, this.configuration.inputs),\n content: this.defaultContent,\n });\n }\n\n protected isDefaultState(): boolean {\n if (!this.formGroup) {\n return false;\n }\n\n return (\n isSameObject(this.formGroup.value.properties ?? {}, this.defaultValues ?? {}) &&\n isSameObject(this.formGroup.value.content ?? {}, this.defaultContent ?? {})\n );\n }\n\n private getPropertiesFormValues(): Record<string, unknown> {\n const formValues: Record<string, unknown> = objectKeys(this.properties ?? {}).reduce(\n (controls: Record<string, unknown>, key: string) => {\n if (this.properties) {\n controls[key] = this.defaultValues ? this.defaultValues[key] : undefined;\n }\n\n return controls;\n },\n {} as Record<string, unknown>,\n );\n\n return Object.assign({}, formValues, this.configuration.defaults);\n }\n\n private getContentFormValues(): Record<string, boolean> {\n return objectKeys(this.configuration?.content ?? {}).reduce(\n (controls: Record<string, boolean>, key: string) => {\n if (this.configuration?.content) {\n controls[key] = false;\n }\n\n return controls;\n },\n {} as Record<keyof T, boolean>,\n );\n }\n\n resetForm(): void {\n this.formGroup.reset({}, { emitEvent: false });\n this.formGroup?.patchValue({\n properties: this.defaultProperties,\n content: this.defaultContent,\n });\n }\n}\n","<ng-container *ngIf=\"configuration\">\n <ng-doc-playground-properties\n [form]=\"formGroup\"\n [properties]=\"properties\"\n [ignoreInputs]=\"configuration.hiddenInputs\"\n [dynamicContent]=\"configuration.content\"\n [hideSidePanel]=\"configuration.hideSidePanel ?? false\"\n [defaultValues]=\"defaultValues\"\n [showResetButton]=\"!isDefaultState()\"\n [(recreateDemo)]=\"recreateDemo\"\n (resetForm)=\"resetForm()\">\n <ng-doc-playground-demo\n *ngFor=\"let selector of configuration.selectors ?? selectors | asArray\"\n [id]=\"id\"\n [selector]=\"selector\"\n [properties]=\"properties\"\n [configuration]=\"configuration\"\n [recreateDemo]=\"recreateDemo\"\n [form]=\"formGroup\"\n [expanded]=\"configuration.expanded ?? false\">\n </ng-doc-playground-demo>\n\n <ng-doc-playground-demo\n *ngIf=\"pipeName\"\n [id]=\"id\"\n [pipeName]=\"pipeName\"\n [properties]=\"properties\"\n [configuration]=\"configuration\"\n [recreateDemo]=\"recreateDemo\"\n [form]=\"formGroup\">\n </ng-doc-playground-demo>\n </ng-doc-playground-properties>\n</ng-container>\n","import {\n ChangeDetectorRef,\n Directive,\n inject,\n Input,\n OnInit,\n Type,\n ViewContainerRef,\n} from '@angular/core';\nimport { extractFunctionDefaults } from '@ng-doc/core/helpers/extract-function-defaults';\nimport { NgDocPlaygroundConfig } from '@ng-doc/core/interfaces';\nimport { Constructor } from '@ng-doc/core/types';\nimport { Observable, Subject, take } from 'rxjs';\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 static readonly selector: string = 'unknown';\n abstract readonly playground?: Type<any>;\n abstract readonly viewContainerRef?: ViewContainerRef;\n abstract readonly configData: Record<string, unknown>;\n\n @Input()\n properties: Record<string, any> = {};\n\n @Input()\n actionData: Record<string, unknown> = {};\n\n @Input()\n content: any = {};\n\n defaultValues: Record<string, unknown> = {};\n\n private reattached: Subject<void> = new Subject<void>();\n\n private playgroundContainer: NgDocPlaygroundComponent = inject(NgDocPlaygroundComponent);\n protected changeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\n\n protected constructor(private playgroundInstance?: Constructor<unknown>) {\n this.changeDetectorRef.detach();\n }\n\n get onReattached(): Observable<void> {\n return this.reattached.pipe(take(1));\n }\n\n ngOnInit(): void {\n /*\n * Extract default values from playground properties. We do this in `ngOnInit` because in this case\n * input values provided from the template are not initialized yet, and we can read default values instead.\n */\n if (this.playground) {\n this.defaultValues = Object.keys(this.playground).reduce(\n (values: Record<string, unknown>, key: string) => {\n if (this.playground) {\n try {\n values[key] =\n // @ts-expect-error we do not know the type of the playground\n typeof this.playground[key] === 'function'\n ? // @ts-expect-error we do not know the type of the playground\n this.playground[key]()\n : // @ts-expect-error we do not know the type of the playground\n this.playground[key];\n } catch (e) {\n // we do catch here because some of the playground properties can be getters and throw an error\n }\n }\n\n return values;\n },\n {},\n );\n } else if (this.playgroundInstance) {\n const defaults = extractFunctionDefaults(this.playgroundInstance.prototype.transform);\n\n this.defaultValues = Object.keys(this.playgroundContainer.properties ?? {}).reduce(\n (def: Record<string, unknown>, key: string, i: number) => {\n // we do +1 because the first argument is the `value` of the transform function\n def[key] = defaults[i + 1];\n\n return def;\n },\n {},\n );\n } else {\n throw new Error('Playground is not defined or initialized');\n }\n\n if (!this.playgroundContainer.defaultValues) {\n this.playgroundContainer.defaultValues = this.defaultValues;\n }\n\n /*\n This is a hack just to wait for the playground container to be initialized and only then\n attach the change detector to have correct inputs values.\n */\n Promise.resolve().then(() => {\n this.changeDetectorRef.reattach();\n this.reattached.next();\n });\n }\n\n get data(): any {\n return Object.assign({}, this.configData, this.actionData);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { __decorate } from 'tslib';
|
|
2
1
|
import { NgIf, AsyncPipe } from '@angular/common';
|
|
3
2
|
import * as i0 from '@angular/core';
|
|
4
3
|
import { Directive, inject, Component, ChangeDetectionStrategy, Input, HostBinding, ViewChild } from '@angular/core';
|
|
5
4
|
import { NgDocSidebarService } from '@ng-doc/app/services';
|
|
6
|
-
import { NgDocSidenavComponent
|
|
7
|
-
import { UntilDestroy } from '@ngneat/until-destroy';
|
|
5
|
+
import { NgDocSidenavComponent } from '@ng-doc/ui-kit';
|
|
8
6
|
import * as i1 from '@tinkoff/ng-polymorpheus';
|
|
9
7
|
import { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';
|
|
10
8
|
|
|
@@ -56,7 +54,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
|
|
|
56
54
|
standalone: true,
|
|
57
55
|
}]
|
|
58
56
|
}] });
|
|
59
|
-
|
|
57
|
+
class NgDocRootComponent {
|
|
60
58
|
constructor() {
|
|
61
59
|
/**
|
|
62
60
|
* If `true` then the sidebar will be shown
|
|
@@ -76,13 +74,10 @@ let NgDocRootComponent = class NgDocRootComponent {
|
|
|
76
74
|
}
|
|
77
75
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgDocRootComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
78
76
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: NgDocRootComponent, isStandalone: true, selector: "ng-doc-root", inputs: { sidebar: "sidebar", footerContent: "footerContent", noWidthLimit: "noWidthLimit" }, host: { properties: { "attr.data-ng-doc-no-width-limit": "this.noWidthLimit" } }, providers: [], viewQueries: [{ propertyName: "sidenav", first: true, predicate: NgDocSidenavComponent, descendants: true }], ngImport: i0, template: "<ng-container>\n <div class=\"ng-doc-root-wrapper\">\n <div class=\"ng-doc-header\">\n <ng-content select=\"ng-doc-navbar\"></ng-content>\n <ng-content select=\"[ngDocCustomNavbar]\"></ng-content>\n </div>\n <main>\n <ng-doc-sidenav\n [sidebar]=\"sidebar ? sidebarContent : null\"\n [opened]=\"(sidebarService.isExpanded() | async) ?? true\"\n [hasBackdrop]=\"sidebarService.isMobile\"\n (closeEvent)=\"sidebarService.hide()\">\n <ng-template #sidebarContent>\n <ng-content select=\"ng-doc-sidebar\"></ng-content>\n <ng-content select=\"[ngDocCustomSidebar]\"></ng-content>\n </ng-template>\n\n <ng-content></ng-content>\n </ng-doc-sidenav>\n </main>\n <footer *ngIf=\"footerContent\">\n <ng-container *polymorpheusOutlet=\"footerContent as text\"> {{ text }}</ng-container>\n </footer>\n </div>\n</ng-container>\n", styles: [":host[data-ng-doc-no-width-limit=true] .ng-doc-root-wrapper main{max-width:none}:host .ng-doc-root-wrapper{display:flex;flex-direction:column;height:100%}:host .ng-doc-root-wrapper main{display:flex;width:100%;margin-left:auto;margin-right:auto;max-width:var(--ng-doc-app-max-width);padding:var(--ng-doc-main-padding);--ng-doc-sidenav-top: var(--ng-doc-navbar-height);--ng-doc-sidenav-width: var(--ng-doc-sidebar-width);--ng-doc-sidenav-content-padding: var(--ng-doc-page-padding)}:host .ng-doc-root-wrapper footer{margin-top:auto}:host .ng-doc-root-wrapper .ng-doc-header{position:fixed;top:0;height:var(--ng-doc-navbar-height);width:100%;z-index:15}\n"], dependencies: [{ kind: "component", type: NgDocSidenavComponent, selector: "ng-doc-sidenav", inputs: ["sidebar", "opened", "hasBackdrop"], outputs: ["closeEvent"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: PolymorpheusModule }, { kind: "directive", type: i1.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
79
|
-
}
|
|
80
|
-
NgDocRootComponent = __decorate([
|
|
81
|
-
UntilDestroy()
|
|
82
|
-
], NgDocRootComponent);
|
|
77
|
+
}
|
|
83
78
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgDocRootComponent, decorators: [{
|
|
84
79
|
type: Component,
|
|
85
|
-
args: [{ selector: 'ng-doc-root', providers: [], changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
80
|
+
args: [{ selector: 'ng-doc-root', providers: [], changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgDocSidenavComponent, NgIf, PolymorpheusModule, AsyncPipe], template: "<ng-container>\n <div class=\"ng-doc-root-wrapper\">\n <div class=\"ng-doc-header\">\n <ng-content select=\"ng-doc-navbar\"></ng-content>\n <ng-content select=\"[ngDocCustomNavbar]\"></ng-content>\n </div>\n <main>\n <ng-doc-sidenav\n [sidebar]=\"sidebar ? sidebarContent : null\"\n [opened]=\"(sidebarService.isExpanded() | async) ?? true\"\n [hasBackdrop]=\"sidebarService.isMobile\"\n (closeEvent)=\"sidebarService.hide()\">\n <ng-template #sidebarContent>\n <ng-content select=\"ng-doc-sidebar\"></ng-content>\n <ng-content select=\"[ngDocCustomSidebar]\"></ng-content>\n </ng-template>\n\n <ng-content></ng-content>\n </ng-doc-sidenav>\n </main>\n <footer *ngIf=\"footerContent\">\n <ng-container *polymorpheusOutlet=\"footerContent as text\"> {{ text }}</ng-container>\n </footer>\n </div>\n</ng-container>\n", styles: [":host[data-ng-doc-no-width-limit=true] .ng-doc-root-wrapper main{max-width:none}:host .ng-doc-root-wrapper{display:flex;flex-direction:column;height:100%}:host .ng-doc-root-wrapper main{display:flex;width:100%;margin-left:auto;margin-right:auto;max-width:var(--ng-doc-app-max-width);padding:var(--ng-doc-main-padding);--ng-doc-sidenav-top: var(--ng-doc-navbar-height);--ng-doc-sidenav-width: var(--ng-doc-sidebar-width);--ng-doc-sidenav-content-padding: var(--ng-doc-page-padding)}:host .ng-doc-root-wrapper footer{margin-top:auto}:host .ng-doc-root-wrapper .ng-doc-header{position:fixed;top:0;height:var(--ng-doc-navbar-height);width:100%;z-index:15}\n"] }]
|
|
86
81
|
}], propDecorators: { sidebar: [{
|
|
87
82
|
type: Input
|
|
88
83
|
}], footerContent: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-doc-app-components-root.mjs","sources":["../../../../libs/app/components/root/root.component.ts","../../../../libs/app/components/root/root.component.html","../../../../libs/app/components/root/ng-doc-app-components-root.ts"],"sourcesContent":["import { AsyncPipe, NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n HostBinding,\n inject,\n Input,\n ViewChild,\n} from '@angular/core';\nimport { NgDocSidebarService } from '@ng-doc/app/services';\nimport { NgDocContent,
|
|
1
|
+
{"version":3,"file":"ng-doc-app-components-root.mjs","sources":["../../../../libs/app/components/root/root.component.ts","../../../../libs/app/components/root/root.component.html","../../../../libs/app/components/root/ng-doc-app-components-root.ts"],"sourcesContent":["import { AsyncPipe, NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n HostBinding,\n inject,\n Input,\n ViewChild,\n} from '@angular/core';\nimport { NgDocSidebarService } from '@ng-doc/app/services';\nimport { NgDocContent, NgDocSidenavComponent } from '@ng-doc/ui-kit';\nimport { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';\n\n/**\n * Directive uses for providing custom navbar, you should mark element with this directive\n * and the `NgDocRootComponent` will use it as a navbar\n *\n * ```html\n * <ng-doc-root>\n * <my-custom-navbar ngDocCustomNavbar></my-custom-navbar>\n *\n * <ng-doc-sidebar></ng-doc-sidebar>\n * <router-outlet></router-outlet>\n * </ng-doc-root>\n * ```\n */\n@Directive({\n selector: '[ngDocCustomNavbar]',\n standalone: true,\n})\nexport class NgDocCustomNavbarDirective {}\n\n/**\n * Directive uses for providing custom sidebar, you should mark element with this directive\n * and the `NgDocRootComponent` will use it as a sidebar\n *\n * ```html\n * <ng-doc-root>\n * <ng-doc-navbar></ng-doc-sidebar>\n *\n * <my-custom-sidebar ngDocCustomSidebar></my-custom-sidebar>\n * <router-outlet></router-outlet>\n * </ng-doc-root>\n * ```\n */\n@Directive({\n selector: '[ngDocCustomSidebar]',\n standalone: true,\n})\nexport class NgDocCustomSidebarDirective {}\n\n@Component({\n selector: 'ng-doc-root',\n templateUrl: './root.component.html',\n styleUrls: ['./root.component.scss'],\n providers: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgDocSidenavComponent, NgIf, PolymorpheusModule, AsyncPipe],\n})\nexport class NgDocRootComponent {\n /**\n * If `true` then the sidebar will be shown\n * You can use it for example for landing page to hide sidebar\n */\n @Input()\n sidebar: boolean = true;\n\n /**\n * Content for footer\n */\n @Input()\n footerContent: NgDocContent = '';\n\n /**\n * If `true` then page will be shown without width limit.\n * You can use it for example for landing page\n */\n @Input()\n @HostBinding('attr.data-ng-doc-no-width-limit')\n noWidthLimit: boolean = false;\n\n @ViewChild(NgDocSidenavComponent)\n sidenav?: NgDocSidenavComponent;\n\n protected readonly sidebarService = inject(NgDocSidebarService);\n}\n","<ng-container>\n <div class=\"ng-doc-root-wrapper\">\n <div class=\"ng-doc-header\">\n <ng-content select=\"ng-doc-navbar\"></ng-content>\n <ng-content select=\"[ngDocCustomNavbar]\"></ng-content>\n </div>\n <main>\n <ng-doc-sidenav\n [sidebar]=\"sidebar ? sidebarContent : null\"\n [opened]=\"(sidebarService.isExpanded() | async) ?? true\"\n [hasBackdrop]=\"sidebarService.isMobile\"\n (closeEvent)=\"sidebarService.hide()\">\n <ng-template #sidebarContent>\n <ng-content select=\"ng-doc-sidebar\"></ng-content>\n <ng-content select=\"[ngDocCustomSidebar]\"></ng-content>\n </ng-template>\n\n <ng-content></ng-content>\n </ng-doc-sidenav>\n </main>\n <footer *ngIf=\"footerContent\">\n <ng-container *polymorpheusOutlet=\"footerContent as text\"> {{ text }}</ng-container>\n </footer>\n </div>\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import * as i2 from '@angular/forms';
|
|
|
6
6
|
import { FormsModule } from '@angular/forms';
|
|
7
7
|
import { RouterLink } from '@angular/router';
|
|
8
8
|
import { NgDocSanitizeHtmlPipe } from '@ng-doc/app/pipes';
|
|
9
|
-
import { NG_DOC_DIALOG_DATA, NgDocInputWrapperComponent, NgDocInputStringDirective, NgDocAutofocusDirective, NgDocIconComponent, NgDocDataListComponent, NgDocTagComponent, NgDocTextComponent, NgDocHighlighterPipe, NgDocSpinnerComponent, NgDocExecutePipe, popupAnimation
|
|
9
|
+
import { NG_DOC_DIALOG_DATA, NgDocInputWrapperComponent, NgDocInputStringDirective, NgDocAutofocusDirective, NgDocIconComponent, NgDocDataListComponent, NgDocTagComponent, NgDocTextComponent, NgDocHighlighterPipe, NgDocSpinnerComponent, NgDocExecutePipe, popupAnimation } from '@ng-doc/ui-kit';
|
|
10
10
|
import { NgDocOverlayRef, NgDocListHost } from '@ng-doc/ui-kit/classes';
|
|
11
11
|
|
|
12
12
|
class NgDocSearchDialogComponent {
|
|
@@ -51,9 +51,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
|
|
|
51
51
|
NgDocTextComponent,
|
|
52
52
|
NgDocHighlighterPipe,
|
|
53
53
|
NgDocSanitizeHtmlPipe,
|
|
54
|
-
NgDocFocusCatcherDirective,
|
|
55
|
-
NgDocDropdownComponent,
|
|
56
|
-
NgDocLetDirective,
|
|
57
54
|
NgDocSpinnerComponent,
|
|
58
55
|
NgDocExecutePipe,
|
|
59
56
|
FormsModule,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-doc-app-components-search-dialog.mjs","sources":["../../../../libs/app/components/search-dialog/search-dialog.component.ts","../../../../libs/app/components/search-dialog/search-dialog.component.html","../../../../libs/app/components/search-dialog/ng-doc-app-components-search-dialog.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n forwardRef,\n inject,\n ViewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterLink } from '@angular/router';\nimport { NgDocSearchResult } from '@ng-doc/app/interfaces';\nimport { NgDocSanitizeHtmlPipe } from '@ng-doc/app/pipes';\nimport {\n NG_DOC_DIALOG_DATA,\n NgDocAutofocusDirective,\n NgDocDataListComponent,\n NgDocDropdownComponent,\n NgDocExecutePipe,\n NgDocFocusCatcherDirective,\n NgDocHighlighterPipe,\n NgDocHighlightPosition,\n NgDocIconComponent,\n NgDocInputStringDirective,\n NgDocInputWrapperComponent,\n NgDocLetDirective,\n NgDocSpinnerComponent,\n NgDocTagComponent,\n NgDocTextComponent,\n popupAnimation,\n StatedObservable,\n} from '@ng-doc/ui-kit';\nimport { NgDocListHost, NgDocOverlayRef } from '@ng-doc/ui-kit/classes';\n\nexport interface NgDocSearchDialogData {\n term: string;\n search: (query: string) => void;\n searchResults: StatedObservable<NgDocSearchResult[]>;\n}\n\n@Component({\n animations: [popupAnimation],\n selector: 'ng-doc-search-dialog',\n imports: [\n CommonModule,\n NgDocInputWrapperComponent,\n NgDocInputStringDirective,\n NgDocAutofocusDirective,\n NgDocIconComponent,\n NgDocDataListComponent,\n RouterLink,\n NgDocTagComponent,\n NgDocTextComponent,\n NgDocHighlighterPipe,\n NgDocSanitizeHtmlPipe,\n NgDocFocusCatcherDirective,\n NgDocDropdownComponent,\n NgDocLetDirective,\n NgDocSpinnerComponent,\n NgDocExecutePipe,\n FormsModule,\n ],\n templateUrl: './search-dialog.component.html',\n styleUrl: './search-dialog.component.scss',\n providers: [\n {\n provide: NgDocListHost,\n useExisting: forwardRef(() => NgDocSearchDialogComponent),\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[@popupAnimation]': 'true',\n },\n})\nexport class NgDocSearchDialogComponent implements NgDocListHost {\n @ViewChild('inputElement', { read: ElementRef })\n inputElement!: ElementRef<HTMLElement>;\n\n @ViewChild('resultContent', { read: ElementRef })\n resultContent?: ElementRef<HTMLElement>;\n\n protected searchTerm: string = '';\n protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n protected readonly overlayRef = inject(NgDocOverlayRef);\n protected readonly data = inject<NgDocSearchDialogData>(NG_DOC_DIALOG_DATA);\n\n constructor() {\n this.searchTerm = this.data.term;\n }\n\n search(query: string): void {\n this.data.search(query);\n\n if (this.resultContent) {\n this.resultContent.nativeElement.scrollTop = 0;\n }\n }\n\n getPositions<T extends NgDocSearchResult, K extends keyof T['positions']>(\n key: K,\n item: T,\n ): NgDocHighlightPosition[] {\n return item.positions[key] ?? [];\n }\n\n get listHostOrigin(): ElementRef<HTMLElement> {\n return this.inputElement ?? this.elementRef;\n }\n}\n","<div class=\"ng-doc-search-dialog-container\">\n <ng-doc-input-wrapper>\n <ng-doc-icon icon=\"search\" ngDocInputWrapperLeft></ng-doc-icon>\n <input\n ngDocInputString\n ngDocAutofocus\n [selectAll]=\"true\"\n placeholder=\"Find or ask anything...\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"search($event)\"\n #inputElement />\n </ng-doc-input-wrapper>\n\n <div\n class=\"ng-doc-search-result-content\"\n *ngIf=\"data.searchResults | async as state\"\n #resultContent>\n <ng-doc-data-list\n [items]=\"state?.result ?? []\"\n [itemContent]=\"itemContent\"\n [emptyContent]=\"emptyContent\">\n <ng-template let-item #itemContent>\n <a\n class=\"ng-doc-search-option\"\n [routerLink]=\"item.index.route\"\n [fragment]=\"item.index.fragment\"\n (click)=\"overlayRef.close()\">\n <div class=\"ng-doc-search-option-header\">\n <ng-doc-tag size=\"small\" [attr.data-ng-doc-page-type]=\"item.index.pageType\">\n {{ item.index.pageType }}\n </ng-doc-tag>\n <span class=\"ng-doc-search-option-breadcrumbs\" ng-doc-text>\n <ng-container *ngFor=\"let breadcrum of item.index.breadcrumbs; let i = index\">\n <span>{{ breadcrum }}</span>\n <span\n class=\"ng-doc-search-option-breadcrumb-divider\"\n *ngIf=\"i !== item.index.breadcrumbs.length - 1\"\n ><b>•</b></span\n >\n </ng-container>\n </span>\n </div>\n <h5\n class=\"ng-doc-search-section-title\"\n ng-doc-text\n [innerHTML]=\"\n (item.index.section\n | ngDocHighlighterPipe: (getPositions | execute: 'section' : item)\n | ngDocSanitizeHtml) || item.index.title\n \"></h5>\n <div\n *ngIf=\"item.index.content\"\n class=\"ng-doc-search-content\"\n [innerHTML]=\"\n item.index.content\n | ngDocHighlighterPipe: (getPositions | execute: 'content' : item)\n | ngDocSanitizeHtml\n \"\n ng-doc-text></div>\n </a>\n </ng-template>\n <ng-template #emptyContent>\n <ng-container *ngIf=\"!state?.pending\">\n <div class=\"ng-doc-search-empty\">\n <ng-container *ngIf=\"searchTerm.length\">Nothing found</ng-container>\n <ng-container *ngIf=\"!searchTerm.length\">Please enter your search query </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"state?.pending\">\n <div class=\"ng-doc-search-progress\">\n <ng-doc-spinner size=\"small\"></ng-doc-spinner>\n Searching...\n </div>\n </ng-container>\n </ng-template>\n </ng-doc-data-list>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-doc-app-components-search-dialog.mjs","sources":["../../../../libs/app/components/search-dialog/search-dialog.component.ts","../../../../libs/app/components/search-dialog/search-dialog.component.html","../../../../libs/app/components/search-dialog/ng-doc-app-components-search-dialog.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n forwardRef,\n inject,\n ViewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterLink } from '@angular/router';\nimport { NgDocSearchResult } from '@ng-doc/app/interfaces';\nimport { NgDocSanitizeHtmlPipe } from '@ng-doc/app/pipes';\nimport {\n NG_DOC_DIALOG_DATA,\n NgDocAutofocusDirective,\n NgDocDataListComponent,\n NgDocExecutePipe,\n NgDocHighlighterPipe,\n NgDocHighlightPosition,\n NgDocIconComponent,\n NgDocInputStringDirective,\n NgDocInputWrapperComponent,\n NgDocSpinnerComponent,\n NgDocTagComponent,\n NgDocTextComponent,\n popupAnimation,\n StatedObservable,\n} from '@ng-doc/ui-kit';\nimport { NgDocListHost, NgDocOverlayRef } from '@ng-doc/ui-kit/classes';\n\nexport interface NgDocSearchDialogData {\n term: string;\n search: (query: string) => void;\n searchResults: StatedObservable<NgDocSearchResult[]>;\n}\n\n@Component({\n animations: [popupAnimation],\n selector: 'ng-doc-search-dialog',\n imports: [\n CommonModule,\n NgDocInputWrapperComponent,\n NgDocInputStringDirective,\n NgDocAutofocusDirective,\n NgDocIconComponent,\n NgDocDataListComponent,\n RouterLink,\n NgDocTagComponent,\n NgDocTextComponent,\n NgDocHighlighterPipe,\n NgDocSanitizeHtmlPipe,\n NgDocSpinnerComponent,\n NgDocExecutePipe,\n FormsModule,\n ],\n templateUrl: './search-dialog.component.html',\n styleUrl: './search-dialog.component.scss',\n providers: [\n {\n provide: NgDocListHost,\n useExisting: forwardRef(() => NgDocSearchDialogComponent),\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[@popupAnimation]': 'true',\n },\n})\nexport class NgDocSearchDialogComponent implements NgDocListHost {\n @ViewChild('inputElement', { read: ElementRef })\n inputElement!: ElementRef<HTMLElement>;\n\n @ViewChild('resultContent', { read: ElementRef })\n resultContent?: ElementRef<HTMLElement>;\n\n protected searchTerm: string = '';\n protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n protected readonly overlayRef = inject(NgDocOverlayRef);\n protected readonly data = inject<NgDocSearchDialogData>(NG_DOC_DIALOG_DATA);\n\n constructor() {\n this.searchTerm = this.data.term;\n }\n\n search(query: string): void {\n this.data.search(query);\n\n if (this.resultContent) {\n this.resultContent.nativeElement.scrollTop = 0;\n }\n }\n\n getPositions<T extends NgDocSearchResult, K extends keyof T['positions']>(\n key: K,\n item: T,\n ): NgDocHighlightPosition[] {\n return item.positions[key] ?? [];\n }\n\n get listHostOrigin(): ElementRef<HTMLElement> {\n return this.inputElement ?? this.elementRef;\n }\n}\n","<div class=\"ng-doc-search-dialog-container\">\n <ng-doc-input-wrapper>\n <ng-doc-icon icon=\"search\" ngDocInputWrapperLeft></ng-doc-icon>\n <input\n ngDocInputString\n ngDocAutofocus\n [selectAll]=\"true\"\n placeholder=\"Find or ask anything...\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"search($event)\"\n #inputElement />\n </ng-doc-input-wrapper>\n\n <div\n class=\"ng-doc-search-result-content\"\n *ngIf=\"data.searchResults | async as state\"\n #resultContent>\n <ng-doc-data-list\n [items]=\"state?.result ?? []\"\n [itemContent]=\"itemContent\"\n [emptyContent]=\"emptyContent\">\n <ng-template let-item #itemContent>\n <a\n class=\"ng-doc-search-option\"\n [routerLink]=\"item.index.route\"\n [fragment]=\"item.index.fragment\"\n (click)=\"overlayRef.close()\">\n <div class=\"ng-doc-search-option-header\">\n <ng-doc-tag size=\"small\" [attr.data-ng-doc-page-type]=\"item.index.pageType\">\n {{ item.index.pageType }}\n </ng-doc-tag>\n <span class=\"ng-doc-search-option-breadcrumbs\" ng-doc-text>\n <ng-container *ngFor=\"let breadcrum of item.index.breadcrumbs; let i = index\">\n <span>{{ breadcrum }}</span>\n <span\n class=\"ng-doc-search-option-breadcrumb-divider\"\n *ngIf=\"i !== item.index.breadcrumbs.length - 1\"\n ><b>•</b></span\n >\n </ng-container>\n </span>\n </div>\n <h5\n class=\"ng-doc-search-section-title\"\n ng-doc-text\n [innerHTML]=\"\n (item.index.section\n | ngDocHighlighterPipe: (getPositions | execute: 'section' : item)\n | ngDocSanitizeHtml) || item.index.title\n \"></h5>\n <div\n *ngIf=\"item.index.content\"\n class=\"ng-doc-search-content\"\n [innerHTML]=\"\n item.index.content\n | ngDocHighlighterPipe: (getPositions | execute: 'content' : item)\n | ngDocSanitizeHtml\n \"\n ng-doc-text></div>\n </a>\n </ng-template>\n <ng-template #emptyContent>\n <ng-container *ngIf=\"!state?.pending\">\n <div class=\"ng-doc-search-empty\">\n <ng-container *ngIf=\"searchTerm.length\">Nothing found</ng-container>\n <ng-container *ngIf=\"!searchTerm.length\">Please enter your search query </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"state?.pending\">\n <div class=\"ng-doc-search-progress\">\n <ng-doc-spinner size=\"small\"></ng-doc-spinner>\n Searching...\n </div>\n </ng-container>\n </ng-template>\n </ng-doc-data-list>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
import { __decorate, __metadata } from 'tslib';
|
|
2
|
-
import { NgIf, NgTemplateOutlet, NgFor, AsyncPipe } from '@angular/common';
|
|
3
1
|
import * as i0 from '@angular/core';
|
|
4
2
|
import { inject, Component, ChangeDetectionStrategy } from '@angular/core';
|
|
3
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
4
|
import { FormsModule } from '@angular/forms';
|
|
6
|
-
import { RouterLink } from '@angular/router';
|
|
7
5
|
import { NgDocSearchEngine } from '@ng-doc/app/classes';
|
|
8
6
|
import { NgDocSearchDialogComponent } from '@ng-doc/app/components/search-dialog';
|
|
9
|
-
import {
|
|
10
|
-
import { NgDocDialogService, observableState, NgDocComponentContent, NgDocButtonIconComponent, NgDocDropdownOriginDirective, NgDocIconComponent, NgDocInputWrapperComponent, NgDocInputStringDirective, NgDocHotkeyDirective, NgDocTagComponent, NgDocLetDirective, NgDocDropdownComponent, NgDocAutofocusDirective, NgDocFocusCatcherDirective, NgDocDataListComponent, NgDocTextComponent, NgDocSpinnerComponent, NgDocHighlighterPipe, NgDocExecutePipe } from '@ng-doc/ui-kit';
|
|
11
|
-
import { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';
|
|
7
|
+
import { NgDocDialogService, observableState, NgDocComponentContent, NgDocButtonIconComponent, NgDocDropdownOriginDirective, NgDocIconComponent, NgDocInputWrapperComponent, NgDocInputStringDirective, NgDocHotkeyDirective, NgDocTagComponent } from '@ng-doc/ui-kit';
|
|
12
8
|
import { BehaviorSubject, NEVER } from 'rxjs';
|
|
13
9
|
import { skip, switchMap, shareReplay } from 'rxjs/operators';
|
|
14
10
|
|
|
15
|
-
|
|
11
|
+
class NgDocSearchComponent {
|
|
16
12
|
constructor() {
|
|
17
13
|
this.query = new BehaviorSubject('');
|
|
18
14
|
this.dialog = inject(NgDocDialogService);
|
|
@@ -22,7 +18,7 @@ let NgDocSearchComponent = class NgDocSearchComponent {
|
|
|
22
18
|
please check this article: https://ng-doc.com/docs/getting-started/installation#configuring-application
|
|
23
19
|
to learn how to provide it.`);
|
|
24
20
|
}
|
|
25
|
-
this.searchResults = this.query.pipe(skip(1), switchMap((term) => this.searchEngine?.search(term).pipe(observableState()) ?? NEVER), shareReplay(1),
|
|
21
|
+
this.searchResults = this.query.pipe(skip(1), switchMap((term) => this.searchEngine?.search(term).pipe(observableState()) ?? NEVER), shareReplay(1), takeUntilDestroyed());
|
|
26
22
|
}
|
|
27
23
|
open() {
|
|
28
24
|
this.dialog.open(new NgDocComponentContent(NgDocSearchDialogComponent), {
|
|
@@ -39,37 +35,18 @@ let NgDocSearchComponent = class NgDocSearchComponent {
|
|
|
39
35
|
}
|
|
40
36
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgDocSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
41
37
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: NgDocSearchComponent, isStandalone: true, selector: "ng-doc-search", ngImport: i0, template: "<ng-container\n [ngDocHotkey]=\"{ ctrlKey: false, altKey: false, shiftKey: false, code: 'Slash' }\"\n (ngDocHotkey)=\"open()\">\n <button ng-doc-button-icon size=\"large\" (click)=\"open()\" ngDocDropdownOrigin>\n <ng-doc-icon icon=\"search\" [size]=\"24\"></ng-doc-icon>\n </button>\n\n <ng-doc-input-wrapper ngDocDropdownOrigin>\n <ng-doc-icon icon=\"search\" ngDocInputWrapperLeft></ng-doc-icon>\n <input ngDocInputString readonly placeholder=\"Search...\" (click)=\"open()\" />\n <ng-doc-tag class=\"search-hotkey\" ngDocInputWrapperRight>/</ng-doc-tag>\n </ng-doc-input-wrapper>\n</ng-container>\n", styles: [":host{--ng-doc-floated-border-radius: var(--ng-doc-base-gutter);--ng-doc-input-background-color: var(--ng-doc-base-1);--ng-doc-input-border: none;--ng-doc-input-border-hover: none;--ng-doc-icon-color: var(--ng-doc-base-7)}:host ng-doc-input-wrapper{cursor:pointer}:host ng-doc-input-wrapper ng-doc-icon,:host ng-doc-input-wrapper ng-doc-tag{cursor:pointer}@media (max-width: 1024px){:host ng-doc-input-wrapper{display:none}}@media (min-width: 1024px){:host{width:240px}:host button[ng-doc-button-icon]{display:none}}.search-hotkey{display:flex;align-items:center;justify-content:center;width:calc(var(--ng-doc-base-gutter) * 3);height:calc(var(--ng-doc-base-gutter) * 3);margin-right:var(--ng-doc-base-gutter);--ng-doc-tag-border: 1px solid var(--ng-doc-base-6);--ng-doc-tag-color: var(--ng-doc-base-6);--ng-doc-tag-background: transparent}\n"], dependencies: [{ kind: "component", type: NgDocButtonIconComponent, selector: "button[ng-doc-button-icon], a[ng-doc-button-icon], button[ng-doc-button-icon-raised], a[ng-doc-button-icon-raised], button[ng-doc-button-icon-transparent], a[ng-doc-button-icon-transparent]", inputs: ["size", "rounded"] }, { kind: "directive", type: NgDocDropdownOriginDirective, selector: "[ngDocDropdownOrigin]", exportAs: ["ngDocDropdownOrigin"] }, { kind: "component", type: NgDocIconComponent, selector: "ng-doc-icon", inputs: ["icon", "customIcon", "size"] }, { kind: "component", type: NgDocInputWrapperComponent, selector: "ng-doc-input-wrapper", inputs: ["blurContent", "blurContext", "align"] }, { kind: "directive", type: NgDocInputStringDirective, selector: "input[ngDocInputString]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: NgDocHotkeyDirective, selector: "[ngDocHotkey]", inputs: ["ngDocHotkey"], outputs: ["ngDocHotkey"] }, { kind: "component", type: NgDocTagComponent, selector: "ng-doc-tag", inputs: ["color", "size", "mod"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
42
|
-
}
|
|
43
|
-
NgDocSearchComponent = __decorate([
|
|
44
|
-
UntilDestroy(),
|
|
45
|
-
__metadata("design:paramtypes", [])
|
|
46
|
-
], NgDocSearchComponent);
|
|
38
|
+
}
|
|
47
39
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgDocSearchComponent, decorators: [{
|
|
48
40
|
type: Component,
|
|
49
41
|
args: [{ selector: 'ng-doc-search', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
50
|
-
NgDocLetDirective,
|
|
51
|
-
NgIf,
|
|
52
42
|
NgDocButtonIconComponent,
|
|
53
43
|
NgDocDropdownOriginDirective,
|
|
54
44
|
NgDocIconComponent,
|
|
55
|
-
NgDocDropdownComponent,
|
|
56
45
|
NgDocInputWrapperComponent,
|
|
57
46
|
NgDocInputStringDirective,
|
|
58
47
|
FormsModule,
|
|
59
|
-
NgDocAutofocusDirective,
|
|
60
|
-
NgTemplateOutlet,
|
|
61
|
-
NgDocFocusCatcherDirective,
|
|
62
48
|
NgDocHotkeyDirective,
|
|
63
49
|
NgDocTagComponent,
|
|
64
|
-
NgDocDataListComponent,
|
|
65
|
-
RouterLink,
|
|
66
|
-
NgDocTextComponent,
|
|
67
|
-
NgFor,
|
|
68
|
-
NgDocSpinnerComponent,
|
|
69
|
-
AsyncPipe,
|
|
70
|
-
NgDocHighlighterPipe,
|
|
71
|
-
NgDocExecutePipe,
|
|
72
|
-
NgDocSanitizeHtmlPipe,
|
|
73
50
|
], template: "<ng-container\n [ngDocHotkey]=\"{ ctrlKey: false, altKey: false, shiftKey: false, code: 'Slash' }\"\n (ngDocHotkey)=\"open()\">\n <button ng-doc-button-icon size=\"large\" (click)=\"open()\" ngDocDropdownOrigin>\n <ng-doc-icon icon=\"search\" [size]=\"24\"></ng-doc-icon>\n </button>\n\n <ng-doc-input-wrapper ngDocDropdownOrigin>\n <ng-doc-icon icon=\"search\" ngDocInputWrapperLeft></ng-doc-icon>\n <input ngDocInputString readonly placeholder=\"Search...\" (click)=\"open()\" />\n <ng-doc-tag class=\"search-hotkey\" ngDocInputWrapperRight>/</ng-doc-tag>\n </ng-doc-input-wrapper>\n</ng-container>\n", styles: [":host{--ng-doc-floated-border-radius: var(--ng-doc-base-gutter);--ng-doc-input-background-color: var(--ng-doc-base-1);--ng-doc-input-border: none;--ng-doc-input-border-hover: none;--ng-doc-icon-color: var(--ng-doc-base-7)}:host ng-doc-input-wrapper{cursor:pointer}:host ng-doc-input-wrapper ng-doc-icon,:host ng-doc-input-wrapper ng-doc-tag{cursor:pointer}@media (max-width: 1024px){:host ng-doc-input-wrapper{display:none}}@media (min-width: 1024px){:host{width:240px}:host button[ng-doc-button-icon]{display:none}}.search-hotkey{display:flex;align-items:center;justify-content:center;width:calc(var(--ng-doc-base-gutter) * 3);height:calc(var(--ng-doc-base-gutter) * 3);margin-right:var(--ng-doc-base-gutter);--ng-doc-tag-border: 1px solid var(--ng-doc-base-6);--ng-doc-tag-color: var(--ng-doc-base-6);--ng-doc-tag-background: transparent}\n"] }]
|
|
74
51
|
}], ctorParameters: () => [] });
|
|
75
52
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-doc-app-components-search.mjs","sources":["../../../../libs/app/components/search/search.component.ts","../../../../libs/app/components/search/search.component.html","../../../../libs/app/components/search/ng-doc-app-components-search.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"ng-doc-app-components-search.mjs","sources":["../../../../libs/app/components/search/search.component.ts","../../../../libs/app/components/search/search.component.html","../../../../libs/app/components/search/ng-doc-app-components-search.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { NgDocSearchEngine } from '@ng-doc/app/classes';\nimport {\n NgDocSearchDialogComponent,\n NgDocSearchDialogData,\n} from '@ng-doc/app/components/search-dialog';\nimport { NgDocSearchResult } from '@ng-doc/app/interfaces';\nimport {\n NgDocButtonIconComponent,\n NgDocComponentContent,\n NgDocDialogService,\n NgDocDropdownOriginDirective,\n NgDocHotkeyDirective,\n NgDocIconComponent,\n NgDocInputStringDirective,\n NgDocInputWrapperComponent,\n NgDocTagComponent,\n observableState,\n StatedObservable,\n} from '@ng-doc/ui-kit';\nimport { BehaviorSubject, NEVER } from 'rxjs';\nimport { shareReplay, skip, switchMap } from 'rxjs/operators';\n\n@Component({\n selector: 'ng-doc-search',\n templateUrl: './search.component.html',\n styleUrls: ['./search.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgDocButtonIconComponent,\n NgDocDropdownOriginDirective,\n NgDocIconComponent,\n NgDocInputWrapperComponent,\n NgDocInputStringDirective,\n FormsModule,\n NgDocHotkeyDirective,\n NgDocTagComponent,\n ],\n})\nexport class NgDocSearchComponent {\n protected readonly query: BehaviorSubject<string> = new BehaviorSubject<string>('');\n protected readonly searchResults: StatedObservable<NgDocSearchResult[]>;\n protected readonly dialog = inject(NgDocDialogService);\n protected readonly searchEngine = inject(NgDocSearchEngine, { optional: true });\n\n constructor() {\n if (!this.searchEngine) {\n throw new Error(`NgDoc: Search engine is not provided,\n\t\t\tplease check this article: https://ng-doc.com/docs/getting-started/installation#configuring-application\n\t\t\tto learn how to provide it.`);\n }\n\n this.searchResults = this.query.pipe(\n skip(1),\n switchMap((term: string) => this.searchEngine?.search(term).pipe(observableState()) ?? NEVER),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n }\n\n open(): void {\n this.dialog.open<NgDocSearchDialogData>(new NgDocComponentContent(NgDocSearchDialogComponent), {\n hasBackdrop: true,\n backdropClass: 'ng-doc-blur-backdrop',\n panelClass: 'ng-doc-transparent-dialog',\n positionStrategy: this.dialog.positionStrategy().centerHorizontally().top('5vh'),\n data: {\n term: this.query.value,\n search: (query: string) => this.query.next(query),\n searchResults: this.searchResults,\n },\n });\n }\n}\n","<ng-container\n [ngDocHotkey]=\"{ ctrlKey: false, altKey: false, shiftKey: false, code: 'Slash' }\"\n (ngDocHotkey)=\"open()\">\n <button ng-doc-button-icon size=\"large\" (click)=\"open()\" ngDocDropdownOrigin>\n <ng-doc-icon icon=\"search\" [size]=\"24\"></ng-doc-icon>\n </button>\n\n <ng-doc-input-wrapper ngDocDropdownOrigin>\n <ng-doc-icon icon=\"search\" ngDocInputWrapperLeft></ng-doc-icon>\n <input ngDocInputString readonly placeholder=\"Search...\" (click)=\"open()\" />\n <ng-doc-tag class=\"search-hotkey\" ngDocInputWrapperRight>/</ng-doc-tag>\n </ng-doc-input-wrapper>\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
import { Location, NgIf,
|
|
1
|
+
import { Location, NgIf, NgFor, NgTemplateOutlet } from '@angular/common';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { inject, ChangeDetectorRef, Component, ChangeDetectionStrategy, Input, HostBinding, input, computed } from '@angular/core';
|
|
4
4
|
import { NG_DOC_CONTEXT } from '@ng-doc/app/tokens';
|
|
5
5
|
import { NgDocDotComponent, NgDocTextComponent, NgDocIconComponent, NgDocTextLeftDirective, NgDocRotatorDirective, NgDocExpanderComponent, NgDocTagComponent, NgDocExecutePipe, NgDocBindPipe } from '@ng-doc/ui-kit';
|
|
6
|
-
import { __decorate, __metadata } from 'tslib';
|
|
7
6
|
import { NgDocRouteActiveDirective } from '@ng-doc/app/directives/route-active';
|
|
8
|
-
import { UntilDestroy } from '@ngneat/until-destroy';
|
|
9
7
|
import * as i1 from '@tinkoff/ng-polymorpheus';
|
|
10
8
|
import { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';
|
|
11
9
|
import { RouterLinkActive, RouterLink } from '@angular/router';
|
|
12
10
|
|
|
13
|
-
|
|
11
|
+
class NgDocSidebarCategoryComponent {
|
|
14
12
|
constructor() {
|
|
15
13
|
this.isRoot = false;
|
|
16
14
|
this.content = '';
|
|
@@ -41,11 +39,7 @@ let NgDocSidebarCategoryComponent = class NgDocSidebarCategoryComponent {
|
|
|
41
39
|
}
|
|
42
40
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgDocSidebarCategoryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
43
41
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: NgDocSidebarCategoryComponent, isStandalone: true, selector: "ng-doc-sidebar-category", inputs: { category: "category", isRoot: "isRoot", content: "content", expandable: "expandable", expanded: "expanded" }, host: { properties: { "attr.data-ng-doc-is-root": "this.isRoot", "attr.data-ng-doc-expandable": "this.expandable" } }, ngImport: i0, template: "<div class=\"ng-doc-sidebar-category-wrapper\">\n <div class=\"ng-doc-sidebar-category-button\" (click)=\"toggle()\">\n <div class=\"ng-doc-sidebar-category\" [ngDocRouteActive]=\"category.route\" activeClass=\"active\">\n <ng-doc-dot *ngIf=\"!expandable\"></ng-doc-dot>\n <span ng-doc-text>\n <ng-doc-icon\n icon=\"chevron-right\"\n *ngIf=\"category.expandable\"\n [ngDocRotator]=\"expanded\"\n ngDocTextLeft>\n </ng-doc-icon>\n {{ category.title }}\n </span>\n </div>\n <!--\t\t<div ng-doc-text color=\"muted\" size=\"small\">Some description</div>-->\n </div>\n <ng-doc-expander [expanded]=\"expanded\" [content]=\"contentTemplate\" collapseMod=\"hide\" />\n <ng-template #contentTemplate>\n <div class=\"ng-doc-sidebar-category-children\">\n <!--We wrap content via ng-template to save state of the child components -->\n <ng-content></ng-content>\n <ng-container *polymorpheusOutlet=\"content as text\">{{ text }}</ng-container>\n </div>\n </ng-template>\n</div>\n", styles: [":host{display:flex;flex-direction:column;--ng-doc-sidebar-category-indent: calc( var(--ng-doc-sidebar-item-indent) + calc(var(--ng-doc-base-gutter) * 2) );--ng-doc-icon-color: var(--ng-doc-text)}:host[data-ng-doc-expandable=false] .ng-doc-sidebar-category-button{padding:var(--ng-doc-sidebar-vetical-padding) var(--ng-doc-base-gutter) var(--ng-doc-sidebar-vetical-padding) var(--ng-doc-sidebar-item-indent)}:host[data-ng-doc-expandable=true] .ng-doc-sidebar-category-button{padding:var(--ng-doc-sidebar-vetical-padding) var(--ng-doc-base-gutter) var(--ng-doc-sidebar-vetical-padding) var(--ng-doc-sidebar-item-indent);cursor:pointer;border-radius:var(--ng-doc-base-gutter)}:host[data-ng-doc-expandable=true] .ng-doc-sidebar-category-button:hover{background-color:var(--ng-doc-base-1)}:host .ng-doc-sidebar-category-button{display:flex;flex-direction:column}:host .ng-doc-sidebar-category-button .ng-doc-sidebar-category{display:flex;align-items:center;--ng-doc-dot-background: var(--ng-doc-base-4);--ng-doc-text: var(--ng-doc-heading-color)}:host .ng-doc-sidebar-category-button .ng-doc-sidebar-category ng-doc-dot{margin-right:calc(var(--ng-doc-base-gutter) * 2)}:host .ng-doc-sidebar-category-button .ng-doc-sidebar-category.active{--ng-doc-font-weight: 600;--ng-doc-dot-background: var(--ng-doc-primary)}:host .ng-doc-sidebar-category-button span[ng-doc-text]{flex-shrink:0;margin-right:var(--ng-doc-base-gutter)}:host .ng-doc-sidebar-category-children{padding-bottom:calc(var(--ng-doc-base-gutter) * 2);--ng-doc-sidebar-item-indent: var(--ng-doc-sidebar-category-indent)}\n"], dependencies: [{ kind: "directive", type: NgDocRouteActiveDirective, selector: "[ngDocRouteActive]", inputs: ["ngDocRouteActive", "activeClass", "matchOptions"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgDocDotComponent, selector: "ng-doc-dot", inputs: ["color", "size"] }, { kind: "component", type: NgDocTextComponent, selector: "[ng-doc-text]", inputs: ["size", "color", "align", "absoluteContent"] }, { kind: "component", type: NgDocIconComponent, selector: "ng-doc-icon", inputs: ["icon", "customIcon", "size"] }, { kind: "directive", type: NgDocTextLeftDirective, selector: "[ngDocTextLeft]" }, { kind: "directive", type: NgDocRotatorDirective, selector: "[ngDocRotator]", inputs: ["ngDocRotator", "from", "to"] }, { kind: "component", type: NgDocExpanderComponent, selector: "ng-doc-expander", inputs: ["expanded", "content", "collapseMod", "from"] }, { kind: "ngmodule", type: PolymorpheusModule }, { kind: "directive", type: i1.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
44
|
-
}
|
|
45
|
-
NgDocSidebarCategoryComponent = __decorate([
|
|
46
|
-
UntilDestroy(),
|
|
47
|
-
__metadata("design:paramtypes", [])
|
|
48
|
-
], NgDocSidebarCategoryComponent);
|
|
42
|
+
}
|
|
49
43
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgDocSidebarCategoryComponent, decorators: [{
|
|
50
44
|
type: Component,
|
|
51
45
|
args: [{ selector: 'ng-doc-sidebar-category', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
@@ -58,7 +52,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
|
|
|
58
52
|
NgDocRotatorDirective,
|
|
59
53
|
NgDocExpanderComponent,
|
|
60
54
|
PolymorpheusModule,
|
|
61
|
-
NgTemplateOutlet,
|
|
62
55
|
], template: "<div class=\"ng-doc-sidebar-category-wrapper\">\n <div class=\"ng-doc-sidebar-category-button\" (click)=\"toggle()\">\n <div class=\"ng-doc-sidebar-category\" [ngDocRouteActive]=\"category.route\" activeClass=\"active\">\n <ng-doc-dot *ngIf=\"!expandable\"></ng-doc-dot>\n <span ng-doc-text>\n <ng-doc-icon\n icon=\"chevron-right\"\n *ngIf=\"category.expandable\"\n [ngDocRotator]=\"expanded\"\n ngDocTextLeft>\n </ng-doc-icon>\n {{ category.title }}\n </span>\n </div>\n <!--\t\t<div ng-doc-text color=\"muted\" size=\"small\">Some description</div>-->\n </div>\n <ng-doc-expander [expanded]=\"expanded\" [content]=\"contentTemplate\" collapseMod=\"hide\" />\n <ng-template #contentTemplate>\n <div class=\"ng-doc-sidebar-category-children\">\n <!--We wrap content via ng-template to save state of the child components -->\n <ng-content></ng-content>\n <ng-container *polymorpheusOutlet=\"content as text\">{{ text }}</ng-container>\n </div>\n </ng-template>\n</div>\n", styles: [":host{display:flex;flex-direction:column;--ng-doc-sidebar-category-indent: calc( var(--ng-doc-sidebar-item-indent) + calc(var(--ng-doc-base-gutter) * 2) );--ng-doc-icon-color: var(--ng-doc-text)}:host[data-ng-doc-expandable=false] .ng-doc-sidebar-category-button{padding:var(--ng-doc-sidebar-vetical-padding) var(--ng-doc-base-gutter) var(--ng-doc-sidebar-vetical-padding) var(--ng-doc-sidebar-item-indent)}:host[data-ng-doc-expandable=true] .ng-doc-sidebar-category-button{padding:var(--ng-doc-sidebar-vetical-padding) var(--ng-doc-base-gutter) var(--ng-doc-sidebar-vetical-padding) var(--ng-doc-sidebar-item-indent);cursor:pointer;border-radius:var(--ng-doc-base-gutter)}:host[data-ng-doc-expandable=true] .ng-doc-sidebar-category-button:hover{background-color:var(--ng-doc-base-1)}:host .ng-doc-sidebar-category-button{display:flex;flex-direction:column}:host .ng-doc-sidebar-category-button .ng-doc-sidebar-category{display:flex;align-items:center;--ng-doc-dot-background: var(--ng-doc-base-4);--ng-doc-text: var(--ng-doc-heading-color)}:host .ng-doc-sidebar-category-button .ng-doc-sidebar-category ng-doc-dot{margin-right:calc(var(--ng-doc-base-gutter) * 2)}:host .ng-doc-sidebar-category-button .ng-doc-sidebar-category.active{--ng-doc-font-weight: 600;--ng-doc-dot-background: var(--ng-doc-primary)}:host .ng-doc-sidebar-category-button span[ng-doc-text]{flex-shrink:0;margin-right:var(--ng-doc-base-gutter)}:host .ng-doc-sidebar-category-children{padding-bottom:calc(var(--ng-doc-base-gutter) * 2);--ng-doc-sidebar-item-indent: var(--ng-doc-sidebar-category-indent)}\n"] }]
|
|
63
56
|
}], ctorParameters: () => [], propDecorators: { category: [{
|
|
64
57
|
type: Input,
|