lexgui 8.2.5 → 8.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/build/components/NodeTree.d.ts +51 -51
  2. package/build/components/Tabs.d.ts +1 -0
  3. package/build/core/Namespace.js +1 -1
  4. package/build/core/Namespace.js.map +1 -1
  5. package/build/extensions/AssetView.d.ts +138 -138
  6. package/build/extensions/AssetView.js +1433 -1433
  7. package/build/extensions/CodeEditor.d.ts +466 -363
  8. package/build/extensions/CodeEditor.js +3768 -4638
  9. package/build/extensions/CodeEditor.js.map +1 -1
  10. package/build/extensions/DocMaker.d.ts +28 -28
  11. package/build/extensions/DocMaker.js +363 -363
  12. package/build/extensions/Timeline.d.ts +2 -2
  13. package/build/extensions/Timeline.js +28 -15
  14. package/build/extensions/Timeline.js.map +1 -1
  15. package/build/extensions/VideoEditor.d.ts +1 -1
  16. package/build/extensions/VideoEditor.js +15 -7
  17. package/build/extensions/VideoEditor.js.map +1 -1
  18. package/build/extensions/index.js +1 -1
  19. package/build/lexgui.all.js +6169 -6960
  20. package/build/lexgui.all.js.map +1 -1
  21. package/build/lexgui.all.min.js +1 -1
  22. package/build/lexgui.all.module.js +6169 -6961
  23. package/build/lexgui.all.module.js.map +1 -1
  24. package/build/lexgui.all.module.min.js +1 -1
  25. package/build/lexgui.css +7534 -7459
  26. package/build/lexgui.js +4475 -205
  27. package/build/lexgui.js.map +1 -1
  28. package/build/lexgui.min.css +1 -1
  29. package/build/lexgui.min.js +1 -1
  30. package/build/lexgui.module.js +4475 -205
  31. package/build/lexgui.module.js.map +1 -1
  32. package/build/lexgui.module.min.js +1 -1
  33. package/changelog.md +31 -1
  34. package/examples/code-editor.html +88 -16
  35. package/package.json +1 -1
package/changelog.md CHANGED
@@ -2,7 +2,37 @@
2
2
 
3
3
  ## dev
4
4
 
