@labelbee/lb-components 1.23.0-alpha.129 → 1.23.0-alpha.130

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- "use strict";var ahooks=require("ahooks"),es=require("antd/es"),React=require("react"),reactRedux=require("react-redux"),usePointCloudViews=require("../pointCloudView/hooks/usePointCloudViews.js"),PointCloudContext=require("../pointCloudView/PointCloudContext.js"),map=require("../../store/annotation/map.js"),ctx=require("../../store/ctx.js"),lbAnnotation=require("@labelbee/lb-annotation"),util=require("./util.js"),useUpdateRectList=require("./useUpdateRectList.js"),_=require("lodash"),useToolStyle=require("../../hooks/useToolStyle.js"),index=require("../../store/toolConfig/index.js");function _interopDefaultLegacy(l){return l&&typeof l=="object"&&"default"in l?l:{default:l}}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=(l,u,c)=>u in l?__defProp(l,u,{enumerable:!0,configurable:!0,writable:!0,value:c}):l[u]=c,__spreadValues=(l,u)=>{for(var c in u||(u={}))__hasOwnProp.call(u,c)&&__defNormalProp(l,c,u[c]);if(__getOwnPropSymbols)for(var c of __getOwnPropSymbols(u))__propIsEnum.call(u,c)&&__defNormalProp(l,c,u[c]);return l},__spreadProps=(l,u)=>__defProps(l,__getOwnPropDescs(u)),__async=(l,u,c)=>new Promise((a,p)=>{var I=d=>{try{D(c.next(d))}catch(R){p(R)}},x=d=>{try{D(c.throw(d))}catch(R){p(R)}},D=d=>d.done?a(d.value):Promise.resolve(d.value).then(I,x);D((c=c.apply(l,u)).next())});const PointCloud2DRectOperationView=l=>{var u,c;const{mappingData:a,size:p,config:I,checkMode:x,afterImgOnLoad:D,shouldExcludePointCloudBoxListUpdate:d}=l,{selectBoxVisibleSwitch:R}=index(),P=(u=a==null?void 0:a.url)!=null?u:"",b=(c=a==null?void 0:a.fallbackUrl)!=null?c:"",{pointCloudBoxList:S,setPointCloudResult:L,defaultAttribute:E,rectList:O,addRectIn2DView:Q,updateRectIn2DView:W,removeRectIn2DView:X,updateRectListByReducer:Y,selectedIDs:v,setSelectedIDs:V}=React.useContext(PointCloudContext.PointCloudContext),{value:q}=useToolStyle.useToolStyleContext(),Z=ahooks.useLatest(v),{update2DViewRect:ee,remove2DViewRect:te}=usePointCloudViews.usePointCloudViews(),j=React__default.default.useRef(null),o=React.useRef(null),M=ahooks.useMemoizedFn(ee),w=ahooks.useMemoizedFn(te),y=React.useRef(null),[re,A]=React.useState(!0),[F,T]=React.useState(""),[ne,k]=React.useState(!1),g=React.useMemo(()=>O==null?void 0:O.filter(e=>e.imageName===(a==null?void 0:a.path)),[a==null?void 0:a.path,O]),z=React.useRef(g),C=ahooks.useLatest(a==null?void 0:a.path),B=React.useCallback(e=>__async(void 0,null,function*(){try{const n=Z.current.slice(0),t=yield Promise.resolve(e());if(!t||t.length===0)return t;if(n.length){const r=new Set(n),i=t.filter(s=>r.has(s.id)).map(s=>s.id);V(i)}return t}catch(n){}}),[V]),H=e=>{const{boxID:n}=e;if(!d&&n){B(()=>{const t=M==null?void 0:M(e);return t?(y.current=t,L(t),t):null});return}W(e,!0)},J=e=>{C.current&&Q(__spreadProps(__spreadValues({},e),{imageName:C.current}))},$=e=>{if(e.length===0)return;if(!d){const t=e.find(r=>r.boxID);if(t){B(()=>{const r=w==null?void 0:w(t);return r?(y.current=r,L(r),h(),r):null});return}}const n=e.find(t=>t.extId);n&&B(()=>{const{imageName:t,extId:r}=n,i=w==null?void 0:w({boxID:r,imageName:t});return i?(y.current=i,L(i),i):null}),X(e)},oe=ahooks.useMemoizedFn(()=>{let e=[];return S.forEach(n=>{const{rects:t=[],id:r,attribute:i,trackID:s}=n,f=t.find(N=>N.imageName===C.current),m=r+"_"+C.current;f&&(e=[...e,__spreadProps(__spreadValues({},f),{boxID:r,id:m,attribute:i,order:s})])}),e}),h=useUpdateRectList.useUpdateRectList(()=>{var e,n,t,r,i;const s=d?[]:oe(),f=(e=o.current)==null?void 0:e.selectedRectID,m=v.slice(0),N=R?util.selectSpecifiedRectsFromTopViewSelectedIds(m,s,g):[...s,...g];let K=[];!R&&(v==null?void 0:v.length)&&(K=s.filter(U=>f?v.includes(U.boxID)&&!f.includes(U.boxID):v.includes(U.boxID))),(n=o.current)==null||n.setHighLightRectList(K),(t=o.current)==null||t.setResult(N),F?((r=o.current)==null||r.setSelectedRectID(F),T("")):ne&&f&&((i=o.current)==null||i.setSelectedRectID(f),k(!1))}),G=({targetId:e,id:n})=>{V(e),T(n)};return React.useEffect(()=>{if(j.current){const e=new lbAnnotation.PointCloud2DRectOperation({container:j.current,size:p,config:__spreadProps(__spreadValues({},I),{isShowOrder:!0,attributeConfigurable:!0}),checkMode:x});return o.current=e,o.current.init(),o.current.on("updateDragResult",H),o.current.on("afterAddingDrawingRect",J),o.current.on("deleteSelectedRects",$),o.current.on("onRightClick",G),()=>{var n,t,r,i,s;(n=o.current)==null||n.unbind("updateDragResult",H),(t=o.current)==null||t.unbind("afterAddingDrawingRect",J),(r=o.current)==null||r.unbind("deleteSelectedRects",$),(i=o.current)==null||i.unbind("onRightClick",G),(s=o.current)==null||s.destroy()}}},[]),React.useEffect(()=>{const e=t=>__async(void 0,null,function*(){try{return yield lbAnnotation.ImgUtils.load(t)}catch(r){return console.error("Error loading image:",r),null}}),n=()=>__async(void 0,null,function*(){var t;A(!0);let r=yield e(P);!r&&b&&(r=yield e(b)),r&&((t=o.current)==null||t.setImgNode(r),D(r)),A(!1)});o.current&&(P||b)&&n()},[P,b]),React.useEffect(()=>{var e;(e=o.current)==null||e.setSize(p)},[p]),React.useEffect(()=>{S!==y.current&&h()},[S]),React.useEffect(()=>{var e,n;const t=g.find(r=>r.id===o.current.selectedRectID);(n=(e=o.current)==null?void 0:e.setDefaultAttribute)==null||n.call(e,E),t&&Y(r=>{var i;const s=[];let f=null;return r.forEach(m=>{m.id!==o.current.selectedRectID?s.push(m):f=m}),t.extId===void 0&&(f=(i=o.current)==null?void 0:i.selectedRect),[...s,__spreadProps(__spreadValues({},f||{}),{attribute:E})]}),k(!0),h()},[E]),React.useEffect(()=>{const e=z.current;___default.default.isEqual(e,g)||(k(!0),h(),z.current=g)},[g]),React.useEffect(()=>{h()},[d]),React.useEffect(()=>{var e,n,t,r;const i=(n=(e=o.current)==null?void 0:e.config)!=null?n:{},s=__spreadProps(__spreadValues({},i),{attributeList:(t=I.attributeList)!=null?t:[]});(r=o.current)==null||r.setConfig(JSON.stringify(s))},[I.attributeList]),React.useEffect(()=>{var e;(e=o.current)==null||e.setEnableAddRect(v.length===0),h()},[v]),React.useEffect(()=>{const{hiddenText:e}=q||{};if(e===void 0)return;const n=o.current;if(!n)return;const t=__spreadValues(__spreadValues({},n.style),q);n.setStyle(t)},[q]),React.useEffect(()=>{h()},[R]),React__default.default.createElement(es.Spin,{spinning:re},React__default.default.createElement("div",{ref:j,style:__spreadValues({position:"relative"},p)}))};var PointCloud2DRectOperationView$1=reactRedux.connect(map.a2MapStateToProps,null,null,{context:ctx.LabelBeeContext})(PointCloud2DRectOperationView);module.exports=PointCloud2DRectOperationView$1;
1
+ "use strict";var ahooks=require("ahooks"),es=require("antd/es"),React=require("react"),reactRedux=require("react-redux"),usePointCloudViews=require("../pointCloudView/hooks/usePointCloudViews.js"),PointCloudContext=require("../pointCloudView/PointCloudContext.js"),map=require("../../store/annotation/map.js"),ctx=require("../../store/ctx.js"),lbAnnotation=require("@labelbee/lb-annotation"),util=require("./util.js"),useUpdateRectList=require("./useUpdateRectList.js"),_=require("lodash"),useToolStyle=require("../../hooks/useToolStyle.js"),index=require("../../store/toolConfig/index.js");function _interopDefaultLegacy(i){return i&&typeof i=="object"&&"default"in i?i:{default:i}}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=(i,c,s)=>c in i?__defProp(i,c,{enumerable:!0,configurable:!0,writable:!0,value:s}):i[c]=s,__spreadValues=(i,c)=>{for(var s in c||(c={}))__hasOwnProp.call(c,s)&&__defNormalProp(i,s,c[s]);if(__getOwnPropSymbols)for(var s of __getOwnPropSymbols(c))__propIsEnum.call(c,s)&&__defNormalProp(i,s,c[s]);return i},__spreadProps=(i,c)=>__defProps(i,__getOwnPropDescs(c)),__async=(i,c,s)=>new Promise((d,p)=>{var I=f=>{try{D(s.next(f))}catch(R){p(R)}},w=f=>{try{D(s.throw(f))}catch(R){p(R)}},D=f=>f.done?d(f.value):Promise.resolve(f.value).then(I,w);D((s=s.apply(i,c)).next())});const PointCloud2DRectOperationView=i=>{var c,s;const{mappingData:d,size:p,config:I,checkMode:w,afterImgOnLoad:D,shouldExcludePointCloudBoxListUpdate:f}=i,{selectBoxVisibleSwitch:R}=index(),P=(c=d==null?void 0:d.url)!=null?c:"",b=(s=d==null?void 0:d.fallbackUrl)!=null?s:"",{pointCloudBoxList:S,setPointCloudResult:L,defaultAttribute:E,rectList:O,addRectIn2DView:X,updateRectIn2DView:Y,removeRectIn2DView:Z,updateRectListByReducer:ee,selectedIDs:v,setSelectedIDs:V,selectedID:q}=React.useContext(PointCloudContext.PointCloudContext),{value:j}=useToolStyle.useToolStyleContext(),te=ahooks.useLatest(v),{update2DViewRect:re,remove2DViewRect:ne}=usePointCloudViews.usePointCloudViews(),k=React__default.default.useRef(null),o=React.useRef(null),A=ahooks.useMemoizedFn(re),C=ahooks.useMemoizedFn(ne),x=React.useRef(null),[oe,F]=React.useState(!0),[T,H]=React.useState(""),[ue,U]=React.useState(!1),[ie,N]=React.useState(!0),g=React.useMemo(()=>O==null?void 0:O.filter(e=>e.imageName===(d==null?void 0:d.path)),[d==null?void 0:d.path,O]),J=React.useRef(g),y=ahooks.useLatest(d==null?void 0:d.path),B=React.useCallback(e=>__async(void 0,null,function*(){try{const n=te.current.slice(0),r=yield Promise.resolve(e());if(!r||r.length===0)return r;if(n.length){const t=new Set(n),u=r.filter(l=>t.has(l.id)).map(l=>l.id);V(u)}return r}catch(n){}}),[V]),$=e=>{const{boxID:n}=e;if(!f&&n){B(()=>{const r=A==null?void 0:A(e);return r?(x.current=r,L(r),r):null});return}Y(e,!0)},G=e=>{y.current&&X(__spreadProps(__spreadValues({},e),{imageName:y.current}))},K=e=>{if(e.length===0)return;if(!f){const r=e.find(t=>t.boxID);if(r){B(()=>{const t=C==null?void 0:C(r);return t?(x.current=t,L(t),h(),t):null});return}}const n=e.find(r=>r.extId);n&&B(()=>{const{imageName:r,extId:t}=n,u=C==null?void 0:C({boxID:t,imageName:r});return u?(x.current=u,L(u),u):null}),Z(e)},le=ahooks.useMemoizedFn(()=>{let e=[];return S.forEach(n=>{const{rects:r=[],id:t,attribute:u,trackID:l}=n,a=r.find(M=>M.imageName===y.current),m=t+"_"+y.current;a&&(e=[...e,__spreadProps(__spreadValues({},a),{boxID:t,id:m,attribute:u,order:l})])}),e}),h=useUpdateRectList.useUpdateRectList(()=>{var e,n,r,t,u;const l=f?[]:le(),a=(e=o.current)==null?void 0:e.selectedRectID,m=v.slice(0),M=R?util.selectSpecifiedRectsFromTopViewSelectedIds(m,l,g):[...l,...g];let W=[];!R&&(v==null?void 0:v.length)&&(W=l.filter(z=>a?v.includes(z.boxID)&&!a.includes(z.boxID):v.includes(z.boxID))),(n=o.current)==null||n.setHighLightRectList(W),(r=o.current)==null||r.setResult(M),T?((t=o.current)==null||t.setSelectedRectID(T),H("")):ue&&a&&((u=o.current)==null||u.setSelectedRectID(a),U(!1))}),Q=({targetId:e,id:n})=>{N(!1),V(e),H(n)};return React.useEffect(()=>{if(k.current){const e=new lbAnnotation.PointCloud2DRectOperation({container:k.current,size:p,config:__spreadProps(__spreadValues({},I),{isShowOrder:!0,attributeConfigurable:!0}),checkMode:w});return o.current=e,o.current.init(),o.current.on("updateDragResult",$),o.current.on("afterAddingDrawingRect",G),o.current.on("deleteSelectedRects",K),o.current.on("onRightClick",Q),()=>{var n,r,t,u,l;(n=o.current)==null||n.unbind("updateDragResult",$),(r=o.current)==null||r.unbind("afterAddingDrawingRect",G),(t=o.current)==null||t.unbind("deleteSelectedRects",K),(u=o.current)==null||u.unbind("onRightClick",Q),(l=o.current)==null||l.destroy()}}},[]),React.useEffect(()=>{const e=r=>__async(void 0,null,function*(){try{return yield lbAnnotation.ImgUtils.load(r)}catch(t){return console.error("Error loading image:",t),null}}),n=()=>__async(void 0,null,function*(){var r;F(!0);let t=yield e(P);!t&&b&&(t=yield e(b)),t&&((r=o.current)==null||r.setImgNode(t),D(t)),F(!1)});o.current&&(P||b)&&n()},[P,b]),React.useEffect(()=>{var e;(e=o.current)==null||e.setSize(p)},[p]),React.useEffect(()=>{S!==x.current&&h()},[S]),React.useEffect(()=>{var e,n;const r=g.find(t=>t.id===o.current.selectedRectID);(n=(e=o.current)==null?void 0:e.setDefaultAttribute)==null||n.call(e,E),r&&ee(t=>{var u;const l=[];let a=null;return t.forEach(m=>{m.id!==o.current.selectedRectID?l.push(m):a=m}),r.extId===void 0&&(a=(u=o.current)==null?void 0:u.selectedRect),[...l,__spreadProps(__spreadValues({},a||{}),{attribute:E})]}),U(!0),h()},[E]),React.useEffect(()=>{const e=J.current;___default.default.isEqual(e,g)||(U(!0),h(),J.current=g)},[g]),React.useEffect(()=>{h()},[f]),React.useEffect(()=>{var e,n,r,t;const u=(n=(e=o.current)==null?void 0:e.config)!=null?n:{},l=__spreadProps(__spreadValues({},u),{attributeList:(r=I.attributeList)!=null?r:[]});(t=o.current)==null||t.setConfig(JSON.stringify(l))},[I.attributeList]),React.useEffect(()=>{var e;(e=o.current)==null||e.setEnableAddRect(v.length===0),h()},[v]),React.useEffect(()=>{if(!q||!ie){N(!0);return}const{rectList:e,size:n,zoom:r}=o.current,t=e.find(a=>a.boxID===q);if(!t){N(!0);return}const u={x:t.x+t.width/2,y:t.y+t.height/2},l=lbAnnotation.MathUtils.getCurrentPosFromRectCenter(n,u,r);o.current.setCurrentPos(l),o.current.render()},[q]),React.useEffect(()=>{const{hiddenText:e}=j||{};if(e===void 0)return;const n=o.current;if(!n)return;const r=__spreadValues(__spreadValues({},n.style),j);n.setStyle(r)},[j]),React.useEffect(()=>{h()},[R]),React__default.default.createElement(es.Spin,{spinning:oe},React__default.default.createElement("div",{ref:k,style:__spreadValues({position:"relative"},p)}))};var PointCloud2DRectOperationView$1=reactRedux.connect(map.a2MapStateToProps,null,null,{context:ctx.LabelBeeContext})(PointCloud2DRectOperationView);module.exports=PointCloud2DRectOperationView$1;
@@ -1 +1 @@
1
- "use strict";var dom=require("../../utils/dom.js"),index$3=require("../../views/MainView/toolFooter/index.js"),index$4=require("../../views/MainView/toolFooter/ZoomController/index.js"),icons=require("@ant-design/icons"),lbAnnotation=require("@labelbee/lb-annotation"),lbUtils=require("@labelbee/lb-utils"),ToolPointCloudBoxRenderHelper=require("../../utils/ToolPointCloudBoxRenderHelper.js"),React=require("react"),PointCloudContext=require("./PointCloudContext.js"),useRotate=require("./hooks/useRotate.js"),useRotateEdge=require("./hooks/useRotateEdge.js"),useSingleBox=require("./hooks/useSingleBox.js"),PointCloudLayout=require("./PointCloudLayout.js"),PointCloudInfos=require("./PointCloudInfos.js"),usePolygon=require("./hooks/usePolygon.js"),useSphere=require("./hooks/useSphere.js"),useZoom=require("./hooks/useZoom.js"),antd=require("antd"),map=require("../../store/annotation/map.js"),reactRedux=require("react-redux"),usePointCloudViews=require("./hooks/usePointCloudViews.js"),useSize=require("../../hooks/useSize.js"),reactI18next=require("react-i18next"),ctx=require("../../store/ctx.js"),index=require("../../utils/index.js"),ToolUtils=require("../../utils/ToolUtils.js"),_=require("lodash"),index$2=require("./components/PointCloudSizeSlider/index.js"),useHistory=require("./hooks/useHistory.js"),index$1=require("./components/TitleButton/index.js");function _interopDefaultLegacy(o){return o&&typeof o=="object"&&"default"in o?o:{default:o}}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=(o,l,s)=>l in o?__defProp(o,l,{enumerable:!0,configurable:!0,writable:!0,value:s}):o[l]=s,__spreadValues=(o,l)=>{for(var s in l||(l={}))__hasOwnProp.call(l,s)&&__defNormalProp(o,s,l[s]);if(__getOwnPropSymbols)for(var s of __getOwnPropSymbols(l))__propIsEnum.call(l,s)&&__defNormalProp(o,s,l[s]);return o},__spreadProps=(o,l)=>__defProps(o,__getOwnPropDescs(l));const{EPolygonPattern,EToolName}=lbAnnotation.cTool,{ESortDirection}=lbAnnotation.cAnnotation,EKeyCode=lbAnnotation.cKeyCode.default,TransferCanvas2WorldOffset=(o,l,s=1)=>{const{width:C,height:c}=l,w={x:o.x+C*s/2,y:o.y+c*s/2},P={x:l.width/2,y:l.height/2};return{offsetX:(P.x-w.x)/s,offsetY:-(P.y-w.y)/s}},TopViewToolbar=({currentData:o})=>{var l,s;const{zoom:C,zoomIn:c,zoomOut:w,initialPosition:P}=useZoom.useZoom(),{selectNextBox:S,selectPrevBox:V}=useSingleBox.useSingleBox(),{switchToNextSphere:x}=useSphere.useSphere(),{updateRotate:y}=useRotate.useRotate({currentData:o}),{updateRotateEdge:E}=useRotateEdge.useRotateEdge({currentData:o}),g=React__default.default.useContext(PointCloudContext.PointCloudContext),{topViewInstance:I}=g,p=(s=(l=g==null?void 0:g.topViewInstance)==null?void 0:l.toolScheduler)==null?void 0:s.getCurrentToolName(),e=()=>{y(-Number(g.rectRotateSensitivity))},r=()=>{y(g.rectRotateSensitivity)},f=()=>{E(-90)};return React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement(index$2,{onChange:b=>{var h;(h=I==null?void 0:I.pointCloudInstance)==null||h.updatePointSize({customSize:b})}}),React__default.default.createElement("span",{onClick:r,className:dom.getClassName("point-cloud","rotate-reserve")}),React__default.default.createElement("span",{onClick:e,className:dom.getClassName("point-cloud","rotate")}),React__default.default.createElement("span",{onClick:f,className:dom.getClassName("point-cloud","rotate-90")}),React__default.default.createElement(index$3.FooterDivider,null),React__default.default.createElement(icons.UpSquareOutlined,{onClick:()=>{if(p===EToolName.Point){x(ESortDirection.descend);return}V(!0)},className:dom.getClassName("point-cloud","prev")}),React__default.default.createElement(icons.DownSquareOutlined,{onClick:()=>{if(p===EToolName.Point){x(ESortDirection.ascend);return}S(!0)},className:dom.getClassName("point-cloud","next")}),React__default.default.createElement(index$3.FooterDivider,null),React__default.default.createElement(index$4.ZoomController,{initialPosition:P,zoomIn:c,zoomOut:w,zoom:C}))},ZAxisSlider=({setZAxisLimit:o,zAxisLimit:l,checkMode:s})=>s?null:React__default.default.createElement("div",{style:{position:"absolute",top:128,right:8,height:"50%",zIndex:20}},React__default.default.createElement(antd.Slider,{vertical:!0,step:.5,max:10,min:.5,defaultValue:l,onAfterChange:C=>{o(C)}})),PointCloudTopView=({currentData:o,imgList:l,stepInfo:s,drawLayerSlot:C,checkMode:c,intelligentFit:w,setIsEnlargeTopView:P,isEnlargeTopView:S,onExitZoom:V,highlightAttribute:x})=>{var y,E;const[g,I]=React.useState({zoom:1,currentPos:{x:0,y:0}}),p=React.useRef(null),e=React__default.default.useContext(PointCloudContext.PointCloudContext),r=useSize(p),f=index.jsonParser(s.config),{setZoom:b,syncTopviewToolZoom:h}=useZoom.useZoom(),{hideAttributes:B}=e,{addPolygon:A,deletePolygon:D}=usePolygon.usePolygon(),{deletePointCloudSphere:U}=useSphere.useSphere(),{deletePointCloudBox:Z,changeValidByID:H}=useSingleBox.useSingleBox(),[L,z]=React.useState(10),{t:N}=reactI18next.useTranslation(),m=usePointCloudViews.usePointCloudViews(),{pushHistoryWithList:F}=useHistory.useHistory();React.useLayoutEffect(()=>{if(!e.topViewInstance&&p.current&&(o==null?void 0:o.url)&&(o==null?void 0:o.result)){const n={width:p.current.clientWidth,height:p.current.clientHeight},a=new lbAnnotation.PointCloudAnnotation({container:p.current,size:n,pcdPath:o.url,config:__spreadProps(__spreadValues({},f),{pointCloudPattern:e.pointCloudPattern}),checkMode:c,toolName:ToolUtils.getPointCloudToolList(),proxyMode:c});e.setTopViewInstance(a)}},[o]),React.useEffect(()=>{if(!r||!e.topViewInstance||!e.sideViewInstance)return;const{toolInstance:n}=e.topViewInstance;n.singleOn("dataUpdated",(t,i)=>{const d=___default.default.cloneDeep(t).map(u=>__spreadProps(__spreadValues({},u),{pointList:lbUtils.PointCloudUtils.pointListTransferCanvas2World(u.pointList,r)}));e.setSelectedIDs(i),e.setLineList(d),F({lineList:d})}),n.singleOn("pointCreated",(t,i)=>{m.topViewAddSphere({newPoint:t,size:r,trackConfigurable:f.trackConfigurable,zoom:i})}),n.singleOn("pointDeleted",t=>{U(t)}),n.singleOn("pointSelected",t=>{e.setSelectedIDs([t])}),n.singleOn("updatePointByDrag",(t,i)=>{var d;(d=m.topViewUpdatePoint)==null||d.call(m,t,r)}),n.singleOn("polygonCreated",(t,i)=>{if(n.pattern===EPolygonPattern.Normal||!(o==null?void 0:o.url)){const d=__spreadProps(__spreadValues({},t),{pointList:t.pointList.map(u=>lbUtils.PointCloudUtils.transferCanvas2World(u,r))});A(d),e.setSelectedIDs(B.includes(t.attribute)?"":t.id);return}m.topViewAddBox({polygon:t,size:r,imgList:l,trackConfigurable:f.trackConfigurable,zoom:i,intelligentFit:w})}),n.singleOn("deletedObject",({id:t})=>{Z(t),D(t)}),n.singleOn("deleteSelectedIDs",()=>{e.setSelectedIDs([])}),n.singleOn("addSelectedIDs",t=>{e.addSelectedID(t)}),n.singleOn("setSelectedIDs",t=>{e.setSelectedIDs(t)}),n.singleOn("updatePolygonByDrag",t=>{var i;(i=m.topViewUpdateBox)==null||i.call(m,t,r)});const a=t=>{var i;const d=H(t);d&&e.syncAllViewPointCloudColor(ToolPointCloudBoxRenderHelper.EPointCloudBoxRenderTrigger.Default,d),e.polygonList.find(u=>u.id===t)&&((i=e.topViewInstance)==null||i.toolInstance.setPolygonValidAndRender(t,!0))};return n.on("validUpdate",a),()=>{n.unbind("validUpdate",a)}},[e,r,o,m,e.polygonList,e.lineList,(y=e.topViewInstance)==null?void 0:y.toolInstance]),React.useEffect(()=>{var n,a;if(!(r==null?void 0:r.width)||!e.topViewInstance)return;const t=(a=(n=f==null?void 0:f.attributeList)==null?void 0:n[0])==null?void 0:a.value;t&&e.topViewInstance.toolInstance.setDefaultAttribute(t),e.topViewInstance.initSize(r),e.topViewInstance.updatePolygonList(e.displayPointCloudList,e.polygonList),e.topViewInstance.updatePointList(e.displaySphereList),e.topViewInstance.updateLineList(e.displayLineList);const{topViewInstance:{pointCloudInstance:i,toolInstance:d}}=e;d.singleOn("renderZoom",(u,v)=>{const{offsetX:O,offsetY:q}=TransferCanvas2WorldOffset(v,r,u);if(i.camera.zoom=u,v){const{x:j,y:T,z:R}=i.initCameraPosition;i.camera.position.set(j+q,T-O,R)}i.camera.updateProjectionMatrix(),i.render(),b(u),h(v,u,r),I({zoom:u,currentPos:v})}),d.singleOn("dragMove",({currentPos:u,zoom:v})=>{const{offsetX:O,offsetY:q}=TransferCanvas2WorldOffset(u,r,v);i.camera.zoom=v;const{x:j,y:T,z:R}=i.initCameraPosition;i.camera.position.set(j+q,T-O,R),i.render(),h(u,v,r),I({zoom:v,currentPos:u})})},[r,e.topViewInstance,(E=e.topViewInstance)==null?void 0:E.toolInstance]),React.useEffect(()=>{var n,a;(a=(n=e.topViewInstance)==null?void 0:n.pointCloudInstance)==null||a.applyZAxisPoints(L)},[L]),React.useEffect(()=>{var n,a,t,i;m.topViewSelectedChanged({}),(i=(t=(a=(n=e.topViewInstance)==null?void 0:n.toolInstance)==null?void 0:a.selection)==null?void 0:t.hardSetSelectedIDs)==null||i.call(t,e.selectedIDs)},[e.selectedIDs]),React.useEffect(()=>(window.addEventListener("keydown",k),()=>{window.removeEventListener("keydown",k)}),[]);const k=n=>{const{keyCode:a}=n;a===EKeyCode.Esc&&V()};return React.useEffect(()=>{var n,a,t;(t=(a=(n=e.topViewInstance)==null?void 0:n.pointCloud2dOperation)==null?void 0:a.setHighlightAttribute)==null||t.call(a,x)},[e.topViewInstance,x]),React__default.default.createElement(PointCloudLayout.PointCloudContainer,{className:dom.getClassName("point-cloud-container","top-view"),title:S?React__default.default.createElement("div",{style:{display:"flex",alignItems:"center",position:"relative"}},React__default.default.createElement(icons.LeftOutlined,{style:{cursor:"pointer",marginRight:"12px"},onClick:()=>{V()}}),React__default.default.createElement("span",null,N("TopView")),React__default.default.createElement(PointCloudInfos.BoxInfos,{checkMode:c,config:f,style:{display:"flex",position:"initial",margin:"0px 20px"}})):React__default.default.createElement(index$1,{title:N("TopView"),onClick:()=>{P(!0)}}),toolbar:React__default.default.createElement(TopViewToolbar,{currentData:o})},React__default.default.createElement("div",{style:{position:"relative",flex:1}},React__default.default.createElement("div",{style:{width:"100%",height:"100%"},ref:p},C==null?void 0:C(g)),!S&&React__default.default.createElement(PointCloudInfos.BoxInfos,{checkMode:c,config:f}),React__default.default.createElement(ZAxisSlider,{checkMode:c,zAxisLimit:L,setZAxisLimit:z}),React__default.default.createElement(PointCloudInfos.PointCloudValidity,null)))};var PointCloudTopView$1=reactRedux.connect(map.a2MapStateToProps,null,null,{context:ctx.LabelBeeContext})(PointCloudTopView);module.exports=PointCloudTopView$1;
1
+ "use strict";var dom=require("../../utils/dom.js"),index$3=require("../../views/MainView/toolFooter/index.js"),index$4=require("../../views/MainView/toolFooter/ZoomController/index.js"),icons=require("@ant-design/icons"),lbAnnotation=require("@labelbee/lb-annotation"),lbUtils=require("@labelbee/lb-utils"),ToolPointCloudBoxRenderHelper=require("../../utils/ToolPointCloudBoxRenderHelper.js"),React=require("react"),PointCloudContext=require("./PointCloudContext.js"),useRotate=require("./hooks/useRotate.js"),useRotateEdge=require("./hooks/useRotateEdge.js"),useSingleBox=require("./hooks/useSingleBox.js"),PointCloudLayout=require("./PointCloudLayout.js"),PointCloudInfos=require("./PointCloudInfos.js"),usePolygon=require("./hooks/usePolygon.js"),useSphere=require("./hooks/useSphere.js"),useZoom=require("./hooks/useZoom.js"),antd=require("antd"),map=require("../../store/annotation/map.js"),reactRedux=require("react-redux"),usePointCloudViews=require("./hooks/usePointCloudViews.js"),useSize=require("../../hooks/useSize.js"),reactI18next=require("react-i18next"),ctx=require("../../store/ctx.js"),index=require("../../utils/index.js"),ToolUtils=require("../../utils/ToolUtils.js"),_=require("lodash"),index$2=require("./components/PointCloudSizeSlider/index.js"),useHistory=require("./hooks/useHistory.js"),index$1=require("./components/TitleButton/index.js");function _interopDefaultLegacy(o){return o&&typeof o=="object"&&"default"in o?o:{default:o}}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=(o,s,l)=>s in o?__defProp(o,s,{enumerable:!0,configurable:!0,writable:!0,value:l}):o[s]=l,__spreadValues=(o,s)=>{for(var l in s||(s={}))__hasOwnProp.call(s,l)&&__defNormalProp(o,l,s[l]);if(__getOwnPropSymbols)for(var l of __getOwnPropSymbols(s))__propIsEnum.call(s,l)&&__defNormalProp(o,l,s[l]);return o},__spreadProps=(o,s)=>__defProps(o,__getOwnPropDescs(s));const{EPolygonPattern,EToolName}=lbAnnotation.cTool,{ESortDirection}=lbAnnotation.cAnnotation,EKeyCode=lbAnnotation.cKeyCode.default,TransferCanvas2WorldOffset=(o,s,l=1)=>{const{width:C,height:p}=s,w={x:o.x+C*l/2,y:o.y+p*l/2},x={x:s.width/2,y:s.height/2};return{offsetX:(x.x-w.x)/l,offsetY:-(x.y-w.y)/l}},TopViewToolbar=({currentData:o})=>{var s,l;const{zoom:C,zoomIn:p,zoomOut:w,initialPosition:x}=useZoom.useZoom(),{selectNextBox:L,selectPrevBox:b}=useSingleBox.useSingleBox(),{switchToNextSphere:S}=useSphere.useSphere(),{updateRotate:V}=useRotate.useRotate({currentData:o}),{updateRotateEdge:O}=useRotateEdge.useRotateEdge({currentData:o}),g=React__default.default.useContext(PointCloudContext.PointCloudContext),{topViewInstance:y}=g,f=(l=(s=g==null?void 0:g.topViewInstance)==null?void 0:s.toolScheduler)==null?void 0:l.getCurrentToolName(),e=()=>{V(-Number(g.rectRotateSensitivity))},u=()=>{V(g.rectRotateSensitivity)},v=()=>{O(-90)};return React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement(index$2,{onChange:T=>{var I;(I=y==null?void 0:y.pointCloudInstance)==null||I.updatePointSize({customSize:T})}}),React__default.default.createElement("span",{onClick:u,className:dom.getClassName("point-cloud","rotate-reserve")}),React__default.default.createElement("span",{onClick:e,className:dom.getClassName("point-cloud","rotate")}),React__default.default.createElement("span",{onClick:v,className:dom.getClassName("point-cloud","rotate-90")}),React__default.default.createElement(index$3.FooterDivider,null),React__default.default.createElement(icons.UpSquareOutlined,{onClick:()=>{if(f===EToolName.Point){S(ESortDirection.descend);return}b(!0)},className:dom.getClassName("point-cloud","prev")}),React__default.default.createElement(icons.DownSquareOutlined,{onClick:()=>{if(f===EToolName.Point){S(ESortDirection.ascend);return}L(!0)},className:dom.getClassName("point-cloud","next")}),React__default.default.createElement(index$3.FooterDivider,null),React__default.default.createElement(index$4.ZoomController,{initialPosition:x,zoomIn:p,zoomOut:w,zoom:C}))},ZAxisSlider=({setZAxisLimit:o,zAxisLimit:s,checkMode:l})=>l?null:React__default.default.createElement("div",{style:{position:"absolute",top:128,right:8,height:"50%",zIndex:20}},React__default.default.createElement(antd.Slider,{vertical:!0,step:.5,max:10,min:.5,defaultValue:s,onAfterChange:C=>{o(C)}})),PointCloudTopView=({currentData:o,imgList:s,stepInfo:l,drawLayerSlot:C,checkMode:p,intelligentFit:w,setIsEnlargeTopView:x,isEnlargeTopView:L,onExitZoom:b,highlightAttribute:S})=>{var V,O;const[g,y]=React.useState({zoom:1,currentPos:{x:0,y:0}}),f=React.useRef(null),e=React__default.default.useContext(PointCloudContext.PointCloudContext),u=useSize(f),v=index.jsonParser(l.config),{setZoom:T,syncTopviewToolZoom:I}=useZoom.useZoom(),{hideAttributes:k}=e,{addPolygon:A,deletePolygon:U}=usePolygon.usePolygon(),{deletePointCloudSphere:Z}=useSphere.useSphere(),{deletePointCloudBox:z,changeValidByID:H}=useSingleBox.useSingleBox(),[N,F]=React.useState(10),{t:B}=reactI18next.useTranslation(),m=usePointCloudViews.usePointCloudViews(),{pushHistoryWithList:W}=useHistory.useHistory(),[$,q]=React.useState(!0);React.useLayoutEffect(()=>{if(!e.topViewInstance&&f.current&&(o==null?void 0:o.url)&&(o==null?void 0:o.result)){const n={width:f.current.clientWidth,height:f.current.clientHeight},a=new lbAnnotation.PointCloudAnnotation({container:f.current,size:n,pcdPath:o.url,config:__spreadProps(__spreadValues({},v),{pointCloudPattern:e.pointCloudPattern}),checkMode:p,toolName:ToolUtils.getPointCloudToolList(),proxyMode:p});e.setTopViewInstance(a)}},[o]),React.useEffect(()=>{if(!u||!e.topViewInstance||!e.sideViewInstance)return;const{toolInstance:n}=e.topViewInstance;n.singleOn("dataUpdated",(t,i)=>{const d=___default.default.cloneDeep(t).map(r=>__spreadProps(__spreadValues({},r),{pointList:lbUtils.PointCloudUtils.pointListTransferCanvas2World(r.pointList,u)}));e.setSelectedIDs(i),e.setLineList(d),W({lineList:d})}),n.singleOn("pointCreated",(t,i)=>{m.topViewAddSphere({newPoint:t,size:u,trackConfigurable:v.trackConfigurable,zoom:i})}),n.singleOn("pointDeleted",t=>{Z(t)}),n.singleOn("pointSelected",t=>{e.setSelectedIDs([t])}),n.singleOn("updatePointByDrag",(t,i)=>{var d;(d=m.topViewUpdatePoint)==null||d.call(m,t,u)}),n.singleOn("polygonCreated",(t,i)=>{if(n.pattern===EPolygonPattern.Normal||!(o==null?void 0:o.url)){const d=__spreadProps(__spreadValues({},t),{pointList:t.pointList.map(r=>lbUtils.PointCloudUtils.transferCanvas2World(r,u))});A(d),e.setSelectedIDs(k.includes(t.attribute)?"":t.id);return}q(!1),m.topViewAddBox({polygon:t,size:u,imgList:s,trackConfigurable:v.trackConfigurable,zoom:i,intelligentFit:w})}),n.singleOn("deletedObject",({id:t})=>{z(t),U(t)}),n.singleOn("deleteSelectedIDs",()=>{e.setSelectedIDs([])}),n.singleOn("addSelectedIDs",t=>{e.addSelectedID(t)}),n.singleOn("setSelectedIDs",t=>{q(!1),e.setSelectedIDs(t)}),n.singleOn("updatePolygonByDrag",t=>{var i;(i=m.topViewUpdateBox)==null||i.call(m,t,u)});const a=t=>{var i;const d=H(t);d&&e.syncAllViewPointCloudColor(ToolPointCloudBoxRenderHelper.EPointCloudBoxRenderTrigger.Default,d),e.polygonList.find(r=>r.id===t)&&((i=e.topViewInstance)==null||i.toolInstance.setPolygonValidAndRender(t,!0))};return n.on("validUpdate",a),()=>{n.unbind("validUpdate",a)}},[e,u,o,m,e.polygonList,e.lineList,(V=e.topViewInstance)==null?void 0:V.toolInstance]),React.useEffect(()=>{var n,a;if(!(u==null?void 0:u.width)||!e.topViewInstance)return;const t=(a=(n=v==null?void 0:v.attributeList)==null?void 0:n[0])==null?void 0:a.value;t&&e.topViewInstance.toolInstance.setDefaultAttribute(t),e.topViewInstance.initSize(u),e.topViewInstance.updatePolygonList(e.displayPointCloudList,e.polygonList),e.topViewInstance.updatePointList(e.displaySphereList),e.topViewInstance.updateLineList(e.displayLineList);const{topViewInstance:{pointCloudInstance:i,toolInstance:d}}=e;d.singleOn("renderZoom",(r,c)=>{const{offsetX:h,offsetY:E}=TransferCanvas2WorldOffset(c,u,r);if(i.camera.zoom=r,c){const{x:P,y:j,z:R}=i.initCameraPosition;i.camera.position.set(P+E,j-h,R)}i.camera.updateProjectionMatrix(),i.render(),T(r),I(c,r,u),y({zoom:r,currentPos:c})}),d.singleOn("dragMove",({currentPos:r,zoom:c})=>{const{offsetX:h,offsetY:E}=TransferCanvas2WorldOffset(r,u,c);i.camera.zoom=c;const{x:P,y:j,z:R}=i.initCameraPosition;i.camera.position.set(P+E,j-h,R),i.render(),I(r,c,u),y({zoom:c,currentPos:r})})},[u,e.topViewInstance,(O=e.topViewInstance)==null?void 0:O.toolInstance]),React.useEffect(()=>{var n,a;(a=(n=e.topViewInstance)==null?void 0:n.pointCloudInstance)==null||a.applyZAxisPoints(N)},[N]),React.useEffect(()=>{var n,a,t,i;m.topViewSelectedChanged({}),(i=(t=(a=(n=e.topViewInstance)==null?void 0:n.toolInstance)==null?void 0:a.selection)==null?void 0:t.hardSetSelectedIDs)==null||i.call(t,e.selectedIDs)},[e.selectedIDs]),React.useEffect(()=>{const{topViewInstance:n,selectedID:a,selectedPointCloudBox:t,zoom:i}=e;if(!n||!a||!t||!$){q(!0);return}const{center:d}=t,{pointCloudInstance:r,toolInstance:c}=n,h=c.polygonList.find(K=>K.id===e.selectedID);if(!h){q(!0);return}const E=lbAnnotation.MathUtils.getRectCenterPoint(h.pointList),P=lbAnnotation.MathUtils.getCurrentPosFromRectCenter(c.size,E,i);c.setCurrentPos(P),c.render();const{x:j,y:R,z:M}=r.initCameraPosition;r.camera.position.set(d.x,d.y,M),r.render(),I(P,i,u),y({zoom:i,currentPos:P})},[e.selectedID]),React.useEffect(()=>(window.addEventListener("keydown",D),()=>{window.removeEventListener("keydown",D)}),[]);const D=n=>{const{keyCode:a}=n;a===EKeyCode.Esc&&b()};return React.useEffect(()=>{var n,a,t;(t=(a=(n=e.topViewInstance)==null?void 0:n.pointCloud2dOperation)==null?void 0:a.setHighlightAttribute)==null||t.call(a,S)},[e.topViewInstance,S]),React__default.default.createElement(PointCloudLayout.PointCloudContainer,{className:dom.getClassName("point-cloud-container","top-view"),title:L?React__default.default.createElement("div",{style:{display:"flex",alignItems:"center",position:"relative"}},React__default.default.createElement(icons.LeftOutlined,{style:{cursor:"pointer",marginRight:"12px"},onClick:()=>{b()}}),React__default.default.createElement("span",null,B("TopView")),React__default.default.createElement(PointCloudInfos.BoxInfos,{checkMode:p,config:v,style:{display:"flex",position:"initial",margin:"0px 20px"}})):React__default.default.createElement(index$1,{title:B("TopView"),onClick:()=>{x(!0)}}),toolbar:React__default.default.createElement(TopViewToolbar,{currentData:o})},React__default.default.createElement("div",{style:{position:"relative",flex:1}},React__default.default.createElement("div",{style:{width:"100%",height:"100%"},ref:f},C==null?void 0:C(g)),!L&&React__default.default.createElement(PointCloudInfos.BoxInfos,{checkMode:p,config:v}),React__default.default.createElement(ZAxisSlider,{checkMode:p,zAxisLimit:N,setZAxisLimit:F}),React__default.default.createElement(PointCloudInfos.PointCloudValidity,null)))};var PointCloudTopView$1=reactRedux.connect(map.a2MapStateToProps,null,null,{context:ctx.LabelBeeContext})(PointCloudTopView);module.exports=PointCloudTopView$1;
@@ -1 +1 @@
1
- import{useLatest as ne,useMemoizedFn as F}from"ahooks";import{Spin as ve}from"antd/es";import z,{useContext as ge,useRef as q,useState as H,useMemo as Re,useCallback as he,useEffect as p}from"react";import{connect as _e}from"react-redux";import{usePointCloudViews as Ie}from"../pointCloudView/hooks/usePointCloudViews.js";import{PointCloudContext as De}from"../pointCloudView/PointCloudContext.js";import{a2MapStateToProps as be}from"../../store/annotation/map.js";import{LabelBeeContext as we}from"../../store/ctx.js";import{PointCloud2DRectOperation as Ce,ImgUtils as ye}from"@labelbee/lb-annotation";import{selectSpecifiedRectsFromTopViewSelectedIds as xe}from"./util.js";import{useUpdateRectList as Pe}from"./useUpdateRectList.js";import Se from"lodash";import{useToolStyleContext as Le}from"../../hooks/useToolStyle.js";import Oe from"../../store/toolConfig/index.js";var Ve=Object.defineProperty,je=Object.defineProperties,Ee=Object.getOwnPropertyDescriptors,re=Object.getOwnPropertySymbols,ke=Object.prototype.hasOwnProperty,Be=Object.prototype.propertyIsEnumerable,oe=(u,i,c)=>i in u?Ve(u,i,{enumerable:!0,configurable:!0,writable:!0,value:c}):u[i]=c,v=(u,i)=>{for(var c in i||(i={}))ke.call(i,c)&&oe(u,c,i[c]);if(re)for(var c of re(i))Be.call(i,c)&&oe(u,c,i[c]);return u},w=(u,i)=>je(u,Ee(i)),J=(u,i,c)=>new Promise((d,g)=>{var D=a=>{try{b(c.next(a))}catch(R){g(R)}},S=a=>{try{b(c.throw(a))}catch(R){g(R)}},b=a=>a.done?d(a.value):Promise.resolve(a.value).then(D,S);b((c=c.apply(u,i)).next())});const Ne=u=>{var i,c;const{mappingData:d,size:g,config:D,checkMode:S,afterImgOnLoad:b,shouldExcludePointCloudBoxListUpdate:a}=u,{selectBoxVisibleSwitch:R}=Oe(),L=(i=d==null?void 0:d.url)!=null?i:"",C=(c=d==null?void 0:d.fallbackUrl)!=null?c:"",{pointCloudBoxList:O,setPointCloudResult:V,defaultAttribute:j,rectList:E,addRectIn2DView:le,updateRectIn2DView:ie,removeRectIn2DView:ce,updateRectListByReducer:se,selectedIDs:m,setSelectedIDs:k}=ge(De),{value:B}=Le(),ue=ne(m),{update2DViewRect:de,remove2DViewRect:ae}=Ie(),N=z.useRef(null),o=q(null),$=F(de),y=F(ae),x=q(null),[fe,G]=H(!0),[K,Q]=H(""),[pe,U]=H(!1),h=Re(()=>E==null?void 0:E.filter(e=>e.imageName===(d==null?void 0:d.path)),[d==null?void 0:d.path,E]),W=q(h),P=ne(d==null?void 0:d.path),A=he(e=>J(void 0,null,function*(){try{const r=ue.current.slice(0),t=yield Promise.resolve(e());if(!t||t.length===0)return t;if(r.length){const n=new Set(r),l=t.filter(s=>n.has(s.id)).map(s=>s.id);k(l)}return t}catch(r){}}),[k]),X=e=>{const{boxID:r}=e;if(!a&&r){A(()=>{const t=$==null?void 0:$(e);return t?(x.current=t,V(t),t):null});return}ie(e,!0)},Y=e=>{P.current&&le(w(v({},e),{imageName:P.current}))},Z=e=>{if(e.length===0)return;if(!a){const t=e.find(n=>n.boxID);if(t){A(()=>{const n=y==null?void 0:y(t);return n?(x.current=n,V(n),_(),n):null});return}}const r=e.find(t=>t.extId);r&&A(()=>{const{imageName:t,extId:n}=r,l=y==null?void 0:y({boxID:n,imageName:t});return l?(x.current=l,V(l),l):null}),ce(e)},me=F(()=>{let e=[];return O.forEach(r=>{const{rects:t=[],id:n,attribute:l,trackID:s}=r,f=t.find(M=>M.imageName===P.current),I=n+"_"+P.current;f&&(e=[...e,w(v({},f),{boxID:n,id:I,attribute:l,order:s})])}),e}),_=Pe(()=>{var e,r,t,n,l;const s=a?[]:me(),f=(e=o.current)==null?void 0:e.selectedRectID,I=m.slice(0),M=R?xe(I,s,h):[...s,...h];let te=[];!R&&(m==null?void 0:m.length)&&(te=s.filter(T=>f?m.includes(T.boxID)&&!f.includes(T.boxID):m.includes(T.boxID))),(r=o.current)==null||r.setHighLightRectList(te),(t=o.current)==null||t.setResult(M),K?((n=o.current)==null||n.setSelectedRectID(K),Q("")):pe&&f&&((l=o.current)==null||l.setSelectedRectID(f),U(!1))}),ee=({targetId:e,id:r})=>{k(e),Q(r)};return p(()=>{if(N.current){const e=new Ce({container:N.current,size:g,config:w(v({},D),{isShowOrder:!0,attributeConfigurable:!0}),checkMode:S});return o.current=e,o.current.init(),o.current.on("updateDragResult",X),o.current.on("afterAddingDrawingRect",Y),o.current.on("deleteSelectedRects",Z),o.current.on("onRightClick",ee),()=>{var r,t,n,l,s;(r=o.current)==null||r.unbind("updateDragResult",X),(t=o.current)==null||t.unbind("afterAddingDrawingRect",Y),(n=o.current)==null||n.unbind("deleteSelectedRects",Z),(l=o.current)==null||l.unbind("onRightClick",ee),(s=o.current)==null||s.destroy()}}},[]),p(()=>{const e=t=>J(void 0,null,function*(){try{return yield ye.load(t)}catch(n){return console.error("Error loading image:",n),null}}),r=()=>J(void 0,null,function*(){var t;G(!0);let n=yield e(L);!n&&C&&(n=yield e(C)),n&&((t=o.current)==null||t.setImgNode(n),b(n)),G(!1)});o.current&&(L||C)&&r()},[L,C]),p(()=>{var e;(e=o.current)==null||e.setSize(g)},[g]),p(()=>{O!==x.current&&_()},[O]),p(()=>{var e,r;const t=h.find(n=>n.id===o.current.selectedRectID);(r=(e=o.current)==null?void 0:e.setDefaultAttribute)==null||r.call(e,j),t&&se(n=>{var l;const s=[];let f=null;return n.forEach(I=>{I.id!==o.current.selectedRectID?s.push(I):f=I}),t.extId===void 0&&(f=(l=o.current)==null?void 0:l.selectedRect),[...s,w(v({},f||{}),{attribute:j})]}),U(!0),_()},[j]),p(()=>{const e=W.current;Se.isEqual(e,h)||(U(!0),_(),W.current=h)},[h]),p(()=>{_()},[a]),p(()=>{var e,r,t,n;const l=(r=(e=o.current)==null?void 0:e.config)!=null?r:{},s=w(v({},l),{attributeList:(t=D.attributeList)!=null?t:[]});(n=o.current)==null||n.setConfig(JSON.stringify(s))},[D.attributeList]),p(()=>{var e;(e=o.current)==null||e.setEnableAddRect(m.length===0),_()},[m]),p(()=>{const{hiddenText:e}=B||{};if(e===void 0)return;const r=o.current;if(!r)return;const t=v(v({},r.style),B);r.setStyle(t)},[B]),p(()=>{_()},[R]),z.createElement(ve,{spinning:fe},z.createElement("div",{ref:N,style:v({position:"relative"},g)}))};var Ue=_e(be,null,null,{context:we})(Ne);export{Ue as default};
1
+ import{useLatest as oe,useMemoizedFn as H}from"ahooks";import{Spin as he}from"antd/es";import J,{useContext as Ie,useRef as $,useState as S,useMemo as _e,useCallback as De,useEffect as p}from"react";import{connect as be}from"react-redux";import{usePointCloudViews as Ce}from"../pointCloudView/hooks/usePointCloudViews.js";import{PointCloudContext as we}from"../pointCloudView/PointCloudContext.js";import{a2MapStateToProps as ye}from"../../store/annotation/map.js";import{LabelBeeContext as xe}from"../../store/ctx.js";import{PointCloud2DRectOperation as Pe,MathUtils as Se,ImgUtils as Le}from"@labelbee/lb-annotation";import{selectSpecifiedRectsFromTopViewSelectedIds as Oe}from"./util.js";import{useUpdateRectList as Ve}from"./useUpdateRectList.js";import je from"lodash";import{useToolStyleContext as Ee}from"../../hooks/useToolStyle.js";import ke from"../../store/toolConfig/index.js";var Ne=Object.defineProperty,Ue=Object.defineProperties,Be=Object.getOwnPropertyDescriptors,ie=Object.getOwnPropertySymbols,Me=Object.prototype.hasOwnProperty,ze=Object.prototype.propertyIsEnumerable,le=(u,c,s)=>c in u?Ne(u,c,{enumerable:!0,configurable:!0,writable:!0,value:s}):u[c]=s,v=(u,c)=>{for(var s in c||(c={}))Me.call(c,s)&&le(u,s,c[s]);if(ie)for(var s of ie(c))ze.call(c,s)&&le(u,s,c[s]);return u},C=(u,c)=>Ue(u,Be(c)),G=(u,c,s)=>new Promise((a,g)=>{var D=f=>{try{b(s.next(f))}catch(R){g(R)}},L=f=>{try{b(s.throw(f))}catch(R){g(R)}},b=f=>f.done?a(f.value):Promise.resolve(f.value).then(D,L);b((s=s.apply(u,c)).next())});const Ae=u=>{var c,s;const{mappingData:a,size:g,config:D,checkMode:L,afterImgOnLoad:b,shouldExcludePointCloudBoxListUpdate:f}=u,{selectBoxVisibleSwitch:R}=ke(),O=(c=a==null?void 0:a.url)!=null?c:"",w=(s=a==null?void 0:a.fallbackUrl)!=null?s:"",{pointCloudBoxList:V,setPointCloudResult:j,defaultAttribute:E,rectList:k,addRectIn2DView:ce,updateRectIn2DView:se,removeRectIn2DView:ue,updateRectListByReducer:de,selectedIDs:m,setSelectedIDs:N,selectedID:U}=Ie(we),{value:B}=Ee(),ae=oe(m),{update2DViewRect:fe,remove2DViewRect:pe}=Ce(),M=J.useRef(null),o=$(null),K=H(fe),y=H(pe),x=$(null),[me,Q]=S(!0),[W,X]=S(""),[ve,z]=S(!1),[ge,A]=S(!0),h=_e(()=>k==null?void 0:k.filter(e=>e.imageName===(a==null?void 0:a.path)),[a==null?void 0:a.path,k]),Y=$(h),P=oe(a==null?void 0:a.path),T=De(e=>G(void 0,null,function*(){try{const n=ae.current.slice(0),r=yield Promise.resolve(e());if(!r||r.length===0)return r;if(n.length){const t=new Set(n),i=r.filter(l=>t.has(l.id)).map(l=>l.id);N(i)}return r}catch(n){}}),[N]),Z=e=>{const{boxID:n}=e;if(!f&&n){T(()=>{const r=K==null?void 0:K(e);return r?(x.current=r,j(r),r):null});return}se(e,!0)},ee=e=>{P.current&&ce(C(v({},e),{imageName:P.current}))},te=e=>{if(e.length===0)return;if(!f){const r=e.find(t=>t.boxID);if(r){T(()=>{const t=y==null?void 0:y(r);return t?(x.current=t,j(t),I(),t):null});return}}const n=e.find(r=>r.extId);n&&T(()=>{const{imageName:r,extId:t}=n,i=y==null?void 0:y({boxID:t,imageName:r});return i?(x.current=i,j(i),i):null}),ue(e)},Re=H(()=>{let e=[];return V.forEach(n=>{const{rects:r=[],id:t,attribute:i,trackID:l}=n,d=r.find(F=>F.imageName===P.current),_=t+"_"+P.current;d&&(e=[...e,C(v({},d),{boxID:t,id:_,attribute:i,order:l})])}),e}),I=Ve(()=>{var e,n,r,t,i;const l=f?[]:Re(),d=(e=o.current)==null?void 0:e.selectedRectID,_=m.slice(0),F=R?Oe(_,l,h):[...l,...h];let ne=[];!R&&(m==null?void 0:m.length)&&(ne=l.filter(q=>d?m.includes(q.boxID)&&!d.includes(q.boxID):m.includes(q.boxID))),(n=o.current)==null||n.setHighLightRectList(ne),(r=o.current)==null||r.setResult(F),W?((t=o.current)==null||t.setSelectedRectID(W),X("")):ve&&d&&((i=o.current)==null||i.setSelectedRectID(d),z(!1))}),re=({targetId:e,id:n})=>{A(!1),N(e),X(n)};return p(()=>{if(M.current){const e=new Pe({container:M.current,size:g,config:C(v({},D),{isShowOrder:!0,attributeConfigurable:!0}),checkMode:L});return o.current=e,o.current.init(),o.current.on("updateDragResult",Z),o.current.on("afterAddingDrawingRect",ee),o.current.on("deleteSelectedRects",te),o.current.on("onRightClick",re),()=>{var n,r,t,i,l;(n=o.current)==null||n.unbind("updateDragResult",Z),(r=o.current)==null||r.unbind("afterAddingDrawingRect",ee),(t=o.current)==null||t.unbind("deleteSelectedRects",te),(i=o.current)==null||i.unbind("onRightClick",re),(l=o.current)==null||l.destroy()}}},[]),p(()=>{const e=r=>G(void 0,null,function*(){try{return yield Le.load(r)}catch(t){return console.error("Error loading image:",t),null}}),n=()=>G(void 0,null,function*(){var r;Q(!0);let t=yield e(O);!t&&w&&(t=yield e(w)),t&&((r=o.current)==null||r.setImgNode(t),b(t)),Q(!1)});o.current&&(O||w)&&n()},[O,w]),p(()=>{var e;(e=o.current)==null||e.setSize(g)},[g]),p(()=>{V!==x.current&&I()},[V]),p(()=>{var e,n;const r=h.find(t=>t.id===o.current.selectedRectID);(n=(e=o.current)==null?void 0:e.setDefaultAttribute)==null||n.call(e,E),r&&de(t=>{var i;const l=[];let d=null;return t.forEach(_=>{_.id!==o.current.selectedRectID?l.push(_):d=_}),r.extId===void 0&&(d=(i=o.current)==null?void 0:i.selectedRect),[...l,C(v({},d||{}),{attribute:E})]}),z(!0),I()},[E]),p(()=>{const e=Y.current;je.isEqual(e,h)||(z(!0),I(),Y.current=h)},[h]),p(()=>{I()},[f]),p(()=>{var e,n,r,t;const i=(n=(e=o.current)==null?void 0:e.config)!=null?n:{},l=C(v({},i),{attributeList:(r=D.attributeList)!=null?r:[]});(t=o.current)==null||t.setConfig(JSON.stringify(l))},[D.attributeList]),p(()=>{var e;(e=o.current)==null||e.setEnableAddRect(m.length===0),I()},[m]),p(()=>{if(!U||!ge){A(!0);return}const{rectList:e,size:n,zoom:r}=o.current,t=e.find(d=>d.boxID===U);if(!t){A(!0);return}const i={x:t.x+t.width/2,y:t.y+t.height/2},l=Se.getCurrentPosFromRectCenter(n,i,r);o.current.setCurrentPos(l),o.current.render()},[U]),p(()=>{const{hiddenText:e}=B||{};if(e===void 0)return;const n=o.current;if(!n)return;const r=v(v({},n.style),B);n.setStyle(r)},[B]),p(()=>{I()},[R]),J.createElement(he,{spinning:me},J.createElement("div",{ref:M,style:v({position:"relative"},g)}))};var Te=be(ye,null,null,{context:xe})(Ae);export{Te as default};
@@ -1 +1 @@
1
- import{getClassName as I}from"../../utils/dom.js";import{FooterDivider as z}from"../../views/MainView/toolFooter/index.js";import{ZoomController as ae}from"../../views/MainView/toolFooter/ZoomController/index.js";import{LeftOutlined as de,UpSquareOutlined as ce,DownSquareOutlined as pe}from"@ant-design/icons";import{cKeyCode as ue,PointCloudAnnotation as me,cTool as fe,cAnnotation as ve}from"@labelbee/lb-annotation";import{PointCloudUtils as H}from"@labelbee/lb-utils";import{EPointCloudBoxRenderTrigger as we}from"../../utils/ToolPointCloudBoxRenderHelper.js";import i,{useState as W,useRef as Ce,useLayoutEffect as ge,useEffect as x}from"react";import{PointCloudContext as F}from"./PointCloudContext.js";import{useRotate as Pe}from"./hooks/useRotate.js";import{useRotateEdge as ye}from"./hooks/useRotateEdge.js";import{useSingleBox as K}from"./hooks/useSingleBox.js";import{PointCloudContainer as Ie}from"./PointCloudLayout.js";import{BoxInfos as X,PointCloudValidity as xe}from"./PointCloudInfos.js";import{usePolygon as he}from"./hooks/usePolygon.js";import{useSphere as Y}from"./hooks/useSphere.js";import{useZoom as q}from"./hooks/useZoom.js";import{Slider as Ve}from"antd";import{a2MapStateToProps as Se}from"../../store/annotation/map.js";import{connect as _e}from"react-redux";import{usePointCloudViews as Ee}from"./hooks/usePointCloudViews.js";import Le from"../../hooks/useSize.js";import{useTranslation as Oe}from"react-i18next";import{LabelBeeContext as be}from"../../store/ctx.js";import{jsonParser as je}from"../../utils/index.js";import Te from"../../utils/ToolUtils.js";import ke from"lodash";import Re from"./components/PointCloudSizeSlider/index.js";import{useHistory as Ae}from"./hooks/useHistory.js";import Be from"./components/TitleButton/index.js";var Ne=Object.defineProperty,De=Object.defineProperties,Ue=Object.getOwnPropertyDescriptors,M=Object.getOwnPropertySymbols,Ze=Object.prototype.hasOwnProperty,ze=Object.prototype.propertyIsEnumerable,$=(n,l,r)=>l in n?Ne(n,l,{enumerable:!0,configurable:!0,writable:!0,value:r}):n[l]=r,N=(n,l)=>{for(var r in l||(l={}))Ze.call(l,r)&&$(n,r,l[r]);if(M)for(var r of M(l))ze.call(l,r)&&$(n,r,l[r]);return n},D=(n,l)=>De(n,Ue(l));const{EPolygonPattern:He,EToolName:G}=fe,{ESortDirection:J}=ve,We=ue.default,Q=(n,l,r=1)=>{const{width:w,height:u}=l,P={x:n.x+w*r/2,y:n.y+u*r/2},y={x:l.width/2,y:l.height/2};return{offsetX:(y.x-P.x)/r,offsetY:-(y.y-P.y)/r}},Fe=({currentData:n})=>{var l,r;const{zoom:w,zoomIn:u,zoomOut:P,initialPosition:y}=q(),{selectNextBox:E,selectPrevBox:L}=K(),{switchToNextSphere:h}=Y(),{updateRotate:V}=Pe({currentData:n}),{updateRotateEdge:O}=ye({currentData:n}),g=i.useContext(F),{topViewInstance:S}=g,m=(r=(l=g==null?void 0:g.topViewInstance)==null?void 0:l.toolScheduler)==null?void 0:r.getCurrentToolName(),e=()=>{V(-Number(g.rectRotateSensitivity))},d=()=>{V(g.rectRotateSensitivity)},f=()=>{O(-90)};return i.createElement(i.Fragment,null,i.createElement(Re,{onChange:b=>{var _;(_=S==null?void 0:S.pointCloudInstance)==null||_.updatePointSize({customSize:b})}}),i.createElement("span",{onClick:d,className:I("point-cloud","rotate-reserve")}),i.createElement("span",{onClick:e,className:I("point-cloud","rotate")}),i.createElement("span",{onClick:f,className:I("point-cloud","rotate-90")}),i.createElement(z,null),i.createElement(ce,{onClick:()=>{if(m===G.Point){h(J.descend);return}L(!0)},className:I("point-cloud","prev")}),i.createElement(pe,{onClick:()=>{if(m===G.Point){h(J.ascend);return}E(!0)},className:I("point-cloud","next")}),i.createElement(z,null),i.createElement(ae,{initialPosition:y,zoomIn:u,zoomOut:P,zoom:w}))},Ke=({setZAxisLimit:n,zAxisLimit:l,checkMode:r})=>r?null:i.createElement("div",{style:{position:"absolute",top:128,right:8,height:"50%",zIndex:20}},i.createElement(Ve,{vertical:!0,step:.5,max:10,min:.5,defaultValue:l,onAfterChange:w=>{n(w)}})),Xe=({currentData:n,imgList:l,stepInfo:r,drawLayerSlot:w,checkMode:u,intelligentFit:P,setIsEnlargeTopView:y,isEnlargeTopView:E,onExitZoom:L,highlightAttribute:h})=>{var V,O;const[g,S]=W({zoom:1,currentPos:{x:0,y:0}}),m=Ce(null),e=i.useContext(F),d=Le(m),f=je(r.config),{setZoom:b,syncTopviewToolZoom:_}=q(),{hideAttributes:ee}=e,{addPolygon:te,deletePolygon:oe}=he(),{deletePointCloudSphere:ne}=Y(),{deletePointCloudBox:ie,changeValidByID:se}=K(),[j,le]=W(10),{t:U}=Oe(),C=Ee(),{pushHistoryWithList:re}=Ae();ge(()=>{if(!e.topViewInstance&&m.current&&(n==null?void 0:n.url)&&(n==null?void 0:n.result)){const o={width:m.current.clientWidth,height:m.current.clientHeight},a=new me({container:m.current,size:o,pcdPath:n.url,config:D(N({},f),{pointCloudPattern:e.pointCloudPattern}),checkMode:u,toolName:Te.getPointCloudToolList(),proxyMode:u});e.setTopViewInstance(a)}},[n]),x(()=>{if(!d||!e.topViewInstance||!e.sideViewInstance)return;const{toolInstance:o}=e.topViewInstance;o.singleOn("dataUpdated",(t,s)=>{const p=ke.cloneDeep(t).map(c=>D(N({},c),{pointList:H.pointListTransferCanvas2World(c.pointList,d)}));e.setSelectedIDs(s),e.setLineList(p),re({lineList:p})}),o.singleOn("pointCreated",(t,s)=>{C.topViewAddSphere({newPoint:t,size:d,trackConfigurable:f.trackConfigurable,zoom:s})}),o.singleOn("pointDeleted",t=>{ne(t)}),o.singleOn("pointSelected",t=>{e.setSelectedIDs([t])}),o.singleOn("updatePointByDrag",(t,s)=>{var p;(p=C.topViewUpdatePoint)==null||p.call(C,t,d)}),o.singleOn("polygonCreated",(t,s)=>{if(o.pattern===He.Normal||!(n==null?void 0:n.url)){const p=D(N({},t),{pointList:t.pointList.map(c=>H.transferCanvas2World(c,d))});te(p),e.setSelectedIDs(ee.includes(t.attribute)?"":t.id);return}C.topViewAddBox({polygon:t,size:d,imgList:l,trackConfigurable:f.trackConfigurable,zoom:s,intelligentFit:P})}),o.singleOn("deletedObject",({id:t})=>{ie(t),oe(t)}),o.singleOn("deleteSelectedIDs",()=>{e.setSelectedIDs([])}),o.singleOn("addSelectedIDs",t=>{e.addSelectedID(t)}),o.singleOn("setSelectedIDs",t=>{e.setSelectedIDs(t)}),o.singleOn("updatePolygonByDrag",t=>{var s;(s=C.topViewUpdateBox)==null||s.call(C,t,d)});const a=t=>{var s;const p=se(t);p&&e.syncAllViewPointCloudColor(we.Default,p),e.polygonList.find(c=>c.id===t)&&((s=e.topViewInstance)==null||s.toolInstance.setPolygonValidAndRender(t,!0))};return o.on("validUpdate",a),()=>{o.unbind("validUpdate",a)}},[e,d,n,C,e.polygonList,e.lineList,(V=e.topViewInstance)==null?void 0:V.toolInstance]),x(()=>{var o,a;if(!(d==null?void 0:d.width)||!e.topViewInstance)return;const t=(a=(o=f==null?void 0:f.attributeList)==null?void 0:o[0])==null?void 0:a.value;t&&e.topViewInstance.toolInstance.setDefaultAttribute(t),e.topViewInstance.initSize(d),e.topViewInstance.updatePolygonList(e.displayPointCloudList,e.polygonList),e.topViewInstance.updatePointList(e.displaySphereList),e.topViewInstance.updateLineList(e.displayLineList);const{topViewInstance:{pointCloudInstance:s,toolInstance:p}}=e;p.singleOn("renderZoom",(c,v)=>{const{offsetX:T,offsetY:k}=Q(v,d,c);if(s.camera.zoom=c,v){const{x:R,y:A,z:B}=s.initCameraPosition;s.camera.position.set(R+k,A-T,B)}s.camera.updateProjectionMatrix(),s.render(),b(c),_(v,c,d),S({zoom:c,currentPos:v})}),p.singleOn("dragMove",({currentPos:c,zoom:v})=>{const{offsetX:T,offsetY:k}=Q(c,d,v);s.camera.zoom=v;const{x:R,y:A,z:B}=s.initCameraPosition;s.camera.position.set(R+k,A-T,B),s.render(),_(c,v,d),S({zoom:v,currentPos:c})})},[d,e.topViewInstance,(O=e.topViewInstance)==null?void 0:O.toolInstance]),x(()=>{var o,a;(a=(o=e.topViewInstance)==null?void 0:o.pointCloudInstance)==null||a.applyZAxisPoints(j)},[j]),x(()=>{var o,a,t,s;C.topViewSelectedChanged({}),(s=(t=(a=(o=e.topViewInstance)==null?void 0:o.toolInstance)==null?void 0:a.selection)==null?void 0:t.hardSetSelectedIDs)==null||s.call(t,e.selectedIDs)},[e.selectedIDs]),x(()=>(window.addEventListener("keydown",Z),()=>{window.removeEventListener("keydown",Z)}),[]);const Z=o=>{const{keyCode:a}=o;a===We.Esc&&L()};return x(()=>{var o,a,t;(t=(a=(o=e.topViewInstance)==null?void 0:o.pointCloud2dOperation)==null?void 0:a.setHighlightAttribute)==null||t.call(a,h)},[e.topViewInstance,h]),i.createElement(Ie,{className:I("point-cloud-container","top-view"),title:E?i.createElement("div",{style:{display:"flex",alignItems:"center",position:"relative"}},i.createElement(de,{style:{cursor:"pointer",marginRight:"12px"},onClick:()=>{L()}}),i.createElement("span",null,U("TopView")),i.createElement(X,{checkMode:u,config:f,style:{display:"flex",position:"initial",margin:"0px 20px"}})):i.createElement(Be,{title:U("TopView"),onClick:()=>{y(!0)}}),toolbar:i.createElement(Fe,{currentData:n})},i.createElement("div",{style:{position:"relative",flex:1}},i.createElement("div",{style:{width:"100%",height:"100%"},ref:m},w==null?void 0:w(g)),!E&&i.createElement(X,{checkMode:u,config:f}),i.createElement(Ke,{checkMode:u,zAxisLimit:j,setZAxisLimit:le}),i.createElement(xe,null)))};var Ye=_e(Se,null,null,{context:be})(Xe);export{Ye as default};
1
+ import{getClassName as _}from"../../utils/dom.js";import{FooterDivider as F}from"../../views/MainView/toolFooter/index.js";import{ZoomController as me}from"../../views/MainView/toolFooter/ZoomController/index.js";import{LeftOutlined as fe,UpSquareOutlined as Ce,DownSquareOutlined as ve}from"@ant-design/icons";import{cKeyCode as we,PointCloudAnnotation as Pe,MathUtils as W,cTool as ge,cAnnotation as ye}from"@labelbee/lb-annotation";import{PointCloudUtils as K}from"@labelbee/lb-utils";import{EPointCloudBoxRenderTrigger as Ie}from"../../utils/ToolPointCloudBoxRenderHelper.js";import s,{useState as A,useRef as xe,useLayoutEffect as he,useEffect as y}from"react";import{PointCloudContext as M}from"./PointCloudContext.js";import{useRotate as Ve}from"./hooks/useRotate.js";import{useRotateEdge as Se}from"./hooks/useRotateEdge.js";import{useSingleBox as X}from"./hooks/useSingleBox.js";import{PointCloudContainer as _e}from"./PointCloudLayout.js";import{BoxInfos as Y,PointCloudValidity as Ee}from"./PointCloudInfos.js";import{usePolygon as Le}from"./hooks/usePolygon.js";import{useSphere as q}from"./hooks/useSphere.js";import{useZoom as $}from"./hooks/useZoom.js";import{Slider as be}from"antd";import{a2MapStateToProps as Oe}from"../../store/annotation/map.js";import{connect as je}from"react-redux";import{usePointCloudViews as Te}from"./hooks/usePointCloudViews.js";import Re from"../../hooks/useSize.js";import{useTranslation as ke}from"react-i18next";import{LabelBeeContext as De}from"../../store/ctx.js";import{jsonParser as Be}from"../../utils/index.js";import Ne from"../../utils/ToolUtils.js";import Ae from"lodash";import Ue from"./components/PointCloudSizeSlider/index.js";import{useHistory as ze}from"./hooks/useHistory.js";import Ze from"./components/TitleButton/index.js";var He=Object.defineProperty,Fe=Object.defineProperties,We=Object.getOwnPropertyDescriptors,G=Object.getOwnPropertySymbols,Ke=Object.prototype.hasOwnProperty,Me=Object.prototype.propertyIsEnumerable,J=(i,l,r)=>l in i?He(i,l,{enumerable:!0,configurable:!0,writable:!0,value:r}):i[l]=r,U=(i,l)=>{for(var r in l||(l={}))Ke.call(l,r)&&J(i,r,l[r]);if(G)for(var r of G(l))Me.call(l,r)&&J(i,r,l[r]);return i},z=(i,l)=>Fe(i,We(l));const{EPolygonPattern:Xe,EToolName:Q}=ge,{ESortDirection:ee}=ye,Ye=we.default,te=(i,l,r=1)=>{const{width:v,height:m}=l,I={x:i.x+v*r/2,y:i.y+m*r/2},x={x:l.width/2,y:l.height/2};return{offsetX:(x.x-I.x)/r,offsetY:-(x.y-I.y)/r}},qe=({currentData:i})=>{var l,r;const{zoom:v,zoomIn:m,zoomOut:I,initialPosition:x}=$(),{selectNextBox:O,selectPrevBox:j}=X(),{switchToNextSphere:E}=q(),{updateRotate:L}=Ve({currentData:i}),{updateRotateEdge:T}=Se({currentData:i}),P=s.useContext(M),{topViewInstance:h}=P,f=(r=(l=P==null?void 0:P.topViewInstance)==null?void 0:l.toolScheduler)==null?void 0:r.getCurrentToolName(),e=()=>{L(-Number(P.rectRotateSensitivity))},d=()=>{L(P.rectRotateSensitivity)},C=()=>{T(-90)};return s.createElement(s.Fragment,null,s.createElement(Ue,{onChange:B=>{var V;(V=h==null?void 0:h.pointCloudInstance)==null||V.updatePointSize({customSize:B})}}),s.createElement("span",{onClick:d,className:_("point-cloud","rotate-reserve")}),s.createElement("span",{onClick:e,className:_("point-cloud","rotate")}),s.createElement("span",{onClick:C,className:_("point-cloud","rotate-90")}),s.createElement(F,null),s.createElement(Ce,{onClick:()=>{if(f===Q.Point){E(ee.descend);return}j(!0)},className:_("point-cloud","prev")}),s.createElement(ve,{onClick:()=>{if(f===Q.Point){E(ee.ascend);return}O(!0)},className:_("point-cloud","next")}),s.createElement(F,null),s.createElement(me,{initialPosition:x,zoomIn:m,zoomOut:I,zoom:v}))},$e=({setZAxisLimit:i,zAxisLimit:l,checkMode:r})=>r?null:s.createElement("div",{style:{position:"absolute",top:128,right:8,height:"50%",zIndex:20}},s.createElement(be,{vertical:!0,step:.5,max:10,min:.5,defaultValue:l,onAfterChange:v=>{i(v)}})),Ge=({currentData:i,imgList:l,stepInfo:r,drawLayerSlot:v,checkMode:m,intelligentFit:I,setIsEnlargeTopView:x,isEnlargeTopView:O,onExitZoom:j,highlightAttribute:E})=>{var L,T;const[P,h]=A({zoom:1,currentPos:{x:0,y:0}}),f=xe(null),e=s.useContext(M),d=Re(f),C=Be(r.config),{setZoom:B,syncTopviewToolZoom:V}=$(),{hideAttributes:oe}=e,{addPolygon:ne,deletePolygon:ie}=Le(),{deletePointCloudSphere:se}=q(),{deletePointCloudBox:le,changeValidByID:re}=X(),[N,ae]=A(10),{t:Z}=ke(),w=Te(),{pushHistoryWithList:ce}=ze(),[de,R]=A(!0);he(()=>{if(!e.topViewInstance&&f.current&&(i==null?void 0:i.url)&&(i==null?void 0:i.result)){const o={width:f.current.clientWidth,height:f.current.clientHeight},a=new Pe({container:f.current,size:o,pcdPath:i.url,config:z(U({},C),{pointCloudPattern:e.pointCloudPattern}),checkMode:m,toolName:Ne.getPointCloudToolList(),proxyMode:m});e.setTopViewInstance(a)}},[i]),y(()=>{if(!d||!e.topViewInstance||!e.sideViewInstance)return;const{toolInstance:o}=e.topViewInstance;o.singleOn("dataUpdated",(t,n)=>{const u=Ae.cloneDeep(t).map(c=>z(U({},c),{pointList:K.pointListTransferCanvas2World(c.pointList,d)}));e.setSelectedIDs(n),e.setLineList(u),ce({lineList:u})}),o.singleOn("pointCreated",(t,n)=>{w.topViewAddSphere({newPoint:t,size:d,trackConfigurable:C.trackConfigurable,zoom:n})}),o.singleOn("pointDeleted",t=>{se(t)}),o.singleOn("pointSelected",t=>{e.setSelectedIDs([t])}),o.singleOn("updatePointByDrag",(t,n)=>{var u;(u=w.topViewUpdatePoint)==null||u.call(w,t,d)}),o.singleOn("polygonCreated",(t,n)=>{if(o.pattern===Xe.Normal||!(i==null?void 0:i.url)){const u=z(U({},t),{pointList:t.pointList.map(c=>K.transferCanvas2World(c,d))});ne(u),e.setSelectedIDs(oe.includes(t.attribute)?"":t.id);return}R(!1),w.topViewAddBox({polygon:t,size:d,imgList:l,trackConfigurable:C.trackConfigurable,zoom:n,intelligentFit:I})}),o.singleOn("deletedObject",({id:t})=>{le(t),ie(t)}),o.singleOn("deleteSelectedIDs",()=>{e.setSelectedIDs([])}),o.singleOn("addSelectedIDs",t=>{e.addSelectedID(t)}),o.singleOn("setSelectedIDs",t=>{R(!1),e.setSelectedIDs(t)}),o.singleOn("updatePolygonByDrag",t=>{var n;(n=w.topViewUpdateBox)==null||n.call(w,t,d)});const a=t=>{var n;const u=re(t);u&&e.syncAllViewPointCloudColor(Ie.Default,u),e.polygonList.find(c=>c.id===t)&&((n=e.topViewInstance)==null||n.toolInstance.setPolygonValidAndRender(t,!0))};return o.on("validUpdate",a),()=>{o.unbind("validUpdate",a)}},[e,d,i,w,e.polygonList,e.lineList,(L=e.topViewInstance)==null?void 0:L.toolInstance]),y(()=>{var o,a;if(!(d==null?void 0:d.width)||!e.topViewInstance)return;const t=(a=(o=C==null?void 0:C.attributeList)==null?void 0:o[0])==null?void 0:a.value;t&&e.topViewInstance.toolInstance.setDefaultAttribute(t),e.topViewInstance.initSize(d),e.topViewInstance.updatePolygonList(e.displayPointCloudList,e.polygonList),e.topViewInstance.updatePointList(e.displaySphereList),e.topViewInstance.updateLineList(e.displayLineList);const{topViewInstance:{pointCloudInstance:n,toolInstance:u}}=e;u.singleOn("renderZoom",(c,p)=>{const{offsetX:S,offsetY:b}=te(p,d,c);if(n.camera.zoom=c,p){const{x:g,y:k,z:D}=n.initCameraPosition;n.camera.position.set(g+b,k-S,D)}n.camera.updateProjectionMatrix(),n.render(),B(c),V(p,c,d),h({zoom:c,currentPos:p})}),u.singleOn("dragMove",({currentPos:c,zoom:p})=>{const{offsetX:S,offsetY:b}=te(c,d,p);n.camera.zoom=p;const{x:g,y:k,z:D}=n.initCameraPosition;n.camera.position.set(g+b,k-S,D),n.render(),V(c,p,d),h({zoom:p,currentPos:c})})},[d,e.topViewInstance,(T=e.topViewInstance)==null?void 0:T.toolInstance]),y(()=>{var o,a;(a=(o=e.topViewInstance)==null?void 0:o.pointCloudInstance)==null||a.applyZAxisPoints(N)},[N]),y(()=>{var o,a,t,n;w.topViewSelectedChanged({}),(n=(t=(a=(o=e.topViewInstance)==null?void 0:o.toolInstance)==null?void 0:a.selection)==null?void 0:t.hardSetSelectedIDs)==null||n.call(t,e.selectedIDs)},[e.selectedIDs]),y(()=>{const{topViewInstance:o,selectedID:a,selectedPointCloudBox:t,zoom:n}=e;if(!o||!a||!t||!de){R(!0);return}const{center:u}=t,{pointCloudInstance:c,toolInstance:p}=o,S=p.polygonList.find(pe=>pe.id===e.selectedID);if(!S){R(!0);return}const b=W.getRectCenterPoint(S.pointList),g=W.getCurrentPosFromRectCenter(p.size,b,n);p.setCurrentPos(g),p.render();const{x:k,y:D,z:ue}=c.initCameraPosition;c.camera.position.set(u.x,u.y,ue),c.render(),V(g,n,d),h({zoom:n,currentPos:g})},[e.selectedID]),y(()=>(window.addEventListener("keydown",H),()=>{window.removeEventListener("keydown",H)}),[]);const H=o=>{const{keyCode:a}=o;a===Ye.Esc&&j()};return y(()=>{var o,a,t;(t=(a=(o=e.topViewInstance)==null?void 0:o.pointCloud2dOperation)==null?void 0:a.setHighlightAttribute)==null||t.call(a,E)},[e.topViewInstance,E]),s.createElement(_e,{className:_("point-cloud-container","top-view"),title:O?s.createElement("div",{style:{display:"flex",alignItems:"center",position:"relative"}},s.createElement(fe,{style:{cursor:"pointer",marginRight:"12px"},onClick:()=>{j()}}),s.createElement("span",null,Z("TopView")),s.createElement(Y,{checkMode:m,config:C,style:{display:"flex",position:"initial",margin:"0px 20px"}})):s.createElement(Ze,{title:Z("TopView"),onClick:()=>{x(!0)}}),toolbar:s.createElement(qe,{currentData:i})},s.createElement("div",{style:{position:"relative",flex:1}},s.createElement("div",{style:{width:"100%",height:"100%"},ref:f},v==null?void 0:v(P)),!O&&s.createElement(Y,{checkMode:m,config:C}),s.createElement($e,{checkMode:m,zAxisLimit:N,setZAxisLimit:ae}),s.createElement(Ee,null)))};var Je=je(Oe,null,null,{context:De})(Ge);export{Je as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@labelbee/lb-components",
3
- "version": "1.23.0-alpha.129",
3
+ "version": "1.23.0-alpha.130",
4
4
  "description": "Provide a complete library of annotation components",
5
5
  "main": "./dist/index.js",
6
6
  "es": "./es/index.js",
@@ -43,7 +43,7 @@
43
43
  },
44
44
  "dependencies": {
45
45
  "@ant-design/icons": "^4.6.2",
46
- "@labelbee/lb-annotation": "1.27.0-alpha.63",
46
+ "@labelbee/lb-annotation": "1.27.0-alpha.64",
47
47
  "@labelbee/lb-utils": "1.19.0-alpha.24",
48
48
  "@labelbee/wavesurfer": "1.1.0-alpha.1",
49
49
  "@types/react-dom": "^18.2.7",