lexgui 0.6.3 → 0.6.4

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.
@@ -42,6 +42,7 @@
42
42
  'Asset View',
43
43
  'Code Editor',
44
44
  'Dialogs',
45
+ 'Editor',
45
46
  // 'Immediate UI',
46
47
  'Node Graph',
47
48
  'Side Bar',
Binary file
@@ -18,7 +18,7 @@
18
18
  <script type="module">
19
19
 
20
20
  import { LX } from 'lexgui';
21
- import { Timeline, KeyFramesTimeline, ClipsTimeline, CurvesTimeline } from 'lexgui/components/timeline.js';
21
+ import { Timeline, KeyFramesTimeline, ClipsTimeline } from 'lexgui/components/timeline.js';
22
22
 
23
23
  // init library and get main area
24
24
  let area = await LX.init();
@@ -58,6 +58,8 @@
58
58
  createClipsTimeline( bottomTabs );
59
59
  createCurvesTimeline( bottomTabs );
60
60
 
61
+ LX.doAsync( activeTimeline.resize.bind( activeTimeline ) );
62
+
61
63
  let mode = types.KEYFRAMES;
62
64
 
63
65
  bottomArea.onresize = (size) => {
@@ -77,14 +79,12 @@
77
79
  activeTimeline.draw();
78
80
  if(activeTimeline.playing) {
79
81
 
80
- activeTimeline.currentTime += elapsed* 0.001;
81
- if(activeTimeline.onSetTime) {
82
- activeTimeline.onSetTime(activeTimeline.currentTime);
83
- }
82
+ activeTimeline.setTime(activeTimeline.currentTime + elapsed*0.001);
83
+
84
84
  if(activeTimeline.currentTime >= activeTimeline.animationClip.duration) {
85
85
  activeTimeline.currentTime = 0;
86
86
  if(!activeTimeline.loop) {
87
- activeTimeline.changeState();
87
+ activeTimeline.setState(false);
88
88
  }
89
89
  }
90
90
  }
@@ -114,8 +114,18 @@
114
114
  panel.clear();
115
115
  panel.branch("Canvas", {icon: "Palette", filter: true});
116
116
  panel.addColor("Background", LX.getThemeColor("global-color-accent"));
117
- panel.addText("Track", trackName, null)
118
- panel.addText("Text", "Lexgui.js @evallsg", null, {placeholder: "e.g. ColorPicker", icon: "Type"});
117
+ panel.addText("Track", trackName, (value, event) =>{
118
+ const visibleItems = activeTimeline.getVisibleItems();
119
+ for ( let i = 0; i < visibleItems.length; ++i ) {
120
+ const track = visibleItems[i].treeData.trackData;
121
+ if ( track ){
122
+ track.id = value;
123
+ activeTimeline.updateLeftPanel();
124
+ break;
125
+ }
126
+ }
127
+ });
128
+ panel.addText("Text", "Lexgui.js @evallsg @japopra", null, {placeholder: "e.g. ColorPicker", icon: "Type"});
119
129
  panel.addColor("Font Color", { r: 1, g: 0.1, b: 0.6 }, (value, event) => {
120
130
  console.log("Font Color: ", value);
121
131
  });
@@ -123,10 +133,10 @@
123
133
  console.log(value);
124
134
  }, { min: 1, max: 48, step: 1});
