angular-three-tweakpane 4.0.0-next.100
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/README.md +1 -0
- package/fesm2022/angular-three-tweakpane.mjs +559 -0
- package/fesm2022/angular-three-tweakpane.mjs.map +1 -0
- package/index.d.ts +14 -0
- package/lib/binding.d.ts +40 -0
- package/lib/blade.d.ts +14 -0
- package/lib/button.d.ts +17 -0
- package/lib/checkbox.d.ts +10 -0
- package/lib/color.d.ts +10 -0
- package/lib/debounce.d.ts +12 -0
- package/lib/folder.d.ts +17 -0
- package/lib/label.d.ts +16 -0
- package/lib/list.d.ts +17 -0
- package/lib/number.d.ts +10 -0
- package/lib/pane.d.ts +20 -0
- package/lib/point.d.ts +10 -0
- package/lib/text.d.ts +10 -0
- package/lib/title.d.ts +11 -0
- package/package.json +46 -0
package/README.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# `angular-three-tweakpane`
|
|
@@ -0,0 +1,559 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, booleanAttribute, inject, Injector, untracked, effect, Directive, numberAttribute, model, linkedSignal, computed, DestroyRef, InjectionToken, signal, output, afterNextRender, isSignal } from '@angular/core';
|
|
3
|
+
import { fromEventPattern, debounceTime } from 'rxjs';
|
|
4
|
+
import { DOCUMENT } from '@angular/common';
|
|
5
|
+
import { ClassName } from '@tweakpane/core';
|
|
6
|
+
import { Pane } from 'tweakpane';
|
|
7
|
+
|
|
8
|
+
class TweakpaneBlade {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.hidden = input(false, { transform: booleanAttribute });
|
|
11
|
+
this.disabled = input(false, { transform: booleanAttribute });
|
|
12
|
+
this.injector = inject(Injector);
|
|
13
|
+
}
|
|
14
|
+
get snapshot() {
|
|
15
|
+
return {
|
|
16
|
+
hidden: untracked(this.hidden),
|
|
17
|
+
disabled: untracked(this.disabled),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
sync(api) {
|
|
21
|
+
return effect(() => {
|
|
22
|
+
const _api = api();
|
|
23
|
+
if (!_api)
|
|
24
|
+
return;
|
|
25
|
+
_api.hidden = this.hidden();
|
|
26
|
+
_api.disabled = this.disabled();
|
|
27
|
+
}, { injector: this.injector });
|
|
28
|
+
}
|
|
29
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpaneBlade, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
30
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.1", type: TweakpaneBlade, isStandalone: true, selector: "tweakpane-blade", inputs: { hidden: { classPropertyName: "hidden", publicName: "hidden", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
31
|
+
}
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpaneBlade, decorators: [{
|
|
33
|
+
type: Directive,
|
|
34
|
+
args: [{ selector: 'tweakpane-blade' }]
|
|
35
|
+
}] });
|
|
36
|
+
|
|
37
|
+
class TweakpaneDebounce {
|
|
38
|
+
constructor() {
|
|
39
|
+
this.debounce = input(150, { transform: numberAttribute });
|
|
40
|
+
this.injector = inject(Injector);
|
|
41
|
+
}
|
|
42
|
+
sync(api, cb) {
|
|
43
|
+
return effect((onCleanup) => {
|
|
44
|
+
const _api = api();
|
|
45
|
+
if (!_api)
|
|
46
|
+
return;
|
|
47
|
+
const sub = fromEventPattern((handler) => _api.on('change', handler), (handler) => _api.off('change', handler))
|
|
48
|
+
.pipe(debounceTime(this.debounce()))
|
|
49
|
+
.subscribe((ev) => {
|
|
50
|
+
cb(ev);
|
|
51
|
+
});
|
|
52
|
+
onCleanup(() => {
|
|
53
|
+
sub.unsubscribe();
|
|
54
|
+
});
|
|
55
|
+
}, { injector: this.injector });
|
|
56
|
+
}
|
|
57
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpaneDebounce, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
58
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.1", type: TweakpaneDebounce, isStandalone: true, inputs: { debounce: { classPropertyName: "debounce", publicName: "debounce", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
59
|
+
}
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpaneDebounce, decorators: [{
|
|
61
|
+
type: Directive
|
|
62
|
+
}] });
|
|
63
|
+
|
|
64
|
+
class TweakpaneTitle {
|
|
65
|
+
constructor() {
|
|
66
|
+
this.title = input('TweakPane Title');
|
|
67
|
+
this.injector = inject(Injector);
|
|
68
|
+
}
|
|
69
|
+
get snapshot() {
|
|
70
|
+
return untracked(this.title);
|
|
71
|
+
}
|
|
72
|
+
sync(api) {
|
|
73
|
+
return effect(() => {
|
|
74
|
+
const _api = api();
|
|
75
|
+
if (!_api)
|
|
76
|
+
return;
|
|
77
|
+
_api.title = this.title();
|
|
78
|
+
}, { injector: this.injector });
|
|
79
|
+
}
|
|
80
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpaneTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
81
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.1", type: TweakpaneTitle, isStandalone: true, inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
82
|
+
}
|
|
83
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpaneTitle, decorators: [{
|
|
84
|
+
type: Directive
|
|
85
|
+
}] });
|
|
86
|
+
|
|
87
|
+
class TweakpaneFolder {
|
|
88
|
+
constructor() {
|
|
89
|
+
this.expanded = model(false);
|
|
90
|
+
this.title = inject(TweakpaneTitle);
|
|
91
|
+
this.blade = inject(TweakpaneBlade);
|
|
92
|
+
this.parent = inject(TweakpaneFolder, { skipSelf: true, optional: true });
|
|
93
|
+
this.parentFolder = linkedSignal(() => this.parent?.folder());
|
|
94
|
+
this.folder = computed(() => {
|
|
95
|
+
const parent = this.parentFolder();
|
|
96
|
+
if (!parent)
|
|
97
|
+
return null;
|
|
98
|
+
if (!this.isSelf)
|
|
99
|
+
return parent;
|
|
100
|
+
return parent.addFolder({
|
|
101
|
+
title: this.title.snapshot,
|
|
102
|
+
expanded: untracked(this.expanded),
|
|
103
|
+
disabled: this.blade.snapshot.disabled,
|
|
104
|
+
hidden: this.blade.snapshot.hidden,
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
this.isSelf = true;
|
|
108
|
+
this.title.sync(this.folder);
|
|
109
|
+
this.blade.sync(this.folder);
|
|
110
|
+
effect((onCleanup) => {
|
|
111
|
+
const folder = this.folder();
|
|
112
|
+
if (!folder)
|
|
113
|
+
return;
|
|
114
|
+
const cb = (ev) => {
|
|
115
|
+
this.expanded.set(ev.expanded);
|
|
116
|
+
};
|
|
117
|
+
folder.on('fold', cb);
|
|
118
|
+
onCleanup(() => {
|
|
119
|
+
folder.off('fold', cb);
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
inject(DestroyRef).onDestroy(() => {
|
|
123
|
+
this.folder()?.dispose();
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpaneFolder, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
127
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.1", type: TweakpaneFolder, isStandalone: true, selector: "tweakpane-folder", inputs: { expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expanded: "expandedChange" }, hostDirectives: [{ directive: TweakpaneTitle, inputs: ["title", "title"] }, { directive: TweakpaneBlade, inputs: ["hidden", "hidden", "disabled", "disabled"] }], ngImport: i0 }); }
|
|
128
|
+
}
|
|
129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpaneFolder, decorators: [{
|
|
130
|
+
type: Directive,
|
|
131
|
+
args: [{
|
|
132
|
+
selector: 'tweakpane-folder',
|
|
133
|
+
hostDirectives: [
|
|
134
|
+
{ directive: TweakpaneTitle, inputs: ['title'] },
|
|
135
|
+
{ directive: TweakpaneBlade, inputs: ['hidden', 'disabled'] },
|
|
136
|
+
],
|
|
137
|
+
}]
|
|
138
|
+
}], ctorParameters: () => [] });
|
|
139
|
+
|
|
140
|
+
class TweakpaneLabel {
|
|
141
|
+
constructor() {
|
|
142
|
+
this.label = input('');
|
|
143
|
+
this.tag = input('');
|
|
144
|
+
this.injector = inject(Injector);
|
|
145
|
+
}
|
|
146
|
+
get snapshot() {
|
|
147
|
+
return { label: untracked(this.label), tag: untracked(this.tag) };
|
|
148
|
+
}
|
|
149
|
+
sync(api) {
|
|
150
|
+
return effect(() => {
|
|
151
|
+
const _api = api();
|
|
152
|
+
if (!_api)
|
|
153
|
+
return;
|
|
154
|
+
_api.label = this.label();
|
|
155
|
+
if ('tag' in _api) {
|
|
156
|
+
_api.tag = this.tag();
|
|
157
|
+
}
|
|
158
|
+
}, { injector: this.injector });
|
|
159
|
+
}
|
|
160
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpaneLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
161
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.1", type: TweakpaneLabel, isStandalone: true, inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, tag: { classPropertyName: "tag", publicName: "tag", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
162
|
+
}
|
|
163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpaneLabel, decorators: [{
|
|
164
|
+
type: Directive
|
|
165
|
+
}] });
|
|
166
|
+
|
|
167
|
+
const NGT_TWEAK_BINDING_AS_HOST = new InjectionToken('hostDirective NgtTweakBinding', { factory: () => null });
|
|
168
|
+
function provideTweakBindingAsHost(inOut) {
|
|
169
|
+
return { provide: NGT_TWEAK_BINDING_AS_HOST, useValue: inOut ?? true };
|
|
170
|
+
}
|
|
171
|
+
class TweakpaneBinding {
|
|
172
|
+
get bindableObject() {
|
|
173
|
+
let value = untracked(this.value);
|
|
174
|
+
if (this.asHostDirective && typeof this.asHostDirective === 'object') {
|
|
175
|
+
value = this.asHostDirective.in(value);
|
|
176
|
+
}
|
|
177
|
+
return { value };
|
|
178
|
+
}
|
|
179
|
+
constructor() {
|
|
180
|
+
this.value = model.required();
|
|
181
|
+
this.debounce = inject(TweakpaneDebounce);
|
|
182
|
+
this.label = inject(TweakpaneLabel);
|
|
183
|
+
this.blade = inject(TweakpaneBlade);
|
|
184
|
+
this.parent = inject(TweakpaneFolder);
|
|
185
|
+
this.injector = inject(Injector);
|
|
186
|
+
this.asHostDirective = inject(NGT_TWEAK_BINDING_AS_HOST);
|
|
187
|
+
this.bindingBaseParams = computed(() => ({
|
|
188
|
+
label: this.label.snapshot.label,
|
|
189
|
+
tag: this.label.snapshot.tag,
|
|
190
|
+
disabled: this.blade.disabled(),
|
|
191
|
+
hidden: this.blade.hidden(),
|
|
192
|
+
}));
|
|
193
|
+
this.bindingParams = signal({});
|
|
194
|
+
this.bindingApi = computed(() => {
|
|
195
|
+
const parent = this.parent.folder();
|
|
196
|
+
if (!parent)
|
|
197
|
+
return null;
|
|
198
|
+
const bindingParams = { ...this.bindingBaseParams(), ...this.bindingParams() };
|
|
199
|
+
return parent.addBinding(this.bindableObject, 'value', bindingParams);
|
|
200
|
+
});
|
|
201
|
+
this.blade.sync(this.bindingApi);
|
|
202
|
+
this.label.sync(this.bindingApi);
|
|
203
|
+
this.debounce.sync(this.bindingApi, (ev) => {
|
|
204
|
+
if (this.asHostDirective && typeof this.asHostDirective === 'object') {
|
|
205
|
+
this.value.set(this.asHostDirective.out(ev.value));
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
this.value.set(ev.value);
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
effect((onCleanup) => {
|
|
212
|
+
const bindingApi = this.bindingApi();
|
|
213
|
+
if (!bindingApi)
|
|
214
|
+
return;
|
|
215
|
+
onCleanup(() => {
|
|
216
|
+
bindingApi.dispose();
|
|
217
|
+
});
|
|
218
|
+
});
|
|
219
|
+
inject(DestroyRef).onDestroy(() => {
|
|
220
|
+
this.bindingApi()?.dispose();
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
syncBindingParams(params) {
|
|
224
|
+
return effect(() => {
|
|
225
|
+
this.bindingParams.set(params());
|
|
226
|
+
}, { injector: this.injector });
|
|
227
|
+
}
|
|
228
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpaneBinding, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
229
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.1", type: TweakpaneBinding, isStandalone: true, selector: "tweakpane-binding", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { value: "valueChange" }, hostDirectives: [{ directive: TweakpaneBlade, inputs: ["disabled", "disabled", "hidden", "hidden"] }, { directive: TweakpaneDebounce, inputs: ["debounce", "debounce"] }, { directive: TweakpaneLabel, inputs: ["label", "label", "tag", "tag"] }], ngImport: i0 }); }
|
|
230
|
+
}
|
|
231
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpaneBinding, decorators: [{
|
|
232
|
+
type: Directive,
|
|
233
|
+
args: [{
|
|
234
|
+
selector: 'tweakpane-binding',
|
|
235
|
+
hostDirectives: [
|
|
236
|
+
{ directive: TweakpaneBlade, inputs: ['disabled', 'hidden'] },
|
|
237
|
+
{ directive: TweakpaneDebounce, inputs: ['debounce'] },
|
|
238
|
+
{ directive: TweakpaneLabel, inputs: ['label', 'tag'] },
|
|
239
|
+
],
|
|
240
|
+
}]
|
|
241
|
+
}], ctorParameters: () => [] });
|
|
242
|
+
|
|
243
|
+
class TweakpaneButton {
|
|
244
|
+
constructor() {
|
|
245
|
+
this.click = output();
|
|
246
|
+
this.title = inject(TweakpaneTitle);
|
|
247
|
+
this.label = inject(TweakpaneLabel);
|
|
248
|
+
this.blade = inject(TweakpaneBlade);
|
|
249
|
+
this.parent = inject(TweakpaneFolder);
|
|
250
|
+
this.buttonApi = computed(() => {
|
|
251
|
+
const parent = this.parent.folder();
|
|
252
|
+
if (!parent)
|
|
253
|
+
return null;
|
|
254
|
+
return parent.addButton({
|
|
255
|
+
title: this.title.snapshot,
|
|
256
|
+
hidden: this.blade.snapshot.hidden,
|
|
257
|
+
disabled: this.blade.snapshot.disabled,
|
|
258
|
+
label: this.label.snapshot.label,
|
|
259
|
+
});
|
|
260
|
+
});
|
|
261
|
+
effect((onCleanup) => {
|
|
262
|
+
const buttonApi = this.buttonApi();
|
|
263
|
+
if (!buttonApi)
|
|
264
|
+
return;
|
|
265
|
+
const boundEmit = this.click.emit.bind(this.click);
|
|
266
|
+
buttonApi.on('click', boundEmit);
|
|
267
|
+
onCleanup(() => {
|
|
268
|
+
buttonApi.off('click', boundEmit);
|
|
269
|
+
});
|
|
270
|
+
});
|
|
271
|
+
this.label.sync(this.buttonApi);
|
|
272
|
+
this.title.sync(this.buttonApi);
|
|
273
|
+
this.blade.sync(this.buttonApi);
|
|
274
|
+
inject(DestroyRef).onDestroy(() => {
|
|
275
|
+
this.buttonApi()?.dispose();
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpaneButton, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
279
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.1", type: TweakpaneButton, isStandalone: true, selector: "tweakpane-button", outputs: { click: "click" }, hostDirectives: [{ directive: TweakpaneTitle, inputs: ["title", "title"] }, { directive: TweakpaneLabel, inputs: ["label", "label"] }, { directive: TweakpaneBlade, inputs: ["hidden", "hidden", "disabled", "disabled"] }], ngImport: i0 }); }
|
|
280
|
+
}
|
|
281
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpaneButton, decorators: [{
|
|
282
|
+
type: Directive,
|
|
283
|
+
args: [{
|
|
284
|
+
selector: 'tweakpane-button',
|
|
285
|
+
hostDirectives: [
|
|
286
|
+
{ directive: TweakpaneTitle, inputs: ['title'] },
|
|
287
|
+
{ directive: TweakpaneLabel, inputs: ['label'] },
|
|
288
|
+
{ directive: TweakpaneBlade, inputs: ['hidden', 'disabled'] },
|
|
289
|
+
],
|
|
290
|
+
}]
|
|
291
|
+
}], ctorParameters: () => [] });
|
|
292
|
+
|
|
293
|
+
class TweakpaneCheckbox {
|
|
294
|
+
constructor() {
|
|
295
|
+
this.params = input({});
|
|
296
|
+
this.binding = inject(TweakpaneBinding);
|
|
297
|
+
this.binding.syncBindingParams(this.params);
|
|
298
|
+
}
|
|
299
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpaneCheckbox, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
300
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.1", type: TweakpaneCheckbox, isStandalone: true, selector: "tweakpane-checkbox", inputs: { params: { classPropertyName: "params", publicName: "params", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTweakBindingAsHost()], hostDirectives: [{ directive: TweakpaneBinding, inputs: ["value", "value"], outputs: ["valueChange", "valueChange"] }], ngImport: i0 }); }
|
|
301
|
+
}
|
|
302
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpaneCheckbox, decorators: [{
|
|
303
|
+
type: Directive,
|
|
304
|
+
args: [{
|
|
305
|
+
selector: 'tweakpane-checkbox',
|
|
306
|
+
hostDirectives: [{ directive: TweakpaneBinding, inputs: ['value'], outputs: ['valueChange'] }],
|
|
307
|
+
providers: [provideTweakBindingAsHost()],
|
|
308
|
+
}]
|
|
309
|
+
}], ctorParameters: () => [] });
|
|
310
|
+
|
|
311
|
+
class TweakpaneColor {
|
|
312
|
+
constructor() {
|
|
313
|
+
this.params = input({});
|
|
314
|
+
this.binding = inject(TweakpaneBinding);
|
|
315
|
+
this.binding.syncBindingParams(this.params);
|
|
316
|
+
}
|
|
317
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpaneColor, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
318
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.1", type: TweakpaneColor, isStandalone: true, selector: "tweakpane-color", inputs: { params: { classPropertyName: "params", publicName: "params", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTweakBindingAsHost()], hostDirectives: [{ directive: TweakpaneBinding, inputs: ["value", "value"], outputs: ["valueChange", "valueChange"] }], ngImport: i0 }); }
|
|
319
|
+
}
|
|
320
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpaneColor, decorators: [{
|
|
321
|
+
type: Directive,
|
|
322
|
+
args: [{
|
|
323
|
+
selector: 'tweakpane-color',
|
|
324
|
+
hostDirectives: [{ directive: TweakpaneBinding, inputs: ['value'], outputs: ['valueChange'] }],
|
|
325
|
+
providers: [provideTweakBindingAsHost()],
|
|
326
|
+
}]
|
|
327
|
+
}], ctorParameters: () => [] });
|
|
328
|
+
|
|
329
|
+
class TweakpaneList {
|
|
330
|
+
constructor() {
|
|
331
|
+
this.value = model.required();
|
|
332
|
+
this.options = input.required();
|
|
333
|
+
this.blade = inject(TweakpaneBlade);
|
|
334
|
+
this.debounce = inject(TweakpaneDebounce);
|
|
335
|
+
this.label = inject(TweakpaneLabel);
|
|
336
|
+
this.parent = inject(TweakpaneFolder);
|
|
337
|
+
this.listOptions = computed(() => {
|
|
338
|
+
const options = this.options();
|
|
339
|
+
if (Array.isArray(options)) {
|
|
340
|
+
return options.map((option) => ({ value: option, text: `${option}` }));
|
|
341
|
+
}
|
|
342
|
+
return Object.keys(options).map((key) => {
|
|
343
|
+
const value = options[key];
|
|
344
|
+
return { text: key, value };
|
|
345
|
+
});
|
|
346
|
+
});
|
|
347
|
+
this.listApi = computed(() => {
|
|
348
|
+
const parent = this.parent.folder();
|
|
349
|
+
if (!parent)
|
|
350
|
+
return null;
|
|
351
|
+
return parent.addBlade({
|
|
352
|
+
view: 'list',
|
|
353
|
+
options: this.listOptions(),
|
|
354
|
+
value: untracked(this.value),
|
|
355
|
+
label: this.label.snapshot.label,
|
|
356
|
+
});
|
|
357
|
+
});
|
|
358
|
+
this.label.sync(this.listApi);
|
|
359
|
+
this.blade.sync(this.listApi);
|
|
360
|
+
this.debounce.sync(this.listApi, (ev) => {
|
|
361
|
+
this.value.set(ev.value);
|
|
362
|
+
});
|
|
363
|
+
effect((onCleanup) => {
|
|
364
|
+
const listApi = this.listApi();
|
|
365
|
+
onCleanup(() => {
|
|
366
|
+
listApi?.dispose();
|
|
367
|
+
});
|
|
368
|
+
});
|
|
369
|
+
inject(DestroyRef).onDestroy(() => {
|
|
370
|
+
this.listApi()?.dispose();
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpaneList, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
374
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.1", type: TweakpaneList, isStandalone: true, selector: "tweakpane-list", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { value: "valueChange" }, hostDirectives: [{ directive: TweakpaneBlade, inputs: ["hidden", "hidden", "disabled", "disabled"] }, { directive: TweakpaneDebounce, inputs: ["debounce", "debounce"] }, { directive: TweakpaneLabel, inputs: ["label", "label"] }], ngImport: i0 }); }
|
|
375
|
+
}
|
|
376
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpaneList, decorators: [{
|
|
377
|
+
type: Directive,
|
|
378
|
+
args: [{
|
|
379
|
+
selector: 'tweakpane-list',
|
|
380
|
+
hostDirectives: [
|
|
381
|
+
{ directive: TweakpaneBlade, inputs: ['hidden', 'disabled'] },
|
|
382
|
+
{ directive: TweakpaneDebounce, inputs: ['debounce'] },
|
|
383
|
+
{ directive: TweakpaneLabel, inputs: ['label'] },
|
|
384
|
+
],
|
|
385
|
+
}]
|
|
386
|
+
}], ctorParameters: () => [] });
|
|
387
|
+
|
|
388
|
+
class TweakpaneNumber {
|
|
389
|
+
constructor() {
|
|
390
|
+
this.params = input({});
|
|
391
|
+
this.binding = inject(TweakpaneBinding);
|
|
392
|
+
this.binding.syncBindingParams(this.params);
|
|
393
|
+
}
|
|
394
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpaneNumber, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
395
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.1", type: TweakpaneNumber, isStandalone: true, selector: "tweakpane-number", inputs: { params: { classPropertyName: "params", publicName: "params", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTweakBindingAsHost()], hostDirectives: [{ directive: TweakpaneBinding, inputs: ["value", "value"], outputs: ["valueChange", "valueChange"] }], ngImport: i0 }); }
|
|
396
|
+
}
|
|
397
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpaneNumber, decorators: [{
|
|
398
|
+
type: Directive,
|
|
399
|
+
args: [{
|
|
400
|
+
selector: 'tweakpane-number',
|
|
401
|
+
hostDirectives: [{ directive: TweakpaneBinding, inputs: ['value'], outputs: ['valueChange'] }],
|
|
402
|
+
providers: [provideTweakBindingAsHost()],
|
|
403
|
+
}]
|
|
404
|
+
}], ctorParameters: () => [] });
|
|
405
|
+
|
|
406
|
+
class TweakpanePane {
|
|
407
|
+
constructor() {
|
|
408
|
+
this.top = input('8px');
|
|
409
|
+
this.right = input('8px');
|
|
410
|
+
this.left = input();
|
|
411
|
+
this.bottom = input();
|
|
412
|
+
this.width = input('256px');
|
|
413
|
+
this.container = input();
|
|
414
|
+
this.document = inject(DOCUMENT);
|
|
415
|
+
this.title = inject(TweakpaneTitle, { host: true });
|
|
416
|
+
this.folder = inject(TweakpaneFolder, { host: true });
|
|
417
|
+
this.pane = signal(null);
|
|
418
|
+
this.folder.isSelf = false;
|
|
419
|
+
afterNextRender(() => {
|
|
420
|
+
const container = this.container();
|
|
421
|
+
const paneOptions = {
|
|
422
|
+
title: this.title.title(),
|
|
423
|
+
expanded: this.folder.expanded(),
|
|
424
|
+
};
|
|
425
|
+
if (container) {
|
|
426
|
+
const containerElement = 'nativeElement' in container ? container.nativeElement : container;
|
|
427
|
+
if (containerElement) {
|
|
428
|
+
this.paneContainer = this.document.createElement('div');
|
|
429
|
+
this.paneContainer.classList.add(ClassName('dfw')());
|
|
430
|
+
containerElement.appendChild(this.paneContainer);
|
|
431
|
+
paneOptions.container = this.paneContainer;
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
const pane = new Pane(paneOptions);
|
|
435
|
+
this.pane.set(pane);
|
|
436
|
+
this.folder.parentFolder.set(pane);
|
|
437
|
+
});
|
|
438
|
+
inject(DestroyRef).onDestroy(() => {
|
|
439
|
+
const pane = this.pane();
|
|
440
|
+
if (!pane)
|
|
441
|
+
return;
|
|
442
|
+
if (this.paneContainer) {
|
|
443
|
+
this.paneContainer.remove();
|
|
444
|
+
}
|
|
445
|
+
pane.element.remove();
|
|
446
|
+
});
|
|
447
|
+
effect(() => {
|
|
448
|
+
this.updateStyleEffect('top');
|
|
449
|
+
});
|
|
450
|
+
effect(() => {
|
|
451
|
+
this.updateStyleEffect('right');
|
|
452
|
+
});
|
|
453
|
+
effect(() => {
|
|
454
|
+
this.updateStyleEffect('left');
|
|
455
|
+
});
|
|
456
|
+
effect(() => {
|
|
457
|
+
this.updateStyleEffect('bottom');
|
|
458
|
+
});
|
|
459
|
+
effect(() => {
|
|
460
|
+
this.updateStyleEffect('width');
|
|
461
|
+
});
|
|
462
|
+
}
|
|
463
|
+
updateStyleEffect(propertyName) {
|
|
464
|
+
const pane = this.pane();
|
|
465
|
+
if (!pane)
|
|
466
|
+
return;
|
|
467
|
+
const parentElement = pane.element.parentElement;
|
|
468
|
+
if (!parentElement)
|
|
469
|
+
return;
|
|
470
|
+
const property = this[propertyName];
|
|
471
|
+
if (!isSignal(property))
|
|
472
|
+
return;
|
|
473
|
+
const value = property();
|
|
474
|
+
if (!value)
|
|
475
|
+
return;
|
|
476
|
+
parentElement.style.setProperty(propertyName, typeof value === 'number' ? value + 'px' : value);
|
|
477
|
+
pane.refresh();
|
|
478
|
+
}
|
|
479
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpanePane, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
480
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.1", type: TweakpanePane, isStandalone: true, selector: "tweakpane-pane", inputs: { top: { classPropertyName: "top", publicName: "top", isSignal: true, isRequired: false, transformFunction: null }, right: { classPropertyName: "right", publicName: "right", isSignal: true, isRequired: false, transformFunction: null }, left: { classPropertyName: "left", publicName: "left", isSignal: true, isRequired: false, transformFunction: null }, bottom: { classPropertyName: "bottom", publicName: "bottom", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, container: { classPropertyName: "container", publicName: "container", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: TweakpaneFolder, inputs: ["expanded", "expanded"], outputs: ["expandedChange", "expandedChange"] }], ngImport: i0 }); }
|
|
481
|
+
}
|
|
482
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpanePane, decorators: [{
|
|
483
|
+
type: Directive,
|
|
484
|
+
args: [{
|
|
485
|
+
selector: 'tweakpane-pane',
|
|
486
|
+
hostDirectives: [{ directive: TweakpaneFolder, inputs: ['expanded'], outputs: ['expandedChange'] }],
|
|
487
|
+
}]
|
|
488
|
+
}], ctorParameters: () => [] });
|
|
489
|
+
|
|
490
|
+
class TweakpanePoint {
|
|
491
|
+
constructor() {
|
|
492
|
+
this.params = input({});
|
|
493
|
+
this.binding = inject(TweakpaneBinding);
|
|
494
|
+
this.binding.syncBindingParams(this.params);
|
|
495
|
+
}
|
|
496
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpanePoint, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
497
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.1", type: TweakpanePoint, isStandalone: true, selector: "tweakpane-point", inputs: { params: { classPropertyName: "params", publicName: "params", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
498
|
+
provideTweakBindingAsHost({
|
|
499
|
+
in: (value) => {
|
|
500
|
+
if (Array.isArray(value)) {
|
|
501
|
+
const [x, y, z, w] = value;
|
|
502
|
+
return { x, y, z, w };
|
|
503
|
+
}
|
|
504
|
+
return value;
|
|
505
|
+
},
|
|
506
|
+
out: (value) => {
|
|
507
|
+
const { x, y, z, w } = value;
|
|
508
|
+
return [x, y, z, w];
|
|
509
|
+
},
|
|
510
|
+
}),
|
|
511
|
+
], hostDirectives: [{ directive: TweakpaneBinding, inputs: ["value", "value"], outputs: ["valueChange", "valueChange"] }], ngImport: i0 }); }
|
|
512
|
+
}
|
|
513
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpanePoint, decorators: [{
|
|
514
|
+
type: Directive,
|
|
515
|
+
args: [{
|
|
516
|
+
selector: 'tweakpane-point',
|
|
517
|
+
hostDirectives: [{ directive: TweakpaneBinding, inputs: ['value'], outputs: ['valueChange'] }],
|
|
518
|
+
providers: [
|
|
519
|
+
provideTweakBindingAsHost({
|
|
520
|
+
in: (value) => {
|
|
521
|
+
if (Array.isArray(value)) {
|
|
522
|
+
const [x, y, z, w] = value;
|
|
523
|
+
return { x, y, z, w };
|
|
524
|
+
}
|
|
525
|
+
return value;
|
|
526
|
+
},
|
|
527
|
+
out: (value) => {
|
|
528
|
+
const { x, y, z, w } = value;
|
|
529
|
+
return [x, y, z, w];
|
|
530
|
+
},
|
|
531
|
+
}),
|
|
532
|
+
],
|
|
533
|
+
}]
|
|
534
|
+
}], ctorParameters: () => [] });
|
|
535
|
+
|
|
536
|
+
class TweakpaneText {
|
|
537
|
+
constructor() {
|
|
538
|
+
this.params = input({});
|
|
539
|
+
this.binding = inject(TweakpaneBinding);
|
|
540
|
+
this.binding.syncBindingParams(this.params);
|
|
541
|
+
}
|
|
542
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpaneText, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
543
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.1", type: TweakpaneText, isStandalone: true, selector: "tweakpane-text", inputs: { params: { classPropertyName: "params", publicName: "params", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTweakBindingAsHost()], hostDirectives: [{ directive: TweakpaneBinding, inputs: ["value", "value"], outputs: ["valueChange", "valueChange"] }], ngImport: i0 }); }
|
|
544
|
+
}
|
|
545
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: TweakpaneText, decorators: [{
|
|
546
|
+
type: Directive,
|
|
547
|
+
args: [{
|
|
548
|
+
selector: 'tweakpane-text',
|
|
549
|
+
hostDirectives: [{ directive: TweakpaneBinding, inputs: ['value'], outputs: ['valueChange'] }],
|
|
550
|
+
providers: [provideTweakBindingAsHost()],
|
|
551
|
+
}]
|
|
552
|
+
}], ctorParameters: () => [] });
|
|
553
|
+
|
|
554
|
+
/**
|
|
555
|
+
* Generated bundle index. Do not edit.
|
|
556
|
+
*/
|
|
557
|
+
|
|
558
|
+
export { NGT_TWEAK_BINDING_AS_HOST, TweakpaneBinding, TweakpaneBlade, TweakpaneButton, TweakpaneCheckbox, TweakpaneColor, TweakpaneDebounce, TweakpaneFolder, TweakpaneLabel, TweakpaneList, TweakpaneNumber, TweakpanePane, TweakpanePoint, TweakpaneText, TweakpaneTitle, provideTweakBindingAsHost };
|
|
559
|
+
//# sourceMappingURL=angular-three-tweakpane.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"angular-three-tweakpane.mjs","sources":["../../../../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/angular-three-tweakpane.ts"],"sourcesContent":["import { booleanAttribute, Directive, effect, inject, Injector, input, untracked } from '@angular/core';\nimport { BladeApi } from 'tweakpane';\n\n@Directive({ selector: 'tweakpane-blade' })\nexport class TweakpaneBlade {\n\thidden = input(false, { transform: booleanAttribute });\n\tdisabled = input(false, { transform: booleanAttribute });\n\n\tprivate injector = inject(Injector);\n\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\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@Directive()\nexport class TweakpaneDebounce {\n\tdebounce = input(150, { transform: numberAttribute });\n\n\tprivate injector = inject(Injector);\n\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@Directive()\nexport class TweakpaneTitle {\n\ttitle = input('TweakPane Title');\n\n\tprivate injector = inject(Injector);\n\n\tget snapshot() {\n\t\treturn untracked(this.title);\n\t}\n\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@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\texpanded = model(false);\n\n\tprivate title = inject(TweakpaneTitle);\n\tprivate blade = inject(TweakpaneBlade);\n\tprivate parent = inject(TweakpaneFolder, { skipSelf: true, optional: true });\n\tparentFolder = linkedSignal(() => this.parent?.folder());\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\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@Directive()\nexport class TweakpaneLabel {\n\tlabel = input('');\n\ttag = input('');\n\n\tprivate injector = inject(Injector);\n\n\tget snapshot() {\n\t\treturn { label: untracked(this.label), tag: untracked(this.tag) };\n\t}\n\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\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\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@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\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\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\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@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\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@Directive({\n\tselector: 'tweakpane-checkbox',\n\thostDirectives: [{ directive: TweakpaneBinding, inputs: ['value'], outputs: ['valueChange'] }],\n\tproviders: [provideTweakBindingAsHost()],\n})\nexport class TweakpaneCheckbox {\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@Directive({\n\tselector: 'tweakpane-color',\n\thostDirectives: [{ directive: TweakpaneBinding, inputs: ['value'], outputs: ['valueChange'] }],\n\tproviders: [provideTweakBindingAsHost()],\n})\nexport class TweakpaneColor {\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@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\tvalue = model.required<TOptionValue>();\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@Directive({\n\tselector: 'tweakpane-number',\n\thostDirectives: [{ directive: TweakpaneBinding, inputs: ['value'], outputs: ['valueChange'] }],\n\tproviders: [provideTweakBindingAsHost()],\n})\nexport class TweakpaneNumber {\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 { DOCUMENT } from '@angular/common';\nimport {\n\tafterNextRender,\n\tDestroyRef,\n\tDirective,\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 { TweakpaneFolder } from './folder';\nimport { TweakpaneTitle } from './title';\n\n@Directive({\n\tselector: 'tweakpane-pane',\n\thostDirectives: [{ directive: TweakpaneFolder, inputs: ['expanded'], outputs: ['expandedChange'] }],\n})\nexport class TweakpanePane {\n\ttop = input<string | number>('8px');\n\tright = input<string | number>('8px');\n\tleft = input<string | number>();\n\tbottom = input<string | number>();\n\twidth = input<string | number>('256px');\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 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\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\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\ntype AcceptableTweakPointValue =\n\t| [x: number, y: number, z?: number, w?: number]\n\t| { x: number; y: number; z?: number; w?: number };\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\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@Directive({\n\tselector: 'tweakpane-text',\n\thostDirectives: [{ directive: TweakpaneBinding, inputs: ['value'], outputs: ['valueChange'] }],\n\tproviders: [provideTweakBindingAsHost()],\n})\nexport class TweakpaneText {\n\tparams = input<StringInputParams>({});\n\n\tprivate binding = inject(TweakpaneBinding);\n\n\tconstructor() {\n\t\tthis.binding.syncBindingParams(this.params);\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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"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from './lib/binding';
|
|
2
|
+
export * from './lib/blade';
|
|
3
|
+
export * from './lib/button';
|
|
4
|
+
export * from './lib/checkbox';
|
|
5
|
+
export * from './lib/color';
|
|
6
|
+
export * from './lib/debounce';
|
|
7
|
+
export * from './lib/folder';
|
|
8
|
+
export * from './lib/label';
|
|
9
|
+
export * from './lib/list';
|
|
10
|
+
export * from './lib/number';
|
|
11
|
+
export * from './lib/pane';
|
|
12
|
+
export * from './lib/point';
|
|
13
|
+
export * from './lib/text';
|
|
14
|
+
export * from './lib/title';
|
package/lib/binding.d.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
import { BindingParams } from '@tweakpane/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./blade";
|
|
5
|
+
import * as i2 from "./debounce";
|
|
6
|
+
import * as i3 from "./label";
|
|
7
|
+
export declare const NGT_TWEAK_BINDING_AS_HOST: InjectionToken<true | {
|
|
8
|
+
in: (value: unknown) => unknown;
|
|
9
|
+
out: (value: unknown) => unknown;
|
|
10
|
+
} | null>;
|
|
11
|
+
export declare function provideTweakBindingAsHost<TIn, TOut>(inOut?: {
|
|
12
|
+
in: (value: TIn) => TOut;
|
|
13
|
+
out: (value: TOut) => TIn;
|
|
14
|
+
}): {
|
|
15
|
+
provide: InjectionToken<true | {
|
|
16
|
+
in: (value: unknown) => unknown;
|
|
17
|
+
out: (value: unknown) => unknown;
|
|
18
|
+
} | null>;
|
|
19
|
+
useValue: boolean | {
|
|
20
|
+
in: (value: TIn) => TOut;
|
|
21
|
+
out: (value: TOut) => TIn;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
export declare class TweakpaneBinding<TValue> {
|
|
25
|
+
value: import("@angular/core").ModelSignal<any>;
|
|
26
|
+
private debounce;
|
|
27
|
+
private label;
|
|
28
|
+
private blade;
|
|
29
|
+
private parent;
|
|
30
|
+
private injector;
|
|
31
|
+
private asHostDirective;
|
|
32
|
+
private bindingBaseParams;
|
|
33
|
+
private bindingParams;
|
|
34
|
+
private get bindableObject();
|
|
35
|
+
private bindingApi;
|
|
36
|
+
constructor();
|
|
37
|
+
syncBindingParams(params: () => BindingParams): import("@angular/core").EffectRef;
|
|
38
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TweakpaneBinding<any>, never>;
|
|
39
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TweakpaneBinding<any>, "tweakpane-binding", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, [{ directive: typeof i1.TweakpaneBlade; inputs: { "disabled": "disabled"; "hidden": "hidden"; }; outputs: {}; }, { directive: typeof i2.TweakpaneDebounce; inputs: { "debounce": "debounce"; }; outputs: {}; }, { directive: typeof i3.TweakpaneLabel; inputs: { "label": "label"; "tag": "tag"; }; outputs: {}; }]>;
|
|
40
|
+
}
|
package/lib/blade.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BladeApi } from 'tweakpane';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class TweakpaneBlade {
|
|
4
|
+
hidden: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
5
|
+
disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
6
|
+
private injector;
|
|
7
|
+
get snapshot(): {
|
|
8
|
+
hidden: boolean;
|
|
9
|
+
disabled: boolean;
|
|
10
|
+
};
|
|
11
|
+
sync(api: () => BladeApi | null): import("@angular/core").EffectRef;
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TweakpaneBlade, never>;
|
|
13
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TweakpaneBlade, "tweakpane-blade", never, { "hidden": { "alias": "hidden"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
14
|
+
}
|
package/lib/button.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { TpMouseEvent } from '@tweakpane/core';
|
|
2
|
+
import { ButtonApi } from 'tweakpane';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./title";
|
|
5
|
+
import * as i2 from "./label";
|
|
6
|
+
import * as i3 from "./blade";
|
|
7
|
+
export declare class TweakpaneButton {
|
|
8
|
+
click: import("@angular/core").OutputEmitterRef<TpMouseEvent<ButtonApi>>;
|
|
9
|
+
private title;
|
|
10
|
+
private label;
|
|
11
|
+
private blade;
|
|
12
|
+
private parent;
|
|
13
|
+
private buttonApi;
|
|
14
|
+
constructor();
|
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TweakpaneButton, never>;
|
|
16
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TweakpaneButton, "tweakpane-button", never, {}, { "click": "click"; }, never, never, true, [{ directive: typeof i1.TweakpaneTitle; inputs: { "title": "title"; }; outputs: {}; }, { directive: typeof i2.TweakpaneLabel; inputs: { "label": "label"; }; outputs: {}; }, { directive: typeof i3.TweakpaneBlade; inputs: { "hidden": "hidden"; "disabled": "disabled"; }; outputs: {}; }]>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BooleanInputParams } from 'tweakpane';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "./binding";
|
|
4
|
+
export declare class TweakpaneCheckbox {
|
|
5
|
+
params: import("@angular/core").InputSignal<BooleanInputParams>;
|
|
6
|
+
private binding;
|
|
7
|
+
constructor();
|
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TweakpaneCheckbox, never>;
|
|
9
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TweakpaneCheckbox, "tweakpane-checkbox", never, { "params": { "alias": "params"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.TweakpaneBinding; inputs: { "value": "value"; }; outputs: { "valueChange": "valueChange"; }; }]>;
|
|
10
|
+
}
|
package/lib/color.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ColorInputParams } from 'tweakpane';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "./binding";
|
|
4
|
+
export declare class TweakpaneColor {
|
|
5
|
+
params: import("@angular/core").InputSignal<ColorInputParams>;
|
|
6
|
+
private binding;
|
|
7
|
+
constructor();
|
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TweakpaneColor, never>;
|
|
9
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TweakpaneColor, "tweakpane-color", never, { "params": { "alias": "params"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.TweakpaneBinding; inputs: { "value": "value"; }; outputs: { "valueChange": "valueChange"; }; }]>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { TpChangeEvent } from 'tweakpane';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class TweakpaneDebounce {
|
|
4
|
+
debounce: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
5
|
+
private injector;
|
|
6
|
+
sync<T>(api: () => {
|
|
7
|
+
on: (evName: 'change', cb: (ev: TpChangeEvent<T>) => void) => void;
|
|
8
|
+
off: (evName: 'change', cb: (ev: TpChangeEvent<T>) => void) => void;
|
|
9
|
+
} | null, cb: (ev: TpChangeEvent<T>) => void): import("@angular/core").EffectRef;
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TweakpaneDebounce, never>;
|
|
11
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TweakpaneDebounce, never, never, { "debounce": { "alias": "debounce"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
12
|
+
}
|
package/lib/folder.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Signal } from '@angular/core';
|
|
2
|
+
import { FolderApi } from 'tweakpane';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./title";
|
|
5
|
+
import * as i2 from "./blade";
|
|
6
|
+
export declare class TweakpaneFolder {
|
|
7
|
+
expanded: import("@angular/core").ModelSignal<boolean>;
|
|
8
|
+
private title;
|
|
9
|
+
private blade;
|
|
10
|
+
private parent;
|
|
11
|
+
parentFolder: import("@angular/core").WritableSignal<FolderApi | null | undefined>;
|
|
12
|
+
folder: Signal<FolderApi | null>;
|
|
13
|
+
isSelf: boolean;
|
|
14
|
+
constructor();
|
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TweakpaneFolder, never>;
|
|
16
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TweakpaneFolder, "tweakpane-folder", never, { "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; }, never, never, true, [{ directive: typeof i1.TweakpaneTitle; inputs: { "title": "title"; }; outputs: {}; }, { directive: typeof i2.TweakpaneBlade; inputs: { "hidden": "hidden"; "disabled": "disabled"; }; outputs: {}; }]>;
|
|
17
|
+
}
|
package/lib/label.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class TweakpaneLabel {
|
|
3
|
+
label: import("@angular/core").InputSignal<string>;
|
|
4
|
+
tag: import("@angular/core").InputSignal<string>;
|
|
5
|
+
private injector;
|
|
6
|
+
get snapshot(): {
|
|
7
|
+
label: string;
|
|
8
|
+
tag: string;
|
|
9
|
+
};
|
|
10
|
+
sync(api: () => {
|
|
11
|
+
label?: string | null;
|
|
12
|
+
tag?: string | null;
|
|
13
|
+
} | null): import("@angular/core").EffectRef;
|
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TweakpaneLabel, never>;
|
|
15
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TweakpaneLabel, never, never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "tag": { "alias": "tag"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
16
|
+
}
|
package/lib/list.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./blade";
|
|
3
|
+
import * as i2 from "./debounce";
|
|
4
|
+
import * as i3 from "./label";
|
|
5
|
+
export declare class TweakpaneList<TOptionValue> {
|
|
6
|
+
value: import("@angular/core").ModelSignal<TOptionValue>;
|
|
7
|
+
options: import("@angular/core").InputSignal<Record<string, TOptionValue> | TOptionValue[]>;
|
|
8
|
+
private blade;
|
|
9
|
+
private debounce;
|
|
10
|
+
private label;
|
|
11
|
+
private parent;
|
|
12
|
+
private listOptions;
|
|
13
|
+
private listApi;
|
|
14
|
+
constructor();
|
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TweakpaneList<any>, never>;
|
|
16
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TweakpaneList<any>, "tweakpane-list", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, [{ directive: typeof i1.TweakpaneBlade; inputs: { "hidden": "hidden"; "disabled": "disabled"; }; outputs: {}; }, { directive: typeof i2.TweakpaneDebounce; inputs: { "debounce": "debounce"; }; outputs: {}; }, { directive: typeof i3.TweakpaneLabel; inputs: { "label": "label"; }; outputs: {}; }]>;
|
|
17
|
+
}
|
package/lib/number.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { NumberInputParams } from 'tweakpane';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "./binding";
|
|
4
|
+
export declare class TweakpaneNumber {
|
|
5
|
+
params: import("@angular/core").InputSignal<NumberInputParams>;
|
|
6
|
+
private binding;
|
|
7
|
+
constructor();
|
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TweakpaneNumber, never>;
|
|
9
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TweakpaneNumber, "tweakpane-number", never, { "params": { "alias": "params"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.TweakpaneBinding; inputs: { "value": "value"; }; outputs: { "valueChange": "valueChange"; }; }]>;
|
|
10
|
+
}
|
package/lib/pane.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ElementRef } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "./folder";
|
|
4
|
+
export declare class TweakpanePane {
|
|
5
|
+
top: import("@angular/core").InputSignal<string | number>;
|
|
6
|
+
right: import("@angular/core").InputSignal<string | number>;
|
|
7
|
+
left: import("@angular/core").InputSignal<string | number | undefined>;
|
|
8
|
+
bottom: import("@angular/core").InputSignal<string | number | undefined>;
|
|
9
|
+
width: import("@angular/core").InputSignal<string | number>;
|
|
10
|
+
container: import("@angular/core").InputSignal<HTMLElement | ElementRef<HTMLElement | undefined> | undefined>;
|
|
11
|
+
private document;
|
|
12
|
+
private title;
|
|
13
|
+
private folder;
|
|
14
|
+
private pane;
|
|
15
|
+
private paneContainer?;
|
|
16
|
+
constructor();
|
|
17
|
+
private updateStyleEffect;
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TweakpanePane, never>;
|
|
19
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TweakpanePane, "tweakpane-pane", never, { "top": { "alias": "top"; "required": false; "isSignal": true; }; "right": { "alias": "right"; "required": false; "isSignal": true; }; "left": { "alias": "left"; "required": false; "isSignal": true; }; "bottom": { "alias": "bottom"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "container": { "alias": "container"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.TweakpaneFolder; inputs: { "expanded": "expanded"; }; outputs: { "expandedChange": "expandedChange"; }; }]>;
|
|
20
|
+
}
|
package/lib/point.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Point2dInputParams, Point3dInputParams, Point4dInputParams } from 'tweakpane';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "./binding";
|
|
4
|
+
export declare class TweakpanePoint {
|
|
5
|
+
params: import("@angular/core").InputSignal<Point2dInputParams | Point3dInputParams | Point4dInputParams>;
|
|
6
|
+
private binding;
|
|
7
|
+
constructor();
|
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TweakpanePoint, never>;
|
|
9
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TweakpanePoint, "tweakpane-point", never, { "params": { "alias": "params"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.TweakpaneBinding; inputs: { "value": "value"; }; outputs: { "valueChange": "valueChange"; }; }]>;
|
|
10
|
+
}
|
package/lib/text.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { StringInputParams } from 'tweakpane';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "./binding";
|
|
4
|
+
export declare class TweakpaneText {
|
|
5
|
+
params: import("@angular/core").InputSignal<StringInputParams>;
|
|
6
|
+
private binding;
|
|
7
|
+
constructor();
|
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TweakpaneText, never>;
|
|
9
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TweakpaneText, "tweakpane-text", never, { "params": { "alias": "params"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.TweakpaneBinding; inputs: { "value": "value"; }; outputs: { "valueChange": "valueChange"; }; }]>;
|
|
10
|
+
}
|
package/lib/title.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class TweakpaneTitle {
|
|
3
|
+
title: import("@angular/core").InputSignal<string>;
|
|
4
|
+
private injector;
|
|
5
|
+
get snapshot(): string;
|
|
6
|
+
sync(api: () => {
|
|
7
|
+
title: string | undefined;
|
|
8
|
+
} | null): import("@angular/core").EffectRef;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TweakpaneTitle, never>;
|
|
10
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TweakpaneTitle, never, never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
11
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "angular-three-tweakpane",
|
|
3
|
+
"version": "4.0.0-next.100",
|
|
4
|
+
"publishConfig": {
|
|
5
|
+
"access": "public"
|
|
6
|
+
},
|
|
7
|
+
"type": "module",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "https://github.com/angular-threejs/angular-three/tree/main/libs/tweakpane"
|
|
11
|
+
},
|
|
12
|
+
"author": {
|
|
13
|
+
"name": "Chau Tran",
|
|
14
|
+
"email": "nartc7789@gmail.com",
|
|
15
|
+
"url": "https://nartc.me"
|
|
16
|
+
},
|
|
17
|
+
"description": "Tweakpane UI implementation for Angular Three",
|
|
18
|
+
"keywords": [
|
|
19
|
+
"angular",
|
|
20
|
+
"threejs",
|
|
21
|
+
"renderer",
|
|
22
|
+
"tweakpane"
|
|
23
|
+
],
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"peerDependencies": {
|
|
26
|
+
"@angular/common": ">=19.0.0 <20.0.0",
|
|
27
|
+
"@angular/core": ">=19.0.0 <20.0.0",
|
|
28
|
+
"@tweakpane/core": "^2.0.0",
|
|
29
|
+
"tweakpane": "^4.0.0"
|
|
30
|
+
},
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"tslib": "^2.7.0"
|
|
33
|
+
},
|
|
34
|
+
"module": "fesm2022/angular-three-tweakpane.mjs",
|
|
35
|
+
"typings": "index.d.ts",
|
|
36
|
+
"exports": {
|
|
37
|
+
"./package.json": {
|
|
38
|
+
"default": "./package.json"
|
|
39
|
+
},
|
|
40
|
+
".": {
|
|
41
|
+
"types": "./index.d.ts",
|
|
42
|
+
"default": "./fesm2022/angular-three-tweakpane.mjs"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"sideEffects": false
|
|
46
|
+
}
|