@labelbee/lb-components 1.23.0-alpha.134 → 1.23.0-alpha.136

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- "use strict";var ahooks=require("ahooks"),es=require("antd/es"),React=require("react"),reactRedux=require("react-redux"),usePointCloudViews=require("../pointCloudView/hooks/usePointCloudViews.js"),PointCloudContext=require("../pointCloudView/PointCloudContext.js"),map=require("../../store/annotation/map.js"),ctx=require("../../store/ctx.js"),lbAnnotation=require("@labelbee/lb-annotation"),util=require("./util.js"),useUpdateRectList=require("./useUpdateRectList.js"),_=require("lodash"),useToolStyle=require("../../hooks/useToolStyle.js"),index=require("../../store/toolConfig/index.js");function _interopDefaultLegacy(i){return i&&typeof i=="object"&&"default"in i?i:{default:i}}var React__default=_interopDefaultLegacy(React),___default=_interopDefaultLegacy(_),__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(i,l,s)=>l in i?__defProp(i,l,{enumerable:!0,configurable:!0,writable:!0,value:s}):i[l]=s,__spreadValues=(i,l)=>{for(var s in l||(l={}))__hasOwnProp.call(l,s)&&__defNormalProp(i,s,l[s]);if(__getOwnPropSymbols)for(var s of __getOwnPropSymbols(l))__propIsEnum.call(l,s)&&__defNormalProp(i,s,l[s]);return i},__spreadProps=(i,l)=>__defProps(i,__getOwnPropDescs(l)),__async=(i,l,s)=>new Promise((d,p)=>{var I=f=>{try{D(s.next(f))}catch(R){p(R)}},w=f=>{try{D(s.throw(f))}catch(R){p(R)}},D=f=>f.done?d(f.value):Promise.resolve(f.value).then(I,w);D((s=s.apply(i,l)).next())});const PointCloud2DRectOperationView=i=>{var l,s;const{mappingData:d,size:p,config:I,checkMode:w,afterImgOnLoad:D,shouldExcludePointCloudBoxListUpdate:f}=i,{selectBoxVisibleSwitch:R}=index(),P=(l=d==null?void 0:d.url)!=null?l:"",b=(s=d==null?void 0:d.fallbackUrl)!=null?s:"",{pointCloudBoxList:S,setPointCloudResult:L,defaultAttribute:E,rectList:O,addRectIn2DView:X,updateRectIn2DView:Y,removeRectIn2DView:Z,updateRectListByReducer:ee,selectedIDs:v,setSelectedIDs:V,selectedID:q}=React.useContext(PointCloudContext.PointCloudContext),{value:j}=useToolStyle.useToolStyleContext(),te=ahooks.useLatest(v),{update2DViewRect:re,remove2DViewRect:ne}=usePointCloudViews.usePointCloudViews(),k=React__default.default.useRef(null),o=React.useRef(null),A=ahooks.useMemoizedFn(re),C=ahooks.useMemoizedFn(ne),x=React.useRef(null),[oe,F]=React.useState(!0),[T,H]=React.useState(""),[ue,U]=React.useState(!1),[ie,B]=React.useState(!0),g=React.useMemo(()=>O==null?void 0:O.filter(e=>e.imageName===(d==null?void 0:d.path)),[d==null?void 0:d.path,O]),J=React.useRef(g),y=ahooks.useLatest(d==null?void 0:d.path),N=React.useCallback(e=>__async(void 0,null,function*(){try{const n=te.current.slice(0),r=yield Promise.resolve(e());if(!r||r.length===0)return r;if(n.length){const t=new Set(n),u=r.filter(c=>t.has(c.id)).map(c=>c.id);V(u)}return r}catch(n){}}),[V]),$=e=>{const{boxID:n}=e;if(!f&&n){N(()=>{const r=A==null?void 0:A(e);return r?(x.current=r,L(r),r):null});return}Y(e,!0)},G=e=>{y.current&&X(__spreadProps(__spreadValues({},e),{imageName:y.current}))},K=e=>{if(e.length===0)return;if(!f){const r=e.find(t=>t.boxID);if(r){N(()=>{const t=C==null?void 0:C(r);return t?(x.current=t,L(t),h(),t):null});return}}const n=e.find(r=>r.extId);n&&N(()=>{const{imageName:r,extId:t}=n,u=C==null?void 0:C({boxID:t,imageName:r});return u?(x.current=u,L(u),u):null}),Z(e)},ce=ahooks.useMemoizedFn(()=>{let e=[];return S.forEach(n=>{const{rects:r=[],id:t,attribute:u,trackID:c}=n,a=r.find(M=>M.imageName===y.current),m=t+"_"+y.current;a&&(e=[...e,__spreadProps(__spreadValues({},a),{boxID:t,id:m,attribute:u,order:c})])}),e}),h=useUpdateRectList.useUpdateRectList(()=>{var e,n,r,t,u;const c=f?[]:ce(),a=(e=o.current)==null?void 0:e.selectedRectID,m=v.slice(0),M=R?util.selectSpecifiedRectsFromTopViewSelectedIds(m,c,g):[...c,...g];let W=[];!R&&(v==null?void 0:v.length)&&(W=c.filter(z=>a?v.includes(z.boxID)&&!a.includes(z.boxID):v.includes(z.boxID))),(n=o.current)==null||n.setHighLightRectList(W),(r=o.current)==null||r.setResult(M),T?((t=o.current)==null||t.setSelectedRectID(T),H("")):ue&&a&&((u=o.current)==null||u.setSelectedRectID(a),U(!1))}),Q=({targetId:e,id:n})=>{B(!1),V(e),H(n)};return React.useEffect(()=>{if(k.current){const e=new lbAnnotation.PointCloud2DRectOperation({container:k.current,size:p,config:__spreadProps(__spreadValues({},I),{isShowOrder:!0,attributeConfigurable:!0}),checkMode:w});return o.current=e,o.current.init(),o.current.on("updateDragResult",$),o.current.on("afterAddingDrawingRect",G),o.current.on("deleteSelectedRects",K),o.current.on("onRightClick",Q),()=>{var n,r,t,u,c;(n=o.current)==null||n.unbind("updateDragResult",$),(r=o.current)==null||r.unbind("afterAddingDrawingRect",G),(t=o.current)==null||t.unbind("deleteSelectedRects",K),(u=o.current)==null||u.unbind("onRightClick",Q),(c=o.current)==null||c.destroy()}}},[]),React.useEffect(()=>{const e=r=>__async(void 0,null,function*(){try{return yield lbAnnotation.ImgUtils.load(r)}catch(t){return console.error("Error loading image:",t),null}}),n=()=>__async(void 0,null,function*(){var r;F(!0);let t=yield e(P);!t&&b&&(t=yield e(b)),t&&((r=o.current)==null||r.setImgNode(t),D(t)),F(!1)});o.current&&(P||b)&&n()},[P,b]),React.useEffect(()=>{var e;(e=o.current)==null||e.setSize(p)},[p]),React.useEffect(()=>{S!==x.current&&h()},[S]),React.useEffect(()=>{var e,n;const r=g.find(t=>t.id===o.current.selectedRectID);(n=(e=o.current)==null?void 0:e.setDefaultAttribute)==null||n.call(e,E),r&&ee(t=>{var u;const c=[];let a=null;return t.forEach(m=>{m.id!==o.current.selectedRectID?c.push(m):a=m}),r.extId===void 0&&(a=(u=o.current)==null?void 0:u.selectedRect),[...c,__spreadProps(__spreadValues({},a||{}),{attribute:E})]}),U(!0),h()},[E]),React.useEffect(()=>{const e=J.current;___default.default.isEqual(e,g)||(U(!0),h(),J.current=g)},[g]),React.useEffect(()=>{h()},[f]),React.useEffect(()=>{var e,n,r,t;const u=(n=(e=o.current)==null?void 0:e.config)!=null?n:{},c=__spreadProps(__spreadValues({},u),{attributeList:(r=I.attributeList)!=null?r:[]});(t=o.current)==null||t.setConfig(JSON.stringify(c))},[I.attributeList]),React.useEffect(()=>{var e;(e=o.current)==null||e.setEnableAddRect(v.length===0),h()},[v]),React.useEffect(()=>{if(!q||!ie){B(!0);return}const{rectList:e,size:n,zoom:r}=o.current,t=e.find(a=>a.boxID===q);if(!t){B(!0);return}const u={x:t.x+t.width/2,y:t.y+t.height/2},c=lbAnnotation.MathUtils.getCurrentPosFromRectCenter(n,u,r);o.current.setCurrentPos(c),o.current.renderBasicCanvas(),o.current.render()},[q]),React.useEffect(()=>{const{hiddenText:e}=j||{};if(e===void 0)return;const n=o.current;if(!n)return;const r=__spreadValues(__spreadValues({},n.style),j);n.setStyle(r)},[j]),React.useEffect(()=>{h()},[R]),React__default.default.createElement(es.Spin,{spinning:oe},React__default.default.createElement("div",{ref:k,style:__spreadValues({position:"relative"},p)}))};var PointCloud2DRectOperationView$1=reactRedux.connect(map.a2MapStateToProps,null,null,{context:ctx.LabelBeeContext})(PointCloud2DRectOperationView);module.exports=PointCloud2DRectOperationView$1;
1
+ "use strict";var ahooks=require("ahooks"),es=require("antd/es"),React=require("react"),reactRedux=require("react-redux"),usePointCloudViews=require("../pointCloudView/hooks/usePointCloudViews.js"),PointCloudContext=require("../pointCloudView/PointCloudContext.js"),map=require("../../store/annotation/map.js"),ctx=require("../../store/ctx.js"),lbAnnotation=require("@labelbee/lb-annotation"),util=require("./util.js"),useUpdateRectList=require("./useUpdateRectList.js"),_=require("lodash"),useToolStyle=require("../../hooks/useToolStyle.js"),index=require("../../store/toolConfig/index.js");function _interopDefaultLegacy(i){return i&&typeof i=="object"&&"default"in i?i:{default:i}}var React__default=_interopDefaultLegacy(React),___default=_interopDefaultLegacy(_),__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(i,l,s)=>l in i?__defProp(i,l,{enumerable:!0,configurable:!0,writable:!0,value:s}):i[l]=s,__spreadValues=(i,l)=>{for(var s in l||(l={}))__hasOwnProp.call(l,s)&&__defNormalProp(i,s,l[s]);if(__getOwnPropSymbols)for(var s of __getOwnPropSymbols(l))__propIsEnum.call(l,s)&&__defNormalProp(i,s,l[s]);return i},__spreadProps=(i,l)=>__defProps(i,__getOwnPropDescs(l)),__async=(i,l,s)=>new Promise((d,p)=>{var I=f=>{try{D(s.next(f))}catch(R){p(R)}},P=f=>{try{D(s.throw(f))}catch(R){p(R)}},D=f=>f.done?d(f.value):Promise.resolve(f.value).then(I,P);D((s=s.apply(i,l)).next())});const PointCloud2DRectOperationView=i=>{var l,s;const{mappingData:d,size:p,config:I,checkMode:P,afterImgOnLoad:D,shouldExcludePointCloudBoxListUpdate:f}=i,{selectBoxVisibleSwitch:R}=index(),S=(l=d==null?void 0:d.url)!=null?l:"",b=(s=d==null?void 0:d.fallbackUrl)!=null?s:"",{pointCloudBoxList:L,setPointCloudResult:E,defaultAttribute:O,rectList:V,addRectIn2DView:X,updateRectIn2DView:Y,removeRectIn2DView:Z,updateRectListByReducer:ee,selectedIDs:v,setSelectedIDs:q,selectedID:C}=React.useContext(PointCloudContext.PointCloudContext),{value:j}=useToolStyle.useToolStyleContext(),te=ahooks.useLatest(v),{update2DViewRect:re,remove2DViewRect:ne}=usePointCloudViews.usePointCloudViews(),k=React__default.default.useRef(null),n=React.useRef(null),A=ahooks.useMemoizedFn(re),x=ahooks.useMemoizedFn(ne),y=React.useRef(null),[oe,F]=React.useState(!0),[T,H]=React.useState(""),[ue,U]=React.useState(!1),[ie,B]=React.useState(!0),g=React.useMemo(()=>V==null?void 0:V.filter(e=>e.imageName===(d==null?void 0:d.path)),[d==null?void 0:d.path,V]),J=React.useRef(g),w=ahooks.useLatest(d==null?void 0:d.path),N=React.useCallback(e=>__async(void 0,null,function*(){try{const o=te.current.slice(0),r=yield Promise.resolve(e());if(!r||r.length===0)return r;if(o.length){const t=new Set(o),u=r.filter(c=>t.has(c.id)).map(c=>c.id);q(u)}return r}catch(o){}}),[q]),$=e=>{const{boxID:o}=e;if(!f&&o){N(()=>{const r=A==null?void 0:A(e);return r?(y.current=r,E(r),r):null});return}Y(e,!0)},G=e=>{w.current&&X(__spreadProps(__spreadValues({},e),{imageName:w.current}))},K=e=>{if(e.length===0)return;if(!f){const r=e.find(t=>t.boxID);if(r){N(()=>{const t=x==null?void 0:x(r);return t?(y.current=t,E(t),h(),t):null});return}}const o=e.find(r=>r.extId);o&&N(()=>{const{imageName:r,extId:t}=o,u=x==null?void 0:x({boxID:t,imageName:r});return u?(y.current=u,E(u),u):null}),Z(e)},ce=ahooks.useMemoizedFn(()=>{let e=[];return L.forEach(o=>{const{rects:r=[],id:t,attribute:u,trackID:c}=o,a=r.find(M=>M.imageName===w.current),m=t+"_"+w.current;a&&(e=[...e,__spreadProps(__spreadValues({},a),{boxID:t,id:m,attribute:u,order:c})])}),e}),h=useUpdateRectList.useUpdateRectList(()=>{var e,o,r,t,u;const c=f?[]:ce(),a=(e=n.current)==null?void 0:e.selectedRectID,m=v.slice(0),M=R?util.selectSpecifiedRectsFromTopViewSelectedIds(m,c,g):[...c,...g];let W=[];!R&&(v==null?void 0:v.length)&&(W=c.filter(z=>a?v.includes(z.boxID)&&!a.includes(z.boxID):v.includes(z.boxID))),(o=n.current)==null||o.setHighLightRectList(W),(r=n.current)==null||r.setResult(M),T?((t=n.current)==null||t.setSelectedRectID(T),H("")):ue&&a&&((u=n.current)==null||u.setSelectedRectID(a),U(!1))}),Q=({targetId:e,id:o})=>{B(!1),q(e),H(o)};return React.useEffect(()=>{if(k.current){const e=new lbAnnotation.PointCloud2DRectOperation({container:k.current,size:p,config:__spreadProps(__spreadValues({},I),{isShowOrder:!0,attributeConfigurable:!0}),checkMode:P});return n.current=e,n.current.init(),n.current.on("updateDragResult",$),n.current.on("afterAddingDrawingRect",G),n.current.on("deleteSelectedRects",K),n.current.on("onRightClick",Q),()=>{var o,r,t,u,c;(o=n.current)==null||o.unbind("updateDragResult",$),(r=n.current)==null||r.unbind("afterAddingDrawingRect",G),(t=n.current)==null||t.unbind("deleteSelectedRects",K),(u=n.current)==null||u.unbind("onRightClick",Q),(c=n.current)==null||c.destroy()}}},[]),React.useEffect(()=>{const e=r=>__async(void 0,null,function*(){try{return yield lbAnnotation.ImgUtils.load(r)}catch(t){return console.error("Error loading image:",t),null}}),o=()=>__async(void 0,null,function*(){var r;F(!0);let t=yield e(S);!t&&b&&(t=yield e(b)),t&&((r=n.current)==null||r.setImgNode(t),D(t)),F(!1)});n.current&&(S||b)&&o()},[S,b]),React.useEffect(()=>{var e;(e=n.current)==null||e.setSize(p)},[p]),React.useEffect(()=>{L!==y.current&&h()},[L]),React.useEffect(()=>{var e,o;const r=g.find(t=>t.id===n.current.selectedRectID);(o=(e=n.current)==null?void 0:e.setDefaultAttribute)==null||o.call(e,O),r&&ee(t=>{var u;const c=[];let a=null;return t.forEach(m=>{m.id!==n.current.selectedRectID?c.push(m):a=m}),r.extId===void 0&&(a=(u=n.current)==null?void 0:u.selectedRect),[...c,__spreadProps(__spreadValues({},a||{}),{attribute:O})]}),U(!0),h()},[O]),React.useEffect(()=>{const e=J.current;___default.default.isEqual(e,g)||(U(!0),h(),J.current=g)},[g]),React.useEffect(()=>{h()},[f]),React.useEffect(()=>{var e,o,r,t;const u=(o=(e=n.current)==null?void 0:e.config)!=null?o:{},c=__spreadProps(__spreadValues({},u),{attributeList:(r=I.attributeList)!=null?r:[]});(t=n.current)==null||t.setConfig(JSON.stringify(c))},[I.attributeList]),React.useEffect(()=>{var e;(e=n.current)==null||e.setEnableAddRect(v.length===0),h()},[v]),React.useEffect(()=>{if(!C||!ie){B(!0);return}const{rectList:e,size:o,zoom:r}=n.current,t=e.find(a=>a.boxID===C||a.extId===C);if(!t){B(!0);return}const u={x:t.x+t.width/2,y:t.y+t.height/2},c=lbAnnotation.MathUtils.getCurrentPosFromRectCenter(o,u,r);n.current.setHoverRectID(t.id),n.current.setCurrentPos(c),n.current.renderBasicCanvas(),n.current.render()},[C]),React.useEffect(()=>{const{hiddenText:e}=j||{};if(e===void 0)return;const o=n.current;if(!o)return;const r=__spreadValues(__spreadValues({},o.style),j);o.setStyle(r)},[j]),React.useEffect(()=>{h()},[R]),React__default.default.createElement(es.Spin,{spinning:oe},React__default.default.createElement("div",{ref:k,style:__spreadValues({position:"relative"},p)}))};var PointCloud2DRectOperationView$1=reactRedux.connect(map.a2MapStateToProps,null,null,{context:ctx.LabelBeeContext})(PointCloud2DRectOperationView);module.exports=PointCloud2DRectOperationView$1;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var lbAnnotation=require("@labelbee/lb-annotation");exports.EPointCloudBoxRenderTrigger=void 0,function(t){t.Default="Default",t.UndoRedo="UndoRedo",t.ClearAll="ClearAll",t.Single="Single",t.SingleDelete="SingleDelete",t.SingleToggleValid="SingleToggleValid",t.SingleRotate="SingleRotate",t.MultiPaste="MultiPaste",t.MultiMove="MultiMove",t.MulitSelect="MulitSelect"}(exports.EPointCloudBoxRenderTrigger||(exports.EPointCloudBoxRenderTrigger={})),exports.EPointCloudBoxSingleModifiedType=void 0,function(t){t.ChangeAttribute="ChangeAttribute",t.Move="Move",t.ChangeDepth="ChangeDepth",t.ChangeSize="ChangeSize",t.ToggleValid="ToggleValid"}(exports.EPointCloudBoxSingleModifiedType||(exports.EPointCloudBoxSingleModifiedType={}));const checkRectanglesIntersect=(t,o)=>{const r=getAxes(t).concat(getAxes(o));for(const e of r){const n=projectRectangle(t,e),i=projectRectangle(o,e);if(!projectionsOverlap(n,i))return!1}return!0},getAxes=t=>{const o=[];for(let r=0;r<t.length;r++){const e=t[r],n=t[(r+1)%t.length],i={x:n.x-e.x,y:n.y-e.y},d={x:-i.y,y:i.x};o.push(d)}return o},projectRectangle=(t,o)=>{let r=dotProduct(t[0],o),e=r;for(const n of t){const i=dotProduct(n,o);i<r&&(r=i),i>e&&(e=i)}return{min:r,max:e}},projectionsOverlap=(t,o)=>!(t.max<o.min||o.max<t.min),dotProduct=(t,o)=>t.x*o.x+t.y*o.y,getIntersectingBoxIds=(t,o)=>{const r=[];return o.forEach(e=>{const{polygonPointList:n}=lbAnnotation.getCuboidFromPointCloudBox(e);checkRectanglesIntersect(t,n)&&r.push(e.id)}),r},getAddBoxId=(t,o)=>{const r=t.map(n=>n.id),e=o.map(n=>n.id);return r.find(n=>!e.includes(n))||""},getDeletedBox=(t,o)=>{const r=t.map(e=>e.id);return o.find(e=>!r.includes(e.id))},getValidChangedBox=(t,o)=>t.find(e=>{const n=o.find(i=>i.id===e.id);return n&&n.valid!==e.valid}),getRotationChangedBox=(t,o)=>t.find(e=>{const n=o.find(i=>i.id===e.id);return n&&n.rotation!==e.rotation}),getIntersectingBoxIdsOfBox=(t,o)=>{const{polygonPointList:r}=lbAnnotation.getCuboidFromPointCloudBox(t);return{ids:getIntersectingBoxIds(r,o.filter(n=>n.id!==t.id)),rect:r}},getModifiedBox=(t,o)=>{const r=(e,n)=>e.attribute===n.attribute&&e.center.x===n.center.x&&e.center.y===n.center.y&&e.depth===n.depth&&e.width===n.width&&e.height===n.height;for(const e of t){const n=o.find(i=>i.id===e.id);if(n&&!r(e,n)){let i;if(n.attribute!==e.attribute?i=exports.EPointCloudBoxSingleModifiedType.ChangeAttribute:n.center.x!==e.center.x||n.center.y!==e.center.y?i=exports.EPointCloudBoxSingleModifiedType.Move:n.depth!==e.depth?i=exports.EPointCloudBoxSingleModifiedType.ChangeDepth:(n.width!==e.width||n.height!==e.height)&&(i=exports.EPointCloudBoxSingleModifiedType.ChangeSize),i!==void 0)return{modifiedType:i,box:e}}}},calcResetAreasAndBoxIds=(t,o,r)=>{try{switch(t){case exports.EPointCloudBoxRenderTrigger.Single:if(o.length>r.length){const e=getAddBoxId(o,r);return e?{modifiedBoxIds:[e],resetAreas:[]}:{modifiedBoxIds:[],resetAreas:[]}}else{const e=[],n=[],i=getModifiedBox(o,r);if(i&&(e.push(i.box.id),i.modifiedType===exports.EPointCloudBoxSingleModifiedType.ChangeSize||i.modifiedType===exports.EPointCloudBoxSingleModifiedType.Move)){const d=r.find(l=>l.id===i.box.id),{ids:s,rect:c}=getIntersectingBoxIdsOfBox(d,o);e.push(...s),n.push(c)}return{modifiedBoxIds:e,resetAreas:n}}case exports.EPointCloudBoxRenderTrigger.SingleDelete:if(o.length<r.length){const e=getDeletedBox(o,r);if(e){const i=[lbAnnotation.getCuboidFromPointCloudBox(e).polygonPointList],d=[];if(o.length>1){const{ids:s}=getIntersectingBoxIdsOfBox(e,o);s.length&&d.push(...s)}return{modifiedBoxIds:d,resetAreas:i}}return{modifiedBoxIds:[],resetAreas:[]}}return{modifiedBoxIds:[],resetAreas:[]};case exports.EPointCloudBoxRenderTrigger.SingleRotate:if(getRotationChangedBox(o,r)){const e=getRotationChangedBox(o,r);if(e){const n=r.find(s=>s.id===e.id),{ids:i,rect:d}=getIntersectingBoxIdsOfBox(n,o);return{modifiedBoxIds:[e.id,...i],resetAreas:[d]}}}return{modifiedBoxIds:[],resetAreas:[]};case exports.EPointCloudBoxRenderTrigger.SingleToggleValid:if(getValidChangedBox(o,r)){const e=getValidChangedBox(o,r);return e?{modifiedBoxIds:[e.id],resetAreas:[]}:{modifiedBoxIds:[],resetAreas:[]}}return{modifiedBoxIds:[],resetAreas:[]};case exports.EPointCloudBoxRenderTrigger.MulitSelect:return{modifiedBoxIds:getDifference(o,r),resetAreas:[]};case exports.EPointCloudBoxRenderTrigger.MultiPaste:case exports.EPointCloudBoxRenderTrigger.MultiMove:case exports.EPointCloudBoxRenderTrigger.Default:case exports.EPointCloudBoxRenderTrigger.UndoRedo:case exports.EPointCloudBoxRenderTrigger.ClearAll:default:return{modifiedBoxIds:[],resetAreas:[]}}}catch(e){return console.error("calcResetAreasAndBoxIds error:",e),{modifiedBoxIds:[],resetAreas:[]}}},deepEqual=(t,o)=>{if(t===o)return!0;if(typeof t!="object"||typeof o!="object"||t===null||o===null)return!1;const r=Object.keys(t),e=Object.keys(o);if(r.length!==e.length)return!1;for(const n of r)if(!deepEqual(t[n],o[n]))return!1;return!0},getDifference=(t,o)=>{const r=new Map;for(const e of o)r.set(e.id,e);return t.filter(e=>{const n=r.get(e.id);return!n||!deepEqual(e,n)}).map(e=>e.id)};exports.calcResetAreasAndBoxIds=calcResetAreasAndBoxIds;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var lbAnnotation=require("@labelbee/lb-annotation"),_=require("lodash");exports.EPointCloudBoxRenderTrigger=void 0,function(t){t.Default="Default",t.UndoRedo="UndoRedo",t.ClearAll="ClearAll",t.Single="Single",t.SingleDelete="SingleDelete",t.SingleToggleValid="SingleToggleValid",t.SingleRotate="SingleRotate",t.MultiPaste="MultiPaste",t.MultiMove="MultiMove",t.MulitSelect="MulitSelect"}(exports.EPointCloudBoxRenderTrigger||(exports.EPointCloudBoxRenderTrigger={})),exports.EPointCloudBoxSingleModifiedType=void 0,function(t){t.ChangeAttribute="ChangeAttribute",t.Move="Move",t.ChangeDepth="ChangeDepth",t.ChangeSize="ChangeSize",t.ToggleValid="ToggleValid"}(exports.EPointCloudBoxSingleModifiedType||(exports.EPointCloudBoxSingleModifiedType={}));const checkRectanglesIntersect=(t,n)=>{const r=getAxes(t).concat(getAxes(n));for(const e of r){const o=projectRectangle(t,e),i=projectRectangle(n,e);if(!projectionsOverlap(o,i))return!1}return!0},getAxes=t=>{const n=[];for(let r=0;r<t.length;r++){const e=t[r],o=t[(r+1)%t.length],i={x:o.x-e.x,y:o.y-e.y},d={x:-i.y,y:i.x};n.push(d)}return n},projectRectangle=(t,n)=>{let r=dotProduct(t[0],n),e=r;for(const o of t){const i=dotProduct(o,n);i<r&&(r=i),i>e&&(e=i)}return{min:r,max:e}},projectionsOverlap=(t,n)=>!(t.max<n.min||n.max<t.min),dotProduct=(t,n)=>t.x*n.x+t.y*n.y,getIntersectingBoxIds=(t,n)=>{const r=[];return n.forEach(e=>{const{polygonPointList:o}=lbAnnotation.getCuboidFromPointCloudBox(e);checkRectanglesIntersect(t,o)&&r.push(e.id)}),r},getAddBoxId=(t,n)=>{const r=t.map(o=>o.id),e=n.map(o=>o.id);return r.find(o=>!e.includes(o))||""},getDeletedBox=(t,n)=>{const r=t.map(e=>e.id);return n.find(e=>!r.includes(e.id))},getValidChangedBox=(t,n)=>t.find(e=>{const o=n.find(i=>i.id===e.id);return o&&o.valid!==e.valid}),getRotationChangedBox=(t,n)=>t.find(e=>{const o=n.find(i=>i.id===e.id);return o&&o.rotation!==e.rotation}),getIntersectingBoxIdsOfBox=(t,n)=>{const{polygonPointList:r}=lbAnnotation.getCuboidFromPointCloudBox(t);return{ids:getIntersectingBoxIds(r,n.filter(o=>o.id!==t.id)),rect:r}},getModifiedBox=(t,n)=>{const r=(e,o)=>e.attribute===o.attribute&&e.center.x===o.center.x&&e.center.y===o.center.y&&e.depth===o.depth&&e.width===o.width&&e.height===o.height;for(const e of t){const o=n.find(i=>i.id===e.id);if(o&&!r(e,o)){let i;if(o.attribute!==e.attribute?i=exports.EPointCloudBoxSingleModifiedType.ChangeAttribute:o.center.x!==e.center.x||o.center.y!==e.center.y?i=exports.EPointCloudBoxSingleModifiedType.Move:o.depth!==e.depth?i=exports.EPointCloudBoxSingleModifiedType.ChangeDepth:(o.width!==e.width||o.height!==e.height)&&(i=exports.EPointCloudBoxSingleModifiedType.ChangeSize),i!==void 0)return{modifiedType:i,box:e}}}},calcResetAreasAndBoxIds=(t,n,r)=>{try{switch(t){case exports.EPointCloudBoxRenderTrigger.Single:if(n.length>r.length){const e=getAddBoxId(n,r);return e?{modifiedBoxIds:[e],resetAreas:[]}:{modifiedBoxIds:[],resetAreas:[]}}else{const e=[],o=[],i=getModifiedBox(n,r);if(i&&(e.push(i.box.id),i.modifiedType===exports.EPointCloudBoxSingleModifiedType.ChangeSize||i.modifiedType===exports.EPointCloudBoxSingleModifiedType.Move)){const d=r.find(l=>l.id===i.box.id),{ids:s,rect:c}=getIntersectingBoxIdsOfBox(d,n);e.push(...s),o.push(c)}return{modifiedBoxIds:e,resetAreas:o}}case exports.EPointCloudBoxRenderTrigger.SingleDelete:if(n.length<r.length){const e=getDeletedBox(n,r);if(e){const i=[lbAnnotation.getCuboidFromPointCloudBox(e).polygonPointList],d=[];if(n.length>1){const{ids:s}=getIntersectingBoxIdsOfBox(e,n);s.length&&d.push(...s)}return{modifiedBoxIds:d,resetAreas:i}}return{modifiedBoxIds:[],resetAreas:[]}}return{modifiedBoxIds:[],resetAreas:[]};case exports.EPointCloudBoxRenderTrigger.SingleRotate:if(getRotationChangedBox(n,r)){const e=getRotationChangedBox(n,r);if(e){const o=r.find(s=>s.id===e.id),{ids:i,rect:d}=getIntersectingBoxIdsOfBox(o,n);return{modifiedBoxIds:[e.id,...i],resetAreas:[d]}}}return{modifiedBoxIds:[],resetAreas:[]};case exports.EPointCloudBoxRenderTrigger.SingleToggleValid:if(getValidChangedBox(n,r)){const e=getValidChangedBox(n,r);return e?{modifiedBoxIds:[e.id],resetAreas:[]}:{modifiedBoxIds:[],resetAreas:[]}}return{modifiedBoxIds:[],resetAreas:[]};case exports.EPointCloudBoxRenderTrigger.MulitSelect:return{modifiedBoxIds:getDifference(n,r),resetAreas:[]};case exports.EPointCloudBoxRenderTrigger.MultiPaste:case exports.EPointCloudBoxRenderTrigger.MultiMove:case exports.EPointCloudBoxRenderTrigger.Default:case exports.EPointCloudBoxRenderTrigger.UndoRedo:case exports.EPointCloudBoxRenderTrigger.ClearAll:default:return{modifiedBoxIds:[],resetAreas:[]}}}catch(e){return console.error("calcResetAreasAndBoxIds error:",e),{modifiedBoxIds:[],resetAreas:[]}}},getDifference=(t,n)=>{const r=new Map;for(const e of n)r.set(e.id,e);return t.filter(e=>{const o=r.get(e.id);return!o||!_.isEqual(e,o)}).map(e=>e.id)};exports.calcResetAreasAndBoxIds=calcResetAreasAndBoxIds;
@@ -1 +1 @@
1
- import{useLatest as oe,useMemoizedFn as H}from"ahooks";import{Spin as he}from"antd/es";import J,{useContext as Ie,useRef as $,useState as S,useMemo as _e,useCallback as De,useEffect as p}from"react";import{connect as be}from"react-redux";import{usePointCloudViews as Ce}from"../pointCloudView/hooks/usePointCloudViews.js";import{PointCloudContext as we}from"../pointCloudView/PointCloudContext.js";import{a2MapStateToProps as ye}from"../../store/annotation/map.js";import{LabelBeeContext as xe}from"../../store/ctx.js";import{PointCloud2DRectOperation as Pe,MathUtils as Se,ImgUtils as Le}from"@labelbee/lb-annotation";import{selectSpecifiedRectsFromTopViewSelectedIds as Oe}from"./util.js";import{useUpdateRectList as Ve}from"./useUpdateRectList.js";import je from"lodash";import{useToolStyleContext as Ee}from"../../hooks/useToolStyle.js";import ke from"../../store/toolConfig/index.js";var Be=Object.defineProperty,Ne=Object.defineProperties,Ue=Object.getOwnPropertyDescriptors,ie=Object.getOwnPropertySymbols,Me=Object.prototype.hasOwnProperty,ze=Object.prototype.propertyIsEnumerable,le=(u,c,s)=>c in u?Be(u,c,{enumerable:!0,configurable:!0,writable:!0,value:s}):u[c]=s,v=(u,c)=>{for(var s in c||(c={}))Me.call(c,s)&&le(u,s,c[s]);if(ie)for(var s of ie(c))ze.call(c,s)&&le(u,s,c[s]);return u},C=(u,c)=>Ne(u,Ue(c)),G=(u,c,s)=>new Promise((a,g)=>{var D=f=>{try{b(s.next(f))}catch(R){g(R)}},L=f=>{try{b(s.throw(f))}catch(R){g(R)}},b=f=>f.done?a(f.value):Promise.resolve(f.value).then(D,L);b((s=s.apply(u,c)).next())});const Ae=u=>{var c,s;const{mappingData:a,size:g,config:D,checkMode:L,afterImgOnLoad:b,shouldExcludePointCloudBoxListUpdate:f}=u,{selectBoxVisibleSwitch:R}=ke(),O=(c=a==null?void 0:a.url)!=null?c:"",w=(s=a==null?void 0:a.fallbackUrl)!=null?s:"",{pointCloudBoxList:V,setPointCloudResult:j,defaultAttribute:E,rectList:k,addRectIn2DView:ce,updateRectIn2DView:se,removeRectIn2DView:ue,updateRectListByReducer:de,selectedIDs:m,setSelectedIDs:B,selectedID:N}=Ie(we),{value:U}=Ee(),ae=oe(m),{update2DViewRect:fe,remove2DViewRect:pe}=Ce(),M=J.useRef(null),o=$(null),K=H(fe),y=H(pe),x=$(null),[me,Q]=S(!0),[W,X]=S(""),[ve,z]=S(!1),[ge,A]=S(!0),h=_e(()=>k==null?void 0:k.filter(e=>e.imageName===(a==null?void 0:a.path)),[a==null?void 0:a.path,k]),Y=$(h),P=oe(a==null?void 0:a.path),T=De(e=>G(void 0,null,function*(){try{const n=ae.current.slice(0),r=yield Promise.resolve(e());if(!r||r.length===0)return r;if(n.length){const t=new Set(n),i=r.filter(l=>t.has(l.id)).map(l=>l.id);B(i)}return r}catch(n){}}),[B]),Z=e=>{const{boxID:n}=e;if(!f&&n){T(()=>{const r=K==null?void 0:K(e);return r?(x.current=r,j(r),r):null});return}se(e,!0)},ee=e=>{P.current&&ce(C(v({},e),{imageName:P.current}))},te=e=>{if(e.length===0)return;if(!f){const r=e.find(t=>t.boxID);if(r){T(()=>{const t=y==null?void 0:y(r);return t?(x.current=t,j(t),I(),t):null});return}}const n=e.find(r=>r.extId);n&&T(()=>{const{imageName:r,extId:t}=n,i=y==null?void 0:y({boxID:t,imageName:r});return i?(x.current=i,j(i),i):null}),ue(e)},Re=H(()=>{let e=[];return V.forEach(n=>{const{rects:r=[],id:t,attribute:i,trackID:l}=n,d=r.find(F=>F.imageName===P.current),_=t+"_"+P.current;d&&(e=[...e,C(v({},d),{boxID:t,id:_,attribute:i,order:l})])}),e}),I=Ve(()=>{var e,n,r,t,i;const l=f?[]:Re(),d=(e=o.current)==null?void 0:e.selectedRectID,_=m.slice(0),F=R?Oe(_,l,h):[...l,...h];let ne=[];!R&&(m==null?void 0:m.length)&&(ne=l.filter(q=>d?m.includes(q.boxID)&&!d.includes(q.boxID):m.includes(q.boxID))),(n=o.current)==null||n.setHighLightRectList(ne),(r=o.current)==null||r.setResult(F),W?((t=o.current)==null||t.setSelectedRectID(W),X("")):ve&&d&&((i=o.current)==null||i.setSelectedRectID(d),z(!1))}),re=({targetId:e,id:n})=>{A(!1),B(e),X(n)};return p(()=>{if(M.current){const e=new Pe({container:M.current,size:g,config:C(v({},D),{isShowOrder:!0,attributeConfigurable:!0}),checkMode:L});return o.current=e,o.current.init(),o.current.on("updateDragResult",Z),o.current.on("afterAddingDrawingRect",ee),o.current.on("deleteSelectedRects",te),o.current.on("onRightClick",re),()=>{var n,r,t,i,l;(n=o.current)==null||n.unbind("updateDragResult",Z),(r=o.current)==null||r.unbind("afterAddingDrawingRect",ee),(t=o.current)==null||t.unbind("deleteSelectedRects",te),(i=o.current)==null||i.unbind("onRightClick",re),(l=o.current)==null||l.destroy()}}},[]),p(()=>{const e=r=>G(void 0,null,function*(){try{return yield Le.load(r)}catch(t){return console.error("Error loading image:",t),null}}),n=()=>G(void 0,null,function*(){var r;Q(!0);let t=yield e(O);!t&&w&&(t=yield e(w)),t&&((r=o.current)==null||r.setImgNode(t),b(t)),Q(!1)});o.current&&(O||w)&&n()},[O,w]),p(()=>{var e;(e=o.current)==null||e.setSize(g)},[g]),p(()=>{V!==x.current&&I()},[V]),p(()=>{var e,n;const r=h.find(t=>t.id===o.current.selectedRectID);(n=(e=o.current)==null?void 0:e.setDefaultAttribute)==null||n.call(e,E),r&&de(t=>{var i;const l=[];let d=null;return t.forEach(_=>{_.id!==o.current.selectedRectID?l.push(_):d=_}),r.extId===void 0&&(d=(i=o.current)==null?void 0:i.selectedRect),[...l,C(v({},d||{}),{attribute:E})]}),z(!0),I()},[E]),p(()=>{const e=Y.current;je.isEqual(e,h)||(z(!0),I(),Y.current=h)},[h]),p(()=>{I()},[f]),p(()=>{var e,n,r,t;const i=(n=(e=o.current)==null?void 0:e.config)!=null?n:{},l=C(v({},i),{attributeList:(r=D.attributeList)!=null?r:[]});(t=o.current)==null||t.setConfig(JSON.stringify(l))},[D.attributeList]),p(()=>{var e;(e=o.current)==null||e.setEnableAddRect(m.length===0),I()},[m]),p(()=>{if(!N||!ge){A(!0);return}const{rectList:e,size:n,zoom:r}=o.current,t=e.find(d=>d.boxID===N);if(!t){A(!0);return}const i={x:t.x+t.width/2,y:t.y+t.height/2},l=Se.getCurrentPosFromRectCenter(n,i,r);o.current.setCurrentPos(l),o.current.renderBasicCanvas(),o.current.render()},[N]),p(()=>{const{hiddenText:e}=U||{};if(e===void 0)return;const n=o.current;if(!n)return;const r=v(v({},n.style),U);n.setStyle(r)},[U]),p(()=>{I()},[R]),J.createElement(he,{spinning:me},J.createElement("div",{ref:M,style:v({position:"relative"},g)}))};var Te=be(ye,null,null,{context:xe})(Ae);export{Te as default};
1
+ import{useLatest as oe,useMemoizedFn as q}from"ahooks";import{Spin as he}from"antd/es";import J,{useContext as Ie,useRef as $,useState as L,useMemo as _e,useCallback as De,useEffect as p}from"react";import{connect as be}from"react-redux";import{usePointCloudViews as Ce}from"../pointCloudView/hooks/usePointCloudViews.js";import{PointCloudContext as we}from"../pointCloudView/PointCloudContext.js";import{a2MapStateToProps as xe}from"../../store/annotation/map.js";import{LabelBeeContext as ye}from"../../store/ctx.js";import{PointCloud2DRectOperation as Pe,MathUtils as Se,ImgUtils as Le}from"@labelbee/lb-annotation";import{selectSpecifiedRectsFromTopViewSelectedIds as Oe}from"./util.js";import{useUpdateRectList as Ve}from"./useUpdateRectList.js";import je from"lodash";import{useToolStyleContext as Ee}from"../../hooks/useToolStyle.js";import ke from"../../store/toolConfig/index.js";var Be=Object.defineProperty,Ne=Object.defineProperties,Ue=Object.getOwnPropertyDescriptors,ie=Object.getOwnPropertySymbols,Me=Object.prototype.hasOwnProperty,ze=Object.prototype.propertyIsEnumerable,le=(d,c,s)=>c in d?Be(d,c,{enumerable:!0,configurable:!0,writable:!0,value:s}):d[c]=s,v=(d,c)=>{for(var s in c||(c={}))Me.call(c,s)&&le(d,s,c[s]);if(ie)for(var s of ie(c))ze.call(c,s)&&le(d,s,c[s]);return d},C=(d,c)=>Ne(d,Ue(c)),G=(d,c,s)=>new Promise((a,g)=>{var D=f=>{try{b(s.next(f))}catch(R){g(R)}},O=f=>{try{b(s.throw(f))}catch(R){g(R)}},b=f=>f.done?a(f.value):Promise.resolve(f.value).then(D,O);b((s=s.apply(d,c)).next())});const Ae=d=>{var c,s;const{mappingData:a,size:g,config:D,checkMode:O,afterImgOnLoad:b,shouldExcludePointCloudBoxListUpdate:f}=d,{selectBoxVisibleSwitch:R}=ke(),V=(c=a==null?void 0:a.url)!=null?c:"",w=(s=a==null?void 0:a.fallbackUrl)!=null?s:"",{pointCloudBoxList:j,setPointCloudResult:E,defaultAttribute:k,rectList:B,addRectIn2DView:ce,updateRectIn2DView:se,removeRectIn2DView:ue,updateRectListByReducer:de,selectedIDs:m,setSelectedIDs:N,selectedID:x}=Ie(we),{value:U}=Ee(),ae=oe(m),{update2DViewRect:fe,remove2DViewRect:pe}=Ce(),M=J.useRef(null),n=$(null),K=q(fe),y=q(pe),P=$(null),[me,Q]=L(!0),[W,X]=L(""),[ve,z]=L(!1),[ge,A]=L(!0),h=_e(()=>B==null?void 0:B.filter(e=>e.imageName===(a==null?void 0:a.path)),[a==null?void 0:a.path,B]),Y=$(h),S=oe(a==null?void 0:a.path),T=De(e=>G(void 0,null,function*(){try{const o=ae.current.slice(0),r=yield Promise.resolve(e());if(!r||r.length===0)return r;if(o.length){const t=new Set(o),i=r.filter(l=>t.has(l.id)).map(l=>l.id);N(i)}return r}catch(o){}}),[N]),Z=e=>{const{boxID:o}=e;if(!f&&o){T(()=>{const r=K==null?void 0:K(e);return r?(P.current=r,E(r),r):null});return}se(e,!0)},ee=e=>{S.current&&ce(C(v({},e),{imageName:S.current}))},te=e=>{if(e.length===0)return;if(!f){const r=e.find(t=>t.boxID);if(r){T(()=>{const t=y==null?void 0:y(r);return t?(P.current=t,E(t),I(),t):null});return}}const o=e.find(r=>r.extId);o&&T(()=>{const{imageName:r,extId:t}=o,i=y==null?void 0:y({boxID:t,imageName:r});return i?(P.current=i,E(i),i):null}),ue(e)},Re=q(()=>{let e=[];return j.forEach(o=>{const{rects:r=[],id:t,attribute:i,trackID:l}=o,u=r.find(F=>F.imageName===S.current),_=t+"_"+S.current;u&&(e=[...e,C(v({},u),{boxID:t,id:_,attribute:i,order:l})])}),e}),I=Ve(()=>{var e,o,r,t,i;const l=f?[]:Re(),u=(e=n.current)==null?void 0:e.selectedRectID,_=m.slice(0),F=R?Oe(_,l,h):[...l,...h];let ne=[];!R&&(m==null?void 0:m.length)&&(ne=l.filter(H=>u?m.includes(H.boxID)&&!u.includes(H.boxID):m.includes(H.boxID))),(o=n.current)==null||o.setHighLightRectList(ne),(r=n.current)==null||r.setResult(F),W?((t=n.current)==null||t.setSelectedRectID(W),X("")):ve&&u&&((i=n.current)==null||i.setSelectedRectID(u),z(!1))}),re=({targetId:e,id:o})=>{A(!1),N(e),X(o)};return p(()=>{if(M.current){const e=new Pe({container:M.current,size:g,config:C(v({},D),{isShowOrder:!0,attributeConfigurable:!0}),checkMode:O});return n.current=e,n.current.init(),n.current.on("updateDragResult",Z),n.current.on("afterAddingDrawingRect",ee),n.current.on("deleteSelectedRects",te),n.current.on("onRightClick",re),()=>{var o,r,t,i,l;(o=n.current)==null||o.unbind("updateDragResult",Z),(r=n.current)==null||r.unbind("afterAddingDrawingRect",ee),(t=n.current)==null||t.unbind("deleteSelectedRects",te),(i=n.current)==null||i.unbind("onRightClick",re),(l=n.current)==null||l.destroy()}}},[]),p(()=>{const e=r=>G(void 0,null,function*(){try{return yield Le.load(r)}catch(t){return console.error("Error loading image:",t),null}}),o=()=>G(void 0,null,function*(){var r;Q(!0);let t=yield e(V);!t&&w&&(t=yield e(w)),t&&((r=n.current)==null||r.setImgNode(t),b(t)),Q(!1)});n.current&&(V||w)&&o()},[V,w]),p(()=>{var e;(e=n.current)==null||e.setSize(g)},[g]),p(()=>{j!==P.current&&I()},[j]),p(()=>{var e,o;const r=h.find(t=>t.id===n.current.selectedRectID);(o=(e=n.current)==null?void 0:e.setDefaultAttribute)==null||o.call(e,k),r&&de(t=>{var i;const l=[];let u=null;return t.forEach(_=>{_.id!==n.current.selectedRectID?l.push(_):u=_}),r.extId===void 0&&(u=(i=n.current)==null?void 0:i.selectedRect),[...l,C(v({},u||{}),{attribute:k})]}),z(!0),I()},[k]),p(()=>{const e=Y.current;je.isEqual(e,h)||(z(!0),I(),Y.current=h)},[h]),p(()=>{I()},[f]),p(()=>{var e,o,r,t;const i=(o=(e=n.current)==null?void 0:e.config)!=null?o:{},l=C(v({},i),{attributeList:(r=D.attributeList)!=null?r:[]});(t=n.current)==null||t.setConfig(JSON.stringify(l))},[D.attributeList]),p(()=>{var e;(e=n.current)==null||e.setEnableAddRect(m.length===0),I()},[m]),p(()=>{if(!x||!ge){A(!0);return}const{rectList:e,size:o,zoom:r}=n.current,t=e.find(u=>u.boxID===x||u.extId===x);if(!t){A(!0);return}const i={x:t.x+t.width/2,y:t.y+t.height/2},l=Se.getCurrentPosFromRectCenter(o,i,r);n.current.setHoverRectID(t.id),n.current.setCurrentPos(l),n.current.renderBasicCanvas(),n.current.render()},[x]),p(()=>{const{hiddenText:e}=U||{};if(e===void 0)return;const o=n.current;if(!o)return;const r=v(v({},o.style),U);o.setStyle(r)},[U]),p(()=>{I()},[R]),J.createElement(he,{spinning:me},J.createElement("div",{ref:M,style:v({position:"relative"},g)}))};var Te=be(xe,null,null,{context:ye})(Ae);export{Te as default};
@@ -1 +1 @@
1
- import{getCuboidFromPointCloudBox as l}from"@labelbee/lb-annotation";var i;(function(t){t.Default="Default",t.UndoRedo="UndoRedo",t.ClearAll="ClearAll",t.Single="Single",t.SingleDelete="SingleDelete",t.SingleToggleValid="SingleToggleValid",t.SingleRotate="SingleRotate",t.MultiPaste="MultiPaste",t.MultiMove="MultiMove",t.MulitSelect="MulitSelect"})(i||(i={}));var d;(function(t){t.ChangeAttribute="ChangeAttribute",t.Move="Move",t.ChangeDepth="ChangeDepth",t.ChangeSize="ChangeSize",t.ToggleValid="ToggleValid"})(d||(d={}));const A=(t,n)=>{const o=u(t).concat(u(n));for(const e of o){const s=g(t,e),r=g(n,e);if(!y(s,r))return!1}return!0},u=t=>{const n=[];for(let o=0;o<t.length;o++){const e=t[o],s=t[(o+1)%t.length],r={x:s.x-e.x,y:s.y-e.y},c={x:-r.y,y:r.x};n.push(c)}return n},g=(t,n)=>{let o=h(t[0],n),e=o;for(const s of t){const r=h(s,n);r<o&&(o=r),r>e&&(e=r)}return{min:o,max:e}},y=(t,n)=>!(t.max<n.min||n.max<t.min),h=(t,n)=>t.x*n.x+t.y*n.y,M=(t,n)=>{const o=[];return n.forEach(e=>{const{polygonPointList:s}=l(e);A(t,s)&&o.push(e.id)}),o},S=(t,n)=>{const o=t.map(s=>s.id),e=n.map(s=>s.id);return o.find(s=>!e.includes(s))||""},v=(t,n)=>{const o=t.map(e=>e.id);return n.find(e=>!o.includes(e.id))},x=(t,n)=>t.find(e=>{const s=n.find(r=>r.id===e.id);return s&&s.valid!==e.valid}),B=(t,n)=>t.find(e=>{const s=n.find(r=>r.id===e.id);return s&&s.rotation!==e.rotation}),f=(t,n)=>{const{polygonPointList:o}=l(t);return{ids:M(o,n.filter(s=>s.id!==t.id)),rect:o}},D=(t,n)=>{const o=(e,s)=>e.attribute===s.attribute&&e.center.x===s.center.x&&e.center.y===s.center.y&&e.depth===s.depth&&e.width===s.width&&e.height===s.height;for(const e of t){const s=n.find(r=>r.id===e.id);if(s&&!o(e,s)){let r;if(s.attribute!==e.attribute?r=d.ChangeAttribute:s.center.x!==e.center.x||s.center.y!==e.center.y?r=d.Move:s.depth!==e.depth?r=d.ChangeDepth:(s.width!==e.width||s.height!==e.height)&&(r=d.ChangeSize),r!==void 0)return{modifiedType:r,box:e}}}},C=(t,n,o)=>{try{switch(t){case i.Single:if(n.length>o.length){const e=S(n,o);return e?{modifiedBoxIds:[e],resetAreas:[]}:{modifiedBoxIds:[],resetAreas:[]}}else{const e=[],s=[],r=D(n,o);if(r&&(e.push(r.box.id),r.modifiedType===d.ChangeSize||r.modifiedType===d.Move)){const c=o.find(I=>I.id===r.box.id),{ids:a,rect:m}=f(c,n);e.push(...a),s.push(m)}return{modifiedBoxIds:e,resetAreas:s}}case i.SingleDelete:if(n.length<o.length){const e=v(n,o);if(e){const r=[l(e).polygonPointList],c=[];if(n.length>1){const{ids:a}=f(e,n);a.length&&c.push(...a)}return{modifiedBoxIds:c,resetAreas:r}}return{modifiedBoxIds:[],resetAreas:[]}}return{modifiedBoxIds:[],resetAreas:[]};case i.SingleRotate:if(B(n,o)){const e=B(n,o);if(e){const s=o.find(a=>a.id===e.id),{ids:r,rect:c}=f(s,n);return{modifiedBoxIds:[e.id,...r],resetAreas:[c]}}}return{modifiedBoxIds:[],resetAreas:[]};case i.SingleToggleValid:if(x(n,o)){const e=x(n,o);return e?{modifiedBoxIds:[e.id],resetAreas:[]}:{modifiedBoxIds:[],resetAreas:[]}}return{modifiedBoxIds:[],resetAreas:[]};case i.MulitSelect:return{modifiedBoxIds:k(n,o),resetAreas:[]};case i.MultiPaste:case i.MultiMove:case i.Default:case i.UndoRedo:case i.ClearAll:default:return{modifiedBoxIds:[],resetAreas:[]}}}catch(e){return console.error("calcResetAreasAndBoxIds error:",e),{modifiedBoxIds:[],resetAreas:[]}}},p=(t,n)=>{if(t===n)return!0;if(typeof t!="object"||typeof n!="object"||t===null||n===null)return!1;const o=Object.keys(t),e=Object.keys(n);if(o.length!==e.length)return!1;for(const s of o)if(!p(t[s],n[s]))return!1;return!0},k=(t,n)=>{const o=new Map;for(const e of n)o.set(e.id,e);return t.filter(e=>{const s=o.get(e.id);return!s||!p(e,s)}).map(e=>e.id)};export{i as EPointCloudBoxRenderTrigger,d as EPointCloudBoxSingleModifiedType,C as calcResetAreasAndBoxIds};
1
+ import{getCuboidFromPointCloudBox as l}from"@labelbee/lb-annotation";import{isEqual as p}from"lodash";var i;(function(t){t.Default="Default",t.UndoRedo="UndoRedo",t.ClearAll="ClearAll",t.Single="Single",t.SingleDelete="SingleDelete",t.SingleToggleValid="SingleToggleValid",t.SingleRotate="SingleRotate",t.MultiPaste="MultiPaste",t.MultiMove="MultiMove",t.MulitSelect="MulitSelect"})(i||(i={}));var d;(function(t){t.ChangeAttribute="ChangeAttribute",t.Move="Move",t.ChangeDepth="ChangeDepth",t.ChangeSize="ChangeSize",t.ToggleValid="ToggleValid"})(d||(d={}));const A=(t,o)=>{const s=u(t).concat(u(o));for(const e of s){const n=g(t,e),r=g(o,e);if(!M(n,r))return!1}return!0},u=t=>{const o=[];for(let s=0;s<t.length;s++){const e=t[s],n=t[(s+1)%t.length],r={x:n.x-e.x,y:n.y-e.y},c={x:-r.y,y:r.x};o.push(c)}return o},g=(t,o)=>{let s=h(t[0],o),e=s;for(const n of t){const r=h(n,o);r<s&&(s=r),r>e&&(e=r)}return{min:s,max:e}},M=(t,o)=>!(t.max<o.min||o.max<t.min),h=(t,o)=>t.x*o.x+t.y*o.y,S=(t,o)=>{const s=[];return o.forEach(e=>{const{polygonPointList:n}=l(e);A(t,n)&&s.push(e.id)}),s},y=(t,o)=>{const s=t.map(n=>n.id),e=o.map(n=>n.id);return s.find(n=>!e.includes(n))||""},v=(t,o)=>{const s=t.map(e=>e.id);return o.find(e=>!s.includes(e.id))},x=(t,o)=>t.find(e=>{const n=o.find(r=>r.id===e.id);return n&&n.valid!==e.valid}),B=(t,o)=>t.find(e=>{const n=o.find(r=>r.id===e.id);return n&&n.rotation!==e.rotation}),f=(t,o)=>{const{polygonPointList:s}=l(t);return{ids:S(s,o.filter(n=>n.id!==t.id)),rect:s}},D=(t,o)=>{const s=(e,n)=>e.attribute===n.attribute&&e.center.x===n.center.x&&e.center.y===n.center.y&&e.depth===n.depth&&e.width===n.width&&e.height===n.height;for(const e of t){const n=o.find(r=>r.id===e.id);if(n&&!s(e,n)){let r;if(n.attribute!==e.attribute?r=d.ChangeAttribute:n.center.x!==e.center.x||n.center.y!==e.center.y?r=d.Move:n.depth!==e.depth?r=d.ChangeDepth:(n.width!==e.width||n.height!==e.height)&&(r=d.ChangeSize),r!==void 0)return{modifiedType:r,box:e}}}},C=(t,o,s)=>{try{switch(t){case i.Single:if(o.length>s.length){const e=y(o,s);return e?{modifiedBoxIds:[e],resetAreas:[]}:{modifiedBoxIds:[],resetAreas:[]}}else{const e=[],n=[],r=D(o,s);if(r&&(e.push(r.box.id),r.modifiedType===d.ChangeSize||r.modifiedType===d.Move)){const c=s.find(I=>I.id===r.box.id),{ids:a,rect:m}=f(c,o);e.push(...a),n.push(m)}return{modifiedBoxIds:e,resetAreas:n}}case i.SingleDelete:if(o.length<s.length){const e=v(o,s);if(e){const r=[l(e).polygonPointList],c=[];if(o.length>1){const{ids:a}=f(e,o);a.length&&c.push(...a)}return{modifiedBoxIds:c,resetAreas:r}}return{modifiedBoxIds:[],resetAreas:[]}}return{modifiedBoxIds:[],resetAreas:[]};case i.SingleRotate:if(B(o,s)){const e=B(o,s);if(e){const n=s.find(a=>a.id===e.id),{ids:r,rect:c}=f(n,o);return{modifiedBoxIds:[e.id,...r],resetAreas:[c]}}}return{modifiedBoxIds:[],resetAreas:[]};case i.SingleToggleValid:if(x(o,s)){const e=x(o,s);return e?{modifiedBoxIds:[e.id],resetAreas:[]}:{modifiedBoxIds:[],resetAreas:[]}}return{modifiedBoxIds:[],resetAreas:[]};case i.MulitSelect:return{modifiedBoxIds:V(o,s),resetAreas:[]};case i.MultiPaste:case i.MultiMove:case i.Default:case i.UndoRedo:case i.ClearAll:default:return{modifiedBoxIds:[],resetAreas:[]}}}catch(e){return console.error("calcResetAreasAndBoxIds error:",e),{modifiedBoxIds:[],resetAreas:[]}}},V=(t,o)=>{const s=new Map;for(const e of o)s.set(e.id,e);return t.filter(e=>{const n=s.get(e.id);return!n||!p(e,n)}).map(e=>e.id)};export{i as EPointCloudBoxRenderTrigger,d as EPointCloudBoxSingleModifiedType,C as calcResetAreasAndBoxIds};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@labelbee/lb-components",
3
- "version": "1.23.0-alpha.134",
3
+ "version": "1.23.0-alpha.136",
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.27.0-alpha.65",
47
- "@labelbee/lb-utils": "1.19.0-alpha.25",
46
+ "@labelbee/lb-annotation": "1.27.0-alpha.67",
47
+ "@labelbee/lb-utils": "1.19.0-alpha.26",
48
48
  "@labelbee/wavesurfer": "1.1.0-alpha.1",
49
49
  "@types/react-dom": "^18.2.7",
50
50
  "@types/react-transition-group": "^4.4.9",