dazscript-framework 0.1.15 → 0.1.16
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 +365 -93
- package/babel.config.js +33 -33
- package/dist/babel/trace-babel-plugin.js +243 -243
- package/dist/babel/trace-log-babel-plugin.js +164 -164
- package/dist/scripts/install-generator.js +185 -185
- package/package.json +72 -70
- package/src/common/dz-dump.ts +120 -120
- package/src/common/log.ts +56 -56
- package/src/common/trace.ts +26 -26
- package/src/core/action-decorator.ts +15 -15
- package/src/core/base-script.ts +30 -30
- package/src/core/custom-action.ts +11 -11
- package/src/core/global.ts +4 -4
- package/src/dialog/basic-dialog.ts +40 -32
- package/src/dialog/builders/button-builder.ts +52 -52
- package/src/dialog/builders/checkbox-builder.ts +29 -29
- package/src/dialog/builders/color-picker-builder.ts +35 -35
- package/src/dialog/builders/combo-box-builder.ts +38 -35
- package/src/dialog/builders/combo-edit-builder.ts +35 -35
- package/src/dialog/builders/dialog-builder.ts +49 -49
- package/src/dialog/builders/groupbox-builder.ts +121 -82
- package/src/dialog/builders/label-builder.ts +33 -28
- package/src/dialog/builders/layout-builder.ts +59 -59
- package/src/dialog/builders/line-edit-builder.ts +124 -119
- package/src/dialog/builders/list-box-builder.ts +103 -0
- package/src/dialog/builders/list-view-builder.ts +396 -328
- package/src/dialog/builders/node-selection-builder.ts +55 -55
- package/src/dialog/builders/path-combo-box-builder.ts +24 -24
- package/src/dialog/builders/popup-menu-builder.ts +46 -46
- package/src/dialog/builders/radio-builder.ts +42 -42
- package/src/dialog/builders/slider-builder.ts +39 -22
- package/src/dialog/builders/splitter-builder.ts +88 -88
- package/src/dialog/builders/tab-builder.ts +120 -106
- package/src/dialog/builders/widget-builder.ts +136 -124
- package/src/dialog/builders/widgets-builder.ts +140 -135
- package/src/dialog/input-dialog.ts +30 -27
- package/src/dialog/input-validator.ts +8 -8
- package/src/dialog/selection-dialog.ts +47 -0
- package/src/dialog/shared.ts +8 -8
- package/src/helpers/action-helper.ts +214 -81
- package/src/helpers/array-helper.ts +170 -145
- package/src/helpers/camera-helper.ts +12 -12
- package/src/helpers/custom-action-helper.ts +176 -176
- package/src/helpers/directory-helper.ts +14 -0
- package/src/helpers/file-helper.ts +90 -90
- package/src/helpers/http-helper.ts +186 -0
- package/src/helpers/input-helper.ts +18 -18
- package/src/helpers/list-view-helper.ts +105 -89
- package/src/helpers/menu-helper.ts +28 -28
- package/src/helpers/message-box-helper.ts +25 -15
- package/src/helpers/node-helper.ts +461 -236
- package/src/helpers/number-helper.ts +10 -10
- package/src/helpers/numeric-property-helper.ts +91 -91
- package/src/helpers/object-helper.ts +2 -2
- package/src/helpers/pane-helper.ts +28 -20
- package/src/helpers/progress-helper.ts +51 -33
- package/src/helpers/property-helper.ts +61 -52
- package/src/helpers/record-helper.ts +16 -16
- package/src/helpers/scene-helper.ts +144 -94
- package/src/helpers/script-helper.ts +15 -15
- package/src/helpers/skeleton-helper.ts +26 -26
- package/src/helpers/splitter-helper.ts +8 -8
- package/src/helpers/string-helper.ts +39 -31
- package/src/helpers/surface-helper.ts +5 -5
- package/src/helpers/undo-helper.ts +8 -8
- package/src/helpers/viewport-helper.ts +21 -8
- package/src/lib/delayed.ts +38 -38
- package/src/lib/dictionary.ts +3 -0
- package/src/lib/frame-keys.ts +67 -67
- package/src/lib/guid.ts +2 -2
- package/src/lib/menu-item.ts +10 -9
- package/src/lib/observable.ts +147 -94
- package/src/lib/set.ts +50 -25
- package/src/lib/settings.ts +112 -104
- package/src/lib/tree-node.ts +149 -145
- package/src/samples/config.ts +2 -2
- package/src/samples/hello-world.dsa.ts +12 -12
- package/src/samples/sample-dialog.dsa.ts +51 -51
- package/src/samples/sample-dialog.ts +48 -48
- package/src/shared/set-keyboard-shortcut.ts +146 -102
- package/tsconfig.json +116 -116
- package/webpack.config.js +70 -70
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { Dictionary } from '@dsf/lib/dictionary';
|
|
2
|
+
import { Observable } from '@dsf/lib/observable';
|
|
3
|
+
import { createWidget, WidgetBuilderBase } from './widget-builder';
|
|
4
|
+
import { WidgetBuilderContext } from './widgets-builder';
|
|
5
|
+
|
|
6
|
+
export class ListBoxBuilder extends WidgetBuilderBase<DzListBox> {
|
|
7
|
+
private _items: Dictionary<number, string> | null = null
|
|
8
|
+
private _mode: 'single' | 'multi' | 'extended' = 'single'
|
|
9
|
+
|
|
10
|
+
constructor(context: WidgetBuilderContext) {
|
|
11
|
+
super(createWidget(context).build(DzListBox))
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
items(items$: string[] | Observable<string[]>): this {
|
|
15
|
+
this.widget.clear()
|
|
16
|
+
if (items$ instanceof Observable) {
|
|
17
|
+
this._items = {}
|
|
18
|
+
items$.value.forEach((item, idx) => {
|
|
19
|
+
this._items[idx] = item
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
const setItems = (items: string[]) => {
|
|
23
|
+
this.widget.clear()
|
|
24
|
+
items.forEach((item, idx) => {
|
|
25
|
+
this.widget.insertItem(item)
|
|
26
|
+
})
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
setItems(items$.value)
|
|
30
|
+
items$.connect(value => {
|
|
31
|
+
this.widget.clear()
|
|
32
|
+
setItems(value)
|
|
33
|
+
})
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
this._items = {}
|
|
37
|
+
items$.forEach((item, idx) => {
|
|
38
|
+
this._items[idx] = item
|
|
39
|
+
this.widget.insertItem(item)
|
|
40
|
+
})
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return this
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
mode(mode: 'single' | 'multi' | 'extended'): this {
|
|
47
|
+
this._mode = mode
|
|
48
|
+
switch (mode) {
|
|
49
|
+
case 'single':
|
|
50
|
+
this.widget.selectionMode = DzListBox.Single
|
|
51
|
+
break
|
|
52
|
+
case 'multi':
|
|
53
|
+
this.widget.selectionMode = DzListBox.Multi
|
|
54
|
+
break
|
|
55
|
+
case 'extended':
|
|
56
|
+
this.widget.selectionMode = DzListBox.Extended
|
|
57
|
+
break
|
|
58
|
+
}
|
|
59
|
+
return this
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
selected(selected$: Observable<string[]>): this {
|
|
63
|
+
const setSelected = (selected: string[] | null) => {
|
|
64
|
+
this.widget.clearSelection()
|
|
65
|
+
if (selected$.value?.length > 0 && this._items) {
|
|
66
|
+
selected.forEach(sel => {
|
|
67
|
+
const idx = Object.keys(this._items)
|
|
68
|
+
.map(key => this._items[Number(key)])
|
|
69
|
+
.indexOf(sel)
|
|
70
|
+
if (idx >= 0) {
|
|
71
|
+
this.widget.setSelected(idx, true)
|
|
72
|
+
}
|
|
73
|
+
})
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
this.widget.currentChanged.scriptConnect((idx) => {
|
|
78
|
+
if (!selected$ || !this._items) return
|
|
79
|
+
if (this._mode === 'single') {
|
|
80
|
+
const item = this._items[idx]
|
|
81
|
+
selected$.value = item ? [item] : []
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
selected$.value = Object.keys(this._items)
|
|
85
|
+
.map(key => this.widget.isSelected(Number(key)) ? this._items[Number(key)] : null)
|
|
86
|
+
.filter((item): item is string => item !== null)
|
|
87
|
+
}
|
|
88
|
+
})
|
|
89
|
+
|
|
90
|
+
if (selected$.value?.length === 0) {
|
|
91
|
+
return this
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
setSelected(selected$.value)
|
|
95
|
+
|
|
96
|
+
return this
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
build(then?: (listBox: DzListBox) => void) {
|
|
100
|
+
then?.(this.widget)
|
|
101
|
+
return this.widget
|
|
102
|
+
}
|
|
103
|
+
}
|