@labelbee/lb-components 1.5.0 → 1.6.0-alpha.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.
Files changed (41) hide show
  1. package/dist/components/customResizeHook/index.js +1 -1
  2. package/dist/components/videoPlayer/components/controller/index.js +1 -1
  3. package/dist/components/videoPlayer/index.js +1 -1
  4. package/dist/components/videoPlayer/utils.js +1 -1
  5. package/dist/data/enums/ToolType.js +1 -1
  6. package/dist/index.js +1 -1
  7. package/dist/store/annotation/actionCreators.js +1 -1
  8. package/dist/types/App.d.ts +2 -1
  9. package/dist/types/data/enums/ToolType.d.ts +3 -1
  10. package/dist/types/views/MainView/annotationOperation/index.d.ts +1 -1
  11. package/dist/views/MainView/annotationOperation/index.js +1 -1
  12. package/dist/views/MainView/sidebar/SwitchAttributeList/index.js +1 -1
  13. package/dist/views/MainView/toolFooter/ZoomController/ZoomLevel/index.js +1 -1
  14. package/es/App.js.map +1 -1
  15. package/es/components/customResizeHook/index.js +1 -1
  16. package/es/components/customResizeHook/index.js.map +1 -1
  17. package/es/components/pointCloudView/PointCloud3DView.js +1 -0
  18. package/es/components/pointCloudView/PointCloudLayout.js +1 -0
  19. package/es/components/pointCloudView/PointCloudTopView.js +1 -0
  20. package/es/components/pointCloudView/index.js +1 -0
  21. package/es/components/videoPlayer/components/controller/index.js +1 -1
  22. package/es/components/videoPlayer/components/controller/index.js.map +1 -1
  23. package/es/components/videoPlayer/index.js +1 -1
  24. package/es/components/videoPlayer/index.js.map +1 -1
  25. package/es/components/videoPlayer/utils.js +1 -1
  26. package/es/components/videoPlayer/utils.js.map +1 -1
  27. package/es/data/enums/ToolType.js +1 -1
  28. package/es/data/enums/ToolType.js.map +1 -1
  29. package/es/hooks/useSize.js.map +1 -1
  30. package/es/index.js +1 -1
  31. package/es/index.js.map +1 -1
  32. package/es/store/annotation/actionCreators.js +1 -1
  33. package/es/store/annotation/actionCreators.js.map +1 -1
  34. package/es/utils/ToolUtils.js +1 -0
  35. package/es/views/MainView/annotationOperation/index.js +1 -1
  36. package/es/views/MainView/annotationOperation/index.js.map +1 -1
  37. package/es/views/MainView/sidebar/SwitchAttributeList/index.js +1 -1
  38. package/es/views/MainView/sidebar/SwitchAttributeList/index.js.map +1 -1
  39. package/es/views/MainView/toolFooter/ZoomController/ZoomLevel/index.js +1 -1
  40. package/es/views/MainView/toolFooter/ZoomController/ZoomLevel/index.js.map +1 -1
  41. package/package.json +9 -9
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var AnnotationSize=require("../../data/enums/AnnotationSize.js"),lbAnnotation=require("@labelbee/lb-annotation"),React=require("react"),reactRedux=require("react-redux"),actionCreators=require("../../store/annotation/actionCreators.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React);const EKeyCode=lbAnnotation.cKeyCode.default,viewportContext=React__default.default.createContext({width:window.innerWidth,height:window.innerHeight}),ViewportProviderComponent=e=>{const{children:a,dispatch:o}=e,[n]=React.useState(window.innerWidth),[i]=React.useState(window.innerHeight),r=t=>{!lbAnnotation.toolUtils.hotkeyFilter(t)||(t.keyCode===EKeyCode.A&&o(actionCreators.PageBackward()),t.keyCode===EKeyCode.D&&o(actionCreators.PageForward()),t.keyCode===EKeyCode.R&&o(actionCreators.UpdateRotate()))};React.useEffect(()=>(window.addEventListener("keydown",r),()=>{window.removeEventListener("keydown",r)}),[]);const d=React.useMemo(()=>({width:n,height:i}),[n,i]);return React__default.default.createElement(viewportContext.Provider,{value:d},a)},ViewportProvider=reactRedux.connect(e=>({annotation:e.annotation}))(ViewportProviderComponent),getFormatSize=(e,a=!1,o=!1)=>{const{width:n,height:i}=e,r=AnnotationSize.headerHeight+AnnotationSize.footerHeight,d=o?40+r+40:r,t=a?AnnotationSize.editStepWidth+AnnotationSize.sidebarWidth:AnnotationSize.sidebarWidth;return{width:n-t,height:i-d}};exports.ViewportProvider=ViewportProvider,exports.ViewportProviderComponent=ViewportProviderComponent,exports.getFormatSize=getFormatSize,exports.viewportContext=viewportContext;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var AnnotationSize=require("../../data/enums/AnnotationSize.js"),lbAnnotation=require("@labelbee/lb-annotation"),React=require("react"),reactRedux=require("react-redux"),actionCreators=require("../../store/annotation/actionCreators.js"),antd=require("antd");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React);const EKeyCode=lbAnnotation.cKeyCode.default,viewportContext=React__default.default.createContext({width:window.innerWidth,height:window.innerHeight}),ViewportProviderComponent=e=>{const{children:a,dispatch:n}=e,[r]=React.useState(window.innerWidth),[i]=React.useState(window.innerHeight),o=t=>{var s;if(!!lbAnnotation.toolUtils.hotkeyFilter(t)&&(t.keyCode===EKeyCode.A&&n(actionCreators.PageBackward()),t.keyCode===EKeyCode.D&&n(actionCreators.PageForward()),t.keyCode===EKeyCode.R&&n(actionCreators.UpdateRotate()),t.shiftKey===!0&&t.ctrlKey===!0&&t.altKey===!0&&t.keyCode===EKeyCode.C)){antd.message.success("DEVELOPMENT TESTING - Switch Last Two Canvas");const c=(s=e.annotation)==null?void 0:s.annotationEngine.switchLastTwoCanvas();if(!c)return;n(actionCreators.UpdateToolInstance(c))}};React.useEffect(()=>(window.addEventListener("keydown",o),()=>{window.removeEventListener("keydown",o)}),[e.annotation.annotationEngine]);const d=React.useMemo(()=>({width:r,height:i}),[r,i]);return React__default.default.createElement(viewportContext.Provider,{value:d},a)},ViewportProvider=reactRedux.connect(e=>({annotation:e.annotation}))(ViewportProviderComponent),getFormatSize=(e,a=!1,n=!1)=>{const{width:r,height:i}=e,o=AnnotationSize.headerHeight+AnnotationSize.footerHeight,d=n?40+o+40:o,t=a?AnnotationSize.editStepWidth+AnnotationSize.sidebarWidth:AnnotationSize.sidebarWidth;return{width:r-t,height:i-d}};exports.ViewportProvider=ViewportProvider,exports.ViewportProviderComponent=ViewportProviderComponent,exports.getFormatSize=getFormatSize,exports.viewportContext=viewportContext;
@@ -1 +1 @@
1
- "use strict";var React=require("react"),dom=require("../../../../utils/dom.js"),icons=require("@ant-design/icons"),index=require("../../index.js"),Pagination=require("../../../../views/MainView/toolFooter/Pagination.js"),icon_keyboard_h=require("../../../../assets/annotation/video/icon_keyboard_h.svg.js"),index$1=require("../../../../views/MainView/toolFooter/FooterTips/ToolHotKey/index.js"),reactI18next=require("react-i18next"),utils=require("../../utils.js"),lbAnnotation=require("@labelbee/lb-annotation");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React);const{EVideoToolName}=lbAnnotation.cTool,videoTimeFormat=e=>{const t=Math.floor(e/60),a=~~(e%60).toFixed(),o=(e*10).toString().split("").pop(),l=r=>r<10?`0${r}`:r;return`${l(t)}:${l(a)}:${o}`},VideoProgress=()=>{const{currentTime:e,duration:t,buffered:a,setCurrentTime:o}=React__default.default.useContext(index.VideoPlayerCtx),l=React__default.default.useRef(null),r=`${utils.decimalReserved(a/t*100,1)}%`,n=`${utils.decimalReserved(e/t*100,1)}%`,i=s=>{if(l.current){const d=s.clientX,c=l.current.clientWidth,u=utils.decimalReserved(d/c*t,1);o(u)}};return React__default.default.createElement("div",{className:dom.getClassName("video-progress"),ref:l,onClick:s=>{s.stopPropagation(),s.nativeEvent.stopImmediatePropagation(),i(s)}},React__default.default.createElement("div",{className:dom.getClassName("video-slider")},React__default.default.createElement("div",{className:dom.getClassName("video-slider","played"),style:{width:n}}),React__default.default.createElement("div",{className:dom.getClassName("video-slider","loaded"),style:{width:r}}),React__default.default.createElement("div",{className:dom.getClassName("video-slider","played"),style:{width:n}})),React__default.default.createElement("div",{className:dom.getClassName("video-slider-bar"),style:{left:n}}))},VideoSpeedButton=()=>{const{updateNextPlaybackRate:e,playbackRate:t}=React__default.default.useContext(index.VideoPlayerCtx),{t:a}=reactI18next.useTranslation();return React__default.default.createElement("span",{className:dom.getClassName("video-controller","speed")},React__default.default.createElement("span",null,a("Speed")),React__default.default.createElement("span",{className:dom.getClassName("video-controller","speedNum")},`${t}x`),React__default.default.createElement("span",{className:dom.getClassName("video-controller","speedButton")},React__default.default.createElement(icons.CaretUpOutlined,{onClick:()=>{e()}}),React__default.default.createElement(icons.CaretDownOutlined,{onClick:()=>{e(!1)}})))},VideoHotKeys=()=>{const{t:e}=reactI18next.useTranslation();return React__default.default.createElement(index$1,{title:React__default.default.createElement("span",{className:dom.getClassName("video-controller","hotkey")},React__default.default.createElement("img",{src:icon_keyboard_h}),e("Hotkeys")),style:{},toolName:EVideoToolName.VideoTagTool})},VideoPageChange=()=>{const{imgIndex:e,imgList:t,pageBackward:a,pageJump:o,pageForward:l}=React__default.default.useContext(index.VideoPlayerCtx);return React__default.default.createElement(Pagination.Pagination,{isVideo:!0,pageBackward:a,imgIndex:e,pageJump:o,totalPage:t.length,pageForward:l,footerCls:dom.getClassName("video-controller")})},VideoTime=()=>{const{currentTime:e,duration:t}=React__default.default.useContext(index.VideoPlayerCtx),a=(t*10-e*10)/10;return React__default.default.createElement("div",{className:dom.getClassName("video-controller","time")},`${videoTimeFormat(e)} / -${videoTimeFormat(a)}`)},VideoController=()=>{const{playPause:e,isPlay:t}=React__default.default.useContext(index.VideoPlayerCtx);return React__default.default.createElement("div",{className:dom.getClassName("video-controller","wrapper")},React__default.default.createElement(VideoProgress,null),React__default.default.createElement("div",{className:dom.getClassName("video-controller")},React__default.default.createElement("span",{onClick:()=>{e()},className:dom.getClassName("video-controller","playButton")},t?React__default.default.createElement(icons.PauseOutlined,null):React__default.default.createElement(icons.CaretRightOutlined,null)),React__default.default.createElement(VideoTime,null),React__default.default.createElement(VideoSpeedButton,null),React__default.default.createElement("div",{className:dom.getClassName("video-controller","holder")}),React__default.default.createElement(VideoPageChange,null),React__default.default.createElement(VideoHotKeys,null)))};module.exports=VideoController;
1
+ "use strict";var React=require("react"),dom=require("../../../../utils/dom.js"),icons=require("@ant-design/icons"),index=require("../../index.js"),Pagination=require("../../../../views/MainView/toolFooter/Pagination.js"),icon_keyboard_h=require("../../../../assets/annotation/video/icon_keyboard_h.svg.js"),index$1=require("../../../../views/MainView/toolFooter/FooterTips/ToolHotKey/index.js"),reactI18next=require("react-i18next"),utils=require("../../utils.js"),lbAnnotation=require("@labelbee/lb-annotation");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React);const{EVideoToolName}=lbAnnotation.cTool,videoTimeFormat=e=>{const t=Math.floor(e/60),a=~~(e%60).toFixed(),o=(e*10).toString().split("").pop(),l=r=>r<10?`0${r}`:r;return`${l(t)}:${l(a)}:${o}`},VideoProgress=()=>{const{currentTime:e,duration:t,buffered:a,setCurrentTime:o}=React__default.default.useContext(index.VideoPlayerCtx),l=React__default.default.useRef(null),r=`${utils.decimalReserved(a/t*100,1)}%`,n=`${utils.decimalReserved(e/t*100,1)}%`,i=s=>{if(l.current){const d=s.clientX,c=l.current.clientWidth,u=utils.decimalReserved(d/c*t,1);o(u)}};return React__default.default.createElement("div",{className:dom.getClassName("video-progress"),ref:l,onClick:s=>{s.stopPropagation(),s.nativeEvent.stopImmediatePropagation(),i(s)}},React__default.default.createElement("div",{className:dom.getClassName("video-slider")},React__default.default.createElement("div",{className:dom.getClassName("video-slider","played"),style:{width:n}}),React__default.default.createElement("div",{className:dom.getClassName("video-slider","loaded"),style:{width:r}}),React__default.default.createElement("div",{className:dom.getClassName("video-slider","played"),style:{width:n}})),React__default.default.createElement("div",{className:dom.getClassName("video-slider-bar"),style:{left:n}}))},VideoSpeedButton=()=>{const{updateNextPlaybackRate:e,playbackRate:t}=React__default.default.useContext(index.VideoPlayerCtx),{t:a}=reactI18next.useTranslation();return React__default.default.createElement("span",{className:dom.getClassName("video-controller","speed")},React__default.default.createElement("span",null,a("Speed")),React__default.default.createElement("span",{className:dom.getClassName("video-controller","speedNum")},`${t}x`),React__default.default.createElement("span",{className:dom.getClassName("video-controller","speedButton")},React__default.default.createElement(icons.CaretUpOutlined,{onClick:()=>{e()}}),React__default.default.createElement(icons.CaretDownOutlined,{onClick:()=>{e(!1)}})))},VideoHotKeys=()=>{const{t:e}=reactI18next.useTranslation();return React__default.default.createElement(index$1,{title:React__default.default.createElement("span",{className:dom.getClassName("video-controller","hotkey")},React__default.default.createElement("img",{src:icon_keyboard_h}),e("Hotkeys")),style:{},toolName:EVideoToolName.VideoTagTool})},VideoPageChange=()=>{const{imgIndex:e,imgList:t,pageBackward:a,pageJump:o,pageForward:l}=React__default.default.useContext(index.VideoPlayerCtx);return React__default.default.createElement(Pagination.Pagination,{isVideo:!0,pageBackward:a,imgIndex:e,pageJump:o,totalPage:t.length,pageForward:l,footerCls:dom.getClassName("video-controller")})},VideoTime=()=>{const{currentTime:e,duration:t}=React__default.default.useContext(index.VideoPlayerCtx),a=t*10-e*10,o=(a>0?a:0)/10;return React__default.default.createElement("div",{className:dom.getClassName("video-controller","time")},`${videoTimeFormat(e)} / -${videoTimeFormat(o)}`)},VideoController=()=>{const{playPause:e,isPlay:t}=React__default.default.useContext(index.VideoPlayerCtx);return React__default.default.createElement("div",{className:dom.getClassName("video-controller","wrapper")},React__default.default.createElement(VideoProgress,null),React__default.default.createElement("div",{className:dom.getClassName("video-controller")},React__default.default.createElement("span",{onClick:()=>{e()},className:dom.getClassName("video-controller","playButton")},t?React__default.default.createElement(icons.PauseOutlined,null):React__default.default.createElement(icons.CaretRightOutlined,null)),React__default.default.createElement(VideoTime,null),React__default.default.createElement(VideoSpeedButton,null),React__default.default.createElement("div",{className:dom.getClassName("video-controller","holder")}),React__default.default.createElement(VideoPageChange,null),React__default.default.createElement(VideoHotKeys,null)))};module.exports=VideoController;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var React=require("react"),index$1=require("./components/controller/index.js"),dom=require("../../utils/dom.js"),lbAnnotation=require("@labelbee/lb-annotation"),utils=require("./utils.js"),index=require("../fileException/index.js");function _interopDefaultLegacy(r){return r&&typeof r=="object"&&"default"in r?r:{default:r}}var React__default=_interopDefaultLegacy(React);const EKeyCode=lbAnnotation.cKeyCode.default,VideoPlayerCtx=React__default.default.createContext({isPlay:!1,playPause:()=>{},updateNextPlaybackRate:()=>{},playbackRate:1,currentTime:0,duration:0,buffered:0,setCurrentTime:()=>{},imgList:[],imgIndex:-1,pageBackward:()=>{},pageJump:r=>{},pageForward:()=>{}}),PER_INTERVAL=50,PER_FORWARD=.1,PLAYBACK_RATES=[.5,1,1.5,2,4,6,8,16];class VideoPlayer extends React__default.default.Component{constructor(i){super(i);this.changePlaybackPate=e=>{this.videoElm&&(this.videoElm.playbackRate=e,this.setState({playbackRate:e}))},this.playPause=()=>{var e,t,a;((e=this.videoElm)==null?void 0:e.paused)?(t=this.videoElm)==null||t.play():(a=this.videoElm)==null||a.pause()},this.updateNextPlaybackRate=(e=!0)=>{const t=PLAYBACK_RATES.findIndex(s=>s===this.state.playbackRate);let a=e?Math.min(t+1,PLAYBACK_RATES.length-1):Math.max(t-1,0);this.changePlaybackPate(PLAYBACK_RATES[a])},this.fastForward=()=>{this.videoElm&&this.setCurrentTime(this.videoElm.currentTime+PER_FORWARD)},this.rewind=()=>{this.videoElm&&this.setCurrentTime(this.videoElm.currentTime-PER_FORWARD)},this.keydown=e=>{e.keyCode===EKeyCode.Space&&(e.preventDefault(),this.playPause()),e.keyCode===EKeyCode.Up&&(e.preventDefault(),this.updateNextPlaybackRate()),e.keyCode===EKeyCode.Down&&(e.preventDefault(),this.updateNextPlaybackRate(!1)),e.keyCode===EKeyCode.Left&&(e.preventDefault(),this.rewind()),e.keyCode===EKeyCode.Right&&(e.preventDefault(),this.fastForward())},this.onPlay=()=>{this.setState({isPlay:!0},this.onVideoStart)},this.onPause=()=>{this.onVideoStopped()},this.onVideoStopped=()=>{this.setState({isPlay:!1}),this.timeInterval&&(clearInterval(this.timeInterval),this.timeInterval=void 0)},this.onVideoStart=()=>{this.timeInterval=window.setInterval(()=>{var e,t,a;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({currentTime:utils.decimalReserved((a=this.videoElm)==null?void 0:a.currentTime,1),buffered:s})}}catch(s){console.error(s)}},PER_INTERVAL)},this.resetVideoData=()=>{this.setState({currentTime:0,buffered:0,error:!1,isPlay:!1}),this.onVideoStopped()},this.setDuration=()=>{var e;if(this.videoElm){const t=utils.decimalReserved((e=this.videoElm)==null?void 0:e.duration,1);this.setState({duration:t})}},this.setCurrentTime=e=>{this.videoElm&&(this.videoElm.currentTime=e,this.setState({currentTime:e}))},this.reload=()=>{var e;(e=this.videoElm)==null||e.load()},this.onError=()=>{this.resetVideoData(),this.setState({error:!0})},this.state={playbackRate:1,currentTime:0,isPlay:!1,duration:0,buffered:0,error:!1},this.videoRef=React__default.default.createRef()}get videoElm(){var i;return(i=this.videoRef)==null?void 0:i.current}get videoSrc(){var i,e;const{imgIndex:t,imgList:a}=this.props;return t>-1&&(e=(i=a[t])==null?void 0:i.url)!=null?e:""}componentDidMount(){var i,e;window.addEventListener("keydown",this.keydown),((i=this.videoRef)==null?void 0:i.current)&&this.props.setVideoRef&&this.props.setVideoRef((e=this.videoRef)==null?void 0:e.current)}componentWillUnmount(){window.removeEventListener("keydown",this.keydown)}render(){const{isPlay:i,playbackRate:e,currentTime:t,duration:a,buffered:s,error:d}=this.state,{imgList:l,imgIndex:n,pageBackward:u,pageJump:h,pageForward:c,valid:f}=this.props,{playPause:o,updateNextPlaybackRate:v,onPause:m,onPlay:p,resetVideoData:y,setDuration:E,setCurrentTime:P,onError:R,videoRef:b,videoSrc:g}=this;return React__default.default.createElement(VideoPlayerCtx.Provider,{value:{videoRef:this.videoRef,isPlay:i,playPause:o,updateNextPlaybackRate:v,playbackRate:e,currentTime:t,duration:a,buffered:s,setCurrentTime:P,imgIndex:n,imgList:l,pageBackward:u,pageJump:h,pageForward:c}},React__default.default.createElement("div",{className:dom.getClassName("video-wrapper")},React__default.default.createElement("div",{className:dom.getClassName("video-container")},React__default.default.createElement("video",{ref:b,className:dom.getClassName("video"),src:g,onPause:m,onPlay:p,onLoadedMetadata:y,onError:R,onDurationChange:E,width:"100%",height:"100%",onClick:o}),React__default.default.createElement(index,{fileType:"video",errorProps:{reloadImage:this.reload,backgroundColor:"#e2e2e2",ignoreOffsetY:!0,isError:d},invalidProps:{isValid:f}})),React__default.default.createElement(index$1,null)))}}exports.VideoPlayer=VideoPlayer,exports.VideoPlayerCtx=VideoPlayerCtx,exports.default=VideoPlayer;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var React=require("react"),index$1=require("./components/controller/index.js"),dom=require("../../utils/dom.js"),lbAnnotation=require("@labelbee/lb-annotation"),utils=require("./utils.js"),index=require("../fileException/index.js");function _interopDefaultLegacy(r){return r&&typeof r=="object"&&"default"in r?r:{default:r}}var React__default=_interopDefaultLegacy(React);const EKeyCode=lbAnnotation.cKeyCode.default,VideoPlayerCtx=React__default.default.createContext({isPlay:!1,playPause:()=>{},updateNextPlaybackRate:()=>{},playbackRate:1,currentTime:0,duration:0,buffered:0,setCurrentTime:()=>{},imgList:[],imgIndex:-1,pageBackward:()=>{},pageJump:r=>{},pageForward:()=>{}}),PER_INTERVAL=50,PER_FORWARD=.1,PLAYBACK_RATES=[.5,1,1.5,2,4,6,8,16];class VideoPlayer extends React__default.default.Component{constructor(i){super(i);this.changePlaybackPate=e=>{this.videoElm&&(this.videoElm.playbackRate=e,this.setState({playbackRate:e}))},this.playPause=()=>{var e,t,a;((e=this.videoElm)==null?void 0:e.paused)?(t=this.videoElm)==null||t.play():(a=this.videoElm)==null||a.pause()},this.updateNextPlaybackRate=(e=!0)=>{const t=PLAYBACK_RATES.findIndex(s=>s===this.state.playbackRate);let a=e?Math.min(t+1,PLAYBACK_RATES.length-1):Math.max(t-1,0);this.changePlaybackPate(PLAYBACK_RATES[a])},this.fastForward=()=>{this.videoElm&&this.setCurrentTime(this.videoElm.currentTime+PER_FORWARD)},this.rewind=()=>{this.videoElm&&this.setCurrentTime(this.videoElm.currentTime-PER_FORWARD)},this.keydown=e=>{e.keyCode===EKeyCode.Space&&(e.preventDefault(),this.playPause()),e.keyCode===EKeyCode.Up&&(e.preventDefault(),this.updateNextPlaybackRate()),e.keyCode===EKeyCode.Down&&(e.preventDefault(),this.updateNextPlaybackRate(!1)),e.keyCode===EKeyCode.Left&&(e.preventDefault(),this.rewind()),e.keyCode===EKeyCode.Right&&(e.preventDefault(),this.fastForward())},this.onPlay=()=>{this.setState({isPlay:!0},this.onVideoStart)},this.onPause=()=>{this.onVideoStopped()},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,a;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({currentTime:utils.decimalReserved((a=this.videoElm)==null?void 0:a.currentTime,1),buffered:s})}}catch(s){console.error(s)}},PER_INTERVAL)},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;if(this.videoElm){const t=utils.decimalReserved((e=this.videoElm)==null?void 0:e.duration,1);this.setState({duration:t})}},this.setCurrentTime=e=>{this.videoElm&&(this.videoElm.currentTime=e,this.setState({currentTime:e}))},this.reload=()=>{var e;(e=this.videoElm)==null||e.load()},this.onError=()=>{this.resetVideoData(),this.setState({error:!0})},this.state={playbackRate:1,currentTime:0,isPlay:!1,duration:0,buffered:0,error:!1},this.videoRef=React__default.default.createRef()}get videoElm(){var i;return(i=this.videoRef)==null?void 0:i.current}get videoSrc(){var i,e;const{imgIndex:t,imgList:a}=this.props;return t>-1&&(e=(i=a[t])==null?void 0:i.url)!=null?e:""}componentDidMount(){var i,e;window.addEventListener("keydown",this.keydown),((i=this.videoRef)==null?void 0:i.current)&&this.props.setVideoRef&&this.props.setVideoRef((e=this.videoRef)==null?void 0:e.current)}componentWillUnmount(){window.removeEventListener("keydown",this.keydown)}render(){const{isPlay:i,playbackRate:e,currentTime:t,duration:a,buffered:s,error:d}=this.state,{imgList:l,imgIndex:n,pageBackward:u,pageJump:h,pageForward:c,valid:f}=this.props,{playPause:o,updateNextPlaybackRate:v,onPause:m,onPlay:p,resetVideoData:y,setDuration:E,setCurrentTime:P,onError:R,videoRef:b,videoSrc:g}=this;return React__default.default.createElement(VideoPlayerCtx.Provider,{value:{videoRef:this.videoRef,isPlay:i,playPause:o,updateNextPlaybackRate:v,playbackRate:e,currentTime:t,duration:a,buffered:s,setCurrentTime:P,imgIndex:n,imgList:l,pageBackward:u,pageJump:h,pageForward:c}},React__default.default.createElement("div",{className:dom.getClassName("video-wrapper")},React__default.default.createElement("div",{className:dom.getClassName("video-container")},React__default.default.createElement("video",{ref:b,className:dom.getClassName("video"),src:g,onPause:m,onPlay:p,onLoadedMetadata:y,onError:R,onDurationChange:E,width:"100%",height:"100%",onClick:o}),React__default.default.createElement(index,{fileType:"video",errorProps:{reloadImage:this.reload,backgroundColor:"#e2e2e2",ignoreOffsetY:!0,isError:d},invalidProps:{isValid:f}})),React__default.default.createElement(index$1,null)))}}exports.VideoPlayer=VideoPlayer,exports.VideoPlayerCtx=VideoPlayerCtx,exports.default=VideoPlayer;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});const findTagLabel=(e,r,l)=>{const t=l.find(a=>a.value===e),n=t.subSelected.find(a=>a.value===r);return{keyLabel:t.key,valueLabel:n.key}},tagsSortThruInputList=(e,r)=>e.sort((l,t)=>{const n=r.findIndex(s=>l===s.value),a=r.findIndex(s=>t===s.value);return n-a}),result2LabelKey=(e,r)=>{var l;try{return(l=e==null?void 0:e.reduce((t,n)=>(tagsSortThruInputList(Object.keys(n.result),r).forEach(a=>{var s;const u=(s=n.result[a])==null?void 0:s.split(";");findLabelFromValuesArray(u,a,r,t)}),t),[]))!=null?l:[]}catch(t){return[]}},findLabelFromValuesArray=(e,r,l,t)=>{e.forEach(n=>{const{keyLabel:a,valueLabel:s}=findTagLabel(r,n,l),u=t.find(o=>o.keyLabel===a);u?u.valuesLabelArray.push(s):t.push({keyLabel:a,valuesLabelArray:[s]})})},getKeyCodeNumber=e=>e<=57&&e>=49?e-48:e<=105&&e>=97?e-96:0,decimalReserved=(e,r)=>typeof e=="number"?parseFloat(e.toFixed(r)):e;exports.decimalReserved=decimalReserved,exports.findTagLabel=findTagLabel,exports.getKeyCodeNumber=getKeyCodeNumber,exports.result2LabelKey=result2LabelKey,exports.tagsSortThruInputList=tagsSortThruInputList;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});const findTagLabel=(e,r,l)=>{const t=l.find(a=>a.value===e),n=t.subSelected.find(a=>a.value===r);return{keyLabel:t.key,valueLabel:n.key}},tagsSortThruInputList=(e,r)=>e.sort((l,t)=>{const n=r.findIndex(s=>l===s.value),a=r.findIndex(s=>t===s.value);return n-a}),result2LabelKey=(e,r)=>{var l;try{return(l=e==null?void 0:e.reduce((t,n)=>(tagsSortThruInputList(Object.keys(n.result),r).forEach(a=>{var s;const u=(s=n.result[a])==null?void 0:s.split(";");findLabelFromValuesArray(u,a,r,t)}),t),[]))!=null?l:[]}catch(t){return[]}},findLabelFromValuesArray=(e,r,l,t)=>{e.forEach(n=>{const{keyLabel:a,valueLabel:s}=findTagLabel(r,n,l),u=t.find(o=>o.keyLabel===a);u?u.valuesLabelArray.push(s):t.push({keyLabel:a,valuesLabelArray:[s]})})},getKeyCodeNumber=e=>e<=57&&e>=49?e-48:e<=105&&e>=97?e-96:0,decimalReserved=(e,r=2)=>typeof e=="number"?parseFloat(e.toFixed(r)):e;exports.decimalReserved=decimalReserved,exports.findTagLabel=findTagLabel,exports.getKeyCodeNumber=getKeyCodeNumber,exports.result2LabelKey=result2LabelKey,exports.tagsSortThruInputList=tagsSortThruInputList;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ETextType=void 0,function(t){t[t.AnyString=0]="AnyString",t[t.Order=1]="Order",t[t.EnglishOnly=2]="EnglishOnly",t[t.NumberOnly=3]="NumberOnly",t[t.CustomFormat=4]="CustomFormat"}(exports.ETextType||(exports.ETextType={}));const TEXT_ATTRIBUTE_MAX_LENGTH=1e3;exports.EToolName=void 0,function(t){t.Rect="rectTool",t.Tag="tagTool",t.Point="pointTool",t.PointMarker="pointMarkerTool",t.Segmentation="segmentationTool",t.Filter="filterTool",t.Text="textTool",t.Polygon="polygonTool",t.Line="lineTool",t.LineMarker="lineMarkerTool",t.Empty="emptyTool",t.FolderTag="folderTagTool",t.RectTrack="rectTrackTool",t.Face="faceTool",t.ClientAttribute="clientAttributeTool",t.OCRRelation="OCRRelationTool"}(exports.EToolName||(exports.EToolName={})),exports.TEXT_ATTRIBUTE_MAX_LENGTH=TEXT_ATTRIBUTE_MAX_LENGTH;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ETextType=void 0,function(t){t[t.AnyString=0]="AnyString",t[t.Order=1]="Order",t[t.EnglishOnly=2]="EnglishOnly",t[t.NumberOnly=3]="NumberOnly",t[t.CustomFormat=4]="CustomFormat"}(exports.ETextType||(exports.ETextType={}));const TEXT_ATTRIBUTE_MAX_LENGTH=1e3;exports.EToolName=void 0,function(t){t.Rect="rectTool",t.Tag="tagTool",t.Point="pointTool",t.PointMarker="pointMarkerTool",t.Segmentation="segmentationTool",t.Filter="filterTool",t.Text="textTool",t.Polygon="polygonTool",t.Line="lineTool",t.LineMarker="lineMarkerTool",t.Empty="emptyTool",t.FolderTag="folderTagTool",t.RectTrack="rectTrackTool",t.Face="faceTool",t.ClientAttribute="clientAttributeTool",t.OCRRelation="OCRRelationTool",t.SegmentByRect="segmentByRectTool"}(exports.EToolName||(exports.EToolName={})),exports.TEXT_ATTRIBUTE_MAX_LENGTH=TEXT_ATTRIBUTE_MAX_LENGTH;
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var index$1=require("./components/AnnotationView/index.js"),lbUtils=require("@labelbee/lb-utils"),React=require("react"),reactI18next=require("react-i18next"),reactRedux=require("react-redux"),App=require("./App.js"),configureStore=require("./configureStore.js"),actionCreators=require("./store/annotation/actionCreators.js"),TagToolInstanceAdaptorI18nProvider=require("./components/videoPlayer/TagToolInstanceAdaptorI18nProvider.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React),__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,r,t)=>r in e?__defProp(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,__spreadValues=(e,r)=>{for(var t in r||(r={}))__hasOwnProp.call(r,t)&&__defNormalProp(e,t,r[t]);if(__getOwnPropSymbols)for(var t of __getOwnPropSymbols(r))__propIsEnum.call(r,t)&&__defNormalProp(e,t,r[t]);return e},__spreadProps=(e,r)=>__defProps(e,__getOwnPropDescs(r));const store=configureStore(),OutputApp=(e,r)=>{const[t,a]=React.useState();return React.useImperativeHandle(r,()=>({toolInstance:t,pageBackwardActions:()=>store.dispatch(actionCreators.PageBackward()),pageForwardActions:()=>store.dispatch(actionCreators.PageForward()),pageJump:o=>{const n=~~o-1;store.dispatch(actionCreators.PageJump(n))},hello:()=>alert("hello labelBee!!!")}),[t]),React__default.default.createElement(reactRedux.Provider,{store},React__default.default.createElement(reactI18next.I18nextProvider,{i18n:lbUtils.i18n},React__default.default.createElement(App,__spreadProps(__spreadValues({},e),{setToolInstance:a}))))};var index=React__default.default.forwardRef(OutputApp);exports.AnnotationView=index$1,Object.defineProperty(exports,"i18n",{enumerable:!0,get:function(){return lbUtils.i18n}}),exports.VideoTagTool=TagToolInstanceAdaptorI18nProvider.VideoTagTool,exports.default=index,exports.store=store;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var index$1=require("./components/AnnotationView/index.js"),lbUtils=require("@labelbee/lb-utils"),React=require("react"),reactI18next=require("react-i18next"),reactRedux=require("react-redux"),App=require("./App.js"),configureStore=require("./configureStore.js"),actionCreators=require("./store/annotation/actionCreators.js"),TagToolInstanceAdaptorI18nProvider=require("./components/videoPlayer/TagToolInstanceAdaptorI18nProvider.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React),__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,r,t)=>r in e?__defProp(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,__spreadValues=(e,r)=>{for(var t in r||(r={}))__hasOwnProp.call(r,t)&&__defNormalProp(e,t,r[t]);if(__getOwnPropSymbols)for(var t of __getOwnPropSymbols(r))__propIsEnum.call(r,t)&&__defNormalProp(e,t,r[t]);return e},__spreadProps=(e,r)=>__defProps(e,__getOwnPropDescs(r));const store=configureStore(),OutputApp=(e,r)=>{const[t,a]=React.useState();return React.useImperativeHandle(r,()=>({toolInstance:t,annotationEngine:store.getState().annotation.annotationEngine,pageBackwardActions:()=>store.dispatch(actionCreators.PageBackward()),pageForwardActions:()=>store.dispatch(actionCreators.PageForward()),pageJump:o=>{const n=~~o-1;store.dispatch(actionCreators.PageJump(n))},hello:()=>alert("hello labelBee!!!")}),[t]),React__default.default.createElement(reactRedux.Provider,{store},React__default.default.createElement(reactI18next.I18nextProvider,{i18n:lbUtils.i18n},React__default.default.createElement(App,__spreadProps(__spreadValues({},e),{setToolInstance:a}))))};var index=React__default.default.forwardRef(OutputApp);exports.AnnotationView=index$1,Object.defineProperty(exports,"i18n",{enumerable:!0,get:function(){return lbUtils.i18n}}),exports.VideoTagTool=TagToolInstanceAdaptorI18nProvider.VideoTagTool,exports.default=index,exports.store=store;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var Actions=require("../Actions.js"),reducer=require("./reducer.js"),index=require("../../constant/index.js"),AnnotationSize=require("../../data/enums/AnnotationSize.js"),PageOperator=require("../../utils/PageOperator.js"),index$1=require("../../utils/index.js"),__async=(e,t,n)=>new Promise((r,i)=>{var s=T=>{try{u(n.next(T))}catch(a){i(a)}},o=T=>{try{u(n.throw(T))}catch(a){i(a)}},u=T=>T.done?r(T.value):Promise.resolve(T.value).then(s,o);u((n=n.apply(e,t)).next())});const dispatchTasks=(e,t)=>t.map(n=>e(n)),getSubmitByPageOperation=e=>e===AnnotationSize.EPageTurningOperation.Forward?index.ESubmitType.Forward:e===AnnotationSize.EPageTurningOperation.Backward?index.ESubmitType.Backward:e===AnnotationSize.EPageTurningOperation.Jump?index.ESubmitType.Jump:index.ESubmitType.Forward,getBasicIndex=(e,t)=>{var n,r;const{imgList:i,imgIndex:s}=e,{dataSourceStep:o}=reducer.getStepConfig(e.stepList,e.step);return((r=(n=index$1.jsonParser(i[s-1].result)[`step_${o}`])==null?void 0:n.result)==null?void 0:r.length)-1||t};function SetTaskConfig({stepList:e,step:t}){return{type:Actions.ANNOTATION_ACTIONS.SET_TASK_CONFIG,payload:{stepList:e,step:t}}}function UpdateOnSubmit(e){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_ON_SUBMIT,payload:{onSubmit:e}}}function UpdateOnSave(e){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_ON_SAVE,payload:{onSave:e}}}function UpdateOnPageChange(e){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_ON_PAGE_CHANGE,payload:{onPageChange:e}}}function UpdateOnStepChange(e){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_ON_STEP_CHANGE,payload:{onStepChange:e}}}function UpdateGetFileData(e){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_GET_FILE_DATA,payload:{getFileData:e}}}function UpdatePageSize(e){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_PAGE_SIZE,payload:{pageSize:e}}}function UpdateGetFileList(e){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_LOAD_FILE_LIST,payload:{loadFileList:e}}}function UpdateRotate(){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_ROTATE}}function CopyBackWordResult(){return{type:Actions.ANNOTATION_ACTIONS.COPY_BACKWARD_RESULT}}function InitTaskData({onSubmit:e,onSave:t,onPageChange:n,onStepChange:r,getFileData:i,pageSize:s,loadFileList:o,step:u,stepList:T}){const a=[];return e&&a.push(UpdateOnSubmit(e)),t&&a.push(UpdateOnSave(t)),n&&a.push(UpdateOnPageChange(n)),r&&a.push(UpdateOnStepChange(r)),i&&a.push(UpdateGetFileData(i)),o&&a.push(UpdateGetFileList(o)),s&&a.push(UpdatePageSize(s)),a.push(SetTaskConfig({stepList:T,step:u})),a.push({type:Actions.ANNOTATION_ACTIONS.CALC_STEP_PROGRESS}),a.push({type:Actions.ANNOTATION_ACTIONS.INIT_TOOL}),p=>dispatchTasks(p,a)}const getNextStep=(e,t)=>{var n;const r=t==null?void 0:t.findIndex(i=>(i==null?void 0:i.step)===e);return(n=t[r+1])==null?void 0:n.step},ToNextStep=e=>(t,n)=>{const{annotation:r}=n(),{step:i,stepList:s}=r,o=getNextStep(i,s);return[t(UpdateProcessingStep(o,e))]},UpdateProcessingStep=(e,t)=>(n,r)=>{var i,s;const{annotation:o}=r();(i=o==null?void 0:o.onStepChange)==null||i.call(o,e);const u=(s=o==null?void 0:o.imgIndex)!=null?s:0;return[n({type:Actions.ANNOTATION_ACTIONS.SUBMIT_RESULT}),n({type:Actions.ANNOTATION_ACTIONS.SUBMIT_FILE_DATA,payload:{submitType:index.ESubmitType.StepChanged}}),n({type:Actions.ANNOTATION_ACTIONS.SET_STEP,payload:{toStep:e}}),n({type:Actions.ANNOTATION_ACTIONS.CALC_STEP_PROGRESS}),n(reducer.LoadFileAndFileData(t!=null?t:u,0))]},ToSubmitFileData=e=>t=>[t({type:Actions.ANNOTATION_ACTIONS.SUBMIT_RESULT}),t({type:Actions.ANNOTATION_ACTIONS.SUBMIT_FILE_DATA,payload:{submitType:e}})],SubmitAndChangeFileIndex=(e,t,n,r)=>[e(ToSubmitFileData(n)),e(reducer.LoadFileAndFileData(t,r))],ChangeBasicIndex=(e,t)=>[e({type:Actions.ANNOTATION_ACTIONS.SUBMIT_RESULT}),e({type:Actions.ANNOTATION_ACTIONS.SET_BASIC_INDEX,payload:{basicIndex:t}})],ChangeTriggerEventAfterIndexChanged=(e,t)=>{e({type:Actions.ANNOTATION_ACTIONS.SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED,payload:{triggerEventAfterIndexChanged:t}})},PageBackward=(e=!1)=>(t,n)=>DispatcherTurning(t,n,AnnotationSize.EPageTurningOperation.Backward,e),PageForward=(e=!1)=>(t,n)=>DispatcherTurning(t,n,AnnotationSize.EPageTurningOperation.Forward,e),PageJump=(e,t=!1)=>(n,r)=>{if(e!==r().imgIndex)return DispatcherTurning(n,r,AnnotationSize.EPageTurningOperation.Jump,t,e)},loadImgList=(e,t,n,r)=>__async(void 0,null,function*(){var i;const{loadFileList:s,imgList:o,pageSize:u}=t().annotation,T=Math.floor(n/u);SetAnnotationLoading(e,!0);try{const a=yield s(T,u);if(SetAnnotationLoading(e,!1),!((i=a==null?void 0:a.fileList)==null?void 0:i.length)||!(a==null?void 0:a.total))throw new Error("fileList and total are required");const p=r?new Array(a.total):[...o];return p.splice(T*u,u,...a.fileList),e({type:Actions.ANNOTATION_ACTIONS.UPDATE_IMG_LIST,payload:{imgList:p}}),!0}catch(a){SetAnnotationLoading(e,!1),console.error(a)}}),DispatcherTurning=(e,t,n,r=!1,i)=>__async(void 0,null,function*(){var s;const o=t().annotation,{fileIndexChanged:u,fileIndex:T,basicIndexChanged:a,basicIndex:p}=PageOperator.getNextPageInfo(n,o,i),A=getSubmitByPageOperation(n);if(ChangeTriggerEventAfterIndexChanged(e,r),u){if(o.loading||!o.imgList[T]&&!(yield loadImgList(e,t,T)))return;(s=o.onPageChange)==null||s.call(o,T);const N=A===index.ESubmitType.Backward?getBasicIndex(t().annotation,p):p;return SubmitAndChangeFileIndex(e,T,A,N)}return a?ChangeBasicIndex(e,p):e(ToSubmitFileData(A))}),ChangeSave=e=>{e(ToSubmitFileData(index.ESubmitType.Save)),e({type:Actions.ANNOTATION_ACTIONS.SAVE_RESULT})},SetAnnotationLoading=(e,t)=>{e({type:Actions.ANNOTATION_ACTIONS.SET_LOADING,payload:{loading:t}})};exports.ChangeSave=ChangeSave,exports.CopyBackWordResult=CopyBackWordResult,exports.DispatcherTurning=DispatcherTurning,exports.InitTaskData=InitTaskData,exports.PageBackward=PageBackward,exports.PageForward=PageForward,exports.PageJump=PageJump,exports.SetAnnotationLoading=SetAnnotationLoading,exports.SetTaskConfig=SetTaskConfig,exports.ToNextStep=ToNextStep,exports.ToSubmitFileData=ToSubmitFileData,exports.UpdateGetFileData=UpdateGetFileData,exports.UpdateGetFileList=UpdateGetFileList,exports.UpdateOnPageChange=UpdateOnPageChange,exports.UpdateOnSave=UpdateOnSave,exports.UpdateOnStepChange=UpdateOnStepChange,exports.UpdateOnSubmit=UpdateOnSubmit,exports.UpdatePageSize=UpdatePageSize,exports.UpdateProcessingStep=UpdateProcessingStep,exports.UpdateRotate=UpdateRotate,exports.loadImgList=loadImgList;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var Actions=require("../Actions.js"),reducer=require("./reducer.js"),index=require("../../constant/index.js"),AnnotationSize=require("../../data/enums/AnnotationSize.js"),PageOperator=require("../../utils/PageOperator.js"),index$1=require("../../utils/index.js"),__async=(e,t,n)=>new Promise((r,i)=>{var s=T=>{try{u(n.next(T))}catch(a){i(a)}},o=T=>{try{u(n.throw(T))}catch(a){i(a)}},u=T=>T.done?r(T.value):Promise.resolve(T.value).then(s,o);u((n=n.apply(e,t)).next())});const dispatchTasks=(e,t)=>t.map(n=>e(n)),getSubmitByPageOperation=e=>e===AnnotationSize.EPageTurningOperation.Forward?index.ESubmitType.Forward:e===AnnotationSize.EPageTurningOperation.Backward?index.ESubmitType.Backward:e===AnnotationSize.EPageTurningOperation.Jump?index.ESubmitType.Jump:index.ESubmitType.Forward,getBasicIndex=(e,t)=>{var n,r;const{imgList:i,imgIndex:s}=e,{dataSourceStep:o}=reducer.getStepConfig(e.stepList,e.step);return((r=(n=index$1.jsonParser(i[s-1].result)[`step_${o}`])==null?void 0:n.result)==null?void 0:r.length)-1||t};function UpdateToolInstance(e){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_TOOL_INSTANCE,payload:{toolInstance:e}}}function SetTaskConfig({stepList:e,step:t}){return{type:Actions.ANNOTATION_ACTIONS.SET_TASK_CONFIG,payload:{stepList:e,step:t}}}function UpdateOnSubmit(e){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_ON_SUBMIT,payload:{onSubmit:e}}}function UpdateOnSave(e){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_ON_SAVE,payload:{onSave:e}}}function UpdateOnPageChange(e){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_ON_PAGE_CHANGE,payload:{onPageChange:e}}}function UpdateOnStepChange(e){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_ON_STEP_CHANGE,payload:{onStepChange:e}}}function UpdateGetFileData(e){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_GET_FILE_DATA,payload:{getFileData:e}}}function UpdatePageSize(e){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_PAGE_SIZE,payload:{pageSize:e}}}function UpdateGetFileList(e){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_LOAD_FILE_LIST,payload:{loadFileList:e}}}function UpdateRotate(){return{type:Actions.ANNOTATION_ACTIONS.UPDATE_ROTATE}}function CopyBackWordResult(){return{type:Actions.ANNOTATION_ACTIONS.COPY_BACKWARD_RESULT}}function InitTaskData({onSubmit:e,onSave:t,onPageChange:n,onStepChange:r,getFileData:i,pageSize:s,loadFileList:o,step:u,stepList:T}){const a=[];return e&&a.push(UpdateOnSubmit(e)),t&&a.push(UpdateOnSave(t)),n&&a.push(UpdateOnPageChange(n)),r&&a.push(UpdateOnStepChange(r)),i&&a.push(UpdateGetFileData(i)),o&&a.push(UpdateGetFileList(o)),s&&a.push(UpdatePageSize(s)),a.push(SetTaskConfig({stepList:T,step:u})),a.push({type:Actions.ANNOTATION_ACTIONS.CALC_STEP_PROGRESS}),a.push({type:Actions.ANNOTATION_ACTIONS.INIT_TOOL}),p=>dispatchTasks(p,a)}const getNextStep=(e,t)=>{var n;const r=t==null?void 0:t.findIndex(i=>(i==null?void 0:i.step)===e);return(n=t[r+1])==null?void 0:n.step},ToNextStep=e=>(t,n)=>{const{annotation:r}=n(),{step:i,stepList:s}=r,o=getNextStep(i,s);return[t(UpdateProcessingStep(o,e))]},UpdateProcessingStep=(e,t)=>(n,r)=>{var i,s;const{annotation:o}=r();(i=o==null?void 0:o.onStepChange)==null||i.call(o,e);const u=(s=o==null?void 0:o.imgIndex)!=null?s:0;return[n({type:Actions.ANNOTATION_ACTIONS.SUBMIT_RESULT}),n({type:Actions.ANNOTATION_ACTIONS.SUBMIT_FILE_DATA,payload:{submitType:index.ESubmitType.StepChanged}}),n({type:Actions.ANNOTATION_ACTIONS.SET_STEP,payload:{toStep:e}}),n({type:Actions.ANNOTATION_ACTIONS.CALC_STEP_PROGRESS}),n(reducer.LoadFileAndFileData(t!=null?t:u,0))]},ToSubmitFileData=e=>t=>[t({type:Actions.ANNOTATION_ACTIONS.SUBMIT_RESULT}),t({type:Actions.ANNOTATION_ACTIONS.SUBMIT_FILE_DATA,payload:{submitType:e}})],SubmitAndChangeFileIndex=(e,t,n,r)=>[e(ToSubmitFileData(n)),e(reducer.LoadFileAndFileData(t,r))],ChangeBasicIndex=(e,t)=>[e({type:Actions.ANNOTATION_ACTIONS.SUBMIT_RESULT}),e({type:Actions.ANNOTATION_ACTIONS.SET_BASIC_INDEX,payload:{basicIndex:t}})],ChangeTriggerEventAfterIndexChanged=(e,t)=>{e({type:Actions.ANNOTATION_ACTIONS.SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED,payload:{triggerEventAfterIndexChanged:t}})},PageBackward=(e=!1)=>(t,n)=>DispatcherTurning(t,n,AnnotationSize.EPageTurningOperation.Backward,e),PageForward=(e=!1)=>(t,n)=>DispatcherTurning(t,n,AnnotationSize.EPageTurningOperation.Forward,e),PageJump=(e,t=!1)=>(n,r)=>{if(e!==r().imgIndex)return DispatcherTurning(n,r,AnnotationSize.EPageTurningOperation.Jump,t,e)},loadImgList=(e,t,n,r)=>__async(void 0,null,function*(){var i;const{loadFileList:s,imgList:o,pageSize:u}=t().annotation,T=Math.floor(n/u);SetAnnotationLoading(e,!0);try{const a=yield s(T,u);if(SetAnnotationLoading(e,!1),!((i=a==null?void 0:a.fileList)==null?void 0:i.length)||!(a==null?void 0:a.total))throw new Error("fileList and total are required");const p=r?new Array(a.total):[...o];return p.splice(T*u,u,...a.fileList),e({type:Actions.ANNOTATION_ACTIONS.UPDATE_IMG_LIST,payload:{imgList:p}}),!0}catch(a){SetAnnotationLoading(e,!1),console.error(a)}}),DispatcherTurning=(e,t,n,r=!1,i)=>__async(void 0,null,function*(){var s;const o=t().annotation,{fileIndexChanged:u,fileIndex:T,basicIndexChanged:a,basicIndex:p}=PageOperator.getNextPageInfo(n,o,i),A=getSubmitByPageOperation(n);if(ChangeTriggerEventAfterIndexChanged(e,r),u){if(o.loading||!o.imgList[T]&&!(yield loadImgList(e,t,T)))return;(s=o.onPageChange)==null||s.call(o,T);const N=A===index.ESubmitType.Backward?getBasicIndex(t().annotation,p):p;return SubmitAndChangeFileIndex(e,T,A,N)}return a?ChangeBasicIndex(e,p):e(ToSubmitFileData(A))}),ChangeSave=e=>{e(ToSubmitFileData(index.ESubmitType.Save)),e({type:Actions.ANNOTATION_ACTIONS.SAVE_RESULT})},SetAnnotationLoading=(e,t)=>{e({type:Actions.ANNOTATION_ACTIONS.SET_LOADING,payload:{loading:t}})};exports.ChangeSave=ChangeSave,exports.CopyBackWordResult=CopyBackWordResult,exports.DispatcherTurning=DispatcherTurning,exports.InitTaskData=InitTaskData,exports.PageBackward=PageBackward,exports.PageForward=PageForward,exports.PageJump=PageJump,exports.SetAnnotationLoading=SetAnnotationLoading,exports.SetTaskConfig=SetTaskConfig,exports.ToNextStep=ToNextStep,exports.ToSubmitFileData=ToSubmitFileData,exports.UpdateGetFileData=UpdateGetFileData,exports.UpdateGetFileList=UpdateGetFileList,exports.UpdateOnPageChange=UpdateOnPageChange,exports.UpdateOnSave=UpdateOnSave,exports.UpdateOnStepChange=UpdateOnStepChange,exports.UpdateOnSubmit=UpdateOnSubmit,exports.UpdatePageSize=UpdatePageSize,exports.UpdateProcessingStep=UpdateProcessingStep,exports.UpdateRotate=UpdateRotate,exports.UpdateToolInstance=UpdateToolInstance,exports.loadImgList=loadImgList;
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { ToolInstance } from './store/annotation/types';
3
- import { GetFileData, OnSave, OnSubmit, IFileItem, OnPageChange, OnStepChange, LoadFileList } from './types/data';
3
+ import { GetFileData, IFileItem, LoadFileList, OnPageChange, OnSave, OnStepChange, OnSubmit } from './types/data';
4
4
  import { Footer, Header, Sider } from './types/main';
