lexgui 8.1.1 → 8.2.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.
- package/build/components/Avatar.d.ts +15 -0
- package/build/components/NodeTree.d.ts +51 -26
- package/build/components/Vector.d.ts +10 -9
- package/build/core/Event.d.ts +6 -26
- package/build/core/Namespace.js +1 -1
- package/build/core/Namespace.js.map +1 -1
- package/build/core/Panel.d.ts +538 -538
- package/build/extensions/AssetView.d.ts +7 -6
- package/build/extensions/AssetView.js +194 -155
- package/build/extensions/AssetView.js.map +1 -1
- package/build/extensions/Audio.js.map +1 -1
- package/build/extensions/CodeEditor.d.ts +358 -350
- package/build/extensions/CodeEditor.js +5054 -5022
- package/build/extensions/CodeEditor.js.map +1 -1
- package/build/extensions/DocMaker.js +330 -327
- package/build/extensions/DocMaker.js.map +1 -1
- package/build/extensions/GraphEditor.js +2754 -2760
- package/build/extensions/GraphEditor.js.map +1 -1
- package/build/extensions/Timeline.d.ts +668 -670
- package/build/extensions/Timeline.js +3948 -3955
- package/build/extensions/Timeline.js.map +1 -1
- package/build/extensions/VideoEditor.d.ts +128 -128
- package/build/extensions/VideoEditor.js +893 -898
- package/build/extensions/VideoEditor.js.map +1 -1
- package/build/index.css.d.ts +3 -4
- package/build/index.d.ts +57 -56
- package/build/lexgui.all.js +1587 -1369
- package/build/lexgui.all.js.map +1 -1
- package/build/lexgui.all.min.js +1 -1
- package/build/lexgui.all.module.js +1584 -1364
- package/build/lexgui.all.module.js.map +1 -1
- package/build/lexgui.all.module.min.js +1 -1
- package/build/lexgui.css +6157 -5583
- package/build/lexgui.js +977 -815
- package/build/lexgui.js.map +1 -1
- package/build/lexgui.min.css +2 -3
- package/build/lexgui.min.js +1 -1
- package/build/lexgui.module.js +975 -811
- package/build/lexgui.module.js.map +1 -1
- package/build/lexgui.module.min.js +1 -1
- package/changelog.md +52 -1
- package/demo.js +167 -65
- package/examples/all-components.html +38 -52
- package/examples/asset-view.html +27 -0
- package/examples/code-editor.html +1 -1
- package/examples/editor.html +10 -95
- package/examples/index.html +2 -2
- package/examples/side-bar.html +1 -1
- package/examples/timeline.html +2 -2
- package/examples/video-editor.html +1 -1
- package/examples/video-editor2.html +2 -2
- package/package.json +7 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Audio.js","sources":["../../src/extensions/Audio.ts"],"sourcesContent":["// Audio.ts @jxarco\r\n\r\nimport { LX } from '../core/Namespace';\r\n\r\nif ( !LX )\r\n{\r\n throw ( 'Missing LX namespace!' );\r\n}\r\n\r\nLX.extensions.push( 'Audio' );\r\n\r\nconst Panel = LX.Panel;\r\nconst BaseComponent = LX.BaseComponent;\r\nconst ComponentType = LX.ComponentType;\r\nconst IEvent = LX.IEvent;\r\n\r\n/**\r\n * @class Knob\r\n * @description Knob Component\r\n */\r\n\r\nexport class Knob extends BaseComponent\r\n{\r\n constructor( name: string, value: number, min: number, max: number, callback: any, options: any = {} )\r\n {\r\n if ( value.constructor == Number )\r\n {\r\n value = LX.clamp( value, min, max );\r\n value = options.precision ? LX.round( value, options.precision ) : value;\r\n }\r\n\r\n super( ComponentType.KNOB, name, value, options );\r\n\r\n this.onGetValue = () => {\r\n return innerKnobCircle.value;\r\n };\r\n\r\n this.onSetValue = ( newValue: any, skipCallback?: boolean, event?: any ) => {\r\n innerSetValue( newValue );\r\n LX.BaseComponent._dispatchEvent( innerKnobCircle, 'change', skipCallback );\r\n };\r\n\r\n this.onResize = () => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n container.style.width = `calc( 100% - ${realNameWidth})`;\r\n };\r\n\r\n const snapEnabled = options.snap && options.snap.constructor == Number;\r\n const ticks: number[] = [];\r\n if ( snapEnabled )\r\n {\r\n const range = ( max - min ) / options.snap;\r\n for ( let i = 0; i < ( options.snap + 1 ); ++i )\r\n {\r\n ticks.push( min + ( i * range ) );\r\n }\r\n }\r\n\r\n var container: any = document.createElement( 'div' );\r\n container.className = 'lexknob';\r\n LX.addClass( container, options.size );\r\n LX.addClass( container, snapEnabled ? 'show-ticks' : null );\r\n\r\n let knobCircle = document.createElement( 'div' );\r\n knobCircle.className = 'knobcircle';\r\n if ( snapEnabled )\r\n {\r\n knobCircle.style.setProperty( '--knob-snap-mark', ( 270 / options.snap ) + 'deg' );\r\n }\r\n\r\n let innerKnobCircle: any = document.createElement( 'div' );\r\n innerKnobCircle.className = 'innerknobcircle';\r\n innerKnobCircle.min = min;\r\n innerKnobCircle.max = max;\r\n knobCircle.appendChild( innerKnobCircle );\r\n\r\n let knobMarker: any = document.createElement( 'div' );\r\n knobMarker.className = 'knobmarker';\r\n innerKnobCircle.appendChild( knobMarker );\r\n innerKnobCircle.value = innerKnobCircle.iValue = value;\r\n\r\n let mustSnap = false;\r\n let innerSetValue = function( v: number )\r\n {\r\n // Convert val between (-135 and 135)\r\n const angle = LX.remapRange( v, innerKnobCircle.min, innerKnobCircle.max, -135.0, 135.0 );\r\n innerKnobCircle.style.rotate = angle + 'deg';\r\n innerKnobCircle.value = v;\r\n };\r\n\r\n const angle = LX.remapRange( value, min, max, -135.0, 135.0 );\r\n innerKnobCircle.style.rotate = angle + 'deg';\r\n\r\n if ( options.disabled )\r\n {\r\n LX.addClass( container, 'disabled' );\r\n }\r\n\r\n innerKnobCircle.addEventListener( 'change', ( e: InputEvent ) => {\r\n const knob: any = e.target;\r\n\r\n const skipCallback = e.detail;\r\n\r\n if ( mustSnap )\r\n {\r\n knob.value = ticks.reduce( ( prev, curr ) =>\r\n Math.abs( curr - knob.value ) < Math.abs( prev - knob.value ) ? curr : prev\r\n );\r\n }\r\n\r\n let val = knob.value = LX.clamp( knob.value, knob.min, knob.max );\r\n val = options.precision ? LX.round( val, options.precision ) : val;\r\n\r\n innerSetValue( val );\r\n\r\n // Reset button (default value)\r\n if ( !skipCallback )\r\n {\r\n let btn = this.root.querySelector( '.lexcomponentname .lexicon' );\r\n if ( btn ) btn.style.display = val != innerKnobCircle.iValue ? 'block' : 'none';\r\n\r\n if ( !( snapEnabled && !mustSnap ) )\r\n {\r\n this._trigger( new IEvent( name, val, e ), callback );\r\n mustSnap = false;\r\n }\r\n }\r\n }, { passive: false } );\r\n\r\n // Add drag input\r\n\r\n innerKnobCircle.addEventListener( 'mousedown', innerMouseDown );\r\n\r\n var that = this;\r\n\r\n function innerMouseDown( e: MouseEvent )\r\n {\r\n if ( document.activeElement == innerKnobCircle || options.disabled )\r\n {\r\n return;\r\n }\r\n\r\n var doc = that.root.ownerDocument;\r\n doc.addEventListener( 'mousemove', innerMouseMove );\r\n doc.addEventListener( 'mouseup', innerMouseUp );\r\n document.body.classList.add( 'noevents' );\r\n\r\n if ( !document.pointerLockElement )\r\n {\r\n container.requestPointerLock();\r\n }\r\n\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n\r\n function innerMouseMove( e: MouseEvent )\r\n {\r\n let dt = -e.movementY;\r\n\r\n if ( dt != 0 )\r\n {\r\n let mult = options.step ?? 1;\r\n if ( e.shiftKey ) mult *= 10;\r\n else if ( e.altKey ) mult *= 0.1;\r\n let new_value = innerKnobCircle.value - mult * dt;\r\n innerKnobCircle.value = new_value;\r\n LX.BaseComponent._dispatchEvent( innerKnobCircle, 'change' );\r\n }\r\n\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n\r\n function innerMouseUp( e: MouseEvent )\r\n {\r\n var doc = that.root.ownerDocument;\r\n doc.removeEventListener( 'mousemove', innerMouseMove );\r\n doc.removeEventListener( 'mouseup', innerMouseUp );\r\n document.body.classList.remove( 'noevents' );\r\n\r\n // Snap if necessary\r\n if ( snapEnabled )\r\n {\r\n mustSnap = true;\r\n LX.BaseComponent._dispatchEvent( innerKnobCircle, 'change' );\r\n }\r\n\r\n if ( document.pointerLockElement )\r\n {\r\n document.exitPointerLock();\r\n }\r\n }\r\n\r\n container.appendChild( knobCircle );\r\n\r\n this.root.appendChild( container );\r\n\r\n LX.doAsync( this.onResize.bind( this ) );\r\n }\r\n}\r\n\r\nLX.Knob = Knob;\r\n\r\n/**\r\n * @method addKnob\r\n * @param {String} name Component name\r\n * @param {Number} value Knob value\r\n * @param {Number} min Min Knob value\r\n * @param {Number} max Max Knob value\r\n * @param {Function} callback Callback function on change\r\n * @param {*} options:\r\n * minLabel (String): Label to show as min value\r\n * maxLabel (String): Label to show as max value\r\n */\r\n\r\nconst panelProto: any = Panel.prototype;\r\npanelProto.addKnob = function( name: string, value: number, min: number, max: number, callback: any, options: any = {} )\r\n{\r\n const component = new Knob( name, value, min, max, callback, options );\r\n return this._attachComponent( component );\r\n};\r\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Audio.js","sources":["../../src/extensions/Audio.ts"],"sourcesContent":["// Audio.ts @jxarco\r\n\r\nimport { LX } from '../core/Namespace';\r\n\r\nif ( !LX )\r\n{\r\n throw ( 'Missing LX namespace!' );\r\n}\r\n\r\nLX.extensions.push( 'Audio' );\r\n\r\nconst Panel = LX.Panel;\r\nconst BaseComponent = LX.BaseComponent;\r\nconst ComponentType = LX.ComponentType;\r\nconst IEvent = LX.IEvent;\r\n\r\n/**\r\n * @class Knob\r\n * @description Knob Component\r\n */\r\n\r\nexport class Knob extends BaseComponent\r\n{\r\n constructor( name: string, value: number, min: number, max: number, callback: any, options: any = {} )\r\n {\r\n if ( value.constructor == Number )\r\n {\r\n value = LX.clamp( value, min, max );\r\n value = options.precision ? LX.round( value, options.precision ) : value;\r\n }\r\n\r\n super( ComponentType.KNOB, name, value, options );\r\n\r\n this.onGetValue = () => {\r\n return innerKnobCircle.value;\r\n };\r\n\r\n this.onSetValue = ( newValue: any, skipCallback?: boolean, event?: any ) => {\r\n innerSetValue( newValue );\r\n LX.BaseComponent._dispatchEvent( innerKnobCircle, 'change', skipCallback );\r\n };\r\n\r\n this.onResize = () => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n container.style.width = `calc( 100% - ${realNameWidth})`;\r\n };\r\n\r\n const snapEnabled = options.snap && options.snap.constructor == Number;\r\n const ticks: number[] = [];\r\n if ( snapEnabled )\r\n {\r\n const range = ( max - min ) / options.snap;\r\n for ( let i = 0; i < ( options.snap + 1 ); ++i )\r\n {\r\n ticks.push( min + ( i * range ) );\r\n }\r\n }\r\n\r\n var container: any = document.createElement( 'div' );\r\n container.className = 'lexknob';\r\n LX.addClass( container, options.size );\r\n LX.addClass( container, snapEnabled ? 'show-ticks' : null );\r\n\r\n let knobCircle = document.createElement( 'div' );\r\n knobCircle.className = 'knobcircle';\r\n if ( snapEnabled )\r\n {\r\n knobCircle.style.setProperty( '--knob-snap-mark', ( 270 / options.snap ) + 'deg' );\r\n }\r\n\r\n let innerKnobCircle: any = document.createElement( 'div' );\r\n innerKnobCircle.className = 'innerknobcircle';\r\n innerKnobCircle.min = min;\r\n innerKnobCircle.max = max;\r\n knobCircle.appendChild( innerKnobCircle );\r\n\r\n let knobMarker: any = document.createElement( 'div' );\r\n knobMarker.className = 'knobmarker';\r\n innerKnobCircle.appendChild( knobMarker );\r\n innerKnobCircle.value = innerKnobCircle.iValue = value;\r\n\r\n let mustSnap = false;\r\n let innerSetValue = function( v: number )\r\n {\r\n // Convert val between (-135 and 135)\r\n const angle = LX.remapRange( v, innerKnobCircle.min, innerKnobCircle.max, -135.0, 135.0 );\r\n innerKnobCircle.style.rotate = angle + 'deg';\r\n innerKnobCircle.value = v;\r\n };\r\n\r\n const angle = LX.remapRange( value, min, max, -135.0, 135.0 );\r\n innerKnobCircle.style.rotate = angle + 'deg';\r\n\r\n if ( options.disabled )\r\n {\r\n LX.addClass( container, 'disabled' );\r\n }\r\n\r\n innerKnobCircle.addEventListener( 'change', ( e: InputEvent ) => {\r\n const knob: any = e.target;\r\n\r\n const skipCallback = e.detail;\r\n\r\n if ( mustSnap )\r\n {\r\n knob.value = ticks.reduce( ( prev, curr ) => Math.abs( curr - knob.value ) < Math.abs( prev - knob.value ) ? curr : prev );\r\n }\r\n\r\n let val = knob.value = LX.clamp( knob.value, knob.min, knob.max );\r\n val = options.precision ? LX.round( val, options.precision ) : val;\r\n\r\n innerSetValue( val );\r\n\r\n // Reset button (default value)\r\n if ( !skipCallback )\r\n {\r\n let btn = this.root.querySelector( '.lexcomponentname .lexicon' );\r\n if ( btn ) btn.style.display = val != innerKnobCircle.iValue ? 'block' : 'none';\r\n\r\n if ( !( snapEnabled && !mustSnap ) )\r\n {\r\n this._trigger( new IEvent( name, val, e ), callback );\r\n mustSnap = false;\r\n }\r\n }\r\n }, { passive: false } );\r\n\r\n // Add drag input\r\n\r\n innerKnobCircle.addEventListener( 'mousedown', innerMouseDown );\r\n\r\n var that = this;\r\n\r\n function innerMouseDown( e: MouseEvent )\r\n {\r\n if ( document.activeElement == innerKnobCircle || options.disabled )\r\n {\r\n return;\r\n }\r\n\r\n var doc = that.root.ownerDocument;\r\n doc.addEventListener( 'mousemove', innerMouseMove );\r\n doc.addEventListener( 'mouseup', innerMouseUp );\r\n document.body.classList.add( 'noevents' );\r\n\r\n if ( !document.pointerLockElement )\r\n {\r\n container.requestPointerLock();\r\n }\r\n\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n\r\n function innerMouseMove( e: MouseEvent )\r\n {\r\n let dt = -e.movementY;\r\n\r\n if ( dt != 0 )\r\n {\r\n let mult = options.step ?? 1;\r\n if ( e.shiftKey ) mult *= 10;\r\n else if ( e.altKey ) mult *= 0.1;\r\n let new_value = innerKnobCircle.value - mult * dt;\r\n innerKnobCircle.value = new_value;\r\n LX.BaseComponent._dispatchEvent( innerKnobCircle, 'change' );\r\n }\r\n\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n\r\n function innerMouseUp( e: MouseEvent )\r\n {\r\n var doc = that.root.ownerDocument;\r\n doc.removeEventListener( 'mousemove', innerMouseMove );\r\n doc.removeEventListener( 'mouseup', innerMouseUp );\r\n document.body.classList.remove( 'noevents' );\r\n\r\n // Snap if necessary\r\n if ( snapEnabled )\r\n {\r\n mustSnap = true;\r\n LX.BaseComponent._dispatchEvent( innerKnobCircle, 'change' );\r\n }\r\n\r\n if ( document.pointerLockElement )\r\n {\r\n document.exitPointerLock();\r\n }\r\n }\r\n\r\n container.appendChild( knobCircle );\r\n\r\n this.root.appendChild( container );\r\n\r\n LX.doAsync( this.onResize.bind( this ) );\r\n }\r\n}\r\n\r\nLX.Knob = Knob;\r\n\r\n/**\r\n * @method addKnob\r\n * @param {String} name Component name\r\n * @param {Number} value Knob value\r\n * @param {Number} min Min Knob value\r\n * @param {Number} max Max Knob value\r\n * @param {Function} callback Callback function on change\r\n * @param {*} options:\r\n * minLabel (String): Label to show as min value\r\n * maxLabel (String): Label to show as max value\r\n */\r\n\r\nconst panelProto: any = Panel.prototype;\r\npanelProto.addKnob = function( name: string, value: number, min: number, max: number, callback: any, options: any = {} )\r\n{\r\n const component = new Knob( name, value, min, max, callback, options );\r\n return this._attachComponent( component );\r\n};\r\n"],"names":[],"mappings":";;;AAAA;AAIA,IAAK,CAAC,EAAE,EACR;IACI,OAAQ,uBAAuB;AACnC;AAEA,EAAE,CAAC,UAAU,CAAC,IAAI,CAAE,OAAO,CAAE;AAE7B,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK;AACtB,MAAM,aAAa,GAAG,EAAE,CAAC,aAAa;AACtC,MAAM,aAAa,GAAG,EAAE,CAAC,aAAa;AACtC,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM;AAExB;;;AAGG;AAEG,MAAO,IAAK,SAAQ,aAAa,CAAA;IAEnC,WAAA,CAAa,IAAY,EAAE,KAAa,EAAE,GAAW,EAAE,GAAW,EAAE,QAAa,EAAE,OAAA,GAAe,EAAE,EAAA;AAEhG,QAAA,IAAK,KAAK,CAAC,WAAW,IAAI,MAAM,EAChC;YACI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAE;YACnC,KAAK,GAAG,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC,KAAK,CAAE,KAAK,EAAE,OAAO,CAAC,SAAS,CAAE,GAAG,KAAK;QAC5E;QAEA,KAAK,CAAE,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAE;AAEjD,QAAA,IAAI,CAAC,UAAU,GAAG,MAAK;YACnB,OAAO,eAAe,CAAC,KAAK;AAChC,QAAA,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,CAAE,QAAa,EAAE,YAAsB,EAAE,KAAW,KAAK;YACvE,aAAa,CAAE,QAAQ,CAAE;YACzB,EAAE,CAAC,aAAa,CAAC,cAAc,CAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,CAAE;AAC9E,QAAA,CAAC;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAK;AACjB,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,IAAI,KAAK;YAC7D,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,CAAA,aAAA,EAAgB,aAAa,GAAG;AAC5D,QAAA,CAAC;AAED,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,MAAM;QACtE,MAAM,KAAK,GAAa,EAAE;QAC1B,IAAK,WAAW,EAChB;YACI,MAAM,KAAK,GAAG,CAAE,GAAG,GAAG,GAAG,IAAK,OAAO,CAAC,IAAI;AAC1C,YAAA,KAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAK,OAAO,CAAC,IAAI,GAAG,CAAC,CAAE,EAAE,EAAE,CAAC,EAC9C;gBACI,KAAK,CAAC,IAAI,CAAE,GAAG,IAAK,CAAC,GAAG,KAAK,CAAE,CAAE;YACrC;QACJ;QAEA,IAAI,SAAS,GAAQ,QAAQ,CAAC,aAAa,CAAE,KAAK,CAAE;AACpD,QAAA,SAAS,CAAC,SAAS,GAAG,SAAS;QAC/B,EAAE,CAAC,QAAQ,CAAE,SAAS,EAAE,OAAO,CAAC,IAAI,CAAE;AACtC,QAAA,EAAE,CAAC,QAAQ,CAAE,SAAS,EAAE,WAAW,GAAG,YAAY,GAAG,IAAI,CAAE;QAE3D,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAE,KAAK,CAAE;AAChD,QAAA,UAAU,CAAC,SAAS,GAAG,YAAY;QACnC,IAAK,WAAW,EAChB;AACI,YAAA,UAAU,CAAC,KAAK,CAAC,WAAW,CAAE,kBAAkB,EAAE,CAAE,GAAG,GAAG,OAAO,CAAC,IAAI,IAAK,KAAK,CAAE;QACtF;QAEA,IAAI,eAAe,GAAQ,QAAQ,CAAC,aAAa,CAAE,KAAK,CAAE;AAC1D,QAAA,eAAe,CAAC,SAAS,GAAG,iBAAiB;AAC7C,QAAA,eAAe,CAAC,GAAG,GAAG,GAAG;AACzB,QAAA,eAAe,CAAC,GAAG,GAAG,GAAG;AACzB,QAAA,UAAU,CAAC,WAAW,CAAE,eAAe,CAAE;QAEzC,IAAI,UAAU,GAAQ,QAAQ,CAAC,aAAa,CAAE,KAAK,CAAE;AACrD,QAAA,UAAU,CAAC,SAAS,GAAG,YAAY;AACnC,QAAA,eAAe,CAAC,WAAW,CAAE,UAAU,CAAE;QACzC,eAAe,CAAC,KAAK,GAAG,eAAe,CAAC,MAAM,GAAG,KAAK;QAEtD,IAAI,QAAQ,GAAG,KAAK;QACpB,IAAI,aAAa,GAAG,UAAU,CAAS,EAAA;;YAGnC,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAE,CAAC,EAAE,eAAe,CAAC,GAAG,EAAE,eAAe,CAAC,GAAG,EAAE,IAAM,EAAE,KAAK,CAAE;YACzF,eAAe,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,KAAK;AAC5C,YAAA,eAAe,CAAC,KAAK,GAAG,CAAC;AAC7B,QAAA,CAAC;AAED,QAAA,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAM,EAAE,KAAK,CAAE;QAC7D,eAAe,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,KAAK;AAE5C,QAAA,IAAK,OAAO,CAAC,QAAQ,EACrB;AACI,YAAA,EAAE,CAAC,QAAQ,CAAE,SAAS,EAAE,UAAU,CAAE;QACxC;QAEA,eAAe,CAAC,gBAAgB,CAAE,QAAQ,EAAE,CAAE,CAAa,KAAK;AAC5D,YAAA,MAAM,IAAI,GAAQ,CAAC,CAAC,MAAM;AAE1B,YAAA,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM;YAE7B,IAAK,QAAQ,EACb;gBACI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAE,CAAE,IAAI,EAAE,IAAI,KAAM,IAAI,CAAC,GAAG,CAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAE,GAAG,IAAI,CAAC,GAAG,CAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAE,GAAG,IAAI,GAAG,IAAI,CAAE;YAC9H;YAEA,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAE;YACjE,GAAG,GAAG,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC,KAAK,CAAE,GAAG,EAAE,OAAO,CAAC,SAAS,CAAE,GAAG,GAAG;YAElE,aAAa,CAAE,GAAG,CAAE;;YAGpB,IAAK,CAAC,YAAY,EAClB;gBACI,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAE,4BAA4B,CAAE;AACjE,gBAAA,IAAK,GAAG;AAAG,oBAAA,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,IAAI,eAAe,CAAC,MAAM,GAAG,OAAO,GAAG,MAAM;gBAE/E,IAAK,EAAG,WAAW,IAAI,CAAC,QAAQ,CAAE,EAClC;AACI,oBAAA,IAAI,CAAC,QAAQ,CAAE,IAAI,MAAM,CAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAE,EAAE,QAAQ,CAAE;oBACrD,QAAQ,GAAG,KAAK;gBACpB;YACJ;AACJ,QAAA,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAE;;AAIvB,QAAA,eAAe,CAAC,gBAAgB,CAAE,WAAW,EAAE,cAAc,CAAE;QAE/D,IAAI,IAAI,GAAG,IAAI;QAEf,SAAS,cAAc,CAAE,CAAa,EAAA;YAElC,IAAK,QAAQ,CAAC,aAAa,IAAI,eAAe,IAAI,OAAO,CAAC,QAAQ,EAClE;gBACI;YACJ;AAEA,YAAA,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa;AACjC,YAAA,GAAG,CAAC,gBAAgB,CAAE,WAAW,EAAE,cAAc,CAAE;AACnD,YAAA,GAAG,CAAC,gBAAgB,CAAE,SAAS,EAAE,YAAY,CAAE;YAC/C,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAE,UAAU,CAAE;AAEzC,YAAA,IAAK,CAAC,QAAQ,CAAC,kBAAkB,EACjC;gBACI,SAAS,CAAC,kBAAkB,EAAE;YAClC;YAEA,CAAC,CAAC,wBAAwB,EAAE;YAC5B,CAAC,CAAC,eAAe,EAAE;QACvB;QAEA,SAAS,cAAc,CAAE,CAAa,EAAA;AAElC,YAAA,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS;AAErB,YAAA,IAAK,EAAE,IAAI,CAAC,EACZ;AACI,gBAAA,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC;gBAC5B,IAAK,CAAC,CAAC,QAAQ;oBAAG,IAAI,IAAI,EAAE;qBACvB,IAAK,CAAC,CAAC,MAAM;oBAAG,IAAI,IAAI,GAAG;gBAChC,IAAI,SAAS,GAAG,eAAe,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE;AACjD,gBAAA,eAAe,CAAC,KAAK,GAAG,SAAS;gBACjC,EAAE,CAAC,aAAa,CAAC,cAAc,CAAE,eAAe,EAAE,QAAQ,CAAE;YAChE;YAEA,CAAC,CAAC,eAAe,EAAE;YACnB,CAAC,CAAC,cAAc,EAAE;QACtB;QAEA,SAAS,YAAY,CAAE,CAAa,EAAA;AAEhC,YAAA,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa;AACjC,YAAA,GAAG,CAAC,mBAAmB,CAAE,WAAW,EAAE,cAAc,CAAE;AACtD,YAAA,GAAG,CAAC,mBAAmB,CAAE,SAAS,EAAE,YAAY,CAAE;YAClD,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAE,UAAU,CAAE;;YAG5C,IAAK,WAAW,EAChB;gBACI,QAAQ,GAAG,IAAI;gBACf,EAAE,CAAC,aAAa,CAAC,cAAc,CAAE,eAAe,EAAE,QAAQ,CAAE;YAChE;AAEA,YAAA,IAAK,QAAQ,CAAC,kBAAkB,EAChC;gBACI,QAAQ,CAAC,eAAe,EAAE;YAC9B;QACJ;AAEA,QAAA,SAAS,CAAC,WAAW,CAAE,UAAU,CAAE;AAEnC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAE,SAAS,CAAE;AAElC,QAAA,EAAE,CAAC,OAAO,CAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAE,IAAI,CAAE,CAAE;IAC5C;AACH;AAED,EAAE,CAAC,IAAI,GAAG,IAAI;AAEd;;;;;;;;;;AAUG;AAEH,MAAM,UAAU,GAAQ,KAAK,CAAC,SAAS;AACvC,UAAU,CAAC,OAAO,GAAG,UAAU,IAAY,EAAE,KAAa,EAAE,GAAW,EAAE,GAAW,EAAE,QAAa,EAAE,UAAe,EAAE,EAAA;AAElH,IAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAE;AACtE,IAAA,OAAO,IAAI,CAAC,gBAAgB,CAAE,SAAS,CAAE;AAC7C,CAAC;;;;"}
|