@labelbee/lb-components 1.23.0-alpha.6 → 1.23.0-alpha.60

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.
Files changed (180) hide show
  1. package/dist/App.js +1 -1
  2. package/dist/assets/annotation/icon_link.svg.js +1 -0
  3. package/dist/assets/annotation/icon_unlink.svg.js +1 -0
  4. package/dist/assets/annotation/pointCloudTool/Image2DBoxScale.svg.js +1 -0
  5. package/dist/assets/annotation/pointCloudTool/leftArrow.svg.js +1 -1
  6. package/dist/assets/annotation/pointCloudTool/rightArrow.svg.js +1 -1
  7. package/dist/assets/annotation/pointCloudTool/rotate90_black.svg.js +1 -0
  8. package/dist/assets/icons/ad33251.svg +26 -0
  9. package/dist/components/AnnotationView/index.js +1 -1
  10. package/dist/components/LLMToolView/index.js +1 -1
  11. package/dist/components/LLMToolView/questionView/components/header/index.js +1 -1
  12. package/dist/components/LLMToolView/sidebar/components/textEditor/index.js +2 -2
  13. package/dist/components/LLMToolView/sidebar/components/textEditor/index.module.scss.js +1 -1
  14. package/dist/components/LLMToolView/sidebar/components/textInputBox/index.js +2 -2
  15. package/dist/components/LLMToolView/sidebar/index.js +1 -1
  16. package/dist/components/LLMToolView/utils/data.js +1 -1
  17. package/dist/components/NLPToolView/index.js +1 -1
  18. package/dist/components/NLPToolView/textContent/index.js +1 -1
  19. package/dist/components/audioAnnotate/audioContext/index.js +1 -1
  20. package/dist/components/audioAnnotate/audioSide/clipSidebar/index.js +1 -1
  21. package/dist/components/audioAnnotate/index.js +1 -1
  22. package/dist/components/audioAnnotate/textInput/index.js +1 -1
  23. package/dist/components/audioAnnotate/textInput/index.module.scss.js +1 -1
  24. package/dist/components/audioAnnotate/utils/dataTransform.js +1 -0
  25. package/dist/components/audioPlayer/clipRegion/index.js +1 -1
  26. package/dist/components/audioPlayer/index.js +1 -1
  27. package/dist/components/audioPlayer/useAudioCombine/index.js +3 -2
  28. package/dist/components/audioPlayer/useAudioSegment/index.js +1 -1
  29. package/dist/components/longText/index.js +1 -1
  30. package/dist/components/pointCloud2DRectOperationView/index.js +1 -1
  31. package/dist/components/pointCloudView/PointCloud2DSingleView.js +1 -1
  32. package/dist/components/pointCloudView/PointCloud2DView.js +1 -1
  33. package/dist/components/pointCloudView/PointCloud3DView.js +1 -1
  34. package/dist/components/pointCloudView/PointCloudContext.js +1 -1
  35. package/dist/components/pointCloudView/PointCloudListener.js +1 -1
  36. package/dist/components/pointCloudView/PointCloudSegment2DView.js +1 -1
  37. package/dist/components/pointCloudView/PointCloudTopView.js +1 -1
  38. package/dist/components/pointCloudView/hooks/useBoxes.js +1 -1
  39. package/dist/components/pointCloudView/hooks/useDataLinkSwitch.js +1 -0
  40. package/dist/components/pointCloudView/hooks/useHighlight.js +1 -1
  41. package/dist/components/pointCloudView/hooks/useHistory.js +1 -1
  42. package/dist/components/pointCloudView/hooks/usePointCloudViews.js +1 -1
  43. package/dist/components/pointCloudView/hooks/usePolygon.js +1 -1
  44. package/dist/components/pointCloudView/hooks/useRotate.js +1 -1
  45. package/dist/components/pointCloudView/hooks/useRotateEdge.js +1 -0
  46. package/dist/components/pointCloudView/hooks/useSingleBox.js +1 -1
  47. package/dist/components/pointCloudView/hooks/useStatus.js +1 -1
  48. package/dist/components/pointCloudView/index.js +1 -1
  49. package/dist/components/pointCloudView/utils/map.js +1 -0
  50. package/dist/components/subAttributeList/index.js +1 -0
  51. package/dist/components/videoAnnotate/videoClipTool/index.js +1 -1
  52. package/dist/components/videoAnnotate/videoTagTool/TagToolInstanceAdaptor.js +1 -1
  53. package/dist/index.css +59 -17
  54. package/dist/index.js +1 -1
  55. package/dist/store/Actions.js +1 -1
  56. package/dist/store/annotatedBox/index.js +1 -1
  57. package/dist/store/annotation/actionCreators.js +1 -1
  58. package/dist/store/annotation/reducer.js +1 -1
  59. package/dist/types/App.d.ts +3 -1
  60. package/dist/types/components/AnnotationView/index.d.ts +1 -0
  61. package/dist/types/components/LLMToolView/utils/data.d.ts +1 -1
  62. package/dist/types/components/audioAnnotate/audioContext/index.d.ts +10 -2
  63. package/dist/types/components/audioAnnotate/textInput/index.d.ts +1 -0
  64. package/dist/types/components/audioAnnotate/utils/dataTransform.d.ts +9 -0
  65. package/dist/types/components/audioPlayer/index.d.ts +28 -21
  66. package/dist/types/components/longText/index.d.ts +1 -0
  67. package/dist/types/components/pointCloud2DRectOperationView/index.d.ts +1 -0
  68. package/dist/types/components/pointCloudView/PointCloud2DView.d.ts +2 -1
  69. package/dist/types/components/pointCloudView/PointCloudContext.d.ts +24 -4
  70. package/dist/types/components/pointCloudView/hooks/useDataLinkSwitch.d.ts +21 -0
  71. package/dist/types/components/pointCloudView/hooks/useHighlight.d.ts +1 -1
  72. package/dist/types/components/pointCloudView/hooks/usePointCloudViews.d.ts +5 -0
  73. package/dist/types/components/pointCloudView/hooks/useRotateEdge.d.ts +9 -0
  74. package/dist/types/components/pointCloudView/hooks/useSingleBox.d.ts +3 -2
  75. package/dist/types/components/pointCloudView/utils/map.d.ts +11 -0
  76. package/dist/types/components/subAttributeList/index.d.ts +10 -0
  77. package/dist/types/components/videoAnnotate/index.d.ts +2 -1
  78. package/dist/types/components/videoAnnotate/videoClipTool/index.d.ts +2 -1
  79. package/dist/types/components/videoAnnotate/videoTagTool/TagToolInstanceAdaptor.d.ts +1 -1
  80. package/dist/types/index.d.ts +6 -1
  81. package/dist/types/store/Actions.d.ts +1 -0
  82. package/dist/types/store/annotatedBox/index.d.ts +2 -0
  83. package/dist/types/store/annotation/actionCreators.d.ts +3 -2
  84. package/dist/types/store/annotation/reducer.d.ts +1 -0
  85. package/dist/types/store/annotation/types.d.ts +9 -2
  86. package/dist/types/utils/AnnotationDataUtils.d.ts +58 -1
  87. package/dist/types/utils/ToolPointCloudBoxRenderHelper.d.ts +23 -0
  88. package/dist/types/utils/index.d.ts +25 -1
  89. package/dist/types/views/MainView/sidebar/PointCloudToolSidebar/components/rectRotateSensitivitySlider/index.d.ts +3 -0
  90. package/dist/types/views/MainView/sidebar/TextToolSidebar/index.d.ts +1 -1
  91. package/dist/types/views/MainView/toolFooter/BatchSwitchConnectIn2DView/BatchSwitchConnectIn2DView.d.ts +9 -0
  92. package/dist/types/views/MainView/toolFooter/BatchSwitchConnectIn2DView/index.d.ts +1 -0
  93. package/dist/types/views/MainView/toolFooter/index.d.ts +1 -1
  94. package/dist/types/views/MainView/toolHeader/StepSwitch/index.d.ts +1 -1
  95. package/dist/types/views/MainView/toolHeader/index.d.ts +1 -1
  96. package/dist/utils/AnnotationDataUtils.js +1 -1
  97. package/dist/utils/ToolPointCloudBoxRenderHelper.js +1 -0
  98. package/dist/utils/index.js +1 -1
  99. package/dist/views/MainView/index.js +1 -1
  100. package/dist/views/MainView/sidebar/NLPSidebar/NLPAnnotatedList.js +1 -1
  101. package/dist/views/MainView/sidebar/PointCloudToolSidebar/components/rectRotateSensitivitySlider/index.js +1 -0
  102. package/dist/views/MainView/sidebar/PointCloudToolSidebar/components/rectRotateSensitivitySlider/index.module.scss.js +1 -0
  103. package/dist/views/MainView/sidebar/PointCloudToolSidebar/index.js +1 -1
  104. package/dist/views/MainView/sidebar/TagSidebar/index.js +1 -1
  105. package/dist/views/MainView/sidebar/TextToolSidebar/index.js +1 -1
  106. package/dist/views/MainView/toolFooter/BatchSwitchConnectIn2DView/BatchSwitchConnectIn2DView.js +1 -0
  107. package/dist/views/MainView/toolFooter/FooterTips/ToolHotKey/pointCloud/index.js +1 -1
  108. package/es/App.js +1 -1
  109. package/es/assets/annotation/icon_link.svg.js +1 -0
  110. package/es/assets/annotation/icon_unlink.svg.js +1 -0
  111. package/es/assets/annotation/pointCloudTool/Image2DBoxScale.svg.js +1 -0
  112. package/es/assets/annotation/pointCloudTool/leftArrow.svg.js +1 -1
  113. package/es/assets/annotation/pointCloudTool/rightArrow.svg.js +1 -1
  114. package/es/assets/annotation/pointCloudTool/rotate90_black.svg.js +1 -0
  115. package/es/components/AnnotationView/index.js +1 -1
  116. package/es/components/LLMToolView/index.js +1 -1
  117. package/es/components/LLMToolView/questionView/components/header/index.js +1 -1
  118. package/es/components/LLMToolView/sidebar/components/textEditor/index.js +2 -2
  119. package/es/components/LLMToolView/sidebar/components/textEditor/index.module.scss.js +1 -1
  120. package/es/components/LLMToolView/sidebar/components/textInputBox/index.js +2 -2
  121. package/es/components/LLMToolView/sidebar/index.js +1 -1
  122. package/es/components/LLMToolView/utils/data.js +1 -1
  123. package/es/components/NLPToolView/index.js +1 -1
  124. package/es/components/NLPToolView/textContent/index.js +1 -1
  125. package/es/components/audioAnnotate/audioContext/index.js +1 -1
  126. package/es/components/audioAnnotate/audioSide/clipSidebar/index.js +1 -1
  127. package/es/components/audioAnnotate/index.js +1 -1
  128. package/es/components/audioAnnotate/textInput/index.js +1 -1
  129. package/es/components/audioAnnotate/textInput/index.module.scss.js +1 -1
  130. package/es/components/audioAnnotate/utils/dataTransform.js +1 -0
  131. package/es/components/audioPlayer/clipRegion/index.js +1 -1
  132. package/es/components/audioPlayer/index.js +1 -1
  133. package/es/components/audioPlayer/useAudioCombine/index.js +3 -2
  134. package/es/components/audioPlayer/useAudioSegment/index.js +1 -1
  135. package/es/components/longText/index.js +1 -1
  136. package/es/components/pointCloud2DRectOperationView/index.js +1 -1
  137. package/es/components/pointCloudView/PointCloud2DSingleView.js +1 -1
  138. package/es/components/pointCloudView/PointCloud2DView.js +1 -1
  139. package/es/components/pointCloudView/PointCloud3DView.js +1 -1
  140. package/es/components/pointCloudView/PointCloudContext.js +1 -1
  141. package/es/components/pointCloudView/PointCloudListener.js +1 -1
  142. package/es/components/pointCloudView/PointCloudSegment2DView.js +1 -1
  143. package/es/components/pointCloudView/PointCloudTopView.js +1 -1
  144. package/es/components/pointCloudView/hooks/useBoxes.js +1 -1
  145. package/es/components/pointCloudView/hooks/useDataLinkSwitch.js +1 -0
  146. package/es/components/pointCloudView/hooks/useHighlight.js +1 -1
  147. package/es/components/pointCloudView/hooks/useHistory.js +1 -1
  148. package/es/components/pointCloudView/hooks/usePointCloudViews.js +1 -1
  149. package/es/components/pointCloudView/hooks/usePolygon.js +1 -1
  150. package/es/components/pointCloudView/hooks/useRotate.js +1 -1
  151. package/es/components/pointCloudView/hooks/useRotateEdge.js +1 -0
  152. package/es/components/pointCloudView/hooks/useSingleBox.js +1 -1
  153. package/es/components/pointCloudView/hooks/useStatus.js +1 -1
  154. package/es/components/pointCloudView/index.js +1 -1
  155. package/es/components/pointCloudView/utils/map.js +1 -0
  156. package/es/components/subAttributeList/index.js +1 -0
  157. package/es/components/videoAnnotate/videoClipTool/index.js +1 -1
  158. package/es/components/videoAnnotate/videoTagTool/TagToolInstanceAdaptor.js +1 -1
  159. package/es/index.css +59 -17
  160. package/es/index.js +1 -1
  161. package/es/store/Actions.js +1 -1
  162. package/es/store/annotatedBox/index.js +1 -1
  163. package/es/store/annotation/actionCreators.js +1 -1
  164. package/es/store/annotation/reducer.js +1 -1
  165. package/es/utils/AnnotationDataUtils.js +1 -1
  166. package/es/utils/ToolPointCloudBoxRenderHelper.js +1 -0
  167. package/es/utils/index.js +1 -1
  168. package/es/views/MainView/index.js +1 -1
  169. package/es/views/MainView/sidebar/NLPSidebar/NLPAnnotatedList.js +1 -1
  170. package/es/views/MainView/sidebar/PointCloudToolSidebar/components/rectRotateSensitivitySlider/index.js +1 -0
  171. package/es/views/MainView/sidebar/PointCloudToolSidebar/components/rectRotateSensitivitySlider/index.module.scss.js +1 -0
  172. package/es/views/MainView/sidebar/PointCloudToolSidebar/index.js +1 -1
  173. package/es/views/MainView/sidebar/TagSidebar/index.js +1 -1
  174. package/es/views/MainView/sidebar/TextToolSidebar/index.js +1 -1
  175. package/es/views/MainView/toolFooter/BatchSwitchConnectIn2DView/BatchSwitchConnectIn2DView.js +1 -0
  176. package/es/views/MainView/toolFooter/FooterTips/ToolHotKey/pointCloud/index.js +1 -1
  177. package/package.json +3 -3
  178. package/dist/assets/annotation/pointCloudTool/rotate180_black.svg.js +0 -1
  179. package/dist/assets/icons/9d70807.svg +0 -5
  180. package/es/assets/annotation/pointCloudTool/rotate180_black.svg.js +0 -1
