@labelbee/lb-components 1.11.0-alpha.2 → 1.11.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.
@@ -1 +1 @@
1
- "use strict";var React=require("react"),lbAnnotation=require("@labelbee/lb-annotation"),es=require("antd/es"),useRefCache=require("../../hooks/useRefCache.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React),__defProp=Object.defineProperty,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,o)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,__spreadValues=(e,t)=>{for(var o in t||(t={}))__hasOwnProp.call(t,o)&&__defNormalProp(e,o,t[o]);if(__getOwnPropSymbols)for(var o of __getOwnPropSymbols(t))__propIsEnum.call(t,o)&&__defNormalProp(e,o,t[o]);return e};const DEFAULT_SIZE={width:500,height:100},sizeInitialized=e=>{if(!e)return DEFAULT_SIZE;if(e.width&&e.height)return e;const t=__spreadValues({},e);return t.width||(t.width=DEFAULT_SIZE.width),t.height||(t.height=DEFAULT_SIZE.height),t},AnnotationView=(e,t)=>{var o,h;const{src:g,annotations:l=[],style:m={stroke:"blue",thickness:3},zoomChange:s,backgroundStyle:p={},onChange:c,showLoading:w=!1,globalStyle:b,afterImgOnLoad:y}=e,f=sizeInitialized(e.size),[I,d]=React.useState(!1),v=React.useRef(null),r=React.useRef(),_=useRefCache(y);React.useImperativeHandle(t,()=>{const n=r.current;return n?{zoomIn:()=>n.zoomChanged(!0),zoomOut:()=>n.zoomChanged(!1),initImgPos:()=>n.initImgPos(),toolInstance:n}:{}},[r.current]),React.useEffect(()=>(v.current&&(r.current=new lbAnnotation.ViewOperation({container:v.current,size:f,style:m,annotations:l,config:"{}"}),r.current.init()),()=>{var n;(n=r.current)==null||n.destroy()}),[]),React.useEffect(()=>{var n;r.current&&(d(!0),(n=r.current)==null||n.setLoading(!0),lbAnnotation.ImgUtils.load(g).then(i=>{var a,u;(a=r.current)==null||a.setLoading(!1),d(!1),(u=r.current)==null||u.setImgNode(i),_.current&&_.current(i)}).catch(()=>{var i;(i=r.current)==null||i.setLoading(!1),d(!1)}))},[g]),React.useEffect(()=>{r.current&&r.current.updateData(l)},[l]),React.useEffect(()=>{const n=r.current;(n==null?void 0:n.setSize)&&(n.setSize(f),n.initPosition())},[(o=e.size)==null?void 0:o.width,(h=e.size)==null?void 0:h.height]),React.useEffect(()=>{var n,i;return r.current&&((n=r.current)==null||n.on("onChange",(...a)=>{c==null||c.apply(null,a)}),(i=r.current)==null||i.on("renderZoom",a=>{s&&s(a)})),()=>{var a,u;(a=r.current)==null||a.unbindAll("onChange"),(u=r.current)==null||u.unbindAll("renderZoom")}},[s,c]);const O=React__default.default.createElement("div",{ref:v,style:__spreadValues(__spreadValues({position:"relative"},f),p)});return React__default.default.createElement(es.Spin,{spinning:w||I,delay:300,style:b},O)};var AnnotationView$1=React__default.default.forwardRef(AnnotationView);module.exports=AnnotationView$1;
1
+ "use strict";var React=require("react"),lbAnnotation=require("@labelbee/lb-annotation"),es=require("antd/es"),useRefCache=require("../../hooks/useRefCache.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React),__defProp=Object.defineProperty,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,o)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,__spreadValues=(e,t)=>{for(var o in t||(t={}))__hasOwnProp.call(t,o)&&__defNormalProp(e,o,t[o]);if(__getOwnPropSymbols)for(var o of __getOwnPropSymbols(t))__propIsEnum.call(t,o)&&__defNormalProp(e,o,t[o]);return e};const DEFAULT_SIZE={width:500,height:100},sizeInitialized=e=>{if(!e)return DEFAULT_SIZE;if(e.width&&e.height)return e;const t=__spreadValues({},e);return t.width||(t.width=DEFAULT_SIZE.width),t.height||(t.height=DEFAULT_SIZE.height),t},AnnotationView=(e,t)=>{var o,h;const{src:g,annotations:l=[],style:m={stroke:"blue",thickness:3},zoomChange:s,backgroundStyle:w={},onChange:c,showLoading:p=!1,globalStyle:b,afterImgOnLoad:y}=e,f=sizeInitialized(e.size),[I,d]=React.useState(!1),v=React.useRef(null),r=React.useRef(),_=useRefCache(y);React.useImperativeHandle(t,()=>{const n=r.current;return n?{zoomIn:()=>n.zoomChanged(!0),zoomOut:()=>n.zoomChanged(!1),initImgPos:()=>n.initImgPos(),toolInstance:n}:{}},[r.current]),React.useEffect(()=>(v.current&&(r.current=new lbAnnotation.ViewOperation({container:v.current,size:f,style:m,annotations:l,config:"{}",zoomInfo:e.zoomInfo}),r.current.init()),()=>{var n;(n=r.current)==null||n.destroy()}),[]),React.useEffect(()=>{var n;r.current&&(d(!0),(n=r.current)==null||n.setLoading(!0),lbAnnotation.ImgUtils.load(g).then(i=>{var a,u;(a=r.current)==null||a.setLoading(!1),d(!1),(u=r.current)==null||u.setImgNode(i),_.current&&_.current(i)}).catch(()=>{var i;(i=r.current)==null||i.setLoading(!1),d(!1)}))},[g]),React.useEffect(()=>{r.current&&r.current.updateData(l)},[l]),React.useEffect(()=>{const n=r.current;(n==null?void 0:n.setSize)&&(n.setSize(f),n.initPosition())},[(o=e.size)==null?void 0:o.width,(h=e.size)==null?void 0:h.height]),React.useEffect(()=>{var n,i;return r.current&&((n=r.current)==null||n.on("onChange",(...a)=>{c==null||c.apply(null,a)}),(i=r.current)==null||i.on("renderZoom",a=>{s&&s(a)})),()=>{var a,u;(a=r.current)==null||a.unbindAll("onChange"),(u=r.current)==null||u.unbindAll("renderZoom")}},[s,c]);const O=React__default.default.createElement("div",{ref:v,style:__spreadValues(__spreadValues({position:"relative"},f),w)});return React__default.default.createElement(es.Spin,{spinning:p||I,delay:300,style:b},O)};var AnnotationView$1=React__default.default.forwardRef(AnnotationView);module.exports=AnnotationView$1;
@@ -1 +1 @@
1
- "use strict";var dom=require("../../utils/dom.js"),React=require("react"),PointCloudLayout=require("./PointCloudLayout.js"),index=require("../AnnotationView/index.js"),PointCloudContext=require("./PointCloudContext.js"),reactRedux=require("react-redux"),icons=require("@ant-design/icons"),useSize=require("../../hooks/useSize.js"),useSingleBox=require("./hooks/useSingleBox.js"),lbAnnotation=require("@labelbee/lb-annotation"),reactI18next=require("react-i18next"),ctx=require("../../store/ctx.js"),map=require("../../store/annotation/map.js"),lbUtils=require("@labelbee/lb-utils");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React),__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 Toolbar=({onNext:e,onPrev:t,imgLength:n,imgIndex:s})=>React__default.default.createElement("div",null,React__default.default.createElement(icons.LeftOutlined,{onClick:t}),React__default.default.createElement("span",null," ",s+1," / ",n," "),React__default.default.createElement(icons.RightOutlined,{onClick:e})),PointCloud2DView=({currentData:e,config:t})=>{var n,s,_,b,P;const[c,L]=React.useState([]),{topViewInstance:w,displayPointCloudList:C}=React.useContext(PointCloudContext.PointCloudContext),[r,p]=React.useState(0),x=React.useRef(null),f=React.useRef(),{selectedBox:v}=useSingleBox.useSingleBox(),I=useSize(x),{t:O}=reactI18next.useTranslation(),a=(n=e==null?void 0:e.mappingImgList)==null?void 0:n[r];React.useEffect(()=>{p(0)},[e]),React.useEffect(()=>{if(w&&a){const o={fill:"transparent",color:"green"},l=C.reduce((u,i)=>{var d;const q=lbAnnotation.pointCloudLidar2image(i,a.calib),j=(d=lbUtils.toolStyleConverter.getColorFromConfig({attribute:i.attribute},__spreadProps(__spreadValues({},t),{attributeConfigurable:!0}),{}))==null?void 0:d.stroke;return[...u,...q.map(y=>({type:y.type,annotation:__spreadProps(__spreadValues({id:i.id,pointList:y.pointList},o),{stroke:j})}))]},[]);L(l)}},[C,a]);const m=!e||!(e==null?void 0:e.mappingImgList)||!(((s=e==null?void 0:e.mappingImgList)==null?void 0:s.length)>0),g=React.useCallback(()=>{var o,l;const u=(o=f.current)==null?void 0:o.toolInstance;if(!v||!u)return;const i=c.find(d=>d.annotation.id===v.info.id);((l=i==null?void 0:i.annotation.pointList)==null?void 0:l.length)>0&&u.focusPositionByPointList(i==null?void 0:i.annotation.pointList)},[v,f.current,c,r]);return React.useEffect(()=>{g()},[g]),React__default.default.createElement(PointCloudLayout.PointCloudContainer,{className:dom.getClassName("point-cloud-2d-container"),title:O("2DView"),toolbar:m?void 0:React__default.default.createElement(Toolbar,{imgIndex:r,imgLength:(b=(_=e.mappingImgList)==null?void 0:_.length)!=null?b:0,onNext:()=>{var o;!e||!(e==null?void 0:e.mappingImgList)||r>=((o=e==null?void 0:e.mappingImgList)==null?void 0:o.length)-1||p(l=>l+1)},onPrev:()=>{r<=0||p(o=>o-1)}}),style:{display:m?"none":"flex"}},React__default.default.createElement("div",{className:dom.getClassName("point-cloud-2d-image"),ref:x},React__default.default.createElement(index,{src:(P=a==null?void 0:a.url)!=null?P:"",annotations:c,size:I,ref:f,globalStyle:{display:m?"none":"block"},afterImgOnLoad:g})))};var PointCloud2DView$1=reactRedux.connect(map.a2MapStateToProps,null,null,{context:ctx.LabelBeeContext})(PointCloud2DView);module.exports=PointCloud2DView$1;
1
+ "use strict";var dom=require("../../utils/dom.js"),React=require("react"),PointCloudLayout=require("./PointCloudLayout.js"),index=require("../AnnotationView/index.js"),PointCloudContext=require("./PointCloudContext.js"),reactRedux=require("react-redux"),icons=require("@ant-design/icons"),useSize=require("../../hooks/useSize.js"),useSingleBox=require("./hooks/useSingleBox.js"),lbAnnotation=require("@labelbee/lb-annotation"),reactI18next=require("react-i18next"),ctx=require("../../store/ctx.js"),map=require("../../store/annotation/map.js"),lbUtils=require("@labelbee/lb-utils");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React),__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 Toolbar=({onNext:e,onPrev:t,imgLength:n,imgIndex:u})=>React__default.default.createElement("div",null,React__default.default.createElement(icons.LeftOutlined,{onClick:t}),React__default.default.createElement("span",null," ",u+1," / ",n," "),React__default.default.createElement(icons.RightOutlined,{onClick:e})),PointCloud2DView=({currentData:e,config:t})=>{var n,u,P,y,x;const[p,h]=React.useState([]),{topViewInstance:q,displayPointCloudList:L}=React.useContext(PointCloudContext.PointCloudContext),[f,C]=React.useState(""),[a,v]=React.useState(0),w=React.useRef(null),m=React.useRef(),{selectedBox:d}=useSingleBox.useSingleBox(),j=useSize(w),{t:E}=reactI18next.useTranslation(),r=(n=e==null?void 0:e.mappingImgList)==null?void 0:n[a];React.useEffect(()=>{v(0)},[e]),React.useEffect(()=>{if(q&&r){const o={fill:"transparent",color:"green"},l=L.reduce((c,i)=>{var s;const{transferViewData:b,viewRangePointList:R}=lbAnnotation.pointCloudLidar2image(i,r.calib),I=(s=lbUtils.toolStyleConverter.getColorFromConfig({attribute:i.attribute},__spreadProps(__spreadValues({},t),{attributeConfigurable:!0}),{}))==null?void 0:s.stroke,O=[...c,...b.map(S=>({type:S.type,annotation:__spreadProps(__spreadValues({id:i.id,pointList:S.pointList},o),{stroke:I})}))];return i.id===f&&O.push({type:"polygon",annotation:__spreadProps(__spreadValues({id:f,pointList:R},o),{stroke:I,fill:"rgba(255, 255, 255, 0.6)"})}),O},[]);h(l)}},[L,r,f]);const g=!e||!(e==null?void 0:e.mappingImgList)||!(((u=e==null?void 0:e.mappingImgList)==null?void 0:u.length)>0),_=React.useCallback(()=>{var o,l;const c=(o=m.current)==null?void 0:o.toolInstance;if(C(""),!d||!c)return;const i=p.find(b=>b.annotation.id===d.info.id);let s="";((l=i==null?void 0:i.annotation.pointList)==null?void 0:l.length)>0&&(c.focusPositionByPointList(i==null?void 0:i.annotation.pointList),s=d.info.id,C(s))},[d,m.current,p,a]);return React.useEffect(()=>{_()},[_]),React__default.default.createElement(PointCloudLayout.PointCloudContainer,{className:dom.getClassName("point-cloud-2d-container"),title:E("2DView"),toolbar:g?void 0:React__default.default.createElement(Toolbar,{imgIndex:a,imgLength:(y=(P=e.mappingImgList)==null?void 0:P.length)!=null?y:0,onNext:()=>{var o;!e||!(e==null?void 0:e.mappingImgList)||a>=((o=e==null?void 0:e.mappingImgList)==null?void 0:o.length)-1||v(l=>l+1)},onPrev:()=>{a<=0||v(o=>o-1)}}),style:g?{display:"none"}:{display:"flex",minHeight:200,maxHeight:500}},React__default.default.createElement("div",{className:dom.getClassName("point-cloud-2d-image"),ref:w},React__default.default.createElement(index,{src:(x=r==null?void 0:r.url)!=null?x:"",annotations:p,size:j,ref:m,globalStyle:{display:g?"none":"block"},afterImgOnLoad:_,zoomInfo:{min:.01,max:1e3,ratio:.4}})))};var PointCloud2DView$1=reactRedux.connect(map.a2MapStateToProps,null,null,{context:ctx.LabelBeeContext})(PointCloud2DView);module.exports=PointCloud2DView$1;
@@ -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"),useSphere=require("./hooks/useSphere.js"),antd=require("antd"),useSize=require("../../hooks/useSize.js"),usePointCloudViews=require("./hooks/usePointCloudViews.js"),reactI18next=require("react-i18next"),ctx=require("../../store/ctx.js"),index$1=require("./components/PointCloudSizeSlider/index.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,n,i)=>n in e?__defProp(e,n,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[n]=i,__spreadValues=(e,n)=>{for(var i in n||(n={}))__hasOwnProp.call(n,i)&&__defNormalProp(e,i,n[i]);if(__getOwnPropSymbols)for(var i of __getOwnPropSymbols(n))__propIsEnum.call(n,i)&&__defNormalProp(e,i,n[i]);return e},__spreadProps=(e,n)=>__defProps(e,__getOwnPropDescs(n));const pointCloudID="LABELBEE-POINTCLOUD",PointCloud3DContext=React__default.default.createContext({isActive:!1,setTarget3DView:()=>{},reset3DView:()=>{},followTopView:()=>{}}),PointCloudViewIcon=({perspectiveView:e})=>{const{isActive:n,setTarget3DView:i}=React.useContext(PointCloud3DContext),o=p=>classNames__default.default({[dom.getClassName("point-cloud-3d-view",p)]:!0,active:n});return React__default.default.createElement("span",{onClick:()=>{i(lbUtils.EPerspectiveView[e])},className:o(e.toLocaleLowerCase())})},PointCloud3DSideBar=()=>{const{reset3DView:e,followTopView:n}=React.useContext(PointCloud3DContext),{t:i}=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:i("CameraFollowTopView")},React__default.default.createElement("span",{onClick:()=>{n()},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:n})=>{var i;const o=React.useContext(PointCloudContext.PointCloudContext),[p,V]=React.useState(!0),d=React.useRef(null),{initPointCloud3d:w}=usePointCloudViews.usePointCloudViews(),u=useSize(d),{t:C}=reactI18next.useTranslation();React.useEffect(()=>{!o.mainViewInstance||w==null||w(u)},[u]);const{selectedBox:c}=useSingleBox.useSingleBox(),{selectedSphere:m}=useSphere.useSphere(),v=t=>{var a,r;const l=c==null?void 0:c.info;if(l){const s=__spreadValues({},l.center);s.x=s.x-.01,s.z=10;const f=t===lbUtils.EPerspectiveView.Top;(a=o.mainViewInstance)==null||a.updateCameraByBox(l,t,f?s:void 0)}m&&((r=o.mainViewInstance)==null||r.updateCameraBySphere(m,t))},P=()=>{var t;(t=o.mainViewInstance)==null||t.resetCamera()},g=()=>{var t,a;const r=(t=o.topViewInstance)==null?void 0:t.pointCloudInstance.camera;r&&((a=o.mainViewInstance)==null||a.applyCameraTarget(r))};React.useEffect(()=>{if(d.current&&(e==null?void 0:e.url)){let t=o.mainViewInstance;if(!t&&u.width){const a={left:-u.width/2,right:u.width/2,top:u.height/2,bottom:-u.height/2,near:100,far:-100};t=new lbAnnotation.PointCloud({container:d.current,isOrthographicCamera:!0,orthographicParams:a,config:n}),o.setMainViewInstance(t)}}},[u]),React.useEffect(()=>{var t;if(d.current&&(e==null?void 0:e.url)&&e.result&&o.mainViewInstance){let a=o.mainViewInstance;const r=lbUtils.PointCloudUtils.getBoxParamsFromResultList(e.result);r.forEach(l=>{var s;const f=(s=lbUtils.toolStyleConverter.getColorFromConfig({attribute:l.attribute},__spreadProps(__spreadValues({},n),{attributeConfigurable:!0}),{}))==null?void 0:s.hex;a==null||a.generateBox(l,f)}),o.setPointCloudResult(r),o.setPointCloudValid((t=index.jsonParser(e.result))==null?void 0:t.valid)}},[e,o.mainViewInstance]),React.useEffect(()=>{var t,a,r,l;if(c){v(lbUtils.EPerspectiveView.Top);const s=(r=(a=(t=o.topViewInstance)==null?void 0:t.pointCloudInstance)==null?void 0:a.camera.zoom)!=null?r:1;(l=o.mainViewInstance)==null||l.updateCameraZoom(s)}},[c]),React.useEffect(()=>{var t,a,r,l;if(m){v(lbUtils.EPerspectiveView.Top);const s=(r=(a=(t=o.topViewInstance)==null?void 0:t.pointCloudInstance)==null?void 0:a.camera.zoom)!=null?r:1;(l=o.mainViewInstance)==null||l.updateCameraZoom(s)}},[m]);const _=React.useMemo(()=>({reset3DView:P,setTarget3DView:v,isActive:!!c,followTopView:g}),[c,o.mainViewInstance]),h=React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement(index$1,{onChange:t=>{var a;(a=o.mainViewInstance)==null||a.updatePointSize({customSize:t})}}),React__default.default.createElement("span",{style:{marginRight:8}},C("ShowArrows")),React__default.default.createElement(antd.Switch,{size:"small",checked:p,onChange:t=>{var a;V(t),(a=o.mainViewInstance)==null||a.setShowDirection(t)}}));return React__default.default.createElement(PointCloudLayout.PointCloudContainer,{className:dom.getClassName("point-cloud-3d-container"),title:C("3DView"),toolbar:h,style:{height:e.mappingImgList&&((i=e.mappingImgList)==null?void 0:i.length)>0?"55%":"100%"}},React__default.default.createElement("div",{className:dom.getClassName("point-cloud-3d-content")},React__default.default.createElement(PointCloud3DContext.Provider,{value:_},React__default.default.createElement(PointCloud3DSideBar,null)),React__default.default.createElement("div",{className:dom.getClassName("point-cloud-3d-view"),id:pointCloudID,ref:d})))};var PointCloud3DView=reactRedux.connect(map.a2MapStateToProps,null,null,{context:ctx.LabelBeeContext})(PointCloud3D);module.exports=PointCloud3DView;
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"),useSphere=require("./hooks/useSphere.js"),antd=require("antd"),useSize=require("../../hooks/useSize.js"),usePointCloudViews=require("./hooks/usePointCloudViews.js"),reactI18next=require("react-i18next"),ctx=require("../../store/ctx.js"),index$1=require("./components/PointCloudSizeSlider/index.js");function _interopDefaultLegacy(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}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=(t,n,e)=>n in t?__defProp(t,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[n]=e,__spreadValues=(t,n)=>{for(var e in n||(n={}))__hasOwnProp.call(n,e)&&__defNormalProp(t,e,n[e]);if(__getOwnPropSymbols)for(var e of __getOwnPropSymbols(n))__propIsEnum.call(n,e)&&__defNormalProp(t,e,n[e]);return t},__spreadProps=(t,n)=>__defProps(t,__getOwnPropDescs(n));const pointCloudID="LABELBEE-POINTCLOUD",PointCloud3DContext=React__default.default.createContext({isActive:!1,setTarget3DView:()=>{},reset3DView:()=>{},followTopView:()=>{}}),PointCloudViewIcon=({perspectiveView:t})=>{const{isActive:n,setTarget3DView:e}=React.useContext(PointCloud3DContext),m=p=>classNames__default.default({[dom.getClassName("point-cloud-3d-view",p)]:!0,active:n});return React__default.default.createElement("span",{onClick:()=>{e(lbUtils.EPerspectiveView[t])},className:m(t.toLocaleLowerCase())})},PointCloud3DSideBar=()=>{const{reset3DView:t,followTopView:n}=React.useContext(PointCloud3DContext),{t:e}=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:e("CameraFollowTopView")},React__default.default.createElement("span",{onClick:()=>{n()},className:dom.getClassName("point-cloud-3d-view","followTop")})),React__default.default.createElement("span",{onClick:()=>{t()},className:dom.getClassName("point-cloud-3d-view","reset")}))},PointCloud3D=({currentData:t,config:n})=>{const e=React.useContext(PointCloudContext.PointCloudContext),[m,p]=React.useState(!0),c=React.useRef(null),{initPointCloud3d:w}=usePointCloudViews.usePointCloudViews(),s=useSize(c),{t:C}=reactI18next.useTranslation();React.useEffect(()=>{!e.mainViewInstance||w==null||w(s)},[s]);const{selectedBox:u}=useSingleBox.useSingleBox(),{selectedSphere:d}=useSphere.useSphere(),v=o=>{var a,i;const r=u==null?void 0:u.info;if(r){const l=__spreadValues({},r.center);l.x=l.x-.01,l.z=10;const f=o===lbUtils.EPerspectiveView.Top;(a=e.mainViewInstance)==null||a.updateCameraByBox(r,o,f?l:void 0)}d&&((i=e.mainViewInstance)==null||i.updateCameraBySphere(d,o))},V=()=>{var o;(o=e.mainViewInstance)==null||o.resetCamera()},P=()=>{var o,a;const i=(o=e.topViewInstance)==null?void 0:o.pointCloudInstance.camera;i&&((a=e.mainViewInstance)==null||a.applyCameraTarget(i))};React.useEffect(()=>{if(c.current&&(t==null?void 0:t.url)){let o=e.mainViewInstance;if(!o&&s.width){const a={left:-s.width/2,right:s.width/2,top:s.height/2,bottom:-s.height/2,near:100,far:-100};o=new lbAnnotation.PointCloud({container:c.current,isOrthographicCamera:!0,orthographicParams:a,config:n}),e.setMainViewInstance(o)}}},[s]),React.useEffect(()=>{var o;if(c.current&&(t==null?void 0:t.url)&&t.result&&e.mainViewInstance){let a=e.mainViewInstance;const i=lbUtils.PointCloudUtils.getBoxParamsFromResultList(t.result);i.forEach(r=>{var l;const f=(l=lbUtils.toolStyleConverter.getColorFromConfig({attribute:r.attribute},__spreadProps(__spreadValues({},n),{attributeConfigurable:!0}),{}))==null?void 0:l.hex;a==null||a.generateBox(r,f)}),e.setPointCloudResult(i),e.setPointCloudValid((o=index.jsonParser(t.result))==null?void 0:o.valid)}},[t,e.mainViewInstance]),React.useEffect(()=>{var o,a,i,r;if(u){v(lbUtils.EPerspectiveView.Top);const l=(i=(a=(o=e.topViewInstance)==null?void 0:o.pointCloudInstance)==null?void 0:a.camera.zoom)!=null?i:1;(r=e.mainViewInstance)==null||r.updateCameraZoom(l)}},[u]),React.useEffect(()=>{var o,a,i,r;if(d){v(lbUtils.EPerspectiveView.Top);const l=(i=(a=(o=e.topViewInstance)==null?void 0:o.pointCloudInstance)==null?void 0:a.camera.zoom)!=null?i:1;(r=e.mainViewInstance)==null||r.updateCameraZoom(l)}},[d]);const _=React.useMemo(()=>({reset3DView:V,setTarget3DView:v,isActive:!!u,followTopView:P}),[u,e.mainViewInstance]),g=React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement(index$1,{onChange:o=>{var a;(a=e.mainViewInstance)==null||a.updatePointSize({customSize:o})}}),React__default.default.createElement("span",{style:{marginRight:8}},C("ShowArrows")),React__default.default.createElement(antd.Switch,{size:"small",checked:m,onChange:o=>{var a;p(o),(a=e.mainViewInstance)==null||a.setShowDirection(o)}}));return React__default.default.createElement(PointCloudLayout.PointCloudContainer,{className:dom.getClassName("point-cloud-3d-container"),title:C("3DView"),toolbar:g},React__default.default.createElement("div",{className:dom.getClassName("point-cloud-3d-content")},React__default.default.createElement(PointCloud3DContext.Provider,{value:_},React__default.default.createElement(PointCloud3DSideBar,null)),React__default.default.createElement("div",{className:dom.getClassName("point-cloud-3d-view"),id:pointCloudID,ref:c})))};var PointCloud3DView=reactRedux.connect(map.a2MapStateToProps,null,null,{context:ctx.LabelBeeContext})(PointCloud3D);module.exports=PointCloud3DView;
package/dist/index.css CHANGED
@@ -1276,6 +1276,7 @@
1276
1276
  width: 24px;
