ngx-lil-gui
Version:
Lil-GUI wrapper for Angular
1 lines • 22 kB
Source Map (JSON)
{"version":3,"file":"ngx-lil-gui.mjs","sources":["../../../../packages/ngx-lil-gui/src/lib/ngx-lil-gui.component.ts","../../../../packages/ngx-lil-gui/src/lib/ngx-lil-gui-color.component.ts","../../../../packages/ngx-lil-gui/src/lib/ngx-lil-gui-controller.component.ts","../../../../packages/ngx-lil-gui/src/lib/ngx-lil-gui.module.ts","../../../../packages/ngx-lil-gui/src/index.ts","../../../../packages/ngx-lil-gui/src/ngx-lil-gui.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport GUI, { ColorController, Controller } from 'lil-gui';\nimport type {\n AnyRecord,\n NgxLilGuiChange,\n NgxLilGuiColorConfig,\n NgxLilGuiConfig,\n NgxLilGuiControllerChange,\n NgxLilGuiControllerConfig,\n NgxLilGuiControllerNumberConfig,\n NgxLilGuiControllerSelectConfig,\n NgxLilGuiFinishChange,\n} from './types';\n\n@Component({\n selector: `\n ngx-lil-gui:not([config]):not([object]),\n ngx-lil-gui[config]:not([object]),\n ngx-lil-gui[object]:not([config])\n `,\n template: ` <ng-content></ng-content> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class NgxLilGui implements OnInit, OnDestroy {\n @Input() zoneless = false;\n @Input() self = false;\n\n @Input() autoPlace?: boolean;\n @Input() container?: HTMLElement | false;\n @Input() width?: number;\n @Input() title?: string;\n @Input() injectStyles?: boolean;\n @Input() touchStyles?: number;\n\n @Input() object?: AnyRecord;\n @Input() config?: NgxLilGuiConfig;\n\n @Output() guiChange = new EventEmitter<NgxLilGuiChange>();\n @Output() guiFinishChange = new EventEmitter<NgxLilGuiFinishChange>();\n @Output() guiReady = new EventEmitter<GUI>();\n\n #gui!: GUI;\n #hostElement = inject<ElementRef<HTMLElement>>(ElementRef, {\n skipSelf: true,\n });\n #parentGUI = inject(NgxLilGui, { skipSelf: true, optional: true });\n #ngZone = inject(NgZone);\n\n ngOnInit() {\n this.zoneless = this.#parentGUI?.zoneless ?? this.zoneless;\n this.run(() => {\n let container: HTMLElement | undefined =\n this.container instanceof HTMLElement\n ? this.container\n : this.#hostElement.nativeElement;\n\n if (typeof this.container === 'boolean') {\n container = undefined;\n }\n\n this.#gui = new GUI({\n container,\n touchStyles: this.touchStyles,\n autoPlace: this.autoPlace,\n injectStyles: this.injectStyles,\n width: this.width,\n title: this.title,\n parent: this.self ? undefined : this.#parentGUI?.gui || undefined,\n });\n\n this.#setupEvents();\n\n if (this.config) {\n this.#buildGUI(this.config);\n }\n\n this.guiReady.emit(this.gui);\n });\n }\n\n get gui(): GUI {\n return this.#gui;\n }\n\n addController(\n property: string,\n controllerConfig?: NgxLilGuiControllerConfig[string]\n ): Controller | undefined {\n return this.run(() => {\n if (this.object) {\n const [, , ...config] = extractControllerConfig(controllerConfig);\n return this.gui.add(this.object, property, ...config);\n }\n return undefined;\n });\n }\n\n addColor(\n property: string,\n colorConfig?: NgxLilGuiColorConfig[string]\n ): ColorController | undefined {\n return this.run(() => {\n if (this.object) {\n return this.gui.addColor(\n this.object,\n property,\n colorConfig?.rgbScale\n ) as ColorController;\n }\n\n return undefined;\n });\n }\n\n run<TReturn = void>(fn: () => TReturn): TReturn {\n if (this.zoneless) {\n return this.#ngZone.runOutsideAngular(() => {\n return fn();\n });\n }\n\n return fn();\n }\n\n ngOnDestroy() {\n this.run(() => {\n this.#gui.destroy();\n });\n }\n\n #setupEvents() {\n this.gui.onChange((arg0) => {\n this.guiChange.emit({ ...arg0, gui: this.gui });\n });\n\n this.gui.onFinishChange((arg0) => {\n this.guiFinishChange.emit({ ...arg0, gui: this.gui });\n });\n }\n\n #buildGUI(config: NgxLilGuiConfig, gui = this.gui) {\n const { guis, colors, object, controllers } = config as NgxLilGuiConfig;\n\n for (const [controllerKey, controllerValue] of Object.entries(\n controllers || {}\n )) {\n const [onChange, onFinishChange, ...config] =\n extractControllerConfig(controllerValue);\n const controller = gui.add(object, controllerKey, ...config);\n if (onChange) {\n controller.onChange((value: any) => {\n onChange({ value, controller });\n });\n }\n\n if (onFinishChange) {\n controller.onFinishChange((value: any) => {\n onFinishChange({ value, controller });\n });\n }\n }\n\n for (const [colorKey, colorValue] of Object.entries(colors || {})) {\n const { rgbScale, onChange, onFinishChange } = colorValue;\n const controller = gui.addColor(object, colorKey, rgbScale);\n if (onChange) {\n controller.onChange((value: any) => {\n onChange({ value, controller });\n });\n }\n\n if (onFinishChange) {\n controller.onFinishChange((value: any) => {\n onFinishChange({ value, controller });\n });\n }\n }\n\n for (const [folderKey, folderConfig] of Object.entries(guis || {})) {\n const folder = gui.addFolder(folderKey);\n this.#buildGUI(folderConfig, folder);\n }\n }\n}\n\nfunction extractControllerConfig(\n controllerConfig?: NgxLilGuiControllerConfig[string]\n): [\n ((arg: NgxLilGuiControllerChange) => void) | undefined,\n ((arg: NgxLilGuiControllerChange) => void) | undefined,\n (number | string[] | AnyRecord)?,\n number?,\n number?\n] {\n const config: [\n ((arg: NgxLilGuiControllerChange) => void) | undefined,\n ((arg: NgxLilGuiControllerChange) => void) | undefined,\n (number | string[] | AnyRecord)?,\n number?,\n number?\n ] = [undefined, undefined];\n\n if (controllerConfig) {\n config[0] = controllerConfig.onChange;\n config[1] = controllerConfig.onFinishChange;\n\n config[2] =\n (controllerConfig as NgxLilGuiControllerSelectConfig).collection ||\n (controllerConfig as NgxLilGuiControllerNumberConfig).min;\n\n config[3] = (controllerConfig as NgxLilGuiControllerNumberConfig).max;\n config[4] = (controllerConfig as NgxLilGuiControllerNumberConfig).step;\n }\n\n return config;\n}\n","import {\n Directive,\n EventEmitter,\n inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { ColorController } from 'lil-gui';\nimport { NgxLilGui } from './ngx-lil-gui.component';\nimport type {\n NgxLilGuiColorConfig,\n NgxLilGuiControllerChange,\n NgxLilGuiControllerFinishChange,\n} from './types';\n\n@Directive({\n selector: 'ngx-lil-gui-color',\n standalone: true,\n})\nexport class NgxLilGuiColor implements OnInit, OnDestroy {\n @Input({ required: true }) property!: string;\n @Input() colorConfig?: NgxLilGuiColorConfig[string];\n\n @Output() valueChange = new EventEmitter<NgxLilGuiControllerChange>();\n @Output() finishChange = new EventEmitter<NgxLilGuiControllerFinishChange>();\n @Output() colorReady = new EventEmitter<ColorController>();\n @Output() preAdd = new EventEmitter<void>();\n\n #colorController?: ColorController;\n\n get colorController() {\n return this.#colorController;\n }\n\n #parentGui = inject(NgxLilGui, { skipSelf: true, optional: true });\n\n ngOnInit() {\n if (!this.#parentGui) {\n throw new Error('ngx-lil-gui-color must be used within a ngx-lil-gui');\n }\n\n this.preAdd.emit();\n\n this.#colorController = this.#parentGui.addColor(\n this.property,\n this.colorConfig\n );\n this.#parentGui.run(() => {\n if (this.colorController) {\n this.colorController.updateDisplay();\n\n this.colorController.onChange((value: any) => {\n this.valueChange.emit({ value, controller: this.colorController! });\n });\n this.colorController.onFinishChange((value: any) => {\n this.finishChange.emit({ value, controller: this.colorController! });\n });\n this.colorReady.emit(this.colorController!);\n }\n });\n }\n\n ngOnDestroy() {\n if (this.colorController) {\n this.colorController.destroy();\n }\n }\n}\n","import {\n Directive,\n EventEmitter,\n inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { Controller } from 'lil-gui';\nimport { NgxLilGui } from './ngx-lil-gui.component';\nimport type {\n NgxLilGuiControllerChange,\n NgxLilGuiControllerConfig,\n NgxLilGuiControllerFinishChange,\n} from './types';\n\n@Directive({\n selector: 'ngx-lil-gui-controller',\n standalone: true,\n})\nexport class NgxLilGuiController implements OnInit, OnDestroy {\n @Input({ required: true }) property!: string;\n @Input() controllerConfig?: NgxLilGuiControllerConfig[string];\n\n @Output() valueChange = new EventEmitter<NgxLilGuiControllerChange>();\n @Output() finishChange = new EventEmitter<NgxLilGuiControllerFinishChange>();\n @Output() controllerReady = new EventEmitter<Controller>();\n @Output() preAdd = new EventEmitter<void>();\n\n #controller?: Controller;\n\n #parentGui = inject(NgxLilGui, { optional: true, skipSelf: true });\n\n ngOnInit() {\n if (!this.#parentGui) {\n throw new Error(\n 'ngx-lil-gui-controller must be used within a ngx-lil-gui'\n );\n }\n\n this.preAdd.emit();\n\n this.#controller = this.#parentGui.addController(\n this.property,\n this.controllerConfig\n );\n this.#parentGui.run(() => {\n if (this.controller) {\n this.controller.updateDisplay();\n\n this.controller.onChange((value: any) => {\n this.valueChange.emit({ value, controller: this.controller! });\n });\n this.controller.onFinishChange((value: any) => {\n this.finishChange.emit({ value, controller: this.controller! });\n });\n\n this.controllerReady.emit(this.controller);\n }\n });\n }\n\n ngOnDestroy() {\n if (this.controller) {\n this.controller.destroy();\n }\n }\n\n get controller(): Controller | undefined {\n return this.#controller;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { NgxLilGuiColor } from './ngx-lil-gui-color.component';\nimport { NgxLilGuiController } from './ngx-lil-gui-controller.component';\nimport { NgxLilGui } from './ngx-lil-gui.component';\n\n/**\n * @description Using standalone components is recommended\n */\n@NgModule({\n imports: [NgxLilGui, NgxLilGuiController, NgxLilGuiColor],\n exports: [NgxLilGui, NgxLilGuiController, NgxLilGuiColor],\n})\nexport class NgxLilGuiModule {}\n","/*\n * Public API Surface of ngx-lil-gui\n */\n\nexport * from './lib/ngx-lil-gui.module';\nexport * from './lib/ngx-lil-gui.component';\nexport * from './lib/ngx-lil-gui-color.component';\nexport * from './lib/ngx-lil-gui-controller.component';\nexport * from './lib/types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}