5
- ## 8.2.5 (master)
5
+ ## 8.3.0 (master)
6
+
7
+ CodeEditor:
8
+ Added `Tabs.setIcon(name, icon)`.
9
+ Added DropdownMenu item option `useKbdSpecialKeys` (true).
10
+ Added `LX.requestFileAsync` util.
11
+ Added support for AlertDialog `options.cancelCallback`.
12
+ Replace `options.addDefault` for `options.useDefaultContextMenuItems (true)` in NodeTree.
13
+ Added support for `options.contextMenuTitle` in NodeTree.
14
+ Fixed Progress component default `blue-500` color.
15
+
16
+ Full refactor for CodeEditor:
17
+ - Improved robustness and fixed several minor bugs.
18
+ - Improved symbol detection.
19
+ - Added support to write Backtick char (`).
20
+ - Added support for `HLSL` language.
21
+ - Added `options.onCodeChange` to receive callback on code document changed.
22
+ - `options.files` moved to `CodeEditor.loadFiles`.
23
+ - Removed legacy `options.onsave` and `options.onrun`.
24
+ - Disabled virtual scrolling until next version.
25
+ - Next version will add back `detectLanguage`.
26
+
27
+ Timeline:
28
+ - Selected Tree entries now use the primary color.
29
+ - Removed `onTrackTreeEvent`.
30
+ - Added `setTrackTreeEventListener`. It sets a specific callback for the tree component.
31
+
32
+ VideoEditor
33
+ - `controlsLayout` of the constructor now expects an object that may contain `type`, `height` and/or `l1TimelineHeight`.
34
+
35
+ ## 8.2.5
6
36
 
7
37
  Added some WGSL keywords to DocMaker code snippets.
8
38
  `NodeTree.select` now supports using `path` for select items.
@@ -69,9 +69,91 @@
69
69
  // skipInfo: true,
70
70
  fileExplorer: fileExplorer,
71
71
  explorerName: "EXPLORER",
72
+ highlight: 'TypeScript',
72
73
  // statusShowFontSizeZoom: false,
73
74
  // skipTabs: true,
74
- files: [
75
+ xonCreateFile: ( instance ) => {
76
+ return { name: "new_shader.wgsl", language: "WGSL" }
77
+ },
78
+ onCtrlSpace: () => console.log("Ctrl + Space pressed"),
79
+ onRun: () => console.log("Script running"),
80
+ onSave: () => console.log("Script saved"),
81
+ onContextMenu: ( editor, content, event ) => {
82
+ if( !content ) return;
83
+ return [
84
+ { path: "Custom Action", callback: () => console.log( content ) }
85
+ ];
86
+ },
87
+ });
88
+
89
+ editor.setText(`// Example TypeScript file for syntax highlighting
90
+
91
+ // Type alias and interface
92
+ type ID = number | string;
93
+
94
+ interface Person {
95
+ id: ID;
96
+ name: string;
97
+ age?: number;
98
+ }
99
+
100
+ // Enum
101
+ enum Role {
102
+ Admin,
103
+ User,
104
+ Guest
105
+ }
106
+
107
+ // Class with generics and inheritance
108
+ class User<T extends Person> {
109
+ private role: Role;
110
+
111
+ constructor(public data: T, role: Role = Role.User) {
112
+ this.role = role;
113
+ }
114
+
115
+ get id(): ID {
116
+ return this.data.id;
117
+ }
118
+
119
+ printInfo(): void {
120
+ console.log(\`\${this.data.name} (\${Role[this.role]})\`);
121
+ }
122
+ }
123
+
124
+ // Generic function
125
+ function identity<T>(value: T): T {
126
+ return value;
127
+ }
128
+
129
+ // Arrow function and async/await
130
+ const fetchUser = async (id: ID): Promise<Person> => {
131
+ return { id, name: "Alice", age: 25 };
132
+ };
133
+
134
+ // Union, intersection, type assertions
135
+ let input: string | number = "42";
136
+ let result = (input as string).toUpperCase();
137
+
138
+ // Arrays, tuples
139
+ let nums: number[] = [1, 2, 3];
140
+ let pair: [string, number] = ["age", 30];
141
+
142
+ // Map, Set (built-ins)
143
+ const map = new Map<string, number>();
144
+ map.set("one", 1);
145
+
146
+ const set = new Set<ID>([1, "two"]);
147
+
148
+ // Usage
149
+ (async () => {
150
+ const person = await fetchUser(1);
151
+ const user = new User(person, Role.Admin);
152
+ user.printInfo();
153
+ console.log(identity(nums));
154
+ })();`);
155
+
156
+ editor.loadFiles( [
75
157
  "../data/js_sample.js",
76
158
  "../data/ts_sample.ts",
77
159
  "../data/json_sample.json",
@@ -87,24 +169,14 @@
87
169
  "../data/frag.wgsl",
88
170
  "../changelog.md",
89
171
  "../index.html",
90
- ],
91
- onFilesLoaded: ( instance, loadedTabs, numFilesLoaded ) => {
172
+ "../README.md"
173
+ ], ( instance, results, numFilesLoaded ) => {
92
174
  console.log( `CodeEditor: ${ numFilesLoaded } files loaded!` );
93
175
  instance.loadTab("js_sample.js");
94
- },
95
- xonCreateFile: ( instance ) => {
96
- return { name: "new_shader.wgsl", language: "WGSL" }
97
- },
98
- onContextMenu: ( editor, content, event ) => {
99
- if( !content ) return;
100
- return [
101
- { path: "Custom Action", callback: () => console.log( content ) }
102
- ];
103
- },
104
- });
176
+ } );
105
177
 
106
- // editor.loadFile("../data/animation.bml", { language: "JSON" });
107
- // editor.loadFile("../data/CMakeLists.txt", { language: "CMake" });
178
+ editor.loadFile("../data/animation.bml", { language: "JSON" });
179
+ editor.loadFile("../data/CMakeLists.txt", { language: "CMake" });
108
180
 
109
181
  if( !fileExplorer )
110
182
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lexgui",
3
- "version": "8.2.5",
3
+ "version": "8.3.0",
4
4
  "description": "JS library to create web graphical user interfaces",
5
5
  "type": "module",
6
6
  "main": "./build/lexgui.js",