1277
1277
  background-repeat: no-repeat;
1278
1278
  cursor: pointer;
1279
+ flex: none;
1279
1280
  margin-right: 16px;
1280
1281
  background-image: url("../dist/assets/icons/7eadb9c4.svg");
1281
1282
  transform: rotateY(180deg);
@@ -1286,6 +1287,7 @@
1286
1287
  width: 24px;
1287
1288
  background-repeat: no-repeat;
1288
1289
  cursor: pointer;
1290
+ flex: none;
1289
1291
  margin-right: 16px;
1290
1292
  background-image: url("../dist/assets/icons/7eadb9c4.svg");
1291
1293
  }
@@ -1295,6 +1297,7 @@
1295
1297
  width: 24px;
1296
1298
  background-repeat: no-repeat;
1297
1299
  cursor: pointer;
1300
+ flex: none;
1298
1301
  background-image: url("../dist/assets/icons/9d70807.svg");
1299
1302
  }
1300
1303
  .bee-point-cloud-wrapper .bee-point-cloud-container__header-toolbar .bee-point-cloud__next {
@@ -1345,7 +1348,7 @@
1345
1348
  display: flex;
1346
1349
  flex-direction: column;
1347
1350
  overflow: hidden;
1348
- min-height: 400px;
1351
+ flex: 1;
1349
1352
  }
