@labelbee/lb-components 1.10.0-alpha.10 → 1.10.0-alpha.11

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";Object.defineProperty(exports,"__esModule",{value:!0});var React=require("react"),lbAnnotation=require("@labelbee/lb-annotation");function _interopDefaultLegacy(u){return u&&typeof u=="object"&&"default"in u?u:{default:u}}var React__default=_interopDefaultLegacy(React);const PointCloudContext=React__default.default.createContext({pointCloudBoxList:[],pointCloudSphereList:[],displayPointCloudList:[],displaySphereList:[],polygonList:[],lineList:[],selectedID:"",selectedIDs:[],valid:!0,setSelectedIDs:()=>{},setPointCloudResult:()=>{},setPointCloudSphereList:()=>{},setPointCloudValid:()=>{},setTopViewInstance:()=>{},setSideViewInstance:()=>{},setBackViewInstance:()=>{},setMainViewInstance:()=>{},addSelectedID:()=>{},selectedAllBoxes:()=>{},addPointCloudBox:()=>[],addPointCloudSphere:()=>[],setPolygonList:()=>{},setLineList:()=>{},zoom:1,setZoom:()=>{},history:new lbAnnotation.ActionsHistory,hideAttributes:[],setHideAttributes:()=>{},toggleAttributesVisible:()=>{},reRender:()=>{},setAttrPanelLayout:()=>{},attrPanelLayout:"",syncAllViewPointCloudColor:()=>{},defaultAttribute:"",setDefaultAttribute:()=>{},pointCloudPattern:lbAnnotation.EToolName.Rect,setPointCloudPattern:()=>{},selectSpecAttr:()=>{}}),PointCloudProvider=({children:u})=>{const[l,y]=React.useState([]),[c,h]=React.useState([]),[C,j]=React.useState([]),[S,N]=React.useState([]),[r,L]=React.useState([]),[m,T]=React.useState(!0),[w,_]=React.useState(1),[n,k]=React.useState(),[I,q]=React.useState(),[V,z]=React.useState(),[o,F]=React.useState(),[g,Z]=React.useState(""),[x,G]=React.useState(lbAnnotation.EToolName.Rect),J=React.useRef(new lbAnnotation.ActionsHistory).current,[i,v]=React.useState([]),[B,K]=React.useState(""),R=React.useMemo(()=>r.length===1?r[0]:"",[r]),D=React.useMemo(()=>{const d=l.find(t=>t.id===R),A=t=>{const e=l.concat(t);return y(e),e},b=t=>{const e=c.concat(t);return h(e),e},f=t=>{T(t!==!1)},s=t=>{t===void 0&&L([]),typeof t=="string"&&L([t]),Array.isArray(t)&&L(Array.from(new Set(t)))},U=t=>{r.includes(t)?s(r.filter(e=>e!==t)):s([...r,t])},W=()=>{s(l.map(t=>t.id))},X=t=>{s(l.filter(e=>e.attribute===t).map(e=>e.id))},E=l.filter(t=>!i.includes(t.attribute)),H=c.filter(t=>!i.includes(t.attribute)),Y=t=>{if(i.includes(t))v(i.filter(e=>e!==t));else{const e=i.concat(t);v(e)}},$=(t=E,e=C,P=H,p=S)=>{l.forEach(a=>{o==null||o.removeObjectByName(a.id)}),c.forEach(a=>{o==null||o.removeObjectByName(a.id)}),n==null||n.updatePolygonList(t,e),n==null||n.updatePointList(P),n==null||n.updateLineList(p),o==null||o.generateBoxes(t),o==null||o.generateSpheres(P),M(t)},M=t=>{const e=o==null?void 0:o.highlightOriginPointCloud(t);return new Promise(P=>{e==null||e.then(p=>{[n].forEach(a=>{var O;p&&((O=a==null?void 0:a.pointCloudInstance)==null||O.updateColor(p),P({color:p}))})})})};return{selectedID:R,pointCloudBoxList:l,pointCloudSphereList:c,displayPointCloudList:E,displaySphereList:H,selectedIDs:r,setPointCloudResult:y,setSelectedIDs:s,addPointCloudBox:A,addPointCloudSphere:b,setPointCloudSphereList:h,valid:m,selectedPointCloudBox:d,setPointCloudValid:f,addSelectedID:U,selectedAllBoxes:W,topViewInstance:n,setTopViewInstance:k,sideViewInstance:I,setSideViewInstance:q,backViewInstance:V,setBackViewInstance:z,mainViewInstance:o,setMainViewInstance:F,polygonList:C,setPolygonList:j,lineList:S,setLineList:N,zoom:w,setZoom:_,history:J,toggleAttributesVisible:Y,hideAttributes:i,setHideAttributes:v,reRender:$,attrPanelLayout:B,setAttrPanelLayout:K,syncAllViewPointCloudColor:M,defaultAttribute:g,setDefaultAttribute:Z,pointCloudPattern:x,setPointCloudPattern:G,selectSpecAttr:X}},[m,r,l,c,C,S,n,I,V,o,w,i,B,g,x]),Q=()=>{const d=l.filter(s=>i.includes(s.attribute)),{setSelectedIDs:A,reRender:b}=D,f=d.map(s=>s.id);f.length>0&&A(r.filter(s=>!f.includes(s))),b()};return React.useEffect(()=>{var d;Q(),(d=n==null?void 0:n.pointCloud2dOperation)==null||d.setHiddenAttributes(i)},[i]),React__default.default.createElement(PointCloudContext.Provider,{value:D},u)};exports.PointCloudContext=PointCloudContext,exports.PointCloudProvider=PointCloudProvider;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var React=require("react"),lbAnnotation=require("@labelbee/lb-annotation");function _interopDefaultLegacy(u){return u&&typeof u=="object"&&"default"in u?u:{default:u}}var React__default=_interopDefaultLegacy(React);const PointCloudContext=React__default.default.createContext({pointCloudBoxList:[],pointCloudSphereList:[],displayPointCloudList:[],displaySphereList:[],displayLineList:[],polygonList:[],lineList:[],selectedID:"",selectedIDs:[],valid:!0,setSelectedIDs:()=>{},setPointCloudResult:()=>{},setPointCloudSphereList:()=>{},setPointCloudValid:()=>{},setTopViewInstance:()=>{},setSideViewInstance:()=>{},setBackViewInstance:()=>{},setMainViewInstance:()=>{},addSelectedID:()=>{},selectedAllBoxes:()=>{},addPointCloudBox:()=>[],addPointCloudSphere:()=>[],setPolygonList:()=>{},setLineList:()=>{},zoom:1,setZoom:()=>{},history:new lbAnnotation.ActionsHistory,hideAttributes:[],setHideAttributes:()=>{},toggleAttributesVisible:()=>{},reRender:()=>{},setAttrPanelLayout:()=>{},attrPanelLayout:"",syncAllViewPointCloudColor:()=>{},defaultAttribute:"",setDefaultAttribute:()=>{},pointCloudPattern:lbAnnotation.EToolName.Rect,setPointCloudPattern:()=>{},selectSpecAttr:()=>{}}),PointCloudProvider=({children:u})=>{const[l,A]=React.useState([]),[c,h]=React.useState([]),[C,N]=React.useState([]),[S,T]=React.useState([]),[r,L]=React.useState([]),[m,_]=React.useState(!0),[w,k]=React.useState(1),[n,q]=React.useState(),[I,z]=React.useState(),[V,F]=React.useState(),[o,Z]=React.useState(),[g,G]=React.useState(""),[x,J]=React.useState(lbAnnotation.EToolName.Rect),K=React.useRef(new lbAnnotation.ActionsHistory).current,[i,v]=React.useState([]),[B,Q]=React.useState(""),R=React.useMemo(()=>r.length===1?r[0]:"",[r]),D=React.useMemo(()=>{const a=l.find(t=>t.id===R),b=t=>{const e=l.concat(t);return A(e),e},y=t=>{const e=c.concat(t);return h(e),e},f=t=>{_(t!==!1)},s=t=>{t===void 0&&L([]),typeof t=="string"&&L([t]),Array.isArray(t)&&L(Array.from(new Set(t)))},W=t=>{r.includes(t)?s(r.filter(e=>e!==t)):s([...r,t])},X=()=>{s(l.map(t=>t.id))},Y=t=>{s(l.filter(e=>e.attribute===t).map(e=>e.id))},E=l.filter(t=>!i.includes(t.attribute)),H=c.filter(t=>!i.includes(t.attribute)),M=S.filter(t=>t.attribute&&!i.includes(t.attribute)),$=t=>{if(i.includes(t))v(i.filter(e=>e!==t));else{const e=i.concat(t);v(e)}},tt=(t=E,e=C,P=H,p=M)=>{l.forEach(d=>{o==null||o.removeObjectByName(d.id)}),c.forEach(d=>{o==null||o.removeObjectByName(d.id)}),n==null||n.updatePolygonList(t,e),n==null||n.updatePointList(P),n==null||n.updateLineList(p),o==null||o.generateBoxes(t),o==null||o.generateSpheres(P),O(t)},O=t=>{const e=o==null?void 0:o.highlightOriginPointCloud(t);return new Promise(P=>{e==null||e.then(p=>{[n].forEach(d=>{var j;p&&((j=d==null?void 0:d.pointCloudInstance)==null||j.updateColor(p),P({color:p}))})})})};return{selectedID:R,pointCloudBoxList:l,pointCloudSphereList:c,displayPointCloudList:E,displaySphereList:H,displayLineList:M,selectedIDs:r,setPointCloudResult:A,setSelectedIDs:s,addPointCloudBox:b,addPointCloudSphere:y,setPointCloudSphereList:h,valid:m,selectedPointCloudBox:a,setPointCloudValid:f,addSelectedID:W,selectedAllBoxes:X,topViewInstance:n,setTopViewInstance:q,sideViewInstance:I,setSideViewInstance:z,backViewInstance:V,setBackViewInstance:F,mainViewInstance:o,setMainViewInstance:Z,polygonList:C,setPolygonList:N,lineList:S,setLineList:T,zoom:w,setZoom:k,history:K,toggleAttributesVisible:$,hideAttributes:i,setHideAttributes:v,reRender:tt,attrPanelLayout:B,setAttrPanelLayout:Q,syncAllViewPointCloudColor:O,defaultAttribute:g,setDefaultAttribute:G,pointCloudPattern:x,setPointCloudPattern:J,selectSpecAttr:Y}},[m,r,l,c,C,S,n,I,V,o,w,i,B,g,x]),U=()=>{const a=l.filter(s=>i.includes(s.attribute)),{setSelectedIDs:b,reRender:y}=D,f=a.map(s=>s.id);f.length>0&&b(r.filter(s=>!f.includes(s))),y()};return React.useEffect(()=>{var a;U(),(a=n==null?void 0:n.pointCloud2dOperation)==null||a.setHiddenAttributes(i)},[i]),React__default.default.createElement(PointCloudContext.Provider,{value:D},u)};exports.PointCloudContext=PointCloudContext,exports.PointCloudProvider=PointCloudProvider;
@@ -1 +1 @@
1
- "use strict";var dom=require("../../utils/dom.js"),index$1=require("../../views/MainView/toolFooter/index.js"),index$2=require("../../views/MainView/toolFooter/ZoomController/index.js"),icons=require("@ant-design/icons"),lbAnnotation=require("@labelbee/lb-annotation"),lbUtils=require("@labelbee/lb-utils"),React=require("react"),PointCloudContext=require("./PointCloudContext.js"),useRotate=require("./hooks/useRotate.js"),useSingleBox=require("./hooks/useSingleBox.js"),PointCloudLayout=require("./PointCloudLayout.js"),PointCloudInfos=require("./PointCloudInfos.js"),usePolygon=require("./hooks/usePolygon.js"),useLine=require("./hooks/useLine.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");function _interopDefaultLegacy(o){return o&&typeof o=="object"&&"default"in o?o:{default:o}}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=(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}=lbAnnotation.cTool,TransferCanvas2WorldOffset=(o,l,s=1)=>{const{width:f,height:C}=l,m={x:o.x+f*s/2,y:o.y+C*s/2},g={x:l.width/2,y:l.height/2};return{offsetX:(g.x-m.x)/s,offsetY:-(g.y-m.y)/s}},TopViewToolbar=({currentData:o})=>{const{zoom:l,zoomIn:s,zoomOut:f,initialPosition:C}=useZoom.useZoom(),{selectNextBox:m,selectPrevBox:g}=useSingleBox.useSingleBox(),{updateRotate:P}=useRotate.useRotate({currentData:o}),x=2,I=()=>{P(-x)},v=()=>{P(x)},t=()=>{P(180)};return React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement("span",{onClick:v,className:dom.getClassName("point-cloud","rotate-reserve")}),React__default.default.createElement("span",{onClick:I,className:dom.getClassName("point-cloud","rotate")}),React__default.default.createElement("span",{onClick:t,className:dom.getClassName("point-cloud","rotate-180")}),React__default.default.createElement(index$1.FooterDivider,null),React__default.default.createElement(icons.UpSquareOutlined,{onClick:()=>{g()},className:dom.getClassName("point-cloud","prev")}),React__default.default.createElement(icons.DownSquareOutlined,{onClick:()=>{m()},className:dom.getClassName("point-cloud","next")}),React__default.default.createElement(index$1.FooterDivider,null),React__default.default.createElement(index$2.ZoomController,{initialPosition:C,zoomIn:s,zoomOut:f,zoom:l}))},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:f=>{o(f)}})),PointCloudTopView=({currentData:o,imgList:l,stepInfo:s,drawLayerSlot:f,checkMode:C,intelligentFit:m})=>{var g,P;const[x,I]=React.useState({zoom:1,currentPos:{x:0,y:0}}),v=React.useRef(null),t=React__default.default.useContext(PointCloudContext.PointCloudContext),a=useSize(v),w=index.jsonParser(s.config),{setZoom:j,syncTopviewToolZoom:_}=useZoom.useZoom(),{hideAttributes:L}=t,{addPolygon:E,deletePolygon:A}=usePolygon.usePolygon(),{addLine:N,deleteLine:T}=useLine.useLine(),{deletePointCloudSphere:k}=useSphere.useSphere(),{deletePointCloudBox:q,changeValidByID:B}=useSingleBox.useSingleBox(),[y,D]=React.useState(10),{t:R}=reactI18next.useTranslation(),d=usePointCloudViews.usePointCloudViews();return React.useLayoutEffect(()=>{if(!t.topViewInstance&&v.current&&(o==null?void 0:o.url)&&(o==null?void 0:o.result)){const n={width:v.current.clientWidth,height:v.current.clientHeight},c=new lbAnnotation.PointCloudAnnotation({container:v.current,size:n,pcdPath:o.url,config:__spreadProps(__spreadValues({},w),{pointCloudPattern:t.pointCloudPattern}),checkMode:C,toolName:ToolUtils.getPointCloudToolList()});t.setTopViewInstance(c)}},[o]),React.useEffect(()=>{if(!a||!t.topViewInstance||!t.sideViewInstance)return;const{toolInstance:n}=t.topViewInstance;n.singleOn("lineCreated",(e,i)=>{const u=__spreadProps(__spreadValues({},e),{pointList:e.pointList.map(r=>lbUtils.PointCloudUtils.transferCanvas2World(r,a))});N(u),t.setSelectedIDs(L.includes(e.attribute)?"":e.id)}),n.singleOn("lineDeleted",e=>{q(e),T(e)}),n.singleOn("lineSelected",e=>{t.setSelectedIDs([e])}),n.singleOn("updateLineByDrag",e=>{var i;(i=d.topViewUpdateLine)==null||i.call(d,e,a)}),n.singleOn("pointCreated",(e,i)=>{d.topViewAddSphere({newPoint:e,size:a,trackConfigurable:w.trackConfigurable,zoom:i})}),n.singleOn("pointDeleted",e=>{k(e)}),n.singleOn("pointSelected",e=>{t.setSelectedIDs([e])}),n.singleOn("updatePointByDrag",(e,i)=>{var u;(u=d.topViewUpdatePoint)==null||u.call(d,e,a)}),n.singleOn("polygonCreated",(e,i)=>{if(n.pattern===EPolygonPattern.Normal||!(o==null?void 0:o.url)){const u=__spreadProps(__spreadValues({},e),{pointList:e.pointList.map(r=>lbUtils.PointCloudUtils.transferCanvas2World(r,a))});E(u),t.setSelectedIDs(L.includes(e.attribute)?"":e.id);return}d.topViewAddBox({polygon:e,size:a,imgList:l,trackConfigurable:w.trackConfigurable,zoom:i,intelligentFit:m})}),n.singleOn("deletedObject",({id:e})=>{q(e),A(e)}),n.singleOn("deleteSelectedIDs",()=>{t.setSelectedIDs([])}),n.singleOn("addSelectedIDs",e=>{t.addSelectedID(e)}),n.singleOn("setSelectedIDs",e=>{t.setSelectedIDs(e)}),n.singleOn("updatePolygonByDrag",e=>{var i;(i=d.topViewUpdateBox)==null||i.call(d,e,a)});const c=e=>{var i;const u=B(e);u&&t.syncAllViewPointCloudColor(u),t.polygonList.find(r=>r.id===e)&&((i=t.topViewInstance)==null||i.toolInstance.setPolygonValidAndRender(e,!0))};return n.on("validUpdate",c),()=>{n.unbind("validUpdate",c)}},[t,a,o,d,t.polygonList,t.lineList,(g=t.topViewInstance)==null?void 0:g.toolInstance]),React.useEffect(()=>{var n,c;if(!(a==null?void 0:a.width)||!t.topViewInstance)return;const e=(c=(n=w==null?void 0:w.attributeList)==null?void 0:n[0])==null?void 0:c.value;e&&t.topViewInstance.toolInstance.setDefaultAttribute(e),t.topViewInstance.initSize(a),t.topViewInstance.updatePolygonList(t.displayPointCloudList,t.polygonList),t.topViewInstance.updatePointList(t.displaySphereList);const{topViewInstance:{pointCloudInstance:i,toolInstance:u}}=t;u.singleOn("renderZoom",(r,p)=>{const{offsetX:V,offsetY:h}=TransferCanvas2WorldOffset(p,a,r);if(i.camera.zoom=r,p){const{x:O,y:S,z:b}=i.initCameraPosition;i.camera.position.set(O+h,S-V,b)}i.camera.updateProjectionMatrix(),i.render(),j(r),_(p,r,a),I({zoom:r,currentPos:p})}),u.singleOn("dragMove",({currentPos:r,zoom:p})=>{const{offsetX:V,offsetY:h}=TransferCanvas2WorldOffset(r,a,p);i.camera.zoom=p;const{x:O,y:S,z:b}=i.initCameraPosition;i.camera.position.set(O+h,S-V,b),i.render(),_(r,p,a),I({zoom:p,currentPos:r})})},[a,t.topViewInstance,(P=t.topViewInstance)==null?void 0:P.toolInstance]),React.useEffect(()=>{var n,c;(c=(n=t.topViewInstance)==null?void 0:n.pointCloudInstance)==null||c.applyZAxisPoints(y)},[y]),React.useEffect(()=>{d.topViewSelectedChanged({})},[t.selectedIDs]),React__default.default.createElement(PointCloudLayout.PointCloudContainer,{className:dom.getClassName("point-cloud-container","top-view"),title:R("TopView"),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:v},f==null?void 0:f(x)),React__default.default.createElement(PointCloudInfos.BoxInfos,{checkMode:C,config:w}),React__default.default.createElement(ZAxisSlider,{checkMode:C,zAxisLimit:y,setZAxisLimit:D}),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$1=require("../../views/MainView/toolFooter/index.js"),index$2=require("../../views/MainView/toolFooter/ZoomController/index.js"),icons=require("@ant-design/icons"),lbAnnotation=require("@labelbee/lb-annotation"),lbUtils=require("@labelbee/lb-utils"),React=require("react"),PointCloudContext=require("./PointCloudContext.js"),useRotate=require("./hooks/useRotate.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");function _interopDefaultLegacy(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}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=(t,n,s)=>n in t?__defProp(t,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[n]=s,__spreadValues=(t,n)=>{for(var s in n||(n={}))__hasOwnProp.call(n,s)&&__defNormalProp(t,s,n[s]);if(__getOwnPropSymbols)for(var s of __getOwnPropSymbols(n))__propIsEnum.call(n,s)&&__defNormalProp(t,s,n[s]);return t},__spreadProps=(t,n)=>__defProps(t,__getOwnPropDescs(n));const{EPolygonPattern}=lbAnnotation.cTool,TransferCanvas2WorldOffset=(t,n,s=1)=>{const{width:p,height:C}=n,m={x:t.x+p*s/2,y:t.y+C*s/2},g={x:n.width/2,y:n.height/2};return{offsetX:(g.x-m.x)/s,offsetY:-(g.y-m.y)/s}},TopViewToolbar=({currentData:t})=>{const{zoom:n,zoomIn:s,zoomOut:p,initialPosition:C}=useZoom.useZoom(),{selectNextBox:m,selectPrevBox:g}=useSingleBox.useSingleBox(),{updateRotate:P}=useRotate.useRotate({currentData:t}),x=2,I=()=>{P(-x)},f=()=>{P(x)},e=()=>{P(180)};return React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement("span",{onClick:f,className:dom.getClassName("point-cloud","rotate-reserve")}),React__default.default.createElement("span",{onClick:I,className:dom.getClassName("point-cloud","rotate")}),React__default.default.createElement("span",{onClick:e,className:dom.getClassName("point-cloud","rotate-180")}),React__default.default.createElement(index$1.FooterDivider,null),React__default.default.createElement(icons.UpSquareOutlined,{onClick:()=>{g()},className:dom.getClassName("point-cloud","prev")}),React__default.default.createElement(icons.DownSquareOutlined,{onClick:()=>{m()},className:dom.getClassName("point-cloud","next")}),React__default.default.createElement(index$1.FooterDivider,null),React__default.default.createElement(index$2.ZoomController,{initialPosition:C,zoomIn:s,zoomOut:p,zoom:n}))},ZAxisSlider=({setZAxisLimit:t,zAxisLimit:n,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:n,onAfterChange:p=>{t(p)}})),PointCloudTopView=({currentData:t,imgList:n,stepInfo:s,drawLayerSlot:p,checkMode:C,intelligentFit:m})=>{var g,P;const[x,I]=React.useState({zoom:1,currentPos:{x:0,y:0}}),f=React.useRef(null),e=React__default.default.useContext(PointCloudContext.PointCloudContext),a=useSize(f),w=index.jsonParser(s.config),{setZoom:q,syncTopviewToolZoom:_}=useZoom.useZoom(),{hideAttributes:E}=e,{addPolygon:L,deletePolygon:j}=usePolygon.usePolygon(),{deletePointCloudSphere:A}=useSphere.useSphere(),{deletePointCloudBox:N,changeValidByID:T}=useSingleBox.useSingleBox(),[y,k]=React.useState(10),{t:B}=reactI18next.useTranslation(),v=usePointCloudViews.usePointCloudViews();return React.useLayoutEffect(()=>{if(!e.topViewInstance&&f.current&&(t==null?void 0:t.url)&&(t==null?void 0:t.result)){const i={width:f.current.clientWidth,height:f.current.clientHeight},u=new lbAnnotation.PointCloudAnnotation({container:f.current,size:i,pcdPath:t.url,config:__spreadProps(__spreadValues({},w),{pointCloudPattern:e.pointCloudPattern}),checkMode:C,toolName:ToolUtils.getPointCloudToolList()});e.setTopViewInstance(u)}},[t]),React.useEffect(()=>{if(!a||!e.topViewInstance||!e.sideViewInstance)return;const{toolInstance:i}=e.topViewInstance;i.singleOn("dataUpdated",(o,l)=>{e.setSelectedIDs(l),e.setLineList(o)}),i.singleOn("pointCreated",(o,l)=>{v.topViewAddSphere({newPoint:o,size:a,trackConfigurable:w.trackConfigurable,zoom:l})}),i.singleOn("pointDeleted",o=>{A(o)}),i.singleOn("pointSelected",o=>{e.setSelectedIDs([o])}),i.singleOn("updatePointByDrag",(o,l)=>{var d;(d=v.topViewUpdatePoint)==null||d.call(v,o,a)}),i.singleOn("polygonCreated",(o,l)=>{if(i.pattern===EPolygonPattern.Normal||!(t==null?void 0:t.url)){const d=__spreadProps(__spreadValues({},o),{pointList:o.pointList.map(r=>lbUtils.PointCloudUtils.transferCanvas2World(r,a))});L(d),e.setSelectedIDs(E.includes(o.attribute)?"":o.id);return}v.topViewAddBox({polygon:o,size:a,imgList:n,trackConfigurable:w.trackConfigurable,zoom:l,intelligentFit:m})}),i.singleOn("deletedObject",({id:o})=>{N(o),j(o)}),i.singleOn("deleteSelectedIDs",()=>{e.setSelectedIDs([])}),i.singleOn("addSelectedIDs",o=>{e.addSelectedID(o)}),i.singleOn("setSelectedIDs",o=>{e.setSelectedIDs(o)}),i.singleOn("updatePolygonByDrag",o=>{var l;(l=v.topViewUpdateBox)==null||l.call(v,o,a)});const u=o=>{var l;const d=T(o);d&&e.syncAllViewPointCloudColor(d),e.polygonList.find(r=>r.id===o)&&((l=e.topViewInstance)==null||l.toolInstance.setPolygonValidAndRender(o,!0))};return i.on("validUpdate",u),()=>{i.unbind("validUpdate",u)}},[e,a,t,v,e.polygonList,e.lineList,(g=e.topViewInstance)==null?void 0:g.toolInstance]),React.useEffect(()=>{var i,u;if(!(a==null?void 0:a.width)||!e.topViewInstance)return;const o=(u=(i=w==null?void 0:w.attributeList)==null?void 0:i[0])==null?void 0:u.value;o&&e.topViewInstance.toolInstance.setDefaultAttribute(o),e.topViewInstance.initSize(a),e.topViewInstance.updatePolygonList(e.displayPointCloudList,e.polygonList),e.topViewInstance.updatePointList(e.displaySphereList),e.topViewInstance.updateLineList(e.displayLineList);const{topViewInstance:{pointCloudInstance:l,toolInstance:d}}=e;d.singleOn("renderZoom",(r,c)=>{const{offsetX:V,offsetY:h}=TransferCanvas2WorldOffset(c,a,r);if(l.camera.zoom=r,c){const{x:S,y:b,z:O}=l.initCameraPosition;l.camera.position.set(S+h,b-V,O)}l.camera.updateProjectionMatrix(),l.render(),q(r),_(c,r,a),I({zoom:r,currentPos:c})}),d.singleOn("dragMove",({currentPos:r,zoom:c})=>{const{offsetX:V,offsetY:h}=TransferCanvas2WorldOffset(r,a,c);l.camera.zoom=c;const{x:S,y:b,z:O}=l.initCameraPosition;l.camera.position.set(S+h,b-V,O),l.render(),_(r,c,a),I({zoom:c,currentPos:r})})},[a,e.topViewInstance,(P=e.topViewInstance)==null?void 0:P.toolInstance]),React.useEffect(()=>{var i,u;(u=(i=e.topViewInstance)==null?void 0:i.pointCloudInstance)==null||u.applyZAxisPoints(y)},[y]),React.useEffect(()=>{v.topViewSelectedChanged({})},[e.selectedIDs]),React__default.default.createElement(PointCloudLayout.PointCloudContainer,{className:dom.getClassName("point-cloud-container","top-view"),title:B("TopView"),toolbar:React__default.default.createElement(TopViewToolbar,{currentData:t})},React__default.default.createElement("div",{style:{position:"relative",flex:1}},React__default.default.createElement("div",{style:{width:"100%",height:"100%"},ref:f},p==null?void 0:p(x)),React__default.default.createElement(PointCloudInfos.BoxInfos,{checkMode:C,config:w}),React__default.default.createElement(ZAxisSlider,{checkMode:C,zAxisLimit:y,setZAxisLimit:k}),React__default.default.createElement(PointCloudInfos.PointCloudValidity,null)))};var PointCloudTopView$1=reactRedux.connect(map.a2MapStateToProps,null,null,{context:ctx.LabelBeeContext})(PointCloudTopView);module.exports=PointCloudTopView$1;
@@ -17,6 +17,7 @@ export interface IPointCloudContext extends IPointCloudContextInstances {
17
17
  pointCloudSphereList: IPointCloudSphereList;
18
18
  displayPointCloudList: IPointCloudBoxList;
19
19
  displaySphereList: IPointCloudSphereList;
20
+ displayLineList: ILine[];
20
21
  selectedIDs: string[];
21
22
  setSelectedIDs: (ids?: string[] | string) => void;
22
23
  valid: boolean;
@@ -1 +1 @@
1
- import M,{useState as o,useRef as lt,useMemo as N,useEffect as dt}from"react";import{ActionsHistory as T,EToolName as j}from"@labelbee/lb-annotation";const z=M.createContext({pointCloudBoxList:[],pointCloudSphereList:[],displayPointCloudList:[],displaySphereList:[],polygonList:[],lineList:[],selectedID:"",selectedIDs:[],valid:!0,setSelectedIDs:()=>{},setPointCloudResult:()=>{},setPointCloudSphereList:()=>{},setPointCloudValid:()=>{},setTopViewInstance:()=>{},setSideViewInstance:()=>{},setBackViewInstance:()=>{},setMainViewInstance:()=>{},addSelectedID:()=>{},selectedAllBoxes:()=>{},addPointCloudBox:()=>[],addPointCloudSphere:()=>[],setPolygonList:()=>{},setLineList:()=>{},zoom:1,setZoom:()=>{},history:new T,hideAttributes:[],setHideAttributes:()=>{},toggleAttributesVisible:()=>{},reRender:()=>{},setAttrPanelLayout:()=>{},attrPanelLayout:"",syncAllViewPointCloudColor:()=>{},defaultAttribute:"",setDefaultAttribute:()=>{},pointCloudPattern:j.Rect,setPointCloudPattern:()=>{},selectSpecAttr:()=>{}}),rt=({children:F})=>{const[d,h]=o([]),[a,m]=o([]),[f,Z]=o([]),[L,q]=o([]),[r,A]=o([]),[y,G]=o(!0),[w,J]=o(1),[i,K]=o(),[I,Q]=o(),[V,U]=o(),[n,W]=o(),[g,X]=o(""),[x,Y]=o(j.Rect),$=lt(new T).current,[l,v]=o([]),[B,_]=o(""),R=N(()=>r.length===1?r[0]:"",[r]),D=N(()=>{const c=d.find(t=>t.id===R),S=t=>{const e=d.concat(t);return h(e),e},b=t=>{const e=a.concat(t);return m(e),e},P=t=>{G(t!==!1)},s=t=>{t===void 0&&A([]),typeof t=="string"&&A([t]),Array.isArray(t)&&A(Array.from(new Set(t)))},et=t=>{r.includes(t)?s(r.filter(e=>e!==t)):s([...r,t])},ot=()=>{s(d.map(t=>t.id))},nt=t=>{s(d.filter(e=>e.attribute===t).map(e=>e.id))},E=d.filter(t=>!l.includes(t.attribute)),H=a.filter(t=>!l.includes(t.attribute)),it=t=>{if(l.includes(t))v(l.filter(e=>e!==t));else{const e=l.concat(t);v(e)}},st=(t=E,e=f,C=H,p=L)=>{d.forEach(u=>{n==null||n.removeObjectByName(u.id)}),a.forEach(u=>{n==null||n.removeObjectByName(u.id)}),i==null||i.updatePolygonList(t,e),i==null||i.updatePointList(C),i==null||i.updateLineList(p),n==null||n.generateBoxes(t),n==null||n.generateSpheres(C),O(t)},O=t=>{const e=n==null?void 0:n.highlightOriginPointCloud(t);return new Promise(C=>{e==null||e.then(p=>{[i].forEach(u=>{var k;p&&((k=u==null?void 0:u.pointCloudInstance)==null||k.updateColor(p),C({color:p}))})})})};return{selectedID:R,pointCloudBoxList:d,pointCloudSphereList:a,displayPointCloudList:E,displaySphereList:H,selectedIDs:r,setPointCloudResult:h,setSelectedIDs:s,addPointCloudBox:S,addPointCloudSphere:b,setPointCloudSphereList:m,valid:y,selectedPointCloudBox:c,setPointCloudValid:P,addSelectedID:et,selectedAllBoxes:ot,topViewInstance:i,setTopViewInstance:K,sideViewInstance:I,setSideViewInstance:Q,backViewInstance:V,setBackViewInstance:U,mainViewInstance:n,setMainViewInstance:W,polygonList:f,setPolygonList:Z,lineList:L,setLineList:q,zoom:w,setZoom:J,history:$,toggleAttributesVisible:it,hideAttributes:l,setHideAttributes:v,reRender:st,attrPanelLayout:B,setAttrPanelLayout:_,syncAllViewPointCloudColor:O,defaultAttribute:g,setDefaultAttribute:X,pointCloudPattern:x,setPointCloudPattern:Y,selectSpecAttr:nt}},[y,r,d,a,f,L,i,I,V,n,w,l,B,g,x]),tt=()=>{const c=d.filter(s=>l.includes(s.attribute)),{setSelectedIDs:S,reRender:b}=D,P=c.map(s=>s.id);P.length>0&&S(r.filter(s=>!P.includes(s))),b()};return dt(()=>{var c;tt(),(c=i==null?void 0:i.pointCloud2dOperation)==null||c.setHiddenAttributes(l)},[l]),M.createElement(z.Provider,{value:D},F)};export{z as PointCloudContext,rt as PointCloudProvider};
1
+ import N,{useState as o,useRef as dt,useMemo as T,useEffect as rt}from"react";import{ActionsHistory as j,EToolName as z}from"@labelbee/lb-annotation";const F=N.createContext({pointCloudBoxList:[],pointCloudSphereList:[],displayPointCloudList:[],displaySphereList:[],displayLineList:[],polygonList:[],lineList:[],selectedID:"",selectedIDs:[],valid:!0,setSelectedIDs:()=>{},setPointCloudResult:()=>{},setPointCloudSphereList:()=>{},setPointCloudValid:()=>{},setTopViewInstance:()=>{},setSideViewInstance:()=>{},setBackViewInstance:()=>{},setMainViewInstance:()=>{},addSelectedID:()=>{},selectedAllBoxes:()=>{},addPointCloudBox:()=>[],addPointCloudSphere:()=>[],setPolygonList:()=>{},setLineList:()=>{},zoom:1,setZoom:()=>{},history:new j,hideAttributes:[],setHideAttributes:()=>{},toggleAttributesVisible:()=>{},reRender:()=>{},setAttrPanelLayout:()=>{},attrPanelLayout:"",syncAllViewPointCloudColor:()=>{},defaultAttribute:"",setDefaultAttribute:()=>{},pointCloudPattern:z.Rect,setPointCloudPattern:()=>{},selectSpecAttr:()=>{}}),ct=({children:Z})=>{const[d,S]=o([]),[a,h]=o([]),[C,q]=o([]),[L,G]=o([]),[r,b]=o([]),[m,J]=o(!0),[w,K]=o(1),[i,Q]=o(),[I,U]=o(),[V,W]=o(),[n,X]=o(),[g,Y]=o(""),[x,$]=o(z.Rect),_=dt(new j).current,[s,A]=o([]),[B,tt]=o(""),R=T(()=>r.length===1?r[0]:"",[r]),D=T(()=>{const c=d.find(t=>t.id===R),v=t=>{const e=d.concat(t);return S(e),e},y=t=>{const e=a.concat(t);return h(e),e},P=t=>{J(t!==!1)},l=t=>{t===void 0&&b([]),typeof t=="string"&&b([t]),Array.isArray(t)&&b(Array.from(new Set(t)))},ot=t=>{r.includes(t)?l(r.filter(e=>e!==t)):l([...r,t])},nt=()=>{l(d.map(t=>t.id))},it=t=>{l(d.filter(e=>e.attribute===t).map(e=>e.id))},E=d.filter(t=>!s.includes(t.attribute)),H=a.filter(t=>!s.includes(t.attribute)),O=L.filter(t=>t.attribute&&!s.includes(t.attribute)),st=t=>{if(s.includes(t))A(s.filter(e=>e!==t));else{const e=s.concat(t);A(e)}},lt=(t=E,e=C,f=H,p=O)=>{d.forEach(u=>{n==null||n.removeObjectByName(u.id)}),a.forEach(u=>{n==null||n.removeObjectByName(u.id)}),i==null||i.updatePolygonList(t,e),i==null||i.updatePointList(f),i==null||i.updateLineList(p),n==null||n.generateBoxes(t),n==null||n.generateSpheres(f),k(t)},k=t=>{const e=n==null?void 0:n.highlightOriginPointCloud(t);return new Promise(f=>{e==null||e.then(p=>{[i].forEach(u=>{var M;p&&((M=u==null?void 0:u.pointCloudInstance)==null||M.updateColor(p),f({color:p}))})})})};return{selectedID:R,pointCloudBoxList:d,pointCloudSphereList:a,displayPointCloudList:E,displaySphereList:H,displayLineList:O,selectedIDs:r,setPointCloudResult:S,setSelectedIDs:l,addPointCloudBox:v,addPointCloudSphere:y,setPointCloudSphereList:h,valid:m,selectedPointCloudBox:c,setPointCloudValid:P,addSelectedID:ot,selectedAllBoxes:nt,topViewInstance:i,setTopViewInstance:Q,sideViewInstance:I,setSideViewInstance:U,backViewInstance:V,setBackViewInstance:W,mainViewInstance:n,setMainViewInstance:X,polygonList:C,setPolygonList:q,lineList:L,setLineList:G,zoom:w,setZoom:K,history:_,toggleAttributesVisible:st,hideAttributes:s,setHideAttributes:A,reRender:lt,attrPanelLayout:B,setAttrPanelLayout:tt,syncAllViewPointCloudColor:k,defaultAttribute:g,setDefaultAttribute:Y,pointCloudPattern:x,setPointCloudPattern:$,selectSpecAttr:it}},[m,r,d,a,C,L,i,I,V,n,w,s,B,g,x]),et=()=>{const c=d.filter(l=>s.includes(l.attribute)),{setSelectedIDs:v,reRender:y}=D,P=c.map(l=>l.id);P.length>0&&v(r.filter(l=>!P.includes(l))),y()};return rt(()=>{var c;et(),(c=i==null?void 0:i.pointCloud2dOperation)==null||c.setHiddenAttributes(s)},[s]),N.createElement(F.Provider,{value:D},Z)};export{F as PointCloudContext,ct as PointCloudProvider};
@@ -1 +1 @@
1
- import{getClassName as x}from"../../utils/dom.js";import{FooterDivider as D}from"../../views/MainView/toolFooter/index.js";import{ZoomController as Q}from"../../views/MainView/toolFooter/ZoomController/index.js";import{UpSquareOutlined as ee,DownSquareOutlined as te}from"@ant-design/icons";import{PointCloudAnnotation as oe,cTool as ne}from"@labelbee/lb-annotation";import{PointCloudUtils as N}from"@labelbee/lb-utils";import r,{useState as U,useRef as ie,useLayoutEffect as se,useEffect as h}from"react";import{PointCloudContext as le}from"./PointCloudContext.js";import{useRotate as re}from"./hooks/useRotate.js";import{useSingleBox as Z}from"./hooks/useSingleBox.js";import{PointCloudContainer as ae}from"./PointCloudLayout.js";import{BoxInfos as ce,PointCloudValidity as de}from"./PointCloudInfos.js";import{usePolygon as pe}from"./hooks/usePolygon.js";import{useLine as ue}from"./hooks/useLine.js";import{useSphere as me}from"./hooks/useSphere.js";import{useZoom as R}from"./hooks/useZoom.js";import{Slider as fe}from"antd";import{a2MapStateToProps as we}from"../../store/annotation/map.js";import{connect as ge}from"react-redux";import{usePointCloudViews as ve}from"./hooks/usePointCloudViews.js";import Ce from"../../hooks/useSize.js";import{useTranslation as Pe}from"react-i18next";import{LabelBeeContext as Ie}from"../../store/ctx.js";import{jsonParser as xe}from"../../utils/index.js";import ye from"../../utils/ToolUtils.js";var Ve=Object.defineProperty,he=Object.defineProperties,Oe=Object.getOwnPropertyDescriptors,z=Object.getOwnPropertySymbols,Se=Object.prototype.hasOwnProperty,be=Object.prototype.propertyIsEnumerable,F=(o,s,l)=>s in o?Ve(o,s,{enumerable:!0,configurable:!0,writable:!0,value:l}):o[s]=l,E=(o,s)=>{for(var l in s||(s={}))Se.call(s,l)&&F(o,l,s[l]);if(z)for(var l of z(s))be.call(s,l)&&F(o,l,s[l]);return o},T=(o,s)=>he(o,Oe(s));const{EPolygonPattern:_e}=ne,W=(o,s,l=1)=>{const{width:f,height:g}=s,C={x:o.x+f*l/2,y:o.y+g*l/2},v={x:s.width/2,y:s.height/2};return{offsetX:(v.x-C.x)/l,offsetY:-(v.y-C.y)/l}},Le=({currentData:o})=>{const{zoom:s,zoomIn:l,zoomOut:f,initialPosition:g}=R(),{selectNextBox:C,selectPrevBox:v}=Z(),{updateRotate:P}=re({currentData:o}),y=2,V=()=>{P(-y)},w=()=>{P(y)},t=()=>{P(180)};return r.createElement(r.Fragment,null,r.createElement("span",{onClick:w,className:x("point-cloud","rotate-reserve")}),r.createElement("span",{onClick:V,className:x("point-cloud","rotate")}),r.createElement("span",{onClick:t,className:x("point-cloud","rotate-180")}),r.createElement(D,null),r.createElement(ee,{onClick:()=>{v()},className:x("point-cloud","prev")}),r.createElement(te,{onClick:()=>{C()},className:x("point-cloud","next")}),r.createElement(D,null),r.createElement(Q,{initialPosition:g,zoomIn:l,zoomOut:f,zoom:s}))},je=({setZAxisLimit:o,zAxisLimit:s,checkMode:l})=>l?null:r.createElement("div",{style:{position:"absolute",top:128,right:8,height:"50%",zIndex:20}},r.createElement(fe,{vertical:!0,step:.5,max:10,min:.5,defaultValue:s,onAfterChange:f=>{o(f)}})),Ee=({currentData:o,imgList:s,stepInfo:l,drawLayerSlot:f,checkMode:g,intelligentFit:C})=>{var v,P;const[y,V]=U({zoom:1,currentPos:{x:0,y:0}}),w=ie(null),t=r.useContext(le),a=Ce(w),I=xe(l.config),{setZoom:M,syncTopviewToolZoom:k}=R(),{hideAttributes:A}=t,{addPolygon:X,deletePolygon:Y}=pe(),{addLine:q,deleteLine:H}=ue(),{deletePointCloudSphere:$}=me(),{deletePointCloudBox:B,changeValidByID:G}=Z(),[O,J]=U(10),{t:K}=Pe(),p=ve();return se(()=>{if(!t.topViewInstance&&w.current&&(o==null?void 0:o.url)&&(o==null?void 0:o.result)){const n={width:w.current.clientWidth,height:w.current.clientHeight},u=new oe({container:w.current,size:n,pcdPath:o.url,config:T(E({},I),{pointCloudPattern:t.pointCloudPattern}),checkMode:g,toolName:ye.getPointCloudToolList()});t.setTopViewInstance(u)}},[o]),h(()=>{if(!a||!t.topViewInstance||!t.sideViewInstance)return;const{toolInstance:n}=t.topViewInstance;n.singleOn("lineCreated",(e,i)=>{const d=T(E({},e),{pointList:e.pointList.map(c=>N.transferCanvas2World(c,a))});q(d),t.setSelectedIDs(A.includes(e.attribute)?"":e.id)}),n.singleOn("lineDeleted",e=>{B(e),H(e)}),n.singleOn("lineSelected",e=>{t.setSelectedIDs([e])}),n.singleOn("updateLineByDrag",e=>{var i;(i=p.topViewUpdateLine)==null||i.call(p,e,a)}),n.singleOn("pointCreated",(e,i)=>{p.topViewAddSphere({newPoint:e,size:a,trackConfigurable:I.trackConfigurable,zoom:i})}),n.singleOn("pointDeleted",e=>{$(e)}),n.singleOn("pointSelected",e=>{t.setSelectedIDs([e])}),n.singleOn("updatePointByDrag",(e,i)=>{var d;(d=p.topViewUpdatePoint)==null||d.call(p,e,a)}),n.singleOn("polygonCreated",(e,i)=>{if(n.pattern===_e.Normal||!(o==null?void 0:o.url)){const d=T(E({},e),{pointList:e.pointList.map(c=>N.transferCanvas2World(c,a))});X(d),t.setSelectedIDs(A.includes(e.attribute)?"":e.id);return}p.topViewAddBox({polygon:e,size:a,imgList:s,trackConfigurable:I.trackConfigurable,zoom:i,intelligentFit:C})}),n.singleOn("deletedObject",({id:e})=>{B(e),Y(e)}),n.singleOn("deleteSelectedIDs",()=>{t.setSelectedIDs([])}),n.singleOn("addSelectedIDs",e=>{t.addSelectedID(e)}),n.singleOn("setSelectedIDs",e=>{t.setSelectedIDs(e)}),n.singleOn("updatePolygonByDrag",e=>{var i;(i=p.topViewUpdateBox)==null||i.call(p,e,a)});const u=e=>{var i;const d=G(e);d&&t.syncAllViewPointCloudColor(d),t.polygonList.find(c=>c.id===e)&&((i=t.topViewInstance)==null||i.toolInstance.setPolygonValidAndRender(e,!0))};return n.on("validUpdate",u),()=>{n.unbind("validUpdate",u)}},[t,a,o,p,t.polygonList,t.lineList,(v=t.topViewInstance)==null?void 0:v.toolInstance]),h(()=>{var n,u;if(!(a==null?void 0:a.width)||!t.topViewInstance)return;const e=(u=(n=I==null?void 0:I.attributeList)==null?void 0:n[0])==null?void 0:u.value;e&&t.topViewInstance.toolInstance.setDefaultAttribute(e),t.topViewInstance.initSize(a),t.topViewInstance.updatePolygonList(t.displayPointCloudList,t.polygonList),t.topViewInstance.updatePointList(t.displaySphereList);const{topViewInstance:{pointCloudInstance:i,toolInstance:d}}=t;d.singleOn("renderZoom",(c,m)=>{const{offsetX:S,offsetY:b}=W(m,a,c);if(i.camera.zoom=c,m){const{x:_,y:L,z:j}=i.initCameraPosition;i.camera.position.set(_+b,L-S,j)}i.camera.updateProjectionMatrix(),i.render(),M(c),k(m,c,a),V({zoom:c,currentPos:m})}),d.singleOn("dragMove",({currentPos:c,zoom:m})=>{const{offsetX:S,offsetY:b}=W(c,a,m);i.camera.zoom=m;const{x:_,y:L,z:j}=i.initCameraPosition;i.camera.position.set(_+b,L-S,j),i.render(),k(c,m,a),V({zoom:m,currentPos:c})})},[a,t.topViewInstance,(P=t.topViewInstance)==null?void 0:P.toolInstance]),h(()=>{var n,u;(u=(n=t.topViewInstance)==null?void 0:n.pointCloudInstance)==null||u.applyZAxisPoints(O)},[O]),h(()=>{p.topViewSelectedChanged({})},[t.selectedIDs]),r.createElement(ae,{className:x("point-cloud-container","top-view"),title:K("TopView"),toolbar:r.createElement(Le,{currentData:o})},r.createElement("div",{style:{position:"relative",flex:1}},r.createElement("div",{style:{width:"100%",height:"100%"},ref:w},f==null?void 0:f(y)),r.createElement(ce,{checkMode:g,config:I}),r.createElement(je,{checkMode:g,zAxisLimit:O,setZAxisLimit:J}),r.createElement(de,null)))};var Te=ge(we,null,null,{context:Ie})(Ee);export{Te as default};
1
+ import{getClassName as x}from"../../utils/dom.js";import{FooterDivider as T}from"../../views/MainView/toolFooter/index.js";import{ZoomController as G}from"../../views/MainView/toolFooter/ZoomController/index.js";import{UpSquareOutlined as J,DownSquareOutlined as K}from"@ant-design/icons";import{PointCloudAnnotation as Q,cTool as ee}from"@labelbee/lb-annotation";import{PointCloudUtils as te}from"@labelbee/lb-utils";import r,{useState as A,useRef as oe,useLayoutEffect as ne,useEffect as h}from"react";import{PointCloudContext as ie}from"./PointCloudContext.js";import{useRotate as se}from"./hooks/useRotate.js";import{useSingleBox as k}from"./hooks/useSingleBox.js";import{PointCloudContainer as le}from"./PointCloudLayout.js";import{BoxInfos as re,PointCloudValidity as ae}from"./PointCloudInfos.js";import{usePolygon as ce}from"./hooks/usePolygon.js";import{useSphere as de}from"./hooks/useSphere.js";import{useZoom as B}from"./hooks/useZoom.js";import{Slider as pe}from"antd";import{a2MapStateToProps as ue}from"../../store/annotation/map.js";import{connect as me}from"react-redux";import{usePointCloudViews as fe}from"./hooks/usePointCloudViews.js";import we from"../../hooks/useSize.js";import{useTranslation as ve}from"react-i18next";import{LabelBeeContext as Ce}from"../../store/ctx.js";import{jsonParser as Pe}from"../../utils/index.js";import ge from"../../utils/ToolUtils.js";var Ie=Object.defineProperty,xe=Object.defineProperties,ye=Object.getOwnPropertyDescriptors,N=Object.getOwnPropertySymbols,Ve=Object.prototype.hasOwnProperty,he=Object.prototype.propertyIsEnumerable,D=(o,n,l)=>n in o?Ie(o,n,{enumerable:!0,configurable:!0,writable:!0,value:l}):o[n]=l,U=(o,n)=>{for(var l in n||(n={}))Ve.call(n,l)&&D(o,l,n[l]);if(N)for(var l of N(n))he.call(n,l)&&D(o,l,n[l]);return o},Z=(o,n)=>xe(o,ye(n));const{EPolygonPattern:Oe}=ee,R=(o,n,l=1)=>{const{width:m,height:v}=n,P={x:o.x+m*l/2,y:o.y+v*l/2},C={x:n.width/2,y:n.height/2};return{offsetX:(C.x-P.x)/l,offsetY:-(C.y-P.y)/l}},be=({currentData:o})=>{const{zoom:n,zoomIn:l,zoomOut:m,initialPosition:v}=B(),{selectNextBox:P,selectPrevBox:C}=k(),{updateRotate:g}=se({currentData:o}),y=2,V=()=>{g(-y)},f=()=>{g(y)},e=()=>{g(180)};return r.createElement(r.Fragment,null,r.createElement("span",{onClick:f,className:x("point-cloud","rotate-reserve")}),r.createElement("span",{onClick:V,className:x("point-cloud","rotate")}),r.createElement("span",{onClick:e,className:x("point-cloud","rotate-180")}),r.createElement(T,null),r.createElement(J,{onClick:()=>{C()},className:x("point-cloud","prev")}),r.createElement(K,{onClick:()=>{P()},className:x("point-cloud","next")}),r.createElement(T,null),r.createElement(G,{initialPosition:v,zoomIn:l,zoomOut:m,zoom:n}))},Se=({setZAxisLimit:o,zAxisLimit:n,checkMode:l})=>l?null:r.createElement("div",{style:{position:"absolute",top:128,right:8,height:"50%",zIndex:20}},r.createElement(pe,{vertical:!0,step:.5,max:10,min:.5,defaultValue:n,onAfterChange:m=>{o(m)}})),_e=({currentData:o,imgList:n,stepInfo:l,drawLayerSlot:m,checkMode:v,intelligentFit:P})=>{var C,g;const[y,V]=A({zoom:1,currentPos:{x:0,y:0}}),f=oe(null),e=r.useContext(ie),a=we(f),I=Pe(l.config),{setZoom:z,syncTopviewToolZoom:E}=B(),{hideAttributes:F}=e,{addPolygon:M,deletePolygon:W}=ce(),{deletePointCloudSphere:X}=de(),{deletePointCloudBox:Y,changeValidByID:q}=k(),[O,H]=A(10),{t:$}=ve(),w=fe();return ne(()=>{if(!e.topViewInstance&&f.current&&(o==null?void 0:o.url)&&(o==null?void 0:o.result)){const i={width:f.current.clientWidth,height:f.current.clientHeight},d=new Q({container:f.current,size:i,pcdPath:o.url,config:Z(U({},I),{pointCloudPattern:e.pointCloudPattern}),checkMode:v,toolName:ge.getPointCloudToolList()});e.setTopViewInstance(d)}},[o]),h(()=>{if(!a||!e.topViewInstance||!e.sideViewInstance)return;const{toolInstance:i}=e.topViewInstance;i.singleOn("dataUpdated",(t,s)=>{e.setSelectedIDs(s),e.setLineList(t)}),i.singleOn("pointCreated",(t,s)=>{w.topViewAddSphere({newPoint:t,size:a,trackConfigurable:I.trackConfigurable,zoom:s})}),i.singleOn("pointDeleted",t=>{X(t)}),i.singleOn("pointSelected",t=>{e.setSelectedIDs([t])}),i.singleOn("updatePointByDrag",(t,s)=>{var p;(p=w.topViewUpdatePoint)==null||p.call(w,t,a)}),i.singleOn("polygonCreated",(t,s)=>{if(i.pattern===Oe.Normal||!(o==null?void 0:o.url)){const p=Z(U({},t),{pointList:t.pointList.map(c=>te.transferCanvas2World(c,a))});M(p),e.setSelectedIDs(F.includes(t.attribute)?"":t.id);return}w.topViewAddBox({polygon:t,size:a,imgList:n,trackConfigurable:I.trackConfigurable,zoom:s,intelligentFit:P})}),i.singleOn("deletedObject",({id:t})=>{Y(t),W(t)}),i.singleOn("deleteSelectedIDs",()=>{e.setSelectedIDs([])}),i.singleOn("addSelectedIDs",t=>{e.addSelectedID(t)}),i.singleOn("setSelectedIDs",t=>{e.setSelectedIDs(t)}),i.singleOn("updatePolygonByDrag",t=>{var s;(s=w.topViewUpdateBox)==null||s.call(w,t,a)});const d=t=>{var s;const p=q(t);p&&e.syncAllViewPointCloudColor(p),e.polygonList.find(c=>c.id===t)&&((s=e.topViewInstance)==null||s.toolInstance.setPolygonValidAndRender(t,!0))};return i.on("validUpdate",d),()=>{i.unbind("validUpdate",d)}},[e,a,o,w,e.polygonList,e.lineList,(C=e.topViewInstance)==null?void 0:C.toolInstance]),h(()=>{var i,d;if(!(a==null?void 0:a.width)||!e.topViewInstance)return;const t=(d=(i=I==null?void 0:I.attributeList)==null?void 0:i[0])==null?void 0:d.value;t&&e.topViewInstance.toolInstance.setDefaultAttribute(t),e.topViewInstance.initSize(a),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,u)=>{const{offsetX:b,offsetY:S}=R(u,a,c);if(s.camera.zoom=c,u){const{x:_,y:j,z:L}=s.initCameraPosition;s.camera.position.set(_+S,j-b,L)}s.camera.updateProjectionMatrix(),s.render(),z(c),E(u,c,a),V({zoom:c,currentPos:u})}),p.singleOn("dragMove",({currentPos:c,zoom:u})=>{const{offsetX:b,offsetY:S}=R(c,a,u);s.camera.zoom=u;const{x:_,y:j,z:L}=s.initCameraPosition;s.camera.position.set(_+S,j-b,L),s.render(),E(c,u,a),V({zoom:u,currentPos:c})})},[a,e.topViewInstance,(g=e.topViewInstance)==null?void 0:g.toolInstance]),h(()=>{var i,d;(d=(i=e.topViewInstance)==null?void 0:i.pointCloudInstance)==null||d.applyZAxisPoints(O)},[O]),h(()=>{w.topViewSelectedChanged({})},[e.selectedIDs]),r.createElement(le,{className:x("point-cloud-container","top-view"),title:$("TopView"),toolbar:r.createElement(be,{currentData:o})},r.createElement("div",{style:{position:"relative",flex:1}},r.createElement("div",{style:{width:"100%",height:"100%"},ref:f},m==null?void 0:m(y)),r.createElement(re,{checkMode:v,config:I}),r.createElement(Se,{checkMode:v,zAxisLimit:O,setZAxisLimit:H}),r.createElement(ae,null)))};var je=me(ue,null,null,{context:Ce})(_e);export{je as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@labelbee/lb-components",
3
- "version": "1.10.0-alpha.10",
3
+ "version": "1.10.0-alpha.11",
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.14.0-alpha.10",
46
+ "@labelbee/lb-annotation": "1.14.0-alpha.11",
47
47
  "@labelbee/lb-utils": "1.7.0-alpha.8",
48
48
  "ahooks": "^3.4.0",
49
49
  "classnames": "^2.3.0",
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var React=require("react"),PointCloudContext=require("../PointCloudContext.js"),useHistory=require("./useHistory.js"),__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(t,e,r)=>e in t?__defProp(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,__spreadValues=(t,e)=>{for(var r in e||(e={}))__hasOwnProp.call(e,r)&&__defNormalProp(t,r,e[r]);if(__getOwnPropSymbols)for(var r of __getOwnPropSymbols(e))__propIsEnum.call(e,r)&&__defNormalProp(t,r,e[r]);return t},__spreadProps=(t,e)=>__defProps(t,__getOwnPropDescs(e));const useLine=()=>{const{lineList:t,setLineList:e,selectedID:r}=React.useContext(PointCloudContext.PointCloudContext),{addHistory:a,pushHistoryWithList:d}=useHistory.useHistory(),s=t.find(i=>i.id===r);return{addLine:i=>{e(t.concat(i)),a({newLine:i})},deleteLine:i=>{const o=t.filter(n=>n.id!==i).map(n=>__spreadValues({},n));e(o),d({lineList:o})},selectedLine:s,updateSelectedLine:i=>{s&&e(t.map(o=>o.id===r?i:o))},updateLineValidByID:i=>{t.find(n=>n.id===i)&&e(t.map(n=>n.id===i?__spreadProps(__spreadValues({},n),{valid:!n.valid}):n))}}};exports.useLine=useLine;
@@ -1,12 +0,0 @@
1
- import { ILine } from '@labelbee/lb-utils';
2
- /**
3
- * PointCloud line Hook
4
- * @returns
5
- */
6
- export declare const useLine: () => {
7
- addLine: (line: ILine) => void;
8
- deleteLine: (id: string) => void;
9
- selectedLine: ILine | undefined;
10
- updateSelectedLine: (line: ILine) => void;
11
- updateLineValidByID: (id: string) => void;
12
- };
@@ -1 +0,0 @@
1
- import{useContext as u}from"react";import{PointCloudContext as f}from"../PointCloudContext.js";import{useHistory as L}from"./useHistory.js";var _=Object.defineProperty,m=Object.defineProperties,P=Object.getOwnPropertyDescriptors,a=Object.getOwnPropertySymbols,y=Object.prototype.hasOwnProperty,O=Object.prototype.propertyIsEnumerable,d=(t,e,r)=>e in t?_(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,p=(t,e)=>{for(var r in e||(e={}))y.call(e,r)&&d(t,r,e[r]);if(a)for(var r of a(e))O.call(e,r)&&d(t,r,e[r]);return t},w=(t,e)=>m(t,P(e));const v=()=>{const{lineList:t,setLineList:e,selectedID:r}=u(f),{addHistory:c,pushHistoryWithList:l}=L(),s=t.find(i=>i.id===r);return{addLine:i=>{e(t.concat(i)),c({newLine:i})},deleteLine:i=>{const o=t.filter(n=>n.id!==i).map(n=>p({},n));e(o),l({lineList:o})},selectedLine:s,updateSelectedLine:i=>{s&&e(t.map(o=>o.id===r?i:o))},updateLineValidByID:i=>{t.find(n=>n.id===i)&&e(t.map(n=>n.id===i?w(p({},n),{valid:!n.valid}):n))}}};export{v as useLine};