@labelbee/lb-components 1.9.0-alpha.3 → 1.9.0-alpha.5
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.
- package/dist/components/pointCloudView/PointCloudContext.js +1 -1
- package/dist/components/pointCloudView/PointCloudListener.js +1 -1
- package/dist/components/pointCloudView/hooks/usePointCloudViews.js +1 -1
- package/dist/index.css +1 -0
- package/dist/store/annotation/reducer.js +1 -1
- package/dist/types/components/pointCloudView/PointCloudContext.d.ts +1 -0
- package/dist/types/components/pointCloudView/hooks/usePointCloudViews.d.ts +1 -1
- package/dist/views/MainView/toolFooter/AnnotatedAttributes/index.js +1 -1
- package/es/components/pointCloudView/PointCloudContext.js +1 -1
- package/es/components/pointCloudView/PointCloudContext.js.map +1 -1
- package/es/components/pointCloudView/PointCloudListener.js +1 -1
- package/es/components/pointCloudView/PointCloudListener.js.map +1 -1
- package/es/components/pointCloudView/hooks/usePointCloudViews.js +1 -1
- package/es/components/pointCloudView/hooks/usePointCloudViews.js.map +1 -1
- package/es/index.css +1 -0
- package/es/store/annotation/reducer.js +1 -1
- package/es/store/annotation/reducer.js.map +1 -1
- package/es/views/MainView/toolFooter/AnnotatedAttributes/index.js +1 -1
- package/es/views/MainView/toolFooter/AnnotatedAttributes/index.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var React=require("react"),lbAnnotation=require("@labelbee/lb-annotation");function _interopDefaultLegacy(
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var React=require("react"),lbAnnotation=require("@labelbee/lb-annotation");function _interopDefaultLegacy(a){return a&&typeof a=="object"&&"default"in a?a:{default:a}}var React__default=_interopDefaultLegacy(React);const PointCloudContext=React__default.default.createContext({pointCloudBoxList:[],displayPointCloudList:[],polygonList:[],selectedID:"",selectedIDs:[],valid:!0,setSelectedIDs:()=>{},setPointCloudResult:()=>{},setPointCloudValid:()=>{},setTopViewInstance:()=>{},setSideViewInstance:()=>{},setBackViewInstance:()=>{},setMainViewInstance:()=>{},addSelectedID:()=>{},selectedAllBoxes:()=>{},addPointCloudBox:()=>[],setPolygonList:()=>{},zoom:1,setZoom:()=>{},history:new lbAnnotation.ActionsHistory,hideAttributes:[],setHideAttributes:()=>{},toggleAttributesVisible:()=>{},reRender:()=>{},setAttrPanelLayout:()=>{},attrPanelLayout:"",syncAllViewPointCloudColor:()=>{},defaultAttribute:"",setDefaultAttribute:()=>{},pointCloudPattern:lbAnnotation.EToolName.Rect,setPointCloudPattern:()=>{},selectSpecAttr:()=>{}}),PointCloudProvider=({children:a})=>{const[o,b]=React.useState([]),[c,H]=React.useState([]),[n,f]=React.useState([]),[v,E]=React.useState(!0),[y,M]=React.useState(1),[r,_]=React.useState(),[w,O]=React.useState(),[I,T]=React.useState(),[i,j]=React.useState(),[V,k]=React.useState(""),[m,N]=React.useState(lbAnnotation.EToolName.Rect),q=React.useRef(new lbAnnotation.ActionsHistory).current,[s,P]=React.useState([]),[g,z]=React.useState(""),x=React.useMemo(()=>n.length===1?n[0]:"",[n]),L=React.useMemo(()=>{const d=o.find(t=>t.id===x),C=t=>{const e=o.concat(t);return b(e),e},p=t=>{E(t!==!1)},l=t=>{t===void 0&&f([]),typeof t=="string"&&f([t]),Array.isArray(t)&&f(Array.from(new Set(t)))},u=t=>{n.includes(t)?l(n.filter(e=>e!==t)):l([...n,t])},Z=()=>{l(o.map(t=>t.id))},G=t=>{l(o.filter(e=>e.attribute===t).map(e=>e.id))},h=o.filter(t=>!s.includes(t.attribute)),J=t=>{if(s.includes(t))P(s.filter(e=>e!==t));else{const e=s.concat(t);P(e)}},K=(t=h,e=c)=>{o.forEach(A=>{i==null||i.removeObjectByName(A.id)}),r==null||r.updatePolygonList(t,e),i==null||i.generateBoxes(t),B(t)},B=t=>{const e=i==null?void 0:i.highlightOriginPointCloud(t);return new Promise(A=>{e==null||e.then(S=>{[r].forEach(R=>{var D;S&&((D=R==null?void 0:R.pointCloudInstance)==null||D.updateColor(S),A({color:S}))})})})};return{selectedID:x,pointCloudBoxList:o,displayPointCloudList:h,selectedIDs:n,setPointCloudResult:b,setSelectedIDs:l,addPointCloudBox:C,valid:v,selectedPointCloudBox:d,setPointCloudValid:p,addSelectedID:u,selectedAllBoxes:Z,topViewInstance:r,setTopViewInstance:_,sideViewInstance:w,setSideViewInstance:O,backViewInstance:I,setBackViewInstance:T,mainViewInstance:i,setMainViewInstance:j,polygonList:c,setPolygonList:H,zoom:y,setZoom:M,history:q,toggleAttributesVisible:J,hideAttributes:s,setHideAttributes:P,reRender:K,attrPanelLayout:g,setAttrPanelLayout:z,syncAllViewPointCloudColor:B,defaultAttribute:V,setDefaultAttribute:k,pointCloudPattern:m,setPointCloudPattern:N,selectSpecAttr:G}},[v,n,o,c,r,w,I,i,y,s,g,V,m]),F=()=>{const d=o.filter(u=>s.includes(u.attribute)),{setSelectedIDs:C,reRender:p}=L,l=d.map(u=>u.id);l.length>0&&C(n.filter(u=>!l.includes(u))),p()};return React.useEffect(()=>{var d;F(),(d=r==null?void 0:r.pointCloud2dOperation)==null||d.setHiddenAttributes(s)},[s]),React__default.default.createElement(PointCloudContext.Provider,{value:L},a)};exports.PointCloudContext=PointCloudContext,exports.PointCloudProvider=PointCloudProvider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var PointCloudContext=require("./PointCloudContext.js"),useRotate=require("./hooks/useRotate.js"),useBoxes=require("./hooks/useBoxes.js"),useSingleBox=require("./hooks/useSingleBox.js"),React=require("react"),lbAnnotation=require("@labelbee/lb-annotation"),antd=require("antd"),reactRedux=require("react-redux"),map=require("../../store/annotation/map.js"),annotation=require("../../hooks/annotation.js"),useStatus=require("./hooks/useStatus.js"),index=require("../../utils/index.js"),usePointCloudViews=require("./hooks/usePointCloudViews.js"),ctx=require("../../store/ctx.js"),useHistory=require("./hooks/useHistory.js"),useAttribute=require("./hooks/useAttribute.js"),useConfig=require("./hooks/useConfig.js"),usePolygon=require("./hooks/usePolygon.js"),reactI18next=require("react-i18next"),__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(u,r,
|
|
1
|
+
"use strict";var PointCloudContext=require("./PointCloudContext.js"),useRotate=require("./hooks/useRotate.js"),useBoxes=require("./hooks/useBoxes.js"),useSingleBox=require("./hooks/useSingleBox.js"),React=require("react"),lbAnnotation=require("@labelbee/lb-annotation"),antd=require("antd"),reactRedux=require("react-redux"),map=require("../../store/annotation/map.js"),annotation=require("../../hooks/annotation.js"),useStatus=require("./hooks/useStatus.js"),index=require("../../utils/index.js"),usePointCloudViews=require("./hooks/usePointCloudViews.js"),ctx=require("../../store/ctx.js"),useHistory=require("./hooks/useHistory.js"),useAttribute=require("./hooks/useAttribute.js"),useConfig=require("./hooks/useConfig.js"),usePolygon=require("./hooks/usePolygon.js"),reactI18next=require("react-i18next"),__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(u,r,a)=>r in u?__defProp(u,r,{enumerable:!0,configurable:!0,writable:!0,value:a}):u[r]=a,__spreadValues=(u,r)=>{for(var a in r||(r={}))__hasOwnProp.call(r,a)&&__defNormalProp(u,a,r[a]);if(__getOwnPropSymbols)for(var a of __getOwnPropSymbols(r))__propIsEnum.call(r,a)&&__defNormalProp(u,a,r[a]);return u},__spreadProps=(u,r)=>__defProps(u,__getOwnPropDescs(r));const{EPolygonPattern}=lbAnnotation.cTool,PointCloudListener=({currentData:u,config:r,checkMode:a,configString:h,imgIndex:y})=>{const o=React.useContext(PointCloudContext.PointCloudContext),{changeSelectedBoxValid:_,selectNextBox:B,selectPrevBox:S,updateSelectedBox:C,deleteSelectedPointCloudBoxAndPolygon:E}=useSingleBox.useSingleBox(),{clearAllResult:b,updatePointCloudPattern:V}=useStatus.useStatus(),A=index.jsonParser(u.result),{copySelectedBoxes:I,pasteSelectedBoxes:O,copiedBoxes:q}=useBoxes.useBoxes({config:r}),{toolInstanceRef:n}=annotation.useCustomToolInstance({basicInfo:A}),{updateRotate:f}=useRotate.useRotate({currentData:u}),{updatePointCloudData:p,topViewSelectedChanged:j}=usePointCloudViews.usePointCloudViews(),{redo:w,undo:x,pushHistoryWithList:L,pushHistoryUnderUpdatePolygon:T}=useHistory.useHistory(),{syncThreeViewsAttribute:g}=useAttribute.useAttribute(),{syncAllViewsConfig:R,reRenderTopViewRange:D}=useConfig.useConfig(),{selectedPolygon:m}=usePolygon.usePolygon(),{t:P}=reactI18next.useTranslation(),v=e=>{var t;const{topViewInstance:s}=o;!s||(t=s.pointCloud2dOperation)==null||t.updateSelectedPolygonsPoints(e)},N=(e,t)=>{var s;const{topViewInstance:i,mainViewInstance:l}=o;if(!i)return;const{pointCloud2dOperation:c}=i;switch(e){case"q":{f(2);break}case"e":f(-2);break;case"g":f(180);break;case"u":{const d=c.pattern===EPolygonPattern.Normal?lbAnnotation.EToolName.Rect:lbAnnotation.EToolName.Polygon;V(d);const K={[lbAnnotation.EToolName.Polygon]:P("PolygonPattern"),[lbAnnotation.EToolName.Rect]:P("RectPattern")};antd.message.success(P("ChangePatternMsg",{pattern:K[d]})),c.clearActiveStatus(),c.clearDrawingStatus()}break;case"+":l==null||l.updatePointSize(!0);break;case"-":l==null||l.updatePointSize(!1);break;case"v":o.setPointCloudValid(!o.valid);break;case"tab":if(t.shiftKey){S();break}B(),t.preventDefault();break;case"f":_();break;case"arrowup":v({y:-1});break;case"arrowdown":v({y:1});break;case"arrowleft":v({x:-1});break;case"arrowright":v({x:1});break;case"delete":E();break;default:{if(((s=r.attributeList)==null?void 0:s.length)>0){const d=lbAnnotation.AttributeUtils.getAttributeByKeycode(t.keyCode,r.attributeList);d!==void 0&&n.current.setDefaultAttribute(d)}return}}},H=(e,t)=>{switch(e){case"c":I();break;case"v":O();break;case"a":t.preventDefault(),o.selectedAllBoxes();break;case"z":{t.shiftKey?w():x();break}}},k=e=>{if(!lbAnnotation.CommonToolUtils.hotkeyFilter(e)||a===!0)return;const t=e.key.toLocaleLowerCase();if(e.ctrlKey){H(t,e);return}N(t,e)};return React.useEffect(()=>{const{topViewInstance:e}=o;if(!!e)return window.addEventListener("keydown",k),()=>{window.removeEventListener("keydown",k)}},[o,q,r,o.pointCloudBoxList,o.polygonList]),React.useEffect(()=>{R(r)},[h]),React.useEffect(()=>{(r==null?void 0:r.radius)&&D(r==null?void 0:r.radius)},[r==null?void 0:r.radius]),React.useEffect(()=>{p==null||p()},[y,o.mainViewInstance]),React.useEffect(()=>{o.setHideAttributes([])},[y]),React.useEffect(()=>{n.current.exportData=()=>[o.pointCloudBoxList,{valid:o.valid}],n.current.exportCustomData=()=>{var e;return{resultPolygon:(e=o.polygonList)!=null?e:[]}},n.current.setDefaultAttribute=e=>{g(e);const t=o.selectedPointCloudBox;if(t){t.attribute=e;const s=C(t);o.mainViewInstance&&j(t,s)}m&&T(__spreadProps(__spreadValues({},m),{attribute:e}))},n.current.setSubAttribute=(e,t)=>{var s;const i=o.selectedPointCloudBox;if(i){const l=(s=i==null?void 0:i.subAttribute)!=null?s:{};i.subAttribute=__spreadProps(__spreadValues({},l),{[e]:t}),C(i)}},n.current.clearResult=()=>{b==null||b()},n.current.redo=()=>{w()},n.current.undo=()=>{x()},n.current.setValid=e=>{n.current.valid=e,setTimeout(()=>{o.setPointCloudValid(e),e===!1&&b()})},n.current.setForbidOperation=e=>{var t,s;(s=(t=o.topViewInstance)==null?void 0:t.pointCloud2dOperation)==null||s.setForbidOperation(e),e===!0&&o.setSelectedIDs(void 0)},n.current.setShowDefaultCursor=e=>{var t,s;(s=(t=o.topViewInstance)==null?void 0:t.pointCloud2dOperation)==null||s.setShowDefaultCursor(e)},n.current.asyncData=e=>{setTimeout(()=>{p==null||p(e)})}},[o.pointCloudBoxList,o.selectedID,o.valid,o.polygonList,o.mainViewInstance]),React.useEffect(()=>{n.current.history={pushHistory:e=>{L({pointCloudBoxList:e})},initRecord:()=>{}}},[]),React.useEffect(()=>{var e;const t=(e=o.topViewInstance)==null?void 0:e.pointCloud2dOperation;if(!t||a)return;const s=c=>{g(c)},i=c=>{antd.message.error(c)},l=c=>{antd.message.info(c)};return t.on("syncAttribute",s),t.on("messageError",i),t.on("messageInfo",l),()=>{t.unbind("syncAttribute",s),t.unbind("messageError",i),t.unbind("messageInfo",l)}},[o.topViewInstance]),null};var PointCloudListener$1=reactRedux.connect(map.a2MapStateToProps,null,null,{context:ctx.LabelBeeContext})(PointCloudListener);module.exports=PointCloudListener$1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var lbAnnotation=require("@labelbee/lb-annotation"),lbUtils=require("@labelbee/lb-utils"),React=require("react"),PointCloudContext=require("../PointCloudContext.js"),useSingleBox=require("./useSingleBox.js"),ctx=require("../../../store/ctx.js"),StepUtils=require("../../../utils/StepUtils.js"),index=require("../../../utils/index.js"),actionCreators=require("../../../store/annotation/actionCreators.js"),antd=require("antd"),reactI18next=require("react-i18next"),useHistory=require("./useHistory.js"),usePolygon=require("./usePolygon.js"),__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(t,o,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var lbAnnotation=require("@labelbee/lb-annotation"),lbUtils=require("@labelbee/lb-utils"),React=require("react"),PointCloudContext=require("../PointCloudContext.js"),useSingleBox=require("./useSingleBox.js"),ctx=require("../../../store/ctx.js"),StepUtils=require("../../../utils/StepUtils.js"),index=require("../../../utils/index.js"),actionCreators=require("../../../store/annotation/actionCreators.js"),antd=require("antd"),reactI18next=require("react-i18next"),useHistory=require("./useHistory.js"),usePolygon=require("./usePolygon.js"),__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(t,o,n)=>o in t?__defProp(t,o,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[o]=n,__spreadValues=(t,o)=>{for(var n in o||(o={}))__hasOwnProp.call(o,n)&&__defNormalProp(t,n,o[n]);if(__getOwnPropSymbols)for(var n of __getOwnPropSymbols(o))__propIsEnum.call(o,n)&&__defNormalProp(t,n,o[n]);return t},__spreadProps=(t,o)=>__defProps(t,__getOwnPropDescs(o)),__async=(t,o,n)=>new Promise((c,e)=>{var s=d=>{try{u(n.next(d))}catch(C){e(C)}},g=d=>{try{u(n.throw(d))}catch(C){e(C)}},u=d=>d.done?c(d.value):Promise.resolve(d.value).then(s,g);u((n=n.apply(t,o)).next())});const DEFAULT_SCOPE=5,DEFAULT_RADIUS=90,PointCloudView={"3D":"3D",Top:"Top",Side:"Side",Back:"Back"},topViewPolygon2PointCloud=(t,o,n,c,e)=>{const[s,g,u,d]=t.pointList.map(P=>lbUtils.PointCloudUtils.transferCanvas2World(P,o)),C=lbAnnotation.MathUtils.getLineCenterPoint([s,u]),h=lbAnnotation.MathUtils.getLineLength(s,g),x=lbAnnotation.MathUtils.getLineLength(g,u),_=lbAnnotation.MathUtils.getRadiusFromQuadrangle(t.pointList);let m=0,w=1,y={};if(n){const P=n.getSensesPointZAxisInPolygon([s,g,u,d]);m=(P.maxZ+P.minZ)/2,w=P.maxZ-P.minZ,y={count:P.zCount}}c&&(m=c.center.z,w=c.depth);const U={center:{x:C.x,y:C.y,z:m},width:x,height:h,depth:w,rotation:_,id:t.id},v=__spreadValues(c?__spreadValues(__spreadValues({},c),U):__spreadProps(__spreadValues({},U),{attribute:"",valid:!0}),y);return e&&Object.assign(v,e),v},sideViewPolygon2PointCloud=(t,o,n,c)=>{const[e,s,g]=t.pointList,[u,d,C]=o.pointList,h=lbAnnotation.MathUtils.getLineCenterPoint([e,g]),x=lbAnnotation.MathUtils.getLineCenterPoint([u,C]),m={x:{x:h.x-x.x,y:h.y-x.y}.x,y:0,z:h.y-x.y},w=lbAnnotation.MathUtils.getLineLength(e,s),y=lbAnnotation.MathUtils.getLineLength(u,d),U=w-y,v=lbAnnotation.MathUtils.getLineLength(s,g),P=lbAnnotation.MathUtils.getLineLength(d,C),O=v-P,{newBoxParams:b}=c.getNewBoxBySideUpdate(m,O,U,n);return b},backViewPolygon2PointCloud=(t,o,n,c)=>{const[e,s,g]=t.pointList,[u,d,C]=o.pointList,h=lbAnnotation.MathUtils.getLineCenterPoint([e,g]),x=lbAnnotation.MathUtils.getLineCenterPoint([u,C]),m={x:{x:h.x-x.x,y:h.y-x.y}.x,y:0,z:h.y-x.y},w=lbAnnotation.MathUtils.getLineLength(e,s),y=lbAnnotation.MathUtils.getLineLength(u,d),U=w-y,v=lbAnnotation.MathUtils.getLineLength(s,g),P=lbAnnotation.MathUtils.getLineLength(d,C),O=v-P;let{newBoxParams:b}=c.getNewBoxByBackUpdate(m,O,U,n);return b},synchronizeSideView=(t,o,n,c)=>{if(!n)return;const{pointCloud2dOperation:e,pointCloudInstance:s}=n;s.loadPCDFileByBox(c,t,{width:DEFAULT_SCOPE,depth:DEFAULT_SCOPE});const{cameraPositionVector:g}=s.updateOrthoCamera(t,lbUtils.EPerspectiveView.Left);s.setInitCameraPosition(g);const{polygon2d:u,zoom:d}=s.getBoxSidePolygon2DCoordinate(t);s.camera.zoom=d,s.camera.updateProjectionMatrix(),s.render(),e.initPosition(),e.zoomChangeOnCenter(d),e.setResultAndSelectedID([{id:o.id,valid:t.valid,pointList:u,textAttribute:"",isRect:!0,attribute:t.attribute}],o.id)},synchronizeBackView=(t,o,n,c)=>{if(!n)return;const{pointCloud2dOperation:e,pointCloudInstance:s}=n;s.loadPCDFileByBox(c,t,{height:DEFAULT_SCOPE,depth:DEFAULT_SCOPE});const{cameraPositionVector:g}=s.updateOrthoCamera(t,lbUtils.EPerspectiveView.Back);s.setInitCameraPosition(g);const{polygon2d:u,zoom:d}=s.getBoxBackPolygon2DCoordinate(t);s.camera.zoom=d,s.camera.updateProjectionMatrix(),s.render(),e.initPosition(),e.zoomChangeOnCenter(d),e.setResultAndSelectedID([{id:o.id,valid:t.valid,pointList:u,textAttribute:"",isRect:!0,attribute:t.attribute}],o.id)},synchronizeTopView=(t,o,n,c)=>{var e;if(!n||!c)return;c.generateBox(t,o.id),c.updateCameraByBox(t,lbUtils.EPerspectiveView.Top),c.render();const{pointCloud2dOperation:s,pointCloudInstance:g}=n,{polygon2d:u}=g.getBoxTopPolygon2DCoordinate(t),d=[...s.polygonList],C=d.find(h=>h.id===o.id);C?C.pointList=u:d.push({id:o.id,pointList:u,textAttribute:"",isRect:!0,valid:(e=t.valid)!=null?e:!0}),s.setResultAndSelectedID(d,o.id)},usePointCloudViews=()=>{const t=React.useContext(PointCloudContext.PointCloudContext),{topViewInstance:o,sideViewInstance:n,backViewInstance:c,mainViewInstance:e,addPointCloudBox:s,setSelectedIDs:g,selectedIDs:u,pointCloudBoxList:d,hideAttributes:C}=t,{addHistory:h,initHistory:x,pushHistoryUnderUpdatePolygon:_}=useHistory.useHistory(),{selectedPolygon:m}=usePolygon.usePolygon(),{updateSelectedBox:w,updateSelectedBoxes:y,getPointCloudByID:U}=useSingleBox.useSingleBox(),{currentData:v,config:P}=ctx.useSelector(i=>{const{stepList:r,step:p,imgList:l,imgIndex:a}=i.annotation;return{currentData:l[a],config:index.jsonParser(StepUtils.getCurrentStepInfo(p,r).config)}}),O=ctx.useDispatch(),{selectedBox:b}=useSingleBox.useSingleBox(),{t:M}=reactI18next.useTranslation(),A=b==null?void 0:b.info;if(!o||!n||!c)return{topViewAddBox:()=>{},topViewSelectedChanged:()=>{},sideViewUpdateBox:()=>{},backViewUpdateBox:()=>{}};const{pointCloudInstance:T}=o,z=i=>{e==null||e.generateBox(i),e==null||e.controls.update(),e==null||e.render()},R=({newPolygon:i,size:r,imgList:p,trackConfigurable:l,zoom:a})=>{var f;const L={attribute:(f=o.pointCloud2dOperation.defaultAttribute)!=null?f:""};l===!0&&Object.assign(L,{trackID:lbUtils.PointCloudUtils.getNextTrackID({imgList:[],extraBoxList:d})});const B=topViewPolygon2PointCloud(i,r,T,void 0,L),S=o==null?void 0:o.pointCloud2dOperation,V=B;if((P==null?void 0:P.lowerLimitPointsNumInBox)&&typeof B.count=="number"&&B.count<P.lowerLimitPointsNumInBox){antd.message.info(M("LowerLimitPointsNumInBox",{num:P.lowerLimitPointsNumInBox})),S.deletePolygon(B.id);return}const j=C.includes(i.attribute),I=s(V);j?g([]):(g(V.id),S.setSelectedIDs([i.id]),D(PointCloudView.Top,i,V,a,I)),h({newBoxParams:V})},q=(i,r)=>{const p=i!=null?i:b==null?void 0:b.info,l=o==null?void 0:o.pointCloud2dOperation;if(l.setSelectedIDs(u),u.length===0||!l)return;const a=l.selectedPolygon;if(u.length===1&&p){D(PointCloudView.Top,a,p,void 0,r);return}},k=(i,r,p)=>{if(A){let l,a;switch(p){case PointCloudView.Back:l=backViewPolygon2PointCloud;break;case PointCloudView.Side:l=sideViewPolygon2PointCloud;break;default:l=sideViewPolygon2PointCloud;break}if(a=l(i,r,A,n.pointCloudInstance),e){const{count:L}=e.getSensesPointZAxisInPolygon(lbAnnotation.getCuboidFromPointCloudBox(a).polygonPointList,[a.center.z-a.depth/2,a.center.z+a.depth/2]);a=__spreadProps(__spreadValues({},a),{count:L})}const f=w(a);return D(p,i,a,void 0,f),f}},E=(i,r)=>{k(i,r,PointCloudView.Side)},H=(i,r)=>{k(i,r,PointCloudView.Back)},F=(i,r)=>{if(m){const l=i[0].newPolygon;l.pointList=l.pointList.map(a=>lbUtils.PointCloudUtils.transferCanvas2World(a,r)),_(i[0].newPolygon);return}const p=i.map(({newPolygon:l})=>{const a=U(l.id);return topViewPolygon2PointCloud(l,r,o.pointCloudInstance,a)});if(p.length===1){const{newPolygon:l}=i[0],a=y(p);D(PointCloudView.Top,l,p[0],void 0,a)}else{const l=y(p);l&&t.syncAllViewPointCloudColor(l)}},D=(i,r,p,l,a)=>__async(void 0,null,function*(){const f=v==null?void 0:v.url;a&&(yield t.syncAllViewPointCloudColor(a));const L={[PointCloudView.Side]:()=>{synchronizeSideView(p,r,n,f)},[PointCloudView.Back]:()=>{c&&synchronizeBackView(p,r,c,f)},[PointCloudView.Top]:()=>{synchronizeTopView(p,r,o,e)}};Object.keys(L).forEach(B=>{B!==i&&L[B]()}),l&&(e==null||e.updateCameraZoom(l)),z(p)});return{topViewAddBox:R,topViewSelectedChanged:q,topViewUpdateBox:F,sideViewUpdateBox:E,backViewUpdateBox:H,pointCloudBoxListUpdated:i=>{o.updatePolygonList(i),e==null||e.generateBoxes(i)},initPointCloud3d:i=>{if(!e)return;const r={left:-i.width/2,right:i.width/2,top:i.height/2,bottom:-i.height/2,near:100,far:-100};e.initOrthographicCamera(r),e.initRenderer(),e.render()},updatePointCloudData:(...i)=>__async(void 0,[...i],function*(r=v){var p,l,a,f,L,B;if(!(r==null?void 0:r.url)||!e)return;actionCreators.SetPointCloudLoading(O,!0),yield e.loadPCDFile(r.url,(p=P==null?void 0:P.radius)!=null?p:DEFAULT_RADIUS),d.forEach(I=>{e==null||e.removeObjectByName(I.id)});let S=[],V=[];r.result?(S=lbUtils.PointCloudUtils.getBoxParamsFromResultList(r.result),V=lbUtils.PointCloudUtils.getPolygonListFromResultList(r.result),S.forEach(I=>{e==null||e.generateBox(I)}),t.syncAllViewPointCloudColor(S),t.setPointCloudResult(S),t.setPolygonList(V)):(t.setPointCloudResult([]),t.setPolygonList([])),x({pointCloudBoxList:S,polygonList:V}),e.updateTopCamera();const j=(a=(l=index.jsonParser(r.result))==null?void 0:l.valid)!=null?a:!0;t.setPointCloudValid(j),(f=t.sideViewInstance)==null||f.clearAllData(),(L=t.backViewInstance)==null||L.clearAllData(),o.updateData(r.url,r.result,{radius:(B=P==null?void 0:P.radius)!=null?B:DEFAULT_RADIUS}),actionCreators.SetPointCloudLoading(O,!1)})}};exports.synchronizeBackView=synchronizeBackView,exports.synchronizeSideView=synchronizeSideView,exports.synchronizeTopView=synchronizeTopView,exports.topViewPolygon2PointCloud=topViewPolygon2PointCloud,exports.usePointCloudViews=usePointCloudViews;
|
package/dist/index.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var index$2=require("../../components/customResizeHook/index.js"),index=require("../../constant/index.js"),styleString=require("../../constant/styleString.js"),Actions=require("../Actions.js"),index$1=require("../../utils/index.js"),AnnotationDataUtils=require("../../utils/AnnotationDataUtils.js"),ConfigUtils=require("../../utils/ConfigUtils.js"),data=require("../../utils/data.js"),StepUtils=require("../../utils/StepUtils.js"),ToolUtils=require("../../utils/ToolUtils.js"),lbAnnotation=require("@labelbee/lb-annotation"),lbUtils=require("@labelbee/lb-utils"),antd=require("antd"),es=require("antd/es"),_=require("lodash"),actionCreators=require("./actionCreators.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var ___default=_interopDefaultLegacy(_),__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,s)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,__spreadValues=(e,t)=>{for(var s in t||(t={}))__hasOwnProp.call(t,s)&&__defNormalProp(e,s,t[s]);if(__getOwnPropSymbols)for(var s of __getOwnPropSymbols(t))__propIsEnum.call(t,s)&&__defNormalProp(e,s,t[s]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t)),__async=(e,t,s)=>new Promise((I,u)=>{var A=T=>{try{O(s.next(T))}catch(C){u(C)}},p=T=>{try{O(s.throw(T))}catch(C){u(C)}},O=T=>T.done?I(T.value):Promise.resolve(T.value).then(A,p);O((s=s.apply(e,t)).next())});const getStepConfig=(e,t)=>e.find(s=>s.step===t),initialState={annotationEngine:null,toolInstance:null,imgList:[],config:"{}",imgIndex:-1,basicIndex:0,imgPageSize:1,step:1,stepList:[],imgNode:new Image,basicResultList:[],resultList:[],stepProgress:0,loading:!1,triggerEventAfterIndexChanged:!1,pointCloudLoading:!1,checkMode:!1},getTotalPage=e=>{const{imgList:t,imgPageSize:s}=e;return Math.ceil(t.length/s)},calcStepProgress=(e,t)=>e.reduce((s,I)=>{if(I){const u=I.result;if(index$1.jsonParser(u)[`step_${t}`])return s+1}return s},0)/e.length,updateToolInstance=(e,t)=>{const{step:s,stepList:I}=e,u=StepUtils.getCurrentStepInfo(s,I),A=ConfigUtils.ConfigUtils.jsonParser(u.config);if(ToolUtils.isVideoTool(u==null?void 0:u.tool)||ToolUtils.isPointCloudTool(u==null?void 0:u.tool))return;const p=document.getElementById("toolContainer");if(!p)throw"Not exist dom named id-toolContainer";const O=index$2.getFormatSize({width:window.innerWidth,height:window.innerHeight}),T=new lbAnnotation.AnnotationEngine({container:p,toolName:u.tool,size:O,imgNode:t,config:A,style:JSON.parse(styleString)});return{toolInstance:T==null?void 0:T.toolInstance,annotationEngine:T}},LoadFileAndFileData=(e,t)=>(s,I)=>__async(void 0,null,function*(){const{stepList:u,step:A}=I().annotation,p=StepUtils.currentToolIsVideo(A,u),O=StepUtils.currentToolIsPointCloud(A,u);if(actionCreators.SetAnnotationLoading(s,!0),yield s(TryGetFileDataByAPI(e)),p||O){s(AfterVideoLoaded(e));return}s(AfterImageLoaded(e,t))}),TryGetFileDataByAPI=e=>(t,s)=>__async(void 0,null,function*(){const{getFileData:I,imgList:u}=s().annotation;if(I){const A=yield I(u[e],e);t({type:Actions.ANNOTATION_ACTIONS.SET_FILE_DATA,payload:{fileData:A,index:e}})}}),AfterVideoLoaded=e=>t=>{actionCreators.SetAnnotationLoading(t,!1),t({type:Actions.ANNOTATION_ACTIONS.LOAD_FILE_DATA,payload:{nextIndex:e}})},AfterImageLoaded=(e,t)=>(s,I)=>{var u;const{toolInstance:A,imgList:p}=I().annotation,O=(u=p==null?void 0:p[e])==null?void 0:u.url;lbAnnotation.ImgUtils.load(O).then(T=>{actionCreators.SetAnnotationLoading(s,!1),s({type:Actions.ANNOTATION_ACTIONS.LOAD_FILE_DATA,payload:{imgNode:T,nextIndex:e,nextBasicIndex:t}})}).catch(()=>{actionCreators.SetAnnotationLoading(s,!1),A==null||A.setErrorImg(),s({type:Actions.ANNOTATION_ACTIONS.LOAD_FILE_DATA,payload:{nextIndex:e,nextBasicIndex:t}})})},composeResultByToolInstance=({toolInstance:e,imgList:t,imgIndex:s,stepList:I,step:u=1})=>{var A,p,O,T;const C=((A=t[s])==null?void 0:A.result)||"",[b,h,U]=(p=e==null?void 0:e.exportData())!=null?p:[],x=(T=(O=e==null?void 0:e.exportCustomData)==null?void 0:O.call(e))!=null?T:{},B=data.composeResultWithBasicImgInfo(C,h),w=data.composeResult(B,{step:u,stepList:I},{rect:b},x);return t.map((P,F)=>F===s?__spreadValues(__spreadProps(__spreadValues({},P),{result:w}),U):__spreadValues({},P))},annotationReducer=(e=__spreadValues({},initialState),t)=>{var s,I,u,A,p,O,T,C,b,h,U,x,B,w,P,F,q,G,V,M,k,H;switch(t.type){case Actions.ANNOTATION_ACTIONS.INIT_ALL_STATE:return __spreadValues(__spreadValues({},e),initialState);case Actions.ANNOTATION_ACTIONS.UPDATE_TOOL_INSTANCE:return __spreadProps(__spreadValues({},e),{toolInstance:t.payload.toolInstance});case Actions.ANNOTATION_ACTIONS.UPDATE_IMG_LIST:return __spreadProps(__spreadValues({},e),{imgList:t.payload.imgList});case Actions.ANNOTATION_ACTIONS.CALC_STEP_PROGRESS:{const{imgList:n,step:o}=e,i=calcStepProgress(n,o);return __spreadProps(__spreadValues({},e),{stepProgress:i})}case Actions.ANNOTATION_ACTIONS.SUBMIT_FILE_DATA:{const{imgList:n,imgIndex:o,step:i,stepList:l,toolInstance:a,onSubmit:r,resultList:N}=e;if(!a||!n[o])return e;const c=((s=n[o])==null?void 0:s.result)||"",[,d,g]=(I=a==null?void 0:a.exportData())!=null?I:[],f=(A=(u=a==null?void 0:a.exportCustomData)==null?void 0:u.call(a))!=null?A:{},v=data.composeResultWithBasicImgInfo(c,d),E=data.composeResult(v,{step:i,stepList:l},{rect:N},f),S=e.imgList.map((L,m)=>{if(m===o){const R=AnnotationDataUtils.dataCorrection(E,c,i,l);return __spreadValues(__spreadProps(__spreadValues({},L),{result:R}),g)}return L});if(((p=t.payload)==null?void 0:p.submitType)===index.ESubmitType.SyncImgList)return __spreadProps(__spreadValues({},e),{imgList:S});r&&r([S[o]],(O=t.payload)==null?void 0:O.submitType,o,S);const D=calcStepProgress(S,i);return __spreadProps(__spreadValues({},e),{stepProgress:D,imgList:S})}case Actions.ANNOTATION_ACTIONS.SAVE_RESULT:{const{imgList:n,imgIndex:o,onSave:i}=e;return i==null||i(n[o],o,n),__spreadValues({},e)}case Actions.ANNOTATION_ACTIONS.SUBMIT_RESULT:{const{imgList:n,basicIndex:o,resultList:i,toolInstance:l,basicResultList:a}=e;if(!l)return e;const[r]=(T=l==null?void 0:l.exportData())!=null?T:[];let N=r;if((a==null?void 0:a.length)>0){const c=(C=a[o])==null?void 0:C.id,d=r.map(g=>__spreadProps(__spreadValues({},g),{sourceID:c}));N=___default.default.cloneDeep(i).filter(g=>g.sourceID!==c),N.push(...d)}return __spreadProps(__spreadValues({},e),{resultList:N,imgList:n})}case Actions.ANNOTATION_ACTIONS.SET_BASIC_INDEX:{const{toolInstance:n,step:o,imgList:i,imgIndex:l,stepList:a,annotationEngine:r,resultList:N,basicResultList:c}=e;if(!n||!r)return e;const d=t.payload.basicIndex,g=(b=c[d])==null?void 0:b.id,f=index$1.jsonParser((h=i[l])==null?void 0:h.result),v=(N||[]).filter(R=>R.sourceID===g),E=getStepConfig(a,o),{dataSourceStep:S,tool:D}=E,L=getStepConfig(a,S);let m=[];return S&&D&&(m=(U=f[`step_${S}`])==null?void 0:U.result,(m==null?void 0:m.length)>0?(r==null||r.setBasicInfo(L.tool,m[d]),r==null||r.launchOperation()):(r==null||r.setBasicInfo(L.tool),r==null||r.forbidOperation(),es.message.info(lbUtils.i18n.t("NoDependency")))),n==null||n.setResult(v),n==null||n.history.initRecord(v,!0),__spreadProps(__spreadValues({},e),{basicIndex:d})}case Actions.ANNOTATION_ACTIONS.SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED:{const{triggerEventAfterIndexChanged:n}=t.payload;return __spreadProps(__spreadValues({},e),{triggerEventAfterIndexChanged:!!n})}case Actions.ANNOTATION_ACTIONS.LOAD_FILE_DATA:{const{imgList:n,step:o,toolInstance:i,annotationEngine:l,stepList:a}=e;if(!i)return __spreadProps(__spreadValues({},e),{imgIndex:t.payload.nextIndex});const r=StepUtils.getCurrentStepInfo(o,a),{nextIndex:N,imgNode:c,nextBasicIndex:d,imgError:g}=t.payload,f=d!=null?d:0,v=index$1.jsonParser((x=n[N])==null?void 0:x.result),E=v[`step_${r.step}`],S=!E,D={rotate:(B=v.rotate)!=null?B:0,valid:(w=v.valid)!=null?w:!0};c&&g!==!0?l==null||l.setImgNode(c,D):i==null||i.setValid(D.valid);const L=getStepConfig(a,r.step),{dataSourceStep:m,tool:R}=L,z=getStepConfig(a,m),K=m&&R,y=(F=(P=v[`step_${m}`])==null?void 0:P.result)!=null?F:[],j=AnnotationDataUtils.getInitialResultList(E==null?void 0:E.result,i,L,y,S);if(l==null||l.launchOperation(),K&&((y==null?void 0:y.length)>0?l==null||l.setBasicInfo(z.tool,y[f]):(l==null||l.setBasicInfo(z.tool),l==null||l.forbidOperation(),es.message.info(lbUtils.i18n.t("NoDependency")))),r.tool!=="check"){const $=(G=(q=y[f])==null?void 0:q.id)!=null?G:"",W=K?j.filter(X=>lbAnnotation.CommonToolUtils.isSameSourceID(X.sourceID,$)):j;i==null||i.history.initRecord(j,!0),i==null||i.setResult(W)}return __spreadProps(__spreadValues({},e),{imgIndex:N,basicIndex:f,basicResultList:y,resultList:j})}case Actions.ANNOTATION_ACTIONS.UPDATE_ANNOTATION_CONFIG:return __spreadProps(__spreadValues({},e),{config:(V=t.payload.config)!=null?V:"{}"});case Actions.ANNOTATION_ACTIONS.SET_TASK_STEP_LIST:{const{stepList:n}=t.payload;return __spreadProps(__spreadValues({},e),{stepList:n})}case Actions.ANNOTATION_ACTIONS.SET_TASK_CONFIG:{const{stepList:n,step:o}=t.payload;return __spreadProps(__spreadValues({},e),{stepList:n,step:o})}case Actions.ANNOTATION_ACTIONS.INIT_TOOL:{const{imgNode:n}=e,o=updateToolInstance(e,n);if(o){const{toolInstance:i,annotationEngine:l}=o;return __spreadProps(__spreadValues({},e),{toolInstance:i,annotationEngine:l})}return __spreadValues({},e)}case Actions.ANNOTATION_ACTIONS.SET_TOOL:{const n=(M=t.payload)==null?void 0:M.instance;return n?__spreadProps(__spreadValues({},e),{toolInstance:n}):__spreadValues({},e)}case Actions.ANNOTATION_ACTIONS.UPDATE_ON_SUBMIT:return __spreadProps(__spreadValues({},e),{onSubmit:t.payload.onSubmit});case Actions.ANNOTATION_ACTIONS.UPDATE_ON_SAVE:return __spreadProps(__spreadValues({},e),{onSave:t.payload.onSave});case Actions.ANNOTATION_ACTIONS.UPDATE_ON_PAGE_CHANGE:return __spreadProps(__spreadValues({},e),{onPageChange:t.payload.onPageChange});case Actions.ANNOTATION_ACTIONS.UPDATE_ON_STEP_CHANGE:return __spreadProps(__spreadValues({},e),{onStepChange:t.payload.onStepChange});case Actions.ANNOTATION_ACTIONS.UPDATE_GET_FILE_DATA:return __spreadProps(__spreadValues({},e),{getFileData:t.payload.getFileData});case Actions.ANNOTATION_ACTIONS.UPDATE_PAGE_SIZE:return __spreadProps(__spreadValues({},e),{pageSize:t.payload.pageSize});case Actions.ANNOTATION_ACTIONS.UPDATE_LOAD_FILE_LIST:return __spreadProps(__spreadValues({},e),{loadFileList:t.payload.loadFileList});case Actions.ANNOTATION_ACTIONS.UPDATE_BEFORE_ROTATE:return __spreadProps(__spreadValues({},e),{beforeRotate:t.payload.beforeRotate});case Actions.ANNOTATION_ACTIONS.SKIP_BEFORE_PAGE_TURNING:return __spreadProps(__spreadValues({},e),{skipBeforePageTurning:t.payload.skipBeforePageTurning});case Actions.ANNOTATION_ACTIONS.SET_FILE_DATA:{const{fileData:n,index:o}=t.payload,{imgList:i}=e,l=[...i];return l[o]=__spreadValues(__spreadValues({},l[o]),n),__spreadProps(__spreadValues({},e),{imgList:l})}case Actions.ANNOTATION_ACTIONS.UPDATE_ROTATE:{const{toolInstance:n,beforeRotate:o}=e;return o&&o()===!1||n==null||n.updateRotate(),e}case Actions.ANNOTATION_ACTIONS.UPDATE_ANNOTATION_VALID:{const{toolInstance:n}=e,o=(k=n==null?void 0:n.valid)!=null?k:!0;return antd.Modal.destroyAll(),antd.Modal.confirm({content:lbUtils.i18n.t(o?"updateValidFromValidToInValid":"updateValidFromInValidToValid"),onOk:()=>{n==null||n.setValid(!o)},okText:lbUtils.i18n.t("Confirm"),cancelText:lbUtils.i18n.t("Cancel")}),e}case Actions.ANNOTATION_ACTIONS.COPY_BACKWARD_RESULT:{const{toolInstance:n,imgIndex:o,imgList:i,step:l}=e;if(!n)return e;if(o===0||o>=i.length)return console.error("\u65E0\u6CD5\u590D\u5236\u8FB9\u754C\u5916\u7684\u5185\u5BB9"),e;const a=i[o-1].result;if(!a)return e;const r=AnnotationDataUtils.copyResultChange(a,l,(H=i[o].result)!=null?H:"");i[o]=__spreadProps(__spreadValues({},i[o]),{result:r});const c=index$1.jsonParser(r)[`step_${l}`],d=(c==null?void 0:c.result)||[];return n==null||n.setResult(d),n==null||n.history.pushHistory(d),__spreadProps(__spreadValues({},e),{imgList:[...i]})}case Actions.ANNOTATION_ACTIONS.SET_STEP:{const{stepList:n,annotationEngine:o}=e,{toStep:i}=t.payload;if(!o)return e;const l=getStepConfig(n,i);return o==null||o.setToolName(l.tool,l.config),__spreadProps(__spreadValues({},e),{step:i,toolInstance:o==null?void 0:o.toolInstance})}case Actions.ANNOTATION_ACTIONS.SET_LOADING:{const{loading:n}=t.payload;return __spreadProps(__spreadValues({},e),{loading:!!n})}case Actions.ANNOTATION_ACTIONS.SET_POINT_CLOUD_LOADING:{const{pointCloudLoading:n}=t.payload;return __spreadProps(__spreadValues({},e),{pointCloudLoading:!!n})}case Actions.ANNOTATION_ACTIONS.SET_CHECK_MODE:{const{checkMode:n}=t.payload;return __spreadProps(__spreadValues({},e),{checkMode:!!n})}case Actions.ANNOTATION_ACTIONS.BATCH_UPDATE_TRACK_ID:{const{id:n,newID:o,rangeIndex:i,imgList:l}=t.payload,{imgIndex:a,onSubmit:r}=e,N=[],c=l.map((d,g)=>{if(lbAnnotation.MathUtils.isInRange(g,i)){const f=__spreadProps(__spreadValues({},d),{result:lbUtils.PointCloudUtils.batchUpdateTrackID({id:n,newID:o,result:d.result})});return N.push({imgIndex:g,newInfo:f}),f}return d});return r&&r([c[a]],index.ESubmitType.BatchUpdateTrackID,a,c,{updateImgList:N}),__spreadProps(__spreadValues({},e),{imgList:c})}case Actions.ANNOTATION_ACTIONS.BATCH_UPDATE_RESULT_BY_TRACK_ID:{const{id:n,newData:o,rangeIndex:i}=t.payload,{imgList:l,imgIndex:a,onSubmit:r}=e,N=[],c=l.map((d,g)=>{if(lbAnnotation.MathUtils.isInRange(g,i)){const f=__spreadProps(__spreadValues({},d),{result:lbUtils.PointCloudUtils.batchUpdateResultByTrackID({id:n,newData:o,result:d.result})});return N.push({imgIndex:g,newInfo:f}),f}return d});return r&&r([c[a]],index.ESubmitType.BatchUpdateTrackID,a,c,{updateImgList:N}),__spreadProps(__spreadValues({},e),{imgList:c})}default:return e}};exports.LoadFileAndFileData=LoadFileAndFileData,exports.annotationReducer=annotationReducer,exports.composeResultByToolInstance=composeResultByToolInstance,exports.getStepConfig=getStepConfig,exports.getTotalPage=getTotalPage;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var index$2=require("../../components/customResizeHook/index.js"),index=require("../../constant/index.js"),styleString=require("../../constant/styleString.js"),Actions=require("../Actions.js"),index$1=require("../../utils/index.js"),AnnotationDataUtils=require("../../utils/AnnotationDataUtils.js"),ConfigUtils=require("../../utils/ConfigUtils.js"),data=require("../../utils/data.js"),StepUtils=require("../../utils/StepUtils.js"),ToolUtils=require("../../utils/ToolUtils.js"),lbAnnotation=require("@labelbee/lb-annotation"),lbUtils=require("@labelbee/lb-utils"),antd=require("antd"),es=require("antd/es"),_=require("lodash"),actionCreators=require("./actionCreators.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var ___default=_interopDefaultLegacy(_),__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,s)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,__spreadValues=(e,t)=>{for(var s in t||(t={}))__hasOwnProp.call(t,s)&&__defNormalProp(e,s,t[s]);if(__getOwnPropSymbols)for(var s of __getOwnPropSymbols(t))__propIsEnum.call(t,s)&&__defNormalProp(e,s,t[s]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t)),__async=(e,t,s)=>new Promise((I,u)=>{var A=T=>{try{O(s.next(T))}catch(C){u(C)}},p=T=>{try{O(s.throw(T))}catch(C){u(C)}},O=T=>T.done?I(T.value):Promise.resolve(T.value).then(A,p);O((s=s.apply(e,t)).next())});const getStepConfig=(e,t)=>e.find(s=>s.step===t),initialState={annotationEngine:null,toolInstance:null,imgList:[],config:"{}",imgIndex:-1,basicIndex:0,imgPageSize:1,step:1,stepList:[],imgNode:new Image,basicResultList:[],resultList:[],stepProgress:0,loading:!1,triggerEventAfterIndexChanged:!1,pointCloudLoading:!1,checkMode:!1},getTotalPage=e=>{const{imgList:t,imgPageSize:s}=e;return Math.ceil(t.length/s)},calcStepProgress=(e,t)=>e.reduce((s,I)=>{if(I){const u=I.result;if(index$1.jsonParser(u)[`step_${t}`])return s+1}return s},0)/e.length,updateToolInstance=(e,t)=>{const{step:s,stepList:I}=e,u=StepUtils.getCurrentStepInfo(s,I),A=ConfigUtils.ConfigUtils.jsonParser(u.config);if(ToolUtils.isVideoTool(u==null?void 0:u.tool)||ToolUtils.isPointCloudTool(u==null?void 0:u.tool))return;const p=document.getElementById("toolContainer");if(!p)throw"Not exist dom named id-toolContainer";const O=index$2.getFormatSize({width:window.innerWidth,height:window.innerHeight}),T=new lbAnnotation.AnnotationEngine({container:p,toolName:u.tool,size:O,imgNode:t,config:A,style:JSON.parse(styleString)});return{toolInstance:T==null?void 0:T.toolInstance,annotationEngine:T}},LoadFileAndFileData=(e,t)=>(s,I)=>__async(void 0,null,function*(){const{stepList:u,step:A}=I().annotation,p=StepUtils.currentToolIsVideo(A,u),O=StepUtils.currentToolIsPointCloud(A,u);if(actionCreators.SetAnnotationLoading(s,!0),yield s(TryGetFileDataByAPI(e)),p||O){s(AfterVideoLoaded(e));return}s(AfterImageLoaded(e,t))}),TryGetFileDataByAPI=e=>(t,s)=>__async(void 0,null,function*(){const{getFileData:I,imgList:u}=s().annotation;if(I){const A=yield I(u[e],e);t({type:Actions.ANNOTATION_ACTIONS.SET_FILE_DATA,payload:{fileData:A,index:e}})}}),AfterVideoLoaded=e=>t=>{actionCreators.SetAnnotationLoading(t,!1),t({type:Actions.ANNOTATION_ACTIONS.LOAD_FILE_DATA,payload:{nextIndex:e}})},AfterImageLoaded=(e,t)=>(s,I)=>{var u;const{toolInstance:A,imgList:p}=I().annotation,O=(u=p==null?void 0:p[e])==null?void 0:u.url;lbAnnotation.ImgUtils.load(O).then(T=>{actionCreators.SetAnnotationLoading(s,!1),s({type:Actions.ANNOTATION_ACTIONS.LOAD_FILE_DATA,payload:{imgNode:T,nextIndex:e,nextBasicIndex:t}})}).catch(()=>{actionCreators.SetAnnotationLoading(s,!1),A==null||A.setErrorImg(),s({type:Actions.ANNOTATION_ACTIONS.LOAD_FILE_DATA,payload:{nextIndex:e,nextBasicIndex:t}})})},composeResultByToolInstance=({toolInstance:e,imgList:t,imgIndex:s,stepList:I,step:u=1})=>{var A,p,O,T;const C=((A=t[s])==null?void 0:A.result)||"",[b,h,U]=(p=e==null?void 0:e.exportData())!=null?p:[],x=(T=(O=e==null?void 0:e.exportCustomData)==null?void 0:O.call(e))!=null?T:{},B=data.composeResultWithBasicImgInfo(C,h),w=data.composeResult(B,{step:u,stepList:I},{rect:b},x);return t.map((P,F)=>F===s?__spreadValues(__spreadProps(__spreadValues({},P),{result:w}),U):__spreadValues({},P))},annotationReducer=(e=__spreadValues({},initialState),t)=>{var s,I,u,A,p,O,T,C,b,h,U,x,B,w,P,F,q,G,V,M,k,H;switch(t.type){case Actions.ANNOTATION_ACTIONS.INIT_ALL_STATE:return __spreadValues(__spreadValues({},e),initialState);case Actions.ANNOTATION_ACTIONS.UPDATE_TOOL_INSTANCE:return __spreadProps(__spreadValues({},e),{toolInstance:t.payload.toolInstance});case Actions.ANNOTATION_ACTIONS.UPDATE_IMG_LIST:return __spreadProps(__spreadValues({},e),{imgList:t.payload.imgList});case Actions.ANNOTATION_ACTIONS.CALC_STEP_PROGRESS:{const{imgList:n,step:o}=e,i=calcStepProgress(n,o);return __spreadProps(__spreadValues({},e),{stepProgress:i})}case Actions.ANNOTATION_ACTIONS.SUBMIT_FILE_DATA:{const{imgList:n,imgIndex:o,step:i,stepList:l,toolInstance:a,onSubmit:r,resultList:N}=e;if(!a||!n[o])return e;const c=((s=n[o])==null?void 0:s.result)||"",[,d,g]=(I=a==null?void 0:a.exportData())!=null?I:[],f=(A=(u=a==null?void 0:a.exportCustomData)==null?void 0:u.call(a))!=null?A:{},v=data.composeResultWithBasicImgInfo(c,d),E=data.composeResult(v,{step:i,stepList:l},{rect:N},f),S=e.imgList.map((L,m)=>{if(m===o){const R=AnnotationDataUtils.dataCorrection(E,c,i,l);return __spreadValues(__spreadProps(__spreadValues({},L),{result:R}),g)}return L});if(((p=t.payload)==null?void 0:p.submitType)===index.ESubmitType.SyncImgList)return __spreadProps(__spreadValues({},e),{imgList:S});r&&r([S[o]],(O=t.payload)==null?void 0:O.submitType,o,S);const D=calcStepProgress(S,i);return __spreadProps(__spreadValues({},e),{stepProgress:D,imgList:S})}case Actions.ANNOTATION_ACTIONS.SAVE_RESULT:{const{imgList:n,imgIndex:o,onSave:i}=e;return i==null||i(n[o],o,n),__spreadValues({},e)}case Actions.ANNOTATION_ACTIONS.SUBMIT_RESULT:{const{imgList:n,basicIndex:o,resultList:i,toolInstance:l,basicResultList:a}=e;if(!l)return e;const[r]=(T=l==null?void 0:l.exportData())!=null?T:[];let N=r;if((a==null?void 0:a.length)>0){const c=(C=a[o])==null?void 0:C.id,d=r.map(g=>__spreadProps(__spreadValues({},g),{sourceID:c}));N=___default.default.cloneDeep(i).filter(g=>g.sourceID!==c),N.push(...d)}return __spreadProps(__spreadValues({},e),{resultList:N,imgList:n})}case Actions.ANNOTATION_ACTIONS.SET_BASIC_INDEX:{const{toolInstance:n,step:o,imgList:i,imgIndex:l,stepList:a,annotationEngine:r,resultList:N,basicResultList:c}=e;if(!n||!r)return e;const d=t.payload.basicIndex,g=(b=c[d])==null?void 0:b.id,f=index$1.jsonParser((h=i[l])==null?void 0:h.result),v=(N||[]).filter(R=>R.sourceID===g),E=getStepConfig(a,o),{dataSourceStep:S,tool:D}=E,L=getStepConfig(a,S);let m=[];return S&&D&&(m=(U=f[`step_${S}`])==null?void 0:U.result,(m==null?void 0:m.length)>0?(r==null||r.setBasicInfo(L.tool,m[d]),r==null||r.launchOperation()):(r==null||r.setBasicInfo(L.tool),r==null||r.forbidOperation(),es.message.info(lbUtils.i18n.t("NoDependency")))),n==null||n.setResult(v),n==null||n.history.initRecord(v,!0),__spreadProps(__spreadValues({},e),{basicIndex:d})}case Actions.ANNOTATION_ACTIONS.SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED:{const{triggerEventAfterIndexChanged:n}=t.payload;return __spreadProps(__spreadValues({},e),{triggerEventAfterIndexChanged:!!n})}case Actions.ANNOTATION_ACTIONS.LOAD_FILE_DATA:{const{imgList:n,step:o,toolInstance:i,annotationEngine:l,stepList:a}=e;if(!i)return __spreadProps(__spreadValues({},e),{imgIndex:t.payload.nextIndex});const r=StepUtils.getCurrentStepInfo(o,a),{nextIndex:N,imgNode:c,nextBasicIndex:d,imgError:g}=t.payload,f=d!=null?d:0,v=index$1.jsonParser((x=n[N])==null?void 0:x.result),E=v[`step_${r.step}`],S=!E,D={rotate:(B=v.rotate)!=null?B:0,valid:(w=v.valid)!=null?w:!0};c&&g!==!0?l==null||l.setImgNode(c,D):i==null||i.setValid(D.valid);const L=getStepConfig(a,r.step),{dataSourceStep:m,tool:R}=L,z=getStepConfig(a,m),K=m&&R,y=(F=(P=v[`step_${m}`])==null?void 0:P.result)!=null?F:[],j=AnnotationDataUtils.getInitialResultList(E==null?void 0:E.result,i,L,y,S);if(l==null||l.launchOperation(),K&&((y==null?void 0:y.length)>0?l==null||l.setBasicInfo(z.tool,y[f]):(l==null||l.setBasicInfo(z.tool),l==null||l.forbidOperation(),es.message.info(lbUtils.i18n.t("NoDependency")))),r.tool!=="check"){const $=(G=(q=y[f])==null?void 0:q.id)!=null?G:"",W=K?j.filter(X=>lbAnnotation.CommonToolUtils.isSameSourceID(X.sourceID,$)):j;i==null||i.history.initRecord(j,!0),i==null||i.setResult(W)}return __spreadProps(__spreadValues({},e),{imgIndex:N,basicIndex:f,basicResultList:y,resultList:j})}case Actions.ANNOTATION_ACTIONS.UPDATE_ANNOTATION_CONFIG:return __spreadProps(__spreadValues({},e),{config:(V=t.payload.config)!=null?V:"{}"});case Actions.ANNOTATION_ACTIONS.SET_TASK_STEP_LIST:{const{stepList:n}=t.payload;return __spreadProps(__spreadValues({},e),{stepList:n})}case Actions.ANNOTATION_ACTIONS.SET_TASK_CONFIG:{const{stepList:n,step:o}=t.payload;return __spreadProps(__spreadValues({},e),{stepList:n,step:o})}case Actions.ANNOTATION_ACTIONS.INIT_TOOL:{const{imgNode:n}=e,o=updateToolInstance(e,n);if(o){const{toolInstance:i,annotationEngine:l}=o;return __spreadProps(__spreadValues({},e),{toolInstance:i,annotationEngine:l})}return __spreadValues({},e)}case Actions.ANNOTATION_ACTIONS.SET_TOOL:{const n=(M=t.payload)==null?void 0:M.instance;return n?__spreadProps(__spreadValues({},e),{toolInstance:n}):__spreadValues({},e)}case Actions.ANNOTATION_ACTIONS.UPDATE_ON_SUBMIT:return __spreadProps(__spreadValues({},e),{onSubmit:t.payload.onSubmit});case Actions.ANNOTATION_ACTIONS.UPDATE_ON_SAVE:return __spreadProps(__spreadValues({},e),{onSave:t.payload.onSave});case Actions.ANNOTATION_ACTIONS.UPDATE_ON_PAGE_CHANGE:return __spreadProps(__spreadValues({},e),{onPageChange:t.payload.onPageChange});case Actions.ANNOTATION_ACTIONS.UPDATE_ON_STEP_CHANGE:return __spreadProps(__spreadValues({},e),{onStepChange:t.payload.onStepChange});case Actions.ANNOTATION_ACTIONS.UPDATE_GET_FILE_DATA:return __spreadProps(__spreadValues({},e),{getFileData:t.payload.getFileData});case Actions.ANNOTATION_ACTIONS.UPDATE_PAGE_SIZE:return __spreadProps(__spreadValues({},e),{pageSize:t.payload.pageSize});case Actions.ANNOTATION_ACTIONS.UPDATE_LOAD_FILE_LIST:return __spreadProps(__spreadValues({},e),{loadFileList:t.payload.loadFileList});case Actions.ANNOTATION_ACTIONS.UPDATE_BEFORE_ROTATE:return __spreadProps(__spreadValues({},e),{beforeRotate:t.payload.beforeRotate});case Actions.ANNOTATION_ACTIONS.SKIP_BEFORE_PAGE_TURNING:return __spreadProps(__spreadValues({},e),{skipBeforePageTurning:t.payload.skipBeforePageTurning});case Actions.ANNOTATION_ACTIONS.SET_FILE_DATA:{const{fileData:n,index:o}=t.payload,{imgList:i}=e,l=[...i];return l[o]=__spreadValues(__spreadValues({},l[o]),n),__spreadProps(__spreadValues({},e),{imgList:l})}case Actions.ANNOTATION_ACTIONS.UPDATE_ROTATE:{const{toolInstance:n,beforeRotate:o}=e;return o&&o()===!1||n==null||n.updateRotate(),e}case Actions.ANNOTATION_ACTIONS.UPDATE_ANNOTATION_VALID:{const{toolInstance:n}=e,o=(k=n==null?void 0:n.valid)!=null?k:!0;return antd.Modal.destroyAll(),antd.Modal.confirm({content:lbUtils.i18n.t(o?"updateValidFromValidToInValid":"updateValidFromInValidToValid"),onOk:()=>{n==null||n.setValid(!o)},okText:lbUtils.i18n.t("Confirm"),cancelText:lbUtils.i18n.t("Cancel")}),e}case Actions.ANNOTATION_ACTIONS.COPY_BACKWARD_RESULT:{const{toolInstance:n,imgIndex:o,imgList:i,step:l}=e;if(!n)return e;if(o===0||o>=i.length)return console.error("\u65E0\u6CD5\u590D\u5236\u8FB9\u754C\u5916\u7684\u5185\u5BB9"),e;const a=i[o-1].result;if(!a)return e;const r=AnnotationDataUtils.copyResultChange(a,l,(H=i[o].result)!=null?H:"");i[o]=__spreadProps(__spreadValues({},i[o]),{result:r});const c=index$1.jsonParser(r)[`step_${l}`],d=(c==null?void 0:c.result)||[];return n==null||n.setResult(d),n==null||n.history.pushHistory(d),n==null||n.asyncData(i[o]),__spreadProps(__spreadValues({},e),{imgList:[...i]})}case Actions.ANNOTATION_ACTIONS.SET_STEP:{const{stepList:n,annotationEngine:o}=e,{toStep:i}=t.payload;if(!o)return e;const l=getStepConfig(n,i);return o==null||o.setToolName(l.tool,l.config),__spreadProps(__spreadValues({},e),{step:i,toolInstance:o==null?void 0:o.toolInstance})}case Actions.ANNOTATION_ACTIONS.SET_LOADING:{const{loading:n}=t.payload;return __spreadProps(__spreadValues({},e),{loading:!!n})}case Actions.ANNOTATION_ACTIONS.SET_POINT_CLOUD_LOADING:{const{pointCloudLoading:n}=t.payload;return __spreadProps(__spreadValues({},e),{pointCloudLoading:!!n})}case Actions.ANNOTATION_ACTIONS.SET_CHECK_MODE:{const{checkMode:n}=t.payload;return __spreadProps(__spreadValues({},e),{checkMode:!!n})}case Actions.ANNOTATION_ACTIONS.BATCH_UPDATE_TRACK_ID:{const{id:n,newID:o,rangeIndex:i,imgList:l}=t.payload,{imgIndex:a,onSubmit:r}=e,N=[],c=l.map((d,g)=>{if(lbAnnotation.MathUtils.isInRange(g,i)){const f=__spreadProps(__spreadValues({},d),{result:lbUtils.PointCloudUtils.batchUpdateTrackID({id:n,newID:o,result:d.result})});return N.push({imgIndex:g,newInfo:f}),f}return d});return r&&r([c[a]],index.ESubmitType.BatchUpdateTrackID,a,c,{updateImgList:N}),__spreadProps(__spreadValues({},e),{imgList:c})}case Actions.ANNOTATION_ACTIONS.BATCH_UPDATE_RESULT_BY_TRACK_ID:{const{id:n,newData:o,rangeIndex:i}=t.payload,{imgList:l,imgIndex:a,onSubmit:r}=e,N=[],c=l.map((d,g)=>{if(lbAnnotation.MathUtils.isInRange(g,i)){const f=__spreadProps(__spreadValues({},d),{result:lbUtils.PointCloudUtils.batchUpdateResultByTrackID({id:n,newData:o,result:d.result})});return N.push({imgIndex:g,newInfo:f}),f}return d});return r&&r([c[a]],index.ESubmitType.BatchUpdateTrackID,a,c,{updateImgList:N}),__spreadProps(__spreadValues({},e),{imgList:c})}default:return e}};exports.LoadFileAndFileData=LoadFileAndFileData,exports.annotationReducer=annotationReducer,exports.composeResultByToolInstance=composeResultByToolInstance,exports.getStepConfig=getStepConfig,exports.getTotalPage=getTotalPage;
|
|
@@ -41,6 +41,7 @@ export interface IPointCloudContext extends IPointCloudContextInstances {
|
|
|
41
41
|
setDefaultAttribute: (defaultAttribute: string) => void;
|
|
42
42
|
pointCloudPattern: EToolName.Rect | EToolName.Polygon;
|
|
43
43
|
setPointCloudPattern: (toolName: EToolName.Rect | EToolName.Polygon) => void;
|
|
44
|
+
selectSpecAttr: (attr: string) => void;
|
|
44
45
|
}
|
|
45
46
|
export declare const PointCloudContext: React.Context<IPointCloudContext>;
|
|
46
47
|
export declare const PointCloudProvider: React.FC<{}>;
|
|
@@ -51,5 +51,5 @@ export declare const usePointCloudViews: () => {
|
|
|
51
51
|
backViewUpdateBox: (newPolygon: any, originPolygon: any) => void;
|
|
52
52
|
pointCloudBoxListUpdated: (newBoxes: IPointCloudBox[]) => void;
|
|
53
53
|
initPointCloud3d: (size: ISize) => void;
|
|
54
|
-
updatePointCloudData: () => Promise<void>;
|
|
54
|
+
updatePointCloudData: (newData?: any) => Promise<void>;
|
|
55
55
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var PointCloudContext=require("../../../../components/pointCloudView/PointCloudContext.js"),antd=require("antd"),React=require("react"),selectors=require("../../../../store/annotation/selectors.js"),ctx=require("../../../../store/ctx.js"),lbUtils=require("@labelbee/lb-utils"),icons=require("@ant-design/icons"),useHistory=require("../../../../components/pointCloudView/hooks/useHistory.js"),dom=require("../../../../utils/dom.js"),StepUtils=require("../../../../utils/StepUtils.js"),lbAnnotation=require("@labelbee/lb-annotation"),reactI18next=require("react-i18next"),FooterPopover=require("../FooterPopover.js");function _interopDefaultLegacy(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}var React__default=_interopDefaultLegacy(React);const AnnotatedAttributesItem=({attribute:t})=>{const s=React.useContext(PointCloudContext.PointCloudContext),{pointCloudBoxList:
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var PointCloudContext=require("../../../../components/pointCloudView/PointCloudContext.js"),antd=require("antd"),React=require("react"),selectors=require("../../../../store/annotation/selectors.js"),ctx=require("../../../../store/ctx.js"),lbUtils=require("@labelbee/lb-utils"),icons=require("@ant-design/icons"),useHistory=require("../../../../components/pointCloudView/hooks/useHistory.js"),dom=require("../../../../utils/dom.js"),StepUtils=require("../../../../utils/StepUtils.js"),lbAnnotation=require("@labelbee/lb-annotation"),reactI18next=require("react-i18next"),FooterPopover=require("../FooterPopover.js");function _interopDefaultLegacy(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}var React__default=_interopDefaultLegacy(React);const AnnotatedAttributesItem=({attribute:t})=>{const s=React.useContext(PointCloudContext.PointCloudContext),{pointCloudBoxList:l,hideAttributes:a,toggleAttributesVisible:r,polygonList:n,setPolygonList:u,setPointCloudResult:d,reRender:o,selectSpecAttr:x}=s,[c,g]=React.useState(!0),{pushHistoryWithList:v}=useHistory.useHistory(),p=[...l,...n].filter(e=>e.attribute===t.value),C=()=>{r(t.value)},b=a.includes(t.value),y=({trackID:e,order:i})=>e||i,A=({trackID:e,order:i})=>e?`trackID_${e}`:`order_${i}`,E=e=>{if(p.length===0)return;const i=n.filter(f=>e!==f.attribute),m=l.filter(f=>e!==f.attribute);o(m,i),u(i),d(m),v({pointCloudBoxList:m,polygonList:i})},P=e=>{antd.Modal.confirm({content:lbUtils.i18n.t("onDeleteGraphByAttr",{attribute:e.key}),onOk:()=>{E(e.value)},okText:lbUtils.i18n.t("Confirm"),cancelText:lbUtils.i18n.t("Cancel")})};return React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement("div",{className:dom.getClassName("annotated-attribute","item")},b?React__default.default.createElement(icons.EyeInvisibleFilled,{onClick:C}):React__default.default.createElement(icons.EyeFilled,{onClick:C}),React__default.default.createElement(icons.CaretDownFilled,{rotate:c?0:270,onClick:()=>{g(!c)}}),React__default.default.createElement("span",{className:dom.getClassName("annotated-attribute","item","text"),onClick:()=>{x(t.value)}},t.key),React__default.default.createElement(icons.DeleteOutlined,{onClick:()=>P(t)})),c&&p.map(e=>React__default.default.createElement("div",{key:A(e),style:{paddingLeft:54}},`${y(e)}.${t.key}`)))},AnnotatedAttributesPanel=()=>{const t=ctx.useSelector(selectors.stepConfigSelector),{attrPanelLayout:s,setAttrPanelLayout:l,pointCloudBoxList:a,polygonList:r}=React.useContext(PointCloudContext.PointCloudContext),{t:n}=reactI18next.useTranslation(),u=React.useMemo(()=>[...a,...r].map(o=>o.attribute),[a,r]),d=React.useMemo(()=>t.attributeList.filter(o=>u.includes(o.value)),[u]);return React__default.default.createElement("div",{className:dom.getClassName("annotated-attribute")},s?React__default.default.createElement("div",{className:dom.getClassName("annotated-attribute","text")},React__default.default.createElement("span",null,n("AnnotatedResult")),React__default.default.createElement("span",{className:dom.getClassName("annotated-attribute","pin"),onClick:()=>{l("")}},React__default.default.createElement(icons.PushpinFilled,null),n("CancelFixed"))):React__default.default.createElement("div",{className:dom.getClassName("annotated-attribute","text")},React__default.default.createElement("span",{onClick:()=>{l("left")},className:dom.getClassName("annotated-attribute","pin")},React__default.default.createElement(icons.PushpinFilled,null),n("FixedOnLeft")),React__default.default.createElement("span",{onClick:()=>{l("right")},className:dom.getClassName("annotated-attribute","pin")},React__default.default.createElement(icons.PushpinFilled,null),n("FixedOnRight"))),React__default.default.createElement("div",null,d.length>0?d.map(o=>React__default.default.createElement(AnnotatedAttributesItem,{attribute:o,key:o.value})):React__default.default.createElement("div",{style:{textAlign:"center",height:200,lineHeight:"200px"}},n("NoData"))))},AnnotatedAttributesPanelFixedLeft=()=>{const{attrPanelLayout:t}=React.useContext(PointCloudContext.PointCloudContext);return t==="left"?React__default.default.createElement(AnnotatedAttributesPanel,null):null},AnnotatedAttributesPanelFixedRight=()=>{const{attrPanelLayout:t}=React.useContext(PointCloudContext.PointCloudContext);return t==="right"?React__default.default.createElement(AnnotatedAttributesPanel,null):null},AnnotatedAttributesIcon=()=>{const{attrPanelLayout:t}=React.useContext(PointCloudContext.PointCloudContext),{t:s}=reactI18next.useTranslation(),l=ctx.useSelector(a=>{var r,n;return StepUtils.getCurrentStepInfo((r=a==null?void 0:a.annotation)==null?void 0:r.step,(n=a.annotation)==null?void 0:n.stepList)});return(l==null?void 0:l.tool)!==lbAnnotation.EPointCloudName.PointCloud||t?null:React__default.default.createElement(FooterPopover,{hoverIcon:React__default.default.createElement(icons.UnorderedListOutlined,{style:{marginRight:4}}),icon:React__default.default.createElement(icons.UnorderedListOutlined,{style:{marginRight:4}}),title:s("AnnotatedList"),content:React__default.default.createElement(AnnotatedAttributesPanel,null)})};exports.AnnotatedAttributesIcon=AnnotatedAttributesIcon,exports.AnnotatedAttributesPanel=AnnotatedAttributesPanel,exports.AnnotatedAttributesPanelFixedLeft=AnnotatedAttributesPanelFixedLeft,exports.AnnotatedAttributesPanelFixedRight=AnnotatedAttributesPanelFixedRight;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import H,{useState as o,useRef as
|
|
1
|
+
import H,{useState as o,useRef as tt,useMemo as E,useEffect as et}from"react";import{ActionsHistory as k,EToolName as M}from"@labelbee/lb-annotation";const O=H.createContext({pointCloudBoxList:[],displayPointCloudList:[],polygonList:[],selectedID:"",selectedIDs:[],valid:!0,setSelectedIDs:()=>{},setPointCloudResult:()=>{},setPointCloudValid:()=>{},setTopViewInstance:()=>{},setSideViewInstance:()=>{},setBackViewInstance:()=>{},setMainViewInstance:()=>{},addSelectedID:()=>{},selectedAllBoxes:()=>{},addPointCloudBox:()=>[],setPolygonList:()=>{},zoom:1,setZoom:()=>{},history:new k,hideAttributes:[],setHideAttributes:()=>{},toggleAttributesVisible:()=>{},reRender:()=>{},setAttrPanelLayout:()=>{},attrPanelLayout:"",syncAllViewPointCloudColor:()=>{},defaultAttribute:"",setDefaultAttribute:()=>{},pointCloudPattern:M.Rect,setPointCloudPattern:()=>{},selectSpecAttr:()=>{}}),ot=({children:T})=>{const[n,m]=o([]),[u,z]=o([]),[i,f]=o([]),[w,F]=o(!0),[y,N]=o(1),[r,Z]=o(),[I,j]=o(),[V,q]=o(),[l,G]=o(),[v,J]=o(""),[g,K]=o(M.Rect),Q=tt(new k).current,[s,P]=o([]),[S,U]=o(""),L=E(()=>i.length===1?i[0]:"",[i]),h=E(()=>{const a=n.find(t=>t.id===L),C=t=>{const e=n.concat(t);return m(e),e},p=t=>{F(t!==!1)},d=t=>{t===void 0&&f([]),typeof t=="string"&&f([t]),Array.isArray(t)&&f(Array.from(new Set(t)))},c=t=>{i.includes(t)?d(i.filter(e=>e!==t)):d([...i,t])},X=()=>{d(n.map(t=>t.id))},Y=t=>{d(n.filter(e=>e.attribute===t).map(e=>e.id))},x=n.filter(t=>!s.includes(t.attribute)),_=t=>{if(s.includes(t))P(s.filter(e=>e!==t));else{const e=s.concat(t);P(e)}},$=(t=x,e=u)=>{n.forEach(A=>{l==null||l.removeObjectByName(A.id)}),r==null||r.updatePolygonList(t,e),l==null||l.generateBoxes(t),B(t)},B=t=>{const e=l==null?void 0:l.highlightOriginPointCloud(t);return new Promise(A=>{e==null||e.then(b=>{[r].forEach(R=>{var D;b&&((D=R==null?void 0:R.pointCloudInstance)==null||D.updateColor(b),A({color:b}))})})})};return{selectedID:L,pointCloudBoxList:n,displayPointCloudList:x,selectedIDs:i,setPointCloudResult:m,setSelectedIDs:d,addPointCloudBox:C,valid:w,selectedPointCloudBox:a,setPointCloudValid:p,addSelectedID:c,selectedAllBoxes:X,topViewInstance:r,setTopViewInstance:Z,sideViewInstance:I,setSideViewInstance:j,backViewInstance:V,setBackViewInstance:q,mainViewInstance:l,setMainViewInstance:G,polygonList:u,setPolygonList:z,zoom:y,setZoom:N,history:Q,toggleAttributesVisible:_,hideAttributes:s,setHideAttributes:P,reRender:$,attrPanelLayout:S,setAttrPanelLayout:U,syncAllViewPointCloudColor:B,defaultAttribute:v,setDefaultAttribute:J,pointCloudPattern:g,setPointCloudPattern:K,selectSpecAttr:Y}},[w,i,n,u,r,I,V,l,y,s,S,v,g]),W=()=>{const a=n.filter(c=>s.includes(c.attribute)),{setSelectedIDs:C,reRender:p}=h,d=a.map(c=>c.id);d.length>0&&C(i.filter(c=>!d.includes(c))),p()};return et(()=>{var a;W(),(a=r==null?void 0:r.pointCloud2dOperation)==null||a.setHiddenAttributes(s)},[s]),H.createElement(O.Provider,{value:h},T)};export{O as PointCloudContext,ot as PointCloudProvider};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointCloudContext.js","sources":["../../../src/components/pointCloudView/PointCloudContext.tsx"],"sourcesContent":["import { IPointCloudBox, IPointCloudBoxList, IPolygonData } from '@labelbee/lb-utils';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport {\n PointCloud,\n PointCloudAnnotation,\n ActionsHistory,\n EToolName,\n} from '@labelbee/lb-annotation';\n\ninterface IPointCloudContextInstances {\n topViewInstance?: PointCloudAnnotation;\n sideViewInstance?: PointCloudAnnotation;\n backViewInstance?: PointCloudAnnotation;\n mainViewInstance?: PointCloud;\n setTopViewInstance: (instance: PointCloudAnnotation) => void;\n setSideViewInstance: (instance: PointCloudAnnotation) => void;\n setBackViewInstance: (instance: PointCloudAnnotation) => void;\n setMainViewInstance: (instance: PointCloud) => void;\n}\n\ntype AttrPanelLayout = '' | 'left' | 'right';\n\nexport interface IPointCloudContext extends IPointCloudContextInstances {\n pointCloudBoxList: IPointCloudBoxList;\n displayPointCloudList: IPointCloudBoxList;\n selectedIDs: string[];\n setSelectedIDs: (ids?: string[] | string) => void;\n valid: boolean;\n setPointCloudResult: (resultList: IPointCloudBoxList) => void;\n selectedPointCloudBox?: IPointCloudBox;\n setPointCloudValid: (valid?: boolean) => void;\n addSelectedID: (selectedID: string) => void;\n selectedAllBoxes: () => void;\n selectedID: string;\n addPointCloudBox: (boxParams: IPointCloudBox) => IPointCloudBox[];\n\n polygonList: IPolygonData[];\n setPolygonList: (polygonList: IPolygonData[]) => void;\n\n zoom: number;\n setZoom: (zoom: number) => void;\n\n history: ActionsHistory; // Operation History\n hideAttributes: string[];\n setHideAttributes: (hideAttrs: string[]) => void;\n toggleAttributesVisible: (attribute: string) => void;\n reRender: (_displayPointCloudList: IPointCloudBoxList, _polygonList: IPolygonData[]) => void;\n attrPanelLayout: AttrPanelLayout;\n setAttrPanelLayout: (layout: AttrPanelLayout) => void;\n\n syncAllViewPointCloudColor: (newPointCloudList?: IPointCloudBox[]) => void;\n\n defaultAttribute: string;\n setDefaultAttribute: (defaultAttribute: string) => void;\n\n pointCloudPattern: EToolName.Rect | EToolName.Polygon;\n setPointCloudPattern: (toolName: EToolName.Rect | EToolName.Polygon) => void;\n}\n\nexport const PointCloudContext = React.createContext<IPointCloudContext>({\n pointCloudBoxList: [],\n displayPointCloudList: [],\n polygonList: [],\n selectedID: '',\n selectedIDs: [],\n valid: true,\n setSelectedIDs: () => {},\n setPointCloudResult: () => {},\n setPointCloudValid: () => {},\n setTopViewInstance: () => {},\n setSideViewInstance: () => {},\n setBackViewInstance: () => {},\n setMainViewInstance: () => {},\n addSelectedID: () => {},\n selectedAllBoxes: () => {},\n addPointCloudBox: () => {\n return [];\n },\n setPolygonList: () => {},\n\n zoom: 1,\n setZoom: () => {},\n history: new ActionsHistory(),\n hideAttributes: [],\n setHideAttributes: () => {},\n toggleAttributesVisible: () => {},\n reRender: () => {},\n setAttrPanelLayout: () => {},\n attrPanelLayout: '',\n syncAllViewPointCloudColor: () => {},\n\n defaultAttribute: '',\n setDefaultAttribute: () => {},\n\n pointCloudPattern: EToolName.Rect,\n setPointCloudPattern: () => {},\n});\n\nexport const PointCloudProvider: React.FC<{}> = ({ children }) => {\n const [pointCloudBoxList, setPointCloudResult] = useState<IPointCloudBoxList>([]);\n const [polygonList, setPolygonList] = useState<IPolygonData[]>([]);\n const [selectedIDs, setSelectedIDsState] = useState<string[]>([]);\n const [valid, setValid] = useState<boolean>(true);\n const [zoom, setZoom] = useState<number>(1);\n const [topViewInstance, setTopViewInstance] = useState<PointCloudAnnotation>();\n const [sideViewInstance, setSideViewInstance] = useState<PointCloudAnnotation>();\n const [backViewInstance, setBackViewInstance] = useState<PointCloudAnnotation>();\n const [mainViewInstance, setMainViewInstance] = useState<PointCloud>();\n const [defaultAttribute, setDefaultAttribute] = useState('');\n const [pointCloudPattern, setPointCloudPattern] = useState<EToolName.Rect | EToolName.Polygon>(\n EToolName.Rect,\n );\n const history = useRef(new ActionsHistory()).current;\n const [hideAttributes, setHideAttributes] = useState<string[]>([]);\n const [attrPanelLayout, setAttrPanelLayout] = useState<AttrPanelLayout>('');\n\n const selectedID = useMemo(() => {\n return selectedIDs.length === 1 ? selectedIDs[0] : '';\n }, [selectedIDs]);\n\n const ptCtx = useMemo(() => {\n const selectedPointCloudBox = pointCloudBoxList.find((v) => v.id === selectedID);\n\n const addPointCloudBox = (box: IPointCloudBox) => {\n const newPointCloudList = pointCloudBoxList.concat(box);\n setPointCloudResult(newPointCloudList);\n return newPointCloudList;\n };\n\n const setPointCloudValid = (valid?: boolean) => {\n setValid(valid === false ? false : true);\n };\n\n const setSelectedIDs = (selectedIDs?: string[] | string) => {\n if (selectedIDs === undefined) {\n setSelectedIDsState([]);\n }\n\n if (typeof selectedIDs === 'string') {\n setSelectedIDsState([selectedIDs]);\n }\n\n if (Array.isArray(selectedIDs)) {\n setSelectedIDsState(Array.from(new Set(selectedIDs)));\n }\n };\n\n /**\n * If selectedID existed, remove selectedID from selectedIDs\n * If selectedID not existed, add selectedID to selectedIDs\n * @param selectedID\n */\n const addSelectedID = (selectedID: string) => {\n if (selectedIDs.includes(selectedID)) {\n setSelectedIDs(selectedIDs.filter((i) => i !== selectedID));\n } else {\n setSelectedIDs([...selectedIDs, selectedID]);\n }\n };\n\n const selectedAllBoxes = () => {\n setSelectedIDs(pointCloudBoxList.map((i) => i.id));\n };\n\n const displayPointCloudList = pointCloudBoxList.filter(\n (i) => !hideAttributes.includes(i.attribute),\n );\n\n const toggleAttributesVisible = (tAttribute: string) => {\n if (hideAttributes.includes(tAttribute)) {\n setHideAttributes(hideAttributes.filter((attribute) => attribute !== tAttribute));\n } else {\n const updatedHideAttributes = hideAttributes.concat(tAttribute);\n setHideAttributes(updatedHideAttributes);\n }\n };\n\n const reRender = (\n _displayPointCloudList: IPointCloudBoxList = displayPointCloudList,\n _polygonList: IPolygonData[] = polygonList,\n ) => {\n pointCloudBoxList.forEach((v) => {\n mainViewInstance?.removeObjectByName(v.id);\n });\n\n topViewInstance?.updatePolygonList(_displayPointCloudList, _polygonList);\n mainViewInstance?.generateBoxes(_displayPointCloudList);\n syncAllViewPointCloudColor(_displayPointCloudList);\n };\n\n /**\n * Synchronize the highlighted pointCloud for all views.\n * @param pointCloudList\n */\n\n const syncAllViewPointCloudColor = (pointCloudList?: IPointCloudBox[]) => {\n const colorPromise = mainViewInstance?.highlightOriginPointCloud(pointCloudList);\n return new Promise((resolve) => {\n colorPromise?.then((color) => {\n [topViewInstance].forEach((instance) => {\n if (color) {\n instance?.pointCloudInstance?.updateColor(color);\n resolve({ color });\n }\n });\n // TODO: Sync sideView & backView Color.\n });\n });\n };\n\n return {\n selectedID,\n pointCloudBoxList,\n displayPointCloudList,\n selectedIDs,\n setPointCloudResult,\n setSelectedIDs,\n addPointCloudBox,\n valid,\n selectedPointCloudBox,\n setPointCloudValid,\n addSelectedID,\n selectedAllBoxes,\n topViewInstance,\n setTopViewInstance,\n sideViewInstance,\n setSideViewInstance,\n backViewInstance,\n setBackViewInstance,\n mainViewInstance,\n setMainViewInstance,\n polygonList,\n setPolygonList,\n zoom,\n setZoom,\n history,\n toggleAttributesVisible,\n hideAttributes,\n setHideAttributes,\n reRender,\n attrPanelLayout,\n setAttrPanelLayout,\n syncAllViewPointCloudColor,\n defaultAttribute,\n setDefaultAttribute,\n pointCloudPattern,\n setPointCloudPattern,\n };\n }, [\n valid,\n selectedIDs,\n pointCloudBoxList,\n polygonList,\n topViewInstance,\n sideViewInstance,\n backViewInstance,\n mainViewInstance,\n zoom,\n hideAttributes,\n attrPanelLayout,\n defaultAttribute,\n pointCloudPattern,\n ]);\n\n const updateSelectedIDsAndRenderAfterHide = () => {\n const pointCloudForFilteredList = pointCloudBoxList.filter((i) =>\n hideAttributes.includes(i.attribute),\n );\n\n const { setSelectedIDs, reRender } = ptCtx;\n\n const filteredIDs = pointCloudForFilteredList.map((i) => i.id);\n\n if (filteredIDs.length > 0) {\n setSelectedIDs(selectedIDs.filter((id) => !filteredIDs.includes(id)));\n }\n\n reRender();\n };\n\n useEffect(() => {\n updateSelectedIDsAndRenderAfterHide();\n topViewInstance?.pointCloud2dOperation?.setHiddenAttributes(hideAttributes);\n }, [hideAttributes]);\n\n return <PointCloudContext.Provider value={ptCtx}>{children}</PointCloudContext.Provider>;\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PointCloudContext.js","sources":["../../../src/components/pointCloudView/PointCloudContext.tsx"],"sourcesContent":["import { IPointCloudBox, IPointCloudBoxList, IPolygonData } from '@labelbee/lb-utils';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport {\n PointCloud,\n PointCloudAnnotation,\n ActionsHistory,\n EToolName,\n} from '@labelbee/lb-annotation';\n\ninterface IPointCloudContextInstances {\n topViewInstance?: PointCloudAnnotation;\n sideViewInstance?: PointCloudAnnotation;\n backViewInstance?: PointCloudAnnotation;\n mainViewInstance?: PointCloud;\n setTopViewInstance: (instance: PointCloudAnnotation) => void;\n setSideViewInstance: (instance: PointCloudAnnotation) => void;\n setBackViewInstance: (instance: PointCloudAnnotation) => void;\n setMainViewInstance: (instance: PointCloud) => void;\n}\n\ntype AttrPanelLayout = '' | 'left' | 'right';\n\nexport interface IPointCloudContext extends IPointCloudContextInstances {\n pointCloudBoxList: IPointCloudBoxList;\n displayPointCloudList: IPointCloudBoxList;\n selectedIDs: string[];\n setSelectedIDs: (ids?: string[] | string) => void;\n valid: boolean;\n setPointCloudResult: (resultList: IPointCloudBoxList) => void;\n selectedPointCloudBox?: IPointCloudBox;\n setPointCloudValid: (valid?: boolean) => void;\n addSelectedID: (selectedID: string) => void;\n selectedAllBoxes: () => void;\n selectedID: string;\n addPointCloudBox: (boxParams: IPointCloudBox) => IPointCloudBox[];\n\n polygonList: IPolygonData[];\n setPolygonList: (polygonList: IPolygonData[]) => void;\n\n zoom: number;\n setZoom: (zoom: number) => void;\n\n history: ActionsHistory; // Operation History\n hideAttributes: string[];\n setHideAttributes: (hideAttrs: string[]) => void;\n toggleAttributesVisible: (attribute: string) => void;\n reRender: (_displayPointCloudList: IPointCloudBoxList, _polygonList: IPolygonData[]) => void;\n attrPanelLayout: AttrPanelLayout;\n setAttrPanelLayout: (layout: AttrPanelLayout) => void;\n\n syncAllViewPointCloudColor: (newPointCloudList?: IPointCloudBox[]) => void;\n\n defaultAttribute: string;\n setDefaultAttribute: (defaultAttribute: string) => void;\n\n pointCloudPattern: EToolName.Rect | EToolName.Polygon;\n setPointCloudPattern: (toolName: EToolName.Rect | EToolName.Polygon) => void;\n selectSpecAttr: (attr: string) => void;\n}\n\nexport const PointCloudContext = React.createContext<IPointCloudContext>({\n pointCloudBoxList: [],\n displayPointCloudList: [],\n polygonList: [],\n selectedID: '',\n selectedIDs: [],\n valid: true,\n setSelectedIDs: () => {},\n setPointCloudResult: () => {},\n setPointCloudValid: () => {},\n setTopViewInstance: () => {},\n setSideViewInstance: () => {},\n setBackViewInstance: () => {},\n setMainViewInstance: () => {},\n addSelectedID: () => {},\n selectedAllBoxes: () => {},\n addPointCloudBox: () => {\n return [];\n },\n setPolygonList: () => {},\n\n zoom: 1,\n setZoom: () => {},\n history: new ActionsHistory(),\n hideAttributes: [],\n setHideAttributes: () => {},\n toggleAttributesVisible: () => {},\n reRender: () => {},\n setAttrPanelLayout: () => {},\n attrPanelLayout: '',\n syncAllViewPointCloudColor: () => {},\n\n defaultAttribute: '',\n setDefaultAttribute: () => {},\n\n pointCloudPattern: EToolName.Rect,\n setPointCloudPattern: () => {},\n selectSpecAttr: () => {},\n});\n\nexport const PointCloudProvider: React.FC<{}> = ({ children }) => {\n const [pointCloudBoxList, setPointCloudResult] = useState<IPointCloudBoxList>([]);\n const [polygonList, setPolygonList] = useState<IPolygonData[]>([]);\n const [selectedIDs, setSelectedIDsState] = useState<string[]>([]);\n const [valid, setValid] = useState<boolean>(true);\n const [zoom, setZoom] = useState<number>(1);\n const [topViewInstance, setTopViewInstance] = useState<PointCloudAnnotation>();\n const [sideViewInstance, setSideViewInstance] = useState<PointCloudAnnotation>();\n const [backViewInstance, setBackViewInstance] = useState<PointCloudAnnotation>();\n const [mainViewInstance, setMainViewInstance] = useState<PointCloud>();\n const [defaultAttribute, setDefaultAttribute] = useState('');\n const [pointCloudPattern, setPointCloudPattern] = useState<EToolName.Rect | EToolName.Polygon>(\n EToolName.Rect,\n );\n const history = useRef(new ActionsHistory()).current;\n const [hideAttributes, setHideAttributes] = useState<string[]>([]);\n const [attrPanelLayout, setAttrPanelLayout] = useState<AttrPanelLayout>('');\n\n const selectedID = useMemo(() => {\n return selectedIDs.length === 1 ? selectedIDs[0] : '';\n }, [selectedIDs]);\n\n const ptCtx = useMemo(() => {\n const selectedPointCloudBox = pointCloudBoxList.find((v) => v.id === selectedID);\n\n const addPointCloudBox = (box: IPointCloudBox) => {\n const newPointCloudList = pointCloudBoxList.concat(box);\n setPointCloudResult(newPointCloudList);\n return newPointCloudList;\n };\n\n const setPointCloudValid = (valid?: boolean) => {\n setValid(valid === false ? false : true);\n };\n\n const setSelectedIDs = (selectedIDs?: string[] | string) => {\n if (selectedIDs === undefined) {\n setSelectedIDsState([]);\n }\n\n if (typeof selectedIDs === 'string') {\n setSelectedIDsState([selectedIDs]);\n }\n\n if (Array.isArray(selectedIDs)) {\n setSelectedIDsState(Array.from(new Set(selectedIDs)));\n }\n };\n\n /**\n * If selectedID existed, remove selectedID from selectedIDs\n * If selectedID not existed, add selectedID to selectedIDs\n * @param selectedID\n */\n const addSelectedID = (selectedID: string) => {\n if (selectedIDs.includes(selectedID)) {\n setSelectedIDs(selectedIDs.filter((i) => i !== selectedID));\n } else {\n setSelectedIDs([...selectedIDs, selectedID]);\n }\n };\n\n const selectedAllBoxes = () => {\n setSelectedIDs(pointCloudBoxList.map((i) => i.id));\n };\n\n const selectSpecAttr = (attr: string) => {\n setSelectedIDs(pointCloudBoxList.filter((i) => i.attribute === attr).map((i) => i.id));\n };\n\n const displayPointCloudList = pointCloudBoxList.filter(\n (i) => !hideAttributes.includes(i.attribute),\n );\n\n const toggleAttributesVisible = (tAttribute: string) => {\n if (hideAttributes.includes(tAttribute)) {\n setHideAttributes(hideAttributes.filter((attribute) => attribute !== tAttribute));\n } else {\n const updatedHideAttributes = hideAttributes.concat(tAttribute);\n setHideAttributes(updatedHideAttributes);\n }\n };\n\n const reRender = (\n _displayPointCloudList: IPointCloudBoxList = displayPointCloudList,\n _polygonList: IPolygonData[] = polygonList,\n ) => {\n pointCloudBoxList.forEach((v) => {\n mainViewInstance?.removeObjectByName(v.id);\n });\n\n topViewInstance?.updatePolygonList(_displayPointCloudList, _polygonList);\n mainViewInstance?.generateBoxes(_displayPointCloudList);\n syncAllViewPointCloudColor(_displayPointCloudList);\n };\n\n /**\n * Synchronize the highlighted pointCloud for all views.\n * @param pointCloudList\n */\n\n const syncAllViewPointCloudColor = (pointCloudList?: IPointCloudBox[]) => {\n const colorPromise = mainViewInstance?.highlightOriginPointCloud(pointCloudList);\n return new Promise((resolve) => {\n colorPromise?.then((color) => {\n [topViewInstance].forEach((instance) => {\n if (color) {\n instance?.pointCloudInstance?.updateColor(color);\n resolve({ color });\n }\n });\n // TODO: Sync sideView & backView Color.\n });\n });\n };\n\n return {\n selectedID,\n pointCloudBoxList,\n displayPointCloudList,\n selectedIDs,\n setPointCloudResult,\n setSelectedIDs,\n addPointCloudBox,\n valid,\n selectedPointCloudBox,\n setPointCloudValid,\n addSelectedID,\n selectedAllBoxes,\n topViewInstance,\n setTopViewInstance,\n sideViewInstance,\n setSideViewInstance,\n backViewInstance,\n setBackViewInstance,\n mainViewInstance,\n setMainViewInstance,\n polygonList,\n setPolygonList,\n zoom,\n setZoom,\n history,\n toggleAttributesVisible,\n hideAttributes,\n setHideAttributes,\n reRender,\n attrPanelLayout,\n setAttrPanelLayout,\n syncAllViewPointCloudColor,\n defaultAttribute,\n setDefaultAttribute,\n pointCloudPattern,\n setPointCloudPattern,\n selectSpecAttr,\n };\n }, [\n valid,\n selectedIDs,\n pointCloudBoxList,\n polygonList,\n topViewInstance,\n sideViewInstance,\n backViewInstance,\n mainViewInstance,\n zoom,\n hideAttributes,\n attrPanelLayout,\n defaultAttribute,\n pointCloudPattern,\n ]);\n\n const updateSelectedIDsAndRenderAfterHide = () => {\n const pointCloudForFilteredList = pointCloudBoxList.filter((i) =>\n hideAttributes.includes(i.attribute),\n );\n\n const { setSelectedIDs, reRender } = ptCtx;\n\n const filteredIDs = pointCloudForFilteredList.map((i) => i.id);\n\n if (filteredIDs.length > 0) {\n setSelectedIDs(selectedIDs.filter((id) => !filteredIDs.includes(id)));\n }\n\n reRender();\n };\n\n useEffect(() => {\n updateSelectedIDsAndRenderAfterHide();\n topViewInstance?.pointCloud2dOperation?.setHiddenAttributes(hideAttributes);\n }, [hideAttributes]);\n\n return <PointCloudContext.Provider value={ptCtx}>{children}</PointCloudContext.Provider>;\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{PointCloudContext as $}from"./PointCloudContext.js";import{useRotate as J}from"./hooks/useRotate.js";import{useBoxes as Q}from"./hooks/useBoxes.js";import{useSingleBox as X}from"./hooks/useSingleBox.js";import{useContext as Z,useEffect as d}from"react";import{CommonToolUtils as ee,AttributeUtils as te,EToolName as
|
|
1
|
+
import{PointCloudContext as $}from"./PointCloudContext.js";import{useRotate as J}from"./hooks/useRotate.js";import{useBoxes as Q}from"./hooks/useBoxes.js";import{useSingleBox as X}from"./hooks/useSingleBox.js";import{useContext as Z,useEffect as d}from"react";import{CommonToolUtils as ee,AttributeUtils as te,EToolName as b,cTool as oe}from"@labelbee/lb-annotation";import{message as w}from"antd";import{connect as re}from"react-redux";import{a2MapStateToProps as se}from"../../store/annotation/map.js";import{useCustomToolInstance as ne}from"../../hooks/annotation.js";import{useStatus as ae}from"./hooks/useStatus.js";import{jsonParser as ie}from"../../utils/index.js";import{usePointCloudViews as ue}from"./hooks/usePointCloudViews.js";import{LabelBeeContext as le}from"../../store/ctx.js";import{useHistory as ce}from"./hooks/useHistory.js";import{useAttribute as de}from"./hooks/useAttribute.js";import{useConfig as pe}from"./hooks/useConfig.js";import{usePolygon as me}from"./hooks/usePolygon.js";import{useTranslation as fe}from"react-i18next";var be=Object.defineProperty,ye=Object.defineProperties,Pe=Object.getOwnPropertyDescriptors,S=Object.getOwnPropertySymbols,ve=Object.prototype.hasOwnProperty,we=Object.prototype.propertyIsEnumerable,O=(i,r,a)=>r in i?be(i,r,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[r]=a,V=(i,r)=>{for(var a in r||(r={}))ve.call(r,a)&&O(i,a,r[a]);if(S)for(var a of S(r))we.call(r,a)&&O(i,a,r[a]);return i},I=(i,r)=>ye(i,Pe(r));const{EPolygonPattern:Ce}=oe,xe=({currentData:i,config:r,checkMode:a,configString:A,imgIndex:C})=>{const o=Z($),{changeSelectedBoxValid:j,selectNextBox:L,selectPrevBox:D,updateSelectedBox:x,deleteSelectedPointCloudBoxAndPolygon:T}=X(),{clearAllResult:y,updatePointCloudPattern:E}=ae(),R=ie(i.result),{copySelectedBoxes:K,pasteSelectedBoxes:N,copiedBoxes:H}=Q({config:r}),{toolInstanceRef:n}=ne({basicInfo:R}),{updateRotate:P}=J({currentData:i}),{updatePointCloudData:m,topViewSelectedChanged:U}=ue(),{redo:g,undo:k,pushHistoryWithList:z,pushHistoryUnderUpdatePolygon:F}=ce(),{syncThreeViewsAttribute:h}=de(),{syncAllViewsConfig:q,reRenderTopViewRange:G}=pe(),{selectedPolygon:_}=me(),{t:v}=fe(),f=e=>{var t;const{topViewInstance:s}=o;!s||(t=s.pointCloud2dOperation)==null||t.updateSelectedPolygonsPoints(e)},M=(e,t)=>{var s;const{topViewInstance:u,mainViewInstance:l}=o;if(!u)return;const{pointCloud2dOperation:c}=u;switch(e){case"q":{P(2);break}case"e":P(-2);break;case"g":P(180);break;case"u":{const p=c.pattern===Ce.Normal?b.Rect:b.Polygon;E(p);const Y={[b.Polygon]:v("PolygonPattern"),[b.Rect]:v("RectPattern")};w.success(v("ChangePatternMsg",{pattern:Y[p]})),c.clearActiveStatus(),c.clearDrawingStatus()}break;case"+":l==null||l.updatePointSize(!0);break;case"-":l==null||l.updatePointSize(!1);break;case"v":o.setPointCloudValid(!o.valid);break;case"tab":if(t.shiftKey){D();break}L(),t.preventDefault();break;case"f":j();break;case"arrowup":f({y:-1});break;case"arrowdown":f({y:1});break;case"arrowleft":f({x:-1});break;case"arrowright":f({x:1});break;case"delete":T();break;default:{if(((s=r.attributeList)==null?void 0:s.length)>0){const p=te.getAttributeByKeycode(t.keyCode,r.attributeList);p!==void 0&&n.current.setDefaultAttribute(p)}return}}},W=(e,t)=>{switch(e){case"c":K();break;case"v":N();break;case"a":t.preventDefault(),o.selectedAllBoxes();break;case"z":{t.shiftKey?g():k();break}}},B=e=>{if(!ee.hotkeyFilter(e)||a===!0)return;const t=e.key.toLocaleLowerCase();if(e.ctrlKey){W(t,e);return}M(t,e)};return d(()=>{const{topViewInstance:e}=o;if(!!e)return window.addEventListener("keydown",B),()=>{window.removeEventListener("keydown",B)}},[o,H,r,o.pointCloudBoxList,o.polygonList]),d(()=>{q(r)},[A]),d(()=>{(r==null?void 0:r.radius)&&G(r==null?void 0:r.radius)},[r==null?void 0:r.radius]),d(()=>{m==null||m()},[C,o.mainViewInstance]),d(()=>{o.setHideAttributes([])},[C]),d(()=>{n.current.exportData=()=>[o.pointCloudBoxList,{valid:o.valid}],n.current.exportCustomData=()=>{var e;return{resultPolygon:(e=o.polygonList)!=null?e:[]}},n.current.setDefaultAttribute=e=>{h(e);const t=o.selectedPointCloudBox;if(t){t.attribute=e;const s=x(t);o.mainViewInstance&&U(t,s)}_&&F(I(V({},_),{attribute:e}))},n.current.setSubAttribute=(e,t)=>{var s;const u=o.selectedPointCloudBox;if(u){const l=(s=u==null?void 0:u.subAttribute)!=null?s:{};u.subAttribute=I(V({},l),{[e]:t}),x(u)}},n.current.clearResult=()=>{y==null||y()},n.current.redo=()=>{g()},n.current.undo=()=>{k()},n.current.setValid=e=>{n.current.valid=e,setTimeout(()=>{o.setPointCloudValid(e),e===!1&&y()})},n.current.setForbidOperation=e=>{var t,s;(s=(t=o.topViewInstance)==null?void 0:t.pointCloud2dOperation)==null||s.setForbidOperation(e),e===!0&&o.setSelectedIDs(void 0)},n.current.setShowDefaultCursor=e=>{var t,s;(s=(t=o.topViewInstance)==null?void 0:t.pointCloud2dOperation)==null||s.setShowDefaultCursor(e)},n.current.asyncData=e=>{setTimeout(()=>{m==null||m(e)})}},[o.pointCloudBoxList,o.selectedID,o.valid,o.polygonList,o.mainViewInstance]),d(()=>{n.current.history={pushHistory:e=>{z({pointCloudBoxList:e})},initRecord:()=>{}}},[]),d(()=>{var e;const t=(e=o.topViewInstance)==null?void 0:e.pointCloud2dOperation;if(!t||a)return;const s=c=>{h(c)},u=c=>{w.error(c)},l=c=>{w.info(c)};return t.on("syncAttribute",s),t.on("messageError",u),t.on("messageInfo",l),()=>{t.unbind("syncAttribute",s),t.unbind("messageError",u),t.unbind("messageInfo",l)}},[o.topViewInstance]),null};var ge=re(se,null,null,{context:le})(xe);export{ge as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointCloudListener.js","sources":["../../../src/components/pointCloudView/PointCloudListener.tsx"],"sourcesContent":["import { PointCloudContext } from './PointCloudContext';\nimport { useRotate } from './hooks/useRotate';\nimport { useBoxes } from './hooks/useBoxes';\nimport { useSingleBox } from './hooks/useSingleBox';\nimport React, { useContext, useEffect } from 'react';\nimport { cTool, AttributeUtils, CommonToolUtils, EToolName } from '@labelbee/lb-annotation';\nimport { message } from 'antd';\nimport { connect } from 'react-redux';\nimport { a2MapStateToProps, IA2MapStateProps } from '@/store/annotation/map';\nimport { useCustomToolInstance } from '@/hooks/annotation';\nimport { useStatus } from './hooks/useStatus';\nimport { jsonParser } from '@/utils';\nimport { usePointCloudViews } from './hooks/usePointCloudViews';\nimport { LabelBeeContext } from '@/store/ctx';\nimport { useHistory } from './hooks/useHistory';\nimport { useAttribute } from './hooks/useAttribute';\nimport { ICoordinate } from '@labelbee/lb-utils/dist/types/types/common';\nimport { useConfig } from './hooks/useConfig';\nimport { usePolygon } from './hooks/usePolygon';\nimport { useTranslation } from 'react-i18next';\n\nconst { EPolygonPattern } = cTool;\n\ninterface IProps extends IA2MapStateProps {\n checkMode?: boolean;\n}\n\nconst PointCloudListener: React.FC<IProps> = ({\n currentData,\n config,\n checkMode,\n configString,\n imgIndex,\n}) => {\n const ptCtx = useContext(PointCloudContext);\n const {\n changeSelectedBoxValid,\n selectNextBox,\n selectPrevBox,\n updateSelectedBox,\n deleteSelectedPointCloudBoxAndPolygon,\n } = useSingleBox();\n const { clearAllResult, updatePointCloudPattern } = useStatus();\n const basicInfo = jsonParser(currentData.result);\n const { copySelectedBoxes, pasteSelectedBoxes, copiedBoxes } = useBoxes({ config });\n const { toolInstanceRef } = useCustomToolInstance({ basicInfo });\n const { updateRotate } = useRotate({ currentData });\n const { updatePointCloudData, topViewSelectedChanged } = usePointCloudViews();\n const { redo, undo, pushHistoryWithList, pushHistoryUnderUpdatePolygon } = useHistory();\n const { syncThreeViewsAttribute } = useAttribute();\n const { syncAllViewsConfig, reRenderTopViewRange } = useConfig();\n const { selectedPolygon } = usePolygon();\n const { t } = useTranslation();\n\n const updatePolygonOffset = (offset: Partial<ICoordinate>) => {\n const { topViewInstance } = ptCtx;\n if (!topViewInstance) {\n return;\n }\n topViewInstance.pointCloud2dOperation?.updateSelectedPolygonsPoints(offset);\n };\n\n const keydownEvents = (lowerCaseKey: string, e: KeyboardEvent) => {\n const { topViewInstance, mainViewInstance } = ptCtx;\n if (!topViewInstance) {\n return;\n }\n\n const { pointCloud2dOperation: TopPointCloudPolygonOperation } = topViewInstance;\n\n switch (lowerCaseKey) {\n case 'q': {\n // Q - anticlockwise\n updateRotate(2);\n break;\n }\n\n case 'e':\n // E - closewise\n updateRotate(-2);\n\n break;\n\n case 'g':\n // G , overturn 180\n updateRotate(180);\n\n break;\n\n case 'u':\n {\n // U , change TopOpereation Pattern\n const newToolName =\n TopPointCloudPolygonOperation.pattern === EPolygonPattern.Normal\n ? EToolName.Rect\n : EToolName.Polygon;\n updatePointCloudPattern(newToolName);\n\n // Tips\n const POLYGON_PATTERN = {\n [EToolName.Polygon]: t('PolygonPattern'),\n [EToolName.Rect]: t('RectPattern'),\n };\n message.success(t('ChangePatternMsg', { pattern: POLYGON_PATTERN[newToolName] }));\n\n // Clear Status\n TopPointCloudPolygonOperation.clearActiveStatus();\n TopPointCloudPolygonOperation.clearDrawingStatus();\n }\n\n break;\n\n // +: Increase points size\n case '+':\n mainViewInstance?.updatePointSize(true);\n break;\n\n // -: Reduce points size\n case '-':\n mainViewInstance?.updatePointSize(false);\n break;\n\n case 'v':\n ptCtx.setPointCloudValid(!ptCtx.valid);\n break;\n\n case 'tab':\n if (e.shiftKey) {\n selectPrevBox();\n break;\n }\n selectNextBox();\n e.preventDefault();\n break;\n\n case 'f':\n changeSelectedBoxValid();\n break;\n\n case 'arrowup':\n updatePolygonOffset({ y: -1 });\n break;\n\n case 'arrowdown':\n updatePolygonOffset({ y: 1 });\n break;\n\n case 'arrowleft':\n updatePolygonOffset({ x: -1 });\n break;\n\n case 'arrowright':\n updatePolygonOffset({ x: 1 });\n break;\n\n case 'delete':\n deleteSelectedPointCloudBoxAndPolygon();\n break;\n\n default: {\n if (config.attributeList?.length > 0) {\n const keyCode2Attribute = AttributeUtils.getAttributeByKeycode(\n e.keyCode,\n config.attributeList,\n );\n\n if (keyCode2Attribute !== undefined) {\n toolInstanceRef.current.setDefaultAttribute(keyCode2Attribute);\n }\n }\n return;\n }\n }\n };\n\n const ctrlKeydownEvents = (lowerCaseKey: string, e: KeyboardEvent) => {\n switch (lowerCaseKey) {\n case 'c':\n copySelectedBoxes();\n break;\n case 'v':\n pasteSelectedBoxes();\n break;\n case 'a':\n e.preventDefault();\n ptCtx.selectedAllBoxes();\n break;\n case 'z': {\n if (e.shiftKey) {\n redo();\n } else {\n undo();\n }\n break;\n }\n\n default:\n break;\n }\n };\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (!CommonToolUtils.hotkeyFilter(e) || checkMode === true) {\n return;\n }\n\n const lowerCaseKey = e.key.toLocaleLowerCase();\n\n if (e.ctrlKey) {\n ctrlKeydownEvents(lowerCaseKey, e);\n return;\n }\n\n keydownEvents(lowerCaseKey, e);\n };\n\n useEffect(() => {\n const { topViewInstance } = ptCtx;\n if (!topViewInstance) {\n return;\n }\n\n window.addEventListener('keydown', onKeyDown);\n\n return () => {\n window.removeEventListener('keydown', onKeyDown);\n };\n }, [ptCtx, copiedBoxes, config, ptCtx.pointCloudBoxList, ptCtx.polygonList]);\n\n useEffect(() => {\n syncAllViewsConfig(config);\n }, [configString]);\n\n useEffect(() => {\n if (config?.radius) {\n reRenderTopViewRange(config?.radius);\n }\n }, [config?.radius]);\n\n // Page switch data initialization\n useEffect(() => {\n updatePointCloudData?.();\n }, [imgIndex, ptCtx.mainViewInstance]);\n\n useEffect(() => {\n ptCtx.setHideAttributes([]);\n }, [imgIndex]);\n\n // Update the listener of toolInstance.\n useEffect(() => {\n toolInstanceRef.current.exportData = () => {\n return [ptCtx.pointCloudBoxList, { valid: ptCtx.valid }];\n };\n\n toolInstanceRef.current.exportCustomData = () => {\n return {\n resultPolygon: ptCtx.polygonList ?? [],\n };\n };\n\n toolInstanceRef.current.setDefaultAttribute = (newAttribute: string) => {\n syncThreeViewsAttribute(newAttribute);\n const selectBox = ptCtx.selectedPointCloudBox;\n if (selectBox) {\n selectBox.attribute = newAttribute;\n\n const newPointCloudList = updateSelectedBox(selectBox);\n\n if (ptCtx.mainViewInstance) {\n // TODO: Poor performance.\n topViewSelectedChanged(selectBox, newPointCloudList);\n }\n }\n if (selectedPolygon) {\n pushHistoryUnderUpdatePolygon({ ...selectedPolygon, attribute: newAttribute });\n }\n };\n\n toolInstanceRef.current.setSubAttribute = (key: string, value: string) => {\n const selectBox = ptCtx.selectedPointCloudBox;\n if (selectBox) {\n const originSubAttribute = selectBox?.subAttribute ?? {};\n\n selectBox.subAttribute = {\n ...originSubAttribute,\n [key]: value,\n };\n\n updateSelectedBox(selectBox);\n }\n };\n toolInstanceRef.current.clearResult = () => {\n clearAllResult?.();\n };\n\n toolInstanceRef.current.redo = () => {\n redo();\n };\n\n toolInstanceRef.current.undo = () => {\n undo();\n };\n\n toolInstanceRef.current.setValid = (valid: boolean) => {\n toolInstanceRef.current.valid = valid;\n\n // Avoid triggering SetState operations in the reducer phase\n setTimeout(() => {\n ptCtx.setPointCloudValid(valid);\n\n if (valid === false) {\n clearAllResult();\n }\n });\n };\n\n /**\n * TopView forbid all operations.\n * @param forbidOperation\n */\n toolInstanceRef.current.setForbidOperation = (forbidOperation: boolean) => {\n ptCtx.topViewInstance?.pointCloud2dOperation?.setForbidOperation(forbidOperation);\n if (forbidOperation === true) {\n // Clear Selected Status.\n ptCtx.setSelectedIDs(undefined);\n }\n };\n\n toolInstanceRef.current.setShowDefaultCursor = (showDefaultCursor: boolean) => {\n ptCtx.topViewInstance?.pointCloud2dOperation?.setShowDefaultCursor(showDefaultCursor);\n };\n }, [\n ptCtx.pointCloudBoxList,\n ptCtx.selectedID,\n ptCtx.valid,\n ptCtx.polygonList,\n ptCtx.mainViewInstance,\n ]);\n\n useEffect(() => {\n toolInstanceRef.current.history = {\n // Origin Result\n pushHistory: (result: any[]) => {\n // Rewrite\n // TODO, The polygon is out of range.\n pushHistoryWithList({ pointCloudBoxList: result });\n },\n initRecord: () => {},\n };\n }, []);\n\n useEffect(() => {\n const toolInstance = ptCtx.topViewInstance?.pointCloud2dOperation;\n\n if (!toolInstance || checkMode) {\n return;\n }\n // TopViewOperation Emitter\n const syncAttribute = (newAttribute: string) => {\n syncThreeViewsAttribute(newAttribute);\n };\n\n const messageError = (error: string) => {\n message.error(error);\n };\n const messageInfo = (info: string) => {\n message.info(info);\n };\n\n toolInstance.on('syncAttribute', syncAttribute);\n toolInstance.on('messageError', messageError);\n toolInstance.on('messageInfo', messageInfo);\n\n return () => {\n toolInstance.unbind('syncAttribute', syncAttribute);\n toolInstance.unbind('messageError', messageError);\n toolInstance.unbind('messageInfo', messageInfo);\n };\n }, [ptCtx.topViewInstance]);\n\n return null;\n};\n\nexport default connect(a2MapStateToProps, null, null, { context: LabelBeeContext })(\n PointCloudListener,\n);\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PointCloudListener.js","sources":["../../../src/components/pointCloudView/PointCloudListener.tsx"],"sourcesContent":["import { PointCloudContext } from './PointCloudContext';\nimport { useRotate } from './hooks/useRotate';\nimport { useBoxes } from './hooks/useBoxes';\nimport { useSingleBox } from './hooks/useSingleBox';\nimport React, { useContext, useEffect } from 'react';\nimport { cTool, AttributeUtils, CommonToolUtils, EToolName } from '@labelbee/lb-annotation';\nimport { message } from 'antd';\nimport { connect } from 'react-redux';\nimport { a2MapStateToProps, IA2MapStateProps } from '@/store/annotation/map';\nimport { useCustomToolInstance } from '@/hooks/annotation';\nimport { useStatus } from './hooks/useStatus';\nimport { jsonParser } from '@/utils';\nimport { usePointCloudViews } from './hooks/usePointCloudViews';\nimport { LabelBeeContext } from '@/store/ctx';\nimport { useHistory } from './hooks/useHistory';\nimport { useAttribute } from './hooks/useAttribute';\nimport { ICoordinate } from '@labelbee/lb-utils/dist/types/types/common';\nimport { useConfig } from './hooks/useConfig';\nimport { usePolygon } from './hooks/usePolygon';\nimport { useTranslation } from 'react-i18next';\nimport { IFileItem } from '@/types/data';\n\nconst { EPolygonPattern } = cTool;\n\ninterface IProps extends IA2MapStateProps {\n checkMode?: boolean;\n}\n\nconst PointCloudListener: React.FC<IProps> = ({\n currentData,\n config,\n checkMode,\n configString,\n imgIndex,\n}) => {\n const ptCtx = useContext(PointCloudContext);\n const {\n changeSelectedBoxValid,\n selectNextBox,\n selectPrevBox,\n updateSelectedBox,\n deleteSelectedPointCloudBoxAndPolygon,\n } = useSingleBox();\n const { clearAllResult, updatePointCloudPattern } = useStatus();\n const basicInfo = jsonParser(currentData.result);\n const { copySelectedBoxes, pasteSelectedBoxes, copiedBoxes } = useBoxes({ config });\n const { toolInstanceRef } = useCustomToolInstance({ basicInfo });\n const { updateRotate } = useRotate({ currentData });\n const { updatePointCloudData, topViewSelectedChanged } = usePointCloudViews();\n const { redo, undo, pushHistoryWithList, pushHistoryUnderUpdatePolygon } = useHistory();\n const { syncThreeViewsAttribute } = useAttribute();\n const { syncAllViewsConfig, reRenderTopViewRange } = useConfig();\n const { selectedPolygon } = usePolygon();\n const { t } = useTranslation();\n\n const updatePolygonOffset = (offset: Partial<ICoordinate>) => {\n const { topViewInstance } = ptCtx;\n if (!topViewInstance) {\n return;\n }\n topViewInstance.pointCloud2dOperation?.updateSelectedPolygonsPoints(offset);\n };\n\n const keydownEvents = (lowerCaseKey: string, e: KeyboardEvent) => {\n const { topViewInstance, mainViewInstance } = ptCtx;\n if (!topViewInstance) {\n return;\n }\n\n const { pointCloud2dOperation: TopPointCloudPolygonOperation } = topViewInstance;\n\n switch (lowerCaseKey) {\n case 'q': {\n // Q - anticlockwise\n updateRotate(2);\n break;\n }\n\n case 'e':\n // E - closewise\n updateRotate(-2);\n\n break;\n\n case 'g':\n // G , overturn 180\n updateRotate(180);\n\n break;\n\n case 'u':\n {\n // U , change TopOpereation Pattern\n const newToolName =\n TopPointCloudPolygonOperation.pattern === EPolygonPattern.Normal\n ? EToolName.Rect\n : EToolName.Polygon;\n updatePointCloudPattern(newToolName);\n\n // Tips\n const POLYGON_PATTERN = {\n [EToolName.Polygon]: t('PolygonPattern'),\n [EToolName.Rect]: t('RectPattern'),\n };\n message.success(t('ChangePatternMsg', { pattern: POLYGON_PATTERN[newToolName] }));\n\n // Clear Status\n TopPointCloudPolygonOperation.clearActiveStatus();\n TopPointCloudPolygonOperation.clearDrawingStatus();\n }\n\n break;\n\n // +: Increase points size\n case '+':\n mainViewInstance?.updatePointSize(true);\n break;\n\n // -: Reduce points size\n case '-':\n mainViewInstance?.updatePointSize(false);\n break;\n\n case 'v':\n ptCtx.setPointCloudValid(!ptCtx.valid);\n break;\n\n case 'tab':\n if (e.shiftKey) {\n selectPrevBox();\n break;\n }\n selectNextBox();\n e.preventDefault();\n break;\n\n case 'f':\n changeSelectedBoxValid();\n break;\n\n case 'arrowup':\n updatePolygonOffset({ y: -1 });\n break;\n\n case 'arrowdown':\n updatePolygonOffset({ y: 1 });\n break;\n\n case 'arrowleft':\n updatePolygonOffset({ x: -1 });\n break;\n\n case 'arrowright':\n updatePolygonOffset({ x: 1 });\n break;\n\n case 'delete':\n deleteSelectedPointCloudBoxAndPolygon();\n break;\n\n default: {\n if (config.attributeList?.length > 0) {\n const keyCode2Attribute = AttributeUtils.getAttributeByKeycode(\n e.keyCode,\n config.attributeList,\n );\n\n if (keyCode2Attribute !== undefined) {\n toolInstanceRef.current.setDefaultAttribute(keyCode2Attribute);\n }\n }\n return;\n }\n }\n };\n\n const ctrlKeydownEvents = (lowerCaseKey: string, e: KeyboardEvent) => {\n switch (lowerCaseKey) {\n case 'c':\n copySelectedBoxes();\n break;\n case 'v':\n pasteSelectedBoxes();\n break;\n case 'a':\n e.preventDefault();\n ptCtx.selectedAllBoxes();\n break;\n case 'z': {\n if (e.shiftKey) {\n redo();\n } else {\n undo();\n }\n break;\n }\n\n default:\n break;\n }\n };\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (!CommonToolUtils.hotkeyFilter(e) || checkMode === true) {\n return;\n }\n\n const lowerCaseKey = e.key.toLocaleLowerCase();\n\n if (e.ctrlKey) {\n ctrlKeydownEvents(lowerCaseKey, e);\n return;\n }\n\n keydownEvents(lowerCaseKey, e);\n };\n\n useEffect(() => {\n const { topViewInstance } = ptCtx;\n if (!topViewInstance) {\n return;\n }\n\n window.addEventListener('keydown', onKeyDown);\n\n return () => {\n window.removeEventListener('keydown', onKeyDown);\n };\n }, [ptCtx, copiedBoxes, config, ptCtx.pointCloudBoxList, ptCtx.polygonList]);\n\n useEffect(() => {\n syncAllViewsConfig(config);\n }, [configString]);\n\n useEffect(() => {\n if (config?.radius) {\n reRenderTopViewRange(config?.radius);\n }\n }, [config?.radius]);\n\n // Page switch data initialization\n useEffect(() => {\n updatePointCloudData?.();\n }, [imgIndex, ptCtx.mainViewInstance]);\n\n useEffect(() => {\n ptCtx.setHideAttributes([]);\n }, [imgIndex]);\n\n // Update the listener of toolInstance.\n useEffect(() => {\n toolInstanceRef.current.exportData = () => {\n return [ptCtx.pointCloudBoxList, { valid: ptCtx.valid }];\n };\n\n toolInstanceRef.current.exportCustomData = () => {\n return {\n resultPolygon: ptCtx.polygonList ?? [],\n };\n };\n\n toolInstanceRef.current.setDefaultAttribute = (newAttribute: string) => {\n syncThreeViewsAttribute(newAttribute);\n const selectBox = ptCtx.selectedPointCloudBox;\n if (selectBox) {\n selectBox.attribute = newAttribute;\n\n const newPointCloudList = updateSelectedBox(selectBox);\n\n if (ptCtx.mainViewInstance) {\n // TODO: Poor performance.\n topViewSelectedChanged(selectBox, newPointCloudList);\n }\n }\n if (selectedPolygon) {\n pushHistoryUnderUpdatePolygon({ ...selectedPolygon, attribute: newAttribute });\n }\n };\n\n toolInstanceRef.current.setSubAttribute = (key: string, value: string) => {\n const selectBox = ptCtx.selectedPointCloudBox;\n if (selectBox) {\n const originSubAttribute = selectBox?.subAttribute ?? {};\n\n selectBox.subAttribute = {\n ...originSubAttribute,\n [key]: value,\n };\n\n updateSelectedBox(selectBox);\n }\n };\n toolInstanceRef.current.clearResult = () => {\n clearAllResult?.();\n };\n\n toolInstanceRef.current.redo = () => {\n redo();\n };\n\n toolInstanceRef.current.undo = () => {\n undo();\n };\n\n toolInstanceRef.current.setValid = (valid: boolean) => {\n toolInstanceRef.current.valid = valid;\n\n // Avoid triggering SetState operations in the reducer phase\n setTimeout(() => {\n ptCtx.setPointCloudValid(valid);\n\n if (valid === false) {\n clearAllResult();\n }\n });\n };\n\n /**\n * TopView forbid all operations.\n * @param forbidOperation\n */\n toolInstanceRef.current.setForbidOperation = (forbidOperation: boolean) => {\n ptCtx.topViewInstance?.pointCloud2dOperation?.setForbidOperation(forbidOperation);\n if (forbidOperation === true) {\n // Clear Selected Status.\n ptCtx.setSelectedIDs(undefined);\n }\n };\n\n toolInstanceRef.current.setShowDefaultCursor = (showDefaultCursor: boolean) => {\n ptCtx.topViewInstance?.pointCloud2dOperation?.setShowDefaultCursor(showDefaultCursor);\n };\n\n toolInstanceRef.current.asyncData = (newData: IFileItem) => {\n // Next Tick to update.\n setTimeout(() => {\n updatePointCloudData?.(newData);\n });\n };\n }, [\n ptCtx.pointCloudBoxList,\n ptCtx.selectedID,\n ptCtx.valid,\n ptCtx.polygonList,\n ptCtx.mainViewInstance,\n ]);\n\n useEffect(() => {\n toolInstanceRef.current.history = {\n // Origin Result\n pushHistory: (result: any[]) => {\n // Rewrite\n // TODO, The polygon is out of range.\n pushHistoryWithList({ pointCloudBoxList: result });\n },\n initRecord: () => {},\n };\n }, []);\n\n useEffect(() => {\n const toolInstance = ptCtx.topViewInstance?.pointCloud2dOperation;\n\n if (!toolInstance || checkMode) {\n return;\n }\n // TopViewOperation Emitter\n const syncAttribute = (newAttribute: string) => {\n syncThreeViewsAttribute(newAttribute);\n };\n\n const messageError = (error: string) => {\n message.error(error);\n };\n const messageInfo = (info: string) => {\n message.info(info);\n };\n\n toolInstance.on('syncAttribute', syncAttribute);\n toolInstance.on('messageError', messageError);\n toolInstance.on('messageInfo', messageInfo);\n\n return () => {\n toolInstance.unbind('syncAttribute', syncAttribute);\n toolInstance.unbind('messageError', messageError);\n toolInstance.unbind('messageInfo', messageInfo);\n };\n }, [ptCtx.topViewInstance]);\n\n return null;\n};\n\nexport default connect(a2MapStateToProps, null, null, { context: LabelBeeContext })(\n PointCloudListener,\n);\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{MathUtils as
|
|
1
|
+
import{MathUtils as P,getCuboidFromPointCloudBox as at}from"@labelbee/lb-annotation";import{EPerspectiveView as H,PointCloudUtils as k}from"@labelbee/lb-utils";import{useContext as ct}from"react";import{PointCloudContext as ut}from"../PointCloudContext.js";import{useSingleBox as Z}from"./useSingleBox.js";import{useSelector as pt,useDispatch as gt}from"../../../store/ctx.js";import ft from"../../../utils/StepUtils.js";import{jsonParser as W}from"../../../utils/index.js";import{SetPointCloudLoading as M}from"../../../store/annotation/actionCreators.js";import{message as Ct}from"antd";import{useTranslation as Pt}from"react-i18next";import{useHistory as mt}from"./useHistory.js";import{usePolygon as ht}from"./usePolygon.js";var yt=Object.defineProperty,Lt=Object.defineProperties,xt=Object.getOwnPropertyDescriptors,G=Object.getOwnPropertySymbols,vt=Object.prototype.hasOwnProperty,Bt=Object.prototype.propertyIsEnumerable,Q=(t,e,n)=>e in t?yt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,U=(t,e)=>{for(var n in e||(e={}))vt.call(e,n)&&Q(t,n,e[n]);if(G)for(var n of G(e))Bt.call(e,n)&&Q(t,n,e[n]);return t},q=(t,e)=>Lt(t,xt(e)),J=(t,e,n)=>new Promise((c,o)=>{var s=d=>{try{u(n.next(d))}catch(C){o(C)}},g=d=>{try{u(n.throw(d))}catch(C){o(C)}},u=d=>d.done?c(d.value):Promise.resolve(d.value).then(s,g);u((n=n.apply(t,e)).next())});const R=5,K=90,w={"3D":"3D",Top:"Top",Side:"Side",Back:"Back"},E=(t,e,n,c,o)=>{const[s,g,u,d]=t.pointList.map(f=>k.transferCanvas2World(f,e)),C=P.getLineCenterPoint([s,u]),m=P.getLineLength(s,g),y=P.getLineLength(g,u),A=P.getRadiusFromQuadrangle(t.pointList);let b=0,O=1,L={};if(n){const f=n.getSensesPointZAxisInPolygon([s,g,u,d]);b=(f.maxZ+f.minZ)/2,O=f.maxZ-f.minZ,L={count:f.zCount}}c&&(b=c.center.z,O=c.depth);const I={center:{x:C.x,y:C.y,z:b},width:y,height:m,depth:O,rotation:A,id:t.id},x=U(c?U(U({},c),I):q(U({},I),{attribute:"",valid:!0}),L);return o&&Object.assign(x,o),x},X=(t,e,n,c)=>{const[o,s,g]=t.pointList,[u,d,C]=e.pointList,m=P.getLineCenterPoint([o,g]),y=P.getLineCenterPoint([u,C]),b={x:{x:m.x-y.x,y:m.y-y.y}.x,y:0,z:m.y-y.y},O=P.getLineLength(o,s),L=P.getLineLength(u,d),I=O-L,x=P.getLineLength(s,g),f=P.getLineLength(d,C),D=x-f,{newBoxParams:S}=c.getNewBoxBySideUpdate(b,D,I,n);return S},wt=(t,e,n,c)=>{const[o,s,g]=t.pointList,[u,d,C]=e.pointList,m=P.getLineCenterPoint([o,g]),y=P.getLineCenterPoint([u,C]),b={x:{x:m.x-y.x,y:m.y-y.y}.x,y:0,z:m.y-y.y},O=P.getLineLength(o,s),L=P.getLineLength(u,d),I=O-L,x=P.getLineLength(s,g),f=P.getLineLength(d,C),D=x-f;let{newBoxParams:S}=c.getNewBoxByBackUpdate(b,D,I,n);return S},Y=(t,e,n,c)=>{if(!n)return;const{pointCloud2dOperation:o,pointCloudInstance:s}=n;s.loadPCDFileByBox(c,t,{width:R,depth:R});const{cameraPositionVector:g}=s.updateOrthoCamera(t,H.Left);s.setInitCameraPosition(g);const{polygon2d:u,zoom:d}=s.getBoxSidePolygon2DCoordinate(t);s.camera.zoom=d,s.camera.updateProjectionMatrix(),s.render(),o.initPosition(),o.zoomChangeOnCenter(d),o.setResultAndSelectedID([{id:e.id,valid:t.valid,pointList:u,textAttribute:"",isRect:!0,attribute:t.attribute}],e.id)},$=(t,e,n,c)=>{if(!n)return;const{pointCloud2dOperation:o,pointCloudInstance:s}=n;s.loadPCDFileByBox(c,t,{height:R,depth:R});const{cameraPositionVector:g}=s.updateOrthoCamera(t,H.Back);s.setInitCameraPosition(g);const{polygon2d:u,zoom:d}=s.getBoxBackPolygon2DCoordinate(t);s.camera.zoom=d,s.camera.updateProjectionMatrix(),s.render(),o.initPosition(),o.zoomChangeOnCenter(d),o.setResultAndSelectedID([{id:e.id,valid:t.valid,pointList:u,textAttribute:"",isRect:!0,attribute:t.attribute}],e.id)},tt=(t,e,n,c)=>{var o;if(!n||!c)return;c.generateBox(t,e.id),c.updateCameraByBox(t,H.Top),c.render();const{pointCloud2dOperation:s,pointCloudInstance:g}=n,{polygon2d:u}=g.getBoxTopPolygon2DCoordinate(t),d=[...s.polygonList],C=d.find(m=>m.id===e.id);C?C.pointList=u:d.push({id:e.id,pointList:u,textAttribute:"",isRect:!0,valid:(o=t.valid)!=null?o:!0}),s.setResultAndSelectedID(d,e.id)},bt=()=>{const t=ct(ut),{topViewInstance:e,sideViewInstance:n,backViewInstance:c,mainViewInstance:o,addPointCloudBox:s,setSelectedIDs:g,selectedIDs:u,pointCloudBoxList:d,hideAttributes:C}=t,{addHistory:m,initHistory:y,pushHistoryUnderUpdatePolygon:A}=mt(),{selectedPolygon:b}=ht(),{updateSelectedBox:O,updateSelectedBoxes:L,getPointCloudByID:I}=Z(),{currentData:x,config:f}=pt(i=>{const{stepList:r,step:p,imgList:l,imgIndex:a}=i.annotation;return{currentData:l[a],config:W(ft.getCurrentStepInfo(p,r).config)}}),D=gt(),{selectedBox:S}=Z(),{t:ot}=Pt(),F=S==null?void 0:S.info;if(!e||!n||!c)return{topViewAddBox:()=>{},topViewSelectedChanged:()=>{},sideViewUpdateBox:()=>{},backViewUpdateBox:()=>{}};const{pointCloudInstance:et}=e,nt=i=>{o==null||o.generateBox(i),o==null||o.controls.update(),o==null||o.render()},it=({newPolygon:i,size:r,imgList:p,trackConfigurable:l,zoom:a})=>{var h;const v={attribute:(h=e.pointCloud2dOperation.defaultAttribute)!=null?h:""};l===!0&&Object.assign(v,{trackID:k.getNextTrackID({imgList:[],extraBoxList:d})});const B=E(i,r,et,void 0,v),_=e==null?void 0:e.pointCloud2dOperation,V=B;if((f==null?void 0:f.lowerLimitPointsNumInBox)&&typeof B.count=="number"&&B.count<f.lowerLimitPointsNumInBox){Ct.info(ot("LowerLimitPointsNumInBox",{num:f.lowerLimitPointsNumInBox})),_.deletePolygon(B.id);return}const z=C.includes(i.attribute),j=s(V);z?g([]):(g(V.id),_.setSelectedIDs([i.id]),T(w.Top,i,V,a,j)),m({newBoxParams:V})},st=(i,r)=>{const p=i!=null?i:S==null?void 0:S.info,l=e==null?void 0:e.pointCloud2dOperation;if(l.setSelectedIDs(u),u.length===0||!l)return;const a=l.selectedPolygon;if(u.length===1&&p){T(w.Top,a,p,void 0,r);return}},N=(i,r,p)=>{if(F){let l,a;switch(p){case w.Back:l=wt;break;case w.Side:l=X;break;default:l=X;break}if(a=l(i,r,F,n.pointCloudInstance),o){const{count:v}=o.getSensesPointZAxisInPolygon(at(a).polygonPointList,[a.center.z-a.depth/2,a.center.z+a.depth/2]);a=q(U({},a),{count:v})}const h=O(a);return T(p,i,a,void 0,h),h}},rt=(i,r)=>{N(i,r,w.Side)},lt=(i,r)=>{N(i,r,w.Back)},dt=(i,r)=>{if(b){const l=i[0].newPolygon;l.pointList=l.pointList.map(a=>k.transferCanvas2World(a,r)),A(i[0].newPolygon);return}const p=i.map(({newPolygon:l})=>{const a=I(l.id);return E(l,r,e.pointCloudInstance,a)});if(p.length===1){const{newPolygon:l}=i[0],a=L(p);T(w.Top,l,p[0],void 0,a)}else{const l=L(p);l&&t.syncAllViewPointCloudColor(l)}},T=(i,r,p,l,a)=>J(void 0,null,function*(){const h=x==null?void 0:x.url;a&&(yield t.syncAllViewPointCloudColor(a));const v={[w.Side]:()=>{Y(p,r,n,h)},[w.Back]:()=>{c&&$(p,r,c,h)},[w.Top]:()=>{tt(p,r,e,o)}};Object.keys(v).forEach(B=>{B!==i&&v[B]()}),l&&(o==null||o.updateCameraZoom(l)),nt(p)});return{topViewAddBox:it,topViewSelectedChanged:st,topViewUpdateBox:dt,sideViewUpdateBox:rt,backViewUpdateBox:lt,pointCloudBoxListUpdated:i=>{e.updatePolygonList(i),o==null||o.generateBoxes(i)},initPointCloud3d:i=>{if(!o)return;const r={left:-i.width/2,right:i.width/2,top:i.height/2,bottom:-i.height/2,near:100,far:-100};o.initOrthographicCamera(r),o.initRenderer(),o.render()},updatePointCloudData:(...i)=>J(void 0,[...i],function*(r=x){var p,l,a,h,v,B;if(!(r==null?void 0:r.url)||!o)return;M(D,!0),yield o.loadPCDFile(r.url,(p=f==null?void 0:f.radius)!=null?p:K),d.forEach(j=>{o==null||o.removeObjectByName(j.id)});let _=[],V=[];r.result?(_=k.getBoxParamsFromResultList(r.result),V=k.getPolygonListFromResultList(r.result),_.forEach(j=>{o==null||o.generateBox(j)}),t.syncAllViewPointCloudColor(_),t.setPointCloudResult(_),t.setPolygonList(V)):(t.setPointCloudResult([]),t.setPolygonList([])),y({pointCloudBoxList:_,polygonList:V}),o.updateTopCamera();const z=(a=(l=W(r.result))==null?void 0:l.valid)!=null?a:!0;t.setPointCloudValid(z),(h=t.sideViewInstance)==null||h.clearAllData(),(v=t.backViewInstance)==null||v.clearAllData(),e.updateData(r.url,r.result,{radius:(B=f==null?void 0:f.radius)!=null?B:K}),M(D,!1)})}};export{$ as synchronizeBackView,Y as synchronizeSideView,tt as synchronizeTopView,E as topViewPolygon2PointCloud,bt as usePointCloudViews};
|