1350
1353
  .bee-point-cloud-wrapper .bee-point-cloud-container__left .bee-point-cloud-3d-container .bee-point-cloud-3d-content {
1351
1354
  display: flex;
@@ -1360,7 +1363,11 @@
1360
1363
  box-sizing: content-box;
1361
1364
  display: flex;
1362
1365
  flex-direction: column;
1363
- justify-content: flex-end;
1366
+ justify-content: flex-start;
1367
+ overflow-y: scroll;
1368
+ }
1369
+ .bee-point-cloud-wrapper .bee-point-cloud-container__left .bee-point-cloud-3d-container .bee-point-cloud-3d-content .bee-point-cloud-3d-sidebar::-webkit-scrollbar {
1370
+ display: none;
1364
1371
  }
1365
1372
  .bee-point-cloud-wrapper .bee-point-cloud-container__left .bee-point-cloud-3d-container .bee-point-cloud-3d-content .bee-point-cloud-3d-sidebar .bee-point-cloud-3d-view__reset, .bee-point-cloud-wrapper .bee-point-cloud-container__left .bee-point-cloud-3d-container .bee-point-cloud-3d-content .bee-point-cloud-3d-sidebar .bee-point-cloud-3d-view__followTop {
1366
1373
  display: inline-block;
@@ -1368,6 +1375,7 @@
1368
1375
  width: 36px;
1369
1376
  background-repeat: no-repeat;
1370
1377
  cursor: pointer;
1378
+ flex: none;
1371
1379
  font-size: 36px;
1372
1380
  background-position: center;
1373
1381
  background-color: #444;
@@ -1388,6 +1396,7 @@
1388
1396
  width: 36px;
1389
1397
  background-repeat: no-repeat;
1390
1398
  cursor: pointer;
1399
+ flex: none;
1391
1400
  background-image: url("../dist/assets/icons/c5b4262e.png");
1392
1401
  margin-bottom: 8px;
1393
1402
  }
@@ -22,6 +22,11 @@ interface IProps {
22
22
  showLoading?: boolean;
23
23
  globalStyle?: React.CSSProperties;
24
24
  afterImgOnLoad?: TAfterImgOnLoad;
25
+ zoomInfo?: {
26
+ min: number;
27
+ max: number;
28
+ ratio: number;
29
+ };
25
30
  }
26
31
  declare const _default: React.ForwardRefExoticComponent<IProps & React.RefAttributes<unknown>>;
27
32
  export default _default;
@@ -15,6 +15,7 @@ interface IProps {
15
15
  imgList: AnnotationFileList;
16
16
  imgIndex: number;
17
17
  stepList: IStepInfo[];
18
+ updateCurrentPolygonList: (value: number) => void;
18
19
  }
19
- declare const _default: import("react-redux").ConnectedComponent<({ id, stepList, imgList, imgIndex, toolInstance }: IProps) => React.JSX.Element, import("react-redux").Omit<IProps, "stepList" | "imgIndex" | "imgList" | "toolInstance">>;
20
+ declare const _default: import("react-redux").ConnectedComponent<({ id, stepList, imgList, imgIndex, toolInstance, updateCurrentPolygonList, }: IProps) => React.JSX.Element, import("react-redux").Omit<IProps, "stepList" | "imgIndex" | "imgList" | "toolInstance">>;
20
21
  export default _default;
