@labelbee/lb-components 1.9.0-alpha.2 → 1.9.0-alpha.4
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/PointCloud3DView.js +1 -1
- package/dist/components/pointCloudView/PointCloudContext.js +1 -1
- package/dist/components/pointCloudView/PointCloudListener.js +1 -1
- package/dist/index.css +2 -0
- package/dist/types/components/pointCloudView/PointCloudContext.d.ts +1 -0
- package/dist/views/MainView/toolFooter/AnnotatedAttributes/index.js +1 -1
- package/es/components/pointCloudView/PointCloud3DView.js +1 -1
- package/es/components/pointCloudView/PointCloud3DView.js.map +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/index.css +2 -0
- 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";var dom=require("../../utils/dom.js"),lbAnnotation=require("@labelbee/lb-annotation"),lbUtils=require("@labelbee/lb-utils"),classNames=require("classnames"),React=require("react"),PointCloudLayout=require("./PointCloudLayout.js"),PointCloudContext=require("./PointCloudContext.js"),map=require("../../store/annotation/map.js"),reactRedux=require("react-redux"),index=require("../../utils/index.js"),useSingleBox=require("./hooks/useSingleBox.js"),antd=require("antd"),useSize=require("../../hooks/useSize.js"),usePointCloudViews=require("./hooks/usePointCloudViews.js"),reactI18next=require("react-i18next"),ctx=require("../../store/ctx.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var classNames__default=_interopDefaultLegacy(classNames),React__default=_interopDefaultLegacy(React),__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,n)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,__spreadValues=(e,t)=>{for(var n in t||(t={}))__hasOwnProp.call(t,n)&&__defNormalProp(e,n,t[n]);if(__getOwnPropSymbols)for(var n of __getOwnPropSymbols(t))__propIsEnum.call(t,n)&&__defNormalProp(e,n,t[n]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t));const pointCloudID="LABELBEE-POINTCLOUD",PointCloud3DContext=React__default.default.createContext({isActive:!1,setTarget3DView:()=>{},reset3DView:()=>{},followTopView:()=>{}}),PointCloudViewIcon=({perspectiveView:e})=>{const{isActive:t,setTarget3DView:n}=React.useContext(PointCloud3DContext),
|
|
1
|
+
"use strict";var dom=require("../../utils/dom.js"),lbAnnotation=require("@labelbee/lb-annotation"),lbUtils=require("@labelbee/lb-utils"),classNames=require("classnames"),React=require("react"),PointCloudLayout=require("./PointCloudLayout.js"),PointCloudContext=require("./PointCloudContext.js"),map=require("../../store/annotation/map.js"),reactRedux=require("react-redux"),index=require("../../utils/index.js"),useSingleBox=require("./hooks/useSingleBox.js"),antd=require("antd"),useSize=require("../../hooks/useSize.js"),usePointCloudViews=require("./hooks/usePointCloudViews.js"),reactI18next=require("react-i18next"),ctx=require("../../store/ctx.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var classNames__default=_interopDefaultLegacy(classNames),React__default=_interopDefaultLegacy(React),__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,n)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,__spreadValues=(e,t)=>{for(var n in t||(t={}))__hasOwnProp.call(t,n)&&__defNormalProp(e,n,t[n]);if(__getOwnPropSymbols)for(var n of __getOwnPropSymbols(t))__propIsEnum.call(t,n)&&__defNormalProp(e,n,t[n]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t));const pointCloudID="LABELBEE-POINTCLOUD",PointCloud3DContext=React__default.default.createContext({isActive:!1,setTarget3DView:()=>{},reset3DView:()=>{},followTopView:()=>{}}),PointCloudViewIcon=({perspectiveView:e})=>{const{isActive:t,setTarget3DView:n}=React.useContext(PointCloud3DContext),a=m=>classNames__default.default({[dom.getClassName("point-cloud-3d-view",m)]:!0,active:t});return React__default.default.createElement("span",{onClick:()=>{n(lbUtils.EPerspectiveView[e])},className:a(e.toLocaleLowerCase())})},PointCloud3DSideBar=()=>{const{reset3DView:e,followTopView:t}=React.useContext(PointCloud3DContext),{t:n}=reactI18next.useTranslation();return React__default.default.createElement("div",{className:dom.getClassName("point-cloud-3d-sidebar")},React__default.default.createElement(PointCloudViewIcon,{perspectiveView:"Top"}),React__default.default.createElement(PointCloudViewIcon,{perspectiveView:"Front"}),React__default.default.createElement(PointCloudViewIcon,{perspectiveView:"Left"}),React__default.default.createElement(PointCloudViewIcon,{perspectiveView:"Back"}),React__default.default.createElement(PointCloudViewIcon,{perspectiveView:"Right"}),React__default.default.createElement(PointCloudViewIcon,{perspectiveView:"LFT"}),React__default.default.createElement(PointCloudViewIcon,{perspectiveView:"RBT"}),React__default.default.createElement(antd.Tooltip,{title:n("CameraFollowTopView")},React__default.default.createElement("span",{onClick:()=>{t()},className:dom.getClassName("point-cloud-3d-view","followTop")})),React__default.default.createElement("span",{onClick:()=>{e()},className:dom.getClassName("point-cloud-3d-view","reset")}))},PointCloud3D=({currentData:e,config:t})=>{var n;const a=React.useContext(PointCloudContext.PointCloudContext),[m,w]=React.useState(!0),u=React.useRef(null),{initPointCloud3d:p}=usePointCloudViews.usePointCloudViews(),l=useSize(u),{t:v}=reactI18next.useTranslation();React.useEffect(()=>{!a.mainViewInstance||p==null||p(l)},[l]);const{selectedBox:s}=useSingleBox.useSingleBox(),f=o=>{var i;const r=s==null?void 0:s.info;r&&((i=a.mainViewInstance)==null||i.updateCameraByBox(r,o))},C=()=>{var o;(o=a.mainViewInstance)==null||o.resetCamera()},V=()=>{var o,i;const r=(o=a.topViewInstance)==null?void 0:o.pointCloudInstance.camera;r&&((i=a.mainViewInstance)==null||i.applyCameraTarget(r))};React.useEffect(()=>{if(u.current&&(e==null?void 0:e.url)){let o=a.mainViewInstance;if(!o&&l.width){const i={left:-l.width/2,right:l.width/2,top:l.height/2,bottom:-l.height/2,near:100,far:-100};o=new lbAnnotation.PointCloud({container:u.current,isOrthographicCamera:!0,orthographicParams:i,config:t}),a.setMainViewInstance(o)}}},[l]),React.useEffect(()=>{var o;if(u.current&&(e==null?void 0:e.url)&&e.result&&a.mainViewInstance){let i=a.mainViewInstance;const r=lbUtils.PointCloudUtils.getBoxParamsFromResultList(e.result);r.forEach(c=>{var d;const _=(d=lbUtils.toolStyleConverter.getColorFromConfig({attribute:c.attribute},__spreadProps(__spreadValues({},t),{attributeConfigurable:!0}),{}))==null?void 0:d.hex;i==null||i.generateBox(c,_)}),a.setPointCloudResult(r),a.setPointCloudValid((o=index.jsonParser(e.result))==null?void 0:o.valid)}},[e,a.mainViewInstance]),React.useEffect(()=>{var o,i,r,c;if(s){f(lbUtils.EPerspectiveView.Top);const d=(r=(i=(o=a.topViewInstance)==null?void 0:o.pointCloudInstance)==null?void 0:i.camera.zoom)!=null?r:1;(c=a.mainViewInstance)==null||c.updateCameraZoom(d)}},[s]);const g=React.useMemo(()=>({reset3DView:C,setTarget3DView:f,isActive:!!s,followTopView:V}),[s,a.mainViewInstance]),P=React__default.default.createElement("div",null,React__default.default.createElement("span",{style:{marginRight:8}},v("ShowArrows")),React__default.default.createElement(antd.Switch,{size:"small",checked:m,onChange:o=>{var i;w(o),(i=a.mainViewInstance)==null||i.setShowDirection(o)}}));return React__default.default.createElement(PointCloudLayout.PointCloudContainer,{className:dom.getClassName("point-cloud-3d-container"),title:v("3DView"),toolbar:P,style:{height:e.mappingImgList&&((n=e.mappingImgList)==null?void 0:n.length)>0?"55%":"100%"}},React__default.default.createElement("div",{className:dom.getClassName("point-cloud-3d-content")},React__default.default.createElement(PointCloud3DContext.Provider,{value:g},React__default.default.createElement(PointCloud3DSideBar,null)),React__default.default.createElement("div",{className:dom.getClassName("point-cloud-3d-view"),id:pointCloudID,ref:u})))};var PointCloud3DView=reactRedux.connect(map.a2MapStateToProps,null,null,{context:ctx.LabelBeeContext})(PointCloud3D);module.exports=PointCloud3DView;
|
|
@@ -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=(
|
|
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,n)=>r in u?__defProp(u,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):u[r]=n,__spreadValues=(u,r)=>{for(var n in r||(r={}))__hasOwnProp.call(r,n)&&__defNormalProp(u,n,r[n]);if(__getOwnPropSymbols)for(var n of __getOwnPropSymbols(r))__propIsEnum.call(r,n)&&__defNormalProp(u,n,r[n]);return u},__spreadProps=(u,r)=>__defProps(u,__getOwnPropDescs(r));const{EPolygonPattern}=lbAnnotation.cTool,PointCloudListener=({currentData:u,config:r,checkMode:n,configString:h,imgIndex:P})=>{const o=React.useContext(PointCloudContext.PointCloudContext),{changeSelectedBoxValid:_,selectNextBox:B,selectPrevBox:S,updateSelectedBox:y,deleteSelectedPointCloudBoxAndPolygon:E}=useSingleBox.useSingleBox(),{clearAllResult:v,updatePointCloudPattern:V}=useStatus.useStatus(),A=index.jsonParser(u.result),{copySelectedBoxes:I,pasteSelectedBoxes:O,copiedBoxes:q}=useBoxes.useBoxes({config:r}),{toolInstanceRef:a}=annotation.useCustomToolInstance({basicInfo:A}),{updateRotate:b}=useRotate.useRotate({currentData:u}),{updatePointCloudData:C,topViewSelectedChanged:j}=usePointCloudViews.usePointCloudViews(),{redo:w,undo:x,pushHistoryWithList:L,pushHistoryUnderUpdatePolygon:R}=useHistory.useHistory(),{syncThreeViewsAttribute:g}=useAttribute.useAttribute(),{syncAllViewsConfig:T,reRenderTopViewRange:D}=useConfig.useConfig(),{selectedPolygon:k}=usePolygon.usePolygon(),{t:f}=reactI18next.useTranslation(),p=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":{b(2);break}case"e":b(-2);break;case"g":b(180);break;case"u":{const d=c.pattern===EPolygonPattern.Normal?lbAnnotation.EToolName.Rect:lbAnnotation.EToolName.Polygon;V(d);const K={[lbAnnotation.EToolName.Polygon]:f("PolygonPattern"),[lbAnnotation.EToolName.Rect]:f("RectPattern")};antd.message.success(f("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":p({y:-1});break;case"arrowdown":p({y:1});break;case"arrowleft":p({x:-1});break;case"arrowright":p({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&&a.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}}},m=e=>{if(!lbAnnotation.CommonToolUtils.hotkeyFilter(e)||n===!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",m),()=>{window.removeEventListener("keydown",m)}},[o,q,r,o.pointCloudBoxList,o.polygonList]),React.useEffect(()=>{T(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(()=>{C==null||C()},[P,o.mainViewInstance]),React.useEffect(()=>{o.setHideAttributes([])},[P]),React.useEffect(()=>{a.current.exportData=()=>[o.pointCloudBoxList,{valid:o.valid}],a.current.exportCustomData=()=>{var e;return{resultPolygon:(e=o.polygonList)!=null?e:[]}},a.current.setDefaultAttribute=e=>{g(e);const t=o.selectedPointCloudBox;if(t){t.attribute=e;const s=y(t);o.mainViewInstance&&j(t,s)}k&&R(__spreadProps(__spreadValues({},k),{attribute:e}))},a.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}),y(i)}},a.current.clearResult=()=>{v==null||v()},a.current.redo=()=>{w()},a.current.undo=()=>{x()},a.current.setValid=e=>{a.current.valid=e,setTimeout(()=>{o.setPointCloudValid(e),e===!1&&v()})},a.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)},a.current.setShowDefaultCursor=e=>{var t,s;(s=(t=o.topViewInstance)==null?void 0:t.pointCloud2dOperation)==null||s.setShowDefaultCursor(e)}},[o.pointCloudBoxList,o.selectedID,o.valid,o.polygonList,o.mainViewInstance]),React.useEffect(()=>{a.current.history={pushHistory:e=>{L({pointCloudBoxList:e})},initRecord:()=>{}}},[]),React.useEffect(()=>{var e;const t=(e=o.topViewInstance)==null?void 0:e.pointCloud2dOperation;if(!t||n)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;
|
package/dist/index.css
CHANGED
|
@@ -1066,6 +1066,7 @@
|
|
|
1066
1066
|
.bee-annotated-attribute {
|
|
1067
1067
|
width: 240px;
|
|
1068
1068
|
background: white;
|
|
1069
|
+
padding-bottom: 12px;
|
|
1069
1070
|
}
|
|
1070
1071
|
.bee-annotated-attribute__popover .ant-popover-inner-content {
|
|
1071
1072
|
padding: 0;
|
|
@@ -1082,6 +1083,7 @@
|
|
|
1082
1083
|
justify-content: space-between;
|
|
1083
1084
|
padding: 8px 12px;
|
|
1084
1085
|
color: #333;
|
|
1086
|
+
cursor: pointer;
|
|
1085
1087
|
}
|
|
1086
1088
|
.bee-annotated-attribute__item {
|
|
1087
1089
|
height: 40px;
|
|
@@ -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<{}>;
|
|
@@ -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(
|
|
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{getClassName as c}from"../../utils/dom.js";import{PointCloud as
|
|
1
|
+
import{getClassName as c}from"../../utils/dom.js";import{PointCloud as B}from"@labelbee/lb-annotation";import{PointCloudUtils as L,toolStyleConverter as N,EPerspectiveView as _}from"@labelbee/lb-utils";import D from"classnames";import t,{useContext as C,useState as R,useRef as k,useEffect as v,useMemo as z}from"react";import{PointCloudContainer as A}from"./PointCloudLayout.js";import{PointCloudContext as F}from"./PointCloudContext.js";import{a2MapStateToProps as M}from"../../store/annotation/map.js";import{connect as U}from"react-redux";import{jsonParser as Z}from"../../utils/index.js";import{useSingleBox as q}from"./hooks/useSingleBox.js";import{Switch as G,Tooltip as H}from"antd";import J from"../../hooks/useSize.js";import{usePointCloudViews as K}from"./hooks/usePointCloudViews.js";import{useTranslation as E}from"react-i18next";import{LabelBeeContext as Q}from"../../store/ctx.js";var W=Object.defineProperty,X=Object.defineProperties,Y=Object.getOwnPropertyDescriptors,x=Object.getOwnPropertySymbols,$=Object.prototype.hasOwnProperty,ee=Object.prototype.propertyIsEnumerable,I=(e,o,r)=>o in e?W(e,o,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[o]=r,te=(e,o)=>{for(var r in o||(o={}))$.call(o,r)&&I(e,r,o[r]);if(x)for(var r of x(o))ee.call(o,r)&&I(e,r,o[r]);return e},oe=(e,o)=>X(e,Y(o));const ie="LABELBEE-POINTCLOUD",V=t.createContext({isActive:!1,setTarget3DView:()=>{},reset3DView:()=>{},followTopView:()=>{}}),m=({perspectiveView:e})=>{const{isActive:o,setTarget3DView:r}=C(V),n=f=>D({[c("point-cloud-3d-view",f)]:!0,active:o});return t.createElement("span",{onClick:()=>{r(_[e])},className:n(e.toLocaleLowerCase())})},ne=()=>{const{reset3DView:e,followTopView:o}=C(V),{t:r}=E();return t.createElement("div",{className:c("point-cloud-3d-sidebar")},t.createElement(m,{perspectiveView:"Top"}),t.createElement(m,{perspectiveView:"Front"}),t.createElement(m,{perspectiveView:"Left"}),t.createElement(m,{perspectiveView:"Back"}),t.createElement(m,{perspectiveView:"Right"}),t.createElement(m,{perspectiveView:"LFT"}),t.createElement(m,{perspectiveView:"RBT"}),t.createElement(H,{title:r("CameraFollowTopView")},t.createElement("span",{onClick:()=>{o()},className:c("point-cloud-3d-view","followTop")})),t.createElement("span",{onClick:()=>{e()},className:c("point-cloud-3d-view","reset")}))},re=({currentData:e,config:o})=>{var r;const n=C(F),[f,b]=R(!0),p=k(null),{initPointCloud3d:P}=K(),s=J(p),{t:g}=E();v(()=>{!n.mainViewInstance||P==null||P(s)},[s]);const{selectedBox:u}=q(),h=i=>{var a;const l=u==null?void 0:u.info;l&&((a=n.mainViewInstance)==null||a.updateCameraByBox(l,i))},T=()=>{var i;(i=n.mainViewInstance)==null||i.resetCamera()},O=()=>{var i,a;const l=(i=n.topViewInstance)==null?void 0:i.pointCloudInstance.camera;l&&((a=n.mainViewInstance)==null||a.applyCameraTarget(l))};v(()=>{if(p.current&&(e==null?void 0:e.url)){let i=n.mainViewInstance;if(!i&&s.width){const a={left:-s.width/2,right:s.width/2,top:s.height/2,bottom:-s.height/2,near:100,far:-100};i=new B({container:p.current,isOrthographicCamera:!0,orthographicParams:a,config:o}),n.setMainViewInstance(i)}}},[s]),v(()=>{var i;if(p.current&&(e==null?void 0:e.url)&&e.result&&n.mainViewInstance){let a=n.mainViewInstance;const l=L.getBoxParamsFromResultList(e.result);l.forEach(d=>{var w;const y=(w=N.getColorFromConfig({attribute:d.attribute},oe(te({},o),{attributeConfigurable:!0}),{}))==null?void 0:w.hex;a==null||a.generateBox(d,y)}),n.setPointCloudResult(l),n.setPointCloudValid((i=Z(e.result))==null?void 0:i.valid)}},[e,n.mainViewInstance]),v(()=>{var i,a,l,d;if(u){h(_.Top);const w=(l=(a=(i=n.topViewInstance)==null?void 0:i.pointCloudInstance)==null?void 0:a.camera.zoom)!=null?l:1;(d=n.mainViewInstance)==null||d.updateCameraZoom(w)}},[u]);const j=z(()=>({reset3DView:T,setTarget3DView:h,isActive:!!u,followTopView:O}),[u,n.mainViewInstance]),S=t.createElement("div",null,t.createElement("span",{style:{marginRight:8}},g("ShowArrows")),t.createElement(G,{size:"small",checked:f,onChange:i=>{var a;b(i),(a=n.mainViewInstance)==null||a.setShowDirection(i)}}));return t.createElement(A,{className:c("point-cloud-3d-container"),title:g("3DView"),toolbar:S,style:{height:e.mappingImgList&&((r=e.mappingImgList)==null?void 0:r.length)>0?"55%":"100%"}},t.createElement("div",{className:c("point-cloud-3d-content")},t.createElement(V.Provider,{value:j},t.createElement(ne,null)),t.createElement("div",{className:c("point-cloud-3d-view"),id:ie,ref:p})))};var ae=U(M,null,null,{context:Q})(re);export{ae as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointCloud3DView.js","sources":["../../../src/components/pointCloudView/PointCloud3DView.tsx"],"sourcesContent":["/*\n * @Author: Laoluo luozefeng@sensetime.com\n * @Date: 2022-06-13 19:31:36\n * @LastEditors: Laoluo luozefeng@sensetime.com\n * @LastEditTime: 2022-06-27 19:43:25\n */\n\nimport { getClassName } from '@/utils/dom';\nimport { PointCloud } from '@labelbee/lb-annotation';\nimport {\n EPerspectiveView,\n IPointCloudBox,\n PointCloudUtils,\n toolStyleConverter,\n} from '@labelbee/lb-utils';\nimport classNames from 'classnames';\nimport React, { useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { PointCloudContainer } from './PointCloudLayout';\nimport { PointCloudContext } from './PointCloudContext';\nimport { a2MapStateToProps, IA2MapStateProps } from '@/store/annotation/map';\nimport { connect } from 'react-redux';\nimport { jsonParser } from '@/utils';\nimport { useSingleBox } from './hooks/useSingleBox';\nimport { Switch } from 'antd';\nimport useSize from '@/hooks/useSize';\nimport { usePointCloudViews } from './hooks/usePointCloudViews';\nimport { useTranslation } from 'react-i18next';\nimport { LabelBeeContext } from '@/store/ctx';\n\nconst pointCloudID = 'LABELBEE-POINTCLOUD';\nconst PointCloud3DContext = React.createContext<{\n isActive: boolean;\n setTarget3DView: (perspectiveView: EPerspectiveView) => void;\n reset3DView: () => void;\n followTopView: () => void;\n}>({\n isActive: false,\n setTarget3DView: () => {},\n reset3DView: () => {},\n followTopView: () => {},\n});\n\nconst PointCloudViewIcon = ({\n perspectiveView,\n}: {\n perspectiveView: keyof typeof EPerspectiveView;\n}) => {\n const { isActive, setTarget3DView } = useContext(PointCloud3DContext);\n\n const getTarget3DViewClassName = (position: string) => {\n return classNames({\n [getClassName('point-cloud-3d-view', position)]: true,\n active: isActive,\n });\n };\n\n return (\n <span\n onClick={() => {\n setTarget3DView(EPerspectiveView[perspectiveView]);\n }}\n className={getTarget3DViewClassName(perspectiveView.toLocaleLowerCase())}\n />\n );\n};\n\nconst PointCloud3DSideBar = () => {\n const { reset3DView, followTopView } = useContext(PointCloud3DContext);\n return (\n <div className={getClassName('point-cloud-3d-sidebar')}>\n <PointCloudViewIcon perspectiveView='Top' />\n <PointCloudViewIcon perspectiveView='Front' />\n <PointCloudViewIcon perspectiveView='Left' />\n <PointCloudViewIcon perspectiveView='Back' />\n <PointCloudViewIcon perspectiveView='Right' />\n <PointCloudViewIcon perspectiveView='LFT' />\n <PointCloudViewIcon perspectiveView='RBT' />\n\n <span\n onClick={() => {\n followTopView();\n }}\n className={getClassName('point-cloud-3d-view', 'followTop')}\n />\n\n <span\n onClick={() => {\n reset3DView();\n }}\n className={getClassName('point-cloud-3d-view', 'reset')}\n />\n </div>\n );\n};\n\nconst PointCloud3D: React.FC<IA2MapStateProps> = ({ currentData, config }) => {\n const ptCtx = useContext(PointCloudContext);\n const [showDirection, setShowDirection] = useState(true);\n const ref = useRef<HTMLDivElement>(null);\n const { initPointCloud3d } = usePointCloudViews();\n const size = useSize(ref);\n const { t } = useTranslation();\n\n useEffect(() => {\n if (!ptCtx.mainViewInstance) {\n return;\n }\n initPointCloud3d?.(size);\n }, [size]);\n const { selectedBox } = useSingleBox();\n\n const setTarget3DView = (perspectiveView: EPerspectiveView) => {\n const box = selectedBox?.info;\n\n if (box) {\n ptCtx.mainViewInstance?.updateCameraByBox(box, perspectiveView);\n }\n };\n\n const reset3DView = () => {\n ptCtx.mainViewInstance?.resetCamera();\n };\n\n const followTopView = () => {\n const topViewCamera = ptCtx.topViewInstance?.pointCloudInstance.camera;\n if (topViewCamera) {\n ptCtx.mainViewInstance?.applyCameraTarget(topViewCamera);\n }\n };\n\n /**\n * Listen for data changes.\n */\n useEffect(() => {\n if (ref.current && currentData?.url) {\n let pointCloud = ptCtx.mainViewInstance;\n if (!pointCloud && size.width) {\n const orthographicParams = {\n left: -size.width / 2,\n right: size.width / 2,\n top: size.height / 2,\n bottom: -size.height / 2,\n near: 100,\n far: -100,\n };\n\n // Need to be showed\n pointCloud = new PointCloud({\n container: ref.current,\n isOrthographicCamera: true,\n orthographicParams,\n config,\n });\n ptCtx.setMainViewInstance(pointCloud);\n }\n\n if (currentData.result) {\n const boxParamsList = PointCloudUtils.getBoxParamsFromResultList(currentData.result);\n\n // Add Init Box\n boxParamsList.forEach((v: IPointCloudBox) => {\n const hex = toolStyleConverter.getColorFromConfig(\n { attribute: v.attribute },\n { ...config, attributeConfigurable: true },\n {},\n )?.hex;\n\n pointCloud?.generateBox(v, hex);\n });\n\n ptCtx.setPointCloudResult(boxParamsList);\n ptCtx.setPointCloudValid(jsonParser(currentData.result)?.valid);\n }\n }\n }, [currentData, size]);\n\n /**\n * Observe selectedID and reset camera to target top-view\n */\n useEffect(() => {\n if (selectedBox) {\n setTarget3DView(EPerspectiveView.Top);\n\n /**\n * 3DView's zoom synchronizes with topView' zoom.\n */\n const zoom = ptCtx.topViewInstance?.pointCloudInstance?.camera.zoom ?? 1;\n ptCtx.mainViewInstance?.updateCameraZoom(zoom);\n }\n }, [selectedBox]);\n\n const ptCloud3DCtx = useMemo(() => {\n return { reset3DView, setTarget3DView, isActive: !!selectedBox, followTopView };\n }, [selectedBox, ptCtx.mainViewInstance]);\n\n const PointCloud3DTitle = (\n <div>\n <span style={{ marginRight: 8 }}>{t('ShowArrows')}</span>\n <Switch\n size='small'\n checked={showDirection}\n onChange={(showDirection) => {\n setShowDirection(showDirection);\n ptCtx.mainViewInstance?.setShowDirection(showDirection);\n }}\n />\n </div>\n );\n\n return (\n <PointCloudContainer\n className={getClassName('point-cloud-3d-container')}\n title={t('3DView')}\n toolbar={PointCloud3DTitle}\n style={{\n height:\n currentData.mappingImgList && currentData.mappingImgList?.length > 0 ? '55%' : '100%',\n }}\n >\n <div className={getClassName('point-cloud-3d-content')}>\n <PointCloud3DContext.Provider value={ptCloud3DCtx}>\n <PointCloud3DSideBar />\n </PointCloud3DContext.Provider>\n <div className={getClassName('point-cloud-3d-view')} id={pointCloudID} ref={ref} />\n </div>\n </PointCloudContainer>\n );\n};\n\nexport default connect(a2MapStateToProps, null, null, { context: LabelBeeContext })(PointCloud3D);\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PointCloud3DView.js","sources":["../../../src/components/pointCloudView/PointCloud3DView.tsx"],"sourcesContent":["/*\n * @Author: Laoluo luozefeng@sensetime.com\n * @Date: 2022-06-13 19:31:36\n * @LastEditors: Laoluo luozefeng@sensetime.com\n * @LastEditTime: 2022-06-27 19:43:25\n */\n\nimport { getClassName } from '@/utils/dom';\nimport { PointCloud } from '@labelbee/lb-annotation';\nimport {\n EPerspectiveView,\n IPointCloudBox,\n PointCloudUtils,\n toolStyleConverter,\n} from '@labelbee/lb-utils';\nimport classNames from 'classnames';\nimport React, { useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { PointCloudContainer } from './PointCloudLayout';\nimport { PointCloudContext } from './PointCloudContext';\nimport { a2MapStateToProps, IA2MapStateProps } from '@/store/annotation/map';\nimport { connect } from 'react-redux';\nimport { jsonParser } from '@/utils';\nimport { useSingleBox } from './hooks/useSingleBox';\nimport { Switch, Tooltip } from 'antd';\nimport useSize from '@/hooks/useSize';\nimport { usePointCloudViews } from './hooks/usePointCloudViews';\nimport { useTranslation } from 'react-i18next';\nimport { LabelBeeContext } from '@/store/ctx';\n\nconst pointCloudID = 'LABELBEE-POINTCLOUD';\nconst PointCloud3DContext = React.createContext<{\n isActive: boolean;\n setTarget3DView: (perspectiveView: EPerspectiveView) => void;\n reset3DView: () => void;\n followTopView: () => void;\n}>({\n isActive: false,\n setTarget3DView: () => {},\n reset3DView: () => {},\n followTopView: () => {},\n});\n\nconst PointCloudViewIcon = ({\n perspectiveView,\n}: {\n perspectiveView: keyof typeof EPerspectiveView;\n}) => {\n const { isActive, setTarget3DView } = useContext(PointCloud3DContext);\n\n const getTarget3DViewClassName = (position: string) => {\n return classNames({\n [getClassName('point-cloud-3d-view', position)]: true,\n active: isActive,\n });\n };\n\n return (\n <span\n onClick={() => {\n setTarget3DView(EPerspectiveView[perspectiveView]);\n }}\n className={getTarget3DViewClassName(perspectiveView.toLocaleLowerCase())}\n />\n );\n};\n\nconst PointCloud3DSideBar = () => {\n const { reset3DView, followTopView } = useContext(PointCloud3DContext);\n const { t } = useTranslation();\n return (\n <div className={getClassName('point-cloud-3d-sidebar')}>\n <PointCloudViewIcon perspectiveView='Top' />\n <PointCloudViewIcon perspectiveView='Front' />\n <PointCloudViewIcon perspectiveView='Left' />\n <PointCloudViewIcon perspectiveView='Back' />\n <PointCloudViewIcon perspectiveView='Right' />\n <PointCloudViewIcon perspectiveView='LFT' />\n <PointCloudViewIcon perspectiveView='RBT' />\n\n <Tooltip title={t('CameraFollowTopView')}>\n <span\n onClick={() => {\n followTopView();\n }}\n className={getClassName('point-cloud-3d-view', 'followTop')}\n />\n </Tooltip>\n\n <span\n onClick={() => {\n reset3DView();\n }}\n className={getClassName('point-cloud-3d-view', 'reset')}\n />\n </div>\n );\n};\n\nconst PointCloud3D: React.FC<IA2MapStateProps> = ({ currentData, config }) => {\n const ptCtx = useContext(PointCloudContext);\n const [showDirection, setShowDirection] = useState(true);\n const ref = useRef<HTMLDivElement>(null);\n const { initPointCloud3d } = usePointCloudViews();\n const size = useSize(ref);\n const { t } = useTranslation();\n\n useEffect(() => {\n if (!ptCtx.mainViewInstance) {\n return;\n }\n initPointCloud3d?.(size);\n }, [size]);\n const { selectedBox } = useSingleBox();\n\n const setTarget3DView = (perspectiveView: EPerspectiveView) => {\n const box = selectedBox?.info;\n\n if (box) {\n ptCtx.mainViewInstance?.updateCameraByBox(box, perspectiveView);\n }\n };\n\n const reset3DView = () => {\n ptCtx.mainViewInstance?.resetCamera();\n };\n\n const followTopView = () => {\n const topViewCamera = ptCtx.topViewInstance?.pointCloudInstance.camera;\n if (topViewCamera) {\n ptCtx.mainViewInstance?.applyCameraTarget(topViewCamera);\n }\n };\n\n useEffect(() => {\n if (ref.current && currentData?.url) {\n let pointCloud = ptCtx.mainViewInstance;\n if (!pointCloud && size.width) {\n const orthographicParams = {\n left: -size.width / 2,\n right: size.width / 2,\n top: size.height / 2,\n bottom: -size.height / 2,\n near: 100,\n far: -100,\n };\n\n // Need to be showed\n pointCloud = new PointCloud({\n container: ref.current,\n isOrthographicCamera: true,\n orthographicParams,\n config,\n });\n ptCtx.setMainViewInstance(pointCloud);\n }\n }\n }, [size]);\n\n /**\n * Listen for data changes.\n */\n useEffect(() => {\n if (ref.current && currentData?.url) {\n if (currentData.result && ptCtx.mainViewInstance) {\n let pointCloud = ptCtx.mainViewInstance;\n const boxParamsList = PointCloudUtils.getBoxParamsFromResultList(currentData.result);\n\n // Add Init Box\n boxParamsList.forEach((v: IPointCloudBox) => {\n const hex = toolStyleConverter.getColorFromConfig(\n { attribute: v.attribute },\n { ...config, attributeConfigurable: true },\n {},\n )?.hex;\n\n pointCloud?.generateBox(v, hex);\n });\n\n ptCtx.setPointCloudResult(boxParamsList);\n ptCtx.setPointCloudValid(jsonParser(currentData.result)?.valid);\n }\n }\n }, [currentData, ptCtx.mainViewInstance]);\n\n /**\n * Observe selectedID and reset camera to target top-view\n */\n useEffect(() => {\n if (selectedBox) {\n setTarget3DView(EPerspectiveView.Top);\n\n /**\n * 3DView's zoom synchronizes with topView' zoom.\n */\n const zoom = ptCtx.topViewInstance?.pointCloudInstance?.camera.zoom ?? 1;\n ptCtx.mainViewInstance?.updateCameraZoom(zoom);\n }\n }, [selectedBox]);\n\n const ptCloud3DCtx = useMemo(() => {\n return { reset3DView, setTarget3DView, isActive: !!selectedBox, followTopView };\n }, [selectedBox, ptCtx.mainViewInstance]);\n\n const PointCloud3DTitle = (\n <div>\n <span style={{ marginRight: 8 }}>{t('ShowArrows')}</span>\n <Switch\n size='small'\n checked={showDirection}\n onChange={(showDirection) => {\n setShowDirection(showDirection);\n ptCtx.mainViewInstance?.setShowDirection(showDirection);\n }}\n />\n </div>\n );\n\n return (\n <PointCloudContainer\n className={getClassName('point-cloud-3d-container')}\n title={t('3DView')}\n toolbar={PointCloud3DTitle}\n style={{\n height:\n currentData.mappingImgList && currentData.mappingImgList?.length > 0 ? '55%' : '100%',\n }}\n >\n <div className={getClassName('point-cloud-3d-content')}>\n <PointCloud3DContext.Provider value={ptCloud3DCtx}>\n <PointCloud3DSideBar />\n </PointCloud3DContext.Provider>\n <div className={getClassName('point-cloud-3d-view')} id={pointCloudID} ref={ref} />\n </div>\n </PointCloudContainer>\n );\n};\n\nexport default connect(a2MapStateToProps, null, null, { context: LabelBeeContext })(PointCloud3D);\n"],"names":[],"mappings":"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"}
|
|
@@ -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 m,cTool as oe}from"@labelbee/lb-annotation";import{message as v}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 fe}from"./hooks/usePolygon.js";import{useTranslation as me}from"react-i18next";var be=Object.defineProperty,Pe=Object.defineProperties,ye=Object.getOwnPropertyDescriptors,S=Object.getOwnPropertySymbols,ve=Object.prototype.hasOwnProperty,we=Object.prototype.propertyIsEnumerable,O=(i,r,n)=>r in i?be(i,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):i[r]=n,V=(i,r)=>{for(var n in r||(r={}))ve.call(r,n)&&O(i,n,r[n]);if(S)for(var n of S(r))we.call(r,n)&&O(i,n,r[n]);return i},I=(i,r)=>Pe(i,ye(r));const{EPolygonPattern:Ce}=oe,xe=({currentData:i,config:r,checkMode:n,configString:A,imgIndex:w})=>{const o=Z($),{changeSelectedBoxValid:j,selectNextBox:L,selectPrevBox:D,updateSelectedBox:C,deleteSelectedPointCloudBoxAndPolygon:E}=X(),{clearAllResult:b,updatePointCloudPattern:R}=ae(),T=ie(i.result),{copySelectedBoxes:K,pasteSelectedBoxes:N,copiedBoxes:H}=Q({config:r}),{toolInstanceRef:a}=ne({basicInfo:T}),{updateRotate:P}=J({currentData:i}),{updatePointCloudData:x,topViewSelectedChanged:U}=ue(),{redo:g,undo:k,pushHistoryWithList:z,pushHistoryUnderUpdatePolygon:F}=ce(),{syncThreeViewsAttribute:h}=de(),{syncAllViewsConfig:q,reRenderTopViewRange:G}=pe(),{selectedPolygon:_}=fe(),{t:y}=me(),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?m.Rect:m.Polygon;R(p);const Y={[m.Polygon]:y("PolygonPattern"),[m.Rect]:y("RectPattern")};v.success(y("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":E();break;default:{if(((s=r.attributeList)==null?void 0:s.length)>0){const p=te.getAttributeByKeycode(t.keyCode,r.attributeList);p!==void 0&&a.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)||n===!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(()=>{x==null||x()},[w,o.mainViewInstance]),d(()=>{o.setHideAttributes([])},[w]),d(()=>{a.current.exportData=()=>[o.pointCloudBoxList,{valid:o.valid}],a.current.exportCustomData=()=>{var e;return{resultPolygon:(e=o.polygonList)!=null?e:[]}},a.current.setDefaultAttribute=e=>{h(e);const t=o.selectedPointCloudBox;if(t){t.attribute=e;const s=C(t);o.mainViewInstance&&U(t,s)}_&&F(I(V({},_),{attribute:e}))},a.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}),C(u)}},a.current.clearResult=()=>{b==null||b()},a.current.redo=()=>{g()},a.current.undo=()=>{k()},a.current.setValid=e=>{a.current.valid=e,setTimeout(()=>{o.setPointCloudValid(e),e===!1&&b()})},a.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)},a.current.setShowDefaultCursor=e=>{var t,s;(s=(t=o.topViewInstance)==null?void 0:t.pointCloud2dOperation)==null||s.setShowDefaultCursor(e)}},[o.pointCloudBoxList,o.selectedID,o.valid,o.polygonList,o.mainViewInstance]),d(()=>{a.current.history={pushHistory:e=>{z({pointCloudBoxList:e})},initRecord:()=>{}}},[]),d(()=>{var e;const t=(e=o.topViewInstance)==null?void 0:e.pointCloud2dOperation;if(!t||n)return;const s=c=>{h(c)},u=c=>{v.error(c)},l=c=>{v.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 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';\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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"}
|
package/es/index.css
CHANGED
|
@@ -1066,6 +1066,7 @@
|
|
|
1066
1066
|
.bee-annotated-attribute {
|
|
1067
1067
|
width: 240px;
|
|
1068
1068
|
background: white;
|
|
1069
|
+
padding-bottom: 12px;
|
|
1069
1070
|
}
|
|
1070
1071
|
.bee-annotated-attribute__popover .ant-popover-inner-content {
|
|
1071
1072
|
padding: 0;
|
|
@@ -1082,6 +1083,7 @@
|
|
|
1082
1083
|
justify-content: space-between;
|
|
1083
1084
|
padding: 8px 12px;
|
|
1084
1085
|
color: #333;
|
|
1086
|
+
cursor: pointer;
|
|
1085
1087
|
}
|
|
1086
1088
|
.bee-annotated-attribute__item {
|
|
1087
1089
|
height: 40px;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{PointCloudContext as
|
|
1
|
+
import{PointCloudContext as m}from"../../../../components/pointCloudView/PointCloudContext.js";import{Modal as D}from"antd";import t,{useContext as d,useMemo as A,useState as H}from"react";import{stepConfigSelector as O}from"../../../../store/annotation/selectors.js";import{useSelector as h}from"../../../../store/ctx.js";import{i18n as x}from"@labelbee/lb-utils";import{UnorderedListOutlined as P,PushpinFilled as b,EyeInvisibleFilled as V,EyeFilled as _,CaretDownFilled as $,DeleteOutlined as G}from"@ant-design/icons";import{useHistory as T}from"../../../../components/pointCloudView/hooks/useHistory.js";import{getClassName as a}from"../../../../utils/dom.js";import U from"../../../../utils/StepUtils.js";import{EPointCloudName as M}from"@labelbee/lb-annotation";import{useTranslation as k}from"react-i18next";import K from"../FooterPopover.js";const W=({attribute:n})=>{const u=d(m),{pointCloudBoxList:l,hideAttributes:r,toggleAttributesVisible:s,polygonList:o,setPolygonList:p,setPointCloudResult:C,reRender:i,selectSpecAttr:F}=u,[E,N]=H(!0),{pushHistoryWithList:B}=T(),L=[...l,...o].filter(e=>e.attribute===n.value),v=()=>{s(n.value)},R=r.includes(n.value),S=({trackID:e,order:c})=>e||c,j=({trackID:e,order:c})=>e?`trackID_${e}`:`order_${c}`,I=e=>{if(L.length===0)return;const c=o.filter(y=>e!==y.attribute),g=l.filter(y=>e!==y.attribute);i(g,c),p(c),C(g),B({pointCloudBoxList:g,polygonList:c})},w=e=>{D.confirm({content:x.t("onDeleteGraphByAttr",{attribute:e.key}),onOk:()=>{I(e.value)},okText:x.t("Confirm"),cancelText:x.t("Cancel")})};return t.createElement(t.Fragment,null,t.createElement("div",{className:a("annotated-attribute","item")},R?t.createElement(V,{onClick:v}):t.createElement(_,{onClick:v}),t.createElement($,{rotate:E?0:270,onClick:()=>{N(!E)}}),t.createElement("span",{className:a("annotated-attribute","item","text"),onClick:()=>{F(n.value)}},n.key),t.createElement(G,{onClick:()=>w(n)})),E&&L.map(e=>t.createElement("div",{key:j(e),style:{paddingLeft:54}},`${S(e)}.${n.key}`)))},f=()=>{const n=h(O),{attrPanelLayout:u,setAttrPanelLayout:l,pointCloudBoxList:r,polygonList:s}=d(m),{t:o}=k(),p=A(()=>[...r,...s].map(i=>i.attribute),[r,s]),C=A(()=>n.attributeList.filter(i=>p.includes(i.value)),[p]);return t.createElement("div",{className:a("annotated-attribute")},u?t.createElement("div",{className:a("annotated-attribute","text")},t.createElement("span",null,o("AnnotatedResult")),t.createElement("span",{className:a("annotated-attribute","pin"),onClick:()=>{l("")}},t.createElement(b,null),o("CancelFixed"))):t.createElement("div",{className:a("annotated-attribute","text")},t.createElement("span",{onClick:()=>{l("left")},className:a("annotated-attribute","pin")},t.createElement(b,null),o("FixedOnLeft")),t.createElement("span",{onClick:()=>{l("right")},className:a("annotated-attribute","pin")},t.createElement(b,null),o("FixedOnRight"))),t.createElement("div",null,C.length>0?C.map(i=>t.createElement(W,{attribute:i,key:i.value})):t.createElement("div",{style:{textAlign:"center",height:200,lineHeight:"200px"}},o("NoData"))))},q=()=>{const{attrPanelLayout:n}=d(m);return n==="left"?t.createElement(f,null):null},z=()=>{const{attrPanelLayout:n}=d(m);return n==="right"?t.createElement(f,null):null},J=()=>{const{attrPanelLayout:n}=d(m),{t:u}=k(),l=h(r=>{var s,o;return U.getCurrentStepInfo((s=r==null?void 0:r.annotation)==null?void 0:s.step,(o=r.annotation)==null?void 0:o.stepList)});return(l==null?void 0:l.tool)!==M.PointCloud||n?null:t.createElement(K,{hoverIcon:t.createElement(P,{style:{marginRight:4}}),icon:t.createElement(P,{style:{marginRight:4}}),title:u("AnnotatedList"),content:t.createElement(f,null)})};export{J as AnnotatedAttributesIcon,f as AnnotatedAttributesPanel,q as AnnotatedAttributesPanelFixedLeft,z as AnnotatedAttributesPanelFixedRight};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/toolFooter/AnnotatedAttributes/index.tsx"],"sourcesContent":["import { PointCloudContext } from '@/components/pointCloudView/PointCloudContext';\nimport { Modal } from 'antd';\nimport React, { useContext, useState } from 'react';\nimport { stepConfigSelector } from '@/store/annotation/selectors';\nimport { useSelector } from '@/store/ctx';\nimport { i18n, IPointCloudConfig } from '@labelbee/lb-utils';\nimport {\n CaretDownFilled,\n DeleteOutlined,\n EyeFilled,\n EyeInvisibleFilled,\n PushpinFilled,\n UnorderedListOutlined,\n} from '@ant-design/icons';\nimport { IInputList } from '@/types/main';\nimport { useHistory } from '@/components/pointCloudView/hooks/useHistory';\nimport { getClassName } from '@/utils/dom';\nimport StepUtils from '@/utils/StepUtils';\nimport { EPointCloudName } from '@labelbee/lb-annotation';\nimport { useTranslation } from 'react-i18next';\nimport FooterPopover from '../FooterPopover';\n\nconst AnnotatedAttributesItem = ({ attribute }: { attribute: IInputList }) => {\n const pointCloudCtx = useContext(PointCloudContext);\n const { t } = useTranslation();\n const {\n pointCloudBoxList,\n hideAttributes,\n toggleAttributesVisible,\n polygonList,\n setPolygonList,\n setPointCloudResult,\n reRender,\n } = pointCloudCtx;\n\n const [expanded, setExpanded] = useState(false);\n\n const { pushHistoryWithList } = useHistory();\n\n const pointCloudListForSpecAttribute = [...pointCloudBoxList, ...polygonList].filter(\n (i) => i.attribute === attribute.value,\n );\n\n const onVisibleChange = () => {\n toggleAttributesVisible(attribute.value);\n };\n\n const isHidden = hideAttributes.includes(attribute.value);\n\n const getBoxID = ({ trackID, order }: { trackID?: number; order?: number }) => {\n return trackID ? trackID : order;\n };\n\n const getBoxKey = ({ trackID, order }: { trackID?: number; order?: number }) => {\n return trackID ? `trackID_${trackID}` : `order_${order}`;\n };\n\n const deleteGraphByAttr = (attribute: string) => {\n if (pointCloudListForSpecAttribute.length === 0) {\n return;\n }\n\n const newPolygonList = polygonList.filter((i) => attribute !== i.attribute);\n const newPointCloudList = pointCloudBoxList.filter((i) => attribute !== i.attribute);\n\n reRender(newPointCloudList, newPolygonList);\n\n setPolygonList(newPolygonList);\n setPointCloudResult(newPointCloudList);\n\n pushHistoryWithList({ pointCloudBoxList: newPointCloudList, polygonList: newPolygonList });\n };\n\n const onDeleteGraphByAttr = (attribute: IInputList) => {\n Modal.confirm({\n content: i18n.t('onDeleteGraphByAttr', { attribute: attribute.key }),\n onOk: () => {\n deleteGraphByAttr(attribute.value);\n },\n okText: i18n.t('Confirm'),\n cancelText: i18n.t('Cancel'),\n });\n };\n\n return (\n <>\n <div className={getClassName('annotated-attribute', 'item')}>\n {isHidden ? (\n <EyeInvisibleFilled onClick={onVisibleChange} />\n ) : (\n <EyeFilled onClick={onVisibleChange} />\n )}\n <CaretDownFilled\n rotate={expanded ? 0 : 270}\n onClick={() => {\n setExpanded(!expanded);\n }}\n />\n <span className={getClassName('annotated-attribute', 'item', 'text')}>{attribute.key}</span>\n\n <DeleteOutlined onClick={() => onDeleteGraphByAttr(attribute)} />\n </div>\n\n {expanded &&\n (pointCloudListForSpecAttribute.length > 0 ? (\n pointCloudListForSpecAttribute.map((box) => {\n return (\n <div key={getBoxKey(box)} style={{ paddingLeft: 54 }}>\n {`${getBoxID(box)}.${attribute.key}`}\n </div>\n );\n })\n ) : (\n <div style={{ textAlign: 'center' }}>{t('NoData')}</div>\n ))}\n </>\n );\n};\n\nexport const AnnotatedAttributesPanel = () => {\n const stepConfig: IPointCloudConfig = useSelector(stepConfigSelector);\n const { attrPanelLayout, setAttrPanelLayout } = useContext(PointCloudContext);\n const { t } = useTranslation();\n\n return (\n <div className={getClassName('annotated-attribute')}>\n {attrPanelLayout ? (\n <div className={getClassName('annotated-attribute', 'text')}>\n <span>{t('AnnotatedResult')}</span>\n <span\n className={getClassName('annotated-attribute', 'pin')}\n onClick={() => {\n setAttrPanelLayout('');\n }}\n >\n <PushpinFilled />\n {t('CancelFixed')}\n </span>\n </div>\n ) : (\n <div className={getClassName('annotated-attribute', 'text')}>\n <span\n onClick={() => {\n setAttrPanelLayout('left');\n }}\n className={getClassName('annotated-attribute', 'pin')}\n >\n <PushpinFilled />\n {t('FixedOnLeft')}\n </span>\n <span\n onClick={() => {\n setAttrPanelLayout('right');\n }}\n className={getClassName('annotated-attribute', 'pin')}\n >\n <PushpinFilled />\n {t('FixedOnRight')}\n </span>\n </div>\n )}\n\n <div>\n {stepConfig.attributeList.map((i) => (\n <AnnotatedAttributesItem attribute={i} key={i.value} />\n ))}\n </div>\n </div>\n );\n};\n\nexport const AnnotatedAttributesPanelFixedLeft = () => {\n const { attrPanelLayout } = useContext(PointCloudContext);\n if (attrPanelLayout === 'left') {\n return <AnnotatedAttributesPanel />;\n }\n\n return null;\n};\n\nexport const AnnotatedAttributesPanelFixedRight = () => {\n const { attrPanelLayout } = useContext(PointCloudContext);\n\n if (attrPanelLayout === 'right') {\n return <AnnotatedAttributesPanel />;\n }\n\n return null;\n};\n\nexport const AnnotatedAttributesIcon = () => {\n const { attrPanelLayout } = useContext(PointCloudContext);\n const { t } = useTranslation();\n const stepInfo = useSelector((state) =>\n // @ts-ignore\n StepUtils.getCurrentStepInfo(state?.annotation?.step, state.annotation?.stepList),\n );\n\n if (stepInfo?.tool !== EPointCloudName.PointCloud) {\n return null;\n }\n\n if (attrPanelLayout) {\n return null;\n }\n\n return (\n <FooterPopover\n hoverIcon={<UnorderedListOutlined style={{ marginRight: 4 }} />}\n icon={<UnorderedListOutlined style={{ marginRight: 4 }} />}\n title={t('AnnotatedList')}\n content={<AnnotatedAttributesPanel />}\n />\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/views/MainView/toolFooter/AnnotatedAttributes/index.tsx"],"sourcesContent":["import { PointCloudContext } from '@/components/pointCloudView/PointCloudContext';\nimport { Modal } from 'antd';\nimport React, { useContext, useMemo, useState } from 'react';\nimport { stepConfigSelector } from '@/store/annotation/selectors';\nimport { useSelector } from '@/store/ctx';\nimport { i18n, IPointCloudConfig } from '@labelbee/lb-utils';\nimport {\n CaretDownFilled,\n DeleteOutlined,\n EyeFilled,\n EyeInvisibleFilled,\n PushpinFilled,\n UnorderedListOutlined,\n} from '@ant-design/icons';\nimport { IInputList } from '@/types/main';\nimport { useHistory } from '@/components/pointCloudView/hooks/useHistory';\nimport { getClassName } from '@/utils/dom';\nimport StepUtils from '@/utils/StepUtils';\nimport { EPointCloudName } from '@labelbee/lb-annotation';\nimport { useTranslation } from 'react-i18next';\nimport FooterPopover from '../FooterPopover';\n\nconst AnnotatedAttributesItem = ({ attribute }: { attribute: IInputList }) => {\n const pointCloudCtx = useContext(PointCloudContext);\n const {\n pointCloudBoxList,\n hideAttributes,\n toggleAttributesVisible,\n polygonList,\n setPolygonList,\n setPointCloudResult,\n reRender,\n selectSpecAttr,\n } = pointCloudCtx;\n\n const [expanded, setExpanded] = useState(true);\n\n const { pushHistoryWithList } = useHistory();\n\n const pointCloudListForSpecAttribute = [...pointCloudBoxList, ...polygonList].filter(\n (i) => i.attribute === attribute.value,\n );\n\n const onVisibleChange = () => {\n toggleAttributesVisible(attribute.value);\n };\n\n const isHidden = hideAttributes.includes(attribute.value);\n\n const getBoxID = ({ trackID, order }: { trackID?: number; order?: number }) => {\n return trackID ? trackID : order;\n };\n\n const getBoxKey = ({ trackID, order }: { trackID?: number; order?: number }) => {\n return trackID ? `trackID_${trackID}` : `order_${order}`;\n };\n\n const deleteGraphByAttr = (attribute: string) => {\n if (pointCloudListForSpecAttribute.length === 0) {\n return;\n }\n\n const newPolygonList = polygonList.filter((i) => attribute !== i.attribute);\n const newPointCloudList = pointCloudBoxList.filter((i) => attribute !== i.attribute);\n\n reRender(newPointCloudList, newPolygonList);\n\n setPolygonList(newPolygonList);\n setPointCloudResult(newPointCloudList);\n\n pushHistoryWithList({ pointCloudBoxList: newPointCloudList, polygonList: newPolygonList });\n };\n\n const onDeleteGraphByAttr = (attribute: IInputList) => {\n Modal.confirm({\n content: i18n.t('onDeleteGraphByAttr', { attribute: attribute.key }),\n onOk: () => {\n deleteGraphByAttr(attribute.value);\n },\n okText: i18n.t('Confirm'),\n cancelText: i18n.t('Cancel'),\n });\n };\n\n return (\n <>\n <div className={getClassName('annotated-attribute', 'item')}>\n {isHidden ? (\n <EyeInvisibleFilled onClick={onVisibleChange} />\n ) : (\n <EyeFilled onClick={onVisibleChange} />\n )}\n <CaretDownFilled\n rotate={expanded ? 0 : 270}\n onClick={() => {\n setExpanded(!expanded);\n }}\n />\n <span\n className={getClassName('annotated-attribute', 'item', 'text')}\n onClick={() => {\n selectSpecAttr(attribute.value);\n }}\n >\n {attribute.key}\n </span>\n\n <DeleteOutlined onClick={() => onDeleteGraphByAttr(attribute)} />\n </div>\n\n {expanded &&\n pointCloudListForSpecAttribute.map((box) => {\n return (\n <div key={getBoxKey(box)} style={{ paddingLeft: 54 }}>\n {`${getBoxID(box)}.${attribute.key}`}\n </div>\n );\n })}\n </>\n );\n};\n\nexport const AnnotatedAttributesPanel = () => {\n const stepConfig: IPointCloudConfig = useSelector(stepConfigSelector);\n const { attrPanelLayout, setAttrPanelLayout, pointCloudBoxList, polygonList } =\n useContext(PointCloudContext);\n const { t } = useTranslation();\n\n const existAttributes = useMemo(() => {\n return [...pointCloudBoxList, ...polygonList].map((i) => i.attribute);\n }, [pointCloudBoxList, polygonList]);\n\n const displayAttrList = useMemo(() => {\n return (stepConfig.attributeList as IInputList[]).filter((i) =>\n existAttributes.includes(i.value),\n );\n }, [existAttributes]);\n\n return (\n <div className={getClassName('annotated-attribute')}>\n {attrPanelLayout ? (\n <div className={getClassName('annotated-attribute', 'text')}>\n <span>{t('AnnotatedResult')}</span>\n <span\n className={getClassName('annotated-attribute', 'pin')}\n onClick={() => {\n setAttrPanelLayout('');\n }}\n >\n <PushpinFilled />\n {t('CancelFixed')}\n </span>\n </div>\n ) : (\n <div className={getClassName('annotated-attribute', 'text')}>\n <span\n onClick={() => {\n setAttrPanelLayout('left');\n }}\n className={getClassName('annotated-attribute', 'pin')}\n >\n <PushpinFilled />\n {t('FixedOnLeft')}\n </span>\n <span\n onClick={() => {\n setAttrPanelLayout('right');\n }}\n className={getClassName('annotated-attribute', 'pin')}\n >\n <PushpinFilled />\n {t('FixedOnRight')}\n </span>\n </div>\n )}\n\n <div>\n {displayAttrList.length > 0 ? (\n displayAttrList.map((i) => <AnnotatedAttributesItem attribute={i} key={i.value} />)\n ) : (\n <div style={{ textAlign: 'center', height: 200, lineHeight: '200px' }}>{t('NoData')}</div>\n )}\n </div>\n </div>\n );\n};\n\nexport const AnnotatedAttributesPanelFixedLeft = () => {\n const { attrPanelLayout } = useContext(PointCloudContext);\n if (attrPanelLayout === 'left') {\n return <AnnotatedAttributesPanel />;\n }\n\n return null;\n};\n\nexport const AnnotatedAttributesPanelFixedRight = () => {\n const { attrPanelLayout } = useContext(PointCloudContext);\n\n if (attrPanelLayout === 'right') {\n return <AnnotatedAttributesPanel />;\n }\n\n return null;\n};\n\nexport const AnnotatedAttributesIcon = () => {\n const { attrPanelLayout } = useContext(PointCloudContext);\n const { t } = useTranslation();\n const stepInfo = useSelector((state) =>\n // @ts-ignore\n StepUtils.getCurrentStepInfo(state?.annotation?.step, state.annotation?.stepList),\n );\n\n if (stepInfo?.tool !== EPointCloudName.PointCloud) {\n return null;\n }\n\n if (attrPanelLayout) {\n return null;\n }\n\n return (\n <FooterPopover\n hoverIcon={<UnorderedListOutlined style={{ marginRight: 4 }} />}\n icon={<UnorderedListOutlined style={{ marginRight: 4 }} />}\n title={t('AnnotatedList')}\n content={<AnnotatedAttributesPanel />}\n />\n );\n};\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@labelbee/lb-components",
|
|
3
|
-
"version": "1.9.0-alpha.
|
|
3
|
+
"version": "1.9.0-alpha.4",
|
|
4
4
|
"description": "Provide a complete library of annotation components",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"es": "./es/index.js",
|
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@ant-design/icons": "^4.6.2",
|
|
44
|
-
"@labelbee/lb-annotation": "^1.13.0-alpha.
|
|
45
|
-
"@labelbee/lb-utils": "^1.6.0-alpha.
|
|
44
|
+
"@labelbee/lb-annotation": "^1.13.0-alpha.4",
|
|
45
|
+
"@labelbee/lb-utils": "^1.6.0-alpha.4",
|
|
46
46
|
"ahooks": "^3.4.0",
|
|
47
47
|
"classnames": "^2.3.0",
|
|
48
48
|
"lodash": "^4.17.21",
|
|
@@ -97,5 +97,5 @@
|
|
|
97
97
|
"path": "node_modules/cz-conventional-changelog"
|
|
98
98
|
}
|
|
99
99
|
},
|
|
100
|
-
"gitHead": "
|
|
100
|
+
"gitHead": "9a348d54c0c974d871839d71271cc2f91249a4c3"
|
|
101
101
|
}
|