@labelbee/lb-components 1.24.0-alpha.58 → 1.24.0-alpha.59

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.
@@ -1 +1 @@
1
- import{timeFormat as o,precisionMinus as F}from"../../../../utils/audio.js";import{AttributeUtils as A}from"@labelbee/lb-annotation";import{Tooltip as S}from"antd";import t from"react";import{ETimeSliceType as $}from"../constant.js";import{decimalReserved as a}from"../../../videoPlayer/utils.js";import{useTranslation as T}from"react-i18next";const E=m=>{var l,n;const{slot:s,item:e,attributeList:c}=m,{t:r}=T();if(!s)return null;const{type:d,attribute:p,textAttribute:b,text:f}=e;if(e.start===void 0||e.end===void 0)return null;const i=a(e.start,2),u=(n=a((l=e.end)!=null?l:0,2))!=null?n:0,v=t.createElement("div",null,t.createElement("div",null,d===$.Period?`${o(i,"ss:SS")}~${o(u,"ss:SS")}\uFF0C${F(u,i)}s`:o(i,"ss:SS")),t.createElement("div",null,`${r("Attribute")}\uFF1A${A.getAttributeShowText(p,c)||r("NoAttribute")}`),t.createElement("div",null,`${r("SubAttribute")}\uFF1A${f}`),t.createElement("div",null,`${r("textTool")}\uFF1A${b}`));return t.createElement(S,{title:v},s)};export{E as default};
1
+ import{timeFormat as l,precisionMinus as F}from"../../../../utils/audio.js";import{AttributeUtils as A}from"@labelbee/lb-annotation";import{Tooltip as S}from"antd";import t from"react";import{ETimeSliceType as T}from"../constant.js";import{decimalReserved as a}from"../../../videoPlayer/utils.js";import{useTranslation as $}from"react-i18next";const E=m=>{var o,n;const{slot:s,item:e,attributeList:c}=m,{t:r}=$();if(!s)return null;const{type:d,attribute:p,textAttribute:b,text:f}=e;if(e.start===void 0||e.end===void 0)return null;const i=a(e.start,2),u=(n=a((o=e.end)!=null?o:0,2))!=null?n:0,v=t.createElement("div",null,t.createElement("div",null,d===T.Period?`${l(i,"ss:SS")}~${l(u,"ss:SS")}\uFF0C${F(u,i)}s`:l(i,"ss:SS")),t.createElement("div",null,`${r("Attribute")}\uFF1A${A.getAttributeShowText(p,c)||r("NoAttribute")}`),t.createElement("div",null,`${r("SubAttribute")}\uFF1A${f}`),t.createElement("div",null,`${r("textTool")}\uFF1A${b}`));return t.createElement(S,{title:v,placement:"leftTop"},s)};export{E as default};
@@ -1 +1 @@
1
- import{timeFormat as E}from"../../../../../utils/audio.js";import{classnames as d}from"../../../../../utils/index.js";import{CloseCircleFilled as y,EnvironmentFilled as S,ScissorOutlined as I}from"@ant-design/icons";import t,{useState as L,useEffect as g}from"react";import{EClipStatus as N,TIME_SLICE_TYPE as j,ETimeSliceType as v}from"../../constant.js";import A from"../timeSliceRange/index.js";import k from"../ToolTipForClip.js";import{getDisplayContent as b}from"../videoTrack/index.js";import l from"./index.module.scss.js";import{decimalReserved as F}from"../../../../videoPlayer/utils.js";import{LabelBeeContext as _}from"../../../../../store/ctx.js";import{connect as $}from"react-redux";import{useTranslation as C}from"react-i18next";const D=({type:e})=>e===v.Time?t.createElement(S,null):t.createElement(I,{rotate:270}),R=()=>{const{t:e}=C();return t.createElement("div",{className:l.noContent},t.createElement("div",null,e("NoClippedData")),t.createElement("div",null,t.createElement("span",{className:l.hotkey},"X"),e("ClipSlice")),t.createElement("div",null,t.createElement("span",{className:l.hotkey},"E"),e("TimeStamp")))},V=({children:e})=>{const n=e.length===0;return t.createElement("div",{className:d({[l.empty]:n,[l.timeSliceListContent]:!0})},n?t.createElement(R,null):e)},h=({timeSliceProps:e,index:n,exportContext:r})=>{const{selectedID:o,attributeList:a,onSelectedTimeSlice:s,removeTimeSlice:c}=r;return t.createElement("div",{key:n,className:d({[l.timeSliceItem]:!0,[l.timeSliceItemActivated]:e.id===o}),onClick:()=>{s(e)}},t.createElement(k,{slot:t.createElement("div",{className:l.timeSliceItemContent},t.createElement("div",{className:l.textOverflow},`${n+1}\u3001\u3010${j[e.type]}\u3011 ${b(e,a)}`),t.createElement("div",{className:d({[l.textOverflow]:!0})},t.createElement(D,{type:e.type}),t.createElement("span",{style:{marginLeft:10}},`${E(e.start,"ss:SS")} ${e.end&&e.type===v.Period?"~ "+E(e.end,"ss:SS")+", "+F(e.end-e.start,2)+"s":""}`))),item:e,attributeList:a}),t.createElement(y,{className:l.timeSliceItemDeleteIcon,onClick:u=>{u.stopPropagation(),c(e)}}))},O=e=>{const{toolInstance:n}=e,{selectedID:r,result:o,videoPlayer:a,clipStatus:s,updateSelectedSliceTimeProperty:c}=(n==null?void 0:n.exportContext)||{},[u,f]=L(0),{t:x}=C();g(()=>(n&&n.singleOn("changeClipSidebar",i=>{f(m=>m+1)}),()=>{var i;(i=n==null?void 0:n.unbindAll)==null||i.call(n,"changeClipSidebar")}),[n]);const T=o==null?void 0:o.find(i=>i.id===r),p=o==null?void 0:o.filter(i=>i.end!==null);return(n==null?void 0:n.exportContext)?t.createElement("div",null,t.createElement("div",{className:l.timeSliceListHeader},x("AnnotatedList")),t.createElement(V,null,p==null?void 0:p.map((i,m)=>t.createElement(h,{timeSliceProps:i,index:m,key:i.id,exportContext:(n==null?void 0:n.exportContext)||{}}))),t.createElement(A,{selectedTimeSlice:T,videoPlayer:a,updateTimeForSelected:c,disabled:s===N.Clipping})):null},w=({annotation:e})=>{const{toolInstance:n}=e;return{toolInstance:n}};var B=$(w,null,null,{context:_})(O);export{B as default};
1
+ import{timeFormat as y}from"../../../../../utils/audio.js";import{classnames as v}from"../../../../../utils/index.js";import{CloseCircleFilled as R,EnvironmentFilled as _,ScissorOutlined as b}from"@ant-design/icons";import n,{useState as A,useRef as S,useEffect as h,useLayoutEffect as F}from"react";import{EClipStatus as V,TIME_SLICE_TYPE as $,ETimeSliceType as I}from"../../constant.js";import D from"../timeSliceRange/index.js";import O from"../ToolTipForClip.js";import{getDisplayContent as w}from"../videoTrack/index.js";import i from"./index.module.scss.js";import{decimalReserved as B}from"../../../../videoPlayer/utils.js";import{LabelBeeContext as H}from"../../../../../store/ctx.js";import{connect as M}from"react-redux";import{useTranslation as L}from"react-i18next";const W=({type:e})=>e===I.Time?n.createElement(_,null):n.createElement(b,{rotate:270}),X=()=>{const{t:e}=L();return n.createElement("div",{className:i.noContent},n.createElement("div",null,e("NoClippedData")),n.createElement("div",null,n.createElement("span",{className:i.hotkey},"X"),e("ClipSlice")),n.createElement("div",null,n.createElement("span",{className:i.hotkey},"E"),e("TimeStamp")))},Y=({children:e,scrollRef:t})=>{const o=e.length===0;return n.createElement("div",{ref:t,className:v({[i.empty]:o,[i.timeSliceListContent]:!0})},o?n.createElement(X,null):e)},q=({timeSliceProps:e,index:t,exportContext:o,onItemClick:r})=>{const{selectedID:c,attributeList:s,removeTimeSlice:d}=o;return n.createElement("div",{key:t,className:v({[i.timeSliceItem]:!0,[i.timeSliceItemActivated]:e.id===c}),onClick:()=>{r(e)}},n.createElement(O,{slot:n.createElement("div",{className:i.timeSliceItemContent},n.createElement("div",{className:i.textOverflow},`${t+1}\u3001\u3010${$[e.type]}\u3011 ${w(e,s)}`),n.createElement("div",{className:v({[i.textOverflow]:!0})},n.createElement(W,{type:e.type}),n.createElement("span",{style:{marginLeft:10}},`${y(e.start,"ss:SS")} ${e.end&&e.type===I.Period?"~ "+y(e.end,"ss:SS")+", "+B(e.end-e.start,2)+"s":""}`))),item:e,attributeList:s}),n.createElement(R,{className:i.timeSliceItemDeleteIcon,onClick:m=>{m.stopPropagation(),d(e)}}))},z=e=>{const{toolInstance:t}=e,{selectedID:o,result:r,videoPlayer:c,clipStatus:s,updateSelectedSliceTimeProperty:d}=(t==null?void 0:t.exportContext)||{},[m,g]=A(0),u=S(null),p=S(!1),{t:k}=L();h(()=>(t&&t.singleOn("changeClipSidebar",l=>{g(a=>a+1)}),()=>{var l;(l=t==null?void 0:t.unbindAll)==null||l.call(t,"changeClipSidebar")}),[t]);const N=r==null?void 0:r.find(l=>l.id===o),E=r==null?void 0:r.filter(l=>l.end!==null),j=l=>{p.current=!0,t.exportContext.onSelectedTimeSlice(l)};return F(()=>{var l,a,C;if(!o||!u.current)return;if(p.current){p.current=!1;return}const x=(a=(l=t==null?void 0:t.exportContext)==null?void 0:l.result)==null?void 0:a.filter(f=>f.end!==null),T=x==null?void 0:x.findIndex(f=>f.id===o);T>=0&&((C=u.current.children[T])==null||C.scrollIntoView({block:"nearest"}))},[o,m,t]),(t==null?void 0:t.exportContext)?n.createElement("div",null,n.createElement("div",{className:i.timeSliceListHeader},k("AnnotatedList")),n.createElement(Y,{scrollRef:u},E==null?void 0:E.map((l,a)=>n.createElement(q,{timeSliceProps:l,index:a,key:l.id,exportContext:(t==null?void 0:t.exportContext)||{},onItemClick:j}))),n.createElement(D,{selectedTimeSlice:N,videoPlayer:c,updateTimeForSelected:d,disabled:s===V.Clipping})):null},G=({annotation:e})=>{const{toolInstance:t}=e;return{toolInstance:t}};var J=M(G,null,null,{context:H})(z);export{J as default};
@@ -1,2 +1,2 @@
1
- import{MathUtils as P,CommonToolUtils as $,uuid as F,TagUtils as z,AttributeUtils as G}from"@labelbee/lb-annotation";import{jsonParser as V}from"../../../utils/index.js";import{precisionAdd as w,precisionMinus as J,isImageValue as H}from"../../../utils/audio.js";import{message as b}from"antd";import E from"lodash";import T from"react";import k from"./index.module.scss.js";import{VideoClipToolContextProvider as W}from"./VideoClipToolContext.js";import{EClipStatus as d,ETimeSliceType as D,PER_SLICE_CHANGE as x,SLICE_MIN_TIME as A}from"./constant.js";import{VideoPlayer as q}from"../../videoPlayer/index.js";import K from"./components/videoTimeSlicesOverVideo/index.js";import Q from"../../../assets/annotation/video/icon_videoCutting.svg.js";import{decimalReserved as B}from"../../videoPlayer/utils.js";var X=Object.defineProperty,Y=Object.defineProperties,Z=Object.getOwnPropertyDescriptors,O=Object.getOwnPropertySymbols,tt=Object.prototype.hasOwnProperty,et=Object.prototype.propertyIsEnumerable,j=(h,s,t)=>s in h?X(h,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):h[s]=t,U=(h,s)=>{for(var t in s||(s={}))tt.call(s,t)&&j(h,t,s[t]);if(O)for(var t of O(s))et.call(s,t)&&j(h,t,s[t]);return h},M=(h,s)=>Y(h,Z(s));class it extends T.Component{constructor(s){super(s);this.fns=new Map,this.throttledUpdateTime=E.throttle(t=>{this.videoPlayer.currentTime=t},100,{trailing:!0}),this.stepInfo=()=>this.props.stepInfo,this.emitEvent=t=>{const e=this.fns.get(t);e&&e.forEach(i=>{i&&i()})},this.setValid=t=>{this.setState({valid:t}),t===!1&&(this.clearResult(),this.updateSidebar())},this.updateSidebar=()=>{this.emitEvent("changeClipSidebar"),this.emitEvent("updateTextAttribute"),this.emitEvent("changeAttributeSidebar")},this.exportData=()=>{var t,e;const i=(e=(t=this.videoRef)==null?void 0:t.duration)!=null?e:0;return[this.state.result.filter(r=>r.end!==null),{valid:this.state.valid,duration:i}]},this.exportCustomData=()=>({extraResult:this.state.extraResult}),this.updateSelectedSliceTimeStartByPer=t=>{var e,i;if(this.state.clipStatus===d.Clipping){b.info("\u622A\u53D6\u4E2D\u4E0D\u652F\u6301\u8C03\u6574\u5F00\u59CB\u65F6\u95F4");return}if(this.selectedSliceIndex>-1){const r=(i=(e=this.videoPlayer)==null?void 0:e.duration)!=null?i:0,{end:l,start:n,type:u}=this.state.result[this.selectedSliceIndex],a=P.withinRange(w(n,t),[0,J(u===D.Time?r:l,x)]);this.updateSelectedSliceTimeProperty(a,"start")}},this.updateSelectedSliceTimeEndByPer=t=>{var e,i;if(this.state.clipStatus===d.Clipping){b.info("\u622A\u53D6\u4E2D\u4E0D\u652F\u6301\u8C03\u6574\u7ED3\u675F\u65F6\u95F4");return}if(this.selectedSliceIndex>-1){const r=this.state.result[this.selectedSliceIndex],l=(i=(e=this.videoPlayer)==null?void 0:e.duration)!=null?i:0;if(r.type===D.Time){b.info("\u65F6\u95F4\u70B9\u4EC5\u652F\u6301\u8C03\u6574\u5F00\u59CB\u65F6\u95F4");return}const{end:n,start:u}=r,a=P.withinRange(w(n,t),[w(u,x),l]);this.updateSelectedSliceTimeProperty(a,"end")}},this.updateSelectedSliceTimeProperty=(t,e)=>{if(this.selectedSliceIndex>-1){const{result:i}=this.state;i[this.selectedSliceIndex][e]=t,this.setState({result:E.cloneDeep(i)}),this.updateSidebar()}},this.keyDownEvents=t=>{if(!$.hotkeyFilter(t))return;const e=t.target;switch(e&&(e==null?void 0:e.tag)==="INPUT"&&(e==null?void 0:e.type)==="radio"&&t.preventDefault(),t.key.toLocaleLowerCase()){case"x":this.toggleClipStatus();break;case"e":this.addTime();break;case"escape":this.cancelClipped();break;case"-":this.updateSelectedSliceTimeStartByPer(-x);break;case"=":this.updateSelectedSliceTimeStartByPer(x);break;case"[":this.updateSelectedSliceTimeEndByPer(-x);break;case"]":this.updateSelectedSliceTimeEndByPer(x);break}},this.setVideoError=(t,e,i)=>{if(t){const{clipStatus:r}=this.state;r===d.Clipping&&this.toggleClipStatus(i)}this.setState({videoError:t,loading:!1})},this.clearResult=()=>{this.setState({result:[],selectedID:"",textValue:""}),this.updateSidebar()},this.cancelClipped=()=>{const{result:t,selectedID:e,clipStatus:i}=this.state;if(i!==d.Clipping)return;const r=t.findIndex(l=>l.id===e);r>-1&&(t.splice(r,1),this.setState({result:t,selectedID:"",clipStatus:d.Stop}),this.updateSidebar())},this.toggleClipStatus=t=>{var e,i;if(typeof((e=this.props)==null?void 0:e.annotationBefore)=="function"){(i=this.props)==null||i.annotationBefore(()=>this.setClipResult(t));return}this.setClipResult(t)},this.setClipResult=t=>{var e,i,r,l,n,u,a;if(this.disabled)return;const{clipStatus:c,selectedAttribute:p}=this.state,o=c!==d.Clipping;let S=o?d.Clipping:d.Stop,{result:f,selectedID:m,textValue:C}=this.state;const g=E.cloneDeep(f),I=t||((e=this.videoPlayer)==null?void 0:e.currentTime),R=(i=this.videoPlayer)==null?void 0:i.duration;if(R===void 0||I===void 0)return;const N=B(I,2);if(o){const v=F(),y={};m=v;const _=((r=this.props.config)==null?void 0:r.customAttributeInput)===!0?"\u65E0\u5C5E\u6027":p;g.push({start:N,end:null,attribute:_,textAttribute:this.defaultTextAttribute,duration:R,id:v,type:D.Period,subAttribute:y,text:this.getSubAttributeShowText(y,(n=(l=this.props.config)==null?void 0:l.inputList)!=null?n:[])}),C=this.defaultTextAttribute}else{const v=g.findIndex(_=>_.id===m),y=g[v];y&&(I-y.start<A?(g.splice(v,1),b.info(`\u622A\u53D6\u7247\u6BB5\u4E0D\u80FD\u77ED\u4E8E${A}s`),S=d.Stop,m="",C=""):(g[v].end=B(I,2),(u=this.videoPlayer)==null||u.pause(),b.success(`\u5DF2\u622A\u53D6\u7247\u6BB5${f.length}`)))}const L={clipStatus:S,result:g,selectedID:m,textValue:C};((a=this.props.config)==null?void 0:a.customAttributeInput)&&o&&(L.selectedAttribute="\u65E0\u5C5E\u6027"),this.setState(L),this.updateSidebar()},this.addTime=()=>{var t,e,i,r,l,n;if(this.disabled)return;const{result:u,selectedAttribute:a,selectedID:c}=this.state,p=F(),o=E.cloneDeep(u),S=((t=this.videoPlayer)==null?void 0:t.currentTime)||0,f=((e=this.props.config)==null?void 0:e.customAttributeInput)?"\u65E0\u5C5E\u6027":a;o.push({start:S,end:S,attribute:f,textAttribute:this.defaultTextAttribute,id:p,type:D.Time,duration:(r=(i=this.videoPlayer)==null?void 0:i.duration)!=null?r:0,subAttribute:{}});const m={result:o,selectedID:p,textValue:this.defaultTextAttribute};((l=this.props.config)==null?void 0:l.customAttributeInput)&&(m.selectedAttribute="\u65E0\u5C5E\u6027");const C=o.find(g=>g.id===c);this.isClipping&&C?(delete m.selectedID,delete m.textValue,b.success(`\u5DF2\u622A\u53D6\u65F6\u95F4\u70B9${o.length-1}`)):(n=this.videoPlayer)==null||n.pause(),this.setState(m),this.updateSidebar()},this.updateCurrentTime=t=>{this.setState({currentTime:t})},this.contextToCancel=t=>{this.state.clipStatus===d.Stop&&(t.preventDefault(),this.setState({selectedID:""}),this.updateSidebar())},this.onTrackResize=(t,e,i)=>{var r,l;const{result:n}=this.state,u=n.find(a=>a.id===t);if(u){const a=u.duration,c=e==="left",p=c?"start":"end",o=c?-a*i:a*i,S=c?[0,Math.max(((r=u.end)!=null?r:0)-A,0)]:[u.start+A,a],f=P.withinRange(o+((l=u==null?void 0:u[p])!=null?l:0),S);u[p]=f,this.throttledUpdateTime(f)}this.setState({result:[...n]}),this.updateSidebar()},this.renderMediaContent=()=>{var t,e,i;const{pageForward:r,pageJump:l,pageBackward:n}=this.props,{result:u,videoError:a,valid:c,currentTime:p}=this.state;return T.createElement("div",{className:k.clipContainer},T.createElement(q,{imgIndex:this.props.imgIndex,imgList:this.props.imgList,pageBackward:n,pageForward:r,pageJump:l,valid:c,setVideoRef:o=>{this.videoPlayer=o},showVideoTrack:!a,onTrackResize:this.onTrackResize,drawLayerSlot:this.props.drawLayerSlot,footer:this.props.footer,dataLoaded:this.props.onVideoLoaded,toggleClipStatus:this.toggleClipStatus,addTime:this.addTime,updateCurrentTime:this.updateCurrentTime}),T.createElement(K,{key:(t=this.videoPlayer)==null?void 0:t.currentTime,result:u,currentTime:p,attributeList:this.props.config.attributeList,inputList:(i=(e=this.props.config)==null?void 0:e.inputList)!=null?i:[],extraStyle:{top:this.props.drawLayerSlot?40:0}}),this.isClipping&&T.createElement("i",{className:k.clipping,style:{backgroundImage:Q}}))},this.onSelectedTimeSlice=t=>{var e;this.isClipping||(this.setState({selectedID:t.id,selectedAttribute:t.attribute,textValue:t.textAttribute,currentTime:t.start}),this.updateSidebar(),(e=this.videoPlayer)==null||e.pause(),this.videoPlayer.currentTime=t.start)},this.removeTimeSlice=t=>{const{result:e}=this.state,i=this.state.selectedID===t.id?"":this.state.selectedID,r=e.findIndex(l=>l.id===t.id);r>-1&&(e.splice(r,1),this.setState({result:[...e],selectedID:i}),this.updateSidebar())},this.setResult=(t=!0,e=this.props)=>{var i,r;try{const{imgIndex:l,imgList:n}=e;if(!n[l])return;const a=V(n[l].result)[`step_${this.stepInfo().step}`],c=(a==null?void 0:a.result)||[],p=(a==null?void 0:a.extraResult)||{globalTag:{}},o=(r=(i=this.props.config)==null?void 0:i.inputList)!=null?r:[];c.forEach(f=>{f.text=this.getSubAttributeShowText(f.subAttribute,o)});const S=H(n[l].result||"[]");this.setState({result:c,loading:t,selectedID:"",textValue:"",selectedAttribute:"",clipStatus:d.Stop,valid:S,extraResult:p},()=>{this.updateSidebar(),S||b.info("\u65E0\u6548\u89C6\u9891\uFF0C\u8BF7\u8DF3\u8FC7")})}catch(l){console.error("\u6570\u636E\u89E3\u6790\u5931\u8D25"),this.setState({result:[],loading:!1,selectedID:"",textValue:"",selectedAttribute:"",valid:!0,extraResult:{globalTag:{}}},()=>{this.updateSidebar()})}},this.setDefaultAttribute=t=>{const{result:e,selectedID:i}=this.state,r=e.find(l=>l.id===i);r&&i&&(r.attribute=t),this.setState({selectedAttribute:t,result:[...e]}),this.updateSidebar()},this.setSubAttribute=(t,e)=>{var i,r;const{result:l,selectedID:n}=this.state;if(n){const u=l.find(a=>a.id===n);u&&(u.subAttribute||(u.subAttribute={}),u.subAttribute[t]=e,u.text=this.getSubAttributeShowText(u.subAttribute,(r=(i=this.props.config)==null?void 0:i.inputList)!=null?r:[]),this.setState({result:[...l]}),this.updateSidebar())}},this.textChange=t=>{const{result:e,selectedID:i}=this.state;if(this.setState({textValue:t}),i){const r=e.find(l=>l.id===i);r&&(r.textAttribute=t,this.setState({result:[...e]}),this.updateSidebar())}},this.setGlobalTag=(t,e)=>{const{extraResult:i}=this.state;this.setState({extraResult:M(U({},i),{globalTag:M(U({},i.globalTag||{}),{[t]:e})})})},this.getSubAttributeShowText=(t,e)=>{if(!t||(e==null?void 0:e.length)===0)return"";let i="";return z.getTagNameList(t,e).forEach(l=>{i+=`
2
- ${l.keyName}: ${l.value.join("\u3001")}`}),i},this.state={result:[],selectedAttribute:"",textValue:"",clipStatus:d.Stop,selectedID:"",loading:!1,videoError:!1,remainingTime:0,currentTime:0,configLoading:!1,valid:!0,extraResult:{globalTag:{}}}}get videoUrl(){var s;const{imgIndex:t,imgList:e}=this.props;return((s=e[t])==null?void 0:s.url)||""}get isClipping(){return this.state.clipStatus===d.Clipping}get resultJSON(){const{imgIndex:s,imgList:t}=this.props;return t.length===0||!t[s]?"[]":t[s].result}get disabled(){return!this.state.valid||this.state.videoError}get loading(){return this.state.loading||this.state.configLoading}get defaultTextAttribute(){return G.getTextAttribute(this.state.result,this.props.config.textCheckType)}get defaultAttribute(){return this.state.selectedAttribute}get selectedID(){return this.state.selectedID}get selectedSliceIndex(){return this.state.result.findIndex(s=>s.id===this.state.selectedID)}get exportContext(){return{selectedID:this.state.selectedID,result:this.state.result,clipStatus:this.state.clipStatus,videoPlayer:this.videoPlayer,attributeList:this.props.config.attributeList,onSelectedTimeSlice:this.onSelectedTimeSlice,removeTimeSlice:this.removeTimeSlice,updateSelectedSliceTimeProperty:this.updateSelectedSliceTimeProperty,extraResult:this.state.extraResult}}get valid(){return this.state.valid}get config(){var s;return V((s=this.props.stepInfo)==null?void 0:s.config)}get selectedText(){var s,t;return(t=(s=this.state.result)==null?void 0:s[this.selectedSliceIndex])==null?void 0:t.textAttribute}componentDidMount(){this.setState({loading:!1}),this.setResult(!1),this.props.onMounted(this),window.addEventListener("keydown",this.keyDownEvents)}componentWillUnmount(){this.props.onUnmounted(),window.removeEventListener("keydown",this.keyDownEvents)}shouldComponentUpdate(s,t){const e=s.imgIndex-this.props.imgIndex,i=s.step-this.props.step;return(e!==0||i!==0)&&(this.setResult(!0,s),i!==0&&this.setState({loading:!1})),!0}singleOn(s,t){this.fns.set(s,[t])}on(s,t){this.singleOn(s,t)}unbindAll(s){this.fns.delete(s)}render(){const{selectedID:s,result:t,clipStatus:e,selectedAttribute:i}=this.state;return T.createElement(W,{value:{videoPlayer:this.videoPlayer,result:t,selectedID:s,attributeList:this.props.config.attributeList,clipStatus:e,selectedAttribute:i,contextToCancel:this.contextToCancel}},this.renderMediaContent())}}export{it as default};
1
+ import{MathUtils as w,CommonToolUtils as $,uuid as B,TagUtils as z,AttributeUtils as G}from"@labelbee/lb-annotation";import{jsonParser as V}from"../../../utils/index.js";import{precisionAdd as R,precisionMinus as J,isImageValue as H}from"../../../utils/audio.js";import{message as b}from"antd";import E from"lodash";import T from"react";import k from"./index.module.scss.js";import{VideoClipToolContextProvider as W}from"./VideoClipToolContext.js";import{EClipStatus as d,ETimeSliceType as I,PER_SLICE_CHANGE as x,SLICE_MIN_TIME as A}from"./constant.js";import{VideoPlayer as q}from"../../videoPlayer/index.js";import K from"./components/videoTimeSlicesOverVideo/index.js";import Q from"../../../assets/annotation/video/icon_videoCutting.svg.js";import{decimalReserved as P}from"../../videoPlayer/utils.js";var X=Object.defineProperty,Y=Object.defineProperties,Z=Object.getOwnPropertyDescriptors,O=Object.getOwnPropertySymbols,tt=Object.prototype.hasOwnProperty,et=Object.prototype.propertyIsEnumerable,j=(h,s,t)=>s in h?X(h,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):h[s]=t,U=(h,s)=>{for(var t in s||(s={}))tt.call(s,t)&&j(h,t,s[t]);if(O)for(var t of O(s))et.call(s,t)&&j(h,t,s[t]);return h},M=(h,s)=>Y(h,Z(s));class it extends T.Component{constructor(s){super(s);this.fns=new Map,this.throttledUpdateTime=E.throttle(t=>{this.videoPlayer.currentTime=t},100,{trailing:!0}),this.stepInfo=()=>this.props.stepInfo,this.emitEvent=t=>{const e=this.fns.get(t);e&&e.forEach(i=>{i&&i()})},this.setValid=t=>{this.setState({valid:t}),t===!1&&(this.clearResult(),this.updateSidebar())},this.updateSidebar=()=>{this.emitEvent("changeClipSidebar"),this.emitEvent("updateTextAttribute"),this.emitEvent("changeAttributeSidebar")},this.exportData=()=>{var t,e;const i=(e=(t=this.videoRef)==null?void 0:t.duration)!=null?e:0;return[this.state.result.filter(r=>r.end!==null),{valid:this.state.valid,duration:i}]},this.exportCustomData=()=>({extraResult:this.state.extraResult}),this.updateSelectedSliceTimeStartByPer=t=>{var e,i;if(this.state.clipStatus===d.Clipping){b.info("\u622A\u53D6\u4E2D\u4E0D\u652F\u6301\u8C03\u6574\u5F00\u59CB\u65F6\u95F4");return}if(this.selectedSliceIndex>-1){const r=(i=(e=this.videoPlayer)==null?void 0:e.duration)!=null?i:0,{end:l,start:n,type:u}=this.state.result[this.selectedSliceIndex],a=w.withinRange(R(n,t),[0,J(u===I.Time?r:l,x)]);this.updateSelectedSliceTimeProperty(a,"start")}},this.updateSelectedSliceTimeEndByPer=t=>{var e,i;if(this.state.clipStatus===d.Clipping){b.info("\u622A\u53D6\u4E2D\u4E0D\u652F\u6301\u8C03\u6574\u7ED3\u675F\u65F6\u95F4");return}if(this.selectedSliceIndex>-1){const r=this.state.result[this.selectedSliceIndex],l=(i=(e=this.videoPlayer)==null?void 0:e.duration)!=null?i:0;if(r.type===I.Time){b.info("\u65F6\u95F4\u70B9\u4EC5\u652F\u6301\u8C03\u6574\u5F00\u59CB\u65F6\u95F4");return}const{end:n,start:u}=r,a=w.withinRange(R(n,t),[R(u,x),l]);this.updateSelectedSliceTimeProperty(a,"end")}},this.updateSelectedSliceTimeProperty=(t,e)=>{if(this.selectedSliceIndex>-1){const{result:i}=this.state;i[this.selectedSliceIndex][e]=t,this.setState({result:E.cloneDeep(i)}),this.updateSidebar()}},this.keyDownEvents=t=>{if(!$.hotkeyFilter(t))return;const e=t.target;switch(e&&(e==null?void 0:e.tag)==="INPUT"&&(e==null?void 0:e.type)==="radio"&&t.preventDefault(),t.key.toLocaleLowerCase()){case"x":this.toggleClipStatus();break;case"e":this.addTime();break;case"escape":this.cancelClipped();break;case"-":this.updateSelectedSliceTimeStartByPer(-x);break;case"=":this.updateSelectedSliceTimeStartByPer(x);break;case"[":this.updateSelectedSliceTimeEndByPer(-x);break;case"]":this.updateSelectedSliceTimeEndByPer(x);break}},this.setVideoError=(t,e,i)=>{if(t){const{clipStatus:r}=this.state;r===d.Clipping&&this.toggleClipStatus(i)}this.setState({videoError:t,loading:!1})},this.clearResult=()=>{this.setState({result:[],selectedID:"",textValue:""}),this.updateSidebar()},this.cancelClipped=()=>{const{result:t,selectedID:e,clipStatus:i}=this.state;if(i!==d.Clipping)return;const r=t.findIndex(l=>l.id===e);r>-1&&(t.splice(r,1),this.setState({result:t,selectedID:"",clipStatus:d.Stop}),this.updateSidebar())},this.toggleClipStatus=t=>{var e,i;if(typeof((e=this.props)==null?void 0:e.annotationBefore)=="function"){(i=this.props)==null||i.annotationBefore(()=>this.setClipResult(t));return}this.setClipResult(t)},this.setClipResult=t=>{var e,i,r,l,n,u,a;if(this.disabled)return;const{clipStatus:c,selectedAttribute:p}=this.state,o=c!==d.Clipping;let f=o?d.Clipping:d.Stop,{result:S,selectedID:m,textValue:y}=this.state;const g=E.cloneDeep(S),_=t||((e=this.videoPlayer)==null?void 0:e.currentTime),L=(i=this.videoPlayer)==null?void 0:i.duration;if(L===void 0||_===void 0)return;const N=P(_,2);if(o){const v=B(),C={};m=v;const D=((r=this.props.config)==null?void 0:r.customAttributeInput)===!0?"\u65E0\u5C5E\u6027":p;g.push({start:N,end:null,attribute:D,textAttribute:this.defaultTextAttribute,duration:L,id:v,type:I.Period,subAttribute:C,text:this.getSubAttributeShowText(C,(n=(l=this.props.config)==null?void 0:l.inputList)!=null?n:[])}),y=this.defaultTextAttribute}else{const v=g.findIndex(D=>D.id===m),C=g[v];C&&(_-C.start<A?(g.splice(v,1),b.info(`\u622A\u53D6\u7247\u6BB5\u4E0D\u80FD\u77ED\u4E8E${A}s`),f=d.Stop,m="",y=""):(g[v].end=P(_,2),(u=this.videoPlayer)==null||u.pause(),b.success(`\u5DF2\u622A\u53D6\u7247\u6BB5${S.length}`)))}const F={clipStatus:f,result:g,selectedID:m,textValue:y};((a=this.props.config)==null?void 0:a.customAttributeInput)&&o&&(F.selectedAttribute="\u65E0\u5C5E\u6027"),this.setState(F),this.updateSidebar()},this.addTime=()=>{var t,e,i,r,l,n;if(this.disabled)return;const{result:u,selectedAttribute:a,selectedID:c}=this.state,p=B(),o=E.cloneDeep(u),f=((t=this.videoPlayer)==null?void 0:t.currentTime)||0,S=((e=this.props.config)==null?void 0:e.customAttributeInput)?"\u65E0\u5C5E\u6027":a;o.push({start:f,end:f,attribute:S,textAttribute:this.defaultTextAttribute,id:p,type:I.Time,duration:(r=(i=this.videoPlayer)==null?void 0:i.duration)!=null?r:0,subAttribute:{}});const m={result:o,selectedID:p,textValue:this.defaultTextAttribute};((l=this.props.config)==null?void 0:l.customAttributeInput)&&(m.selectedAttribute="\u65E0\u5C5E\u6027");const y=o.find(g=>g.id===c);this.isClipping&&y?(delete m.selectedID,delete m.textValue,b.success(`\u5DF2\u622A\u53D6\u65F6\u95F4\u70B9${o.length-1}`)):(n=this.videoPlayer)==null||n.pause(),this.setState(m),this.updateSidebar()},this.updateCurrentTime=t=>{this.setState({currentTime:t}),this.selectTimeSliceByTime(t)},this.findTimeSliceByTime=t=>{const e=P(t,2);return this.state.result.find(i=>i.end===null?!1:i.type===I.Time?P(i.start,2)===e:i.start<=e&&e<i.end)},this.selectTimeSliceByTime=t=>{if(this.isClipping)return;const e=this.findTimeSliceByTime(t);if(e){if(e.id===this.state.selectedID)return;this.setState({selectedID:e.id,selectedAttribute:e.attribute,textValue:e.textAttribute})}else{if(!this.state.selectedID)return;this.setState({selectedID:""})}this.updateSidebar()},this.contextToCancel=t=>{this.state.clipStatus===d.Stop&&(t.preventDefault(),this.setState({selectedID:""}),this.updateSidebar())},this.onTrackResize=(t,e,i)=>{var r,l;const{result:n}=this.state,u=n.find(a=>a.id===t);if(u){const a=u.duration,c=e==="left",p=c?"start":"end",o=c?-a*i:a*i,f=c?[0,Math.max(((r=u.end)!=null?r:0)-A,0)]:[u.start+A,a],S=w.withinRange(o+((l=u==null?void 0:u[p])!=null?l:0),f);u[p]=S,this.throttledUpdateTime(S)}this.setState({result:[...n]}),this.updateSidebar()},this.renderMediaContent=()=>{var t,e,i;const{pageForward:r,pageJump:l,pageBackward:n}=this.props,{result:u,videoError:a,valid:c,currentTime:p}=this.state;return T.createElement("div",{className:k.clipContainer},T.createElement(q,{imgIndex:this.props.imgIndex,imgList:this.props.imgList,pageBackward:n,pageForward:r,pageJump:l,valid:c,setVideoRef:o=>{this.videoPlayer=o},showVideoTrack:!a,onTrackResize:this.onTrackResize,drawLayerSlot:this.props.drawLayerSlot,footer:this.props.footer,dataLoaded:this.props.onVideoLoaded,toggleClipStatus:this.toggleClipStatus,addTime:this.addTime,updateCurrentTime:this.updateCurrentTime}),T.createElement(K,{key:(t=this.videoPlayer)==null?void 0:t.currentTime,result:u,currentTime:p,attributeList:this.props.config.attributeList,inputList:(i=(e=this.props.config)==null?void 0:e.inputList)!=null?i:[],extraStyle:{top:this.props.drawLayerSlot?40:0}}),this.isClipping&&T.createElement("i",{className:k.clipping,style:{backgroundImage:Q}}))},this.onSelectedTimeSlice=t=>{var e;this.isClipping||(this.setState({selectedID:t.id,selectedAttribute:t.attribute,textValue:t.textAttribute,currentTime:t.start}),this.updateSidebar(),(e=this.videoPlayer)==null||e.pause(),this.videoPlayer.currentTime=t.start)},this.removeTimeSlice=t=>{const{result:e}=this.state,i=this.state.selectedID===t.id?"":this.state.selectedID,r=e.findIndex(l=>l.id===t.id);r>-1&&(e.splice(r,1),this.setState({result:[...e],selectedID:i}),this.updateSidebar())},this.setResult=(t=!0,e=this.props)=>{var i,r;try{const{imgIndex:l,imgList:n}=e;if(!n[l])return;const a=V(n[l].result)[`step_${this.stepInfo().step}`],c=(a==null?void 0:a.result)||[],p=(a==null?void 0:a.extraResult)||{globalTag:{}},o=(r=(i=this.props.config)==null?void 0:i.inputList)!=null?r:[];c.forEach(S=>{S.text=this.getSubAttributeShowText(S.subAttribute,o)});const f=H(n[l].result||"[]");this.setState({result:c,loading:t,selectedID:"",textValue:"",selectedAttribute:"",clipStatus:d.Stop,valid:f,extraResult:p},()=>{this.updateSidebar(),f||b.info("\u65E0\u6548\u89C6\u9891\uFF0C\u8BF7\u8DF3\u8FC7")})}catch(l){console.error("\u6570\u636E\u89E3\u6790\u5931\u8D25"),this.setState({result:[],loading:!1,selectedID:"",textValue:"",selectedAttribute:"",valid:!0,extraResult:{globalTag:{}}},()=>{this.updateSidebar()})}},this.setDefaultAttribute=t=>{const{result:e,selectedID:i}=this.state,r=e.find(l=>l.id===i);r&&i&&(r.attribute=t),this.setState({selectedAttribute:t,result:[...e]}),this.updateSidebar()},this.setSubAttribute=(t,e)=>{var i,r;const{result:l,selectedID:n}=this.state;if(n){const u=l.find(a=>a.id===n);u&&(u.subAttribute||(u.subAttribute={}),u.subAttribute[t]=e,u.text=this.getSubAttributeShowText(u.subAttribute,(r=(i=this.props.config)==null?void 0:i.inputList)!=null?r:[]),this.setState({result:[...l]}),this.updateSidebar())}},this.textChange=t=>{const{result:e,selectedID:i}=this.state;if(this.setState({textValue:t}),i){const r=e.find(l=>l.id===i);r&&(r.textAttribute=t,this.setState({result:[...e]}),this.updateSidebar())}},this.setGlobalTag=(t,e)=>{const{extraResult:i}=this.state;this.setState({extraResult:M(U({},i),{globalTag:M(U({},i.globalTag||{}),{[t]:e})})})},this.getSubAttributeShowText=(t,e)=>{if(!t||(e==null?void 0:e.length)===0)return"";let i="";return z.getTagNameList(t,e).forEach(l=>{i+=`
2
+ ${l.keyName}: ${l.value.join("\u3001")}`}),i},this.state={result:[],selectedAttribute:"",textValue:"",clipStatus:d.Stop,selectedID:"",loading:!1,videoError:!1,remainingTime:0,currentTime:0,configLoading:!1,valid:!0,extraResult:{globalTag:{}}}}get videoUrl(){var s;const{imgIndex:t,imgList:e}=this.props;return((s=e[t])==null?void 0:s.url)||""}get isClipping(){return this.state.clipStatus===d.Clipping}get resultJSON(){const{imgIndex:s,imgList:t}=this.props;return t.length===0||!t[s]?"[]":t[s].result}get disabled(){return!this.state.valid||this.state.videoError}get loading(){return this.state.loading||this.state.configLoading}get defaultTextAttribute(){return G.getTextAttribute(this.state.result,this.props.config.textCheckType)}get defaultAttribute(){return this.state.selectedAttribute}get selectedID(){return this.state.selectedID}get selectedSliceIndex(){return this.state.result.findIndex(s=>s.id===this.state.selectedID)}get exportContext(){return{selectedID:this.state.selectedID,result:this.state.result,clipStatus:this.state.clipStatus,videoPlayer:this.videoPlayer,attributeList:this.props.config.attributeList,onSelectedTimeSlice:this.onSelectedTimeSlice,removeTimeSlice:this.removeTimeSlice,updateSelectedSliceTimeProperty:this.updateSelectedSliceTimeProperty,extraResult:this.state.extraResult}}get valid(){return this.state.valid}get config(){var s;return V((s=this.props.stepInfo)==null?void 0:s.config)}get selectedText(){var s,t;return(t=(s=this.state.result)==null?void 0:s[this.selectedSliceIndex])==null?void 0:t.textAttribute}componentDidMount(){this.setState({loading:!1}),this.setResult(!1),this.props.onMounted(this),window.addEventListener("keydown",this.keyDownEvents)}componentWillUnmount(){this.props.onUnmounted(),window.removeEventListener("keydown",this.keyDownEvents)}shouldComponentUpdate(s,t){const e=s.imgIndex-this.props.imgIndex,i=s.step-this.props.step;return(e!==0||i!==0)&&(this.setResult(!0,s),i!==0&&this.setState({loading:!1})),!0}singleOn(s,t){this.fns.set(s,[t])}on(s,t){this.singleOn(s,t)}unbindAll(s){this.fns.delete(s)}render(){const{selectedID:s,result:t,clipStatus:e,selectedAttribute:i}=this.state;return T.createElement(W,{value:{videoPlayer:this.videoPlayer,result:t,selectedID:s,attributeList:this.props.config.attributeList,clipStatus:e,selectedAttribute:i,contextToCancel:this.contextToCancel,selectTimeSliceByTime:this.selectTimeSliceByTime}},this.renderMediaContent())}}export{it as default};
@@ -1 +1 @@
1
- import o from"react";import A from"./components/controller/index.js";import j from"../videoAnnotate/videoClipTool/components/videoTrack/index.js";import{getClassName as l}from"../../utils/dom.js";import{cKeyCode as M}from"@labelbee/lb-annotation";import{decimalReserved as d}from"./utils.js";import z from"../fileException/index.js";const s=M.default,c=o.createContext({isPlay:!1,playPause:()=>{},updateNextPlaybackRate:()=>{},playbackRate:1,currentTime:0,duration:0,buffered:0,setCurrentTime:()=>{},imgList:[],imgIndex:-1,pageBackward:()=>{},pageJump:f=>{},pageForward:()=>{},addTime:()=>{},toggleClipStatus:()=>{}}),U=50,p=.1,n=[.1,.2,.3,.4,.5,1,1.5,2,4,6,8,16];class v extends o.Component{constructor(a){super(a);this.changePlaybackPate=e=>{this.videoElm&&(this.videoElm.playbackRate=e,this.setState({playbackRate:e}))},this.playPause=()=>{var e,t,i;((e=this.videoElm)==null?void 0:e.paused)?(t=this.videoElm)==null||t.play():(i=this.videoElm)==null||i.pause()},this.updateNextPlaybackRate=(e=!0)=>{const t=n.findIndex(r=>r===this.state.playbackRate);let i=e?Math.min(t+1,n.length-1):Math.max(t-1,0);this.changePlaybackPate(n[i])},this.fastForward=()=>{this.videoElm&&this.setCurrentTime(this.videoElm.currentTime+p)},this.rewind=()=>{this.videoElm&&this.setCurrentTime(this.videoElm.currentTime-p)},this.keydown=e=>{e.keyCode===s.Space&&(e.preventDefault(),this.playPause()),e.keyCode===s.Up&&(e.preventDefault(),this.updateNextPlaybackRate()),e.keyCode===s.Down&&(e.preventDefault(),this.updateNextPlaybackRate(!1)),e.keyCode===s.Left&&(e.preventDefault(),this.rewind()),e.keyCode===s.Right&&(e.preventDefault(),this.fastForward())},this.onPlay=()=>{this.setState({isPlay:!0},this.onVideoStart)},this.onPause=()=>{this.onVideoStopped()},this.onTimeUpdate=()=>{var e;this.videoElm&&this.setState({currentTime:d((e=this.videoElm)==null?void 0:e.currentTime,1)})},this.onVideoStopped=()=>{this.setState({isPlay:!1}),this.timeInterval&&(clearInterval(this.timeInterval),this.timeInterval=void 0),this.videoElm&&this.setCurrentTime(this.videoElm.currentTime)},this.onVideoStart=()=>{this.timeInterval=window.setInterval(()=>{var e,t,i;if(this.videoElm)try{if(((e=this.videoElm)==null?void 0:e.buffered.length)>0){const r=(t=this.videoElm)==null?void 0:t.buffered.end(0);this.setState({currentTime:d((i=this.videoElm)==null?void 0:i.currentTime,1),buffered:r})}}catch(r){console.error(r)}},U)},this.resetVideoData=()=>{this.setState({currentTime:0,buffered:0,error:!1,isPlay:!1}),this.videoElm&&(this.videoElm.playbackRate=this.state.playbackRate),this.onVideoStopped()},this.setDuration=()=>{var e,t,i;if(this.videoElm){const r=d((e=this.videoElm)==null?void 0:e.duration,1);(i=(t=this.props).dataLoaded)==null||i.call(t),this.setState({duration:r})}},this.setCurrentTime=e=>{var t,i;this.videoElm&&(this.videoElm.currentTime=e,this.setState({currentTime:e}),(i=(t=this.props).updateCurrentTime)==null||i.call(t,e))},this.reload=()=>{var e;(e=this.videoElm)==null||e.load()},this.onError=()=>{var e,t;(t=(e=this.props).dataLoaded)==null||t.call(e,!0),this.resetVideoData(),this.setState({error:!0})},this.state={playbackRate:1,currentTime:0,isPlay:!1,duration:0,buffered:0,error:!1},this.videoRef=o.createRef()}get videoElm(){var a;return(a=this.videoRef)==null?void 0:a.current}get videoSrc(){var a,e;const{imgIndex:t,imgList:i}=this.props;return t>-1&&(e=(a=i[t])==null?void 0:a.url)!=null?e:""}componentDidMount(){var a,e;window.addEventListener("keydown",this.keydown),((a=this.videoRef)==null?void 0:a.current)&&this.props.setVideoRef&&this.props.setVideoRef((e=this.videoRef)==null?void 0:e.current)}componentWillUnmount(){window.removeEventListener("keydown",this.keydown)}render(){const{isPlay:a,playbackRate:e,currentTime:t,duration:i,buffered:r,error:E}=this.state,{imgList:y,imgIndex:k,pageBackward:g,pageJump:T,pageForward:R,valid:P,footer:b,drawLayerSlot:h}=this.props,C=isNaN(i)?0:Math.max(d(i,1)-t,0),{playPause:m,updateNextPlaybackRate:_,onPause:w,onPlay:x,onTimeUpdate:S,resetVideoData:V,setDuration:D,setCurrentTime:I,onError:L,videoRef:N,videoSrc:F}=this;return o.createElement(c.Provider,{value:{videoRef:this.videoRef,addTime:this.props.addTime,toggleClipStatus:this.props.toggleClipStatus,isPlay:a,playPause:m,updateNextPlaybackRate:_,playbackRate:e,currentTime:t,duration:i,buffered:r,setCurrentTime:I,imgIndex:k,imgList:y,pageBackward:g,pageJump:T,pageForward:R}},o.createElement(o.Fragment,null,h==null?void 0:h({currentTime:t,remainingTime:C,zoom:1,currentPos:{x:0,y:0}}),o.createElement("div",{className:l("video-wrapper")},o.createElement("div",{className:l("video-container")},o.createElement("video",{ref:N,className:l(this.props.showVideoTrack?"video-track":"video"),src:F,onPause:w,onPlay:x,onTimeUpdate:S,onLoadedMetadata:V,onError:L,onDurationChange:D,width:"100%",height:"100%",onClick:m}),this.props.showVideoTrack&&o.createElement(j,{currentTime:t,onTrackResize:this.props.onTrackResize,onTrackResizeStart:()=>{var u;(u=this.videoElm)==null||u.pause()},readonly:!1}),o.createElement(z,{fileType:"video",errorProps:{reloadImage:this.reload,backgroundColor:"#e2e2e2",ignoreOffsetY:!0,isError:E},invalidProps:{isValid:P}})),o.createElement(A,{footer:b}))))}}export{v as VideoPlayer,c as VideoPlayerCtx,v as default};
1
+ import o from"react";import A from"./components/controller/index.js";import j from"../videoAnnotate/videoClipTool/components/videoTrack/index.js";import{getClassName as h}from"../../utils/dom.js";import{cKeyCode as M}from"@labelbee/lb-annotation";import{decimalReserved as n}from"./utils.js";import z from"../fileException/index.js";const l=M.default,v=o.createContext({isPlay:!1,playPause:()=>{},updateNextPlaybackRate:()=>{},playbackRate:1,currentTime:0,duration:0,buffered:0,setCurrentTime:()=>{},imgList:[],imgIndex:-1,pageBackward:()=>{},pageJump:y=>{},pageForward:()=>{},addTime:()=>{},toggleClipStatus:()=>{}}),U=300,f=.1,m=[.1,.2,.3,.4,.5,1,1.5,2,4,6,8,16];class E extends o.Component{constructor(a){super(a);this.changePlaybackPate=e=>{this.videoElm&&(this.videoElm.playbackRate=e,this.setState({playbackRate:e}))},this.playPause=()=>{var e,t,i;((e=this.videoElm)==null?void 0:e.paused)?(t=this.videoElm)==null||t.play():(i=this.videoElm)==null||i.pause()},this.updateNextPlaybackRate=(e=!0)=>{const t=m.findIndex(r=>r===this.state.playbackRate);let i=e?Math.min(t+1,m.length-1):Math.max(t-1,0);this.changePlaybackPate(m[i])},this.fastForward=()=>{this.videoElm&&this.setCurrentTime(this.videoElm.currentTime+f)},this.rewind=()=>{this.videoElm&&this.setCurrentTime(this.videoElm.currentTime-f)},this.keydown=e=>{e.keyCode===l.Space&&(e.preventDefault(),this.playPause()),e.keyCode===l.Up&&(e.preventDefault(),this.updateNextPlaybackRate()),e.keyCode===l.Down&&(e.preventDefault(),this.updateNextPlaybackRate(!1)),e.keyCode===l.Left&&(e.preventDefault(),this.rewind()),e.keyCode===l.Right&&(e.preventDefault(),this.fastForward())},this.onPlay=()=>{this.setState({isPlay:!0},this.onVideoStart)},this.onPause=()=>{this.onVideoStopped()},this.onTimeUpdate=()=>{var e;this.videoElm&&this.setState({currentTime:n((e=this.videoElm)==null?void 0:e.currentTime,1)})},this.onVideoStopped=()=>{this.setState({isPlay:!1}),this.timeInterval&&(clearInterval(this.timeInterval),this.timeInterval=void 0),this.videoElm&&this.setCurrentTime(this.videoElm.currentTime)},this.onVideoStart=()=>{this.timeInterval=window.setInterval(()=>{var e,t,i,r,d;if(this.videoElm)try{if(((e=this.videoElm)==null?void 0:e.buffered.length)>0){const s=(t=this.videoElm)==null?void 0:t.buffered.end(0);this.setState({buffered:s})}(d=(r=this.props).updateCurrentTime)==null||d.call(r,n((i=this.videoElm)==null?void 0:i.currentTime,1))}catch(s){console.error(s)}},U)},this.resetVideoData=()=>{this.setState({currentTime:0,buffered:0,error:!1,isPlay:!1}),this.videoElm&&(this.videoElm.playbackRate=this.state.playbackRate),this.onVideoStopped()},this.setDuration=()=>{var e,t,i;if(this.videoElm){const r=n((e=this.videoElm)==null?void 0:e.duration,1);(i=(t=this.props).dataLoaded)==null||i.call(t),this.setState({duration:r})}},this.setCurrentTime=e=>{var t,i;this.videoElm&&(this.videoElm.currentTime=e,this.setState({currentTime:e}),(i=(t=this.props).updateCurrentTime)==null||i.call(t,e))},this.reload=()=>{var e;(e=this.videoElm)==null||e.load()},this.onError=()=>{var e,t;(t=(e=this.props).dataLoaded)==null||t.call(e,!0),this.resetVideoData(),this.setState({error:!0})},this.state={playbackRate:1,currentTime:0,isPlay:!1,duration:0,buffered:0,error:!1},this.videoRef=o.createRef()}get videoElm(){var a;return(a=this.videoRef)==null?void 0:a.current}get videoSrc(){var a,e;const{imgIndex:t,imgList:i}=this.props;return t>-1&&(e=(a=i[t])==null?void 0:a.url)!=null?e:""}componentDidMount(){var a,e;window.addEventListener("keydown",this.keydown),((a=this.videoRef)==null?void 0:a.current)&&this.props.setVideoRef&&this.props.setVideoRef((e=this.videoRef)==null?void 0:e.current)}componentWillUnmount(){window.removeEventListener("keydown",this.keydown)}render(){const{isPlay:a,playbackRate:e,currentTime:t,duration:i,buffered:r,error:d}=this.state,{imgList:s,imgIndex:k,pageBackward:g,pageJump:T,pageForward:R,valid:P,footer:b,drawLayerSlot:u}=this.props,C=isNaN(i)?0:Math.max(n(i,1)-t,0),{playPause:c,updateNextPlaybackRate:_,onPause:w,onPlay:x,onTimeUpdate:S,resetVideoData:V,setDuration:D,setCurrentTime:I,onError:L,videoRef:N,videoSrc:F}=this;return o.createElement(v.Provider,{value:{videoRef:this.videoRef,addTime:this.props.addTime,toggleClipStatus:this.props.toggleClipStatus,isPlay:a,playPause:c,updateNextPlaybackRate:_,playbackRate:e,currentTime:t,duration:i,buffered:r,setCurrentTime:I,imgIndex:k,imgList:s,pageBackward:g,pageJump:T,pageForward:R}},o.createElement(o.Fragment,null,u==null?void 0:u({currentTime:t,remainingTime:C,zoom:1,currentPos:{x:0,y:0}}),o.createElement("div",{className:h("video-wrapper")},o.createElement("div",{className:h("video-container")},o.createElement("video",{ref:N,className:h(this.props.showVideoTrack?"video-track":"video"),src:F,onPause:w,onPlay:x,onTimeUpdate:S,onLoadedMetadata:V,onError:L,onDurationChange:D,width:"100%",height:"100%",onClick:c}),this.props.showVideoTrack&&o.createElement(j,{currentTime:t,onTrackResize:this.props.onTrackResize,onTrackResizeStart:()=>{var p;(p=this.videoElm)==null||p.pause()},readonly:!1}),o.createElement(z,{fileType:"video",errorProps:{reloadImage:this.reload,backgroundColor:"#e2e2e2",ignoreOffsetY:!0,isError:d},invalidProps:{isValid:P}})),o.createElement(A,{footer:b}))))}}export{E as VideoPlayer,v as VideoPlayerCtx,E as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@labelbee/lb-components",
3
- "version": "1.24.0-alpha.58",
3
+ "version": "1.24.0-alpha.59",
4
4
  "description": "Provide a complete library of annotation components",
5
5
  "main": "./dist/index.js",
6
6
  "es": "./es/index.js",