@labelbee/lb-components 1.6.0-alpha.14 → 1.6.0-alpha.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,203 @@
1
+ Copyright 2018-2023 OpenMMLab. All rights reserved.
2
+
3
+ Apache License
4
+ Version 2.0, January 2004
5
+ http://www.apache.org/licenses/
6
+
7
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
8
+
9
+ 1. Definitions.
10
+
11
+ "License" shall mean the terms and conditions for use, reproduction,
12
+ and distribution as defined by Sections 1 through 9 of this document.
13
+
14
+ "Licensor" shall mean the copyright owner or entity authorized by
15
+ the copyright owner that is granting the License.
16
+
17
+ "Legal Entity" shall mean the union of the acting entity and all
18
+ other entities that control, are controlled by, or are under common
19
+ control with that entity. For the purposes of this definition,
20
+ "control" means (i) the power, direct or indirect, to cause the
21
+ direction or management of such entity, whether by contract or
22
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
23
+ outstanding shares, or (iii) beneficial ownership of such entity.
24
+
25
+ "You" (or "Your") shall mean an individual or Legal Entity
26
+ exercising permissions granted by this License.
27
+
28
+ "Source" form shall mean the preferred form for making modifications,
29
+ including but not limited to software source code, documentation
30
+ source, and configuration files.
31
+
32
+ "Object" form shall mean any form resulting from mechanical
33
+ transformation or translation of a Source form, including but
34
+ not limited to compiled object code, generated documentation,
35
+ and conversions to other media types.
36
+
37
+ "Work" shall mean the work of authorship, whether in Source or
38
+ Object form, made available under the License, as indicated by a
39
+ copyright notice that is included in or attached to the work
40
+ (an example is provided in the Appendix below).
41
+
42
+ "Derivative Works" shall mean any work, whether in Source or Object
43
+ form, that is based on (or derived from) the Work and for which the
44
+ editorial revisions, annotations, elaborations, or other modifications
45
+ represent, as a whole, an original work of authorship. For the purposes
46
+ of this License, Derivative Works shall not include works that remain
47
+ separable from, or merely link (or bind by name) to the interfaces of,
48
+ the Work and Derivative Works thereof.
49
+
50
+ "Contribution" shall mean any work of authorship, including
51
+ the original version of the Work and any modifications or additions
52
+ to that Work or Derivative Works thereof, that is intentionally
53
+ submitted to Licensor for inclusion in the Work by the copyright owner
54
+ or by an individual or Legal Entity authorized to submit on behalf of
55
+ the copyright owner. For the purposes of this definition, "submitted"
56
+ means any form of electronic, verbal, or written communication sent
57
+ to the Licensor or its representatives, including but not limited to
58
+ communication on electronic mailing lists, source code control systems,
59
+ and issue tracking systems that are managed by, or on behalf of, the
60
+ Licensor for the purpose of discussing and improving the Work, but
61
+ excluding communication that is conspicuously marked or otherwise
62
+ designated in writing by the copyright owner as "Not a Contribution."
63
+
64
+ "Contributor" shall mean Licensor and any individual or Legal Entity
65
+ on behalf of whom a Contribution has been received by Licensor and
66
+ subsequently incorporated within the Work.
67
+
68
+ 2. Grant of Copyright License. Subject to the terms and conditions of
69
+ this License, each Contributor hereby grants to You a perpetual,
70
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
71
+ copyright license to reproduce, prepare Derivative Works of,
72
+ publicly display, publicly perform, sublicense, and distribute the
73
+ Work and such Derivative Works in Source or Object form.
74
+
75
+ 3. Grant of Patent License. Subject to the terms and conditions of
76
+ this License, each Contributor hereby grants to You a perpetual,
77
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
78
+ (except as stated in this section) patent license to make, have made,
79
+ use, offer to sell, sell, import, and otherwise transfer the Work,
80
+ where such license applies only to those patent claims licensable
81
+ by such Contributor that are necessarily infringed by their
82
+ Contribution(s) alone or by combination of their Contribution(s)
83
+ with the Work to which such Contribution(s) was submitted. If You
84
+ institute patent litigation against any entity (including a
85
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
86
+ or a Contribution incorporated within the Work constitutes direct
87
+ or contributory patent infringement, then any patent licenses
88
+ granted to You under this License for that Work shall terminate
89
+ as of the date such litigation is filed.
90
+
91
+ 4. Redistribution. You may reproduce and distribute copies of the
92
+ Work or Derivative Works thereof in any medium, with or without
93
+ modifications, and in Source or Object form, provided that You
94
+ meet the following conditions:
95
+
96
+ (a) You must give any other recipients of the Work or
97
+ Derivative Works a copy of this License; and
98
+
99
+ (b) You must cause any modified files to carry prominent notices
100
+ stating that You changed the files; and
101
+
102
+ (c) You must retain, in the Source form of any Derivative Works
103
+ that You distribute, all copyright, patent, trademark, and
104
+ attribution notices from the Source form of the Work,
105
+ excluding those notices that do not pertain to any part of
106
+ the Derivative Works; and
107
+
108
+ (d) If the Work includes a "NOTICE" text file as part of its
109
+ distribution, then any Derivative Works that You distribute must
110
+ include a readable copy of the attribution notices contained
111
+ within such NOTICE file, excluding those notices that do not
112
+ pertain to any part of the Derivative Works, in at least one
113
+ of the following places: within a NOTICE text file distributed
114
+ as part of the Derivative Works; within the Source form or
115
+ documentation, if provided along with the Derivative Works; or,
116
+ within a display generated by the Derivative Works, if and
117
+ wherever such third-party notices normally appear. The contents
118
+ of the NOTICE file are for informational purposes only and
119
+ do not modify the License. You may add Your own attribution
120
+ notices within Derivative Works that You distribute, alongside
121
+ or as an addendum to the NOTICE text from the Work, provided
122
+ that such additional attribution notices cannot be construed
123
+ as modifying the License.
124
+
125
+ You may add Your own copyright statement to Your modifications and
126
+ may provide additional or different license terms and conditions
127
+ for use, reproduction, or distribution of Your modifications, or
128
+ for any such Derivative Works as a whole, provided Your use,
129
+ reproduction, and distribution of the Work otherwise complies with
130
+ the conditions stated in this License.
131
+
132
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
133
+ any Contribution intentionally submitted for inclusion in the Work
134
+ by You to the Licensor shall be under the terms and conditions of
135
+ this License, without any additional terms or conditions.
136
+ Notwithstanding the above, nothing herein shall supersede or modify
137
+ the terms of any separate license agreement you may have executed
138
+ with Licensor regarding such Contributions.
139
+
140
+ 6. Trademarks. This License does not grant permission to use the trade
141
+ names, trademarks, service marks, or product names of the Licensor,
142
+ except as required for reasonable and customary use in describing the
143
+ origin of the Work and reproducing the content of the NOTICE file.
144
+
145
+ 7. Disclaimer of Warranty. Unless required by applicable law or
146
+ agreed to in writing, Licensor provides the Work (and each
147
+ Contributor provides its Contributions) on an "AS IS" BASIS,
148
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
149
+ implied, including, without limitation, any warranties or conditions
150
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
151
+ PARTICULAR PURPOSE. You are solely responsible for determining the
152
+ appropriateness of using or redistributing the Work and assume any
153
+ risks associated with Your exercise of permissions under this License.
154
+
155
+ 8. Limitation of Liability. In no event and under no legal theory,
156
+ whether in tort (including negligence), contract, or otherwise,
157
+ unless required by applicable law (such as deliberate and grossly
158
+ negligent acts) or agreed to in writing, shall any Contributor be
159
+ liable to You for damages, including any direct, indirect, special,
160
+ incidental, or consequential damages of any character arising as a
161
+ result of this License or out of the use or inability to use the
162
+ Work (including but not limited to damages for loss of goodwill,
163
+ work stoppage, computer failure or malfunction, or any and all
164
+ other commercial damages or losses), even if such Contributor
165
+ has been advised of the possibility of such damages.
166
+
167
+ 9. Accepting Warranty or Additional Liability. While redistributing
168
+ the Work or Derivative Works thereof, You may choose to offer,
169
+ and charge a fee for, acceptance of support, warranty, indemnity,
170
+ or other liability obligations and/or rights consistent with this
171
+ License. However, in accepting such obligations, You may act only
172
+ on Your own behalf and on Your sole responsibility, not on behalf
173
+ of any other Contributor, and only if You agree to indemnify,
174
+ defend, and hold each Contributor harmless for any liability
175
+ incurred by, or claims asserted against, such Contributor by reason
176
+ of your accepting any such warranty or additional liability.
177
+
178
+ END OF TERMS AND CONDITIONS
179
+
180
+ APPENDIX: How to apply the Apache License to your work.
181
+
182
+ To apply the Apache License to your work, attach the following
183
+ boilerplate notice, with the fields enclosed by brackets "[]"
184
+ replaced with your own identifying information. (Don't include
185
+ the brackets!) The text should be enclosed in the appropriate
186
+ comment syntax for the file format. We also recommend that a
187
+ file or class name and description of purpose be included on the
188
+ same "printed page" as the copyright notice for easier
189
+ identification within third-party archives.
190
+
191
+ Copyright 2018-2023 OpenMMLab.
192
+
193
+ Licensed under the Apache License, Version 2.0 (the "License");
194
+ you may not use this file except in compliance with the License.
195
+ You may obtain a copy of the License at
196
+
197
+ http://www.apache.org/licenses/LICENSE-2.0
198
+
199
+ Unless required by applicable law or agreed to in writing, software
200
+ distributed under the License is distributed on an "AS IS" BASIS,
201
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
202
+ See the License for the specific language governing permissions and
203
+ limitations under the License.
@@ -1 +1 @@
1
- "use strict";var React=require("react"),lbAnnotation=require("@labelbee/lb-annotation"),es=require("antd/es");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React),__defProp=Object.defineProperty,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,o)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,__spreadValues=(e,t)=>{for(var o in t||(t={}))__hasOwnProp.call(t,o)&&__defNormalProp(e,o,t[o]);if(__getOwnPropSymbols)for(var o of __getOwnPropSymbols(t))__propIsEnum.call(t,o)&&__defNormalProp(e,o,t[o]);return e};const DEFAULT_SIZE={width:500,height:100},sizeInitialized=e=>{if(!e)return DEFAULT_SIZE;if(e.width&&e.height)return e;const t=__spreadValues({},e);return t.width||(t.width=DEFAULT_SIZE.width),t.height||(t.height=DEFAULT_SIZE.height),t},AnnotationView=(e,t)=>{var o,g;const{src:h,annotations:u=[],style:_={stroke:"blue",thickness:3},zoomChange:s,backgroundStyle:m={},onChange:c,showLoading:p=!1,globalStyle:w}=e,d=sizeInitialized(e.size),[b,f]=React.useState(!1),v=React.useRef(null),r=React.useRef();React.useImperativeHandle(t,()=>{const n=r.current;return n?{zoomIn:()=>n.zoomChanged(!0),zoomOut:()=>n.zoomChanged(!1),initImgPos:()=>n.initImgPos(),toolInstance:n}:{}},[r.current]),React.useEffect(()=>(v.current&&(r.current=new lbAnnotation.ViewOperation({container:v.current,size:d,style:_,annotations:u,config:"{}"}),r.current.init()),()=>{var n;(n=r.current)==null||n.destroy()}),[]),React.useEffect(()=>{var n;r.current&&(f(!0),(n=r.current)==null||n.setLoading(!0),lbAnnotation.ImgUtils.load(h).then(a=>{var i,l;(i=r.current)==null||i.setLoading(!1),f(!1),(l=r.current)==null||l.setImgNode(a)}).catch(()=>{var a;(a=r.current)==null||a.setLoading(!1),f(!1)}))},[h]),React.useEffect(()=>{r.current&&r.current.updateData(u)},[u]),React.useEffect(()=>{const n=r.current;(n==null?void 0:n.setSize)&&(n.setSize(d),n.initPosition())},[(o=e.size)==null?void 0:o.width,(g=e.size)==null?void 0:g.height]),React.useEffect(()=>{var n,a;return r.current&&((n=r.current)==null||n.on("onChange",(...i)=>{c==null||c.apply(null,i)}),(a=r.current)==null||a.on("renderZoom",i=>{s&&s(i)})),()=>{var i,l;(i=r.current)==null||i.unbindAll("onChange"),(l=r.current)==null||l.unbindAll("renderZoom")}},[s,c]);const y=React__default.default.createElement("div",{ref:v,style:__spreadValues(__spreadValues({position:"relative"},d),m)});return React__default.default.createElement(es.Spin,{spinning:p||b,delay:300,style:w},y)};var AnnotationView$1=React__default.default.forwardRef(AnnotationView);module.exports=AnnotationView$1;
1
+ "use strict";var React=require("react"),lbAnnotation=require("@labelbee/lb-annotation"),es=require("antd/es"),useRefCache=require("../../hooks/useRefCache.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React),__defProp=Object.defineProperty,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,o)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,__spreadValues=(e,t)=>{for(var o in t||(t={}))__hasOwnProp.call(t,o)&&__defNormalProp(e,o,t[o]);if(__getOwnPropSymbols)for(var o of __getOwnPropSymbols(t))__propIsEnum.call(t,o)&&__defNormalProp(e,o,t[o]);return e};const DEFAULT_SIZE={width:500,height:100},sizeInitialized=e=>{if(!e)return DEFAULT_SIZE;if(e.width&&e.height)return e;const t=__spreadValues({},e);return t.width||(t.width=DEFAULT_SIZE.width),t.height||(t.height=DEFAULT_SIZE.height),t},AnnotationView=(e,t)=>{var o,h;const{src:g,annotations:l=[],style:m={stroke:"blue",thickness:3},zoomChange:s,backgroundStyle:p={},onChange:c,showLoading:w=!1,globalStyle:b,afterImgOnLoad:y}=e,f=sizeInitialized(e.size),[I,d]=React.useState(!1),v=React.useRef(null),r=React.useRef(),_=useRefCache(y);React.useImperativeHandle(t,()=>{const n=r.current;return n?{zoomIn:()=>n.zoomChanged(!0),zoomOut:()=>n.zoomChanged(!1),initImgPos:()=>n.initImgPos(),toolInstance:n}:{}},[r.current]),React.useEffect(()=>(v.current&&(r.current=new lbAnnotation.ViewOperation({container:v.current,size:f,style:m,annotations:l,config:"{}"}),r.current.init()),()=>{var n;(n=r.current)==null||n.destroy()}),[]),React.useEffect(()=>{var n;r.current&&(d(!0),(n=r.current)==null||n.setLoading(!0),lbAnnotation.ImgUtils.load(g).then(i=>{var a,u;(a=r.current)==null||a.setLoading(!1),d(!1),(u=r.current)==null||u.setImgNode(i),_.current&&_.current(i)}).catch(()=>{var i;(i=r.current)==null||i.setLoading(!1),d(!1)}))},[g]),React.useEffect(()=>{r.current&&r.current.updateData(l)},[l]),React.useEffect(()=>{const n=r.current;(n==null?void 0:n.setSize)&&(n.setSize(f),n.initPosition())},[(o=e.size)==null?void 0:o.width,(h=e.size)==null?void 0:h.height]),React.useEffect(()=>{var n,i;return r.current&&((n=r.current)==null||n.on("onChange",(...a)=>{c==null||c.apply(null,a)}),(i=r.current)==null||i.on("renderZoom",a=>{s&&s(a)})),()=>{var a,u;(a=r.current)==null||a.unbindAll("onChange"),(u=r.current)==null||u.unbindAll("renderZoom")}},[s,c]);const O=React__default.default.createElement("div",{ref:v,style:__spreadValues(__spreadValues({position:"relative"},f),p)});return React__default.default.createElement(es.Spin,{spinning:w||I,delay:300,style:b},O)};var AnnotationView$1=React__default.default.forwardRef(AnnotationView);module.exports=AnnotationView$1;
@@ -1 +1 @@
1
- "use strict";var dom=require("../../utils/dom.js"),React=require("react"),PointCloudLayout=require("./PointCloudLayout.js"),index=require("../AnnotationView/index.js"),PointCloudContext=require("./PointCloudContext.js"),reactRedux=require("react-redux"),icons=require("@ant-design/icons"),useSize=require("../../hooks/useSize.js"),useSingleBox=require("./hooks/useSingleBox.js"),reactI18next=require("react-i18next"),ctx=require("../../store/ctx.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React),__defProp=Object.defineProperty,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,n)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,__spreadValues=(e,t)=>{for(var n in t||(t={}))__hasOwnProp.call(t,n)&&__defNormalProp(e,n,t[n]);if(__getOwnPropSymbols)for(var n of __getOwnPropSymbols(t))__propIsEnum.call(t,n)&&__defNormalProp(e,n,t[n]);return e};const Toolbar=({onNext:e,onPrev:t,imgLength:n,imgIndex:l})=>React__default.default.createElement("div",null,React__default.default.createElement(icons.LeftOutlined,{onClick:t}),React__default.default.createElement("span",null," ",l+1," / ",n," "),React__default.default.createElement(icons.RightOutlined,{onClick:e})),PointCloud2DView=({imgInfo:e})=>{var t,n,l,g,x;const[c,y]=React.useState([]),{pointCloudBoxList:_,topViewInstance:L}=React.useContext(PointCloudContext.PointCloudContext),[s,p]=React.useState(0),C=React.useRef(null),v=React.useRef(),{selectedBox:f}=useSingleBox.useSingleBox(),w=useSize(C),{t:E}=reactI18next.useTranslation(),r=(t=e==null?void 0:e.mappingImgList)==null?void 0:t[s];React.useEffect(()=>{p(0)},[e]),React.useEffect(()=>{if(L&&r){const{pointCloudInstance:o}=L,a={fill:"transparent",color:"green"},u=_.reduce((i,d)=>{const S=o.pointCloudLidar2image(d,r.calib);return[...i,...S.map(P=>({type:P.type,annotation:__spreadValues({id:d.id,pointList:P.pointList},a)}))]},[]);y(u)}},[_,r]);const m=!e||!(e==null?void 0:e.mappingImgList)||!(((n=e==null?void 0:e.mappingImgList)==null?void 0:n.length)>0);return React.useEffect(()=>{var o,a;const u=(o=v.current)==null?void 0:o.toolInstance;if(!f||!u)return;const i=c.find(d=>d.annotation.id===f.info.id);((a=i==null?void 0:i.annotation.pointList)==null?void 0:a.length)>0&&u.focusPositionByPointList(i==null?void 0:i.annotation.pointList)},[f,v.current,c]),React__default.default.createElement(PointCloudLayout.PointCloudContainer,{className:dom.getClassName("point-cloud-2d-container"),title:E("2DView"),toolbar:m?void 0:React__default.default.createElement(Toolbar,{imgIndex:s,imgLength:(g=(l=e.mappingImgList)==null?void 0:l.length)!=null?g:0,onNext:()=>{var o;!e||!(e==null?void 0:e.mappingImgList)||s>=((o=e==null?void 0:e.mappingImgList)==null?void 0:o.length)-1||p(a=>a+1)},onPrev:()=>{s<=0||p(o=>o-1)}}),style:{display:m?"none":"flex"}},React__default.default.createElement("div",{className:dom.getClassName("point-cloud-2d-image"),ref:C},React__default.default.createElement(index,{src:(x=r==null?void 0:r.url)!=null?x:"",annotations:c,size:w,ref:v,globalStyle:{display:m?"none":"block"}})))},mapStateToProps=e=>{const{imgList:t,imgIndex:n}=e.annotation;return{imgInfo:t[n]}};var PointCloud2DView$1=reactRedux.connect(mapStateToProps,null,null,{context:ctx.LabelBeeContext})(PointCloud2DView);module.exports=PointCloud2DView$1;
1
+ "use strict";var dom=require("../../utils/dom.js"),React=require("react"),PointCloudLayout=require("./PointCloudLayout.js"),index=require("../AnnotationView/index.js"),PointCloudContext=require("./PointCloudContext.js"),reactRedux=require("react-redux"),icons=require("@ant-design/icons"),useSize=require("../../hooks/useSize.js"),useSingleBox=require("./hooks/useSingleBox.js"),reactI18next=require("react-i18next"),ctx=require("../../store/ctx.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React),__defProp=Object.defineProperty,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,n)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,__spreadValues=(e,t)=>{for(var n in t||(t={}))__hasOwnProp.call(t,n)&&__defNormalProp(e,n,t[n]);if(__getOwnPropSymbols)for(var n of __getOwnPropSymbols(t))__propIsEnum.call(t,n)&&__defNormalProp(e,n,t[n]);return e};const Toolbar=({onNext:e,onPrev:t,imgLength:n,imgIndex:s})=>React__default.default.createElement("div",null,React__default.default.createElement(icons.LeftOutlined,{onClick:t}),React__default.default.createElement("span",null," ",s+1," / ",n," "),React__default.default.createElement(icons.RightOutlined,{onClick:e})),PointCloud2DView=({imgInfo:e})=>{var t,n,s,x,_;const[d,w]=React.useState([]),{pointCloudBoxList:L,topViewInstance:C}=React.useContext(PointCloudContext.PointCloudContext),[r,p]=React.useState(0),P=React.useRef(null),v=React.useRef(),{selectedBox:f}=useSingleBox.useSingleBox(),E=useSize(P),{t:b}=reactI18next.useTranslation(),l=(t=e==null?void 0:e.mappingImgList)==null?void 0:t[r];React.useEffect(()=>{p(0)},[e]),React.useEffect(()=>{if(C&&l){const{pointCloudInstance:o}=C,a={fill:"transparent",color:"green"},u=L.reduce((i,c)=>{const S=o.pointCloudLidar2image(c,l.calib);return[...i,...S.map(y=>({type:y.type,annotation:__spreadValues({id:c.id,pointList:y.pointList},a)}))]},[]);w(u)}},[L,l]);const m=!e||!(e==null?void 0:e.mappingImgList)||!(((n=e==null?void 0:e.mappingImgList)==null?void 0:n.length)>0),g=React.useCallback(()=>{var o,a;const u=(o=v.current)==null?void 0:o.toolInstance;if(!f||!u)return;const i=d.find(c=>c.annotation.id===f.info.id);((a=i==null?void 0:i.annotation.pointList)==null?void 0:a.length)>0&&u.focusPositionByPointList(i==null?void 0:i.annotation.pointList)},[f,v.current,d,r]);return React.useEffect(()=>{g()},[g]),React__default.default.createElement(PointCloudLayout.PointCloudContainer,{className:dom.getClassName("point-cloud-2d-container"),title:b("2DView"),toolbar:m?void 0:React__default.default.createElement(Toolbar,{imgIndex:r,imgLength:(x=(s=e.mappingImgList)==null?void 0:s.length)!=null?x:0,onNext:()=>{var o;!e||!(e==null?void 0:e.mappingImgList)||r>=((o=e==null?void 0:e.mappingImgList)==null?void 0:o.length)-1||p(a=>a+1)},onPrev:()=>{r<=0||p(o=>o-1)}}),style:{display:m?"none":"flex"}},React__default.default.createElement("div",{className:dom.getClassName("point-cloud-2d-image"),ref:P},React__default.default.createElement(index,{src:(_=l==null?void 0:l.url)!=null?_:"",annotations:d,size:E,ref:v,globalStyle:{display:m?"none":"block"},afterImgOnLoad:g})))},mapStateToProps=e=>{const{imgList:t,imgIndex:n}=e.annotation;return{imgInfo:t[n]}};var PointCloud2DView$1=reactRedux.connect(mapStateToProps,null,null,{context:ctx.LabelBeeContext})(PointCloud2DView);module.exports=PointCloud2DView$1;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var lbAnnotation=require("@labelbee/lb-annotation"),lbUtils=require("@labelbee/lb-utils"),React=require("react"),PointCloudContext=require("../PointCloudContext.js"),useSingleBox=require("./useSingleBox.js"),_=require("lodash"),ctx=require("../../../store/ctx.js"),StepUtils=require("../../../utils/StepUtils.js"),index=require("../../../utils/index.js"),actionCreators=require("../../../store/annotation/actionCreators.js"),antd=require("antd"),reactI18next=require("react-i18next");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var ___default=_interopDefaultLegacy(_),__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,o,n)=>o in e?__defProp(e,o,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[o]=n,__spreadValues=(e,o)=>{for(var n in o||(o={}))__hasOwnProp.call(o,n)&&__defNormalProp(e,n,o[n]);if(__getOwnPropSymbols)for(var n of __getOwnPropSymbols(o))__propIsEnum.call(o,n)&&__defNormalProp(e,n,o[n]);return e},__spreadProps=(e,o)=>__defProps(e,__getOwnPropDescs(o)),__async=(e,o,n)=>new Promise((a,t)=>{var i=s=>{try{u(n.next(s))}catch(g){t(g)}},v=s=>{try{u(n.throw(s))}catch(g){t(g)}},u=s=>s.done?a(s.value):Promise.resolve(s.value).then(i,v);u((n=n.apply(e,o)).next())});const DEFAULT_SCOPE=5,DEFAULT_RADIUS=90,PointCloudView={"3D":"3D",Top:"Top",Side:"Side",Back:"Back"},transferCanvas2World=(e,o)=>{const{width:n,height:a}=o,{x:t,y:i}=e;return{x:-i+a/2,y:-(t-n/2)}},topViewPolygon2PointCloud=(e,o,n,a,t)=>{const[i,v,u,s]=e.pointList.map(f=>transferCanvas2World(f,o)),g=lbAnnotation.MathUtils.getLineCenterPoint([i,u]),x=lbAnnotation.MathUtils.getLineLength(i,v),p=lbAnnotation.MathUtils.getLineLength(v,u),C=lbAnnotation.MathUtils.getRadiusFromQuadrangle(e.pointList);let m=0,y=1,w={};if(n){const f=n.getSensesPointZAxisInPolygon([i,v,u,s]);m=(f.maxZ+f.minZ)/2,y=f.maxZ-f.minZ,w={count:f.zCount}}a&&(m=a.center.z,y=a.depth);const h=__spreadValues({center:{x:g.x,y:g.y,z:m},width:p,height:x,depth:y,rotation:C,id:e.id,attribute:"",valid:!0},w);return t&&Object.assign(h,t),h},sideViewPolygon2PointCloud=(e,o,n,a)=>{const[t,i,v]=e.pointList,[u,s,g]=o.pointList,x=lbAnnotation.MathUtils.getLineCenterPoint([t,v]),p=lbAnnotation.MathUtils.getLineCenterPoint([u,g]),C={x:x.x-p.x,y:x.y-p.y},m=Math.cos(n.rotation),y=Math.sin(n.rotation),w={x:C.x,y:C.x*y+C.y*m,z:x.y-p.y},h=lbAnnotation.MathUtils.getLineLength(t,i),f=lbAnnotation.MathUtils.getLineLength(u,s),V=h-f,b=lbAnnotation.MathUtils.getLineLength(i,v),I=lbAnnotation.MathUtils.getLineLength(s,g),O=b-I,{newBoxParams:U}=a.getNewBoxBySideUpdate(w,O,V,n);return U},synchronizeSideView=(e,o,n,a)=>{if(!n)return;const{pointCloud2dOperation:t,pointCloudInstance:i}=n;i.loadPCDFileByBox(a,e,{width:DEFAULT_SCOPE,depth:DEFAULT_SCOPE});const{cameraPositionVector:v}=i.updateOrthoCamera(e,lbUtils.EPerspectiveView.Left);i.setInitCameraPosition(v);const{polygon2d:u,zoom:s}=i.getBoxSidePolygon2DCoordinate(e);i.camera.zoom=s,i.camera.updateProjectionMatrix(),i.render(),t.initPosition(),t.zoomChangeOnCenter(s),t.setResultAndSelectedID([{id:o.id,valid:e.valid,pointList:u,textAttribute:"",isRect:!0}],o.id)},synchronizeBackView=(e,o,n,a)=>{if(!n)return;const{pointCloud2dOperation:t,pointCloudInstance:i}=n;i.loadPCDFileByBox(a,e,{height:DEFAULT_SCOPE,depth:DEFAULT_SCOPE});const{cameraPositionVector:v}=i.updateOrthoCamera(e,lbUtils.EPerspectiveView.Back);i.setInitCameraPosition(v);const{polygon2d:u,zoom:s}=i.getBoxBackPolygon2DCoordinate(e);i.camera.zoom=s,i.camera.updateProjectionMatrix(),i.render(),t.initPosition(),t.zoomChangeOnCenter(s),t.setResultAndSelectedID([{id:o.id,valid:e.valid,pointList:u,textAttribute:"",isRect:!0}],o.id)},synchronizeTopView=(e,o,n,a)=>{var t;if(!n||!a)return;a.generateBox(e,o.id),a.updateCameraByBox(e,lbUtils.EPerspectiveView.Top),a.render();const{pointCloud2dOperation:i,pointCloudInstance:v}=n,{polygon2d:u}=v.getBoxTopPolygon2DCoordinate(e),s=[...i.polygonList],g=s.find(x=>x.id===o.id);g?g.pointList=u:s.push({id:o.id,pointList:u,textAttribute:"",isRect:!0,valid:(t=e.valid)!=null?t:!0}),i.setResultAndSelectedID(s,o.id)},usePointCloudViews=()=>{const e=React.useContext(PointCloudContext.PointCloudContext),{topViewInstance:o,sideViewInstance:n,backViewInstance:a,mainViewInstance:t,addPointCloudBox:i,setSelectedIDs:v,selectedIDs:u,pointCloudBoxList:s,setPointCloudResult:g}=e,{updateSelectedBox:x}=useSingleBox.useSingleBox(),{currentData:p,config:C}=ctx.useSelector(r=>{const{stepList:l,step:c,imgList:d,imgIndex:P}=r.annotation;return{currentData:d[P],config:index.jsonParser(StepUtils.getCurrentStepInfo(c,l).config)}}),m=ctx.useDispatch(),{selectedBox:y}=useSingleBox.useSingleBox(),{t:w}=reactI18next.useTranslation(),h=y==null?void 0:y.info;if(!o||!n)return{topViewAddBox:()=>{},topViewSelectedChanged:()=>{},sideViewUpdateBox:()=>{}};const{pointCloudInstance:f}=o,V=r=>{t==null||t.generateBox(r),t==null||t.controls.update(),t==null||t.render()},b=(r,l)=>{var c,d,P;const L=topViewPolygon2PointCloud(r,l,f,void 0,{attribute:(P=(d=(c=C==null?void 0:C.attributeList)==null?void 0:c[0])==null?void 0:d.value)!=null?P:""}),D=o==null?void 0:o.pointCloud2dOperation,B=L;if((C==null?void 0:C.lowerLimitPointsNumInBox)&&typeof L.count=="number"&&L.count<C.lowerLimitPointsNumInBox){antd.message.info(w("LowerLimitPointsNumInBox",{num:C.lowerLimitPointsNumInBox})),D.deletePolygon(L.id);return}D.setSelectedIDs([r.id]),v(B.id),S(PointCloudView.Top,r,B),i(B)},I=()=>{const r=y==null?void 0:y.info,l=o==null?void 0:o.pointCloud2dOperation;if(l.setSelectedIDs(u),!r||!l)return;const c=l.selectedPolygon;S(PointCloudView.Top,c,r)},O=(r,l,c)=>{if(h){let d=sideViewPolygon2PointCloud(r,l,h,n.pointCloudInstance);if(t){const{count:P}=t.getSensesPointZAxisInPolygon(t.getCuboidFromPointCloudBox(d).polygonPointList,[d.center.z-d.depth/2,d.center.z+d.depth/2]);d=__spreadProps(__spreadValues({},d),{count:P})}x(d),S(c,r,d)}},U=(r,l)=>{O(r,l,PointCloudView.Side)},j=(r,l)=>{O(r,l,PointCloudView.Back)},z=(r,l)=>{if(h){const c=topViewPolygon2PointCloud(r,l,o.pointCloudInstance,h);Object.assign(h,___default.default.pickBy(c,(d,P)=>["width","height","x","y"])),x(c),S(PointCloudView.Top,r,h)}},S=(r,l,c)=>{const d=p==null?void 0:p.url,P={[PointCloudView.Side]:()=>{synchronizeSideView(c,l,n,d)},[PointCloudView.Back]:()=>{a&&synchronizeBackView(c,l,a,d)},[PointCloudView.Top]:()=>{synchronizeTopView(c,l,o,t)}};Object.keys(P).forEach(L=>{L!==r&&P[L]()}),V(c),t==null||t.highlightOriginPointCloud(c)};return{topViewAddBox:b,topViewSelectedChanged:I,topViewUpdateBox:z,sideViewUpdateBox:U,backViewUpdateBox:j,pointCloudBoxListUpdated:r=>{o.updatePolygonList(r),t==null||t.generateBoxes(r)},clearAllResult:()=>{s.forEach(r=>{t==null||t.removeObjectByName(r.id)}),t==null||t.render(),g([]),o.pointCloud2dOperation.clearActiveStatus(),o.pointCloud2dOperation.clearResult()},initPointCloud3d:()=>{!t||(t.initPerspectiveCamera(),t.initRenderer(),t.render())},updatePointCloudData:()=>__async(void 0,null,function*(){var r,l,c,d,P,L;if(!(p==null?void 0:p.url)||!t)return;if(actionCreators.SetPointCloudLoading(m,!0),yield t.loadPCDFile(p.url,(r=C==null?void 0:C.radius)!=null?r:DEFAULT_RADIUS),s.forEach(B=>{t==null||t.removeObjectByName(B.id)}),p.result){const B=lbUtils.PointCloudUtils.getBoxParamsFromResultList(p.result),A=lbUtils.PointCloudUtils.getPolygonListFromResultList(p.result);B.forEach(R=>{t==null||t.generateBox(R)}),e.setPointCloudResult(B),e.setPolygonList(A)}else e.setPointCloudResult([]),e.setPolygonList([]);t.updateTopCamera();const D=(c=(l=index.jsonParser(p.result))==null?void 0:l.valid)!=null?c:!0;e.setPointCloudValid(D),(d=e.sideViewInstance)==null||d.clearAllData(),(P=e.backViewInstance)==null||P.clearAllData(),o.updateData(p.url,p.result,{radius:(L=C==null?void 0:C.radius)!=null?L:DEFAULT_RADIUS}),actionCreators.SetPointCloudLoading(m,!1)})}};exports.synchronizeBackView=synchronizeBackView,exports.synchronizeSideView=synchronizeSideView,exports.synchronizeTopView=synchronizeTopView,exports.topViewPolygon2PointCloud=topViewPolygon2PointCloud,exports.transferCanvas2World=transferCanvas2World,exports.usePointCloudViews=usePointCloudViews;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var lbAnnotation=require("@labelbee/lb-annotation"),lbUtils=require("@labelbee/lb-utils"),React=require("react"),PointCloudContext=require("../PointCloudContext.js"),useSingleBox=require("./useSingleBox.js"),_=require("lodash"),ctx=require("../../../store/ctx.js"),StepUtils=require("../../../utils/StepUtils.js"),index=require("../../../utils/index.js"),actionCreators=require("../../../store/annotation/actionCreators.js"),antd=require("antd"),reactI18next=require("react-i18next");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var ___default=_interopDefaultLegacy(_),__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,o,n)=>o in e?__defProp(e,o,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[o]=n,__spreadValues=(e,o)=>{for(var n in o||(o={}))__hasOwnProp.call(o,n)&&__defNormalProp(e,n,o[n]);if(__getOwnPropSymbols)for(var n of __getOwnPropSymbols(o))__propIsEnum.call(o,n)&&__defNormalProp(e,n,o[n]);return e},__spreadProps=(e,o)=>__defProps(e,__getOwnPropDescs(o)),__async=(e,o,n)=>new Promise((l,t)=>{var i=s=>{try{u(n.next(s))}catch(g){t(g)}},v=s=>{try{u(n.throw(s))}catch(g){t(g)}},u=s=>s.done?l(s.value):Promise.resolve(s.value).then(i,v);u((n=n.apply(e,o)).next())});const DEFAULT_SCOPE=5,DEFAULT_RADIUS=90,PointCloudView={"3D":"3D",Top:"Top",Side:"Side",Back:"Back"},transferCanvas2World=(e,o)=>{const{width:n,height:l}=o,{x:t,y:i}=e;return{x:-i+l/2,y:-(t-n/2)}},topViewPolygon2PointCloud=(e,o,n,l,t)=>{const[i,v,u,s]=e.pointList.map(f=>transferCanvas2World(f,o)),g=lbAnnotation.MathUtils.getLineCenterPoint([i,u]),x=lbAnnotation.MathUtils.getLineLength(i,v),p=lbAnnotation.MathUtils.getLineLength(v,u),C=lbAnnotation.MathUtils.getRadiusFromQuadrangle(e.pointList);let m=0,y=1,w={};if(n){const f=n.getSensesPointZAxisInPolygon([i,v,u,s]);m=(f.maxZ+f.minZ)/2,y=f.maxZ-f.minZ,w={count:f.zCount}}l&&(m=l.center.z,y=l.depth);const h={center:{x:g.x,y:g.y,z:m},width:p,height:x,depth:y,rotation:C,id:e.id},O=__spreadValues(l?__spreadValues(__spreadValues({},l),h):__spreadProps(__spreadValues({},h),{attribute:"",valid:!0}),w);return t&&Object.assign(O,t),O},sideViewPolygon2PointCloud=(e,o,n,l)=>{const[t,i,v]=e.pointList,[u,s,g]=o.pointList,x=lbAnnotation.MathUtils.getLineCenterPoint([t,v]),p=lbAnnotation.MathUtils.getLineCenterPoint([u,g]),C={x:x.x-p.x,y:x.y-p.y},m=Math.cos(n.rotation),y=Math.sin(n.rotation),w={x:C.x,y:C.x*y+C.y*m,z:x.y-p.y},h=lbAnnotation.MathUtils.getLineLength(t,i),O=lbAnnotation.MathUtils.getLineLength(u,s),f=h-O,b=lbAnnotation.MathUtils.getLineLength(i,v),I=lbAnnotation.MathUtils.getLineLength(s,g),S=b-I,{newBoxParams:U}=l.getNewBoxBySideUpdate(w,S,f,n);return U},synchronizeSideView=(e,o,n,l)=>{if(!n)return;const{pointCloud2dOperation:t,pointCloudInstance:i}=n;i.loadPCDFileByBox(l,e,{width:DEFAULT_SCOPE,depth:DEFAULT_SCOPE});const{cameraPositionVector:v}=i.updateOrthoCamera(e,lbUtils.EPerspectiveView.Left);i.setInitCameraPosition(v);const{polygon2d:u,zoom:s}=i.getBoxSidePolygon2DCoordinate(e);i.camera.zoom=s,i.camera.updateProjectionMatrix(),i.render(),t.initPosition(),t.zoomChangeOnCenter(s),t.setResultAndSelectedID([{id:o.id,valid:e.valid,pointList:u,textAttribute:"",isRect:!0}],o.id)},synchronizeBackView=(e,o,n,l)=>{if(!n)return;const{pointCloud2dOperation:t,pointCloudInstance:i}=n;i.loadPCDFileByBox(l,e,{height:DEFAULT_SCOPE,depth:DEFAULT_SCOPE});const{cameraPositionVector:v}=i.updateOrthoCamera(e,lbUtils.EPerspectiveView.Back);i.setInitCameraPosition(v);const{polygon2d:u,zoom:s}=i.getBoxBackPolygon2DCoordinate(e);i.camera.zoom=s,i.camera.updateProjectionMatrix(),i.render(),t.initPosition(),t.zoomChangeOnCenter(s),t.setResultAndSelectedID([{id:o.id,valid:e.valid,pointList:u,textAttribute:"",isRect:!0}],o.id)},synchronizeTopView=(e,o,n,l)=>{var t;if(!n||!l)return;l.generateBox(e,o.id),l.updateCameraByBox(e,lbUtils.EPerspectiveView.Top),l.render();const{pointCloud2dOperation:i,pointCloudInstance:v}=n,{polygon2d:u}=v.getBoxTopPolygon2DCoordinate(e),s=[...i.polygonList],g=s.find(x=>x.id===o.id);g?g.pointList=u:s.push({id:o.id,pointList:u,textAttribute:"",isRect:!0,valid:(t=e.valid)!=null?t:!0}),i.setResultAndSelectedID(s,o.id)},usePointCloudViews=()=>{const e=React.useContext(PointCloudContext.PointCloudContext),{topViewInstance:o,sideViewInstance:n,backViewInstance:l,mainViewInstance:t,addPointCloudBox:i,setSelectedIDs:v,selectedIDs:u,pointCloudBoxList:s,setPointCloudResult:g}=e,{updateSelectedBox:x}=useSingleBox.useSingleBox(),{currentData:p,config:C}=ctx.useSelector(r=>{const{stepList:a,step:c,imgList:d,imgIndex:P}=r.annotation;return{currentData:d[P],config:index.jsonParser(StepUtils.getCurrentStepInfo(c,a).config)}}),m=ctx.useDispatch(),{selectedBox:y}=useSingleBox.useSingleBox(),{t:w}=reactI18next.useTranslation(),h=y==null?void 0:y.info;if(!o||!n)return{topViewAddBox:()=>{},topViewSelectedChanged:()=>{},sideViewUpdateBox:()=>{}};const{pointCloudInstance:O}=o,f=r=>{t==null||t.generateBox(r),t==null||t.controls.update(),t==null||t.render()},b=(r,a)=>{var c,d,P;const L=topViewPolygon2PointCloud(r,a,O,void 0,{attribute:(P=(d=(c=C==null?void 0:C.attributeList)==null?void 0:c[0])==null?void 0:d.value)!=null?P:""}),V=o==null?void 0:o.pointCloud2dOperation,B=L;if((C==null?void 0:C.lowerLimitPointsNumInBox)&&typeof L.count=="number"&&L.count<C.lowerLimitPointsNumInBox){antd.message.info(w("LowerLimitPointsNumInBox",{num:C.lowerLimitPointsNumInBox})),V.deletePolygon(L.id);return}V.setSelectedIDs([r.id]),v(B.id),D(PointCloudView.Top,r,B),i(B)},I=()=>{const r=y==null?void 0:y.info,a=o==null?void 0:o.pointCloud2dOperation;if(a.setSelectedIDs(u),!r||!a)return;const c=a.selectedPolygon;D(PointCloudView.Top,c,r)},S=(r,a,c)=>{if(h){let d=sideViewPolygon2PointCloud(r,a,h,n.pointCloudInstance);if(t){const{count:P}=t.getSensesPointZAxisInPolygon(t.getCuboidFromPointCloudBox(d).polygonPointList,[d.center.z-d.depth/2,d.center.z+d.depth/2]);d=__spreadProps(__spreadValues({},d),{count:P})}x(d),D(c,r,d)}},U=(r,a)=>{S(r,a,PointCloudView.Side)},j=(r,a)=>{S(r,a,PointCloudView.Back)},z=(r,a)=>{if(h){const c=topViewPolygon2PointCloud(r,a,o.pointCloudInstance,h);Object.assign(h,___default.default.pickBy(c,(d,P)=>["width","height","x","y"])),x(c),D(PointCloudView.Top,r,h)}},D=(r,a,c)=>{const d=p==null?void 0:p.url,P={[PointCloudView.Side]:()=>{synchronizeSideView(c,a,n,d)},[PointCloudView.Back]:()=>{l&&synchronizeBackView(c,a,l,d)},[PointCloudView.Top]:()=>{synchronizeTopView(c,a,o,t)}};Object.keys(P).forEach(L=>{L!==r&&P[L]()}),f(c),t==null||t.highlightOriginPointCloud(c)};return{topViewAddBox:b,topViewSelectedChanged:I,topViewUpdateBox:z,sideViewUpdateBox:U,backViewUpdateBox:j,pointCloudBoxListUpdated:r=>{o.updatePolygonList(r),t==null||t.generateBoxes(r)},clearAllResult:()=>{s.forEach(r=>{t==null||t.removeObjectByName(r.id)}),t==null||t.render(),g([]),o.pointCloud2dOperation.clearActiveStatus(),o.pointCloud2dOperation.clearResult()},initPointCloud3d:()=>{!t||(t.initPerspectiveCamera(),t.initRenderer(),t.render())},updatePointCloudData:()=>__async(void 0,null,function*(){var r,a,c,d,P,L;if(!(p==null?void 0:p.url)||!t)return;if(actionCreators.SetPointCloudLoading(m,!0),yield t.loadPCDFile(p.url,(r=C==null?void 0:C.radius)!=null?r:DEFAULT_RADIUS),s.forEach(B=>{t==null||t.removeObjectByName(B.id)}),p.result){const B=lbUtils.PointCloudUtils.getBoxParamsFromResultList(p.result),A=lbUtils.PointCloudUtils.getPolygonListFromResultList(p.result);B.forEach(R=>{t==null||t.generateBox(R)}),e.setPointCloudResult(B),e.setPolygonList(A)}else e.setPointCloudResult([]),e.setPolygonList([]);t.updateTopCamera();const V=(c=(a=index.jsonParser(p.result))==null?void 0:a.valid)!=null?c:!0;e.setPointCloudValid(V),(d=e.sideViewInstance)==null||d.clearAllData(),(P=e.backViewInstance)==null||P.clearAllData(),o.updateData(p.url,p.result,{radius:(L=C==null?void 0:C.radius)!=null?L:DEFAULT_RADIUS}),actionCreators.SetPointCloudLoading(m,!1)})}};exports.synchronizeBackView=synchronizeBackView,exports.synchronizeSideView=synchronizeSideView,exports.synchronizeTopView=synchronizeTopView,exports.topViewPolygon2PointCloud=topViewPolygon2PointCloud,exports.transferCanvas2World=transferCanvas2World,exports.usePointCloudViews=usePointCloudViews;
@@ -0,0 +1 @@
1
+ "use strict";var React=require("react");const useRefCache=e=>{const r=React.useRef(e);return React.useEffect(()=>{r.current=e},[e]),r};module.exports=useRefCache;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var index$1=require("../../components/customResizeHook/index.js"),styleString=require("../../constant/styleString.js"),Actions=require("../Actions.js"),index=require("../../utils/index.js"),AnnotationDataUtils=require("../../utils/AnnotationDataUtils.js"),ConfigUtils=require("../../utils/ConfigUtils.js"),data=require("../../utils/data.js"),StepUtils=require("../../utils/StepUtils.js"),ToolUtils=require("../../utils/ToolUtils.js"),lbAnnotation=require("@labelbee/lb-annotation"),lbUtils=require("@labelbee/lb-utils"),es=require("antd/es"),_=require("lodash"),actionCreators=require("./actionCreators.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var ___default=_interopDefaultLegacy(_),__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,o)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,__spreadValues=(e,t)=>{for(var o in t||(t={}))__hasOwnProp.call(t,o)&&__defNormalProp(e,o,t[o]);if(__getOwnPropSymbols)for(var o of __getOwnPropSymbols(t))__propIsEnum.call(t,o)&&__defNormalProp(e,o,t[o]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t)),__async=(e,t,o)=>new Promise((c,r)=>{var T=d=>{try{O(o.next(d))}catch(E){r(E)}},N=d=>{try{O(o.throw(d))}catch(E){r(E)}},O=d=>d.done?c(d.value):Promise.resolve(d.value).then(T,N);O((o=o.apply(e,t)).next())});const getStepConfig=(e,t)=>e.find(o=>o.step===t),initialState={annotationEngine:null,toolInstance:null,imgList:[],config:"{}",imgIndex:-1,basicIndex:0,imgPageSize:1,step:1,stepList:[],imgNode:new Image,basicResultList:[],resultList:[],stepProgress:0,loading:!1,triggerEventAfterIndexChanged:!1,pointCloudLoading:!1},getTotalPage=e=>{const{imgList:t,imgPageSize:o}=e;return Math.ceil(t.length/o)},calcStepProgress=(e,t)=>e.reduce((o,c)=>{if(c){const r=c.result;if(index.jsonParser(r)[`step_${t}`])return o+1}return o},0)/e.length,updateToolInstance=(e,t)=>{const{step:o,stepList:c}=e,r=StepUtils.getCurrentStepInfo(o,c),T=ConfigUtils.ConfigUtils.jsonParser(r.config);if(ToolUtils.isVideoTool(r==null?void 0:r.tool)||ToolUtils.isPointCloudTool(r==null?void 0:r.tool))return;const N=document.getElementById("toolContainer");if(!N)throw"Not exist dom named id-toolContainer";const O=index$1.getFormatSize({width:window.innerWidth,height:window.innerHeight}),d=new lbAnnotation.AnnotationEngine({container:N,toolName:r.tool,size:O,imgNode:t,config:T,style:JSON.parse(styleString)});return{toolInstance:d==null?void 0:d.toolInstance,annotationEngine:d}},LoadFileAndFileData=(e,t)=>(o,c)=>__async(void 0,null,function*(){const{stepList:r,step:T}=c().annotation,N=StepUtils.currentToolIsVideo(T,r),O=StepUtils.currentToolIsPointCloud(T,r);if(actionCreators.SetAnnotationLoading(o,!0),yield o(TryGetFileDataByAPI(e)),N||O){o(AfterVideoLoaded(e));return}o(AfterImageLoaded(e,t))}),TryGetFileDataByAPI=e=>(t,o)=>__async(void 0,null,function*(){const{getFileData:c,imgList:r}=o().annotation;if(c){const T=yield c(r[e],e);t({type:Actions.ANNOTATION_ACTIONS.SET_FILE_DATA,payload:{fileData:T,index:e}})}}),AfterVideoLoaded=e=>t=>{actionCreators.SetAnnotationLoading(t,!1),t({type:Actions.ANNOTATION_ACTIONS.LOAD_FILE_DATA,payload:{nextIndex:e}})},AfterImageLoaded=(e,t)=>(o,c)=>{var r;const{toolInstance:T,imgList:N}=c().annotation,O=(r=N==null?void 0:N[e])==null?void 0:r.url;lbAnnotation.ImgUtils.load(O).then(d=>{actionCreators.SetAnnotationLoading(o,!1),o({type:Actions.ANNOTATION_ACTIONS.LOAD_FILE_DATA,payload:{imgNode:d,nextIndex:e,nextBasicIndex:t}})}).catch(()=>{actionCreators.SetAnnotationLoading(o,!1),T==null||T.setErrorImg(),o({type:Actions.ANNOTATION_ACTIONS.LOAD_FILE_DATA,payload:{nextIndex:e,nextBasicIndex:t}})})},annotationReducer=(e=initialState,t)=>{var o,c,r,T,N,O,d,E,b,h,U,x,F,j,w,B,G,q,V,z;switch(t.type){case Actions.ANNOTATION_ACTIONS.UPDATE_TOOL_INSTANCE:return __spreadProps(__spreadValues({},e),{toolInstance:t.payload.toolInstance});case Actions.ANNOTATION_ACTIONS.UPDATE_IMG_LIST:return __spreadProps(__spreadValues({},e),{imgList:t.payload.imgList});case Actions.ANNOTATION_ACTIONS.CALC_STEP_PROGRESS:{const{imgList:n,step:s}=e,i=calcStepProgress(n,s);return __spreadProps(__spreadValues({},e),{stepProgress:i})}case Actions.ANNOTATION_ACTIONS.SUBMIT_FILE_DATA:{const{imgList:n,imgIndex:s,step:i,stepList:l,toolInstance:u,onSubmit:a,resultList:p}=e;if(!u||!n[s])return e;const A=((o=n[s])==null?void 0:o.result)||"",[,I,g]=(c=u==null?void 0:u.exportData())!=null?c:[],v=(T=(r=u==null?void 0:u.exportCustomData)==null?void 0:r.call(u))!=null?T:{},S=data.composeResultWithBasicImgInfo(A,I),C=data.composeResult(S,{step:i,stepList:l},{rect:p},v);n[s].result=AnnotationDataUtils.dataCorrection(C,A,i,l),g&&(n[s]=__spreadValues(__spreadValues({},n[s]),g)),a&&a([n[s]],(N=t.payload)==null?void 0:N.submitType,s);const L=calcStepProgress(n,i);return __spreadProps(__spreadValues({},e),{stepProgress:L,imgList:n})}case Actions.ANNOTATION_ACTIONS.SAVE_RESULT:{const{imgList:n,imgIndex:s,onSave:i}=e;return i==null||i(n[s],s,n),__spreadValues({},e)}case Actions.ANNOTATION_ACTIONS.SUBMIT_RESULT:{const{imgList:n,basicIndex:s,resultList:i,toolInstance:l,basicResultList:u}=e;if(!l)return e;const[a]=(O=l==null?void 0:l.exportData())!=null?O:[];let p=a;if((u==null?void 0:u.length)>0){const A=(d=u[s])==null?void 0:d.id,I=a.map(g=>__spreadProps(__spreadValues({},g),{sourceID:A}));p=___default.default.cloneDeep(i).filter(g=>g.sourceID!==A),p.push(...I)}return __spreadProps(__spreadValues({},e),{resultList:p,imgList:n})}case Actions.ANNOTATION_ACTIONS.SET_BASIC_INDEX:{const{toolInstance:n,step:s,imgList:i,imgIndex:l,stepList:u,annotationEngine:a,resultList:p,basicResultList:A}=e;if(!n||!a)return e;const I=t.payload.basicIndex,g=(E=A[I])==null?void 0:E.id,v=index.jsonParser((b=i[l])==null?void 0:b.result),S=(p||[]).filter(R=>R.sourceID===g),C=getStepConfig(u,s),{dataSourceStep:L,tool:y}=C,D=getStepConfig(u,L);let f=[];return L&&y&&(f=(h=v[`step_${L}`])==null?void 0:h.result,(f==null?void 0:f.length)>0?(a==null||a.setBasicInfo(D.tool,f[I]),a==null||a.launchOperation()):(a==null||a.setBasicInfo(D.tool),a==null||a.forbidOperation(),es.message.info(lbUtils.i18n.t("NoDependency")))),n==null||n.setResult(S),n==null||n.history.initRecord(S,!0),__spreadProps(__spreadValues({},e),{basicIndex:I})}case Actions.ANNOTATION_ACTIONS.SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED:{const{triggerEventAfterIndexChanged:n}=t.payload;return __spreadProps(__spreadValues({},e),{triggerEventAfterIndexChanged:!!n})}case Actions.ANNOTATION_ACTIONS.LOAD_FILE_DATA:{const{imgList:n,step:s,toolInstance:i,annotationEngine:l,stepList:u}=e;if(!i)return __spreadProps(__spreadValues({},e),{imgIndex:t.payload.nextIndex});const a=StepUtils.getCurrentStepInfo(s,u),{nextIndex:p,imgNode:A,nextBasicIndex:I,imgError:g}=t.payload,v=I!=null?I:0,S=index.jsonParser((U=n[p])==null?void 0:U.result),C=S[`step_${a.step}`],L=!C,y={rotate:(x=S.rotate)!=null?x:0,valid:(F=S.valid)!=null?F:!0};A&&g!==!0?l==null||l.setImgNode(A,y):i==null||i.setValid(y.valid);const D=getStepConfig(u,a.step),{dataSourceStep:f,tool:R}=D,H=getStepConfig(u,f),M=f&&R,m=(w=(j=S[`step_${f}`])==null?void 0:j.result)!=null?w:[],P=AnnotationDataUtils.getInitialResultList(C==null?void 0:C.result,i,D,m,L);if(l==null||l.launchOperation(),M&&((m==null?void 0:m.length)>0?l==null||l.setBasicInfo(H.tool,m[v]):(l==null||l.setBasicInfo(H.tool),l==null||l.forbidOperation(),es.message.info(lbUtils.i18n.t("NoDependency")))),a.tool!=="check"){const $=(G=(B=m[v])==null?void 0:B.id)!=null?G:"",k=M?P.filter(K=>lbAnnotation.CommonToolUtils.isSameSourceID(K.sourceID,$)):P;i==null||i.setResult(k),i==null||i.history.initRecord(P,!0)}return __spreadProps(__spreadValues({},e),{imgIndex:p,basicIndex:v,basicResultList:m,resultList:P})}case Actions.ANNOTATION_ACTIONS.UPDATE_ANNOTATION_CONFIG:return __spreadProps(__spreadValues({},e),{config:(q=t.payload.config)!=null?q:"{}"});case Actions.ANNOTATION_ACTIONS.SET_TASK_STEP_LIST:{const{stepList:n}=t.payload;return __spreadProps(__spreadValues({},e),{stepList:n})}case Actions.ANNOTATION_ACTIONS.SET_TASK_CONFIG:{const{stepList:n,step:s}=t.payload;return __spreadProps(__spreadValues({},e),{stepList:n,step:s})}case Actions.ANNOTATION_ACTIONS.INIT_TOOL:{const{imgNode:n}=e,s=updateToolInstance(e,n);if(s){const{toolInstance:i,annotationEngine:l}=s;return __spreadProps(__spreadValues({},e),{toolInstance:i,annotationEngine:l})}return __spreadValues({},e)}case Actions.ANNOTATION_ACTIONS.SET_TOOL:{const n=(V=t.payload)==null?void 0:V.instance;return n?__spreadProps(__spreadValues({},e),{toolInstance:n}):__spreadValues({},e)}case Actions.ANNOTATION_ACTIONS.UPDATE_ON_SUBMIT:return __spreadProps(__spreadValues({},e),{onSubmit:t.payload.onSubmit});case Actions.ANNOTATION_ACTIONS.UPDATE_ON_SAVE:return __spreadProps(__spreadValues({},e),{onSave:t.payload.onSave});case Actions.ANNOTATION_ACTIONS.UPDATE_ON_PAGE_CHANGE:return __spreadProps(__spreadValues({},e),{onPageChange:t.payload.onPageChange});case Actions.ANNOTATION_ACTIONS.UPDATE_ON_STEP_CHANGE:return __spreadProps(__spreadValues({},e),{onStepChange:t.payload.onStepChange});case Actions.ANNOTATION_ACTIONS.UPDATE_GET_FILE_DATA:return __spreadProps(__spreadValues({},e),{getFileData:t.payload.getFileData});case Actions.ANNOTATION_ACTIONS.UPDATE_PAGE_SIZE:return __spreadProps(__spreadValues({},e),{pageSize:t.payload.pageSize});case Actions.ANNOTATION_ACTIONS.UPDATE_LOAD_FILE_LIST:return __spreadProps(__spreadValues({},e),{loadFileList:t.payload.loadFileList});case Actions.ANNOTATION_ACTIONS.SKIP_BEFORE_PAGE_TURNING:return __spreadProps(__spreadValues({},e),{skipBeforePageTurning:t.payload.skipBeforePageTurning});case Actions.ANNOTATION_ACTIONS.SET_FILE_DATA:{const{fileData:n,index:s}=t.payload,{imgList:i}=e,l=[...i];return l[s]=__spreadValues(__spreadValues({},l[s]),n),__spreadProps(__spreadValues({},e),{imgList:l})}case Actions.ANNOTATION_ACTIONS.UPDATE_ROTATE:{const{toolInstance:n}=e;return n==null||n.updateRotate(),e}case Actions.ANNOTATION_ACTIONS.COPY_BACKWARD_RESULT:{const{toolInstance:n,imgIndex:s,imgList:i,step:l}=e;if(!n)return e;if(s===0||s>=i.length)return console.error("\u65E0\u6CD5\u590D\u5236\u8FB9\u754C\u5916\u7684\u5185\u5BB9"),e;const u=i[s-1].result;if(!u)return e;const a=AnnotationDataUtils.copyResultChange(u,l,(z=i[s].result)!=null?z:"");i[s]=__spreadProps(__spreadValues({},i[s]),{result:a});const A=index.jsonParser(a)[`step_${l}`],I=(A==null?void 0:A.result)||[];return n==null||n.setResult(I),n==null||n.history.pushHistory(I),__spreadProps(__spreadValues({},e),{imgList:[...i]})}case Actions.ANNOTATION_ACTIONS.SET_STEP:{const{stepList:n,annotationEngine:s}=e,{toStep:i}=t.payload;if(!s)return e;const l=getStepConfig(n,i);return s==null||s.setToolName(l.tool,l.config),__spreadProps(__spreadValues({},e),{step:i,toolInstance:s==null?void 0:s.toolInstance})}case Actions.ANNOTATION_ACTIONS.SET_LOADING:{const{loading:n}=t.payload;return __spreadProps(__spreadValues({},e),{loading:!!n})}case Actions.ANNOTATION_ACTIONS.SET_POINT_CLOUD_LOADING:{const{pointCloudLoading:n}=t.payload;return __spreadProps(__spreadValues({},e),{pointCloudLoading:!!n})}default:return e}};exports.LoadFileAndFileData=LoadFileAndFileData,exports.annotationReducer=annotationReducer,exports.getStepConfig=getStepConfig,exports.getTotalPage=getTotalPage;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var index$1=require("../../components/customResizeHook/index.js"),styleString=require("../../constant/styleString.js"),Actions=require("../Actions.js"),index=require("../../utils/index.js"),AnnotationDataUtils=require("../../utils/AnnotationDataUtils.js"),ConfigUtils=require("../../utils/ConfigUtils.js"),data=require("../../utils/data.js"),StepUtils=require("../../utils/StepUtils.js"),ToolUtils=require("../../utils/ToolUtils.js"),lbAnnotation=require("@labelbee/lb-annotation"),lbUtils=require("@labelbee/lb-utils"),es=require("antd/es"),_=require("lodash"),actionCreators=require("./actionCreators.js");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var ___default=_interopDefaultLegacy(_),__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,o)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,__spreadValues=(e,t)=>{for(var o in t||(t={}))__hasOwnProp.call(t,o)&&__defNormalProp(e,o,t[o]);if(__getOwnPropSymbols)for(var o of __getOwnPropSymbols(t))__propIsEnum.call(t,o)&&__defNormalProp(e,o,t[o]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t)),__async=(e,t,o)=>new Promise((c,r)=>{var T=d=>{try{O(o.next(d))}catch(E){r(E)}},N=d=>{try{O(o.throw(d))}catch(E){r(E)}},O=d=>d.done?c(d.value):Promise.resolve(d.value).then(T,N);O((o=o.apply(e,t)).next())});const getStepConfig=(e,t)=>e.find(o=>o.step===t),initialState={annotationEngine:null,toolInstance:null,imgList:[],config:"{}",imgIndex:-1,basicIndex:0,imgPageSize:1,step:1,stepList:[],imgNode:new Image,basicResultList:[],resultList:[],stepProgress:0,loading:!1,triggerEventAfterIndexChanged:!1,pointCloudLoading:!1},getTotalPage=e=>{const{imgList:t,imgPageSize:o}=e;return Math.ceil(t.length/o)},calcStepProgress=(e,t)=>e.reduce((o,c)=>{if(c){const r=c.result;if(index.jsonParser(r)[`step_${t}`])return o+1}return o},0)/e.length,updateToolInstance=(e,t)=>{const{step:o,stepList:c}=e,r=StepUtils.getCurrentStepInfo(o,c),T=ConfigUtils.ConfigUtils.jsonParser(r.config);if(ToolUtils.isVideoTool(r==null?void 0:r.tool)||ToolUtils.isPointCloudTool(r==null?void 0:r.tool))return;const N=document.getElementById("toolContainer");if(!N)throw"Not exist dom named id-toolContainer";const O=index$1.getFormatSize({width:window.innerWidth,height:window.innerHeight}),d=new lbAnnotation.AnnotationEngine({container:N,toolName:r.tool,size:O,imgNode:t,config:T,style:JSON.parse(styleString)});return{toolInstance:d==null?void 0:d.toolInstance,annotationEngine:d}},LoadFileAndFileData=(e,t)=>(o,c)=>__async(void 0,null,function*(){const{stepList:r,step:T}=c().annotation,N=StepUtils.currentToolIsVideo(T,r),O=StepUtils.currentToolIsPointCloud(T,r);if(actionCreators.SetAnnotationLoading(o,!0),yield o(TryGetFileDataByAPI(e)),N||O){o(AfterVideoLoaded(e));return}o(AfterImageLoaded(e,t))}),TryGetFileDataByAPI=e=>(t,o)=>__async(void 0,null,function*(){const{getFileData:c,imgList:r}=o().annotation;if(c){const T=yield c(r[e],e);t({type:Actions.ANNOTATION_ACTIONS.SET_FILE_DATA,payload:{fileData:T,index:e}})}}),AfterVideoLoaded=e=>t=>{actionCreators.SetAnnotationLoading(t,!1),t({type:Actions.ANNOTATION_ACTIONS.LOAD_FILE_DATA,payload:{nextIndex:e}})},AfterImageLoaded=(e,t)=>(o,c)=>{var r;const{toolInstance:T,imgList:N}=c().annotation,O=(r=N==null?void 0:N[e])==null?void 0:r.url;lbAnnotation.ImgUtils.load(O).then(d=>{actionCreators.SetAnnotationLoading(o,!1),o({type:Actions.ANNOTATION_ACTIONS.LOAD_FILE_DATA,payload:{imgNode:d,nextIndex:e,nextBasicIndex:t}})}).catch(()=>{actionCreators.SetAnnotationLoading(o,!1),T==null||T.setErrorImg(),o({type:Actions.ANNOTATION_ACTIONS.LOAD_FILE_DATA,payload:{nextIndex:e,nextBasicIndex:t}})})},annotationReducer=(e=initialState,t)=>{var o,c,r,T,N,O,d,E,b,h,U,x,F,j,w,B,G,q,V,z;switch(t.type){case Actions.ANNOTATION_ACTIONS.UPDATE_TOOL_INSTANCE:return __spreadProps(__spreadValues({},e),{toolInstance:t.payload.toolInstance});case Actions.ANNOTATION_ACTIONS.UPDATE_IMG_LIST:return __spreadProps(__spreadValues({},e),{imgList:t.payload.imgList});case Actions.ANNOTATION_ACTIONS.CALC_STEP_PROGRESS:{const{imgList:n,step:s}=e,i=calcStepProgress(n,s);return __spreadProps(__spreadValues({},e),{stepProgress:i})}case Actions.ANNOTATION_ACTIONS.SUBMIT_FILE_DATA:{const{imgList:n,imgIndex:s,step:i,stepList:l,toolInstance:u,onSubmit:a,resultList:p}=e;if(!u||!n[s])return e;const A=((o=n[s])==null?void 0:o.result)||"",[,I,g]=(c=u==null?void 0:u.exportData())!=null?c:[],v=(T=(r=u==null?void 0:u.exportCustomData)==null?void 0:r.call(u))!=null?T:{},S=data.composeResultWithBasicImgInfo(A,I),C=data.composeResult(S,{step:i,stepList:l},{rect:p},v);n[s].result=AnnotationDataUtils.dataCorrection(C,A,i,l),g&&(n[s]=__spreadValues(__spreadValues({},n[s]),g)),a&&a([n[s]],(N=t.payload)==null?void 0:N.submitType,s);const L=calcStepProgress(n,i);return __spreadProps(__spreadValues({},e),{stepProgress:L,imgList:n})}case Actions.ANNOTATION_ACTIONS.SAVE_RESULT:{const{imgList:n,imgIndex:s,onSave:i}=e;return i==null||i(n[s],s,n),__spreadValues({},e)}case Actions.ANNOTATION_ACTIONS.SUBMIT_RESULT:{const{imgList:n,basicIndex:s,resultList:i,toolInstance:l,basicResultList:u}=e;if(!l)return e;const[a]=(O=l==null?void 0:l.exportData())!=null?O:[];let p=a;if((u==null?void 0:u.length)>0){const A=(d=u[s])==null?void 0:d.id,I=a.map(g=>__spreadProps(__spreadValues({},g),{sourceID:A}));p=___default.default.cloneDeep(i).filter(g=>g.sourceID!==A),p.push(...I)}return __spreadProps(__spreadValues({},e),{resultList:p,imgList:n})}case Actions.ANNOTATION_ACTIONS.SET_BASIC_INDEX:{const{toolInstance:n,step:s,imgList:i,imgIndex:l,stepList:u,annotationEngine:a,resultList:p,basicResultList:A}=e;if(!n||!a)return e;const I=t.payload.basicIndex,g=(E=A[I])==null?void 0:E.id,v=index.jsonParser((b=i[l])==null?void 0:b.result),S=(p||[]).filter(R=>R.sourceID===g),C=getStepConfig(u,s),{dataSourceStep:L,tool:y}=C,D=getStepConfig(u,L);let f=[];return L&&y&&(f=(h=v[`step_${L}`])==null?void 0:h.result,(f==null?void 0:f.length)>0?(a==null||a.setBasicInfo(D.tool,f[I]),a==null||a.launchOperation()):(a==null||a.setBasicInfo(D.tool),a==null||a.forbidOperation(),es.message.info(lbUtils.i18n.t("NoDependency")))),n==null||n.setResult(S),n==null||n.history.initRecord(S,!0),__spreadProps(__spreadValues({},e),{basicIndex:I})}case Actions.ANNOTATION_ACTIONS.SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED:{const{triggerEventAfterIndexChanged:n}=t.payload;return __spreadProps(__spreadValues({},e),{triggerEventAfterIndexChanged:!!n})}case Actions.ANNOTATION_ACTIONS.LOAD_FILE_DATA:{const{imgList:n,step:s,toolInstance:i,annotationEngine:l,stepList:u}=e;if(!i)return __spreadProps(__spreadValues({},e),{imgIndex:t.payload.nextIndex});const a=StepUtils.getCurrentStepInfo(s,u),{nextIndex:p,imgNode:A,nextBasicIndex:I,imgError:g}=t.payload,v=I!=null?I:0,S=index.jsonParser((U=n[p])==null?void 0:U.result),C=S[`step_${a.step}`],L=!C,y={rotate:(x=S.rotate)!=null?x:0,valid:(F=S.valid)!=null?F:!0};A&&g!==!0?l==null||l.setImgNode(A,y):i==null||i.setValid(y.valid);const D=getStepConfig(u,a.step),{dataSourceStep:f,tool:R}=D,H=getStepConfig(u,f),M=f&&R,m=(w=(j=S[`step_${f}`])==null?void 0:j.result)!=null?w:[],P=AnnotationDataUtils.getInitialResultList(C==null?void 0:C.result,i,D,m,L);if(l==null||l.launchOperation(),M&&((m==null?void 0:m.length)>0?l==null||l.setBasicInfo(H.tool,m[v]):(l==null||l.setBasicInfo(H.tool),l==null||l.forbidOperation(),es.message.info(lbUtils.i18n.t("NoDependency")))),a.tool!=="check"){const $=(G=(B=m[v])==null?void 0:B.id)!=null?G:"",k=M?P.filter(K=>lbAnnotation.CommonToolUtils.isSameSourceID(K.sourceID,$)):P;i==null||i.history.initRecord(P,!0),i==null||i.setResult(k)}return __spreadProps(__spreadValues({},e),{imgIndex:p,basicIndex:v,basicResultList:m,resultList:P})}case Actions.ANNOTATION_ACTIONS.UPDATE_ANNOTATION_CONFIG:return __spreadProps(__spreadValues({},e),{config:(q=t.payload.config)!=null?q:"{}"});case Actions.ANNOTATION_ACTIONS.SET_TASK_STEP_LIST:{const{stepList:n}=t.payload;return __spreadProps(__spreadValues({},e),{stepList:n})}case Actions.ANNOTATION_ACTIONS.SET_TASK_CONFIG:{const{stepList:n,step:s}=t.payload;return __spreadProps(__spreadValues({},e),{stepList:n,step:s})}case Actions.ANNOTATION_ACTIONS.INIT_TOOL:{const{imgNode:n}=e,s=updateToolInstance(e,n);if(s){const{toolInstance:i,annotationEngine:l}=s;return __spreadProps(__spreadValues({},e),{toolInstance:i,annotationEngine:l})}return __spreadValues({},e)}case Actions.ANNOTATION_ACTIONS.SET_TOOL:{const n=(V=t.payload)==null?void 0:V.instance;return n?__spreadProps(__spreadValues({},e),{toolInstance:n}):__spreadValues({},e)}case Actions.ANNOTATION_ACTIONS.UPDATE_ON_SUBMIT:return __spreadProps(__spreadValues({},e),{onSubmit:t.payload.onSubmit});case Actions.ANNOTATION_ACTIONS.UPDATE_ON_SAVE:return __spreadProps(__spreadValues({},e),{onSave:t.payload.onSave});case Actions.ANNOTATION_ACTIONS.UPDATE_ON_PAGE_CHANGE:return __spreadProps(__spreadValues({},e),{onPageChange:t.payload.onPageChange});case Actions.ANNOTATION_ACTIONS.UPDATE_ON_STEP_CHANGE:return __spreadProps(__spreadValues({},e),{onStepChange:t.payload.onStepChange});case Actions.ANNOTATION_ACTIONS.UPDATE_GET_FILE_DATA:return __spreadProps(__spreadValues({},e),{getFileData:t.payload.getFileData});case Actions.ANNOTATION_ACTIONS.UPDATE_PAGE_SIZE:return __spreadProps(__spreadValues({},e),{pageSize:t.payload.pageSize});case Actions.ANNOTATION_ACTIONS.UPDATE_LOAD_FILE_LIST:return __spreadProps(__spreadValues({},e),{loadFileList:t.payload.loadFileList});case Actions.ANNOTATION_ACTIONS.SKIP_BEFORE_PAGE_TURNING:return __spreadProps(__spreadValues({},e),{skipBeforePageTurning:t.payload.skipBeforePageTurning});case Actions.ANNOTATION_ACTIONS.SET_FILE_DATA:{const{fileData:n,index:s}=t.payload,{imgList:i}=e,l=[...i];return l[s]=__spreadValues(__spreadValues({},l[s]),n),__spreadProps(__spreadValues({},e),{imgList:l})}case Actions.ANNOTATION_ACTIONS.UPDATE_ROTATE:{const{toolInstance:n}=e;return n==null||n.updateRotate(),e}case Actions.ANNOTATION_ACTIONS.COPY_BACKWARD_RESULT:{const{toolInstance:n,imgIndex:s,imgList:i,step:l}=e;if(!n)return e;if(s===0||s>=i.length)return console.error("\u65E0\u6CD5\u590D\u5236\u8FB9\u754C\u5916\u7684\u5185\u5BB9"),e;const u=i[s-1].result;if(!u)return e;const a=AnnotationDataUtils.copyResultChange(u,l,(z=i[s].result)!=null?z:"");i[s]=__spreadProps(__spreadValues({},i[s]),{result:a});const A=index.jsonParser(a)[`step_${l}`],I=(A==null?void 0:A.result)||[];return n==null||n.setResult(I),n==null||n.history.pushHistory(I),__spreadProps(__spreadValues({},e),{imgList:[...i]})}case Actions.ANNOTATION_ACTIONS.SET_STEP:{const{stepList:n,annotationEngine:s}=e,{toStep:i}=t.payload;if(!s)return e;const l=getStepConfig(n,i);return s==null||s.setToolName(l.tool,l.config),__spreadProps(__spreadValues({},e),{step:i,toolInstance:s==null?void 0:s.toolInstance})}case Actions.ANNOTATION_ACTIONS.SET_LOADING:{const{loading:n}=t.payload;return __spreadProps(__spreadValues({},e),{loading:!!n})}case Actions.ANNOTATION_ACTIONS.SET_POINT_CLOUD_LOADING:{const{pointCloudLoading:n}=t.payload;return __spreadProps(__spreadValues({},e),{pointCloudLoading:!!n})}default:return e}};exports.LoadFileAndFileData=LoadFileAndFileData,exports.annotationReducer=annotationReducer,exports.getStepConfig=getStepConfig,exports.getTotalPage=getTotalPage;
@@ -3,6 +3,7 @@
3
3
  * @author laoluo
4
4
  */
5
5
  import React from 'react';
6
+ declare type TAfterImgOnLoad = (img: HTMLImageElement) => void;
6
7
  interface IProps {
7
8
  src: string;
8
9
  size?: {
@@ -20,6 +21,7 @@ interface IProps {
20
21
  onChange?: (type: 'hover' | 'selected', ids: string[]) => void;
21
22
  showLoading?: boolean;
22
23
  globalStyle?: React.CSSProperties;
24
+ afterImgOnLoad?: TAfterImgOnLoad;
23
25
  }
24
26
  declare const _default: React.ForwardRefExoticComponent<IProps & React.RefAttributes<unknown>>;
25
27
  export default _default;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @file Cache the operation
3
+ * @createDate 2022-09-27
4
+ * @author Ron <ron.f.luo@gmail.com>
5
+ */
6
+ /// <reference types="react" />
7
+ declare const useRefCache: <T>(data: T) => import("react").MutableRefObject<T>;
8
+ export default useRefCache;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var index$4=require("../../../constant/index.js"),actionCreators=require("../../../store/annotation/actionCreators.js"),reducer=require("../../../store/annotation/reducer.js"),es=require("antd/es"),React=require("react"),reactI18next=require("react-i18next"),reactRedux=require("react-redux"),ctx=require("../../../store/ctx.js"),index=require("./FooterTips/index.js"),index$1=require("./HiddenTips/index.js"),index$2=require("./PageNumber/index.js"),index$3=require("./ZoomController/index.js"),Pagination=require("./Pagination.js"),lbAnnotation=require("@labelbee/lb-annotation");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React);const{EPointCloudName}=lbAnnotation.cTool,footerCls=`${index$4.prefix}-footer`,FooterDivider=()=>React__default.default.createElement(es.Divider,{type:"vertical",style:{background:"rgba(153, 153, 153, 1)",height:"16px"}}),renderFooter=({footerTips:e,hiddenTips:a,pageNumber:i,pagination:l,zoomController:n,curItems:u,footerDivider:s})=>React__default.default.createElement(React__default.default.Fragment,null,e,React__default.default.createElement("div",{style:{flex:1}}),a,i,l,u,s,n),ToolFooter=e=>{var a;const{stepList:i,step:l,basicResultList:n,basicIndex:u,mode:s="light",footer:r=renderFooter,skipBeforePageTurning:o}=e,t=ctx.useDispatch(),{t:f}=reactI18next.useTranslation(),c=(a=i[l-1])!=null?a:{},g=!!c.dataSourceStep,m=()=>{if(o){o(()=>t(actionCreators.PageBackward()));return}t(actionCreators.PageBackward())},x=()=>{if(o){o(()=>t(actionCreators.PageForward()));return}t(actionCreators.PageForward())},p=P=>{const b=~~P-1;t(actionCreators.PageJump(b))},d=React__default.default.createElement(Pagination.Pagination,{imgIndex:e.imgIndex,totalPage:e.totalPage,pageJump:p,pageBackward:m,pageForward:x,footerCls}),v=g&&n.length>0?React__default.default.createElement("span",null,f("curItems",{current:u+1,total:n.length})):null;return typeof r=="function"?r===renderFooter&&c.tool===EPointCloudName.PointCloud?React__default.default.createElement("div",{className:`${footerCls}`,style:e.style},React__default.default.createElement(index,null),React__default.default.createElement("div",{style:{flex:1}}),d):React__default.default.createElement("div",{className:`${footerCls}`,style:e.style},r({footerTips:React__default.default.createElement(index,null),hiddenTips:React__default.default.createElement(index$1,null),pageNumber:React__default.default.createElement(index$2,null),pagination:d,zoomController:React__default.default.createElement(index$3.default,{mode:s}),curItems:v,footerDivider:React__default.default.createElement(FooterDivider,null)})):r},mapStateToProps=e=>({totalPage:reducer.getTotalPage(e.annotation),imgIndex:e.annotation.imgIndex,stepList:e.annotation.stepList,step:e.annotation.step,basicIndex:e.annotation.basicIndex,basicResultList:e.annotation.basicResultList,skipBeforePageTurning:e.annotation.skipBeforePageTurning});var ToolFooter$1=reactRedux.connect(mapStateToProps,null,null,{context:ctx.LabelBeeContext})(ToolFooter);exports.FooterDivider=FooterDivider,exports.default=ToolFooter$1,exports.footerCls=footerCls;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var index$4=require("../../../constant/index.js"),actionCreators=require("../../../store/annotation/actionCreators.js"),reducer=require("../../../store/annotation/reducer.js"),es=require("antd/es"),React=require("react"),reactI18next=require("react-i18next"),reactRedux=require("react-redux"),ctx=require("../../../store/ctx.js"),index=require("./FooterTips/index.js"),index$1=require("./HiddenTips/index.js"),index$2=require("./PageNumber/index.js"),index$3=require("./ZoomController/index.js"),Pagination=require("./Pagination.js"),lbAnnotation=require("@labelbee/lb-annotation");function _interopDefaultLegacy(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var React__default=_interopDefaultLegacy(React);const{EPointCloudName}=lbAnnotation.cTool,footerCls=`${index$4.prefix}-footer`,FooterDivider=()=>React__default.default.createElement(es.Divider,{type:"vertical",style:{background:"rgba(153, 153, 153, 1)",height:"16px"}}),renderFooter=({footerTips:e,hiddenTips:r,pageNumber:i,pagination:l,zoomController:n,curItems:u,footerDivider:s})=>React__default.default.createElement(React__default.default.Fragment,null,e,React__default.default.createElement("div",{style:{flex:1}}),r,i,l,u,s,n),ToolFooter=e=>{var r;const{stepList:i,step:l,basicResultList:n,basicIndex:u,mode:s="light",footer:o=renderFooter,skipBeforePageTurning:t}=e,a=ctx.useDispatch(),{t:g}=reactI18next.useTranslation(),c=(r=i[l-1])!=null?r:{},m=!!c.dataSourceStep,x=()=>{if(t){t(()=>a(actionCreators.PageBackward()));return}a(actionCreators.PageBackward())},p=()=>{if(t){t(()=>a(actionCreators.PageForward()));return}a(actionCreators.PageForward())},v=b=>{const f=~~b-1;if(t){t(()=>a(actionCreators.PageJump(f)));return}a(actionCreators.PageJump(f))},d=React__default.default.createElement(Pagination.Pagination,{imgIndex:e.imgIndex,totalPage:e.totalPage,pageJump:v,pageBackward:x,pageForward:p,footerCls}),P=m&&n.length>0?React__default.default.createElement("span",null,g("curItems",{current:u+1,total:n.length})):null;return typeof o=="function"?o===renderFooter&&c.tool===EPointCloudName.PointCloud?React__default.default.createElement("div",{className:`${footerCls}`,style:e.style},React__default.default.createElement(index,null),React__default.default.createElement("div",{style:{flex:1}}),d):React__default.default.createElement("div",{className:`${footerCls}`,style:e.style},o({footerTips:React__default.default.createElement(index,null),hiddenTips:React__default.default.createElement(index$1,null),pageNumber:React__default.default.createElement(index$2,null),pagination:d,zoomController:React__default.default.createElement(index$3.default,{mode:s}),curItems:P,footerDivider:React__default.default.createElement(FooterDivider,null)})):o},mapStateToProps=e=>({totalPage:reducer.getTotalPage(e.annotation),imgIndex:e.annotation.imgIndex,stepList:e.annotation.stepList,step:e.annotation.step,basicIndex:e.annotation.basicIndex,basicResultList:e.annotation.basicResultList,skipBeforePageTurning:e.annotation.skipBeforePageTurning});var ToolFooter$1=reactRedux.connect(mapStateToProps,null,null,{context:ctx.LabelBeeContext})(ToolFooter);exports.FooterDivider=FooterDivider,exports.default=ToolFooter$1,exports.footerCls=footerCls;
@@ -1 +1 @@
1
- import g,{useState as L,useRef as b,useImperativeHandle as A,useEffect as u}from"react";import{ViewOperation as R,ImgUtils as V}from"@labelbee/lb-annotation";import{Spin as Z}from"antd/es";var j=Object.defineProperty,y=Object.getOwnPropertySymbols,D=Object.prototype.hasOwnProperty,N=Object.prototype.propertyIsEnumerable,I=(t,e,o)=>e in t?j(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o,m=(t,e)=>{for(var o in e||(e={}))D.call(e,o)&&I(t,o,e[o]);if(y)for(var o of y(e))N.call(e,o)&&I(t,o,e[o]);return t};const _={width:500,height:100},U=t=>{if(!t)return _;if(t.width&&t.height)return t;const e=m({},t);return e.width||(e.width=_.width),e.height||(e.height=_.height),e},k=(t,e)=>{var o,p;const{src:w,annotations:s=[],style:O={stroke:"blue",thickness:3},zoomChange:c,backgroundStyle:z={},onChange:d,showLoading:P=!1,globalStyle:S}=t,f=U(t.size),[E,v]=L(!1),h=b(null),r=b();A(e,()=>{const n=r.current;return n?{zoomIn:()=>n.zoomChanged(!0),zoomOut:()=>n.zoomChanged(!1),initImgPos:()=>n.initImgPos(),toolInstance:n}:{}},[r.current]),u(()=>(h.current&&(r.current=new R({container:h.current,size:f,style:O,annotations:s,config:"{}"}),r.current.init()),()=>{var n;(n=r.current)==null||n.destroy()}),[]),u(()=>{var n;r.current&&(v(!0),(n=r.current)==null||n.setLoading(!0),V.load(w).then(a=>{var i,l;(i=r.current)==null||i.setLoading(!1),v(!1),(l=r.current)==null||l.setImgNode(a)}).catch(()=>{var a;(a=r.current)==null||a.setLoading(!1),v(!1)}))},[w]),u(()=>{r.current&&r.current.updateData(s)},[s]),u(()=>{const n=r.current;(n==null?void 0:n.setSize)&&(n.setSize(f),n.initPosition())},[(o=t.size)==null?void 0:o.width,(p=t.size)==null?void 0:p.height]),u(()=>{var n,a;return r.current&&((n=r.current)==null||n.on("onChange",(...i)=>{d==null||d.apply(null,i)}),(a=r.current)==null||a.on("renderZoom",i=>{c&&c(i)})),()=>{var i,l;(i=r.current)==null||i.unbindAll("onChange"),(l=r.current)==null||l.unbindAll("renderZoom")}},[c,d]);const C=g.createElement("div",{ref:h,style:m(m({position:"relative"},f),z)});return g.createElement(Z,{spinning:P||E,delay:300,style:S},C)};var x=g.forwardRef(k);export{x as default};
1
+ import g,{useState as A,useRef as y,useImperativeHandle as V,useEffect as u}from"react";import{ViewOperation as j,ImgUtils as Z}from"@labelbee/lb-annotation";import{Spin as k}from"antd/es";import D from"../../hooks/useRefCache.js";var U=Object.defineProperty,I=Object.getOwnPropertySymbols,x=Object.prototype.hasOwnProperty,F=Object.prototype.propertyIsEnumerable,O=(t,e,o)=>e in t?U(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o,m=(t,e)=>{for(var o in e||(e={}))x.call(e,o)&&O(t,o,e[o]);if(I)for(var o of I(e))F.call(e,o)&&O(t,o,e[o]);return t};const _={width:500,height:100},H=t=>{if(!t)return _;if(t.width&&t.height)return t;const e=m({},t);return e.width||(e.width=_.width),e.height||(e.height=_.height),e},N=(t,e)=>{var o,p;const{src:w,annotations:s=[],style:z={stroke:"blue",thickness:3},zoomChange:c,backgroundStyle:P={},onChange:d,showLoading:S=!1,globalStyle:C,afterImgOnLoad:L}=t,f=H(t.size),[R,h]=A(!1),v=y(null),r=y(),b=D(L);V(e,()=>{const n=r.current;return n?{zoomIn:()=>n.zoomChanged(!0),zoomOut:()=>n.zoomChanged(!1),initImgPos:()=>n.initImgPos(),toolInstance:n}:{}},[r.current]),u(()=>(v.current&&(r.current=new j({container:v.current,size:f,style:z,annotations:s,config:"{}"}),r.current.init()),()=>{var n;(n=r.current)==null||n.destroy()}),[]),u(()=>{var n;r.current&&(h(!0),(n=r.current)==null||n.setLoading(!0),Z.load(w).then(a=>{var i,l;(i=r.current)==null||i.setLoading(!1),h(!1),(l=r.current)==null||l.setImgNode(a),b.current&&b.current(a)}).catch(()=>{var a;(a=r.current)==null||a.setLoading(!1),h(!1)}))},[w]),u(()=>{r.current&&r.current.updateData(s)},[s]),u(()=>{const n=r.current;(n==null?void 0:n.setSize)&&(n.setSize(f),n.initPosition())},[(o=t.size)==null?void 0:o.width,(p=t.size)==null?void 0:p.height]),u(()=>{var n,a;return r.current&&((n=r.current)==null||n.on("onChange",(...i)=>{d==null||d.apply(null,i)}),(a=r.current)==null||a.on("renderZoom",i=>{c&&c(i)})),()=>{var i,l;(i=r.current)==null||i.unbindAll("onChange"),(l=r.current)==null||l.unbindAll("renderZoom")}},[c,d]);const E=g.createElement("div",{ref:v,style:m(m({position:"relative"},f),P)});return g.createElement(k,{spinning:S||R,delay:300,style:C},E)};var T=g.forwardRef(N);export{T as default};
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/AnnotationView/index.tsx"],"sourcesContent":["/**\n * 用于标注查看模式\n * @author laoluo\n */\n\nimport React, { useEffect, useRef, useImperativeHandle, useState } from 'react';\nimport { ViewOperation, ImgUtils } from '@labelbee/lb-annotation';\nimport { Spin } from 'antd/es';\n\ninterface IProps {\n src: string; // 图片路径\n size?: {\n width?: number;\n height?: number;\n };\n style?: {\n color?: string;\n fill?: string;\n thickness?: number;\n };\n annotations: any[]; // TODO\n zoomChange?: (zoom: number) => void;\n backgroundStyle?: React.CSSProperties;\n onChange?: (type: 'hover' | 'selected', ids: string[]) => void;\n\n showLoading?: boolean;\n globalStyle?: React.CSSProperties; // Custom global style.\n}\n\nconst DEFAULT_SIZE = {\n width: 500,\n height: 100, // Most Important, If the outer size is smaller than this will not take effect by default\n};\n\nconst sizeInitialized = (size?: { width?: number; height?: number }) => {\n if (!size) {\n return DEFAULT_SIZE;\n }\n if (size.width && size.height) {\n return size;\n }\n\n const newSize = {\n ...size,\n };\n\n if (!newSize.width) {\n newSize.width = DEFAULT_SIZE.width;\n }\n\n if (!newSize.height) {\n newSize.height = DEFAULT_SIZE.height;\n }\n\n return newSize;\n};\n\nconst AnnotationView = (props: IProps, ref: any) => {\n const {\n src,\n annotations = [],\n style = {\n stroke: 'blue',\n thickness: 3,\n },\n zoomChange,\n backgroundStyle = {},\n onChange,\n showLoading = false,\n globalStyle,\n } = props;\n const size = sizeInitialized(props.size);\n const [loading, setLoading] = useState(false);\n const annotationRef = useRef<HTMLDivElement>(null);\n const viewOperation = useRef<ViewOperation>();\n\n useImperativeHandle(\n ref,\n () => {\n const toolInstance = viewOperation.current;\n if (!toolInstance) {\n return {};\n }\n\n return {\n zoomIn: () => toolInstance.zoomChanged(true), // 放大\n zoomOut: () => toolInstance.zoomChanged(false), // 缩小\n initImgPos: () => toolInstance.initImgPos(),\n toolInstance,\n };\n },\n [viewOperation.current],\n );\n\n useEffect(() => {\n if (annotationRef.current) {\n viewOperation.current = new ViewOperation({\n container: annotationRef.current,\n size,\n style,\n annotations,\n config: '{}', // TODO,暂时不需要\n });\n\n viewOperation.current.init();\n }\n\n return () => {\n viewOperation.current?.destroy();\n };\n }, []);\n\n useEffect(() => {\n if (viewOperation.current) {\n setLoading(true);\n viewOperation.current?.setLoading(true);\n ImgUtils.load(src)\n .then((imgNode: HTMLImageElement) => {\n viewOperation.current?.setLoading(false);\n setLoading(false);\n\n viewOperation.current?.setImgNode(imgNode);\n })\n .catch(() => {\n viewOperation.current?.setLoading(false);\n setLoading(false);\n });\n }\n }, [src]);\n\n /**\n * 基础数据绘制监听\n */\n useEffect(() => {\n if (viewOperation.current) {\n viewOperation.current.updateData(annotations);\n }\n }, [annotations]);\n\n /** 窗口大小监听 */\n useEffect(() => {\n const toolInstance = viewOperation.current;\n\n if (toolInstance?.setSize) {\n toolInstance.setSize(size);\n toolInstance.initPosition();\n }\n }, [props.size?.width, props.size?.height]);\n\n useEffect(() => {\n if (viewOperation.current) {\n viewOperation.current?.on('onChange', (...args: any) => {\n onChange?.apply(null, args);\n });\n\n viewOperation.current?.on('renderZoom', (zoom: number) => {\n if (zoomChange) {\n zoomChange(zoom);\n }\n });\n }\n return () => {\n viewOperation.current?.unbindAll('onChange');\n viewOperation.current?.unbindAll('renderZoom');\n };\n }, [zoomChange, onChange]);\n\n const mainRender = (\n <div ref={annotationRef} style={{ position: 'relative', ...size, ...backgroundStyle }} />\n );\n\n return (\n <Spin spinning={showLoading || loading} delay={300} style={globalStyle}>\n {mainRender}\n </Spin>\n );\n\n // return mainRender;\n};\n\nexport default React.forwardRef(AnnotationView);\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AA6BA,MAAM,YAAe,GAAA;AAAA,EACnB,KAAO,EAAA,GAAA;AAAA,EACP,MAAQ,EAAA,GAAA;AAAA,CAAA,CAAA;AAGV,MAAM,eAAA,GAAkB,CAAC,IAA+C,KAAA;AACtE,EAAA,IAAI,CAAC,IAAM,EAAA;AACT,IAAO,OAAA,YAAA,CAAA;AAAA,GAAA;AAET,EAAI,IAAA,IAAA,CAAK,KAAS,IAAA,IAAA,CAAK,MAAQ,EAAA;AAC7B,IAAO,OAAA,IAAA,CAAA;AAAA,GAAA;AAGT,EAAA,MAAM,UAAU,cACX,CAAA,EAAA,EAAA,IAAA,CAAA,CAAA;AAGL,EAAI,IAAA,CAAC,QAAQ,KAAO,EAAA;AAClB,IAAA,OAAA,CAAQ,QAAQ,YAAa,CAAA,KAAA,CAAA;AAAA,GAAA;AAG/B,EAAI,IAAA,CAAC,QAAQ,MAAQ,EAAA;AACnB,IAAA,OAAA,CAAQ,SAAS,YAAa,CAAA,MAAA,CAAA;AAAA,GAAA;AAGhC,EAAO,OAAA,OAAA,CAAA;AAAA,CAAA,CAAA;AAGT,MAAM,cAAA,GAAiB,CAAC,KAAA,EAAe,GAAa,KAAA;AAzDpD,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AA0DE,EAAM,MAAA;AAAA,IACJ,GAAA;AAAA,IACA,WAAc,GAAA,EAAA;AAAA,IACd,KAAQ,GAAA;AAAA,MACN,MAAQ,EAAA,MAAA;AAAA,MACR,SAAW,EAAA,CAAA;AAAA,KAAA;AAAA,IAEb,UAAA;AAAA,IACA,eAAkB,GAAA,EAAA;AAAA,IAClB,QAAA;AAAA,IACA,WAAc,GAAA,KAAA;AAAA,IACd,WAAA;AAAA,GACE,GAAA,KAAA,CAAA;AACJ,EAAM,MAAA,IAAA,GAAO,gBAAgB,KAAM,CAAA,IAAA,CAAA,CAAA;AACnC,EAAM,MAAA,CAAC,OAAS,EAAA,UAAA,CAAA,GAAc,QAAS,CAAA,KAAA,CAAA,CAAA;AACvC,EAAA,MAAM,gBAAgB,MAAuB,CAAA,IAAA,CAAA,CAAA;AAC7C,EAAA,MAAM,aAAgB,GAAA,MAAA,EAAA,CAAA;AAEtB,EAAA,mBAAA,CACE,KACA,MAAM;AACJ,IAAA,MAAM,eAAe,aAAc,CAAA,OAAA,CAAA;AACnC,IAAA,IAAI,CAAC,YAAc,EAAA;AACjB,MAAO,OAAA,EAAA,CAAA;AAAA,KAAA;AAGT,IAAO,OAAA;AAAA,MACL,MAAA,EAAQ,MAAM,YAAA,CAAa,WAAY,CAAA,IAAA,CAAA;AAAA,MACvC,OAAA,EAAS,MAAM,YAAA,CAAa,WAAY,CAAA,KAAA,CAAA;AAAA,MACxC,UAAA,EAAY,MAAM,YAAa,CAAA,UAAA,EAAA;AAAA,MAC/B,YAAA;AAAA,KAAA,CAAA;AAAA,GAAA,EAGJ,CAAC,aAAc,CAAA,OAAA,CAAA,CAAA,CAAA;AAGjB,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,cAAc,OAAS,EAAA;AACzB,MAAc,aAAA,CAAA,OAAA,GAAU,IAAI,aAAc,CAAA;AAAA,QACxC,WAAW,aAAc,CAAA,OAAA;AAAA,QACzB,IAAA;AAAA,QACA,KAAA;AAAA,QACA,WAAA;AAAA,QACA,MAAQ,EAAA,IAAA;AAAA,OAAA,CAAA,CAAA;AAGV,MAAA,aAAA,CAAc,OAAQ,CAAA,IAAA,EAAA,CAAA;AAAA,KAAA;AAGxB,IAAA,OAAO,MAAM;AA3GjB,MAAA,IAAA,GAAA,CAAA;AA4GM,MAAA,CAAA,GAAA,GAAA,aAAA,CAAc,YAAd,IAAuB,GAAA,KAAA,CAAA,GAAA,GAAA,CAAA,OAAA,EAAA,CAAA;AAAA,KAAA,CAAA;AAAA,GAExB,EAAA,EAAA,CAAA,CAAA;AAEH,EAAA,SAAA,CAAU,MAAM;AAhHlB,IAAA,IAAA,GAAA,CAAA;AAiHI,IAAA,IAAI,cAAc,OAAS,EAAA;AACzB,MAAW,UAAA,CAAA,IAAA,CAAA,CAAA;AACX,MAAc,CAAA,GAAA,GAAA,aAAA,CAAA,OAAA,KAAd,oBAAuB,UAAW,CAAA,IAAA,CAAA,CAAA;AAClC,MAAA,QAAA,CAAS,IAAK,CAAA,GAAA,CAAA,CACX,IAAK,CAAA,CAAC,OAA8B,KAAA;AArH7C,QAAA,IAAA,GAAA,EAAA,GAAA,CAAA;AAsHU,QAAc,CAAA,GAAA,GAAA,aAAA,CAAA,OAAA,KAAd,oBAAuB,UAAW,CAAA,KAAA,CAAA,CAAA;AAClC,QAAW,UAAA,CAAA,KAAA,CAAA,CAAA;AAEX,QAAc,CAAA,GAAA,GAAA,aAAA,CAAA,OAAA,KAAd,oBAAuB,UAAW,CAAA,OAAA,CAAA,CAAA;AAAA,OAAA,CAAA,CAEnC,MAAM,MAAM;AA3HrB,QAAA,IAAA,GAAA,CAAA;AA4HU,QAAc,CAAA,GAAA,GAAA,aAAA,CAAA,OAAA,KAAd,oBAAuB,UAAW,CAAA,KAAA,CAAA,CAAA;AAClC,QAAW,UAAA,CAAA,KAAA,CAAA,CAAA;AAAA,OAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,EAGhB,CAAC,GAAA,CAAA,CAAA,CAAA;AAKJ,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,cAAc,OAAS,EAAA;AACzB,MAAA,aAAA,CAAc,QAAQ,UAAW,CAAA,WAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,EAElC,CAAC,WAAA,CAAA,CAAA,CAAA;AAGJ,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,eAAe,aAAc,CAAA,OAAA,CAAA;AAEnC,IAAA,IAAI,6CAAc,OAAS,EAAA;AACzB,MAAA,YAAA,CAAa,OAAQ,CAAA,IAAA,CAAA,CAAA;AACrB,MAAa,YAAA,CAAA,YAAA,EAAA,CAAA;AAAA,KAAA;AAAA,GAAA,EAEd,CAAC,CAAM,EAAA,GAAA,KAAA,CAAA,IAAA,KAAN,mBAAY,KAAO,EAAA,CAAA,EAAA,GAAA,KAAA,CAAM,SAAN,IAAY,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA;AAEnC,EAAA,SAAA,CAAU,MAAM;AArJlB,IAAA,IAAA,GAAA,EAAA,GAAA,CAAA;AAsJI,IAAA,IAAI,cAAc,OAAS,EAAA;AACzB,MAAA,CAAA,GAAA,GAAA,aAAA,CAAc,OAAd,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAuB,EAAG,CAAA,UAAA,EAAY,IAAI,IAAc,KAAA;AACtD,QAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAU,MAAM,IAAM,EAAA,IAAA,CAAA,CAAA;AAAA,OAAA,CAAA,CAAA;AAGxB,MAAA,CAAA,GAAA,GAAA,aAAA,CAAc,OAAd,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAuB,EAAG,CAAA,YAAA,EAAc,CAAC,IAAiB,KAAA;AACxD,QAAA,IAAI,UAAY,EAAA;AACd,UAAW,UAAA,CAAA,IAAA,CAAA,CAAA;AAAA,SAAA;AAAA,OAAA,CAAA,CAAA;AAAA,KAAA;AAIjB,IAAA,OAAO,MAAM;AAjKjB,MAAA,IAAA,GAAA,EAAA,GAAA,CAAA;AAkKM,MAAc,CAAA,GAAA,GAAA,aAAA,CAAA,OAAA,KAAd,oBAAuB,SAAU,CAAA,UAAA,CAAA,CAAA;AACjC,MAAc,CAAA,GAAA,GAAA,aAAA,CAAA,OAAA,KAAd,oBAAuB,SAAU,CAAA,YAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAAA,GAAA,EAElC,CAAC,UAAY,EAAA,QAAA,CAAA,CAAA,CAAA;AAEhB,EAAM,MAAA,UAAA,uCACH,KAAD,EAAA;AAAA,IAAK,GAAK,EAAA,aAAA;AAAA,IAAe,KAAO,EAAA,cAAA,CAAA,cAAA,CAAA,CAAE,QAAU,EAAA,UAAA,CAAA,EAAe,IAAS,CAAA,EAAA,eAAA,CAAA;AAAA,GAAA,CAAA,CAAA;AAGtE,EAAA,2CACG,IAAD,EAAA;AAAA,IAAM,UAAU,WAAe,IAAA,OAAA;AAAA,IAAS,KAAO,EAAA,GAAA;AAAA,IAAK,KAAO,EAAA,WAAA;AAAA,GACxD,EAAA,UAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAOP,uBAAe,MAAM,UAAW,CAAA,cAAA,CAAA;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/AnnotationView/index.tsx"],"sourcesContent":["/**\n * 用于标注查看模式\n * @author laoluo\n */\n\nimport React, { useEffect, useRef, useImperativeHandle, useState } from 'react';\nimport { ViewOperation, ImgUtils } from '@labelbee/lb-annotation';\nimport { Spin } from 'antd/es';\nimport useRefCache from '@/hooks/useRefCache';\n\ntype TAfterImgOnLoad = (img: HTMLImageElement) => void;\n\ninterface IProps {\n src: string; // 图片路径\n size?: {\n width?: number;\n height?: number;\n };\n style?: {\n color?: string;\n fill?: string;\n thickness?: number;\n };\n annotations: any[]; // TODO\n zoomChange?: (zoom: number) => void;\n backgroundStyle?: React.CSSProperties;\n onChange?: (type: 'hover' | 'selected', ids: string[]) => void;\n\n showLoading?: boolean;\n globalStyle?: React.CSSProperties; // Custom global style.\n\n afterImgOnLoad?: TAfterImgOnLoad;\n}\n\nconst DEFAULT_SIZE = {\n width: 500,\n height: 100, // Most Important, If the outer size is smaller than this will not take effect by default\n};\n\nconst sizeInitialized = (size?: { width?: number; height?: number }) => {\n if (!size) {\n return DEFAULT_SIZE;\n }\n if (size.width && size.height) {\n return size;\n }\n\n const newSize = {\n ...size,\n };\n\n if (!newSize.width) {\n newSize.width = DEFAULT_SIZE.width;\n }\n\n if (!newSize.height) {\n newSize.height = DEFAULT_SIZE.height;\n }\n\n return newSize;\n};\n\nconst AnnotationView = (props: IProps, ref: any) => {\n const {\n src,\n annotations = [],\n style = {\n stroke: 'blue',\n thickness: 3,\n },\n zoomChange,\n backgroundStyle = {},\n onChange,\n showLoading = false,\n globalStyle,\n afterImgOnLoad,\n } = props;\n const size = sizeInitialized(props.size);\n const [loading, setLoading] = useState(false);\n const annotationRef = useRef<HTMLDivElement>(null);\n const viewOperation = useRef<ViewOperation>();\n const afterImgOnLoadRef = useRefCache<TAfterImgOnLoad | undefined>(afterImgOnLoad);\n\n useImperativeHandle(\n ref,\n () => {\n const toolInstance = viewOperation.current;\n if (!toolInstance) {\n return {};\n }\n\n return {\n zoomIn: () => toolInstance.zoomChanged(true), // 放大\n zoomOut: () => toolInstance.zoomChanged(false), // 缩小\n initImgPos: () => toolInstance.initImgPos(),\n toolInstance,\n };\n },\n [viewOperation.current],\n );\n\n useEffect(() => {\n if (annotationRef.current) {\n viewOperation.current = new ViewOperation({\n container: annotationRef.current,\n size,\n style,\n annotations,\n config: '{}', // TODO,暂时不需要\n });\n\n viewOperation.current.init();\n }\n\n return () => {\n viewOperation.current?.destroy();\n };\n }, []);\n\n useEffect(() => {\n if (viewOperation.current) {\n setLoading(true);\n viewOperation.current?.setLoading(true);\n ImgUtils.load(src)\n .then((imgNode: HTMLImageElement) => {\n viewOperation.current?.setLoading(false);\n setLoading(false);\n\n viewOperation.current?.setImgNode(imgNode);\n\n if (afterImgOnLoadRef.current) {\n afterImgOnLoadRef.current(imgNode);\n }\n })\n .catch(() => {\n viewOperation.current?.setLoading(false);\n setLoading(false);\n });\n }\n }, [src]);\n\n /**\n * 基础数据绘制监听\n */\n useEffect(() => {\n if (viewOperation.current) {\n viewOperation.current.updateData(annotations);\n }\n }, [annotations]);\n\n /** 窗口大小监听 */\n useEffect(() => {\n const toolInstance = viewOperation.current;\n\n if (toolInstance?.setSize) {\n toolInstance.setSize(size);\n toolInstance.initPosition();\n }\n }, [props.size?.width, props.size?.height]);\n\n useEffect(() => {\n if (viewOperation.current) {\n viewOperation.current?.on('onChange', (...args: any) => {\n onChange?.apply(null, args);\n });\n\n viewOperation.current?.on('renderZoom', (zoom: number) => {\n if (zoomChange) {\n zoomChange(zoom);\n }\n });\n }\n return () => {\n viewOperation.current?.unbindAll('onChange');\n viewOperation.current?.unbindAll('renderZoom');\n };\n }, [zoomChange, onChange]);\n\n const mainRender = (\n <div ref={annotationRef} style={{ position: 'relative', ...size, ...backgroundStyle }} />\n );\n\n return (\n <Spin spinning={showLoading || loading} delay={300} style={globalStyle}>\n {mainRender}\n </Spin>\n );\n\n // return mainRender;\n};\n\nexport default React.forwardRef(AnnotationView);\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- import{getClassName as h}from"../../utils/dom.js";import i,{useState as E,useContext as N,useRef as b,useEffect as _}from"react";import{PointCloudContainer as A}from"./PointCloudLayout.js";import I from"../AnnotationView/index.js";import{PointCloudContext as R}from"./PointCloudContext.js";import{connect as k}from"react-redux";import{LeftOutlined as z,RightOutlined as T}from"@ant-design/icons";import M from"../../hooks/useSize.js";import{useSingleBox as $}from"./hooks/useSingleBox.js";import{useTranslation as q}from"react-i18next";import{LabelBeeContext as F}from"../../store/ctx.js";var G=Object.defineProperty,O=Object.getOwnPropertySymbols,H=Object.prototype.hasOwnProperty,J=Object.prototype.propertyIsEnumerable,S=(t,n,e)=>n in t?G(t,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[n]=e,K=(t,n)=>{for(var e in n||(n={}))H.call(n,e)&&S(t,e,n[e]);if(O)for(var e of O(n))J.call(n,e)&&S(t,e,n[e]);return t};const Q=({onNext:t,onPrev:n,imgLength:e,imgIndex:s})=>i.createElement("div",null,i.createElement(z,{onClick:n}),i.createElement("span",null," ",s+1," / ",e," "),i.createElement(T,{onClick:t})),U=({imgInfo:t})=>{var n,e,s,x,L;const[p,j]=E([]),{pointCloudBoxList:P,topViewInstance:C}=N(R),[u,m]=E(0),w=b(null),v=b(),{selectedBox:f}=$(),V=M(w),{t:D}=q(),a=(n=t==null?void 0:t.mappingImgList)==null?void 0:n[u];_(()=>{m(0)},[t]),_(()=>{if(C&&a){const{pointCloudInstance:o}=C,r={fill:"transparent",color:"green"},c=P.reduce((l,d)=>{const B=o.pointCloudLidar2image(d,a.calib);return[...l,...B.map(y=>({type:y.type,annotation:K({id:d.id,pointList:y.pointList},r)}))]},[]);j(c)}},[P,a]);const g=!t||!(t==null?void 0:t.mappingImgList)||!(((e=t==null?void 0:t.mappingImgList)==null?void 0:e.length)>0);return _(()=>{var o,r;const c=(o=v.current)==null?void 0:o.toolInstance;if(!f||!c)return;const l=p.find(d=>d.annotation.id===f.info.id);((r=l==null?void 0:l.annotation.pointList)==null?void 0:r.length)>0&&c.focusPositionByPointList(l==null?void 0:l.annotation.pointList)},[f,v.current,p]),i.createElement(A,{className:h("point-cloud-2d-container"),title:D("2DView"),toolbar:g?void 0:i.createElement(Q,{imgIndex:u,imgLength:(x=(s=t.mappingImgList)==null?void 0:s.length)!=null?x:0,onNext:()=>{var o;!t||!(t==null?void 0:t.mappingImgList)||u>=((o=t==null?void 0:t.mappingImgList)==null?void 0:o.length)-1||m(r=>r+1)},onPrev:()=>{u<=0||m(o=>o-1)}}),style:{display:g?"none":"flex"}},i.createElement("div",{className:h("point-cloud-2d-image"),ref:w},i.createElement(I,{src:(L=a==null?void 0:a.url)!=null?L:"",annotations:p,size:V,ref:v,globalStyle:{display:g?"none":"block"}})))},W=t=>{const{imgList:n,imgIndex:e}=t.annotation;return{imgInfo:n[e]}};var X=k(W,null,null,{context:F})(U);export{X as default};
1
+ import{getClassName as h}from"../../utils/dom.js";import i,{useState as E,useContext as N,useRef as O,useEffect as _,useCallback as k}from"react";import{PointCloudContainer as A}from"./PointCloudLayout.js";import R from"../AnnotationView/index.js";import{PointCloudContext as z}from"./PointCloudContext.js";import{connect as T}from"react-redux";import{LeftOutlined as M,RightOutlined as $}from"@ant-design/icons";import q from"../../hooks/useSize.js";import{useSingleBox as F}from"./hooks/useSingleBox.js";import{useTranslation as G}from"react-i18next";import{LabelBeeContext as H}from"../../store/ctx.js";var J=Object.defineProperty,S=Object.getOwnPropertySymbols,K=Object.prototype.hasOwnProperty,Q=Object.prototype.propertyIsEnumerable,j=(t,n,e)=>n in t?J(t,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[n]=e,U=(t,n)=>{for(var e in n||(n={}))K.call(n,e)&&j(t,e,n[e]);if(S)for(var e of S(n))Q.call(n,e)&&j(t,e,n[e]);return t};const W=({onNext:t,onPrev:n,imgLength:e,imgIndex:u})=>i.createElement("div",null,i.createElement(M,{onClick:n}),i.createElement("span",null," ",u+1," / ",e," "),i.createElement($,{onClick:t})),X=({imgInfo:t})=>{var n,e,u,x,P;const[p,V]=E([]),{pointCloudBoxList:C,topViewInstance:w}=N(z),[a,m]=E(0),y=O(null),f=O(),{selectedBox:v}=F(),D=q(y),{t:B}=G(),s=(n=t==null?void 0:t.mappingImgList)==null?void 0:n[a];_(()=>{m(0)},[t]),_(()=>{if(w&&s){const{pointCloudInstance:o}=w,r={fill:"transparent",color:"green"},c=C.reduce((l,d)=>{const I=o.pointCloudLidar2image(d,s.calib);return[...l,...I.map(b=>({type:b.type,annotation:U({id:d.id,pointList:b.pointList},r)}))]},[]);V(c)}},[C,s]);const g=!t||!(t==null?void 0:t.mappingImgList)||!(((e=t==null?void 0:t.mappingImgList)==null?void 0:e.length)>0),L=k(()=>{var o,r;const c=(o=f.current)==null?void 0:o.toolInstance;if(!v||!c)return;const l=p.find(d=>d.annotation.id===v.info.id);((r=l==null?void 0:l.annotation.pointList)==null?void 0:r.length)>0&&c.focusPositionByPointList(l==null?void 0:l.annotation.pointList)},[v,f.current,p,a]);return _(()=>{L()},[L]),i.createElement(A,{className:h("point-cloud-2d-container"),title:B("2DView"),toolbar:g?void 0:i.createElement(W,{imgIndex:a,imgLength:(x=(u=t.mappingImgList)==null?void 0:u.length)!=null?x:0,onNext:()=>{var o;!t||!(t==null?void 0:t.mappingImgList)||a>=((o=t==null?void 0:t.mappingImgList)==null?void 0:o.length)-1||m(r=>r+1)},onPrev:()=>{a<=0||m(o=>o-1)}}),style:{display:g?"none":"flex"}},i.createElement("div",{className:h("point-cloud-2d-image"),ref:y},i.createElement(R,{src:(P=s==null?void 0:s.url)!=null?P:"",annotations:p,size:D,ref:f,globalStyle:{display:g?"none":"block"},afterImgOnLoad:L})))},Y=t=>{const{imgList:n,imgIndex:e}=t.annotation;return{imgInfo:n[e]}};var Z=T(Y,null,null,{context:H})(X);export{Z as default};
@@ -1 +1 @@
1
- {"version":3,"file":"PointCloud2DView.js","sources":["../../../src/components/pointCloudView/PointCloud2DView.tsx"],"sourcesContent":["import { getClassName } from '@/utils/dom';\nimport React, { useContext, useEffect, useRef, useState } from 'react';\nimport { PointCloudContainer } from './PointCloudLayout';\nimport AnnotationView from '@/components/AnnotationView';\nimport { PointCloudContext } from './PointCloudContext';\nimport { AppState } from '@/store';\nimport { connect } from 'react-redux';\nimport { IFileItem } from '@/types/data';\nimport { LeftOutlined, RightOutlined } from '@ant-design/icons';\nimport useSize from '@/hooks/useSize';\nimport { useSingleBox } from './hooks/useSingleBox';\nimport { ViewOperation } from '@labelbee/lb-annotation';\nimport { useTranslation } from 'react-i18next';\nimport { LabelBeeContext } from '@/store/ctx';\n\ninterface IProps {\n imgInfo: IFileItem;\n}\n\nconst Toolbar = ({\n onNext,\n onPrev,\n imgLength,\n imgIndex,\n}: {\n onNext: () => void;\n onPrev: () => void;\n imgLength: number;\n imgIndex: number;\n}) => {\n return (\n <div>\n <LeftOutlined onClick={onPrev} />\n <span>\n {' '}\n {imgIndex + 1} / {imgLength}{' '}\n </span>\n\n <RightOutlined onClick={onNext} />\n </div>\n );\n};\n\n// TODO, It will be deleted when the exported type of lb-annotation is work.\ninterface IAnnotationDataTemporarily {\n type: string;\n annotation: any;\n}\n\nconst PointCloud2DView = ({ imgInfo }: IProps) => {\n const [annotations2d, setAnnotations2d] = useState<IAnnotationDataTemporarily[]>([]);\n const { pointCloudBoxList, topViewInstance } = useContext(PointCloudContext);\n const [mappingIndex, setMappingIndex] = useState(0);\n const ref = useRef(null);\n const viewRef = useRef<{ toolInstance: ViewOperation }>();\n const { selectedBox } = useSingleBox();\n const size = useSize(ref);\n const { t } = useTranslation();\n\n const mappingData = imgInfo?.mappingImgList?.[mappingIndex];\n\n useEffect(() => {\n setMappingIndex(0);\n }, [imgInfo]);\n\n useEffect(() => {\n if (topViewInstance && mappingData) {\n const { pointCloudInstance } = topViewInstance;\n const defaultViewStyle = {\n fill: 'transparent',\n color: 'green',\n };\n const newAnnotations2d: IAnnotationDataTemporarily[] = pointCloudBoxList.reduce(\n (acc: IAnnotationDataTemporarily[], pointCloudBox) => {\n const viewDataPointList = pointCloudInstance.pointCloudLidar2image(\n pointCloudBox,\n mappingData.calib,\n );\n return [\n ...acc,\n ...viewDataPointList.map((v: any) => {\n return {\n type: v.type,\n annotation: {\n id: pointCloudBox.id,\n pointList: v.pointList,\n ...defaultViewStyle,\n },\n };\n }),\n ];\n },\n [],\n );\n\n setAnnotations2d(newAnnotations2d);\n }\n }, [pointCloudBoxList, mappingData]);\n\n const hiddenData = !imgInfo || !imgInfo?.mappingImgList || !(imgInfo?.mappingImgList?.length > 0);\n\n useEffect(() => {\n const toolInstance = viewRef.current?.toolInstance;\n\n if (!selectedBox || !toolInstance) {\n return;\n }\n const selected2data = annotations2d.find((v) => v.annotation.id === selectedBox.info.id);\n\n if (selected2data?.annotation.pointList?.length > 0) {\n toolInstance.focusPositionByPointList(selected2data?.annotation.pointList);\n }\n }, [selectedBox, viewRef.current, annotations2d]);\n\n return (\n <PointCloudContainer\n className={getClassName('point-cloud-2d-container')}\n title={t('2DView')}\n toolbar={\n hiddenData ? undefined : (\n <Toolbar\n imgIndex={mappingIndex}\n imgLength={imgInfo.mappingImgList?.length ?? 0}\n onNext={() => {\n if (!imgInfo || !imgInfo?.mappingImgList) {\n return;\n }\n\n if (mappingIndex >= imgInfo?.mappingImgList?.length - 1) {\n return;\n }\n setMappingIndex((v) => v + 1);\n }}\n onPrev={() => {\n if (mappingIndex <= 0) {\n return;\n }\n setMappingIndex((v) => v - 1);\n }}\n />\n )\n }\n style={{ display: hiddenData ? 'none' : 'flex' }}\n >\n <div className={getClassName('point-cloud-2d-image')} ref={ref}>\n <AnnotationView\n src={mappingData?.url ?? ''}\n annotations={annotations2d}\n size={size}\n ref={viewRef}\n globalStyle={{ display: hiddenData ? 'none' : 'block' }}\n />\n </div>\n </PointCloudContainer>\n );\n};\n\nconst mapStateToProps = (state: AppState) => {\n const { imgList, imgIndex } = state.annotation;\n\n return {\n imgInfo: imgList[imgIndex],\n };\n};\n\nexport default connect(mapStateToProps, null, null, { context: LabelBeeContext })(PointCloud2DView);\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PointCloud2DView.js","sources":["../../../src/components/pointCloudView/PointCloud2DView.tsx"],"sourcesContent":["import { getClassName } from '@/utils/dom';\nimport React, { useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport { PointCloudContainer } from './PointCloudLayout';\nimport AnnotationView from '@/components/AnnotationView';\nimport { PointCloudContext } from './PointCloudContext';\nimport { AppState } from '@/store';\nimport { connect } from 'react-redux';\nimport { IFileItem } from '@/types/data';\nimport { LeftOutlined, RightOutlined } from '@ant-design/icons';\nimport useSize from '@/hooks/useSize';\nimport { useSingleBox } from './hooks/useSingleBox';\nimport { ViewOperation } from '@labelbee/lb-annotation';\nimport { useTranslation } from 'react-i18next';\nimport { LabelBeeContext } from '@/store/ctx';\n\ninterface IProps {\n imgInfo: IFileItem;\n}\n\nconst Toolbar = ({\n onNext,\n onPrev,\n imgLength,\n imgIndex,\n}: {\n onNext: () => void;\n onPrev: () => void;\n imgLength: number;\n imgIndex: number;\n}) => {\n return (\n <div>\n <LeftOutlined onClick={onPrev} />\n <span>\n {' '}\n {imgIndex + 1} / {imgLength}{' '}\n </span>\n\n <RightOutlined onClick={onNext} />\n </div>\n );\n};\n\n// TODO, It will be deleted when the exported type of lb-annotation is work.\ninterface IAnnotationDataTemporarily {\n type: string;\n annotation: any;\n}\n\nconst PointCloud2DView = ({ imgInfo }: IProps) => {\n const [annotations2d, setAnnotations2d] = useState<IAnnotationDataTemporarily[]>([]);\n const { pointCloudBoxList, topViewInstance } = useContext(PointCloudContext);\n const [mappingIndex, setMappingIndex] = useState(0);\n const ref = useRef(null);\n const viewRef = useRef<{ toolInstance: ViewOperation }>();\n const { selectedBox } = useSingleBox();\n const size = useSize(ref);\n const { t } = useTranslation();\n\n const mappingData = imgInfo?.mappingImgList?.[mappingIndex];\n\n useEffect(() => {\n setMappingIndex(0);\n }, [imgInfo]);\n\n useEffect(() => {\n if (topViewInstance && mappingData) {\n const { pointCloudInstance } = topViewInstance;\n const defaultViewStyle = {\n fill: 'transparent',\n color: 'green',\n };\n const newAnnotations2d: IAnnotationDataTemporarily[] = pointCloudBoxList.reduce(\n (acc: IAnnotationDataTemporarily[], pointCloudBox) => {\n const viewDataPointList = pointCloudInstance.pointCloudLidar2image(\n pointCloudBox,\n mappingData.calib,\n );\n return [\n ...acc,\n ...viewDataPointList.map((v: any) => {\n return {\n type: v.type,\n annotation: {\n id: pointCloudBox.id,\n pointList: v.pointList,\n ...defaultViewStyle,\n },\n };\n }),\n ];\n },\n [],\n );\n\n setAnnotations2d(newAnnotations2d);\n }\n }, [pointCloudBoxList, mappingData]);\n\n const hiddenData = !imgInfo || !imgInfo?.mappingImgList || !(imgInfo?.mappingImgList?.length > 0);\n\n const afterImgOnLoad = useCallback(() => {\n const toolInstance = viewRef.current?.toolInstance;\n\n if (!selectedBox || !toolInstance) {\n return;\n }\n const selected2data = annotations2d.find((v) => v.annotation.id === selectedBox.info.id);\n\n if (selected2data?.annotation.pointList?.length > 0) {\n toolInstance.focusPositionByPointList(selected2data?.annotation.pointList);\n }\n }, [selectedBox, viewRef.current, annotations2d, mappingIndex]);\n\n /**\n * If the status is updated, it needs to\n */\n useEffect(() => {\n afterImgOnLoad();\n }, [afterImgOnLoad]);\n\n return (\n <PointCloudContainer\n className={getClassName('point-cloud-2d-container')}\n title={t('2DView')}\n toolbar={\n hiddenData ? undefined : (\n <Toolbar\n imgIndex={mappingIndex}\n imgLength={imgInfo.mappingImgList?.length ?? 0}\n onNext={() => {\n if (!imgInfo || !imgInfo?.mappingImgList) {\n return;\n }\n\n if (mappingIndex >= imgInfo?.mappingImgList?.length - 1) {\n return;\n }\n setMappingIndex((v) => v + 1);\n }}\n onPrev={() => {\n if (mappingIndex <= 0) {\n return;\n }\n setMappingIndex((v) => v - 1);\n }}\n />\n )\n }\n style={{ display: hiddenData ? 'none' : 'flex' }}\n >\n <div className={getClassName('point-cloud-2d-image')} ref={ref}>\n <AnnotationView\n src={mappingData?.url ?? ''}\n annotations={annotations2d}\n size={size}\n ref={viewRef}\n globalStyle={{ display: hiddenData ? 'none' : 'block' }}\n afterImgOnLoad={afterImgOnLoad}\n />\n </div>\n </PointCloudContainer>\n );\n};\n\nconst mapStateToProps = (state: AppState) => {\n const { imgList, imgIndex } = state.annotation;\n\n return {\n imgInfo: imgList[imgIndex],\n };\n};\n\nexport default connect(mapStateToProps, null, null, { context: LabelBeeContext })(PointCloud2DView);\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PointCloudListener.js","sources":["../../../src/components/pointCloudView/PointCloudListener.tsx"],"sourcesContent":["import { PointCloudContext } from './PointCloudContext';\nimport { useRotate } from './hooks/useRotate';\nimport { useBoxes } from './hooks/useBoxes';\nimport { useSingleBox } from './hooks/useSingleBox';\nimport React, { useContext, useEffect } from 'react';\nimport { cTool } from '@labelbee/lb-annotation';\nimport { message } from 'antd';\nimport { connect } from 'react-redux';\nimport { aMapStateToProps, IAnnotationStateProps } from '@/store/annotation/map';\nimport { useCustomToolInstance } from '@/hooks/annotation';\nimport { useStatus } from './hooks/useStatus';\nimport { jsonParser } from '@/utils';\nimport { usePointCloudViews } from './hooks/usePointCloudViews';\nimport { LabelBeeContext } from '@/store/ctx';\n\nconst { EPolygonPattern } = cTool;\n\nconst PointCloudListener: React.FC<IAnnotationStateProps> = ({ currentData }) => {\n const ptCtx = useContext(PointCloudContext);\n const { changeSelectedBoxValid, selectNextBox, selectPrevBox, updateSelectedBox } =\n useSingleBox();\n const { clearAllResult } = useStatus();\n const basicInfo = jsonParser(currentData.result);\n const { copySelectedBoxes, pasteSelectedBoxes, copiedBoxes } = useBoxes();\n const { toolInstanceRef } = useCustomToolInstance({ basicInfo });\n const { updateRotate } = useRotate({ currentData });\n const { updatePointCloudData } = usePointCloudViews();\n\n const keydownEvents = (lowerCaseKey: string, e: KeyboardEvent) => {\n const { topViewInstance, mainViewInstance } = ptCtx;\n if (!topViewInstance) {\n return;\n }\n\n const { pointCloud2dOperation: TopPointCloudPolygonOperation } = topViewInstance;\n\n switch (lowerCaseKey) {\n case 'q': {\n // Q - anticlockwise\n updateRotate(2);\n break;\n }\n\n case 'e':\n // E - closewise\n updateRotate(-2);\n\n break;\n\n case 'g':\n // G , overturn 180\n updateRotate(180);\n\n break;\n\n case 'u':\n {\n // U , change TopOpereation Pattern\n const newPattern =\n TopPointCloudPolygonOperation.pattern === EPolygonPattern.Normal\n ? EPolygonPattern.Rect\n : EPolygonPattern.Normal;\n TopPointCloudPolygonOperation.setPattern(newPattern);\n const POLYGON_PATTERN = {\n [EPolygonPattern.Normal]: 'Normal Pattern',\n [EPolygonPattern.Rect]: 'Rect Pattern',\n };\n message.success(`Change Pattern to ${POLYGON_PATTERN[newPattern]} successfully`);\n\n // Clear Status\n TopPointCloudPolygonOperation.clearActiveStatus();\n TopPointCloudPolygonOperation.clearDrawingStatus();\n }\n\n break;\n\n // +: Increase points size\n case '+':\n mainViewInstance?.updatePointSize(true);\n break;\n\n // -: Reduce points size\n case '-':\n mainViewInstance?.updatePointSize(false);\n break;\n\n case 'v':\n ptCtx.setPointCloudValid(!ptCtx.valid);\n break;\n\n case 'tab':\n if (e.shiftKey) {\n selectPrevBox();\n break;\n }\n selectNextBox();\n break;\n\n case 'f':\n changeSelectedBoxValid();\n break;\n\n default: {\n return;\n }\n }\n };\n\n const ctrlKeydownEvents = (lowerCaseKey: string) => {\n switch (lowerCaseKey) {\n case 'c':\n copySelectedBoxes();\n break;\n case 'v':\n pasteSelectedBoxes();\n break;\n case 'a':\n ptCtx.selectedAllBoxes();\n break;\n default:\n break;\n }\n };\n\n const onKeyDown = (e: KeyboardEvent) => {\n const lowerCaseKey = e.key.toLocaleLowerCase();\n\n if (e.ctrlKey) {\n ctrlKeydownEvents(lowerCaseKey);\n return;\n }\n\n keydownEvents(lowerCaseKey, e);\n };\n\n useEffect(() => {\n const { topViewInstance } = ptCtx;\n if (!topViewInstance) {\n return;\n }\n\n window.addEventListener('keydown', onKeyDown);\n\n return () => {\n window.removeEventListener('keydown', onKeyDown);\n };\n }, [ptCtx, copiedBoxes]);\n\n // Page switch data initialization\n useEffect(() => {\n updatePointCloudData?.();\n }, [currentData, ptCtx.mainViewInstance]);\n\n useEffect(() => {\n toolInstanceRef.current.exportData = () => {\n return [ptCtx.pointCloudBoxList, { valid: ptCtx.valid }];\n };\n\n toolInstanceRef.current.exportCustomData = () => {\n return {\n renderPolygon: ptCtx.polygonList ?? [],\n };\n };\n\n toolInstanceRef.current.setDefaultAttribute = (newAttribute: string) => {\n const selectBox = ptCtx.selectedPointCloudBox;\n if (selectBox) {\n selectBox.attribute = newAttribute;\n\n updateSelectedBox(selectBox);\n }\n };\n\n toolInstanceRef.current.setSubAttribute = (key: string, value: string) => {\n const selectBox = ptCtx.selectedPointCloudBox;\n if (selectBox) {\n const originSubAttribute = selectBox?.subAttribute ?? {};\n\n selectBox.subAttribute = {\n ...originSubAttribute,\n [key]: value,\n };\n\n updateSelectedBox(selectBox);\n }\n };\n toolInstanceRef.current.clearResult = () => {\n clearAllResult?.();\n };\n }, [ptCtx.pointCloudBoxList, ptCtx.selectedID, ptCtx.valid, ptCtx.polygonList]);\n\n useEffect(() => {\n toolInstanceRef.current.setValid = (valid: boolean) => {\n toolInstanceRef.current.valid = valid;\n\n // Avoid triggering SetState operations in the reducer phase\n setTimeout(() => {\n ptCtx.setPointCloudValid(valid);\n });\n };\n }, []);\n\n return null;\n};\n\nexport default connect(aMapStateToProps, null, null, { context: LabelBeeContext })(\n PointCloudListener,\n);\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PointCloudListener.js","sources":["../../../src/components/pointCloudView/PointCloudListener.tsx"],"sourcesContent":["import { PointCloudContext } from './PointCloudContext';\nimport { useRotate } from './hooks/useRotate';\nimport { useBoxes } from './hooks/useBoxes';\nimport { useSingleBox } from './hooks/useSingleBox';\nimport React, { useContext, useEffect } from 'react';\nimport { cTool } from '@labelbee/lb-annotation';\nimport { message } from 'antd';\nimport { connect } from 'react-redux';\nimport { aMapStateToProps, IAnnotationStateProps } from '@/store/annotation/map';\nimport { useCustomToolInstance } from '@/hooks/annotation';\nimport { useStatus } from './hooks/useStatus';\nimport { jsonParser } from '@/utils';\nimport { usePointCloudViews } from './hooks/usePointCloudViews';\nimport { LabelBeeContext } from '@/store/ctx';\n\nconst { EPolygonPattern } = cTool;\n\nconst PointCloudListener: React.FC<IAnnotationStateProps> = ({ currentData }) => {\n const ptCtx = useContext(PointCloudContext);\n const { changeSelectedBoxValid, selectNextBox, selectPrevBox, updateSelectedBox } =\n useSingleBox();\n const { clearAllResult } = useStatus();\n const basicInfo = jsonParser(currentData.result);\n const { copySelectedBoxes, pasteSelectedBoxes, copiedBoxes } = useBoxes();\n const { toolInstanceRef } = useCustomToolInstance({ basicInfo });\n const { updateRotate } = useRotate({ currentData });\n const { updatePointCloudData } = usePointCloudViews();\n\n const keydownEvents = (lowerCaseKey: string, e: KeyboardEvent) => {\n const { topViewInstance, mainViewInstance } = ptCtx;\n if (!topViewInstance) {\n return;\n }\n\n const { pointCloud2dOperation: TopPointCloudPolygonOperation } = topViewInstance;\n\n switch (lowerCaseKey) {\n case 'q': {\n // Q - anticlockwise\n updateRotate(2);\n break;\n }\n\n case 'e':\n // E - closewise\n updateRotate(-2);\n\n break;\n\n case 'g':\n // G , overturn 180\n updateRotate(180);\n\n break;\n\n case 'u':\n {\n // U , change TopOpereation Pattern\n const newPattern =\n TopPointCloudPolygonOperation.pattern === EPolygonPattern.Normal\n ? EPolygonPattern.Rect\n : EPolygonPattern.Normal;\n TopPointCloudPolygonOperation.setPattern(newPattern);\n const POLYGON_PATTERN = {\n [EPolygonPattern.Normal]: 'Normal Pattern',\n [EPolygonPattern.Rect]: 'Rect Pattern',\n };\n message.success(`Change Pattern to ${POLYGON_PATTERN[newPattern]} successfully`);\n\n // Clear Status\n TopPointCloudPolygonOperation.clearActiveStatus();\n TopPointCloudPolygonOperation.clearDrawingStatus();\n }\n\n break;\n\n // +: Increase points size\n case '+':\n mainViewInstance?.updatePointSize(true);\n break;\n\n // -: Reduce points size\n case '-':\n mainViewInstance?.updatePointSize(false);\n break;\n\n case 'v':\n ptCtx.setPointCloudValid(!ptCtx.valid);\n break;\n\n case 'tab':\n if (e.shiftKey) {\n selectPrevBox();\n break;\n }\n selectNextBox();\n break;\n\n case 'f':\n changeSelectedBoxValid();\n break;\n\n default: {\n return;\n }\n }\n };\n\n const ctrlKeydownEvents = (lowerCaseKey: string) => {\n switch (lowerCaseKey) {\n case 'c':\n copySelectedBoxes();\n break;\n case 'v':\n pasteSelectedBoxes();\n break;\n case 'a':\n ptCtx.selectedAllBoxes();\n break;\n default:\n break;\n }\n };\n\n const onKeyDown = (e: KeyboardEvent) => {\n const lowerCaseKey = e.key.toLocaleLowerCase();\n\n if (e.ctrlKey) {\n ctrlKeydownEvents(lowerCaseKey);\n return;\n }\n\n keydownEvents(lowerCaseKey, e);\n };\n\n useEffect(() => {\n const { topViewInstance } = ptCtx;\n if (!topViewInstance) {\n return;\n }\n\n window.addEventListener('keydown', onKeyDown);\n\n return () => {\n window.removeEventListener('keydown', onKeyDown);\n };\n }, [ptCtx, copiedBoxes]);\n\n // Page switch data initialization\n useEffect(() => {\n updatePointCloudData?.();\n }, [currentData, ptCtx.mainViewInstance]);\n\n // Update the listener of toolInstance.\n useEffect(() => {\n toolInstanceRef.current.exportData = () => {\n return [ptCtx.pointCloudBoxList, { valid: ptCtx.valid }];\n };\n\n toolInstanceRef.current.exportCustomData = () => {\n return {\n renderPolygon: ptCtx.polygonList ?? [],\n };\n };\n\n toolInstanceRef.current.setDefaultAttribute = (newAttribute: string) => {\n const selectBox = ptCtx.selectedPointCloudBox;\n if (selectBox) {\n selectBox.attribute = newAttribute;\n\n updateSelectedBox(selectBox);\n }\n };\n\n toolInstanceRef.current.setSubAttribute = (key: string, value: string) => {\n const selectBox = ptCtx.selectedPointCloudBox;\n if (selectBox) {\n const originSubAttribute = selectBox?.subAttribute ?? {};\n\n selectBox.subAttribute = {\n ...originSubAttribute,\n [key]: value,\n };\n\n updateSelectedBox(selectBox);\n }\n };\n toolInstanceRef.current.clearResult = () => {\n clearAllResult?.();\n };\n }, [ptCtx.pointCloudBoxList, ptCtx.selectedID, ptCtx.valid, ptCtx.polygonList]);\n\n useEffect(() => {\n toolInstanceRef.current.setValid = (valid: boolean) => {\n toolInstanceRef.current.valid = valid;\n\n // Avoid triggering SetState operations in the reducer phase\n setTimeout(() => {\n ptCtx.setPointCloudValid(valid);\n });\n };\n }, []);\n\n return null;\n};\n\nexport default connect(aMapStateToProps, null, null, { context: LabelBeeContext })(\n PointCloudListener,\n);\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- import{MathUtils as y}from"@labelbee/lb-annotation";import{EPerspectiveView as U,PointCloudUtils as T}from"@labelbee/lb-utils";import{useContext as $}from"react";import{PointCloudContext as tt}from"../PointCloudContext.js";import{useSingleBox as k}from"./useSingleBox.js";import ot from"lodash";import{useSelector as et,useDispatch as nt}from"../../../store/ctx.js";import it from"../../../utils/StepUtils.js";import{jsonParser as E}from"../../../utils/index.js";import{SetPointCloudLoading as F}from"../../../store/annotation/actionCreators.js";import{message as st}from"antd";import{useTranslation as rt}from"react-i18next";var lt=Object.defineProperty,dt=Object.defineProperties,at=Object.getOwnPropertyDescriptors,N=Object.getOwnPropertySymbols,ct=Object.prototype.hasOwnProperty,ut=Object.prototype.propertyIsEnumerable,Z=(e,o,n)=>o in e?lt(e,o,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[o]=n,M=(e,o)=>{for(var n in o||(o={}))ct.call(o,n)&&Z(e,n,o[n]);if(N)for(var n of N(o))ut.call(o,n)&&Z(e,n,o[n]);return e},pt=(e,o)=>dt(e,at(o)),mt=(e,o,n)=>new Promise((d,t)=>{var i=r=>{try{u(n.next(r))}catch(g){t(g)}},m=r=>{try{u(n.throw(r))}catch(g){t(g)}},u=r=>r.done?d(r.value):Promise.resolve(r.value).then(i,m);u((n=n.apply(e,o)).next())});const b=5,W=90,O={"3D":"3D",Top:"Top",Side:"Side",Back:"Back"},H=(e,o)=>{const{width:n,height:d}=o,{x:t,y:i}=e;return{x:-i+d/2,y:-(t-n/2)}},z=(e,o,n,d,t)=>{const[i,m,u,r]=e.pointList.map(v=>H(v,o)),g=y.getLineCenterPoint([i,u]),h=y.getLineLength(i,m),p=y.getLineLength(m,u),f=y.getRadiusFromQuadrangle(e.pointList);let B=0,x=1,_={};if(n){const v=n.getSensesPointZAxisInPolygon([i,m,u,r]);B=(v.maxZ+v.minZ)/2,x=v.maxZ-v.minZ,_={count:v.zCount}}d&&(B=d.center.z,x=d.depth);const P=M({center:{x:g.x,y:g.y,z:B},width:p,height:h,depth:x,rotation:f,id:e.id,attribute:"",valid:!0},_);return t&&Object.assign(P,t),P},ft=(e,o,n,d)=>{const[t,i,m]=e.pointList,[u,r,g]=o.pointList,h=y.getLineCenterPoint([t,m]),p=y.getLineCenterPoint([u,g]),f={x:h.x-p.x,y:h.y-p.y},B=Math.cos(n.rotation),x=Math.sin(n.rotation),_={x:f.x,y:f.x*x+f.y*B,z:h.y-p.y},P=y.getLineLength(t,i),v=y.getLineLength(u,r),V=P-v,j=y.getLineLength(i,m),A=y.getLineLength(r,g),S=j-A,{newBoxParams:R}=d.getNewBoxBySideUpdate(_,S,V,n);return R},G=(e,o,n,d)=>{if(!n)return;const{pointCloud2dOperation:t,pointCloudInstance:i}=n;i.loadPCDFileByBox(d,e,{width:b,depth:b});const{cameraPositionVector:m}=i.updateOrthoCamera(e,U.Left);i.setInitCameraPosition(m);const{polygon2d:u,zoom:r}=i.getBoxSidePolygon2DCoordinate(e);i.camera.zoom=r,i.camera.updateProjectionMatrix(),i.render(),t.initPosition(),t.zoomChangeOnCenter(r),t.setResultAndSelectedID([{id:o.id,valid:e.valid,pointList:u,textAttribute:"",isRect:!0}],o.id)},Q=(e,o,n,d)=>{if(!n)return;const{pointCloud2dOperation:t,pointCloudInstance:i}=n;i.loadPCDFileByBox(d,e,{height:b,depth:b});const{cameraPositionVector:m}=i.updateOrthoCamera(e,U.Back);i.setInitCameraPosition(m);const{polygon2d:u,zoom:r}=i.getBoxBackPolygon2DCoordinate(e);i.camera.zoom=r,i.camera.updateProjectionMatrix(),i.render(),t.initPosition(),t.zoomChangeOnCenter(r),t.setResultAndSelectedID([{id:o.id,valid:e.valid,pointList:u,textAttribute:"",isRect:!0}],o.id)},q=(e,o,n,d)=>{var t;if(!n||!d)return;d.generateBox(e,o.id),d.updateCameraByBox(e,U.Top),d.render();const{pointCloud2dOperation:i,pointCloudInstance:m}=n,{polygon2d:u}=m.getBoxTopPolygon2DCoordinate(e),r=[...i.polygonList],g=r.find(h=>h.id===o.id);g?g.pointList=u:r.push({id:o.id,pointList:u,textAttribute:"",isRect:!0,valid:(t=e.valid)!=null?t:!0}),i.setResultAndSelectedID(r,o.id)},gt=()=>{const e=$(tt),{topViewInstance:o,sideViewInstance:n,backViewInstance:d,mainViewInstance:t,addPointCloudBox:i,setSelectedIDs:m,selectedIDs:u,pointCloudBoxList:r,setPointCloudResult:g}=e,{updateSelectedBox:h}=k(),{currentData:p,config:f}=et(s=>{const{stepList:l,step:c,imgList:a,imgIndex:C}=s.annotation;return{currentData:a[C],config:E(it.getCurrentStepInfo(c,l).config)}}),B=nt(),{selectedBox:x}=k(),{t:_}=rt(),P=x==null?void 0:x.info;if(!o||!n)return{topViewAddBox:()=>{},topViewSelectedChanged:()=>{},sideViewUpdateBox:()=>{}};const{pointCloudInstance:v}=o,V=s=>{t==null||t.generateBox(s),t==null||t.controls.update(),t==null||t.render()},j=(s,l)=>{var c,a,C;const L=z(s,l,v,void 0,{attribute:(C=(a=(c=f==null?void 0:f.attributeList)==null?void 0:c[0])==null?void 0:a.value)!=null?C:""}),I=o==null?void 0:o.pointCloud2dOperation,w=L;if((f==null?void 0:f.lowerLimitPointsNumInBox)&&typeof L.count=="number"&&L.count<f.lowerLimitPointsNumInBox){st.info(_("LowerLimitPointsNumInBox",{num:f.lowerLimitPointsNumInBox})),I.deletePolygon(L.id);return}I.setSelectedIDs([s.id]),m(w.id),D(O.Top,s,w),i(w)},A=()=>{const s=x==null?void 0:x.info,l=o==null?void 0:o.pointCloud2dOperation;if(l.setSelectedIDs(u),!s||!l)return;const c=l.selectedPolygon;D(O.Top,c,s)},S=(s,l,c)=>{if(P){let a=ft(s,l,P,n.pointCloudInstance);if(t){const{count:C}=t.getSensesPointZAxisInPolygon(t.getCuboidFromPointCloudBox(a).polygonPointList,[a.center.z-a.depth/2,a.center.z+a.depth/2]);a=pt(M({},a),{count:C})}h(a),D(c,s,a)}},R=(s,l)=>{S(s,l,O.Side)},J=(s,l)=>{S(s,l,O.Back)},K=(s,l)=>{if(P){const c=z(s,l,o.pointCloudInstance,P);Object.assign(P,ot.pickBy(c,(a,C)=>["width","height","x","y"])),h(c),D(O.Top,s,P)}},D=(s,l,c)=>{const a=p==null?void 0:p.url,C={[O.Side]:()=>{G(c,l,n,a)},[O.Back]:()=>{d&&Q(c,l,d,a)},[O.Top]:()=>{q(c,l,o,t)}};Object.keys(C).forEach(L=>{L!==s&&C[L]()}),V(c),t==null||t.highlightOriginPointCloud(c)};return{topViewAddBox:j,topViewSelectedChanged:A,topViewUpdateBox:K,sideViewUpdateBox:R,backViewUpdateBox:J,pointCloudBoxListUpdated:s=>{o.updatePolygonList(s),t==null||t.generateBoxes(s)},clearAllResult:()=>{r.forEach(s=>{t==null||t.removeObjectByName(s.id)}),t==null||t.render(),g([]),o.pointCloud2dOperation.clearActiveStatus(),o.pointCloud2dOperation.clearResult()},initPointCloud3d:()=>{!t||(t.initPerspectiveCamera(),t.initRenderer(),t.render())},updatePointCloudData:()=>mt(void 0,null,function*(){var s,l,c,a,C,L;if(!(p==null?void 0:p.url)||!t)return;if(F(B,!0),yield t.loadPCDFile(p.url,(s=f==null?void 0:f.radius)!=null?s:W),r.forEach(w=>{t==null||t.removeObjectByName(w.id)}),p.result){const w=T.getBoxParamsFromResultList(p.result),X=T.getPolygonListFromResultList(p.result);w.forEach(Y=>{t==null||t.generateBox(Y)}),e.setPointCloudResult(w),e.setPolygonList(X)}else e.setPointCloudResult([]),e.setPolygonList([]);t.updateTopCamera();const I=(c=(l=E(p.result))==null?void 0:l.valid)!=null?c:!0;e.setPointCloudValid(I),(a=e.sideViewInstance)==null||a.clearAllData(),(C=e.backViewInstance)==null||C.clearAllData(),o.updateData(p.url,p.result,{radius:(L=f==null?void 0:f.radius)!=null?L:W}),F(B,!1)})}};export{Q as synchronizeBackView,G as synchronizeSideView,q as synchronizeTopView,z as topViewPolygon2PointCloud,H as transferCanvas2World,gt as usePointCloudViews};
1
+ import{MathUtils as y}from"@labelbee/lb-annotation";import{EPerspectiveView as z,PointCloudUtils as k}from"@labelbee/lb-utils";import{useContext as tt}from"react";import{PointCloudContext as ot}from"../PointCloudContext.js";import{useSingleBox as E}from"./useSingleBox.js";import et from"lodash";import{useSelector as nt,useDispatch as it}from"../../../store/ctx.js";import st from"../../../utils/StepUtils.js";import{jsonParser as F}from"../../../utils/index.js";import{SetPointCloudLoading as N}from"../../../store/annotation/actionCreators.js";import{message as rt}from"antd";import{useTranslation as lt}from"react-i18next";var dt=Object.defineProperty,at=Object.defineProperties,ct=Object.getOwnPropertyDescriptors,Z=Object.getOwnPropertySymbols,ut=Object.prototype.hasOwnProperty,pt=Object.prototype.propertyIsEnumerable,M=(e,o,n)=>o in e?dt(e,o,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[o]=n,D=(e,o)=>{for(var n in o||(o={}))ut.call(o,n)&&M(e,n,o[n]);if(Z)for(var n of Z(o))pt.call(o,n)&&M(e,n,o[n]);return e},W=(e,o)=>at(e,ct(o)),mt=(e,o,n)=>new Promise((l,t)=>{var i=r=>{try{u(n.next(r))}catch(g){t(g)}},m=r=>{try{u(n.throw(r))}catch(g){t(g)}},u=r=>r.done?l(r.value):Promise.resolve(r.value).then(i,m);u((n=n.apply(e,o)).next())});const j=5,H=90,O={"3D":"3D",Top:"Top",Side:"Side",Back:"Back"},G=(e,o)=>{const{width:n,height:l}=o,{x:t,y:i}=e;return{x:-i+l/2,y:-(t-n/2)}},T=(e,o,n,l,t)=>{const[i,m,u,r]=e.pointList.map(P=>G(P,o)),g=y.getLineCenterPoint([i,u]),h=y.getLineLength(i,m),p=y.getLineLength(m,u),f=y.getRadiusFromQuadrangle(e.pointList);let B=0,x=1,_={};if(n){const P=n.getSensesPointZAxisInPolygon([i,m,u,r]);B=(P.maxZ+P.minZ)/2,x=P.maxZ-P.minZ,_={count:P.zCount}}l&&(B=l.center.z,x=l.depth);const v={center:{x:g.x,y:g.y,z:B},width:p,height:h,depth:x,rotation:f,id:e.id},S=D(l?D(D({},l),v):W(D({},v),{attribute:"",valid:!0}),_);return t&&Object.assign(S,t),S},ft=(e,o,n,l)=>{const[t,i,m]=e.pointList,[u,r,g]=o.pointList,h=y.getLineCenterPoint([t,m]),p=y.getLineCenterPoint([u,g]),f={x:h.x-p.x,y:h.y-p.y},B=Math.cos(n.rotation),x=Math.sin(n.rotation),_={x:f.x,y:f.x*x+f.y*B,z:h.y-p.y},v=y.getLineLength(t,i),S=y.getLineLength(u,r),P=v-S,A=y.getLineLength(i,m),R=y.getLineLength(r,g),I=A-R,{newBoxParams:U}=l.getNewBoxBySideUpdate(_,I,P,n);return U},Q=(e,o,n,l)=>{if(!n)return;const{pointCloud2dOperation:t,pointCloudInstance:i}=n;i.loadPCDFileByBox(l,e,{width:j,depth:j});const{cameraPositionVector:m}=i.updateOrthoCamera(e,z.Left);i.setInitCameraPosition(m);const{polygon2d:u,zoom:r}=i.getBoxSidePolygon2DCoordinate(e);i.camera.zoom=r,i.camera.updateProjectionMatrix(),i.render(),t.initPosition(),t.zoomChangeOnCenter(r),t.setResultAndSelectedID([{id:o.id,valid:e.valid,pointList:u,textAttribute:"",isRect:!0}],o.id)},q=(e,o,n,l)=>{if(!n)return;const{pointCloud2dOperation:t,pointCloudInstance:i}=n;i.loadPCDFileByBox(l,e,{height:j,depth:j});const{cameraPositionVector:m}=i.updateOrthoCamera(e,z.Back);i.setInitCameraPosition(m);const{polygon2d:u,zoom:r}=i.getBoxBackPolygon2DCoordinate(e);i.camera.zoom=r,i.camera.updateProjectionMatrix(),i.render(),t.initPosition(),t.zoomChangeOnCenter(r),t.setResultAndSelectedID([{id:o.id,valid:e.valid,pointList:u,textAttribute:"",isRect:!0}],o.id)},J=(e,o,n,l)=>{var t;if(!n||!l)return;l.generateBox(e,o.id),l.updateCameraByBox(e,z.Top),l.render();const{pointCloud2dOperation:i,pointCloudInstance:m}=n,{polygon2d:u}=m.getBoxTopPolygon2DCoordinate(e),r=[...i.polygonList],g=r.find(h=>h.id===o.id);g?g.pointList=u:r.push({id:o.id,pointList:u,textAttribute:"",isRect:!0,valid:(t=e.valid)!=null?t:!0}),i.setResultAndSelectedID(r,o.id)},gt=()=>{const e=tt(ot),{topViewInstance:o,sideViewInstance:n,backViewInstance:l,mainViewInstance:t,addPointCloudBox:i,setSelectedIDs:m,selectedIDs:u,pointCloudBoxList:r,setPointCloudResult:g}=e,{updateSelectedBox:h}=E(),{currentData:p,config:f}=nt(s=>{const{stepList:d,step:c,imgList:a,imgIndex:C}=s.annotation;return{currentData:a[C],config:F(st.getCurrentStepInfo(c,d).config)}}),B=it(),{selectedBox:x}=E(),{t:_}=lt(),v=x==null?void 0:x.info;if(!o||!n)return{topViewAddBox:()=>{},topViewSelectedChanged:()=>{},sideViewUpdateBox:()=>{}};const{pointCloudInstance:S}=o,P=s=>{t==null||t.generateBox(s),t==null||t.controls.update(),t==null||t.render()},A=(s,d)=>{var c,a,C;const L=T(s,d,S,void 0,{attribute:(C=(a=(c=f==null?void 0:f.attributeList)==null?void 0:c[0])==null?void 0:a.value)!=null?C:""}),V=o==null?void 0:o.pointCloud2dOperation,w=L;if((f==null?void 0:f.lowerLimitPointsNumInBox)&&typeof L.count=="number"&&L.count<f.lowerLimitPointsNumInBox){rt.info(_("LowerLimitPointsNumInBox",{num:f.lowerLimitPointsNumInBox})),V.deletePolygon(L.id);return}V.setSelectedIDs([s.id]),m(w.id),b(O.Top,s,w),i(w)},R=()=>{const s=x==null?void 0:x.info,d=o==null?void 0:o.pointCloud2dOperation;if(d.setSelectedIDs(u),!s||!d)return;const c=d.selectedPolygon;b(O.Top,c,s)},I=(s,d,c)=>{if(v){let a=ft(s,d,v,n.pointCloudInstance);if(t){const{count:C}=t.getSensesPointZAxisInPolygon(t.getCuboidFromPointCloudBox(a).polygonPointList,[a.center.z-a.depth/2,a.center.z+a.depth/2]);a=W(D({},a),{count:C})}h(a),b(c,s,a)}},U=(s,d)=>{I(s,d,O.Side)},K=(s,d)=>{I(s,d,O.Back)},X=(s,d)=>{if(v){const c=T(s,d,o.pointCloudInstance,v);Object.assign(v,et.pickBy(c,(a,C)=>["width","height","x","y"])),h(c),b(O.Top,s,v)}},b=(s,d,c)=>{const a=p==null?void 0:p.url,C={[O.Side]:()=>{Q(c,d,n,a)},[O.Back]:()=>{l&&q(c,d,l,a)},[O.Top]:()=>{J(c,d,o,t)}};Object.keys(C).forEach(L=>{L!==s&&C[L]()}),P(c),t==null||t.highlightOriginPointCloud(c)};return{topViewAddBox:A,topViewSelectedChanged:R,topViewUpdateBox:X,sideViewUpdateBox:U,backViewUpdateBox:K,pointCloudBoxListUpdated:s=>{o.updatePolygonList(s),t==null||t.generateBoxes(s)},clearAllResult:()=>{r.forEach(s=>{t==null||t.removeObjectByName(s.id)}),t==null||t.render(),g([]),o.pointCloud2dOperation.clearActiveStatus(),o.pointCloud2dOperation.clearResult()},initPointCloud3d:()=>{!t||(t.initPerspectiveCamera(),t.initRenderer(),t.render())},updatePointCloudData:()=>mt(void 0,null,function*(){var s,d,c,a,C,L;if(!(p==null?void 0:p.url)||!t)return;if(N(B,!0),yield t.loadPCDFile(p.url,(s=f==null?void 0:f.radius)!=null?s:H),r.forEach(w=>{t==null||t.removeObjectByName(w.id)}),p.result){const w=k.getBoxParamsFromResultList(p.result),Y=k.getPolygonListFromResultList(p.result);w.forEach($=>{t==null||t.generateBox($)}),e.setPointCloudResult(w),e.setPolygonList(Y)}else e.setPointCloudResult([]),e.setPolygonList([]);t.updateTopCamera();const V=(c=(d=F(p.result))==null?void 0:d.valid)!=null?c:!0;e.setPointCloudValid(V),(a=e.sideViewInstance)==null||a.clearAllData(),(C=e.backViewInstance)==null||C.clearAllData(),o.updateData(p.url,p.result,{radius:(L=f==null?void 0:f.radius)!=null?L:H}),N(B,!1)})}};export{q as synchronizeBackView,Q as synchronizeSideView,J as synchronizeTopView,T as topViewPolygon2PointCloud,G as transferCanvas2World,gt as usePointCloudViews};
@@ -1 +1 @@
1
- {"version":3,"file":"usePointCloudViews.js","sources":["../../../../src/components/pointCloudView/hooks/usePointCloudViews.ts"],"sourcesContent":["/**\n * @file Point cloud interface for crud\n * @author Glenfiddish <edwinlee0927@hotmail.com>\n * @createdate 2022-08-17\n */\nimport { PointCloudAnnotation, PointCloud, MathUtils } from '@labelbee/lb-annotation';\nimport {\n IPointCloudBox,\n EPerspectiveView,\n PointCloudUtils,\n IPolygonPoint,\n} from '@labelbee/lb-utils';\nimport { useContext } from 'react';\nimport { PointCloudContext } from '../PointCloudContext';\nimport { useSingleBox } from './useSingleBox';\nimport { ISize } from '@/types/main';\nimport _ from 'lodash';\nimport { useDispatch, useSelector } from '@/store/ctx';\nimport { AppState } from '@/store';\nimport StepUtils from '@/utils/StepUtils';\nimport { jsonParser } from '@/utils';\nimport { SetPointCloudLoading } from '@/store/annotation/actionCreators';\nimport { message } from 'antd';\nimport { useTranslation } from 'react-i18next';\n\nconst DEFAULT_SCOPE = 5;\nconst DEFAULT_RADIUS = 90;\n\nconst PointCloudView = {\n '3D': '3D',\n Top: 'Top',\n Side: 'Side',\n Back: 'Back',\n};\n\n/**\n * Get the coordinate from canvas2d-coordinate to world coordinate\n */\nexport const transferCanvas2World = (\n currentPos: { x: number; y: number },\n size: { width: number; height: number },\n) => {\n const { width: w, height: h } = size;\n const { x, y } = currentPos;\n\n // x-Axis is the Positive Direction, so the x-coordinates need to be swapped with the y-coordinates\n return {\n x: -y + h / 2,\n y: -(x - w / 2),\n };\n};\n\nexport const topViewPolygon2PointCloud = (\n newPolygon: any,\n size: ISize,\n pointCloud?: PointCloud,\n selectedPointCloudBox?: IPointCloudBox,\n defaultValue?: { [v: string]: any },\n) => {\n const [point1, point2, point3, point4] = newPolygon.pointList.map((v: any) =>\n transferCanvas2World(v, size),\n );\n\n const centerPoint = MathUtils.getLineCenterPoint([point1, point3]);\n const height = MathUtils.getLineLength(point1, point2);\n const width = MathUtils.getLineLength(point2, point3);\n const rotation = MathUtils.getRadiusFromQuadrangle(newPolygon.pointList);\n let z = 0;\n let depth = 1;\n let extraData = {};\n\n // Init PointCloud Data\n if (pointCloud) {\n const zInfo = pointCloud.getSensesPointZAxisInPolygon([point1, point2, point3, point4]);\n z = (zInfo.maxZ + zInfo.minZ) / 2;\n depth = zInfo.maxZ - zInfo.minZ;\n extraData = {\n count: zInfo.zCount,\n };\n }\n\n if (selectedPointCloudBox) {\n z = selectedPointCloudBox.center.z;\n depth = selectedPointCloudBox.depth;\n }\n\n /** TrackID will append before it pushed */\n const boxParams: Omit<IPointCloudBox, 'trackID'> = {\n center: {\n x: centerPoint.x,\n y: centerPoint.y,\n z,\n },\n width,\n height,\n depth,\n rotation: rotation,\n id: newPolygon.id,\n attribute: '',\n valid: true,\n ...extraData,\n };\n\n if (defaultValue) {\n Object.assign(boxParams, defaultValue);\n }\n\n return boxParams;\n};\n\nconst sideViewPolygon2PointCloud = (\n newPolygon: any,\n originPolygon: any,\n selectedPointCloudBox: IPointCloudBox,\n pointCloudInstance: PointCloud,\n) => {\n const [point1, point2, point3] = newPolygon.pointList;\n const [op1, op2, op3] = originPolygon.pointList;\n\n // 2D centerPoint => 3D x & z\n const newCenterPoint = MathUtils.getLineCenterPoint([point1, point3]);\n const oldCenterPoint = MathUtils.getLineCenterPoint([op1, op3]);\n\n const offset = {\n x: newCenterPoint.x - oldCenterPoint.x,\n y: newCenterPoint.y - oldCenterPoint.y,\n };\n\n const cos = Math.cos(selectedPointCloudBox.rotation);\n const sin = Math.sin(selectedPointCloudBox.rotation);\n\n const offsetCenterPoint = {\n x: offset.x,\n y: offset.x * sin + offset.y * cos,\n z: newCenterPoint.y - oldCenterPoint.y,\n };\n\n // 2D height => 3D depth\n const height = MathUtils.getLineLength(point1, point2);\n const oldHeight = MathUtils.getLineLength(op1, op2);\n const offsetHeight = height - oldHeight; // 3D depth\n\n // 2D width => 3D width\n const width = MathUtils.getLineLength(point2, point3);\n const oldWidth = MathUtils.getLineLength(op2, op3);\n const offsetWidth = width - oldWidth; // 3D width\n\n const { newBoxParams } = pointCloudInstance.getNewBoxBySideUpdate(\n offsetCenterPoint,\n offsetWidth,\n offsetHeight,\n selectedPointCloudBox,\n );\n\n return newBoxParams;\n};\n\n/**\n * NewBox synchronize sideView\n * @param boxParams\n * @param newPolygon TODO! Need to add type\n */\nexport const synchronizeSideView = (\n boxParams: IPointCloudBox,\n newPolygon: any,\n sideViewInstance: PointCloudAnnotation | undefined,\n url: string,\n) => {\n if (!sideViewInstance) {\n return;\n }\n\n const { pointCloud2dOperation, pointCloudInstance } = sideViewInstance;\n\n // Create PointCloud\n pointCloudInstance.loadPCDFileByBox(url, boxParams, {\n width: DEFAULT_SCOPE,\n depth: DEFAULT_SCOPE,\n });\n const { cameraPositionVector } = pointCloudInstance.updateOrthoCamera(\n boxParams,\n EPerspectiveView.Left,\n );\n\n pointCloudInstance.setInitCameraPosition(cameraPositionVector);\n\n // Create Draw Polygon\n const { polygon2d, zoom } = pointCloudInstance.getBoxSidePolygon2DCoordinate(boxParams);\n\n // Synchronize SidePointCloud zoom with PointCloud2dOperation\n pointCloudInstance.camera.zoom = zoom;\n pointCloudInstance.camera.updateProjectionMatrix();\n pointCloudInstance.render();\n\n // Update PolygonView to default zoom and currentPos.\n pointCloud2dOperation.initPosition();\n pointCloud2dOperation.zoomChangeOnCenter(zoom);\n pointCloud2dOperation.setResultAndSelectedID(\n [\n {\n id: newPolygon.id,\n valid: boxParams.valid,\n pointList: polygon2d,\n textAttribute: '',\n isRect: true,\n },\n ],\n newPolygon.id,\n );\n};\n\n/**\n * NewBox synchronize backView\n * @param boxParams\n * @param newPolygon TODO! Need to add type\n */\nexport const synchronizeBackView = (\n boxParams: IPointCloudBox,\n newPolygon: any,\n BackViewInstance: PointCloudAnnotation,\n url: string,\n) => {\n if (!BackViewInstance) {\n return;\n }\n\n const {\n pointCloud2dOperation: backPointCloudPolygonOperation,\n pointCloudInstance: backPointCloud,\n } = BackViewInstance;\n\n // Create PointCloud\n backPointCloud.loadPCDFileByBox(url, boxParams, { height: DEFAULT_SCOPE, depth: DEFAULT_SCOPE });\n const { cameraPositionVector } = backPointCloud.updateOrthoCamera(\n boxParams,\n EPerspectiveView.Back,\n );\n\n backPointCloud.setInitCameraPosition(cameraPositionVector);\n\n // Create Draw Polygon\n const { polygon2d, zoom } = backPointCloud.getBoxBackPolygon2DCoordinate(boxParams);\n\n // Synchronize SidePointCloud zoom with PointCloud2dOperation\n backPointCloud.camera.zoom = zoom;\n backPointCloud.camera.updateProjectionMatrix();\n backPointCloud.render();\n\n // Update PolygonView to default zoom and currentPos.\n backPointCloudPolygonOperation.initPosition();\n backPointCloudPolygonOperation.zoomChangeOnCenter(zoom);\n backPointCloudPolygonOperation.setResultAndSelectedID(\n [\n {\n id: newPolygon.id,\n valid: boxParams.valid,\n pointList: polygon2d,\n textAttribute: '',\n isRect: true,\n },\n ],\n newPolygon.id,\n );\n};\n\n/**\n * NewBox synchronize TopView\n * @param boxParams\n * @param newPolygon TODO! Need to add type\n */\nexport const synchronizeTopView = (\n newBoxParams: IPointCloudBox,\n newPolygon: any,\n topViewInstance?: PointCloudAnnotation,\n mainViewInstance?: PointCloud,\n) => {\n if (!topViewInstance || !mainViewInstance) {\n return;\n }\n\n // Control the 3D view data to create box\n mainViewInstance.generateBox(newBoxParams, newPolygon.id);\n mainViewInstance.updateCameraByBox(newBoxParams, EPerspectiveView.Top);\n mainViewInstance.render();\n\n const { pointCloud2dOperation, pointCloudInstance } = topViewInstance;\n\n const { polygon2d } = pointCloudInstance.getBoxTopPolygon2DCoordinate(newBoxParams);\n\n const newPolygonList = [...pointCloud2dOperation.polygonList];\n const oldPolygon = newPolygonList.find((v) => v.id === newPolygon.id);\n if (oldPolygon) {\n oldPolygon.pointList = polygon2d;\n } else {\n newPolygonList.push({\n id: newPolygon.id,\n pointList: polygon2d,\n textAttribute: '',\n isRect: true,\n valid: newBoxParams.valid ?? true\n });\n }\n\n pointCloud2dOperation.setResultAndSelectedID(newPolygonList, newPolygon.id);\n};\n\nexport const usePointCloudViews = () => {\n const ptCtx = useContext(PointCloudContext);\n const {\n topViewInstance,\n sideViewInstance,\n backViewInstance,\n mainViewInstance,\n addPointCloudBox,\n setSelectedIDs,\n selectedIDs,\n pointCloudBoxList,\n setPointCloudResult,\n } = ptCtx;\n const { updateSelectedBox } = useSingleBox();\n const { currentData, config } = useSelector((state: AppState) => {\n const { stepList, step, imgList, imgIndex } = state.annotation;\n\n return {\n currentData: imgList[imgIndex],\n config: jsonParser(StepUtils.getCurrentStepInfo(step, stepList).config),\n };\n });\n const dispatch = useDispatch();\n const { selectedBox } = useSingleBox();\n const { t } = useTranslation();\n\n const selectedPointCloudBox = selectedBox?.info;\n\n if (!topViewInstance || !sideViewInstance) {\n return {\n topViewAddBox: () => {},\n topViewSelectedChanged: () => {},\n sideViewUpdateBox: () => {},\n };\n }\n\n const { pointCloudInstance: topViewPointCloud } = topViewInstance;\n\n // Temporarily hide\n // const getNextTrackID = () => {\n // if (pointCloudBoxList.length > 0) {\n // const sortedPcList = pointCloudBoxList.sort((a, b) => a.trackID - b.trackID);\n // return sortedPcList.slice(-1)[0]?.trackID + 1;\n // }\n\n // return 1;\n // };\n\n const mainViewGenBox = (boxParams: IPointCloudBox) => {\n mainViewInstance?.generateBox(boxParams);\n mainViewInstance?.controls.update();\n mainViewInstance?.render();\n };\n\n /** Top-view create box from 2D */\n const topViewAddBox = (newPolygon: any, size: ISize) => {\n const newParams = topViewPolygon2PointCloud(newPolygon, size, topViewPointCloud, undefined, {\n attribute: config?.attributeList?.[0]?.value ?? '',\n });\n const polygonOperation = topViewInstance?.pointCloud2dOperation;\n\n // Temporarily hide\n // const boxParams: IPointCloudBox = Object.assign(newParams, {\n // trackID: getNextTrackID(),\n // });\n const boxParams: IPointCloudBox = newParams;\n\n // If the count is less than lowerLimitPointsNumInBox, needs to delete it\n if (\n config?.lowerLimitPointsNumInBox &&\n typeof newParams.count === 'number' &&\n newParams.count < config.lowerLimitPointsNumInBox\n ) {\n message.info(t('LowerLimitPointsNumInBox', { num: config.lowerLimitPointsNumInBox }));\n polygonOperation.deletePolygon(newParams.id);\n return;\n }\n\n polygonOperation.setSelectedIDs([newPolygon.id]);\n setSelectedIDs(boxParams.id);\n syncPointCloudViews(PointCloudView.Top, newPolygon, boxParams);\n addPointCloudBox(boxParams);\n };\n\n /** Top-view selected changed and render to other view */\n const topViewSelectedChanged = () => {\n const boxParams = selectedBox?.info;\n const polygonOperation = topViewInstance?.pointCloud2dOperation;\n\n polygonOperation.setSelectedIDs(selectedIDs);\n if (!boxParams || !polygonOperation) {\n return;\n }\n\n const polygon = polygonOperation.selectedPolygon;\n syncPointCloudViews(PointCloudView.Top, polygon, boxParams);\n };\n\n /**\n * Update box from view\n * @param newPolygon\n * @param originPolygon\n * @param fromView Back or Side\n */\n const viewUpdateBox = (newPolygon: any, originPolygon: any, fromView: string) => {\n if (selectedPointCloudBox) {\n let newBoxParams = sideViewPolygon2PointCloud(\n newPolygon,\n originPolygon,\n selectedPointCloudBox,\n sideViewInstance.pointCloudInstance,\n );\n // Update count\n if (mainViewInstance) {\n const { count } = mainViewInstance.getSensesPointZAxisInPolygon(\n mainViewInstance.getCuboidFromPointCloudBox(newBoxParams)\n .polygonPointList as IPolygonPoint[],\n [\n newBoxParams.center.z - newBoxParams.depth / 2,\n newBoxParams.center.z + newBoxParams.depth / 2,\n ],\n );\n\n newBoxParams = {\n ...newBoxParams,\n count,\n };\n }\n\n updateSelectedBox(newBoxParams);\n syncPointCloudViews(fromView, newPolygon, newBoxParams);\n }\n };\n\n const sideViewUpdateBox = (newPolygon: any, originPolygon: any) => {\n viewUpdateBox(newPolygon, originPolygon, PointCloudView.Side);\n };\n\n const backViewUpdateBox = (newPolygon: any, originPolygon: any) => {\n viewUpdateBox(newPolygon, originPolygon, PointCloudView.Back);\n };\n\n /**\n * Top view box updated and sync views\n * @param polygon\n * @param size\n */\n const topViewUpdateBox = (polygon: any, size: ISize) => {\n if (selectedPointCloudBox) {\n const newBoxParams = topViewPolygon2PointCloud(\n polygon,\n size,\n topViewInstance.pointCloudInstance,\n selectedPointCloudBox,\n );\n\n Object.assign(\n selectedPointCloudBox,\n _.pickBy(newBoxParams, (v, k) => ['width', 'height', 'x', 'y']),\n );\n\n updateSelectedBox(newBoxParams);\n syncPointCloudViews(PointCloudView.Top, polygon, selectedPointCloudBox);\n }\n };\n\n /**\n * Sync views' data from omit view, regenerate and highlight box on 3D-view\n * @param omitView\n * @param polygon\n * @param boxParams\n */\n const syncPointCloudViews = (omitView: string, polygon: any, boxParams: IPointCloudBox) => {\n const dataUrl = currentData?.url;\n\n const viewToBeUpdated = {\n [PointCloudView.Side]: () => {\n synchronizeSideView(boxParams, polygon, sideViewInstance, dataUrl);\n },\n [PointCloudView.Back]: () => {\n if (backViewInstance) {\n synchronizeBackView(boxParams, polygon, backViewInstance, dataUrl);\n }\n },\n [PointCloudView.Top]: () => {\n synchronizeTopView(boxParams, polygon, topViewInstance, mainViewInstance);\n },\n };\n\n Object.keys(viewToBeUpdated).forEach((key) => {\n if (key !== omitView) {\n viewToBeUpdated[key]();\n }\n });\n mainViewGenBox(boxParams);\n mainViewInstance?.highlightOriginPointCloud(boxParams);\n };\n\n const pointCloudBoxListUpdated = (newBoxes: IPointCloudBox[]) => {\n topViewInstance.updatePolygonList(newBoxes);\n mainViewInstance?.generateBoxes(newBoxes);\n };\n\n const clearAllResult = () => {\n // Clear All PointView Data\n pointCloudBoxList.forEach((v) => {\n mainViewInstance?.removeObjectByName(v.id);\n });\n mainViewInstance?.render();\n\n setPointCloudResult([]);\n topViewInstance.pointCloud2dOperation.clearActiveStatus();\n topViewInstance.pointCloud2dOperation.clearResult();\n };\n\n const initPointCloud3d = () => {\n if (!mainViewInstance) {\n return;\n }\n\n mainViewInstance.initPerspectiveCamera();\n mainViewInstance.initRenderer();\n mainViewInstance.render();\n };\n\n /**\n * Update the data of pointCloudView when the page change.\n * @returns\n */\n const updatePointCloudData = async () => {\n if (!currentData?.url || !mainViewInstance) {\n return;\n }\n\n SetPointCloudLoading(dispatch, true);\n await mainViewInstance.loadPCDFile(currentData.url, config?.radius ?? DEFAULT_RADIUS);\n\n // Clear All Data\n pointCloudBoxList.forEach((v) => {\n mainViewInstance?.removeObjectByName(v.id);\n });\n\n if (currentData.result) {\n const boxParamsList = PointCloudUtils.getBoxParamsFromResultList(currentData.result);\n const polygonList = PointCloudUtils.getPolygonListFromResultList(currentData.result);\n\n // Add Init Box\n boxParamsList.forEach((v: IPointCloudBox) => {\n mainViewInstance?.generateBox(v);\n });\n\n ptCtx.setPointCloudResult(boxParamsList);\n ptCtx.setPolygonList(polygonList);\n } else {\n ptCtx.setPointCloudResult([]);\n ptCtx.setPolygonList([]);\n }\n\n mainViewInstance.updateTopCamera();\n\n const valid = jsonParser(currentData.result)?.valid ?? true;\n ptCtx.setPointCloudValid(valid);\n\n // Clear other view data during initialization\n ptCtx.sideViewInstance?.clearAllData();\n ptCtx.backViewInstance?.clearAllData();\n\n // TopView Data Update\n /**\n * Listen to flip\n * 1. Init\n * 2. Reload PointCloud\n * 3. Clear Polygon\n */\n topViewInstance.updateData(currentData.url, currentData.result, {\n radius: config?.radius ?? DEFAULT_RADIUS,\n });\n SetPointCloudLoading(dispatch, false);\n };\n\n return {\n topViewAddBox,\n topViewSelectedChanged,\n topViewUpdateBox,\n sideViewUpdateBox,\n backViewUpdateBox,\n pointCloudBoxListUpdated,\n clearAllResult,\n initPointCloud3d,\n updatePointCloudData,\n };\n};\n"],"names":["this"],"mappings":"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"}
1
+ {"version":3,"file":"usePointCloudViews.js","sources":["../../../../src/components/pointCloudView/hooks/usePointCloudViews.ts"],"sourcesContent":["/**\n * @file Point cloud interface for crud\n * @author Glenfiddish <edwinlee0927@hotmail.com>\n * @createdate 2022-08-17\n */\nimport { PointCloudAnnotation, PointCloud, MathUtils } from '@labelbee/lb-annotation';\nimport {\n IPointCloudBox,\n EPerspectiveView,\n PointCloudUtils,\n IPolygonPoint,\n} from '@labelbee/lb-utils';\nimport { useContext } from 'react';\nimport { PointCloudContext } from '../PointCloudContext';\nimport { useSingleBox } from './useSingleBox';\nimport { ISize } from '@/types/main';\nimport _ from 'lodash';\nimport { useDispatch, useSelector } from '@/store/ctx';\nimport { AppState } from '@/store';\nimport StepUtils from '@/utils/StepUtils';\nimport { jsonParser } from '@/utils';\nimport { SetPointCloudLoading } from '@/store/annotation/actionCreators';\nimport { message } from 'antd';\nimport { useTranslation } from 'react-i18next';\n\nconst DEFAULT_SCOPE = 5;\nconst DEFAULT_RADIUS = 90;\n\nconst PointCloudView = {\n '3D': '3D',\n Top: 'Top',\n Side: 'Side',\n Back: 'Back',\n};\n\n/**\n * Get the coordinate from canvas2d-coordinate to world coordinate\n */\nexport const transferCanvas2World = (\n currentPos: { x: number; y: number },\n size: { width: number; height: number },\n) => {\n const { width: w, height: h } = size;\n const { x, y } = currentPos;\n\n // x-Axis is the Positive Direction, so the x-coordinates need to be swapped with the y-coordinates\n return {\n x: -y + h / 2,\n y: -(x - w / 2),\n };\n};\n\nexport const topViewPolygon2PointCloud = (\n newPolygon: any,\n size: ISize,\n pointCloud?: PointCloud,\n selectedPointCloudBox?: IPointCloudBox,\n defaultValue?: { [v: string]: any },\n) => {\n const [point1, point2, point3, point4] = newPolygon.pointList.map((v: any) =>\n transferCanvas2World(v, size),\n );\n\n const centerPoint = MathUtils.getLineCenterPoint([point1, point3]);\n const height = MathUtils.getLineLength(point1, point2);\n const width = MathUtils.getLineLength(point2, point3);\n const rotation = MathUtils.getRadiusFromQuadrangle(newPolygon.pointList);\n let z = 0;\n let depth = 1;\n let extraData = {};\n\n // Init PointCloud Data\n if (pointCloud) {\n const zInfo = pointCloud.getSensesPointZAxisInPolygon([point1, point2, point3, point4]);\n z = (zInfo.maxZ + zInfo.minZ) / 2;\n depth = zInfo.maxZ - zInfo.minZ;\n extraData = {\n count: zInfo.zCount,\n };\n }\n\n if (selectedPointCloudBox) {\n z = selectedPointCloudBox.center.z;\n depth = selectedPointCloudBox.depth;\n }\n\n const newPosition = {\n center: {\n x: centerPoint.x,\n y: centerPoint.y,\n z,\n },\n width,\n height,\n depth,\n rotation,\n id: newPolygon.id,\n };\n\n /** TrackID will append before it pushed */\n const boxParams: Omit<IPointCloudBox, 'trackID'> = selectedPointCloudBox\n ? {\n ...selectedPointCloudBox,\n ...newPosition,\n ...extraData,\n }\n : {\n // Init Data\n ...newPosition,\n attribute: '',\n valid: true,\n ...extraData,\n };\n\n if (defaultValue) {\n Object.assign(boxParams, defaultValue);\n }\n\n return boxParams;\n};\n\nconst sideViewPolygon2PointCloud = (\n newPolygon: any,\n originPolygon: any,\n selectedPointCloudBox: IPointCloudBox,\n pointCloudInstance: PointCloud,\n) => {\n const [point1, point2, point3] = newPolygon.pointList;\n const [op1, op2, op3] = originPolygon.pointList;\n\n // 2D centerPoint => 3D x & z\n const newCenterPoint = MathUtils.getLineCenterPoint([point1, point3]);\n const oldCenterPoint = MathUtils.getLineCenterPoint([op1, op3]);\n\n const offset = {\n x: newCenterPoint.x - oldCenterPoint.x,\n y: newCenterPoint.y - oldCenterPoint.y,\n };\n\n const cos = Math.cos(selectedPointCloudBox.rotation);\n const sin = Math.sin(selectedPointCloudBox.rotation);\n\n const offsetCenterPoint = {\n x: offset.x,\n y: offset.x * sin + offset.y * cos,\n z: newCenterPoint.y - oldCenterPoint.y,\n };\n\n // 2D height => 3D depth\n const height = MathUtils.getLineLength(point1, point2);\n const oldHeight = MathUtils.getLineLength(op1, op2);\n const offsetHeight = height - oldHeight; // 3D depth\n\n // 2D width => 3D width\n const width = MathUtils.getLineLength(point2, point3);\n const oldWidth = MathUtils.getLineLength(op2, op3);\n const offsetWidth = width - oldWidth; // 3D width\n\n const { newBoxParams } = pointCloudInstance.getNewBoxBySideUpdate(\n offsetCenterPoint,\n offsetWidth,\n offsetHeight,\n selectedPointCloudBox,\n );\n\n return newBoxParams;\n};\n\n/**\n * NewBox synchronize sideView\n * @param boxParams\n * @param newPolygon TODO! Need to add type\n */\nexport const synchronizeSideView = (\n boxParams: IPointCloudBox,\n newPolygon: any,\n sideViewInstance: PointCloudAnnotation | undefined,\n url: string,\n) => {\n if (!sideViewInstance) {\n return;\n }\n\n const { pointCloud2dOperation, pointCloudInstance } = sideViewInstance;\n\n // Create PointCloud\n pointCloudInstance.loadPCDFileByBox(url, boxParams, {\n width: DEFAULT_SCOPE,\n depth: DEFAULT_SCOPE,\n });\n const { cameraPositionVector } = pointCloudInstance.updateOrthoCamera(\n boxParams,\n EPerspectiveView.Left,\n );\n\n pointCloudInstance.setInitCameraPosition(cameraPositionVector);\n\n // Create Draw Polygon\n const { polygon2d, zoom } = pointCloudInstance.getBoxSidePolygon2DCoordinate(boxParams);\n\n // Synchronize SidePointCloud zoom with PointCloud2dOperation\n pointCloudInstance.camera.zoom = zoom;\n pointCloudInstance.camera.updateProjectionMatrix();\n pointCloudInstance.render();\n\n // Update PolygonView to default zoom and currentPos.\n pointCloud2dOperation.initPosition();\n pointCloud2dOperation.zoomChangeOnCenter(zoom);\n pointCloud2dOperation.setResultAndSelectedID(\n [\n {\n id: newPolygon.id,\n valid: boxParams.valid,\n pointList: polygon2d,\n textAttribute: '',\n isRect: true,\n },\n ],\n newPolygon.id,\n );\n};\n\n/**\n * NewBox synchronize backView\n * @param boxParams\n * @param newPolygon TODO! Need to add type\n */\nexport const synchronizeBackView = (\n boxParams: IPointCloudBox,\n newPolygon: any,\n BackViewInstance: PointCloudAnnotation,\n url: string,\n) => {\n if (!BackViewInstance) {\n return;\n }\n\n const {\n pointCloud2dOperation: backPointCloudPolygonOperation,\n pointCloudInstance: backPointCloud,\n } = BackViewInstance;\n\n // Create PointCloud\n backPointCloud.loadPCDFileByBox(url, boxParams, { height: DEFAULT_SCOPE, depth: DEFAULT_SCOPE });\n const { cameraPositionVector } = backPointCloud.updateOrthoCamera(\n boxParams,\n EPerspectiveView.Back,\n );\n\n backPointCloud.setInitCameraPosition(cameraPositionVector);\n\n // Create Draw Polygon\n const { polygon2d, zoom } = backPointCloud.getBoxBackPolygon2DCoordinate(boxParams);\n\n // Synchronize SidePointCloud zoom with PointCloud2dOperation\n backPointCloud.camera.zoom = zoom;\n backPointCloud.camera.updateProjectionMatrix();\n backPointCloud.render();\n\n // Update PolygonView to default zoom and currentPos.\n backPointCloudPolygonOperation.initPosition();\n backPointCloudPolygonOperation.zoomChangeOnCenter(zoom);\n backPointCloudPolygonOperation.setResultAndSelectedID(\n [\n {\n id: newPolygon.id,\n valid: boxParams.valid,\n pointList: polygon2d,\n textAttribute: '',\n isRect: true,\n },\n ],\n newPolygon.id,\n );\n};\n\n/**\n * NewBox synchronize TopView\n * @param boxParams\n * @param newPolygon TODO! Need to add type\n */\nexport const synchronizeTopView = (\n newBoxParams: IPointCloudBox,\n newPolygon: any,\n topViewInstance?: PointCloudAnnotation,\n mainViewInstance?: PointCloud,\n) => {\n if (!topViewInstance || !mainViewInstance) {\n return;\n }\n\n // Control the 3D view data to create box\n mainViewInstance.generateBox(newBoxParams, newPolygon.id);\n mainViewInstance.updateCameraByBox(newBoxParams, EPerspectiveView.Top);\n mainViewInstance.render();\n\n const { pointCloud2dOperation, pointCloudInstance } = topViewInstance;\n\n const { polygon2d } = pointCloudInstance.getBoxTopPolygon2DCoordinate(newBoxParams);\n\n const newPolygonList = [...pointCloud2dOperation.polygonList];\n const oldPolygon = newPolygonList.find((v) => v.id === newPolygon.id);\n if (oldPolygon) {\n oldPolygon.pointList = polygon2d;\n } else {\n newPolygonList.push({\n id: newPolygon.id,\n pointList: polygon2d,\n textAttribute: '',\n isRect: true,\n valid: newBoxParams.valid ?? true,\n });\n }\n\n pointCloud2dOperation.setResultAndSelectedID(newPolygonList, newPolygon.id);\n};\n\nexport const usePointCloudViews = () => {\n const ptCtx = useContext(PointCloudContext);\n const {\n topViewInstance,\n sideViewInstance,\n backViewInstance,\n mainViewInstance,\n addPointCloudBox,\n setSelectedIDs,\n selectedIDs,\n pointCloudBoxList,\n setPointCloudResult,\n } = ptCtx;\n const { updateSelectedBox } = useSingleBox();\n const { currentData, config } = useSelector((state: AppState) => {\n const { stepList, step, imgList, imgIndex } = state.annotation;\n\n return {\n currentData: imgList[imgIndex],\n config: jsonParser(StepUtils.getCurrentStepInfo(step, stepList).config),\n };\n });\n const dispatch = useDispatch();\n const { selectedBox } = useSingleBox();\n const { t } = useTranslation();\n\n const selectedPointCloudBox = selectedBox?.info;\n\n if (!topViewInstance || !sideViewInstance) {\n return {\n topViewAddBox: () => {},\n topViewSelectedChanged: () => {},\n sideViewUpdateBox: () => {},\n };\n }\n\n const { pointCloudInstance: topViewPointCloud } = topViewInstance;\n\n // Temporarily hide\n // const getNextTrackID = () => {\n // if (pointCloudBoxList.length > 0) {\n // const sortedPcList = pointCloudBoxList.sort((a, b) => a.trackID - b.trackID);\n // return sortedPcList.slice(-1)[0]?.trackID + 1;\n // }\n\n // return 1;\n // };\n\n const mainViewGenBox = (boxParams: IPointCloudBox) => {\n mainViewInstance?.generateBox(boxParams);\n mainViewInstance?.controls.update();\n mainViewInstance?.render();\n };\n\n /** Top-view create box from 2D */\n const topViewAddBox = (newPolygon: any, size: ISize) => {\n const newParams = topViewPolygon2PointCloud(newPolygon, size, topViewPointCloud, undefined, {\n attribute: config?.attributeList?.[0]?.value ?? '',\n });\n const polygonOperation = topViewInstance?.pointCloud2dOperation;\n\n // Temporarily hide\n // const boxParams: IPointCloudBox = Object.assign(newParams, {\n // trackID: getNextTrackID(),\n // });\n const boxParams: IPointCloudBox = newParams;\n\n // If the count is less than lowerLimitPointsNumInBox, needs to delete it\n if (\n config?.lowerLimitPointsNumInBox &&\n typeof newParams.count === 'number' &&\n newParams.count < config.lowerLimitPointsNumInBox\n ) {\n message.info(t('LowerLimitPointsNumInBox', { num: config.lowerLimitPointsNumInBox }));\n polygonOperation.deletePolygon(newParams.id);\n return;\n }\n\n polygonOperation.setSelectedIDs([newPolygon.id]);\n setSelectedIDs(boxParams.id);\n syncPointCloudViews(PointCloudView.Top, newPolygon, boxParams);\n addPointCloudBox(boxParams);\n };\n\n /** Top-view selected changed and render to other view */\n const topViewSelectedChanged = () => {\n const boxParams = selectedBox?.info;\n const polygonOperation = topViewInstance?.pointCloud2dOperation;\n\n polygonOperation.setSelectedIDs(selectedIDs);\n if (!boxParams || !polygonOperation) {\n return;\n }\n\n const polygon = polygonOperation.selectedPolygon;\n syncPointCloudViews(PointCloudView.Top, polygon, boxParams);\n };\n\n /**\n * Update box from view\n * @param newPolygon\n * @param originPolygon\n * @param fromView Back or Side\n */\n const viewUpdateBox = (newPolygon: any, originPolygon: any, fromView: string) => {\n if (selectedPointCloudBox) {\n let newBoxParams = sideViewPolygon2PointCloud(\n newPolygon,\n originPolygon,\n selectedPointCloudBox,\n sideViewInstance.pointCloudInstance,\n );\n // Update count\n if (mainViewInstance) {\n const { count } = mainViewInstance.getSensesPointZAxisInPolygon(\n mainViewInstance.getCuboidFromPointCloudBox(newBoxParams)\n .polygonPointList as IPolygonPoint[],\n [\n newBoxParams.center.z - newBoxParams.depth / 2,\n newBoxParams.center.z + newBoxParams.depth / 2,\n ],\n );\n\n newBoxParams = {\n ...newBoxParams,\n count,\n };\n }\n\n updateSelectedBox(newBoxParams);\n syncPointCloudViews(fromView, newPolygon, newBoxParams);\n }\n };\n\n const sideViewUpdateBox = (newPolygon: any, originPolygon: any) => {\n viewUpdateBox(newPolygon, originPolygon, PointCloudView.Side);\n };\n\n const backViewUpdateBox = (newPolygon: any, originPolygon: any) => {\n viewUpdateBox(newPolygon, originPolygon, PointCloudView.Back);\n };\n\n /**\n * Top view box updated and sync views\n * @param polygon\n * @param size\n */\n const topViewUpdateBox = (polygon: any, size: ISize) => {\n if (selectedPointCloudBox) {\n const newBoxParams = topViewPolygon2PointCloud(\n polygon,\n size,\n topViewInstance.pointCloudInstance,\n selectedPointCloudBox,\n );\n\n Object.assign(\n selectedPointCloudBox,\n _.pickBy(newBoxParams, (v, k) => ['width', 'height', 'x', 'y']),\n );\n\n updateSelectedBox(newBoxParams);\n syncPointCloudViews(PointCloudView.Top, polygon, selectedPointCloudBox);\n }\n };\n\n /**\n * Sync views' data from omit view, regenerate and highlight box on 3D-view\n * @param omitView\n * @param polygon\n * @param boxParams\n */\n const syncPointCloudViews = (omitView: string, polygon: any, boxParams: IPointCloudBox) => {\n const dataUrl = currentData?.url;\n\n const viewToBeUpdated = {\n [PointCloudView.Side]: () => {\n synchronizeSideView(boxParams, polygon, sideViewInstance, dataUrl);\n },\n [PointCloudView.Back]: () => {\n if (backViewInstance) {\n synchronizeBackView(boxParams, polygon, backViewInstance, dataUrl);\n }\n },\n [PointCloudView.Top]: () => {\n synchronizeTopView(boxParams, polygon, topViewInstance, mainViewInstance);\n },\n };\n\n Object.keys(viewToBeUpdated).forEach((key) => {\n if (key !== omitView) {\n viewToBeUpdated[key]();\n }\n });\n mainViewGenBox(boxParams);\n mainViewInstance?.highlightOriginPointCloud(boxParams);\n };\n\n const pointCloudBoxListUpdated = (newBoxes: IPointCloudBox[]) => {\n topViewInstance.updatePolygonList(newBoxes);\n mainViewInstance?.generateBoxes(newBoxes);\n };\n\n const clearAllResult = () => {\n // Clear All PointView Data\n pointCloudBoxList.forEach((v) => {\n mainViewInstance?.removeObjectByName(v.id);\n });\n mainViewInstance?.render();\n\n setPointCloudResult([]);\n topViewInstance.pointCloud2dOperation.clearActiveStatus();\n topViewInstance.pointCloud2dOperation.clearResult();\n };\n\n const initPointCloud3d = () => {\n if (!mainViewInstance) {\n return;\n }\n\n mainViewInstance.initPerspectiveCamera();\n mainViewInstance.initRenderer();\n mainViewInstance.render();\n };\n\n /**\n * Update the data of pointCloudView when the page change.\n * @returns\n */\n const updatePointCloudData = async () => {\n if (!currentData?.url || !mainViewInstance) {\n return;\n }\n\n SetPointCloudLoading(dispatch, true);\n await mainViewInstance.loadPCDFile(currentData.url, config?.radius ?? DEFAULT_RADIUS);\n\n // Clear All Data\n pointCloudBoxList.forEach((v) => {\n mainViewInstance?.removeObjectByName(v.id);\n });\n\n if (currentData.result) {\n const boxParamsList = PointCloudUtils.getBoxParamsFromResultList(currentData.result);\n const polygonList = PointCloudUtils.getPolygonListFromResultList(currentData.result);\n\n // Add Init Box\n boxParamsList.forEach((v: IPointCloudBox) => {\n mainViewInstance?.generateBox(v);\n });\n\n ptCtx.setPointCloudResult(boxParamsList);\n ptCtx.setPolygonList(polygonList);\n } else {\n ptCtx.setPointCloudResult([]);\n ptCtx.setPolygonList([]);\n }\n\n mainViewInstance.updateTopCamera();\n\n const valid = jsonParser(currentData.result)?.valid ?? true;\n ptCtx.setPointCloudValid(valid);\n\n // Clear other view data during initialization\n ptCtx.sideViewInstance?.clearAllData();\n ptCtx.backViewInstance?.clearAllData();\n\n // TopView Data Update\n /**\n * Listen to flip\n * 1. Init\n * 2. Reload PointCloud\n * 3. Clear Polygon\n */\n topViewInstance.updateData(currentData.url, currentData.result, {\n radius: config?.radius ?? DEFAULT_RADIUS,\n });\n SetPointCloudLoading(dispatch, false);\n };\n\n return {\n topViewAddBox,\n topViewSelectedChanged,\n topViewUpdateBox,\n sideViewUpdateBox,\n backViewUpdateBox,\n pointCloudBoxListUpdated,\n clearAllResult,\n initPointCloud3d,\n updatePointCloudData,\n };\n};\n"],"names":["this"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import{useRef as f,useEffect as t}from"react";const c=e=>{const r=f(e);return t(()=>{r.current=e},[e]),r};export{c as default};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRefCache.js","sources":["../../src/hooks/useRefCache.ts"],"sourcesContent":["/**\n * @file Cache the operation\n * @createDate 2022-09-27\n * @author Ron <ron.f.luo@gmail.com>\n */\n\nimport { useRef, useEffect } from 'react';\n\nconst useRefCache = <T>(data: T) => {\n const ref = useRef<T>(data);\n useEffect(() => {\n ref.current = data\n }, [data]);\n return ref;\n};\n\nexport default useRefCache;\n"],"names":[],"mappings":";;AAQM,MAAA,WAAA,GAAc,CAAI,IAAY,KAAA;AAClC,EAAA,MAAM,MAAM,MAAU,CAAA,IAAA,CAAA,CAAA;AACtB,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,GAAA,CAAI,OAAU,GAAA,IAAA,CAAA;AAAA,GAAA,EACb,CAAC,IAAA,CAAA,CAAA,CAAA;AACJ,EAAO,OAAA,GAAA,CAAA;AAAA;;;;"}
@@ -1 +1 @@
1
- import{getFormatSize as ue}from"../../components/customResizeHook/index.js";import ae from"../../constant/styleString.js";import{ANNOTATION_ACTIONS as r}from"../Actions.js";import{jsonParser as U}from"../../utils/index.js";import x from"../../utils/AnnotationDataUtils.js";import{ConfigUtils as ce}from"../../utils/ConfigUtils.js";import{composeResultWithBasicImgInfo as de,composeResult as pe}from"../../utils/data.js";import F from"../../utils/StepUtils.js";import Z from"../../utils/ToolUtils.js";import{CommonToolUtils as ge,AnnotationEngine as _e,ImgUtils as fe}from"@labelbee/lb-annotation";import{i18n as Q}from"@labelbee/lb-utils";import{message as ee}from"antd/es";import Ie from"lodash";import{SetAnnotationLoading as w}from"./actionCreators.js";var me=Object.defineProperty,Se=Object.defineProperties,Te=Object.getOwnPropertyDescriptors,te=Object.getOwnPropertySymbols,ve=Object.prototype.hasOwnProperty,Le=Object.prototype.propertyIsEnumerable,oe=(e,t,n)=>t in e?me(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,l=(e,t)=>{for(var n in t||(t={}))ve.call(t,n)&&oe(e,n,t[n]);if(te)for(var n of te(t))Le.call(t,n)&&oe(e,n,t[n]);return e},a=(e,t)=>Se(e,Te(t)),ne=(e,t,n)=>new Promise((g,c)=>{var f=_=>{try{T(n.next(_))}catch(O){c(O)}},S=_=>{try{T(n.throw(_))}catch(O){c(O)}},T=_=>_.done?g(_.value):Promise.resolve(_.value).then(f,S);T((n=n.apply(e,t)).next())});const R=(e,t)=>e.find(n=>n.step===t),Ee={annotationEngine:null,toolInstance:null,imgList:[],config:"{}",imgIndex:-1,basicIndex:0,imgPageSize:1,step:1,stepList:[],imgNode:new Image,basicResultList:[],resultList:[],stepProgress:0,loading:!1,triggerEventAfterIndexChanged:!1,pointCloudLoading:!1},Ae=e=>{const{imgList:t,imgPageSize:n}=e;return Math.ceil(t.length/n)},se=(e,t)=>e.reduce((n,g)=>{if(g){const c=g.result;if(U(c)[`step_${t}`])return n+1}return n},0)/e.length,De=(e,t)=>{const{step:n,stepList:g}=e,c=F.getCurrentStepInfo(n,g),f=ce.jsonParser(c.config);if(Z.isVideoTool(c==null?void 0:c.tool)||Z.isPointCloudTool(c==null?void 0:c.tool))return;const S=document.getElementById("toolContainer");if(!S)throw"Not exist dom named id-toolContainer";const T=ue({width:window.innerWidth,height:window.innerHeight}),_=new _e({container:S,toolName:c.tool,size:T,imgNode:t,config:f,style:JSON.parse(ae)});return{toolInstance:_==null?void 0:_.toolInstance,annotationEngine:_}},ye=(e,t)=>(n,g)=>ne(void 0,null,function*(){const{stepList:c,step:f}=g().annotation,S=F.currentToolIsVideo(f,c),T=F.currentToolIsPointCloud(f,c);if(w(n,!0),yield n(Pe(e)),S||T){n(Oe(e));return}n(Ce(e,t))}),Pe=e=>(t,n)=>ne(void 0,null,function*(){const{getFileData:g,imgList:c}=n().annotation;if(g){const f=yield g(c[e],e);t({type:r.SET_FILE_DATA,payload:{fileData:f,index:e}})}}),Oe=e=>t=>{w(t,!1),t({type:r.LOAD_FILE_DATA,payload:{nextIndex:e}})},Ce=(e,t)=>(n,g)=>{var c;const{toolInstance:f,imgList:S}=g().annotation,T=(c=S==null?void 0:S[e])==null?void 0:c.url;fe.load(T).then(_=>{w(n,!1),n({type:r.LOAD_FILE_DATA,payload:{imgNode:_,nextIndex:e,nextBasicIndex:t}})}).catch(()=>{w(n,!1),f==null||f.setErrorImg(),n({type:r.LOAD_FILE_DATA,payload:{nextIndex:e,nextBasicIndex:t}})})},Re=(e=Ee,t)=>{var n,g,c,f,S,T,_,O,j,G,V,z,H,M,$,k,K,W,X,q;switch(t.type){case r.UPDATE_TOOL_INSTANCE:return a(l({},e),{toolInstance:t.payload.toolInstance});case r.UPDATE_IMG_LIST:return a(l({},e),{imgList:t.payload.imgList});case r.CALC_STEP_PROGRESS:{const{imgList:o,step:s}=e,i=se(o,s);return a(l({},e),{stepProgress:i})}case r.SUBMIT_FILE_DATA:{const{imgList:o,imgIndex:s,step:i,stepList:u,toolInstance:p,onSubmit:d,resultList:v}=e;if(!p||!o[s])return e;const I=((n=o[s])==null?void 0:n.result)||"",[,m,L]=(g=p==null?void 0:p.exportData())!=null?g:[],D=(f=(c=p==null?void 0:p.exportCustomData)==null?void 0:c.call(p))!=null?f:{},E=de(I,m),y=pe(E,{step:i,stepList:u},{rect:v},D);o[s].result=x.dataCorrection(y,I,i,u),L&&(o[s]=l(l({},o[s]),L)),d&&d([o[s]],(S=t.payload)==null?void 0:S.submitType,s);const P=se(o,i);return a(l({},e),{stepProgress:P,imgList:o})}case r.SAVE_RESULT:{const{imgList:o,imgIndex:s,onSave:i}=e;return i==null||i(o[s],s,o),l({},e)}case r.SUBMIT_RESULT:{const{imgList:o,basicIndex:s,resultList:i,toolInstance:u,basicResultList:p}=e;if(!u)return e;const[d]=(T=u==null?void 0:u.exportData())!=null?T:[];let v=d;if((p==null?void 0:p.length)>0){const I=(_=p[s])==null?void 0:_.id,m=d.map(L=>a(l({},L),{sourceID:I}));v=Ie.cloneDeep(i).filter(L=>L.sourceID!==I),v.push(...m)}return a(l({},e),{resultList:v,imgList:o})}case r.SET_BASIC_INDEX:{const{toolInstance:o,step:s,imgList:i,imgIndex:u,stepList:p,annotationEngine:d,resultList:v,basicResultList:I}=e;if(!o||!d)return e;const m=t.payload.basicIndex,L=(O=I[m])==null?void 0:O.id,D=U((j=i[u])==null?void 0:j.result),E=(v||[]).filter(B=>B.sourceID===L),y=R(p,s),{dataSourceStep:P,tool:h}=y,N=R(p,P);let A=[];return P&&h&&(A=(G=D[`step_${P}`])==null?void 0:G.result,(A==null?void 0:A.length)>0?(d==null||d.setBasicInfo(N.tool,A[m]),d==null||d.launchOperation()):(d==null||d.setBasicInfo(N.tool),d==null||d.forbidOperation(),ee.info(Q.t("NoDependency")))),o==null||o.setResult(E),o==null||o.history.initRecord(E,!0),a(l({},e),{basicIndex:m})}case r.SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED:{const{triggerEventAfterIndexChanged:o}=t.payload;return a(l({},e),{triggerEventAfterIndexChanged:!!o})}case r.LOAD_FILE_DATA:{const{imgList:o,step:s,toolInstance:i,annotationEngine:u,stepList:p}=e;if(!i)return a(l({},e),{imgIndex:t.payload.nextIndex});const d=F.getCurrentStepInfo(s,p),{nextIndex:v,imgNode:I,nextBasicIndex:m,imgError:L}=t.payload,D=m!=null?m:0,E=U((V=o[v])==null?void 0:V.result),y=E[`step_${d.step}`],P=!y,h={rotate:(z=E.rotate)!=null?z:0,valid:(H=E.valid)!=null?H:!0};I&&L!==!0?u==null||u.setImgNode(I,h):i==null||i.setValid(h.valid);const N=R(p,d.step),{dataSourceStep:A,tool:B}=N,J=R(p,A),Y=A&&B,C=($=(M=E[`step_${A}`])==null?void 0:M.result)!=null?$:[],b=x.getInitialResultList(y==null?void 0:y.result,i,N,C,P);if(u==null||u.launchOperation(),Y&&((C==null?void 0:C.length)>0?u==null||u.setBasicInfo(J.tool,C[D]):(u==null||u.setBasicInfo(J.tool),u==null||u.forbidOperation(),ee.info(Q.t("NoDependency")))),d.tool!=="check"){const le=(K=(k=C[D])==null?void 0:k.id)!=null?K:"",ie=Y?b.filter(re=>ge.isSameSourceID(re.sourceID,le)):b;i==null||i.setResult(ie),i==null||i.history.initRecord(b,!0)}return a(l({},e),{imgIndex:v,basicIndex:D,basicResultList:C,resultList:b})}case r.UPDATE_ANNOTATION_CONFIG:return a(l({},e),{config:(W=t.payload.config)!=null?W:"{}"});case r.SET_TASK_STEP_LIST:{const{stepList:o}=t.payload;return a(l({},e),{stepList:o})}case r.SET_TASK_CONFIG:{const{stepList:o,step:s}=t.payload;return a(l({},e),{stepList:o,step:s})}case r.INIT_TOOL:{const{imgNode:o}=e,s=De(e,o);if(s){const{toolInstance:i,annotationEngine:u}=s;return a(l({},e),{toolInstance:i,annotationEngine:u})}return l({},e)}case r.SET_TOOL:{const o=(X=t.payload)==null?void 0:X.instance;return o?a(l({},e),{toolInstance:o}):l({},e)}case r.UPDATE_ON_SUBMIT:return a(l({},e),{onSubmit:t.payload.onSubmit});case r.UPDATE_ON_SAVE:return a(l({},e),{onSave:t.payload.onSave});case r.UPDATE_ON_PAGE_CHANGE:return a(l({},e),{onPageChange:t.payload.onPageChange});case r.UPDATE_ON_STEP_CHANGE:return a(l({},e),{onStepChange:t.payload.onStepChange});case r.UPDATE_GET_FILE_DATA:return a(l({},e),{getFileData:t.payload.getFileData});case r.UPDATE_PAGE_SIZE:return a(l({},e),{pageSize:t.payload.pageSize});case r.UPDATE_LOAD_FILE_LIST:return a(l({},e),{loadFileList:t.payload.loadFileList});case r.SKIP_BEFORE_PAGE_TURNING:return a(l({},e),{skipBeforePageTurning:t.payload.skipBeforePageTurning});case r.SET_FILE_DATA:{const{fileData:o,index:s}=t.payload,{imgList:i}=e,u=[...i];return u[s]=l(l({},u[s]),o),a(l({},e),{imgList:u})}case r.UPDATE_ROTATE:{const{toolInstance:o}=e;return o==null||o.updateRotate(),e}case r.COPY_BACKWARD_RESULT:{const{toolInstance:o,imgIndex:s,imgList:i,step:u}=e;if(!o)return e;if(s===0||s>=i.length)return console.error("\u65E0\u6CD5\u590D\u5236\u8FB9\u754C\u5916\u7684\u5185\u5BB9"),e;const p=i[s-1].result;if(!p)return e;const d=x.copyResultChange(p,u,(q=i[s].result)!=null?q:"");i[s]=a(l({},i[s]),{result:d});const I=U(d)[`step_${u}`],m=(I==null?void 0:I.result)||[];return o==null||o.setResult(m),o==null||o.history.pushHistory(m),a(l({},e),{imgList:[...i]})}case r.SET_STEP:{const{stepList:o,annotationEngine:s}=e,{toStep:i}=t.payload;if(!s)return e;const u=R(o,i);return s==null||s.setToolName(u.tool,u.config),a(l({},e),{step:i,toolInstance:s==null?void 0:s.toolInstance})}case r.SET_LOADING:{const{loading:o}=t.payload;return a(l({},e),{loading:!!o})}case r.SET_POINT_CLOUD_LOADING:{const{pointCloudLoading:o}=t.payload;return a(l({},e),{pointCloudLoading:!!o})}default:return e}};export{ye as LoadFileAndFileData,Re as annotationReducer,R as getStepConfig,Ae as getTotalPage};
1
+ import{getFormatSize as ue}from"../../components/customResizeHook/index.js";import ae from"../../constant/styleString.js";import{ANNOTATION_ACTIONS as r}from"../Actions.js";import{jsonParser as U}from"../../utils/index.js";import x from"../../utils/AnnotationDataUtils.js";import{ConfigUtils as ce}from"../../utils/ConfigUtils.js";import{composeResultWithBasicImgInfo as de,composeResult as pe}from"../../utils/data.js";import F from"../../utils/StepUtils.js";import Z from"../../utils/ToolUtils.js";import{CommonToolUtils as ge,AnnotationEngine as _e,ImgUtils as fe}from"@labelbee/lb-annotation";import{i18n as Q}from"@labelbee/lb-utils";import{message as ee}from"antd/es";import Ie from"lodash";import{SetAnnotationLoading as w}from"./actionCreators.js";var me=Object.defineProperty,Se=Object.defineProperties,Te=Object.getOwnPropertyDescriptors,te=Object.getOwnPropertySymbols,ve=Object.prototype.hasOwnProperty,Le=Object.prototype.propertyIsEnumerable,oe=(e,t,n)=>t in e?me(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,l=(e,t)=>{for(var n in t||(t={}))ve.call(t,n)&&oe(e,n,t[n]);if(te)for(var n of te(t))Le.call(t,n)&&oe(e,n,t[n]);return e},a=(e,t)=>Se(e,Te(t)),ne=(e,t,n)=>new Promise((g,c)=>{var f=_=>{try{T(n.next(_))}catch(O){c(O)}},S=_=>{try{T(n.throw(_))}catch(O){c(O)}},T=_=>_.done?g(_.value):Promise.resolve(_.value).then(f,S);T((n=n.apply(e,t)).next())});const R=(e,t)=>e.find(n=>n.step===t),Ee={annotationEngine:null,toolInstance:null,imgList:[],config:"{}",imgIndex:-1,basicIndex:0,imgPageSize:1,step:1,stepList:[],imgNode:new Image,basicResultList:[],resultList:[],stepProgress:0,loading:!1,triggerEventAfterIndexChanged:!1,pointCloudLoading:!1},Ae=e=>{const{imgList:t,imgPageSize:n}=e;return Math.ceil(t.length/n)},se=(e,t)=>e.reduce((n,g)=>{if(g){const c=g.result;if(U(c)[`step_${t}`])return n+1}return n},0)/e.length,De=(e,t)=>{const{step:n,stepList:g}=e,c=F.getCurrentStepInfo(n,g),f=ce.jsonParser(c.config);if(Z.isVideoTool(c==null?void 0:c.tool)||Z.isPointCloudTool(c==null?void 0:c.tool))return;const S=document.getElementById("toolContainer");if(!S)throw"Not exist dom named id-toolContainer";const T=ue({width:window.innerWidth,height:window.innerHeight}),_=new _e({container:S,toolName:c.tool,size:T,imgNode:t,config:f,style:JSON.parse(ae)});return{toolInstance:_==null?void 0:_.toolInstance,annotationEngine:_}},ye=(e,t)=>(n,g)=>ne(void 0,null,function*(){const{stepList:c,step:f}=g().annotation,S=F.currentToolIsVideo(f,c),T=F.currentToolIsPointCloud(f,c);if(w(n,!0),yield n(Pe(e)),S||T){n(Oe(e));return}n(Ce(e,t))}),Pe=e=>(t,n)=>ne(void 0,null,function*(){const{getFileData:g,imgList:c}=n().annotation;if(g){const f=yield g(c[e],e);t({type:r.SET_FILE_DATA,payload:{fileData:f,index:e}})}}),Oe=e=>t=>{w(t,!1),t({type:r.LOAD_FILE_DATA,payload:{nextIndex:e}})},Ce=(e,t)=>(n,g)=>{var c;const{toolInstance:f,imgList:S}=g().annotation,T=(c=S==null?void 0:S[e])==null?void 0:c.url;fe.load(T).then(_=>{w(n,!1),n({type:r.LOAD_FILE_DATA,payload:{imgNode:_,nextIndex:e,nextBasicIndex:t}})}).catch(()=>{w(n,!1),f==null||f.setErrorImg(),n({type:r.LOAD_FILE_DATA,payload:{nextIndex:e,nextBasicIndex:t}})})},Re=(e=Ee,t)=>{var n,g,c,f,S,T,_,O,j,G,V,z,H,M,$,k,K,W,X,q;switch(t.type){case r.UPDATE_TOOL_INSTANCE:return a(l({},e),{toolInstance:t.payload.toolInstance});case r.UPDATE_IMG_LIST:return a(l({},e),{imgList:t.payload.imgList});case r.CALC_STEP_PROGRESS:{const{imgList:o,step:s}=e,i=se(o,s);return a(l({},e),{stepProgress:i})}case r.SUBMIT_FILE_DATA:{const{imgList:o,imgIndex:s,step:i,stepList:u,toolInstance:p,onSubmit:d,resultList:v}=e;if(!p||!o[s])return e;const I=((n=o[s])==null?void 0:n.result)||"",[,m,L]=(g=p==null?void 0:p.exportData())!=null?g:[],D=(f=(c=p==null?void 0:p.exportCustomData)==null?void 0:c.call(p))!=null?f:{},E=de(I,m),y=pe(E,{step:i,stepList:u},{rect:v},D);o[s].result=x.dataCorrection(y,I,i,u),L&&(o[s]=l(l({},o[s]),L)),d&&d([o[s]],(S=t.payload)==null?void 0:S.submitType,s);const P=se(o,i);return a(l({},e),{stepProgress:P,imgList:o})}case r.SAVE_RESULT:{const{imgList:o,imgIndex:s,onSave:i}=e;return i==null||i(o[s],s,o),l({},e)}case r.SUBMIT_RESULT:{const{imgList:o,basicIndex:s,resultList:i,toolInstance:u,basicResultList:p}=e;if(!u)return e;const[d]=(T=u==null?void 0:u.exportData())!=null?T:[];let v=d;if((p==null?void 0:p.length)>0){const I=(_=p[s])==null?void 0:_.id,m=d.map(L=>a(l({},L),{sourceID:I}));v=Ie.cloneDeep(i).filter(L=>L.sourceID!==I),v.push(...m)}return a(l({},e),{resultList:v,imgList:o})}case r.SET_BASIC_INDEX:{const{toolInstance:o,step:s,imgList:i,imgIndex:u,stepList:p,annotationEngine:d,resultList:v,basicResultList:I}=e;if(!o||!d)return e;const m=t.payload.basicIndex,L=(O=I[m])==null?void 0:O.id,D=U((j=i[u])==null?void 0:j.result),E=(v||[]).filter(B=>B.sourceID===L),y=R(p,s),{dataSourceStep:P,tool:h}=y,N=R(p,P);let A=[];return P&&h&&(A=(G=D[`step_${P}`])==null?void 0:G.result,(A==null?void 0:A.length)>0?(d==null||d.setBasicInfo(N.tool,A[m]),d==null||d.launchOperation()):(d==null||d.setBasicInfo(N.tool),d==null||d.forbidOperation(),ee.info(Q.t("NoDependency")))),o==null||o.setResult(E),o==null||o.history.initRecord(E,!0),a(l({},e),{basicIndex:m})}case r.SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED:{const{triggerEventAfterIndexChanged:o}=t.payload;return a(l({},e),{triggerEventAfterIndexChanged:!!o})}case r.LOAD_FILE_DATA:{const{imgList:o,step:s,toolInstance:i,annotationEngine:u,stepList:p}=e;if(!i)return a(l({},e),{imgIndex:t.payload.nextIndex});const d=F.getCurrentStepInfo(s,p),{nextIndex:v,imgNode:I,nextBasicIndex:m,imgError:L}=t.payload,D=m!=null?m:0,E=U((V=o[v])==null?void 0:V.result),y=E[`step_${d.step}`],P=!y,h={rotate:(z=E.rotate)!=null?z:0,valid:(H=E.valid)!=null?H:!0};I&&L!==!0?u==null||u.setImgNode(I,h):i==null||i.setValid(h.valid);const N=R(p,d.step),{dataSourceStep:A,tool:B}=N,J=R(p,A),Y=A&&B,C=($=(M=E[`step_${A}`])==null?void 0:M.result)!=null?$:[],b=x.getInitialResultList(y==null?void 0:y.result,i,N,C,P);if(u==null||u.launchOperation(),Y&&((C==null?void 0:C.length)>0?u==null||u.setBasicInfo(J.tool,C[D]):(u==null||u.setBasicInfo(J.tool),u==null||u.forbidOperation(),ee.info(Q.t("NoDependency")))),d.tool!=="check"){const le=(K=(k=C[D])==null?void 0:k.id)!=null?K:"",ie=Y?b.filter(re=>ge.isSameSourceID(re.sourceID,le)):b;i==null||i.history.initRecord(b,!0),i==null||i.setResult(ie)}return a(l({},e),{imgIndex:v,basicIndex:D,basicResultList:C,resultList:b})}case r.UPDATE_ANNOTATION_CONFIG:return a(l({},e),{config:(W=t.payload.config)!=null?W:"{}"});case r.SET_TASK_STEP_LIST:{const{stepList:o}=t.payload;return a(l({},e),{stepList:o})}case r.SET_TASK_CONFIG:{const{stepList:o,step:s}=t.payload;return a(l({},e),{stepList:o,step:s})}case r.INIT_TOOL:{const{imgNode:o}=e,s=De(e,o);if(s){const{toolInstance:i,annotationEngine:u}=s;return a(l({},e),{toolInstance:i,annotationEngine:u})}return l({},e)}case r.SET_TOOL:{const o=(X=t.payload)==null?void 0:X.instance;return o?a(l({},e),{toolInstance:o}):l({},e)}case r.UPDATE_ON_SUBMIT:return a(l({},e),{onSubmit:t.payload.onSubmit});case r.UPDATE_ON_SAVE:return a(l({},e),{onSave:t.payload.onSave});case r.UPDATE_ON_PAGE_CHANGE:return a(l({},e),{onPageChange:t.payload.onPageChange});case r.UPDATE_ON_STEP_CHANGE:return a(l({},e),{onStepChange:t.payload.onStepChange});case r.UPDATE_GET_FILE_DATA:return a(l({},e),{getFileData:t.payload.getFileData});case r.UPDATE_PAGE_SIZE:return a(l({},e),{pageSize:t.payload.pageSize});case r.UPDATE_LOAD_FILE_LIST:return a(l({},e),{loadFileList:t.payload.loadFileList});case r.SKIP_BEFORE_PAGE_TURNING:return a(l({},e),{skipBeforePageTurning:t.payload.skipBeforePageTurning});case r.SET_FILE_DATA:{const{fileData:o,index:s}=t.payload,{imgList:i}=e,u=[...i];return u[s]=l(l({},u[s]),o),a(l({},e),{imgList:u})}case r.UPDATE_ROTATE:{const{toolInstance:o}=e;return o==null||o.updateRotate(),e}case r.COPY_BACKWARD_RESULT:{const{toolInstance:o,imgIndex:s,imgList:i,step:u}=e;if(!o)return e;if(s===0||s>=i.length)return console.error("\u65E0\u6CD5\u590D\u5236\u8FB9\u754C\u5916\u7684\u5185\u5BB9"),e;const p=i[s-1].result;if(!p)return e;const d=x.copyResultChange(p,u,(q=i[s].result)!=null?q:"");i[s]=a(l({},i[s]),{result:d});const I=U(d)[`step_${u}`],m=(I==null?void 0:I.result)||[];return o==null||o.setResult(m),o==null||o.history.pushHistory(m),a(l({},e),{imgList:[...i]})}case r.SET_STEP:{const{stepList:o,annotationEngine:s}=e,{toStep:i}=t.payload;if(!s)return e;const u=R(o,i);return s==null||s.setToolName(u.tool,u.config),a(l({},e),{step:i,toolInstance:s==null?void 0:s.toolInstance})}case r.SET_LOADING:{const{loading:o}=t.payload;return a(l({},e),{loading:!!o})}case r.SET_POINT_CLOUD_LOADING:{const{pointCloudLoading:o}=t.payload;return a(l({},e),{pointCloudLoading:!!o})}default:return e}};export{ye as LoadFileAndFileData,Re as annotationReducer,R as getStepConfig,Ae as getTotalPage};
@@ -1 +1 @@
1
- {"version":3,"file":"reducer.js","sources":["../../../src/store/annotation/reducer.ts"],"sourcesContent":["import { getFormatSize } from '@/components/customResizeHook';\nimport styleString from '@/constant/styleString';\nimport { ANNOTATION_ACTIONS } from '@/store/Actions';\nimport { jsonParser } from '@/utils';\nimport AnnotationDataUtils from '@/utils/AnnotationDataUtils';\nimport { ConfigUtils } from '@/utils/ConfigUtils';\nimport { composeResult, composeResultWithBasicImgInfo } from '@/utils/data';\nimport StepUtils from '@/utils/StepUtils';\nimport ToolUtils from '@/utils/ToolUtils';\nimport { AnnotationEngine, CommonToolUtils, ImgUtils } from '@labelbee/lb-annotation';\nimport { i18n } from '@labelbee/lb-utils';\nimport { message } from 'antd/es';\nimport _ from 'lodash';\nimport { SetAnnotationLoading } from './actionCreators';\nimport { AnnotationActionTypes, AnnotationState } from './types';\n\nexport const getStepConfig = (stepList: any[], step: number) =>\n stepList.find((i) => i.step === step);\n\nconst initialState: AnnotationState = {\n annotationEngine: null,\n toolInstance: null,\n imgList: [],\n config: '{}',\n imgIndex: -1,\n basicIndex: 0,\n imgPageSize: 1,\n step: 1,\n stepList: [],\n imgNode: new Image(),\n basicResultList: [],\n resultList: [],\n stepProgress: 0,\n loading: false,\n triggerEventAfterIndexChanged: false,\n\n pointCloudLoading: false,\n};\n\n/**\n * 获取当前文件列表的总页数\n * @param state\n */\nexport const getTotalPage = (state: AnnotationState) => {\n const { imgList, imgPageSize } = state;\n return Math.ceil(imgList.length / imgPageSize);\n};\n\nconst calcStepProgress = (fileList: any[], step: number) =>\n fileList.reduce((pre, i) => {\n if (i) {\n const resultStr = i.result;\n const resultObject = jsonParser(resultStr);\n if (resultObject[`step_${step}`]) {\n return pre + 1;\n }\n }\n return pre;\n }, 0) / fileList.length;\n\nconst updateToolInstance = (annotation: AnnotationState, imgNode: HTMLImageElement) => {\n const { step, stepList } = annotation;\n const stepConfig = StepUtils.getCurrentStepInfo(step, stepList);\n const config = ConfigUtils.jsonParser(stepConfig.config);\n\n // 视频工具不支持实例化\n if (ToolUtils.isVideoTool(stepConfig?.tool)) {\n return;\n }\n\n // TODO: 点云实例化对接\n if (ToolUtils.isPointCloudTool(stepConfig?.tool)) {\n return;\n }\n\n const container = document.getElementById('toolContainer');\n\n if (!container) {\n throw `Not exist dom named id-toolContainer`;\n }\n\n const canvasSize = getFormatSize({ width: window.innerWidth, height: window.innerHeight });\n const annotationEngine = new AnnotationEngine({\n container,\n toolName: stepConfig.tool,\n size: canvasSize,\n imgNode,\n config,\n style: JSON.parse(styleString),\n });\n\n return { toolInstance: annotationEngine?.toolInstance, annotationEngine };\n};\n\n/**\n * 初始化imgNode并加载数据\n * @param nextIndex\n * @param nextBasicIndex\n */\nexport const LoadFileAndFileData =\n (nextIndex: number, nextBasicIndex?: number): any =>\n async (dispatch: any, getState: any) => {\n const { stepList, step } = getState().annotation;\n const currentIsVideo = StepUtils.currentToolIsVideo(step, stepList);\n const currentIsPointCloud = StepUtils.currentToolIsPointCloud(step, stepList);\n\n SetAnnotationLoading(dispatch, true);\n\n await dispatch(TryGetFileDataByAPI(nextIndex));\n\n if (currentIsVideo || currentIsPointCloud) {\n dispatch(AfterVideoLoaded(nextIndex));\n return;\n }\n\n dispatch(AfterImageLoaded(nextIndex, nextBasicIndex));\n };\n\n/**\n * 支持并优先外部传入的获取文件接口\n * @param nextIndex\n */\nconst TryGetFileDataByAPI = (nextIndex: number) => async (dispatch: any, getState: any) => {\n const { getFileData, imgList } = getState().annotation;\n if (getFileData) {\n const fileData = await getFileData(imgList[nextIndex], nextIndex);\n dispatch({\n type: ANNOTATION_ACTIONS.SET_FILE_DATA,\n payload: {\n fileData,\n index: nextIndex,\n },\n });\n }\n};\n\nconst AfterVideoLoaded = (nextIndex: number) => (dispatch: any) => {\n SetAnnotationLoading(dispatch, false);\n\n dispatch({\n type: ANNOTATION_ACTIONS.LOAD_FILE_DATA,\n payload: {\n nextIndex,\n },\n });\n};\n\nconst AfterImageLoaded =\n (nextIndex: number, nextBasicIndex?: number) => (dispatch: any, getState: any) => {\n const { toolInstance, imgList } = getState().annotation;\n const url = imgList?.[nextIndex]?.url;\n ImgUtils.load(url)\n .then((imgNode: HTMLImageElement) => {\n SetAnnotationLoading(dispatch, false);\n\n dispatch({\n type: ANNOTATION_ACTIONS.LOAD_FILE_DATA,\n payload: {\n imgNode,\n nextIndex,\n nextBasicIndex,\n },\n });\n })\n .catch(() => {\n SetAnnotationLoading(dispatch, false);\n toolInstance?.setErrorImg();\n dispatch({\n type: ANNOTATION_ACTIONS.LOAD_FILE_DATA,\n payload: {\n nextIndex,\n nextBasicIndex,\n },\n });\n });\n };\n\nexport const annotationReducer = (\n state = initialState,\n action: AnnotationActionTypes,\n): AnnotationState => {\n switch (action.type) {\n case ANNOTATION_ACTIONS.UPDATE_TOOL_INSTANCE: {\n return {\n ...state,\n toolInstance: action.payload.toolInstance,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_IMG_LIST: {\n return {\n ...state,\n imgList: action.payload.imgList,\n };\n }\n\n case ANNOTATION_ACTIONS.CALC_STEP_PROGRESS: {\n const { imgList, step } = state;\n\n const stepProgress = calcStepProgress(imgList, step);\n\n return {\n ...state,\n stepProgress,\n };\n }\n\n case ANNOTATION_ACTIONS.SUBMIT_FILE_DATA: {\n const { imgList, imgIndex, step, stepList, toolInstance, onSubmit, resultList } = state;\n if (!toolInstance || !imgList[imgIndex]) {\n return state;\n }\n\n const oldResultString = imgList[imgIndex]?.result || '';\n const [, basicImgInfo, extraData] = toolInstance?.exportData() ?? [];\n const customObject = toolInstance?.exportCustomData?.() ?? {};\n\n const resultWithBasicInfo = composeResultWithBasicImgInfo(oldResultString, basicImgInfo);\n const newResultString = composeResult(\n resultWithBasicInfo,\n { step, stepList },\n { rect: resultList },\n customObject,\n );\n\n imgList[imgIndex].result = AnnotationDataUtils.dataCorrection(\n newResultString,\n oldResultString,\n step,\n stepList,\n );\n\n if (extraData) {\n imgList[imgIndex] = {\n ...imgList[imgIndex],\n ...extraData\n } \n }\n\n if (onSubmit) {\n onSubmit([imgList[imgIndex]], action.payload?.submitType, imgIndex);\n }\n\n const stepProgress = calcStepProgress(imgList, step);\n return {\n ...state,\n stepProgress,\n imgList,\n };\n }\n\n case ANNOTATION_ACTIONS.SAVE_RESULT: {\n const { imgList, imgIndex, onSave } = state;\n onSave?.(imgList[imgIndex], imgIndex, imgList);\n return {\n ...state,\n };\n }\n\n /**\n * For data storage in dependent states\n *\n * Features:\n * 1. Get Data from ToolInstance (If it use toolInstance)\n * 2. Filter Data By BasicResultList\n */\n case ANNOTATION_ACTIONS.SUBMIT_RESULT: {\n const { imgList, basicIndex, resultList, toolInstance, basicResultList } = state;\n if (!toolInstance) {\n return state;\n }\n\n const [exportResult] = toolInstance?.exportData() ?? [];\n\n let previousResultList = exportResult;\n\n if (basicResultList?.length > 0) {\n const sourceID = basicResultList[basicIndex]?.id;\n const newResultData = exportResult.map((i: any) => ({ ...i, sourceID }));\n previousResultList = _.cloneDeep(resultList).filter((i: any) => i.sourceID !== sourceID);\n previousResultList.push(...newResultData);\n }\n\n return {\n ...state,\n resultList: previousResultList,\n imgList,\n };\n }\n\n case ANNOTATION_ACTIONS.SET_BASIC_INDEX: {\n const {\n toolInstance,\n step,\n imgList,\n imgIndex,\n stepList,\n annotationEngine,\n resultList,\n basicResultList,\n } = state;\n\n if (!toolInstance || !annotationEngine) {\n return state;\n }\n\n const nextBasicIndex = action.payload.basicIndex;\n const sourceID = basicResultList[nextBasicIndex]?.id;\n\n const fileResult = jsonParser(imgList[imgIndex]?.result);\n const result = (resultList || []).filter((i) => i.sourceID === sourceID);\n\n const stepConfig = getStepConfig(stepList, step);\n\n const { dataSourceStep, tool } = stepConfig;\n const dependStepConfig = getStepConfig(stepList, dataSourceStep);\n let stepBasicResultList = [];\n\n if (dataSourceStep && tool) {\n stepBasicResultList = fileResult[`step_${dataSourceStep}`]?.result;\n\n if (stepBasicResultList?.length > 0) {\n annotationEngine?.setBasicInfo(\n dependStepConfig.tool,\n stepBasicResultList[nextBasicIndex],\n );\n annotationEngine?.launchOperation();\n } else {\n annotationEngine?.setBasicInfo(dependStepConfig.tool);\n annotationEngine?.forbidOperation();\n message.info(i18n.t('NoDependency'));\n }\n }\n\n toolInstance?.setResult(result);\n toolInstance?.history.initRecord(result, true);\n\n return {\n ...state,\n basicIndex: nextBasicIndex,\n };\n }\n\n case ANNOTATION_ACTIONS.SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED: {\n const { triggerEventAfterIndexChanged } = action.payload;\n return {\n ...state,\n triggerEventAfterIndexChanged: !!triggerEventAfterIndexChanged,\n };\n }\n\n case ANNOTATION_ACTIONS.LOAD_FILE_DATA: {\n const { imgList, step, toolInstance, annotationEngine, stepList } = state;\n\n /**\n * TODO\n * Before: !toolInstance || !annotationEngine\n *\n * The roles of toolInstance and annotationEngine need to be clearly distinguished\n */\n if (!toolInstance) {\n return { ...state, imgIndex: action.payload.nextIndex };\n }\n\n const currentStepInfo = StepUtils.getCurrentStepInfo(step, stepList);\n\n const { nextIndex, imgNode, nextBasicIndex, imgError } = action.payload;\n const basicIndex = nextBasicIndex ?? 0;\n\n const fileResult = jsonParser(imgList[nextIndex]?.result);\n\n const stepResult = fileResult[`step_${currentStepInfo.step}`];\n\n const isInitData = !stepResult; // 是否为初始化数据\n\n const basicImgInfo = {\n rotate: fileResult.rotate ?? 0,\n valid: fileResult.valid ?? true,\n };\n\n if (imgNode && imgError !== true) {\n annotationEngine?.setImgNode(imgNode, basicImgInfo);\n } else {\n // Non-graphical tools to initialize base data\n\n toolInstance?.setValid(basicImgInfo.valid);\n }\n\n const stepConfig = getStepConfig(stepList, currentStepInfo.step);\n\n const { dataSourceStep, tool } = stepConfig;\n const dependStepConfig = getStepConfig(stepList, dataSourceStep);\n const hasDataSourceStep = dataSourceStep && tool;\n const stepBasicResultList = fileResult[`step_${dataSourceStep}`]?.result ?? [];\n\n const result = AnnotationDataUtils.getInitialResultList(\n stepResult?.result,\n toolInstance,\n stepConfig,\n stepBasicResultList,\n isInitData,\n );\n\n annotationEngine?.launchOperation();\n\n if (hasDataSourceStep) {\n if (stepBasicResultList?.length > 0) {\n annotationEngine?.setBasicInfo(dependStepConfig.tool, stepBasicResultList[basicIndex]);\n } else {\n // TODO: 禁用绘制交互,有无依赖之间的操作切换\n annotationEngine?.setBasicInfo(dependStepConfig.tool);\n annotationEngine?.forbidOperation();\n message.info(i18n.t('NoDependency'));\n }\n }\n\n // TODO,非查看模式才允许添加数据\n if (currentStepInfo.tool !== 'check') {\n const sourceID = stepBasicResultList[basicIndex]?.id ?? '';\n const resultForBasicIndex = hasDataSourceStep\n ? result.filter((i: { sourceID: string | number }) =>\n CommonToolUtils.isSameSourceID(i.sourceID, sourceID),\n )\n : result;\n toolInstance?.setResult(resultForBasicIndex);\n toolInstance?.history.initRecord(result, true);\n }\n\n return {\n ...state,\n imgIndex: nextIndex,\n basicIndex,\n basicResultList: stepBasicResultList,\n resultList: result,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_ANNOTATION_CONFIG: {\n return {\n ...state,\n config: action.payload.config ?? '{}',\n };\n }\n\n case ANNOTATION_ACTIONS.SET_TASK_STEP_LIST: {\n const { stepList } = action.payload;\n return {\n ...state,\n stepList,\n };\n }\n \n case ANNOTATION_ACTIONS.SET_TASK_CONFIG: {\n const { stepList, step } = action.payload;\n return {\n ...state,\n stepList,\n step,\n };\n }\n\n case ANNOTATION_ACTIONS.INIT_TOOL: {\n const { imgNode } = state;\n const instance = updateToolInstance(state, imgNode);\n\n if (instance) {\n const { toolInstance, annotationEngine } = instance;\n return {\n ...state,\n toolInstance,\n annotationEngine,\n };\n }\n\n return {\n ...state,\n };\n }\n\n // react hook tool Proprietary operations\n case ANNOTATION_ACTIONS.SET_TOOL: {\n const instance = action.payload?.instance;\n if (instance) {\n return {\n ...state,\n toolInstance: instance,\n // TODO It needs to optimize\n // annotationEngine: {\n // toolInstance: instance,\n // } as any,\n };\n }\n\n return {\n ...state,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_ON_SUBMIT: {\n return {\n ...state,\n onSubmit: action.payload.onSubmit,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_ON_SAVE: {\n return {\n ...state,\n onSave: action.payload.onSave,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_ON_PAGE_CHANGE: {\n return {\n ...state,\n onPageChange: action.payload.onPageChange,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_ON_STEP_CHANGE: {\n return {\n ...state,\n onStepChange: action.payload.onStepChange,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_GET_FILE_DATA: {\n return {\n ...state,\n getFileData: action.payload.getFileData,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_PAGE_SIZE: {\n return {\n ...state,\n pageSize: action.payload.pageSize,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_LOAD_FILE_LIST: {\n return {\n ...state,\n loadFileList: action.payload.loadFileList,\n };\n }\n\n case ANNOTATION_ACTIONS.SKIP_BEFORE_PAGE_TURNING: {\n return {\n ...state,\n skipBeforePageTurning: action.payload.skipBeforePageTurning,\n };\n }\n\n case ANNOTATION_ACTIONS.SET_FILE_DATA: {\n const { fileData, index } = action.payload;\n const { imgList } = state;\n const newImgList = [...imgList];\n newImgList[index] = { ...newImgList[index], ...fileData };\n\n return {\n ...state,\n imgList: newImgList,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_ROTATE: {\n const { toolInstance } = state;\n toolInstance?.updateRotate();\n\n return state;\n }\n\n case ANNOTATION_ACTIONS.COPY_BACKWARD_RESULT: {\n const { toolInstance, imgIndex, imgList, step } = state;\n if (!toolInstance) {\n return state;\n }\n\n if (imgIndex === 0 || imgIndex >= imgList.length) {\n console.error('无法复制边界外的内容');\n return state;\n }\n const backwardResult = imgList[imgIndex - 1].result;\n if (!backwardResult) {\n return state;\n }\n\n const newResult = AnnotationDataUtils.copyResultChange(\n backwardResult,\n step,\n imgList[imgIndex].result ?? '',\n );\n imgList[imgIndex] = {\n ...imgList[imgIndex],\n result: newResult,\n };\n\n // 更新当前的结果\n const fileResult = jsonParser(newResult);\n const stepResult = fileResult[`step_${step}`];\n const result = stepResult?.result || [];\n\n toolInstance?.setResult(result);\n toolInstance?.history.pushHistory(result);\n\n return {\n ...state,\n imgList: [...imgList],\n };\n }\n\n case ANNOTATION_ACTIONS.SET_STEP: {\n const { stepList, annotationEngine } = state;\n const { toStep } = action.payload;\n\n if (!annotationEngine) {\n return state;\n }\n\n const stepConfig = getStepConfig(stepList, toStep);\n annotationEngine?.setToolName(stepConfig.tool, stepConfig.config);\n\n return {\n ...state,\n step: toStep,\n toolInstance: annotationEngine?.toolInstance,\n };\n }\n\n case ANNOTATION_ACTIONS.SET_LOADING: {\n const { loading } = action.payload;\n\n return {\n ...state,\n loading: !!loading,\n };\n }\n\n case ANNOTATION_ACTIONS.SET_POINT_CLOUD_LOADING: {\n const { pointCloudLoading } = action.payload;\n\n return {\n ...state,\n pointCloudLoading: !!pointCloudLoading,\n };\n }\n\n // eslint-disable-next-line no-fallthrough\n default:\n return state;\n }\n};\n"],"names":["this"],"mappings":"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"}
1
+ {"version":3,"file":"reducer.js","sources":["../../../src/store/annotation/reducer.ts"],"sourcesContent":["import { getFormatSize } from '@/components/customResizeHook';\nimport styleString from '@/constant/styleString';\nimport { ANNOTATION_ACTIONS } from '@/store/Actions';\nimport { jsonParser } from '@/utils';\nimport AnnotationDataUtils from '@/utils/AnnotationDataUtils';\nimport { ConfigUtils } from '@/utils/ConfigUtils';\nimport { composeResult, composeResultWithBasicImgInfo } from '@/utils/data';\nimport StepUtils from '@/utils/StepUtils';\nimport ToolUtils from '@/utils/ToolUtils';\nimport { AnnotationEngine, CommonToolUtils, ImgUtils } from '@labelbee/lb-annotation';\nimport { i18n } from '@labelbee/lb-utils';\nimport { message } from 'antd/es';\nimport _ from 'lodash';\nimport { SetAnnotationLoading } from './actionCreators';\nimport { AnnotationActionTypes, AnnotationState } from './types';\n\nexport const getStepConfig = (stepList: any[], step: number) =>\n stepList.find((i) => i.step === step);\n\nconst initialState: AnnotationState = {\n annotationEngine: null,\n toolInstance: null,\n imgList: [],\n config: '{}',\n imgIndex: -1,\n basicIndex: 0,\n imgPageSize: 1,\n step: 1,\n stepList: [],\n imgNode: new Image(),\n basicResultList: [],\n resultList: [],\n stepProgress: 0,\n loading: false,\n triggerEventAfterIndexChanged: false,\n\n pointCloudLoading: false,\n};\n\n/**\n * 获取当前文件列表的总页数\n * @param state\n */\nexport const getTotalPage = (state: AnnotationState) => {\n const { imgList, imgPageSize } = state;\n return Math.ceil(imgList.length / imgPageSize);\n};\n\nconst calcStepProgress = (fileList: any[], step: number) =>\n fileList.reduce((pre, i) => {\n if (i) {\n const resultStr = i.result;\n const resultObject = jsonParser(resultStr);\n if (resultObject[`step_${step}`]) {\n return pre + 1;\n }\n }\n return pre;\n }, 0) / fileList.length;\n\nconst updateToolInstance = (annotation: AnnotationState, imgNode: HTMLImageElement) => {\n const { step, stepList } = annotation;\n const stepConfig = StepUtils.getCurrentStepInfo(step, stepList);\n const config = ConfigUtils.jsonParser(stepConfig.config);\n\n // 视频工具不支持实例化\n if (ToolUtils.isVideoTool(stepConfig?.tool)) {\n return;\n }\n\n // TODO: 点云实例化对接\n if (ToolUtils.isPointCloudTool(stepConfig?.tool)) {\n return;\n }\n\n const container = document.getElementById('toolContainer');\n\n if (!container) {\n throw `Not exist dom named id-toolContainer`;\n }\n\n const canvasSize = getFormatSize({ width: window.innerWidth, height: window.innerHeight });\n const annotationEngine = new AnnotationEngine({\n container,\n toolName: stepConfig.tool,\n size: canvasSize,\n imgNode,\n config,\n style: JSON.parse(styleString),\n });\n\n return { toolInstance: annotationEngine?.toolInstance, annotationEngine };\n};\n\n/**\n * 初始化imgNode并加载数据\n * @param nextIndex\n * @param nextBasicIndex\n */\nexport const LoadFileAndFileData =\n (nextIndex: number, nextBasicIndex?: number): any =>\n async (dispatch: any, getState: any) => {\n const { stepList, step } = getState().annotation;\n const currentIsVideo = StepUtils.currentToolIsVideo(step, stepList);\n const currentIsPointCloud = StepUtils.currentToolIsPointCloud(step, stepList);\n\n SetAnnotationLoading(dispatch, true);\n\n await dispatch(TryGetFileDataByAPI(nextIndex));\n\n if (currentIsVideo || currentIsPointCloud) {\n dispatch(AfterVideoLoaded(nextIndex));\n return;\n }\n\n dispatch(AfterImageLoaded(nextIndex, nextBasicIndex));\n };\n\n/**\n * 支持并优先外部传入的获取文件接口\n * @param nextIndex\n */\nconst TryGetFileDataByAPI = (nextIndex: number) => async (dispatch: any, getState: any) => {\n const { getFileData, imgList } = getState().annotation;\n if (getFileData) {\n const fileData = await getFileData(imgList[nextIndex], nextIndex);\n dispatch({\n type: ANNOTATION_ACTIONS.SET_FILE_DATA,\n payload: {\n fileData,\n index: nextIndex,\n },\n });\n }\n};\n\nconst AfterVideoLoaded = (nextIndex: number) => (dispatch: any) => {\n SetAnnotationLoading(dispatch, false);\n\n dispatch({\n type: ANNOTATION_ACTIONS.LOAD_FILE_DATA,\n payload: {\n nextIndex,\n },\n });\n};\n\nconst AfterImageLoaded =\n (nextIndex: number, nextBasicIndex?: number) => (dispatch: any, getState: any) => {\n const { toolInstance, imgList } = getState().annotation;\n const url = imgList?.[nextIndex]?.url;\n ImgUtils.load(url)\n .then((imgNode: HTMLImageElement) => {\n SetAnnotationLoading(dispatch, false);\n\n dispatch({\n type: ANNOTATION_ACTIONS.LOAD_FILE_DATA,\n payload: {\n imgNode,\n nextIndex,\n nextBasicIndex,\n },\n });\n })\n .catch(() => {\n SetAnnotationLoading(dispatch, false);\n toolInstance?.setErrorImg();\n dispatch({\n type: ANNOTATION_ACTIONS.LOAD_FILE_DATA,\n payload: {\n nextIndex,\n nextBasicIndex,\n },\n });\n });\n };\n\nexport const annotationReducer = (\n state = initialState,\n action: AnnotationActionTypes,\n): AnnotationState => {\n switch (action.type) {\n case ANNOTATION_ACTIONS.UPDATE_TOOL_INSTANCE: {\n return {\n ...state,\n toolInstance: action.payload.toolInstance,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_IMG_LIST: {\n return {\n ...state,\n imgList: action.payload.imgList,\n };\n }\n\n case ANNOTATION_ACTIONS.CALC_STEP_PROGRESS: {\n const { imgList, step } = state;\n\n const stepProgress = calcStepProgress(imgList, step);\n\n return {\n ...state,\n stepProgress,\n };\n }\n\n case ANNOTATION_ACTIONS.SUBMIT_FILE_DATA: {\n const { imgList, imgIndex, step, stepList, toolInstance, onSubmit, resultList } = state;\n if (!toolInstance || !imgList[imgIndex]) {\n return state;\n }\n\n const oldResultString = imgList[imgIndex]?.result || '';\n const [, basicImgInfo, extraData] = toolInstance?.exportData() ?? [];\n const customObject = toolInstance?.exportCustomData?.() ?? {};\n\n const resultWithBasicInfo = composeResultWithBasicImgInfo(oldResultString, basicImgInfo);\n const newResultString = composeResult(\n resultWithBasicInfo,\n { step, stepList },\n { rect: resultList },\n customObject,\n );\n\n imgList[imgIndex].result = AnnotationDataUtils.dataCorrection(\n newResultString,\n oldResultString,\n step,\n stepList,\n );\n\n if (extraData) {\n imgList[imgIndex] = {\n ...imgList[imgIndex],\n ...extraData,\n };\n }\n\n if (onSubmit) {\n onSubmit([imgList[imgIndex]], action.payload?.submitType, imgIndex);\n }\n\n const stepProgress = calcStepProgress(imgList, step);\n return {\n ...state,\n stepProgress,\n imgList,\n };\n }\n\n case ANNOTATION_ACTIONS.SAVE_RESULT: {\n const { imgList, imgIndex, onSave } = state;\n onSave?.(imgList[imgIndex], imgIndex, imgList);\n return {\n ...state,\n };\n }\n\n /**\n * For data storage in dependent states\n *\n * Features:\n * 1. Get Data from ToolInstance (If it use toolInstance)\n * 2. Filter Data By BasicResultList\n */\n case ANNOTATION_ACTIONS.SUBMIT_RESULT: {\n const { imgList, basicIndex, resultList, toolInstance, basicResultList } = state;\n if (!toolInstance) {\n return state;\n }\n\n const [exportResult] = toolInstance?.exportData() ?? [];\n\n let previousResultList = exportResult;\n\n if (basicResultList?.length > 0) {\n const sourceID = basicResultList[basicIndex]?.id;\n const newResultData = exportResult.map((i: any) => ({ ...i, sourceID }));\n previousResultList = _.cloneDeep(resultList).filter((i: any) => i.sourceID !== sourceID);\n previousResultList.push(...newResultData);\n }\n\n return {\n ...state,\n resultList: previousResultList,\n imgList,\n };\n }\n\n case ANNOTATION_ACTIONS.SET_BASIC_INDEX: {\n const {\n toolInstance,\n step,\n imgList,\n imgIndex,\n stepList,\n annotationEngine,\n resultList,\n basicResultList,\n } = state;\n\n if (!toolInstance || !annotationEngine) {\n return state;\n }\n\n const nextBasicIndex = action.payload.basicIndex;\n const sourceID = basicResultList[nextBasicIndex]?.id;\n\n const fileResult = jsonParser(imgList[imgIndex]?.result);\n const result = (resultList || []).filter((i) => i.sourceID === sourceID);\n\n const stepConfig = getStepConfig(stepList, step);\n\n const { dataSourceStep, tool } = stepConfig;\n const dependStepConfig = getStepConfig(stepList, dataSourceStep);\n let stepBasicResultList = [];\n\n if (dataSourceStep && tool) {\n stepBasicResultList = fileResult[`step_${dataSourceStep}`]?.result;\n\n if (stepBasicResultList?.length > 0) {\n annotationEngine?.setBasicInfo(\n dependStepConfig.tool,\n stepBasicResultList[nextBasicIndex],\n );\n annotationEngine?.launchOperation();\n } else {\n annotationEngine?.setBasicInfo(dependStepConfig.tool);\n annotationEngine?.forbidOperation();\n message.info(i18n.t('NoDependency'));\n }\n }\n\n toolInstance?.setResult(result);\n toolInstance?.history.initRecord(result, true);\n\n return {\n ...state,\n basicIndex: nextBasicIndex,\n };\n }\n\n case ANNOTATION_ACTIONS.SET_TRIGGER_EVENT_AFTER_INDEX_CHANGED: {\n const { triggerEventAfterIndexChanged } = action.payload;\n return {\n ...state,\n triggerEventAfterIndexChanged: !!triggerEventAfterIndexChanged,\n };\n }\n\n case ANNOTATION_ACTIONS.LOAD_FILE_DATA: {\n const { imgList, step, toolInstance, annotationEngine, stepList } = state;\n\n /**\n * TODO\n * Before: !toolInstance || !annotationEngine\n *\n * The roles of toolInstance and annotationEngine need to be clearly distinguished\n */\n if (!toolInstance) {\n return { ...state, imgIndex: action.payload.nextIndex };\n }\n\n const currentStepInfo = StepUtils.getCurrentStepInfo(step, stepList);\n\n const { nextIndex, imgNode, nextBasicIndex, imgError } = action.payload;\n const basicIndex = nextBasicIndex ?? 0;\n\n const fileResult = jsonParser(imgList[nextIndex]?.result);\n\n const stepResult = fileResult[`step_${currentStepInfo.step}`];\n\n const isInitData = !stepResult; // 是否为初始化数据\n\n const basicImgInfo = {\n rotate: fileResult.rotate ?? 0,\n valid: fileResult.valid ?? true,\n };\n\n if (imgNode && imgError !== true) {\n annotationEngine?.setImgNode(imgNode, basicImgInfo);\n } else {\n // Non-graphical tools to initialize base data\n\n toolInstance?.setValid(basicImgInfo.valid);\n }\n\n const stepConfig = getStepConfig(stepList, currentStepInfo.step);\n\n const { dataSourceStep, tool } = stepConfig;\n const dependStepConfig = getStepConfig(stepList, dataSourceStep);\n const hasDataSourceStep = dataSourceStep && tool;\n const stepBasicResultList = fileResult[`step_${dataSourceStep}`]?.result ?? [];\n\n const result = AnnotationDataUtils.getInitialResultList(\n stepResult?.result,\n toolInstance,\n stepConfig,\n stepBasicResultList,\n isInitData,\n );\n\n annotationEngine?.launchOperation();\n\n if (hasDataSourceStep) {\n if (stepBasicResultList?.length > 0) {\n annotationEngine?.setBasicInfo(dependStepConfig.tool, stepBasicResultList[basicIndex]);\n } else {\n // TODO: 禁用绘制交互,有无依赖之间的操作切换\n annotationEngine?.setBasicInfo(dependStepConfig.tool);\n annotationEngine?.forbidOperation();\n message.info(i18n.t('NoDependency'));\n }\n }\n\n // TODO,非查看模式才允许添加数据\n if (currentStepInfo.tool !== 'check') {\n const sourceID = stepBasicResultList[basicIndex]?.id ?? '';\n const resultForBasicIndex = hasDataSourceStep\n ? result.filter((i: { sourceID: string | number }) =>\n CommonToolUtils.isSameSourceID(i.sourceID, sourceID),\n )\n : result;\n toolInstance?.history.initRecord(result, true);\n toolInstance?.setResult(resultForBasicIndex);\n }\n\n return {\n ...state,\n imgIndex: nextIndex,\n basicIndex,\n basicResultList: stepBasicResultList,\n resultList: result,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_ANNOTATION_CONFIG: {\n return {\n ...state,\n config: action.payload.config ?? '{}',\n };\n }\n\n case ANNOTATION_ACTIONS.SET_TASK_STEP_LIST: {\n const { stepList } = action.payload;\n return {\n ...state,\n stepList,\n };\n }\n\n case ANNOTATION_ACTIONS.SET_TASK_CONFIG: {\n const { stepList, step } = action.payload;\n return {\n ...state,\n stepList,\n step,\n };\n }\n\n case ANNOTATION_ACTIONS.INIT_TOOL: {\n const { imgNode } = state;\n const instance = updateToolInstance(state, imgNode);\n\n if (instance) {\n const { toolInstance, annotationEngine } = instance;\n return {\n ...state,\n toolInstance,\n annotationEngine,\n };\n }\n\n return {\n ...state,\n };\n }\n\n // react hook tool Proprietary operations\n case ANNOTATION_ACTIONS.SET_TOOL: {\n const instance = action.payload?.instance;\n if (instance) {\n return {\n ...state,\n toolInstance: instance,\n // TODO It needs to optimize\n // annotationEngine: {\n // toolInstance: instance,\n // } as any,\n };\n }\n\n return {\n ...state,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_ON_SUBMIT: {\n return {\n ...state,\n onSubmit: action.payload.onSubmit,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_ON_SAVE: {\n return {\n ...state,\n onSave: action.payload.onSave,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_ON_PAGE_CHANGE: {\n return {\n ...state,\n onPageChange: action.payload.onPageChange,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_ON_STEP_CHANGE: {\n return {\n ...state,\n onStepChange: action.payload.onStepChange,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_GET_FILE_DATA: {\n return {\n ...state,\n getFileData: action.payload.getFileData,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_PAGE_SIZE: {\n return {\n ...state,\n pageSize: action.payload.pageSize,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_LOAD_FILE_LIST: {\n return {\n ...state,\n loadFileList: action.payload.loadFileList,\n };\n }\n\n case ANNOTATION_ACTIONS.SKIP_BEFORE_PAGE_TURNING: {\n return {\n ...state,\n skipBeforePageTurning: action.payload.skipBeforePageTurning,\n };\n }\n\n case ANNOTATION_ACTIONS.SET_FILE_DATA: {\n const { fileData, index } = action.payload;\n const { imgList } = state;\n const newImgList = [...imgList];\n newImgList[index] = { ...newImgList[index], ...fileData };\n\n return {\n ...state,\n imgList: newImgList,\n };\n }\n\n case ANNOTATION_ACTIONS.UPDATE_ROTATE: {\n const { toolInstance } = state;\n toolInstance?.updateRotate();\n\n return state;\n }\n\n case ANNOTATION_ACTIONS.COPY_BACKWARD_RESULT: {\n const { toolInstance, imgIndex, imgList, step } = state;\n if (!toolInstance) {\n return state;\n }\n\n if (imgIndex === 0 || imgIndex >= imgList.length) {\n console.error('无法复制边界外的内容');\n return state;\n }\n const backwardResult = imgList[imgIndex - 1].result;\n if (!backwardResult) {\n return state;\n }\n\n const newResult = AnnotationDataUtils.copyResultChange(\n backwardResult,\n step,\n imgList[imgIndex].result ?? '',\n );\n imgList[imgIndex] = {\n ...imgList[imgIndex],\n result: newResult,\n };\n\n // 更新当前的结果\n const fileResult = jsonParser(newResult);\n const stepResult = fileResult[`step_${step}`];\n const result = stepResult?.result || [];\n\n toolInstance?.setResult(result);\n toolInstance?.history.pushHistory(result);\n\n return {\n ...state,\n imgList: [...imgList],\n };\n }\n\n case ANNOTATION_ACTIONS.SET_STEP: {\n const { stepList, annotationEngine } = state;\n const { toStep } = action.payload;\n\n if (!annotationEngine) {\n return state;\n }\n\n const stepConfig = getStepConfig(stepList, toStep);\n annotationEngine?.setToolName(stepConfig.tool, stepConfig.config);\n\n return {\n ...state,\n step: toStep,\n toolInstance: annotationEngine?.toolInstance,\n };\n }\n\n case ANNOTATION_ACTIONS.SET_LOADING: {\n const { loading } = action.payload;\n\n return {\n ...state,\n loading: !!loading,\n };\n }\n\n case ANNOTATION_ACTIONS.SET_POINT_CLOUD_LOADING: {\n const { pointCloudLoading } = action.payload;\n\n return {\n ...state,\n pointCloudLoading: !!pointCloudLoading,\n };\n }\n\n // eslint-disable-next-line no-fallthrough\n default:\n return state;\n }\n};\n"],"names":["this"],"mappings":"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"}
@@ -1 +1 @@
1
- import{prefix as C}from"../../../constant/index.js";import{PageBackward as g,PageForward as f,PageJump as L}from"../../../store/annotation/actionCreators.js";import{getTotalPage as N}from"../../../store/annotation/reducer.js";import{Divider as k}from"antd/es";import t from"react";import{useTranslation as B}from"react-i18next";import{connect as S}from"react-redux";import{LabelBeeContext as w,useDispatch as D}from"../../../store/ctx.js";import x from"./FooterTips/index.js";import R from"./HiddenTips/index.js";import $ from"./PageNumber/index.js";import H from"./ZoomController/index.js";import{Pagination as J}from"./Pagination.js";import{cTool as Z}from"@labelbee/lb-annotation";const{EPointCloudName:z}=Z,l=`${C}-footer`,P=()=>t.createElement(k,{type:"vertical",style:{background:"rgba(153, 153, 153, 1)",height:"16px"}}),b=({footerTips:e,hiddenTips:n,pageNumber:s,pagination:m,zoomController:r,curItems:c,footerDivider:u})=>t.createElement(t.Fragment,null,e,t.createElement("div",{style:{flex:1}}),n,s,m,c,u,r),_=e=>{var n;const{stepList:s,step:m,basicResultList:r,basicIndex:c,mode:u="light",footer:a=b,skipBeforePageTurning:i}=e,o=D(),{t:E}=B(),d=(n=s[m-1])!=null?n:{},T=!!d.dataSourceStep,I=()=>{if(i){i(()=>o(g()));return}o(g())},v=()=>{if(i){i(()=>o(f()));return}o(f())},h=y=>{const F=~~y-1;o(L(F))},p=t.createElement(J,{imgIndex:e.imgIndex,totalPage:e.totalPage,pageJump:h,pageBackward:I,pageForward:v,footerCls:l}),j=T&&r.length>0?t.createElement("span",null,E("curItems",{current:c+1,total:r.length})):null;return typeof a=="function"?a===b&&d.tool===z.PointCloud?t.createElement("div",{className:`${l}`,style:e.style},t.createElement(x,null),t.createElement("div",{style:{flex:1}}),p):t.createElement("div",{className:`${l}`,style:e.style},a({footerTips:t.createElement(x,null),hiddenTips:t.createElement(R,null),pageNumber:t.createElement($,null),pagination:p,zoomController:t.createElement(H,{mode:u}),curItems:j,footerDivider:t.createElement(P,null)})):a},q=e=>({totalPage:N(e.annotation),imgIndex:e.annotation.imgIndex,stepList:e.annotation.stepList,step:e.annotation.step,basicIndex:e.annotation.basicIndex,basicResultList:e.annotation.basicResultList,skipBeforePageTurning:e.annotation.skipBeforePageTurning});var A=S(q,null,null,{context:w})(_);export{P as FooterDivider,A as default,l as footerCls};
1
+ import{prefix as L}from"../../../constant/index.js";import{PageBackward as f,PageForward as x,PageJump as P}from"../../../store/annotation/actionCreators.js";import{getTotalPage as N}from"../../../store/annotation/reducer.js";import{Divider as k}from"antd/es";import t from"react";import{useTranslation as B}from"react-i18next";import{connect as S}from"react-redux";import{LabelBeeContext as w,useDispatch as D}from"../../../store/ctx.js";import b from"./FooterTips/index.js";import R from"./HiddenTips/index.js";import $ from"./PageNumber/index.js";import H from"./ZoomController/index.js";import{Pagination as J}from"./Pagination.js";import{cTool as Z}from"@labelbee/lb-annotation";const{EPointCloudName:z}=Z,l=`${L}-footer`,E=()=>t.createElement(k,{type:"vertical",style:{background:"rgba(153, 153, 153, 1)",height:"16px"}}),T=({footerTips:e,hiddenTips:r,pageNumber:s,pagination:m,zoomController:a,curItems:c,footerDivider:u})=>t.createElement(t.Fragment,null,e,t.createElement("div",{style:{flex:1}}),r,s,m,c,u,a),_=e=>{var r;const{stepList:s,step:m,basicResultList:a,basicIndex:c,mode:u="light",footer:i=T,skipBeforePageTurning:o}=e,n=D(),{t:I}=B(),d=(r=s[m-1])!=null?r:{},v=!!d.dataSourceStep,h=()=>{if(o){o(()=>n(f()));return}n(f())},j=()=>{if(o){o(()=>n(x()));return}n(x())},y=C=>{const g=~~C-1;if(o){o(()=>n(P(g)));return}n(P(g))},p=t.createElement(J,{imgIndex:e.imgIndex,totalPage:e.totalPage,pageJump:y,pageBackward:h,pageForward:j,footerCls:l}),F=v&&a.length>0?t.createElement("span",null,I("curItems",{current:c+1,total:a.length})):null;return typeof i=="function"?i===T&&d.tool===z.PointCloud?t.createElement("div",{className:`${l}`,style:e.style},t.createElement(b,null),t.createElement("div",{style:{flex:1}}),p):t.createElement("div",{className:`${l}`,style:e.style},i({footerTips:t.createElement(b,null),hiddenTips:t.createElement(R,null),pageNumber:t.createElement($,null),pagination:p,zoomController:t.createElement(H,{mode:u}),curItems:F,footerDivider:t.createElement(E,null)})):i},q=e=>({totalPage:N(e.annotation),imgIndex:e.annotation.imgIndex,stepList:e.annotation.stepList,step:e.annotation.step,basicIndex:e.annotation.basicIndex,basicResultList:e.annotation.basicResultList,skipBeforePageTurning:e.annotation.skipBeforePageTurning});var A=S(q,null,null,{context:w})(_);export{E as FooterDivider,A as default,l as footerCls};
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/views/MainView/toolFooter/index.tsx"],"sourcesContent":["import { prefix } from '@/constant';\nimport { AppState } from '@/store';\nimport { PageBackward, PageForward, PageJump } from '@/store/annotation/actionCreators';\nimport { getTotalPage } from '@/store/annotation/reducer';\nimport { RenderFooter } from '@/types/main';\nimport { IStepInfo } from '@/types/step';\nimport { Divider } from 'antd/es';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport { useDispatch, LabelBeeContext } from '@/store/ctx';\nimport FooterTips from './FooterTips';\nimport HiddenTips from './HiddenTips';\nimport PageNumber from './PageNumber';\nimport ZoomController from './ZoomController';\nimport { Pagination } from './Pagination';\nimport { cTool } from '@labelbee/lb-annotation';\n\nconst { EPointCloudName } = cTool;\n\nexport type FooterTheme = 'light' | 'dark';\ninterface IProps {\n totalPage: number;\n imgIndex: number;\n style?: { [key: string]: any };\n stepList: IStepInfo[];\n step: number;\n basicResultList: any[];\n basicIndex: number;\n mode?: FooterTheme; // 后面通过 context 的形式进行编写\n footer?: RenderFooter;\n\n skipBeforePageTurning?: (pageTurning: Function) => void;\n}\n\nexport const footerCls = `${prefix}-footer`;\n\nexport const FooterDivider = () => (\n <Divider type='vertical' style={{ background: 'rgba(153, 153, 153, 1)', height: '16px' }} />\n);\n\n/**\n * default footer renderer\n * @param param0\n * @returns\n */\nconst renderFooter: RenderFooter = ({\n footerTips,\n hiddenTips,\n pageNumber,\n pagination,\n zoomController,\n curItems,\n footerDivider,\n}) => {\n return (\n <>\n {footerTips}\n <div style={{ flex: 1 }} />\n {hiddenTips}\n {pageNumber}\n {pagination}\n {curItems}\n {footerDivider}\n {zoomController}\n </>\n );\n};\n\nconst ToolFooter: React.FC<IProps> = (props: IProps) => {\n const {\n stepList,\n step,\n basicResultList,\n basicIndex,\n mode = 'light',\n footer = renderFooter,\n skipBeforePageTurning,\n } = props;\n\n const dispatch = useDispatch();\n const { t } = useTranslation();\n const stepInfo = stepList[step - 1] ?? {};\n const hasSourceStep = !!stepInfo.dataSourceStep;\n\n const pageBackward = () => {\n if (skipBeforePageTurning) {\n skipBeforePageTurning(() => dispatch(PageBackward()));\n return;\n }\n\n dispatch(PageBackward());\n };\n\n const pageForward = () => {\n if (skipBeforePageTurning) {\n skipBeforePageTurning(() => dispatch(PageForward()));\n return;\n }\n dispatch(PageForward());\n };\n\n const toPageNumber = (page: string) => {\n const imgIndex = ~~page - 1;\n dispatch(PageJump(imgIndex));\n };\n\n const pagination = (\n <Pagination\n imgIndex={props.imgIndex}\n totalPage={props.totalPage}\n pageJump={toPageNumber}\n pageBackward={pageBackward}\n pageForward={pageForward}\n footerCls={footerCls}\n />\n );\n\n const curItems =\n hasSourceStep && basicResultList.length > 0 ? (\n <span>{t('curItems', { current: basicIndex + 1, total: basicResultList.length })}</span>\n ) : null;\n\n if (typeof footer === 'function') {\n if (footer === renderFooter && stepInfo.tool === EPointCloudName.PointCloud) {\n return (\n <div className={`${footerCls}`} style={props.style}>\n <FooterTips />\n <div style={{ flex: 1 }} />\n {pagination}\n </div>\n );\n }\n\n return (\n <div className={`${footerCls}`} style={props.style}>\n {footer({\n footerTips: <FooterTips />,\n hiddenTips: <HiddenTips />,\n pageNumber: <PageNumber />,\n pagination,\n zoomController: <ZoomController mode={mode} />,\n curItems,\n footerDivider: <FooterDivider />,\n })}\n </div>\n );\n }\n\n return footer;\n};\n\nconst mapStateToProps = (state: AppState) => ({\n totalPage: getTotalPage(state.annotation),\n imgIndex: state.annotation.imgIndex,\n stepList: state.annotation.stepList,\n step: state.annotation.step,\n basicIndex: state.annotation.basicIndex,\n basicResultList: state.annotation.basicResultList,\n skipBeforePageTurning: state.annotation.skipBeforePageTurning,\n});\n\nexport default connect(mapStateToProps, null, null, { context: LabelBeeContext })(ToolFooter);\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/views/MainView/toolFooter/index.tsx"],"sourcesContent":["import { prefix } from '@/constant';\nimport { AppState } from '@/store';\nimport { PageBackward, PageForward, PageJump } from '@/store/annotation/actionCreators';\nimport { getTotalPage } from '@/store/annotation/reducer';\nimport { RenderFooter } from '@/types/main';\nimport { IStepInfo } from '@/types/step';\nimport { Divider } from 'antd/es';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport { useDispatch, LabelBeeContext } from '@/store/ctx';\nimport FooterTips from './FooterTips';\nimport HiddenTips from './HiddenTips';\nimport PageNumber from './PageNumber';\nimport ZoomController from './ZoomController';\nimport { Pagination } from './Pagination';\nimport { cTool } from '@labelbee/lb-annotation';\n\nconst { EPointCloudName } = cTool;\n\nexport type FooterTheme = 'light' | 'dark';\ninterface IProps {\n totalPage: number;\n imgIndex: number;\n style?: { [key: string]: any };\n stepList: IStepInfo[];\n step: number;\n basicResultList: any[];\n basicIndex: number;\n mode?: FooterTheme; // 后面通过 context 的形式进行编写\n footer?: RenderFooter;\n\n skipBeforePageTurning?: (pageTurning: Function) => void;\n}\n\nexport const footerCls = `${prefix}-footer`;\n\nexport const FooterDivider = () => (\n <Divider type='vertical' style={{ background: 'rgba(153, 153, 153, 1)', height: '16px' }} />\n);\n\n/**\n * default footer renderer\n * @param param0\n * @returns\n */\nconst renderFooter: RenderFooter = ({\n footerTips,\n hiddenTips,\n pageNumber,\n pagination,\n zoomController,\n curItems,\n footerDivider,\n}) => {\n return (\n <>\n {footerTips}\n <div style={{ flex: 1 }} />\n {hiddenTips}\n {pageNumber}\n {pagination}\n {curItems}\n {footerDivider}\n {zoomController}\n </>\n );\n};\n\nconst ToolFooter: React.FC<IProps> = (props: IProps) => {\n const {\n stepList,\n step,\n basicResultList,\n basicIndex,\n mode = 'light',\n footer = renderFooter,\n skipBeforePageTurning,\n } = props;\n\n const dispatch = useDispatch();\n const { t } = useTranslation();\n const stepInfo = stepList[step - 1] ?? {};\n const hasSourceStep = !!stepInfo.dataSourceStep;\n\n const pageBackward = () => {\n if (skipBeforePageTurning) {\n skipBeforePageTurning(() => dispatch(PageBackward()));\n return;\n }\n\n dispatch(PageBackward());\n };\n\n const pageForward = () => {\n if (skipBeforePageTurning) {\n skipBeforePageTurning(() => dispatch(PageForward()));\n return;\n }\n dispatch(PageForward());\n };\n\n const toPageNumber = (page: string) => {\n const imgIndex = ~~page - 1;\n if (skipBeforePageTurning) {\n skipBeforePageTurning(() => dispatch(PageJump(imgIndex)));\n return;\n }\n dispatch(PageJump(imgIndex));\n };\n\n const pagination = (\n <Pagination\n imgIndex={props.imgIndex}\n totalPage={props.totalPage}\n pageJump={toPageNumber}\n pageBackward={pageBackward}\n pageForward={pageForward}\n footerCls={footerCls}\n />\n );\n\n const curItems =\n hasSourceStep && basicResultList.length > 0 ? (\n <span>{t('curItems', { current: basicIndex + 1, total: basicResultList.length })}</span>\n ) : null;\n\n if (typeof footer === 'function') {\n if (footer === renderFooter && stepInfo.tool === EPointCloudName.PointCloud) {\n return (\n <div className={`${footerCls}`} style={props.style}>\n <FooterTips />\n <div style={{ flex: 1 }} />\n {pagination}\n </div>\n );\n }\n\n return (\n <div className={`${footerCls}`} style={props.style}>\n {footer({\n footerTips: <FooterTips />,\n hiddenTips: <HiddenTips />,\n pageNumber: <PageNumber />,\n pagination,\n zoomController: <ZoomController mode={mode} />,\n curItems,\n footerDivider: <FooterDivider />,\n })}\n </div>\n );\n }\n\n return footer;\n};\n\nconst mapStateToProps = (state: AppState) => ({\n totalPage: getTotalPage(state.annotation),\n imgIndex: state.annotation.imgIndex,\n stepList: state.annotation.stepList,\n step: state.annotation.step,\n basicIndex: state.annotation.basicIndex,\n basicResultList: state.annotation.basicResultList,\n skipBeforePageTurning: state.annotation.skipBeforePageTurning,\n});\n\nexport default connect(mapStateToProps, null, null, { context: LabelBeeContext })(ToolFooter);\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAkBA,MAAM,CAAE,eAAoB,CAAA,GAAA,KAAA,CAAA;AAiBrB,MAAM,YAAY,CAAG,EAAA,MAAA,CAAA,OAAA,EAAA;AAEf,MAAA,aAAA,GAAgB,sBAC3B,KAAA,CAAA,aAAA,CAAC,OAAD,EAAA;AAAA,EAAS,IAAK,EAAA,UAAA;AAAA,EAAW,KAAO,EAAA,CAAE,UAAY,EAAA,wBAAA,EAA0B,MAAQ,EAAA,MAAA,CAAA;AAAA,CAAA,EAAA;AAQlF,MAAM,eAA6B,CAAC;AAAA,EAClC,UAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,CACI,KAAA;AACJ,EACE,uBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,EACG,UACD,kBAAA,KAAA,CAAA,aAAA,CAAC,KAAD,EAAA;AAAA,IAAK,KAAA,EAAO,CAAE,IAAM,EAAA,CAAA,CAAA;AAAA,GAAA,CAAA,EACnB,UACA,EAAA,UAAA,EACA,UACA,EAAA,QAAA,EACA,aACA,EAAA,cAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAKP,MAAM,UAAA,GAA+B,CAAC,KAAkB,KAAA;AArExD,EAAA,IAAA,EAAA,CAAA;AAsEE,EAAM,MAAA;AAAA,IACJ,QAAA;AAAA,IACA,IAAA;AAAA,IACA,eAAA;AAAA,IACA,UAAA;AAAA,IACA,IAAO,GAAA,OAAA;AAAA,IACP,MAAS,GAAA,YAAA;AAAA,IACT,qBAAA;AAAA,GACE,GAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,QAAW,GAAA,WAAA,EAAA,CAAA;AACjB,EAAA,MAAM,CAAE,CAAM,CAAA,GAAA,cAAA,EAAA,CAAA;AACd,EAAA,MAAM,QAAW,GAAA,CAAA,EAAA,GAAA,QAAA,CAAS,IAAO,GAAA,CAAA,CAAA,KAAhB,IAAsB,GAAA,EAAA,GAAA,EAAA,CAAA;AACvC,EAAM,MAAA,aAAA,GAAgB,CAAC,CAAC,QAAS,CAAA,cAAA,CAAA;AAEjC,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,IAAI,qBAAuB,EAAA;AACzB,MAAA,qBAAA,CAAsB,MAAM,QAAS,CAAA,YAAA,EAAA,CAAA,CAAA,CAAA;AACrC,MAAA,OAAA;AAAA,KAAA;AAGF,IAAS,QAAA,CAAA,YAAA,EAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAGX,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,qBAAuB,EAAA;AACzB,MAAA,qBAAA,CAAsB,MAAM,QAAS,CAAA,WAAA,EAAA,CAAA,CAAA,CAAA;AACrC,MAAA,OAAA;AAAA,KAAA;AAEF,IAAS,QAAA,CAAA,WAAA,EAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAGX,EAAM,MAAA,YAAA,GAAe,CAAC,IAAiB,KAAA;AACrC,IAAM,MAAA,QAAA,GAAW,CAAC,CAAC,IAAO,GAAA,CAAA,CAAA;AAC1B,IAAA,IAAI,qBAAuB,EAAA;AACzB,MAAsB,qBAAA,CAAA,MAAM,SAAS,QAAS,CAAA,QAAA,CAAA,CAAA,CAAA,CAAA;AAC9C,MAAA,OAAA;AAAA,KAAA;AAEF,IAAA,QAAA,CAAS,QAAS,CAAA,QAAA,CAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAGpB,EAAM,MAAA,UAAA,uCACH,UAAD,EAAA;AAAA,IACE,UAAU,KAAM,CAAA,QAAA;AAAA,IAChB,WAAW,KAAM,CAAA,SAAA;AAAA,IACjB,QAAU,EAAA,YAAA;AAAA,IACV,YAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,GAAA,CAAA,CAAA;AAIJ,EAAA,MAAM,WACJ,aAAiB,IAAA,eAAA,CAAgB,MAAS,GAAA,CAAA,uCACvC,MAAD,EAAA,IAAA,EAAO,CAAE,CAAA,UAAA,EAAY,CAAE,OAAS,EAAA,UAAA,GAAa,CAAG,EAAA,KAAA,EAAO,gBAAgB,MACrE,CAAA,CAAA,CAAA,GAAA,IAAA,CAAA;AAEN,EAAI,IAAA,OAAO,WAAW,UAAY,EAAA;AAChC,IAAA,IAAI,MAAW,KAAA,YAAA,IAAgB,QAAS,CAAA,IAAA,KAAS,gBAAgB,UAAY,EAAA;AAC3E,MAAA,2CACG,KAAD,EAAA;AAAA,QAAK,WAAW,CAAG,EAAA,SAAA,CAAA,CAAA;AAAA,QAAa,OAAO,KAAM,CAAA,KAAA;AAAA,OAAA,kBAC1C,KAAA,CAAA,aAAA,CAAA,UAAA,EAAD,IACA,CAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,KAAD,EAAA;AAAA,QAAK,KAAA,EAAO,CAAE,IAAM,EAAA,CAAA,CAAA;AAAA,OACnB,CAAA,EAAA,UAAA,CAAA,CAAA;AAAA,KAAA;AAKP,IAAA,2CACG,KAAD,EAAA;AAAA,MAAK,WAAW,CAAG,EAAA,SAAA,CAAA,CAAA;AAAA,MAAa,OAAO,KAAM,CAAA,KAAA;AAAA,KAAA,EAC1C,MAAO,CAAA;AAAA,MACN,UAAA,sCAAa,UAAD,EAAA,IAAA,CAAA;AAAA,MACZ,UAAA,sCAAa,UAAD,EAAA,IAAA,CAAA;AAAA,MACZ,UAAA,sCAAa,UAAD,EAAA,IAAA,CAAA;AAAA,MACZ,UAAA;AAAA,MACA,cAAA,sCAAiB,cAAD,EAAA;AAAA,QAAgB,IAAA;AAAA,OAAA,CAAA;AAAA,MAChC,QAAA;AAAA,MACA,aAAA,sCAAgB,aAAD,EAAA,IAAA,CAAA;AAAA,KAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAMvB,EAAO,OAAA,MAAA,CAAA;AAAA,CAAA,CAAA;AAGT,MAAM,eAAA,GAAkB,CAAC,KAAqB,MAAA;AAAA,EAC5C,SAAA,EAAW,aAAa,KAAM,CAAA,UAAA,CAAA;AAAA,EAC9B,QAAA,EAAU,MAAM,UAAW,CAAA,QAAA;AAAA,EAC3B,QAAA,EAAU,MAAM,UAAW,CAAA,QAAA;AAAA,EAC3B,IAAA,EAAM,MAAM,UAAW,CAAA,IAAA;AAAA,EACvB,UAAA,EAAY,MAAM,UAAW,CAAA,UAAA;AAAA,EAC7B,eAAA,EAAiB,MAAM,UAAW,CAAA,eAAA;AAAA,EAClC,qBAAA,EAAuB,MAAM,UAAW,CAAA,qBAAA;AAAA,CAAA,CAAA,CAAA;AAG1C,mBAAe,QAAQ,eAAiB,EAAA,IAAA,EAAM,IAAM,EAAA,CAAE,SAAS,eAAmB,CAAA,CAAA,CAAA,UAAA,CAAA;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@labelbee/lb-components",
3
- "version": "1.6.0-alpha.14",
3
+ "version": "1.6.0-alpha.16",
4
4
  "description": "Provide a complete library of annotation components",
5
5
  "main": "./dist/index.js",
6
6
  "es": "./es/index.js",
@@ -41,7 +41,7 @@
41
41
  },
42
42
  "dependencies": {
43
43
  "@ant-design/icons": "^4.6.2",
44
- "@labelbee/lb-annotation": "^1.9.0-alpha.14",
44
+ "@labelbee/lb-annotation": "^1.9.0-alpha.15",
45
45
  "@labelbee/lb-utils": "^1.3.0-alpha.13",
46
46
  "ahooks": "^3.4.0",
47
47
  "classnames": "^2.3.0",
@@ -96,5 +96,6 @@
96
96
  "commitizen": {
97
97
  "path": "node_modules/cz-conventional-changelog"
98
98
  }
99
- }
99
+ },
100
+ "gitHead": "49aa78e75ba7c59dc750f5df90e2ea6d122708aa"
100
101
  }