lexgui 0.1.31 → 0.1.32
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/build/components/timeline.js +768 -442
- package/build/components/videoeditor.js +539 -0
- package/build/lexgui.css +87 -3
- package/build/lexgui.js +272 -254
- package/build/lexgui.module.js +247 -229
- package/changelog.md +11 -0
- package/examples/index.html +2 -1
- package/examples/timeline.html +279 -0
- package/examples/video_editor.html +35 -0
- package/package.json +1 -1
package/build/lexgui.js
CHANGED
|
@@ -12,7 +12,7 @@ console.warn( 'Script "build/lexgui.js" is depracated and will be removed soon.
|
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
var LX = global.LX = {
|
|
15
|
-
version: "0.1.
|
|
15
|
+
version: "0.1.32",
|
|
16
16
|
ready: false,
|
|
17
17
|
components: [], // specific pre-build components
|
|
18
18
|
signals: {} // events and triggers
|
|
@@ -2373,11 +2373,11 @@ console.warn( 'Script "build/lexgui.js" is depracated and will be removed soon.
|
|
|
2373
2373
|
console.warn("Can't get value of " + this.typeName());
|
|
2374
2374
|
}
|
|
2375
2375
|
|
|
2376
|
-
set( value ) {
|
|
2376
|
+
set( value, skipCallback = false ) {
|
|
2377
2377
|
|
|
2378
2378
|
if( this.onSetValue )
|
|
2379
|
-
return this.onSetValue( value );
|
|
2380
|
-
|
|
2379
|
+
return this.onSetValue( value, skipCallback );
|
|
2380
|
+
|
|
2381
2381
|
console.warn("Can't set value of " + this.typeName());
|
|
2382
2382
|
}
|
|
2383
2383
|
|
|
@@ -2454,11 +2454,11 @@ console.warn( 'Script "build/lexgui.js" is depracated and will be removed soon.
|
|
|
2454
2454
|
widget.onGetValue = () => {
|
|
2455
2455
|
return instance;
|
|
2456
2456
|
};
|
|
2457
|
-
widget.onSetValue = (
|
|
2458
|
-
instance =
|
|
2457
|
+
widget.onSetValue = ( newValue, skipCallback ) => {
|
|
2458
|
+
instance = newValue;
|
|
2459
2459
|
refresh_widget();
|
|
2460
|
-
element.querySelector(".lexcustomitems").toggleAttribute('hidden', false);
|
|
2461
|
-
this._trigger( new IEvent(name, instance, null), callback );
|
|
2460
|
+
element.querySelector( ".lexcustomitems" ).toggleAttribute( 'hidden', false );
|
|
2461
|
+
if( !skipCallback ) this._trigger( new IEvent( name, instance, null ), callback );
|
|
2462
2462
|
};
|
|
2463
2463
|
|
|
2464
2464
|
let element = widget.domEl;
|
|
@@ -3410,11 +3410,12 @@ console.warn( 'Script "build/lexgui.js" is depracated and will be removed soon.
|
|
|
3410
3410
|
}
|
|
3411
3411
|
|
|
3412
3412
|
_trigger( event, callback ) {
|
|
3413
|
-
if(callback)
|
|
3414
|
-
callback.call(this, event.value, event.domEvent, event.name);
|
|
3415
3413
|
|
|
3416
|
-
if(
|
|
3417
|
-
|
|
3414
|
+
if( callback )
|
|
3415
|
+
callback.call( this, event.value, event.domEvent, event.name );
|
|
3416
|
+
|
|
3417
|
+
if( this.onevent )
|
|
3418
|
+
this.onevent.call( this, event );
|
|
3418
3419
|
}
|
|
3419
3420
|
|
|
3420
3421
|
/**
|
|
@@ -3542,12 +3543,13 @@ console.warn( 'Script "build/lexgui.js" is depracated and will be removed soon.
|
|
|
3542
3543
|
addText( name, value, callback, options = {} ) {
|
|
3543
3544
|
|
|
3544
3545
|
let widget = this.create_widget( name, Widget.TEXT, options );
|
|
3546
|
+
|
|
3545
3547
|
widget.onGetValue = () => {
|
|
3546
3548
|
return wValue.value;
|
|
3547
3549
|
};
|
|
3548
|
-
widget.onSetValue = newValue => {
|
|
3550
|
+
widget.onSetValue = ( newValue, skipCallback ) => {
|
|
3549
3551
|
this.disabled ? wValue.innerText = newValue : wValue.value = newValue;
|
|
3550
|
-
Panel._dispatch_event( wValue, "focusout" );
|
|
3552
|
+
Panel._dispatch_event( wValue, "focusout", skipCallback );
|
|
3551
3553
|
};
|
|
3552
3554
|
|
|
3553
3555
|
let element = widget.domEl;
|
|
@@ -3583,9 +3585,10 @@ console.warn( 'Script "build/lexgui.js" is depracated and will be removed soon.
|
|
|
3583
3585
|
wValue.setAttribute( "placeholder", options.placeholder );
|
|
3584
3586
|
|
|
3585
3587
|
var resolve = ( function( val, event ) {
|
|
3588
|
+
const skipCallback = event.detail;
|
|
3586
3589
|
let btn = element.querySelector( ".lexwidgetname .lexicon" );
|
|
3587
3590
|
if( btn ) btn.style.display = ( val != wValue.iValue ? "block" : "none" );
|
|
3588
|
-
this._trigger( new IEvent( name, val, event ), callback );
|
|
3591
|
+
if( !skipCallback ) this._trigger( new IEvent( name, val, event ), callback );
|
|
3589
3592
|
}).bind( this );
|
|
3590
3593
|
|
|
3591
3594
|
const trigger = options.trigger ?? 'default';
|
|
@@ -3662,45 +3665,48 @@ console.warn( 'Script "build/lexgui.js" is depracated and will be removed soon.
|
|
|
3662
3665
|
|
|
3663
3666
|
addTextArea( name, value, callback, options = {} ) {
|
|
3664
3667
|
|
|
3665
|
-
let widget = this.create_widget(name, Widget.TEXTAREA, options);
|
|
3668
|
+
let widget = this.create_widget( name, Widget.TEXTAREA, options );
|
|
3669
|
+
|
|
3666
3670
|
widget.onGetValue = () => {
|
|
3667
3671
|
return wValue.value;
|
|
3668
3672
|
};
|
|
3669
|
-
widget.onSetValue = (
|
|
3670
|
-
wValue.value =
|
|
3671
|
-
Panel._dispatch_event(wValue, "focusout");
|
|
3673
|
+
widget.onSetValue = ( newValue, skipCallback ) => {
|
|
3674
|
+
wValue.value = newValue;
|
|
3675
|
+
Panel._dispatch_event( wValue, "focusout", skipCallback );
|
|
3672
3676
|
};
|
|
3677
|
+
|
|
3673
3678
|
let element = widget.domEl;
|
|
3674
3679
|
|
|
3675
3680
|
// Add reset functionality
|
|
3676
|
-
if(widget.name && !(options.skipReset ?? false)) {
|
|
3677
|
-
Panel._add_reset_property(element.domName, function() {
|
|
3681
|
+
if( widget.name && !( options.skipReset ?? false ) ) {
|
|
3682
|
+
Panel._add_reset_property( element.domName, function() {
|
|
3678
3683
|
wValue.value = wValue.iValue;
|
|
3679
3684
|
this.style.display = "none";
|
|
3680
|
-
Panel._dispatch_event(wValue, "focusout");
|
|
3685
|
+
Panel._dispatch_event( wValue, "focusout" );
|
|
3681
3686
|
});
|
|
3682
3687
|
}
|
|
3683
3688
|
|
|
3684
3689
|
// Add widget value
|
|
3685
3690
|
|
|
3686
|
-
let container = document.createElement('div');
|
|
3691
|
+
let container = document.createElement( 'div' );
|
|
3687
3692
|
container.className = "lextextarea";
|
|
3688
3693
|
container.style.width = options.inputWidth || "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + " )";
|
|
3689
3694
|
container.style.height = options.height;
|
|
3690
3695
|
container.style.display = "flex";
|
|
3691
3696
|
|
|
3692
|
-
let wValue = document.createElement('textarea');
|
|
3697
|
+
let wValue = document.createElement( 'textarea' );
|
|
3693
3698
|
wValue.value = wValue.iValue = value || "";
|
|
3694
3699
|
wValue.style.width = "100%";
|
|
3695
|
-
Object.assign(wValue.style, options.style ?? {});
|
|
3700
|
+
Object.assign( wValue.style, options.style ?? {} );
|
|
3696
3701
|
|
|
3697
|
-
if(options.disabled ?? false) wValue.setAttribute("disabled", true);
|
|
3698
|
-
if(options.placeholder) wValue.setAttribute("placeholder", options.placeholder);
|
|
3702
|
+
if( options.disabled ?? false ) wValue.setAttribute("disabled", true);
|
|
3703
|
+
if( options.placeholder ) wValue.setAttribute("placeholder", options.placeholder);
|
|
3699
3704
|
|
|
3700
|
-
var resolve = (function(val, event) {
|
|
3701
|
-
|
|
3702
|
-
|
|
3703
|
-
|
|
3705
|
+
var resolve = (function( val, event ) {
|
|
3706
|
+
const skipCallback = event.detail;
|
|
3707
|
+
let btn = element.querySelector( ".lexwidgetname .lexicon" );
|
|
3708
|
+
if( btn ) btn.style.display = ( val != wValue.iValue ? "block" : "none" );
|
|
3709
|
+
if( !skipCallback ) this._trigger( new IEvent( name, val, event ), callback );
|
|
3704
3710
|
}).bind(this);
|
|
3705
3711
|
|
|
3706
3712
|
const trigger = options.trigger ?? 'default';
|
|
@@ -3777,10 +3783,10 @@ console.warn( 'Script "build/lexgui.js" is depracated and will be removed soon.
|
|
|
3777
3783
|
widget.onGetValue = () => {
|
|
3778
3784
|
return wValue.innerText;
|
|
3779
3785
|
};
|
|
3780
|
-
widget.onSetValue = (
|
|
3786
|
+
widget.onSetValue = ( newValue, skipCallback ) => {
|
|
3781
3787
|
wValue.innerHTML =
|
|
3782
3788
|
(options.icon ? "<a class='" + options.icon + "'></a>" :
|
|
3783
|
-
( options.img ? "<img src='" + options.img + "'>" : "<span>" + (
|
|
3789
|
+
( options.img ? "<img src='" + options.img + "'>" : "<span>" + (newValue || "") + "</span>" ));
|
|
3784
3790
|
};
|
|
3785
3791
|
|
|
3786
3792
|
let element = widget.domEl;
|
|
@@ -3798,10 +3804,10 @@ console.warn( 'Script "build/lexgui.js" is depracated and will be removed soon.
|
|
|
3798
3804
|
( options.img ? "<img src='" + options.img + "'>" : "<span>" + (value || "") + "</span>" ));
|
|
3799
3805
|
|
|
3800
3806
|
wValue.style.width = "calc( 100% - " + (options.nameWidth ?? LX.DEFAULT_NAME_WIDTH) + ")";
|
|
3801
|
-
|
|
3807
|
+
|
|
3802
3808
|
if(options.disabled)
|
|
3803
3809
|
wValue.setAttribute("disabled", true);
|
|
3804
|
-
|
|
3810
|
+
|
|
3805
3811
|
wValue.addEventListener("click", e => {
|
|
3806
3812
|
if( options.selectable ) {
|
|
3807
3813
|
if( options.parent )
|
|
@@ -3812,7 +3818,7 @@ console.warn( 'Script "build/lexgui.js" is depracated and will be removed soon.
|
|
|
3812
3818
|
});
|
|
3813
3819
|
|
|
3814
3820
|
element.appendChild(wValue);
|
|
3815
|
-
|
|
3821
|
+
|
|
3816
3822
|
// Remove branch padding and margins
|
|
3817
3823
|
if(!widget.name) {
|
|
3818
3824
|
wValue.className += " noname";
|
|
@@ -4019,12 +4025,12 @@ console.warn( 'Script "build/lexgui.js" is depracated and will be removed soon.
|
|
|
4019
4025
|
widget.onGetValue = () => {
|
|
4020
4026
|
return element.querySelector("li.selected").getAttribute('value');
|
|
4021
4027
|
};
|
|
4022
|
-
widget.onSetValue = (
|
|
4028
|
+
widget.onSetValue = ( newValue, skipCallback ) => {
|
|
4023
4029
|
let btn = element.querySelector(".lexwidgetname .lexicon");
|
|
4024
|
-
if(btn) btn.style.display = (
|
|
4025
|
-
value =
|
|
4030
|
+
if(btn) btn.style.display = (newValue != wValue.iValue ? "block" : "none");
|
|
4031
|
+
value = newValue;
|
|
4026
4032
|
list.querySelectorAll('li').forEach( e => { if( e.getAttribute('value') == value ) e.click() } );
|
|
4027
|
-
this._trigger( new IEvent(name, value, null), callback );
|
|
4033
|
+
if( !skipCallback ) this._trigger( new IEvent(name, value, null), callback );
|
|
4028
4034
|
};
|
|
4029
4035
|
|
|
4030
4036
|
let element = widget.domEl;
|
|
@@ -4220,12 +4226,12 @@ console.warn( 'Script "build/lexgui.js" is depracated and will be removed soon.
|
|
|
4220
4226
|
widget.onGetValue = () => {
|
|
4221
4227
|
return JSON.parse(JSON.stringify(curve_instance.element.value));
|
|
4222
4228
|
};
|
|
4223
|
-
widget.onSetValue = (
|
|
4229
|
+
widget.onSetValue = ( newValue, skipCallback ) => {
|
|
4224
4230
|
let btn = element.querySelector(".lexwidgetname .lexicon");
|
|
4225
|
-
if(btn) btn.style.display = (
|
|
4226
|
-
curve_instance.element.value = JSON.parse(JSON.stringify(
|
|
4231
|
+
if(btn) btn.style.display = (newValue != curve_instance.element.value ? "block" : "none");
|
|
4232
|
+
curve_instance.element.value = JSON.parse(JSON.stringify(newValue));
|
|
4227
4233
|
curve_instance.redraw();
|
|
4228
|
-
that._trigger( new IEvent(name, curve_instance.element.value, null), callback );
|
|
4234
|
+
if( !skipCallback ) that._trigger( new IEvent(name, curve_instance.element.value, null), callback );
|
|
4229
4235
|
};
|
|
4230
4236
|
|
|
4231
4237
|
let element = widget.domEl;
|
|
@@ -4285,12 +4291,12 @@ console.warn( 'Script "build/lexgui.js" is depracated and will be removed soon.
|
|
|
4285
4291
|
widget.onGetValue = () => {
|
|
4286
4292
|
return element.value;
|
|
4287
4293
|
};
|
|
4288
|
-
widget.onSetValue = (
|
|
4294
|
+
widget.onSetValue = ( newValue, skipCallback ) => {
|
|
4289
4295
|
let btn = element.querySelector(".lexwidgetname .lexicon");
|
|
4290
|
-
if(btn) btn.style.display = (
|
|
4291
|
-
value = element.value =
|
|
4296
|
+
if(btn) btn.style.display = (newValue != defaultValue ? "block" : "none");
|
|
4297
|
+
value = element.value = newValue;
|
|
4292
4298
|
setLayers();
|
|
4293
|
-
that._trigger( new IEvent(name, value), callback );
|
|
4299
|
+
if( !skipCallback ) that._trigger( new IEvent(name, value), callback );
|
|
4294
4300
|
};
|
|
4295
4301
|
|
|
4296
4302
|
let element = widget.domEl;
|
|
@@ -4382,11 +4388,12 @@ console.warn( 'Script "build/lexgui.js" is depracated and will be removed soon.
|
|
|
4382
4388
|
values.push( v.value );
|
|
4383
4389
|
return values;
|
|
4384
4390
|
};
|
|
4385
|
-
widget.onSetValue = (
|
|
4386
|
-
values =
|
|
4391
|
+
widget.onSetValue = ( newValue, skipCallback ) => {
|
|
4392
|
+
values = newValue;
|
|
4387
4393
|
updateItems();
|
|
4388
|
-
this._trigger( new IEvent(name, values, null), callback );
|
|
4394
|
+
if( !skipCallback ) this._trigger( new IEvent(name, values, null), callback );
|
|
4389
4395
|
};
|
|
4396
|
+
|
|
4390
4397
|
let element = widget.domEl;
|
|
4391
4398
|
element.style.flexWrap = "wrap";
|
|
4392
4399
|
|
|
@@ -4500,14 +4507,13 @@ console.warn( 'Script "build/lexgui.js" is depracated and will be removed soon.
|
|
|
4500
4507
|
widget.onGetValue = () => {
|
|
4501
4508
|
return value;
|
|
4502
4509
|
};
|
|
4503
|
-
|
|
4504
|
-
widget.onSetValue = ( newValue ) => {
|
|
4510
|
+
widget.onSetValue = ( newValue, skipCallback ) => {
|
|
4505
4511
|
listContainer.querySelectorAll( '.lexlistitem' ).forEach( e => e.classList.remove( 'selected' ) );
|
|
4506
4512
|
const idx = values.indexOf( newValue );
|
|
4507
4513
|
if( idx == -1 ) return;
|
|
4508
4514
|
listContainer.children[ idx ].classList.toggle( 'selected' );
|
|
4509
4515
|
value = newValue;
|
|
4510
|
-
this._trigger( new IEvent( name, newValue ), callback );
|
|
4516
|
+
if( !skipCallback ) this._trigger( new IEvent( name, newValue ), callback );
|
|
4511
4517
|
};
|
|
4512
4518
|
|
|
4513
4519
|
widget.updateValues = ( newValues ) => {
|
|
@@ -4572,18 +4578,19 @@ console.warn( 'Script "build/lexgui.js" is depracated and will be removed soon.
|
|
|
4572
4578
|
|
|
4573
4579
|
addTags( name, value, callback, options = {} ) {
|
|
4574
4580
|
|
|
4575
|
-
value = value.replace(/\s/g, '').split(',');
|
|
4576
|
-
let defaultValue = [].concat(value);
|
|
4577
|
-
let widget = this.create_widget(name, Widget.TAGS, options);
|
|
4581
|
+
value = value.replace( /\s/g, '' ).split( ',' );
|
|
4582
|
+
let defaultValue = [].concat( value );
|
|
4583
|
+
let widget = this.create_widget( name, Widget.TAGS, options );
|
|
4584
|
+
|
|
4578
4585
|
widget.onGetValue = () => {
|
|
4579
|
-
return [].concat(value);
|
|
4586
|
+
return [].concat( value );
|
|
4580
4587
|
};
|
|
4581
|
-
widget.onSetValue = (
|
|
4582
|
-
value = [].concat(
|
|
4588
|
+
widget.onSetValue = ( newValue, skipCallback ) => {
|
|
4589
|
+
value = [].concat( newValue );
|
|
4583
4590
|
create_tags();
|
|
4584
|
-
let btn = element.querySelector(".lexwidgetname .lexicon");
|
|
4585
|
-
if(btn) btn.style.display = (
|
|
4586
|
-
that._trigger( new IEvent(name, value), callback );
|
|
4591
|
+
let btn = element.querySelector( ".lexwidgetname .lexicon" );
|
|
4592
|
+
if( btn ) btn.style.display = ( newValue != defaultValue ? "block" : "none" );
|
|
4593
|
+
if( !skipCallback ) that._trigger( new IEvent( name, value ), callback );
|
|
4587
4594
|
};
|
|
4588
4595
|
|
|
4589
4596
|
let element = widget.domEl;
|
|
@@ -4609,7 +4616,7 @@ console.warn( 'Script "build/lexgui.js" is depracated and will be removed soon.
|
|
|
4609
4616
|
const create_tags = () => {
|
|
4610
4617
|
|
|
4611
4618
|
tags_container.innerHTML = "";
|
|
4612
|
-
|
|
4619
|
+
|
|
4613
4620
|
for( let i = 0; i < value.length; ++i )
|
|
4614
4621
|
{
|
|
4615
4622
|
let tag_name = value[i];
|
|
@@ -4617,36 +4624,36 @@ console.warn( 'Script "build/lexgui.js" is depracated and will be removed soon.
|
|
|
4617
4624
|
tag.className = "lextag";
|
|
4618
4625
|
tag.innerHTML = tag_name;
|
|
4619
4626
|
|
|
4620
|
-
tag.addEventListener('click', function(e) {
|
|
4627
|
+
tag.addEventListener('click', function( e ) {
|
|
4621
4628
|
this.remove();
|
|
4622
4629
|
value.splice( value.indexOf( tag_name ), 1 );
|
|
4623
|
-
let btn = element.querySelector(".lexwidgetname .lexicon");
|
|
4624
|
-
if(btn) btn.style.display = (value != defaultValue ? "block" : "none");
|
|
4625
|
-
that._trigger( new IEvent(name, value, e), callback );
|
|
4630
|
+
let btn = element.querySelector( ".lexwidgetname .lexicon" );
|
|
4631
|
+
if( btn ) btn.style.display = ( value != defaultValue ? "block" : "none" );
|
|
4632
|
+
that._trigger( new IEvent( name, value, e ), callback );
|
|
4626
4633
|
});
|
|
4627
4634
|
|
|
4628
|
-
tags_container.appendChild(tag);
|
|
4635
|
+
tags_container.appendChild( tag );
|
|
4629
4636
|
}
|
|
4630
|
-
|
|
4631
|
-
let tag_input = document.createElement('input');
|
|
4637
|
+
|
|
4638
|
+
let tag_input = document.createElement( 'input' );
|
|
4632
4639
|
tag_input.value = "";
|
|
4633
4640
|
tag_input.placeholder = "Tag...";
|
|
4634
|
-
tags_container.insertChildAtIndex(tag_input, 0);
|
|
4635
|
-
|
|
4636
|
-
tag_input.onkeydown = function(e) {
|
|
4641
|
+
tags_container.insertChildAtIndex( tag_input, 0 );
|
|
4642
|
+
|
|
4643
|
+
tag_input.onkeydown = function( e ) {
|
|
4637
4644
|
const val = this.value.replace(/\s/g, '');
|
|
4638
4645
|
if( e.key == ' ') {
|
|
4639
4646
|
e.preventDefault();
|
|
4640
4647
|
if( !val.length || value.indexOf( val ) > -1 )
|
|
4641
4648
|
return;
|
|
4642
|
-
value.push(val);
|
|
4649
|
+
value.push( val );
|
|
4643
4650
|
create_tags();
|
|
4644
|
-
let btn = element.querySelector(".lexwidgetname .lexicon");
|
|
4651
|
+
let btn = element.querySelector( ".lexwidgetname .lexicon" );
|
|
4645
4652
|
if(btn) btn.style.display = "block";
|
|
4646
|
-
that._trigger( new IEvent(name, value, e), callback );
|
|
4653
|
+
that._trigger( new IEvent( name, value, e ), callback );
|
|
4647
4654
|
}
|
|
4648
4655
|
};
|
|
4649
|
-
|
|
4656
|
+
|
|
4650
4657
|
tag_input.focus();
|
|
4651
4658
|
}
|
|
4652
4659
|
|
|
@@ -4675,24 +4682,25 @@ console.warn( 'Script "build/lexgui.js" is depracated and will be removed soon.
|
|
|
4675
4682
|
|
|
4676
4683
|
addCheckbox( name, value, callback, options = {} ) {
|
|
4677
4684
|
|
|
4678
|
-
if(!name) {
|
|
4679
|
-
throw("Set Widget Name!");
|
|
4685
|
+
if( !name ) {
|
|
4686
|
+
throw( "Set Widget Name!" );
|
|
4680
4687
|
}
|
|
4681
|
-
|
|
4682
|
-
let widget = this.create_widget(name, Widget.CHECKBOX, options);
|
|
4688
|
+
|
|
4689
|
+
let widget = this.create_widget( name, Widget.CHECKBOX, options );
|
|
4690
|
+
|
|
4683
4691
|
widget.onGetValue = () => {
|
|
4684
4692
|
return flag.value;
|
|
4685
4693
|
};
|
|
4686
|
-
widget.onSetValue = (
|
|
4687
|
-
if(flag.value !==
|
|
4688
|
-
Panel._dispatch_event(toggle, "click");
|
|
4694
|
+
widget.onSetValue = ( newValue, skipCallback ) => {
|
|
4695
|
+
if( flag.value !== newValue )
|
|
4696
|
+
Panel._dispatch_event( toggle, "click", skipCallback );
|
|
4689
4697
|
};
|
|
4690
|
-
|
|
4698
|
+
|
|
4691
4699
|
let element = widget.domEl;
|
|
4692
|
-
|
|
4700
|
+
|
|
4693
4701
|
// Add reset functionality
|
|
4694
|
-
Panel._add_reset_property(element.domName, function() {
|
|
4695
|
-
Panel._dispatch_event(toggle, "click");
|
|
4702
|
+
Panel._add_reset_property( element.domName, function() {
|
|
4703
|
+
Panel._dispatch_event( toggle, "click" );
|
|
4696
4704
|
});
|
|
4697
4705
|
|
|
4698
4706
|
// Add widget value
|
|
@@ -4723,30 +4731,35 @@ console.warn( 'Script "build/lexgui.js" is depracated and will be removed soon.
|
|
|
4723
4731
|
container.appendChild(toggle);
|
|
4724
4732
|
container.appendChild(value_name);
|
|
4725
4733
|
|
|
4726
|
-
toggle.addEventListener("click",
|
|
4734
|
+
toggle.addEventListener( "click" , e => {
|
|
4727
4735
|
|
|
4728
|
-
let flag = toggle.querySelector(".checkbox");
|
|
4729
|
-
if(flag.disabled)
|
|
4730
|
-
|
|
4731
|
-
|
|
4732
|
-
|
|
4736
|
+
let flag = toggle.querySelector( ".checkbox" );
|
|
4737
|
+
if( flag.disabled )
|
|
4738
|
+
return;
|
|
4739
|
+
|
|
4740
|
+
const skipCallback = e.detail;
|
|
4733
4741
|
|
|
4742
|
+
let check = toggle.querySelector( ".checkbox a" );
|
|
4743
|
+
|
|
4734
4744
|
flag.value = !flag.value;
|
|
4735
|
-
flag.className = "checkbox " + (flag.value ? "on" : "");
|
|
4745
|
+
flag.className = "checkbox " + ( flag.value ? "on" : "" );
|
|
4736
4746
|
check.style.display = flag.value ? "block" : "none";
|
|
4737
|
-
|
|
4747
|
+
|
|
4738
4748
|
// Reset button (default value)
|
|
4739
|
-
|
|
4740
|
-
|
|
4741
|
-
|
|
4749
|
+
if( !skipCallback )
|
|
4750
|
+
{
|
|
4751
|
+
let btn = element.querySelector( ".lexwidgetname .lexicon" );
|
|
4752
|
+
if( btn ) btn.style.display = flag.value != flag.iValue ? "block": "none";
|
|
4753
|
+
}
|
|
4754
|
+
|
|
4742
4755
|
// Open suboptions
|
|
4743
|
-
let submenu = element.querySelector(".lexcheckboxsubmenu");
|
|
4744
|
-
if(submenu) submenu.toggleAttribute('hidden', !flag.value);
|
|
4745
|
-
|
|
4746
|
-
this._trigger( new IEvent(name, flag.value, e), callback );
|
|
4756
|
+
let submenu = element.querySelector( ".lexcheckboxsubmenu" );
|
|
4757
|
+
if( submenu ) submenu.toggleAttribute( 'hidden', !flag.value );
|
|
4758
|
+
|
|
4759
|
+
if( !skipCallback ) this._trigger( new IEvent( name, flag.value, e ), callback );
|
|
4747
4760
|
});
|
|
4748
|
-
|
|
4749
|
-
element.appendChild(container);
|
|
4761
|
+
|
|
4762
|
+
element.appendChild( container );
|
|
4750
4763
|
|
|
4751
4764
|
if( options.suboptions )
|
|
4752
4765
|
{
|
|
@@ -4777,92 +4790,86 @@ console.warn( 'Script "build/lexgui.js" is depracated and will be removed soon.
|
|
|
4777
4790
|
|
|
4778
4791
|
addColor( name, value, callback, options = {} ) {
|
|
4779
4792
|
|
|
4780
|
-
if(!name) {
|
|
4781
|
-
throw("Set Widget Name!");
|
|
4793
|
+
if( !name ) {
|
|
4794
|
+
throw( "Set Widget Name!" );
|
|
4782
4795
|
}
|
|
4783
|
-
|
|
4784
|
-
let widget = this.create_widget(name, Widget.COLOR, options);
|
|
4796
|
+
|
|
4797
|
+
let widget = this.create_widget( name, Widget.COLOR, options );
|
|
4798
|
+
|
|
4785
4799
|
widget.onGetValue = () => {
|
|
4786
4800
|
return color.value;
|
|
4787
4801
|
};
|
|
4788
|
-
widget.onSetValue = (
|
|
4789
|
-
color.value =
|
|
4790
|
-
Panel._dispatch_event(color, "input");
|
|
4802
|
+
widget.onSetValue = ( newValue, skipCallback ) => {
|
|
4803
|
+
color.value = newValue;
|
|
4804
|
+
Panel._dispatch_event( color, "input", skipCallback );
|
|
4791
4805
|
};
|
|
4806
|
+
|
|
4792
4807
|
let element = widget.domEl;
|
|
4793
4808
|
let change_from_input = false;
|
|
4794
|
-
|
|
4809
|
+
|
|
4795
4810
|
// Add reset functionality
|
|
4796
|
-
Panel._add_reset_property(element.domName, function() {
|
|
4811
|
+
Panel._add_reset_property( element.domName, function() {
|
|
4797
4812
|
this.style.display = "none";
|
|
4798
4813
|
color.value = color.iValue;
|
|
4799
|
-
Panel._dispatch_event(color, "input");
|
|
4814
|
+
Panel._dispatch_event( color, "input" );
|
|
4800
4815
|
});
|
|
4801
|
-
|
|
4816
|
+
|
|
4802
4817
|
// Add widget value
|
|
4803
|
-
|
|
4804
|
-
var container = document.createElement('span');
|
|
4818
|
+
|
|
4819
|
+
var container = document.createElement( 'span' );
|
|
4805
4820
|
container.className = "lexcolor";
|
|
4806
4821
|
container.style.width = "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
|
|
4807
|
-
|
|
4808
|
-
let color = document.createElement('input');
|
|
4822
|
+
|
|
4823
|
+
let color = document.createElement( 'input' );
|
|
4809
4824
|
color.style.width = "calc(30% - 6px)";
|
|
4810
4825
|
color.type = 'color';
|
|
4811
4826
|
color.className = "colorinput";
|
|
4812
4827
|
color.id = "color" + simple_guidGenerator();
|
|
4813
4828
|
color.useRGB = options.useRGB ?? false;
|
|
4814
|
-
color.value = color.iValue = value.constructor === Array ? rgbToHex(value) : value;
|
|
4829
|
+
color.value = color.iValue = value.constructor === Array ? rgbToHex( value ) : value;
|
|
4815
4830
|
|
|
4816
|
-
if(options.disabled) {
|
|
4831
|
+
if( options.disabled ) {
|
|
4817
4832
|
color.disabled = true;
|
|
4818
4833
|
}
|
|
4819
|
-
|
|
4820
|
-
color.addEventListener("input", e => {
|
|
4834
|
+
|
|
4835
|
+
color.addEventListener( "input", e => {
|
|
4821
4836
|
let val = e.target.value;
|
|
4822
|
-
|
|
4837
|
+
|
|
4838
|
+
const skipCallback = e.detail;
|
|
4839
|
+
|
|
4823
4840
|
// Change value (always hex)
|
|
4824
4841
|
if( !change_from_input )
|
|
4825
|
-
text_widget.set(val);
|
|
4826
|
-
|
|
4842
|
+
text_widget.set( val );
|
|
4843
|
+
|
|
4827
4844
|
// Reset button (default value)
|
|
4828
|
-
if(
|
|
4829
|
-
|
|
4830
|
-
btn
|
|
4845
|
+
if( !skipCallback )
|
|
4846
|
+
{
|
|
4847
|
+
let btn = element.querySelector( ".lexwidgetname .lexicon" );
|
|
4848
|
+
if( btn ) btn.style.display = val != color.iValue ? "block": "none";
|
|
4831
4849
|
}
|
|
4832
|
-
|
|
4833
|
-
if(color.useRGB)
|
|
4834
|
-
val = hexToRgb(val);
|
|
4835
|
-
|
|
4836
|
-
this._trigger( new IEvent(name, val, e), callback );
|
|
4837
|
-
}, false);
|
|
4838
|
-
|
|
4839
|
-
container.appendChild(color);
|
|
4840
|
-
|
|
4850
|
+
|
|
4851
|
+
if( color.useRGB )
|
|
4852
|
+
val = hexToRgb( val );
|
|
4853
|
+
|
|
4854
|
+
if( !skipCallback ) this._trigger( new IEvent( name, val, e ), callback );
|
|
4855
|
+
}, false );
|
|
4856
|
+
|
|
4857
|
+
container.appendChild( color );
|
|
4858
|
+
|
|
4841
4859
|
this.queue( container );
|
|
4842
|
-
|
|
4843
|
-
const text_widget = this.addText(null, color.value,
|
|
4860
|
+
|
|
4861
|
+
const text_widget = this.addText( null, color.value, v => {
|
|
4844
4862
|
change_from_input = true;
|
|
4845
4863
|
widget.set( v );
|
|
4846
4864
|
change_from_input = false;
|
|
4847
4865
|
}, { width: "calc(70% - 4px)" });
|
|
4848
4866
|
|
|
4849
4867
|
text_widget.domEl.style.marginLeft = "4px";
|
|
4850
|
-
|
|
4868
|
+
|
|
4851
4869
|
this.clearQueue();
|
|
4852
|
-
|
|
4853
|
-
|
|
4854
|
-
|
|
4855
|
-
// valueName.innerText = color.value;
|
|
4856
|
-
|
|
4857
|
-
// valueName.addEventListener("click", e => {
|
|
4858
|
-
// color.focus();
|
|
4859
|
-
// color.click();
|
|
4860
|
-
// });
|
|
4861
|
-
|
|
4862
|
-
// container.appendChild(valueName);
|
|
4863
|
-
|
|
4864
|
-
element.appendChild(container);
|
|
4865
|
-
|
|
4870
|
+
|
|
4871
|
+
element.appendChild( container );
|
|
4872
|
+
|
|
4866
4873
|
return widget;
|
|
4867
4874
|
}
|
|
4868
4875
|
|
|
@@ -4881,109 +4888,120 @@ console.warn( 'Script "build/lexgui.js" is depracated and will be removed soon.
|
|
|
4881
4888
|
|
|
4882
4889
|
addNumber( name, value, callback, options = {} ) {
|
|
4883
4890
|
|
|
4884
|
-
let widget = this.create_widget(name, Widget.NUMBER, options);
|
|
4891
|
+
let widget = this.create_widget( name, Widget.NUMBER, options );
|
|
4892
|
+
|
|
4885
4893
|
widget.onGetValue = () => {
|
|
4886
4894
|
return +vecinput.value;
|
|
4887
4895
|
};
|
|
4888
|
-
widget.onSetValue = (
|
|
4889
|
-
vecinput.value =
|
|
4890
|
-
Panel._dispatch_event(vecinput, "change");
|
|
4896
|
+
widget.onSetValue = ( newValue, skipCallback ) => {
|
|
4897
|
+
vecinput.value = newValue;
|
|
4898
|
+
Panel._dispatch_event( vecinput, "change", skipCallback );
|
|
4891
4899
|
};
|
|
4900
|
+
|
|
4892
4901
|
let element = widget.domEl;
|
|
4893
4902
|
|
|
4894
4903
|
// add reset functionality
|
|
4895
|
-
if(widget.name) {
|
|
4896
|
-
Panel._add_reset_property(element.domName, function() {
|
|
4904
|
+
if( widget.name ) {
|
|
4905
|
+
Panel._add_reset_property( element.domName, function() {
|
|
4897
4906
|
this.style.display = "none";
|
|
4898
4907
|
vecinput.value = vecinput.iValue;
|
|
4899
|
-
Panel._dispatch_event(vecinput, "change");
|
|
4908
|
+
Panel._dispatch_event( vecinput, "change" );
|
|
4900
4909
|
});
|
|
4901
4910
|
}
|
|
4902
4911
|
|
|
4903
4912
|
// add widget value
|
|
4904
4913
|
|
|
4905
|
-
var container = document.createElement('div');
|
|
4914
|
+
var container = document.createElement( 'div' );
|
|
4906
4915
|
container.className = "lexnumber";
|
|
4907
4916
|
container.style.width = options.inputWidth || "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
|
|
4908
4917
|
|
|
4909
|
-
let box = document.createElement('div');
|
|
4918
|
+
let box = document.createElement( 'div' );
|
|
4910
4919
|
box.className = "numberbox";
|
|
4911
4920
|
|
|
4912
|
-
let vecinput = document.createElement('input');
|
|
4921
|
+
let vecinput = document.createElement( 'input' );
|
|
4913
4922
|
vecinput.className = "vecinput";
|
|
4914
4923
|
vecinput.min = options.min ?? -1e24;
|
|
4915
4924
|
vecinput.max = options.max ?? 1e24;
|
|
4916
4925
|
vecinput.step = options.step ?? "any";
|
|
4917
4926
|
vecinput.type = "number";
|
|
4918
|
-
vecinput.id = "number_"+simple_guidGenerator();
|
|
4927
|
+
vecinput.id = "number_" + simple_guidGenerator();
|
|
4919
4928
|
|
|
4920
4929
|
if( value.constructor == Number )
|
|
4921
4930
|
{
|
|
4922
|
-
value = clamp(value, +vecinput.min, +vecinput.max);
|
|
4923
|
-
value = options.precision ? round(value, options.precision) : value;
|
|
4931
|
+
value = clamp( value, +vecinput.min, +vecinput.max );
|
|
4932
|
+
value = options.precision ? round( value, options.precision ) : value;
|
|
4924
4933
|
}
|
|
4925
4934
|
|
|
4926
4935
|
vecinput.value = vecinput.iValue = value;
|
|
4927
|
-
box.appendChild(vecinput);
|
|
4936
|
+
box.appendChild( vecinput );
|
|
4928
4937
|
|
|
4929
|
-
let drag_icon = document.createElement('a');
|
|
4938
|
+
let drag_icon = document.createElement( 'a' );
|
|
4930
4939
|
drag_icon.className = "fa-solid fa-arrows-up-down drag-icon hidden";
|
|
4931
|
-
box.appendChild(drag_icon);
|
|
4940
|
+
box.appendChild( drag_icon );
|
|
4932
4941
|
|
|
4933
|
-
if(options.disabled) {
|
|
4942
|
+
if( options.disabled ) {
|
|
4934
4943
|
vecinput.disabled = true;
|
|
4935
4944
|
}
|
|
4936
4945
|
|
|
4937
4946
|
// add slider below
|
|
4938
|
-
if(!options.skipSlider && options.min !== undefined && options.max !== undefined) {
|
|
4939
|
-
let slider = document.createElement('input');
|
|
4947
|
+
if( !options.skipSlider && options.min !== undefined && options.max !== undefined ) {
|
|
4948
|
+
let slider = document.createElement( 'input' );
|
|
4940
4949
|
slider.className = "lexinputslider";
|
|
4941
4950
|
slider.step = options.step ?? 1;
|
|
4942
4951
|
slider.min = options.min;
|
|
4943
4952
|
slider.max = options.max;
|
|
4944
4953
|
slider.type = "range";
|
|
4945
4954
|
slider.value = value;
|
|
4946
|
-
slider.addEventListener("input", function(e) {
|
|
4955
|
+
slider.addEventListener( "input", function( e ) {
|
|
4947
4956
|
let new_value = +this.valueAsNumber;
|
|
4948
|
-
vecinput.value = (+new_value).toFixed(4).replace(/([0-9]+(\.[0-9]+[1-9])?)(\.?0+$)/,'$1');
|
|
4949
|
-
Panel._dispatch_event(vecinput, "change");
|
|
4950
|
-
}, false);
|
|
4951
|
-
box.appendChild(slider);
|
|
4957
|
+
vecinput.value = ( +new_value ).toFixed( 4 ).replace( /([0-9]+(\.[0-9]+[1-9])?)(\.?0+$)/, '$1' );
|
|
4958
|
+
Panel._dispatch_event( vecinput, "change" );
|
|
4959
|
+
}, false );
|
|
4960
|
+
box.appendChild( slider );
|
|
4952
4961
|
}
|
|
4953
4962
|
|
|
4954
4963
|
// Add wheel input
|
|
4955
4964
|
|
|
4956
|
-
vecinput.addEventListener("wheel", function(e) {
|
|
4965
|
+
vecinput.addEventListener( "wheel", function( e ) {
|
|
4957
4966
|
e.preventDefault();
|
|
4958
|
-
if(this !== document.activeElement)
|
|
4967
|
+
if( this !== document.activeElement )
|
|
4959
4968
|
return;
|
|
4960
4969
|
let mult = options.step ?? 1;
|
|
4961
|
-
if(e.shiftKey) mult *= 10;
|
|
4962
|
-
else if(e.altKey) mult *= 0.1;
|
|
4963
|
-
let new_value = (+this.valueAsNumber - mult * (e.deltaY > 0 ? 1 : -1));
|
|
4964
|
-
this.value = (+new_value).toFixed(4).replace(/([0-9]+(\.[0-9]+[1-9])?)(\.?0+$)/,'$1');
|
|
4970
|
+
if( e.shiftKey ) mult *= 10;
|
|
4971
|
+
else if( e.altKey ) mult *= 0.1;
|
|
4972
|
+
let new_value = ( +this.valueAsNumber - mult * ( e.deltaY > 0 ? 1 : -1 ) );
|
|
4973
|
+
this.value = ( +new_value ).toFixed( 4 ).replace( /([0-9]+(\.[0-9]+[1-9])?)(\.?0+$)/, '$1' );
|
|
4965
4974
|
Panel._dispatch_event(vecinput, "change");
|
|
4966
|
-
}, {passive:false});
|
|
4975
|
+
}, { passive: false });
|
|
4976
|
+
|
|
4977
|
+
vecinput.addEventListener( "change", e => {
|
|
4967
4978
|
|
|
4968
|
-
|
|
4969
|
-
if(isNaN(e.target.valueAsNumber))
|
|
4979
|
+
if( isNaN( e.target.valueAsNumber ) )
|
|
4970
4980
|
return;
|
|
4971
|
-
|
|
4972
|
-
|
|
4981
|
+
|
|
4982
|
+
const skipCallback = e.detail;
|
|
4983
|
+
|
|
4984
|
+
let val = e.target.value = clamp( +e.target.valueAsNumber, +vecinput.min, +vecinput.max );
|
|
4985
|
+
val = options.precision ? round( val, options.precision ) : val;
|
|
4973
4986
|
// update slider!
|
|
4974
|
-
if( box.querySelector(".lexinputslider"))
|
|
4975
|
-
box.querySelector(".lexinputslider").value = val;
|
|
4987
|
+
if( box.querySelector( ".lexinputslider" ) )
|
|
4988
|
+
box.querySelector( ".lexinputslider" ).value = val;
|
|
4976
4989
|
|
|
4977
4990
|
vecinput.value = val;
|
|
4991
|
+
|
|
4978
4992
|
// Reset button (default value)
|
|
4979
|
-
|
|
4980
|
-
|
|
4981
|
-
|
|
4982
|
-
|
|
4993
|
+
if( !skipCallback )
|
|
4994
|
+
{
|
|
4995
|
+
let btn = element.querySelector( ".lexwidgetname .lexicon" );
|
|
4996
|
+
if( btn ) btn.style.display = val != vecinput.iValue ? "block": "none";
|
|
4997
|
+
}
|
|
4998
|
+
|
|
4999
|
+
if( !skipCallback ) this._trigger( new IEvent( name, val, e ), callback );
|
|
5000
|
+
}, { passive: false });
|
|
4983
5001
|
|
|
4984
5002
|
// Add drag input
|
|
4985
5003
|
|
|
4986
|
-
vecinput.addEventListener("mousedown", inner_mousedown);
|
|
5004
|
+
vecinput.addEventListener( "mousedown", inner_mousedown );
|
|
4987
5005
|
|
|
4988
5006
|
var that = this;
|
|
4989
5007
|
var lastY = 0;
|
|
@@ -5041,44 +5059,39 @@ console.warn( 'Script "build/lexgui.js" is depracated and will be removed soon.
|
|
|
5041
5059
|
|
|
5042
5060
|
_add_vector( num_components, name, value, callback, options = {} ) {
|
|
5043
5061
|
|
|
5044
|
-
num_components = clamp(num_components, 2, 4);
|
|
5045
|
-
value = value ?? new Array(num_components).fill(0);
|
|
5062
|
+
num_components = clamp( num_components, 2, 4 );
|
|
5063
|
+
value = value ?? new Array( num_components ).fill( 0 );
|
|
5046
5064
|
|
|
5047
|
-
if(!name) {
|
|
5048
|
-
throw("Set Widget Name!");
|
|
5065
|
+
if( !name ) {
|
|
5066
|
+
throw( "Set Widget Name!" );
|
|
5049
5067
|
}
|
|
5050
5068
|
|
|
5051
|
-
let widget = this.create_widget(name, Widget.VECTOR, options);
|
|
5069
|
+
let widget = this.create_widget( name, Widget.VECTOR, options );
|
|
5052
5070
|
|
|
5053
5071
|
widget.onGetValue = () => {
|
|
5054
|
-
let inputs = element.querySelectorAll("input");
|
|
5072
|
+
let inputs = element.querySelectorAll( "input" );
|
|
5055
5073
|
let value = [];
|
|
5056
5074
|
for( var v of inputs )
|
|
5057
5075
|
value.push( +v.value );
|
|
5058
5076
|
return value;
|
|
5059
5077
|
};
|
|
5060
|
-
widget.onSetValue = (
|
|
5061
|
-
const inputs = element.querySelectorAll(".vecinput");
|
|
5078
|
+
widget.onSetValue = ( newValue, skipCallback ) => {
|
|
5079
|
+
const inputs = element.querySelectorAll( ".vecinput" );
|
|
5062
5080
|
for( var i = 0; i < inputs.length; ++i ) {
|
|
5063
|
-
|
|
5064
|
-
|
|
5081
|
+
let value = newValue[ i ];
|
|
5082
|
+
inputs[ i ].value = value ?? 0;
|
|
5083
|
+
Panel._dispatch_event( inputs[ i ], "change", skipCallback );
|
|
5065
5084
|
}
|
|
5066
5085
|
};
|
|
5067
|
-
widget.setValue = (new_value) => {
|
|
5068
|
-
const inputs = element.querySelectorAll(".vecinput");
|
|
5069
|
-
for( var i = 0; i < inputs.length; ++i ) {
|
|
5070
|
-
inputs[i].value = new_value[i] ?? 0;
|
|
5071
|
-
}
|
|
5072
|
-
}
|
|
5073
5086
|
|
|
5074
5087
|
let element = widget.domEl;
|
|
5075
5088
|
|
|
5076
5089
|
// Add reset functionality
|
|
5077
|
-
Panel._add_reset_property(element.domName, function() {
|
|
5090
|
+
Panel._add_reset_property( element.domName, function() {
|
|
5078
5091
|
this.style.display = "none";
|
|
5079
|
-
for( let v of element.querySelectorAll(".vecinput") ) {
|
|
5092
|
+
for( let v of element.querySelectorAll( ".vecinput" ) ) {
|
|
5080
5093
|
v.value = v.iValue;
|
|
5081
|
-
Panel._dispatch_event(v, "change");
|
|
5094
|
+
Panel._dispatch_event( v, "change" );
|
|
5082
5095
|
}
|
|
5083
5096
|
});
|
|
5084
5097
|
|
|
@@ -5090,88 +5103,91 @@ console.warn( 'Script "build/lexgui.js" is depracated and will be removed soon.
|
|
|
5090
5103
|
|
|
5091
5104
|
for( let i = 0; i < num_components; ++i ) {
|
|
5092
5105
|
|
|
5093
|
-
let box = document.createElement('div');
|
|
5106
|
+
let box = document.createElement( 'div' );
|
|
5094
5107
|
box.className = "vecbox";
|
|
5095
|
-
box.innerHTML = "<span class='" + Panel.VECTOR_COMPONENTS[i] + "'></span>";
|
|
5108
|
+
box.innerHTML = "<span class='" + Panel.VECTOR_COMPONENTS[ i ] + "'></span>";
|
|
5096
5109
|
|
|
5097
|
-
let vecinput = document.createElement('input');
|
|
5110
|
+
let vecinput = document.createElement( 'input' );
|
|
5098
5111
|
vecinput.className = "vecinput v" + num_components;
|
|
5099
5112
|
vecinput.min = options.min ?? -1e24;
|
|
5100
5113
|
vecinput.max = options.max ?? 1e24;
|
|
5101
5114
|
vecinput.step = options.step ?? "any";
|
|
5102
5115
|
vecinput.type = "number";
|
|
5103
|
-
vecinput.id = "vec"+num_components+"_"+simple_guidGenerator();
|
|
5116
|
+
vecinput.id = "vec" + num_components + "_" + simple_guidGenerator();
|
|
5104
5117
|
vecinput.idx = i;
|
|
5105
5118
|
|
|
5106
|
-
if( value[i].constructor == Number )
|
|
5119
|
+
if( value[ i ].constructor == Number )
|
|
5107
5120
|
{
|
|
5108
|
-
value[i] = clamp(value[i], +vecinput.min, +vecinput.max);
|
|
5109
|
-
value[i] = options.precision ? round(value[i], options.precision) : value[i];
|
|
5121
|
+
value[ i ] = clamp(value[ i ], +vecinput.min, +vecinput.max);
|
|
5122
|
+
value[ i ] = options.precision ? round(value[ i ], options.precision) : value[ i ];
|
|
5110
5123
|
}
|
|
5111
5124
|
|
|
5112
|
-
vecinput.value = vecinput.iValue = value[i];
|
|
5125
|
+
vecinput.value = vecinput.iValue = value[ i ];
|
|
5113
5126
|
|
|
5114
|
-
let drag_icon = document.createElement('a');
|
|
5127
|
+
let drag_icon = document.createElement( 'a' );
|
|
5115
5128
|
drag_icon.className = "fa-solid fa-arrows-up-down drag-icon hidden";
|
|
5116
|
-
box.appendChild(drag_icon);
|
|
5129
|
+
box.appendChild( drag_icon );
|
|
5117
5130
|
|
|
5118
|
-
if(options.disabled) {
|
|
5131
|
+
if( options.disabled ) {
|
|
5119
5132
|
vecinput.disabled = true;
|
|
5120
5133
|
}
|
|
5121
5134
|
|
|
5122
5135
|
// Add wheel input
|
|
5123
5136
|
|
|
5124
|
-
vecinput.addEventListener("wheel", function(e) {
|
|
5137
|
+
vecinput.addEventListener( "wheel", function( e ) {
|
|
5125
5138
|
e.preventDefault();
|
|
5126
|
-
if(this !== document.activeElement)
|
|
5139
|
+
if( this !== document.activeElement )
|
|
5127
5140
|
return;
|
|
5128
5141
|
let mult = options.step ?? 1;
|
|
5129
|
-
if(e.shiftKey) mult = 10;
|
|
5130
|
-
else if(e.altKey) mult = 0.1;
|
|
5142
|
+
if( e.shiftKey ) mult = 10;
|
|
5143
|
+
else if( e.altKey ) mult = 0.1;
|
|
5131
5144
|
|
|
5132
5145
|
if( lock_icon.locked )
|
|
5133
5146
|
{
|
|
5134
5147
|
for( let v of element.querySelectorAll(".vecinput") ) {
|
|
5135
|
-
v.value = (+v.valueAsNumber - mult * (e.deltaY > 0 ? 1 : -1)).toPrecision(5);
|
|
5148
|
+
v.value = ( +v.valueAsNumber - mult * ( e.deltaY > 0 ? 1 : -1 ) ).toPrecision( 5 );
|
|
5136
5149
|
Panel._dispatch_event(v, "change");
|
|
5137
5150
|
}
|
|
5138
5151
|
} else {
|
|
5139
|
-
this.value = (+this.valueAsNumber - mult * (e.deltaY > 0 ? 1 : -1)).toPrecision(5);
|
|
5140
|
-
Panel._dispatch_event(vecinput, "change");
|
|
5152
|
+
this.value = ( +this.valueAsNumber - mult * ( e.deltaY > 0 ? 1 : -1 ) ).toPrecision( 5 );
|
|
5153
|
+
Panel._dispatch_event( vecinput, "change" );
|
|
5141
5154
|
}
|
|
5142
|
-
}, {passive:false});
|
|
5155
|
+
}, { passive: false } );
|
|
5143
5156
|
|
|
5144
|
-
vecinput.addEventListener("change", e => {
|
|
5157
|
+
vecinput.addEventListener( "change", e => {
|
|
5145
5158
|
|
|
5146
5159
|
if( isNaN( e.target.value ) )
|
|
5147
5160
|
return;
|
|
5148
5161
|
|
|
5149
|
-
|
|
5150
|
-
|
|
5151
|
-
val =
|
|
5152
|
-
|
|
5162
|
+
const skipCallback = e.detail;
|
|
5163
|
+
|
|
5164
|
+
let val = e.target.value = clamp( e.target.value, +vecinput.min, +vecinput.max );
|
|
5165
|
+
val = options.precision ? round( val, options.precision ) : val;
|
|
5153
5166
|
|
|
5154
5167
|
// Reset button (default value)
|
|
5155
|
-
|
|
5156
|
-
|
|
5168
|
+
if( !skipCallback )
|
|
5169
|
+
{
|
|
5170
|
+
let btn = element.querySelector( ".lexwidgetname .lexicon" );
|
|
5171
|
+
if( btn ) btn.style.display = val != vecinput.iValue ? "block": "none";
|
|
5172
|
+
}
|
|
5157
5173
|
|
|
5158
5174
|
if( lock_icon.locked )
|
|
5159
5175
|
{
|
|
5160
|
-
for( let v of element.querySelectorAll(".vecinput") ) {
|
|
5176
|
+
for( let v of element.querySelectorAll( ".vecinput" ) ) {
|
|
5161
5177
|
v.value = val;
|
|
5162
|
-
value[v.idx] = val;
|
|
5178
|
+
value[ v.idx ] = val;
|
|
5163
5179
|
}
|
|
5164
5180
|
} else {
|
|
5165
5181
|
vecinput.value = val;
|
|
5166
|
-
value[e.target.idx] = val;
|
|
5182
|
+
value[ e.target.idx ] = val;
|
|
5167
5183
|
}
|
|
5168
5184
|
|
|
5169
|
-
this._trigger( new IEvent(name, value, e), callback );
|
|
5170
|
-
}, false);
|
|
5185
|
+
if( !skipCallback ) this._trigger( new IEvent( name, value, e ), callback );
|
|
5186
|
+
}, false );
|
|
5171
5187
|
|
|
5172
5188
|
// Add drag input
|
|
5173
5189
|
|
|
5174
|
-
vecinput.addEventListener("mousedown", inner_mousedown);
|
|
5190
|
+
vecinput.addEventListener( "mousedown", inner_mousedown );
|
|
5175
5191
|
|
|
5176
5192
|
var that = this;
|
|
5177
5193
|
var lastY = 0;
|
|
@@ -5288,15 +5304,17 @@ console.warn( 'Script "build/lexgui.js" is depracated and will be removed soon.
|
|
|
5288
5304
|
throw("Set Widget Name!");
|
|
5289
5305
|
}
|
|
5290
5306
|
|
|
5291
|
-
let widget = this.create_widget(name, Widget.PROGRESS, options);
|
|
5307
|
+
let widget = this.create_widget( name, Widget.PROGRESS, options );
|
|
5308
|
+
|
|
5292
5309
|
widget.onGetValue = () => {
|
|
5293
5310
|
return progress.value;
|
|
5294
5311
|
};
|
|
5295
|
-
widget.onSetValue = (
|
|
5296
|
-
element.querySelector("meter").value =
|
|
5312
|
+
widget.onSetValue = ( newValue, skipCallback ) => {
|
|
5313
|
+
element.querySelector("meter").value = newValue;
|
|
5297
5314
|
if( element.querySelector("span") )
|
|
5298
|
-
element.querySelector("span").innerText =
|
|
5315
|
+
element.querySelector("span").innerText = newValue;
|
|
5299
5316
|
};
|
|
5317
|
+
|
|
5300
5318
|
let element = widget.domEl;
|
|
5301
5319
|
|
|
5302
5320
|
var container = document.createElement('div');
|