@@ -1 +1 @@
1
- import n,{useRef as P}from"react";import{Popover as m,Tooltip as x}from"antd";import{useSize as E}from"ahooks";import{prefix as g}from"../../constant/index.js";import{SearchOutlined as h}from"@ant-design/icons";var T=Object.defineProperty,b=Object.defineProperties,N=Object.getOwnPropertyDescriptors,v=Object.getOwnPropertySymbols,$=Object.prototype.hasOwnProperty,j=Object.prototype.propertyIsEnumerable,d=(r,e,t)=>e in r?T(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,_=(r,e)=>{for(var t in e||(e={}))$.call(e,t)&&d(r,t,e[t]);if(v)for(var t of v(e))j.call(e,t)&&d(r,t,e[t]);return r},S=(r,e)=>b(r,N(e));const l=`${g}-longText`,C=r=>{var e,t;const{text:o,placement:c="bottom",icon:y=n.createElement(h,null),openByText:O,style:f,isToolTips:w,wordCount:p}=r,a=P(null);E(a);const i=a.current&&((e=a.current)==null?void 0:e.clientWidth)<((t=a.current)==null?void 0:t.scrollWidth);if(p)if((o==null?void 0:o.length)>p){const s=o.slice(0,p);return n.createElement(m,{placement:c,overlayClassName:`${l}-popover`,content:o},n.createElement("span",{style:{cursor:"pointer",whiteSpace:"pre-wrap"}},s,"..."))}else return n.createElement("div",{style:{whiteSpace:"pre-wrap"}}," ",o);if(O){let s={placement:c,overlayClassName:`${l}-popover`,content:o,key:`${i}`};i||Object.assign(s,{open:!1});const u=n.createElement("div",{className:`${l}-text`,style:f,ref:a},o);return w?n.createElement(x,S(_({},s),{title:o}),u):n.createElement(m,_({},s),u)}return n.createElement("div",{className:l,style:f},n.createElement("div",{className:`${l}-text`,ref:a},o),i&&n.createElement(m,{placement:c,overlayClassName:`${l}-popover`,content:o},y))};export{C as default};
1
+ import l,{forwardRef as h,useRef as E,useMemo as S}from"react";import{Tooltip as T,Popover as x}from"antd";import{useSize as j}from"ahooks";import{prefix as L}from"../../constant/index.js";import{SearchOutlined as C}from"@ant-design/icons";var M=Object.defineProperty,N=Object.defineProperties,R=Object.getOwnPropertyDescriptors,v=Object.getOwnPropertySymbols,g=Object.prototype.hasOwnProperty,P=Object.prototype.propertyIsEnumerable,b=(t,e,r)=>e in t?M(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,f=(t,e)=>{for(var r in e||(e={}))g.call(e,r)&&b(t,r,e[r]);if(v)for(var r of v(e))P.call(e,r)&&b(t,r,e[r]);return t},W=(t,e)=>N(t,R(e)),$=(t,e)=>{var r={};for(var n in t)g.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(t!=null&&v)for(var n of v(t))e.indexOf(n)<0&&P.call(t,n)&&(r[n]=t[n]);return r};const u=`${L}-longText`,_=h((t,e)=>{var r=t,{text:n,overflowMaxLines:p,style:i}=r,m=$(r,["text","overflowMaxLines","style"]);const a={whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},o={display:"-webkit-box",WebkitLineClamp:p,WebkitBoxOrient:"vertical",overflow:"hidden"},d=p>1?o:a,c=f(f({},d),i!=null?i:{});return l.createElement("div",f({style:c,ref:e},m),n)}),k=t=>{const{text:e,placement:r="bottom",icon:n=l.createElement(C,null),openByText:p,style:i,isToolTips:m,overflowMaxLines:a=1}=t,o=E(null),d=j(o),c=S(()=>{var s,y,O,w;return a>1?o.current&&((s=o.current)==null?void 0:s.clientHeight)<((y=o.current)==null?void 0:y.scrollHeight):o.current&&((O=o.current)==null?void 0:O.clientWidth)<((w=o.current)==null?void 0:w.scrollWidth)},[d]);if(p){let s={placement:r,overlayClassName:`${u}-popover`,content:e,key:`${c}`};return c||Object.assign(s,{open:!1}),m?l.createElement(T,W(f({},s),{title:e}),l.createElement(_,{overflowMaxLines:a,style:i,ref:o,text:e})):l.createElement(x,f({},s),l.createElement(_,{overflowMaxLines:a,style:i,ref:o,text:e}))}return l.createElement("div",{className:u,style:i},l.createElement(_,{overflowMaxLines:a,style:i,ref:o,text:e}),c&&l.createElement(x,{placement:r,overlayClassName:`${u}-popover`,content:e},n))};export{k as default};
@@ -1 +1 @@
1
- import{useLatest as B}from"ahooks";import{Spin as M}from"antd/es";import d,{useContext as N,useRef as w,useState as U,useEffect as u}from"react";import{connect as F}from"react-redux";import{usePointCloudViews as T}from"../pointCloudView/hooks/usePointCloudViews.js";import{PointCloudContext as $}from"../pointCloudView/PointCloudContext.js";import{a2MapStateToProps as q}from"../../store/annotation/map.js";import{LabelBeeContext as A}from"../../store/ctx.js";import{PointCloud2DRectOperation as G,ImgUtils as H}from"@labelbee/lb-annotation";var J=Object.defineProperty,K=Object.defineProperties,Q=Object.getOwnPropertyDescriptors,C=Object.getOwnPropertySymbols,W=Object.prototype.hasOwnProperty,X=Object.prototype.propertyIsEnumerable,O=(o,e,t)=>e in o?J(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,f=(o,e)=>{for(var t in e||(e={}))W.call(e,t)&&O(o,t,e[t]);if(C)for(var t of C(e))X.call(e,t)&&O(o,t,e[t]);return o},R=(o,e)=>K(o,Q(e));const Y=o=>{var e;const{mappingData:t,size:l,config:b,checkMode:D,afterImgOnLoad:h}=o,s=(e=t==null?void 0:t.url)!=null?e:"",{pointCloudBoxList:c,setPointCloudResult:x}=N($),{update2DViewRect:y}=T(),p=d.useRef(null),n=w(null),m=B(y),_=w(null),[I,V]=U(!0),v=r=>{var a;const i=(a=m.current)==null?void 0:a.call(m,r);_.current=i,x(i)},j=()=>{var r;let a=[];c.forEach(i=>{const{rects:S=[],id:P,attribute:E,trackID:L}=i,g=S.find(z=>z.imageName===(t==null?void 0:t.path)),k=P+"_"+(t==null?void 0:t.path);g&&(a=[...a,R(f({},g),{boxID:P,id:k,attribute:E,order:L})])}),(r=n.current)==null||r.setResult(a)};return u(()=>{if(p.current){const r=new G({container:p.current,size:l,config:R(f({},b),{isShowOrder:!0,attributeConfigurable:!0}),checkMode:D});return n.current=r,n.current.init(),n.current.on("updateDragResult",v),()=>{var a,i;(a=n.current)==null||a.unbind("updateDragResult",v),(i=n.current)==null||i.destroy()}}},[]),u(()=>{n.current&&s&&H.load(s).then(r=>{n.current.setImgNode(r),h(r),V(!1)})},[s]),u(()=>{var r;(r=n.current)==null||r.setSize(l)},[l]),u(()=>{c!==_.current&&j()},[c,s]),d.createElement(M,{spinning:I},d.createElement("div",{ref:p,style:f({position:"relative"},l)}))};var Z=F(q,null,null,{context:A})(Y);export{Z as default};
1
+ import{useMemoizedFn as y,useLatest as Z}from"ahooks";import{Spin as ee}from"antd/es";import B,{useContext as te,useRef as z,useState as re,useMemo as ne,useEffect as d}from"react";import{connect as oe}from"react-redux";import{usePointCloudViews as ie}from"../pointCloudView/hooks/usePointCloudViews.js";import{PointCloudContext as le}from"../pointCloudView/PointCloudContext.js";import{a2MapStateToProps as ce}from"../../store/annotation/map.js";import{LabelBeeContext as ue}from"../../store/ctx.js";import{PointCloud2DRectOperation as ae,ImgUtils as se}from"@labelbee/lb-annotation";var de=Object.defineProperty,fe=Object.defineProperties,pe=Object.getOwnPropertyDescriptors,F=Object.getOwnPropertySymbols,me=Object.prototype.hasOwnProperty,ve=Object.prototype.propertyIsEnumerable,J=(u,i,l)=>i in u?de(u,i,{enumerable:!0,configurable:!0,writable:!0,value:l}):u[i]=l,_=(u,i)=>{for(var l in i||(i={}))me.call(i,l)&&J(u,l,i[l]);if(F)for(var l of F(i))ve.call(i,l)&&J(u,l,i[l]);return u},I=(u,i)=>fe(u,pe(i)),T=(u,i,l)=>new Promise((a,f)=>{var g=s=>{try{R(l.next(s))}catch(p){f(p)}},C=s=>{try{R(l.throw(s))}catch(p){f(p)}},R=s=>s.done?a(s.value):Promise.resolve(s.value).then(g,C);R((l=l.apply(u,i)).next())});const _e=u=>{var i,l;const{mappingData:a,size:f,config:g,checkMode:C,afterImgOnLoad:R,shouldExcludePointCloudBoxListUpdate:s}=u,p=(i=a==null?void 0:a.url)!=null?i:"",w=(l=a==null?void 0:a.fallbackUrl)!=null?l:"",{pointCloudBoxList:O,setPointCloudResult:L,defaultAttribute:V,rectList:S,addRectIn2DView:$,updateRectIn2DView:q,removeRectIn2DView:G,updateRectListByReducer:H}=te(le),{update2DViewRect:K,remove2DViewRect:Q}=ie(),E=B.useRef(null),n=z(null),j=y(K),h=y(Q),P=z(null),[W,U]=re(!0),N=ne(()=>S==null?void 0:S.filter(e=>e.imageName===(a==null?void 0:a.path)),[a==null?void 0:a.path,S]),x=Z(a==null?void 0:a.path),A=e=>{const{boxID:o}=e;if(!s&&o){const r=j==null?void 0:j(e);P.current=r,L(r||[]);return}q(e,!0)},k=e=>{x.current&&$(I(_({},e),{imageName:x.current}))},M=e=>{if(e.length===0)return;if(!s){const r=e.find(t=>t.boxID);if(r){const t=h==null?void 0:h(r);P.current=t,L(t||[]),D();return}}const o=e.find(r=>r.extId);if(o){const{imageName:r,extId:t}=o,c=h==null?void 0:h({boxID:t,imageName:r});P.current=c,L(c||[])}G(e)},X=y(()=>{let e=[];return O.forEach(o=>{const{rects:r=[],id:t,attribute:c,trackID:m}=o,v=r.find(Y=>Y.imageName===x.current),b=t+"_"+x.current;v&&(e=[...e,I(_({},v),{boxID:t,id:b,attribute:c,order:m})])}),e}),D=y(()=>{var e,o,r;const t=s?[]:X(),c=(e=n.current)==null?void 0:e.selectedRectID;(o=n.current)==null||o.setResult([...t,...N]),c&&((r=n.current)==null||r.setSelectedRectID(c))});return d(()=>{if(E.current){const e=new ae({container:E.current,size:f,config:I(_({},g),{isShowOrder:!0,attributeConfigurable:!0}),checkMode:C});return n.current=e,n.current.init(),n.current.on("updateDragResult",A),n.current.on("afterAddingDrawingRect",k),n.current.on("deleteSelectedRects",M),()=>{var o,r,t,c;(o=n.current)==null||o.unbind("updateDragResult",A),(r=n.current)==null||r.unbind("afterAddingDrawingRect",k),(t=n.current)==null||t.unbind("deleteSelectedRects",M),(c=n.current)==null||c.destroy()}}},[]),d(()=>{const e=r=>T(void 0,null,function*(){try{return yield se.load(r)}catch(t){return console.error("Error loading image:",t),null}}),o=()=>T(void 0,null,function*(){var r;U(!0);let t=yield e(p);!t&&w&&(t=yield e(w)),t&&((r=n.current)==null||r.setImgNode(t),R(t)),U(!1)});n.current&&(p||w)&&o()},[p,w]),d(()=>{var e;(e=n.current)==null||e.setSize(f)},[f]),d(()=>{O!==P.current&&D()},[O]),d(()=>{var e,o;const r=N.find(t=>t.id===n.current.selectedRectID);(o=(e=n.current)==null?void 0:e.setDefaultAttribute)==null||o.call(e,V),r&&H(t=>{var c;const m=[];let v=null;return t.forEach(b=>{b.id!==n.current.selectedRectID?m.push(b):v=b}),r.extId===void 0&&(v=(c=n.current)==null?void 0:c.selectedRect),[...m,I(_({},v||{}),{attribute:V})]}),D()},[V]),d(()=>{D()},[N]),d(()=>{D()},[s]),d(()=>{var e,o,r,t;const c=(o=(e=n.current)==null?void 0:e.config)!=null?o:{},m=I(_({},c),{attributeList:(r=g.attributeList)!=null?r:[]});(t=n.current)==null||t.setConfig(JSON.stringify(m))},[g.attributeList]),B.createElement(ee,{spinning:W},B.createElement("div",{ref:E,style:_({position:"relative"},f)}))};var ge=oe(ce,null,null,{context:ue})(_e);export{ge as default};
@@ -1 +1 @@
1
- import{getClassName as H}from"../../utils/dom.js";import u,{useRef as y,useState as L,useContext as R,useCallback as O,useEffect as N}from"react";import w from"../AnnotationView/index.js";import A from"../../hooks/useSize.js";import{useSingleBox as q}from"./hooks/useSingleBox.js";import{useHighlight as F}from"./hooks/useHighlight.js";import G from"./components/HighlightVisible/index.js";import{PointCloudContext as J}from"./PointCloudContext.js";import K from"../pointCloud2DRectOperationView/index.js";var M=(t,s,e)=>new Promise((d,a)=>{var m=o=>{try{i(e.next(o))}catch(n){a(n)}},r=o=>{try{i(e.throw(o))}catch(n){a(n)}},i=o=>o.done?d(o.value):Promise.resolve(o.value).then(m,r);i((e=e.apply(t,s)).next())});const Q=({view2dData:t,setSelectedID:s,currentData:e,showEnlarge:d,checkMode:a=!1,measureVisible:m})=>{var r;const i=y(null),o=y(),{selectedBox:n}=q(),p=A(i),{url:h,calib:g,path:j}=t,{toggle2dVisible:P,isHighlightVisible:S}=F({currentData:e}),[k,x]=L(!1),{cuboidBoxIn2DView:_,cacheImageNodeSize:z}=R(J),B=!t,b=c=>{f(),z({path:j,imgNode:c})},f=O(()=>{var c,C;const v=(c=o.current)==null?void 0:c.toolInstance;if(s(""),!n||!v)return;const l=t.annotations.find(E=>E.annotation.id===n.info.id);let V="";l&&((C=l==null?void 0:l.annotation.pointList)==null?void 0:C.length)>0&&(v.focusPositionByPointList(l==null?void 0:l.annotation.pointList),V=n.info.id,s(V))},[n,o.current,t.annotations]);N(()=>{f()},[f]);const I=()=>M(void 0,null,function*(){x(!0),yield P(h,g),x(!1)});return u.createElement("div",{className:H("point-cloud-2d-image"),ref:i},_?u.createElement(w,{src:(r=t==null?void 0:t.url)!=null?r:"",annotations:t.annotations,size:p,ref:o,globalStyle:{display:B?"none":"block"},afterImgOnLoad:b,zoomInfo:{min:.01,max:1e3,ratio:.4},measureVisible:m}):u.createElement(K,{mappingData:t,size:p,checkMode:a,afterImgOnLoad:b}),g&&u.createElement(G,{visible:S(h),onClick:I,loading:k,style:{position:"absolute",right:16,top:16,zIndex:d?-1:101}}))};export{Q as default};
1
+ import{getClassName as U}from"../../utils/dom.js";import s,{useRef as P,useState as A,useContext as F,useMemo as T,useCallback as q,useEffect as w}from"react";import G from"../AnnotationView/index.js";import J from"../../hooks/useSize.js";import{useSingleBox as K}from"./hooks/useSingleBox.js";import{useHighlight as M}from"./hooks/useHighlight.js";import Q from"./components/HighlightVisible/index.js";import{PointCloudContext as W}from"./PointCloudContext.js";import X from"./hooks/useDataLinkSwitch.js";import Y from"../pointCloud2DRectOperationView/index.js";var Z=(o,u,e)=>new Promise((a,r)=>{var f=t=>{try{i(e.next(t))}catch(n){r(n)}},d=t=>{try{i(e.throw(t))}catch(n){r(n)}},i=t=>t.done?a(t.value):Promise.resolve(t.value).then(f,d);i((e=e.apply(o,u)).next())});const $=({view2dData:o,setSelectedID:u,currentData:e,showEnlarge:a,checkMode:r=!1,measureVisible:f})=>{var d,i;const t=P(null),n=P(),{selectedBox:m}=K(),g=J(t),{url:k,fallbackUrl:x,calib:b,path:j}=o,{toggle2dVisible:_,isHighlightVisible:v}=M({currentData:e}),[z,C]=A(!1),{cuboidBoxIn2DView:h,cacheImageNodeSize:B}=F(W),I=!o,O=T(()=>({zIndex:a?-1:101,is2DView:!h,imageName:o.path}),[a,h,o.path]),{rendered:R,isLinking:E}=X(O),L=l=>{p(),B({path:j,imgNode:l})},p=q(()=>{var l,S;const y=(l=n.current)==null?void 0:l.toolInstance;if(u(""),!m||!y)return;const c=o.annotations.find(N=>N.annotation.id===m.info.id);let V="";c&&((S=c==null?void 0:c.annotation.pointList)==null?void 0:S.length)>0&&(y.focusPositionByPointList(c==null?void 0:c.annotation.pointList),V=m.info.id,u(V))},[m,n.current,o.annotations]);w(()=>{p()},[p]);const H=()=>Z(void 0,null,function*(){C(!0);try{yield _(k,x!=null?x:"",b)}catch(l){console.error("highlightOnClick error:",l)}finally{C(!1)}});return s.createElement("div",{className:U("point-cloud-2d-image"),ref:t},h?s.createElement(G,{src:(d=o==null?void 0:o.url)!=null?d:"",fallbackSrc:(i=o==null?void 0:o.fallbackUrl)!=null?i:"",annotations:o.annotations,size:g,ref:n,globalStyle:{display:I?"none":"block"},afterImgOnLoad:L,zoomInfo:{min:.01,max:1e3,ratio:.4},measureVisible:f}):s.createElement(s.Fragment,null,s.createElement(Y,{shouldExcludePointCloudBoxListUpdate:!E,mappingData:o,size:g,checkMode:r,afterImgOnLoad:L}),!r&&R),b&&s.createElement(Q,{visible:v(k),onClick:H,loading:z,style:{position:"absolute",right:16,top:16,zIndex:a?-1:101}}))};export{$ as default};
@@ -1 +1 @@
1
- import{getClassName as J}from"../../utils/dom.js";import i,{useState as L,useContext as ie,useEffect as Q}from"react";import{PointCloudContainer as le}from"./PointCloudLayout.js";import{PointCloudContext as re}from"./PointCloudContext.js";import{connect as se}from"react-redux";import{cKeyCode as ae,pointCloudLidar2image as ue,pointListLidar2Img as ce}from"@labelbee/lb-annotation";import{LabelBeeContext as de}from"../../store/ctx.js";import{a2MapStateToProps as me}from"../../store/annotation/map.js";import{toolStyleConverter as U}from"@labelbee/lb-utils";import fe from"./PointCloud2DSingleView.js";import W from"./components/TitleButton/index.js";import{LeftOutlined as pe}from"@ant-design/icons";import ge from"classnames";import ve from"../../assets/annotation/common/icon_esc.svg.js";import be from"../../assets/annotation/common/icon_left_squareOutlined.svg.js";import ye from"../../assets/annotation/common/icon_right_squareOutlined.svg.js";import{isNumber as Ee}from"lodash";var _e=Object.defineProperty,he=Object.defineProperties,we=Object.getOwnPropertyDescriptors,X=Object.getOwnPropertySymbols,Ce=Object.prototype.hasOwnProperty,Pe=Object.prototype.propertyIsEnumerable,Y=(e,n,t)=>n in e?_e(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,f=(e,n)=>{for(var t in n||(n={}))Ce.call(n,t)&&Y(e,t,n[t]);if(X)for(var t of X(n))Pe.call(n,t)&&Y(e,t,n[t]);return e},p=(e,n)=>he(e,we(n));const I=ae.default,Le=({showEnlarge:e,isEnlargeTopView:n,data:t,setIsEnlarge:y,setCurIndex:g,curIndex:E=0,index:x,annotations2d:_})=>n?i.createElement(W,{title:t==null?void 0:t.calName,style:{background:"rgba(0, 0, 0, 0.74)",color:"#FFFFFF"}}):e?i.createElement("div",{style:{display:"flex",alignItems:"center"}},i.createElement(pe,{style:{cursor:"pointer",marginRight:"12px"},onClick:()=>{y(!1),g(void 0)}}),i.createElement("span",null,t==null?void 0:t.calName),i.createElement("span",{style:{marginLeft:"8px"}},E+1,"/",_==null?void 0:_.length)):i.createElement(W,{title:t==null?void 0:t.calName,onClick:()=>{y(!0),g(x)},style:{background:"rgba(0, 0, 0, 0.74)",color:"#FFFFFF"}}),xe=({currentData:e,config:n,thumbnailWidth:t,isEnlargeTopView:y,highlightAttribute:g,loadPCDFileLoading:E,checkMode:x,measureVisible:_})=>{var O;const[d,Z]=L([]),{topViewInstance:B,displayPointCloudList:j,polygonList:S,imageSizes:N,selectedIDs:V}=ie(re),[F,D]=L(""),[h,k]=L(!1),[a,w]=L(void 0);Q(()=>{var l;if(!E&&B&&(e==null?void 0:e.mappingImgList)&&((l=e==null?void 0:e.mappingImgList)==null?void 0:l.length)>0){const r={fill:"transparent",color:"green"};let s=[];e==null||e.mappingImgList.forEach(o=>{var v,T,K;const $=j.reduce((m,c)=>{var b,u;const C=c.id===F||g===c.attribute,{transferViewData:H,viewRangePointList:P}=(b=ue(c,o.calib,{createRange:C}))!=null?b:{};if(!H||!P)return[];const M=(u=U.getColorFromConfig({attribute:c.attribute},p(f({},n),{attributeConfigurable:!0}),{}))==null?void 0:u.stroke,ne=ee({viewDataPointList:H,pointCloudBox:c,defaultViewStyle:r,stroke:M}),G=[...m,...ne];return(P==null?void 0:P.length)>0&&G.unshift({type:"polygon",annotation:p(f({id:F,pointList:P},r),{stroke:M,fill:"rgba(255, 255, 255, 0.6)"})}),G},[]),q=N[(v=o==null?void 0:o.path)!=null?v:""];q&&Ee((T=o==null?void 0:o.calib)==null?void 0:T.groundHeight)&&S.forEach(m=>{const c=m.pointList.map(u=>{var C;return p(f({},u),{z:(C=o==null?void 0:o.calib)==null?void 0:C.groundHeight})}),b=ce(c,o==null?void 0:o.calib,q);if(b){const u=U.getColorFromConfig({attribute:m.attribute},p(f({},n),{attributeConfigurable:!0}),{});$.push({type:"polygon",annotation:p(f({id:m.id,pointList:b},r),{stroke:u==null?void 0:u.stroke,fill:V.includes(m.id)?u==null?void 0:u.fill:"rgba(255, 255, 255, 0.6)"})})}}),s.push({annotations:$,url:o==null?void 0:o.url,calName:(K=o==null?void 0:o.calib)==null?void 0:K.calName,calib:o==null?void 0:o.calib,path:o==null?void 0:o.path})}),Z(s)}},[j,e==null?void 0:e.mappingImgList,F,g,E,S,N,V]),Q(()=>(window.addEventListener("keydown",R),()=>{window.removeEventListener("keydown",R)}),[a]);const R=l=>{const{keyCode:r}=l;switch(r){case I.Esc:h&&k(!1);break;case I.Left:A();break;case I.Right:z();break}},A=()=>{a===void 0||!h||Number(a)>0&&w(a-1)},z=()=>{a===void 0||!h||Number(a)<(d==null?void 0:d.length)-1&&w(a+1)},ee=({viewDataPointList:l,pointCloudBox:r,defaultViewStyle:s,stroke:o})=>l?l.map(v=>({type:v.type,annotation:p(f({id:r.id,pointList:v.pointList},s),{stroke:o})})):[],te=!e||!(e==null?void 0:e.mappingImgList)||!(((O=e==null?void 0:e.mappingImgList)==null?void 0:O.length)>0),oe=i.createElement("div",{style:{display:"flex",alignItems:"center",fontSize:"14px"}},i.createElement("img",{src:be,style:{height:"24px",marginRight:"8px",cursor:"pointer"},onClick:()=>A()}),i.createElement("span",{style:{marginRight:"12px"}},"\u952E\u76D8\u5DE6\u952E\u4E0A\u4E00\u5F20"),i.createElement("span",{style:{margin:"0px 8px 0px 12px"}},"\u952E\u76D8\u53F3\u952E\u4E0A\u4E00\u5F20"),i.createElement("img",{src:ye,style:{height:"24px",marginRight:"12px",cursor:"pointer"},onClick:()=>z()}),i.createElement("img",{src:ve,style:{height:"24px",margin:"0px 8px 0px 12px",cursor:"pointer"},onClick:()=>{k(!1),w(void 0)}}),i.createElement("span",null,"\u952E\u9000\u51FA"));return(d==null?void 0:d.length)>0?i.createElement(i.Fragment,null,d.map((l,r)=>{const s=h&&r===a;return i.createElement(le,{className:ge({[J("point-cloud-2d-container")]:!0,[J("point-cloud-container","zoom")]:s}),title:i.createElement(Le,{showEnlarge:s,isEnlargeTopView:y,data:l,setIsEnlarge:k,setCurIndex:w,curIndex:a,index:r,annotations2d:d}),titleOnSurface:!s,style:{display:te?"none":"flex",width:s?"100%":t},key:r,toolbar:oe},(l==null?void 0:l.annotations)&&(l==null?void 0:l.url)&&i.createElement(fe,{currentData:e,view2dData:l,setSelectedID:D,showEnlarge:s,checkMode:x,measureVisible:_}))})):null};var Fe=se(me,null,null,{context:de})(xe);export{Fe as default};
1
+ import{getClassName as Q}from"../../utils/dom.js";import i,{useState as L,useContext as ae,useEffect as W}from"react";import{PointCloudContainer as ce}from"./PointCloudLayout.js";import{PointCloudContext as de}from"./PointCloudContext.js";import{connect as me}from"react-redux";import{cKeyCode as fe,pointCloudLidar2image as pe,pointListLidar2Img as ge}from"@labelbee/lb-annotation";import{LabelBeeContext as ve}from"../../store/ctx.js";import{a2MapStateToProps as be}from"../../store/annotation/map.js";import{toolStyleConverter as X}from"@labelbee/lb-utils";import ye from"./PointCloud2DSingleView.js";import Y from"./components/TitleButton/index.js";import{LeftOutlined as Ee}from"@ant-design/icons";import he from"classnames";import _e from"../../assets/annotation/common/icon_esc.svg.js";import we from"../../assets/annotation/common/icon_left_squareOutlined.svg.js";import Ce from"../../assets/annotation/common/icon_right_squareOutlined.svg.js";import{isNumber as Pe}from"lodash";import{getBoundingRect as Le,isBoundingRectInImage as xe}from"../../utils/index.js";var Ie=Object.defineProperty,ke=Object.defineProperties,Fe=Object.getOwnPropertyDescriptors,Z=Object.getOwnPropertySymbols,Oe=Object.prototype.hasOwnProperty,je=Object.prototype.propertyIsEnumerable,D=(e,n,o)=>n in e?Ie(e,n,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[n]=o,m=(e,n)=>{for(var o in n||(n={}))Oe.call(n,o)&&D(e,o,n[o]);if(Z)for(var o of Z(n))je.call(n,o)&&D(e,o,n[o]);return e},f=(e,n)=>ke(e,Fe(n));const j=fe.default,Ne=({showEnlarge:e,isEnlargeTopView:n,data:o,setIsEnlarge:y,setCurIndex:g,curIndex:E=0,index:x,annotations2d:h})=>n?i.createElement(Y,{title:o==null?void 0:o.calName,style:{background:"rgba(0, 0, 0, 0.74)",color:"#FFFFFF"}}):e?i.createElement("div",{style:{display:"flex",alignItems:"center"}},i.createElement(Ee,{style:{cursor:"pointer",marginRight:"12px"},onClick:()=>{y(!1),g(void 0)}}),i.createElement("span",null,o==null?void 0:o.calName),i.createElement("span",{style:{marginLeft:"8px"}},E+1,"/",h==null?void 0:h.length)):i.createElement(Y,{title:o==null?void 0:o.calName,onClick:()=>{y(!0),g(x)},style:{background:"rgba(0, 0, 0, 0.74)",color:"#FFFFFF"}}),Re=({currentData:e,config:n,thumbnailWidth:o,isEnlargeTopView:y,highlightAttribute:g,loadPCDFileLoading:E,checkMode:x,measureVisible:h})=>{var N;const[p,ee]=L([]),{topViewInstance:te,displayPointCloudList:R,polygonList:S,imageSizes:I,selectedIDs:V}=ae(de),[k,oe]=L(""),[_,F]=L(!1),[u,w]=L(void 0);W(()=>{var l;if(!E&&te&&(e==null?void 0:e.mappingImgList)&&((l=e==null?void 0:e.mappingImgList)==null?void 0:l.length)>0){const r={fill:"transparent",color:"green"};let s=[];e==null||e.mappingImgList.forEach(t=>{var v,K,$,q;const H=R.reduce((c,d)=>{var b,a;const C=d.id===k||g===d.attribute,{transferViewData:O,viewRangePointList:P}=(b=pe(d,t.calib,{createRange:C}))!=null?b:{};if(!O||!P)return[];const re=O.reduce((G,J)=>J.type==="line"?[...G,...J.pointList]:G,[]),se=f(m({},Le(re)),{imageName:t.path});if(!xe(se,t.path,I))return c;const B=(a=X.getColorFromConfig({attribute:d.attribute},f(m({},n),{attributeConfigurable:!0}),{}))==null?void 0:a.stroke,ue=ne({viewDataPointList:O,pointCloudBox:d,defaultViewStyle:r,stroke:B}),M=[...c,...ue];return(P==null?void 0:P.length)>0&&M.unshift({type:"polygon",annotation:f(m({id:k,pointList:P},r),{stroke:B,fill:"rgba(255, 255, 255, 0.6)"})}),M},[]),U=I[(v=t==null?void 0:t.path)!=null?v:""];U&&Pe((K=t==null?void 0:t.calib)==null?void 0:K.groundHeight)&&S.forEach(c=>{const d=c.pointList.map(a=>{var C;return f(m({},a),{z:(C=t==null?void 0:t.calib)==null?void 0:C.groundHeight})}),b=ge(d,t==null?void 0:t.calib,U);if(b){const a=X.getColorFromConfig({attribute:c.attribute},f(m({},n),{attributeConfigurable:!0}),{});H.push({type:"polygon",annotation:f(m({id:c.id,pointList:b},r),{stroke:a==null?void 0:a.stroke,fill:V.includes(c.id)?a==null?void 0:a.fill:"rgba(255, 255, 255, 0.6)"})})}}),s.push({annotations:H,url:t==null?void 0:t.url,fallbackUrl:($=t==null?void 0:t.fallbackUrl)!=null?$:"",calName:(q=t==null?void 0:t.calib)==null?void 0:q.calName,calib:t==null?void 0:t.calib,path:t==null?void 0:t.path})}),ee(s)}},[R,e==null?void 0:e.mappingImgList,k,g,E,S,I,V]),W(()=>(window.addEventListener("keydown",A),()=>{window.removeEventListener("keydown",A)}),[u]);const A=l=>{const{keyCode:r}=l;switch(r){case j.Esc:_&&F(!1);break;case j.Left:z();break;case j.Right:T();break}},z=()=>{u===void 0||!_||Number(u)>0&&w(u-1)},T=()=>{u===void 0||!_||Number(u)<(p==null?void 0:p.length)-1&&w(u+1)},ne=({viewDataPointList:l,pointCloudBox:r,defaultViewStyle:s,stroke:t})=>l?l.map(v=>({type:v.type,annotation:f(m({id:r.id,pointList:v.pointList},s),{stroke:t})})):[],ie=!e||!(e==null?void 0:e.mappingImgList)||!(((N=e==null?void 0:e.mappingImgList)==null?void 0:N.length)>0),le=i.createElement("div",{style:{display:"flex",alignItems:"center",fontSize:"14px"}},i.createElement("img",{src:we,style:{height:"24px",marginRight:"8px",cursor:"pointer"},onClick:()=>z()}),i.createElement("span",{style:{marginRight:"12px"}},"\u952E\u76D8\u5DE6\u952E\u4E0A\u4E00\u5F20"),i.createElement("span",{style:{margin:"0px 8px 0px 12px"}},"\u952E\u76D8\u53F3\u952E\u4E0A\u4E00\u5F20"),i.createElement("img",{src:Ce,style:{height:"24px",marginRight:"12px",cursor:"pointer"},onClick:()=>T()}),i.createElement("img",{src:_e,style:{height:"24px",margin:"0px 8px 0px 12px",cursor:"pointer"},onClick:()=>{F(!1),w(void 0)}}),i.createElement("span",null,"\u952E\u9000\u51FA"));return(p==null?void 0:p.length)>0?i.createElement(i.Fragment,null,p.map((l,r)=>{const s=_&&r===u;return i.createElement(ce,{className:he({[Q("point-cloud-2d-container")]:!0,[Q("point-cloud-container","zoom")]:s}),title:i.createElement(Ne,{showEnlarge:s,isEnlargeTopView:y,data:l,setIsEnlarge:F,setCurIndex:w,curIndex:u,index:r,annotations2d:p}),titleOnSurface:!s,style:{display:ie?"none":"flex",width:s?"100%":o},key:r,toolbar:le},(l==null?void 0:l.annotations)&&(l==null?void 0:l.url)&&i.createElement(ye,{key:l.url,currentData:e,view2dData:l,setSelectedID:oe,showEnlarge:s,checkMode:x,measureVisible:h}))})):null};var Se=me(be,null,null,{context:ve})(Re);export{Se as default};
@@ -1 +1 @@
1
- import{getClassName as m}from"../../utils/dom.js";import{cKeyCode as K,PointCloud as M}from"@labelbee/lb-annotation";import{PointCloudUtils as B,toolStyleConverter as Z,EPerspectiveView as E}from"@labelbee/lb-utils";import j from"classnames";import e,{useContext as b,useState as O,useRef as H,useEffect as u,useMemo as U}from"react";import{PointCloudContainer as q}from"./PointCloudLayout.js";import{PointCloudContext as G}from"./PointCloudContext.js";import{a2MapStateToProps as J}from"../../store/annotation/map.js";import{connect as Q}from"react-redux";import{jsonParser as W}from"../../utils/index.js";import{useSingleBox as X}from"./hooks/useSingleBox.js";import{useSphere as Y}from"./hooks/useSphere.js";import{Switch as $,Tooltip as ee}from"antd";import te from"../../hooks/useSize.js";import{usePointCloudViews as oe}from"./hooks/usePointCloudViews.js";import{useTranslation as L}from"react-i18next";import{LabelBeeContext as ne}from"../../store/ctx.js";import ie from"./components/PointCloudSizeSlider/index.js";import re from"./components/TitleButton/index.js";import{LeftOutlined as ae}from"@ant-design/icons";var le=Object.defineProperty,se=Object.defineProperties,ce=Object.getOwnPropertyDescriptors,z=Object.getOwnPropertySymbols,me=Object.prototype.hasOwnProperty,ue=Object.prototype.propertyIsEnumerable,D=(n,r,a)=>r in n?le(n,r,{enumerable:!0,configurable:!0,writable:!0,value:a}):n[r]=a,N=(n,r)=>{for(var a in r||(r={}))me.call(r,a)&&D(n,a,r[a]);if(z)for(var a of z(r))ue.call(r,a)&&D(n,a,r[a]);return n},de=(n,r)=>se(n,ce(r));const pe=K.default,we="LABELBEE-POINTCLOUD",P=e.createContext({isActive:!1,setTarget3DView:()=>{},reset3DView:()=>{},followTopView:()=>{}}),d=({perspectiveView:n})=>{const{isActive:r,setTarget3DView:a}=b(P),o=p=>j({[m("point-cloud-3d-view",p)]:!0,active:r});return e.createElement("span",{onClick:()=>{a(E[n])},className:o(n.toLocaleLowerCase())})},k=({isEnlarge:n})=>{const{reset3DView:r,followTopView:a}=b(P),{t:o}=L(),p=e.createElement(e.Fragment,null,e.createElement(d,{perspectiveView:"Top"}),e.createElement(d,{perspectiveView:"Front"}),e.createElement(d,{perspectiveView:"Left"}),e.createElement(d,{perspectiveView:"Back"}),e.createElement(d,{perspectiveView:"Right"}),e.createElement(d,{perspectiveView:"LFT"}),e.createElement(d,{perspectiveView:"RBT"})),V=e.createElement(e.Fragment,null,e.createElement(ee,{title:o("CameraFollowTopView")},e.createElement("span",{onClick:()=>{a()},className:m("point-cloud-3d-view","followTop")})),e.createElement("span",{onClick:()=>{r()},className:m("point-cloud-3d-view","reset")}));return n?e.createElement("div",{className:m("point-cloud-3d-sidebarZoom")},V,p):e.createElement("div",{className:m("point-cloud-3d-sidebar")},p,V)},ve=({currentData:n,config:r,highlightAttribute:a})=>{const o=b(G),[p,V]=O(!0),[v,_]=O(!1),f=H(null),{initPointCloud3d:S}=oe(),C=te(f),{t:h}=L();u(()=>{!o.mainViewInstance||S==null||S(C)},[C]);const{selectedBox:w}=X(),{selectedSphere:g}=Y(),x=t=>{var i,l;const s=w==null?void 0:w.info;if(s){const c=N({},s.center);c.x=c.x-.01,c.z=1e3;const I=t===E.Top;(i=o.mainViewInstance)==null||i.updateCameraByBox(s,t,I?c:void 0)}g&&((l=o.mainViewInstance)==null||l.updateCameraBySphere(g,t))},R=()=>{var t;(t=o.mainViewInstance)==null||t.resetCamera()},F=()=>{var t,i;const l=(t=o.topViewInstance)==null?void 0:t.pointCloudInstance.camera;l&&((i=o.mainViewInstance)==null||i.applyCameraTarget(l))};u(()=>{if(f.current&&(n==null?void 0:n.url)){let t=o.mainViewInstance;!t&&C.width&&(t=new M({container:f.current,isOrthographicCamera:!0,orthographicParams:B.getDefaultOrthographicParams(C),config:r}),o.setMainViewInstance(t))}},[C,n]),u(()=>{var t;if(f.current&&(n==null?void 0:n.url)&&n.result&&o.mainViewInstance){let i=o.mainViewInstance;const l=B.getBoxParamsFromResultList(n.result);l.forEach(s=>{var c;const I=(c=Z.getColorFromConfig({attribute:s.attribute},de(N({},r),{attributeConfigurable:!0}),{}))==null?void 0:c.hex;i==null||i.addBoxToSense(s,I)}),i.render(),o.setPointCloudResult(l),o.setPointCloudValid((t=W(n.result))==null?void 0:t.valid)}},[n,o.mainViewInstance]),u(()=>{var t,i,l,s;if(w){x(E.Top);const c=(l=(i=(t=o.topViewInstance)==null?void 0:t.pointCloudInstance)==null?void 0:i.camera.zoom)!=null?l:1;(s=o.mainViewInstance)==null||s.updateCameraZoom(c)}},[w]),u(()=>{var t,i,l,s;if(g){x(E.Top);const c=(l=(i=(t=o.topViewInstance)==null?void 0:t.pointCloudInstance)==null?void 0:i.camera.zoom)!=null?l:1;(s=o.mainViewInstance)==null||s.updateCameraZoom(c)}},[g]),u(()=>(window.addEventListener("keydown",T),()=>{window.removeEventListener("keydown",T)}),[]);const T=t=>{if(t.keyCode===pe.Esc){_(!1);return}},y=U(()=>({reset3DView:R,setTarget3DView:x,isActive:!!w,followTopView:F}),[w,o.mainViewInstance]);u(()=>{var t,i,l;const s=o.pointCloudBoxList.filter(c=>c.attribute===a);(s==null?void 0:s.length)>0&&((t=o.mainViewInstance)==null||t.clearHighlightBoxes(),(i=o.mainViewInstance)==null||i.highlightBoxes(s)),s.length===0&&((l=o.mainViewInstance)==null||l.clearHighlightBoxesAndRender())},[a,o.mainViewInstance]);const A=e.createElement(e.Fragment,null,e.createElement(ie,{onChange:t=>{var i;(i=o.mainViewInstance)==null||i.updatePointSize({customSize:t})}}),e.createElement("span",{style:{marginRight:8}},h("ShowArrows")),e.createElement($,{size:"small",checked:p,onChange:t=>{var i;V(t),(i=o.mainViewInstance)==null||i.setShowDirection(t)}}),v&&e.createElement(P.Provider,{value:y},e.createElement(k,{isEnlarge:v})));return e.createElement(q,{className:j({[m("point-cloud-3d-container")]:!0,[m("point-cloud-container","zoom")]:v}),title:v?e.createElement("div",{style:{display:"flex",alignItems:"center"}},e.createElement(ae,{style:{cursor:"pointer",marginRight:"12px"},onClick:()=>{_(!1)}}),h("3DView")):e.createElement(re,{title:h("3DView"),onClick:()=>{_(!0)}}),toolbar:A},e.createElement("div",{className:m("point-cloud-3d-content")},!v&&e.createElement(P.Provider,{value:y},e.createElement(k,null)),e.createElement("div",{className:m("point-cloud-3d-view"),id:we,ref:f})))};var fe=Q(J,null,null,{context:ne})(ve);export{fe as default};
1
+ import{getClassName as m}from"../../utils/dom.js";import{cKeyCode as Z,PointCloud as H}from"@labelbee/lb-annotation";import{PointCloudUtils as S,toolStyleConverter as U,EPerspectiveView as E}from"@labelbee/lb-utils";import j from"classnames";import e,{useContext as T,useState as O,useRef as q,useEffect as u,useMemo as G}from"react";import{PointCloudContainer as J}from"./PointCloudLayout.js";import{PointCloudContext as Q}from"./PointCloudContext.js";import{a2MapStateToProps as W}from"../../store/annotation/map.js";import{connect as X}from"react-redux";import{jsonParser as Y}from"../../utils/index.js";import{useSingleBox as $}from"./hooks/useSingleBox.js";import{useSphere as ee}from"./hooks/useSphere.js";import{Switch as te,Tooltip as oe}from"antd";import ne from"../../hooks/useSize.js";import{usePointCloudViews as ie}from"./hooks/usePointCloudViews.js";import{useTranslation as z}from"react-i18next";import{LabelBeeContext as re}from"../../store/ctx.js";import le from"./components/PointCloudSizeSlider/index.js";import ae from"./components/TitleButton/index.js";import{LeftOutlined as se}from"@ant-design/icons";var ce=Object.defineProperty,me=Object.defineProperties,de=Object.getOwnPropertyDescriptors,D=Object.getOwnPropertySymbols,ue=Object.prototype.hasOwnProperty,pe=Object.prototype.propertyIsEnumerable,N=(n,r,l)=>r in n?ce(n,r,{enumerable:!0,configurable:!0,writable:!0,value:l}):n[r]=l,k=(n,r)=>{for(var l in r||(r={}))ue.call(r,l)&&N(n,l,r[l]);if(D)for(var l of D(r))pe.call(r,l)&&N(n,l,r[l]);return n},ve=(n,r)=>me(n,de(r));const we=Z.default,fe="LABELBEE-POINTCLOUD",_=e.createContext({isActive:!1,setTarget3DView:()=>{},reset3DView:()=>{},followTopView:()=>{}}),p=({perspectiveView:n})=>{const{isActive:r,setTarget3DView:l}=T(_),v=o=>j({[m("point-cloud-3d-view",o)]:!0,active:r});return e.createElement("span",{onClick:()=>{l(E[n])},className:v(n.toLocaleLowerCase())})},R=({isEnlarge:n})=>{const{reset3DView:r,followTopView:l}=T(_),{t:v}=z(),o=e.createElement(e.Fragment,null,e.createElement(p,{perspectiveView:"Top"}),e.createElement(p,{perspectiveView:"Front"}),e.createElement(p,{perspectiveView:"Left"}),e.createElement(p,{perspectiveView:"Back"}),e.createElement(p,{perspectiveView:"Right"}),e.createElement(p,{perspectiveView:"LFT"}),e.createElement(p,{perspectiveView:"RBT"})),g=e.createElement(e.Fragment,null,e.createElement(oe,{title:v("CameraFollowTopView")},e.createElement("span",{onClick:()=>{l()},className:m("point-cloud-3d-view","followTop")})),e.createElement("span",{onClick:()=>{r()},className:m("point-cloud-3d-view","reset")}));return n?e.createElement("div",{className:m("point-cloud-3d-sidebarZoom")},g,o):e.createElement("div",{className:m("point-cloud-3d-sidebar")},o,g)},Ce=({currentData:n,config:r,highlightAttribute:l})=>{var v;const o=T(Q),[g,F]=O(!0),[w,h]=O(!1),f=q(null),{initPointCloud3d:y}=ie(),C=ne(f),{t:I}=z();u(()=>{!o.mainViewInstance||y==null||y(C)},[C]);const{selectedBox:d}=$(),{selectedSphere:P}=ee(),x=t=>{var i,a;const s=d==null?void 0:d.info;if(s){const c=k({},s.center);c.x=c.x-.01,c.z=1e3;const V=t===E.Top;(i=o.mainViewInstance)==null||i.updateCameraByBox(s,t,V?c:void 0)}P&&((a=o.mainViewInstance)==null||a.updateCameraBySphere(P,t))},A=()=>{var t;(t=o.mainViewInstance)==null||t.resetCamera()},K=()=>{var t,i;const a=(t=o.topViewInstance)==null?void 0:t.pointCloudInstance.camera;a&&((i=o.mainViewInstance)==null||i.applyCameraTarget(a))};u(()=>{if(f.current&&(n==null?void 0:n.url)){let t=o.mainViewInstance;!t&&C.width&&(t=new H({container:f.current,isOrthographicCamera:!0,orthographicParams:S.getDefaultOrthographicParams(C),config:r}),o.setMainViewInstance(t))}},[C,n]),u(()=>{var t;if(f.current&&(n==null?void 0:n.url)&&n.result&&o.mainViewInstance){let i=o.mainViewInstance;const a=S.getBoxParamsFromResultList(n.result);a.forEach(c=>{var V;const b=(V=U.getColorFromConfig({attribute:c.attribute},ve(k({},r),{attributeConfigurable:!0}),{}))==null?void 0:V.hex;i==null||i.addBoxToSense(c,b)}),i.render(),o.setPointCloudResult(a);const s=S.getRectParamsFromResultList(n.result);o.setRectList(s),o.setPointCloudValid((t=Y(n.result))==null?void 0:t.valid)}},[n,o.mainViewInstance]),u(()=>{var t,i,a,s,c;if(((t=d==null?void 0:d.info)==null?void 0:t.id)!==void 0){x(E.Top);const b=(s=(a=(i=o.topViewInstance)==null?void 0:i.pointCloudInstance)==null?void 0:a.camera.zoom)!=null?s:1;(c=o.mainViewInstance)==null||c.updateCameraZoom(b)}},[(v=d==null?void 0:d.info)==null?void 0:v.id]),u(()=>{var t,i,a,s;if(P){x(E.Top);const c=(a=(i=(t=o.topViewInstance)==null?void 0:t.pointCloudInstance)==null?void 0:i.camera.zoom)!=null?a:1;(s=o.mainViewInstance)==null||s.updateCameraZoom(c)}},[P]),u(()=>(window.addEventListener("keydown",B),()=>{window.removeEventListener("keydown",B)}),[]);const B=t=>{if(t.keyCode===we.Esc){h(!1);return}},L=G(()=>({reset3DView:A,setTarget3DView:x,isActive:!!d,followTopView:K}),[d,o.mainViewInstance]);u(()=>{var t,i,a;const s=o.pointCloudBoxList.filter(c=>c.attribute===l);(s==null?void 0:s.length)>0&&((t=o.mainViewInstance)==null||t.clearHighlightBoxes(),(i=o.mainViewInstance)==null||i.highlightBoxes(s)),s.length===0&&((a=o.mainViewInstance)==null||a.clearHighlightBoxesAndRender())},[l,o.mainViewInstance]);const M=e.createElement(e.Fragment,null,e.createElement(le,{onChange:t=>{var i;(i=o.mainViewInstance)==null||i.updatePointSize({customSize:t})}}),e.createElement("span",{style:{marginRight:8}},I("ShowArrows")),e.createElement(te,{size:"small",checked:g,onChange:t=>{var i;F(t),(i=o.mainViewInstance)==null||i.setShowDirection(t)}}),w&&e.createElement(_.Provider,{value:L},e.createElement(R,{isEnlarge:w})));return e.createElement(J,{className:j({[m("point-cloud-3d-container")]:!0,[m("point-cloud-container","zoom")]:w}),title:w?e.createElement("div",{style:{display:"flex",alignItems:"center"}},e.createElement(se,{style:{cursor:"pointer",marginRight:"12px"},onClick:()=>{h(!1)}}),I("3DView")):e.createElement(ae,{title:I("3DView"),onClick:()=>{h(!0)}}),toolbar:M},e.createElement("div",{className:m("point-cloud-3d-content")},!w&&e.createElement(_.Provider,{value:L},e.createElement(R,null)),e.createElement("div",{className:m("point-cloud-3d-view"),id:fe,ref:f})))};var Ve=X(W,null,null,{context:re})(Ce);export{Ve as default};
@@ -1 +1 @@
1
- import{EPointCloudPattern as z}from"@labelbee/lb-utils";import nt,{useState as n,useRef as Vt,useMemo as it,useEffect as E}from"react";import{ActionsHistory as st,EToolName as G}from"@labelbee/lb-annotation";import{useDispatch as Bt}from"../../store/ctx.js";import{ChangeSave as Ot}from"../../store/annotation/actionCreators.js";import Ht from"../../store/annotatedBox/index.js";var Rt=Object.defineProperty,jt=Object.defineProperties,zt=Object.getOwnPropertyDescriptors,lt=Object.getOwnPropertySymbols,Et=Object.prototype.hasOwnProperty,Gt=Object.prototype.propertyIsEnumerable,rt=(a,e,i)=>e in a?Rt(a,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):a[e]=i,Nt=(a,e)=>{for(var i in e||(e={}))Et.call(e,i)&&rt(a,i,e[i]);if(lt)for(var i of lt(e))Gt.call(e,i)&&rt(a,i,e[i]);return a},Ft=(a,e)=>jt(a,zt(e)),Mt=(a,e,i)=>new Promise((m,C)=>{var S=v=>{try{f(i.next(v))}catch(s){C(s)}},_=v=>{try{f(i.throw(v))}catch(s){C(s)}},f=v=>v.done?m(v.value):Promise.resolve(v.value).then(S,_);f((i=i.apply(a,e)).next())});const at=nt.createContext({pointCloudBoxList:[],pointCloudSphereList:[],displayPointCloudList:[],displaySphereList:[],displayLineList:[],polygonList:[],lineList:[],selectedID:"",selectedIDs:[],highlightIDs:[],setHighlightIDs:()=>{},valid:!0,setSelectedIDs:()=>{},setPointCloudResult:()=>{},setPointCloudSphereList:()=>{},setPointCloudValid:()=>{},setTopViewInstance:()=>{},setSideViewInstance:()=>{},setBackViewInstance:()=>{},setMainViewInstance:()=>{},addSelectedID:()=>{},addHighlightID:()=>{},selectedAllBoxes:()=>{},addPointCloudBox:()=>[],addPointCloudSphere:()=>[],setPolygonList:()=>{},setLineList:()=>{},zoom:1,setZoom:()=>{},history:new st,hideAttributes:[],setHideAttributes:()=>{},toggleAttributesVisible:()=>{},reRender:()=>{},setAttrPanelLayout:()=>{},attrPanelLayout:"",syncAllViewPointCloudColor:()=>Promise.resolve(),defaultAttribute:"",setDefaultAttribute:()=>{},pointCloudPattern:G.Rect,setPointCloudPattern:()=>{},selectSpecAttr:()=>{},globalPattern:z.Detection,setGlobalPattern:()=>{},setPtSegmentInstance:()=>{},segmentation:[],setSegmentation:()=>{},clearAllDetectionInstance:()=>{},highlight2DDataList:[],setHighlight2DDataList:()=>{},cuboidBoxIn2DView:!0,setCuboidBoxIn2DView:a=>{},imageSizes:{},cacheImageNodeSize:()=>{}}),Tt=({children:a})=>{const[e,i]=n([]),[m,C]=n([]),[S,_]=n([]),[f,v]=n([]),[s,x]=n([]),[y,V]=n([]),[N,dt]=n(!0),[F,ct]=n(!0),[M,ut]=n(1),[d,T]=n(),[Z,k]=n(),[q,J]=n(),[l,K]=n(),[Q,pt]=n(""),[B,gt]=n(G.Rect),ht=Vt(new st).current,[p,O]=n([]),[U,vt]=n(""),[H,Pt]=n(z.Detection),[b,W]=n(void 0),[R,ft]=n([]),[j,mt]=n([]),g=Ht(),[X,bt]=n({}),It=Bt(),Ct=r=>{const{imgNode:c,path:u}=r;u&&c&&bt(P=>Ft(Nt({},P),{[u]:{width:c.width,height:c.height}}))},Y=it(()=>s.length===1?s[0]:"",[s]),w=it(()=>{const r=e.find(t=>t.id===Y),c=t=>{const o=e.concat(t);return i(o),o},u=t=>{const o=m.concat(t);return C(o),o},P=t=>{dt(t!==!1)},h=t=>{t===void 0&&x([]),typeof t=="string"&&x([t]),Array.isArray(t)&&x(Array.from(new Set(t)))},yt=t=>{s.includes(t)?h(s.filter(o=>o!==t)):h([...s,t])},Lt=t=>{y.includes(t)?V([]):V([t])},Dt=()=>{if(B===G.Rect){const t=e.map(o=>o.id);h(t),d==null||d.pointCloud2dOperation.setSelectedIDs(t)}},wt=t=>{h(e.filter(o=>o.attribute===t).map(o=>o.id))},$=e.filter(t=>!p.includes(t.attribute)),tt=m.filter(t=>!p.includes(t.attribute)),et=f.filter(t=>t.attribute&&!p.includes(t.attribute)),At=t=>{if(p.includes(t))O(p.filter(o=>o!==t));else{const o=p.concat(t);O(o)}},_t=(t=$,o=S,L=tt,A=et,D=R)=>{var I;l==null||l.clearAllBox(),l==null||l.clearAllSphere(),d==null||d.updatePolygonList(t,o),d==null||d.updatePointList(L),d==null||d.updateLineList(A),l==null||l.generateBoxes(t),l==null||l.generateSpheres(L),(I=b==null?void 0:b.store)==null||I.updateCurrentSegment(D),ot(t)},xt=()=>{T(void 0),k(void 0),J(void 0),K(void 0)},ot=(t,o)=>Mt(void 0,null,function*(){var L;if(!l)return;const A=l.pointCloudObject;if(!!A)try{const D=yield l.getHighlightIndexByMappingImgList({mappingImgList:o!=null?o:j,points:A.geometry.attributes.position.array}),I=yield l==null?void 0:l.highlightOriginPointCloud(t,D);return I&&((L=d==null?void 0:d.pointCloudInstance)==null||L.updateColor(I)),I}catch(D){console.error(D)}});return{selectedID:Y,pointCloudBoxList:e,pointCloudSphereList:m,displayPointCloudList:$,displaySphereList:tt,displayLineList:et,selectedIDs:s,setPointCloudResult:i,setSelectedIDs:h,addPointCloudBox:c,addPointCloudSphere:u,setPointCloudSphereList:C,valid:N,selectedPointCloudBox:r,setPointCloudValid:P,addSelectedID:yt,addHighlightID:Lt,selectedAllBoxes:Dt,topViewInstance:d,setTopViewInstance:T,sideViewInstance:Z,setSideViewInstance:k,backViewInstance:q,setBackViewInstance:J,mainViewInstance:l,setMainViewInstance:K,polygonList:S,setPolygonList:_,lineList:f,setLineList:v,zoom:M,setZoom:ut,history:ht,toggleAttributesVisible:At,hideAttributes:p,setHideAttributes:O,reRender:_t,attrPanelLayout:U,setAttrPanelLayout:vt,syncAllViewPointCloudColor:ot,defaultAttribute:Q,setDefaultAttribute:pt,pointCloudPattern:B,setPointCloudPattern:gt,selectSpecAttr:wt,globalPattern:H,setGlobalPattern:t=>{H!==t&&(It(Ot),Pt(t),t===z.Detection&&W(void 0))},ptSegmentInstance:b,setPtSegmentInstance:W,segmentation:R,setSegmentation:ft,clearAllDetectionInstance:xt,highlight2DDataList:j,setHighlight2DDataList:mt,cuboidBoxIn2DView:F,setCuboidBoxIn2DView:ct,imageSizes:X,cacheImageNodeSize:Ct,highlightIDs:y,setHighlightIDs:V}},[N,s,e,m,S,f,d,Z,q,l,M,p,U,Q,B,H,b,R,j,F,X,y]);E(()=>{var r,c,u;(r=g==null?void 0:g.setPointCloudBoxList)==null||r.call(g,e),(c=g==null?void 0:g.setHighlightIDs)==null||c.call(g,y),(u=g==null?void 0:g.setSelectedIDs)==null||u.call(g,s)},[e,s,y]),E(()=>{var r;(r=g==null?void 0:g.setPtCtx)==null||r.call(g,w)},[w]);const St=()=>{const r=e.filter(h=>p.includes(h.attribute)),{setSelectedIDs:c,reRender:u}=w,P=r.map(h=>h.id);P.length>0&&c(s.filter(h=>!P.includes(h))),u()};return E(()=>{var r,c,u,P;St(),(c=(r=d==null?void 0:d.toolInstance)==null?void 0:r.setHiddenAttributes)==null||c.call(r,p),(P=(u=b==null?void 0:b.store)==null?void 0:u.setHiddenAttributes)==null||P.call(u,p)},[p]),nt.createElement(at.Provider,{value:w},a)};export{at as PointCloudContext,Tt as PointCloudProvider};
1
+ import{EPointCloudPattern as Y}from"@labelbee/lb-utils";import Be,{useState as r,useRef as it,useMemo as j,useCallback as k,useEffect as $}from"react";import{EPointCloudBoxRenderTrigger as F,calcResetAreasAndBoxIds as st}from"../../utils/ToolPointCloudBoxRenderHelper.js";import{ActionsHistory as _e,EToolName as ee,uuid as rt}from"@labelbee/lb-annotation";import{useDispatch as lt}from"../../store/ctx.js";import{ChangeSave as at}from"../../store/annotation/actionCreators.js";import ct from"../../store/annotatedBox/index.js";import Ve from"lodash";import{addMapIndirectWeakSetItem as Ne}from"./utils/map.js";var dt=Object.defineProperty,ut=Object.defineProperties,pt=Object.getOwnPropertyDescriptors,Oe=Object.getOwnPropertySymbols,mt=Object.prototype.hasOwnProperty,ft=Object.prototype.propertyIsEnumerable,He=(a,o,c)=>o in a?dt(a,o,{enumerable:!0,configurable:!0,writable:!0,value:c}):a[o]=c,E=(a,o)=>{for(var c in o||(o={}))mt.call(o,c)&&He(a,c,o[c]);if(Oe)for(var c of Oe(o))ft.call(o,c)&&He(a,c,o[c]);return a},Me=(a,o)=>ut(a,pt(o)),gt=(a,o,c)=>new Promise((L,A)=>{var B=u=>{try{P(c.next(u))}catch(C){A(C)}},G=u=>{try{P(c.throw(u))}catch(C){A(C)}},P=u=>u.done?L(u.value):Promise.resolve(u.value).then(B,G);P((c=c.apply(a,o)).next())});const z=a=>Ve.pick(a,["id","attribute","width","height","x","y","imageName"]),je=Be.createContext({rectList:[],pointCloudBoxList:[],pointCloudSphereList:[],displayPointCloudList:[],displaySphereList:[],displayLineList:[],polygonList:[],lineList:[],selectedID:"",selectedIDs:[],highlightIDs:[],setHighlightIDs:()=>{},valid:!0,setSelectedIDs:()=>{},setPointCloudResult:()=>{},setPointCloudSphereList:()=>{},setPointCloudValid:()=>{},setTopViewInstance:()=>{},setSideViewInstance:()=>{},setBackViewInstance:()=>{},setMainViewInstance:()=>{},addSelectedID:()=>{},addHighlightID:()=>{},selectedAllBoxes:()=>{},addPointCloudBox:()=>[],addPointCloudSphere:()=>[],setPolygonList:()=>{},setRectList:()=>{},addRectIn2DView:()=>{},removeRectIn2DView:()=>{},updateRectIn2DView:()=>{},setLineList:()=>{},zoom:1,setZoom:()=>{},history:new _e,hideAttributes:[],setHideAttributes:()=>{},toggleAttributesVisible:()=>{},reRender:()=>{},setAttrPanelLayout:()=>{},attrPanelLayout:"",syncAllViewPointCloudColor:()=>Promise.resolve(),defaultAttribute:"",setDefaultAttribute:()=>{},pointCloudPattern:ee.Rect,setPointCloudPattern:()=>{},selectSpecAttr:()=>{},globalPattern:Y.Detection,setGlobalPattern:()=>{},setPtSegmentInstance:()=>{},segmentation:[],setSegmentation:()=>{},clearAllDetectionInstance:()=>{},highlight2DDataList:[],setHighlight2DDataList:()=>{},cuboidBoxIn2DView:!0,setCuboidBoxIn2DView:a=>{},imageSizes:{},cacheImageNodeSize:()=>{},addRectFromPointCloudBoxByImageName:a=>!1,removeRectBySpecifyId:(a,o,c)=>!1,removeRectByPointCloudBoxId:a=>!1,rectRotateSensitivity:2,setRectRotateSensitivity:()=>{},imageNamePointCloudBoxMap:new Map,linkageImageNameRectMap:new Map,updateRectListByReducer:()=>{}}),ht=({children:a})=>{const[o,c]=r([]),[L,A]=r([]),[B,G]=r([]),[P,u]=r([]),[C,ke]=r([]),[v,T]=r([]),[_,Z]=r([]),[te,Fe]=r(!0),[oe,Ee]=r(2),[ne,ze]=r(!0),[ie,Ge]=r(1),[f,se]=r(),[re,le]=r(),[ae,ce]=r(),[p,de]=r(),[ue,Te]=r(""),[W,Ze]=r(ee.Rect),q=it(new _e).current,[g,J]=r([]),[pe,We]=r(""),[K,qe]=r(Y.Detection),[D,me]=r(void 0),[Q,Je]=r([]),[U,Ke]=r([]),h=ct(),[fe,Qe]=r({}),Ue=lt(),Xe=n=>{const{imgNode:i,path:t}=n;t&&i&&Qe(d=>Me(E({},d),{[t]:{width:i.width,height:i.height}}))},ge=j(()=>v.length===1?v[0]:"",[v]),N=k((n,i,t="extId")=>{const d=t||"id",l=new Set(i);return u(m=>{let R=!1;const x=m.filter(H=>{const X=H[d],M=l.has(X)?H.imageName!==n:!0;return M||(R=!0),M});return R?x:m}),!0},[]),he=k(n=>{const i=o.map(t=>t.id);return N(n,i,"extId")},[o,N]),Ie=k(n=>{if(!n)return!1;const i=o.filter(t=>Array.isArray(t.rects)).map(t=>{const{id:d,attribute:l,trackID:m}=t,R=t.rects.find(x=>x.imageName===n);if(R){const x=Ve.pick(R,["width","height","x","y","imageName"]);return Me(E({},x),{id:rt(),attribute:l,order:m,extId:d,lineDash:[]})}return null}).filter(t=>t!==null);return i.length?(u(t=>{const d=new Set(t.filter(m=>n===m.imageName).map(m=>m.extId)),l=i.filter(m=>d.has(m.extId)===!1);return l.length?[...t,...l]:t}),!0):!1},[o]),ve=j(()=>o.filter(i=>Array.isArray(i.rects)&&i.rects.length>0).reduce((i,t)=>{var d;return(d=t.rects)==null||d.forEach(l=>{const{imageName:m}=l;if(!m){console.warn("Missing image name"),console.trace(l,t);return}Ne(i,m,t.id,t)}),i},new Map),[o]),Pe=k(n=>{u(i=>n(i,z))},[z]),ye=j(()=>P.filter(n=>n.extId!==void 0&&n.id!==void 0).reduce((n,i)=>{const t=i.imageName;return t?(Ne(n,t,i.extId,i),n):(console.warn("missing image name"),console.log(i,P),n)},new Map),[P]),O=j(()=>{const n=o.find(e=>e.id===ge),i=e=>{const s=o.concat(e);return c(s),s},t=e=>{const s=L.concat(e);return A(s),s},d=e=>{Fe(e!==!1)},l=e=>{e===void 0&&T([]),typeof e=="string"&&T([e]),Array.isArray(e)&&T(Array.from(new Set(e)))},m=e=>{v.includes(e)?l(v.filter(s=>s!==e)):l([...v,e])},R=e=>{const s=z(e);u(I=>[...I,s])},x=(e,s=!1)=>{const I=z(e);u(y=>y.map(S=>S.id===e.id?s?E(E({},S),I):I:S))},H=e=>{u(s=>s.filter(I=>!e.find(y=>y.id===I.id)))},X=e=>{_.includes(e)?Z([]):Z([e])},M=()=>{if(W===ee.Rect){const e=o.map(s=>s.id);l(e),f==null||f.pointCloud2dOperation.setSelectedIDs(e)}},$e=e=>{l(o.filter(s=>s.attribute===e).map(s=>s.id))},Se=o.filter(e=>!g.includes(e.attribute)),be=L.filter(e=>!g.includes(e.attribute)),we=C.filter(e=>e.attribute&&!g.includes(e.attribute)),et=e=>{if(g.includes(e))J(g.filter(s=>s!==e));else{const s=g.concat(e);J(s)}},tt=(e=Se,s=B,I=be,y=we,S=Q)=>{var V;p==null||p.clearAllBox(),p==null||p.clearAllSphere(),f==null||f.updatePolygonList(e,s),f==null||f.updatePointList(I),f==null||f.updateLineList(y),p==null||p.generateBoxes(e),p==null||p.generateSpheres(I),(V=D==null?void 0:D.store)==null||V.updateCurrentSegment(S),Ce(F.Default,e)},ot=()=>{se(void 0),le(void 0),ce(void 0),de(void 0)},Ce=(e,s,I)=>gt(void 0,null,function*(){var y,S,V;if(!p)return;const Re=p.pointCloudObject;if(!Re)return;let xe=[],Le=[];try{if(s&&q.record.length){const{record:b,recordIndex:w}=q;let De=w;w>0&&(e===F.SingleToggleValid||e===F.SingleRotate||e===F.Single&&s.length===((y=b[w])==null?void 0:y.pointCloudBoxList.length))&&(De=w-1);let nt=(S=b[De])==null?void 0:S.pointCloudBoxList;const Ae=st(e,s,nt);xe=Ae.modifiedBoxIds,Le=Ae.resetAreas}}catch(b){console.error("call calcResetAreasAndBoxIds error",b)}try{const b=yield p.getHighlightIndexByMappingImgList({mappingImgList:I!=null?I:U,points:Re.geometry.attributes.position.array}),w=yield p==null?void 0:p.highlightOriginPointCloud(s,b,{modifiedBoxIds:xe,resetAreas:Le});return w&&((V=f==null?void 0:f.pointCloudInstance)==null||V.updateColor(w)),w}catch(b){console.error("call highlightOriginPointCloud error",b)}});return{selectedID:ge,pointCloudBoxList:o,pointCloudSphereList:L,displayPointCloudList:Se,displaySphereList:be,displayLineList:we,selectedIDs:v,setPointCloudResult:c,setSelectedIDs:l,addPointCloudBox:i,addPointCloudSphere:t,setPointCloudSphereList:A,valid:te,selectedPointCloudBox:n,setPointCloudValid:d,addSelectedID:m,addHighlightID:X,selectedAllBoxes:M,topViewInstance:f,setTopViewInstance:se,sideViewInstance:re,setSideViewInstance:le,backViewInstance:ae,setBackViewInstance:ce,mainViewInstance:p,setMainViewInstance:de,polygonList:B,setPolygonList:G,rectList:P,setRectList:u,addRectIn2DView:R,removeRectIn2DView:H,updateRectIn2DView:x,lineList:C,setLineList:ke,zoom:ie,setZoom:Ge,history:q,toggleAttributesVisible:et,hideAttributes:g,setHideAttributes:J,reRender:tt,attrPanelLayout:pe,setAttrPanelLayout:We,syncAllViewPointCloudColor:Ce,defaultAttribute:ue,setDefaultAttribute:Te,pointCloudPattern:W,setPointCloudPattern:Ze,selectSpecAttr:$e,globalPattern:K,setGlobalPattern:e=>{K!==e&&(Ue(at),qe(e),e===Y.Detection&&me(void 0))},ptSegmentInstance:D,setPtSegmentInstance:me,segmentation:Q,setSegmentation:Je,clearAllDetectionInstance:ot,highlight2DDataList:U,setHighlight2DDataList:Ke,cuboidBoxIn2DView:ne,setCuboidBoxIn2DView:ze,imageSizes:fe,cacheImageNodeSize:Xe,highlightIDs:_,setHighlightIDs:Z,removeRectByPointCloudBoxId:he,removeRectBySpecifyId:N,addRectFromPointCloudBoxByImageName:Ie,rectRotateSensitivity:oe,setRectRotateSensitivity:Ee,imageNamePointCloudBoxMap:ve,linkageImageNameRectMap:ye,updateRectListByReducer:Pe}},[te,v,o,L,B,C,P,f,re,ae,p,ie,g,pe,ue,W,K,D,Q,U,ne,fe,_,he,N,Ie,oe,ve,ye,Pe]);$(()=>{var n,i,t;(n=h==null?void 0:h.setPointCloudBoxList)==null||n.call(h,o),(i=h==null?void 0:h.setHighlightIDs)==null||i.call(h,_),(t=h==null?void 0:h.setSelectedIDs)==null||t.call(h,v)},[o,v,_]),$(()=>{var n;(n=h==null?void 0:h.setPtCtx)==null||n.call(h,O)},[O]);const Ye=()=>{const n=o.filter(l=>g.includes(l.attribute)),{setSelectedIDs:i,reRender:t}=O,d=n.map(l=>l.id);d.length>0&&i(v.filter(l=>!d.includes(l))),t()};return $(()=>{var n,i,t,d;Ye(),(i=(n=f==null?void 0:f.toolInstance)==null?void 0:n.setHiddenAttributes)==null||i.call(n,g),(d=(t=D==null?void 0:D.store)==null?void 0:t.setHiddenAttributes)==null||d.call(t,g)},[g]),Be.createElement(je.Provider,{value:O},a)};export{je as PointCloudContext,ht as PointCloudProvider};
@@ -1 +1 @@
1
- import{PointCloudContext as ee}from"./PointCloudContext.js";import{useRotate as te}from"./hooks/useRotate.js";import{useBoxes as oe}from"./hooks/useBoxes.js";import{useSingleBox as re}from"./hooks/useSingleBox.js";import{useSphere as ne}from"./hooks/useSphere.js";import{useContext as se,useEffect as c}from"react";import{EPointCloudName as ie,CommonToolUtils as ae,AttributeUtils as ue,EToolName as P,cTool as le}from"@labelbee/lb-annotation";import{message as S}from"antd";import{connect as de}from"react-redux";import{a2MapStateToProps as ce}from"../../store/annotation/map.js";import{useStatus as pe}from"./hooks/useStatus.js";import{usePointCloudViews as me}from"./hooks/usePointCloudViews.js";import{LabelBeeContext as ve,useDispatch as be}from"../../store/ctx.js";import{useHistory as Pe}from"./hooks/useHistory.js";import{useAttribute as fe}from"./hooks/useAttribute.js";import{useConfig as ye}from"./hooks/useConfig.js";import{usePolygon as we}from"./hooks/usePolygon.js";import{useLine as Ce}from"./hooks/useLine.js";import{useTranslation as he}from"react-i18next";import{PreDataProcess as ge}from"../../store/annotation/actionCreators.js";var Se=Object.defineProperty,xe=Object.defineProperties,ke=Object.getOwnPropertyDescriptors,D=Object.getOwnPropertySymbols,_e=Object.prototype.hasOwnProperty,Ve=Object.prototype.propertyIsEnumerable,I=(l,r,u)=>r in l?Se(l,r,{enumerable:!0,configurable:!0,writable:!0,value:u}):l[r]=u,f=(l,r)=>{for(var u in r||(r={}))_e.call(r,u)&&I(l,u,r[u]);if(D)for(var u of D(r))Ve.call(r,u)&&I(l,u,r[u]);return l},y=(l,r)=>xe(l,ke(r));const{EPolygonPattern:Le}=le,Be=({currentData:l,config:r,checkMode:u,configString:E,imgIndex:x,toolInstanceRef:i})=>{const t=se(ee),{changeSelectedBoxValid:T,selectNextBox:N,selectPrevBox:H,updateSelectedBox:k,deleteSelectedPointCloudBoxAndPolygon:K}=re(),{selectedSphere:w,updatePointCloudSphere:U}=ne(),{clearAllResult:C,updatePointCloudPattern:z}=pe(),{copySelectedBoxes:F,pasteSelectedBoxes:q,copiedBoxes:G}=oe({config:r}),{updateRotate:h}=te({currentData:l}),{updatePointCloudData:v,topViewSelectedChanged:_}=me(),{redo:V,undo:L,pushHistoryWithList:M,pushHistoryUnderUpdatePolygon:R,pushHistoryUnderUpdateLine:W}=Pe(),Y=be(),{syncThreeViewsAttribute:B}=fe(),{syncAllViewsConfig:$,reRenderTopViewRange:J}=ye(),{selectedPolygon:O}=we(),{selectedLine:j}=Ce(),{t:g}=he(),b=e=>{var o;const{topViewInstance:n}=t;!n||(o=n.pointCloud2dOperation)==null||o.updateSelectedPolygonsPoints(e)},Q=(e,o)=>{var n,a;const{topViewInstance:d,mainViewInstance:s}=t;if(!d)return;const{pointCloud2dOperation:p}=d;switch(e){case"q":{h(2);break}case"e":h(-2);break;case"g":h(180);break;case"u":{const m=p.pattern===Le.Normal?P.Rect:P.Polygon;z(m);const Z={[P.Polygon]:g("PolygonPattern"),[P.Rect]:g("RectPattern")};S.success(g("ChangePatternMsg",{pattern:Z[m]})),p.clearActiveStatus(),p.clearDrawingStatus()}break;case"+":s==null||s.updatePointSize({zoomIn:!0});break;case"-":s==null||s.updatePointSize({zoomIn:!1});break;case"v":t.setPointCloudValid(!t.valid);break;case"tab":if(o.shiftKey){H();break}N(),o.preventDefault();break;case"f":T();break;case"arrowup":b({y:-1});break;case"arrowdown":b({y:1});break;case"arrowleft":b({x:-1});break;case"arrowright":b({x:1});break;case"delete":K();break;default:{if(((n=r.attributeList)==null?void 0:n.length)>0){const m=ue.getAttributeByKeycode(o.keyCode,r.attributeList);m!==void 0&&((a=i.current)==null||a.setDefaultAttribute(m))}return}}},X=(e,o)=>{switch(e){case"c":F();break;case"v":q();break;case"a":o.preventDefault(),t.selectedAllBoxes();break;case"z":{o.shiftKey?V():L();break}}},A=e=>{if(!ae.hotkeyFilter(e)||u===!0)return;const o=e.key.toLocaleLowerCase();if(e.ctrlKey){X(o,e);return}Q(o,e)};return c(()=>{const{topViewInstance:e}=t;if(!!e)return window.addEventListener("keydown",A),()=>{window.removeEventListener("keydown",A)}},[t,G,r,t.pointCloudBoxList,t.polygonList]),c(()=>{$(r)},[E]),c(()=>{(r==null?void 0:r.radius)&&J(r==null?void 0:r.radius)},[r==null?void 0:r.radius]),c(()=>{v==null||v()},[x,t.mainViewInstance]),c(()=>{t.setHideAttributes([])},[x]),c(()=>{i.current.setDefaultAttribute=e=>{var o,n,a,d;B(e);const s=t.selectedPointCloudBox;if(s){s.attribute=e;const p=Y(ge({tool:ie.PointCloud,dataList:[s],stepConfig:r,action:"viewUpdateBox"}));s.valid=p[0].valid;const m=k(s);(a=(n=(o=t==null?void 0:t.topViewInstance)==null?void 0:o.pointCloud2dOperation)==null?void 0:n.setPolygonValidAndRender)==null||a.call(n,s.id,!0,s.valid),t.mainViewInstance&&_({newSelectedBox:s,newPointCloudList:m})}if(O&&R(y(f({},O),{attribute:e})),j&&W(y(f({},j),{attribute:e})),w){const p=U(y(f({},w),{attribute:e}));t.mainViewInstance&&((d=t.mainViewInstance)==null||d.generateSpheres(p),_({newSelectedSphere:w,newSphereList:p}))}},i.current.setSubAttribute=(e,o)=>{var n;const a=t.selectedPointCloudBox;if(a){const d=(n=a==null?void 0:a.subAttribute)!=null?n:{};a.subAttribute=y(f({},d),{[e]:o}),k(a)}},i.current.clearResult=()=>{C==null||C()},i.current.redo=()=>{V()},i.current.undo=()=>{L()},i.current.setValid=e=>{i.current.valid=e,setTimeout(()=>{t.setPointCloudValid(e),e===!1&&C()})},i.current.setForbidOperation=e=>{var o,n;(n=(o=t.topViewInstance)==null?void 0:o.pointCloud2dOperation)==null||n.setForbidOperation(e),e===!0&&t.setSelectedIDs(void 0)},i.current.setShowDefaultCursor=e=>{var o,n;(n=(o=t.topViewInstance)==null?void 0:o.pointCloud2dOperation)==null||n.setShowDefaultCursor(e)},i.current.asyncData=e=>{setTimeout(()=>{v==null||v(e)})}},[t.pointCloudBoxList,t.pointCloudSphereList,t.selectedID,t.valid,t.polygonList,t.lineList,t.mainViewInstance,t.ptSegmentInstance]),c(()=>{i.current.updateSegmentTool=e=>{var o;(o=t.ptSegmentInstance)==null||o.emit(e)},i.current.segmentInstance=t.ptSegmentInstance},[t.ptSegmentInstance]),c(()=>{i.current.history={pushHistory:e=>{M({pointCloudBoxList:e})},initRecord:()=>{}}},[]),c(()=>{var e;const o=(e=t.topViewInstance)==null?void 0:e.toolInstance;if(!o||u)return;const n=s=>{B(s)},a=s=>{S.error(s)},d=s=>{S.info(s)};return o.on("syncAttribute",n),o.on("messageError",a),o.on("messageInfo",d),()=>{o.unbind("syncAttribute",n),o.unbind("messageError",a),o.unbind("messageInfo",d)}},[t.topViewInstance]),null};var Oe=de(ce,null,null,{context:ve})(Be);export{Oe as default};
1
+ import{PointCloudContext as oe}from"./PointCloudContext.js";import{useRotate as re}from"./hooks/useRotate.js";import{useRotateEdge as se}from"./hooks/useRotateEdge.js";import{useBoxes as ne}from"./hooks/useBoxes.js";import{useSingleBox as ie}from"./hooks/useSingleBox.js";import{useSphere as ae}from"./hooks/useSphere.js";import{useContext as ue,useEffect as c}from"react";import{EPointCloudName as le,CommonToolUtils as de,AttributeUtils as ce,EToolName as P,cTool as pe}from"@labelbee/lb-annotation";import{message as g}from"antd";import{connect as me}from"react-redux";import{a2MapStateToProps as ve}from"../../store/annotation/map.js";import{useStatus as be}from"./hooks/useStatus.js";import{usePointCloudViews as Pe}from"./hooks/usePointCloudViews.js";import{LabelBeeContext as fe,useDispatch as ye}from"../../store/ctx.js";import{useHistory as we}from"./hooks/useHistory.js";import{useAttribute as Ce}from"./hooks/useAttribute.js";import{useConfig as he}from"./hooks/useConfig.js";import{usePolygon as ge}from"./hooks/usePolygon.js";import{useLine as Se}from"./hooks/useLine.js";import{useTranslation as ke}from"react-i18next";import{PreDataProcess as xe}from"../../store/annotation/actionCreators.js";import{useLatest as _e}from"ahooks";var Le=Object.defineProperty,Ve=Object.defineProperties,Be=Object.getOwnPropertyDescriptors,E=Object.getOwnPropertySymbols,Oe=Object.prototype.hasOwnProperty,je=Object.prototype.propertyIsEnumerable,I=(u,r,l)=>r in u?Le(u,r,{enumerable:!0,configurable:!0,writable:!0,value:l}):u[r]=l,f=(u,r)=>{for(var l in r||(r={}))Oe.call(r,l)&&I(u,l,r[l]);if(E)for(var l of E(r))je.call(r,l)&&I(u,l,r[l]);return u},y=(u,r)=>Ve(u,Be(r));const{EPolygonPattern:Ae}=pe,Ee=({currentData:u,config:r,checkMode:l,configString:D,imgIndex:S,toolInstanceRef:i})=>{const t=ue(oe),{changeSelectedBoxValid:T,selectNextBox:N,selectPrevBox:H,updateSelectedBox:k,deleteSelectedPointCloudBoxAndPolygon:K}=ie(),{selectedSphere:w,updatePointCloudSphere:R}=ae(),{clearAllResult:C,updatePointCloudPattern:U}=be(),{copySelectedBoxes:z,pasteSelectedBoxes:F,copiedBoxes:q}=ne({config:r}),{updateRotate:x}=re({currentData:u}),{updateRotateEdge:G}=se({currentData:u}),{updatePointCloudData:v,topViewSelectedChanged:_}=Pe(),{redo:L,undo:V,pushHistoryWithList:M,pushHistoryUnderUpdatePolygon:W,pushHistoryUnderUpdateLine:Y}=we(),$=ye(),{syncThreeViewsAttribute:B}=Ce(),{syncAllViewsConfig:J,reRenderTopViewRange:Q}=he(),{selectedPolygon:O}=ge(),{selectedLine:j}=Se(),{t:h}=ke(),X=_e(u),b=e=>{var o;const{topViewInstance:s}=t;!s||(o=s.pointCloud2dOperation)==null||o.updateSelectedPolygonsPoints(e)},Z=(e,o)=>{var s,a;const{topViewInstance:d,mainViewInstance:n}=t;if(!d)return;const{pointCloud2dOperation:p}=d;switch(e){case"q":{x(t.rectRotateSensitivity);break}case"e":x(-Number(t.rectRotateSensitivity));break;case"g":G(-90);break;case"u":{const m=p.pattern===Ae.Normal?P.Rect:P.Polygon;U(m);const te={[P.Polygon]:h("PolygonPattern"),[P.Rect]:h("RectPattern")};g.success(h("ChangePatternMsg",{pattern:te[m]})),p.clearActiveStatus(),p.clearDrawingStatus()}break;case"+":n==null||n.updatePointSize({zoomIn:!0});break;case"-":n==null||n.updatePointSize({zoomIn:!1});break;case"v":t.setPointCloudValid(!t.valid);break;case"tab":if(o.shiftKey){H();break}N(),o.preventDefault();break;case"f":T();break;case"arrowup":b({y:-1});break;case"arrowdown":b({y:1});break;case"arrowleft":b({x:-1});break;case"arrowright":b({x:1});break;case"delete":K(X.current);break;default:{if(((s=r.attributeList)==null?void 0:s.length)>0){const m=ce.getAttributeByKeycode(o.keyCode,r.attributeList);m!==void 0&&((a=i.current)==null||a.setDefaultAttribute(m))}return}}},ee=(e,o)=>{switch(e){case"c":z();break;case"v":F();break;case"a":o.preventDefault(),t.selectedAllBoxes();break;case"z":{o.shiftKey?L():V();break}}},A=e=>{if(!de.hotkeyFilter(e)||l===!0)return;const o=e.key.toLocaleLowerCase();if(e.ctrlKey){ee(o,e);return}Z(o,e)};return c(()=>{const{topViewInstance:e}=t;if(!!e)return window.addEventListener("keydown",A),()=>{window.removeEventListener("keydown",A)}},[t,q,r,t.pointCloudBoxList,t.polygonList]),c(()=>{J(r)},[D]),c(()=>{(r==null?void 0:r.radius)&&Q(r==null?void 0:r.radius)},[r==null?void 0:r.radius]),c(()=>{v==null||v()},[S,t.mainViewInstance]),c(()=>{t.setHideAttributes([])},[S]),c(()=>{i.current.setDefaultAttribute=e=>{var o,s,a,d;B(e);const n=t.selectedPointCloudBox;if(n){n.attribute=e;const p=$(xe({tool:le.PointCloud,dataList:[n],stepConfig:r,action:"viewUpdateBox"}));n.valid=p[0].valid;const m=k(n);(a=(s=(o=t==null?void 0:t.topViewInstance)==null?void 0:o.pointCloud2dOperation)==null?void 0:s.setPolygonValidAndRender)==null||a.call(s,n.id,!0,n.valid),t.mainViewInstance&&_({newSelectedBox:n,newPointCloudList:m})}if(O&&W(y(f({},O),{attribute:e})),j&&Y(y(f({},j),{attribute:e})),w){const p=R(y(f({},w),{attribute:e}));t.mainViewInstance&&((d=t.mainViewInstance)==null||d.generateSpheres(p),_({newSelectedSphere:w,newSphereList:p}))}},i.current.setSubAttribute=(e,o)=>{var s;const a=t.selectedPointCloudBox;if(a){const d=(s=a==null?void 0:a.subAttribute)!=null?s:{};a.subAttribute=y(f({},d),{[e]:o}),k(a)}},i.current.clearResult=()=>{C==null||C()},i.current.redo=()=>{L()},i.current.undo=()=>{V()},i.current.setValid=e=>{i.current.valid=e,setTimeout(()=>{t.setPointCloudValid(e),e===!1&&C()})},i.current.setForbidOperation=e=>{var o,s;(s=(o=t.topViewInstance)==null?void 0:o.pointCloud2dOperation)==null||s.setForbidOperation(e),e===!0&&t.setSelectedIDs(void 0)},i.current.setShowDefaultCursor=e=>{var o,s;(s=(o=t.topViewInstance)==null?void 0:o.pointCloud2dOperation)==null||s.setShowDefaultCursor(e)},i.current.asyncData=e=>{setTimeout(()=>{v==null||v(e)})}},[t.pointCloudBoxList,t.pointCloudSphereList,t.selectedID,t.valid,t.polygonList,t.lineList,t.mainViewInstance,t.ptSegmentInstance]),c(()=>{i.current.updateSegmentTool=e=>{var o;(o=t.ptSegmentInstance)==null||o.emit(e)},i.current.segmentInstance=t.ptSegmentInstance},[t.ptSegmentInstance]),c(()=>{i.current.history={pushHistory:e=>{M({pointCloudBoxList:e})},initRecord:()=>{}}},[]),c(()=>{var e;const o=(e=t.topViewInstance)==null?void 0:e.toolInstance;if(!o||l)return;const s=n=>{B(n)},a=n=>{g.error(n)},d=n=>{g.info(n)};return o.on("syncAttribute",s),o.on("messageError",a),o.on("messageInfo",d),()=>{o.unbind("syncAttribute",s),o.unbind("messageError",a),o.unbind("messageInfo",d)}},[t.topViewInstance]),null};var Ie=me(ve,null,null,{context:fe})(Ee);export{Ie as default};
@@ -1 +1 @@
1
- import{a2MapStateToProps as L}from"../../store/annotation/map.js";import{LabelBeeContext as z}from"../../store/ctx.js";import d,{useContext as R,useRef as f,useState as w,useEffect as g,useCallback as V,useMemo as B}from"react";import A from"../AnnotationView/index.js";import{connect as W}from"react-redux";import{PointCloudContext as T}from"./PointCloudContext.js";import G from"./components/TitleButton/index.js";import{Spin as H}from"antd";import N from"../../_virtual/highlightSegmentWorker.js";import{pointMappingLidar2image as Y}from"@labelbee/lb-annotation";import{debounce as $}from"lodash";var q=Object.defineProperty,J=Object.defineProperties,K=Object.getOwnPropertyDescriptors,x=Object.getOwnPropertySymbols,Q=Object.prototype.hasOwnProperty,U=Object.prototype.propertyIsEnumerable,D=(t,o,n)=>o in t?q(t,o,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[o]=n,X=(t,o)=>{for(var n in o||(o={}))Q.call(o,n)&&D(t,n,o[n]);if(x)for(var n of x(o))U.call(o,n)&&D(t,n,o[n]);return t},Z=(t,o)=>J(t,K(o));const ee=({path:t,url:o,calib:n,pcdUrl:c,highlightAttribute:a})=>{const{ptSegmentInstance:e,cacheImageNodeSize:O,imageSizes:E}=R(T),F=f(null),m=f(0),v=f({}),u=f(),[h,P]=w([]),[I,C]=w(!1),b=f(void 0);g(()=>()=>{m.current=0,v.current={},u.current=void 0},[c]);const _=V(()=>{var r,l,i;if(m.current=m.current+1,m.current===2){const s=(r=e==null?void 0:e.store)==null?void 0:r.originPoints;if(!s||!u.current){console.error("cacheMappingPCD2Img Error",{path:t,points:s,filterSize:u.current});return}v.current=(i=(l=Y(s,n,u.current))==null?void 0:l.pcdMapping)!=null?i:{}}},[e]),S=B(()=>$((l,i)=>{var s,y;if(l&&u.current){b.current&&((y=(s=b.current)==null?void 0:s.terminate)==null||y.call(s));const k=v.current,p=new N;p.current=p,C(!0),p.postMessage({cacheMap:k,indexes:l,defaultRGBA:i}),p.onmessage=M=>{P(M.data.annotations),p.terminate(),C(!1),p.current=void 0}}},100),[]);g(()=>{if(!(e==null?void 0:e.store))return;const r=e.store.getHighlightAttribute(a!=null?a:""),l=e==null?void 0:e.getColorFromConfig(a!=null?a:"");S(r.flat(),l.stroke)},[a,e]),g(()=>{if(e){const r=({newAttribute:l})=>{const i=e==null?void 0:e.getColorFromConfig(l);i&&P(h.map(s=>Z(X({},s),{defaultRGBA:i.stroke})))};return e.on("updateDefaultAttribute",r),()=>{e.unbind("updateDefaultAttribute",r)}}},[e,h]),g(()=>{if(e){const r=l=>{if(l.cacheSegData){const{cacheSegData:i}=l;if(i==null?void 0:i.indexes){const s=e.getColorFromConfig(i.attribute);S(i==null?void 0:i.indexes,s.stroke)}}else P([])};return e.on("syncPointCloudStatus",r),e.on("loadPCDFileEnd",_),()=>{e.unbind("syncPointCloudStatus",r),e.unbind("loadPCDFileEnd",_)}}},[e,c,E]);const j=r=>{O({path:t,imgNode:r}),u.current={width:r.width,height:r.height},_()};return d.createElement("div",{key:t,style:{position:"relative"},ref:F},d.createElement(G,{title:n.calName,style:{background:"rgba(0, 0, 0, 0.74)",color:"#FFFFFF",position:"absolute",top:10,left:10,zIndex:1}}),d.createElement(H,{spinning:I,delay:1e3},d.createElement(A,{size:{width:300,height:200},key:t,src:o,annotations:h,afterImgOnLoad:j})))},te=({currentData:t,highlightAttribute:o})=>{var n;const c=(n=t.mappingImgList)!=null?n:[];return(c==null?void 0:c.length)>0?d.createElement("div",{style:{position:"absolute",height:"100%",overflowY:"scroll",zIndex:100,width:300}},c==null?void 0:c.map((a,e)=>a.calib&&d.createElement(ee,{key:a.path+e,path:a.path,url:a.url,calib:a.calib,pcdUrl:t.url,highlightAttribute:o}))):null};var oe=W(L,null,null,{context:z})(te);export{oe as default};
1
+ import{a2MapStateToProps as z}from"../../store/annotation/map.js";import{LabelBeeContext as R}from"../../store/ctx.js";import f,{useContext as V,useRef as m,useState as x,useEffect as v,useCallback as B,useMemo as A}from"react";import W from"../AnnotationView/index.js";import{connect as T}from"react-redux";import{PointCloudContext as U}from"./PointCloudContext.js";import G from"./components/TitleButton/index.js";import{Spin as H}from"antd";import N from"../../_virtual/highlightSegmentWorker.js";import{pointMappingLidar2image as Y}from"@labelbee/lb-annotation";import{debounce as $}from"lodash";var q=Object.defineProperty,J=Object.defineProperties,K=Object.getOwnPropertyDescriptors,D=Object.getOwnPropertySymbols,Q=Object.prototype.hasOwnProperty,X=Object.prototype.propertyIsEnumerable,k=(t,o,n)=>o in t?q(t,o,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[o]=n,Z=(t,o)=>{for(var n in o||(o={}))Q.call(o,n)&&k(t,n,o[n]);if(D)for(var n of D(o))X.call(o,n)&&k(t,n,o[n]);return t},ee=(t,o)=>J(t,K(o));const te=({path:t,url:o,fallbackUrl:n,calib:c,pcdUrl:s,highlightAttribute:u})=>{const{ptSegmentInstance:e,cacheImageNodeSize:O,imageSizes:E}=V(U),F=m(null),g=m(0),h=m({}),p=m(),[P,_]=x([]),[I,C]=x(!1),S=m(void 0);v(()=>()=>{g.current=0,h.current={},p.current=void 0},[s]);const b=B(()=>{var r,l,i;if(g.current=g.current+1,g.current===2){const a=(r=e==null?void 0:e.store)==null?void 0:r.originPoints;if(!a||!p.current){console.error("cacheMappingPCD2Img Error",{path:t,points:a,filterSize:p.current});return}h.current=(i=(l=Y(a,c,p.current))==null?void 0:l.pcdMapping)!=null?i:{}}},[e]),y=A(()=>$((l,i)=>{var a,w;if(l&&p.current){S.current&&((w=(a=S.current)==null?void 0:a.terminate)==null||w.call(a));const M=h.current,d=new N;d.current=d,C(!0),d.postMessage({cacheMap:M,indexes:l,defaultRGBA:i}),d.onmessage=L=>{_(L.data.annotations),d.terminate(),C(!1),d.current=void 0}}},100),[]);v(()=>{if(!(e==null?void 0:e.store))return;const r=e.store.getHighlightAttribute(u!=null?u:""),l=e==null?void 0:e.getColorFromConfig(u!=null?u:"");y(r.flat(),l.stroke)},[u,e]),v(()=>{if(e){const r=({newAttribute:l})=>{const i=e==null?void 0:e.getColorFromConfig(l);i&&_(P.map(a=>ee(Z({},a),{defaultRGBA:i.stroke})))};return e.on("updateDefaultAttribute",r),()=>{e.unbind("updateDefaultAttribute",r)}}},[e,P]),v(()=>{if(e){const r=l=>{if(l.cacheSegData){const{cacheSegData:i}=l;if(i==null?void 0:i.indexes){const a=e.getColorFromConfig(i.attribute);y(i==null?void 0:i.indexes,a.stroke)}}else _([])};return e.on("syncPointCloudStatus",r),e.on("loadPCDFileEnd",b),()=>{e.unbind("syncPointCloudStatus",r),e.unbind("loadPCDFileEnd",b)}}},[e,s,E]);const j=r=>{O({path:t,imgNode:r}),p.current={width:r.width,height:r.height},b()};return f.createElement("div",{key:t,style:{position:"relative"},ref:F},f.createElement(G,{title:c.calName,style:{background:"rgba(0, 0, 0, 0.74)",color:"#FFFFFF",position:"absolute",top:10,left:10,zIndex:1}}),f.createElement(H,{spinning:I,delay:1e3},f.createElement(W,{size:{width:300,height:200},key:t,src:o,fallbackSrc:n,annotations:P,afterImgOnLoad:j})))},oe=({currentData:t,highlightAttribute:o})=>{var n;const c=(n=t.mappingImgList)!=null?n:[];return(c==null?void 0:c.length)>0?f.createElement("div",{style:{position:"absolute",height:"100%",overflowY:"scroll",zIndex:100,width:300}},c==null?void 0:c.map((s,u)=>{var e;return s.calib&&f.createElement(te,{key:s.path+u,path:s.path,url:s.url,fallbackUrl:(e=s.fallbackUrl)!=null?e:"",calib:s.calib,pcdUrl:t.url,highlightAttribute:o})})):null};var ne=T(z,null,null,{context:R})(oe);export{ne as default};
@@ -1 +1 @@
1
- import{getClassName as x}from"../../utils/dom.js";import{FooterDivider as z}from"../../views/MainView/toolFooter/index.js";import{ZoomController as ae}from"../../views/MainView/toolFooter/ZoomController/index.js";import{LeftOutlined as ce,UpSquareOutlined as de,DownSquareOutlined as pe}from"@ant-design/icons";import{cKeyCode as ue,PointCloudAnnotation as me,cTool as fe,cAnnotation as ve}from"@labelbee/lb-annotation";import{PointCloudUtils as H}from"@labelbee/lb-utils";import i,{useState as W,useRef as we,useLayoutEffect as Ce,useEffect as h}from"react";import{PointCloudContext as F}from"./PointCloudContext.js";import{useRotate as Pe}from"./hooks/useRotate.js";import{useSingleBox as K}from"./hooks/useSingleBox.js";import{PointCloudContainer as ge}from"./PointCloudLayout.js";import{BoxInfos as X,PointCloudValidity as ye}from"./PointCloudInfos.js";import{usePolygon as Ie}from"./hooks/usePolygon.js";import{useSphere as Y}from"./hooks/useSphere.js";import{useZoom as q}from"./hooks/useZoom.js";import{Slider as xe}from"antd";import{a2MapStateToProps as he}from"../../store/annotation/map.js";import{connect as Ve}from"react-redux";import{usePointCloudViews as _e}from"./hooks/usePointCloudViews.js";import Se from"../../hooks/useSize.js";import{useTranslation as Ee}from"react-i18next";import{LabelBeeContext as Le}from"../../store/ctx.js";import{jsonParser as Oe}from"../../utils/index.js";import be from"../../utils/ToolUtils.js";import je from"lodash";import Te from"./components/PointCloudSizeSlider/index.js";import{useHistory as ke}from"./hooks/useHistory.js";import Ae from"./components/TitleButton/index.js";var De=Object.defineProperty,Ne=Object.defineProperties,Be=Object.getOwnPropertyDescriptors,M=Object.getOwnPropertySymbols,Re=Object.prototype.hasOwnProperty,Ue=Object.prototype.propertyIsEnumerable,$=(n,s,r)=>s in n?De(n,s,{enumerable:!0,configurable:!0,writable:!0,value:r}):n[s]=r,B=(n,s)=>{for(var r in s||(s={}))Re.call(s,r)&&$(n,r,s[r]);if(M)for(var r of M(s))Ue.call(s,r)&&$(n,r,s[r]);return n},R=(n,s)=>Ne(n,Be(s));const{EPolygonPattern:Ze,EToolName:G}=fe,{ESortDirection:J}=ve,ze=ue.default,Q=(n,s,r=1)=>{const{width:w,height:u}=s,P={x:n.x+w*r/2,y:n.y+u*r/2},g={x:s.width/2,y:s.height/2};return{offsetX:(g.x-P.x)/r,offsetY:-(g.y-P.y)/r}},He=({currentData:n})=>{var s,r;const{zoom:w,zoomIn:u,zoomOut:P,initialPosition:g}=q(),{selectNextBox:E,selectPrevBox:L}=K(),{switchToNextSphere:V}=Y(),{updateRotate:y}=Pe({currentData:n}),I=i.useContext(F),{topViewInstance:O}=I,_=(r=(s=I==null?void 0:I.topViewInstance)==null?void 0:s.toolScheduler)==null?void 0:r.getCurrentToolName(),m=2,e=()=>{y(-m)},c=()=>{y(m)},f=()=>{y(180)};return i.createElement(i.Fragment,null,i.createElement(Te,{onChange:b=>{var S;(S=O==null?void 0:O.pointCloudInstance)==null||S.updatePointSize({customSize:b})}}),i.createElement("span",{onClick:c,className:x("point-cloud","rotate-reserve")}),i.createElement("span",{onClick:e,className:x("point-cloud","rotate")}),i.createElement("span",{onClick:f,className:x("point-cloud","rotate-180")}),i.createElement(z,null),i.createElement(de,{onClick:()=>{if(_===G.Point){V(J.descend);return}L(!0)},className:x("point-cloud","prev")}),i.createElement(pe,{onClick:()=>{if(_===G.Point){V(J.ascend);return}E(!0)},className:x("point-cloud","next")}),i.createElement(z,null),i.createElement(ae,{initialPosition:g,zoomIn:u,zoomOut:P,zoom:w}))},We=({setZAxisLimit:n,zAxisLimit:s,checkMode:r})=>r?null:i.createElement("div",{style:{position:"absolute",top:128,right:8,height:"50%",zIndex:20}},i.createElement(xe,{vertical:!0,step:.5,max:10,min:.5,defaultValue:s,onAfterChange:w=>{n(w)}})),Fe=({currentData:n,imgList:s,stepInfo:r,drawLayerSlot:w,checkMode:u,intelligentFit:P,setIsEnlargeTopView:g,isEnlargeTopView:E,onExitZoom:L,highlightAttribute:V})=>{var y,I;const[O,_]=W({zoom:1,currentPos:{x:0,y:0}}),m=we(null),e=i.useContext(F),c=Se(m),f=Oe(r.config),{setZoom:b,syncTopviewToolZoom:S}=q(),{hideAttributes:ee}=e,{addPolygon:te,deletePolygon:oe}=Ie(),{deletePointCloudSphere:ne}=Y(),{deletePointCloudBox:ie,changeValidByID:le}=K(),[j,se]=W(10),{t:U}=Ee(),C=_e(),{pushHistoryWithList:re}=ke();Ce(()=>{if(!e.topViewInstance&&m.current&&(n==null?void 0:n.url)&&(n==null?void 0:n.result)){const o={width:m.current.clientWidth,height:m.current.clientHeight},a=new me({container:m.current,size:o,pcdPath:n.url,config:R(B({},f),{pointCloudPattern:e.pointCloudPattern}),checkMode:u,toolName:be.getPointCloudToolList(),proxyMode:u});e.setTopViewInstance(a)}},[n]),h(()=>{if(!c||!e.topViewInstance||!e.sideViewInstance)return;const{toolInstance:o}=e.topViewInstance;o.singleOn("dataUpdated",(t,l)=>{const p=je.cloneDeep(t).map(d=>R(B({},d),{pointList:H.pointListTransferCanvas2World(d.pointList,c)}));e.setSelectedIDs(l),e.setLineList(p),re({lineList:p})}),o.singleOn("pointCreated",(t,l)=>{C.topViewAddSphere({newPoint:t,size:c,trackConfigurable:f.trackConfigurable,zoom:l})}),o.singleOn("pointDeleted",t=>{ne(t)}),o.singleOn("pointSelected",t=>{e.setSelectedIDs([t])}),o.singleOn("updatePointByDrag",(t,l)=>{var p;(p=C.topViewUpdatePoint)==null||p.call(C,t,c)}),o.singleOn("polygonCreated",(t,l)=>{if(o.pattern===Ze.Normal||!(n==null?void 0:n.url)){const p=R(B({},t),{pointList:t.pointList.map(d=>H.transferCanvas2World(d,c))});te(p),e.setSelectedIDs(ee.includes(t.attribute)?"":t.id);return}C.topViewAddBox({polygon:t,size:c,imgList:s,trackConfigurable:f.trackConfigurable,zoom:l,intelligentFit:P})}),o.singleOn("deletedObject",({id:t})=>{ie(t),oe(t)}),o.singleOn("deleteSelectedIDs",()=>{e.setSelectedIDs([])}),o.singleOn("addSelectedIDs",t=>{e.addSelectedID(t)}),o.singleOn("setSelectedIDs",t=>{e.setSelectedIDs(t)}),o.singleOn("updatePolygonByDrag",t=>{var l;(l=C.topViewUpdateBox)==null||l.call(C,t,c)});const a=t=>{var l;const p=le(t);p&&e.syncAllViewPointCloudColor(p),e.polygonList.find(d=>d.id===t)&&((l=e.topViewInstance)==null||l.toolInstance.setPolygonValidAndRender(t,!0))};return o.on("validUpdate",a),()=>{o.unbind("validUpdate",a)}},[e,c,n,C,e.polygonList,e.lineList,(y=e.topViewInstance)==null?void 0:y.toolInstance]),h(()=>{var o,a;if(!(c==null?void 0:c.width)||!e.topViewInstance)return;const t=(a=(o=f==null?void 0:f.attributeList)==null?void 0:o[0])==null?void 0:a.value;t&&e.topViewInstance.toolInstance.setDefaultAttribute(t),e.topViewInstance.initSize(c),e.topViewInstance.updatePolygonList(e.displayPointCloudList,e.polygonList),e.topViewInstance.updatePointList(e.displaySphereList),e.topViewInstance.updateLineList(e.displayLineList);const{topViewInstance:{pointCloudInstance:l,toolInstance:p}}=e;p.singleOn("renderZoom",(d,v)=>{const{offsetX:T,offsetY:k}=Q(v,c,d);if(l.camera.zoom=d,v){const{x:A,y:D,z:N}=l.initCameraPosition;l.camera.position.set(A+k,D-T,N)}l.camera.updateProjectionMatrix(),l.render(),b(d),S(v,d,c),_({zoom:d,currentPos:v})}),p.singleOn("dragMove",({currentPos:d,zoom:v})=>{const{offsetX:T,offsetY:k}=Q(d,c,v);l.camera.zoom=v;const{x:A,y:D,z:N}=l.initCameraPosition;l.camera.position.set(A+k,D-T,N),l.render(),S(d,v,c),_({zoom:v,currentPos:d})})},[c,e.topViewInstance,(I=e.topViewInstance)==null?void 0:I.toolInstance]),h(()=>{var o,a;(a=(o=e.topViewInstance)==null?void 0:o.pointCloudInstance)==null||a.applyZAxisPoints(j)},[j]),h(()=>{var o,a,t,l;C.topViewSelectedChanged({}),(l=(t=(a=(o=e.topViewInstance)==null?void 0:o.toolInstance)==null?void 0:a.selection)==null?void 0:t.hardSetSelectedIDs)==null||l.call(t,e.selectedIDs)},[e.selectedIDs]),h(()=>(window.addEventListener("keydown",Z),()=>{window.removeEventListener("keydown",Z)}),[]);const Z=o=>{const{keyCode:a}=o;a===ze.Esc&&L()};return h(()=>{var o,a,t;(t=(a=(o=e.topViewInstance)==null?void 0:o.pointCloud2dOperation)==null?void 0:a.setHighlightAttribute)==null||t.call(a,V)},[e.topViewInstance,V]),i.createElement(ge,{className:x("point-cloud-container","top-view"),title:E?i.createElement("div",{style:{display:"flex",alignItems:"center",position:"relative"}},i.createElement(ce,{style:{cursor:"pointer",marginRight:"12px"},onClick:()=>{L()}}),i.createElement("span",null,U("TopView")),i.createElement(X,{checkMode:u,config:f,style:{display:"flex",position:"initial",margin:"0px 20px"}})):i.createElement(Ae,{title:U("TopView"),onClick:()=>{g(!0)}}),toolbar:i.createElement(He,{currentData:n})},i.createElement("div",{style:{position:"relative",flex:1}},i.createElement("div",{style:{width:"100%",height:"100%"},ref:m},w==null?void 0:w(O)),!E&&i.createElement(X,{checkMode:u,config:f}),i.createElement(We,{checkMode:u,zAxisLimit:j,setZAxisLimit:se}),i.createElement(ye,null)))};var Ke=Ve(he,null,null,{context:Le})(Fe);export{Ke as default};
1
+ import{getClassName as I}from"../../utils/dom.js";import{FooterDivider as z}from"../../views/MainView/toolFooter/index.js";import{ZoomController as ae}from"../../views/MainView/toolFooter/ZoomController/index.js";import{LeftOutlined as de,UpSquareOutlined as ce,DownSquareOutlined as pe}from"@ant-design/icons";import{cKeyCode as ue,PointCloudAnnotation as me,cTool as fe,cAnnotation as ve}from"@labelbee/lb-annotation";import{PointCloudUtils as H}from"@labelbee/lb-utils";import{EPointCloudBoxRenderTrigger as we}from"../../utils/ToolPointCloudBoxRenderHelper.js";import i,{useState as W,useRef as Ce,useLayoutEffect as ge,useEffect as x}from"react";import{PointCloudContext as F}from"./PointCloudContext.js";import{useRotate as Pe}from"./hooks/useRotate.js";import{useRotateEdge as ye}from"./hooks/useRotateEdge.js";import{useSingleBox as K}from"./hooks/useSingleBox.js";import{PointCloudContainer as Ie}from"./PointCloudLayout.js";import{BoxInfos as X,PointCloudValidity as xe}from"./PointCloudInfos.js";import{usePolygon as he}from"./hooks/usePolygon.js";import{useSphere as Y}from"./hooks/useSphere.js";import{useZoom as q}from"./hooks/useZoom.js";import{Slider as Ve}from"antd";import{a2MapStateToProps as Se}from"../../store/annotation/map.js";import{connect as _e}from"react-redux";import{usePointCloudViews as Ee}from"./hooks/usePointCloudViews.js";import Le from"../../hooks/useSize.js";import{useTranslation as Oe}from"react-i18next";import{LabelBeeContext as be}from"../../store/ctx.js";import{jsonParser as je}from"../../utils/index.js";import Te from"../../utils/ToolUtils.js";import ke from"lodash";import Re from"./components/PointCloudSizeSlider/index.js";import{useHistory as Ae}from"./hooks/useHistory.js";import Be from"./components/TitleButton/index.js";var Ne=Object.defineProperty,De=Object.defineProperties,Ue=Object.getOwnPropertyDescriptors,M=Object.getOwnPropertySymbols,Ze=Object.prototype.hasOwnProperty,ze=Object.prototype.propertyIsEnumerable,$=(n,l,r)=>l in n?Ne(n,l,{enumerable:!0,configurable:!0,writable:!0,value:r}):n[l]=r,N=(n,l)=>{for(var r in l||(l={}))Ze.call(l,r)&&$(n,r,l[r]);if(M)for(var r of M(l))ze.call(l,r)&&$(n,r,l[r]);return n},D=(n,l)=>De(n,Ue(l));const{EPolygonPattern:He,EToolName:G}=fe,{ESortDirection:J}=ve,We=ue.default,Q=(n,l,r=1)=>{const{width:w,height:u}=l,P={x:n.x+w*r/2,y:n.y+u*r/2},y={x:l.width/2,y:l.height/2};return{offsetX:(y.x-P.x)/r,offsetY:-(y.y-P.y)/r}},Fe=({currentData:n})=>{var l,r;const{zoom:w,zoomIn:u,zoomOut:P,initialPosition:y}=q(),{selectNextBox:E,selectPrevBox:L}=K(),{switchToNextSphere:h}=Y(),{updateRotate:V}=Pe({currentData:n}),{updateRotateEdge:O}=ye({currentData:n}),g=i.useContext(F),{topViewInstance:S}=g,m=(r=(l=g==null?void 0:g.topViewInstance)==null?void 0:l.toolScheduler)==null?void 0:r.getCurrentToolName(),e=()=>{V(-Number(g.rectRotateSensitivity))},d=()=>{V(g.rectRotateSensitivity)},f=()=>{O(-90)};return i.createElement(i.Fragment,null,i.createElement(Re,{onChange:b=>{var _;(_=S==null?void 0:S.pointCloudInstance)==null||_.updatePointSize({customSize:b})}}),i.createElement("span",{onClick:d,className:I("point-cloud","rotate-reserve")}),i.createElement("span",{onClick:e,className:I("point-cloud","rotate")}),i.createElement("span",{onClick:f,className:I("point-cloud","rotate-90")}),i.createElement(z,null),i.createElement(ce,{onClick:()=>{if(m===G.Point){h(J.descend);return}L(!0)},className:I("point-cloud","prev")}),i.createElement(pe,{onClick:()=>{if(m===G.Point){h(J.ascend);return}E(!0)},className:I("point-cloud","next")}),i.createElement(z,null),i.createElement(ae,{initialPosition:y,zoomIn:u,zoomOut:P,zoom:w}))},Ke=({setZAxisLimit:n,zAxisLimit:l,checkMode:r})=>r?null:i.createElement("div",{style:{position:"absolute",top:128,right:8,height:"50%",zIndex:20}},i.createElement(Ve,{vertical:!0,step:.5,max:10,min:.5,defaultValue:l,onAfterChange:w=>{n(w)}})),Xe=({currentData:n,imgList:l,stepInfo:r,drawLayerSlot:w,checkMode:u,intelligentFit:P,setIsEnlargeTopView:y,isEnlargeTopView:E,onExitZoom:L,highlightAttribute:h})=>{var V,O;const[g,S]=W({zoom:1,currentPos:{x:0,y:0}}),m=Ce(null),e=i.useContext(F),d=Le(m),f=je(r.config),{setZoom:b,syncTopviewToolZoom:_}=q(),{hideAttributes:ee}=e,{addPolygon:te,deletePolygon:oe}=he(),{deletePointCloudSphere:ne}=Y(),{deletePointCloudBox:ie,changeValidByID:se}=K(),[j,le]=W(10),{t:U}=Oe(),C=Ee(),{pushHistoryWithList:re}=Ae();ge(()=>{if(!e.topViewInstance&&m.current&&(n==null?void 0:n.url)&&(n==null?void 0:n.result)){const o={width:m.current.clientWidth,height:m.current.clientHeight},a=new me({container:m.current,size:o,pcdPath:n.url,config:D(N({},f),{pointCloudPattern:e.pointCloudPattern}),checkMode:u,toolName:Te.getPointCloudToolList(),proxyMode:u});e.setTopViewInstance(a)}},[n]),x(()=>{if(!d||!e.topViewInstance||!e.sideViewInstance)return;const{toolInstance:o}=e.topViewInstance;o.singleOn("dataUpdated",(t,s)=>{const p=ke.cloneDeep(t).map(c=>D(N({},c),{pointList:H.pointListTransferCanvas2World(c.pointList,d)}));e.setSelectedIDs(s),e.setLineList(p),re({lineList:p})}),o.singleOn("pointCreated",(t,s)=>{C.topViewAddSphere({newPoint:t,size:d,trackConfigurable:f.trackConfigurable,zoom:s})}),o.singleOn("pointDeleted",t=>{ne(t)}),o.singleOn("pointSelected",t=>{e.setSelectedIDs([t])}),o.singleOn("updatePointByDrag",(t,s)=>{var p;(p=C.topViewUpdatePoint)==null||p.call(C,t,d)}),o.singleOn("polygonCreated",(t,s)=>{if(o.pattern===He.Normal||!(n==null?void 0:n.url)){const p=D(N({},t),{pointList:t.pointList.map(c=>H.transferCanvas2World(c,d))});te(p),e.setSelectedIDs(ee.includes(t.attribute)?"":t.id);return}C.topViewAddBox({polygon:t,size:d,imgList:l,trackConfigurable:f.trackConfigurable,zoom:s,intelligentFit:P})}),o.singleOn("deletedObject",({id:t})=>{ie(t),oe(t)}),o.singleOn("deleteSelectedIDs",()=>{e.setSelectedIDs([])}),o.singleOn("addSelectedIDs",t=>{e.addSelectedID(t)}),o.singleOn("setSelectedIDs",t=>{e.setSelectedIDs(t)}),o.singleOn("updatePolygonByDrag",t=>{var s;(s=C.topViewUpdateBox)==null||s.call(C,t,d)});const a=t=>{var s;const p=se(t);p&&e.syncAllViewPointCloudColor(we.Default,p),e.polygonList.find(c=>c.id===t)&&((s=e.topViewInstance)==null||s.toolInstance.setPolygonValidAndRender(t,!0))};return o.on("validUpdate",a),()=>{o.unbind("validUpdate",a)}},[e,d,n,C,e.polygonList,e.lineList,(V=e.topViewInstance)==null?void 0:V.toolInstance]),x(()=>{var o,a;if(!(d==null?void 0:d.width)||!e.topViewInstance)return;const t=(a=(o=f==null?void 0:f.attributeList)==null?void 0:o[0])==null?void 0:a.value;t&&e.topViewInstance.toolInstance.setDefaultAttribute(t),e.topViewInstance.initSize(d),e.topViewInstance.updatePolygonList(e.displayPointCloudList,e.polygonList),e.topViewInstance.updatePointList(e.displaySphereList),e.topViewInstance.updateLineList(e.displayLineList);const{topViewInstance:{pointCloudInstance:s,toolInstance:p}}=e;p.singleOn("renderZoom",(c,v)=>{const{offsetX:T,offsetY:k}=Q(v,d,c);if(s.camera.zoom=c,v){const{x:R,y:A,z:B}=s.initCameraPosition;s.camera.position.set(R+k,A-T,B)}s.camera.updateProjectionMatrix(),s.render(),b(c),_(v,c,d),S({zoom:c,currentPos:v})}),p.singleOn("dragMove",({currentPos:c,zoom:v})=>{const{offsetX:T,offsetY:k}=Q(c,d,v);s.camera.zoom=v;const{x:R,y:A,z:B}=s.initCameraPosition;s.camera.position.set(R+k,A-T,B),s.render(),_(c,v,d),S({zoom:v,currentPos:c})})},[d,e.topViewInstance,(O=e.topViewInstance)==null?void 0:O.toolInstance]),x(()=>{var o,a;(a=(o=e.topViewInstance)==null?void 0:o.pointCloudInstance)==null||a.applyZAxisPoints(j)},[j]),x(()=>{var o,a,t,s;C.topViewSelectedChanged({}),(s=(t=(a=(o=e.topViewInstance)==null?void 0:o.toolInstance)==null?void 0:a.selection)==null?void 0:t.hardSetSelectedIDs)==null||s.call(t,e.selectedIDs)},[e.selectedIDs]),x(()=>(window.addEventListener("keydown",Z),()=>{window.removeEventListener("keydown",Z)}),[]);const Z=o=>{const{keyCode:a}=o;a===We.Esc&&L()};return x(()=>{var o,a,t;(t=(a=(o=e.topViewInstance)==null?void 0:o.pointCloud2dOperation)==null?void 0:a.setHighlightAttribute)==null||t.call(a,h)},[e.topViewInstance,h]),i.createElement(Ie,{className:I("point-cloud-container","top-view"),title:E?i.createElement("div",{style:{display:"flex",alignItems:"center",position:"relative"}},i.createElement(de,{style:{cursor:"pointer",marginRight:"12px"},onClick:()=>{L()}}),i.createElement("span",null,U("TopView")),i.createElement(X,{checkMode:u,config:f,style:{display:"flex",position:"initial",margin:"0px 20px"}})):i.createElement(Be,{title:U("TopView"),onClick:()=>{y(!0)}}),toolbar:i.createElement(Fe,{currentData:n})},i.createElement("div",{style:{position:"relative",flex:1}},i.createElement("div",{style:{width:"100%",height:"100%"},ref:m},w==null?void 0:w(g)),!E&&i.createElement(X,{checkMode:u,config:f}),i.createElement(Ke,{checkMode:u,zAxisLimit:j,setZAxisLimit:le}),i.createElement(xe,null)))};var Ye=_e(Se,null,null,{context:be})(Xe);export{Ye as default};
@@ -1 +1 @@
1
- import{useContext as y,useState as B,useMemo as h,useCallback as p}from"react";import R from"lodash";import{message as C,Modal as w}from"antd";import{usePointCloudViews as H}from"./usePointCloudViews.js";import{PointCloudContext as M}from"../PointCloudContext.js";import{useTranslation as S}from"react-i18next";const V=({config:m})=>{const{selectedIDs:l,pointCloudBoxList:a,displayPointCloudList:o,setPointCloudResult:f,syncAllViewPointCloudColor:D}=y(M),[t,i]=B([]),{pointCloudBoxListUpdated:c}=H(),{t:n,i18n:d}=S(),x=s=>m.trackConfigurable!==!0?!1:a.some(r=>s.some(e=>e.trackID===r.trackID)),u=h(()=>o.filter(s=>l.includes(s.id)),[l,o]),P=p(()=>{u.length>0?i(R.cloneDeep(u)):(i([]),C.error(n("CopyEmptyInPointCloud")))},[l,o,d.language]),I=p(()=>{if(t.length===0){C.error(n("PasteEmptyInPointCloud"));return}const s=x(t),r=e=>{f(e),c==null||c(e),i([]),D(e)};if(s)w.confirm({title:n("HasDuplicateIDHeader"),content:n("HasDuplicateIDMsg"),onOk:()=>{const e=a.filter(g=>!t.find(k=>k.trackID===g.trackID)).concat(t);r(e)}});else{const e=[...o,...t];r(e)}},[t,o,d.language]);return{copySelectedBoxes:P,pasteSelectedBoxes:I,copiedBoxes:t,selectedBoxes:u}};export{V as useBoxes};
1
+ import{useContext as k,useState as y,useMemo as R,useCallback as p}from"react";import h from"lodash";import{message as C,Modal as H}from"antd";import{usePointCloudViews as M}from"./usePointCloudViews.js";import{PointCloudContext as j}from"../PointCloudContext.js";import{useTranslation as w}from"react-i18next";import{EPointCloudBoxRenderTrigger as E}from"../../../utils/ToolPointCloudBoxRenderHelper.js";const S=({config:m})=>{const{selectedIDs:l,pointCloudBoxList:a,displayPointCloudList:o,setPointCloudResult:f,syncAllViewPointCloudColor:P}=k(j),[t,i]=y([]),{pointCloudBoxListUpdated:c}=M(),{t:n,i18n:d}=w(),x=s=>m.trackConfigurable!==!0?!1:a.some(r=>s.some(e=>e.trackID===r.trackID)),u=R(()=>o.filter(s=>l.includes(s.id)),[l,o]),D=p(()=>{u.length>0?i(h.cloneDeep(u)):(i([]),C.error(n("CopyEmptyInPointCloud")))},[l,o,d.language]),g=p(()=>{if(t.length===0){C.error(n("PasteEmptyInPointCloud"));return}const s=x(t),r=e=>{f(e),c==null||c(e),i([]),P(E.MultiPaste,e)};if(s)H.confirm({title:n("HasDuplicateIDHeader"),content:n("HasDuplicateIDMsg"),onOk:()=>{const e=a.filter(I=>!t.find(B=>B.trackID===I.trackID)).concat(t);r(e)}});else{const e=[...o,...t];r(e)}},[t,o,d.language]);return{copySelectedBoxes:D,pasteSelectedBoxes:g,copiedBoxes:t,selectedBoxes:u}};export{S as useBoxes};
@@ -0,0 +1 @@
1
+ import u,{useState as V,useContext as j,useMemo as C,useCallback as d,useEffect as N}from"react";import{useLatest as s}from"ahooks";import{PointCloudContext as p}from"../PointCloudContext.js";import z from"../../../assets/annotation/icon_link.svg.js";import L from"../../../assets/annotation/icon_unlink.svg.js";import{EventBusEvent as v}from"../../../views/MainView/toolFooter/BatchSwitchConnectIn2DView/BatchSwitchConnectIn2DView.js";import{EventBus as x}from"@labelbee/lb-annotation";const k={width:16,height:16},F=e=>{e.imageName||console.warn("missing imageName");const[a,B]=V(!0),g=s(e.imageName),{addRectFromPointCloudBoxByImageName:b,removeRectByPointCloudBoxId:y,imageNamePointCloudBoxMap:o,linkageImageNameRectMap:f}=j(p),c=C(()=>e.imageName?o.has(e.imageName):(console.error("Missing image name"),!1),[e.imageName,o]),S=s(c),R=s(b),_=s(y),i=d(n=>{if(!S.current)return;const t=g.current;if(!t){console.warn("invalid image name");return}B(n),n?_.current(t):R.current(t)},[]),E=d(()=>{i(!a)},[i,a]),P=C(()=>{var n;if(!e.is2DView||!c)return null;const r={zIndex:(n=e.zIndex)!=null?n:999,position:"absolute",top:16,right:16+28+12,background:"rgba(0, 0, 0, 0.74)",color:"white",borderRadius:2,padding:6,display:"flex",alignItems:"center",justifyContent:"center",width:28,height:28};return u.createElement("div",{style:r},a&&u.createElement("img",{src:z,style:k}),!a&&u.createElement("img",{src:L,style:k}))},[a,e.is2DView,e.zIndex,E,c]),m=d(()=>{var n,t,r,h;if(!e.is2DView)return;const l=g.current;if(!l){console.warn("invalid image name");return}const D=new Set([...(t=(n=o.get(l))==null?void 0:n.keys())!=null?t:[]]),w=[...(h=(r=f.get(l))==null?void 0:r.keys())!=null?h:[]];let I=!0;w.length&&(I=Boolean(w.find(M=>D.has(M)))===!1),i(I)},[e.is2DView,f,o,i]);return N(()=>{m()},[m]),N(()=>{const n=t=>{i(t)};return x.on(v.switchConnect,n),()=>x.unbind(v.switchConnect,n)},[i]),{rendered:P,isLinking:a,swapSwitch:i,syncIsLinking:m}};export{F as default};
@@ -1 +1 @@
1
- import{useContext as C,useCallback as I}from"react";import{PointCloudContext as y}from"../PointCloudContext.js";var x=(s,r,t)=>new Promise((a,u)=>{var n=i=>{try{e(t.next(i))}catch(l){u(l)}},h=i=>{try{e(t.throw(i))}catch(l){u(l)}},e=i=>i.done?a(i.value):Promise.resolve(i.value).then(n,h);e((t=t.apply(s,r)).next())});const L=({currentData:s})=>{var r;const{mainViewInstance:t,topViewInstance:a,pointCloudBoxList:u,highlight2DDataList:n,setHighlight2DDataList:h}=C(y),e=(r=s==null?void 0:s.mappingImgList)!=null?r:[],i=(o,d)=>x(void 0,null,function*(){var c;let g=[...n];if(n.find(p=>p.url===o)?g=n.filter(p=>p.url!==o):g.push({url:o,calib:d}),h(g),!t||(e==null?void 0:e.length)===0)return;const m=t.pointCloudObject;if(!m)return;const f=yield t.getHighlightIndexByMappingImgList({mappingImgList:g,points:m.geometry.attributes.position.array}),v=yield t.highlightOriginPointCloud(u,f);v&&((c=a==null?void 0:a.pointCloudInstance)==null||c.updateColor(v))}),l=I(o=>n.findIndex(d=>d.url===o)>=0,[n]);return{toggle2dVisible:i,isHighlightVisible:l}};export{L as useHighlight};
1
+ import{useContext as C,useCallback as y}from"react";import{PointCloudContext as I}from"../PointCloudContext.js";var x=(s,g,t)=>new Promise((a,h)=>{var e=i=>{try{o(t.next(i))}catch(l){h(l)}},d=i=>{try{o(t.throw(i))}catch(l){h(l)}},o=i=>i.done?a(i.value):Promise.resolve(i.value).then(e,d);o((t=t.apply(s,g)).next())});const L=({currentData:s})=>{var g;const{mainViewInstance:t,topViewInstance:a,pointCloudBoxList:h,highlight2DDataList:e,setHighlight2DDataList:d}=C(I),o=(g=s==null?void 0:s.mappingImgList)!=null?g:[],i=(r,c,v)=>x(void 0,null,function*(){var p;let u=[...e];if(e.find(n=>n.url===r)?u=e.filter(n=>n.url!==r):u.push({url:r,fallbackUrl:c,calib:v}),d(u),!t||(o==null?void 0:o.length)===0)return;const m=t.pointCloudObject;if(!m)return;const f=yield t.getHighlightIndexByMappingImgList({mappingImgList:u,points:m.geometry.attributes.position.array});try{const n=yield t.highlightOriginPointCloud(h,f);n&&((p=a==null?void 0:a.pointCloudInstance)==null||p.updateColor(n))}catch(n){console.error("toggle2dVisible highlightOriginPointCloud error:",n)}}),l=y(r=>e.findIndex(c=>c.url===r)>=0,[e]);return{toggle2dVisible:i,isHighlightVisible:l}};export{L as useHighlight};
@@ -1 +1 @@
1
- import{useContext as m}from"react";import{PointCloudContext as I}from"../PointCloudContext.js";var R=Object.defineProperty,g=Object.getOwnPropertySymbols,U=Object.prototype.hasOwnProperty,V=Object.prototype.propertyIsEnumerable,P=(e,n,s)=>n in e?R(e,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[n]=s,a=(e,n)=>{for(var s in n||(n={}))U.call(n,s)&&P(e,s,n[s]);if(g)for(var s of g(n))V.call(n,s)&&P(e,s,n[s]);return e};const j=()=>{const{history:e,setPointCloudResult:n,setSelectedIDs:s,pointCloudBoxList:L,pointCloudSphereList:f,setPointCloudSphereList:x,mainViewInstance:d,topViewInstance:u,polygonList:c,setPolygonList:y,lineList:p,setLineList:h,syncAllViewPointCloudColor:S,segmentation:v}=m(I),_=({newBoxParams:t,newPolygon:o,newLine:i,newSphereParams:l})=>{const r={pointCloudBoxList:L,polygonList:c,lineList:p,pointCloudSphereList:f};t&&(r.pointCloudBoxList=L.concat(t)),o&&(r.polygonList=c.concat(o)),i&&(r.lineList=p.concat(i)),l&&(r.pointCloudSphereList=f.concat(l)),e.pushHistory(r)},w=t=>{const o={pointCloudBoxList:L,polygonList:c,lineList:p,pointCloudSphereList:f,segmentation:v};t.pointCloudBoxList&&(o.pointCloudBoxList=t.pointCloudBoxList),t.polygonList&&(o.polygonList=t.polygonList),t.lineList&&(o.lineList=t.lineList),t.pointCloudSphereList&&(o.pointCloudSphereList=t.pointCloudSphereList),t.segmentation&&(o.segmentation=t.segmentation),e.pushHistory(o)},B=t=>{if(p.find(i=>i.id===t.id)){const i=p.map(l=>l.id===t.id?t:a({},l));e.pushHistory({lineList:i}),h(i)}},H=t=>{if(c.find(i=>i.id===t.id)){const i=c.map(l=>l.id===t.id?t:a({},l));e.pushHistory({pointCloudBoxList:L,polygonList:i}),y(i)}},O=({pointCloudBoxList:t,polygonList:o,pointCloudSphereList:i})=>{e.initRecord({pointCloudBoxList:t,polygonList:o,pointCloudSphereList:i,lineList:p},!0)},C=t=>{if(!t)return;const{pointCloudBoxList:o=[],polygonList:i=[],lineList:l=[],pointCloudSphereList:r=[]}=t;o&&(L.length!==o.length&&s(),d==null||d.clearAllBox(),d==null||d.generateBoxes(o),n(o),S(o)),r&&(f.length!==r.length&&s(),d==null||d.clearAllSphere(),d==null||d.generateSpheres(r),x(r)),i&&y(i),l&&h(l),u==null||u.updatePolygonList(o!=null?o:[],i!=null?i:[]),u==null||u.updateLineList(l!=null?l:[]),u==null||u.updatePointList(r)};return{addHistory:_,pushHistoryWithList:w,initHistory:O,pushHistoryUnderUpdatePolygon:H,pushHistoryUnderUpdateLine:B,redo:()=>{C(e.redo())},undo:()=>{C(e.undo())}}};export{j as useHistory};
1
+ import{EPointCloudBoxRenderTrigger as m}from"../../../utils/ToolPointCloudBoxRenderHelper.js";import{useContext as R}from"react";import{PointCloudContext as I}from"../PointCloudContext.js";var U=Object.defineProperty,h=Object.getOwnPropertySymbols,j=Object.prototype.hasOwnProperty,V=Object.prototype.propertyIsEnumerable,P=(e,n,s)=>n in e?U(e,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[n]=s,a=(e,n)=>{for(var s in n||(n={}))j.call(n,s)&&P(e,s,n[s]);if(h)for(var s of h(n))V.call(n,s)&&P(e,s,n[s]);return e};const A=()=>{const{history:e,setPointCloudResult:n,setSelectedIDs:s,pointCloudBoxList:L,pointCloudSphereList:f,setPointCloudSphereList:x,mainViewInstance:d,topViewInstance:u,polygonList:c,setPolygonList:y,lineList:p,setLineList:C,syncAllViewPointCloudColor:S,segmentation:v}=R(I),B=({newBoxParams:t,newPolygon:o,newLine:i,newSphereParams:l})=>{const r={pointCloudBoxList:L,polygonList:c,lineList:p,pointCloudSphereList:f};t&&(r.pointCloudBoxList=L.concat(t)),o&&(r.polygonList=c.concat(o)),i&&(r.lineList=p.concat(i)),l&&(r.pointCloudSphereList=f.concat(l)),e.pushHistory(r)},_=t=>{const o={pointCloudBoxList:L,polygonList:c,lineList:p,pointCloudSphereList:f,segmentation:v};t.pointCloudBoxList&&(o.pointCloudBoxList=t.pointCloudBoxList),t.polygonList&&(o.polygonList=t.polygonList),t.lineList&&(o.lineList=t.lineList),t.pointCloudSphereList&&(o.pointCloudSphereList=t.pointCloudSphereList),t.segmentation&&(o.segmentation=t.segmentation),e.pushHistory(o)},H=t=>{if(p.find(i=>i.id===t.id)){const i=p.map(l=>l.id===t.id?t:a({},l));e.pushHistory({lineList:i}),C(i)}},w=t=>{if(c.find(i=>i.id===t.id)){const i=c.map(l=>l.id===t.id?t:a({},l));e.pushHistory({pointCloudBoxList:L,polygonList:i}),y(i)}},O=({pointCloudBoxList:t,polygonList:o,pointCloudSphereList:i})=>{e.initRecord({pointCloudBoxList:t,polygonList:o,pointCloudSphereList:i,lineList:p},!0)},g=t=>{if(!t)return;const{pointCloudBoxList:o=[],polygonList:i=[],lineList:l=[],pointCloudSphereList:r=[]}=t;o&&(L.length!==o.length&&s(),d==null||d.clearAllBox(),d==null||d.generateBoxes(o),n(o),S(m.UndoRedo,o)),r&&(f.length!==r.length&&s(),d==null||d.clearAllSphere(),d==null||d.generateSpheres(r),x(r)),i&&y(i),l&&C(l),u==null||u.updatePolygonList(o!=null?o:[],i!=null?i:[]),u==null||u.updateLineList(l!=null?l:[]),u==null||u.updatePointList(r)};return{addHistory:B,pushHistoryWithList:_,initHistory:O,pushHistoryUnderUpdatePolygon:w,pushHistoryUnderUpdateLine:H,redo:()=>{g(e.redo())},undo:()=>{g(e.undo())}}};export{A as useHistory};
@@ -1 +1 @@
1
- import{EPointCloudName as nt,MathUtils as B,getCuboidFromPointCloudBox as Mt}from"@labelbee/lb-annotation";import{EPerspectiveView as J,PointCloudUtils as V,POINT_CLOUD_DEFAULT_STEP as Gt,DEFAULT_SPHERE_PARAMS as Jt}from"@labelbee/lb-utils";import{useContext as Qt}from"react";import{PointCloudContext as Xt}from"../PointCloudContext.js";import{useSingleBox as Yt}from"./useSingleBox.js";import{useSphere as qt}from"./useSphere.js";import{useSelector as Kt,useDispatch as $t}from"../../../store/ctx.js";import to from"../../../utils/StepUtils.js";import{jsonParser as it,getRectPointCloudBox as oo}from"../../../utils/index.js";import{PreDataProcess as st,SetPointCloudLoading as Ct,SetLoadPCDFileLoading as Pt}from"../../../store/annotation/actionCreators.js";import{useHistory as eo}from"./useHistory.js";import{usePolygon as no}from"./usePolygon.js";import{useLatest as io}from"ahooks";var so=Object.defineProperty,ro=Object.defineProperties,lo=Object.getOwnPropertyDescriptors,ht=Object.getOwnPropertySymbols,ao=Object.prototype.hasOwnProperty,co=Object.prototype.propertyIsEnumerable,xt=(e,t,i)=>t in e?so(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,L=(e,t)=>{for(var i in t||(t={}))ao.call(t,i)&&xt(e,i,t[i]);if(ht)for(var i of ht(t))co.call(t,i)&&xt(e,i,t[i]);return e},O=(e,t)=>ro(e,lo(t)),rt=(e,t,i)=>new Promise((d,o)=>{var a=u=>{try{c(i.next(u))}catch(h){o(h)}},g=u=>{try{c(i.throw(u))}catch(h){o(h)}},c=u=>u.done?d(u.value):Promise.resolve(u.value).then(a,g);c((i=i.apply(e,t)).next())});const q=5,K=90,mt=.01,y={"3D":"3D",Top:"Top",Side:"Side",Back:"Back"},lt=(e,t,i,d,o)=>{const{x:a,y:g}=V.transferCanvas2World(e,t),{defaultZ:c}=Jt,u={center:{x:a,y:g,z:c},id:e.id},h=d?L(L({},d),u):O(L({},u),{attribute:"",valid:!0});return o&&Object.assign(h,o),h},dt=(e,t,i,d,o,a)=>{let g=e.pointList.map(v=>V.transferCanvas2World(v,t)),c=0,u=1,h={};if(i){const v=i.getSensesPointZAxisInPolygon(g,void 0,a);a&&v.fittedCoordinates.length>0&&(g=v.fittedCoordinates),c=(v.maxZ+v.minZ)/2,u=v.maxZ-v.minZ,h={count:v.zCount}}const[m,I,W]=g,z=B.getLineCenterPoint([m,W]),T=B.getLineLength(m,I),R=B.getLineLength(I,W),E=B.getRadiusFromQuadrangle(e.pointList);d&&(c=d.center.z,u=d.depth);const j={center:{x:z.x,y:z.y,z:c},width:a?R+mt:R,height:a?T+mt:T,depth:u,rotation:E,id:e.id},N=L(d?L(L({},d),j):O(L({},j),{attribute:"",valid:!0}),h);o&&Object.assign(N,o);const F=g.map(v=>V.transferWorld2Canvas(v,t));return{boxParams:N,newPointList:F}},Lt=(e,t,i)=>{const d={x:e.x-t.x,y:e.y-t.y};return O(L({},i),{center:{x:i.center.x-d.x,y:i.center.y,z:i.center.z-d.y}})},yt=(e,t,i,d)=>{const[o,a,g]=e.pointList,[c,u,h]=t.pointList,m=B.getLineCenterPoint([o,g]),I=B.getLineCenterPoint([c,h]),z={x:{x:m.x-I.x,y:m.y-I.y}.x,y:0,z:m.y-I.y},T=B.getLineLength(o,a),R=B.getLineLength(c,u),E=T-R,j=B.getLineLength(a,g),N=B.getLineLength(u,h),F=j-N,{newBoxParams:v}=d.getNewBoxBySideUpdate(z,F,E,i);return v},uo=(e,t,i)=>{const d={x:e.x-t.x,y:e.y-t.y};return O(L({},i),{center:{x:i.center.x,y:i.center.y-d.x,z:i.center.z-d.y}})},po=(e,t,i,d)=>{const[o,a,g]=e.pointList,[c,u,h]=t.pointList,m=B.getLineCenterPoint([o,g]),I=B.getLineCenterPoint([c,h]),z={x:{x:m.x-I.x,y:m.y-I.y}.x,y:0,z:m.y-I.y},T=B.getLineLength(o,a),R=B.getLineLength(c,u),E=T-R,j=B.getLineLength(a,g),N=B.getLineLength(u,h),F=j-N;let{newBoxParams:v}=d.getNewBoxByBackUpdate(z,F,E,i);return v},vt=(e,t,i,d,o)=>{var a;if(!i)return;const{toolInstance:g,pointCloudInstance:c}=i;c.loadPCDFile(d,(a=o==null?void 0:o.radius)!=null?a:K);const{cameraPositionVector:u}=c.updateOrthoCameraBySphere(e,J.Left);c.setInitCameraPosition(u);const{point2d:h,zoom:m}=c.getSphereSidePoint2DCoordinate(e);c.camera.zoom=m,c.camera.updateProjectionMatrix(),c.render(),g.initPosition(),g.zoomChangeOnCenter(m),g.setResult([O(L(L({},t),h),{valid:e.valid,textAttribute:"",attribute:e.attribute})]),g.setSelectedID(t.id)},Bt=(e,t,i,d)=>{if(!i)return;const{pointCloud2dOperation:o,pointCloudInstance:a}=i;a.loadPCDFileByBox(d,e,{width:q,depth:q});const{cameraPositionVector:g}=a.updateOrthoCamera(e,J.Left);a.setInitCameraPosition(g);const{polygon2d:c,zoom:u}=a.getBoxSidePolygon2DCoordinate(e);a.camera.zoom=u,a.camera.updateProjectionMatrix(),a.render(),o.initPosition(),o.zoomChangeOnCenter(u),o.setResultAndSelectedID([{id:t.id,valid:e.valid,pointList:c,textAttribute:"",isRect:!0,attribute:e.attribute}],t.id)},bt=(e,t,i,d,o)=>{var a;if(!i)return;const{toolInstance:g,pointCloudInstance:c}=i;c.loadPCDFile(d,(a=o==null?void 0:o.radius)!=null?a:K);const{cameraPositionVector:u}=c.updateOrthoCameraBySphere(e,J.Back);c.setInitCameraPosition(u);const{point2d:h,zoom:m}=c.getSphereBackPoint2DCoordinate(e);c.camera.zoom=m,c.camera.updateProjectionMatrix(),c.render(),g.initPosition(),g.zoomChangeOnCenter(m),g.setResult([O(L(L({},t),h),{valid:e.valid,textAttribute:"",attribute:e.attribute})]),g.setSelectedID(t.id)},wt=(e,t,i,d)=>{if(!i)return;const{pointCloud2dOperation:o,pointCloudInstance:a}=i;a.loadPCDFileByBox(d,e,{height:q,depth:q});const{cameraPositionVector:g}=a.updateOrthoCamera(e,J.Back);a.setInitCameraPosition(g);const{polygon2d:c,zoom:u}=a.getBoxBackPolygon2DCoordinate(e);a.camera.zoom=u,a.camera.updateProjectionMatrix(),a.render(),o.initPosition(),o.zoomChangeOnCenter(u),o.setResultAndSelectedID([{id:t.id,valid:e.valid,pointList:c,textAttribute:"",isRect:!0,attribute:e.attribute}],t.id)},It=(e,t,i,d)=>{if(!i||!d)return;d.generateSphere(e),d.updateCameraBySphere(e,J.Top),d.render();const{toolInstance:o,pointCloudInstance:a}=i,{point2d:g}=a.getSphereTopPoint2DCoordinate(e),c=[...o.pointList].map(u=>u.id===t.id?O(L(L({},t),g),{valid:e.valid,textAttribute:"",attribute:e.attribute}):u);o.setResult(c),o.setSelectedID(t.id)},at=(e,t,i,d)=>{var o,a;if(!i||!d)return;d.generateBox(e,t.id),d.render();const{pointCloud2dOperation:g,pointCloudInstance:c}=i,{polygon2d:u}=c.getBoxTopPolygon2DCoordinate(e),h=[...g.polygonList],m=h.find(I=>I.id===t.id);m?(m.pointList=u,m.valid=(o=e.valid)!=null?o:!0):h.push({id:t.id,pointList:u,textAttribute:"",isRect:!0,valid:(a=e.valid)!=null?a:!0}),g.setResultAndSelectedID(h,t.id)},go=()=>{const e=Qt(Xt),{topViewInstance:t,sideViewInstance:i,backViewInstance:d,mainViewInstance:o,addPointCloudBox:a,addPointCloudSphere:g,setSelectedIDs:c,selectedIDs:u,pointCloudBoxList:h,pointCloudSphereList:m,hideAttributes:I,setHighlight2DDataList:W,cuboidBoxIn2DView:z,imageSizes:T}=e,{addHistory:R,initHistory:E,pushHistoryUnderUpdatePolygon:j}=eo(),{selectedPolygon:N}=no(),{getPointCloudSphereByID:F,updatePointCloudSphere:v,selectedSphere:Q}=qt(),{currentData:Z,config:S}=Kt(n=>{const{stepList:s,step:p,imgList:r,imgIndex:l}=n.annotation;return{currentData:r[l],config:it(to.getCurrentStepInfo(p,s).config)}}),H=$t(),St=io(z),$=n=>{if(!St.current){const{mappingImgList:s=[]}=Z,p=s.map(r=>oo({pointCloudBox:n,mappingData:r,imageSizes:T}));Object.assign(n,{rects:p.filter(r=>r!==void 0)})}},{selectedBox:_,updateSelectedBox:Dt,updateSelectedBoxes:tt,getPointCloudByID:_t}=Yt({generateRects:$}),ct=_==null?void 0:_.info;if(!t||!i||!d)return{topViewAddSphere:()=>{},topViewAddBox:()=>{},topViewSelectedChanged:()=>{},sideViewUpdateBox:()=>{},backViewUpdateBox:()=>{}};const{pointCloudInstance:ot}=t,Vt=n=>{o==null||o.generateBox(n),o==null||o.controls.update(),o==null||o.render()},Ot=n=>{o==null||o.generateSphere(n),o==null||o.controls.update(),o==null||o.render()},kt=({newPoint:n,size:s,zoom:p,trackConfigurable:r})=>{var l;const f={attribute:(l=t.toolInstance.defaultAttribute)!=null?l:""};r===!0&&Object.assign(f,{trackID:V.getNextTrackID({imgList:[],extraBoxList:[],extraSphereList:m})});const P=lt(n,s,ot,void 0,f);c(n.id);const x=g(P);X(y.Top,n,P,p,x,S),R({newSphereParams:P})},Rt=({polygon:n,size:s,imgList:p,trackConfigurable:r,zoom:l,intelligentFit:f})=>{var P,x;const C={attribute:(P=t.toolInstance.defaultAttribute)!=null?P:""};r===!0&&Object.assign(C,{trackID:V.getNextTrackID({imgList:[],extraBoxList:h,extraSphereList:m})});const D=t==null?void 0:t.toolInstance,w=L({},n);let{boxParams:b,newPointList:A}=dt(w,s,ot,void 0,C,f);b=H(st({tool:nt.PointCloud,dataList:[b],stepConfig:S,action:"viewUpdateBox"}))[0],f&&(A==null?void 0:A.length)&&(w.pointList=A);const k=I.includes(w.attribute);$(b);const G=a(b),et=(x=e==null?void 0:e.polygonList)!=null?x:[];t==null||t.updatePolygonList(G!=null?G:[],et),k?c([]):(c(b.id),D.selection.setSelectedIDs(w.id),M({omitView:y.Top,polygon:w,boxParams:b,zoom:l,newPointCloudBoxList:G}),f&&at(b,w,t,o)),R({newBoxParams:b})},At=n=>{const{boxID:s,imageName:p,width:r,height:l,x:f,y:P}=n,x=h.find(C=>C.id===s);if(x==null?void 0:x.rects){const{rects:C=[]}=x,D=C.find(w=>w.imageName===p);if(D){let w=C;const b=O(L({},D),{width:r,height:l,x:f,y:P});w=C.map(k=>k===D?b:k);const A=O(L({},x),{rects:w}),U=h.map(k=>k===x?A:k);return t==null||t.updatePolygonList(U!=null?U:[]),U}}},Ut=({newSelectedBox:n,newPointCloudList:s,newSelectedSphere:p,newSphereList:r})=>{var l;const f=t==null?void 0:t.toolInstance;if(!(u.length===0||!f)){if(n||(_==null?void 0:_.info)){const P=n!=null?n:_==null?void 0:_.info;(l=f==null?void 0:f.selection)==null||l.setSelectedIDs(u[0]);const x=f.selectedPolygon;if(u.length===1&&P){M({omitView:y.Top,polygon:x,boxParams:P,newPointCloudBoxList:s});return}}if((p||Q)&&u.length===1){const P=p!=null?p:Q;f.setSelectedID(u[0]);const x=f.selectedPoint;P&&X(y.Top,x,P,void 0,r,S)}}},ut=(n,s,p)=>{if(ct){let r,l;switch(p){case y.Back:r=po;break;case y.Side:r=yt;break;default:r=yt;break}if(l=r(n,s,ct,i.pointCloudInstance),o){const{count:D}=o.getSensesPointZAxisInPolygon(Mt(l).polygonPointList,[l.center.z-l.depth/2,l.center.z+l.depth/2]);l=O(L({},l),{count:D})}const P=H(st({tool:nt.PointCloud,dataList:[l],stepConfig:S,action:"viewUpdateBox"}))[0],x=l.valid!==P.valid;l=P;const C=Dt(l);return l=C.find(D=>D.id===l.id),M({omitView:x?void 0:p,polygon:n,boxParams:l,newPointCloudBoxList:C}),C}},pt=(n,s,p)=>{if(Q){let r,l;switch(p){case y.Back:r=uo;break;case y.Side:r=Lt;break;default:r=Lt;break}l=r(n,s,Q);const f=v(l);return X(p,n,l,void 0,f,S),f}},zt=(n,s)=>{pt(n,s,y.Side)},Tt=(n,s)=>{pt(n,s,y.Back)},jt=(n,s)=>{ut(n,s,y.Side)},Nt=(n,s)=>{ut(n,s,y.Back)},Et=(n,s)=>{const p=F(n.id),r=lt(n,s,ot,p),l=v(r);X(y.Top,n,r,void 0,l,S)},Ft=(n,s)=>{if(N){const r=L({},n[0].newPolygon);r.pointList=r.pointList.map(l=>V.transferCanvas2World(l,s)),j(r);return}let p=n.map(({newPolygon:r})=>{const l=_t(r.id),{boxParams:f}=dt(r,s,t.pointCloudInstance,l);return f});if(p=H(st({tool:nt.PointCloud,dataList:p,stepConfig:S,action:"viewUpdateBox"})),p.length===1){const{newPolygon:r}=n[0],l=tt(p);M({polygon:r,boxParams:p[0],newPointCloudBoxList:l})}else{const r=tt(p);r&&e.syncAllViewPointCloudColor(r)}},Ht=n=>{var s,p,r,l,f;if(_){const P=Number(n.widthDefault),x=Number(n.depthDefault),C=Number(n.heightDefault),D=_==null?void 0:_.info.trackID,b=((s=t==null?void 0:t.toolInstance)==null?void 0:s.polygonList).find(Y=>(Y==null?void 0:Y.trackID)===D),A={width:(r=(p=t==null?void 0:t.toolInstance)==null?void 0:p.basicImgInfo)==null?void 0:r.width,height:(f=(l=t==null?void 0:t.toolInstance)==null?void 0:l.basicImgInfo)==null?void 0:f.height},U=b.pointList.map(Y=>V.transferCanvas2World(Y,A)),k=B.getModifiedRectangleCoordinates(U,C,P),G=k[0],et=k[2],gt=B.getLineCenterPoint([G,et]),Wt=_.info.center.z-_.info.depth/2,ft=O(L({},_.info),{center:{x:gt.x,y:gt.y,z:Wt+x/2},width:P,height:C,depth:x,valid:!0}),Zt=tt([ft]);M({omitView:y["3D"],polygon:b,boxParams:ft,newPointCloudBoxList:Zt})}},X=(n,s,p,r,l,f)=>rt(void 0,null,function*(){const P=Z==null?void 0:Z.url,x={[y.Side]:()=>{vt(p,s,i,P,f)},[y.Back]:()=>{d&&bt(p,s,d,P,f)},[y.Top]:()=>{It(p,s,t,o)}};Object.keys(x).forEach(C=>{C!==n&&x[C]()}),r&&(o==null||o.updateCameraZoom(r)),Ot(p)}),M=n=>rt(void 0,null,function*(){const{omitView:s,polygon:p,boxParams:r,zoom:l,newPointCloudBoxList:f}=n,P=Z==null?void 0:Z.url;f&&(yield e.syncAllViewPointCloudColor(f));const x={[y.Side]:()=>{Bt(r,p,i,P)},[y.Back]:()=>{d&&wt(r,p,d,P)},[y.Top]:()=>{at(r,p,t,o)}};Object.keys(x).forEach(C=>{C!==s&&x[C]()}),l&&(o==null||o.updateCameraZoom(l)),Vt(r)});return{topViewAddSphere:kt,topViewAddBox:Rt,topViewSelectedChanged:Ut,topViewUpdatePoint:Et,sideViewUpdatePoint:zt,backViewUpdatePoint:Tt,topViewUpdateBox:Ft,sideViewUpdateBox:jt,backViewUpdateBox:Nt,pointCloudBoxListUpdated:n=>{t.updatePolygonList(n),o==null||o.generateBoxes(n)},initPointCloud3d:n=>{if(!o)return;const s=V.getDefaultOrthographicParams(n);o.initOrthographicCamera(s),o.initRenderer(),o.render()},updatePointCloudData:(...n)=>rt(void 0,[...n],function*(s=Z){var p,r,l,f,P,x;if(!(s==null?void 0:s.url)||!o)return;W([]),Ct(H,!0),Pt(H,!0),yield o.loadPCDFile(s.url,(p=S==null?void 0:S.radius)!=null?p:K),o==null||o.clearAllBox(),o==null||o.clearAllSphere();let C=[],D=[],w=[],b=[];o.updateTopCamera();const A=(l=(r=it(s.result))==null?void 0:r.valid)!=null?l:!0;if(e.setPointCloudValid(A),(f=e.sideViewInstance)==null||f.clearAllData(),(P=e.backViewInstance)==null||P.clearAllData(),s.result){if(C=V.getBoxParamsFromResultList(s.result),(C==null?void 0:C.length)>0&&s.isPreResult&&(S==null?void 0:S.lowerLimitPointsNumInBox)>0){C=yield o==null?void 0:o.filterPreResult(s.url,S,C);const U=it(s.result);U[Gt].result=C,s.result=JSON.stringify(U),e.setPointCloudResult(C)}w=V.getPolygonListFromResultList(s.result),D=V.getLineListFromResultList(s.result),b=V.getSphereParamsFromResultList(s.result),t.updateData(s.url,s.result,{radius:(x=S==null?void 0:S.radius)!=null?x:K}),o==null||o.generateBoxes(C),o==null||o.generateSpheres(b),yield e.syncAllViewPointCloudColor(C,[])}E({pointCloudBoxList:C,polygonList:w,lineList:D,pointCloudSphereList:b}),Ct(H,!1),Pt(H,!1)}),updateViewsByDefaultSize:Ht,generateRects:$,update2DViewRect:At}};export{bt as syncBackViewByPoint,vt as syncSideViewByPoint,It as syncTopViewByPoint,wt as synchronizeBackView,Bt as synchronizeSideView,at as synchronizeTopView,lt as topViewPoint2PointCloud,dt as topViewPolygon2PointCloud,go as usePointCloudViews};
1
+ import{EPointCloudName as it,TagUtils as Qt,MathUtils as b,getCuboidFromPointCloudBox as Xt}from"@labelbee/lb-annotation";import{EPerspectiveView as G,PointCloudUtils as V,POINT_CLOUD_DEFAULT_STEP as Yt,DEFAULT_SPHERE_PARAMS as qt}from"@labelbee/lb-utils";import{useContext as Kt}from"react";import{PointCloudContext as $t}from"../PointCloudContext.js";import{useSingleBox as to}from"./useSingleBox.js";import{useSphere as oo}from"./useSphere.js";import{useSelector as eo,useDispatch as no}from"../../../store/ctx.js";import io from"../../../utils/StepUtils.js";import{EPointCloudBoxRenderTrigger as st}from"../../../utils/ToolPointCloudBoxRenderHelper.js";import{jsonParser as rt,generatePointCloudBoxRects as so}from"../../../utils/index.js";import{PreDataProcess as lt,SetPointCloudLoading as mt,SetLoadPCDFileLoading as xt}from"../../../store/annotation/actionCreators.js";import{useHistory as ro}from"./useHistory.js";import{usePolygon as lo}from"./usePolygon.js";import{useLatest as ao}from"ahooks";var co=Object.defineProperty,uo=Object.defineProperties,po=Object.getOwnPropertyDescriptors,ht=Object.getOwnPropertySymbols,go=Object.prototype.hasOwnProperty,fo=Object.prototype.propertyIsEnumerable,vt=(e,t,s)=>t in e?co(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,L=(e,t)=>{for(var s in t||(t={}))go.call(t,s)&&vt(e,s,t[s]);if(ht)for(var s of ht(t))fo.call(t,s)&&vt(e,s,t[s]);return e},R=(e,t)=>uo(e,po(t)),dt=(e,t,s)=>new Promise((a,o)=>{var c=p=>{try{u(s.next(p))}catch(m){o(m)}},g=p=>{try{u(s.throw(p))}catch(m){o(m)}},u=p=>p.done?a(p.value):Promise.resolve(p.value).then(c,g);u((s=s.apply(e,t)).next())});const q=5,K=90,Lt=.01,y={"3D":"3D",Top:"Top",Side:"Side",Back:"Back"},at=(e,t,s,a,o)=>{const{x:c,y:g}=V.transferCanvas2World(e,t),{defaultZ:u}=qt,p={center:{x:c,y:g,z:u},id:e.id},m=a?L(L({},a),p):R(L({},p),{attribute:"",valid:!0});return o&&Object.assign(m,o),m},ct=(e,t,s,a,o,c)=>{let g=e.pointList.map(w=>V.transferCanvas2World(w,t)),u=0,p=1,m={};if(s){const w=s.getSensesPointZAxisInPolygon(g,void 0,c);c&&w.fittedCoordinates.length>0&&(g=w.fittedCoordinates),u=(w.maxZ+w.minZ)/2,p=w.maxZ-w.minZ,m={count:w.zCount}}const[v,D,F]=g,O=b.getLineCenterPoint([v,F]),A=b.getLineLength(v,D),j=b.getLineLength(D,F),k=b.getRadiusFromQuadrangle(e.pointList);a&&(u=a.center.z,p=a.depth);const U={center:{x:O.x,y:O.y,z:u},width:c?j+Lt:j,height:c?A+Lt:A,depth:p,rotation:k,id:e.id},T=L(a?L(L({},a),U):R(L({},U),{attribute:"",valid:!0}),m);o&&Object.assign(T,o);const N=g.map(w=>V.transferWorld2Canvas(w,t));return{boxParams:T,newPointList:N}},yt=(e,t,s)=>{const a={x:e.x-t.x,y:e.y-t.y};return R(L({},s),{center:{x:s.center.x-a.x,y:s.center.y,z:s.center.z-a.y}})},Bt=(e,t,s,a)=>{const[o,c,g]=e.pointList,[u,p,m]=t.pointList,v=b.getLineCenterPoint([o,g]),D=b.getLineCenterPoint([u,m]),O={x:{x:v.x-D.x,y:v.y-D.y}.x,y:0,z:v.y-D.y},A=b.getLineLength(o,c),j=b.getLineLength(u,p),k=A-j,U=b.getLineLength(c,g),T=b.getLineLength(p,m),N=U-T,{newBoxParams:w}=a.getNewBoxBySideUpdate(O,N,k,s);return w},Co=(e,t,s)=>{const a={x:e.x-t.x,y:e.y-t.y};return R(L({},s),{center:{x:s.center.x,y:s.center.y-a.x,z:s.center.z-a.y}})},Po=(e,t,s,a)=>{const[o,c,g]=e.pointList,[u,p,m]=t.pointList,v=b.getLineCenterPoint([o,g]),D=b.getLineCenterPoint([u,m]),O={x:{x:v.x-D.x,y:v.y-D.y}.x,y:0,z:v.y-D.y},A=b.getLineLength(o,c),j=b.getLineLength(u,p),k=A-j,U=b.getLineLength(c,g),T=b.getLineLength(p,m),N=U-T;let{newBoxParams:w}=a.getNewBoxByBackUpdate(O,N,k,s);return w},bt=(e,t,s,a,o)=>{var c;if(!s)return;const{toolInstance:g,pointCloudInstance:u}=s;u.loadPCDFile(a,(c=o==null?void 0:o.radius)!=null?c:K);const{cameraPositionVector:p}=u.updateOrthoCameraBySphere(e,G.Left);u.setInitCameraPosition(p);const{point2d:m,zoom:v}=u.getSphereSidePoint2DCoordinate(e);u.camera.zoom=v,u.camera.updateProjectionMatrix(),u.render(),g.initPosition(),g.zoomChangeOnCenter(v),g.setResult([R(L(L({},t),m),{valid:e.valid,textAttribute:"",attribute:e.attribute})]),g.setSelectedID(t.id)},wt=(e,t,s,a)=>{if(!s)return;const{pointCloud2dOperation:o,pointCloudInstance:c}=s;c.loadPCDFileByBox(a,e,{width:q,depth:q});const{cameraPositionVector:g}=c.updateOrthoCamera(e,G.Left);c.setInitCameraPosition(g);const{polygon2d:u,zoom:p}=c.getBoxSidePolygon2DCoordinate(e);c.camera.zoom=p,c.camera.updateProjectionMatrix(),c.render(),o.initPosition(),o.zoomChangeOnCenter(p),o.setResultAndSelectedID([{id:t.id,valid:e.valid,pointList:u,textAttribute:"",isRect:!0,attribute:e.attribute}],t.id)},It=(e,t,s,a,o)=>{var c;if(!s)return;const{toolInstance:g,pointCloudInstance:u}=s;u.loadPCDFile(a,(c=o==null?void 0:o.radius)!=null?c:K);const{cameraPositionVector:p}=u.updateOrthoCameraBySphere(e,G.Back);u.setInitCameraPosition(p);const{point2d:m,zoom:v}=u.getSphereBackPoint2DCoordinate(e);u.camera.zoom=v,u.camera.updateProjectionMatrix(),u.render(),g.initPosition(),g.zoomChangeOnCenter(v),g.setResult([R(L(L({},t),m),{valid:e.valid,textAttribute:"",attribute:e.attribute})]),g.setSelectedID(t.id)},Dt=(e,t,s,a)=>{if(!s)return;const{pointCloud2dOperation:o,pointCloudInstance:c}=s;c.loadPCDFileByBox(a,e,{height:q,depth:q});const{cameraPositionVector:g}=c.updateOrthoCamera(e,G.Back);c.setInitCameraPosition(g);const{polygon2d:u,zoom:p}=c.getBoxBackPolygon2DCoordinate(e);c.camera.zoom=p,c.camera.updateProjectionMatrix(),c.render(),o.initPosition(),o.zoomChangeOnCenter(p),o.setResultAndSelectedID([{id:t.id,valid:e.valid,pointList:u,textAttribute:"",isRect:!0,attribute:e.attribute}],t.id)},St=(e,t,s,a)=>{if(!s||!a)return;a.generateSphere(e),a.updateCameraBySphere(e,G.Top),a.render();const{toolInstance:o,pointCloudInstance:c}=s,{point2d:g}=c.getSphereTopPoint2DCoordinate(e),u=[...o.pointList].map(p=>p.id===t.id?R(L(L({},t),g),{valid:e.valid,textAttribute:"",attribute:e.attribute}):p);o.setResult(u),o.setSelectedID(t.id)},ut=(e,t,s,a)=>{var o,c;if(!s||!a)return;a.generateBox(e,t.id),a.render();const{pointCloud2dOperation:g,pointCloudInstance:u}=s,{polygon2d:p}=u.getBoxTopPolygon2DCoordinate(e),m=[...g.polygonList],v=m.find(D=>D.id===t.id);v?(v.pointList=p,v.valid=(o=e.valid)!=null?o:!0):m.push({id:t.id,pointList:p,textAttribute:"",isRect:!0,valid:(c=e.valid)!=null?c:!0}),g.setResultAndSelectedID(m,t.id)},mo=()=>{const e=Kt($t),{topViewInstance:t,sideViewInstance:s,backViewInstance:a,mainViewInstance:o,addPointCloudBox:c,addPointCloudSphere:g,setSelectedIDs:u,selectedIDs:p,pointCloudBoxList:m,pointCloudSphereList:v,hideAttributes:D,setHighlight2DDataList:F,cuboidBoxIn2DView:O,imageSizes:A,history:j}=e,{addHistory:k,initHistory:U,pushHistoryUnderUpdatePolygon:T}=ro(),{selectedPolygon:N}=lo(),{getPointCloudSphereByID:w,updatePointCloudSphere:pt,selectedSphere:J}=oo(),{currentData:M,config:B}=eo(i=>{const{stepList:n,step:d,imgList:r,imgIndex:l}=i.annotation;return{currentData:r[l],config:rt(io.getCurrentStepInfo(d,n).config)}}),E=no(),_t=ao(O),$=i=>{const{enableAutoMap2DRect:n=!1}=B;if(!_t.current||n){const{mappingImgList:d=[]}=M;so({pointCloudBox:i,mappingImgList:d,imageSizes:A})}},{selectedBox:_,updateSelectedBox:Vt,updateSelectedBoxes:tt,getPointCloudByID:Rt}=to({generateRects:$}),gt=_==null?void 0:_.info;if(!t||!s||!a)return{topViewAddSphere:()=>{},topViewAddBox:()=>{},topViewSelectedChanged:()=>{},sideViewUpdateBox:()=>{},backViewUpdateBox:()=>{}};const{pointCloudInstance:ot}=t,Ot=i=>{o==null||o.generateBox(i),o==null||o.controls.update(),o==null||o.render()},At=i=>{o==null||o.generateSphere(i),o==null||o.controls.update(),o==null||o.render()},kt=({newPoint:i,size:n,zoom:d,trackConfigurable:r})=>{var l;const f={attribute:(l=t.toolInstance.defaultAttribute)!=null?l:""};r===!0&&Object.assign(f,{trackID:V.getNextTrackID({imgList:[],extraBoxList:[],extraSphereList:v})});const P=at(i,n,ot,void 0,f);u(i.id);const C=g(P);Q(y.Top,i,P,d,C,B),k({newSphereParams:P})},Ut=({polygon:i,size:n,imgList:d,trackConfigurable:r,zoom:l,intelligentFit:f})=>{var P,C,x;const S={attribute:(P=t.toolInstance.defaultAttribute)!=null?P:""};r===!0&&Object.assign(S,{trackID:V.getNextTrackID({imgList:[],extraBoxList:m,extraSphereList:v})});const H=t==null?void 0:t.toolInstance,I=L({},i);let{boxParams:h,newPointList:z}=ct(I,n,ot,void 0,S,f);h=E(lt({tool:it.PointCloud,dataList:[h],stepConfig:B,action:"viewUpdateBox"}))[0],f&&(z==null?void 0:z.length)&&(I.pointList=z);const nt=D.includes(I.attribute);$(h);const Z=c(h),X=(C=e==null?void 0:e.polygonList)!=null?C:[];h.subAttribute=Qt.getDefaultResultByConfig((B==null?void 0:B.secondaryAttributeConfigurable)?(x=B==null?void 0:B.inputList)!=null?x:[]:[]),t==null||t.updatePolygonList(Z!=null?Z:[],X),nt?u([]):(u(h.id),H.selection.setSelectedIDs(I.id),W({omitView:y.Top,polygon:I,boxParams:h,zoom:l,newPointCloudBoxList:Z}),f&&ut(h,I,t,o)),k({newBoxParams:h})},Tt=i=>{const{boxID:n,imageName:d,width:r,height:l,x:f,y:P}=i,C=m.find(h=>h.id===n);if(!(C==null?void 0:C.rects)||!C.rects.find(h=>h.imageName===d))return;const S=C.rects.map(h=>h.imageName===d?R(L({},h),{width:r,height:l,x:f,y:P}):h),H=R(L({},C),{rects:S}),I=m.map(h=>h.id===n?H:h);return t==null||t.updatePolygonList(I!=null?I:[]),I},zt=i=>{const{boxID:n,imageName:d}=i,r=m.find(C=>C.id===n);if(!(r==null?void 0:r.rects))return;const l=r.rects.filter(C=>C.imageName!==d),f=R(L({},r),{rects:l}),P=m.map(C=>C.id===n?f:C);return t==null||t.updatePolygonList(P!=null?P:[]),P},jt=({newSelectedBox:i,newPointCloudList:n,newSelectedSphere:d,newSphereList:r})=>{var l;const f=t==null?void 0:t.toolInstance;if(!(p.length===0||!f)){if(i||(_==null?void 0:_.info)){const P=i!=null?i:_==null?void 0:_.info;(l=f==null?void 0:f.selection)==null||l.setSelectedIDs(p[0]);const C=f.selectedPolygon;if(p.length===1&&P){W({omitView:y.Top,polygon:C,boxParams:P,newPointCloudBoxList:n});return}}if((d||J)&&p.length===1){const P=d!=null?d:J;f.setSelectedID(p[0]);const C=f.selectedPoint;P&&Q(y.Top,C,P,void 0,r,B)}}},ft=(i,n,d)=>{if(gt){let r,l;switch(d){case y.Back:r=Po;break;case y.Side:r=Bt;break;default:r=Bt;break}if(l=r(i,n,gt,s.pointCloudInstance),o){const{count:S}=o.getSensesPointZAxisInPolygon(Xt(l).polygonPointList,[l.center.z-l.depth/2,l.center.z+l.depth/2]);l=R(L({},l),{count:S})}const P=E(lt({tool:it.PointCloud,dataList:[l],stepConfig:B,action:"viewUpdateBox"}))[0],C=l.valid!==P.valid;l=P;const x=Vt(l);return l=x.find(S=>S.id===l.id),W({omitView:C?void 0:d,polygon:i,boxParams:l,newPointCloudBoxList:x}),x}},Ct=(i,n,d)=>{if(J){let r,l;switch(d){case y.Back:r=Co;break;case y.Side:r=yt;break;default:r=yt;break}l=r(i,n,J);const f=pt(l);return Q(d,i,l,void 0,f,B),f}},Nt=(i,n)=>{Ct(i,n,y.Side)},Et=(i,n)=>{Ct(i,n,y.Back)},Ht=(i,n)=>{ft(i,n,y.Side)},Ft=(i,n)=>{ft(i,n,y.Back)},Mt=(i,n)=>{const d=w(i.id),r=at(i,n,ot,d),l=pt(r);Q(y.Top,i,r,void 0,l,B)},Wt=(i,n)=>{if(N){const r=L({},i[0].newPolygon);r.pointList=r.pointList.map(l=>V.transferCanvas2World(l,n)),T(r);return}let d=i.map(({newPolygon:r})=>{const l=Rt(r.id),{boxParams:f}=ct(r,n,t.pointCloudInstance,l);return f});if(d=E(lt({tool:it.PointCloud,dataList:d,stepConfig:B,action:"viewUpdateBox"})),d.length===1){const{newPolygon:r}=i[0],l=tt(d);W({polygon:r,boxParams:d[0],newPointCloudBoxList:l})}else{const r=tt(d);r&&e.syncAllViewPointCloudColor(st.MultiMove,r)}},Zt=i=>{var n,d,r,l,f;if(_){const P=Number(i.widthDefault),C=Number(i.depthDefault),x=Number(i.heightDefault),S=_==null?void 0:_.info.trackID,I=((n=t==null?void 0:t.toolInstance)==null?void 0:n.polygonList).find(Y=>(Y==null?void 0:Y.trackID)===S),h={width:(r=(d=t==null?void 0:t.toolInstance)==null?void 0:d.basicImgInfo)==null?void 0:r.width,height:(f=(l=t==null?void 0:t.toolInstance)==null?void 0:l.basicImgInfo)==null?void 0:f.height},z=I.pointList.map(Y=>V.transferCanvas2World(Y,h)),et=b.getModifiedRectangleCoordinates(z,x,P),nt=et[0],Z=et[2],X=b.getLineCenterPoint([nt,Z]),Gt=_.info.center.z-_.info.depth/2,Pt=R(L({},_.info),{center:{x:X.x,y:X.y,z:Gt+C/2},width:P,height:x,depth:C,valid:!0}),Jt=tt([Pt]);W({omitView:y["3D"],polygon:I,boxParams:Pt,newPointCloudBoxList:Jt})}},Q=(i,n,d,r,l,f)=>dt(void 0,null,function*(){const P=M==null?void 0:M.url,C={[y.Side]:()=>{bt(d,n,s,P,f)},[y.Back]:()=>{a&&It(d,n,a,P,f)},[y.Top]:()=>{St(d,n,t,o)}};Object.keys(C).forEach(x=>{x!==i&&C[x]()}),r&&(o==null||o.updateCameraZoom(r)),At(d)}),W=i=>dt(void 0,null,function*(){const{omitView:n,polygon:d,boxParams:r,zoom:l,newPointCloudBoxList:f}=i,P=M==null?void 0:M.url;f&&(yield e.syncAllViewPointCloudColor(st.Single,f));const C={[y.Side]:()=>{wt(r,d,s,P)},[y.Back]:()=>{a&&Dt(r,d,a,P)},[y.Top]:()=>{ut(r,d,t,o)}};Object.keys(C).forEach(x=>{x!==n&&C[x]()}),l&&(o==null||o.updateCameraZoom(l)),Ot(r)});return{topViewAddSphere:kt,topViewAddBox:Ut,topViewSelectedChanged:jt,topViewUpdatePoint:Mt,sideViewUpdatePoint:Nt,backViewUpdatePoint:Et,topViewUpdateBox:Wt,sideViewUpdateBox:Ht,backViewUpdateBox:Ft,pointCloudBoxListUpdated:i=>{t.updatePolygonList(i),o==null||o.generateBoxes(i)},initPointCloud3d:i=>{if(!o)return;const n=V.getDefaultOrthographicParams(i);o.initOrthographicCamera(n),o.initRenderer(),o.render()},updatePointCloudData:(...i)=>dt(void 0,[...i],function*(n=M){var d,r,l,f,P,C;if(!(n==null?void 0:n.url)||!o)return;F([]),mt(E,!0),xt(E,!0),yield o.loadPCDFile(n.url,(d=B==null?void 0:B.radius)!=null?d:K),o==null||o.clearAllBox(),o==null||o.clearAllSphere();let x=[],S=[],H=[],I=[];o.updateTopCamera();const h=(l=(r=rt(n.result))==null?void 0:r.valid)!=null?l:!0;if(e.setPointCloudValid(h),(f=e.sideViewInstance)==null||f.clearAllData(),(P=e.backViewInstance)==null||P.clearAllData(),n.result){if(x=V.getBoxParamsFromResultList(n.result),(x==null?void 0:x.length)>0&&n.isPreResult&&(B==null?void 0:B.lowerLimitPointsNumInBox)>0){x=yield o==null?void 0:o.filterPreResult(n.url,B,x);const z=rt(n.result);z[Yt].result=x,n.result=JSON.stringify(z),e.setPointCloudResult(x)}H=V.getPolygonListFromResultList(n.result),S=V.getLineListFromResultList(n.result),I=V.getSphereParamsFromResultList(n.result),t.updateData(n.url,n.result,{radius:(C=B==null?void 0:B.radius)!=null?C:K}),o==null||o.generateBoxes(x),o==null||o.generateSpheres(I),yield e.syncAllViewPointCloudColor(st.Default,x,[])}U({pointCloudBoxList:x,polygonList:H,lineList:S,pointCloudSphereList:I}),mt(E,!1),xt(E,!1)}),updateViewsByDefaultSize:Zt,generateRects:$,update2DViewRect:Tt,remove2DViewRect:zt}};export{It as syncBackViewByPoint,bt as syncSideViewByPoint,St as syncTopViewByPoint,Dt as synchronizeBackView,wt as synchronizeSideView,ut as synchronizeTopView,at as topViewPoint2PointCloud,ct as topViewPolygon2PointCloud,mo as usePointCloudViews};
@@ -1 +1 @@
1
- import{useContext as c}from"react";import{PointCloudContext as P}from"../PointCloudContext.js";import{useHistory as u}from"./useHistory.js";var f=Object.defineProperty,g=Object.defineProperties,_=Object.getOwnPropertyDescriptors,l=Object.getOwnPropertySymbols,m=Object.prototype.hasOwnProperty,O=Object.prototype.propertyIsEnumerable,a=(e,o,t)=>o in e?f(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,p=(e,o)=>{for(var t in o||(o={}))m.call(o,t)&&a(e,t,o[t]);if(l)for(var t of l(o))O.call(o,t)&&a(e,t,o[t]);return e},w=(e,o)=>g(e,_(o));const v=()=>{const{polygonList:e,setPolygonList:o,selectedID:t}=c(P),{addHistory:d,pushHistoryWithList:y}=u(),i=e.find(r=>r.id===t);return{addPolygon:r=>{o(e.concat(r)),d({newPolygon:r})},deletePolygon:r=>{const s=e.filter(n=>n.id!==r).map(n=>p({},n));o(s),y({polygonList:s})},selectedPolygon:i,updateSelectedPolygon:r=>{i&&o(e.map(s=>s.id===t?r:s))},updatePolygonValidByID:r=>{e.find(n=>n.id===r)&&o(e.map(n=>n.id===r?w(p({},n),{valid:!n.valid}):n))}}};export{v as usePolygon};
1
+ import{useContext as f}from"react";import{PointCloudContext as g}from"../PointCloudContext.js";import{useHistory as _}from"./useHistory.js";var m=Object.defineProperty,O=Object.defineProperties,w=Object.getOwnPropertyDescriptors,c=Object.getOwnPropertySymbols,x=Object.prototype.hasOwnProperty,C=Object.prototype.propertyIsEnumerable,y=(o,t,e)=>t in o?m(o,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[t]=e,p=(o,t)=>{for(var e in t||(t={}))x.call(t,e)&&y(o,e,t[e]);if(c)for(var e of c(t))C.call(t,e)&&y(o,e,t[e]);return o},L=(o,t)=>O(o,w(t));const h=()=>{const{polygonList:o,pointCloudBoxList:t,setPolygonList:e,selectedID:a}=f(g),{addHistory:u,pushHistoryWithList:P}=_(),d=o.find(r=>r.id===a);return{addPolygon:r=>{e(o.concat(r)),u({newPolygon:r})},deletePolygon:r=>{const i=o.filter(s=>s.id!==r).map(s=>p({},s));e(i);const n={polygonList:i};try{const s=t.filter(l=>l.id!==r).map(l=>p({},l));s.length<t.length&&(n.pointCloudBoxList=s)}catch(s){console.error("exec update history pointCloudBoxList error:",s)}P(n)},selectedPolygon:d,updateSelectedPolygon:r=>{d&&e(o.map(i=>i.id===a?r:i))},updatePolygonValidByID:r=>{o.find(n=>n.id===r)&&e(o.map(n=>n.id===r?L(p({},n),{valid:!n.valid}):n))}}};export{h as usePolygon};
@@ -1 +1 @@
1
- import{useContext as p}from"react";import{synchronizeSideView as C,synchronizeBackView as P}from"./usePointCloudViews.js";import{useSingleBox as w}from"./useSingleBox.js";import{PointCloudContext as x}from"../PointCloudContext.js";import{cAnnotation as f}from"@labelbee/lb-annotation";import{PointCloudUtils as b}from"@labelbee/lb-utils";import{useThrottleFn as V}from"ahooks";const{ERotateDirection:g}=f,y=({currentData:t})=>{const e=p(x),{selectedBox:i,updateSelectedBox:u}=w(),{run:a}=V(l=>{const{topViewInstance:s,mainViewInstance:n,syncAllViewPointCloudColor:d}=e;if(!s||!n)return;const{pointCloud2dOperation:r}=s,o=i==null?void 0:i.info;if(!o||!(t==null?void 0:t.url)||!e.backViewInstance)return;const m=u({rotation:b.restrictAngleRange(o.rotation+Number(Math.PI*l)/180)});r.rotatePolygon(l,g.Anticlockwise);const c=r.selectedPolygon;n.generateBox(o),d(m),C(o,c,e.sideViewInstance,t.url),P(o,c,e.backViewInstance,t.url),n.render()},{wait:800});return{updateRotate:a}};export{y as useRotate};
1
+ import{useContext as p}from"react";import{synchronizeSideView as C,synchronizeBackView as P}from"./usePointCloudViews.js";import{useSingleBox as x}from"./useSingleBox.js";import{PointCloudContext as w}from"../PointCloudContext.js";import{cAnnotation as f}from"@labelbee/lb-annotation";import{PointCloudUtils as g}from"@labelbee/lb-utils";import{EPointCloudBoxRenderTrigger as b}from"../../../utils/ToolPointCloudBoxRenderHelper.js";import{useThrottleFn as B}from"ahooks";const{ERotateDirection:V}=f,y=({currentData:t})=>{const e=p(w),{selectedBox:i,updateSelectedBox:u}=x(),{run:d}=B(l=>{const{topViewInstance:r,mainViewInstance:n,syncAllViewPointCloudColor:a}=e;if(!r||!n)return;const{pointCloud2dOperation:s}=r,o=i==null?void 0:i.info;if(!o||!(t==null?void 0:t.url)||!e.backViewInstance)return;const m=u({rotation:g.restrictAngleRange(o.rotation+Number(Math.PI*l)/180)});s.rotatePolygon(l,V.Anticlockwise);const c=s.selectedPolygon;n.generateBox(o),a(b.SingleRotate,m),C(o,c,e.sideViewInstance,t.url),P(o,c,e.backViewInstance,t.url),n.render()},{wait:800});return{updateRotate:d}};export{y as useRotate};
@@ -0,0 +1 @@
1
+ import{useContext as g}from"react";import{synchronizeSideView as m,synchronizeBackView as P}from"./usePointCloudViews.js";import{useSingleBox as h}from"./useSingleBox.js";import{PointCloudContext as w}from"../PointCloudContext.js";import{useThrottleFn as x}from"ahooks";import{PointCloudUtils as C}from"@labelbee/lb-utils";const f=({currentData:t})=>{const e=g(w),{selectedBox:l,updateSelectedBox:c}=h(),{run:u}=x(a=>{const{topViewInstance:r,mainViewInstance:i}=e;if(!r||!i)return;const{pointCloud2dOperation:s}=r,o=l==null?void 0:l.info;if(!o||!(t==null?void 0:t.url)||!e.backViewInstance)return;const n=s.selectedPolygon.pointList||[],p=n.shift();n.push(p),c({newPointList:n,rotation:C.restrictAngleRange(o.rotation+Number(Math.PI*a)/180),width:o.height,height:o.width}),s.rotatePolygonEdge(n);const d=s.selectedPolygon;i.generateBox(o),m(o,d,e.sideViewInstance,t.url),P(o,d,e.backViewInstance,t.url),i.render()},{wait:800});return{updateRotateEdge:u}};export{f as useRotateEdge};
@@ -1 +1 @@
1
- import{useContext as G,useMemo as h,useCallback as u}from"react";import f from"lodash";import{PointCloudContext as J}from"../PointCloudContext.js";import{EToolName as D,cAnnotation as Q}from"@labelbee/lb-annotation";import{useHistory as U}from"./useHistory.js";import{usePolygon as X}from"./usePolygon.js";var Y=Object.defineProperty,Z=Object.defineProperties,$=Object.getOwnPropertyDescriptors,L=Object.getOwnPropertySymbols,ee=Object.prototype.hasOwnProperty,oe=Object.prototype.propertyIsEnumerable,S=(i,e,l)=>e in i?Y(i,e,{enumerable:!0,configurable:!0,writable:!0,value:l}):i[e]=l,ne=(i,e)=>{for(var l in e||(e={}))ee.call(e,l)&&S(i,l,e[l]);if(L)for(var l of L(e))oe.call(e,l)&&S(i,l,e[l]);return i},te=(i,e)=>Z(i,$(e));const{ESortDirection:y}=Q,ie=i=>{const{pointCloudBoxList:e,setPointCloudResult:l,topViewInstance:d,backViewInstance:g,sideViewInstance:C,selectedIDs:P,selectedID:m,mainViewInstance:c,setSelectedIDs:j,syncAllViewPointCloudColor:I,polygonList:R,pointCloudPattern:B}=G(J),{selectedPolygon:a,updateSelectedPolygon:A,updatePolygonValidByID:E,deletePolygon:N}=X(),{pushHistoryWithList:_}=U(),r=h(()=>{const o=e.findIndex(t=>t.id===m);if(o>-1)return{info:e[o],index:o}},[m,e]),O=u(o=>{var t;if(r==null?void 0:r.info){(t=i==null?void 0:i.generateRects)==null||t.call(i,o),e.splice(r.index,1,f.merge(r.info,o));const n=f.cloneDeep(e);return l(n),_({pointCloudBoxList:n}),n}return e},[m,e]),H=u((o,t)=>{const n=e.findIndex(s=>s.id===t);if(n>-1){e.splice(n,1,f.merge(e[n],o));const s=f.cloneDeep(e);return l(s),s}return e},[e]),v=u(o=>{d==null||d.pointCloud2dOperation.setPolygonValidAndRender(o,!0),C==null||C.pointCloud2dOperation.setPolygonValidAndRender(o,!0),g==null||g.pointCloud2dOperation.setPolygonValidAndRender(o,!0)},[d,C,g]),T=u(()=>{if(r==null?void 0:r.info){const{id:o,valid:t=!0}=r.info,n=O({valid:!t});I(n),v(o)}a&&(A(te(ne({},a),{valid:!a.valid})),d==null||d.pointCloud2dOperation.setPolygonValidAndRender(a.id,!0))},[v,r,a]),k=u(o=>{const t=e.find(n=>n.id===o);if(t){const{id:n,valid:s=!0}=t,x=H({valid:!s},n);return v(n),x}E(o)},[v,e,R]),b=u((o=y.ascend,t=!1)=>{if(!d||P.length>1)return;if(B!==D.Rect&&B!==D.Polygon){t&&document.dispatchEvent(new KeyboardEvent("keydown",{keyCode:9,shiftKey:o!==y.ascend}));return}const{pointCloud2dOperation:n}=d,s=n.switchToNextPolygon(o);s&&j(s)},[d,B,d==null?void 0:d.toolInstance]),K=(o=!1)=>{b(y.descend,o)},M=(o=!1)=>{b(y.ascend,o)},V=o=>{const t=e.filter(n=>n.id!==o);l(t),c==null||c.removeObjectByName(o,"box"),c==null||c.render(),I(t)},W=()=>{r&&(V(r.info.id),d==null||d.pointCloud2dOperation.deletePolygon(r.info.id)),a&&(N(a.id),d==null||d.pointCloud2dOperation.deletePolygon(a.id))},q=h(()=>e.filter(o=>P.includes(o.id)),[P,e]),z=u(o=>{var t;const n=f.cloneDeep(e);let s=!1;for(const x of o){const w=n.findIndex(p=>p.id===x.id);if(w>-1){const p=f.merge(n[w],x);(t=i==null?void 0:i.generateRects)==null||t.call(i,p),n.splice(w,1,p),c==null||c.generateBox(p),s=!0}}if(s)return l(n),_({pointCloudBoxList:n}),c==null||c.render(),n},[P,e]),F=u(o=>e.find(t=>t.id===o),[e]);return{selectedBox:r,updateSelectedBox:O,changeSelectedBoxValid:T,changeValidByID:k,selectNextBox:M,selectPrevBox:K,deletePointCloudBox:V,selectedBoxes:q,updateSelectedBoxes:z,getPointCloudByID:F,deleteSelectedPointCloudBoxAndPolygon:W}};export{ie as useSingleBox};
1
+ import{useContext as de,useMemo as A,useCallback as f}from"react";import m from"lodash";import{PointCloudContext as le}from"../PointCloudContext.js";import{EToolName as T,cAnnotation as re}from"@labelbee/lb-annotation";import{useHistory as se}from"./useHistory.js";import{usePolygon as ae}from"./usePolygon.js";import{EPointCloudBoxRenderTrigger as H}from"../../../utils/ToolPointCloudBoxRenderHelper.js";var ce=Object.defineProperty,ue=Object.defineProperties,fe=Object.getOwnPropertyDescriptors,M=Object.getOwnPropertySymbols,pe=Object.prototype.hasOwnProperty,ge=Object.prototype.propertyIsEnumerable,k=(d,t,l)=>t in d?ce(d,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):d[t]=l,xe=(d,t)=>{for(var l in t||(t={}))pe.call(t,l)&&k(d,l,t[l]);if(M)for(var l of M(t))ge.call(t,l)&&k(d,l,t[l]);return d},Pe=(d,t)=>ue(d,fe(t));const{ESortDirection:B}=re,ve=d=>{const{pointCloudBoxList:t,setPointCloudResult:l,topViewInstance:s,backViewInstance:_,sideViewInstance:h,selectedIDs:y,selectedID:O,mainViewInstance:p,setSelectedIDs:K,syncAllViewPointCloudColor:V,polygonList:U,pointCloudPattern:R,rectList:S,updateRectIn2DView:me,removeRectIn2DView:F,addRectIn2DView:W,updateRectListByReducer:D}=de(le),{selectedPolygon:g,updateSelectedPolygon:q,updatePolygonValidByID:z,deletePolygon:G}=ae(),{pushHistoryWithList:b}=se(),a=A(()=>{const e=t.findIndex(n=>n.id===O);if(e>-1)return{info:t[e],index:e}},[O,t]),L=f(e=>{var n;if(a==null?void 0:a.info){(n=d==null?void 0:d.generateRects)==null||n.call(d,e),t.splice(a.index,1,m.merge(a.info,e));const o=m.cloneDeep(t);return l(o),b({pointCloudBoxList:o}),o}return t},[O,t]),J=f((e,n)=>{const o=t.findIndex(i=>i.id===n);if(o>-1){t.splice(o,1,m.merge(t[o],e));const i=m.cloneDeep(t);return l(i),i}return t},[t]),w=f(e=>{s==null||s.pointCloud2dOperation.setPolygonValidAndRender(e,!0),h==null||h.pointCloud2dOperation.setPolygonValidAndRender(e,!0),_==null||_.pointCloud2dOperation.setPolygonValidAndRender(e,!0)},[s,h,_]),Q=f(()=>{if(a==null?void 0:a.info){const{id:e,valid:n=!0}=a.info,o=L({valid:!n});V(H.SingleToggleValid,o),w(e)}g&&(q(Pe(xe({},g),{valid:!g.valid})),s==null||s.pointCloud2dOperation.setPolygonValidAndRender(g.id,!0))},[w,a,g]),X=f(e=>{const n=t.find(o=>o.id===e);if(n){const{id:o,valid:i=!0}=n,c=J({valid:!i},o);return w(o),c}z(e)},[w,t,U]),E=f((e=B.ascend,n=!1)=>{if(!s||y.length>1)return;if(R!==T.Rect&&R!==T.Polygon){n&&document.dispatchEvent(new KeyboardEvent("keydown",{keyCode:9,shiftKey:e!==B.ascend}));return}const{pointCloud2dOperation:o}=s,i=o.switchToNextPolygon(e);i&&K(i)},[s,R,s==null?void 0:s.toolInstance]),Y=(e=!1)=>{E(B.descend,e)},Z=(e=!1)=>{E(B.ascend,e)},N=(e,n=!0)=>{const o=t.filter(i=>i.id!==e);if(l(o),p==null||p.removeObjectByName(e,"box"),p==null||p.render(),V(H.SingleDelete,o),n){const i=S.filter(r=>r.extId===e),c=new Set(i.map(r=>r.id));D(j(c))}},j=e=>(n,o)=>{let i=!1;const c=n.map(r=>e.has(r.id)?(i=!0,o(r)):r);return i?c:n},$=f((e,n)=>{var o,i;const c=new Set((i=(o=n.mappingImgList)==null?void 0:o.map(u=>u.path))!=null?i:[]),r=new Map;e.forEach(u=>{const I=u.id;(u.rects||[]).forEach(C=>{const{imageName:v}=C;if(c.has(v)){let P=r.get(v);P||(P=new Set,r.set(v,P)),P.add(I)}})});const x=S.filter(u=>{var I;const C=u.extId,v=u.imageName;if(v!==void 0&&C!==void 0){const P=r.get(v);return(I=P==null?void 0:P.has(C))!=null?I:!1}return!1}),ie=new Set(x.map(u=>u.id));D(j(ie))},[S,F,W]),ee=e=>{a&&(N(a.info.id,!1),s==null||s.pointCloud2dOperation.deletePolygon(a.info.id),$([a.info],e)),g&&(G(g.id),s==null||s.pointCloud2dOperation.deletePolygon(g.id))},te=A(()=>t.filter(e=>y.includes(e.id)),[y,t]),oe=f(e=>{var n;const o=m.cloneDeep(t);let i=!1;for(const c of e){const r=o.findIndex(x=>x.id===c.id);if(r>-1){const x=m.merge(o[r],c);(n=d==null?void 0:d.generateRects)==null||n.call(d,x),o.splice(r,1,x),p==null||p.generateBox(x),i=!0}}if(i)return l(o),b({pointCloudBoxList:o}),p==null||p.render(),o},[y,t]),ne=f(e=>t.find(n=>n.id===e),[t]);return{selectedBox:a,updateSelectedBox:L,changeSelectedBoxValid:Q,changeValidByID:X,selectNextBox:Z,selectPrevBox:Y,deletePointCloudBox:N,selectedBoxes:te,updateSelectedBoxes:oe,getPointCloudByID:ne,deleteSelectedPointCloudBoxAndPolygon:ee}};export{ve as useSingleBox};
@@ -1 +1 @@
1
- import{useContext as S,useMemo as P}from"react";import{PointCloudContext as I}from"../PointCloudContext.js";import{cTool as E}from"@labelbee/lb-annotation";import{useHistory as x}from"./useHistory.js";import{EPointCloudPattern as C}from"@labelbee/lb-utils";const{EToolName:t,EPolygonPattern:p}=E,A=()=>{const{topViewInstance:r,sideViewInstance:a,backViewInstance:u,mainViewInstance:e,setPointCloudResult:v,setPointCloudSphereList:h,setPolygonList:m,pointCloudPattern:c,setPointCloudPattern:n,syncAllViewPointCloudColor:b,globalPattern:l,setLineList:w}=S(I),{pushHistoryWithList:y}=x(),L=()=>{e==null||e.clearAllBox(),e==null||e.clearAllSphere(),e==null||e.render(),v([]),m([]),h([]),w([]),r==null||r.toolScheduler.clearStatusAndResult(),b([]),y({pointCloudBoxList:[],polygonList:[],pointCloudSphereList:[]})},i=()=>{a==null||a.toolInstance.clearResult(),u==null||u.toolInstance.clearResult()},f=d=>{if(d===c)return;const s=[r,a,u];switch(d){case t.Rect:i(),s.forEach(o=>{o==null||o.switchToCanvas(t.PointCloudPolygon),o==null||o.toolInstance.setPattern(p.Rect)}),n(t.Rect);break;case t.Polygon:i(),s.forEach(o=>{o==null||o.switchToCanvas(t.PointCloudPolygon),o==null||o.toolInstance.setPattern(p.Normal)}),n(t.Polygon);break;case t.Point:i(),s.forEach(o=>{o==null||o.switchToCanvas(t.Point)}),n(t.Point);break;case t.Line:i(),s.forEach(o=>{o==null||o.switchToCanvas(t.Line)}),n(t.Line);break}},g=P(()=>l===C.Detection,[l]),R=P(()=>l===C.Segmentation,[l]);return{clearAllResult:L,updatePointCloudPattern:f,pointCloudPattern:c,isPointCloudDetectionPattern:g,isPointCloudSegmentationPattern:R}};export{A as useStatus};
1
+ import{useContext as x,useMemo as P}from"react";import{PointCloudContext as E}from"../PointCloudContext.js";import{cTool as I}from"@labelbee/lb-annotation";import{useHistory as T}from"./useHistory.js";import{EPointCloudPattern as C}from"@labelbee/lb-utils";import{EPointCloudBoxRenderTrigger as A}from"../../../utils/ToolPointCloudBoxRenderHelper.js";const{EToolName:t,EPolygonPattern:p}=I,V=()=>{const{topViewInstance:s,sideViewInstance:a,backViewInstance:u,mainViewInstance:e,setPointCloudResult:m,setPointCloudSphereList:v,setPolygonList:h,setRectList:b,pointCloudPattern:c,setPointCloudPattern:l,syncAllViewPointCloudColor:g,globalPattern:n,setLineList:L}=x(E),{pushHistoryWithList:R}=T(),f=()=>{e==null||e.clearAllBox(),e==null||e.clearAllSphere(),e==null||e.render(),m([]),h([]),v([]),L([]),b([]),s==null||s.toolScheduler.clearStatusAndResult(),g(A.ClearAll,[]),R({pointCloudBoxList:[],polygonList:[],pointCloudSphereList:[]})},i=()=>{a==null||a.toolInstance.clearResult(),u==null||u.toolInstance.clearResult()},w=d=>{if(d===c)return;const r=[s,a,u];switch(d){case t.Rect:i(),r.forEach(o=>{o==null||o.switchToCanvas(t.PointCloudPolygon),o==null||o.toolInstance.setPattern(p.Rect)}),l(t.Rect);break;case t.Polygon:i(),r.forEach(o=>{o==null||o.switchToCanvas(t.PointCloudPolygon),o==null||o.toolInstance.setPattern(p.Normal)}),l(t.Polygon);break;case t.Point:i(),r.forEach(o=>{o==null||o.switchToCanvas(t.Point)}),l(t.Point);break;case t.Line:i(),r.forEach(o=>{o==null||o.switchToCanvas(t.Line)}),l(t.Line);break}},y=P(()=>n===C.Detection,[n]),S=P(()=>n===C.Segmentation,[n]);return{clearAllResult:f,updatePointCloudPattern:w,pointCloudPattern:c,isPointCloudDetectionPattern:y,isPointCloudSegmentationPattern:S}};export{V as useStatus};