@@ -1 +1 @@
1
- "use strict";var actionCreators=require("../../../../../../store/annotation/actionCreators.js"),reducer=require("../../../../../../store/annotation/reducer.js"),ctx=require("../../../../../../store/ctx.js"),antd=require("antd"),React=require("react"),reactI18next=require("react-i18next"),reactRedux=require("react-redux");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React),__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,r)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,__spreadValues=(e,t)=>{for(var r in t||(t={}))__hasOwnProp.call(t,r)&&__defNormalProp(e,r,t[r]);if(__getOwnPropSymbols)for(var r of __getOwnPropSymbols(t))__propIsEnum.call(t,r)&&__defNormalProp(e,r,t[r]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t));const layout={labelCol:{span:8},wrapperCol:{span:16}},inputStyle={width:"80px"},BatchUpdateModal=({id:e,stepList:t,imgList:r,imgIndex:c,toolInstance:i})=>{const u=ctx.useDispatch(),[m,n]=React.useState(!1),[s]=antd.Form.useForm(),{t:a}=reactI18next.useTranslation(),p=o=>{u(actionCreators.BatchUpdateTrackID({id:e,newID:o.newID,rangeIndex:[o.prevPage-1,o.nextPage-1],imgList:reducer.composeResultByToolInstance({toolInstance:i,imgList:r,imgIndex:c,stepList:t})})),n(!1)},d=()=>n(!1),f=()=>s.submit(),l=[{required:!0,message:a("PositiveIntegerCheck")}];return React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement("a",{style:{color:"#666FFF"},onClick:()=>n(!0)},a("BatchUpdateText")),React__default.default.createElement(antd.Modal,{title:a("BatchUpdateTrackID"),visible:m,onCancel:d,onOk:f,wrapClassName:"labelbee-custom-modal"},React__default.default.createElement(antd.Form,__spreadProps(__spreadValues({},layout),{form:s,onFinish:p}),React__default.default.createElement(antd.Form.Item,{name:"id",label:a("CurrentBoxTrackIDs")},e),React__default.default.createElement(antd.Form.Item,{name:"newID",label:a("TrackIDUnifyAs"),rules:l},React__default.default.createElement(antd.InputNumber,{precision:0,min:1,style:inputStyle})),React__default.default.createElement(antd.Form.Item,{label:a("UnifyTrackIDRange"),required:!0},React__default.default.createElement(antd.Form.Item,{style:{display:"inline-block"},rules:l,name:"prevPage",noStyle:!0},React__default.default.createElement(antd.InputNumber,{precision:0,min:1,style:inputStyle})),React__default.default.createElement("span",{style:{display:"inline-block",width:"24px",textAlign:"center"}},"-"),React__default.default.createElement(antd.Form.Item,{style:{display:"inline-block"},rules:l,name:"nextPage",noStyle:!0},React__default.default.createElement(antd.InputNumber,{precision:0,min:1,style:inputStyle})),React__default.default.createElement("span",{style:{display:"inline-block",width:"40x",marginLeft:"10px",textAlign:"center"}},a("Page"))))))},mapStateToProps=e=>({toolInstance:e.annotation.toolInstance,imgList:e.annotation.imgList,imgIndex:e.annotation.imgIndex,stepList:e.annotation.stepList});var BatchUpdateModal$1=reactRedux.connect(mapStateToProps,null,null,{context:ctx.LabelBeeContext})(BatchUpdateModal);module.exports=BatchUpdateModal$1;
1
+ "use strict";var actionCreators=require("../../../../../../store/annotation/actionCreators.js"),reducer=require("../../../../../../store/annotation/reducer.js"),ctx=require("../../../../../../store/ctx.js"),antd=require("antd"),React=require("react"),reactI18next=require("react-i18next"),reactRedux=require("react-redux"),lbUtils=require("@labelbee/lb-utils");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React),__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,r)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,__spreadValues=(e,t)=>{for(var r in t||(t={}))__hasOwnProp.call(t,r)&&__defNormalProp(e,r,t[r]);if(__getOwnPropSymbols)for(var r of __getOwnPropSymbols(t))__propIsEnum.call(t,r)&&__defNormalProp(e,r,t[r]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t));const layout={labelCol:{span:8},wrapperCol:{span:16}},inputStyle={width:"80px"},BatchUpdateModal=({id:e,stepList:t,imgList:r,imgIndex:c,toolInstance:u,updateCurrentPolygonList:m})=>{const p=ctx.useDispatch(),[d,l]=React.useState(!1),[s]=antd.Form.useForm(),{t:a}=reactI18next.useTranslation(),f=n=>{const i=reducer.composeResultByToolInstance({toolInstance:u,imgList:r,imgIndex:c,stepList:t});if(i.some(g=>{const x=parseInt(n.newID,10);return lbUtils.PointCloudUtils.batchUpdateTrackIDCheck({newID:x,result:g.result})})){antd.message.error(a("DuplicateTrackIDsExist"));return}p(actionCreators.BatchUpdateTrackID({id:e,newID:n.newID,rangeIndex:[n.prevPage-1,n.nextPage-1],imgList:i}));const y=parseInt(n.newID,10);l(!1),m(y)},I=()=>l(!1),b=()=>s.submit(),o=[{required:!0,message:a("PositiveIntegerCheck")}];return React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement("a",{style:{color:"#666FFF"},onClick:()=>l(!0)},a("BatchUpdateText")),React__default.default.createElement(antd.Modal,{title:a("BatchUpdateTrackID"),visible:d,onCancel:I,onOk:b,wrapClassName:"labelbee-custom-modal"},React__default.default.createElement(antd.Form,__spreadProps(__spreadValues({},layout),{form:s,onFinish:f}),React__default.default.createElement(antd.Form.Item,{name:"id",label:a("CurrentBoxTrackIDs")},e),React__default.default.createElement(antd.Form.Item,{name:"newID",label:a("TrackIDUnifyAs"),rules:o},React__default.default.createElement(antd.InputNumber,{precision:0,min:1,style:inputStyle})),React__default.default.createElement(antd.Form.Item,{label:a("UnifyTrackIDRange"),required:!0},React__default.default.createElement(antd.Form.Item,{style:{display:"inline-block"},rules:o,name:"prevPage",noStyle:!0},React__default.default.createElement(antd.InputNumber,{precision:0,min:1,style:inputStyle})),React__default.default.createElement("span",{style:{display:"inline-block",width:"24px",textAlign:"center"}},"-"),React__default.default.createElement(antd.Form.Item,{style:{display:"inline-block"},rules:o,name:"nextPage",noStyle:!0},React__default.default.createElement(antd.InputNumber,{precision:0,min:1,style:inputStyle})),React__default.default.createElement("span",{style:{display:"inline-block",width:"40x",marginLeft:"10px",textAlign:"center"}},a("Page"))))))},mapStateToProps=e=>({toolInstance:e.annotation.toolInstance,imgList:e.annotation.imgList,imgIndex:e.annotation.imgIndex,stepList:e.annotation.stepList});var BatchUpdateModal$1=reactRedux.connect(mapStateToProps,null,null,{context:ctx.LabelBeeContext})(BatchUpdateModal);module.exports=BatchUpdateModal$1;
@@ -1 +1 @@
1
- "use strict";var React=require("react"),icons=require("@ant-design/icons"),ToolIcons=require("../ToolIcons.js"),lbAnnotation=require("@labelbee/lb-annotation"),PointCloudContext=require("../../../../components/pointCloudView/PointCloudContext.js"),antd=require("antd"),StepUtils=require("../../../../utils/StepUtils.js"),reactRedux=require("react-redux"),index=require("../../../../utils/index.js"),useStatus=require("../../../../components/pointCloudView/hooks/useStatus.js"),useSingleBox=require("../../../../components/pointCloudView/hooks/useSingleBox.js"),reactI18next=require("react-i18next"),ctx=require("../../../../store/ctx.js"),index$1=require("./components/batchUpdateModal/index.js"),lbUtils=require("@labelbee/lb-utils"),index$2=require("../../../../components/attributeList/index.js"),useAttribute=require("../../../../components/pointCloudView/hooks/useAttribute.js"),actionCreators=require("../../../../store/annotation/actionCreators.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React),__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 AnnotatedBox=({imgList:e,imgIndex:t})=>{const n=React.useContext(PointCloudContext.PointCloudContext),[d,i]=React.useState([]),{t:v}=reactI18next.useTranslation();React.useEffect(()=>{const u=e;let r=new Map;i(lbUtils.PointCloudUtils.getAllPointCloudResult({imgList:u,extraBoxList:p,ignoreIndexList:[t]}).filter(l=>!l.trackID||r.get(l.trackID)?!1:(r.set(l.trackID,!0),!0)).sort((l,a)=>{var m,c;const g=(m=l==null?void 0:l.trackID)!=null?m:0,f=(c=a==null?void 0:a.trackID)!=null?c:0;return g-f}).map(l=>{var a;return(a=l==null?void 0:l.trackID)!=null?a:0}))},[n.pointCloudBoxList,e]);const{pointCloudBoxList:p}=n;return React__default.default.createElement("div",{style:{padding:24,borderBottom:"1px solid #eee"}},React__default.default.createElement("div",{style:{marginBottom:16}},v("AllTrackIDs")),React__default.default.createElement("div",null,d.map(u=>React__default.default.createElement(antd.Tag,{color:"#F3F4FF",key:u,style:{color:"#666",marginBottom:8}},u))))},BoxTrackIDInput=()=>{const[e,t]=React.useState(!1),n=React.useContext(PointCloudContext.PointCloudContext),{pointCloudBoxList:d}=n,{selectedBox:i,updateSelectedBox:v}=useSingleBox.useSingleBox(),[p,u]=React.useState(""),{t:r}=reactI18next.useTranslation(),l=i==null?void 0:i.info.trackID,a=c=>!!d.find(f=>f.trackID===c&&f.id!==(i==null?void 0:i.info.id)),m=(c=!1)=>{var g;const f=parseInt(p,10);if(c&&t(!1),isNaN(f)){antd.message.error(r("PositiveIntegerCheck"));return}if(p.indexOf(".")>-1){antd.message.error(r("NotAllowDecimalPointsInTrackID"));return}if(a(f)){antd.message.error(r("DuplicateTrackIDsExist"));return}if(!(f>0)){antd.message.error(r("PositiveIntegerCheck"));return}const E=v({trackID:f});(g=n==null?void 0:n.topViewInstance)==null||g.updatePolygonList(E!=null?E:[])};return React.useEffect(()=>{t(!1)},[l]),React__default.default.createElement("div",{style:{padding:24}},React__default.default.createElement("div",{style:{marginBottom:16,display:"flex",justifyContent:"space-between",alignItems:"center"}},React__default.default.createElement("span",null,r("CurrentBoxTrackIDs")),l&&React__default.default.createElement(index$1,{id:l})),React__default.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"}},e&&l?React__default.default.createElement(antd.Input,{defaultValue:l,onChange:c=>{u(c.target.value)},disabled:!l,size:"small",onBlur:()=>{m()},onPressEnter:()=>{m(!0)}}):React__default.default.createElement("span",null,l),React__default.default.createElement(icons.EditFilled,{style:{color:"#999",marginLeft:16,cursor:typeof l!="undefined"?"pointer":"not-allowed"},onClick:()=>{l&&t(!e)}})))},AttributeUpdater=({attributeList:e,subAttributeList:t,toolInstance:n,config:d,stepList:i,stepInfo:v,enableColorPicker:p})=>{const{selectedBox:u}=useSingleBox.useSingleBox(),r=React.useContext(PointCloudContext.PointCloudContext),{t:l}=reactI18next.useTranslation(),{defaultAttribute:a}=useAttribute.useAttribute(),m=ctx.useDispatch(),c={fontWeight:500,fontSize:14,margin:"12px 0 8px 20px"},g={margin:"12px 20px 8px",fontSize:14,fontWeight:500,wordWrap:"break-word"},f=(o,C)=>{var b,I,y,_,s;const S=(b=d==null?void 0:d.attributeList)==null?void 0:b.map(x=>x.value===o?__spreadProps(__spreadValues({},x),{color:C}):x),k=__spreadProps(__spreadValues({},d),{attributeList:S}),w=JSON.stringify(k),L=i==null?void 0:i.map(x=>(x==null?void 0:x.step)===(v==null?void 0:v.step)?__spreadProps(__spreadValues({},x),{config:w}):x);(I=r==null?void 0:r.topViewInstance)==null||I.updateAttributeList(S),(y=r==null?void 0:r.sideViewInstance)==null||y.updateAttributeList(S),(_=r==null?void 0:r.backViewInstance)==null||_.updateAttributeList(S),(s=r==null?void 0:r.mainViewInstance)==null||s.setConfig(k),m(actionCreators.SetTaskStepList({stepList:L}))},E=o=>{n.setDefaultAttribute(o)},P=(o,C)=>{n.setSubAttribute(o,C)},D=e.map(o=>({label:o.key,value:o.value,color:o==null?void 0:o.color}));return React__default.default.createElement("div",null,React__default.default.createElement("div",{style:c},l("Attribute")),React__default.default.createElement(index$2.default,{list:D,forbidDefault:!0,selectedAttribute:a!=null?a:"",attributeChanged:o=>E(o),updateColorConfig:f,enableColorPicker:p}),React__default.default.createElement(antd.Divider,{style:{margin:0}}),u&&React__default.default.createElement(React__default.default.Fragment,null,t.map(o=>{var C,b,I,y,_;return(o==null?void 0:o.subSelected)&&React__default.default.createElement("div",{style:{marginTop:12},key:o.value},React__default.default.createElement("div",{style:g},l("SubAttribute"),"-",o.key),((C=o.subSelected)==null?void 0:C.length)<5?React__default.default.createElement(index$2.default,{list:o.subSelected.map(s=>({label:s.key,value:s.value})),selectedAttribute:(I=(b=r.selectedPointCloudBox)==null?void 0:b.subAttribute)==null?void 0:I[o.value],num:"-",forbidColor:!0,forbidDefault:!0,attributeChanged:s=>P(o.value,s),style:{marginBottom:12}}):React__default.default.createElement(antd.Select,{style:{margin:"0px 21px 17px 16px",width:"87%"},value:(_=(y=r.selectedPointCloudBox)==null?void 0:y.subAttribute)==null?void 0:_[o.value],placeholder:l("PleaseSelect"),onChange:s=>P(o.value,s),allowClear:!0},o.subSelected.map(s=>React__default.default.createElement(antd.Select.Option,{key:s.value,value:s.value},s.key))),React__default.default.createElement(antd.Divider,{style:{margin:0}}))})))},PointCloudToolSidebar=({stepInfo:e,toolInstance:t,imgList:n,imgIndex:d,stepList:i,enableColorPicker:v})=>{var p,u;const{updatePointCloudPattern:r,pointCloudPattern:l}=useStatus.useStatus(),a=index.jsonParser(e.config),m=(p=a==null?void 0:a.attributeList)!=null?p:[],c=(a==null?void 0:a.secondaryAttributeConfigurable)===!0?(u=a==null?void 0:a.inputList)!=null?u:[]:[];return React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement(ToolIcons.ToolIcons,{toolName:lbAnnotation.cTool.EPointCloudName.PointCloud,selectedToolName:l,onChange:g=>r==null?void 0:r(g)}),React__default.default.createElement(AttributeUpdater,{toolInstance:t,attributeList:m,subAttributeList:c,config:a,stepList:i,stepInfo:e,enableColorPicker:v}),(a==null?void 0:a.trackConfigurable)===!0&&React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement(BoxTrackIDInput,null),React__default.default.createElement(antd.Divider,{style:{margin:0}}),React__default.default.createElement(AnnotatedBox,{imgList:n,imgIndex:d})))},mapStateToProps=e=>{var t,n,d,i;const v=StepUtils.getCurrentStepInfo((t=e.annotation)==null?void 0:t.step,(n=e.annotation)==null?void 0:n.stepList),p=(d=e.annotation)==null?void 0:d.toolInstance,u=(i=e.annotation)==null?void 0:i.stepList;return{stepInfo:v,toolInstance:p,imgList:e.annotation.imgList,imgIndex:e.annotation.imgIndex,stepList:u}};var PointCloudToolSidebar$1=reactRedux.connect(mapStateToProps,null,null,{context:ctx.LabelBeeContext})(PointCloudToolSidebar);module.exports=PointCloudToolSidebar$1;
1
+ "use strict";var React=require("react"),icons=require("@ant-design/icons"),ToolIcons=require("../ToolIcons.js"),lbAnnotation=require("@labelbee/lb-annotation"),PointCloudContext=require("../../../../components/pointCloudView/PointCloudContext.js"),antd=require("antd"),StepUtils=require("../../../../utils/StepUtils.js"),reactRedux=require("react-redux"),index=require("../../../../utils/index.js"),useStatus=require("../../../../components/pointCloudView/hooks/useStatus.js"),useSingleBox=require("../../../../components/pointCloudView/hooks/useSingleBox.js"),reactI18next=require("react-i18next"),ctx=require("../../../../store/ctx.js"),index$1=require("./components/batchUpdateModal/index.js"),lbUtils=require("@labelbee/lb-utils"),index$2=require("../../../../components/attributeList/index.js"),useAttribute=require("../../../../components/pointCloudView/hooks/useAttribute.js"),actionCreators=require("../../../../store/annotation/actionCreators.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React),__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 AnnotatedBox=({imgList:e,imgIndex:t})=>{const n=React.useContext(PointCloudContext.PointCloudContext),[c,u]=React.useState([]),{t:v}=reactI18next.useTranslation();React.useEffect(()=>{const s=e;let r=new Map;u(lbUtils.PointCloudUtils.getAllPointCloudResult({imgList:s,extraBoxList:f,ignoreIndexList:[t]}).filter(l=>!l.trackID||r.get(l.trackID)?!1:(r.set(l.trackID,!0),!0)).sort((l,a)=>{var m,g;const i=(m=l==null?void 0:l.trackID)!=null?m:0,p=(g=a==null?void 0:a.trackID)!=null?g:0;return i-p}).map(l=>{var a;return(a=l==null?void 0:l.trackID)!=null?a:0}))},[n.pointCloudBoxList,e]);const{pointCloudBoxList:f}=n;return React__default.default.createElement("div",{style:{padding:24,borderBottom:"1px solid #eee"}},React__default.default.createElement("div",{style:{marginBottom:16}},v("AllTrackIDs")),React__default.default.createElement("div",null,c.map(s=>React__default.default.createElement(antd.Tag,{color:"#F3F4FF",key:s,style:{color:"#666",marginBottom:8}},s))))},BoxTrackIDInput=()=>{const[e,t]=React.useState(!1),n=React.useContext(PointCloudContext.PointCloudContext),{pointCloudBoxList:c}=n,{selectedBox:u,updateSelectedBox:v}=useSingleBox.useSingleBox(),[f,s]=React.useState(""),{t:r}=reactI18next.useTranslation(),l=u==null?void 0:u.info.trackID,a=i=>!!c.find(C=>C.trackID===i&&C.id!==(u==null?void 0:u.info.id)),m=(i=!1)=>{const p=parseInt(f,10);if(i&&t(!1),isNaN(p)){antd.message.error(r("PositiveIntegerCheck"));return}if(f.indexOf(".")>-1){antd.message.error(r("NotAllowDecimalPointsInTrackID"));return}if(a(p)){antd.message.error(r("DuplicateTrackIDsExist"));return}if(!(p>0)){antd.message.error(r("PositiveIntegerCheck"));return}g(p)};React.useEffect(()=>{t(!1)},[l]);const g=i=>{var p;const C=v({trackID:i});(p=n==null?void 0:n.topViewInstance)==null||p.updatePolygonList(C!=null?C:[])};return React__default.default.createElement("div",{style:{padding:24}},React__default.default.createElement("div",{style:{marginBottom:16,display:"flex",justifyContent:"space-between",alignItems:"center"}},React__default.default.createElement("span",null,r("CurrentBoxTrackIDs")),l&&React__default.default.createElement(index$1,{id:l,updateCurrentPolygonList:i=>g(i)})),React__default.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"}},e&&l?React__default.default.createElement(antd.Input,{defaultValue:l,onChange:i=>{s(i.target.value)},disabled:!l,size:"small",onBlur:()=>{m()},onPressEnter:()=>{m(!0)}}):React__default.default.createElement("span",null,l),React__default.default.createElement(icons.EditFilled,{style:{color:"#999",marginLeft:16,cursor:typeof l!="undefined"?"pointer":"not-allowed"},onClick:()=>{l&&t(!e)}})))},AttributeUpdater=({attributeList:e,subAttributeList:t,toolInstance:n,config:c,stepList:u,stepInfo:v,enableColorPicker:f})=>{const{selectedBox:s}=useSingleBox.useSingleBox(),r=React.useContext(PointCloudContext.PointCloudContext),{t:l}=reactI18next.useTranslation(),{defaultAttribute:a}=useAttribute.useAttribute(),m=ctx.useDispatch(),g={fontWeight:500,fontSize:14,margin:"12px 0 8px 20px"},i={margin:"12px 20px 8px",fontSize:14,fontWeight:500,wordWrap:"break-word"},p=(o,b)=>{var I,y,_,E,d;const P=(I=c==null?void 0:c.attributeList)==null?void 0:I.map(x=>x.value===o?__spreadProps(__spreadValues({},x),{color:b}):x),k=__spreadProps(__spreadValues({},c),{attributeList:P}),L=JSON.stringify(k),w=u==null?void 0:u.map(x=>(x==null?void 0:x.step)===(v==null?void 0:v.step)?__spreadProps(__spreadValues({},x),{config:L}):x);(y=r==null?void 0:r.topViewInstance)==null||y.updateAttributeList(P),(_=r==null?void 0:r.sideViewInstance)==null||_.updateAttributeList(P),(E=r==null?void 0:r.backViewInstance)==null||E.updateAttributeList(P),(d=r==null?void 0:r.mainViewInstance)==null||d.setConfig(k),m(actionCreators.SetTaskStepList({stepList:w}))},C=o=>{n.setDefaultAttribute(o)},S=(o,b)=>{n.setSubAttribute(o,b)},D=e.map(o=>({label:o.key,value:o.value,color:o==null?void 0:o.color}));return React__default.default.createElement("div",null,React__default.default.createElement("div",{style:g},l("Attribute")),React__default.default.createElement(index$2.default,{list:D,forbidDefault:!0,selectedAttribute:a!=null?a:"",attributeChanged:o=>C(o),updateColorConfig:p,enableColorPicker:f}),React__default.default.createElement(antd.Divider,{style:{margin:0}}),s&&React__default.default.createElement(React__default.default.Fragment,null,t.map(o=>{var b,I,y,_,E;return(o==null?void 0:o.subSelected)&&React__default.default.createElement("div",{style:{marginTop:12},key:o.value},React__default.default.createElement("div",{style:i},l("SubAttribute"),"-",o.key),((b=o.subSelected)==null?void 0:b.length)<5?React__default.default.createElement(index$2.default,{list:o.subSelected.map(d=>({label:d.key,value:d.value})),selectedAttribute:(y=(I=r.selectedPointCloudBox)==null?void 0:I.subAttribute)==null?void 0:y[o.value],num:"-",forbidColor:!0,forbidDefault:!0,attributeChanged:d=>S(o.value,d),style:{marginBottom:12}}):React__default.default.createElement(antd.Select,{style:{margin:"0px 21px 17px 16px",width:"87%"},value:(E=(_=r.selectedPointCloudBox)==null?void 0:_.subAttribute)==null?void 0:E[o.value],placeholder:l("PleaseSelect"),onChange:d=>S(o.value,d),allowClear:!0},o.subSelected.map(d=>React__default.default.createElement(antd.Select.Option,{key:d.value,value:d.value},d.key))),React__default.default.createElement(antd.Divider,{style:{margin:0}}))})))},PointCloudToolSidebar=({stepInfo:e,toolInstance:t,imgList:n,imgIndex:c,stepList:u,enableColorPicker:v})=>{var f,s;const{updatePointCloudPattern:r,pointCloudPattern:l}=useStatus.useStatus(),a=index.jsonParser(e.config),m=(f=a==null?void 0:a.attributeList)!=null?f:[],g=(a==null?void 0:a.secondaryAttributeConfigurable)===!0?(s=a==null?void 0:a.inputList)!=null?s:[]:[];return React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement(ToolIcons.ToolIcons,{toolName:lbAnnotation.cTool.EPointCloudName.PointCloud,selectedToolName:l,onChange:i=>r==null?void 0:r(i)}),React__default.default.createElement(AttributeUpdater,{toolInstance:t,attributeList:m,subAttributeList:g,config:a,stepList:u,stepInfo:e,enableColorPicker:v}),(a==null?void 0:a.trackConfigurable)===!0&&React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement(BoxTrackIDInput,null),React__default.default.createElement(antd.Divider,{style:{margin:0}}),React__default.default.createElement(AnnotatedBox,{imgList:n,imgIndex:c})))},mapStateToProps=e=>{var t,n,c,u;const v=StepUtils.getCurrentStepInfo((t=e.annotation)==null?void 0:t.step,(n=e.annotation)==null?void 0:n.stepList),f=(c=e.annotation)==null?void 0:c.toolInstance,s=(u=e.annotation)==null?void 0:u.stepList;return{stepInfo:v,toolInstance:f,imgList:e.annotation.imgList,imgIndex:e.annotation.imgIndex,stepList:s}};var PointCloudToolSidebar$1=reactRedux.connect(mapStateToProps,null,null,{context:ctx.LabelBeeContext})(PointCloudToolSidebar);module.exports=PointCloudToolSidebar$1;
@@ -1 +1 @@
1
- import g,{useState as A,useRef as y,useImperativeHandle as V,useEffect as u}from"react";import{ViewOperation as j,ImgUtils as Z}from"@labelbee/lb-annotation";import{Spin as k}from"antd/es";import D from"../../hooks/useRefCache.js";var U=Object.defineProperty,I=Object.getOwnPropertySymbols,x=Object.prototype.hasOwnProperty,F=Object.prototype.propertyIsEnumerable,O=(t,e,o)=>e in t?U(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o,m=(t,e)=>{for(var o in e||(e={}))x.call(e,o)&&O(t,o,e[o]);if(I)for(var o of I(e))F.call(e,o)&&O(t,o,e[o]);return t};const _={width:500,height:100},H=t=>{if(!t)return _;if(t.width&&t.height)return t;const e=m({},t);return e.width||(e.width=_.width),e.height||(e.height=_.height),e},N=(t,e)=>{var o,p;const{src:w,annotations:s=[],style:z={stroke:"blue",thickness:3},zoomChange:c,backgroundStyle:P={},onChange:d,showLoading:S=!1,globalStyle:C,afterImgOnLoad:L}=t,f=H(t.size),[R,h]=A(!1),v=y(null),r=y(),b=D(L);V(e,()=>{const n=r.current;return n?{zoomIn:()=>n.zoomChanged(!0),zoomOut:()=>n.zoomChanged(!1),initImgPos:()=>n.initImgPos(),toolInstance:n}:{}},[r.current]),u(()=>(v.current&&(r.current=new j({container:v.current,size:f,style:z,annotations:s,config:"{}"}),r.current.init()),()=>{var n;(n=r.current)==null||n.destroy()}),[]),u(()=>{var n;r.current&&(h(!0),(n=r.current)==null||n.setLoading(!0),Z.load(w).then(a=>{var i,l;(i=r.current)==null||i.setLoading(!1),h(!1),(l=r.current)==null||l.setImgNode(a),b.current&&b.current(a)}).catch(()=>{var a;(a=r.current)==null||a.setLoading(!1),h(!1)}))},[w]),u(()=>{r.current&&r.current.updateData(s)},[s]),u(()=>{const n=r.current;(n==null?void 0:n.setSize)&&(n.setSize(f),n.initPosition())},[(o=t.size)==null?void 0:o.width,(p=t.size)==null?void 0:p.height]),u(()=>{var n,a;return r.current&&((n=r.current)==null||n.on("onChange",(...i)=>{d==null||d.apply(null,i)}),(a=r.current)==null||a.on("renderZoom",i=>{c&&c(i)})),()=>{var i,l;(i=r.current)==null||i.unbindAll("onChange"),(l=r.current)==null||l.unbindAll("renderZoom")}},[c,d]);const E=g.createElement("div",{ref:v,style:m(m({position:"relative"},f),P)});return g.createElement(k,{spinning:S||R,delay:300,style:C},E)};var T=g.forwardRef(N);export{T as default};
1
+ import v,{useState as A,useRef as b,useImperativeHandle as V,useEffect as u}from"react";import{ViewOperation as j,ImgUtils as Z}from"@labelbee/lb-annotation";import{Spin as k}from"antd/es";import D from"../../hooks/useRefCache.js";var U=Object.defineProperty,y=Object.getOwnPropertySymbols,x=Object.prototype.hasOwnProperty,F=Object.prototype.propertyIsEnumerable,O=(e,n,o)=>n in e?U(e,n,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[n]=o,g=(e,n)=>{for(var o in n||(n={}))x.call(n,o)&&O(e,o,n[o]);if(y)for(var o of y(n))F.call(n,o)&&O(e,o,n[o]);return e};const _={width:500,height:100},H=e=>{if(!e)return _;if(e.width&&e.height)return e;const n=g({},e);return n.width||(n.width=_.width),n.height||(n.height=_.height),n},N=(e,n)=>{var o,p;const{src:w,annotations:s=[],style:z={stroke:"blue",thickness:3},zoomChange:c,backgroundStyle:P={},onChange:d,showLoading:S=!1,globalStyle:C,afterImgOnLoad:L}=e,f=H(e.size),[R,h]=A(!1),m=b(null),r=b(),I=D(L);V(n,()=>{const t=r.current;return t?{zoomIn:()=>t.zoomChanged(!0),zoomOut:()=>t.zoomChanged(!1),initImgPos:()=>t.initImgPos(),toolInstance:t}:{}},[r.current]),u(()=>(m.current&&(r.current=new j({container:m.current,size:f,style:z,annotations:s,config:"{}",zoomInfo:e.zoomInfo}),r.current.init()),()=>{var t;(t=r.current)==null||t.destroy()}),[]),u(()=>{var t;r.current&&(h(!0),(t=r.current)==null||t.setLoading(!0),Z.load(w).then(a=>{var i,l;(i=r.current)==null||i.setLoading(!1),h(!1),(l=r.current)==null||l.setImgNode(a),I.current&&I.current(a)}).catch(()=>{var a;(a=r.current)==null||a.setLoading(!1),h(!1)}))},[w]),u(()=>{r.current&&r.current.updateData(s)},[s]),u(()=>{const t=r.current;(t==null?void 0:t.setSize)&&(t.setSize(f),t.initPosition())},[(o=e.size)==null?void 0:o.width,(p=e.size)==null?void 0:p.height]),u(()=>{var t,a;return r.current&&((t=r.current)==null||t.on("onChange",(...i)=>{d==null||d.apply(null,i)}),(a=r.current)==null||a.on("renderZoom",i=>{c&&c(i)})),()=>{var i,l;(i=r.current)==null||i.unbindAll("onChange"),(l=r.current)==null||l.unbindAll("renderZoom")}},[c,d]);const E=v.createElement("div",{ref:m,style:g(g({position:"relative"},f),P)});return v.createElement(k,{spinning:S||R,delay:300,style:C},E)};var T=v.forwardRef(N);export{T as default};
@@ -1 +1 @@
1
- import{getClassName as I}from"../../utils/dom.js";import l,{useState as O,useContext as T,useRef as j,useEffect as P,useCallback as M}from"react";import{PointCloudContainer as F}from"./PointCloudLayout.js";import $ from"../AnnotationView/index.js";import{PointCloudContext as q}from"./PointCloudContext.js";import{connect as G}from"react-redux";import{LeftOutlined as H,RightOutlined as J}from"@ant-design/icons";import K from"../../hooks/useSize.js";import{useSingleBox as Q}from"./hooks/useSingleBox.js";import{pointCloudLidar2image as U}from"@labelbee/lb-annotation";import{useTranslation as W}from"react-i18next";import{LabelBeeContext as X}from"../../store/ctx.js";import{a2MapStateToProps as Y}from"../../store/annotation/map.js";import{toolStyleConverter as Z}from"@labelbee/lb-utils";var D=Object.defineProperty,tt=Object.defineProperties,et=Object.getOwnPropertyDescriptors,h=Object.getOwnPropertySymbols,ot=Object.prototype.hasOwnProperty,nt=Object.prototype.propertyIsEnumerable,E=(t,e,o)=>e in t?D(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o,S=(t,e)=>{for(var o in e||(e={}))ot.call(e,o)&&E(t,o,e[o]);if(h)for(var o of h(e))nt.call(e,o)&&E(t,o,e[o]);return t},V=(t,e)=>tt(t,et(e));const it=({onNext:t,onPrev:e,imgLength:o,imgIndex:p})=>l.createElement("div",null,l.createElement(H,{onClick:e}),l.createElement("span",null," ",p+1," / ",o," "),l.createElement(J,{onClick:t})),lt=({currentData:t,config:e})=>{var o,p,b,C,L;const[u,k]=O([]),{topViewInstance:N,displayPointCloudList:y}=T(q),[s,c]=O(0),w=j(null),f=j(),{selectedBox:g}=Q(),A=K(w),{t:R}=W(),a=(o=t==null?void 0:t.mappingImgList)==null?void 0:o[s];P(()=>{c(0)},[t]),P(()=>{if(N&&a){const n={fill:"transparent",color:"green"},r=y.reduce((m,i)=>{var d;const z=U(i,a.calib),B=(d=Z.getColorFromConfig({attribute:i.attribute},V(S({},e),{attributeConfigurable:!0}),{}))==null?void 0:d.stroke;return[...m,...z.map(x=>({type:x.type,annotation:V(S({id:i.id,pointList:x.pointList},n),{stroke:B})}))]},[]);k(r)}},[y,a]);const v=!t||!(t==null?void 0:t.mappingImgList)||!(((p=t==null?void 0:t.mappingImgList)==null?void 0:p.length)>0),_=M(()=>{var n,r;const m=(n=f.current)==null?void 0:n.toolInstance;if(!g||!m)return;const i=u.find(d=>d.annotation.id===g.info.id);((r=i==null?void 0:i.annotation.pointList)==null?void 0:r.length)>0&&m.focusPositionByPointList(i==null?void 0:i.annotation.pointList)},[g,f.current,u,s]);return P(()=>{_()},[_]),l.createElement(F,{className:I("point-cloud-2d-container"),title:R("2DView"),toolbar:v?void 0:l.createElement(it,{imgIndex:s,imgLength:(C=(b=t.mappingImgList)==null?void 0:b.length)!=null?C:0,onNext:()=>{var n;!t||!(t==null?void 0:t.mappingImgList)||s>=((n=t==null?void 0:t.mappingImgList)==null?void 0:n.length)-1||c(r=>r+1)},onPrev:()=>{s<=0||c(n=>n-1)}}),style:{display:v?"none":"flex"}},l.createElement("div",{className:I("point-cloud-2d-image"),ref:w},l.createElement($,{src:(L=a==null?void 0:a.url)!=null?L:"",annotations:u,size:A,ref:f,globalStyle:{display:v?"none":"block"},afterImgOnLoad:_})))};var rt=G(Y,null,null,{context:X})(lt);export{rt as default};
1
+ import{getClassName as A}from"../../utils/dom.js";import l,{useState as y,useContext as $,useRef as N,useEffect as L,useCallback as q}from"react";import{PointCloudContainer as G}from"./PointCloudLayout.js";import J from"../AnnotationView/index.js";import{PointCloudContext as K}from"./PointCloudContext.js";import{connect as Q}from"react-redux";import{LeftOutlined as U,RightOutlined as W}from"@ant-design/icons";import X from"../../hooks/useSize.js";import{useSingleBox as Y}from"./hooks/useSingleBox.js";import{pointCloudLidar2image as Z}from"@labelbee/lb-annotation";import{useTranslation as D}from"react-i18next";import{LabelBeeContext as tt}from"../../store/ctx.js";import{a2MapStateToProps as et}from"../../store/annotation/map.js";import{toolStyleConverter as ot}from"@labelbee/lb-utils";var nt=Object.defineProperty,it=Object.defineProperties,lt=Object.getOwnPropertyDescriptors,R=Object.getOwnPropertySymbols,rt=Object.prototype.hasOwnProperty,st=Object.prototype.propertyIsEnumerable,z=(t,e,o)=>e in t?nt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o,w=(t,e)=>{for(var o in e||(e={}))rt.call(e,o)&&z(t,o,e[o]);if(R)for(var o of R(e))st.call(e,o)&&z(t,o,e[o]);return t},C=(t,e)=>it(t,lt(e));const at=({onNext:t,onPrev:e,imgLength:o,imgIndex:m})=>l.createElement("div",null,l.createElement(U,{onClick:e}),l.createElement("span",null," ",m+1," / ",o," "),l.createElement(W,{onClick:t})),pt=({currentData:t,config:e})=>{var o,m,I,x,O;const[u,T]=y([]),{topViewInstance:B,displayPointCloudList:h}=$(K),[f,j]=y(""),[s,g]=y(0),S=N(null),v=N(),{selectedBox:d}=Y(),H=X(S),{t:M}=D(),a=(o=t==null?void 0:t.mappingImgList)==null?void 0:o[s];L(()=>{g(0)},[t]),L(()=>{if(B&&a){const n={fill:"transparent",color:"green"},r=h.reduce((c,i)=>{var p;const{transferViewData:b,viewRangePointList:F}=Z(i,a.calib),E=(p=ot.getColorFromConfig({attribute:i.attribute},C(w({},e),{attributeConfigurable:!0}),{}))==null?void 0:p.stroke,V=[...c,...b.map(k=>({type:k.type,annotation:C(w({id:i.id,pointList:k.pointList},n),{stroke:E})}))];return i.id===f&&V.push({type:"polygon",annotation:C(w({id:f,pointList:F},n),{stroke:E,fill:"rgba(255, 255, 255, 0.6)"})}),V},[]);T(r)}},[h,a,f]);const _=!t||!(t==null?void 0:t.mappingImgList)||!(((m=t==null?void 0:t.mappingImgList)==null?void 0:m.length)>0),P=q(()=>{var n,r;const c=(n=v.current)==null?void 0:n.toolInstance;if(j(""),!d||!c)return;const i=u.find(b=>b.annotation.id===d.info.id);let p="";((r=i==null?void 0:i.annotation.pointList)==null?void 0:r.length)>0&&(c.focusPositionByPointList(i==null?void 0:i.annotation.pointList),p=d.info.id,j(p))},[d,v.current,u,s]);return L(()=>{P()},[P]),l.createElement(G,{className:A("point-cloud-2d-container"),title:M("2DView"),toolbar:_?void 0:l.createElement(at,{imgIndex:s,imgLength:(x=(I=t.mappingImgList)==null?void 0:I.length)!=null?x:0,onNext:()=>{var n;!t||!(t==null?void 0:t.mappingImgList)||s>=((n=t==null?void 0:t.mappingImgList)==null?void 0:n.length)-1||g(r=>r+1)},onPrev:()=>{s<=0||g(n=>n-1)}}),style:_?{display:"none"}:{display:"flex",minHeight:200,maxHeight:500}},l.createElement("div",{className:A("point-cloud-2d-image"),ref:S},l.createElement(J,{src:(O=a==null?void 0:a.url)!=null?O:"",annotations:u,size:H,ref:v,globalStyle:{display:_?"none":"block"},afterImgOnLoad:P,zoomInfo:{min:.01,max:1e3,ratio:.4}})))};var mt=Q(et,null,null,{context:tt})(pt);export{mt as default};
@@ -1 +1 @@
1
- import{getClassName as u}from"../../utils/dom.js";import{PointCloud as L}from"@labelbee/lb-annotation";import{PointCloudUtils as N,toolStyleConverter as D,EPerspectiveView as f}from"@labelbee/lb-utils";import k from"classnames";import o,{useContext as _,useState as R,useRef as F,useEffect as v,useMemo as A}from"react";import{PointCloudContainer as M}from"./PointCloudLayout.js";import{PointCloudContext as U}from"./PointCloudContext.js";import{a2MapStateToProps as Z}from"../../store/annotation/map.js";import{connect as q}from"react-redux";import{jsonParser as G}from"../../utils/index.js";import{useSingleBox as H}from"./hooks/useSingleBox.js";import{useSphere as J}from"./hooks/useSphere.js";import{Switch as K,Tooltip as Q}from"antd";import W from"../../hooks/useSize.js";import{usePointCloudViews as X}from"./hooks/usePointCloudViews.js";import{useTranslation as x}from"react-i18next";import{LabelBeeContext as Y}from"../../store/ctx.js";import $ from"./components/PointCloudSizeSlider/index.js";var ee=Object.defineProperty,te=Object.defineProperties,oe=Object.getOwnPropertyDescriptors,b=Object.getOwnPropertySymbols,ne=Object.prototype.hasOwnProperty,ie=Object.prototype.propertyIsEnumerable,S=(t,r,a)=>r in t?ee(t,r,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[r]=a,T=(t,r)=>{for(var a in r||(r={}))ne.call(r,a)&&S(t,a,r[a]);if(b)for(var a of b(r))ie.call(r,a)&&S(t,a,r[a]);return t},re=(t,r)=>te(t,oe(r));const ae="LABELBEE-POINTCLOUD",g=o.createContext({isActive:!1,setTarget3DView:()=>{},reset3DView:()=>{},followTopView:()=>{}}),p=({perspectiveView:t})=>{const{isActive:r,setTarget3DView:a}=_(g),n=V=>k({[u("point-cloud-3d-view",V)]:!0,active:r});return o.createElement("span",{onClick:()=>{a(f[t])},className:n(t.toLocaleLowerCase())})},le=()=>{const{reset3DView:t,followTopView:r}=_(g),{t:a}=x();return o.createElement("div",{className:u("point-cloud-3d-sidebar")},o.createElement(p,{perspectiveView:"Top"}),o.createElement(p,{perspectiveView:"Front"}),o.createElement(p,{perspectiveView:"Left"}),o.createElement(p,{perspectiveView:"Back"}),o.createElement(p,{perspectiveView:"Right"}),o.createElement(p,{perspectiveView:"LFT"}),o.createElement(p,{perspectiveView:"RBT"}),o.createElement(Q,{title:a("CameraFollowTopView")},o.createElement("span",{onClick:()=>{r()},className:u("point-cloud-3d-view","followTop")})),o.createElement("span",{onClick:()=>{t()},className:u("point-cloud-3d-view","reset")}))},se=({currentData:t,config:r})=>{var a;const n=_(U),[V,j]=R(!0),w=F(null),{initPointCloud3d:E}=X(),m=W(w),{t:I}=x();v(()=>{!n.mainViewInstance||E==null||E(m)},[m]);const{selectedBox:d}=H(),{selectedSphere:C}=J(),P=e=>{var i,l;const s=d==null?void 0:d.info;if(s){const c=T({},s.center);c.x=c.x-.01,c.z=10;const h=e===f.Top;(i=n.mainViewInstance)==null||i.updateCameraByBox(s,e,h?c:void 0)}C&&((l=n.mainViewInstance)==null||l.updateCameraBySphere(C,e))},O=()=>{var e;(e=n.mainViewInstance)==null||e.resetCamera()},y=()=>{var e,i;const l=(e=n.topViewInstance)==null?void 0:e.pointCloudInstance.camera;l&&((i=n.mainViewInstance)==null||i.applyCameraTarget(l))};v(()=>{if(w.current&&(t==null?void 0:t.url)){let e=n.mainViewInstance;if(!e&&m.width){const i={left:-m.width/2,right:m.width/2,top:m.height/2,bottom:-m.height/2,near:100,far:-100};e=new L({container:w.current,isOrthographicCamera:!0,orthographicParams:i,config:r}),n.setMainViewInstance(e)}}},[m]),v(()=>{var e;if(w.current&&(t==null?void 0:t.url)&&t.result&&n.mainViewInstance){let i=n.mainViewInstance;const l=N.getBoxParamsFromResultList(t.result);l.forEach(s=>{var c;const h=(c=D.getColorFromConfig({attribute:s.attribute},re(T({},r),{attributeConfigurable:!0}),{}))==null?void 0:c.hex;i==null||i.generateBox(s,h)}),n.setPointCloudResult(l),n.setPointCloudValid((e=G(t.result))==null?void 0:e.valid)}},[t,n.mainViewInstance]),v(()=>{var e,i,l,s;if(d){P(f.Top);const c=(l=(i=(e=n.topViewInstance)==null?void 0:e.pointCloudInstance)==null?void 0:i.camera.zoom)!=null?l:1;(s=n.mainViewInstance)==null||s.updateCameraZoom(c)}},[d]),v(()=>{var e,i,l,s;if(C){P(f.Top);const c=(l=(i=(e=n.topViewInstance)==null?void 0:e.pointCloudInstance)==null?void 0:i.camera.zoom)!=null?l:1;(s=n.mainViewInstance)==null||s.updateCameraZoom(c)}},[C]);const B=A(()=>({reset3DView:O,setTarget3DView:P,isActive:!!d,followTopView:y}),[d,n.mainViewInstance]),z=o.createElement(o.Fragment,null,o.createElement($,{onChange:e=>{var i;(i=n.mainViewInstance)==null||i.updatePointSize({customSize:e})}}),o.createElement("span",{style:{marginRight:8}},I("ShowArrows")),o.createElement(K,{size:"small",checked:V,onChange:e=>{var i;j(e),(i=n.mainViewInstance)==null||i.setShowDirection(e)}}));return o.createElement(M,{className:u("point-cloud-3d-container"),title:I("3DView"),toolbar:z,style:{height:t.mappingImgList&&((a=t.mappingImgList)==null?void 0:a.length)>0?"55%":"100%"}},o.createElement("div",{className:u("point-cloud-3d-content")},o.createElement(g.Provider,{value:B},o.createElement(le,null)),o.createElement("div",{className:u("point-cloud-3d-view"),id:ae,ref:w})))};var ce=q(Z,null,null,{context:Y})(se);export{ce as default};
1
+ import{getClassName as m}from"../../utils/dom.js";import{PointCloud as z}from"@labelbee/lb-annotation";import{PointCloudUtils as D,toolStyleConverter as N,EPerspectiveView as C}from"@labelbee/lb-utils";import L from"classnames";import n,{useContext as h,useState as k,useRef as R,useEffect as w,useMemo as F}from"react";import{PointCloudContainer as A}from"./PointCloudLayout.js";import{PointCloudContext as M}from"./PointCloudContext.js";import{a2MapStateToProps as U}from"../../store/annotation/map.js";import{connect as Z}from"react-redux";import{jsonParser as q}from"../../utils/index.js";import{useSingleBox as G}from"./hooks/useSingleBox.js";import{useSphere as H}from"./hooks/useSphere.js";import{Switch as J,Tooltip as K}from"antd";import Q from"../../hooks/useSize.js";import{usePointCloudViews as W}from"./hooks/usePointCloudViews.js";import{useTranslation as I}from"react-i18next";import{LabelBeeContext as X}from"../../store/ctx.js";import Y from"./components/PointCloudSizeSlider/index.js";var $=Object.defineProperty,ee=Object.defineProperties,te=Object.getOwnPropertyDescriptors,b=Object.getOwnPropertySymbols,oe=Object.prototype.hasOwnProperty,ne=Object.prototype.propertyIsEnumerable,S=(o,r,e)=>r in o?$(o,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[r]=e,T=(o,r)=>{for(var e in r||(r={}))oe.call(r,e)&&S(o,e,r[e]);if(b)for(var e of b(r))ne.call(r,e)&&S(o,e,r[e]);return o},ie=(o,r)=>ee(o,te(r));const re="LABELBEE-POINTCLOUD",g=n.createContext({isActive:!1,setTarget3DView:()=>{},reset3DView:()=>{},followTopView:()=>{}}),u=({perspectiveView:o})=>{const{isActive:r,setTarget3DView:e}=h(g),f=V=>L({[m("point-cloud-3d-view",V)]:!0,active:r});return n.createElement("span",{onClick:()=>{e(C[o])},className:f(o.toLocaleLowerCase())})},ae=()=>{const{reset3DView:o,followTopView:r}=h(g),{t:e}=I();return n.createElement("div",{className:m("point-cloud-3d-sidebar")},n.createElement(u,{perspectiveView:"Top"}),n.createElement(u,{perspectiveView:"Front"}),n.createElement(u,{perspectiveView:"Left"}),n.createElement(u,{perspectiveView:"Back"}),n.createElement(u,{perspectiveView:"Right"}),n.createElement(u,{perspectiveView:"LFT"}),n.createElement(u,{perspectiveView:"RBT"}),n.createElement(K,{title:e("CameraFollowTopView")},n.createElement("span",{onClick:()=>{r()},className:m("point-cloud-3d-view","followTop")})),n.createElement("span",{onClick:()=>{o()},className:m("point-cloud-3d-view","reset")}))},le=({currentData:o,config:r})=>{const e=h(M),[f,V]=k(!0),d=R(null),{initPointCloud3d:E}=W(),c=Q(d),{t:x}=I();w(()=>{!e.mainViewInstance||E==null||E(c)},[c]);const{selectedBox:p}=G(),{selectedSphere:v}=H(),P=t=>{var i,a;const l=p==null?void 0:p.info;if(l){const s=T({},l.center);s.x=s.x-.01,s.z=10;const _=t===C.Top;(i=e.mainViewInstance)==null||i.updateCameraByBox(l,t,_?s:void 0)}v&&((a=e.mainViewInstance)==null||a.updateCameraBySphere(v,t))},j=()=>{var t;(t=e.mainViewInstance)==null||t.resetCamera()},O=()=>{var t,i;const a=(t=e.topViewInstance)==null?void 0:t.pointCloudInstance.camera;a&&((i=e.mainViewInstance)==null||i.applyCameraTarget(a))};w(()=>{if(d.current&&(o==null?void 0:o.url)){let t=e.mainViewInstance;if(!t&&c.width){const i={left:-c.width/2,right:c.width/2,top:c.height/2,bottom:-c.height/2,near:100,far:-100};t=new z({container:d.current,isOrthographicCamera:!0,orthographicParams:i,config:r}),e.setMainViewInstance(t)}}},[c]),w(()=>{var t;if(d.current&&(o==null?void 0:o.url)&&o.result&&e.mainViewInstance){let i=e.mainViewInstance;const a=D.getBoxParamsFromResultList(o.result);a.forEach(l=>{var s;const _=(s=N.getColorFromConfig({attribute:l.attribute},ie(T({},r),{attributeConfigurable:!0}),{}))==null?void 0:s.hex;i==null||i.generateBox(l,_)}),e.setPointCloudResult(a),e.setPointCloudValid((t=q(o.result))==null?void 0:t.valid)}},[o,e.mainViewInstance]),w(()=>{var t,i,a,l;if(p){P(C.Top);const s=(a=(i=(t=e.topViewInstance)==null?void 0:t.pointCloudInstance)==null?void 0:i.camera.zoom)!=null?a:1;(l=e.mainViewInstance)==null||l.updateCameraZoom(s)}},[p]),w(()=>{var t,i,a,l;if(v){P(C.Top);const s=(a=(i=(t=e.topViewInstance)==null?void 0:t.pointCloudInstance)==null?void 0:i.camera.zoom)!=null?a:1;(l=e.mainViewInstance)==null||l.updateCameraZoom(s)}},[v]);const B=F(()=>({reset3DView:j,setTarget3DView:P,isActive:!!p,followTopView:O}),[p,e.mainViewInstance]),y=n.createElement(n.Fragment,null,n.createElement(Y,{onChange:t=>{var i;(i=e.mainViewInstance)==null||i.updatePointSize({customSize:t})}}),n.createElement("span",{style:{marginRight:8}},x("ShowArrows")),n.createElement(J,{size:"small",checked:f,onChange:t=>{var i;V(t),(i=e.mainViewInstance)==null||i.setShowDirection(t)}}));return n.createElement(A,{className:m("point-cloud-3d-container"),title:x("3DView"),toolbar:y},n.createElement("div",{className:m("point-cloud-3d-content")},n.createElement(g.Provider,{value:B},n.createElement(ae,null)),n.createElement("div",{className:m("point-cloud-3d-view"),id:re,ref:d})))};var se=Z(U,null,null,{context:X})(le);export{se as default};
package/es/index.css CHANGED
@@ -1276,6 +1276,7 @@
1276
1276
  width: 24px;
1277
1277
  background-repeat: no-repeat;
1278
1278
  cursor: pointer;
1279
+ flex: none;
1279
1280
  margin-right: 16px;
1280
1281
  background-image: url("../dist/assets/icons/7eadb9c4.svg");
1281
1282
  transform: rotateY(180deg);
@@ -1286,6 +1287,7 @@
1286
1287
  width: 24px;
1287
1288
  background-repeat: no-repeat;
1288
1289
  cursor: pointer;
1290
+ flex: none;
1289
1291
  margin-right: 16px;
1290
1292
  background-image: url("../dist/assets/icons/7eadb9c4.svg");
1291
1293
  }
@@ -1295,6 +1297,7 @@
1295
1297
  width: 24px;
1296
1298
  background-repeat: no-repeat;
1297
1299
  cursor: pointer;
1300
+ flex: none;
1298
1301
  background-image: url("../dist/assets/icons/9d70807.svg");
1299
1302
  }
1300
1303
  .bee-point-cloud-wrapper .bee-point-cloud-container__header-toolbar .bee-point-cloud__next {
@@ -1345,7 +1348,7 @@
1345
1348
  display: flex;
1346
1349
  flex-direction: column;
1347
1350
  overflow: hidden;
1348
- min-height: 400px;
1351
+ flex: 1;
1349
1352
  }
1350
1353
  .bee-point-cloud-wrapper .bee-point-cloud-container__left .bee-point-cloud-3d-container .bee-point-cloud-3d-content {
1351
1354
  display: flex;
@@ -1360,7 +1363,11 @@
1360
1363
  box-sizing: content-box;
1361
1364
  display: flex;
1362
1365
  flex-direction: column;
1363
- justify-content: flex-end;
1366
+ justify-content: flex-start;
1367
+ overflow-y: scroll;
1368
+ }
1369
+ .bee-point-cloud-wrapper .bee-point-cloud-container__left .bee-point-cloud-3d-container .bee-point-cloud-3d-content .bee-point-cloud-3d-sidebar::-webkit-scrollbar {
1370
+ display: none;
1364
1371
  }
1365
1372
  .bee-point-cloud-wrapper .bee-point-cloud-container__left .bee-point-cloud-3d-container .bee-point-cloud-3d-content .bee-point-cloud-3d-sidebar .bee-point-cloud-3d-view__reset, .bee-point-cloud-wrapper .bee-point-cloud-container__left .bee-point-cloud-3d-container .bee-point-cloud-3d-content .bee-point-cloud-3d-sidebar .bee-point-cloud-3d-view__followTop {
1366
1373
  display: inline-block;
@@ -1368,6 +1375,7 @@
1368
1375
  width: 36px;
1369
1376
  background-repeat: no-repeat;
1370
1377
  cursor: pointer;
1378
+ flex: none;
1371
1379
  font-size: 36px;
1372
1380
  background-position: center;
1373
1381
  background-color: #444;
@@ -1388,6 +1396,7 @@
1388
1396
  width: 36px;
1389
1397
  background-repeat: no-repeat;
1390
1398
  cursor: pointer;
1399
+ flex: none;
1391
1400
  background-image: url("../dist/assets/icons/c5b4262e.png");
1392
1401
  margin-bottom: 8px;
1393
1402
  }
@@ -1 +1 @@
1
- import{BatchUpdateTrackID as _}from"../../../../../../store/annotation/actionCreators.js";import{composeResultByToolInstance as E}from"../../../../../../store/annotation/reducer.js";import{LabelBeeContext as w,useDispatch as h}from"../../../../../../store/ctx.js";import{Form as o,Modal as v,InputNumber as c}from"antd";import r,{useState as O}from"react";import{useTranslation as D}from"react-i18next";import{connect as k}from"react-redux";var C=Object.defineProperty,T=Object.defineProperties,B=Object.getOwnPropertyDescriptors,u=Object.getOwnPropertySymbols,j=Object.prototype.hasOwnProperty,F=Object.prototype.propertyIsEnumerable,d=(e,t,n)=>t in e?C(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,L=(e,t)=>{for(var n in t||(t={}))j.call(t,n)&&d(e,n,t[n]);if(u)for(var n of u(t))F.call(t,n)&&d(e,n,t[n]);return e},S=(e,t)=>T(e,B(t));const U={labelCol:{span:8},wrapperCol:{span:16}},m={width:"80px"},N=({id:e,stepList:t,imgList:n,imgIndex:f,toolInstance:y})=>{const g=h(),[I,l]=O(!1),[p]=o.useForm(),{t:a}=D(),b=i=>{g(_({id:e,newID:i.newID,rangeIndex:[i.prevPage-1,i.nextPage-1],imgList:E({toolInstance:y,imgList:n,imgIndex:f,stepList:t})})),l(!1)},x=()=>l(!1),P=()=>p.submit(),s=[{required:!0,message:a("PositiveIntegerCheck")}];return r.createElement(r.Fragment,null,r.createElement("a",{style:{color:"#666FFF"},onClick:()=>l(!0)},a("BatchUpdateText")),r.createElement(v,{title:a("BatchUpdateTrackID"),visible:I,onCancel:x,onOk:P,wrapClassName:"labelbee-custom-modal"},r.createElement(o,S(L({},U),{form:p,onFinish:b}),r.createElement(o.Item,{name:"id",label:a("CurrentBoxTrackIDs")},e),r.createElement(o.Item,{name:"newID",label:a("TrackIDUnifyAs"),rules:s},r.createElement(c,{precision:0,min:1,style:m})),r.createElement(o.Item,{label:a("UnifyTrackIDRange"),required:!0},r.createElement(o.Item,{style:{display:"inline-block"},rules:s,name:"prevPage",noStyle:!0},r.createElement(c,{precision:0,min:1,style:m})),r.createElement("span",{style:{display:"inline-block",width:"24px",textAlign:"center"}},"-"),r.createElement(o.Item,{style:{display:"inline-block"},rules:s,name:"nextPage",noStyle:!0},r.createElement(c,{precision:0,min:1,style:m})),r.createElement("span",{style:{display:"inline-block",width:"40x",marginLeft:"10px",textAlign:"center"}},a("Page"))))))},R=e=>({toolInstance:e.annotation.toolInstance,imgList:e.annotation.imgList,imgIndex:e.annotation.imgIndex,stepList:e.annotation.stepList});var A=k(R,null,null,{context:w})(N);export{A as default};
1
+ import{BatchUpdateTrackID as k}from"../../../../../../store/annotation/actionCreators.js";import{composeResultByToolInstance as O}from"../../../../../../store/annotation/reducer.js";import{LabelBeeContext as T,useDispatch as v}from"../../../../../../store/ctx.js";import{Form as o,Modal as C,InputNumber as c,message as U}from"antd";import r,{useState as B}from"react";import{useTranslation as L}from"react-i18next";import{connect as j}from"react-redux";import{PointCloudUtils as F}from"@labelbee/lb-utils";var S=Object.defineProperty,N=Object.defineProperties,R=Object.getOwnPropertyDescriptors,d=Object.getOwnPropertySymbols,A=Object.prototype.hasOwnProperty,M=Object.prototype.propertyIsEnumerable,I=(e,t,n)=>t in e?S(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,q=(e,t)=>{for(var n in t||(t={}))A.call(t,n)&&I(e,n,t[n]);if(d)for(var n of d(t))M.call(t,n)&&I(e,n,t[n]);return e},V=(e,t)=>N(e,R(t));const $={labelCol:{span:8},wrapperCol:{span:16}},m={width:"80px"},z=({id:e,stepList:t,imgList:n,imgIndex:f,toolInstance:y,updateCurrentPolygonList:g})=>{const b=v(),[x,l]=B(!1),[p]=o.useForm(),{t:a}=L(),w=s=>{const u=O({toolInstance:y,imgList:n,imgIndex:f,stepList:t});if(u.some(_=>{const h=parseInt(s.newID,10);return F.batchUpdateTrackIDCheck({newID:h,result:_.result})})){U.error(a("DuplicateTrackIDsExist"));return}b(k({id:e,newID:s.newID,rangeIndex:[s.prevPage-1,s.nextPage-1],imgList:u}));const E=parseInt(s.newID,10);l(!1),g(E)},P=()=>l(!1),D=()=>p.submit(),i=[{required:!0,message:a("PositiveIntegerCheck")}];return r.createElement(r.Fragment,null,r.createElement("a",{style:{color:"#666FFF"},onClick:()=>l(!0)},a("BatchUpdateText")),r.createElement(C,{title:a("BatchUpdateTrackID"),visible:x,onCancel:P,onOk:D,wrapClassName:"labelbee-custom-modal"},r.createElement(o,V(q({},$),{form:p,onFinish:w}),r.createElement(o.Item,{name:"id",label:a("CurrentBoxTrackIDs")},e),r.createElement(o.Item,{name:"newID",label:a("TrackIDUnifyAs"),rules:i},r.createElement(c,{precision:0,min:1,style:m})),r.createElement(o.Item,{label:a("UnifyTrackIDRange"),required:!0},r.createElement(o.Item,{style:{display:"inline-block"},rules:i,name:"prevPage",noStyle:!0},r.createElement(c,{precision:0,min:1,style:m})),r.createElement("span",{style:{display:"inline-block",width:"24px",textAlign:"center"}},"-"),r.createElement(o.Item,{style:{display:"inline-block"},rules:i,name:"nextPage",noStyle:!0},r.createElement(c,{precision:0,min:1,style:m})),r.createElement("span",{style:{display:"inline-block",width:"40x",marginLeft:"10px",textAlign:"center"}},a("Page"))))))},G=e=>({toolInstance:e.annotation.toolInstance,imgList:e.annotation.imgList,imgIndex:e.annotation.imgIndex,stepList:e.annotation.stepList});var H=j(G,null,null,{context:T})(z);export{H as default};
@@ -1 +1 @@
1
- import t,{useContext as w,useState as D,useEffect as V}from"react";import{EditFilled as $}from"@ant-design/icons";import{ToolIcons as q}from"../ToolIcons.js";import{cTool as G}from"@labelbee/lb-annotation";import{PointCloudContext as L}from"../../../../components/pointCloudView/PointCloudContext.js";import{Divider as B,Tag as H,Input as K,Select as F,message as S}from"antd";import Q from"../../../../utils/StepUtils.js";import{connect as X}from"react-redux";import{jsonParser as Y}from"../../../../utils/index.js";import{useStatus as Z}from"../../../../components/pointCloudView/hooks/useStatus.js";import{useSingleBox as N}from"../../../../components/pointCloudView/hooks/useSingleBox.js";import{useTranslation as h}from"react-i18next";import{LabelBeeContext as tt,useDispatch as et}from"../../../../store/ctx.js";import ot from"./components/batchUpdateModal/index.js";import{PointCloudUtils as nt}from"@labelbee/lb-utils";import U from"../../../../components/attributeList/index.js";import{useAttribute as lt}from"../../../../components/pointCloudView/hooks/useAttribute.js";import{SetTaskStepList as rt}from"../../../../store/annotation/actionCreators.js";var it=Object.defineProperty,at=Object.defineProperties,st=Object.getOwnPropertyDescriptors,M=Object.getOwnPropertySymbols,ut=Object.prototype.hasOwnProperty,ct=Object.prototype.propertyIsEnumerable,z=(e,o,n)=>o in e?it(e,o,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[o]=n,T=(e,o)=>{for(var n in o||(o={}))ut.call(o,n)&&z(e,n,o[n]);if(M)for(var n of M(o))ct.call(o,n)&&z(e,n,o[n]);return e},j=(e,o)=>at(e,st(o));const dt=({imgList:e,imgIndex:o})=>{const n=w(L),[d,s]=D([]),{t:v}=h();V(()=>{const u=e;let i=new Map;s(nt.getAllPointCloudResult({imgList:u,extraBoxList:m,ignoreIndexList:[o]}).filter(l=>!l.trackID||i.get(l.trackID)?!1:(i.set(l.trackID,!0),!0)).sort((l,a)=>{var g,p;const x=(g=l==null?void 0:l.trackID)!=null?g:0,f=(p=a==null?void 0:a.trackID)!=null?p:0;return x-f}).map(l=>{var a;return(a=l==null?void 0:l.trackID)!=null?a:0}))},[n.pointCloudBoxList,e]);const{pointCloudBoxList:m}=n;return t.createElement("div",{style:{padding:24,borderBottom:"1px solid #eee"}},t.createElement("div",{style:{marginBottom:16}},v("AllTrackIDs")),t.createElement("div",null,d.map(u=>t.createElement(H,{color:"#F3F4FF",key:u,style:{color:"#666",marginBottom:8}},u))))},pt=()=>{const[e,o]=D(!1),n=w(L),{pointCloudBoxList:d}=n,{selectedBox:s,updateSelectedBox:v}=N(),[m,u]=D(""),{t:i}=h(),l=s==null?void 0:s.info.trackID,a=p=>!!d.find(f=>f.trackID===p&&f.id!==(s==null?void 0:s.info.id)),g=(p=!1)=>{var x;const f=parseInt(m,10);if(p&&o(!1),isNaN(f)){S.error(i("PositiveIntegerCheck"));return}if(m.indexOf(".")>-1){S.error(i("NotAllowDecimalPointsInTrackID"));return}if(a(f)){S.error(i("DuplicateTrackIDsExist"));return}if(!(f>0)){S.error(i("PositiveIntegerCheck"));return}const k=v({trackID:f});(x=n==null?void 0:n.topViewInstance)==null||x.updatePolygonList(k!=null?k:[])};return V(()=>{o(!1)},[l]),t.createElement("div",{style:{padding:24}},t.createElement("div",{style:{marginBottom:16,display:"flex",justifyContent:"space-between",alignItems:"center"}},t.createElement("span",null,i("CurrentBoxTrackIDs")),l&&t.createElement(ot,{id:l})),t.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"}},e&&l?t.createElement(K,{defaultValue:l,onChange:p=>{u(p.target.value)},disabled:!l,size:"small",onBlur:()=>{g()},onPressEnter:()=>{g(!0)}}):t.createElement("span",null,l),t.createElement($,{style:{color:"#999",marginLeft:16,cursor:typeof l!="undefined"?"pointer":"not-allowed"},onClick:()=>{l&&o(!e)}})))},mt=({attributeList:e,subAttributeList:o,toolInstance:n,config:d,stepList:s,stepInfo:v,enableColorPicker:m})=>{const{selectedBox:u}=N(),i=w(L),{t:l}=h(),{defaultAttribute:a}=lt(),g=et(),p={fontWeight:500,fontSize:14,margin:"12px 0 8px 20px"},x={margin:"12px 20px 8px",fontSize:14,fontWeight:500,wordWrap:"break-word"},f=(r,C)=>{var I,y,E,_,c;const P=(I=d==null?void 0:d.attributeList)==null?void 0:I.map(b=>b.value===r?j(T({},b),{color:C}):b),A=j(T({},d),{attributeList:P}),R=JSON.stringify(A),J=s==null?void 0:s.map(b=>(b==null?void 0:b.step)===(v==null?void 0:v.step)?j(T({},b),{config:R}):b);(y=i==null?void 0:i.topViewInstance)==null||y.updateAttributeList(P),(E=i==null?void 0:i.sideViewInstance)==null||E.updateAttributeList(P),(_=i==null?void 0:i.backViewInstance)==null||_.updateAttributeList(P),(c=i==null?void 0:i.mainViewInstance)==null||c.setConfig(A),g(rt({stepList:J}))},k=r=>{n.setDefaultAttribute(r)},O=(r,C)=>{n.setSubAttribute(r,C)},W=e.map(r=>({label:r.key,value:r.value,color:r==null?void 0:r.color}));return t.createElement("div",null,t.createElement("div",{style:p},l("Attribute")),t.createElement(U,{list:W,forbidDefault:!0,selectedAttribute:a!=null?a:"",attributeChanged:r=>k(r),updateColorConfig:f,enableColorPicker:m}),t.createElement(B,{style:{margin:0}}),u&&t.createElement(t.Fragment,null,o.map(r=>{var C,I,y,E,_;return(r==null?void 0:r.subSelected)&&t.createElement("div",{style:{marginTop:12},key:r.value},t.createElement("div",{style:x},l("SubAttribute"),"-",r.key),((C=r.subSelected)==null?void 0:C.length)<5?t.createElement(U,{list:r.subSelected.map(c=>({label:c.key,value:c.value})),selectedAttribute:(y=(I=i.selectedPointCloudBox)==null?void 0:I.subAttribute)==null?void 0:y[r.value],num:"-",forbidColor:!0,forbidDefault:!0,attributeChanged:c=>O(r.value,c),style:{marginBottom:12}}):t.createElement(F,{style:{margin:"0px 21px 17px 16px",width:"87%"},value:(_=(E=i.selectedPointCloudBox)==null?void 0:E.subAttribute)==null?void 0:_[r.value],placeholder:l("PleaseSelect"),onChange:c=>O(r.value,c),allowClear:!0},r.subSelected.map(c=>t.createElement(F.Option,{key:c.value,value:c.value},c.key))),t.createElement(B,{style:{margin:0}}))})))},ft=({stepInfo:e,toolInstance:o,imgList:n,imgIndex:d,stepList:s,enableColorPicker:v})=>{var m,u;const{updatePointCloudPattern:i,pointCloudPattern:l}=Z(),a=Y(e.config),g=(m=a==null?void 0:a.attributeList)!=null?m:[],p=(a==null?void 0:a.secondaryAttributeConfigurable)===!0?(u=a==null?void 0:a.inputList)!=null?u:[]:[];return t.createElement(t.Fragment,null,t.createElement(q,{toolName:G.EPointCloudName.PointCloud,selectedToolName:l,onChange:x=>i==null?void 0:i(x)}),t.createElement(mt,{toolInstance:o,attributeList:g,subAttributeList:p,config:a,stepList:s,stepInfo:e,enableColorPicker:v}),(a==null?void 0:a.trackConfigurable)===!0&&t.createElement(t.Fragment,null,t.createElement(pt,null),t.createElement(B,{style:{margin:0}}),t.createElement(dt,{imgList:n,imgIndex:d})))},vt=e=>{var o,n,d,s;const v=Q.getCurrentStepInfo((o=e.annotation)==null?void 0:o.step,(n=e.annotation)==null?void 0:n.stepList),m=(d=e.annotation)==null?void 0:d.toolInstance,u=(s=e.annotation)==null?void 0:s.stepList;return{stepInfo:v,toolInstance:m,imgList:e.annotation.imgList,imgIndex:e.annotation.imgIndex,stepList:u}};var gt=X(vt,null,null,{context:tt})(ft);export{gt as default};
1
+ import t,{useContext as L,useState as w,useEffect as V}from"react";import{EditFilled as $}from"@ant-design/icons";import{ToolIcons as q}from"../ToolIcons.js";import{cTool as G}from"@labelbee/lb-annotation";import{PointCloudContext as D}from"../../../../components/pointCloudView/PointCloudContext.js";import{Divider as B,Tag as H,Input as K,Select as F,message as S}from"antd";import Q from"../../../../utils/StepUtils.js";import{connect as X}from"react-redux";import{jsonParser as Y}from"../../../../utils/index.js";import{useStatus as Z}from"../../../../components/pointCloudView/hooks/useStatus.js";import{useSingleBox as N}from"../../../../components/pointCloudView/hooks/useSingleBox.js";import{useTranslation as h}from"react-i18next";import{LabelBeeContext as tt,useDispatch as et}from"../../../../store/ctx.js";import ot from"./components/batchUpdateModal/index.js";import{PointCloudUtils as nt}from"@labelbee/lb-utils";import U from"../../../../components/attributeList/index.js";import{useAttribute as lt}from"../../../../components/pointCloudView/hooks/useAttribute.js";import{SetTaskStepList as rt}from"../../../../store/annotation/actionCreators.js";var it=Object.defineProperty,at=Object.defineProperties,st=Object.getOwnPropertyDescriptors,M=Object.getOwnPropertySymbols,ut=Object.prototype.hasOwnProperty,ct=Object.prototype.propertyIsEnumerable,z=(e,o,n)=>o in e?it(e,o,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[o]=n,T=(e,o)=>{for(var n in o||(o={}))ut.call(o,n)&&z(e,n,o[n]);if(M)for(var n of M(o))ct.call(o,n)&&z(e,n,o[n]);return e},j=(e,o)=>at(e,st(o));const dt=({imgList:e,imgIndex:o})=>{const n=L(D),[p,u]=w([]),{t:v}=h();V(()=>{const c=e;let i=new Map;u(nt.getAllPointCloudResult({imgList:c,extraBoxList:f,ignoreIndexList:[o]}).filter(l=>!l.trackID||i.get(l.trackID)?!1:(i.set(l.trackID,!0),!0)).sort((l,a)=>{var g,x;const s=(g=l==null?void 0:l.trackID)!=null?g:0,m=(x=a==null?void 0:a.trackID)!=null?x:0;return s-m}).map(l=>{var a;return(a=l==null?void 0:l.trackID)!=null?a:0}))},[n.pointCloudBoxList,e]);const{pointCloudBoxList:f}=n;return t.createElement("div",{style:{padding:24,borderBottom:"1px solid #eee"}},t.createElement("div",{style:{marginBottom:16}},v("AllTrackIDs")),t.createElement("div",null,p.map(c=>t.createElement(H,{color:"#F3F4FF",key:c,style:{color:"#666",marginBottom:8}},c))))},pt=()=>{const[e,o]=w(!1),n=L(D),{pointCloudBoxList:p}=n,{selectedBox:u,updateSelectedBox:v}=N(),[f,c]=w(""),{t:i}=h(),l=u==null?void 0:u.info.trackID,a=s=>!!p.find(C=>C.trackID===s&&C.id!==(u==null?void 0:u.info.id)),g=(s=!1)=>{const m=parseInt(f,10);if(s&&o(!1),isNaN(m)){S.error(i("PositiveIntegerCheck"));return}if(f.indexOf(".")>-1){S.error(i("NotAllowDecimalPointsInTrackID"));return}if(a(m)){S.error(i("DuplicateTrackIDsExist"));return}if(!(m>0)){S.error(i("PositiveIntegerCheck"));return}x(m)};V(()=>{o(!1)},[l]);const x=s=>{var m;const C=v({trackID:s});(m=n==null?void 0:n.topViewInstance)==null||m.updatePolygonList(C!=null?C:[])};return t.createElement("div",{style:{padding:24}},t.createElement("div",{style:{marginBottom:16,display:"flex",justifyContent:"space-between",alignItems:"center"}},t.createElement("span",null,i("CurrentBoxTrackIDs")),l&&t.createElement(ot,{id:l,updateCurrentPolygonList:s=>x(s)})),t.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"}},e&&l?t.createElement(K,{defaultValue:l,onChange:s=>{c(s.target.value)},disabled:!l,size:"small",onBlur:()=>{g()},onPressEnter:()=>{g(!0)}}):t.createElement("span",null,l),t.createElement($,{style:{color:"#999",marginLeft:16,cursor:typeof l!="undefined"?"pointer":"not-allowed"},onClick:()=>{l&&o(!e)}})))},mt=({attributeList:e,subAttributeList:o,toolInstance:n,config:p,stepList:u,stepInfo:v,enableColorPicker:f})=>{const{selectedBox:c}=N(),i=L(D),{t:l}=h(),{defaultAttribute:a}=lt(),g=et(),x={fontWeight:500,fontSize:14,margin:"12px 0 8px 20px"},s={margin:"12px 20px 8px",fontSize:14,fontWeight:500,wordWrap:"break-word"},m=(r,I)=>{var y,E,_,P,d;const k=(y=p==null?void 0:p.attributeList)==null?void 0:y.map(b=>b.value===r?j(T({},b),{color:I}):b),A=j(T({},p),{attributeList:k}),R=JSON.stringify(A),J=u==null?void 0:u.map(b=>(b==null?void 0:b.step)===(v==null?void 0:v.step)?j(T({},b),{config:R}):b);(E=i==null?void 0:i.topViewInstance)==null||E.updateAttributeList(k),(_=i==null?void 0:i.sideViewInstance)==null||_.updateAttributeList(k),(P=i==null?void 0:i.backViewInstance)==null||P.updateAttributeList(k),(d=i==null?void 0:i.mainViewInstance)==null||d.setConfig(A),g(rt({stepList:J}))},C=r=>{n.setDefaultAttribute(r)},O=(r,I)=>{n.setSubAttribute(r,I)},W=e.map(r=>({label:r.key,value:r.value,color:r==null?void 0:r.color}));return t.createElement("div",null,t.createElement("div",{style:x},l("Attribute")),t.createElement(U,{list:W,forbidDefault:!0,selectedAttribute:a!=null?a:"",attributeChanged:r=>C(r),updateColorConfig:m,enableColorPicker:f}),t.createElement(B,{style:{margin:0}}),c&&t.createElement(t.Fragment,null,o.map(r=>{var I,y,E,_,P;return(r==null?void 0:r.subSelected)&&t.createElement("div",{style:{marginTop:12},key:r.value},t.createElement("div",{style:s},l("SubAttribute"),"-",r.key),((I=r.subSelected)==null?void 0:I.length)<5?t.createElement(U,{list:r.subSelected.map(d=>({label:d.key,value:d.value})),selectedAttribute:(E=(y=i.selectedPointCloudBox)==null?void 0:y.subAttribute)==null?void 0:E[r.value],num:"-",forbidColor:!0,forbidDefault:!0,attributeChanged:d=>O(r.value,d),style:{marginBottom:12}}):t.createElement(F,{style:{margin:"0px 21px 17px 16px",width:"87%"},value:(P=(_=i.selectedPointCloudBox)==null?void 0:_.subAttribute)==null?void 0:P[r.value],placeholder:l("PleaseSelect"),onChange:d=>O(r.value,d),allowClear:!0},r.subSelected.map(d=>t.createElement(F.Option,{key:d.value,value:d.value},d.key))),t.createElement(B,{style:{margin:0}}))})))},ft=({stepInfo:e,toolInstance:o,imgList:n,imgIndex:p,stepList:u,enableColorPicker:v})=>{var f,c;const{updatePointCloudPattern:i,pointCloudPattern:l}=Z(),a=Y(e.config),g=(f=a==null?void 0:a.attributeList)!=null?f:[],x=(a==null?void 0:a.secondaryAttributeConfigurable)===!0?(c=a==null?void 0:a.inputList)!=null?c:[]:[];return t.createElement(t.Fragment,null,t.createElement(q,{toolName:G.EPointCloudName.PointCloud,selectedToolName:l,onChange:s=>i==null?void 0:i(s)}),t.createElement(mt,{toolInstance:o,attributeList:g,subAttributeList:x,config:a,stepList:u,stepInfo:e,enableColorPicker:v}),(a==null?void 0:a.trackConfigurable)===!0&&t.createElement(t.Fragment,null,t.createElement(pt,null),t.createElement(B,{style:{margin:0}}),t.createElement(dt,{imgList:n,imgIndex:p})))},vt=e=>{var o,n,p,u;const v=Q.getCurrentStepInfo((o=e.annotation)==null?void 0:o.step,(n=e.annotation)==null?void 0:n.stepList),f=(p=e.annotation)==null?void 0:p.toolInstance,c=(u=e.annotation)==null?void 0:u.stepList;return{stepInfo:v,toolInstance:f,imgList:e.annotation.imgList,imgIndex:e.annotation.imgIndex,stepList:c}};var gt=X(vt,null,null,{context:tt})(ft);export{gt as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@labelbee/lb-components",
3
- "version": "1.11.0-alpha.2",
3
+ "version": "1.11.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",
@@ -43,8 +43,8 @@
43
43
  },
44
44
  "dependencies": {
45
45
  "@ant-design/icons": "^4.6.2",
46
- "@labelbee/lb-annotation": "1.15.0-alpha.2",
47
- "@labelbee/lb-utils": "1.7.1-alpha.1",
46
+ "@labelbee/lb-annotation": "1.15.0-alpha.4",
47
+ "@labelbee/lb-utils": "1.7.1-alpha.2",
48
48
  "ahooks": "^3.4.0",
49
49
  "classnames": "^2.3.0",
50
50
  "lodash": "^4.17.21",