lexgui 8.1.2 → 8.2.1

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 (65) hide show
  1. package/build/components/AlertDialog.d.ts +7 -7
  2. package/build/components/Avatar.d.ts +15 -0
  3. package/build/components/Counter.d.ts +9 -9
  4. package/build/components/Dialog.d.ts +20 -20
  5. package/build/components/Footer.d.ts +14 -14
  6. package/build/components/Menubar.d.ts +59 -59
  7. package/build/components/NodeTree.d.ts +26 -1
  8. package/build/components/Vector.d.ts +1 -0
  9. package/build/core/Area.d.ts +143 -143
  10. package/build/core/Event.d.ts +0 -20
  11. package/build/core/Namespace.js +1 -1
  12. package/build/core/Namespace.js.map +1 -1
  13. package/build/core/Panel.d.ts +538 -538
  14. package/build/extensions/AssetView.d.ts +137 -136
  15. package/build/extensions/AssetView.js +193 -155
  16. package/build/extensions/AssetView.js.map +1 -1
  17. package/build/extensions/Audio.js +163 -163
  18. package/build/extensions/Audio.js.map +1 -1
  19. package/build/extensions/CodeEditor.d.ts +358 -350
  20. package/build/extensions/CodeEditor.js +302 -270
  21. package/build/extensions/CodeEditor.js.map +1 -1
  22. package/build/extensions/DocMaker.d.ts +27 -27
  23. package/build/extensions/DocMaker.js +15 -11
  24. package/build/extensions/DocMaker.js.map +1 -1
  25. package/build/extensions/GraphEditor.js +2754 -2760
  26. package/build/extensions/GraphEditor.js.map +1 -1
  27. package/build/extensions/ImUi.js +227 -227
  28. package/build/extensions/Timeline.d.ts +668 -670
  29. package/build/extensions/Timeline.js +71 -79
  30. package/build/extensions/Timeline.js.map +1 -1
  31. package/build/extensions/VideoEditor.d.ts +38 -16
  32. package/build/extensions/VideoEditor.js +294 -180
  33. package/build/extensions/VideoEditor.js.map +1 -1
  34. package/build/extensions/index.d.ts +8 -8
  35. package/build/extensions/index.js +10 -10
  36. package/build/index.all.d.ts +2 -2
  37. package/build/index.css.d.ts +3 -4
  38. package/build/index.d.ts +57 -56
  39. package/build/lexgui.all.js +1877 -1520
  40. package/build/lexgui.all.js.map +1 -1
  41. package/build/lexgui.all.min.js +1 -1
  42. package/build/lexgui.all.module.js +1875 -1516
  43. package/build/lexgui.all.module.js.map +1 -1
  44. package/build/lexgui.all.module.min.js +1 -1
  45. package/build/lexgui.css +6123 -5556
  46. package/build/lexgui.js +997 -814
  47. package/build/lexgui.js.map +1 -1
  48. package/build/lexgui.min.css +2 -3
  49. package/build/lexgui.min.js +1 -1
  50. package/build/lexgui.module.js +995 -810
  51. package/build/lexgui.module.js.map +1 -1
  52. package/build/lexgui.module.min.js +1 -1
  53. package/changelog.md +65 -2
  54. package/demo.js +167 -65
  55. package/examples/all-components.html +40 -55
  56. package/examples/asset-view.html +27 -0
  57. package/examples/code-editor.html +12 -1
  58. package/examples/dialogs.html +13 -2
  59. package/examples/editor.html +9 -49
  60. package/examples/index.html +2 -2
  61. package/examples/side-bar.html +1 -1
  62. package/examples/timeline.html +2 -2
  63. package/examples/video-editor.html +1 -1
  64. package/examples/video-editor2.html +2 -2
  65. package/package.json +7 -4