125
135
  panel.addVector2("2D Position", position, (value, event) => {
126
- let currentSelection = activeTimeline.lastKeyFramesSelected[0];
127
- if( currentSelection ){
128
- const track = activeTimeline.animationClip.tracks[0];
129
- const keyframe = currentSelection[2];
136
+ if( activeTimeline.lastKeyFramesSelected.length ){
137
+ const currentSelection =activeTimeline.lastKeyFramesSelected[0];
138
+ const track = activeTimeline.animationClip.tracks[currentSelection[0]];
139
+ const keyframe = currentSelection[1];
130
140
  const dim = track.dim;
131
141
 
132
142
  track.values[keyframe * track.dim] = value[0];
@@ -169,7 +179,17 @@
169
179
  panel.addNumber("Duration", clip.duration, (v) => {
170
180
  clip.duration = v;
171
181
  }, {step: 0.01});
182
+
183
+ panel.addColor( "Color", clip.clipColor ?? "#000", (value, event)=>{
184
+ clip.clipColor = value;
185
+ } );
172
186
 
187
+ if ( clip.fadein != undefined ){
188
+ panel.addColor( "Fade Color", clip.fadeColor ?? "#000", (value, event)=>{
189
+ clip.fadeColor = value;
190
+ } );
191
+ }
192
+
173
193
  panel.merge();
174
194
  }
175
195
 
@@ -178,6 +198,7 @@
178
198
  let keyframesPanel = new LX.Panel();
179
199
  bottomTabs.add( "Keyframes", keyframesPanel, {onSelect: () => {
180
200
  activeTimeline = kfTimeline;
201
+ kfTimeline.resize();
181
202
  kfTimeline.show();
182
203
  fillPanel(panel);
183
204
  mode = types.KEYFRAMES;
@@ -185,19 +206,19 @@
185
206
  keyframesPanel.onresize = () => {
186
207
  kfTimeline.resize();
187
208
  }
188
- let kfTimeline = new LX.KeyFramesTimeline('keyframesTimeline', {
209
+ let kfTimeline = new LX.KeyFramesTimeline('Keyframes Timeline', {
189
210
  disableNewTracks: true,
190
- onBeforeCreateTopBar: (panel) => {
211
+ onCreateBeforeTopBar: (panel) => {
191
212
  panel.addSelect("Animation", ["Anim 1", "Anim 2", "Anim 3"], "Anim 1", ()=> {})
192
213
  },
193
- onAfterCreateTopBar: (panel) => {
214
+ onCreateAfterTopBar: (panel) => {
194
215
  panel.addButton("autoKeyEnabled", "autoKeyEnable", null, { icon: 'WandSparkles', hideName: true });
195
216
  panel.addButton("unselectAll", "unselectAll", (value, event) => { kfTimeline.unSelectAllKeyFrames();}, { icon: 'X', hideName: true, callback: (value, event) => { kfTimeline.unSelectAllKeyFrames();} });
196
217
  }
197
218
  });
198
219
 
199
220
  keyframesPanel.attach(kfTimeline.mainArea);
200
- kfTimeline.setAnimationClip({tracks: [{name: "Font.position", values: [250, 450, 250, 250, 250, 450], times: [0, 0.5, 1.0]}, {name: "Item 1.scale", values: [0,1,0, 0.5], times: [0, 0.1, 0.2, 0.3]}, {name: "Item 2", values: [0,1,0,1], times: [0.1]}, {name: "Item 3.position", values: [0,1,0,0,0,0], times: [0.1, 0.2, 0.3]}, {name: "Item 3.scale", values: [0,1,0], times: [ 0.1, 0.2, 0.3]}], duration: 1});
221
+ kfTimeline.setAnimationClip({tracks: [{id: "Font.position", values: [250, 450, 250, 250, 250, 450], times: [0, 0.5, 1.0]}, {id: "Item 1.scale", values: [0,1,0, 0.5], times: [0, 0.1, 0.2, 0.3]}, {id: "Item 2", values: [0,1,0,1], times: [0.1]}, {id: "Item 3.position", values: [0,1,0,0,0,0], times: [0.1, 0.2, 0.3]}, {id: "Item 3.scale", values: [0,1,0], times: [ 0.1, 0.2, 0.3]}], duration: 1}, true);
201
222
  kfTimeline.setSelectedItems(["Font", "Item 2", "Item 3"]);
202
223
  activeTimeline = kfTimeline;
203
224
  kfTimeline.show();
@@ -209,16 +230,16 @@
209
230
  return;
210
231
  }
211
232
  rightArea.show();
212
- trackName = data.track.name;
213
- if( trackName != "Font" || data.track.type != "position") {
233
+ trackName = data.track.id ;
234
+ if( data.track.groupId != "Font" || data.track.id != "position") {
214
235
  return
215
236
  }
216
- const id = data.track.clipIdx;
237
+ const id = data.track.trackIdx;
217
238
  let values = kfTimeline.animationClip.tracks[id].values;
218
239
  const dim = kfTimeline.animationClip.tracks[id].dim;
219
240
 
220
241
  //currentSelection == [track.name, track.idx, frameIdx, track.clipIdx, track.times[frameIdx]]
221
- const keyFrameIndex = currentSelection[2];
242
+ const keyFrameIndex = currentSelection[1];
222
243
  position = values.slice(keyFrameIndex * dim, keyFrameIndex * dim + dim);
223
244
  fillPanel(panel);
224
245
  //kfTimeline.animationClip.tracks[currentSelection[0][0]];
@@ -252,13 +273,18 @@
252
273
  let clipsPanel = new LX.Panel();
253
274
  bottomTabs.add( "Clips", clipsPanel, {onSelect: () => {
254
275
  activeTimeline = clipsTimeline;
276
+ clipsTimeline.resize();
255
277
  clipsTimeline.show();
256
278
  panel.clear();
257
279
  mode = types.CLIPS;
258
280
  }});
259
281
 
260
- let clipsTimeline = new LX.ClipsTimeline("clips-timeline");
282
+ let clipsTimeline = new LX.ClipsTimeline("Clips Timeline");
261
283
  clipsPanel.attach(clipsTimeline.root);
284
+ clipsTimeline.setAnimationClip({name: "animation" });
285
+ clipsTimeline.onAddNewTrack = (track, options)=>{
286
+ track.id = "Track " + clipsTimeline.animationClip.tracks.length;
287
+ }
262
288
 
263
289
  let clip = {id:"Clip 1", start:0, duration:1, type:""};
264
290
  clipsTimeline.addClip(clip);
@@ -271,8 +297,6 @@
271
297
  clip = {id:"Clip 5", start:0, fadein: 0.5, fadeout: 0.8, duration:1, type:""};
272
298
  clipsTimeline.addClip(clip);
273
299
 
274
- // clipsTimeline.setAnimationClip({tracks: [{clips: [clip]}], duration: 2});
275
- clipsTimeline.selectedItems = ["Clip 1"];
276
300
  clipsTimeline.show();
277
301
 
278
302
  clipsTimeline.onSelectClip = (clip) => {
@@ -280,26 +304,28 @@
280
304
  fillClipPanel(panel, clip);
281
305
  }
282
306
 
283
- clipsTimeline.draw(0);
307
+ clipsTimeline.draw();
284
308
  }
285
309
 
286
310
  function createCurvesTimeline( bottomTabs ) {
287
311
 
288
312
  let curvesPanel = new LX.Panel();
289
313
  bottomTabs.add( "Curves", curvesPanel, {onSelect: () => {
290
- activeTimeline = curvesTimeline;
291
- curvesTimeline.show();
314
+ activeTimeline = curvesTimeline;
315
+ curvesTimeline.resize();
316
+ curvesTimeline.show();
292
317
  panel.clear();
293
318
  mode = types.CLIPS;
294
319
 
295
320
  }});
296
321
 
297
- let curvesTimeline = new LX.CurvesTimeline("curves-timeline", { range: [-1,1]});
322
+ let curvesTimeline = new LX.KeyFramesTimeline("curves-timeline");
323
+ curvesTimeline.defaultCurvesRange = [-1,1];
298
324
  curvesPanel.attach(curvesTimeline.root);
299
325
  curvesTimeline.setAnimationClip({tracks: [{name: "Item 1.position", values: [0,1,0,-1], times: [0, 0.1, 0.2, 0.3]}, {name: "Item 1.scale", values: [0,1,0, 0.5], times: [0, 0.1, 0.2, 0.3]}, {name: "Item 2", values: [0,1,0,1], times: [0.1, 0.2, 0.3, 0.8]}, {name: "Item 3.position", values: [0,0,1], times: [0]}, {name: "Item 3.scale", values: [0,1,0], times: [0, 0.1, 0.3]}], duration: 1});
300
326
  curvesTimeline.setSelectedItems(["Item 1", "Item 2", "Item 3"]);
301
327
  curvesTimeline.show();
302
- curvesTimeline.draw(0);
328
+ curvesTimeline.draw();
303
329
  }
304
330
 
305
331
  </script>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lexgui",
3
- "version": "0.6.3",
3
+ "version": "0.6.4",
4
4
  "description": "JS library to create web graphical user interfaces",
5
5
  "type": "module",
6
6
  "main": "./build/lexgui.js",
@@ -36,9 +36,12 @@
36
36
  "url": "https://github.com/jxarco/lexgui.js/issues"
37
37
  },
38
38
  "scripts": {
39
+ "rollup-js": "rollup -c rollup.build.config.js",
39
40
  "minify-css": "cleancss -o build/lexgui.min.css build/lexgui.css",
40
- "minify-js": "uglifyjs build/lexgui.module.js -o build/lexgui.module.min.js --compress --mangle --module && uglifyjs build/lexgui.js -o build/lexgui.min.js --compress --mangle --no-module",
41
- "minify": "npm run minify-js && npm run minify-css",
41
+ "minify": "npm run rollup-js && npm run minify-css",
42
42
  "build": "python build-legacy.py && npm run minify"
43
+ },
44
+ "devDependencies": {
45
+ "@rollup/plugin-terser": "^0.4.4"
43
46
  }
44
- }
47
+ }