polotno 2.2.0 → 2.2.2

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.
@@ -20,7 +20,7 @@
20
20
  width: 100%;
21
21
  cursor: pointer;
22
22
  display: block;
23
- max-height: 250px;
23
+ max-height: 300px;
24
24
  min-height: 50px;
25
25
  object-fit: contain;
26
26
  `,CreditWrap=(0,styled_1.default)("div")`
@@ -10,10 +10,10 @@ type ButtonProps = {
10
10
  store: StoreType;
11
11
  elements: FigureElementType[];
12
12
  };
13
- export declare const FigureColor: (({ elements, store }: ButtonProps) => React.JSX.Element) & {
13
+ export declare const FigureFill: (({ elements, store }: ButtonProps) => React.JSX.Element) & {
14
14
  displayName: string;
15
15
  };
16
- export declare const FigureSettings: (({ store, elements }: ButtonProps) => React.JSX.Element) & {
16
+ export declare const FigureSettings: (({ store, elements, element }: ButtonProps) => React.JSX.Element) & {
17
17
  displayName: string;
18
18
  };
19
19
  export declare const FigureStroke: (({ elements, store }: ButtonProps) => React.JSX.Element) & {
@@ -1 +1 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.FigureToolbar=exports.FigureStroke=exports.FigureSettings=exports.FigureColor=void 0;const react_1=__importDefault(require("react")),mobx_react_lite_1=require("mobx-react-lite"),core_1=require("@blueprintjs/core"),core_2=require("@blueprintjs/core"),ZoStrokeWidth_1=__importDefault(require("@meronex/icons/zo/ZoStrokeWidth")),color_picker_1=__importDefault(require("./color-picker")),animations_picker_1=require("./animations-picker"),filters_picker_1=require("./filters-picker"),element_container_1=require("./element-container"),l10n_1=require("../utils/l10n"),flags_1=require("../utils/flags");exports.FigureColor=(0,mobx_react_lite_1.observer)((({elements:e,store:t})=>react_1.default.createElement(color_picker_1.default,{value:e[0].color,style:{marginRight:"5px"},gradientEnabled:!1,onChange:r=>t.history.transaction((()=>{e.forEach((e=>{e.set({color:r})}))})),store:t}))),exports.FigureSettings=(0,mobx_react_lite_1.observer)((({store:e,elements:t})=>{const r=r=>{e.history.transaction((()=>{t.forEach((e=>{e.set(r)}))}))};return react_1.default.createElement(core_2.Popover,{content:react_1.default.createElement("div",{style:{padding:"15px",paddingTop:"15px",width:"230px"}},react_1.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",paddingBottom:"5px"}},react_1.default.createElement("div",null,(0,l10n_1.t)("toolbar.strokeWidth")),react_1.default.createElement("div",null,react_1.default.createElement(filters_picker_1.NumberInput,{value:t[0].strokeWidth,onValueChange:e=>{r({strokeWidth:e})},style:{width:"50px"},min:0,max:100,buttonPosition:"none"}))),react_1.default.createElement(core_1.Slider,{value:t[0].strokeWidth,onChange:e=>{r({strokeWidth:e})},min:0,max:100,labelRenderer:!1}),react_1.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",paddingBottom:"5px",paddingTop:"15px"}},react_1.default.createElement(core_1.Button,{onClick:()=>{r({dash:[]})},active:0===t[0].dash.length},react_1.default.createElement("svg",{width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},react_1.default.createElement("line",{x2:"24",y1:"50%",y2:"50%",stroke:"currentColor",strokeWidth:"2"}))),react_1.default.createElement(core_1.Button,{onClick:()=>{r({dash:[4,1]})},active:4===t[0].dash[0]},react_1.default.createElement("svg",{width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},react_1.default.createElement("line",{x1:"-1",x2:"25",y1:"50%",y2:"50%",stroke:"currentColor",strokeDasharray:"12 2",strokeWidth:"2"}))),react_1.default.createElement(core_1.Button,{onClick:()=>{r({dash:[2,1]})},active:2===t[0].dash[0]},react_1.default.createElement("svg",{width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},react_1.default.createElement("line",{x1:"1",x2:"23",y1:"50%",y2:"50%",stroke:"currentColor",strokeDasharray:"6 2",strokeWidth:"2"}))),react_1.default.createElement(core_1.Button,{onClick:()=>{r({dash:[1,1]})},active:1===t[0].dash[0]},react_1.default.createElement("svg",{width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},react_1.default.createElement("line",{x1:"1",x2:"23",y1:"50%",y2:"50%",stroke:"currentColor",strokeDasharray:"2 2",strokeWidth:"2"})))),"rect"===t.subType&&react_1.default.createElement(react_1.default.Fragment,null,react_1.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",paddingBottom:"5px"}},react_1.default.createElement("div",null,(0,l10n_1.t)("toolbar.cornerRadius")),react_1.default.createElement("div",null,react_1.default.createElement(filters_picker_1.NumberInput,{value:t[0].cornerRadius,onValueChange:e=>{r({cornerRadius:e})},style:{width:"50px"},min:0,max:100,buttonPosition:"none"}))),react_1.default.createElement(core_1.Slider,{value:t[0].cornerRadius,onChange:e=>{r({cornerRadius:e})},min:0,max:100,labelRenderer:!1}))),position:core_1.Position.BOTTOM},react_1.default.createElement(core_1.Button,{icon:react_1.default.createElement(ZoStrokeWidth_1.default,null),minimal:!0}))})),exports.FigureStroke=(0,mobx_react_lite_1.observer)((({elements:e,store:t})=>e.find((e=>e.strokeWidth))?react_1.default.createElement(color_picker_1.default,{value:e[0].stroke,style:{marginRight:"5px"},gradientEnabled:!1,onChange:r=>t.history.transaction((()=>{e.forEach((e=>{e.set({stroke:r})}))})),store:t}):null));const PROPS_MAP={FigureColor:exports.FigureColor,FigureStroke:exports.FigureStroke,FigureSettings:exports.FigureSettings,FigureAnimations:animations_picker_1.AnimationsPicker};exports.FigureToolbar=(0,mobx_react_lite_1.observer)((({store:e,components:t})=>{const r=e.selectedElements[0],a=["FigureColor","FigureStroke","FigureSettings",flags_1.flags.animationsEnabled&&"FigureAnimations"].filter((e=>Boolean(e))),o=(0,element_container_1.extendToolbar)({type:"line",usedItems:a,components:t});return react_1.default.createElement(element_container_1.ElementContainer,{items:o,itemRender:a=>{const o=t[a]||PROPS_MAP[a];return react_1.default.createElement(o,{element:r,store:e,key:a,elements:e.selectedElements})}})})),exports.default=exports.FigureToolbar;
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.FigureToolbar=exports.FigureStroke=exports.FigureSettings=exports.FigureFill=void 0;const react_1=__importDefault(require("react")),mobx_react_lite_1=require("mobx-react-lite"),core_1=require("@blueprintjs/core"),core_2=require("@blueprintjs/core"),ZoStrokeWidth_1=__importDefault(require("@meronex/icons/zo/ZoStrokeWidth")),color_picker_1=__importDefault(require("./color-picker")),animations_picker_1=require("./animations-picker"),filters_picker_1=require("./filters-picker"),element_container_1=require("./element-container"),l10n_1=require("../utils/l10n"),flags_1=require("../utils/flags");exports.FigureFill=(0,mobx_react_lite_1.observer)((({elements:e,store:t})=>react_1.default.createElement(color_picker_1.default,{value:e[0].fill,style:{marginRight:"5px"},gradientEnabled:!1,onChange:r=>t.history.transaction((()=>{e.forEach((e=>{e.set({fill:r})}))})),store:t}))),exports.FigureSettings=(0,mobx_react_lite_1.observer)((({store:e,elements:t,element:r})=>{const a=r=>{e.history.transaction((()=>{t.forEach((e=>{e.set(r)}))}))};return react_1.default.createElement(core_2.Popover,{content:react_1.default.createElement("div",{style:{padding:"15px",paddingTop:"15px",width:"230px"}},react_1.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",paddingBottom:"5px"}},react_1.default.createElement("div",null,(0,l10n_1.t)("toolbar.strokeWidth")),react_1.default.createElement("div",null,react_1.default.createElement(filters_picker_1.NumberInput,{value:t[0].strokeWidth,onValueChange:e=>{a({strokeWidth:e})},style:{width:"50px"},min:0,max:100,buttonPosition:"none"}))),react_1.default.createElement(core_1.Slider,{value:t[0].strokeWidth,onChange:e=>{a({strokeWidth:e})},min:0,max:100,labelRenderer:!1}),react_1.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",paddingBottom:"5px",paddingTop:"15px"}},react_1.default.createElement(core_1.Button,{onClick:()=>{a({dash:[]})},active:0===t[0].dash.length},react_1.default.createElement("svg",{width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},react_1.default.createElement("line",{x2:"24",y1:"50%",y2:"50%",stroke:"currentColor",strokeWidth:"2"}))),react_1.default.createElement(core_1.Button,{onClick:()=>{a({dash:[4,1]})},active:4===t[0].dash[0]},react_1.default.createElement("svg",{width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},react_1.default.createElement("line",{x1:"-1",x2:"25",y1:"50%",y2:"50%",stroke:"currentColor",strokeDasharray:"12 2",strokeWidth:"2"}))),react_1.default.createElement(core_1.Button,{onClick:()=>{a({dash:[2,1]})},active:2===t[0].dash[0]},react_1.default.createElement("svg",{width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},react_1.default.createElement("line",{x1:"1",x2:"23",y1:"50%",y2:"50%",stroke:"currentColor",strokeDasharray:"6 2",strokeWidth:"2"}))),react_1.default.createElement(core_1.Button,{onClick:()=>{a({dash:[1,1]})},active:1===t[0].dash[0]},react_1.default.createElement("svg",{width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},react_1.default.createElement("line",{x1:"1",x2:"23",y1:"50%",y2:"50%",stroke:"currentColor",strokeDasharray:"2 2",strokeWidth:"2"})))),"rect"===r.subType&&react_1.default.createElement(react_1.default.Fragment,null,react_1.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",paddingBottom:"5px"}},react_1.default.createElement("div",null,(0,l10n_1.t)("toolbar.cornerRadius")),react_1.default.createElement("div",null,react_1.default.createElement(filters_picker_1.NumberInput,{value:t[0].cornerRadius,onValueChange:e=>{a({cornerRadius:e})},style:{width:"50px"},min:0,max:100,buttonPosition:"none"}))),react_1.default.createElement(core_1.Slider,{value:t[0].cornerRadius,onChange:e=>{a({cornerRadius:e})},min:0,max:100,labelRenderer:!1}))),position:core_1.Position.BOTTOM},react_1.default.createElement(core_1.Button,{icon:react_1.default.createElement(ZoStrokeWidth_1.default,null),minimal:!0}))})),exports.FigureStroke=(0,mobx_react_lite_1.observer)((({elements:e,store:t})=>e.find((e=>e.strokeWidth))?react_1.default.createElement(color_picker_1.default,{value:e[0].stroke,style:{marginRight:"5px"},gradientEnabled:!1,onChange:r=>t.history.transaction((()=>{e.forEach((e=>{e.set({stroke:r})}))})),store:t}):null));const PROPS_MAP={FigureFill:exports.FigureFill,FigureStroke:exports.FigureStroke,FigureSettings:exports.FigureSettings,FigureAnimations:animations_picker_1.AnimationsPicker};exports.FigureToolbar=(0,mobx_react_lite_1.observer)((({store:e,components:t})=>{const r=e.selectedElements[0],a=["FigureFill","FigureStroke","FigureSettings",flags_1.flags.animationsEnabled&&"FigureAnimations"].filter((e=>Boolean(e))),l=(0,element_container_1.extendToolbar)({type:"line",usedItems:a,components:t});return react_1.default.createElement(element_container_1.ElementContainer,{items:l,itemRender:a=>{const l=t[a]||PROPS_MAP[a];return react_1.default.createElement(l,{element:r,store:e,key:a,elements:e.selectedElements})}})})),exports.default=exports.FigureToolbar;
@@ -1 +1 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.VideoToolbar=exports.VideoTrim=void 0;const react_1=__importDefault(require("react")),mobx_react_lite_1=require("mobx-react-lite"),element_container_1=require("./element-container"),core_1=require("@blueprintjs/core"),animations_picker_1=require("./animations-picker"),flags_1=require("../utils/flags"),video_1=require("../utils/video");exports.VideoTrim=(0,mobx_react_lite_1.observer)((({store:e,components:t,element:r})=>{const o=react_1.default.useRef(null),[i,a]=react_1.default.useState([]),n=(e,t)=>{e.preventDefault();const i=e=>{e.preventDefault();const{clientX:i}=e,{left:a,width:n}=o.current.getBoundingClientRect(),{src:s}=r,l=(i-a)/n;"start"===t?r.set({startTime:Math.min(r.endTime,Math.max(0,l))}):"end"===t&&r.set({endTime:Math.min(1,Math.max(r.startTime,l))})};window.addEventListener("mousemove",i),window.addEventListener("mouseup",(()=>{window.removeEventListener("mousemove",i)}))};return react_1.default.createElement(core_1.Popover,{position:"bottom",onOpened:async()=>{const{width:e,height:t}=await(0,video_1.getVideoSize)(r.src),i=e/t,{src:n}=r,s=o.current.offsetHeight,l=o.current.offsetWidth,c=s*i,d=Math.ceil(l/c),u=await(0,video_1.getVideoDuration)(n),m=[];for(var _=0;_<d;_++){const e=await(0,video_1.getVideoPreview)(n,_*u/d);m.push(e)}a(m)},content:react_1.default.createElement(core_1.Navbar,{style:{boxShadow:"none",backgroundColor:"transparent",width:"calc(100vw - 300px)"}},react_1.default.createElement(core_1.NavbarGroup,null,react_1.default.createElement(core_1.NumericInput,{style:{width:"80px"},value:parseFloat((r.duration*(r.endTime-r.startTime)/1e3).toFixed(2)),minorStepSize:.01,stepSize:.1,buttonPosition:"none",readOnly:!0}),react_1.default.createElement("div",{style:{width:"calc(100vw - 420px)",height:"30px",display:"flex",position:"relative",overflow:"hidden",marginLeft:"10px"},ref:o},i.map(((e,t)=>react_1.default.createElement("img",{key:t,src:e,style:{width:"auto",height:"100%",objectFit:"cover"}}))),react_1.default.createElement("div",{style:{position:"absolute",top:"0",left:0,width:100*r.startTime+"%",height:"30px",backgroundColor:"rgb(0, 0, 0, 0.5)"}}),react_1.default.createElement("div",{style:{position:"absolute",top:"0",right:"0%",width:100-100*r.endTime+"%",height:"30px",backgroundColor:"rgb(0, 0, 0, 0.5)"}}),react_1.default.createElement("div",{style:{position:"absolute",top:"0",left:100*r.startTime+"%",width:"10px",height:"30px",borderRadius:"0px",backgroundColor:"rgb(0, 161, 255, 0.9)",cursor:"ew-resize"},onMouseDown:e=>{n(e,"start")}}),react_1.default.createElement("div",{style:{position:"absolute",top:"0",right:100-100*r.endTime+"%",width:"10px",height:"30px",borderRadius:"0px",backgroundColor:"rgb(0, 161, 255, 0.9)",cursor:"ew-resize"},onMouseDown:e=>{n(e,"end")}}))))},react_1.default.createElement(core_1.Button,{icon:"cut",minimal:!0},"Trim"))}));const PROPS_MAP={VideoTrim:exports.VideoTrim,VideoAnimations:animations_picker_1.AnimationsPicker};exports.VideoToolbar=(0,mobx_react_lite_1.observer)((({store:e,components:t})=>{const r=e.selectedElements,o=["VideoTrim",flags_1.flags.animationsEnabled&&"VideoAnimations"].filter((e=>!!e)),i=(0,element_container_1.extendToolbar)({type:"video",usedItems:o,components:t});return react_1.default.createElement(element_container_1.ElementContainer,{items:i,itemRender:o=>{const i=t[o]||PROPS_MAP[o];return react_1.default.createElement(i,{elements:r,element:r[0],store:e,key:o})}})})),exports.default=exports.VideoToolbar;
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.VideoToolbar=exports.VideoTrim=void 0;const react_1=__importDefault(require("react")),mobx_react_lite_1=require("mobx-react-lite"),element_container_1=require("./element-container"),core_1=require("@blueprintjs/core"),animations_picker_1=require("./animations-picker"),flags_1=require("../utils/flags"),video_1=require("../utils/video");exports.VideoTrim=(0,mobx_react_lite_1.observer)((({store:e,components:t,element:r})=>{const o=react_1.default.useRef(null),[i,n]=react_1.default.useState([]);react_1.default.useEffect((()=>{n([])}),[r.src]);const a=(e,t)=>{e.preventDefault();const i=e=>{e.preventDefault();const{clientX:i}=e,{left:n,width:a}=o.current.getBoundingClientRect(),{src:s}=r,c=(i-n)/a;"start"===t?r.set({startTime:Math.min(r.endTime,Math.max(0,c))}):"end"===t&&r.set({endTime:Math.min(1,Math.max(r.startTime,c))})};window.addEventListener("mousemove",i),window.addEventListener("mouseup",(()=>{window.removeEventListener("mousemove",i)}))};return react_1.default.createElement(core_1.Popover,{position:"bottom",onOpened:async()=>{if(!r.src)return;if(i.length)return;const{width:e,height:t}=await(0,video_1.getVideoSize)(r.src),a=e/t,{src:s}=r,c=o.current.offsetHeight,l=o.current.offsetWidth,d=c*a,u=Math.ceil(l/d),m=await(0,video_1.getVideoDuration)(s),_=document.createElement("video");_.crossOrigin="anonymous",_.src=s;const p=document.createElement("canvas");p.width=480;try{await new Promise(((e,t)=>{_.addEventListener("loadeddata",(()=>{const t=_.videoWidth/_.videoHeight;p.height=480/t,e()})),_.addEventListener("error",t)})),n([]);for(let e=0;e<u;e++){const t=e*m/u,r=await(0,video_1.getVideoObjectPreview)(_,p,t);n((e=>e.concat(r)))}}catch(e){console.error("Error generating previews:",e)}},content:react_1.default.createElement(core_1.Navbar,{style:{boxShadow:"none",backgroundColor:"transparent",width:"calc(100vw - 300px)"}},react_1.default.createElement(core_1.NavbarGroup,null,react_1.default.createElement(core_1.NumericInput,{style:{width:"80px"},value:parseFloat((r.duration*(r.endTime-r.startTime)/1e3).toFixed(2)),minorStepSize:.01,stepSize:.1,buttonPosition:"none",readOnly:!0}),react_1.default.createElement("div",{style:{width:"calc(100vw - 420px)",height:"30px",display:"flex",position:"relative",overflow:"hidden",marginLeft:"10px"},ref:o},i.map(((e,t)=>react_1.default.createElement("img",{key:t,src:e,style:{width:"auto",height:"100%",objectFit:"cover"}}))),react_1.default.createElement("div",{style:{position:"absolute",top:"0",left:0,width:100*r.startTime+"%",height:"30px",backgroundColor:"rgb(0, 0, 0, 0.5)"}}),react_1.default.createElement("div",{style:{position:"absolute",top:"0",right:"0%",width:100-100*r.endTime+"%",height:"30px",backgroundColor:"rgb(0, 0, 0, 0.5)"}}),react_1.default.createElement("div",{style:{position:"absolute",top:"0",left:100*r.startTime+"%",width:"10px",height:"30px",borderRadius:"0px",backgroundColor:"rgb(0, 161, 255, 0.9)",cursor:"ew-resize"},onMouseDown:e=>{a(e,"start")}}),react_1.default.createElement("div",{style:{position:"absolute",top:"0",right:100-100*r.endTime+"%",width:"10px",height:"30px",borderRadius:"0px",backgroundColor:"rgb(0, 161, 255, 0.9)",cursor:"ew-resize"},onMouseDown:e=>{a(e,"end")}}))))},react_1.default.createElement(core_1.Button,{icon:"cut",minimal:!0},"Trim"))}));const PROPS_MAP={VideoTrim:exports.VideoTrim,VideoAnimations:animations_picker_1.AnimationsPicker};exports.VideoToolbar=(0,mobx_react_lite_1.observer)((({store:e,components:t})=>{const r=e.selectedElements,o=["VideoTrim",flags_1.flags.animationsEnabled&&"VideoAnimations"].filter((e=>!!e)),i=(0,element_container_1.extendToolbar)({type:"video",usedItems:o,components:t});return react_1.default.createElement(element_container_1.ElementContainer,{items:i,itemRender:o=>{const i=t[o]||PROPS_MAP[o];return react_1.default.createElement(i,{elements:r,element:r[0],store:e,key:o})}})})),exports.default=exports.VideoToolbar;
package/utils/video.d.ts CHANGED
@@ -4,3 +4,4 @@ export declare function getVideoSize(url: string): Promise<{
4
4
  }>;
5
5
  export declare function getVideoDuration(url: string): Promise<number>;
6
6
  export declare function getVideoPreview(videoUrl: any, captureTime?: number): Promise<string>;
7
+ export declare function getVideoObjectPreview(video: any, canvas: any, captureTime: any): Promise<unknown>;
package/utils/video.js CHANGED
@@ -1 +1 @@
1
- "use strict";async function getVideoSize(e){const t=document.createElement("video");t.src=e,await t.play(),t.pause();const{videoWidth:i,videoHeight:o}=t;return{width:i,height:o}}async function getVideoDuration(e){const t=document.createElement("video");t.src=e,await t.play(),t.pause();const{duration:i}=t;return i}async function getVideoPreview(e,t=5){return new Promise(((i,o)=>{var r=document.createElement("video"),d=document.createElement("canvas");d.width=480,d.height=360;var n=d.getContext("2d");r.src=e,r.addEventListener("error",(e=>{o(e)})),r.addEventListener("loadeddata",(function(){const e=r.videoWidth/r.videoHeight;d.width=480,d.height=480/e,r.currentTime=t})),r.addEventListener("seeked",(function(){n.drawImage(r,0,0,d.width,d.height);try{var e=d.toDataURL();i(e)}catch(e){o(e)}}))}))}Object.defineProperty(exports,"__esModule",{value:!0}),exports.getVideoPreview=exports.getVideoDuration=exports.getVideoSize=void 0,exports.getVideoSize=getVideoSize,exports.getVideoDuration=getVideoDuration,exports.getVideoPreview=getVideoPreview;
1
+ "use strict";async function getVideoSize(e){const t=document.createElement("video");t.crossOrigin="anonymous",t.src=e,await t.play(),t.pause();const{videoWidth:i,videoHeight:o}=t;return{width:i,height:o}}async function getVideoDuration(e){const t=document.createElement("video");t.crossOrigin="anonymous",t.src=e,await t.play(),t.pause();const{duration:i}=t;return i}async function getVideoPreview(e,t=5){return new Promise(((i,o)=>{var r=document.createElement("video"),n=document.createElement("canvas");n.width=480,n.height=360;var d=n.getContext("2d");r.crossOrigin="anonymous",r.src=e,r.addEventListener("error",(e=>{o(e)})),r.addEventListener("loadeddata",(function(){const e=r.videoWidth/r.videoHeight;n.width=480,n.height=480/e,r.currentTime=t})),r.addEventListener("seeked",(function(){d.drawImage(r,0,0,n.width,n.height);try{var e=n.toDataURL();i(e)}catch(e){o(e)}}))}))}async function getVideoObjectPreview(e,t,i){return new Promise(((o,r)=>{const n=t.getContext("2d"),d=()=>{try{n.drawImage(e,0,0,t.width,t.height);const i=t.toDataURL();o(i),e.removeEventListener("seeked",d)}catch(t){r(t),e.removeEventListener("seeked",d)}};e.addEventListener("seeked",d),e.currentTime=i}))}Object.defineProperty(exports,"__esModule",{value:!0}),exports.getVideoObjectPreview=exports.getVideoPreview=exports.getVideoDuration=exports.getVideoSize=void 0,exports.getVideoSize=getVideoSize,exports.getVideoDuration=getVideoDuration,exports.getVideoPreview=getVideoPreview,exports.getVideoObjectPreview=getVideoObjectPreview;