@@ -11,7 +11,6 @@ LX.registerIcon('TimelineLockOpen', '<svg xmlns="http://www.w3.org/2000/svg" wid
11
11
  const Area = LX.Area;
12
12
  const Panel = LX.Panel;
13
13
  const Dialog = LX.Dialog;
14
- LX.TreeEvent;
15
14
  /**
16
15
  * @class Timeline
17
16
  * @description Agnostic timeline, do not impose any timeline content. Renders to a canvas
@@ -20,8 +19,7 @@ class Timeline {
20
19
  static BACKGROUND_COLOR;
21
20
  static TRACK_COLOR_PRIMARY;
22
21
  static TRACK_COLOR_SECONDARY;
23
- static TRACK_COLOR_TERCIARY;
24
- static TRACK_COLOR_QUATERNARY;
22
+ static TRACK_COLOR_TERTIARY;
25
23
  static TRACK_SELECTED;
26
24
  static TRACK_SELECTED_LIGHT;
27
25
  static FONT;
@@ -181,20 +179,19 @@ class Timeline {
181
179
  * updates theme ( light - dark ) based on LX's current theme
182
180
  */
183
181
  function updateTheme() {
184
- Timeline.BACKGROUND_COLOR = LX.getThemeColor('global-blur-background');
185
- Timeline.TRACK_COLOR_PRIMARY = LX.getThemeColor('global-color-primary');
186
- Timeline.TRACK_COLOR_SECONDARY = LX.getThemeColor('global-color-secondary');
187
- Timeline.TRACK_COLOR_TERCIARY = LX.getThemeColor('global-color-terciary');
188
- Timeline.TRACK_COLOR_QUATERNARY = LX.getThemeColor('global-color-quaternary');
189
- Timeline.FONT = LX.getThemeColor('global-font');
190
- Timeline.FONT_COLOR_PRIMARY = LX.getThemeColor('global-text-primary');
191
- Timeline.FONT_COLOR_TERTIARY = LX.getThemeColor('global-text-tertiary');
192
- Timeline.FONT_COLOR_QUATERNARY = LX.getThemeColor('global-text-quaternary');
193
- Timeline.KEYFRAME_COLOR = LX.getThemeColor('lxTimeline-keyframe');
194
- Timeline.KEYFRAME_COLOR_SELECTED = Timeline.KEYFRAME_COLOR_HOVERED = LX.getThemeColor('lxTimeline-keyframe-selected');
195
- Timeline.KEYFRAME_COLOR_LOCK = LX.getThemeColor('lxTimeline-keyframe-locked');
196
- Timeline.KEYFRAME_COLOR_EDITED = LX.getThemeColor('lxTimeline-keyframe-edited');
197
- Timeline.KEYFRAME_COLOR_INACTIVE = LX.getThemeColor('lxTimeline-keyframe-inactive');
182
+ Timeline.BACKGROUND_COLOR = LX.getCSSVariable('background-blur');
183
+ Timeline.TRACK_COLOR_PRIMARY = LX.getCSSVariable('card');
184
+ Timeline.TRACK_COLOR_SECONDARY = LX.getCSSVariable('secondary');
185
+ Timeline.TRACK_COLOR_TERTIARY = LX.getCSSVariable('accent');
186
+ Timeline.FONT = LX.getCSSVariable('global-font');
187
+ Timeline.FONT_COLOR_PRIMARY = LX.getCSSVariable('foreground');
188
+ Timeline.FONT_COLOR_TERTIARY = LX.getCSSVariable('primary');
189
+ Timeline.FONT_COLOR_QUATERNARY = LX.getCSSVariable('muted-foreground');
190
+ Timeline.KEYFRAME_COLOR = LX.getCSSVariable('lxTimeline-keyframe');
191
+ Timeline.KEYFRAME_COLOR_SELECTED = Timeline.KEYFRAME_COLOR_HOVERED = LX.getCSSVariable('lxTimeline-keyframe-selected');
192
+ Timeline.KEYFRAME_COLOR_LOCK = LX.getCSSVariable('lxTimeline-keyframe-locked');
193
+ Timeline.KEYFRAME_COLOR_EDITED = LX.getCSSVariable('lxTimeline-keyframe-edited');
194
+ Timeline.KEYFRAME_COLOR_INACTIVE = LX.getCSSVariable('lxTimeline-keyframe-inactive');
198
195
  }
199
196
  this.updateTheme = updateTheme.bind(this);
200
197
  LX.addSignal('@on_new_color_scheme', this.updateTheme);
@@ -243,7 +240,7 @@ class Timeline {
243
240
  }, { buttonClass: 'accept', title: 'Stop', hideName: true, icon: 'Stop@solid' });
