{"version":3,"file":"angular-three-tweakpane.mjs","sources":["../../../../libs/tweakpane/src/lib/anchor.ts","../../../../libs/tweakpane/src/lib/blade.ts","../../../../libs/tweakpane/src/lib/debounce.ts","../../../../libs/tweakpane/src/lib/title.ts","../../../../libs/tweakpane/src/lib/folder.ts","../../../../libs/tweakpane/src/lib/label.ts","../../../../libs/tweakpane/src/lib/binding.ts","../../../../libs/tweakpane/src/lib/button.ts","../../../../libs/tweakpane/src/lib/checkbox.ts","../../../../libs/tweakpane/src/lib/color.ts","../../../../libs/tweakpane/src/lib/list.ts","../../../../libs/tweakpane/src/lib/number.ts","../../../../libs/tweakpane/src/lib/pane.ts","../../../../libs/tweakpane/src/lib/point.ts","../../../../libs/tweakpane/src/lib/text.ts","../../../../libs/tweakpane/src/lib/tweaks.ts","../../../../libs/tweakpane/src/angular-three-tweakpane.ts"],"sourcesContent":["import { Component, ComponentRef, Directive, inject, signal, ViewContainerRef } from '@angular/core';\nimport { TweakpaneFolder } from './folder';\n\n/**\n * Directive that provides an anchor point for the `tweaks()` function to dynamically create Tweakpane controls.\n *\n * Add this directive to your `ngt-canvas` element to enable the `tweaks()` API:\n *\n * ```html\n * <ngt-canvas tweakpaneAnchor>\n *   <ng-template #sceneGraph>\n *     <!-- your scene -->\n *   </ng-template>\n * </ngt-canvas>\n * ```\n *\n * Then use `tweaks()` in any component within the canvas:\n *\n * ```typescript\n * const controls = tweaks('Physics', {\n *   gravity: { value: 9.8, min: 0, max: 20 },\n *   debug: this.debugMode, // two-way binding with existing signal\n * });\n * ```\n */\n@Directive({ selector: '[tweakpaneAnchor]' })\nexport class TweakpaneAnchor {\n\t/**\n\t * The ViewContainerRef where dynamic components will be created.\n\t * Injected from the host element.\n\t */\n\tvcr = inject(ViewContainerRef);\n\n\t/**\n\t * Reference to the pane's TweakpaneFolder, set by TweakpanePane when it initializes.\n\t * This is used as the parent folder for dynamically created folders.\n\t */\n\tpaneFolder = signal<TweakpaneFolder | null>(null);\n\n\t/**\n\t * Registry of folder ComponentRefs by folder name.\n\t * Used to reuse existing folders when multiple `tweaks()` calls use the same folder name.\n\t */\n\tfolders: Record<string, ComponentRef<TweakpaneAnchorHost>> = {};\n}\n\n/**\n * A minimal host component used for dynamically creating Tweakpane controls.\n * This component serves as a host for directives like TweakpaneFolder, TweakpaneNumber, etc.\n * when using the `tweaks()` function.\n *\n * @internal\n */\n@Component({\n\tselector: 'tweakpane-anchor-host',\n\ttemplate: '',\n})\nexport class TweakpaneAnchorHost {}\n","import { booleanAttribute, Directive, effect, inject, Injector, input, untracked } from '@angular/core';\nimport { BladeApi } from 'tweakpane';\n\n/**\n * Directive that provides hidden and disabled state management for Tweakpane blades.\n *\n * This is a base directive used by other Tweakpane components to control\n * visibility and interactivity of controls.\n *\n * @example\n * ```html\n * <tweakpane-number [hidden]=\"isHidden\" [disabled]=\"isDisabled\" [(value)]=\"speed\" />\n * ```\n */\n@Directive({ selector: 'tweakpane-blade' })\nexport class TweakpaneBlade {\n\t/**\n\t * Whether the blade is hidden.\n\t * @default false\n\t */\n\thidden = input(false, { transform: booleanAttribute });\n\n\t/**\n\t * Whether the blade is disabled (non-interactive).\n\t * @default false\n\t */\n\tdisabled = input(false, { transform: booleanAttribute });\n\n\tprivate injector = inject(Injector);\n\n\t/**\n\t * Gets the current hidden and disabled values without tracking signal dependencies.\n\t * Useful for initial configuration when creating Tweakpane components.\n\t * @returns An object containing the current hidden and disabled states\n\t */\n\tget snapshot() {\n\t\treturn {\n\t\t\thidden: untracked(this.hidden),\n\t\t\tdisabled: untracked(this.disabled),\n\t\t};\n\t}\n\n\t/**\n\t * Synchronizes the hidden and disabled properties with a Tweakpane BladeApi.\n\t * Creates a reactive effect that updates the API's state whenever\n\t * the input values change.\n\t *\n\t * @param api - A function that returns the Tweakpane BladeApi (or null if not ready)\n\t * @returns The created effect reference\n\t */\n\tsync(api: () => BladeApi | null) {\n\t\treturn effect(\n\t\t\t() => {\n\t\t\t\tconst _api = api();\n\t\t\t\tif (!_api) return;\n\n\t\t\t\t_api.hidden = this.hidden();\n\t\t\t\t_api.disabled = this.disabled();\n\t\t\t},\n\t\t\t{ injector: this.injector },\n\t\t);\n\t}\n}\n","import { Directive, effect, inject, Injector, input, numberAttribute } from '@angular/core';\nimport { debounceTime, fromEventPattern } from 'rxjs';\nimport { TpChangeEvent } from 'tweakpane';\n\n/**\n * Directive that provides debounced change event handling for Tweakpane controls.\n *\n * This is a base directive used by binding-based controls to prevent\n * excessive updates when values change rapidly (e.g., during slider dragging).\n *\n * @example\n * ```html\n * <!-- Debounce value updates by 300ms -->\n * <tweakpane-number [debounce]=\"300\" [(value)]=\"speed\" />\n * ```\n */\n@Directive()\nexport class TweakpaneDebounce {\n\t/**\n\t * The debounce delay in milliseconds before emitting value changes.\n\t * @default 150\n\t */\n\tdebounce = input(150, { transform: numberAttribute });\n\n\tprivate injector = inject(Injector);\n\n\t/**\n\t * Synchronizes debounced change events from a Tweakpane API with a callback.\n\t * Creates a reactive effect that subscribes to change events and debounces them.\n\t *\n\t * @typeParam T - The type of value being tracked\n\t * @param api - A function that returns the Tweakpane API object with on/off methods (or null if not ready)\n\t * @param cb - Callback function invoked with the change event after debounce delay\n\t * @returns The created effect reference\n\t */\n\tsync<T>(\n\t\tapi: () => {\n\t\t\ton: (evName: 'change', cb: (ev: TpChangeEvent<T>) => void) => void;\n\t\t\toff: (evName: 'change', cb: (ev: TpChangeEvent<T>) => void) => void;\n\t\t} | null,\n\t\tcb: (ev: TpChangeEvent<T>) => void,\n\t) {\n\t\treturn effect(\n\t\t\t(onCleanup) => {\n\t\t\t\tconst _api = api();\n\t\t\t\tif (!_api) return;\n\n\t\t\t\tconst sub = fromEventPattern<TpChangeEvent<T>>(\n\t\t\t\t\t(handler) => _api.on('change', handler),\n\t\t\t\t\t(handler) => _api.off('change', handler),\n\t\t\t\t)\n\t\t\t\t\t.pipe(debounceTime(this.debounce()))\n\t\t\t\t\t.subscribe((ev) => {\n\t\t\t\t\t\tcb(ev);\n\t\t\t\t\t});\n\n\t\t\t\tonCleanup(() => {\n\t\t\t\t\tsub.unsubscribe();\n\t\t\t\t});\n\t\t\t},\n\t\t\t{ injector: this.injector },\n\t\t);\n\t}\n}\n","import { Directive, effect, inject, Injector, input, untracked } from '@angular/core';\n\n/**\n * Directive that provides title functionality for Tweakpane components.\n *\n * This is a base directive used by other Tweakpane components (like `TweakpaneFolder`,\n * `TweakpanePane`, `TweakpaneButton`) to manage their titles reactively.\n *\n * @example\n * ```html\n * <tweakpane-folder title=\"Settings\">\n *   <!-- folder contents -->\n * </tweakpane-folder>\n * ```\n */\n@Directive()\nexport class TweakpaneTitle {\n\t/**\n\t * The title text to display.\n\t * @default 'TweakPane Title'\n\t */\n\ttitle = input('TweakPane Title');\n\n\tprivate injector = inject(Injector);\n\n\t/**\n\t * Gets the current title value without tracking signal dependencies.\n\t * Useful for initial configuration when creating Tweakpane components.\n\t * @returns The current title string value\n\t */\n\tget snapshot() {\n\t\treturn untracked(this.title);\n\t}\n\n\t/**\n\t * Synchronizes the title property with a Tweakpane API object.\n\t * Creates a reactive effect that updates the API's title whenever\n\t * the input title changes.\n\t *\n\t * @param api - A function that returns the Tweakpane API object (or null if not ready)\n\t * @returns The created effect reference\n\t */\n\tsync(api: () => { title: string | undefined } | null) {\n\t\treturn effect(\n\t\t\t() => {\n\t\t\t\tconst _api = api();\n\t\t\t\tif (!_api) return;\n\n\t\t\t\t_api.title = this.title();\n\t\t\t},\n\t\t\t{ injector: this.injector },\n\t\t);\n\t}\n}\n","import { computed, DestroyRef, Directive, effect, inject, linkedSignal, model, Signal, untracked } from '@angular/core';\nimport { TpFoldEvent } from '@tweakpane/core';\nimport { FolderApi } from 'tweakpane';\nimport { TweakpaneBlade } from './blade';\nimport { TweakpaneTitle } from './title';\n\n/**\n * Directive for creating collapsible folders within a Tweakpane.\n *\n * Folders are used to organize controls into logical groups. They can be\n * nested within other folders or directly within a pane.\n *\n * @example\n * ```html\n * <tweakpane-pane>\n *   <tweakpane-folder title=\"Physics\" [expanded]=\"true\">\n *     <tweakpane-number label=\"Gravity\" [(value)]=\"gravity\" />\n *     <tweakpane-number label=\"Friction\" [(value)]=\"friction\" />\n *   </tweakpane-folder>\n *\n *   <tweakpane-folder title=\"Appearance\">\n *     <tweakpane-color label=\"Color\" [(value)]=\"color\" />\n *   </tweakpane-folder>\n * </tweakpane-pane>\n * ```\n */\n@Directive({\n\tselector: 'tweakpane-folder',\n\thostDirectives: [\n\t\t{ directive: TweakpaneTitle, inputs: ['title'] },\n\t\t{ directive: TweakpaneBlade, inputs: ['hidden', 'disabled'] },\n\t],\n})\nexport class TweakpaneFolder {\n\t/**\n\t * Whether the folder is expanded (open) or collapsed.\n\t * Supports two-way binding with `[(expanded)]`.\n\t * @default false\n\t */\n\texpanded = model(false);\n\n\tprivate title = inject(TweakpaneTitle);\n\tprivate blade = inject(TweakpaneBlade);\n\tprivate parent = inject(TweakpaneFolder, { skipSelf: true, optional: true });\n\n\t/**\n\t * Signal containing the parent folder API.\n\t * Automatically links to the parent folder in the component hierarchy.\n\t */\n\tparentFolder = linkedSignal(() => this.parent?.folder());\n\n\t/**\n\t * Computed signal containing the Tweakpane FolderApi for this folder.\n\t * Returns null if the parent folder is not yet available.\n\t */\n\tfolder: Signal<FolderApi | null> = computed(() => {\n\t\tconst parent = this.parentFolder();\n\t\tif (!parent) return null;\n\n\t\tif (!this.isSelf) return parent;\n\n\t\treturn parent.addFolder({\n\t\t\ttitle: this.title.snapshot,\n\t\t\texpanded: untracked(this.expanded),\n\t\t\tdisabled: this.blade.snapshot.disabled,\n\t\t\thidden: this.blade.snapshot.hidden,\n\t\t});\n\t});\n\n\t/**\n\t * Internal flag indicating whether this directive creates its own folder\n\t * or reuses the parent folder. Set to `false` by `TweakpanePane`.\n\t * @internal\n\t */\n\tisSelf = true;\n\n\tconstructor() {\n\t\tthis.title.sync(this.folder);\n\t\tthis.blade.sync(this.folder);\n\n\t\teffect((onCleanup) => {\n\t\t\tconst folder = this.folder();\n\t\t\tif (!folder) return;\n\n\t\t\tconst cb = (ev: TpFoldEvent<FolderApi>) => {\n\t\t\t\tthis.expanded.set(ev.expanded);\n\t\t\t};\n\n\t\t\tfolder.on('fold', cb);\n\t\t\tonCleanup(() => {\n\t\t\t\tfolder.off('fold', cb);\n\t\t\t});\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tthis.folder()?.dispose();\n\t\t});\n\t}\n}\n","import { Directive, effect, inject, Injector, input, untracked } from '@angular/core';\n\n/**\n * Directive that provides label and tag functionality for Tweakpane controls.\n *\n * This is a base directive used by binding-based controls (like `TweakpaneNumber`,\n * `TweakpaneText`, `TweakpaneCheckbox`) to manage their labels and optional tags.\n *\n * @example\n * ```html\n * <tweakpane-number label=\"Speed\" tag=\"m/s\" [(value)]=\"speed\" />\n * ```\n */\n@Directive()\nexport class TweakpaneLabel {\n\t/**\n\t * The label text displayed next to the control.\n\t * @default ''\n\t */\n\tlabel = input('');\n\n\t/**\n\t * An optional tag displayed alongside the label (e.g., units like \"px\", \"m/s\").\n\t * @default ''\n\t */\n\ttag = input('');\n\n\tprivate injector = inject(Injector);\n\n\t/**\n\t * Gets the current label and tag values without tracking signal dependencies.\n\t * Useful for initial configuration when creating Tweakpane controls.\n\t * @returns An object containing the current label and tag values\n\t */\n\tget snapshot() {\n\t\treturn { label: untracked(this.label), tag: untracked(this.tag) };\n\t}\n\n\t/**\n\t * Synchronizes the label and tag properties with a Tweakpane API object.\n\t * Creates a reactive effect that updates the API's label and tag\n\t * whenever the input values change.\n\t *\n\t * @param api - A function that returns the Tweakpane API object (or null if not ready)\n\t * @returns The created effect reference\n\t */\n\tsync(api: () => { label?: string | null; tag?: string | null } | null) {\n\t\treturn effect(\n\t\t\t() => {\n\t\t\t\tconst _api = api();\n\t\t\t\tif (!_api) return;\n\n\t\t\t\t_api.label = this.label();\n\t\t\t\tif ('tag' in _api) {\n\t\t\t\t\t_api.tag = this.tag();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ injector: this.injector },\n\t\t);\n\t}\n}\n","import {\n\tcomputed,\n\tDestroyRef,\n\tDirective,\n\teffect,\n\tinject,\n\tInjectionToken,\n\tInjector,\n\tmodel,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport { BindingApi, BindingParams } from '@tweakpane/core';\nimport { TweakpaneBlade } from './blade';\nimport { TweakpaneDebounce } from './debounce';\nimport { TweakpaneFolder } from './folder';\nimport { TweakpaneLabel } from './label';\n\n/**\n * Injection token used to configure value transformation when TweakpaneBinding\n * is used as a host directive.\n *\n * When set to `true`, values pass through unchanged.\n * When set to an object with `in` and `out` functions, values are transformed:\n * - `in`: Transforms the input value before binding to Tweakpane\n * - `out`: Transforms the Tweakpane value before emitting to the model\n *\n * @internal\n */\nexport const NGT_TWEAK_BINDING_AS_HOST = new InjectionToken<\n\ttrue | { in: (value: unknown) => unknown; out: (value: unknown) => unknown } | null\n>('hostDirective NgtTweakBinding', { factory: () => null });\n\n/**\n * Provides configuration for TweakpaneBinding when used as a host directive.\n *\n * @typeParam TIn - The input value type (from the component)\n * @typeParam TOut - The output value type (for Tweakpane)\n * @param inOut - Optional object containing `in` and `out` transformation functions\n * @returns A provider configuration object\n *\n * @example\n * ```typescript\n * // Simple passthrough (no transformation)\n * providers: [provideTweakBindingAsHost()]\n *\n * // With value transformation (e.g., array to object)\n * providers: [provideTweakBindingAsHost({\n *   in: (value) => ({ x: value[0], y: value[1] }),\n *   out: (value) => [value.x, value.y]\n * })]\n * ```\n */\nexport function provideTweakBindingAsHost<TIn, TOut>(inOut?: { in: (value: TIn) => TOut; out: (value: TOut) => TIn }) {\n\treturn { provide: NGT_TWEAK_BINDING_AS_HOST, useValue: inOut ?? true };\n}\n\n/**\n * Base directive for creating Tweakpane bindings (two-way data binding controls).\n *\n * This directive provides the core functionality for binding Angular values to\n * Tweakpane controls. It handles:\n * - Creating the binding on the parent folder\n * - Syncing label, blade, and debounce settings\n * - Value transformation when used as a host directive\n * - Automatic cleanup on destroy\n *\n * Most commonly used as a host directive by specific control types like\n * `TweakpaneNumber`, `TweakpaneText`, `TweakpaneCheckbox`, etc.\n *\n * @typeParam TValue - The type of value being bound\n *\n * @example\n * ```html\n * <!-- Direct usage (rarely needed) -->\n * <tweakpane-binding [(value)]=\"myValue\" label=\"My Value\" />\n *\n * <!-- More commonly used via specific controls -->\n * <tweakpane-number [(value)]=\"speed\" label=\"Speed\" />\n * ```\n */\n@Directive({\n\tselector: 'tweakpane-binding',\n\thostDirectives: [\n\t\t{ directive: TweakpaneBlade, inputs: ['disabled', 'hidden'] },\n\t\t{ directive: TweakpaneDebounce, inputs: ['debounce'] },\n\t\t{ directive: TweakpaneLabel, inputs: ['label', 'tag'] },\n\t],\n})\nexport class TweakpaneBinding<TValue> {\n\t/**\n\t * The bound value. Supports two-way binding with `[(value)]`.\n\t */\n\tvalue = model.required<any>();\n\n\tprivate debounce = inject(TweakpaneDebounce);\n\tprivate label = inject(TweakpaneLabel);\n\tprivate blade = inject(TweakpaneBlade);\n\tprivate parent = inject(TweakpaneFolder);\n\tprivate injector = inject(Injector);\n\tprivate asHostDirective = inject(NGT_TWEAK_BINDING_AS_HOST);\n\n\tprivate bindingBaseParams = computed(() => ({\n\t\tlabel: this.label.snapshot.label,\n\t\ttag: this.label.snapshot.tag,\n\t\tdisabled: this.blade.disabled(),\n\t\thidden: this.blade.hidden(),\n\t}));\n\tprivate bindingParams = signal<Record<string, unknown>>({});\n\n\t/**\n\t * Gets the bindable object with optional value transformation.\n\t * @returns An object with a `value` property suitable for Tweakpane binding\n\t */\n\tprivate get bindableObject() {\n\t\tlet value = untracked(this.value);\n\n\t\tif (this.asHostDirective && typeof this.asHostDirective === 'object') {\n\t\t\tvalue = this.asHostDirective.in(value) as TValue;\n\t\t}\n\n\t\treturn { value };\n\t}\n\n\tprivate bindingApi = computed(() => {\n\t\tconst parent = this.parent.folder();\n\t\tif (!parent) return null;\n\n\t\tconst bindingParams = { ...this.bindingBaseParams(), ...this.bindingParams() };\n\t\treturn parent.addBinding(this.bindableObject, 'value', bindingParams) as BindingApi<unknown, TValue>;\n\t});\n\n\tconstructor() {\n\t\tthis.blade.sync(this.bindingApi);\n\t\tthis.label.sync(this.bindingApi);\n\t\tthis.debounce.sync(this.bindingApi, (ev) => {\n\t\t\tif (this.asHostDirective && typeof this.asHostDirective === 'object') {\n\t\t\t\tthis.value.set(this.asHostDirective.out(ev.value) as TValue);\n\t\t\t} else {\n\t\t\t\tthis.value.set(ev.value);\n\t\t\t}\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst bindingApi = this.bindingApi();\n\t\t\tif (!bindingApi) return;\n\t\t\tonCleanup(() => {\n\t\t\t\tbindingApi.dispose();\n\t\t\t});\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tthis.bindingApi()?.dispose();\n\t\t});\n\t}\n\n\t/**\n\t * Synchronizes additional binding parameters with the Tweakpane binding.\n\t * Called by specific control directives to add control-specific parameters\n\t * (e.g., min/max for numbers, options for lists).\n\t *\n\t * @param params - A function that returns the binding parameters\n\t * @returns The created effect reference\n\t */\n\tsyncBindingParams(params: () => BindingParams) {\n\t\treturn effect(\n\t\t\t() => {\n\t\t\t\tthis.bindingParams.set(params());\n\t\t\t},\n\t\t\t{ injector: this.injector },\n\t\t);\n\t}\n\n\t// createBindingEffect(params: () => BindingParams) {\n\t// \treturn effect(\n\t// \t\t(onCleanup) => {\n\t// \t\t\tconst parent = this.parent.folder();\n\t// \t\t\tif (!parent) return;\n\t//\n\t// \t\t\tconst bindingParams = { ...this.bindingBaseParams(), ...params() };\n\t// \t\t\tconst binding = parent.addBinding(this.bindableObject, 'value', bindingParams);\n\t//\n\t// \t\t\tthis.bindingApi.set(binding);\n\t//\n\t// \t\t\tonCleanup(() => {\n\t// \t\t\t\tbinding.dispose();\n\t// \t\t\t\tthis.bindingApi.set(null);\n\t// \t\t\t});\n\t// \t\t},\n\t// \t\t{ injector: this.injector },\n\t// \t);\n\t// }\n}\n","import { computed, DestroyRef, Directive, effect, inject, output } from '@angular/core';\nimport { TpMouseEvent } from '@tweakpane/core';\nimport { ButtonApi } from 'tweakpane';\nimport { TweakpaneBlade } from './blade';\nimport { TweakpaneFolder } from './folder';\nimport { TweakpaneLabel } from './label';\nimport { TweakpaneTitle } from './title';\n\n/**\n * Directive for creating a clickable button in Tweakpane.\n *\n * Buttons are used to trigger actions (like reset, randomize, etc.)\n * and emit click events when pressed.\n *\n * @example\n * ```html\n * <tweakpane-pane>\n *   <tweakpane-button title=\"Reset\" (click)=\"onReset()\" />\n *   <tweakpane-button title=\"Randomize\" label=\"Action\" (click)=\"onRandomize()\" />\n *   <tweakpane-button title=\"Save\" [disabled]=\"!canSave\" (click)=\"onSave()\" />\n * </tweakpane-pane>\n * ```\n */\n@Directive({\n\tselector: 'tweakpane-button',\n\thostDirectives: [\n\t\t{ directive: TweakpaneTitle, inputs: ['title'] },\n\t\t{ directive: TweakpaneLabel, inputs: ['label'] },\n\t\t{ directive: TweakpaneBlade, inputs: ['hidden', 'disabled'] },\n\t],\n})\nexport class TweakpaneButton {\n\t/**\n\t * Event emitted when the button is clicked.\n\t * Provides the Tweakpane mouse event with the ButtonApi.\n\t */\n\tclick = output<TpMouseEvent<ButtonApi>>();\n\n\tprivate title = inject(TweakpaneTitle);\n\tprivate label = inject(TweakpaneLabel);\n\tprivate blade = inject(TweakpaneBlade);\n\tprivate parent = inject(TweakpaneFolder);\n\n\tprivate buttonApi = computed(() => {\n\t\tconst parent = this.parent.folder();\n\t\tif (!parent) return null;\n\n\t\treturn parent.addButton({\n\t\t\ttitle: this.title.snapshot,\n\t\t\thidden: this.blade.snapshot.hidden,\n\t\t\tdisabled: this.blade.snapshot.disabled,\n\t\t\tlabel: this.label.snapshot.label,\n\t\t});\n\t});\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tconst buttonApi = this.buttonApi();\n\t\t\tif (!buttonApi) return;\n\n\t\t\tconst boundEmit = this.click.emit.bind(this.click);\n\t\t\tbuttonApi.on('click', boundEmit);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tbuttonApi.off('click', boundEmit);\n\t\t\t});\n\t\t});\n\n\t\tthis.label.sync(this.buttonApi);\n\t\tthis.title.sync(this.buttonApi);\n\t\tthis.blade.sync(this.buttonApi);\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tthis.buttonApi()?.dispose();\n\t\t});\n\t}\n}\n","import { Directive, inject, input } from '@angular/core';\nimport { BooleanInputParams } from 'tweakpane';\nimport { TweakpaneBinding, provideTweakBindingAsHost } from './binding';\n\n/**\n * Directive for creating a boolean checkbox control in Tweakpane.\n *\n * Provides two-way binding for boolean values with a checkbox UI.\n *\n * @example\n * ```html\n * <tweakpane-pane>\n *   <tweakpane-checkbox label=\"Debug Mode\" [(value)]=\"debugMode\" />\n *   <tweakpane-checkbox label=\"Wireframe\" [(value)]=\"showWireframe\" [disabled]=\"!debugMode()\" />\n * </tweakpane-pane>\n * ```\n */\n@Directive({\n\tselector: 'tweakpane-checkbox',\n\thostDirectives: [{ directive: TweakpaneBinding, inputs: ['value'], outputs: ['valueChange'] }],\n\tproviders: [provideTweakBindingAsHost()],\n})\nexport class TweakpaneCheckbox {\n\t/**\n\t * Additional Tweakpane boolean input parameters.\n\t * @default {}\n\t */\n\tparams = input<BooleanInputParams>({});\n\n\tprivate binding = inject(TweakpaneBinding);\n\n\tconstructor() {\n\t\tthis.binding.syncBindingParams(this.params);\n\t}\n}\n","import { Directive, inject, input } from '@angular/core';\nimport { ColorInputParams } from 'tweakpane';\nimport { TweakpaneBinding, provideTweakBindingAsHost } from './binding';\n\n/**\n * Directive for creating a color picker control in Tweakpane.\n *\n * Provides two-way binding for color values (as hex strings) with a\n * color picker UI that supports RGB, HSL, and alpha.\n *\n * @example\n * ```html\n * <tweakpane-pane>\n *   <tweakpane-color label=\"Background\" [(value)]=\"backgroundColor\" />\n *   <tweakpane-color label=\"Accent\" [(value)]=\"accentColor\" [params]=\"{ alpha: true }\" />\n * </tweakpane-pane>\n * ```\n */\n@Directive({\n\tselector: 'tweakpane-color',\n\thostDirectives: [{ directive: TweakpaneBinding, inputs: ['value'], outputs: ['valueChange'] }],\n\tproviders: [provideTweakBindingAsHost()],\n})\nexport class TweakpaneColor {\n\t/**\n\t * Additional Tweakpane color input parameters.\n\t * Can include options like `alpha`, `color.type`, etc.\n\t * @default {}\n\t */\n\tparams = input<ColorInputParams>({});\n\n\tprivate binding = inject(TweakpaneBinding);\n\n\tconstructor() {\n\t\tthis.binding.syncBindingParams(this.params);\n\t}\n}\n","import { computed, DestroyRef, Directive, effect, inject, input, model, untracked } from '@angular/core';\nimport { ListItem } from '@tweakpane/core';\nimport { ListBladeApi } from 'tweakpane';\nimport { TweakpaneBlade } from './blade';\nimport { TweakpaneDebounce } from './debounce';\nimport { TweakpaneFolder } from './folder';\nimport { TweakpaneLabel } from './label';\n\n/**\n * Directive for creating a dropdown list/select control in Tweakpane.\n *\n * Provides two-way binding for selecting from a list of options.\n * Options can be provided as an array or as a key-value object.\n *\n * @typeParam TOptionValue - The type of values in the list\n *\n * @example\n * ```html\n * <tweakpane-pane>\n *   <!-- Options as array -->\n *   <tweakpane-list\n *     label=\"Mode\"\n *     [(value)]=\"mode\"\n *     [options]=\"['normal', 'debug', 'performance']\"\n *   />\n *\n *   <!-- Options as object (label: value mapping) -->\n *   <tweakpane-list\n *     label=\"Quality\"\n *     [(value)]=\"quality\"\n *     [options]=\"{ 'Low': 1, 'Medium': 2, 'High': 3, 'Ultra': 4 }\"\n *   />\n * </tweakpane-pane>\n * ```\n */\n@Directive({\n\tselector: 'tweakpane-list',\n\thostDirectives: [\n\t\t{ directive: TweakpaneBlade, inputs: ['hidden', 'disabled'] },\n\t\t{ directive: TweakpaneDebounce, inputs: ['debounce'] },\n\t\t{ directive: TweakpaneLabel, inputs: ['label'] },\n\t],\n})\nexport class TweakpaneList<TOptionValue> {\n\t/**\n\t * The currently selected value. Supports two-way binding with `[(value)]`.\n\t */\n\tvalue = model.required<TOptionValue>();\n\n\t/**\n\t * The list options. Can be:\n\t * - An array of values (labels will be stringified values)\n\t * - An object mapping display labels to values\n\t */\n\toptions = input.required<Record<string, TOptionValue> | TOptionValue[]>();\n\n\tprivate blade = inject(TweakpaneBlade);\n\tprivate debounce = inject(TweakpaneDebounce);\n\tprivate label = inject(TweakpaneLabel);\n\tprivate parent = inject(TweakpaneFolder);\n\n\tprivate listOptions = computed(() => {\n\t\tconst options = this.options();\n\t\tif (Array.isArray(options)) {\n\t\t\treturn options.map((option) => ({ value: option, text: `${option}` }) as ListItem<TOptionValue>);\n\t\t}\n\n\t\treturn Object.keys(options).map((key) => {\n\t\t\tconst value = options[key];\n\t\t\treturn { text: key, value } as ListItem<TOptionValue>;\n\t\t});\n\t});\n\tprivate listApi = computed(() => {\n\t\tconst parent = this.parent.folder();\n\t\tif (!parent) return null;\n\n\t\treturn parent.addBlade({\n\t\t\tview: 'list',\n\t\t\toptions: this.listOptions(),\n\t\t\tvalue: untracked(this.value),\n\t\t\tlabel: this.label.snapshot.label,\n\t\t}) as ListBladeApi<TOptionValue>;\n\t});\n\n\tconstructor() {\n\t\tthis.label.sync(this.listApi);\n\t\tthis.blade.sync(this.listApi);\n\t\tthis.debounce.sync(this.listApi, (ev) => {\n\t\t\tthis.value.set(ev.value);\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst listApi = this.listApi();\n\t\t\tonCleanup(() => {\n\t\t\t\tlistApi?.dispose();\n\t\t\t});\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tthis.listApi()?.dispose();\n\t\t});\n\t}\n}\n","import { Directive, inject, input } from '@angular/core';\nimport { NumberInputParams } from 'tweakpane';\nimport { TweakpaneBinding, provideTweakBindingAsHost } from './binding';\n\n/**\n * Directive for creating a numeric input control in Tweakpane.\n *\n * Provides two-way binding for number values with optional min/max/step\n * constraints. Displays as a text input with increment buttons, or as\n * a slider if min and max are specified.\n *\n * @example\n * ```html\n * <tweakpane-pane>\n *   <!-- Simple number input -->\n *   <tweakpane-number label=\"Count\" [(value)]=\"count\" />\n *\n *   <!-- With slider (min/max defined) -->\n *   <tweakpane-number\n *     label=\"Speed\"\n *     [(value)]=\"speed\"\n *     [params]=\"{ min: 0, max: 100, step: 0.1 }\"\n *   />\n *\n *   <!-- With custom format -->\n *   <tweakpane-number\n *     label=\"Angle\"\n *     [(value)]=\"angle\"\n *     [params]=\"{ min: 0, max: 360, format: (v) => v.toFixed(0) + '°' }\"\n *   />\n * </tweakpane-pane>\n * ```\n */\n@Directive({\n\tselector: 'tweakpane-number',\n\thostDirectives: [{ directive: TweakpaneBinding, inputs: ['value'], outputs: ['valueChange'] }],\n\tproviders: [provideTweakBindingAsHost()],\n})\nexport class TweakpaneNumber {\n\t/**\n\t * Additional Tweakpane number input parameters.\n\t * Can include `min`, `max`, `step`, `format`, etc.\n\t * @default {}\n\t */\n\tparams = input<NumberInputParams>({});\n\n\tprivate binding = inject(TweakpaneBinding);\n\n\tconstructor() {\n\t\tthis.binding.syncBindingParams(this.params);\n\t}\n}\n","import {\n\tafterNextRender,\n\tDestroyRef,\n\tDirective,\n\tDOCUMENT,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tisSignal,\n\tsignal,\n} from '@angular/core';\nimport { ClassName } from '@tweakpane/core';\nimport { Pane } from 'tweakpane';\nimport { PaneConfig } from 'tweakpane/dist/types/pane/pane-config';\nimport { TweakpaneAnchor } from './anchor';\nimport { TweakpaneFolder } from './folder';\nimport { TweakpaneTitle } from './title';\n\n/**\n * Main Tweakpane container directive that creates the root pane element.\n *\n * This directive creates a floating Tweakpane panel that can be positioned\n * anywhere on the screen. It serves as the root container for all\n * Tweakpane controls (folders, bindings, buttons, etc.).\n *\n * @example\n * ```html\n * <!-- Basic usage with default positioning (top-right) -->\n * <tweakpane-pane title=\"Settings\">\n *   <tweakpane-number label=\"Speed\" [(value)]=\"speed\" />\n *   <tweakpane-checkbox label=\"Debug\" [(value)]=\"debug\" />\n * </tweakpane-pane>\n *\n * <!-- Custom positioning -->\n * <tweakpane-pane title=\"Controls\" left=\"8px\" bottom=\"8px\" [right]=\"undefined\">\n *   <tweakpane-folder title=\"Physics\">\n *     <tweakpane-number label=\"Gravity\" [(value)]=\"gravity\" />\n *   </tweakpane-folder>\n * </tweakpane-pane>\n *\n * <!-- Embedded in a container element -->\n * <div #container></div>\n * <tweakpane-pane [container]=\"container\">\n *   <!-- controls -->\n * </tweakpane-pane>\n * ```\n */\n@Directive({\n\tselector: 'tweakpane-pane',\n\thostDirectives: [{ directive: TweakpaneFolder, inputs: ['expanded'], outputs: ['expandedChange'] }],\n})\nexport class TweakpanePane {\n\t/**\n\t * CSS top position of the pane.\n\t * @default '8px'\n\t */\n\ttop = input<string | number>('8px');\n\n\t/**\n\t * CSS right position of the pane.\n\t * @default '8px'\n\t */\n\tright = input<string | number>('8px');\n\n\t/**\n\t * CSS left position of the pane.\n\t * @default undefined\n\t */\n\tleft = input<string | number>();\n\n\t/**\n\t * CSS bottom position of the pane.\n\t * @default undefined\n\t */\n\tbottom = input<string | number>();\n\n\t/**\n\t * CSS width of the pane.\n\t * @default '256px'\n\t */\n\twidth = input<string | number>('256px');\n\n\t/**\n\t * Optional container element to embed the pane into.\n\t * If not provided, the pane floats freely in the document.\n\t * Can be an HTMLElement or an Angular ElementRef.\n\t */\n\tcontainer = input<HTMLElement | ElementRef<HTMLElement | undefined> | undefined>();\n\n\tprivate document = inject(DOCUMENT);\n\tprivate title = inject(TweakpaneTitle, { host: true });\n\tprivate folder = inject(TweakpaneFolder, { host: true });\n\tprivate tweakpaneAnchor = inject(TweakpaneAnchor, { optional: true });\n\tprivate pane = signal<Pane | null>(null);\n\tprivate paneContainer?: HTMLDivElement;\n\n\tconstructor() {\n\t\tthis.folder.isSelf = false;\n\n\t\tafterNextRender(() => {\n\t\t\tconst container = this.container();\n\t\t\tconst paneOptions: PaneConfig = {\n\t\t\t\ttitle: this.title.title(),\n\t\t\t\texpanded: this.folder.expanded(),\n\t\t\t};\n\n\t\t\tif (container) {\n\t\t\t\tconst containerElement = 'nativeElement' in container ? container.nativeElement : container;\n\t\t\t\tif (containerElement) {\n\t\t\t\t\tthis.paneContainer = this.document.createElement('div');\n\t\t\t\t\tthis.paneContainer.classList.add(ClassName('dfw')());\n\t\t\t\t\tcontainerElement.appendChild(this.paneContainer);\n\t\t\t\t\tpaneOptions.container = this.paneContainer;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst pane = new Pane(paneOptions);\n\n\t\t\tthis.pane.set(pane);\n\t\t\tthis.folder.parentFolder.set(pane);\n\n\t\t\t// Set the pane's folder for tweaks() to use\n\t\t\tif (this.tweakpaneAnchor) {\n\t\t\t\tthis.tweakpaneAnchor.paneFolder.set(this.folder);\n\t\t\t}\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tconst pane = this.pane();\n\t\t\tif (!pane) return;\n\n\t\t\tif (this.paneContainer) {\n\t\t\t\tthis.paneContainer.remove();\n\t\t\t}\n\n\t\t\tpane.element.remove();\n\t\t});\n\n\t\teffect(() => {\n\t\t\tthis.updateStyleEffect('top');\n\t\t});\n\n\t\teffect(() => {\n\t\t\tthis.updateStyleEffect('right');\n\t\t});\n\n\t\teffect(() => {\n\t\t\tthis.updateStyleEffect('left');\n\t\t});\n\n\t\teffect(() => {\n\t\t\tthis.updateStyleEffect('bottom');\n\t\t});\n\n\t\teffect(() => {\n\t\t\tthis.updateStyleEffect('width');\n\t\t});\n\t}\n\n\t/**\n\t * Updates a CSS style property on the pane's parent element.\n\t * @param propertyName - The name of the style property to update\n\t */\n\tprivate updateStyleEffect(propertyName: Exclude<keyof TweakpanePane, 'pane' | 'title' | 'expanded' | 'container'>) {\n\t\tconst pane = this.pane();\n\t\tif (!pane) return;\n\n\t\tconst parentElement = pane.element.parentElement;\n\t\tif (!parentElement) return;\n\n\t\tconst property = this[propertyName];\n\t\tif (!isSignal(property)) return;\n\n\t\tconst value = property();\n\t\tif (!value) return;\n\n\t\tparentElement.style.setProperty(propertyName, typeof value === 'number' ? value + 'px' : value);\n\t\tpane.refresh();\n\t}\n}\n","import { Directive, inject, input } from '@angular/core';\nimport { Point2dInputParams, Point3dInputParams, Point4dInputParams } from 'tweakpane';\nimport { TweakpaneBinding, provideTweakBindingAsHost } from './binding';\n\n/**\n * Acceptable value formats for TweakpanePoint.\n * Can be a tuple array `[x, y, z?, w?]` or an object `{ x, y, z?, w? }`.\n */\ntype AcceptableTweakPointValue =\n\t| [x: number, y: number, z?: number, w?: number]\n\t| { x: number; y: number; z?: number; w?: number };\n\n/**\n * Directive for creating a 2D/3D/4D point input control in Tweakpane.\n *\n * Provides two-way binding for point values (as tuple arrays or objects).\n * The control displays input fields for each dimension and optionally\n * shows a 2D picker for x/y values.\n *\n * Values are accepted as arrays `[x, y, z?, w?]` and emitted in the same format.\n *\n * @example\n * ```html\n * <tweakpane-pane>\n *   <!-- 2D point -->\n *   <tweakpane-point label=\"Position\" [(value)]=\"position2D\" />\n *\n *   <!-- 3D point with custom ranges -->\n *   <tweakpane-point\n *     label=\"Position\"\n *     [(value)]=\"position3D\"\n *     [params]=\"{\n *       x: { min: -10, max: 10 },\n *       y: { min: 0, max: 100 },\n *       z: { min: -10, max: 10 }\n *     }\"\n *   />\n *\n *   <!-- 4D point (e.g., quaternion) -->\n *   <tweakpane-point label=\"Rotation\" [(value)]=\"quaternion\" />\n * </tweakpane-pane>\n * ```\n */\n@Directive({\n\tselector: 'tweakpane-point',\n\thostDirectives: [{ directive: TweakpaneBinding, inputs: ['value'], outputs: ['valueChange'] }],\n\tproviders: [\n\t\tprovideTweakBindingAsHost<AcceptableTweakPointValue, { x: number; y: number; z?: number; w?: number }>({\n\t\t\tin: (value) => {\n\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\tconst [x, y, z, w] = value;\n\t\t\t\t\treturn { x, y, z, w };\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t},\n\t\t\tout: (value) => {\n\t\t\t\tconst { x, y, z, w } = value;\n\t\t\t\treturn [x, y, z, w];\n\t\t\t},\n\t\t}),\n\t],\n})\nexport class TweakpanePoint {\n\t/**\n\t * Additional Tweakpane point input parameters.\n\t * Can include per-axis configuration like `{ x: { min, max }, y: { min, max } }`.\n\t * @default {}\n\t */\n\tparams = input<Point2dInputParams | Point3dInputParams | Point4dInputParams>({});\n\n\tprivate binding = inject(TweakpaneBinding);\n\n\tconstructor() {\n\t\tthis.binding.syncBindingParams(this.params);\n\t}\n}\n","import { Directive, inject, input } from '@angular/core';\nimport { StringInputParams } from 'tweakpane';\nimport { TweakpaneBinding, provideTweakBindingAsHost } from './binding';\n\n/**\n * Directive for creating a text input control in Tweakpane.\n *\n * Provides two-way binding for string values with a text input UI.\n *\n * @example\n * ```html\n * <tweakpane-pane>\n *   <tweakpane-text label=\"Name\" [(value)]=\"objectName\" />\n *   <tweakpane-text label=\"Description\" [(value)]=\"description\" />\n * </tweakpane-pane>\n * ```\n */\n@Directive({\n\tselector: 'tweakpane-text',\n\thostDirectives: [{ directive: TweakpaneBinding, inputs: ['value'], outputs: ['valueChange'] }],\n\tproviders: [provideTweakBindingAsHost()],\n})\nexport class TweakpaneText {\n\t/**\n\t * Additional Tweakpane string input parameters.\n\t * @default {}\n\t */\n\tparams = input<StringInputParams>({});\n\n\tprivate binding = inject(TweakpaneBinding);\n\n\tconstructor() {\n\t\tthis.binding.syncBindingParams(this.params);\n\t}\n}\n","import {\n\ttype ComponentRef,\n\tDestroyRef,\n\teffect,\n\tinject,\n\tInjector,\n\tinputBinding,\n\tisSignal,\n\tsignal,\n\ttype Signal,\n\ttwoWayBinding,\n\tuntracked,\n\ttype ViewContainerRef,\n\ttype WritableSignal,\n} from '@angular/core';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { NumberInputParams, Point2dInputParams, Point3dInputParams, Point4dInputParams } from 'tweakpane';\nimport { TweakpaneAnchor, TweakpaneAnchorHost } from './anchor';\nimport { TweakpaneButton } from './button';\nimport { TweakpaneCheckbox } from './checkbox';\nimport { TweakpaneColor } from './color';\nimport { TweakpaneFolder } from './folder';\nimport { TweakpaneList } from './list';\nimport { TweakpaneNumber } from './number';\nimport { TweakpanePoint } from './point';\nimport { TweakpaneText } from './text';\n\n// ============================================================================\n// Config Types\n// ============================================================================\n\n/**\n * Configuration for a number input control.\n *\n * @example\n * ```typescript\n * const config = {\n *   gravity: { value: 9.8, min: 0, max: 20, step: 0.1 }\n * };\n * ```\n */\nexport interface TweakNumberConfig {\n\t/** The initial value or a writable signal for two-way binding */\n\tvalue: number | WritableSignal<number>;\n\t/** Minimum allowed value (enables slider display) */\n\tmin?: number;\n\t/** Maximum allowed value (enables slider display) */\n\tmax?: number;\n\t/** Step increment for the value */\n\tstep?: number;\n}\n\n/**\n * Configuration for a text input control.\n *\n * @example\n * ```typescript\n * const config = {\n *   name: { value: 'Object 1' }\n * };\n * ```\n */\nexport interface TweakTextConfig {\n\t/** The initial value or a writable signal for two-way binding */\n\tvalue: string | WritableSignal<string>;\n}\n\n/**\n * Configuration for a color picker control.\n *\n * @example\n * ```typescript\n * const config = {\n *   background: { value: '#ff0000', color: true }\n * };\n * ```\n */\nexport interface TweakColorConfig {\n\t/** The initial color value (as hex string) or a writable signal */\n\tvalue: string | WritableSignal<string>;\n\t/** Marker to identify this as a color input (must be `true`) */\n\tcolor: true;\n}\n\n/**\n * Configuration for a checkbox/boolean control.\n *\n * @example\n * ```typescript\n * const config = {\n *   enabled: { value: true }\n * };\n * ```\n */\nexport interface TweakCheckboxConfig {\n\t/** The initial value or a writable signal for two-way binding */\n\tvalue: boolean | WritableSignal<boolean>;\n}\n\n/**\n * Configuration for a dropdown list/select control.\n *\n * @typeParam T - The type of option values\n *\n * @example\n * ```typescript\n * // With array of options\n * const config = {\n *   mode: { value: 'normal', options: ['normal', 'debug', 'performance'] }\n * };\n *\n * // With labeled options\n * const config = {\n *   quality: { value: 2, options: { 'Low': 1, 'Medium': 2, 'High': 3 } }\n * };\n * ```\n */\nexport interface TweakListConfig<T> {\n\t/** The initial value or a writable signal for two-way binding */\n\tvalue: T | WritableSignal<T>;\n\t/** Array of options or object mapping labels to values */\n\toptions: T[] | Record<string, T>;\n}\n\n/**\n * Configuration for a 2D/3D/4D point input control.\n *\n * @typeParam TVector - The tuple type for the point dimensions\n *\n * @example\n * ```typescript\n * // 2D point\n * const config = {\n *   position: { value: [0, 0] as [number, number] }\n * };\n *\n * // 3D point with axis constraints\n * const config = {\n *   position: {\n *     value: [0, 0, 0] as [number, number, number],\n *     x: { min: -10, max: 10 },\n *     y: { min: 0, max: 100 },\n *     z: { min: -10, max: 10 }\n *   }\n * };\n * ```\n */\nexport interface TweakPointConfig<\n\tTVector extends [number, number] | [number, number, number] | [number, number, number, number] =\n\t\t| [number, number]\n\t\t| [number, number, number]\n\t\t| [number, number, number, number],\n> {\n\t/** The initial point value or a writable signal for two-way binding */\n\tvalue: TVector | WritableSignal<TVector>;\n\t/** Configuration for the X axis (min, max, step, etc.) */\n\tx?: Point2dInputParams['x'];\n\t/** Configuration for the Y axis */\n\ty?: Point2dInputParams['y'];\n\t/** Configuration for the Z axis (3D/4D points only) */\n\tz?: Point3dInputParams['z'];\n\t/** Configuration for the W axis (4D points only) */\n\tw?: Point4dInputParams['w'];\n}\n\n/**\n * Configuration for a button/action control.\n *\n * @example\n * ```typescript\n * const config = {\n *   reset: { action: () => this.resetSettings(), label: 'Actions' }\n * };\n * ```\n */\nexport interface TweakButtonConfig {\n\t/** The callback function to execute when the button is clicked */\n\taction: () => void;\n\t/** Optional label displayed next to the button */\n\tlabel?: string;\n}\n\n/**\n * Configuration for a nested folder within the tweaks.\n * Created using the `tweaks.folder()` helper function.\n *\n * @typeParam T - The config type for the folder's contents\n *\n * @example\n * ```typescript\n * const config = {\n *   advanced: tweaks.folder('Advanced Settings', {\n *     iterations: { value: 4, min: 1, max: 10 },\n *     tolerance: { value: 0.001, min: 0, max: 1 }\n *   })\n * };\n * ```\n */\nexport interface TweakFolderConfig<T extends TweakConfig> {\n\t/** Internal marker to identify folder configs */\n\t__folder: true;\n\t/** The folder title displayed in the UI */\n\tname: string;\n\t/** The configuration object for controls within the folder */\n\tconfig: T;\n\t/** Whether the folder is initially expanded */\n\texpanded?: boolean;\n}\n\n/**\n * Union of all possible configuration value types for `tweaks()`.\n *\n * Includes:\n * - Primitive values (number, string, boolean)\n * - Writable signals for two-way binding\n * - Typed config objects for each control type\n */\nexport type TweakConfigValue =\n\t| number\n\t| string\n\t| boolean\n\t| WritableSignal<number>\n\t| WritableSignal<string>\n\t| WritableSignal<boolean>\n\t| TweakNumberConfig\n\t| TweakTextConfig\n\t| TweakColorConfig\n\t| TweakCheckboxConfig\n\t| TweakListConfig<unknown>\n\t| TweakPointConfig\n\t| TweakButtonConfig\n\t| TweakFolderConfig<TweakConfig>;\n\n/**\n * A configuration object for `tweaks()`.\n * Maps control names to their configuration values.\n */\nexport type TweakConfig = Record<string, TweakConfigValue>;\n\n// ============================================================================\n// Result Types (what tweaks() returns)\n// ============================================================================\n\n/**\n * Infer the signal type from a config value.\n * Always returns Signal<T> (readonly) - never WritableSignal.\n * Users can use their original WritableSignal if they need write access.\n */\ntype InferSignalType<T> =\n\t// Direct WritableSignal - return readonly Signal\n\tT extends WritableSignal<infer U>\n\t\t? Signal<U>\n\t\t: // Primitive number\n\t\t\tT extends number\n\t\t\t? Signal<number>\n\t\t\t: // Primitive string\n\t\t\t\tT extends string\n\t\t\t\t? Signal<string>\n\t\t\t\t: // Primitive boolean\n\t\t\t\t\tT extends boolean\n\t\t\t\t\t? Signal<boolean>\n\t\t\t\t\t: // Number config\n\t\t\t\t\t\tT extends TweakNumberConfig\n\t\t\t\t\t\t? Signal<number>\n\t\t\t\t\t\t: // Text config\n\t\t\t\t\t\t\tT extends TweakTextConfig\n\t\t\t\t\t\t\t? Signal<string>\n\t\t\t\t\t\t\t: // Color config\n\t\t\t\t\t\t\t\tT extends TweakColorConfig\n\t\t\t\t\t\t\t\t? Signal<string>\n\t\t\t\t\t\t\t\t: // Checkbox config\n\t\t\t\t\t\t\t\t\tT extends TweakCheckboxConfig\n\t\t\t\t\t\t\t\t\t? Signal<boolean>\n\t\t\t\t\t\t\t\t\t: // List config\n\t\t\t\t\t\t\t\t\t\tT extends TweakListConfig<infer U>\n\t\t\t\t\t\t\t\t\t\t? Signal<U>\n\t\t\t\t\t\t\t\t\t\t: // Point config\n\t\t\t\t\t\t\t\t\t\t\tT extends TweakPointConfig<infer VectorType>\n\t\t\t\t\t\t\t\t\t\t\t? Signal<VectorType>\n\t\t\t\t\t\t\t\t\t\t\t: // Button - no return value\n\t\t\t\t\t\t\t\t\t\t\t\tT extends TweakButtonConfig\n\t\t\t\t\t\t\t\t\t\t\t\t? never\n\t\t\t\t\t\t\t\t\t\t\t\t: // Folder - recurse\n\t\t\t\t\t\t\t\t\t\t\t\t\tT extends TweakFolderConfig<infer C>\n\t\t\t\t\t\t\t\t\t\t\t\t\t? TweakResult<C>\n\t\t\t\t\t\t\t\t\t\t\t\t\t: never;\n\n/**\n * The result type returned by `tweaks()` for a given configuration.\n *\n * Maps each config key to a readonly Signal of the appropriate type.\n * Button configs are excluded (they don't return values).\n *\n * @typeParam T - The configuration object type\n */\nexport type TweakResult<T extends TweakConfig> = {\n\t[K in keyof T as T[K] extends TweakButtonConfig ? never : K]: InferSignalType<T[K]>;\n};\n\n// ============================================================================\n// Type Guards\n// ============================================================================\n\n/**\n * Checks if a config value is a TweakNumberConfig.\n * @internal\n */\nfunction isNumberConfig(config: TweakConfigValue): config is TweakNumberConfig {\n\tif (typeof config !== 'object' || config === null || !('value' in config)) return false;\n\tif ('color' in config || 'options' in config || 'action' in config || '__folder' in config) return false;\n\tif ('x' in config || 'y' in config) return false;\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tconst value = isSignal(config.value) ? untracked(config.value as Signal<any>) : config.value;\n\treturn typeof value === 'number';\n}\n\n/**\n * Checks if a config value is a TweakTextConfig.\n * @internal\n */\nfunction isTextConfig(config: TweakConfigValue): config is TweakTextConfig {\n\tif (typeof config !== 'object' || config === null || !('value' in config)) return false;\n\tif ('color' in config || 'options' in config || 'action' in config || '__folder' in config) return false;\n\tif ('min' in config || 'max' in config || 'step' in config) return false;\n\tif ('x' in config || 'y' in config) return false;\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tconst value = isSignal(config.value) ? untracked(config.value as Signal<any>) : config.value;\n\treturn typeof value === 'string';\n}\n\n/**\n * Checks if a config value is a TweakColorConfig.\n * @internal\n */\nfunction isColorConfig(config: TweakConfigValue): config is TweakColorConfig {\n\treturn typeof config === 'object' && config !== null && 'color' in config && config.color === true;\n}\n\n/**\n * Checks if a config value is a TweakCheckboxConfig.\n * @internal\n */\nfunction isCheckboxConfig(config: TweakConfigValue): config is TweakCheckboxConfig {\n\tif (typeof config !== 'object' || config === null || !('value' in config)) return false;\n\tif ('color' in config || 'options' in config || 'action' in config || '__folder' in config) return false;\n\tif ('min' in config || 'max' in config || 'step' in config) return false;\n\tif ('x' in config || 'y' in config) return false;\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tconst value = isSignal(config.value) ? untracked(config.value as Signal<any>) : config.value;\n\treturn typeof value === 'boolean';\n}\n\n/**\n * Checks if a config value is a TweakListConfig.\n * @internal\n */\nfunction isListConfig(config: TweakConfigValue): config is TweakListConfig<unknown> {\n\treturn typeof config === 'object' && config !== null && 'options' in config;\n}\n\n/**\n * Checks if a config value is a TweakPointConfig.\n * @internal\n */\nfunction isPointConfig(config: TweakConfigValue): config is TweakPointConfig {\n\treturn (\n\t\ttypeof config === 'object' &&\n\t\tconfig !== null &&\n\t\t'value' in config &&\n\t\t(('x' in config && 'y' in config) ||\n\t\t\t(Array.isArray(config.value) && config.value.length >= 2) ||\n\t\t\t(isSignal(config.value) && Array.isArray(untracked(config.value))))\n\t);\n}\n\n/**\n * Checks if a config value is a TweakButtonConfig.\n * @internal\n */\nfunction isButtonConfig(config: TweakConfigValue): config is TweakButtonConfig {\n\treturn typeof config === 'object' && config !== null && 'action' in config && typeof config.action === 'function';\n}\n\n/**\n * Checks if a config value is a TweakFolderConfig.\n * @internal\n */\nfunction isFolderConfig(config: TweakConfigValue): config is TweakFolderConfig<TweakConfig> {\n\treturn typeof config === 'object' && config !== null && '__folder' in config && config.__folder === true;\n}\n\n// ============================================================================\n// Helper to create folder configs\n// ============================================================================\n\n/**\n * Creates a nested folder configuration for use with `tweaks()`.\n *\n * This helper function creates a folder configuration object that can be\n * used as a value in the `tweaks()` config to organize controls into\n * collapsible groups.\n *\n * @typeParam T - The config type for the folder's contents\n * @param name - The display name/title of the folder\n * @param config - The configuration object for controls within the folder\n * @param options - Optional folder settings\n * @param options.expanded - Whether the folder starts expanded\n * @returns A folder configuration object\n *\n * @example\n * ```typescript\n * const controls = tweaks('Settings', {\n *   basic: 42,\n *   advanced: tweaks.folder('Advanced', {\n *     iterations: { value: 4, min: 1, max: 10 },\n *     tolerance: { value: 0.001, min: 0, max: 1, step: 0.001 },\n *   }),\n * });\n *\n * // Access nested values\n * controls.advanced.iterations(); // Signal<number>\n * ```\n */\nfunction folder<T extends TweakConfig>(\n\tname: string,\n\tconfig: T,\n\toptions?: { expanded?: boolean },\n): TweakFolderConfig<T> {\n\treturn {\n\t\t__folder: true,\n\t\tname,\n\t\tconfig,\n\t\texpanded: options?.expanded,\n\t};\n}\n\n// ============================================================================\n// Folder Options\n// ============================================================================\n\n/**\n * Options for configuring a `tweaks()` folder.\n */\nexport interface TweakFolderOptions {\n\t/**\n\t * Whether the folder is expanded by default.\n\t * @default false\n\t */\n\texpanded?: boolean;\n\t/**\n\t * Optional injector for use outside an injection context.\n\t * Required when calling `tweaks()` from outside a constructor or field initializer.\n\t */\n\tinjector?: Injector;\n}\n\n// ============================================================================\n// Main tweaks() function\n// ============================================================================\n\n/**\n * Creates Tweakpane controls declaratively from any component within an `ngt-canvas`.\n *\n * **Prerequisites:**\n * 1. Add `tweakpaneAnchor` directive to your `ngt-canvas`:\n *    ```html\n *    <ngt-canvas tweakpaneAnchor>\n *    ```\n * 2. Add `<tweakpane-pane>` somewhere in your scene\n *\n * @param folderName - The name of the folder to create/use\n * @param config - Configuration object defining the controls\n * @param options - Optional folder options (expanded, etc.)\n * @returns An object with signals for each control value\n *\n * @example\n * ```typescript\n * // Basic usage with primitives (creates new signals)\n * const controls = tweaks('Physics', {\n *   gravity: 9.8,\n *   debug: false,\n *   name: 'World',\n * });\n *\n * // With config objects for more control\n * const controls = tweaks('Physics', {\n *   gravity: { value: 9.8, min: 0, max: 20, step: 0.1 },\n *   color: { value: '#ff0000', color: true },\n *   mode: { value: 'normal', options: ['normal', 'debug', 'verbose'] },\n * });\n *\n * // Two-way binding with existing signals\n * filteringEnabled = signal(true);\n * const controls = tweaks('Settings', {\n *   filteringEnabled: this.filteringEnabled, // two-way binding\n * });\n *\n * // Buttons (actions)\n * const controls = tweaks('Actions', {\n *   reset: { action: () => this.reset() },\n * });\n *\n * // Nested folders\n * const controls = tweaks('Settings', {\n *   basic: 42,\n *   advanced: tweaks.folder('Advanced', {\n *     iterations: { value: 4, min: 1, max: 10 },\n *   }),\n * });\n * ```\n */\nexport function tweaks<T extends TweakConfig>(\n\tfolderName: string,\n\tconfig: T,\n\t{ injector, ...options }: TweakFolderOptions = {},\n): TweakResult<T> {\n\treturn assertInjector(tweaks, injector, () => {\n\t\tconst maybeAnchor = inject(TweakpaneAnchor, { optional: true });\n\t\tconst assertedInjector = inject(Injector);\n\t\tconst destroyRef = inject(DestroyRef);\n\n\t\tif (!maybeAnchor) {\n\t\t\tthrow new Error(\n\t\t\t\t'[NGT Tweakpane] tweaks() requires TweakpaneAnchor directive. Add `tweakpaneAnchor` to your ngt-canvas element.',\n\t\t\t);\n\t\t}\n\n\t\tconst anchor = maybeAnchor;\n\n\t\tconst result = {} as Record<string, Signal<unknown> | Record<string, Signal<unknown>>>;\n\t\tconst createdComponents: ComponentRef<TweakpaneAnchorHost>[] = [];\n\n\t\t// Process config and create controls when pane folder is ready\n\t\teffect(\n\t\t\t(onCleanup) => {\n\t\t\t\tconst paneFolder = anchor.paneFolder();\n\t\t\t\tif (!paneFolder) return;\n\n\t\t\t\t// Get or create folder for this tweaks() call\n\t\t\t\tlet folderRef = anchor.folders[folderName];\n\t\t\t\tlet folderInstance: TweakpaneFolder;\n\n\t\t\t\tif (!folderRef) {\n\t\t\t\t\t// Create folder using the directives approach\n\t\t\t\t\tfolderRef = anchor.vcr.createComponent(TweakpaneAnchorHost, {\n\t\t\t\t\t\tinjector: Injector.create({\n\t\t\t\t\t\t\tproviders: [{ provide: TweakpaneFolder, useValue: paneFolder }],\n\t\t\t\t\t\t\tparent: assertedInjector,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tdirectives: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: TweakpaneFolder,\n\t\t\t\t\t\t\t\tbindings: [\n\t\t\t\t\t\t\t\t\tinputBinding('title', () => folderName),\n\t\t\t\t\t\t\t\t\tinputBinding('expanded', () => options?.expanded ?? false),\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t});\n\t\t\t\t\tfolderInstance = folderRef.injector.get(TweakpaneFolder);\n\t\t\t\t\tanchor.folders[folderName] = folderRef;\n\t\t\t\t\tcreatedComponents.push(folderRef);\n\t\t\t\t} else {\n\t\t\t\t\tfolderInstance = folderRef.injector.get(TweakpaneFolder);\n\t\t\t\t}\n\n\t\t\t\t// Process each config entry\n\t\t\t\tprocessConfig(config, result, folderInstance, anchor.vcr, createdComponents, anchor, assertedInjector);\n\n\t\t\t\tonCleanup(() => {\n\t\t\t\t\t// Destroy created components\n\t\t\t\t\tfor (const ref of createdComponents) {\n\t\t\t\t\t\tref.destroy();\n\t\t\t\t\t}\n\t\t\t\t\tcreatedComponents.length = 0;\n\t\t\t\t});\n\t\t\t},\n\t\t\t{ injector: assertedInjector },\n\t\t);\n\n\t\t// Cleanup on destroy\n\t\tdestroyRef.onDestroy(() => {\n\t\t\tfor (const ref of createdComponents) {\n\t\t\t\tref.destroy();\n\t\t\t}\n\t\t});\n\n\t\treturn result as TweakResult<T>;\n\t});\n}\n\n/**\n * Attach the folder helper to tweaks for convenient access.\n * Allows usage like `tweaks.folder('Name', config)`.\n */\ntweaks.folder = folder;\n\n// ============================================================================\n// Internal: Process config and create components\n// ============================================================================\n\n/**\n * Processes a configuration object and creates the corresponding Tweakpane controls.\n * This is an internal function called by `tweaks()` to set up the UI.\n *\n * @param config - The configuration object to process\n * @param result - The result object to populate with signals\n * @param parentFolder - The parent folder to add controls to\n * @param vcr - The ViewContainerRef for creating components\n * @param createdComponents - Array to track created component refs for cleanup\n * @param anchor - The TweakpaneAnchor for folder management\n * @param parentInjector - The parent injector for dependency injection\n *\n * @internal\n */\nfunction processConfig(\n\tconfig: TweakConfig,\n\tresult: Record<string, Signal<unknown> | Record<string, Signal<unknown>>>,\n\tparentFolder: TweakpaneFolder,\n\tvcr: ViewContainerRef,\n\tcreatedComponents: ComponentRef<TweakpaneAnchorHost>[],\n\tanchor: TweakpaneAnchor,\n\tparentInjector: Injector,\n): void {\n\tconst keys = Object.keys(config);\n\n\t// Create injector with parent folder provided\n\tconst folderInjector = Injector.create({\n\t\tproviders: [{ provide: TweakpaneFolder, useValue: parentFolder }],\n\t\tparent: parentInjector,\n\t});\n\n\tfor (const key of keys) {\n\t\tconst configValue = config[key];\n\n\t\t// Handle nested folders\n\t\tif (isFolderConfig(configValue)) {\n\t\t\tconst nestedResult = {} as Record<string, Signal<unknown>>;\n\n\t\t\t// Get or create nested folder\n\t\t\tconst nestedFolderName = configValue.name;\n\t\t\tlet nestedFolderRef = anchor.folders[nestedFolderName];\n\t\t\tlet nestedFolderInstance: TweakpaneFolder;\n\n\t\t\tif (!nestedFolderRef) {\n\t\t\t\tnestedFolderRef = vcr.createComponent(TweakpaneAnchorHost, {\n\t\t\t\t\tinjector: folderInjector,\n\t\t\t\t\tdirectives: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: TweakpaneFolder,\n\t\t\t\t\t\t\tbindings: [\n\t\t\t\t\t\t\t\tinputBinding('title', () => nestedFolderName),\n\t\t\t\t\t\t\t\tinputBinding('expanded', () => configValue.expanded ?? false),\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t\tnestedFolderInstance = nestedFolderRef.injector.get(TweakpaneFolder);\n\t\t\t\tanchor.folders[nestedFolderName] = nestedFolderRef;\n\t\t\t\tcreatedComponents.push(nestedFolderRef);\n\t\t\t} else {\n\t\t\t\tnestedFolderInstance = nestedFolderRef.injector.get(TweakpaneFolder);\n\t\t\t}\n\n\t\t\tprocessConfig(\n\t\t\t\tconfigValue.config,\n\t\t\t\tnestedResult,\n\t\t\t\tnestedFolderInstance,\n\t\t\t\tvcr,\n\t\t\t\tcreatedComponents,\n\t\t\t\tanchor,\n\t\t\t\tfolderInjector,\n\t\t\t);\n\t\t\tresult[key] = nestedResult;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Handle buttons (no result signal)\n\t\tif (isButtonConfig(configValue)) {\n\t\t\tconst buttonRef = vcr.createComponent(TweakpaneAnchorHost, {\n\t\t\t\tinjector: folderInjector,\n\t\t\t\tdirectives: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: TweakpaneButton,\n\t\t\t\t\t\tbindings: [\n\t\t\t\t\t\t\tinputBinding('title', () => key),\n\t\t\t\t\t\t\t...(configValue.label ? [inputBinding('label', () => configValue.label)] : []),\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\t// Subscribe to click events\n\t\t\tconst buttonInstance = buttonRef.injector.get(TweakpaneButton);\n\t\t\tbuttonInstance.click.subscribe(() => {\n\t\t\t\tconfigValue.action();\n\t\t\t});\n\t\t\tcreatedComponents.push(buttonRef);\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Handle direct WritableSignal (two-way binding)\n\t\tif (isSignal(configValue)) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\tconst untrackedValue = untracked(configValue as WritableSignal<any>);\n\t\t\tconst valueType = typeof untrackedValue;\n\n\t\t\tif (valueType === 'number') {\n\t\t\t\tconst ref = vcr.createComponent(TweakpaneAnchorHost, {\n\t\t\t\t\tinjector: folderInjector,\n\t\t\t\t\tdirectives: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: TweakpaneNumber,\n\t\t\t\t\t\t\tbindings: [\n\t\t\t\t\t\t\t\tinputBinding('label', () => key),\n\t\t\t\t\t\t\t\ttwoWayBinding('value', configValue as WritableSignal<number>),\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t\tcreatedComponents.push(ref);\n\t\t\t\tresult[key] = (configValue as WritableSignal<number>).asReadonly();\n\t\t\t} else if (valueType === 'string') {\n\t\t\t\tconst ref = vcr.createComponent(TweakpaneAnchorHost, {\n\t\t\t\t\tinjector: folderInjector,\n\t\t\t\t\tdirectives: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: TweakpaneText,\n\t\t\t\t\t\t\tbindings: [\n\t\t\t\t\t\t\t\tinputBinding('label', () => key),\n\t\t\t\t\t\t\t\ttwoWayBinding('value', configValue as WritableSignal<string>),\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t\tcreatedComponents.push(ref);\n\t\t\t\tresult[key] = (configValue as WritableSignal<string>).asReadonly();\n\t\t\t} else if (valueType === 'boolean') {\n\t\t\t\tconst ref = vcr.createComponent(TweakpaneAnchorHost, {\n\t\t\t\t\tinjector: folderInjector,\n\t\t\t\t\tdirectives: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: TweakpaneCheckbox,\n\t\t\t\t\t\t\tbindings: [\n\t\t\t\t\t\t\t\tinputBinding('label', () => key),\n\t\t\t\t\t\t\t\ttwoWayBinding('value', configValue as WritableSignal<boolean>),\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t\tcreatedComponents.push(ref);\n\t\t\t\tresult[key] = (configValue as WritableSignal<boolean>).asReadonly();\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Handle primitive values (create new signal)\n\t\tif (typeof configValue === 'number') {\n\t\t\tconst valueSignal = signal(configValue);\n\t\t\tconst ref = vcr.createComponent(TweakpaneAnchorHost, {\n\t\t\t\tinjector: folderInjector,\n\t\t\t\tdirectives: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: TweakpaneNumber,\n\t\t\t\t\t\tbindings: [inputBinding('label', () => key), twoWayBinding('value', valueSignal)],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\tcreatedComponents.push(ref);\n\t\t\tresult[key] = valueSignal.asReadonly();\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (typeof configValue === 'string') {\n\t\t\tconst valueSignal = signal(configValue);\n\t\t\tconst ref = vcr.createComponent(TweakpaneAnchorHost, {\n\t\t\t\tinjector: folderInjector,\n\t\t\t\tdirectives: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: TweakpaneText,\n\t\t\t\t\t\tbindings: [inputBinding('label', () => key), twoWayBinding('value', valueSignal)],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\tcreatedComponents.push(ref);\n\t\t\tresult[key] = valueSignal.asReadonly();\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (typeof configValue === 'boolean') {\n\t\t\tconst valueSignal = signal(configValue);\n\t\t\tconst ref = vcr.createComponent(TweakpaneAnchorHost, {\n\t\t\t\tinjector: folderInjector,\n\t\t\t\tdirectives: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: TweakpaneCheckbox,\n\t\t\t\t\t\tbindings: [inputBinding('label', () => key), twoWayBinding('value', valueSignal)],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\tcreatedComponents.push(ref);\n\t\t\tresult[key] = valueSignal.asReadonly();\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Handle config objects\n\t\tif (isColorConfig(configValue)) {\n\t\t\tconst initialValue = isSignal(configValue.value)\n\t\t\t\t? untracked(configValue.value)\n\t\t\t\t: (configValue.value as string);\n\t\t\tconst valueSignal = isSignal(configValue.value) ? configValue.value : signal(initialValue);\n\t\t\tconst ref = vcr.createComponent(TweakpaneAnchorHost, {\n\t\t\t\tinjector: folderInjector,\n\t\t\t\tdirectives: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: TweakpaneColor,\n\t\t\t\t\t\tbindings: [inputBinding('label', () => key), twoWayBinding('value', valueSignal)],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\tcreatedComponents.push(ref);\n\t\t\tresult[key] = valueSignal.asReadonly();\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isListConfig(configValue)) {\n\t\t\tconst initialValue = isSignal(configValue.value) ? untracked(configValue.value) : configValue.value;\n\t\t\tconst valueSignal = isSignal(configValue.value)\n\t\t\t\t? (configValue.value as WritableSignal<unknown>)\n\t\t\t\t: signal(initialValue);\n\t\t\tconst ref = vcr.createComponent(TweakpaneAnchorHost, {\n\t\t\t\tinjector: folderInjector,\n\t\t\t\tdirectives: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: TweakpaneList,\n\t\t\t\t\t\tbindings: [\n\t\t\t\t\t\t\tinputBinding('label', () => key),\n\t\t\t\t\t\t\tinputBinding('options', () => configValue.options),\n\t\t\t\t\t\t\ttwoWayBinding('value', valueSignal),\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\tcreatedComponents.push(ref);\n\t\t\tresult[key] = valueSignal.asReadonly();\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isPointConfig(configValue)) {\n\t\t\tconst initialValue = isSignal(configValue.value) ? untracked(configValue.value) : configValue.value;\n\t\t\tconst valueSignal = isSignal(configValue.value) ? configValue.value : signal(initialValue);\n\t\t\t// Build params from x, y, z, w configs\n\t\t\tconst params: Point2dInputParams | Point3dInputParams | Point4dInputParams = {};\n\t\t\tif (configValue.x) (params as Point2dInputParams).x = configValue.x;\n\t\t\tif (configValue.y) (params as Point2dInputParams).y = configValue.y;\n\t\t\tif (configValue.z) (params as Point3dInputParams).z = configValue.z;\n\t\t\tif (configValue.w) (params as Point4dInputParams).w = configValue.w;\n\n\t\t\tconst ref = vcr.createComponent(TweakpaneAnchorHost, {\n\t\t\t\tinjector: folderInjector,\n\t\t\t\tdirectives: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: TweakpanePoint,\n\t\t\t\t\t\tbindings: [\n\t\t\t\t\t\t\tinputBinding('label', () => key),\n\t\t\t\t\t\t\tinputBinding('params', () => params),\n\t\t\t\t\t\t\ttwoWayBinding(\n\t\t\t\t\t\t\t\t'value',\n\t\t\t\t\t\t\t\tvalueSignal as WritableSignal<\n\t\t\t\t\t\t\t\t\t[number, number] | [number, number, number] | [number, number, number, number]\n\t\t\t\t\t\t\t\t>,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\tcreatedComponents.push(ref);\n\t\t\tresult[key] = valueSignal.asReadonly();\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isNumberConfig(configValue)) {\n\t\t\tconst initialValue = isSignal(configValue.value)\n\t\t\t\t? untracked(configValue.value)\n\t\t\t\t: (configValue.value as number);\n\t\t\tconst valueSignal = isSignal(configValue.value) ? configValue.value : signal(initialValue);\n\t\t\t// Build params\n\t\t\tconst params: NumberInputParams = {};\n\t\t\tif (configValue.min !== undefined) params.min = configValue.min;\n\t\t\tif (configValue.max !== undefined) params.max = configValue.max;\n\t\t\tif (configValue.step !== undefined) params.step = configValue.step;\n\n\t\t\tconst ref = vcr.createComponent(TweakpaneAnchorHost, {\n\t\t\t\tinjector: folderInjector,\n\t\t\t\tdirectives: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: TweakpaneNumber,\n\t\t\t\t\t\tbindings: [\n\t\t\t\t\t\t\tinputBinding('label', () => key),\n\t\t\t\t\t\t\tinputBinding('params', () => params),\n\t\t\t\t\t\t\ttwoWayBinding('value', valueSignal),\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\tcreatedComponents.push(ref);\n\t\t\tresult[key] = valueSignal.asReadonly();\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isCheckboxConfig(configValue)) {\n\t\t\tconst initialValue = isSignal(configValue.value)\n\t\t\t\t? untracked(configValue.value)\n\t\t\t\t: (configValue.value as boolean);\n\t\t\tconst valueSignal = isSignal(configValue.value) ? configValue.value : signal(initialValue);\n\t\t\tconst ref = vcr.createComponent(TweakpaneAnchorHost, {\n\t\t\t\tinjector: folderInjector,\n\t\t\t\tdirectives: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: TweakpaneCheckbox,\n\t\t\t\t\t\tbindings: [inputBinding('label', () => key), twoWayBinding('value', valueSignal)],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\tcreatedComponents.push(ref);\n\t\t\tresult[key] = valueSignal.asReadonly();\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isTextConfig(configValue)) {\n\t\t\tconst initialValue = isSignal(configValue.value)\n\t\t\t\t? untracked(configValue.value)\n\t\t\t\t: (configValue.value as string);\n\t\t\tconst valueSignal = isSignal(configValue.value) ? configValue.value : signal(initialValue);\n\t\t\tconst ref = vcr.createComponent(TweakpaneAnchorHost, {\n\t\t\t\tinjector: folderInjector,\n\t\t\t\tdirectives: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: TweakpaneText,\n\t\t\t\t\t\tbindings: [inputBinding('label', () => key), twoWayBinding('value', valueSignal)],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\t\t\tcreatedComponents.push(ref);\n\t\t\tresult[key] = valueSignal.asReadonly();\n\t\t\tcontinue;\n\t\t}\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.TweakpaneTitle","i2.TweakpaneBlade","i1.TweakpaneBlade","i2.TweakpaneDebounce","i3.TweakpaneLabel","i2.TweakpaneLabel","i3.TweakpaneBlade","i1.TweakpaneBinding","i1.TweakpaneFolder"],"mappings":"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"}