5
5
  import { IStepInfo } from './types/step';
6
6
  interface IAnnotationStyle {
@@ -55,6 +55,7 @@ export interface AppProps {
55
55
  selectedRender?: (canvas: HTMLCanvasElement, data: any, style: IAnnotationStyle) => void;
56
56
  creatingRender?: (canvas: HTMLCanvasElement, data: any, style: IAnnotationStyle) => void;
57
57
  };
58
+ customRenderStyle?: (data: any) => IAnnotationStyle;
58
59
  }
59
60
  declare const _default: import("react-redux").ConnectedComponent<React.FC<AppProps>, import("react-redux").Omit<AppProps & {
60
61
  children?: React.ReactNode;
@@ -39,5 +39,7 @@ export declare enum EToolName {
39
39
  /** 客户端属性工具 */
40
40
  ClientAttribute = "clientAttributeTool",
41
41
  /** OCR关联关系工具 */
42
- OCRRelation = "OCRRelationTool"
42
+ OCRRelation = "OCRRelationTool",
43
+ /** 算法分割辅助工具 */
44
+ SegmentByRect = "segmentByRectTool"
43
45
  }
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import { AppState } from 'src/store';
3
3
  import { ImgAttributeState } from 'src/store/imgAttribute/types';
4
- import { AnnotationEngine } from '@labelbee/lb-annotation';
5
4
  import { AppProps } from '@/App';
5
+ import { AnnotationEngine } from '@labelbee/lb-annotation';
6
6
  interface IProps extends AppState, AppProps {
7
7
  imgAttribute: ImgAttributeState;
8
8
  imgIndex: number;
@@ -1 +1 @@
1
- "use strict";var React=require("react"),es=require("antd/es"),reactRedux=require("react-redux"),_=require("lodash"),index=require("../../../index.js"),useSize=require("../../../hooks/useSize.js"),actionCreators=require("../../../store/toolStyle/actionCreators.js"),lbAnnotation=require("@labelbee/lb-annotation"),FileError=require("../../../components/fileException/FileError.js"),lbUtils=require("@labelbee/lb-utils");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React),___default=_interopDefaultLegacy(_),__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,r)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,__spreadValues=(e,t)=>{for(var r in t||(t={}))__hasOwnProp.call(t,r)&&__defNormalProp(e,r,t[r]);if(__getOwnPropSymbols)for(var r of __getOwnPropSymbols(t))__propIsEnum.call(t,r)&&__defNormalProp(e,r,t[r]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t));const AnnotationOperation=e=>{const[,t]=React.useState(0),{imgAttribute:r,toolStyle:i,toolInstance:n,annotationEngine:o,imgList:l,imgIndex:d,dataInjectionAtCreation:u,renderEnhance:c}=e,f=React.useRef(null),g=React.useRef(null),s=useSize(f);React.useEffect(()=>{index.store.dispatch(actionCreators.InitToolStyleConfig())},[]),React.useEffect(()=>{if(!!o){switch(lbUtils.i18n.language){case"cn":case"en":o.setLang(lbUtils.i18n.language);break}o==null||o.setDataInjectionAtCreation(u),o==null||o.setRenderEnhance(c)}},[o,u,c]),React.useEffect(()=>{n&&(n.singleOn("messageError",a=>{es.message.error(a)}),n.singleOn("messageInfo",a=>{es.message.info(a)}),n.singleOn("changeAnnotationShow",()=>{t(a=>a+1)}))},[n]),React.useEffect(()=>{n&&n.setImgAttribute(r)},[r]),React.useEffect(()=>{n&&n.setStyle(i),o&&o.setStyle(i)},[i]),React.useEffect(()=>{(n==null?void 0:n.setSize)&&n.setSize(s),o&&o.setSize(s)},[s]);const p=()=>{const a=l==null?void 0:l[d];!(a==null?void 0:a.url)||lbAnnotation.ImgUtils.load(a.url).then(v=>{o.setImgNode(v)})};return React__default.default.createElement("div",{ref:f,className:"annotationOperation"},React__default.default.createElement("div",{className:"canvas",ref:g,style:s,id:"toolContainer"}),(n==null?void 0:n.isImgError)===!0&&React__default.default.createElement(FileError,__spreadProps(__spreadValues({},s),{reloadImage:p,backgroundColor:"#e2e2e2",ignoreOffsetY:!0})))},mapStateToProps=e=>{const t=___default.default.pickBy(e.annotation,(r,i)=>["imgList","imgIndex","stepList","step","toolInstance","annotationEngine","loading"].includes(i));return __spreadValues({imgAttribute:e.imgAttribute,toolStyle:e.toolStyle},t)};var AnnotationOperation$1=reactRedux.connect(mapStateToProps)(AnnotationOperation);module.exports=AnnotationOperation$1;
1
+ "use strict";var index=require("../../../index.js"),es=require("antd/es"),_=require("lodash"),React=require("react"),reactRedux=require("react-redux"),FileError=require("../../../components/fileException/FileError.js"),useSize=require("../../../hooks/useSize.js"),actionCreators=require("../../../store/toolStyle/actionCreators.js"),lbAnnotation=require("@labelbee/lb-annotation"),lbUtils=require("@labelbee/lb-utils");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var ___default=_interopDefaultLegacy(_),React__default=_interopDefaultLegacy(React),__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,r)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,__spreadValues=(e,t)=>{for(var r in t||(t={}))__hasOwnProp.call(t,r)&&__defNormalProp(e,r,t[r]);if(__getOwnPropSymbols)for(var r of __getOwnPropSymbols(t))__propIsEnum.call(t,r)&&__defNormalProp(e,r,t[r]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t));const AnnotationOperation=e=>{const[,t]=React.useState(0),{imgAttribute:r,toolStyle:i,toolInstance:n,annotationEngine:o,imgList:u,imgIndex:g,dataInjectionAtCreation:c,renderEnhance:f,customRenderStyle:l}=e,d=React.useRef(null),p=React.useRef(null),s=useSize(d);React.useEffect(()=>{index.store.dispatch(actionCreators.InitToolStyleConfig())},[]),React.useEffect(()=>{if(!!o){switch(lbUtils.i18n.language){case"cn":case"en":o.setLang(lbUtils.i18n.language);break}o==null||o.setDataInjectionAtCreation(c),o==null||o.setRenderEnhance(f),l&&(o==null||o.setCustomRenderStyle(l))}},[o,c,f,l]),React.useEffect(()=>{n&&(n.singleOn("messageError",a=>{es.message.error(a)}),n.singleOn("messageInfo",a=>{es.message.info(a)}),n.singleOn("changeAnnotationShow",()=>{t(a=>a+1)}))},[n]),React.useEffect(()=>{n&&n.setImgAttribute(r)},[r]),React.useEffect(()=>{n&&n.setStyle(i),o&&o.setStyle(i)},[i]),React.useEffect(()=>{(n==null?void 0:n.setSize)&&n.setSize(s),o&&o.setSize(s)},[s]);const m=()=>{const a=u==null?void 0:u[g];!(a==null?void 0:a.url)||lbAnnotation.ImgUtils.load(a.url).then(v=>{o.setImgNode(v)})};return React__default.default.createElement("div",{ref:d,className:"annotationOperation"},React__default.default.createElement("div",{className:"canvas",ref:p,style:s,id:"toolContainer"}),(n==null?void 0:n.isImgError)===!0&&React__default.default.createElement(FileError,__spreadProps(__spreadValues({},s),{reloadImage:m,backgroundColor:"#e2e2e2",ignoreOffsetY:!0})))},mapStateToProps=e=>{const t=___default.default.pickBy(e.annotation,(r,i)=>["imgList","imgIndex","stepList","step","toolInstance","annotationEngine","loading"].includes(i));return __spreadValues({imgAttribute:e.imgAttribute,toolStyle:e.toolStyle},t)};var AnnotationOperation$1=reactRedux.connect(mapStateToProps)(AnnotationOperation);module.exports=AnnotationOperation$1;
@@ -1 +1 @@
1
- "use strict";var React=require("react"),reactRedux=require("react-redux"),index$1=require("../../../../components/attributeList/index.js"),StepUtils=require("../../../../utils/StepUtils.js"),index=require("../../../../utils/index.js"),reactI18next=require("react-i18next");function _interopDefaultLegacy(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}var React__default=_interopDefaultLegacy(React);const SwitchAttributeList=t=>{var r,i;const[o,c]=React.useState(0),u=React.useRef(null),{toolInstance:e}=t,{t:s}=reactI18next.useTranslation();if(React.useEffect(()=>(e&&e.singleOn("changeAttributeSidebar",a=>{var l;c(n=>n+1),!!u.current&&((l=u.current.children[a])==null||l.scrollIntoView({block:"center"}))}),()=>{e.unbindAll("changeAttributeSidebar")}),[e,u]),!t.stepInfo||index.jsonParser(t.stepInfo.config).attributeConfigurable!==!0)return null;if((e==null?void 0:e.config.attributeConfigurable)===!0&&((r=e==null?void 0:e.config)==null?void 0:r.attributeList)){const a=e.config.attributeList.map(n=>({label:n.key,value:n.value}));a.unshift({label:s("NoAttribute"),value:""});const l=n=>{e.setDefaultAttribute(n),c(f=>f+1)};return React__default.default.createElement("div",null,React__default.default.createElement(index$1.default,{list:a,attributeChanged:l,selectedAttribute:(i=e==null?void 0:e.defaultAttribute)!=null?i:"",ref:u}))}return null},mapStateToProps=t=>{var r,i;const o=StepUtils.getCurrentStepInfo((r=t.annotation)==null?void 0:r.step,(i=t.annotation)==null?void 0:i.stepList);return{toolInstance:t.annotation.toolInstance,stepInfo:o}};var SwitchAttributeList$1=reactRedux.connect(mapStateToProps)(SwitchAttributeList);module.exports=SwitchAttributeList$1;
1
+ "use strict";var React=require("react"),reactRedux=require("react-redux"),index$1=require("../../../../components/attributeList/index.js"),StepUtils=require("../../../../utils/StepUtils.js"),index=require("../../../../utils/index.js"),reactI18next=require("react-i18next");function _interopDefaultLegacy(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}var React__default=_interopDefaultLegacy(React);const SwitchAttributeList=t=>{var i,u,l;const[d,o]=React.useState(0),a=React.useRef(null),{toolInstance:e}=t,{t:c}=reactI18next.useTranslation();React.useEffect(()=>(e&&e.singleOn("changeAttributeSidebar",r=>{var n;o(f=>f+1),!!a.current&&((n=a.current.children[r])==null||n.scrollIntoView({block:"center"}))}),()=>{e.unbindAll("changeAttributeSidebar")}),[e,a]);const s=React.useCallback(r=>{e.setDefaultAttribute(r),o(n=>n+1)},[e]);if(!t.stepInfo||index.jsonParser(t.stepInfo.config).attributeConfigurable!==!0)return null;if(((i=e==null?void 0:e.config)==null?void 0:i.attributeConfigurable)===!0&&((u=e==null?void 0:e.config)==null?void 0:u.attributeList)){const r=e.config.attributeList.map(n=>({label:n.key,value:n.value}));return r.unshift({label:c("NoAttribute"),value:""}),React__default.default.createElement("div",null,React__default.default.createElement(index$1.default,{list:r,attributeChanged:s,selectedAttribute:(l=e==null?void 0:e.defaultAttribute)!=null?l:"",ref:a}))}return null},mapStateToProps=t=>{var i,u;const l=StepUtils.getCurrentStepInfo((i=t.annotation)==null?void 0:i.step,(u=t.annotation)==null?void 0:u.stepList);return{toolInstance:t.annotation.toolInstance,stepInfo:l}};var SwitchAttributeList$1=reactRedux.connect(mapStateToProps)(SwitchAttributeList);module.exports=SwitchAttributeList$1;
@@ -1 +1 @@
1
- "use strict";var React=require("react"),reactRedux=require("react-redux"),useSafeSate=require("../../../../../hooks/useSafeSate.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React);const ZoomLevel=({toolInstance:e})=>{var t;const[,a]=useSafeSate(0);React.useEffect(()=>{e&&e.singleOn("renderZoom",()=>{a(o=>o+1)})},[e]);const r=(t=e==null?void 0:e.zoom)!=null?t:1;return React__default.default.createElement("span",{className:"zoomValue"},(r*100).toFixed(1),"%")},mapStateToProps=e=>({toolInstance:e.annotation.toolInstance});var ZoomLevel$1=reactRedux.connect(mapStateToProps)(ZoomLevel);module.exports=ZoomLevel$1;
1
+ "use strict";var React=require("react"),reactRedux=require("react-redux"),useSafeSate=require("../../../../../hooks/useSafeSate.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React);const ZoomLevel=({toolInstance:e})=>{var t;const[,a]=useSafeSate(0);React.useEffect(()=>{e&&e.on("renderZoom",()=>{a(r=>r+1)})},[e]);const o=(t=e==null?void 0:e.zoom)!=null?t:1;return React__default.default.createElement("span",{className:"zoomValue"},(o*100).toFixed(1),"%")},mapStateToProps=e=>({toolInstance:e.annotation.toolInstance});var ZoomLevel$1=reactRedux.connect(mapStateToProps)(ZoomLevel);module.exports=ZoomLevel$1;
package/es/App.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"App.js","sources":["../src/App.tsx"],"sourcesContent":["import MainView from '@/views/MainView';\nimport { i18n } from '@labelbee/lb-utils';\nimport React, { useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { store } from '.';\nimport { AppState } from './store';\nimport { ANNOTATION_ACTIONS } from './store/Actions';\nimport { InitTaskData, loadImgList } from './store/annotation/actionCreators';\nimport { LoadFileAndFileData } from './store/annotation/reducer';\nimport { ToolInstance } from './store/annotation/types';\nimport {\n GetFileData,\n OnSave,\n OnSubmit,\n IFileItem,\n OnPageChange,\n OnStepChange,\n LoadFileList,\n} from './types/data';\nimport { Footer, Header, Sider } from './types/main';\nimport { IStepInfo } from './types/step';\n\ninterface IAnnotationStyle {\n strokeColor: string;\n fillColor: string;\n textColor: string;\n toolColor: any;\n}\n\nexport interface AppProps {\n exportData?: (data: any[]) => void;\n goBack?: () => void;\n imgList?: IFileItem[];\n config: string;\n stepList: IStepInfo[];\n step: number;\n onSubmit?: OnSubmit;\n onSave?: OnSave;\n onPageChange?: OnPageChange;\n onStepChange?: OnStepChange;\n getFileData?: GetFileData;\n pageSize: number;\n loadFileList?: LoadFileList;\n headerName?: string;\n initialIndex?: number;\n className?: string;\n toolInstance: ToolInstance;\n header?: Header;\n footer?: Footer;\n sider?: Sider;\n style?: {\n layout?: { [key: string]: any };\n header?: { [key: string]: any };\n sider?: { [key: string]: any };\n footer?: { [key: string]: any };\n };\n setToolInstance?: (tool: ToolInstance) => void;\n mode?: 'light' | 'dark'; // 临时需求应用于 toolFooter 的操作\n showTips?: boolean; // 是否展示 tips\n defaultLang: 'en' | 'cn'; // 国际化设置\n leftSider?: () => React.ReactNode | React.ReactNode;\n\n // 标注信息扩展的功能\n dataInjectionAtCreation: (annotationData: any) => {};\n // 渲染增强\n renderEnhance: {\n staticRender?: (canvas: HTMLCanvasElement, data: any, style: IAnnotationStyle) => void;\n selectedRender?: (canvas: HTMLCanvasElement, data: any, style: IAnnotationStyle) => void;\n creatingRender?: (canvas: HTMLCanvasElement, data: any, style: IAnnotationStyle) => void;\n };\n}\n\nconst App: React.FC<AppProps> = (props) => {\n const {\n imgList,\n step = 1,\n stepList,\n onSubmit,\n onSave,\n onPageChange,\n onStepChange,\n initialIndex = 0,\n toolInstance,\n setToolInstance,\n getFileData,\n pageSize = 10,\n loadFileList,\n defaultLang = 'cn',\n } = props;\n\n useEffect(() => {\n store.dispatch(\n InitTaskData({\n onSubmit,\n stepList,\n step,\n getFileData,\n pageSize,\n loadFileList,\n onSave,\n onPageChange,\n onStepChange,\n }),\n );\n\n initImgList();\n // 初始化国际化语言\n i18n.changeLanguage(defaultLang);\n }, []);\n\n useEffect(() => {\n setToolInstance?.(toolInstance);\n }, [toolInstance]);\n\n // 初始化imgList 优先以loadFileList方式加载数据\n const initImgList = () => {\n if (loadFileList) {\n loadImgList(store.dispatch, store.getState, initialIndex, true).then((isSuccess) => {\n if (isSuccess) {\n store.dispatch(LoadFileAndFileData(initialIndex));\n }\n });\n } else if (imgList && imgList.length > 0) {\n store.dispatch({\n type: ANNOTATION_ACTIONS.UPDATE_IMG_LIST,\n payload: {\n imgList,\n },\n });\n store.dispatch(LoadFileAndFileData(initialIndex));\n }\n };\n\n return (\n <div>\n <MainView {...props} />\n </div>\n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n toolInstance: state.annotation.toolInstance,\n});\n\nexport default connect(mapStateToProps)(App);\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAwEA,MAAM,GAAA,GAA0B,CAAC,KAAU,KAAA;AACzC,EAAM,MAAA;AAAA,IACJ,OAAA;AAAA,IACA,IAAO,GAAA,CAAA;AAAA,IACP,QAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAe,GAAA,CAAA;AAAA,IACf,YAAA;AAAA,IACA,eAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAW,GAAA,EAAA;AAAA,IACX,YAAA;AAAA,IACA,WAAc,GAAA,IAAA;AAAA,GACZ,GAAA,KAAA,CAAA;AAEJ,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,KAAA,CAAM,SACJ,YAAa,CAAA;AAAA,MACX,QAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,KAAA,CAAA,CAAA,CAAA;AAIJ,IAAA,WAAA,EAAA,CAAA;AAEA,IAAA,IAAA,CAAK,cAAe,CAAA,WAAA,CAAA,CAAA;AAAA,GACnB,EAAA,EAAA,CAAA,CAAA;AAEH,EAAA,SAAA,CAAU,MAAM;AACd,IAAkB,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAA,YAAA,CAAA,CAAA;AAAA,GAAA,EACjB,CAAC,YAAA,CAAA,CAAA,CAAA;AAGJ,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,YAAc,EAAA;AAChB,MAAY,WAAA,CAAA,KAAA,CAAM,UAAU,KAAM,CAAA,QAAA,EAAU,cAAc,IAAM,CAAA,CAAA,IAAA,CAAK,CAAC,SAAc,KAAA;AAClF,QAAA,IAAI,SAAW,EAAA;AACb,UAAA,KAAA,CAAM,SAAS,mBAAoB,CAAA,YAAA,CAAA,CAAA,CAAA;AAAA,SAAA;AAAA,OAAA,CAAA,CAAA;AAAA,KAG9B,MAAA,IAAA,OAAA,IAAW,OAAQ,CAAA,MAAA,GAAS,CAAG,EAAA;AACxC,MAAA,KAAA,CAAM,QAAS,CAAA;AAAA,QACb,MAAM,kBAAmB,CAAA,eAAA;AAAA,QACzB,OAAS,EAAA;AAAA,UACP,OAAA;AAAA,SAAA;AAAA,OAAA,CAAA,CAAA;AAGJ,MAAA,KAAA,CAAM,SAAS,mBAAoB,CAAA,YAAA,CAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,CAAA;AAIvC,EAAA,uBACG,KAAA,CAAA,aAAA,CAAA,KAAA,EAAD,IACE,kBAAA,KAAA,CAAA,aAAA,CAAC,UAAD,cAAc,CAAA,EAAA,EAAA,KAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAKpB,MAAM,eAAA,GAAkB,CAAC,KAAqB,MAAA;AAAA,EAC5C,YAAA,EAAc,MAAM,UAAW,CAAA,YAAA;AAAA,CAAA,CAAA,CAAA;AAGjC,YAAe,QAAQ,eAAiB,CAAA,CAAA,GAAA,CAAA;;;;"}
1
+ {"version":3,"file":"App.js","sources":["../src/App.tsx"],"sourcesContent":["import MainView from '@/views/MainView';\nimport { i18n } from '@labelbee/lb-utils';\nimport React, { useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { store } from '.';\nimport { AppState } from './store';\nimport { ANNOTATION_ACTIONS } from './store/Actions';\nimport { InitTaskData, loadImgList } from './store/annotation/actionCreators';\nimport { LoadFileAndFileData } from './store/annotation/reducer';\nimport { ToolInstance } from './store/annotation/types';\nimport {\n GetFileData,\n IFileItem,\n LoadFileList,\n OnPageChange,\n OnSave,\n OnStepChange,\n OnSubmit,\n} from './types/data';\nimport { Footer, Header, Sider } from './types/main';\nimport { IStepInfo } from './types/step';\n\ninterface IAnnotationStyle {\n strokeColor: string;\n fillColor: string;\n textColor: string;\n toolColor: any;\n}\n\nexport interface AppProps {\n exportData?: (data: any[]) => void;\n goBack?: () => void;\n imgList?: IFileItem[];\n config: string;\n stepList: IStepInfo[];\n step: number;\n onSubmit?: OnSubmit;\n onSave?: OnSave;\n onPageChange?: OnPageChange;\n onStepChange?: OnStepChange;\n getFileData?: GetFileData;\n pageSize: number;\n loadFileList?: LoadFileList;\n headerName?: string;\n initialIndex?: number;\n className?: string;\n toolInstance: ToolInstance;\n header?: Header;\n footer?: Footer;\n sider?: Sider;\n style?: {\n layout?: { [key: string]: any };\n header?: { [key: string]: any };\n sider?: { [key: string]: any };\n footer?: { [key: string]: any };\n };\n setToolInstance?: (tool: ToolInstance) => void;\n mode?: 'light' | 'dark'; // 临时需求应用于 toolFooter 的操作\n showTips?: boolean; // 是否展示 tips\n defaultLang: 'en' | 'cn'; // 国际化设置\n leftSider?: () => React.ReactNode | React.ReactNode;\n\n // 标注信息扩展的功能\n dataInjectionAtCreation: (annotationData: any) => {};\n // 渲染增强\n renderEnhance: {\n staticRender?: (canvas: HTMLCanvasElement, data: any, style: IAnnotationStyle) => void;\n selectedRender?: (canvas: HTMLCanvasElement, data: any, style: IAnnotationStyle) => void;\n creatingRender?: (canvas: HTMLCanvasElement, data: any, style: IAnnotationStyle) => void;\n };\n customRenderStyle?: (data: any) => IAnnotationStyle;\n}\n\nconst App: React.FC<AppProps> = (props) => {\n const {\n imgList,\n step = 1,\n stepList,\n onSubmit,\n onSave,\n onPageChange,\n onStepChange,\n initialIndex = 0,\n toolInstance,\n setToolInstance,\n getFileData,\n pageSize = 10,\n loadFileList,\n defaultLang = 'cn',\n } = props;\n\n useEffect(() => {\n store.dispatch(\n InitTaskData({\n onSubmit,\n stepList,\n step,\n getFileData,\n pageSize,\n loadFileList,\n onSave,\n onPageChange,\n onStepChange,\n }),\n );\n\n initImgList();\n // 初始化国际化语言\n i18n.changeLanguage(defaultLang);\n }, []);\n\n useEffect(() => {\n setToolInstance?.(toolInstance);\n }, [toolInstance]);\n\n // 初始化imgList 优先以loadFileList方式加载数据\n const initImgList = () => {\n if (loadFileList) {\n loadImgList(store.dispatch, store.getState, initialIndex, true).then((isSuccess) => {\n if (isSuccess) {\n store.dispatch(LoadFileAndFileData(initialIndex));\n }\n });\n } else if (imgList && imgList.length > 0) {\n store.dispatch({\n type: ANNOTATION_ACTIONS.UPDATE_IMG_LIST,\n payload: {\n imgList,\n },\n });\n store.dispatch(LoadFileAndFileData(initialIndex));\n }\n };\n\n return (\n <div>\n <MainView {...props} />\n </div>\n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n toolInstance: state.annotation.toolInstance,\n});\n\nexport default connect(mapStateToProps)(App);\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAyEA,MAAM,GAAA,GAA0B,CAAC,KAAU,KAAA;AACzC,EAAM,MAAA;AAAA,IACJ,OAAA;AAAA,IACA,IAAO,GAAA,CAAA;AAAA,IACP,QAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAe,GAAA,CAAA;AAAA,IACf,YAAA;AAAA,IACA,eAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAW,GAAA,EAAA;AAAA,IACX,YAAA;AAAA,IACA,WAAc,GAAA,IAAA;AAAA,GACZ,GAAA,KAAA,CAAA;AAEJ,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,KAAA,CAAM,SACJ,YAAa,CAAA;AAAA,MACX,QAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,KAAA,CAAA,CAAA,CAAA;AAIJ,IAAA,WAAA,EAAA,CAAA;AAEA,IAAA,IAAA,CAAK,cAAe,CAAA,WAAA,CAAA,CAAA;AAAA,GACnB,EAAA,EAAA,CAAA,CAAA;AAEH,EAAA,SAAA,CAAU,MAAM;AACd,IAAkB,eAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAA,YAAA,CAAA,CAAA;AAAA,GAAA,EACjB,CAAC,YAAA,CAAA,CAAA,CAAA;AAGJ,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,YAAc,EAAA;AAChB,MAAY,WAAA,CAAA,KAAA,CAAM,UAAU,KAAM,CAAA,QAAA,EAAU,cAAc,IAAM,CAAA,CAAA,IAAA,CAAK,CAAC,SAAc,KAAA;AAClF,QAAA,IAAI,SAAW,EAAA;AACb,UAAA,KAAA,CAAM,SAAS,mBAAoB,CAAA,YAAA,CAAA,CAAA,CAAA;AAAA,SAAA;AAAA,OAAA,CAAA,CAAA;AAAA,KAG9B,MAAA,IAAA,OAAA,IAAW,OAAQ,CAAA,MAAA,GAAS,CAAG,EAAA;AACxC,MAAA,KAAA,CAAM,QAAS,CAAA;AAAA,QACb,MAAM,kBAAmB,CAAA,eAAA;AAAA,QACzB,OAAS,EAAA;AAAA,UACP,OAAA;AAAA,SAAA;AAAA,OAAA,CAAA,CAAA;AAGJ,MAAA,KAAA,CAAM,SAAS,mBAAoB,CAAA,YAAA,CAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,CAAA;AAIvC,EAAA,uBACG,KAAA,CAAA,aAAA,CAAA,KAAA,EAAD,IACE,kBAAA,KAAA,CAAA,aAAA,CAAC,UAAD,cAAc,CAAA,EAAA,EAAA,KAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAKpB,MAAM,eAAA,GAAkB,CAAC,KAAqB,MAAA;AAAA,EAC5C,YAAA,EAAc,MAAM,UAAW,CAAA,YAAA;AAAA,CAAA,CAAA,CAAA;AAGjC,YAAe,QAAQ,eAAiB,CAAA,CAAA,GAAA,CAAA;;;;"}
@@ -1 +1 @@
1
- import{editStepWidth as f,sidebarWidth as s,headerHeight as p,footerHeight as g}from"../../data/enums/AnnotationSize.js";import{cKeyCode as u,toolUtils as y}from"@labelbee/lb-annotation";import c,{useState as w,useEffect as C,useMemo as k}from"react";import{connect as v}from"react-redux";import{PageBackward as H,PageForward as E,UpdateRotate as P}from"../../store/annotation/actionCreators.js";const h=u.default,l=c.createContext({width:window.innerWidth,height:window.innerHeight}),m=t=>{const{children:d,dispatch:o}=t,[i]=w(window.innerWidth),[r]=w(window.innerHeight),n=e=>{!y.hotkeyFilter(e)||(e.keyCode===h.A&&o(H()),e.keyCode===h.D&&o(E()),e.keyCode===h.R&&o(P()))};C(()=>(window.addEventListener("keydown",n),()=>{window.removeEventListener("keydown",n)}),[]);const a=k(()=>({width:i,height:r}),[i,r]);return c.createElement(l.Provider,{value:a},d)},W=v(t=>({annotation:t.annotation}))(m),b=(t,d=!1,o=!1)=>{const{width:i,height:r}=t,n=p+g,a=o?40+n+40:n,e=d?f+s:s;return{width:i-e,height:r-a}};export{W as ViewportProvider,m as ViewportProviderComponent,b as getFormatSize,l as viewportContext};
1
+ import{editStepWidth as g,sidebarWidth as w,headerHeight as p,footerHeight as y}from"../../data/enums/AnnotationSize.js";import{cKeyCode as C,toolUtils as v}from"@labelbee/lb-annotation";import l,{useState as f,useEffect as E,useMemo as k}from"react";import{connect as H}from"react-redux";import{PageBackward as P,PageForward as S,UpdateRotate as T,UpdateToolInstance as K}from"../../store/annotation/actionCreators.js";import{message as L}from"antd";const a=C.default,m=l.createContext({width:window.innerWidth,height:window.innerHeight}),u=e=>{const{children:d,dispatch:n}=e,[i]=f(window.innerWidth),[r]=f(window.innerHeight),o=t=>{var c;if(!!v.hotkeyFilter(t)&&(t.keyCode===a.A&&n(P()),t.keyCode===a.D&&n(S()),t.keyCode===a.R&&n(T()),t.shiftKey===!0&&t.ctrlKey===!0&&t.altKey===!0&&t.keyCode===a.C)){L.success("DEVELOPMENT TESTING - Switch Last Two Canvas");const h=(c=e.annotation)==null?void 0:c.annotationEngine.switchLastTwoCanvas();if(!h)return;n(K(h))}};E(()=>(window.addEventListener("keydown",o),()=>{window.removeEventListener("keydown",o)}),[e.annotation.annotationEngine]);const s=k(()=>({width:i,height:r}),[i,r]);return l.createElement(m.Provider,{value:s},d)},W=H(e=>({annotation:e.annotation}))(u),b=(e,d=!1,n=!1)=>{const{width:i,height:r}=e,o=p+y,s=n?40+o+40:o,t=d?g+w:w;return{width:i-t,height:r-s}};export{W as ViewportProvider,u as ViewportProviderComponent,b as getFormatSize,m as viewportContext};
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/customResizeHook/index.tsx"],"sourcesContent":["import {\n editStepWidth,\n footerHeight,\n headerHeight,\n sidebarWidth,\n} from '@/data/enums/AnnotationSize';\nimport { cKeyCode, toolUtils } from '@labelbee/lb-annotation';\n\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\nimport { connect } from 'react-redux';\nimport { AppState } from '@/store';\nimport { UpdateRotate, PageBackward, PageForward } from '@/store/annotation/actionCreators';\nimport { ISize } from '@/types/main';\n\nconst EKeyCode = cKeyCode.default;\n\nexport const viewportContext = React.createContext<{\n width: number;\n height: number;\n}>({\n width: window.innerWidth,\n height: window.innerHeight,\n});\n\nexport const ViewportProviderComponent = (props: any) => {\n const { children, dispatch } = props;\n const [width] = useState(window.innerWidth);\n const [height] = useState(window.innerHeight);\n\n const keydown = (e: KeyboardEvent) => {\n if (!toolUtils.hotkeyFilter(e)) {\n return;\n }\n if (e.keyCode === EKeyCode.A) {\n dispatch(PageBackward());\n }\n\n if (e.keyCode === EKeyCode.D) {\n dispatch(PageForward());\n }\n if (e.keyCode === EKeyCode.R) {\n dispatch(UpdateRotate());\n }\n };\n\n useEffect(() => {\n window.addEventListener('keydown', keydown);\n\n return () => {\n window.removeEventListener('keydown', keydown);\n };\n }, []);\n\n const size = useMemo(() => ({ width, height }), [width, height]);\n\n return <viewportContext.Provider value={size}>{children}</viewportContext.Provider>;\n};\n\nexport const ViewportProvider = connect((state: AppState) => ({\n annotation: state.annotation,\n}))(ViewportProviderComponent);\n\nexport const useViewport = () => {\n const { width, height } = useContext(viewportContext);\n return { width, height };\n};\n\n/**\n * 获取当前 canvas 的大小\n * @param isEdit 是否为编辑模式\n * @param isTips 是否有 tips\n */\nexport const useCanvasViewPort = (isEdit = false, isTips = false) => {\n const { width, height } = useContext(viewportContext);\n const otherHeight = headerHeight + footerHeight;\n const placeholderHeight = isTips ? 40 + otherHeight + 40 : otherHeight;\n const placeholderWidth = isEdit ? editStepWidth + sidebarWidth : sidebarWidth;\n\n return {\n width: width - placeholderWidth,\n height: height - placeholderHeight,\n };\n};\n\n/**\n * 解析当前 windowSize 下的 canvasSize\n * @param size\n * @param isEdit\n * @param isTips\n */\nexport const getFormatSize = (windowSize: ISize, isEdit = false, isTips = false) => {\n const { width, height } = windowSize;\n const otherHeight = headerHeight + footerHeight;\n const placeholderHeight = isTips ? 40 + otherHeight + 40 : otherHeight;\n const placeholderWidth = isEdit ? editStepWidth + sidebarWidth : sidebarWidth;\n\n return {\n width: width - placeholderWidth,\n height: height - placeholderHeight,\n };\n};\n"],"names":[],"mappings":";;;;;;AAcA,MAAM,WAAW,QAAS,CAAA,OAAA,CAAA;AAEb,MAAA,eAAA,GAAkB,MAAM,aAGlC,CAAA;AAAA,EACD,OAAO,MAAO,CAAA,UAAA;AAAA,EACd,QAAQ,MAAO,CAAA,WAAA;AAAA,CAAA,EAAA;AAGJ,MAAA,yBAAA,GAA4B,CAAC,KAAe,KAAA;AACvD,EAAM,MAAA,CAAE,UAAU,QAAa,CAAA,GAAA,KAAA,CAAA;AAC/B,EAAM,MAAA,CAAC,KAAS,CAAA,GAAA,QAAA,CAAS,MAAO,CAAA,UAAA,CAAA,CAAA;AAChC,EAAM,MAAA,CAAC,MAAU,CAAA,GAAA,QAAA,CAAS,MAAO,CAAA,WAAA,CAAA,CAAA;AAEjC,EAAM,MAAA,OAAA,GAAU,CAAC,CAAqB,KAAA;AACpC,IAAI,IAAA,CAAC,SAAU,CAAA,YAAA,CAAa,CAAI,CAAA,EAAA;AAC9B,MAAA,OAAA;AAAA,KAAA;AAEF,IAAI,IAAA,CAAA,CAAE,OAAY,KAAA,QAAA,CAAS,CAAG,EAAA;AAC5B,MAAS,QAAA,CAAA,YAAA,EAAA,CAAA,CAAA;AAAA,KAAA;AAGX,IAAI,IAAA,CAAA,CAAE,OAAY,KAAA,QAAA,CAAS,CAAG,EAAA;AAC5B,MAAS,QAAA,CAAA,WAAA,EAAA,CAAA,CAAA;AAAA,KAAA;AAEX,IAAI,IAAA,CAAA,CAAE,OAAY,KAAA,QAAA,CAAS,CAAG,EAAA;AAC5B,MAAS,QAAA,CAAA,YAAA,EAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,CAAA;AAIb,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAA,CAAO,iBAAiB,SAAW,EAAA,OAAA,CAAA,CAAA;AAEnC,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,oBAAoB,SAAW,EAAA,OAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAAA,GAEvC,EAAA,EAAA,CAAA,CAAA;AAEH,EAAA,MAAM,OAAO,OAAQ,CAAA,QAAS,KAAO,EAAA,MAAA,CAAA,CAAA,EAAW,CAAC,KAAO,EAAA,MAAA,CAAA,CAAA,CAAA;AAExD,EAAO,uBAAA,KAAA,CAAA,aAAA,CAAC,gBAAgB,QAAjB,EAAA;AAAA,IAA0B,KAAO,EAAA,IAAA;AAAA,GAAO,EAAA,QAAA,CAAA,CAAA;AAAA,EAAA;AAGpC,MAAA,gBAAA,GAAmB,OAAQ,CAAA,CAAC,KAAqB,MAAA;AAAA,EAC5D,YAAY,KAAM,CAAA,UAAA;AAAA,CAChB,CAAA,CAAA,CAAA,yBAAA,EAAA;AA8BG,MAAM,gBAAgB,CAAC,UAAA,EAAmB,MAAS,GAAA,KAAA,EAAO,SAAS,KAAU,KAAA;AAClF,EAAM,MAAA,CAAE,OAAO,MAAW,CAAA,GAAA,UAAA,CAAA;AAC1B,EAAA,MAAM,cAAc,YAAe,GAAA,YAAA,CAAA;AACnC,EAAA,MAAM,iBAAoB,GAAA,MAAA,GAAS,EAAK,GAAA,WAAA,GAAc,EAAK,GAAA,WAAA,CAAA;AAC3D,EAAM,MAAA,gBAAA,GAAmB,MAAS,GAAA,aAAA,GAAgB,YAAe,GAAA,YAAA,CAAA;AAEjE,EAAO,OAAA;AAAA,IACL,OAAO,KAAQ,GAAA,gBAAA;AAAA,IACf,QAAQ,MAAS,GAAA,iBAAA;AAAA,GAAA,CAAA;AAAA;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/customResizeHook/index.tsx"],"sourcesContent":["import {\n editStepWidth,\n footerHeight,\n headerHeight,\n sidebarWidth,\n} from '@/data/enums/AnnotationSize';\nimport { cKeyCode, toolUtils } from '@labelbee/lb-annotation';\n\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\nimport { connect } from 'react-redux';\nimport { AppState } from '@/store';\nimport {\n UpdateRotate,\n PageBackward,\n PageForward,\n UpdateToolInstance,\n} from '@/store/annotation/actionCreators';\nimport { ISize } from '@/types/main';\nimport { message } from 'antd';\n\nconst EKeyCode = cKeyCode.default;\n\nexport const viewportContext = React.createContext<{\n width: number;\n height: number;\n}>({\n width: window.innerWidth,\n height: window.innerHeight,\n});\n\nexport const ViewportProviderComponent = (props: any) => {\n const { children, dispatch } = props;\n const [width] = useState(window.innerWidth);\n const [height] = useState(window.innerHeight);\n\n const keydown = (e: KeyboardEvent) => {\n if (!toolUtils.hotkeyFilter(e)) {\n return;\n }\n if (e.keyCode === EKeyCode.A) {\n dispatch(PageBackward());\n }\n\n if (e.keyCode === EKeyCode.D) {\n dispatch(PageForward());\n }\n if (e.keyCode === EKeyCode.R) {\n dispatch(UpdateRotate());\n }\n\n /**\n * Hidden Feature\n *\n * User: Software Engineer\n */\n if (\n e.shiftKey === true &&\n e.ctrlKey === true &&\n e.altKey === true &&\n e.keyCode === EKeyCode.C\n ) {\n message.success('DEVELOPMENT TESTING - Switch Last Two Canvas');\n const newInstance = props.annotation?.annotationEngine.switchLastTwoCanvas();\n if (!newInstance) {\n return;\n }\n dispatch(UpdateToolInstance(newInstance));\n }\n };\n\n useEffect(() => {\n window.addEventListener('keydown', keydown);\n\n return () => {\n window.removeEventListener('keydown', keydown);\n };\n }, [props.annotation.annotationEngine]);\n\n const size = useMemo(() => ({ width, height }), [width, height]);\n\n return <viewportContext.Provider value={size}>{children}</viewportContext.Provider>;\n};\n\nexport const ViewportProvider = connect((state: AppState) => ({\n annotation: state.annotation,\n}))(ViewportProviderComponent);\n\nexport const useViewport = () => {\n const { width, height } = useContext(viewportContext);\n return { width, height };\n};\n\n/**\n * 获取当前 canvas 的大小\n * @param isEdit 是否为编辑模式\n * @param isTips 是否有 tips\n */\nexport const useCanvasViewPort = (isEdit = false, isTips = false) => {\n const { width, height } = useContext(viewportContext);\n const otherHeight = headerHeight + footerHeight;\n const placeholderHeight = isTips ? 40 + otherHeight + 40 : otherHeight;\n const placeholderWidth = isEdit ? editStepWidth + sidebarWidth : sidebarWidth;\n\n return {\n width: width - placeholderWidth,\n height: height - placeholderHeight,\n };\n};\n\n/**\n * 解析当前 windowSize 下的 canvasSize\n * @param size\n * @param isEdit\n * @param isTips\n */\nexport const getFormatSize = (windowSize: ISize, isEdit = false, isTips = false) => {\n const { width, height } = windowSize;\n const otherHeight = headerHeight + footerHeight;\n const placeholderHeight = isTips ? 40 + otherHeight + 40 : otherHeight;\n const placeholderWidth = isEdit ? editStepWidth + sidebarWidth : sidebarWidth;\n\n return {\n width: width - placeholderWidth,\n height: height - placeholderHeight,\n };\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import{PointCloud as r}from"@labelbee/lb-annotation";import i,{useRef as n,useEffect as l}from"react";const c="LABELBEE-POINTCLOUD";let o;const u=()=>{const t=n(null),e=n();return l(()=>{t.current&&(e.current=new r({container:t.current}),e.current.loadPCDFile("http://10.53.25.142:8001/1/000001.pcd",()=>{}),o=e.current)},[]),i.createElement("div",{id:c,ref:t,style:{height:540,width:"100%"}})};export{u as default,o as pointCloudMain};
@@ -0,0 +1 @@
1
+ import{getClassName as t}from"../../utils/dom.js";import a from"classnames";import e from"react";const c=({title:l,toolbar:n,children:r,className:o})=>(console.log(a([o,t("point-cloud-container")])),e.createElement("div",{className:a([o,t("point-cloud-container")])},e.createElement("div",{className:t("point-cloud-container","header")},e.createElement("span",null,l),n&&e.createElement("span",null,n)),e.createElement("div",null,r)));export{c as PointCloudContainer};
@@ -0,0 +1 @@
1
+ import{CanvasSchduler as P,PointCloud as b,PolygonOperation as L,MathUtils as f,cTool as E}from"@labelbee/lb-annotation";import{EPerspectiveView as R}from"@labelbee/lb-utils";import M,{useRef as O,useEffect as I}from"react";import{pointCloudMain as g}from"./PointCloud3DView.js";const{EPolygonPattern:S}=E,T=n=>{const t=document.createElement("canvas");t.width=n.width,t.height=n.height;const e=t.getContext("2d");return e?(e.fillStyle="black",e.fillRect(0,0,n.width,n.height),t.toDataURL()):""},w=(n,t,e=1)=>{const{width:h,height:d}=t,r={x:n.x+h*e/2,y:n.y+d*e/2},m={x:t.width/2,y:t.height/2};return{offsetX:(m.x-r.x)/e,offsetY:-(m.y-r.y)/e}},j=(n,t)=>{const{width:e,height:h}=t,{x:d,y:r}=n;return{x:-r+h/2,y:-(d-e/2)}},D=()=>{const n=O(null);return I(()=>{if(n.current){const t={width:n.current.clientWidth,height:n.current.clientHeight},e={left:-t.width/2,right:t.width/2,top:t.height/2,bottom:-t.height/2,near:100,far:-100},h=n.current,d=T(t),r=new Image;r.src=d,r.onload=()=>{const m=new P({container:h}),o=new b({container:h,noAppend:!0,isOrthographicCamera:!0,orthgraphicParams:e});o.loadPCDFile("http://10.53.25.142:8001/1/000001.pcd"),m.createCanvas(o.renderer.domElement);const l=new L({container:n.current,size:t,config:"{ textConfigurable: false }",imgNode:r,isAppend:!1});l.eventBinding(),l.setPattern(S.Rect),l.on("polygonCreated",s=>{const[a,i,c]=s.pointList.map(y=>j(y,t)),p=f.getLineCenterPoint([a,c]),C=f.getLineLength(a,i),x=f.getLineLength(i,c),v=f.getRadiusFromQuadrangle(s.pointList),u={center:{x:p.x,y:p.y,z:1},volume:{width:x,height:C,depth:10},rotation:v};g.generateBox(u),g.updateCamera(u,R.Front),g.controls.update(),g.render()}),l.on("renderZoom",(s,a)=>{const{offsetX:i,offsetY:c}=w(a,t,s);o.camera.zoom=s,a&&(o.camera.left=e.left+i,o.camera.right=e.right+i,o.camera.top=e.top+c,o.camera.bottom=e.bottom+c),o.camera.updateProjectionMatrix(),o.render()}),l.on("dragMove",({currentPos:s,zoom:a})=>{const{offsetX:i,offsetY:c}=w(s,t,a);o.camera.zoom=a,o.camera.left=e.left+i,o.camera.right=e.right+i,o.camera.top=e.top+c,o.camera.bottom=e.bottom+c,o.camera.updateProjectionMatrix(),o.render()}),m.createCanvas(l.canvas,{size:t})}}},[]),M.createElement("div",{style:{width:"100%",height:500},ref:n})};export{D as default};
@@ -0,0 +1 @@
1
+ import{getClassName as t}from"../../utils/dom.js";import e from"react";import l from"./PointCloud3DView.js";import{PointCloudContainer as o}from"./PointCloudLayout.js";import i from"./PointCloudTopView.js";const n=()=>e.createElement("div",{className:t("point-cloud-wrapper")},e.createElement("div",{className:t("point-cloud-container","left")},e.createElement(o,{className:t("point-cloud-2d-container"),title:"2D\u89C6\u56FE"},e.createElement("div",{className:t("point-cloud-2d-image")},e.createElement("img",{src:"http://10.53.25.142:8001/1/000001.jpg",width:"100%"}))),e.createElement(o,{className:t("point-cloud-3d-container"),title:"3D\u89C6\u56FE"},e.createElement(l,null))),e.createElement("div",{className:t("point-cloud-container","right")},e.createElement(o,{className:t("point-cloud-container","top-view"),title:"\u4FEF\u89C6\u56FE"},e.createElement(i,null)),e.createElement("div",{className:t("point-cloud-container","right-bottom")},e.createElement(o,{className:t("point-cloud-container","side-view"),title:"\u4FA7\u89C6\u56FE"},e.createElement("div",null)),e.createElement(o,{className:t("point-cloud-container","back-view"),title:"\u80CC\u89C6\u56FE"},e.createElement("div",null)))));export{n as default};
@@ -1 +1 @@
1
- import e from"react";import{getClassName as o}from"../../../../utils/dom.js";import{PauseOutlined as y,CaretRightOutlined as N,CaretUpOutlined as C,CaretDownOutlined as T}from"@ant-design/icons";import{VideoPlayerCtx as c}from"../../index.js";import{Pagination as x}from"../../../../views/MainView/toolFooter/Pagination.js";import P from"../../../../assets/annotation/video/icon_keyboard_h.svg.js";import h from"../../../../views/MainView/toolFooter/FooterTips/ToolHotKey/index.js";import{useTranslation as u}from"react-i18next";import{decimalReserved as d}from"../../utils.js";import{cTool as w}from"@labelbee/lb-annotation";const{EVideoToolName:V}=w,p=t=>{const n=Math.floor(t/60),r=~~(t%60).toFixed(),a=(t*10).toString().split("").pop(),l=s=>s<10?`0${s}`:s;return`${l(n)}:${l(r)}:${a}`},k=()=>{const{currentTime:t,duration:n,buffered:r,setCurrentTime:a}=e.useContext(c),l=e.useRef(null),s=`${d(r/n*100,1)}%`,m=`${d(t/n*100,1)}%`,v=i=>{if(l.current){const E=i.clientX,f=l.current.clientWidth,g=d(E/f*n,1);a(g)}};return e.createElement("div",{className:o("video-progress"),ref:l,onClick:i=>{i.stopPropagation(),i.nativeEvent.stopImmediatePropagation(),v(i)}},e.createElement("div",{className:o("video-slider")},e.createElement("div",{className:o("video-slider","played"),style:{width:m}}),e.createElement("div",{className:o("video-slider","loaded"),style:{width:s}}),e.createElement("div",{className:o("video-slider","played"),style:{width:m}})),e.createElement("div",{className:o("video-slider-bar"),style:{left:m}}))},b=()=>{const{updateNextPlaybackRate:t,playbackRate:n}=e.useContext(c),{t:r}=u();return e.createElement("span",{className:o("video-controller","speed")},e.createElement("span",null,r("Speed")),e.createElement("span",{className:o("video-controller","speedNum")},`${n}x`),e.createElement("span",{className:o("video-controller","speedButton")},e.createElement(C,{onClick:()=>{t()}}),e.createElement(T,{onClick:()=>{t(!1)}})))},$=()=>{const{t}=u();return e.createElement(h,{title:e.createElement("span",{className:o("video-controller","hotkey")},e.createElement("img",{src:P}),t("Hotkeys")),style:{},toolName:V.VideoTagTool})},R=()=>{const{imgIndex:t,imgList:n,pageBackward:r,pageJump:a,pageForward:l}=e.useContext(c);return e.createElement(x,{isVideo:!0,pageBackward:r,imgIndex:t,pageJump:a,totalPage:n.length,pageForward:l,footerCls:o("video-controller")})},j=()=>{const{currentTime:t,duration:n}=e.useContext(c),r=(n*10-t*10)/10;return e.createElement("div",{className:o("video-controller","time")},`${p(t)} / -${p(r)}`)},F=()=>{const{playPause:t,isPlay:n}=e.useContext(c);return e.createElement("div",{className:o("video-controller","wrapper")},e.createElement(k,null),e.createElement("div",{className:o("video-controller")},e.createElement("span",{onClick:()=>{t()},className:o("video-controller","playButton")},n?e.createElement(y,null):e.createElement(N,null)),e.createElement(j,null),e.createElement(b,null),e.createElement("div",{className:o("video-controller","holder")}),e.createElement(R,null),e.createElement($,null)))};export{F as default};
1
+ import e from"react";import{getClassName as o}from"../../../../utils/dom.js";import{PauseOutlined as y,CaretRightOutlined as N,CaretUpOutlined as C,CaretDownOutlined as T}from"@ant-design/icons";import{VideoPlayerCtx as c}from"../../index.js";import{Pagination as x}from"../../../../views/MainView/toolFooter/Pagination.js";import P from"../../../../assets/annotation/video/icon_keyboard_h.svg.js";import h from"../../../../views/MainView/toolFooter/FooterTips/ToolHotKey/index.js";import{useTranslation as u}from"react-i18next";import{decimalReserved as d}from"../../utils.js";import{cTool as w}from"@labelbee/lb-annotation";const{EVideoToolName:V}=w,p=t=>{const n=Math.floor(t/60),r=~~(t%60).toFixed(),a=(t*10).toString().split("").pop(),l=s=>s<10?`0${s}`:s;return`${l(n)}:${l(r)}:${a}`},k=()=>{const{currentTime:t,duration:n,buffered:r,setCurrentTime:a}=e.useContext(c),l=e.useRef(null),s=`${d(r/n*100,1)}%`,m=`${d(t/n*100,1)}%`,v=i=>{if(l.current){const E=i.clientX,f=l.current.clientWidth,g=d(E/f*n,1);a(g)}};return e.createElement("div",{className:o("video-progress"),ref:l,onClick:i=>{i.stopPropagation(),i.nativeEvent.stopImmediatePropagation(),v(i)}},e.createElement("div",{className:o("video-slider")},e.createElement("div",{className:o("video-slider","played"),style:{width:m}}),e.createElement("div",{className:o("video-slider","loaded"),style:{width:s}}),e.createElement("div",{className:o("video-slider","played"),style:{width:m}})),e.createElement("div",{className:o("video-slider-bar"),style:{left:m}}))},b=()=>{const{updateNextPlaybackRate:t,playbackRate:n}=e.useContext(c),{t:r}=u();return e.createElement("span",{className:o("video-controller","speed")},e.createElement("span",null,r("Speed")),e.createElement("span",{className:o("video-controller","speedNum")},`${n}x`),e.createElement("span",{className:o("video-controller","speedButton")},e.createElement(C,{onClick:()=>{t()}}),e.createElement(T,{onClick:()=>{t(!1)}})))},$=()=>{const{t}=u();return e.createElement(h,{title:e.createElement("span",{className:o("video-controller","hotkey")},e.createElement("img",{src:P}),t("Hotkeys")),style:{},toolName:V.VideoTagTool})},R=()=>{const{imgIndex:t,imgList:n,pageBackward:r,pageJump:a,pageForward:l}=e.useContext(c);return e.createElement(x,{isVideo:!0,pageBackward:r,imgIndex:t,pageJump:a,totalPage:n.length,pageForward:l,footerCls:o("video-controller")})},j=()=>{const{currentTime:t,duration:n}=e.useContext(c),r=n*10-t*10,a=(r>0?r:0)/10;return e.createElement("div",{className:o("video-controller","time")},`${p(t)} / -${p(a)}`)},F=()=>{const{playPause:t,isPlay:n}=e.useContext(c);return e.createElement("div",{className:o("video-controller","wrapper")},e.createElement(k,null),e.createElement("div",{className:o("video-controller")},e.createElement("span",{onClick:()=>{t()},className:o("video-controller","playButton")},n?e.createElement(y,null):e.createElement(N,null)),e.createElement(j,null),e.createElement(b,null),e.createElement("div",{className:o("video-controller","holder")}),e.createElement(R,null),e.createElement($,null)))};export{F as default};
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/videoPlayer/components/controller/index.tsx"],"sourcesContent":["import React from 'react';\nimport { getClassName } from '@/utils/dom';\nimport {\n CaretRightOutlined,\n CaretUpOutlined,\n CaretDownOutlined,\n PauseOutlined,\n} from '@ant-design/icons';\nimport { VideoPlayerCtx } from '../..';\nimport { Pagination } from '@/views/MainView/toolFooter/Pagination';\nimport hotkey from '@/assets/annotation/video/icon_keyboard_h.svg';\nimport ToolHotKey from '@/views/MainView/toolFooter/FooterTips/ToolHotKey';\nimport { useTranslation } from 'react-i18next';\nimport { decimalReserved } from '../../utils';\nimport { cTool } from '@labelbee/lb-annotation';\nconst { EVideoToolName } = cTool;\n\n/**\n * Format video time to display\n * Such as 61.9 => 01:01:9\n * @param {Number} time\n * @returns {String} displayTime (min:sec:mircoSec)\n */\nconst videoTimeFormat = (time: number) => {\n const min = Math.floor(time / 60);\n const sec = ~~(time % 60).toFixed();\n const minSec = (time * 10).toString().split('').pop();\n const fillZero = (num: number) => (num < 10 ? `0${num}` : num);\n return `${fillZero(min)}:${fillZero(sec)}:${minSec}`;\n};\n\nconst VideoProgress = () => {\n const { currentTime, duration, buffered, setCurrentTime } = React.useContext(VideoPlayerCtx);\n const progressRef = React.useRef<HTMLDivElement>(null);\n const bufferLoadedPercent = `${decimalReserved((buffered / duration) * 100, 1)}%`;\n const playedPercent = `${decimalReserved((currentTime / duration) * 100, 1)}%`;\n const toCurrentTime = (event: React.MouseEvent<HTMLDivElement>) => {\n if (progressRef.current) {\n const offsetX = event.clientX;\n const width = progressRef.current.clientWidth;\n const toTime = decimalReserved((offsetX / width) * duration, 1);\n setCurrentTime(toTime);\n }\n };\n\n return (\n <div\n className={getClassName('video-progress')}\n ref={progressRef}\n onClick={(event: React.MouseEvent<HTMLDivElement>) => {\n event.stopPropagation();\n event.nativeEvent.stopImmediatePropagation();\n toCurrentTime(event);\n }}\n >\n <div className={getClassName('video-slider')}>\n <div className={getClassName('video-slider', 'played')} style={{ width: playedPercent }} />\n <div\n className={getClassName('video-slider', 'loaded')}\n style={{ width: bufferLoadedPercent }}\n />\n <div className={getClassName('video-slider', 'played')} style={{ width: playedPercent }} />\n </div>\n\n <div className={getClassName('video-slider-bar')} style={{ left: playedPercent }} />\n </div>\n );\n};\n\nconst VideoSpeedButton = () => {\n const { updateNextPlaybackRate, playbackRate } = React.useContext(VideoPlayerCtx);\n const { t } = useTranslation();\n\n return (\n <span className={getClassName('video-controller', 'speed')}>\n <span>{t('Speed')}</span>\n <span className={getClassName('video-controller', 'speedNum')}>{`${playbackRate}x`}</span>\n <span className={getClassName('video-controller', 'speedButton')}>\n <CaretUpOutlined\n onClick={() => {\n updateNextPlaybackRate();\n }}\n />\n <CaretDownOutlined\n onClick={() => {\n updateNextPlaybackRate(false);\n }}\n />\n </span>\n </span>\n );\n};\n\nconst VideoHotKeys = () => {\n const { t } = useTranslation();\n return (\n <ToolHotKey\n title={\n <span className={getClassName('video-controller', 'hotkey')}>\n <img src={hotkey} />\n {t('Hotkeys')}\n </span>\n }\n style={{}}\n toolName={EVideoToolName.VideoTagTool}\n />\n );\n};\n\nconst VideoPageChange = () => {\n const { imgIndex, imgList, pageBackward, pageJump, pageForward } =\n React.useContext(VideoPlayerCtx);\n\n return (\n <Pagination\n isVideo={true}\n pageBackward={pageBackward}\n imgIndex={imgIndex}\n pageJump={pageJump}\n totalPage={imgList.length}\n pageForward={pageForward}\n footerCls={getClassName('video-controller')}\n />\n );\n};\n\nconst VideoTime = () => {\n const { currentTime, duration } = React.useContext(VideoPlayerCtx);\n const remaingTime = (duration * 10 - currentTime * 10) / 10;\n\n return (\n <div className={getClassName('video-controller', 'time')}>\n {`${videoTimeFormat(currentTime)} / -${videoTimeFormat(remaingTime)}`}\n </div>\n );\n};\n\nconst VideoController = () => {\n const { playPause, isPlay } = React.useContext(VideoPlayerCtx);\n\n return (\n <div className={getClassName('video-controller', 'wrapper')}>\n <VideoProgress />\n <div className={getClassName('video-controller')}>\n <span\n onClick={() => {\n playPause();\n }}\n className={getClassName('video-controller', 'playButton')}\n >\n {isPlay ? <PauseOutlined /> : <CaretRightOutlined />}\n </span>\n <VideoTime />\n <VideoSpeedButton />\n <div className={getClassName('video-controller', 'holder')} />\n <VideoPageChange />\n <VideoHotKeys />\n </div>\n </div>\n );\n};\n\nexport default VideoController;\n"],"names":["hotkey"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/videoPlayer/components/controller/index.tsx"],"sourcesContent":["import React from 'react';\nimport { getClassName } from '@/utils/dom';\nimport {\n CaretRightOutlined,\n CaretUpOutlined,\n CaretDownOutlined,\n PauseOutlined,\n} from '@ant-design/icons';\nimport { VideoPlayerCtx } from '../..';\nimport { Pagination } from '@/views/MainView/toolFooter/Pagination';\nimport hotkey from '@/assets/annotation/video/icon_keyboard_h.svg';\nimport ToolHotKey from '@/views/MainView/toolFooter/FooterTips/ToolHotKey';\nimport { useTranslation } from 'react-i18next';\nimport { decimalReserved } from '../../utils';\nimport { cTool } from '@labelbee/lb-annotation';\nconst { EVideoToolName } = cTool;\n\n/**\n * Format video time to display\n * Such as 61.9 => 01:01:9\n * @param {Number} time\n * @returns {String} displayTime (min:sec:mircoSec)\n */\nconst videoTimeFormat = (time: number) => {\n const min = Math.floor(time / 60);\n const sec = ~~(time % 60).toFixed();\n const minSec = (time * 10).toString().split('').pop();\n const fillZero = (num: number) => (num < 10 ? `0${num}` : num);\n return `${fillZero(min)}:${fillZero(sec)}:${minSec}`;\n};\n\nconst VideoProgress = () => {\n const { currentTime, duration, buffered, setCurrentTime } = React.useContext(VideoPlayerCtx);\n const progressRef = React.useRef<HTMLDivElement>(null);\n const bufferLoadedPercent = `${decimalReserved((buffered / duration) * 100, 1)}%`;\n const playedPercent = `${decimalReserved((currentTime / duration) * 100, 1)}%`;\n const toCurrentTime = (event: React.MouseEvent<HTMLDivElement>) => {\n if (progressRef.current) {\n const offsetX = event.clientX;\n const width = progressRef.current.clientWidth;\n const toTime = decimalReserved((offsetX / width) * duration, 1);\n setCurrentTime(toTime);\n }\n };\n\n return (\n <div\n className={getClassName('video-progress')}\n ref={progressRef}\n onClick={(event: React.MouseEvent<HTMLDivElement>) => {\n event.stopPropagation();\n event.nativeEvent.stopImmediatePropagation();\n toCurrentTime(event);\n }}\n >\n <div className={getClassName('video-slider')}>\n <div className={getClassName('video-slider', 'played')} style={{ width: playedPercent }} />\n <div\n className={getClassName('video-slider', 'loaded')}\n style={{ width: bufferLoadedPercent }}\n />\n <div className={getClassName('video-slider', 'played')} style={{ width: playedPercent }} />\n </div>\n\n <div className={getClassName('video-slider-bar')} style={{ left: playedPercent }} />\n </div>\n );\n};\n\nconst VideoSpeedButton = () => {\n const { updateNextPlaybackRate, playbackRate } = React.useContext(VideoPlayerCtx);\n const { t } = useTranslation();\n\n return (\n <span className={getClassName('video-controller', 'speed')}>\n <span>{t('Speed')}</span>\n <span className={getClassName('video-controller', 'speedNum')}>{`${playbackRate}x`}</span>\n <span className={getClassName('video-controller', 'speedButton')}>\n <CaretUpOutlined\n onClick={() => {\n updateNextPlaybackRate();\n }}\n />\n <CaretDownOutlined\n onClick={() => {\n updateNextPlaybackRate(false);\n }}\n />\n </span>\n </span>\n );\n};\n\nconst VideoHotKeys = () => {\n const { t } = useTranslation();\n return (\n <ToolHotKey\n title={\n <span className={getClassName('video-controller', 'hotkey')}>\n <img src={hotkey} />\n {t('Hotkeys')}\n </span>\n }\n style={{}}\n toolName={EVideoToolName.VideoTagTool}\n />\n );\n};\n\nconst VideoPageChange = () => {\n const { imgIndex, imgList, pageBackward, pageJump, pageForward } =\n React.useContext(VideoPlayerCtx);\n\n return (\n <Pagination\n isVideo={true}\n pageBackward={pageBackward}\n imgIndex={imgIndex}\n pageJump={pageJump}\n totalPage={imgList.length}\n pageForward={pageForward}\n footerCls={getClassName('video-controller')}\n />\n );\n};\n\nconst VideoTime = () => {\n const { currentTime, duration } = React.useContext(VideoPlayerCtx);\n const remained10x = duration * 10 - currentTime * 10;\n const remaingTime = (remained10x > 0 ? remained10x : 0) / 10;\n\n return (\n <div className={getClassName('video-controller', 'time')}>\n {`${videoTimeFormat(currentTime)} / -${videoTimeFormat(remaingTime)}`}\n </div>\n );\n};\n\nconst VideoController = () => {\n const { playPause, isPlay } = React.useContext(VideoPlayerCtx);\n\n return (\n <div className={getClassName('video-controller', 'wrapper')}>\n <VideoProgress />\n <div className={getClassName('video-controller')}>\n <span\n onClick={() => {\n playPause();\n }}\n className={getClassName('video-controller', 'playButton')}\n >\n {isPlay ? <PauseOutlined /> : <CaretRightOutlined />}\n </span>\n <VideoTime />\n <VideoSpeedButton />\n <div className={getClassName('video-controller', 'holder')} />\n <VideoPageChange />\n <VideoHotKeys />\n </div>\n </div>\n );\n};\n\nexport default VideoController;\n"],"names":["hotkey"],"mappings":"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"}
@@ -1 +1 @@
1
- import r from"react";import D from"./components/controller/index.js";import{getClassName as d}from"../../utils/dom.js";import{cKeyCode as I}from"@labelbee/lb-annotation";import{decimalReserved as h}from"./utils.js";import N from"../fileException/index.js";const s=I.default,u=r.createContext({isPlay:!1,playPause:()=>{},updateNextPlaybackRate:()=>{},playbackRate:1,currentTime:0,duration:0,buffered:0,setCurrentTime:()=>{},imgList:[],imgIndex:-1,pageBackward:()=>{},pageJump:f=>{},pageForward:()=>{}}),L=50,m=.1,l=[.5,1,1.5,2,4,6,8,16];class c extends r.Component{constructor(i){super(i);this.changePlaybackPate=e=>{this.videoElm&&(this.videoElm.playbackRate=e,this.setState({playbackRate:e}))},this.playPause=()=>{var e,t,a;((e=this.videoElm)==null?void 0:e.paused)?(t=this.videoElm)==null||t.play():(a=this.videoElm)==null||a.pause()},this.updateNextPlaybackRate=(e=!0)=>{const t=l.findIndex(o=>o===this.state.playbackRate);let a=e?Math.min(t+1,l.length-1):Math.max(t-1,0);this.changePlaybackPate(l[a])},this.fastForward=()=>{this.videoElm&&this.setCurrentTime(this.videoElm.currentTime+m)},this.rewind=()=>{this.videoElm&&this.setCurrentTime(this.videoElm.currentTime-m)},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.onVideoStopped=()=>{this.setState({isPlay:!1}),this.timeInterval&&(clearInterval(this.timeInterval),this.timeInterval=void 0)},this.onVideoStart=()=>{this.timeInterval=window.setInterval(()=>{var e,t,a;if(this.videoElm)try{if(((e=this.videoElm)==null?void 0:e.buffered.length)>0){const o=(t=this.videoElm)==null?void 0:t.buffered.end(0);this.setState({currentTime:h((a=this.videoElm)==null?void 0:a.currentTime,1),buffered:o})}}catch(o){console.error(o)}},L)},this.resetVideoData=()=>{this.setState({currentTime:0,buffered:0,error:!1,isPlay:!1}),this.onVideoStopped()},this.setDuration=()=>{var e;if(this.videoElm){const t=h((e=this.videoElm)==null?void 0:e.duration,1);this.setState({duration:t})}},this.setCurrentTime=e=>{this.videoElm&&(this.videoElm.currentTime=e,this.setState({currentTime:e}))},this.reload=()=>{var e;(e=this.videoElm)==null||e.load()},this.onError=()=>{this.resetVideoData(),this.setState({error:!0})},this.state={playbackRate:1,currentTime:0,isPlay:!1,duration:0,buffered:0,error:!1},this.videoRef=r.createRef()}get videoElm(){var i;return(i=this.videoRef)==null?void 0:i.current}get videoSrc(){var i,e;const{imgIndex:t,imgList:a}=this.props;return t>-1&&(e=(i=a[t])==null?void 0:i.url)!=null?e:""}componentDidMount(){var i,e;window.addEventListener("keydown",this.keydown),((i=this.videoRef)==null?void 0:i.current)&&this.props.setVideoRef&&this.props.setVideoRef((e=this.videoRef)==null?void 0:e.current)}componentWillUnmount(){window.removeEventListener("keydown",this.keydown)}render(){const{isPlay:i,playbackRate:e,currentTime:t,duration:a,buffered:o,error:p}=this.state,{imgList:v,imgIndex:y,pageBackward:E,pageJump:P,pageForward:R,valid:b}=this.props,{playPause:n,updateNextPlaybackRate:g,onPause:k,onPlay:w,resetVideoData:x,setDuration:C,setCurrentTime:S,onError:T,videoRef:_,videoSrc:V}=this;return r.createElement(u.Provider,{value:{videoRef:this.videoRef,isPlay:i,playPause:n,updateNextPlaybackRate:g,playbackRate:e,currentTime:t,duration:a,buffered:o,setCurrentTime:S,imgIndex:y,imgList:v,pageBackward:E,pageJump:P,pageForward:R}},r.createElement("div",{className:d("video-wrapper")},r.createElement("div",{className:d("video-container")},r.createElement("video",{ref:_,className:d("video"),src:V,onPause:k,onPlay:w,onLoadedMetadata:x,onError:T,onDurationChange:C,width:"100%",height:"100%",onClick:n}),r.createElement(N,{fileType:"video",errorProps:{reloadImage:this.reload,backgroundColor:"#e2e2e2",ignoreOffsetY:!0,isError:p},invalidProps:{isValid:b}})),r.createElement(D,null)))}}export{c as VideoPlayer,u as VideoPlayerCtx,c as default};
1
+ import r from"react";import D from"./components/controller/index.js";import{getClassName as d}from"../../utils/dom.js";import{cKeyCode as I}from"@labelbee/lb-annotation";import{decimalReserved as h}from"./utils.js";import N from"../fileException/index.js";const s=I.default,u=r.createContext({isPlay:!1,playPause:()=>{},updateNextPlaybackRate:()=>{},playbackRate:1,currentTime:0,duration:0,buffered:0,setCurrentTime:()=>{},imgList:[],imgIndex:-1,pageBackward:()=>{},pageJump:f=>{},pageForward:()=>{}}),L=50,m=.1,l=[.5,1,1.5,2,4,6,8,16];class c extends r.Component{constructor(i){super(i);this.changePlaybackPate=e=>{this.videoElm&&(this.videoElm.playbackRate=e,this.setState({playbackRate:e}))},this.playPause=()=>{var e,t,a;((e=this.videoElm)==null?void 0:e.paused)?(t=this.videoElm)==null||t.play():(a=this.videoElm)==null||a.pause()},this.updateNextPlaybackRate=(e=!0)=>{const t=l.findIndex(o=>o===this.state.playbackRate);let a=e?Math.min(t+1,l.length-1):Math.max(t-1,0);this.changePlaybackPate(l[a])},this.fastForward=()=>{this.videoElm&&this.setCurrentTime(this.videoElm.currentTime+m)},this.rewind=()=>{this.videoElm&&this.setCurrentTime(this.videoElm.currentTime-m)},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.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,a;if(this.videoElm)try{if(((e=this.videoElm)==null?void 0:e.buffered.length)>0){const o=(t=this.videoElm)==null?void 0:t.buffered.end(0);this.setState({currentTime:h((a=this.videoElm)==null?void 0:a.currentTime,1),buffered:o})}}catch(o){console.error(o)}},L)},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;if(this.videoElm){const t=h((e=this.videoElm)==null?void 0:e.duration,1);this.setState({duration:t})}},this.setCurrentTime=e=>{this.videoElm&&(this.videoElm.currentTime=e,this.setState({currentTime:e}))},this.reload=()=>{var e;(e=this.videoElm)==null||e.load()},this.onError=()=>{this.resetVideoData(),this.setState({error:!0})},this.state={playbackRate:1,currentTime:0,isPlay:!1,duration:0,buffered:0,error:!1},this.videoRef=r.createRef()}get videoElm(){var i;return(i=this.videoRef)==null?void 0:i.current}get videoSrc(){var i,e;const{imgIndex:t,imgList:a}=this.props;return t>-1&&(e=(i=a[t])==null?void 0:i.url)!=null?e:""}componentDidMount(){var i,e;window.addEventListener("keydown",this.keydown),((i=this.videoRef)==null?void 0:i.current)&&this.props.setVideoRef&&this.props.setVideoRef((e=this.videoRef)==null?void 0:e.current)}componentWillUnmount(){window.removeEventListener("keydown",this.keydown)}render(){const{isPlay:i,playbackRate:e,currentTime:t,duration:a,buffered:o,error:v}=this.state,{imgList:p,imgIndex:y,pageBackward:E,pageJump:P,pageForward:R,valid:b}=this.props,{playPause:n,updateNextPlaybackRate:k,onPause:g,onPlay:w,resetVideoData:C,setDuration:x,setCurrentTime:T,onError:S,videoRef:_,videoSrc:V}=this;return r.createElement(u.Provider,{value:{videoRef:this.videoRef,isPlay:i,playPause:n,updateNextPlaybackRate:k,playbackRate:e,currentTime:t,duration:a,buffered:o,setCurrentTime:T,imgIndex:y,imgList:p,pageBackward:E,pageJump:P,pageForward:R}},r.createElement("div",{className:d("video-wrapper")},r.createElement("div",{className:d("video-container")},r.createElement("video",{ref:_,className:d("video"),src:V,onPause:g,onPlay:w,onLoadedMetadata:C,onError:S,onDurationChange:x,width:"100%",height:"100%",onClick:n}),r.createElement(N,{fileType:"video",errorProps:{reloadImage:this.reload,backgroundColor:"#e2e2e2",ignoreOffsetY:!0,isError:v},invalidProps:{isValid:b}})),r.createElement(D,null)))}}export{c as VideoPlayer,u as VideoPlayerCtx,c as default};
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/videoPlayer/index.tsx"],"sourcesContent":["/**\n * @author Glenfiddish <edwinlee0927@hotmail.com>\n * @file Implement video player, including mouse and keyboard event\n * @date 2022-06-02\n */\n\nimport React from 'react';\nimport VideoController from './components/controller';\nimport { getClassName } from '@/utils/dom';\nimport { cKeyCode } from '@labelbee/lb-annotation';\nimport { IFileItem } from '@/types/data';\nimport { decimalReserved } from './utils';\nimport FileException from '../fileException';\n\nconst EKeyCode = cKeyCode.default;\n\nexport const VideoPlayerCtx = React.createContext<{\n videoRef?: React.RefObject<HTMLVideoElement> | null;\n isPlay: boolean;\n playPause: () => void;\n updateNextPlaybackRate: (isForward?: boolean) => void;\n setCurrentTime: (time: number) => void;\n playbackRate: number;\n currentTime: number;\n duration: number;\n buffered: number;\n imgList: IFileItem[];\n imgIndex: number;\n pageBackward: () => void;\n pageJump: (page: string) => void;\n pageForward: () => void;\n}>({\n isPlay: false,\n playPause: () => {},\n updateNextPlaybackRate: () => {},\n playbackRate: 1,\n currentTime: 0,\n duration: 0,\n buffered: 0,\n setCurrentTime: () => {},\n imgList: [],\n imgIndex: -1,\n pageBackward: () => {},\n pageJump: (page: string) => {},\n pageForward: () => {},\n});\n\nconst PER_INTERVAL = 50;\nconst PER_FORWARD = 0.1;\nconst PLAYBACK_RATES = [0.5, 1, 1.5, 2, 4, 6, 8, 16];\n\ninterface IVideoPlayerProps {\n imgList: IFileItem[];\n imgIndex: number;\n pageBackward: () => void;\n pageJump: (page: string) => void;\n pageForward: () => void;\n valid: boolean;\n setVideoRef?: (video: HTMLVideoElement) => void;\n}\n\ninterface IVideoPlayerState {\n playbackRate: number;\n currentTime: number;\n isPlay: boolean;\n duration: number;\n buffered: number;\n error: boolean;\n}\n\nexport class VideoPlayer extends React.Component<IVideoPlayerProps, IVideoPlayerState> {\n public videoRef?: React.RefObject<HTMLVideoElement>;\n public timeInterval?: number;\n\n public constructor(props: IVideoPlayerProps) {\n super(props);\n this.state = {\n playbackRate: 1,\n currentTime: 0,\n isPlay: false,\n duration: 0,\n buffered: 0,\n error: false,\n };\n this.videoRef = React.createRef();\n }\n\n public get videoElm() {\n return this.videoRef?.current;\n }\n\n public get videoSrc() {\n const { imgIndex, imgList } = this.props;\n return imgIndex > -1 ? imgList[imgIndex]?.url ?? '' : '';\n }\n\n public changePlaybackPate = (playbackRate: number) => {\n if (this.videoElm) {\n this.videoElm.playbackRate = playbackRate;\n this.setState({\n playbackRate,\n });\n }\n };\n\n public playPause = () => {\n if (this.videoElm?.paused) {\n this.videoElm?.play();\n } else {\n this.videoElm?.pause();\n }\n };\n\n public updateNextPlaybackRate = (isForward = true) => {\n const idx = PLAYBACK_RATES.findIndex((r) => r === this.state.playbackRate);\n let nextIdx = isForward ? Math.min(idx + 1, PLAYBACK_RATES.length - 1) : Math.max(idx - 1, 0);\n this.changePlaybackPate(PLAYBACK_RATES[nextIdx]);\n };\n\n public fastForward = () => {\n if (this.videoElm) {\n this.setCurrentTime(this.videoElm.currentTime + PER_FORWARD);\n }\n };\n\n public rewind = () => {\n if (this.videoElm) {\n this.setCurrentTime(this.videoElm.currentTime - PER_FORWARD);\n }\n };\n\n /**\n * Implement Video's keydown\n * Play / Pause - Space\n * Rewind / FastForward - ⬅️ / ➡️\n * Speed - ⬆️ / ⬇\n * @param event\n */\n public keydown = (event: KeyboardEvent) => {\n if (event.keyCode === EKeyCode.Space) {\n event.preventDefault();\n this.playPause();\n }\n\n if (event.keyCode === EKeyCode.Up) {\n event.preventDefault();\n this.updateNextPlaybackRate();\n }\n\n if (event.keyCode === EKeyCode.Down) {\n event.preventDefault();\n this.updateNextPlaybackRate(false);\n }\n\n if (event.keyCode === EKeyCode.Left) {\n event.preventDefault();\n this.rewind();\n }\n\n if (event.keyCode === EKeyCode.Right) {\n event.preventDefault();\n this.fastForward();\n }\n };\n\n public onPlay = () => {\n this.setState(\n {\n isPlay: true,\n },\n this.onVideoStart,\n );\n };\n\n public onPause = () => {\n this.onVideoStopped();\n };\n\n public onVideoStopped = () => {\n this.setState({\n isPlay: false,\n });\n\n if (this.timeInterval) {\n clearInterval(this.timeInterval);\n this.timeInterval = undefined;\n }\n };\n\n public onVideoStart = () => {\n this.timeInterval = window.setInterval(() => {\n if (this.videoElm) {\n try {\n if (this.videoElm?.buffered.length > 0) {\n const buffered = this.videoElm?.buffered.end(0);\n\n this.setState({\n currentTime: decimalReserved(this.videoElm?.currentTime, 1),\n buffered,\n });\n }\n } catch (error) {\n console.error(error);\n }\n }\n }, PER_INTERVAL);\n };\n\n public resetVideoData = () => {\n this.setState({\n currentTime: 0,\n buffered: 0,\n error: false,\n isPlay: false,\n });\n this.onVideoStopped();\n };\n\n public setDuration = () => {\n if (this.videoElm) {\n const duration = decimalReserved(this.videoElm?.duration, 1);\n\n this.setState({\n duration,\n });\n }\n };\n\n public setCurrentTime = (currentTime: number) => {\n if (this.videoElm) {\n this.videoElm.currentTime = currentTime;\n this.setState({\n currentTime,\n });\n }\n };\n\n public reload = () => {\n this.videoElm?.load();\n };\n\n public onError = () => {\n this.resetVideoData();\n this.setState({ error: true });\n };\n\n public componentDidMount() {\n window.addEventListener('keydown', this.keydown);\n if (this.videoRef?.current && this.props.setVideoRef) {\n this.props.setVideoRef(this.videoRef?.current as HTMLVideoElement);\n }\n }\n\n public componentWillUnmount() {\n window.removeEventListener('keydown', this.keydown);\n }\n\n public render() {\n const { isPlay, playbackRate, currentTime, duration, buffered, error } = this.state;\n const { imgList, imgIndex, pageBackward, pageJump, pageForward, valid } = this.props;\n\n const {\n playPause,\n updateNextPlaybackRate,\n onPause,\n onPlay,\n resetVideoData,\n setDuration,\n setCurrentTime,\n onError,\n videoRef,\n videoSrc,\n } = this;\n\n return (\n <VideoPlayerCtx.Provider\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n value={{\n videoRef: this.videoRef,\n isPlay,\n playPause,\n updateNextPlaybackRate,\n playbackRate,\n currentTime,\n duration,\n buffered,\n setCurrentTime,\n imgIndex,\n imgList,\n pageBackward,\n pageJump,\n pageForward,\n }}\n >\n <div className={getClassName('video-wrapper')}>\n <div className={getClassName('video-container')}>\n <video\n ref={videoRef}\n className={getClassName('video')}\n src={videoSrc}\n onPause={onPause}\n onPlay={onPlay}\n onLoadedMetadata={resetVideoData}\n onError={onError}\n onDurationChange={setDuration}\n width='100%'\n height='100%'\n onClick={playPause}\n />\n\n <FileException\n fileType='video'\n errorProps={{\n reloadImage: this.reload,\n backgroundColor: '#e2e2e2',\n ignoreOffsetY: true,\n isError: error,\n }}\n invalidProps={{\n isValid: valid,\n }}\n />\n </div>\n <VideoController />\n </div>\n </VideoPlayerCtx.Provider>\n );\n }\n}\n\nexport default VideoPlayer;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/videoPlayer/index.tsx"],"sourcesContent":["/**\n * @author Glenfiddish <edwinlee0927@hotmail.com>\n * @file Implement video player, including mouse and keyboard event\n * @date 2022-06-02\n */\n\nimport React from 'react';\nimport VideoController from './components/controller';\nimport { getClassName } from '@/utils/dom';\nimport { cKeyCode } from '@labelbee/lb-annotation';\nimport { IFileItem } from '@/types/data';\nimport { decimalReserved } from './utils';\nimport FileException from '../fileException';\n\nconst EKeyCode = cKeyCode.default;\n\nexport const VideoPlayerCtx = React.createContext<{\n videoRef?: React.RefObject<HTMLVideoElement> | null;\n isPlay: boolean;\n playPause: () => void;\n updateNextPlaybackRate: (isForward?: boolean) => void;\n setCurrentTime: (time: number) => void;\n playbackRate: number;\n currentTime: number;\n duration: number;\n buffered: number;\n imgList: IFileItem[];\n imgIndex: number;\n pageBackward: () => void;\n pageJump: (page: string) => void;\n pageForward: () => void;\n}>({\n isPlay: false,\n playPause: () => {},\n updateNextPlaybackRate: () => {},\n playbackRate: 1,\n currentTime: 0,\n duration: 0,\n buffered: 0,\n setCurrentTime: () => {},\n imgList: [],\n imgIndex: -1,\n pageBackward: () => {},\n pageJump: (page: string) => {},\n pageForward: () => {},\n});\n\nconst PER_INTERVAL = 50;\nconst PER_FORWARD = 0.1;\nconst PLAYBACK_RATES = [0.5, 1, 1.5, 2, 4, 6, 8, 16];\n\ninterface IVideoPlayerProps {\n imgList: IFileItem[];\n imgIndex: number;\n pageBackward: () => void;\n pageJump: (page: string) => void;\n pageForward: () => void;\n valid: boolean;\n setVideoRef?: (video: HTMLVideoElement) => void;\n}\n\ninterface IVideoPlayerState {\n playbackRate: number;\n currentTime: number;\n isPlay: boolean;\n duration: number;\n buffered: number;\n error: boolean;\n}\n\nexport class VideoPlayer extends React.Component<IVideoPlayerProps, IVideoPlayerState> {\n public videoRef?: React.RefObject<HTMLVideoElement>;\n public timeInterval?: number;\n\n public constructor(props: IVideoPlayerProps) {\n super(props);\n this.state = {\n playbackRate: 1,\n currentTime: 0,\n isPlay: false,\n duration: 0,\n buffered: 0,\n error: false,\n };\n this.videoRef = React.createRef();\n }\n\n public get videoElm() {\n return this.videoRef?.current;\n }\n\n public get videoSrc() {\n const { imgIndex, imgList } = this.props;\n return imgIndex > -1 ? imgList[imgIndex]?.url ?? '' : '';\n }\n\n public changePlaybackPate = (playbackRate: number) => {\n if (this.videoElm) {\n this.videoElm.playbackRate = playbackRate;\n this.setState({\n playbackRate,\n });\n }\n };\n\n public playPause = () => {\n if (this.videoElm?.paused) {\n this.videoElm?.play();\n } else {\n this.videoElm?.pause();\n }\n };\n\n public updateNextPlaybackRate = (isForward = true) => {\n const idx = PLAYBACK_RATES.findIndex((r) => r === this.state.playbackRate);\n let nextIdx = isForward ? Math.min(idx + 1, PLAYBACK_RATES.length - 1) : Math.max(idx - 1, 0);\n this.changePlaybackPate(PLAYBACK_RATES[nextIdx]);\n };\n\n public fastForward = () => {\n if (this.videoElm) {\n this.setCurrentTime(this.videoElm.currentTime + PER_FORWARD);\n }\n };\n\n public rewind = () => {\n if (this.videoElm) {\n this.setCurrentTime(this.videoElm.currentTime - PER_FORWARD);\n }\n };\n\n /**\n * Implement Video's keydown\n * Play / Pause - Space\n * Rewind / FastForward - ⬅️ / ➡️\n * Speed - ⬆️ / ⬇\n * @param event\n */\n public keydown = (event: KeyboardEvent) => {\n if (event.keyCode === EKeyCode.Space) {\n event.preventDefault();\n this.playPause();\n }\n\n if (event.keyCode === EKeyCode.Up) {\n event.preventDefault();\n this.updateNextPlaybackRate();\n }\n\n if (event.keyCode === EKeyCode.Down) {\n event.preventDefault();\n this.updateNextPlaybackRate(false);\n }\n\n if (event.keyCode === EKeyCode.Left) {\n event.preventDefault();\n this.rewind();\n }\n\n if (event.keyCode === EKeyCode.Right) {\n event.preventDefault();\n this.fastForward();\n }\n };\n\n public onPlay = () => {\n this.setState(\n {\n isPlay: true,\n },\n this.onVideoStart,\n );\n };\n\n public onPause = () => {\n this.onVideoStopped();\n };\n\n public onVideoStopped = () => {\n this.setState({\n isPlay: false,\n });\n\n if (this.timeInterval) {\n clearInterval(this.timeInterval);\n this.timeInterval = undefined;\n }\n\n /** Due to speedrate can less than PER_INTERVAL, it need to set current time after stopped */\n if (this.videoElm) {\n this.setCurrentTime(this.videoElm.currentTime);\n }\n };\n\n public onVideoStart = () => {\n this.timeInterval = window.setInterval(() => {\n if (this.videoElm) {\n try {\n if (this.videoElm?.buffered.length > 0) {\n const buffered = this.videoElm?.buffered.end(0);\n\n this.setState({\n currentTime: decimalReserved(this.videoElm?.currentTime, 1),\n buffered,\n });\n }\n } catch (error) {\n console.error(error);\n }\n }\n }, PER_INTERVAL);\n };\n\n public resetVideoData = () => {\n this.setState({\n currentTime: 0,\n buffered: 0,\n error: false,\n isPlay: false,\n });\n\n if (this.videoElm) {\n this.videoElm.playbackRate = this.state.playbackRate;\n }\n this.onVideoStopped();\n };\n\n public setDuration = () => {\n if (this.videoElm) {\n const duration = decimalReserved(this.videoElm?.duration, 1);\n\n this.setState({\n duration,\n });\n }\n };\n\n public setCurrentTime = (currentTime: number) => {\n if (this.videoElm) {\n this.videoElm.currentTime = currentTime;\n this.setState({\n currentTime,\n });\n }\n };\n\n public reload = () => {\n this.videoElm?.load();\n };\n\n public onError = () => {\n this.resetVideoData();\n this.setState({ error: true });\n };\n\n public componentDidMount() {\n window.addEventListener('keydown', this.keydown);\n if (this.videoRef?.current && this.props.setVideoRef) {\n this.props.setVideoRef(this.videoRef?.current as HTMLVideoElement);\n }\n }\n\n public componentWillUnmount() {\n window.removeEventListener('keydown', this.keydown);\n }\n\n public render() {\n const { isPlay, playbackRate, currentTime, duration, buffered, error } = this.state;\n const { imgList, imgIndex, pageBackward, pageJump, pageForward, valid } = this.props;\n\n const {\n playPause,\n updateNextPlaybackRate,\n onPause,\n onPlay,\n resetVideoData,\n setDuration,\n setCurrentTime,\n onError,\n videoRef,\n videoSrc,\n } = this;\n\n return (\n <VideoPlayerCtx.Provider\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n value={{\n videoRef: this.videoRef,\n isPlay,\n playPause,\n updateNextPlaybackRate,\n playbackRate,\n currentTime,\n duration,\n buffered,\n setCurrentTime,\n imgIndex,\n imgList,\n pageBackward,\n pageJump,\n pageForward,\n }}\n >\n <div className={getClassName('video-wrapper')}>\n <div className={getClassName('video-container')}>\n <video\n ref={videoRef}\n className={getClassName('video')}\n src={videoSrc}\n onPause={onPause}\n onPlay={onPlay}\n onLoadedMetadata={resetVideoData}\n onError={onError}\n onDurationChange={setDuration}\n width='100%'\n height='100%'\n onClick={playPause}\n />\n\n <FileException\n fileType='video'\n errorProps={{\n reloadImage: this.reload,\n backgroundColor: '#e2e2e2',\n ignoreOffsetY: true,\n isError: error,\n }}\n invalidProps={{\n isValid: valid,\n }}\n />\n </div>\n <VideoController />\n </div>\n </VideoPlayerCtx.Provider>\n );\n }\n}\n\nexport default VideoPlayer;\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- const o=(e,r,l)=>{const a=l.find(n=>n.value===e),u=a.subSelected.find(n=>n.value===r);return{keyLabel:a.key,valueLabel:u.key}},c=(e,r)=>e.sort((l,a)=>{const u=r.findIndex(t=>l===t.value),n=r.findIndex(t=>a===t.value);return u-n}),f=(e,r)=>{var l;try{return(l=e==null?void 0:e.reduce((a,u)=>(c(Object.keys(u.result),r).forEach(n=>{var t;const s=(t=u.result[n])==null?void 0:t.split(";");b(s,n,r,a)}),a),[]))!=null?l:[]}catch(a){return[]}},b=(e,r,l,a)=>{e.forEach(u=>{const{keyLabel:n,valueLabel:t}=o(r,u,l),s=a.find(d=>d.keyLabel===n);s?s.valuesLabelArray.push(t):a.push({keyLabel:n,valuesLabelArray:[t]})})},i=e=>e<=57&&e>=49?e-48:e<=105&&e>=97?e-96:0,v=(e,r)=>typeof e=="number"?parseFloat(e.toFixed(r)):e;export{v as decimalReserved,o as findTagLabel,i as getKeyCodeNumber,f as result2LabelKey,c as tagsSortThruInputList};
1
+ const o=(e,r,l)=>{const a=l.find(n=>n.value===e),u=a.subSelected.find(n=>n.value===r);return{keyLabel:a.key,valueLabel:u.key}},c=(e,r)=>e.sort((l,a)=>{const u=r.findIndex(t=>l===t.value),n=r.findIndex(t=>a===t.value);return u-n}),f=(e,r)=>{var l;try{return(l=e==null?void 0:e.reduce((a,u)=>(c(Object.keys(u.result),r).forEach(n=>{var t;const s=(t=u.result[n])==null?void 0:t.split(";");b(s,n,r,a)}),a),[]))!=null?l:[]}catch(a){return[]}},b=(e,r,l,a)=>{e.forEach(u=>{const{keyLabel:n,valueLabel:t}=o(r,u,l),s=a.find(d=>d.keyLabel===n);s?s.valuesLabelArray.push(t):a.push({keyLabel:n,valuesLabelArray:[t]})})},i=e=>e<=57&&e>=49?e-48:e<=105&&e>=97?e-96:0,v=(e,r=2)=>typeof e=="number"?parseFloat(e.toFixed(r)):e;export{v as decimalReserved,o as findTagLabel,i as getKeyCodeNumber,f as result2LabelKey,c as tagsSortThruInputList};
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../src/components/videoPlayer/utils.ts"],"sourcesContent":["import type { ITagLabelsArray } from './types';\n\n/**\n * Find key and value to display label through inputList\n * @param key\n * @param value\n * @param inputList\n */\nexport const findTagLabel = (key: string, value: string, inputList: any[]) => {\n const primaryTagConfig = inputList.find((i) => i.value === key);\n const secondaryTagConfig = primaryTagConfig.subSelected.find(\n (i: { value: string }) => i.value === value,\n );\n return { keyLabel: primaryTagConfig.key, valueLabel: secondaryTagConfig.key };\n};\n\n/**\n * Sort tags through inputList\n * @param tagsKeys\n * @param inputList\n */\nexport const tagsSortThruInputList = (tagsKeys: string[], inputList: any[]) => {\n return tagsKeys.sort((key1, key2) => {\n const key1Idx = inputList.findIndex((input) => key1 === input.value);\n const key2Idx = inputList.findIndex((input) => key2 === input.value);\n return key1Idx - key2Idx;\n });\n};\n\n/**\n * Convent result's array to array of showing the labels\n * @param result\n * @param inputList\n * @returns {ITagLabelsArray}\n */\nexport const result2LabelKey = (result: any[], inputList: any[]) => {\n try {\n return (\n result?.reduce((exitsTags: ITagLabelsArray, res: { result: { [key: string]: string } }) => {\n tagsSortThruInputList(Object.keys(res.result), inputList).forEach((key) => {\n const valuesArray = res.result[key]?.split(';');\n findLabelFromValuesArray(valuesArray, key, inputList, exitsTags);\n });\n return exitsTags;\n }, []) ?? []\n );\n } catch (error) {\n return [];\n }\n};\n\n/**\n * find label from valuesArray and push to exitsTags\n * @param valuesArray\n * @param key\n * @param inputList\n * @param exitsTags\n */\nconst findLabelFromValuesArray = (\n valuesArray: string[],\n key: string,\n inputList: any[],\n exitsTags: ITagLabelsArray,\n) => {\n valuesArray.forEach((value) => {\n const { keyLabel, valueLabel } = findTagLabel(key, value, inputList);\n const tagHasAssign = exitsTags.find((i) => i.keyLabel === keyLabel);\n if (tagHasAssign) {\n tagHasAssign.valuesLabelArray.push(valueLabel);\n } else {\n exitsTags.push({ keyLabel, valuesLabelArray: [valueLabel] });\n }\n });\n};\n\n/**\n * Get key number through keyCode, Such as 49(keycode) => 1(number)\n * @param {Number} keyCode\n * @returns {Number} keyCode in scope if it greater than 0\n */\nexport const getKeyCodeNumber = (keyCode: number) => {\n if (keyCode <= 57 && keyCode >= 49) {\n return keyCode - 48;\n }\n\n if (keyCode <= 105 && keyCode >= 97) {\n return keyCode - 96;\n }\n\n return 0;\n};\n\n/**\n * Preserve decimals for number\n * @param num\n * @param places\n * @returns {Number}\n */\nexport const decimalReserved = (num: number, places = 2) =>\n typeof num === 'number' ? parseFloat(num.toFixed(places)) : num;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../src/components/videoPlayer/utils.ts"],"sourcesContent":["import type { ITagLabelsArray } from './types';\n\n/**\n * Find key and value to display label through inputList\n * @param key\n * @param value\n * @param inputList\n */\nexport const findTagLabel = (key: string, value: string, inputList: any[]) => {\n const primaryTagConfig = inputList.find((i) => i.value === key);\n const secondaryTagConfig = primaryTagConfig.subSelected.find(\n (i: { value: string }) => i.value === value,\n );\n return { keyLabel: primaryTagConfig.key, valueLabel: secondaryTagConfig.key };\n};\n\n/**\n * Sort tags through inputList\n * @param tagsKeys\n * @param inputList\n */\nexport const tagsSortThruInputList = (tagsKeys: string[], inputList: any[]) => {\n return tagsKeys.sort((key1, key2) => {\n const key1Idx = inputList.findIndex((input) => key1 === input.value);\n const key2Idx = inputList.findIndex((input) => key2 === input.value);\n return key1Idx - key2Idx;\n });\n};\n\n/**\n * Convent result's array to array of showing the labels\n * @param result\n * @param inputList\n * @returns {ITagLabelsArray}\n */\nexport const result2LabelKey = (result: any[], inputList: any[]) => {\n try {\n return (\n result?.reduce((exitsTags: ITagLabelsArray, res: { result: { [key: string]: string } }) => {\n tagsSortThruInputList(Object.keys(res.result), inputList).forEach((key) => {\n const valuesArray = res.result[key]?.split(';');\n findLabelFromValuesArray(valuesArray, key, inputList, exitsTags);\n });\n return exitsTags;\n }, []) ?? []\n );\n } catch (error) {\n return [];\n }\n};\n\n/**\n * find label from valuesArray and push to exitsTags\n * @param valuesArray\n * @param key\n * @param inputList\n * @param exitsTags\n */\nconst findLabelFromValuesArray = (\n valuesArray: string[],\n key: string,\n inputList: any[],\n exitsTags: ITagLabelsArray,\n) => {\n valuesArray.forEach((value) => {\n const { keyLabel, valueLabel } = findTagLabel(key, value, inputList);\n const tagHasAssign = exitsTags.find((i) => i.keyLabel === keyLabel);\n if (tagHasAssign) {\n tagHasAssign.valuesLabelArray.push(valueLabel);\n } else {\n exitsTags.push({ keyLabel, valuesLabelArray: [valueLabel] });\n }\n });\n};\n\n/**\n * Get key number through keyCode, Such as 49(keycode) => 1(number)\n * @param {Number} keyCode\n * @returns {Number} keyCode in scope if it greater than 0\n */\nexport const getKeyCodeNumber = (keyCode: number) => {\n if (keyCode <= 57 && keyCode >= 49) {\n return keyCode - 48;\n }\n\n if (keyCode <= 105 && keyCode >= 97) {\n return keyCode - 96;\n }\n\n return 0;\n};\n\n/**\n * Preserve decimals for number\n * @param num\n * @param places\n * @returns {Number}\n */\nexport const decimalReserved = (num: number, places = 2) =>\n typeof num === 'number' ? parseFloat(num.toFixed(places)) : num;\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- var t;(function(n){n[n.AnyString=0]="AnyString",n[n.Order=1]="Order",n[n.EnglishOnly=2]="EnglishOnly",n[n.NumberOnly=3]="NumberOnly",n[n.CustomFormat=4]="CustomFormat"})(t||(t={}));const o=1e3;var r;(function(n){n.Rect="rectTool",n.Tag="tagTool",n.Point="pointTool",n.PointMarker="pointMarkerTool",n.Segmentation="segmentationTool",n.Filter="filterTool",n.Text="textTool",n.Polygon="polygonTool",n.Line="lineTool",n.LineMarker="lineMarkerTool",n.Empty="emptyTool",n.FolderTag="folderTagTool",n.RectTrack="rectTrackTool",n.Face="faceTool",n.ClientAttribute="clientAttributeTool",n.OCRRelation="OCRRelationTool"})(r||(r={}));export{t as ETextType,r as EToolName,o as TEXT_ATTRIBUTE_MAX_LENGTH};
1
+ var n;(function(t){t[t.AnyString=0]="AnyString",t[t.Order=1]="Order",t[t.EnglishOnly=2]="EnglishOnly",t[t.NumberOnly=3]="NumberOnly",t[t.CustomFormat=4]="CustomFormat"})(n||(n={}));const o=1e3;var r;(function(t){t.Rect="rectTool",t.Tag="tagTool",t.Point="pointTool",t.PointMarker="pointMarkerTool",t.Segmentation="segmentationTool",t.Filter="filterTool",t.Text="textTool",t.Polygon="polygonTool",t.Line="lineTool",t.LineMarker="lineMarkerTool",t.Empty="emptyTool",t.FolderTag="folderTagTool",t.RectTrack="rectTrackTool",t.Face="faceTool",t.ClientAttribute="clientAttributeTool",t.OCRRelation="OCRRelationTool",t.SegmentByRect="segmentByRectTool"})(r||(r={}));export{n as ETextType,r as EToolName,o as TEXT_ATTRIBUTE_MAX_LENGTH};
@@ -1 +1 @@
1
- {"version":3,"file":"ToolType.js","sources":["../../../src/data/enums/ToolType.ts"],"sourcesContent":["export enum ETextType {\n AnyString, // 任意字符\n Order, // 序号\n EnglishOnly, // 仅英文\n NumberOnly, // 仅数字\n CustomFormat, // 自定义文本格式\n}\n\n/** 文本标注字数上限 */\nexport const TEXT_ATTRIBUTE_MAX_LENGTH = 1000;\n\nexport enum EToolName {\n /** 拉框工具 */\n Rect = 'rectTool',\n /** 标签工具 */\n Tag = 'tagTool',\n /** 标点工具 */\n Point = 'pointTool',\n /** 列表标点工具 */\n PointMarker = 'pointMarkerTool',\n /** 前景分割工具 */\n Segmentation = 'segmentationTool',\n /** 筛选工具 */\n Filter = 'filterTool',\n /** 文本工具 */\n Text = 'textTool',\n /** 多边形工具 */\n Polygon = 'polygonTool',\n /** 线条 */\n Line = 'lineTool',\n /** 列表线条工具 */\n LineMarker = 'lineMarkerTool',\n /** 空工具,表示当前没有选择的工具,没有实际的业务逻辑 */\n Empty = 'emptyTool',\n /** 文件夹标签工具 */\n FolderTag = 'folderTagTool',\n /** 拉框跟踪工具 */\n RectTrack = 'rectTrackTool',\n /** 人脸106工具 */\n Face = 'faceTool',\n /** 客户端属性工具 */\n ClientAttribute = 'clientAttributeTool',\n /** OCR关联关系工具 */\n OCRRelation = 'OCRRelationTool',\n}\n"],"names":[],"mappings":"AAAY,IAAA,UAAA;AAAL,CAAA,SAAK,UAAL,EAAA;AACL,EAAA,UAAA,CAAA,UAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA,CAAA;AACA,EAAA,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA,CAAA;AACA,EAAA,UAAA,CAAA,UAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAA,CAAA;AACA,EAAA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA,CAAA;AACA,EAAA,UAAA,CAAA,UAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA,CAAA;AAAA,CALU,EAAA,SAAA,KAAA,SAAA,GAAA,EAAA,CAAA,CAAA,CAAA;AASL,MAAM,yBAA4B,GAAA,IAAA;AAE7B,IAAA,UAAA;AAAL,CAAA,SAAK,UAAL,EAAA;AAEL,EAAO,UAAA,CAAA,MAAA,CAAA,GAAA,UAAA,CAAA;AAEP,EAAM,UAAA,CAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAEN,EAAQ,UAAA,CAAA,OAAA,CAAA,GAAA,WAAA,CAAA;AAER,EAAc,UAAA,CAAA,aAAA,CAAA,GAAA,iBAAA,CAAA;AAEd,EAAe,UAAA,CAAA,cAAA,CAAA,GAAA,kBAAA,CAAA;AAEf,EAAS,UAAA,CAAA,QAAA,CAAA,GAAA,YAAA,CAAA;AAET,EAAO,UAAA,CAAA,MAAA,CAAA,GAAA,UAAA,CAAA;AAEP,EAAU,UAAA,CAAA,SAAA,CAAA,GAAA,aAAA,CAAA;AAEV,EAAO,UAAA,CAAA,MAAA,CAAA,GAAA,UAAA,CAAA;AAEP,EAAa,UAAA,CAAA,YAAA,CAAA,GAAA,gBAAA,CAAA;AAEb,EAAQ,UAAA,CAAA,OAAA,CAAA,GAAA,WAAA,CAAA;AAER,EAAY,UAAA,CAAA,WAAA,CAAA,GAAA,eAAA,CAAA;AAEZ,EAAY,UAAA,CAAA,WAAA,CAAA,GAAA,eAAA,CAAA;AAEZ,EAAO,UAAA,CAAA,MAAA,CAAA,GAAA,UAAA,CAAA;AAEP,EAAkB,UAAA,CAAA,iBAAA,CAAA,GAAA,qBAAA,CAAA;AAElB,EAAc,UAAA,CAAA,aAAA,CAAA,GAAA,iBAAA,CAAA;AAAA,CAhCJ,EAAA,SAAA,KAAA,SAAA,GAAA,EAAA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"ToolType.js","sources":["../../../src/data/enums/ToolType.ts"],"sourcesContent":["export enum ETextType {\n AnyString, // 任意字符\n Order, // 序号\n EnglishOnly, // 仅英文\n NumberOnly, // 仅数字\n CustomFormat, // 自定义文本格式\n}\n\n/** 文本标注字数上限 */\nexport const TEXT_ATTRIBUTE_MAX_LENGTH = 1000;\n\nexport enum EToolName {\n /** 拉框工具 */\n Rect = 'rectTool',\n /** 标签工具 */\n Tag = 'tagTool',\n /** 标点工具 */\n Point = 'pointTool',\n /** 列表标点工具 */\n PointMarker = 'pointMarkerTool',\n /** 前景分割工具 */\n Segmentation = 'segmentationTool',\n /** 筛选工具 */\n Filter = 'filterTool',\n /** 文本工具 */\n Text = 'textTool',\n /** 多边形工具 */\n Polygon = 'polygonTool',\n /** 线条 */\n Line = 'lineTool',\n /** 列表线条工具 */\n LineMarker = 'lineMarkerTool',\n /** 空工具,表示当前没有选择的工具,没有实际的业务逻辑 */\n Empty = 'emptyTool',\n /** 文件夹标签工具 */\n FolderTag = 'folderTagTool',\n /** 拉框跟踪工具 */\n RectTrack = 'rectTrackTool',\n /** 人脸106工具 */\n Face = 'faceTool',\n /** 客户端属性工具 */\n ClientAttribute = 'clientAttributeTool',\n /** OCR关联关系工具 */\n OCRRelation = 'OCRRelationTool',\n /** 算法分割辅助工具 */\n SegmentByRect = 'segmentByRectTool',\n}\n"],"names":[],"mappings":"AAAY,IAAA,UAAA;AAAL,CAAA,SAAK,UAAL,EAAA;AACL,EAAA,UAAA,CAAA,UAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA,CAAA;AACA,EAAA,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA,CAAA;AACA,EAAA,UAAA,CAAA,UAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAA,CAAA;AACA,EAAA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA,CAAA;AACA,EAAA,UAAA,CAAA,UAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA,CAAA;AAAA,CALU,EAAA,SAAA,KAAA,SAAA,GAAA,EAAA,CAAA,CAAA,CAAA;AASL,MAAM,yBAA4B,GAAA,IAAA;AAE7B,IAAA,UAAA;AAAL,CAAA,SAAK,UAAL,EAAA;AAEL,EAAO,UAAA,CAAA,MAAA,CAAA,GAAA,UAAA,CAAA;AAEP,EAAM,UAAA,CAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAEN,EAAQ,UAAA,CAAA,OAAA,CAAA,GAAA,WAAA,CAAA;AAER,EAAc,UAAA,CAAA,aAAA,CAAA,GAAA,iBAAA,CAAA;AAEd,EAAe,UAAA,CAAA,cAAA,CAAA,GAAA,kBAAA,CAAA;AAEf,EAAS,UAAA,CAAA,QAAA,CAAA,GAAA,YAAA,CAAA;AAET,EAAO,UAAA,CAAA,MAAA,CAAA,GAAA,UAAA,CAAA;AAEP,EAAU,UAAA,CAAA,SAAA,CAAA,GAAA,aAAA,CAAA;AAEV,EAAO,UAAA,CAAA,MAAA,CAAA,GAAA,UAAA,CAAA;AAEP,EAAa,UAAA,CAAA,YAAA,CAAA,GAAA,gBAAA,CAAA;AAEb,EAAQ,UAAA,CAAA,OAAA,CAAA,GAAA,WAAA,CAAA;AAER,EAAY,UAAA,CAAA,WAAA,CAAA,GAAA,eAAA,CAAA;AAEZ,EAAY,UAAA,CAAA,WAAA,CAAA,GAAA,eAAA,CAAA;AAEZ,EAAO,UAAA,CAAA,MAAA,CAAA,GAAA,UAAA,CAAA;AAEP,EAAkB,UAAA,CAAA,iBAAA,CAAA,GAAA,qBAAA,CAAA;AAElB,EAAc,UAAA,CAAA,aAAA,CAAA,GAAA,iBAAA,CAAA;AAEd,EAAgB,UAAA,CAAA,eAAA,CAAA,GAAA,mBAAA,CAAA;AAAA,CAlCN,EAAA,SAAA,KAAA,SAAA,GAAA,EAAA,CAAA,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSize.js","sources":["../../src/hooks/useSize.ts"],"sourcesContent":["import { useLayoutEffect } from 'react';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport type { BasicTarget } from '../utils/dom';\nimport { getTargetElement } from '../utils/dom';\nimport useRafState from './useRafState';\n\ninterface Size {\n width?: number;\n height?: number;\n}\n\nfunction useSize(target: BasicTarget): Size {\n const [state, setState] = useRafState<Size>(() => {\n const el = getTargetElement(target);\n return {\n width: ((el || {}) as HTMLElement).clientWidth,\n height: ((el || {}) as HTMLElement).clientHeight,\n };\n });\n\n useLayoutEffect(() => {\n const el = getTargetElement(target);\n if (!el) {\n return () => {};\n }\n\n const resizeObserver = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n setState({\n width: entry.target.clientWidth,\n height: entry.target.clientHeight,\n });\n });\n });\n\n resizeObserver.observe(el as HTMLElement);\n return () => {\n resizeObserver.disconnect();\n };\n }, [target]);\n\n return state;\n}\n\nexport default useSize;\n"],"names":[],"mappings":";;;;;AAWA,SAAA,OAAA,CAAiB,MAA2B,EAAA;AAC1C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAY,CAAA,GAAA,WAAA,CAAkB,MAAM;AAChD,IAAA,MAAM,KAAK,gBAAiB,CAAA,MAAA,CAAA,CAAA;AAC5B,IAAO,OAAA;AAAA,MACL,KAAA,EAAS,OAAM,EAAoB,EAAA,WAAA;AAAA,MACnC,MAAA,EAAU,OAAM,EAAoB,EAAA,YAAA;AAAA,KAAA,CAAA;AAAA,GAAA,CAAA,CAAA;AAIxC,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,MAAM,KAAK,gBAAiB,CAAA,MAAA,CAAA,CAAA;AAC5B,IAAA,IAAI,CAAC,EAAI,EAAA;AACP,MAAA,OAAO,MAAM;AAAA,OAAA,CAAA;AAAA,KAAA;AAGf,IAAA,MAAM,cAAiB,GAAA,IAAI,cAAe,CAAA,CAAC,OAAY,KAAA;AACrD,MAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,KAAU,KAAA;AACzB,QAAS,QAAA,CAAA;AAAA,UACP,KAAA,EAAO,MAAM,MAAO,CAAA,WAAA;AAAA,UACpB,MAAA,EAAQ,MAAM,MAAO,CAAA,YAAA;AAAA,SAAA,CAAA,CAAA;AAAA,OAAA,CAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAK3B,IAAA,cAAA,CAAe,OAAQ,CAAA,EAAA,CAAA,CAAA;AACvB,IAAA,OAAO,MAAM;AACX,MAAe,cAAA,CAAA,UAAA,EAAA,CAAA;AAAA,KAAA,CAAA;AAAA,GAAA,EAEhB,CAAC,MAAA,CAAA,CAAA,CAAA;AAEJ,EAAO,OAAA,KAAA,CAAA;AAAA;;;;"}
1
+ {"version":3,"file":"useSize.js","sources":["../../src/hooks/useSize.ts"],"sourcesContent":["import { useLayoutEffect } from 'react';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport type { BasicTarget } from '../utils/dom';\nimport { getTargetElement } from '../utils/dom';\nimport useRafState from './useRafState';\n\ninterface Size {\n width?: number;\n height?: number;\n}\n\nfunction useSize(target: BasicTarget): Size {\n const [state, setState] = useRafState<Size>(() => {\n const el = getTargetElement(target);\n return {\n width: ((el || {}) as HTMLElement).clientWidth,\n height: ((el || {}) as HTMLElement).clientHeight,\n };\n });\n\n useLayoutEffect(() => {\n const el = getTargetElement(target);\n if (!el) {\n return () => {};\n }\n\n const resizeObserver = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n entries.forEach((entry) => {\n setState({\n width: entry.target.clientWidth,\n height: entry.target.clientHeight,\n });\n });\n });\n\n resizeObserver.observe(el as HTMLElement);\n return () => {\n resizeObserver.disconnect();\n };\n }, [target]);\n\n return state;\n}\n\nexport default useSize;\n"],"names":[],"mappings":";;;;;AAWA,SAAA,OAAA,CAAiB,MAA2B,EAAA;AAC1C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAY,CAAA,GAAA,WAAA,CAAkB,MAAM;AAChD,IAAA,MAAM,KAAK,gBAAiB,CAAA,MAAA,CAAA,CAAA;AAC5B,IAAO,OAAA;AAAA,MACL,KAAA,EAAS,OAAM,EAAoB,EAAA,WAAA;AAAA,MACnC,MAAA,EAAU,OAAM,EAAoB,EAAA,YAAA;AAAA,KAAA,CAAA;AAAA,GAAA,CAAA,CAAA;AAIxC,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,MAAM,KAAK,gBAAiB,CAAA,MAAA,CAAA,CAAA;AAC5B,IAAA,IAAI,CAAC,EAAI,EAAA;AACP,MAAA,OAAO,MAAM;AAAA,OAAA,CAAA;AAAA,KAAA;AAGf,IAAA,MAAM,cAAiB,GAAA,IAAI,cAAe,CAAA,CAAC,OAAmC,KAAA;AAC5E,MAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,KAAU,KAAA;AACzB,QAAS,QAAA,CAAA;AAAA,UACP,KAAA,EAAO,MAAM,MAAO,CAAA,WAAA;AAAA,UACpB,MAAA,EAAQ,MAAM,MAAO,CAAA,YAAA;AAAA,SAAA,CAAA,CAAA;AAAA,OAAA,CAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAK3B,IAAA,cAAA,CAAe,OAAQ,CAAA,EAAA,CAAA,CAAA;AACvB,IAAA,OAAO,MAAM;AACX,MAAe,cAAA,CAAA,UAAA,EAAA,CAAA;AAAA,KAAA,CAAA;AAAA,GAAA,EAEhB,CAAC,MAAA,CAAA,CAAA,CAAA;AAEJ,EAAO,OAAA,KAAA,CAAA;AAAA;;;;"}
package/es/index.js CHANGED
@@ -1 +1 @@
1
- export{default as AnnotationView}from"./components/AnnotationView/index.js";import{i18n as l}from"@labelbee/lb-utils";export{i18n}from"@labelbee/lb-utils";import a,{useState as m,useImperativeHandle as d}from"react";import{I18nextProvider as f}from"react-i18next";import{Provider as u}from"react-redux";import P from"./App.js";import _ from"./configureStore.js";import{PageBackward as g,PageForward as v,PageJump as w}from"./store/annotation/actionCreators.js";export{VideoTagTool}from"./components/videoPlayer/TagToolInstanceAdaptorI18nProvider.js";var O=Object.defineProperty,b=Object.defineProperties,x=Object.getOwnPropertyDescriptors,n=Object.getOwnPropertySymbols,j=Object.prototype.hasOwnProperty,I=Object.prototype.propertyIsEnumerable,p=(t,e,r)=>e in t?O(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,y=(t,e)=>{for(var r in e||(e={}))j.call(e,r)&&p(t,r,e[r]);if(n)for(var r of n(e))I.call(e,r)&&p(t,r,e[r]);return t},A=(t,e)=>b(t,x(e));const o=_(),h=(t,e)=>{const[r,i]=m();return d(e,()=>({toolInstance:r,pageBackwardActions:()=>o.dispatch(g()),pageForwardActions:()=>o.dispatch(v()),pageJump:s=>{const c=~~s-1;o.dispatch(w(c))},hello:()=>alert("hello labelBee!!!")}),[r]),a.createElement(u,{store:o},a.createElement(f,{i18n:l},a.createElement(P,A(y({},t),{setToolInstance:i}))))};var E=a.forwardRef(h);export{E as default,o as store};
1
+ export{default as AnnotationView}from"./components/AnnotationView/index.js";import{i18n as l}from"@labelbee/lb-utils";export{i18n}from"@labelbee/lb-utils";import a,{useState as m,useImperativeHandle as d}from"react";import{I18nextProvider as f}from"react-i18next";import{Provider as u}from"react-redux";import g from"./App.js";import P from"./configureStore.js";import{PageBackward as _,PageForward as v,PageJump as w}from"./store/annotation/actionCreators.js";export{VideoTagTool}from"./components/videoPlayer/TagToolInstanceAdaptorI18nProvider.js";var O=Object.defineProperty,b=Object.defineProperties,x=Object.getOwnPropertyDescriptors,n=Object.getOwnPropertySymbols,j=Object.prototype.hasOwnProperty,I=Object.prototype.propertyIsEnumerable,p=(t,e,r)=>e in t?O(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,y=(t,e)=>{for(var r in e||(e={}))j.call(e,r)&&p(t,r,e[r]);if(n)for(var r of n(e))I.call(e,r)&&p(t,r,e[r]);return t},A=(t,e)=>b(t,x(e));const o=P(),h=(t,e)=>{const[r,i]=m();return d(e,()=>({toolInstance:r,annotationEngine:o.getState().annotation.annotationEngine,pageBackwardActions:()=>o.dispatch(_()),pageForwardActions:()=>o.dispatch(v()),pageJump:s=>{const c=~~s-1;o.dispatch(w(c))},hello:()=>alert("hello labelBee!!!")}),[r]),a.createElement(u,{store:o},a.createElement(f,{i18n:l},a.createElement(g,A(y({},t),{setToolInstance:i}))))};var E=a.forwardRef(h);export{E as default,o as store};
package/es/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":["import { AppProps } from '@/App';\nimport AnnotationView from '@/components/AnnotationView';\nimport { i18n } from '@labelbee/lb-utils';\nimport React, { useImperativeHandle, useState } from 'react';\nimport { I18nextProvider } from 'react-i18next';\nimport { Provider } from 'react-redux';\nimport { AnyAction } from 'redux';\nimport App from './App';\nimport configureStore from './configureStore';\nimport { PageBackward, PageForward, PageJump } from './store/annotation/actionCreators';\nimport { ToolInstance } from './store/annotation/types';\nimport { VideoTagTool } from '@/components/videoPlayer/TagToolInstanceAdaptorI18nProvider';\n\nexport const store = configureStore();\n\nconst OutputApp = (props: AppProps, ref: any) => {\n const [toolInstance, setToolInstance] = useState<ToolInstance>();\n // 暴露给 ref 的一些方法\n useImperativeHandle(\n ref,\n () => {\n return {\n toolInstance,\n pageBackwardActions: () => store.dispatch(PageBackward() as unknown as AnyAction),\n pageForwardActions: () => store.dispatch(PageForward() as unknown as AnyAction),\n pageJump: (page: string) => {\n const imgIndex = ~~page - 1;\n store.dispatch(PageJump(imgIndex) as unknown as AnyAction);\n },\n hello: () => alert(`hello labelBee!!!`),\n };\n },\n [toolInstance],\n );\n\n return (\n <Provider store={store}>\n <I18nextProvider i18n={i18n}>\n <App {...props} setToolInstance={setToolInstance} />\n </I18nextProvider>\n </Provider>\n );\n};\n\nexport default React.forwardRef(OutputApp);\n\nexport { AnnotationView, i18n, VideoTagTool };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaO,MAAM,KAAQ,GAAA,cAAA,GAAA;AAErB,MAAM,SAAA,GAAY,CAAC,KAAA,EAAiB,GAAa,KAAA;AAC/C,EAAM,MAAA,CAAC,cAAc,eAAmB,CAAA,GAAA,QAAA,EAAA,CAAA;AAExC,EAAA,mBAAA,CACE,KACA,MAAM;AACJ,IAAO,OAAA;AAAA,MACL,YAAA;AAAA,MACA,mBAAA,EAAqB,MAAM,KAAA,CAAM,QAAS,CAAA,YAAA,EAAA,CAAA;AAAA,MAC1C,kBAAA,EAAoB,MAAM,KAAA,CAAM,QAAS,CAAA,WAAA,EAAA,CAAA;AAAA,MACzC,QAAA,EAAU,CAAC,IAAiB,KAAA;AAC1B,QAAM,MAAA,QAAA,GAAW,CAAC,CAAC,IAAO,GAAA,CAAA,CAAA;AAC1B,QAAA,KAAA,CAAM,SAAS,QAAS,CAAA,QAAA,CAAA,CAAA,CAAA;AAAA,OAAA;AAAA,MAE1B,KAAA,EAAO,MAAM,KAAM,CAAA,CAAA,iBAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAAA,GAAA,EAGvB,CAAC,YAAA,CAAA,CAAA,CAAA;AAGH,EAAA,2CACG,QAAD,EAAA;AAAA,IAAU,KAAA;AAAA,GAAA,sCACP,eAAD,EAAA;AAAA,IAAiB,IAAA;AAAA,GACf,kBAAA,KAAA,CAAA,aAAA,CAAC,GAAD,EAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EAAS,KAAT,CAAA,EAAA;AAAA,IAAgB,eAAA;AAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAMxB,YAAe,MAAM,UAAW,CAAA,SAAA,CAAA;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":["import { AppProps } from '@/App';\nimport AnnotationView from '@/components/AnnotationView';\nimport { i18n } from '@labelbee/lb-utils';\nimport React, { useImperativeHandle, useState } from 'react';\nimport { I18nextProvider } from 'react-i18next';\nimport { Provider } from 'react-redux';\nimport { AnyAction } from 'redux';\nimport App from './App';\nimport configureStore from './configureStore';\nimport { PageBackward, PageForward, PageJump } from './store/annotation/actionCreators';\nimport { ToolInstance } from './store/annotation/types';\nimport { VideoTagTool } from '@/components/videoPlayer/TagToolInstanceAdaptorI18nProvider';\nimport { AppState } from './store';\n\nexport const store = configureStore();\n\nconst OutputApp = (props: AppProps, ref: any) => {\n const [toolInstance, setToolInstance] = useState<ToolInstance>();\n // 暴露给 ref 的一些方法\n useImperativeHandle(\n ref,\n () => {\n return {\n toolInstance,\n annotationEngine: (store.getState() as AppState).annotation.annotationEngine,\n pageBackwardActions: () => store.dispatch(PageBackward() as unknown as AnyAction),\n pageForwardActions: () => store.dispatch(PageForward() as unknown as AnyAction),\n pageJump: (page: string) => {\n const imgIndex = ~~page - 1;\n store.dispatch(PageJump(imgIndex) as unknown as AnyAction);\n },\n hello: () => alert(`hello labelBee!!!`),\n };\n },\n [toolInstance],\n );\n\n return (\n <Provider store={store}>\n <I18nextProvider i18n={i18n}>\n <App {...props} setToolInstance={setToolInstance} />\n </I18nextProvider>\n </Provider>\n );\n};\n\nexport default React.forwardRef(OutputApp);\n\nexport { AnnotationView, i18n, VideoTagTool };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcO,MAAM,KAAQ,GAAA,cAAA,GAAA;AAErB,MAAM,SAAA,GAAY,CAAC,KAAA,EAAiB,GAAa,KAAA;AAC/C,EAAM,MAAA,CAAC,cAAc,eAAmB,CAAA,GAAA,QAAA,EAAA,CAAA;AAExC,EAAA,mBAAA,CACE,KACA,MAAM;AACJ,IAAO,OAAA;AAAA,MACL,YAAA;AAAA,MACA,gBAAA,EAAmB,KAAM,CAAA,QAAA,EAAA,CAAwB,UAAW,CAAA,gBAAA;AAAA,MAC5D,mBAAA,EAAqB,MAAM,KAAA,CAAM,QAAS,CAAA,YAAA,EAAA,CAAA;AAAA,MAC1C,kBAAA,EAAoB,MAAM,KAAA,CAAM,QAAS,CAAA,WAAA,EAAA,CAAA;AAAA,MACzC,QAAA,EAAU,CAAC,IAAiB,KAAA;AAC1B,QAAM,MAAA,QAAA,GAAW,CAAC,CAAC,IAAO,GAAA,CAAA,CAAA;AAC1B,QAAA,KAAA,CAAM,SAAS,QAAS,CAAA,QAAA,CAAA,CAAA,CAAA;AAAA,OAAA;AAAA,MAE1B,KAAA,EAAO,MAAM,KAAM,CAAA,CAAA,iBAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAAA,GAAA,EAGvB,CAAC,YAAA,CAAA,CAAA,CAAA;AAGH,EAAA,2CACG,QAAD,EAAA;AAAA,IAAU,KAAA;AAAA,GAAA,sCACP,eAAD,EAAA;AAAA,IAAiB,IAAA;AAAA,GACf,kBAAA,KAAA,CAAA,aAAA,CAAC,GAAD,EAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EAAS,KAAT,CAAA,EAAA;AAAA,IAAgB,eAAA;AAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAMxB,YAAe,MAAM,UAAW,CAAA,SAAA,CAAA;;;;"}
@@ -1 +1 @@
1
- import{ANNOTATION_ACTIONS as r}from"../Actions.js";import{LoadFileAndFileData as S,getStepConfig as N}from"./reducer.js";import{ESubmitType as c}from"../../constant/index.js";import{EPageTurningOperation as _}from"../../data/enums/AnnotationSize.js";import w from"../../utils/PageOperator.js";import{jsonParser as R}from"../../utils/index.js";var A=(e,t,n)=>new Promise((o,s)=>{var l=u=>{try{d(n.next(u))}catch(a){s(a)}},i=u=>{try{d(n.throw(u))}catch(a){s(a)}},d=u=>u.done?o(u.value):Promise.resolve(u.value).then(l,i);d((n=n.apply(e,t)).next())});const B=(e,t)=>t.map(n=>e(n)),h=e=>e===_.Forward?c.Forward:e===_.Backward?c.Backward:e===_.Jump?c.Jump:c.Forward,F=(e,t)=>{var n,o;const{imgList:s,imgIndex:l}=e,{dataSourceStep:i}=N(e.stepList,e.step);return((o=(n=R(s[l-1].result)[`step_${i}`])==null?void 0:n.result)==null?void 0:o.length)-1||t};function I({stepList:e,step:t}){return{type:r.SET_TASK_CONFIG,payload:{stepList:e,step:t}}}function m(e){return{type:r.UPDATE_ON_SUBMIT,payload:{onSubmit:e}}}function g(e){return{type:r.UPDATE_ON_SAVE,payload:{onSave:e}}}function P(e){return{type:r.UPDATE_ON_PAGE_CHANGE,payload:{onPageChange:e}}}function U(e){return{type:r.UPDATE_ON_STEP_CHANGE,payload:{onStepChange:e}}}function L(e){return{type:r.UPDATE_GET_FILE_DATA,payload:{getFileData:e}}}function v(e){return{type:r.UPDATE_PAGE_SIZE,payload:{pageSize:e}}}function C(e){return{type:r.UPDATE_LOAD_FILE_LIST,payload:{loadFileList:e}}}function G(){return{type:r.UPDATE_ROTATE}}function b(){return{type:r.COPY_BACKWARD_RESULT}}function k({onSubmit:e,onSave:t,onPageChange:n,onStepChange:o,getFileData:s,pageSize:l,loadFileList:i,step:d,stepList:u}){const a=[];return e&&a.push(m(e)),t&&a.push(g(t)),n&&a.push(P(n)),o&&a.push(U(o)),s&&a.push(L(s)),i&&a.push(C(i)),l&&a.push(v(l)),a.push(I({stepList:u,step:d})),a.push({type:r.CALC_STEP_PROGRESS}),a.push({type:r.INIT_TOOL}),p=>B(p,a)}const M=(e,t)=>{var n;const o=t==null?void 0:t.findIndex(s=>(s==null?void 0:s.step)===e);return(n=t[o+1])==null?void 0:n.step},j=e=>(t,n)=>{const{annotation:o}=n(),{step:s,stepList:l}=o,i=M(s,l);return[t(x(i,e))]},x=(e,t)=>(n,o)=>{var s,l;const{annotation:i}=o();(s=i==null?void 0:i.onStepChange)==null||s.call(i,e);const d=(l=i==null?void 0:i.imgIndex)!=null?l:0;return[n({type:r.SUBMIT_RESULT}),n({type:r.SUBMIT_FILE_DATA,payload:{submitType:c.StepChanged}}),n({type:r.SET_STEP,payload:{toStep:e}}),n({type:r.CALC_STEP_PROGRESS}),n(S(t!=null?t:d,0))]},f=e=>t=>[t({type:r.SUBMIT_RESULT}),t({type:r.SUBMIT_FILE_DATA,payload:{submitType:e}})],J=(e,t,n,o)=>[e(f(n)),e(S(t,o))],H=(e,t)=>[e({type:r.SUBMIT_RESULT}),e({type:r.SET_BASIC_INDEX,payload:{basicIndex:t}})],V=(e,t)=>{e({type:r.SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED,payload:{triggerEventAfterIndexChanged:t}})},z=(e=!1)=>(t,n)=>T(t,n,_.Backward,e),K=(e=!1)=>(t,n)=>T(t,n,_.Forward,e),W=(e,t=!1)=>(n,o)=>{if(e!==o().imgIndex)return T(n,o,_.Jump,t,e)},D=(e,t,n,o)=>A(void 0,null,function*(){var s;const{loadFileList:l,imgList:i,pageSize:d}=t().annotation,u=Math.floor(n/d);y(e,!0);try{const a=yield l(u,d);if(y(e,!1),!((s=a==null?void 0:a.fileList)==null?void 0:s.length)||!(a==null?void 0:a.total))throw new Error("fileList and total are required");const p=o?new Array(a.total):[...i];return p.splice(u*d,d,...a.fileList),e({type:r.UPDATE_IMG_LIST,payload:{imgList:p}}),!0}catch(a){y(e,!1),console.error(a)}}),T=(e,t,n,o=!1,s)=>A(void 0,null,function*(){var l;const i=t().annotation,{fileIndexChanged:d,fileIndex:u,basicIndexChanged:a,basicIndex:p}=w.getNextPageInfo(n,i,s),E=h(n);if(V(e,o),d){if(i.loading||!i.imgList[u]&&!(yield D(e,t,u)))return;(l=i.onPageChange)==null||l.call(i,u);const O=E===c.Backward?F(t().annotation,p):p;return J(e,u,E,O)}return a?H(e,p):e(f(E))}),X=e=>{e(f(c.Save)),e({type:r.SAVE_RESULT})},y=(e,t)=>{e({type:r.SET_LOADING,payload:{loading:t}})};export{X as ChangeSave,b as CopyBackWordResult,T as DispatcherTurning,k as InitTaskData,z as PageBackward,K as PageForward,W as PageJump,y as SetAnnotationLoading,I as SetTaskConfig,j as ToNextStep,f as ToSubmitFileData,L as UpdateGetFileData,C as UpdateGetFileList,P as UpdateOnPageChange,g as UpdateOnSave,U as UpdateOnStepChange,m as UpdateOnSubmit,v as UpdatePageSize,x as UpdateProcessingStep,G as UpdateRotate,D as loadImgList};
1
+ import{ANNOTATION_ACTIONS as r}from"../Actions.js";import{LoadFileAndFileData as S,getStepConfig as N}from"./reducer.js";import{ESubmitType as c}from"../../constant/index.js";import{EPageTurningOperation as _}from"../../data/enums/AnnotationSize.js";import w from"../../utils/PageOperator.js";import{jsonParser as R}from"../../utils/index.js";var A=(t,e,n)=>new Promise((o,s)=>{var l=u=>{try{d(n.next(u))}catch(a){s(a)}},i=u=>{try{d(n.throw(u))}catch(a){s(a)}},d=u=>u.done?o(u.value):Promise.resolve(u.value).then(l,i);d((n=n.apply(t,e)).next())});const B=(t,e)=>e.map(n=>t(n)),h=t=>t===_.Forward?c.Forward:t===_.Backward?c.Backward:t===_.Jump?c.Jump:c.Forward,F=(t,e)=>{var n,o;const{imgList:s,imgIndex:l}=t,{dataSourceStep:i}=N(t.stepList,t.step);return((o=(n=R(s[l-1].result)[`step_${i}`])==null?void 0:n.result)==null?void 0:o.length)-1||e};function G(t){return{type:r.UPDATE_TOOL_INSTANCE,payload:{toolInstance:t}}}function I({stepList:t,step:e}){return{type:r.SET_TASK_CONFIG,payload:{stepList:t,step:e}}}function m(t){return{type:r.UPDATE_ON_SUBMIT,payload:{onSubmit:t}}}function g(t){return{type:r.UPDATE_ON_SAVE,payload:{onSave:t}}}function P(t){return{type:r.UPDATE_ON_PAGE_CHANGE,payload:{onPageChange:t}}}function U(t){return{type:r.UPDATE_ON_STEP_CHANGE,payload:{onStepChange:t}}}function L(t){return{type:r.UPDATE_GET_FILE_DATA,payload:{getFileData:t}}}function v(t){return{type:r.UPDATE_PAGE_SIZE,payload:{pageSize:t}}}function C(t){return{type:r.UPDATE_LOAD_FILE_LIST,payload:{loadFileList:t}}}function b(){return{type:r.UPDATE_ROTATE}}function k(){return{type:r.COPY_BACKWARD_RESULT}}function M({onSubmit:t,onSave:e,onPageChange:n,onStepChange:o,getFileData:s,pageSize:l,loadFileList:i,step:d,stepList:u}){const a=[];return t&&a.push(m(t)),e&&a.push(g(e)),n&&a.push(P(n)),o&&a.push(U(o)),s&&a.push(L(s)),i&&a.push(C(i)),l&&a.push(v(l)),a.push(I({stepList:u,step:d})),a.push({type:r.CALC_STEP_PROGRESS}),a.push({type:r.INIT_TOOL}),p=>B(p,a)}const j=(t,e)=>{var n;const o=e==null?void 0:e.findIndex(s=>(s==null?void 0:s.step)===t);return(n=e[o+1])==null?void 0:n.step},J=t=>(e,n)=>{const{annotation:o}=n(),{step:s,stepList:l}=o,i=j(s,l);return[e(x(i,t))]},x=(t,e)=>(n,o)=>{var s,l;const{annotation:i}=o();(s=i==null?void 0:i.onStepChange)==null||s.call(i,t);const d=(l=i==null?void 0:i.imgIndex)!=null?l:0;return[n({type:r.SUBMIT_RESULT}),n({type:r.SUBMIT_FILE_DATA,payload:{submitType:c.StepChanged}}),n({type:r.SET_STEP,payload:{toStep:t}}),n({type:r.CALC_STEP_PROGRESS}),n(S(e!=null?e:d,0))]},f=t=>e=>[e({type:r.SUBMIT_RESULT}),e({type:r.SUBMIT_FILE_DATA,payload:{submitType:t}})],H=(t,e,n,o)=>[t(f(n)),t(S(e,o))],V=(t,e)=>[t({type:r.SUBMIT_RESULT}),t({type:r.SET_BASIC_INDEX,payload:{basicIndex:e}})],z=(t,e)=>{t({type:r.SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED,payload:{triggerEventAfterIndexChanged:e}})},K=(t=!1)=>(e,n)=>T(e,n,_.Backward,t),W=(t=!1)=>(e,n)=>T(e,n,_.Forward,t),X=(t,e=!1)=>(n,o)=>{if(t!==o().imgIndex)return T(n,o,_.Jump,e,t)},D=(t,e,n,o)=>A(void 0,null,function*(){var s;const{loadFileList:l,imgList:i,pageSize:d}=e().annotation,u=Math.floor(n/d);y(t,!0);try{const a=yield l(u,d);if(y(t,!1),!((s=a==null?void 0:a.fileList)==null?void 0:s.length)||!(a==null?void 0:a.total))throw new Error("fileList and total are required");const p=o?new Array(a.total):[...i];return p.splice(u*d,d,...a.fileList),t({type:r.UPDATE_IMG_LIST,payload:{imgList:p}}),!0}catch(a){y(t,!1),console.error(a)}}),T=(t,e,n,o=!1,s)=>A(void 0,null,function*(){var l;const i=e().annotation,{fileIndexChanged:d,fileIndex:u,basicIndexChanged:a,basicIndex:p}=w.getNextPageInfo(n,i,s),E=h(n);if(z(t,o),d){if(i.loading||!i.imgList[u]&&!(yield D(t,e,u)))return;(l=i.onPageChange)==null||l.call(i,u);const O=E===c.Backward?F(e().annotation,p):p;return H(t,u,E,O)}return a?V(t,p):t(f(E))}),q=t=>{t(f(c.Save)),t({type:r.SAVE_RESULT})},y=(t,e)=>{t({type:r.SET_LOADING,payload:{loading:e}})};export{q as ChangeSave,k as CopyBackWordResult,T as DispatcherTurning,M as InitTaskData,K as PageBackward,W as PageForward,X as PageJump,y as SetAnnotationLoading,I as SetTaskConfig,J as ToNextStep,f as ToSubmitFileData,L as UpdateGetFileData,C as UpdateGetFileList,P as UpdateOnPageChange,g as UpdateOnSave,U as UpdateOnStepChange,m as UpdateOnSubmit,v as UpdatePageSize,x as UpdateProcessingStep,b as UpdateRotate,G as UpdateToolInstance,D as loadImgList};
@@ -1 +1 @@
1
- {"version":3,"file":"actionCreators.js","sources":["../../../src/store/annotation/actionCreators.ts"],"sourcesContent":["import { ANNOTATION_ACTIONS } from '@/store/Actions';\nimport { IStepInfo } from '@/types/step';\nimport {\n GetFileData,\n LoadFileList,\n IFileItem,\n OnPageChange,\n OnSave,\n OnStepChange,\n OnSubmit,\n} from '@/types/data';\nimport { AnnotationActionTypes, ToolInstance } from './types';\nimport { LoadFileAndFileData, getStepConfig } from './reducer';\nimport { ESubmitType } from '@/constant';\nimport { EPageTurningOperation } from '@/data/enums/AnnotationSize';\nimport PageOperator from '@/utils/PageOperator';\nimport { jsonParser } from '@/utils';\n\nconst dispatchTasks = (dispatch: any, tasks: any[]) => tasks.map((task) => dispatch(task));\n\n/**\n * @param {pageTurningOperation} pageTurningOperation 翻页操作\n * @returns {ESubmitType} 提数据交类型\n */\nconst getSubmitByPageOperation = (pageTurningOperation: EPageTurningOperation) => {\n if (pageTurningOperation === EPageTurningOperation.Forward) {\n return ESubmitType.Forward;\n }\n\n if (pageTurningOperation === EPageTurningOperation.Backward) {\n return ESubmitType.Backward;\n }\n\n if (pageTurningOperation === EPageTurningOperation.Jump) {\n return ESubmitType.Jump;\n }\n\n return ESubmitType.Forward;\n};\n\nconst getBasicIndex = (annotationStore: any, basicIndex: number) => {\n const { imgList, imgIndex } = annotationStore;\n const { dataSourceStep } = getStepConfig(annotationStore.stepList, annotationStore.step);\n let backwardResult = jsonParser(imgList[imgIndex - 1].result);\n const index = backwardResult[`step_${dataSourceStep}`]?.result?.length - 1;\n return index || basicIndex;\n};\n\nexport function UpdateToolInstance(toolInstance: ToolInstance): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_TOOL_INSTANCE,\n payload: {\n toolInstance,\n },\n };\n}\n\nexport function UpdateImgList(imgList: IFileItem[]): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_IMG_LIST,\n payload: {\n imgList,\n },\n };\n}\n\nexport function UpdateAnnotationConfig(config: string): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_ANNOTATION_CONFIG,\n payload: {\n config,\n },\n };\n}\n\nexport function SetTaskConfig({\n stepList,\n step,\n}: {\n stepList: IStepInfo[];\n step: number;\n}): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.SET_TASK_CONFIG,\n payload: {\n stepList,\n step,\n },\n };\n}\n\nexport function UpdateOnSubmit(onSubmit: OnSubmit): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_ON_SUBMIT,\n payload: {\n onSubmit,\n },\n };\n}\n\nexport function UpdateOnSave(onSave: OnSave): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_ON_SAVE,\n payload: {\n onSave,\n },\n };\n}\n\nexport function UpdateOnPageChange(onPageChange: OnPageChange): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_ON_PAGE_CHANGE,\n payload: {\n onPageChange,\n },\n };\n}\n\nexport function UpdateOnStepChange(onStepChange: OnStepChange): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_ON_STEP_CHANGE,\n payload: {\n onStepChange,\n },\n };\n}\n\nexport function UpdateGetFileData(getFileData: GetFileData): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_GET_FILE_DATA,\n payload: {\n getFileData,\n },\n };\n}\n\nexport function UpdatePageSize(pageSize: number): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_PAGE_SIZE,\n payload: {\n pageSize,\n },\n };\n}\n\nexport function UpdateGetFileList(loadFileList: LoadFileList): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_LOAD_FILE_LIST,\n payload: {\n loadFileList,\n },\n };\n}\n\nexport function UpdateRotate(): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_ROTATE,\n };\n}\n\nexport function CopyBackWordResult(): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.COPY_BACKWARD_RESULT,\n };\n}\n\n/**\n * 初始化任务数据\n * @param param0\n */\nexport function InitTaskData({\n onSubmit,\n onSave,\n onPageChange,\n onStepChange,\n getFileData,\n pageSize,\n loadFileList,\n step,\n stepList,\n}: any): any {\n const tasks: any[] = [];\n\n if (onSubmit) {\n tasks.push(UpdateOnSubmit(onSubmit));\n }\n if (onSave) {\n tasks.push(UpdateOnSave(onSave));\n }\n if (onPageChange) {\n tasks.push(UpdateOnPageChange(onPageChange));\n }\n\n if (onStepChange) {\n tasks.push(UpdateOnStepChange(onStepChange));\n }\n\n if (getFileData) {\n tasks.push(UpdateGetFileData(getFileData));\n }\n\n if (loadFileList) {\n tasks.push(UpdateGetFileList(loadFileList));\n }\n \n if (pageSize) {\n tasks.push(UpdatePageSize(pageSize));\n }\n\n tasks.push(SetTaskConfig({ stepList, step }));\n\n tasks.push({\n type: ANNOTATION_ACTIONS.CALC_STEP_PROGRESS,\n });\n\n tasks.push({\n type: ANNOTATION_ACTIONS.INIT_TOOL,\n });\n\n return (dispatch: any) => dispatchTasks(dispatch, tasks);\n}\n\n/** 获取下一步的step */\nconst getNextStep = (step: number, stepList: any) => {\n const currentStepIndex = stepList?.findIndex((element: any) => element?.step === step);\n return stepList[currentStepIndex + 1]?.step;\n};\n\n/** 切换到下一步 */\nexport const ToNextStep = (pageNumber?: number) => (dispatch: any, getState: any) => {\n const { annotation } = getState();\n const { step, stepList } = annotation;\n const nextStep = getNextStep(step, stepList);\n return [dispatch(UpdateProcessingStep(nextStep, pageNumber))];\n};\n\n/**\n * 更新当前操作的步骤\n * @param {number} toStep\n */\nexport const UpdateProcessingStep =\n (toStep: number, index?: number) => (dispatch: any, getState: any) => {\n const { annotation } = getState();\n annotation?.onStepChange?.(toStep);\n const imgIndex = annotation?.imgIndex ?? 0;\n return [\n dispatch({ type: ANNOTATION_ACTIONS.SUBMIT_RESULT }),\n dispatch({\n type: ANNOTATION_ACTIONS.SUBMIT_FILE_DATA,\n payload: { submitType: ESubmitType.StepChanged },\n }),\n // ToSubmitFileData(ESubmitType.StepChanged),\n dispatch({ type: ANNOTATION_ACTIONS.SET_STEP, payload: { toStep } }),\n dispatch({ type: ANNOTATION_ACTIONS.CALC_STEP_PROGRESS }),\n // 切换步骤保持图片位置\n dispatch(LoadFileAndFileData(index ?? imgIndex, 0)),\n ];\n };\n\n/**\n * 提交当前的文件数据\n * @param submitType\n */\nexport const ToSubmitFileData = (submitType: ESubmitType) => (dispatch: any) =>\n [\n dispatch({ type: ANNOTATION_ACTIONS.SUBMIT_RESULT }),\n dispatch({ type: ANNOTATION_ACTIONS.SUBMIT_FILE_DATA, payload: { submitType } }),\n ];\n\n/**\n * 提交数据并且切换标注文件\n * @param dispatch\n * @param nextIndex\n * @param submitType\n * @param nextBasicIndex\n */\nconst SubmitAndChangeFileIndex = (\n dispatch: any,\n nextIndex: number,\n submitType: ESubmitType,\n nextBasicIndex?: number,\n) => [\n dispatch(ToSubmitFileData(submitType)),\n dispatch(LoadFileAndFileData(nextIndex, nextBasicIndex)),\n];\n\nconst ChangeBasicIndex = (dispatch: any, nextBasicIndex: number) => [\n dispatch({ type: ANNOTATION_ACTIONS.SUBMIT_RESULT }),\n dispatch({ type: ANNOTATION_ACTIONS.SET_BASIC_INDEX, payload: { basicIndex: nextBasicIndex } }),\n];\n\nconst ChangeTriggerEventAfterIndexChanged = (\n dispatch: any,\n triggerEventAfterIndexChanged: boolean,\n) => {\n dispatch({\n type: ANNOTATION_ACTIONS.SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED,\n payload: {\n triggerEventAfterIndexChanged,\n },\n });\n};\n\n/** 向前翻页 */\nexport const PageBackward =\n (triggerEventAfterIndexChanged = false) =>\n (dispatch: any, getState: any) => {\n return DispatcherTurning(\n dispatch,\n getState,\n EPageTurningOperation.Backward,\n triggerEventAfterIndexChanged,\n );\n };\n\n/** 向后翻页 */\nexport const PageForward =\n (triggerEventAfterIndexChanged = false) =>\n (dispatch: any, getState: any) => {\n return DispatcherTurning(\n dispatch,\n getState,\n EPageTurningOperation.Forward,\n triggerEventAfterIndexChanged,\n );\n };\n\n/**\n * 跳到指定文件索引\n * @param toIndex\n */\nexport const PageJump =\n (toIndex: number, triggerEventAfterIndexChanged = false) =>\n (dispatch: any, getState: any) => {\n if (toIndex === getState().imgIndex) {\n return;\n }\n\n return DispatcherTurning(\n dispatch,\n getState,\n EPageTurningOperation.Jump,\n triggerEventAfterIndexChanged,\n toIndex,\n );\n };\n\n/**\n * 加载文件列表\n * @param dispatch\n * @param getState\n * @param nextIndex 需要加载的图片index\n * @param isInitial // 是否为初始化加载\n */\nexport const loadImgList = async (\n dispatch: any,\n getState: any,\n nextIndex: number,\n isInitial?: boolean,\n) => {\n const { loadFileList, imgList, pageSize } = getState().annotation;\n const page = Math.floor(nextIndex / pageSize);\n SetAnnotationLoading(dispatch, true);\n try {\n const res: any = await loadFileList(page, pageSize);\n SetAnnotationLoading(dispatch, false);\n if (!res?.fileList?.length || !res?.total) {\n throw new Error('fileList and total are required');\n }\n const newImgList = isInitial ? new Array(res.total) : [...imgList];\n newImgList.splice(page * pageSize, pageSize, ...res.fileList);\n dispatch({\n type: ANNOTATION_ACTIONS.UPDATE_IMG_LIST,\n payload: {\n imgList: newImgList,\n },\n });\n return true;\n } catch (err) {\n SetAnnotationLoading(dispatch, false);\n console.error(err);\n }\n};\n\n/**\n * 判断翻页还是切换依赖数据\n * @param dispatch\n * @param getState\n * @param pageTurningOperation\n * @param toIndex\n */\nexport const DispatcherTurning = async (\n dispatch: any,\n getState: any,\n pageTurningOperation: EPageTurningOperation,\n triggerEventAfterIndexChanged = false,\n toIndex?: number,\n) => {\n const annotationStore = getState().annotation;\n const { fileIndexChanged, fileIndex, basicIndexChanged, basicIndex } =\n PageOperator.getNextPageInfo(pageTurningOperation, annotationStore, toIndex);\n\n const submitType: ESubmitType = getSubmitByPageOperation(pageTurningOperation);\n\n ChangeTriggerEventAfterIndexChanged(dispatch, triggerEventAfterIndexChanged);\n\n // 翻页\n if (fileIndexChanged) {\n if (annotationStore.loading) {\n return;\n }\n // 加载图片列表\n if (!annotationStore.imgList[fileIndex]) {\n const isSuccess = await loadImgList(dispatch, getState, fileIndex);\n if (!isSuccess) {\n // 加载失败不往下执行\n return;\n }\n }\n annotationStore.onPageChange?.(fileIndex);\n const index =\n submitType === ESubmitType.Backward\n ? getBasicIndex(getState().annotation, basicIndex)\n : basicIndex;\n return SubmitAndChangeFileIndex(dispatch, fileIndex, submitType, index);\n }\n\n if (basicIndexChanged) {\n return ChangeBasicIndex(dispatch, basicIndex);\n }\n\n return dispatch(ToSubmitFileData(submitType));\n};\n\n/**\n * 保存当前页数据\n * */\nexport const ChangeSave = (dispatch: Function) => {\n dispatch(ToSubmitFileData(ESubmitType.Save));\n dispatch({ type: ANNOTATION_ACTIONS.SAVE_RESULT });\n};\n\nexport const SetAnnotationLoading = (dispatch: Function, loading: boolean) => {\n dispatch({\n type: ANNOTATION_ACTIONS.SET_LOADING,\n payload: {\n loading,\n },\n });\n};\n"],"names":["this"],"mappings":"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"}
1
+ {"version":3,"file":"actionCreators.js","sources":["../../../src/store/annotation/actionCreators.ts"],"sourcesContent":["import { ANNOTATION_ACTIONS } from '@/store/Actions';\nimport { IStepInfo } from '@/types/step';\nimport {\n GetFileData,\n LoadFileList,\n IFileItem,\n OnPageChange,\n OnSave,\n OnStepChange,\n OnSubmit,\n} from '@/types/data';\nimport { AnnotationActionTypes, ToolInstance } from './types';\nimport { LoadFileAndFileData, getStepConfig } from './reducer';\nimport { ESubmitType } from '@/constant';\nimport { EPageTurningOperation } from '@/data/enums/AnnotationSize';\nimport PageOperator from '@/utils/PageOperator';\nimport { jsonParser } from '@/utils';\n\nconst dispatchTasks = (dispatch: any, tasks: any[]) => tasks.map((task) => dispatch(task));\n\n/**\n * @param {pageTurningOperation} pageTurningOperation 翻页操作\n * @returns {ESubmitType} 提数据交类型\n */\nconst getSubmitByPageOperation = (pageTurningOperation: EPageTurningOperation) => {\n if (pageTurningOperation === EPageTurningOperation.Forward) {\n return ESubmitType.Forward;\n }\n\n if (pageTurningOperation === EPageTurningOperation.Backward) {\n return ESubmitType.Backward;\n }\n\n if (pageTurningOperation === EPageTurningOperation.Jump) {\n return ESubmitType.Jump;\n }\n\n return ESubmitType.Forward;\n};\n\nconst getBasicIndex = (annotationStore: any, basicIndex: number) => {\n const { imgList, imgIndex } = annotationStore;\n const { dataSourceStep } = getStepConfig(annotationStore.stepList, annotationStore.step);\n let backwardResult = jsonParser(imgList[imgIndex - 1].result);\n const index = backwardResult[`step_${dataSourceStep}`]?.result?.length - 1;\n return index || basicIndex;\n};\n\nexport function UpdateToolInstance(toolInstance: ToolInstance): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_TOOL_INSTANCE,\n payload: {\n toolInstance,\n },\n };\n}\n\nexport function UpdateImgList(imgList: IFileItem[]): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_IMG_LIST,\n payload: {\n imgList,\n },\n };\n}\n\nexport function UpdateAnnotationConfig(config: string): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_ANNOTATION_CONFIG,\n payload: {\n config,\n },\n };\n}\n\nexport function SetTaskConfig({\n stepList,\n step,\n}: {\n stepList: IStepInfo[];\n step: number;\n}): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.SET_TASK_CONFIG,\n payload: {\n stepList,\n step,\n },\n };\n}\n\nexport function UpdateOnSubmit(onSubmit: OnSubmit): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_ON_SUBMIT,\n payload: {\n onSubmit,\n },\n };\n}\n\nexport function UpdateOnSave(onSave: OnSave): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_ON_SAVE,\n payload: {\n onSave,\n },\n };\n}\n\nexport function UpdateOnPageChange(onPageChange: OnPageChange): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_ON_PAGE_CHANGE,\n payload: {\n onPageChange,\n },\n };\n}\n\nexport function UpdateOnStepChange(onStepChange: OnStepChange): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_ON_STEP_CHANGE,\n payload: {\n onStepChange,\n },\n };\n}\n\nexport function UpdateGetFileData(getFileData: GetFileData): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_GET_FILE_DATA,\n payload: {\n getFileData,\n },\n };\n}\n\nexport function UpdatePageSize(pageSize: number): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_PAGE_SIZE,\n payload: {\n pageSize,\n },\n };\n}\n\nexport function UpdateGetFileList(loadFileList: LoadFileList): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_LOAD_FILE_LIST,\n payload: {\n loadFileList,\n },\n };\n}\n\nexport function UpdateRotate(): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.UPDATE_ROTATE,\n };\n}\n\nexport function CopyBackWordResult(): AnnotationActionTypes {\n return {\n type: ANNOTATION_ACTIONS.COPY_BACKWARD_RESULT,\n };\n}\n\n/**\n * 初始化任务数据\n * @param param0\n */\nexport function InitTaskData({\n onSubmit,\n onSave,\n onPageChange,\n onStepChange,\n getFileData,\n pageSize,\n loadFileList,\n step,\n stepList,\n}: any): any {\n const tasks: any[] = [];\n\n if (onSubmit) {\n tasks.push(UpdateOnSubmit(onSubmit));\n }\n if (onSave) {\n tasks.push(UpdateOnSave(onSave));\n }\n if (onPageChange) {\n tasks.push(UpdateOnPageChange(onPageChange));\n }\n\n if (onStepChange) {\n tasks.push(UpdateOnStepChange(onStepChange));\n }\n\n if (getFileData) {\n tasks.push(UpdateGetFileData(getFileData));\n }\n\n if (loadFileList) {\n tasks.push(UpdateGetFileList(loadFileList));\n }\n \n if (pageSize) {\n tasks.push(UpdatePageSize(pageSize));\n }\n\n tasks.push(SetTaskConfig({ stepList, step }));\n\n tasks.push({\n type: ANNOTATION_ACTIONS.CALC_STEP_PROGRESS,\n });\n\n tasks.push({\n type: ANNOTATION_ACTIONS.INIT_TOOL,\n });\n\n return (dispatch: any) => dispatchTasks(dispatch, tasks);\n}\n\n/** 获取下一步的step */\nconst getNextStep = (step: number, stepList: any) => {\n const currentStepIndex = stepList?.findIndex((element: any) => element?.step === step);\n return stepList[currentStepIndex + 1]?.step;\n};\n\n/** 切换到下一步 */\nexport const ToNextStep = (pageNumber?: number) => (dispatch: any, getState: any) => {\n const { annotation } = getState();\n const { step, stepList } = annotation;\n const nextStep = getNextStep(step, stepList);\n return [dispatch(UpdateProcessingStep(nextStep, pageNumber))];\n};\n\n/**\n * 更新当前操作的步骤\n * @param {number} toStep\n */\nexport const UpdateProcessingStep =\n (toStep: number, index?: number) => (dispatch: any, getState: any) => {\n const { annotation } = getState();\n annotation?.onStepChange?.(toStep);\n const imgIndex = annotation?.imgIndex ?? 0;\n return [\n dispatch({ type: ANNOTATION_ACTIONS.SUBMIT_RESULT }),\n dispatch({\n type: ANNOTATION_ACTIONS.SUBMIT_FILE_DATA,\n payload: { submitType: ESubmitType.StepChanged },\n }),\n // ToSubmitFileData(ESubmitType.StepChanged),\n dispatch({ type: ANNOTATION_ACTIONS.SET_STEP, payload: { toStep } }),\n dispatch({ type: ANNOTATION_ACTIONS.CALC_STEP_PROGRESS }),\n // 切换步骤保持图片位置\n dispatch(LoadFileAndFileData(index ?? imgIndex, 0)),\n ];\n };\n\n/**\n * 提交当前的文件数据\n * @param submitType\n */\nexport const ToSubmitFileData = (submitType: ESubmitType) => (dispatch: any) =>\n [\n dispatch({ type: ANNOTATION_ACTIONS.SUBMIT_RESULT }),\n dispatch({ type: ANNOTATION_ACTIONS.SUBMIT_FILE_DATA, payload: { submitType } }),\n ];\n\n/**\n * 提交数据并且切换标注文件\n * @param dispatch\n * @param nextIndex\n * @param submitType\n * @param nextBasicIndex\n */\nconst SubmitAndChangeFileIndex = (\n dispatch: any,\n nextIndex: number,\n submitType: ESubmitType,\n nextBasicIndex?: number,\n) => [\n dispatch(ToSubmitFileData(submitType)),\n dispatch(LoadFileAndFileData(nextIndex, nextBasicIndex)),\n];\n\nconst ChangeBasicIndex = (dispatch: any, nextBasicIndex: number) => [\n dispatch({ type: ANNOTATION_ACTIONS.SUBMIT_RESULT }),\n dispatch({ type: ANNOTATION_ACTIONS.SET_BASIC_INDEX, payload: { basicIndex: nextBasicIndex } }),\n];\n\nconst ChangeTriggerEventAfterIndexChanged = (\n dispatch: any,\n triggerEventAfterIndexChanged: boolean,\n) => {\n dispatch({\n type: ANNOTATION_ACTIONS.SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED,\n payload: {\n triggerEventAfterIndexChanged,\n },\n });\n};\n\n/** 向前翻页 */\nexport const PageBackward =\n (triggerEventAfterIndexChanged = false) =>\n (dispatch: any, getState: any) => {\n return DispatcherTurning(\n dispatch,\n getState,\n EPageTurningOperation.Backward,\n triggerEventAfterIndexChanged,\n );\n };\n\n/** 向后翻页 */\nexport const PageForward =\n (triggerEventAfterIndexChanged = false) =>\n (dispatch: any, getState: any) => {\n return DispatcherTurning(\n dispatch,\n getState,\n EPageTurningOperation.Forward,\n triggerEventAfterIndexChanged,\n );\n };\n\n/**\n * 跳到指定文件索引\n * @param toIndex\n */\nexport const PageJump =\n (toIndex: number, triggerEventAfterIndexChanged = false) =>\n (dispatch: any, getState: any) => {\n if (toIndex === getState().imgIndex) {\n return;\n }\n\n return DispatcherTurning(\n dispatch,\n getState,\n EPageTurningOperation.Jump,\n triggerEventAfterIndexChanged,\n toIndex,\n );\n };\n\n/**\n * 加载文件列表\n * @param dispatch\n * @param getState\n * @param nextIndex 需要加载的图片index\n * @param isInitial // 是否为初始化加载\n */\nexport const loadImgList = async (\n dispatch: any,\n getState: any,\n nextIndex: number,\n isInitial?: boolean,\n) => {\n const { loadFileList, imgList, pageSize } = getState().annotation;\n const page = Math.floor(nextIndex / pageSize);\n SetAnnotationLoading(dispatch, true);\n try {\n const res: any = await loadFileList(page, pageSize);\n SetAnnotationLoading(dispatch, false);\n if (!res?.fileList?.length || !res?.total) {\n throw new Error('fileList and total are required');\n }\n const newImgList = isInitial ? new Array(res.total) : [...imgList];\n newImgList.splice(page * pageSize, pageSize, ...res.fileList);\n dispatch({\n type: ANNOTATION_ACTIONS.UPDATE_IMG_LIST,\n payload: {\n imgList: newImgList,\n },\n });\n return true;\n } catch (err) {\n SetAnnotationLoading(dispatch, false);\n console.error(err);\n }\n};\n\n/**\n * 判断翻页还是切换依赖数据\n * @param dispatch\n * @param getState\n * @param pageTurningOperation\n * @param toIndex\n */\nexport const DispatcherTurning = async (\n dispatch: any,\n getState: any,\n pageTurningOperation: EPageTurningOperation,\n triggerEventAfterIndexChanged = false,\n toIndex?: number,\n) => {\n const annotationStore = getState().annotation;\n const { fileIndexChanged, fileIndex, basicIndexChanged, basicIndex } =\n PageOperator.getNextPageInfo(pageTurningOperation, annotationStore, toIndex);\n\n const submitType: ESubmitType = getSubmitByPageOperation(pageTurningOperation);\n\n ChangeTriggerEventAfterIndexChanged(dispatch, triggerEventAfterIndexChanged);\n\n // 翻页\n if (fileIndexChanged) {\n if (annotationStore.loading) {\n return;\n }\n // 加载图片列表\n if (!annotationStore.imgList[fileIndex]) {\n const isSuccess = await loadImgList(dispatch, getState, fileIndex);\n if (!isSuccess) {\n // 加载失败不往下执行\n return;\n }\n }\n annotationStore.onPageChange?.(fileIndex);\n const index =\n submitType === ESubmitType.Backward\n ? getBasicIndex(getState().annotation, basicIndex)\n : basicIndex;\n return SubmitAndChangeFileIndex(dispatch, fileIndex, submitType, index);\n }\n\n if (basicIndexChanged) {\n return ChangeBasicIndex(dispatch, basicIndex);\n }\n\n return dispatch(ToSubmitFileData(submitType));\n};\n\n/**\n * 保存当前页数据\n * */\nexport const ChangeSave = (dispatch: Function) => {\n dispatch(ToSubmitFileData(ESubmitType.Save));\n dispatch({ type: ANNOTATION_ACTIONS.SAVE_RESULT });\n};\n\nexport const SetAnnotationLoading = (dispatch: Function, loading: boolean) => {\n dispatch({\n type: ANNOTATION_ACTIONS.SET_LOADING,\n payload: {\n loading,\n },\n });\n};\n"],"names":["this"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import{cTool as o}from"@labelbee/lb-annotation";const{EVideoToolName:l,EPointCloudName:s}=o;class t{static isVideoTool(e){return e?Object.values(l).includes(e):!1}static isPointCloudTool(e){return e?Object.values(s).includes(e):!1}}export{t as default};
@@ -1 +1 @@
1
- import c,{useState as P,useRef as g,useEffect as a}from"react";import{message as d}from"antd/es";import{connect as h}from"react-redux";import j from"lodash";import{store as w}from"../../../index.js";import A from"../../../hooks/useSize.js";import{InitToolStyleConfig as x}from"../../../store/toolStyle/actionCreators.js";import{ImgUtils as z}from"@labelbee/lb-annotation";import C from"../../../components/fileException/FileError.js";import{i18n as v}from"@labelbee/lb-utils";var R=Object.defineProperty,L=Object.defineProperties,N=Object.getOwnPropertyDescriptors,O=Object.getOwnPropertySymbols,D=Object.prototype.hasOwnProperty,k=Object.prototype.propertyIsEnumerable,_=(t,e,o)=>e in t?R(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o,S=(t,e)=>{for(var o in e||(e={}))D.call(e,o)&&_(t,o,e[o]);if(O)for(var o of O(e))k.call(e,o)&&_(t,o,e[o]);return t},F=(t,e)=>L(t,N(e));const T=t=>{const[,e]=P(0),{imgAttribute:o,toolStyle:s,toolInstance:n,annotationEngine:r,imgList:m,imgIndex:I,dataInjectionAtCreation:f,renderEnhance:p}=t,u=g(null),b=g(null),l=A(u);a(()=>{w.dispatch(x())},[]),a(()=>{if(!!r){switch(v.language){case"cn":case"en":r.setLang(v.language);break}r==null||r.setDataInjectionAtCreation(f),r==null||r.setRenderEnhance(p)}},[r,f,p]),a(()=>{n&&(n.singleOn("messageError",i=>{d.error(i)}),n.singleOn("messageInfo",i=>{d.info(i)}),n.singleOn("changeAnnotationShow",()=>{e(i=>i+1)}))},[n]),a(()=>{n&&n.setImgAttribute(o)},[o]),a(()=>{n&&n.setStyle(s),r&&r.setStyle(s)},[s]),a(()=>{(n==null?void 0:n.setSize)&&n.setSize(l),r&&r.setSize(l)},[l]);const y=()=>{const i=m==null?void 0:m[I];!(i==null?void 0:i.url)||z.load(i.url).then(E=>{r.setImgNode(E)})};return c.createElement("div",{ref:u,className:"annotationOperation"},c.createElement("div",{className:"canvas",ref:b,style:l,id:"toolContainer"}),(n==null?void 0:n.isImgError)===!0&&c.createElement(C,F(S({},l),{reloadImage:y,backgroundColor:"#e2e2e2",ignoreOffsetY:!0})))},B=t=>{const e=j.pickBy(t.annotation,(o,s)=>["imgList","imgIndex","stepList","step","toolInstance","annotationEngine","loading"].includes(s));return S({imgAttribute:t.imgAttribute,toolStyle:t.toolStyle},e)};var U=h(B)(T);export{U as default};
1
+ import{store as h}from"../../../index.js";import{message as g}from"antd/es";import j from"lodash";import m,{useState as w,useRef as v,useEffect as a}from"react";import{connect as A}from"react-redux";import R from"../../../components/fileException/FileError.js";import C from"../../../hooks/useSize.js";import{InitToolStyleConfig as x}from"../../../store/toolStyle/actionCreators.js";import{ImgUtils as z}from"@labelbee/lb-annotation";import{i18n as S}from"@labelbee/lb-utils";var L=Object.defineProperty,N=Object.defineProperties,D=Object.getOwnPropertyDescriptors,O=Object.getOwnPropertySymbols,k=Object.prototype.hasOwnProperty,F=Object.prototype.propertyIsEnumerable,_=(t,e,o)=>e in t?L(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o,y=(t,e)=>{for(var o in e||(e={}))k.call(e,o)&&_(t,o,e[o]);if(O)for(var o of O(e))F.call(e,o)&&_(t,o,e[o]);return t},T=(t,e)=>N(t,D(e));const B=t=>{const[,e]=w(0),{imgAttribute:o,toolStyle:s,toolInstance:n,annotationEngine:r,imgList:f,imgIndex:I,dataInjectionAtCreation:p,renderEnhance:u,customRenderStyle:c}=t,d=v(null),b=v(null),l=C(d);a(()=>{h.dispatch(x())},[]),a(()=>{if(!!r){switch(S.language){case"cn":case"en":r.setLang(S.language);break}r==null||r.setDataInjectionAtCreation(p),r==null||r.setRenderEnhance(u),c&&(r==null||r.setCustomRenderStyle(c))}},[r,p,u,c]),a(()=>{n&&(n.singleOn("messageError",i=>{g.error(i)}),n.singleOn("messageInfo",i=>{g.info(i)}),n.singleOn("changeAnnotationShow",()=>{e(i=>i+1)}))},[n]),a(()=>{n&&n.setImgAttribute(o)},[o]),a(()=>{n&&n.setStyle(s),r&&r.setStyle(s)},[s]),a(()=>{(n==null?void 0:n.setSize)&&n.setSize(l),r&&r.setSize(l)},[l]);const E=()=>{const i=f==null?void 0:f[I];!(i==null?void 0:i.url)||z.load(i.url).then(P=>{r.setImgNode(P)})};return m.createElement("div",{ref:d,className:"annotationOperation"},m.createElement("div",{className:"canvas",ref:b,style:l,id:"toolContainer"}),(n==null?void 0:n.isImgError)===!0&&m.createElement(R,T(y({},l),{reloadImage:E,backgroundColor:"#e2e2e2",ignoreOffsetY:!0})))},U=t=>{const e=j.pickBy(t.annotation,(o,s)=>["imgList","imgIndex","stepList","step","toolInstance","annotationEngine","loading"].includes(s));return y({imgAttribute:t.imgAttribute,toolStyle:t.toolStyle},e)};var V=A(U)(B);export{V as default};
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/views/MainView/annotationOperation/index.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { message } from 'antd/es';\nimport { AppState } from 'src/store';\nimport { connect } from 'react-redux';\nimport { ImgAttributeState } from 'src/store/imgAttribute/types';\nimport _ from 'lodash';\nimport { store } from '@/index';\n\nimport useSize from '@/hooks/useSize';\nimport { InitToolStyleConfig } from '@/store/toolStyle/actionCreators';\nimport { AnnotationEngine, ImgUtils } from '@labelbee/lb-annotation';\nimport FileError from '@/components/fileException/FileError';\nimport { i18n } from '@labelbee/lb-utils';\nimport { AppProps } from '@/App';\n\ninterface IProps extends AppState, AppProps {\n imgAttribute: ImgAttributeState;\n imgIndex: number;\n annotationEngine: AnnotationEngine;\n loading: boolean;\n}\n\nconst AnnotationOperation: React.FC<IProps> = (props: IProps) => {\n const [, forceRender] = useState<number>(0);\n\n const {\n imgAttribute,\n toolStyle,\n toolInstance,\n annotationEngine,\n imgList,\n imgIndex,\n dataInjectionAtCreation,\n renderEnhance,\n } = props;\n const annotationRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n // const windowSize = useContext(viewportContext);\n // const canvasSize = getFormatSize(windowSize);\n const size = useSize(annotationRef);\n\n useEffect(() => {\n store.dispatch(InitToolStyleConfig());\n }, []);\n\n useEffect(() => {\n if (!annotationEngine) {\n return;\n }\n\n // 更改 toolInstance 内部国际化语言\n switch (i18n.language) {\n case 'cn':\n case 'en':\n annotationEngine.setLang(i18n.language);\n break;\n default: {\n //\n break;\n }\n }\n annotationEngine?.setDataInjectionAtCreation(dataInjectionAtCreation);\n annotationEngine?.setRenderEnhance(renderEnhance);\n }, [annotationEngine, dataInjectionAtCreation, renderEnhance]);\n\n useEffect(() => {\n if (toolInstance) {\n toolInstance.singleOn('messageError', (error: string) => {\n message.error(error);\n });\n\n toolInstance.singleOn('messageInfo', (info: string) => {\n message.info(info);\n });\n\n toolInstance.singleOn('changeAnnotationShow', () => {\n forceRender((s) => s + 1);\n });\n }\n }, [toolInstance]);\n\n useEffect(() => {\n if (toolInstance) {\n toolInstance.setImgAttribute(imgAttribute);\n }\n }, [imgAttribute]);\n\n /** 样式同步 */\n useEffect(() => {\n if (toolInstance) {\n toolInstance.setStyle(toolStyle);\n }\n if (annotationEngine) {\n annotationEngine.setStyle(toolStyle);\n }\n }, [toolStyle]);\n\n /** 窗口大小监听 */\n useEffect(() => {\n if (toolInstance?.setSize) {\n toolInstance.setSize(size);\n }\n\n if (annotationEngine) {\n annotationEngine.setSize(size);\n }\n }, [size]);\n\n /**\n * 重新加载图片,避免网络问题导致的图片无法加载\n * @returns\n */\n const reloadImg = () => {\n const imgInfo = imgList?.[imgIndex];\n if (!imgInfo?.url) {\n return;\n }\n\n ImgUtils.load(imgInfo.url).then((imgNode) => {\n annotationEngine.setImgNode(imgNode as HTMLImageElement);\n });\n };\n\n return (\n <div ref={annotationRef} className='annotationOperation'>\n <div className='canvas' ref={containerRef} style={size} id='toolContainer' />\n {toolInstance?.isImgError === true && (\n <FileError\n {...size}\n reloadImage={reloadImg}\n backgroundColor='#e2e2e2'\n ignoreOffsetY={true}\n />\n )}\n </div>\n );\n};\n\nconst mapStateToProps = (state: AppState) => {\n const annotationState = _.pickBy(state.annotation, (v, k) =>\n [\n 'imgList',\n 'imgIndex',\n 'stepList',\n 'step',\n 'toolInstance',\n 'annotationEngine',\n 'loading',\n ].includes(k),\n );\n return {\n imgAttribute: state.imgAttribute,\n toolStyle: state.toolStyle,\n ...annotationState,\n };\n};\n\nexport default connect(mapStateToProps)(AnnotationOperation);\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,MAAM,mBAAA,GAAwC,CAAC,KAAkB,KAAA;AAC/D,EAAM,MAAA,GAAG,WAAA,CAAA,GAAe,QAAiB,CAAA,CAAA,CAAA,CAAA;AAEzC,EAAM,MAAA;AAAA,IACJ,YAAA;AAAA,IACA,SAAA;AAAA,IACA,YAAA;AAAA,IACA,gBAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,uBAAA;AAAA,IACA,aAAA;AAAA,GACE,GAAA,KAAA,CAAA;AACJ,EAAA,MAAM,gBAAgB,MAAuB,CAAA,IAAA,CAAA,CAAA;AAC7C,EAAA,MAAM,eAAe,MAAuB,CAAA,IAAA,CAAA,CAAA;AAG5C,EAAA,MAAM,OAAO,OAAQ,CAAA,aAAA,CAAA,CAAA;AAErB,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,KAAA,CAAM,QAAS,CAAA,mBAAA,EAAA,CAAA,CAAA;AAAA,GACd,EAAA,EAAA,CAAA,CAAA;AAEH,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,gBAAkB,EAAA;AACrB,MAAA,OAAA;AAAA,KAAA;AAIF,IAAA,QAAQ,IAAK,CAAA,QAAA;AAAA,MACN,KAAA,IAAA,CAAA;AAAA,MACA,KAAA,IAAA;AACH,QAAA,gBAAA,CAAiB,QAAQ,IAAK,CAAA,QAAA,CAAA,CAAA;AAC9B,QAAA,MAAA;AAGA,KAAA;AAGJ,IAAA,gBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,gBAAA,CAAkB,0BAA2B,CAAA,uBAAA,CAAA,CAAA;AAC7C,IAAA,gBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,gBAAA,CAAkB,gBAAiB,CAAA,aAAA,CAAA,CAAA;AAAA,GAClC,EAAA,CAAC,kBAAkB,uBAAyB,EAAA,aAAA,CAAA,CAAA,CAAA;AAE/C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,YAAc,EAAA;AAChB,MAAa,YAAA,CAAA,QAAA,CAAS,cAAgB,EAAA,CAAC,KAAkB,KAAA;AACvD,QAAA,OAAA,CAAQ,KAAM,CAAA,KAAA,CAAA,CAAA;AAAA,OAAA,CAAA,CAAA;AAGhB,MAAa,YAAA,CAAA,QAAA,CAAS,aAAe,EAAA,CAAC,IAAiB,KAAA;AACrD,QAAA,OAAA,CAAQ,IAAK,CAAA,IAAA,CAAA,CAAA;AAAA,OAAA,CAAA,CAAA;AAGf,MAAa,YAAA,CAAA,QAAA,CAAS,wBAAwB,MAAM;AAClD,QAAY,WAAA,CAAA,CAAC,MAAM,CAAI,GAAA,CAAA,CAAA,CAAA;AAAA,OAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,EAG1B,CAAC,YAAA,CAAA,CAAA,CAAA;AAEJ,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,YAAc,EAAA;AAChB,MAAA,YAAA,CAAa,eAAgB,CAAA,YAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,EAE9B,CAAC,YAAA,CAAA,CAAA,CAAA;AAGJ,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,YAAc,EAAA;AAChB,MAAA,YAAA,CAAa,QAAS,CAAA,SAAA,CAAA,CAAA;AAAA,KAAA;AAExB,IAAA,IAAI,gBAAkB,EAAA;AACpB,MAAA,gBAAA,CAAiB,QAAS,CAAA,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,EAE3B,CAAC,SAAA,CAAA,CAAA,CAAA;AAGJ,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,6CAAc,OAAS,EAAA;AACzB,MAAA,YAAA,CAAa,OAAQ,CAAA,IAAA,CAAA,CAAA;AAAA,KAAA;AAGvB,IAAA,IAAI,gBAAkB,EAAA;AACpB,MAAA,gBAAA,CAAiB,OAAQ,CAAA,IAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,EAE1B,CAAC,IAAA,CAAA,CAAA,CAAA;AAMJ,EAAA,MAAM,YAAY,MAAM;AACtB,IAAA,MAAM,UAAU,OAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAA,QAAA,CAAA,CAAA;AAC1B,IAAI,IAAA,qCAAU,GAAK,CAAA,EAAA;AACjB,MAAA,OAAA;AAAA,KAAA;AAGF,IAAA,QAAA,CAAS,IAAK,CAAA,OAAA,CAAQ,GAAK,CAAA,CAAA,IAAA,CAAK,CAAC,OAAY,KAAA;AAC3C,MAAA,gBAAA,CAAiB,UAAW,CAAA,OAAA,CAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAIhC,EAAA,2CACG,KAAD,EAAA;AAAA,IAAK,GAAK,EAAA,aAAA;AAAA,IAAe,SAAU,EAAA,qBAAA;AAAA,GAAA,sCAChC,KAAD,EAAA;AAAA,IAAK,SAAU,EAAA,QAAA;AAAA,IAAS,GAAK,EAAA,YAAA;AAAA,IAAc,KAAO,EAAA,IAAA;AAAA,IAAM,EAAG,EAAA,eAAA;AAAA,GAAA,CAAA,EAC1D,8CAAc,UAAe,MAAA,IAAA,oBAC3B,KAAA,CAAA,aAAA,CAAA,SAAA,EAAD,iCACM,IADN,CAAA,EAAA;AAAA,IAEE,WAAa,EAAA,SAAA;AAAA,IACb,eAAgB,EAAA,SAAA;AAAA,IAChB,aAAe,EAAA,IAAA;AAAA,GAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAOzB,MAAM,eAAA,GAAkB,CAAC,KAAoB,KAAA;AAC3C,EAAA,MAAM,kBAAkB,CAAE,CAAA,MAAA,CAAO,MAAM,UAAY,EAAA,CAAC,GAAG,CACrD,KAAA;AAAA,IACE,SAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA;AAAA,IACA,kBAAA;AAAA,IACA,SAAA;AAAA,GAAA,CACA,QAAS,CAAA,CAAA,CAAA,CAAA,CAAA;AAEb,EAAO,OAAA,cAAA,CAAA;AAAA,IACL,cAAc,KAAM,CAAA,YAAA;AAAA,IACpB,WAAW,KAAM,CAAA,SAAA;AAAA,GACd,EAAA,eAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAIP,4BAAe,QAAQ,eAAiB,CAAA,CAAA,mBAAA,CAAA;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/views/MainView/annotationOperation/index.tsx"],"sourcesContent":["import { store } from '@/index';\nimport { message } from 'antd/es';\nimport _ from 'lodash';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { connect } from 'react-redux';\nimport { AppState } from 'src/store';\nimport { ImgAttributeState } from 'src/store/imgAttribute/types';\n\nimport { AppProps } from '@/App';\nimport FileError from '@/components/fileException/FileError';\nimport useSize from '@/hooks/useSize';\nimport { InitToolStyleConfig } from '@/store/toolStyle/actionCreators';\nimport { AnnotationEngine, ImgUtils } from '@labelbee/lb-annotation';\nimport { i18n } from '@labelbee/lb-utils';\n\ninterface IProps extends AppState, AppProps {\n imgAttribute: ImgAttributeState;\n imgIndex: number;\n annotationEngine: AnnotationEngine;\n loading: boolean;\n}\n\nconst AnnotationOperation: React.FC<IProps> = (props: IProps) => {\n const [, forceRender] = useState<number>(0);\n\n const {\n imgAttribute,\n toolStyle,\n toolInstance,\n annotationEngine,\n imgList,\n imgIndex,\n dataInjectionAtCreation,\n renderEnhance,\n customRenderStyle,\n } = props;\n const annotationRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n // const windowSize = useContext(viewportContext);\n // const canvasSize = getFormatSize(windowSize);\n const size = useSize(annotationRef);\n\n useEffect(() => {\n store.dispatch(InitToolStyleConfig());\n }, []);\n\n useEffect(() => {\n if (!annotationEngine) {\n return;\n }\n\n // 更改 toolInstance 内部国际化语言\n switch (i18n.language) {\n case 'cn':\n case 'en':\n annotationEngine.setLang(i18n.language);\n break;\n default: {\n //\n break;\n }\n }\n annotationEngine?.setDataInjectionAtCreation(dataInjectionAtCreation);\n annotationEngine?.setRenderEnhance(renderEnhance);\n if (customRenderStyle) {\n annotationEngine?.setCustomRenderStyle(customRenderStyle);\n }\n }, [annotationEngine, dataInjectionAtCreation, renderEnhance, customRenderStyle]);\n\n useEffect(() => {\n if (toolInstance) {\n toolInstance.singleOn('messageError', (error: string) => {\n message.error(error);\n });\n\n toolInstance.singleOn('messageInfo', (info: string) => {\n message.info(info);\n });\n\n toolInstance.singleOn('changeAnnotationShow', () => {\n forceRender((s) => s + 1);\n });\n }\n }, [toolInstance]);\n\n useEffect(() => {\n if (toolInstance) {\n toolInstance.setImgAttribute(imgAttribute);\n }\n }, [imgAttribute]);\n\n /** 样式同步 */\n useEffect(() => {\n if (toolInstance) {\n toolInstance.setStyle(toolStyle);\n }\n if (annotationEngine) {\n annotationEngine.setStyle(toolStyle);\n }\n }, [toolStyle]);\n\n /** 窗口大小监听 */\n useEffect(() => {\n if (toolInstance?.setSize) {\n toolInstance.setSize(size);\n }\n\n if (annotationEngine) {\n annotationEngine.setSize(size);\n }\n }, [size]);\n\n /**\n * 重新加载图片,避免网络问题导致的图片无法加载\n * @returns\n */\n const reloadImg = () => {\n const imgInfo = imgList?.[imgIndex];\n if (!imgInfo?.url) {\n return;\n }\n\n ImgUtils.load(imgInfo.url).then((imgNode) => {\n annotationEngine.setImgNode(imgNode as HTMLImageElement);\n });\n };\n\n return (\n <div ref={annotationRef} className='annotationOperation'>\n <div className='canvas' ref={containerRef} style={size} id='toolContainer' />\n {toolInstance?.isImgError === true && (\n <FileError\n {...size}\n reloadImage={reloadImg}\n backgroundColor='#e2e2e2'\n ignoreOffsetY={true}\n />\n )}\n </div>\n );\n};\n\nconst mapStateToProps = (state: AppState) => {\n const annotationState = _.pickBy(state.annotation, (v, k) =>\n [\n 'imgList',\n 'imgIndex',\n 'stepList',\n 'step',\n 'toolInstance',\n 'annotationEngine',\n 'loading',\n ].includes(k),\n );\n return {\n imgAttribute: state.imgAttribute,\n toolStyle: state.toolStyle,\n ...annotationState,\n };\n};\n\nexport default connect(mapStateToProps)(AnnotationOperation);\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- import c,{useState as d,useRef as m,useEffect as p}from"react";import{connect as v}from"react-redux";import g from"../../../../components/attributeList/index.js";import A from"../../../../utils/StepUtils.js";import{jsonParser as S}from"../../../../utils/index.js";import{useTranslation as I}from"react-i18next";const h=e=>{var r,i;const[a,s]=d(0),o=m(null),{toolInstance:t}=e,{t:f}=I();if(p(()=>(t&&t.singleOn("changeAttributeSidebar",l=>{var u;s(n=>n+1),!!o.current&&((u=o.current.children[l])==null||u.scrollIntoView({block:"center"}))}),()=>{t.unbindAll("changeAttributeSidebar")}),[t,o]),!e.stepInfo||S(e.stepInfo.config).attributeConfigurable!==!0)return null;if((t==null?void 0:t.config.attributeConfigurable)===!0&&((r=t==null?void 0:t.config)==null?void 0:r.attributeList)){const l=t.config.attributeList.map(n=>({label:n.key,value:n.value}));l.unshift({label:f("NoAttribute"),value:""});const u=n=>{t.setDefaultAttribute(n),s(b=>b+1)};return c.createElement("div",null,c.createElement(g,{list:l,attributeChanged:u,selectedAttribute:(i=t==null?void 0:t.defaultAttribute)!=null?i:"",ref:o}))}return null},L=e=>{var r,i;const a=A.getCurrentStepInfo((r=e.annotation)==null?void 0:r.step,(i=e.annotation)==null?void 0:i.stepList);return{toolInstance:e.annotation.toolInstance,stepInfo:a}};var _=v(L)(h);export{_ as default};
1
+ import s,{useState as d,useRef as m,useEffect as v,useCallback as p}from"react";import{connect as g}from"react-redux";import A from"../../../../components/attributeList/index.js";import S from"../../../../utils/StepUtils.js";import{jsonParser as I}from"../../../../utils/index.js";import{useTranslation as h}from"react-i18next";const L=e=>{var i,o,l;const[C,a]=d(0),u=m(null),{toolInstance:t}=e,{t:c}=h();v(()=>(t&&t.singleOn("changeAttributeSidebar",r=>{var n;a(b=>b+1),!!u.current&&((n=u.current.children[r])==null||n.scrollIntoView({block:"center"}))}),()=>{t.unbindAll("changeAttributeSidebar")}),[t,u]);const f=p(r=>{t.setDefaultAttribute(r),a(n=>n+1)},[t]);if(!e.stepInfo||I(e.stepInfo.config).attributeConfigurable!==!0)return null;if(((i=t==null?void 0:t.config)==null?void 0:i.attributeConfigurable)===!0&&((o=t==null?void 0:t.config)==null?void 0:o.attributeList)){const r=t.config.attributeList.map(n=>({label:n.key,value:n.value}));return r.unshift({label:c("NoAttribute"),value:""}),s.createElement("div",null,s.createElement(A,{list:r,attributeChanged:f,selectedAttribute:(l=t==null?void 0:t.defaultAttribute)!=null?l:"",ref:u}))}return null},_=e=>{var i,o;const l=S.getCurrentStepInfo((i=e.annotation)==null?void 0:i.step,(o=e.annotation)==null?void 0:o.stepList);return{toolInstance:e.annotation.toolInstance,stepInfo:l}};var x=g(_)(L);export{x as default};
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/SwitchAttributeList/index.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport { connect } from 'react-redux';\nimport { AppState } from 'src/store';\nimport { GraphToolInstance } from 'src/store/annotation/types';\nimport AttributeList from '@/components/attributeList';\nimport StepUtils from '@/utils/StepUtils';\nimport { IStepInfo } from '@/types/step';\nimport { jsonParser } from '@/utils';\nimport { useTranslation } from 'react-i18next';\n\ninterface IProps {\n toolInstance: GraphToolInstance;\n stepInfo: IStepInfo;\n}\n\nconst SwitchAttributeList: React.FC<IProps> = (props) => {\n const [_, forceRender] = useState(0);\n const listRef = useRef<HTMLElement>(null);\n const { toolInstance } = props;\n const { t } = useTranslation();\n\n useEffect(() => {\n if (toolInstance) {\n toolInstance.singleOn('changeAttributeSidebar', (index: number) => {\n forceRender((s) => s + 1);\n\n if (!listRef.current) {\n return;\n }\n\n listRef.current.children[index]?.scrollIntoView({ block: 'center' });\n });\n }\n return () => {\n toolInstance.unbindAll('changeAttributeSidebar');\n };\n }, [toolInstance, listRef]);\n\n if (!props.stepInfo) {\n return null;\n }\n\n const config = jsonParser(props.stepInfo.config);\n if (config.attributeConfigurable !== true) {\n return null;\n }\n\n if (toolInstance?.config.attributeConfigurable === true && toolInstance?.config?.attributeList) {\n const list = toolInstance.config.attributeList.map((i: any) => ({\n label: i.key,\n value: i.value,\n }));\n list.unshift({ label: t('NoAttribute'), value: '' });\n const attributeChanged = (v: string) => {\n toolInstance.setDefaultAttribute(v);\n forceRender((s) => s + 1);\n };\n\n return (\n <div>\n <AttributeList\n list={list}\n attributeChanged={attributeChanged}\n selectedAttribute={toolInstance?.defaultAttribute ?? ''}\n ref={listRef}\n />\n </div>\n );\n }\n\n return null;\n};\n\nconst mapStateToProps = (state: AppState) => {\n const stepInfo = StepUtils.getCurrentStepInfo(state.annotation?.step, state.annotation?.stepList);\n\n return {\n toolInstance: state.annotation.toolInstance,\n stepInfo,\n };\n};\n\nexport default connect(mapStateToProps)(SwitchAttributeList);\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/sidebar/SwitchAttributeList/index.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport { connect } from 'react-redux';\nimport { AppState } from 'src/store';\nimport { GraphToolInstance } from 'src/store/annotation/types';\nimport AttributeList from '@/components/attributeList';\nimport StepUtils from '@/utils/StepUtils';\nimport { IStepInfo } from '@/types/step';\nimport { jsonParser } from '@/utils';\nimport { useTranslation } from 'react-i18next';\n\ninterface IProps {\n toolInstance: GraphToolInstance;\n stepInfo: IStepInfo;\n}\n\nconst SwitchAttributeList: React.FC<IProps> = (props) => {\n const [_, forceRender] = useState(0);\n const listRef = useRef<HTMLElement>(null);\n const { toolInstance } = props;\n const { t } = useTranslation();\n\n useEffect(() => {\n if (toolInstance) {\n toolInstance.singleOn('changeAttributeSidebar', (index: number) => {\n forceRender((s) => s + 1);\n\n if (!listRef.current) {\n return;\n }\n\n listRef.current.children[index]?.scrollIntoView({ block: 'center' });\n });\n }\n return () => {\n toolInstance.unbindAll('changeAttributeSidebar');\n };\n }, [toolInstance, listRef]);\n\n const attributeChanged = useCallback(\n (v: string) => {\n toolInstance.setDefaultAttribute(v);\n forceRender((s) => s + 1);\n },\n [toolInstance],\n );\n\n if (!props.stepInfo) {\n return null;\n }\n\n const config = jsonParser(props.stepInfo.config);\n if (config.attributeConfigurable !== true) {\n return null;\n }\n\n if (toolInstance?.config?.attributeConfigurable === true && toolInstance?.config?.attributeList) {\n const list = toolInstance.config.attributeList.map((i: any) => ({\n label: i.key,\n value: i.value,\n }));\n list.unshift({ label: t('NoAttribute'), value: '' });\n\n return (\n <div>\n <AttributeList\n list={list}\n attributeChanged={attributeChanged}\n selectedAttribute={toolInstance?.defaultAttribute ?? ''}\n ref={listRef}\n />\n </div>\n );\n }\n\n return null;\n};\n\nconst mapStateToProps = (state: AppState) => {\n const stepInfo = StepUtils.getCurrentStepInfo(state.annotation?.step, state.annotation?.stepList);\n\n return {\n toolInstance: state.annotation.toolInstance,\n stepInfo,\n };\n};\n\nexport default connect(mapStateToProps)(SwitchAttributeList);\n"],"names":[],"mappings":";;;;;;;AAeA,MAAM,mBAAA,GAAwC,CAAC,KAAU,KAAA;AAfzD,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAgBE,EAAM,MAAA,CAAC,CAAG,EAAA,WAAA,CAAA,GAAe,QAAS,CAAA,CAAA,CAAA,CAAA;AAClC,EAAA,MAAM,UAAU,MAAoB,CAAA,IAAA,CAAA,CAAA;AACpC,EAAA,MAAM,CAAE,YAAiB,CAAA,GAAA,KAAA,CAAA;AACzB,EAAA,MAAM,CAAE,CAAM,CAAA,GAAA,cAAA,EAAA,CAAA;AAEd,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,YAAc,EAAA;AAChB,MAAa,YAAA,CAAA,QAAA,CAAS,wBAA0B,EAAA,CAAC,KAAkB,KAAA;AAvBzE,QAAA,IAAA,GAAA,CAAA;AAwBQ,QAAY,WAAA,CAAA,CAAC,MAAM,CAAI,GAAA,CAAA,CAAA,CAAA;AAEvB,QAAI,IAAA,CAAC,QAAQ,OAAS,EAAA;AACpB,UAAA,OAAA;AAAA,SAAA;AAGF,QAAA,CAAA,GAAA,GAAA,OAAA,CAAQ,QAAQ,QAAS,CAAA,KAAA,CAAA,KAAzB,IAAiC,GAAA,KAAA,CAAA,GAAA,GAAA,CAAA,cAAA,CAAe,CAAE,KAAO,EAAA,QAAA,CAAA,CAAA,CAAA;AAAA,OAAA,CAAA,CAAA;AAAA,KAAA;AAG7D,IAAA,OAAO,MAAM;AACX,MAAA,YAAA,CAAa,SAAU,CAAA,wBAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAAA,GAAA,EAExB,CAAC,YAAc,EAAA,OAAA,CAAA,CAAA,CAAA;AAElB,EAAM,MAAA,gBAAA,GAAmB,WACvB,CAAA,CAAC,CAAc,KAAA;AACb,IAAA,YAAA,CAAa,mBAAoB,CAAA,CAAA,CAAA,CAAA;AACjC,IAAY,WAAA,CAAA,CAAC,MAAM,CAAI,GAAA,CAAA,CAAA,CAAA;AAAA,GAAA,EAEzB,CAAC,YAAA,CAAA,CAAA,CAAA;AAGH,EAAI,IAAA,CAAC,MAAM,QAAU,EAAA;AACnB,IAAO,OAAA,IAAA,CAAA;AAAA,GAAA;AAGT,EAAM,MAAA,MAAA,GAAS,UAAW,CAAA,KAAA,CAAM,QAAS,CAAA,MAAA,CAAA,CAAA;AACzC,EAAI,IAAA,MAAA,CAAO,0BAA0B,IAAM,EAAA;AACzC,IAAO,OAAA,IAAA,CAAA;AAAA,GAAA;AAGT,EAAI,IAAA,CAAA,CAAA,EAAA,GAAA,YAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,YAAA,CAAc,WAAd,IAAsB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,qBAAA,MAA0B,SAAsB,CAAA,EAAA,GAAA,YAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,YAAA,CAAA,MAAA,KAAd,mBAAsB,aAAe,CAAA,EAAA;AAC/F,IAAA,MAAM,OAAO,YAAa,CAAA,MAAA,CAAO,aAAc,CAAA,GAAA,CAAI,CAAC,CAAY,MAAA;AAAA,MAC9D,OAAO,CAAE,CAAA,GAAA;AAAA,MACT,OAAO,CAAE,CAAA,KAAA;AAAA,KAAA,CAAA,CAAA,CAAA;AAEX,IAAA,IAAA,CAAK,OAAQ,CAAA,CAAE,KAAO,EAAA,CAAA,CAAE,gBAAgB,KAAO,EAAA,EAAA,CAAA,CAAA,CAAA;AAE/C,IAAA,uBACG,KAAA,CAAA,aAAA,CAAA,KAAA,EAAD,IACE,kBAAA,KAAA,CAAA,aAAA,CAAC,aAAD,EAAA;AAAA,MACE,IAAA;AAAA,MACA,gBAAA;AAAA,MACA,iBAAA,EAAmB,CAAc,EAAA,GAAA,YAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,YAAA,CAAA,gBAAA,KAAd,IAAkC,GAAA,EAAA,GAAA,EAAA;AAAA,MACrD,GAAK,EAAA,OAAA;AAAA,KAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAMb,EAAO,OAAA,IAAA,CAAA;AAAA,CAAA,CAAA;AAGT,MAAM,eAAA,GAAkB,CAAC,KAAoB,KAAA;AA7E7C,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AA8EE,EAAM,MAAA,QAAA,GAAW,UAAU,kBAAmB,CAAA,CAAA,EAAA,GAAA,KAAA,CAAM,eAAN,IAAkB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,EAAM,CAAM,EAAA,GAAA,KAAA,CAAA,UAAA,KAAN,IAAkB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAA,CAAA,CAAA;AAExF,EAAO,OAAA;AAAA,IACL,YAAA,EAAc,MAAM,UAAW,CAAA,YAAA;AAAA,IAC/B,QAAA;AAAA,GAAA,CAAA;AAAA,CAAA,CAAA;AAIJ,4BAAe,QAAQ,eAAiB,CAAA,CAAA,mBAAA,CAAA;;;;"}
@@ -1 +1 @@
1
- import m,{useEffect as n}from"react";import{connect as s}from"react-redux";import c from"../../../../../hooks/useSafeSate.js";const f=({toolInstance:e})=>{var o;const[,t]=c(0);n(()=>{e&&e.singleOn("renderZoom",()=>{t(a=>a+1)})},[e]);const r=(o=e==null?void 0:e.zoom)!=null?o:1;return m.createElement("span",{className:"zoomValue"},(r*100).toFixed(1),"%")},l=e=>({toolInstance:e.annotation.toolInstance});var u=s(l)(f);export{u as default};
1
+ import m,{useEffect as n}from"react";import{connect as s}from"react-redux";import c from"../../../../../hooks/useSafeSate.js";const f=({toolInstance:e})=>{var o;const[,t]=c(0);n(()=>{e&&e.on("renderZoom",()=>{t(a=>a+1)})},[e]);const r=(o=e==null?void 0:e.zoom)!=null?o:1;return m.createElement("span",{className:"zoomValue"},(r*100).toFixed(1),"%")},u=e=>({toolInstance:e.annotation.toolInstance});var l=s(u)(f);export{l as default};
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../src/views/MainView/toolFooter/ZoomController/ZoomLevel/index.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { AppState } from '@/store';\nimport { ToolInstance } from '@/store/annotation/types';\nimport { connect } from 'react-redux';\nimport useSafeState from '@/hooks/useSafeSate';\n\ninterface IProps {\n toolInstance: ToolInstance;\n}\n\nconst ZoomLevel: React.FC<IProps> = ({ toolInstance }) => {\n const [, forceRender] = useSafeState<number>(0);\n useEffect(() => {\n if (toolInstance) {\n // 这里会有内存泄漏的问题 useSafeState 用这个解决下\n toolInstance.singleOn('renderZoom', () => {\n forceRender((s) => s + 1);\n });\n }\n }, [toolInstance]);\n\n const zoom = toolInstance?.zoom ?? 1;\n\n return (\n <span className=\"zoomValue\">\n {(zoom * 100).toFixed(1)}\n %\n </span>\n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n toolInstance: state.annotation.toolInstance,\n});\n\nexport default connect(mapStateToProps)(ZoomLevel);\n"],"names":[],"mappings":";;;;AAUA,MAAM,SAAA,GAA8B,CAAC,CAAE,YAAmB,CAAA,KAAA;AAV1D,EAAA,IAAA,EAAA,CAAA;AAWE,EAAM,MAAA,GAAG,WAAA,CAAA,GAAe,YAAqB,CAAA,CAAA,CAAA,CAAA;AAC7C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,YAAc,EAAA;AAEhB,MAAa,YAAA,CAAA,QAAA,CAAS,cAAc,MAAM;AACxC,QAAY,WAAA,CAAA,CAAC,MAAM,CAAI,GAAA,CAAA,CAAA,CAAA;AAAA,OAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,EAG1B,CAAC,YAAA,CAAA,CAAA,CAAA;AAEJ,EAAM,MAAA,IAAA,GAAO,CAAc,EAAA,GAAA,YAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,YAAA,CAAA,IAAA,KAAd,IAAsB,GAAA,EAAA,GAAA,CAAA,CAAA;AAEnC,EAAA,2CACG,MAAD,EAAA;AAAA,IAAM,SAAU,EAAA,WAAA;AAAA,GACZ,EAAA,CAAA,IAAA,GAAO,GAAK,EAAA,OAAA,CAAQ,CAAG,CAAA,EAAA,GAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAM/B,MAAM,eAAA,GAAkB,CAAC,KAAqB,MAAA;AAAA,EAC5C,YAAA,EAAc,MAAM,UAAW,CAAA,YAAA;AAAA,CAAA,CAAA,CAAA;AAGjC,kBAAe,QAAQ,eAAiB,CAAA,CAAA,SAAA,CAAA;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../../src/views/MainView/toolFooter/ZoomController/ZoomLevel/index.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { AppState } from '@/store';\nimport { ToolInstance } from '@/store/annotation/types';\nimport { connect } from 'react-redux';\nimport useSafeState from '@/hooks/useSafeSate';\n\ninterface IProps {\n toolInstance: ToolInstance;\n}\n\nconst ZoomLevel: React.FC<IProps> = ({ toolInstance }) => {\n const [, forceRender] = useSafeState<number>(0);\n useEffect(() => {\n if (toolInstance) {\n // 这里会有内存泄漏的问题 useSafeState 用这个解决下\n toolInstance.on('renderZoom', () => {\n forceRender((s) => s + 1);\n });\n }\n }, [toolInstance]);\n\n const zoom = toolInstance?.zoom ?? 1;\n\n return <span className='zoomValue'>{(zoom * 100).toFixed(1)}%</span>;\n};\n\nconst mapStateToProps = (state: AppState) => ({\n toolInstance: state.annotation.toolInstance,\n});\n\nexport default connect(mapStateToProps)(ZoomLevel);\n"],"names":[],"mappings":";;;;AAUA,MAAM,SAAA,GAA8B,CAAC,CAAE,YAAmB,CAAA,KAAA;AAV1D,EAAA,IAAA,EAAA,CAAA;AAWE,EAAM,MAAA,GAAG,WAAA,CAAA,GAAe,YAAqB,CAAA,CAAA,CAAA,CAAA;AAC7C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,YAAc,EAAA;AAEhB,MAAa,YAAA,CAAA,EAAA,CAAG,cAAc,MAAM;AAClC,QAAY,WAAA,CAAA,CAAC,MAAM,CAAI,GAAA,CAAA,CAAA,CAAA;AAAA,OAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,EAG1B,CAAC,YAAA,CAAA,CAAA,CAAA;AAEJ,EAAM,MAAA,IAAA,GAAO,CAAc,EAAA,GAAA,YAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,YAAA,CAAA,IAAA,KAAd,IAAsB,GAAA,EAAA,GAAA,CAAA,CAAA;AAEnC,EAAA,2CAAQ,MAAD,EAAA;AAAA,IAAM,SAAU,EAAA,WAAA;AAAA,GAAc,EAAA,CAAA,IAAA,GAAO,GAAK,EAAA,OAAA,CAAQ,CAAG,CAAA,EAAA,GAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAG9D,MAAM,eAAA,GAAkB,CAAC,KAAqB,MAAA;AAAA,EAC5C,YAAA,EAAc,MAAM,UAAW,CAAA,YAAA;AAAA,CAAA,CAAA,CAAA;AAGjC,kBAAe,QAAQ,eAAiB,CAAA,CAAA,SAAA,CAAA;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@labelbee/lb-components",
3
- "version": "1.5.0",
3
+ "version": "1.6.0-alpha.0",
4
4
  "description": "Provide a complete library of annotation components",
5
5
  "main": "./dist/index.js",
6
6
  "es": "./es/index.js",
@@ -43,8 +43,8 @@
43
43
  },
44
44
  "dependencies": {
45
45
  "@ant-design/icons": "^4.6.2",
46
- "@labelbee/lb-annotation": "^1.8.0",
47
- "@labelbee/lb-utils": "^1.2.0",
46
+ "@labelbee/lb-annotation": "^1.9.0-alpha.0",
47
+ "@labelbee/lb-utils": "^1.3.0-alpha.0",
48
48
  "ahooks": "^3.4.0",
49
49
  "classnames": "^2.3.0",
50
50
  "lodash": "^4.17.21",
@@ -78,11 +78,11 @@
78
78
  "cz-conventional-changelog": "^3.3.0",
79
79
  "dart-sass": "^1.25.0",
80
80
  "esbuild": "^0.11.0",
81
- "eslint": "^7.20.0",
82
- "eslint-config-airbnb": "^18.2.1",
83
- "eslint-config-alloy": "^4.2.0",
84
- "eslint-plugin-import": "^2.22.1",
85
- "eslint-plugin-jsx-a11y": "^6.4.1",
81
+ "eslint": "7.20.0",
82
+ "eslint-config-airbnb": "18.2.1",
83
+ "eslint-config-alloy": "4.2.0",
84
+ "eslint-plugin-import": "2.22.1",
85
+ "eslint-plugin-jsx-a11y": "6.4.1",
86
86
  "eslint-plugin-react": "^7.22.0",
87
87
  "eslint-plugin-react-hooks": "^4.2.0",
88
88
  "husky": "^7.0.1",
@@ -96,5 +96,5 @@
96
96
  "path": "node_modules/cz-conventional-changelog"
97
97
  }
98
98
  },
99
- "gitHead": "ae9450289598ba414b15a4ccad4a5a3474aa4603"
99
+ "gitHead": "33739f5c4a8328adf5754bbe5d38fd56ca13fd84"
100
100
  }