244
241
  header.addButton('loopBtn', '', (value, event) => {
245
242
  this.setLoopMode(!this.loop);
246
- }, { selectable: true, selected: this.loop, title: 'Loop', hideName: true, icon: 'RefreshCw' });
243
+ }, { selectable: true, selected: this.loop, title: 'Loop', hideName: true, icon: 'RefreshCw', buttonClass: 'h-8' });
247
244
  if (this.onCreateControlsButtons) {
248
245
  this.onCreateControlsButtons(header);
249
246
  }
@@ -319,8 +316,7 @@ class Timeline {
319
316
  this.leftPanel.clear();
320
317
  const panel = this.leftPanel;
321
318
  panel.sameLine();
322
- let titleComponent = panel.addTitle('Tracks', { style: { background: 'none' },
323
- className: 'fg-secondary text-lg px-4' });
319
+ let titleComponent = panel.addTitle('Tracks', { style: { background: 'none' }, className: 'text-lg px-4' });
324
320
  let title = titleComponent.root;
325
321
  if (!this.disableNewTracks) {
326
322
  panel.addButton('addTrackBtn', '', (value, event) => {
@@ -341,28 +337,28 @@ class Timeline {
341
337
  if (this.animationClip && this.selectedItems.length) {
342
338
  treeTracks = this.generateSelectedItemsTreeData();
343
339
  }
344
- this.trackTreesComponent = p.addTree(null, treeTracks, { filter: false, rename: false, draggable: false,
345
- onevent: (e) => {
346
- switch (e.type) {
347
- case LX.TreeEvent.NODE_SELECTED:
348
- if (!e.event.shiftKey) {
349
- this.deselectAllTracks(false); // no need to update left panel
350
- }
351
- if (e.node.trackData) {
352
- const flag = e.event.shiftKey ? !e.node.trackData.isSelected : true;
353
- this.setTrackSelection(e.node.trackData.trackIdx, flag, false, false); // do callback, do not update left panel
354
- }
355
- break;
356
- case LX.TreeEvent.NODE_VISIBILITY:
357
- if (e.node.trackData) {
358
- this.setTrackState(e.node.trackData.trackIdx, e.value, false, false); // do not update left panel
359
- }
360
- break;
361
- }
362
- if (this.onTrackTreeEvent) {
363
- this.onTrackTreeEvent(e);
364
- }
365
- } });
340
+ this.trackTreesComponent = p.addTree(null, treeTracks, { filter: false, rename: false, draggable: false });
341
+ this.trackTreesComponent.on('select', (event, resolve) => {
342
+ const node = event.items[0];
343
+ if (!event.domEvent.shiftKey) {
344
+ this.deselectAllTracks(false); // no need to update left panel
345
+ }
346
+ if (node.trackData) {
347
+ const flag = event.domEvent.shiftKey ? !node.trackData.isSelected : true;
348
+ this.setTrackSelection(node.trackData.trackIdx, flag, false, false); // do callback, do not update left panel
349
+ }
350
+ });
351
+ this.trackTreesComponent.on('visibleChanged', (event, resolve) => {
352
+ const node = event.items[0];
353
+ if (node.trackData) {
354
+ this.setTrackState(node.trackData.trackIdx, node.visible, false, false); // do not update left panel
355
+ }
356
+ });
357
+ // Not used!
358
+ // if ( this.onTrackTreeEvent )
359
+ // {
360
+ // this.onTrackTreeEvent( e );
361
+ // }
366
362
  const that = this;
367
363
  this.trackTreesComponent.innerTree._refresh = this.trackTreesComponent.innerTree.refresh;
368
364
  this.trackTreesComponent.innerTree.refresh = function (newData, selectedId) {
@@ -546,7 +542,7 @@ class Timeline {
546
542
  ctx.fillRect(0, treeOffset - rectsOffset + i * line_height, w, line_height);
547
543
  }
548
544
  // bg lines
549
- ctx.strokeStyle = Timeline.TRACK_COLOR_TERCIARY;
545
+ ctx.strokeStyle = Timeline.TRACK_COLOR_TERTIARY;
550
546
  ctx.beginPath();
551
547
  let pos = this.timeToX(0);
552
548
  if (pos < 0)
@@ -1220,8 +1216,8 @@ class Timeline {
1220
1216
  const treeTracks = [];
1221
1217
  for (let i = 0; i < this.selectedItems.length; i++) {
1222
1218
  const track = this.selectedItems[i];
1223
- treeTracks.push({ trackData: track, id: track.id, skipVisibility: this.skipVisibility,
1224
- visible: track.active, children: [], actions: this.skipLock ? null : [{
1219
+ treeTracks.push({ trackData: track, id: track.id, skipVisibility: this.skipVisibility, visible: track.active, children: [],
1220
+ actions: this.skipLock ? null : [{
1225
1221
  'name': 'Lock edition',
1226
1222
  'icon': (track.locked ? 'TimelineLock' : 'TimelineLockOpen'),
1227
1223
  'swap': (track.locked ? 'TimelineLockOpen' : 'TimelineLock'),
@@ -1263,30 +1259,29 @@ class Timeline {
1263
1259
  return animationClip;
1264
1260
  }
1265
1261
  }
1266
- Timeline.BACKGROUND_COLOR = LX.getThemeColor('global-blur-background');
1267
- Timeline.TRACK_COLOR_PRIMARY = LX.getThemeColor('global-color-primary');
1268
- Timeline.TRACK_COLOR_SECONDARY = LX.getThemeColor('global-color-secondary');
1269
- Timeline.TRACK_COLOR_TERCIARY = LX.getThemeColor('global-color-terciary');
1270
- Timeline.TRACK_COLOR_QUATERNARY = LX.getThemeColor('global-color-quaternary');
1271
- Timeline.TRACK_SELECTED = LX.getThemeColor('global-color-accent');
1272
- Timeline.TRACK_SELECTED_LIGHT = LX.getThemeColor('global-color-accent-light');
1273
- Timeline.FONT = LX.getThemeColor('global-font');
1274
- Timeline.FONT_COLOR_PRIMARY = LX.getThemeColor('global-text-primary');
1275
- Timeline.FONT_COLOR_TERTIARY = LX.getThemeColor('global-text-tertiary');
1276
- Timeline.FONT_COLOR_QUATERNARY = LX.getThemeColor('global-text-quaternary');
1277
- Timeline.TIME_MARKER_COLOR = LX.getThemeColor('global-color-accent');
1262
+ Timeline.BACKGROUND_COLOR = LX.getCSSVariable('background-blur');
1263
+ Timeline.TRACK_COLOR_PRIMARY = LX.getCSSVariable('card');
1264
+ Timeline.TRACK_COLOR_SECONDARY = LX.getCSSVariable('secondary');
1265
+ Timeline.TRACK_COLOR_TERTIARY = LX.getCSSVariable('accent');
1266
+ Timeline.TRACK_SELECTED = LX.getCSSVariable('color-blue-600');
1267
+ Timeline.TRACK_SELECTED_LIGHT = LX.getCSSVariable('color-blue-400');
1268
+ Timeline.FONT = LX.getCSSVariable('global-font');
1269
+ Timeline.FONT_COLOR_PRIMARY = LX.getCSSVariable('foreground');
1270
+ Timeline.FONT_COLOR_TERTIARY = LX.getCSSVariable('primary');
1271
+ Timeline.FONT_COLOR_QUATERNARY = LX.getCSSVariable('muted-foreground');
1272
+ Timeline.TIME_MARKER_COLOR = LX.getCSSVariable('color-blue-600');
1278
1273
  Timeline.TIME_MARKER_COLOR_TEXT = '#ffffff';
1279
- LX.setThemeColor('lxTimeline-keyframe', 'light-dark(#2d69da,#2d69da )');
1280
- LX.setThemeColor('lxTimeline-keyframe-selected', 'light-dark(#f5c700,#fafa14)');
1281
- LX.setThemeColor('lxTimeline-keyframe-hovered', 'light-dark(#f5c700,#fafa14)');
1282
- LX.setThemeColor('lxTimeline-keyframe-locked', 'light-dark(#c62e2e,#ff7d7d )');
1283
- LX.setThemeColor('lxTimeline-keyframe-edited', 'light-dark(#00d000,#00d000 )');
1284
- LX.setThemeColor('lxTimeline-keyframe-inactive', 'light-dark(#706b6b,#706b6b)');
1285
- Timeline.KEYFRAME_COLOR = LX.getThemeColor('lxTimeline-keyframe');
1286
- Timeline.KEYFRAME_COLOR_SELECTED = Timeline.KEYFRAME_COLOR_HOVERED = LX.getThemeColor('lxTimeline-keyframe-selected');
1287
- Timeline.KEYFRAME_COLOR_LOCK = LX.getThemeColor('lxTimeline-keyframe-locked');
1288
- Timeline.KEYFRAME_COLOR_EDITED = LX.getThemeColor('lxTimeline-keyframe-edited');
1289
- Timeline.KEYFRAME_COLOR_INACTIVE = LX.getThemeColor('lxTimeline-keyframe-inactive');
1274
+ LX.setCSSVariable('lxTimeline-keyframe', 'light-dark(#2d69da,#2d69da )');
1275
+ LX.setCSSVariable('lxTimeline-keyframe-selected', 'light-dark(#f5c700,#fafa14)');
1276
+ LX.setCSSVariable('lxTimeline-keyframe-hovered', 'light-dark(#f5c700,#fafa14)');
1277
+ LX.setCSSVariable('lxTimeline-keyframe-locked', 'light-dark(#c62e2e,#ff7d7d )');
1278
+ LX.setCSSVariable('lxTimeline-keyframe-edited', 'light-dark(#00d000,#00d000 )');
1279
+ LX.setCSSVariable('lxTimeline-keyframe-inactive', 'light-dark(#706b6b,#706b6b)');
1280
+ Timeline.KEYFRAME_COLOR = LX.getCSSVariable('lxTimeline-keyframe');
1281
+ Timeline.KEYFRAME_COLOR_SELECTED = Timeline.KEYFRAME_COLOR_HOVERED = LX.getCSSVariable('lxTimeline-keyframe-selected');
1282
+ Timeline.KEYFRAME_COLOR_LOCK = LX.getCSSVariable('lxTimeline-keyframe-locked');
1283
+ Timeline.KEYFRAME_COLOR_EDITED = LX.getCSSVariable('lxTimeline-keyframe-edited');
1284
+ Timeline.KEYFRAME_COLOR_INACTIVE = LX.getCSSVariable('lxTimeline-keyframe-inactive');
1290
1285
  Timeline.BOX_SELECTION_COLOR = '#AAA';
1291
1286
  LX.Timeline = Timeline;
1292
1287
  /**
@@ -1428,8 +1423,8 @@ class KeyFramesTimeline extends Timeline {
1428
1423
  const nodes = [];
1429
1424
  for (let j = 0; j < itemTracks.length; j++) {
1430
1425
  const track = itemTracks[j];
1431
- nodes.push({ 'trackData': track, 'id': track.id, 'skipVisibility': this.skipVisibility,
1432
- visible: track.active, 'children': [], actions: this.skipLock ? null : [{
1426
+ nodes.push({ 'trackData': track, 'id': track.id, 'skipVisibility': this.skipVisibility, visible: track.active, 'children': [],
1427
+ actions: this.skipLock ? null : [{
1433
1428
  'name': 'Lock edition',
1434
1429
  'icon': (track.locked ? 'TimelineLock' : 'TimelineLockOpen'),
1435
1430
  'swap': (track.locked ? 'TimelineLockOpen' : 'TimelineLock'),
@@ -2001,17 +1996,15 @@ class KeyFramesTimeline extends Timeline {
2001
1996
  if (keyframes.length > 1) {
2002
1997
  let startPosX = this.timeToX(keyframes[0]);
2003
1998
  let startValue = values[0];
2004
- startValue =
2005
- LX.clamp((startValue - valueRange[0]) / (valueRange[1] - valueRange[0]), 0, 1) * (-displayRange)
2006
- + (trackHeight - defaultPointSize); // normalize and offset
1999
+ startValue = LX.clamp((startValue - valueRange[0]) / (valueRange[1] - valueRange[0]), 0, 1) * (-displayRange)
2000
+ + (trackHeight - defaultPointSize); // normalize and offset
2007
2001
  ctx.moveTo(startPosX, startValue);
2008
2002
  for (let j = 1; j < keyframes.length; ++j) {
2009
2003
  let time = keyframes[j];
2010
2004
  let keyframePosX = this.timeToX(time);
2011
2005
  let value = values[j];
2012
- value =
2013
- LX.clamp((value - valueRange[0]) / (valueRange[1] - valueRange[0]), 0, 1) * (-displayRange)
2014
- + (trackHeight - defaultPointSize); // normalize and offset
2006
+ value = LX.clamp((value - valueRange[0]) / (valueRange[1] - valueRange[0]), 0, 1) * (-displayRange)
2007
+ + (trackHeight - defaultPointSize); // normalize and offset
2015
2008
  if (time < startTime) {
2016
2009
  ctx.moveTo(keyframePosX, value);
2017
2010
  continue;
@@ -2911,7 +2904,7 @@ class ClipsTimeline extends Timeline {
2911
2904
  duration: options.duration ?? 1,
2912
2905
  fadein: options.fadein ?? undefined,
2913
2906
  fadeout: options.fadeout ?? undefined,
2914
- clipColor: options.clipColor ?? LX.getThemeColor('global-color-accent'),
2907
+ clipColor: options.clipColor ?? LX.getCSSVariable('color-blue-600'),
2915
2908
  fadeColor: options.fadeColor ?? null,
2916
2909
  active: options.active ?? true,
2917
2910
  trackIdx: -1 // filled by addClip
@@ -3390,8 +3383,7 @@ class ClipsTimeline extends Timeline {
3390
3383
  }
3391
3384
  if (clip.fadeout != undefined) {
3392
3385
  const fadeoutX = this.pixelsPerSecond * (clip.start + clip.duration - (clip.fadeout));
3393
- drawRoundRect(ctx, x + w - fadeoutX, y + offset, fadeoutX, trackHeight, { tl: 0, bl: 0, tr: 5,
3394
- br: 5 }, true);
3386
+ drawRoundRect(ctx, x + w - fadeoutX, y + offset, fadeoutX, trackHeight, { tl: 0, bl: 0, tr: 5, br: 5 }, true);
3395
3387
  }
3396
3388
  }
3397
3389
  ctx.fillStyle = Timeline.TRACK_COLOR_PRIMARY;