lexgui 0.7.15 → 8.1.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/LICENSE +201 -21
- package/README.md +14 -5
- package/build/components/AlertDialog.d.ts +7 -0
- package/build/components/ArrayInput.d.ts +9 -0
- package/build/components/BaseComponent.d.ts +73 -0
- package/build/components/Button.d.ts +14 -0
- package/build/components/Calendar.d.ts +41 -0
- package/build/components/CalendarRange.d.ts +16 -0
- package/build/components/CanvasCurve.d.ts +10 -0
- package/build/components/CanvasDial.d.ts +11 -0
- package/build/components/CanvasMap2D.d.ts +61 -0
- package/build/components/Card.d.ts +8 -0
- package/build/components/Checkbox.d.ts +8 -0
- package/build/components/Color.d.ts +20 -0
- package/build/components/ColorInput.d.ts +13 -0
- package/build/components/ColorPicker.d.ts +29 -0
- package/build/components/ComboButtons.d.ts +8 -0
- package/build/components/ContextMenu.d.ts +16 -0
- package/build/components/Counter.d.ts +9 -0
- package/build/components/Curve.d.ts +10 -0
- package/build/components/DatePicker.d.ts +13 -0
- package/build/components/Dial.d.ts +10 -0
- package/build/components/Dialog.d.ts +20 -0
- package/build/components/DropdownMenu.d.ts +32 -0
- package/build/components/FileInput.d.ts +8 -0
- package/build/components/Footer.d.ts +14 -0
- package/build/components/Form.d.ts +8 -0
- package/build/components/Layers.d.ts +9 -0
- package/build/components/List.d.ts +9 -0
- package/build/components/Map2D.d.ts +12 -0
- package/build/components/Menubar.d.ts +59 -0
- package/build/components/NodeTree.d.ts +26 -0
- package/build/components/NumberInput.d.ts +9 -0
- package/build/components/OTPInput.d.ts +8 -0
- package/build/components/Pad.d.ts +8 -0
- package/build/components/Pagination.d.ts +26 -0
- package/build/components/PocketDialog.d.ts +11 -0
- package/build/components/Popover.d.ts +20 -0
- package/build/components/Progress.d.ts +8 -0
- package/build/components/RadioGroup.d.ts +8 -0
- package/build/components/RangeInput.d.ts +11 -0
- package/build/components/Rate.d.ts +8 -0
- package/build/components/Select.d.ts +10 -0
- package/build/components/Sheet.d.ts +10 -0
- package/build/components/Sidebar.d.ts +84 -0
- package/build/components/SizeInput.d.ts +8 -0
- package/build/components/Skeleton.d.ts +5 -0
- package/build/components/Spinner.d.ts +9 -0
- package/build/components/TabSections.d.ts +11 -0
- package/build/components/Table.d.ts +34 -0
- package/build/components/Tabs.d.ts +20 -0
- package/build/components/Tags.d.ts +9 -0
- package/build/components/TextArea.d.ts +8 -0
- package/build/components/TextInput.d.ts +11 -0
- package/build/components/Title.d.ts +8 -0
- package/build/components/Toggle.d.ts +8 -0
- package/build/components/Tour.d.ts +36 -0
- package/build/components/Vector.d.ts +9 -0
- package/build/core/Area.d.ts +143 -0
- package/build/core/Branch.d.ts +19 -0
- package/build/core/Core.d.ts +1 -0
- package/build/core/Event.d.ts +26 -0
- package/build/core/Icons.d.ts +4 -0
- package/build/core/Namespace.d.ts +2 -0
- package/build/core/Namespace.js +34 -0
- package/build/core/Namespace.js.map +1 -0
- package/build/core/Panel.d.ts +538 -0
- package/build/core/Utils.d.ts +1 -0
- package/build/core/Vec2.d.ts +21 -0
- package/build/extensions/AssetView.d.ts +136 -0
- package/build/extensions/AssetView.js +1367 -0
- package/build/extensions/AssetView.js.map +1 -0
- package/build/extensions/Audio.d.ts +9 -0
- package/build/extensions/Audio.js +163 -0
- package/build/extensions/Audio.js.map +1 -0
- package/build/extensions/CodeEditor.d.ts +350 -0
- package/build/extensions/CodeEditor.js +5022 -0
- package/build/extensions/CodeEditor.js.map +1 -0
- package/build/extensions/DocMaker.d.ts +27 -0
- package/build/extensions/DocMaker.js +327 -0
- package/build/extensions/DocMaker.js.map +1 -0
- package/build/extensions/GraphEditor.d.ts +276 -0
- package/build/extensions/GraphEditor.js +2770 -0
- package/build/extensions/GraphEditor.js.map +1 -0
- package/build/extensions/ImUi.d.ts +46 -0
- package/build/extensions/ImUi.js +227 -0
- package/build/extensions/ImUi.js.map +1 -0
- package/build/extensions/Timeline.d.ts +670 -0
- package/build/extensions/Timeline.js +3955 -0
- package/build/extensions/Timeline.js.map +1 -0
- package/build/extensions/VideoEditor.d.ts +128 -0
- package/build/extensions/VideoEditor.js +898 -0
- package/build/extensions/VideoEditor.js.map +1 -0
- package/build/extensions/index.d.ts +8 -0
- package/build/extensions/index.js +10 -0
- package/build/extensions/index.js.map +1 -0
- package/build/index.all.d.ts +2 -0
- package/build/index.css.d.ts +4 -0
- package/build/index.d.ts +56 -0
- package/build/lexgui.all.js +28498 -0
- package/build/lexgui.all.js.map +1 -0
- package/build/lexgui.all.min.js +1 -0
- package/build/lexgui.all.module.js +28422 -0
- package/build/lexgui.all.module.js.map +1 -0
- package/build/lexgui.all.module.min.js +1 -0
- package/build/lexgui.css +939 -346
- package/build/lexgui.js +13406 -17286
- package/build/lexgui.js.map +1 -0
- package/build/lexgui.min.css +3 -10
- package/build/lexgui.min.js +1 -1
- package/build/lexgui.module.js +12762 -16698
- package/build/lexgui.module.js.map +1 -0
- package/build/lexgui.module.min.js +1 -1
- package/changelog.md +170 -74
- package/demo.js +162 -48
- package/examples/all-components.html +45 -14
- package/examples/asset-view.html +110 -47
- package/examples/code-editor.html +5 -5
- package/examples/dialogs.html +3 -3
- package/examples/editor.html +27 -13
- package/examples/index.html +19 -14
- package/examples/node-graph.html +2 -2
- package/examples/previews/video-editor.png +0 -0
- package/examples/timeline.html +1 -1
- package/examples/video-editor.html +2 -2
- package/package.json +25 -9
- package/build/extensions/audio.js +0 -212
- package/build/extensions/codeeditor.js +0 -6319
- package/build/extensions/docmaker.js +0 -432
- package/build/extensions/imui.js +0 -325
- package/build/extensions/nodegraph.js +0 -3696
- package/build/extensions/timeline.js +0 -4636
- package/build/extensions/videoeditor.js +0 -953
- package/build/lexgui-docs.css +0 -352
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoEditor.js","sources":["../../src/extensions/VideoEditor.ts"],"sourcesContent":["// VideoEditor.ts @evallsg\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( 'VideoEditor' );\r\n\r\nconst g = globalThis as any;\r\nconst vec2 = LX.vec2;\r\nconst Area = LX.Area;\r\nconst Panel = LX.Panel;\r\n\r\n/**\r\n * @class TimeBar\r\n */\r\n\r\nexport class TimeBar\r\n{\r\n static TIMEBAR_PLAY = 1;\r\n static TIMEBAR_TRIM = 2;\r\n\r\n static BACKGROUND_COLOR = LX.getThemeColor( 'global-branch-darker' );\r\n static COLOR = LX.getThemeColor( 'global-button-color' );\r\n static ACTIVE_COLOR = '#668ee4';\r\n\r\n type: number = TimeBar.TIMEBAR_PLAY;\r\n duration: number = 1.0;\r\n canvas: HTMLCanvasElement;\r\n ctx: CanvasRenderingContext2D | null;\r\n\r\n markerWidth: number = 8;\r\n markerHeight: number;\r\n offset: number;\r\n lineWidth: number;\r\n lineHeight: number;\r\n position: typeof vec2;\r\n startX: number;\r\n endX: number;\r\n currentX: number;\r\n hovering: string | undefined;\r\n dragging: string | undefined;\r\n\r\n onChangeCurrent: any;\r\n onChangeStart: any;\r\n onChangeEnd: any;\r\n onDraw: any;\r\n onMouse: any;\r\n\r\n constructor( area: typeof Area, type?: number, options: any = {} )\r\n {\r\n this.type = type ?? TimeBar.TIMEBAR_PLAY;\r\n this.duration = options.duration ?? this.duration;\r\n\r\n // Create canvas\r\n this.canvas = document.createElement( 'canvas' );\r\n this.canvas.width = area.size[0];\r\n this.canvas.height = area.size[1];\r\n area.attach( this.canvas );\r\n\r\n this.ctx = this.canvas.getContext( '2d' );\r\n\r\n this.markerWidth = options.markerWidth ?? this.markerWidth;\r\n this.markerHeight = options.markerHeight ?? ( this.canvas.height * 0.5 );\r\n this.offset = options.offset || ( this.markerWidth * 0.5 + 5 );\r\n\r\n // dimensions of line (not canvas)\r\n this.lineWidth = this.canvas.width - this.offset * 2;\r\n this.lineHeight = options.barHeight ?? 5;\r\n\r\n this.position = new vec2( this.offset, this.canvas.height * 0.5 - this.lineHeight * 0.5 );\r\n this.startX = this.position.x;\r\n this.endX = this.position.x + this.lineWidth;\r\n this.currentX = this.startX;\r\n\r\n this._draw();\r\n\r\n this.updateTheme();\r\n LX.addSignal( '@on_new_color_scheme', () => {\r\n // Retrieve again the color using LX.getThemeColor, which checks the applied theme\r\n this.updateTheme();\r\n } );\r\n\r\n this.canvas.onmousedown = ( e: MouseEvent ) => this.onMouseDown( e );\r\n this.canvas.onmousemove = ( e: MouseEvent ) => this.onMouseMove( e );\r\n this.canvas.onmouseup = ( e: MouseEvent ) => this.onMouseUp( e );\r\n }\r\n\r\n updateTheme()\r\n {\r\n TimeBar.BACKGROUND_COLOR = LX.getThemeColor( 'global-color-secondary' );\r\n TimeBar.COLOR = LX.getThemeColor( 'global-color-quaternary' );\r\n TimeBar.ACTIVE_COLOR = '#668ee4';\r\n }\r\n\r\n setDuration( duration: number )\r\n {\r\n this.duration = duration;\r\n }\r\n\r\n xToTime( x: number )\r\n {\r\n return ( ( x - this.offset ) / ( this.lineWidth ) ) * this.duration;\r\n }\r\n\r\n timeToX( time: number )\r\n {\r\n return ( time / this.duration ) * ( this.lineWidth ) + this.offset;\r\n }\r\n\r\n setCurrentTime( time: number )\r\n {\r\n this.currentX = this.timeToX( time );\r\n this.onSetCurrentValue( this.currentX );\r\n }\r\n\r\n setStartTime( time: number )\r\n {\r\n this.startX = this.timeToX( time );\r\n this.onSetStartValue( this.startX );\r\n }\r\n\r\n setEndTime( time: number )\r\n {\r\n this.endX = this.timeToX( time );\r\n this.onSetEndValue( this.endX );\r\n }\r\n\r\n onSetCurrentValue( x: number )\r\n {\r\n this.update( x );\r\n\r\n const t = this.xToTime( x );\r\n if ( this.onChangeCurrent )\r\n {\r\n this.onChangeCurrent( t );\r\n }\r\n }\r\n\r\n onSetStartValue( x: number )\r\n {\r\n this.update( x );\r\n\r\n const t = this.xToTime( x );\r\n if ( this.onChangeStart )\r\n {\r\n this.onChangeStart( t );\r\n }\r\n }\r\n\r\n onSetEndValue( x: number )\r\n {\r\n this.update( x );\r\n\r\n const t = this.xToTime( x );\r\n if ( this.onChangeEnd )\r\n {\r\n this.onChangeEnd( t );\r\n }\r\n }\r\n\r\n _draw()\r\n {\r\n const ctx = this.ctx;\r\n if ( !ctx ) return;\r\n\r\n ctx.save();\r\n ctx.fillStyle = TimeBar.BACKGROUND_COLOR;\r\n ctx.clearRect( 0, 0, this.canvas.width, this.canvas.height );\r\n ctx.fillRect( 0, 0, this.canvas.width, this.canvas.height );\r\n\r\n // Draw background timeline\r\n ctx.fillStyle = TimeBar.COLOR;\r\n ctx.fillRect( this.position.x, this.position.y, this.lineWidth, this.lineHeight );\r\n\r\n // Draw background trimed timeline\r\n ctx.fillStyle = TimeBar.ACTIVE_COLOR;\r\n ctx.fillRect( this.startX, this.position.y, this.endX - this.startX, this.lineHeight );\r\n\r\n ctx.restore();\r\n\r\n // Min-Max time markers\r\n this._drawTrimMarker( 'start', this.startX, { color: null, fillColor: TimeBar.ACTIVE_COLOR || '#5f88c9' } );\r\n this._drawTrimMarker( 'end', this.endX, { color: null, fillColor: TimeBar.ACTIVE_COLOR || '#5f88c9' } );\r\n this._drawTimeMarker( 'current', this.currentX, { color: '#e5e5e5',\r\n fillColor: TimeBar.ACTIVE_COLOR || '#5f88c9', width: this.markerWidth } );\r\n\r\n if ( this.onDraw )\r\n {\r\n this.onDraw();\r\n }\r\n }\r\n\r\n _drawTrimMarker( name: string, x: number, options: any = {} )\r\n {\r\n const w = this.markerWidth;\r\n const h = this.markerHeight;\r\n const y = this.canvas.height * 0.5 - h * 0.5;\r\n const ctx = this.ctx;\r\n if ( !ctx ) return;\r\n\r\n // Shadow\r\n if ( this.hovering == name )\r\n {\r\n ctx.shadowColor = 'white';\r\n ctx.shadowBlur = 2;\r\n }\r\n\r\n ctx.globalAlpha = 1;\r\n ctx.fillStyle = ctx.strokeStyle = options.fillColor || '#111'; // \"#FFF\";\r\n\r\n ctx.beginPath();\r\n ctx.roundRect( x - w * 0.5, y, w, h, 2 );\r\n ctx.fill();\r\n ctx.fillStyle = ctx.strokeStyle = options.fillColor || '#111'; // \"#FFF\";\r\n\r\n ctx.strokeStyle = 'white';\r\n ctx.beginPath();\r\n ctx.lineWidth = 2;\r\n ctx.moveTo( x, y + 4 );\r\n ctx.lineTo( x, y + h - 4 );\r\n ctx.stroke();\r\n ctx.shadowBlur = 0;\r\n }\r\n\r\n _drawTimeMarker( name: string, x: number, options: any = {} )\r\n {\r\n let y = this.offset;\r\n const w = options.width ? options.width : ( this.dragging == name ? 6 : 4 );\r\n const h = this.canvas.height - this.offset * 2;\r\n\r\n let ctx = this.ctx;\r\n if ( !ctx ) return;\r\n\r\n ctx.globalAlpha = 1;\r\n ctx.fillStyle = ctx.strokeStyle = options.fillColor || '#111'; // \"#FFF\";\r\n\r\n // Shadow\r\n if ( this.hovering == name )\r\n {\r\n ctx.shadowColor = 'white';\r\n ctx.shadowBlur = 2;\r\n }\r\n\r\n // Current time line\r\n ctx.fillStyle = ctx.strokeStyle = 'white';\r\n ctx.beginPath();\r\n ctx.moveTo( x, y );\r\n ctx.lineTo( x, y + h * 0.5 );\r\n ctx.stroke();\r\n ctx.closePath();\r\n ctx.fillStyle = ctx.strokeStyle = options.fillColor || '#111'; // \"#FFF\";\r\n\r\n y -= this.offset + 8;\r\n // Current time ball grab\r\n ctx.fillStyle = options.fillColor || '#e5e5e5';\r\n ctx.beginPath();\r\n ctx.roundRect( x - w * 0.5, y + this.offset, w, w, 5 );\r\n\r\n ctx.fill();\r\n ctx.shadowBlur = 0;\r\n }\r\n\r\n update( x: number )\r\n {\r\n this.currentX = Math.min( Math.max( this.startX, x ), this.endX );\r\n this._draw();\r\n }\r\n\r\n onMouseDown( e: MouseEvent )\r\n {\r\n if ( this.onMouse )\r\n {\r\n this.onMouse( e );\r\n }\r\n\r\n e.preventDefault();\r\n\r\n if ( !this.canvas || e.target != this.canvas || e.cancelBubble )\r\n {\r\n return;\r\n }\r\n\r\n const canvas = this.canvas;\r\n\r\n // Process mouse\r\n const x = e.offsetX;\r\n const y = e.offsetY;\r\n\r\n // Check if some marker is clicked\r\n const threshold = this.markerWidth;\r\n\r\n // grab trim markers only from the bottom\r\n if ( Math.abs( this.startX - x ) < threshold && this.position.y < y )\r\n {\r\n this.dragging = 'start';\r\n canvas.style.cursor = 'grabbing';\r\n }\r\n else if ( Math.abs( this.endX - x ) < threshold && this.position.y < y )\r\n {\r\n this.dragging = 'end';\r\n canvas.style.cursor = 'grabbing';\r\n }\r\n else\r\n {\r\n this.dragging = 'current';\r\n canvas.style.cursor = 'grabbing';\r\n\r\n if ( x < this.startX )\r\n {\r\n this.currentX = this.startX;\r\n }\r\n else if ( x > this.endX )\r\n {\r\n this.currentX = this.endX;\r\n }\r\n else\r\n {\r\n this.currentX = x;\r\n }\r\n\r\n this.onSetCurrentValue( this.currentX );\r\n }\r\n\r\n this._draw();\r\n }\r\n\r\n onMouseUp( e: MouseEvent )\r\n {\r\n if ( this.onMouse )\r\n {\r\n this.onMouse( e );\r\n }\r\n\r\n e.preventDefault();\r\n\r\n delete this.dragging;\r\n delete this.hovering;\r\n\r\n if ( !this.canvas || e.cancelBubble )\r\n {\r\n return;\r\n }\r\n\r\n const canvas = this.canvas;\r\n canvas.style.cursor = 'default';\r\n }\r\n\r\n onMouseMove( e: MouseEvent )\r\n {\r\n if ( this.onMouse )\r\n {\r\n this.onMouse( e );\r\n }\r\n\r\n if ( !this.canvas || e.cancelBubble )\r\n {\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n\r\n const canvas = this.canvas;\r\n\r\n // Process mouse\r\n const x = e.target == canvas ? e.offsetX : e.clientX - canvas.offsetLeft;\r\n const y = e.target == canvas ? e.offsetY : e.clientY - canvas.offsetTop;\r\n\r\n if ( this.dragging )\r\n {\r\n switch ( this.dragging )\r\n {\r\n case 'start':\r\n this.startX = Math.max( this.position.x, Math.min( this.endX, x ) );\r\n this.currentX = this.startX;\r\n this.onSetStartValue( this.startX );\r\n break;\r\n case 'end':\r\n this.endX = Math.max( this.startX, Math.min( this.position.x + this.lineWidth, x ) );\r\n this.currentX = this.endX;\r\n this.onSetEndValue( this.endX );\r\n break;\r\n default:\r\n this.currentX = Math.max( this.startX, Math.min( this.endX, x ) );\r\n break;\r\n }\r\n\r\n this.onSetCurrentValue( this.currentX );\r\n }\r\n else\r\n {\r\n const threshold = this.markerWidth * 0.5;\r\n\r\n if ( Math.abs( this.startX - x ) < threshold )\r\n {\r\n this.hovering = 'start';\r\n canvas.style.cursor = 'grab';\r\n }\r\n else if ( Math.abs( this.endX - x ) < threshold )\r\n {\r\n this.hovering = 'end';\r\n canvas.style.cursor = 'grab';\r\n }\r\n else if ( Math.abs( this.currentX - x ) < threshold )\r\n {\r\n this.hovering = 'current';\r\n canvas.style.cursor = 'grab';\r\n }\r\n else\r\n {\r\n delete this.hovering;\r\n canvas.style.cursor = 'default';\r\n }\r\n }\r\n\r\n this._draw();\r\n }\r\n\r\n resize( size: number[] )\r\n {\r\n this.canvas.width = Math.max( 0, size[0] );\r\n this.canvas.height = Math.max( 0, size[1] );\r\n\r\n let newWidth = size[0] - this.offset * 2;\r\n newWidth = newWidth < 0.00001 ? 0.00001 : newWidth; // actual width of the line = canvas.width - offsetleft - offsetRight\r\n const startRatio = ( this.startX - this.offset ) / this.lineWidth;\r\n const currentRatio = ( this.currentX - this.offset ) / this.lineWidth;\r\n const endRatio = ( this.endX - this.offset ) / this.lineWidth;\r\n\r\n this.lineWidth = newWidth;\r\n this.startX = Math.min( Math.max( newWidth * startRatio, 0 ), newWidth ) + this.offset;\r\n this.currentX = Math.min( Math.max( newWidth * currentRatio, 0 ), newWidth ) + this.offset;\r\n this.endX = Math.min( Math.max( newWidth * endRatio, 0 ), newWidth ) + this.offset;\r\n\r\n this._draw();\r\n }\r\n}\r\n\r\nLX.TimeBar = TimeBar;\r\n\r\n/**\r\n * @class VideoEditor\r\n */\r\n\r\nexport class VideoEditor\r\n{\r\n static CROP_HANDLE_L: number = 0x01;\r\n static CROP_HANDLE_R: number = 0x02;\r\n static CROP_HANDLE_T: number = 0x04;\r\n static CROP_HANDLE_B: number = 0x08;\r\n static CROP_HANDLE_TL: number = VideoEditor.CROP_HANDLE_L | VideoEditor.CROP_HANDLE_T;\r\n static CROP_HANDLE_BL: number = VideoEditor.CROP_HANDLE_L | VideoEditor.CROP_HANDLE_B;\r\n static CROP_HANDLE_TR: number = VideoEditor.CROP_HANDLE_R | VideoEditor.CROP_HANDLE_T;\r\n static CROP_HANDLE_BR: number = VideoEditor.CROP_HANDLE_R | VideoEditor.CROP_HANDLE_B;\r\n\r\n options: any = {};\r\n playing: boolean = false;\r\n videoReady: boolean = false;\r\n controls: boolean = true;\r\n startTimeString: string = '0:0';\r\n endTimeString: string = '0:0';\r\n speed: number = 1.0;\r\n currentTime: number = 0.0;\r\n startTime: number = 0.0;\r\n endTime: number = 0.0;\r\n requestId: any;\r\n video: HTMLVideoElement;\r\n loop: boolean = false;\r\n isDragging: boolean = false;\r\n isResizing: any = null; // holds the HTMLElement of the crop handle, if resizing\r\n crop: boolean = false;\r\n dragOffsetX: number = 0.0;\r\n dragOffsetY: number = 0.0;\r\n currentTimeString: string = '';\r\n\r\n timebar: TimeBar;\r\n mainArea: typeof Area;\r\n cropArea: any; // HTMLElement with normCoord attribute;\r\n controlsArea: typeof Area;\r\n controlsPanelLeft: typeof Panel;\r\n controlsPanelRight: typeof Panel;\r\n controlsCurrentPanel: typeof Panel;\r\n\r\n onChangeCurrent: any;\r\n onChangeStart: any;\r\n onChangeEnd: any;\r\n onKeyUp: any;\r\n onSetTime: any;\r\n onVideoLoaded: any;\r\n onCropArea: any;\r\n onResize: any;\r\n onChangeSpeed: any;\r\n\r\n _updateTime: boolean = true;\r\n _onCropMouseUp: ( e: MouseEvent ) => void;\r\n _onCropMouseMove: ( e: MouseEvent ) => void;\r\n resize: () => void;\r\n\r\n constructor( area: typeof Area, options: any = {} )\r\n {\r\n this.options = options ?? {};\r\n this.speed = options.speed ?? this.speed;\r\n this.mainArea = area;\r\n\r\n let videoArea = null;\r\n let controlsArea = null;\r\n\r\n if ( options.controlsArea )\r\n {\r\n videoArea = area;\r\n controlsArea = options.controlsArea;\r\n }\r\n else\r\n {\r\n [ videoArea, controlsArea ] = area.split( { type: 'vertical', sizes: [ '85%', null ], minimizable: false,\r\n resize: false } );\r\n }\r\n\r\n controlsArea.root.classList.add( 'lexconstrolsarea' );\r\n\r\n this.cropArea = document.createElement( 'div' );\r\n this.cropArea.id = 'cropArea';\r\n this.cropArea.className = 'resize-area hidden';\r\n this.cropArea.normCoords = { x: 0, y: 0, w: 1, h: 1 };\r\n\r\n const flags = 0x0f;\r\n this.setCropAreaHandles( flags );\r\n\r\n this.crop = options.crop;\r\n this.dragOffsetX = 0;\r\n this.dragOffsetY = 0;\r\n // Create video element and load it\r\n let video = this.video = options.video ?? document.createElement( 'video' );\r\n this.loop = options.loop ?? this.loop;\r\n\r\n if ( options.src )\r\n {\r\n this.video.src = options.src;\r\n this.loadVideo( options );\r\n }\r\n\r\n if ( options.videoArea )\r\n {\r\n options.videoArea.root.classList.add( 'lexvideoeditor' );\r\n options.videoArea.attach( this.cropArea );\r\n videoArea.attach( options.videoArea );\r\n }\r\n else\r\n {\r\n videoArea.attach( video );\r\n videoArea.attach( this.cropArea );\r\n videoArea.root.classList.add( 'lexvideoeditor' );\r\n }\r\n\r\n this.controlsArea = controlsArea;\r\n // Create playing timeline area and attach panels\r\n let [ topArea, bottomArea ] = controlsArea.split( { type: 'vertical', sizes: [ '50%', null ],\r\n minimizable: false, resize: false } );\r\n bottomArea.setSize( [ bottomArea.size[0], 40 ] );\r\n let [ leftArea, controlsRight ] = bottomArea.split( { type: 'horizontal', sizes: [ '92%', null ],\r\n minimizable: false, resize: false } );\r\n let [ controlsLeft, timeBarArea ] = leftArea.split( { type: 'horizontal', sizes: [ '10%', null ],\r\n minimizable: false, resize: false } );\r\n\r\n topArea.root.classList.add( 'lexbar' );\r\n bottomArea.root.classList.add( 'lexbar' );\r\n this.controlsCurrentPanel = new LX.Panel( { className: 'lexcontrolspanel lextime' } );\r\n this.controlsCurrentPanel.refresh = () => {\r\n this.controlsCurrentPanel.clear();\r\n this.controlsCurrentPanel.addLabel( this.currentTimeString, { float: 'center' } );\r\n };\r\n topArea.root.classList.add( 'lexflexarea' );\r\n topArea.attach( this.controlsCurrentPanel );\r\n this.controlsCurrentPanel.refresh();\r\n\r\n const style = getComputedStyle( bottomArea.root );\r\n let padding = Number( style.getPropertyValue( 'padding' ).replace( 'px', '' ) );\r\n this.timebar = new TimeBar( timeBarArea, TimeBar.TIMEBAR_TRIM, { offset: padding } );\r\n\r\n // Create controls panel (play/pause button and start time)\r\n this.controlsPanelLeft = new LX.Panel( { className: 'lexcontrolspanel' } );\r\n this.controlsPanelLeft.refresh = () => {\r\n this.controlsPanelLeft.clear();\r\n this.controlsPanelLeft.sameLine();\r\n let playbtn = this.controlsPanelLeft.addButton( 'Play', '', ( v: boolean ) => {\r\n this.playing = v;\r\n if ( this.playing )\r\n {\r\n if ( this.video.currentTime + 0.000001 >= this.endTime )\r\n {\r\n this.video.currentTime = this.startTime;\r\n }\r\n this.video.play();\r\n }\r\n else\r\n {\r\n this.video.pause();\r\n }\r\n }, { width: '40px', icon: 'Play@solid', swap: 'Pause@solid', hideName: true,\r\n className: 'justify-center' } );\r\n playbtn.setState( this.playing, true );\r\n\r\n this.controlsPanelLeft.addButton( '', '', ( v: any, e: MouseEvent ) => {\r\n const panel = new LX.Panel();\r\n panel.addRange( 'Speed', this.speed, ( v: number ) => {\r\n this.speed = v;\r\n this.video.playbackRate = v;\r\n if ( this.onChangeSpeed )\r\n {\r\n this.onChangeSpeed( v );\r\n }\r\n }, { min: 0, max: 2.5, step: 0.01, hideName: true } );\r\n\r\n new LX.Popover( e.target, [ panel ], { align: 'start', side: 'top', sideOffset: 12 } );\r\n }, { width: '40px', title: 'speed', icon: 'Timer@solid', className: 'justify-center' } );\r\n\r\n this.controlsPanelLeft.addButton( '', 'Loop', ( v: boolean ) => {\r\n this.loop = v;\r\n }, { width: '40px', title: 'loop', icon: ( 'Repeat@solid' ), className: `justify-center`, selectable: true,\r\n selected: this.loop } );\r\n\r\n this.controlsPanelLeft.addLabel( this.startTimeString, { width: '100px' } );\r\n this.controlsPanelLeft.endLine();\r\n\r\n let availableWidth = leftArea.root.clientWidth - controlsLeft.root.clientWidth;\r\n this.timebar.resize( [ availableWidth, timeBarArea.root.clientHeight ] );\r\n };\r\n\r\n this.controlsPanelLeft.refresh();\r\n controlsLeft.root.style.minWidth = 'fit-content';\r\n // controlsLeft.root.classList.add();\r\n controlsLeft.attach( this.controlsPanelLeft );\r\n\r\n // Create right controls panel (ens time)\r\n this.controlsPanelRight = new LX.Panel( { className: 'lexcontrolspanel' } );\r\n this.controlsPanelRight.refresh = () => {\r\n this.controlsPanelRight.clear();\r\n this.controlsPanelRight.addLabel( this.endTimeString, { width: 100 } );\r\n };\r\n this.controlsPanelRight.refresh();\r\n controlsRight.root.style.minWidth = 'fit-content';\r\n controlsRight.attach( this.controlsPanelRight );\r\n\r\n this.timebar.onChangeCurrent = this._setCurrentTime.bind( this );\r\n this.timebar.onChangeStart = this._setStartTime.bind( this );\r\n this.timebar.onChangeEnd = this._setEndTime.bind( this );\r\n\r\n this.resize = () => {\r\n bottomArea.setSize( [ this.controlsArea.root.clientWidth, 40 ] );\r\n let availableWidth = this.controlsArea.root.clientWidth - controlsLeft.root.clientWidth\r\n - controlsRight.root.clientWidth;\r\n this.timebar.resize( [ availableWidth, timeBarArea.root.clientHeight ] );\r\n this.moveCropArea( this.cropArea.normCoords.x, this.cropArea.normCoords.y, true );\r\n this.resizeCropArea( this.cropArea.normCoords.w, this.cropArea.normCoords.h, true );\r\n\r\n if ( this.onResize )\r\n {\r\n this.onResize( [ videoArea.root.clientWidth, videoArea.root.clientHeight ] );\r\n }\r\n };\r\n area.onresize = this.resize.bind( this );\r\n window.addEventListener( 'resize', area.onresize );\r\n\r\n this.onKeyUp = ( e: KeyboardEvent ) => {\r\n if ( this.controls && e.key == ' ' )\r\n {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n this.playing = !this.playing;\r\n if ( this.playing )\r\n {\r\n if ( this.video.currentTime + 0.000001 >= this.endTime )\r\n {\r\n this.video.currentTime = this.startTime;\r\n }\r\n this.video.play();\r\n }\r\n else\r\n {\r\n this.video.pause();\r\n }\r\n\r\n this.controlsPanelLeft.refresh();\r\n }\r\n };\r\n\r\n window.addEventListener( 'keyup', this.onKeyUp );\r\n\r\n const parent = controlsArea.parentElement ? controlsArea.parentElement : controlsArea.root.parentElement;\r\n\r\n // Add canvas event listeneres\r\n parent.addEventListener( 'mousedown', ( e: MouseEvent ) => {\r\n // if( this.controls) {\r\n // this.timebar.onMouseDown(e);\r\n // }\r\n } );\r\n\r\n this._onCropMouseUp = ( event: MouseEvent ) => {\r\n // if(this.controls) {\r\n // this.timebar.onMouseUp(event);\r\n // }\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if ( ( this.isDragging || this.isResizing ) && this.onCropArea )\r\n {\r\n this.onCropArea( this.getCroppedArea() );\r\n }\r\n this.isDragging = false;\r\n this.isResizing = false;\r\n\r\n document.removeEventListener( 'mouseup', this._onCropMouseUp ); // self destroy. Added during mouseDown on cropArea and handles\r\n document.removeEventListener( 'mousemove', this._onCropMouseMove ); // self destroy. Added during mouseDown on cropArea and handles\r\n };\r\n\r\n this._onCropMouseMove = ( event: MouseEvent ) => {\r\n // if(this.controls) {\r\n // this.timebar.onMouseMove(event);\r\n // }\r\n window.getSelection()?.removeAllRanges();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n if ( this.isResizing )\r\n {\r\n const rectCrop = this.cropArea.getBoundingClientRect();\r\n const rectVideo = this.video.getBoundingClientRect();\r\n const mov = this.isResizing.movement;\r\n\r\n let x = rectCrop.left, y = rectCrop.top, w = rectCrop.width, h = rectCrop.height;\r\n\r\n if ( mov & VideoEditor.CROP_HANDLE_L )\r\n {\r\n let mouseX = Math.min( rectCrop.right - 4, Math.max( rectVideo.left, event.clientX ) ); // -4 because of border\r\n w = rectCrop.left + rectCrop.width - mouseX;\r\n x = mouseX;\r\n if ( mouseX < rectCrop.left )\r\n {\r\n this.moveCropArea( x, y, false );\r\n this.resizeCropArea( w, h, false );\r\n }\r\n else\r\n {\r\n this.resizeCropArea( w, h, false );\r\n this.moveCropArea( x, y, false );\r\n }\r\n }\r\n\r\n if ( mov & VideoEditor.CROP_HANDLE_R )\r\n {\r\n w = event.clientX - rectCrop.left;\r\n this.resizeCropArea( w, h, false );\r\n }\r\n\r\n if ( mov & VideoEditor.CROP_HANDLE_T )\r\n {\r\n const mouseY = Math.min( rectCrop.bottom - 4, Math.max( rectVideo.top, event.clientY ) );\r\n h = rectCrop.top + rectCrop.height - mouseY;\r\n y = mouseY;\r\n\r\n if ( mouseY < rectCrop.top )\r\n {\r\n this.moveCropArea( x, y, false );\r\n this.resizeCropArea( w, h, false );\r\n }\r\n else\r\n {\r\n this.resizeCropArea( w, h, false );\r\n this.moveCropArea( x, y, false );\r\n }\r\n }\r\n\r\n if ( mov & VideoEditor.CROP_HANDLE_B )\r\n {\r\n h = event.clientY - rectCrop.top;\r\n this.resizeCropArea( w, h, false );\r\n }\r\n }\r\n\r\n if ( this.isDragging )\r\n {\r\n this.moveCropArea( event.clientX - this.dragOffsetX, event.clientY - this.dragOffsetY, false );\r\n }\r\n };\r\n\r\n this.cropArea.addEventListener( 'mousedown', ( e: MouseEvent ) => {\r\n if ( e.target === this.cropArea )\r\n {\r\n const rect = this.cropArea.getBoundingClientRect();\r\n this.isDragging = true;\r\n\r\n this.dragOffsetX = e.clientX - rect.left;\r\n this.dragOffsetY = e.clientY - rect.top;\r\n\r\n document.addEventListener( 'mouseup', this._onCropMouseUp );\r\n document.addEventListener( 'mousemove', this._onCropMouseMove );\r\n }\r\n } );\r\n\r\n this.onChangeStart = null;\r\n this.onChangeEnd = null;\r\n }\r\n\r\n setCropAreaHandles( flags: number )\r\n {\r\n // remove existing resizer handles\r\n const resizers = this.cropArea.getElementsByClassName( 'resize-handle' );\r\n for ( let i = resizers.length - 1; i > -1; --i )\r\n {\r\n resizers[i].remove();\r\n }\r\n\r\n const buildResizer = ( className: string, movement: number ) => {\r\n const handle: any = document.createElement( 'div' );\r\n handle.className = ' resize-handle ' + className;\r\n handle.movement = movement;\r\n if ( this.options.handleStyle )\r\n {\r\n Object.assign( handle.style, this.options.handleStyle );\r\n }\r\n this.cropArea.append( handle );\r\n handle.addEventListener( 'mousedown', ( e: MouseEvent ) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n this.isResizing = handle;\r\n\r\n document.addEventListener( 'mouseup', this._onCropMouseUp );\r\n document.addEventListener( 'mousemove', this._onCropMouseMove );\r\n } );\r\n };\r\n\r\n if ( flags & VideoEditor.CROP_HANDLE_L ) buildResizer( 'l', VideoEditor.CROP_HANDLE_L );\r\n if ( flags & VideoEditor.CROP_HANDLE_R ) buildResizer( 'r', VideoEditor.CROP_HANDLE_R );\r\n if ( flags & VideoEditor.CROP_HANDLE_T ) buildResizer( 't', VideoEditor.CROP_HANDLE_T );\r\n if ( flags & VideoEditor.CROP_HANDLE_B ) buildResizer( 'b', VideoEditor.CROP_HANDLE_B );\r\n if ( ( flags & VideoEditor.CROP_HANDLE_TL ) == VideoEditor.CROP_HANDLE_TL )\r\n {\r\n buildResizer( 'tl', VideoEditor.CROP_HANDLE_TL );\r\n }\r\n if ( ( flags & VideoEditor.CROP_HANDLE_BL ) == VideoEditor.CROP_HANDLE_BL )\r\n {\r\n buildResizer( 'bl', VideoEditor.CROP_HANDLE_BL );\r\n }\r\n if ( ( flags & VideoEditor.CROP_HANDLE_TR ) == VideoEditor.CROP_HANDLE_TR )\r\n {\r\n buildResizer( 'tr', VideoEditor.CROP_HANDLE_TR );\r\n }\r\n if ( ( flags & VideoEditor.CROP_HANDLE_BR ) == VideoEditor.CROP_HANDLE_BR )\r\n {\r\n buildResizer( 'br', VideoEditor.CROP_HANDLE_BR );\r\n }\r\n }\r\n\r\n resizeCropArea( sx: number, sy: number, isNormalized: boolean = true )\r\n {\r\n const rectVideo = this.video.getBoundingClientRect();\r\n\r\n if ( !isNormalized )\r\n {\r\n sx = ( rectVideo.width ) ? ( sx / rectVideo.width ) : 1;\r\n sy = ( rectVideo.height ) ? ( sy / rectVideo.height ) : 1;\r\n }\r\n\r\n sx = Math.min( 1 - this.cropArea.normCoords.x, Math.max( 0, sx ) );\r\n sy = Math.min( 1 - this.cropArea.normCoords.y, Math.max( 0, sy ) );\r\n\r\n this.cropArea.normCoords.w = sx;\r\n this.cropArea.normCoords.h = sy;\r\n\r\n const widthPx = rectVideo.width * sx;\r\n const heightPx = rectVideo.height * sy;\r\n const xPx = rectVideo.width * this.cropArea.normCoords.x + rectVideo.left;\r\n const yPx = rectVideo.height * this.cropArea.normCoords.y + rectVideo.top;\r\n\r\n if ( !this.cropArea.classList.contains( 'hidden' ) )\r\n {\r\n const nodes = this.cropArea.parentElement.childNodes;\r\n for ( let i = 0; i < nodes.length; i++ )\r\n {\r\n if ( nodes[i] != this.cropArea )\r\n {\r\n const rectEl = nodes[i].getBoundingClientRect();\r\n nodes[i].style.webkitMask = `linear-gradient(#000 0 0) ${xPx - rectEl.left}px ${\r\n yPx - rectEl.top\r\n }px / ${widthPx}px ${heightPx}px, linear-gradient(rgba(0, 0, 0, 0.3) 0 0)`;\r\n nodes[i].style.webkitMaskRepeat = 'no-repeat';\r\n }\r\n }\r\n }\r\n\r\n this.cropArea.style.width = widthPx + 'px';\r\n this.cropArea.style.height = heightPx + 'px';\r\n }\r\n\r\n // screen pixel (event.clientX) or video normalized (0 is top left of video, 1 bot right)\r\n moveCropArea( x: number, y: number, isNormalized: boolean = true )\r\n {\r\n const rectVideo = this.video.getBoundingClientRect();\r\n\r\n if ( !isNormalized )\r\n {\r\n x = ( rectVideo.width ) ? ( ( x - rectVideo.left ) / rectVideo.width ) : 0;\r\n y = ( rectVideo.height ) ? ( ( y - rectVideo.top ) / rectVideo.height ) : 0;\r\n }\r\n\r\n x = Math.max( 0, Math.min( 1 - this.cropArea.normCoords.w, x ) );\r\n y = Math.max( 0, Math.min( 1 - this.cropArea.normCoords.h, y ) );\r\n\r\n this.cropArea.normCoords.x = x;\r\n this.cropArea.normCoords.y = y;\r\n\r\n const xPx = rectVideo.width * x + rectVideo.left;\r\n const yPx = rectVideo.height * y + rectVideo.top;\r\n const widthPx = rectVideo.width * this.cropArea.normCoords.w;\r\n const heightPx = rectVideo.height * this.cropArea.normCoords.h;\r\n\r\n if ( !this.cropArea.classList.contains( 'hidden' ) )\r\n {\r\n const nodes = this.cropArea.parentElement.childNodes;\r\n for ( let i = 0; i < nodes.length; i++ )\r\n {\r\n if ( nodes[i] != this.cropArea )\r\n {\r\n const rectEl = nodes[i].getBoundingClientRect();\r\n nodes[i].style.webkitMask = `linear-gradient(#000 0 0) ${xPx - rectEl.left}px ${\r\n yPx - rectEl.top\r\n }px / ${widthPx}px ${heightPx}px, linear-gradient(rgba(0, 0, 0, 0.3) 0 0)`;\r\n nodes[i].style.webkitMaskRepeat = 'no-repeat';\r\n }\r\n }\r\n }\r\n\r\n const rectParent = this.cropArea.parentElement.getBoundingClientRect();\r\n this.cropArea.style.left = xPx - rectParent.left + 'px';\r\n this.cropArea.style.top = yPx - rectParent.top + 'px';\r\n }\r\n\r\n async loadVideo( options: any = {} )\r\n {\r\n this.videoReady = false;\r\n\r\n while ( this.video.duration === Infinity || isNaN( this.video.duration ) || !this.timebar )\r\n {\r\n await new Promise( ( r ) => setTimeout( r, 1000 ) );\r\n this.video.currentTime = 10000000 * Math.random();\r\n }\r\n\r\n this.video.currentTime = 0.01; // BUG: some videos will not play unless this line is present\r\n\r\n // Duration can change if the video is dynamic (stream). This function is to ensure to load all buffer data\r\n const forceLoadChunks = () => {\r\n const state = this.videoReady;\r\n if ( this.video.readyState > 3 )\r\n {\r\n this.videoReady = true;\r\n }\r\n if ( !state )\r\n {\r\n this.video.currentTime = this.video.duration;\r\n }\r\n };\r\n\r\n this.video.addEventListener( 'canplaythrough', forceLoadChunks, { passive: true } );\r\n\r\n this.video.ondurationchange = ( v ) => {\r\n if ( this.video.duration != this.endTime )\r\n {\r\n this.video.currentTime = this.startTime;\r\n console.log( 'duration changed from', this.endTime, ' to ', this.video.duration );\r\n this.endTime = this.video.duration;\r\n this.timebar.setDuration( this.endTime );\r\n this.timebar.setEndTime( this.endTime );\r\n }\r\n this.video.currentTime = this.startTime;\r\n this.timebar.setCurrentTime( this.video.currentTime );\r\n };\r\n\r\n this.timebar.startX = this.timebar.position.x;\r\n this.timebar.endX = this.timebar.position.x + this.timebar.lineWidth;\r\n this.startTime = 0;\r\n this.endTime = this.video.duration;\r\n this.timebar.setDuration( this.endTime );\r\n this.timebar.setEndTime( this.video.duration );\r\n this.timebar.setStartTime( this.startTime );\r\n this.timebar.setCurrentTime( this.startTime );\r\n // this.timebar.setStartValue( this.timebar.startX);\r\n // this.timebar.currentX = this._timeToX( this.video.currentTime);\r\n // this.timebar.setCurrentValue( this.timebar.currentX);\r\n // this.timebar.update( this.timebar.currentX );\r\n\r\n // only have one update on flight\r\n if ( !this.requestId )\r\n {\r\n this._update();\r\n }\r\n\r\n this.controls = options.controls ?? true;\r\n\r\n if ( !this.controls )\r\n {\r\n this.hideControls();\r\n }\r\n\r\n this.cropArea.style.height = this.video.clientHeight + 'px';\r\n this.cropArea.style.width = this.video.clientWidth + 'px';\r\n this.moveCropArea( 0, 0, true );\r\n this.resizeCropArea( 1, 1, true );\r\n\r\n if ( this.crop )\r\n {\r\n this.showCropArea();\r\n }\r\n else\r\n {\r\n this.hideCropArea();\r\n }\r\n\r\n window.addEventListener( 'keyup', this.onKeyUp );\r\n\r\n if ( this.onVideoLoaded )\r\n {\r\n this.onVideoLoaded( this.video );\r\n }\r\n }\r\n\r\n _update()\r\n {\r\n // if( this.onDraw ) {\r\n // this.onDraw();\r\n // }\r\n if ( this.playing )\r\n {\r\n if ( this.video.currentTime + 0.000001 >= this.endTime )\r\n {\r\n this.video.pause();\r\n\r\n if ( !this.loop )\r\n {\r\n this.playing = false;\r\n this.controlsPanelLeft.refresh();\r\n }\r\n else\r\n {\r\n this.video.currentTime = this.startTime;\r\n this.video.play();\r\n }\r\n }\r\n\r\n this._updateTime = false;\r\n this.timebar.setCurrentTime( this.video.currentTime );\r\n this._updateTime = true;\r\n }\r\n\r\n this.requestId = requestAnimationFrame( this._update.bind( this ) );\r\n }\r\n\r\n timeToString( t: number )\r\n {\r\n let mzminutes = Math.floor( t / 60 );\r\n let mzseconds = Math.floor( t - ( mzminutes * 60 ) );\r\n let mzmiliseconds = Math.floor( ( t - mzseconds ) * 100 );\r\n\r\n let mzmilisecondsStr: string = mzmiliseconds < 10 ? ( '0' + mzmiliseconds ) : mzmiliseconds.toString();\r\n let mzsecondsStr: string = mzseconds < 10 ? ( '0' + mzseconds ) : mzseconds.toString();\r\n let mzminutesStr: string = mzminutes < 10 ? ( '0' + mzminutes ) : mzminutes.toString();\r\n return `${mzminutesStr}:${mzsecondsStr}.${mzmilisecondsStr}`;\r\n }\r\n\r\n _setCurrentTime( t: number )\r\n {\r\n if ( this.video.currentTime != t && this._updateTime )\r\n {\r\n this.video.currentTime = t;\r\n }\r\n\r\n this.currentTimeString = this.timeToString( t );\r\n this.controlsCurrentPanel.refresh();\r\n\r\n if ( this.onSetTime )\r\n {\r\n this.onSetTime( t );\r\n }\r\n\r\n if ( this.onChangeCurrent )\r\n {\r\n this.onChangeCurrent( t );\r\n }\r\n }\r\n\r\n _setStartTime( t: number )\r\n {\r\n this.startTime = this.video.currentTime = t;\r\n\r\n this.startTimeString = this.timeToString( t );\r\n this.controlsPanelLeft.refresh();\r\n\r\n if ( this.onSetTime )\r\n {\r\n this.onSetTime( t );\r\n }\r\n\r\n if ( this.onChangeStart )\r\n {\r\n this.onChangeStart( t );\r\n }\r\n }\r\n\r\n _setEndTime( t: number )\r\n {\r\n this.endTime = this.video.currentTime = t;\r\n\r\n this.endTimeString = this.timeToString( t );\r\n this.controlsPanelRight.refresh();\r\n\r\n if ( this.onSetTime )\r\n {\r\n this.onSetTime( t );\r\n }\r\n\r\n if ( this.onChangeEnd )\r\n {\r\n this.onChangeEnd( t );\r\n }\r\n }\r\n\r\n getStartTime()\r\n {\r\n return this.startTime;\r\n }\r\n\r\n getEndTime()\r\n {\r\n return this.endTime;\r\n }\r\n\r\n getTrimedTimes()\r\n {\r\n return { start: this.startTime, end: this.endTime };\r\n }\r\n\r\n getCroppedArea()\r\n {\r\n return this.cropArea.getBoundingClientRect();\r\n }\r\n\r\n showCropArea()\r\n {\r\n this.cropArea.classList.remove( 'hidden' );\r\n\r\n const nodes = this.cropArea.parentElement?.childNodes ?? [];\r\n const rect = this.cropArea.getBoundingClientRect();\r\n for ( let i = 0; i < nodes.length; i++ )\r\n {\r\n const node: any = nodes[i];\r\n if ( node == this.cropArea ) continue;\r\n const rectEl = node.getBoundingClientRect();\r\n node.style.webkitMask = `linear-gradient(#000 0 0) ${rect.left - rectEl.left}px ${\r\n rect.top - rectEl.top\r\n }px / ${rect.width}px ${rect.height}px, linear-gradient(rgba(0, 0, 0, 0.3) 0 0)`;\r\n node.style.webkitMaskRepeat = 'no-repeat';\r\n }\r\n }\r\n\r\n hideCropArea()\r\n {\r\n this.cropArea.classList.add( 'hidden' );\r\n\r\n const nodes = this.cropArea.parentElement?.childNodes ?? [];\r\n for ( let i = 0; i < nodes.length; i++ )\r\n {\r\n const node: any = nodes[i];\r\n if ( node == this.cropArea ) continue;\r\n node.style.webkitMask = '';\r\n node.style.webkitMaskRepeat = 'no-repeat';\r\n }\r\n }\r\n\r\n showControls()\r\n {\r\n this.controls = true;\r\n this.controlsArea.show();\r\n }\r\n\r\n hideControls()\r\n {\r\n this.controls = false;\r\n this.controlsArea.hide();\r\n }\r\n\r\n stopUpdates()\r\n {\r\n if ( this.requestId )\r\n {\r\n cancelAnimationFrame( this.requestId );\r\n this.requestId = null;\r\n }\r\n }\r\n\r\n unbind()\r\n {\r\n this.stopUpdates();\r\n\r\n this.video.pause();\r\n this.playing = false;\r\n this.controlsPanelLeft.refresh();\r\n this.video.src = '';\r\n\r\n window.removeEventListener( 'keyup', this.onKeyUp );\r\n document.removeEventListener( 'mouseup', this._onCropMouseUp );\r\n document.removeEventListener( 'mousemove', this._onCropMouseMove );\r\n }\r\n}\r\n\r\nLX.VideoEditor = VideoEditor;\r\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// This is a generated file. Do not edit.
|
|
2
|
+
export { AssetView } from './AssetView.js';
|
|
3
|
+
export { Knob } from './Audio.js';
|
|
4
|
+
export { CodeEditor } from './CodeEditor.js';
|
|
5
|
+
export { DocMaker } from './DocMaker.js';
|
|
6
|
+
export { BoundingBox, GraphEditor, GraphNode } from './GraphEditor.js';
|
|
7
|
+
export { ImUI } from './ImUi.js';
|
|
8
|
+
export { ClipsTimeline, KeyFramesTimeline, Timeline } from './Timeline.js';
|
|
9
|
+
export { TimeBar, VideoEditor } from './VideoEditor.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|
package/build/index.d.ts
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export * from './core/Icons';
|
|
2
|
+
export * from './core/Namespace';
|
|
3
|
+
export * from './core/Utils';
|
|
4
|
+
export * from './core/Vec2';
|
|
5
|
+
export * from './core/Area';
|
|
6
|
+
export * from './core/Branch';
|
|
7
|
+
export * from './core/Event';
|
|
8
|
+
export * from './core/Panel';
|
|
9
|
+
export * from './components/ArrayInput';
|
|
10
|
+
export * from './components/BaseComponent';
|
|
11
|
+
export * from './components/Button';
|
|
12
|
+
export * from './components/Checkbox';
|
|
13
|
+
export * from './components/ColorInput';
|
|
14
|
+
export * from './components/ComboButtons';
|
|
15
|
+
export * from './components/Counter';
|
|
16
|
+
export * from './components/Curve';
|
|
17
|
+
export * from './components/DatePicker';
|
|
18
|
+
export * from './components/Dial';
|
|
19
|
+
export * from './components/FileInput';
|
|
20
|
+
export * from './components/Form';
|
|
21
|
+
export * from './components/Layers';
|
|
22
|
+
export * from './components/List';
|
|
23
|
+
export * from './components/Map2D';
|
|
24
|
+
export * from './components/NodeTree';
|
|
25
|
+
export * from './components/NumberInput';
|
|
26
|
+
export * from './components/OTPInput';
|
|
27
|
+
export * from './components/Pad';
|
|
28
|
+
export * from './components/Pagination';
|
|
29
|
+
export * from './components/Progress';
|
|
30
|
+
export * from './components/RadioGroup';
|
|
31
|
+
export * from './components/RangeInput';
|
|
32
|
+
export * from './components/Rate';
|
|
33
|
+
export * from './components/Select';
|
|
34
|
+
export * from './components/SizeInput';
|
|
35
|
+
export * from './components/Spinner';
|
|
36
|
+
export * from './components/Table';
|
|
37
|
+
export * from './components/TabSections';
|
|
38
|
+
export * from './components/Tags';
|
|
39
|
+
export * from './components/TextArea';
|
|
40
|
+
export * from './components/TextInput';
|
|
41
|
+
export * from './components/Title';
|
|
42
|
+
export * from './components/Toggle';
|
|
43
|
+
export * from './components/Vector';
|
|
44
|
+
export * from './components/AlertDialog';
|
|
45
|
+
export * from './components/ContextMenu';
|
|
46
|
+
export * from './components/Dialog';
|
|
47
|
+
export * from './components/DropdownMenu';
|
|
48
|
+
export * from './components/Footer';
|
|
49
|
+
export * from './components/PocketDialog';
|
|
50
|
+
export * from './components/Popover';
|
|
51
|
+
export * from './components/Sheet';
|
|
52
|
+
export * from './components/Sidebar';
|
|
53
|
+
export * from './components/Skeleton';
|
|
54
|
+
export * from './components/Tabs';
|
|
55
|
+
export * from './components/Tour';
|
|
56
|
+
export * from './core/Core';
|