fl-web-component 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +24 -0
  2. package/dist/demo.html +10 -0
  3. package/dist/fl-web-component.common.js +316 -0
  4. package/dist/fl-web-component.common.js.map +1 -0
  5. package/dist/fl-web-component.css +1 -0
  6. package/dist/fl-web-component.umd.js +326 -0
  7. package/dist/fl-web-component.umd.js.map +1 -0
  8. package/dist/fl-web-component.umd.min.js +2 -0
  9. package/dist/fl-web-component.umd.min.js.map +1 -0
  10. package/package.json +47 -0
  11. package/packages/components/button/index.vue +22 -0
  12. package/packages/components/model/api/index.js +429 -0
  13. package/packages/components/model/api/mock/detecttree.js +58 -0
  14. package/packages/components/model/api/mock/getmodel-line.js +79336 -0
  15. package/packages/components/model/api/mock/init.js +1 -0
  16. package/packages/components/model/api/mock/pbstree.js +835 -0
  17. package/packages/components/model/api/mock/topology.json +3238 -0
  18. package/packages/components/model/components/TextOverTooltip/index.vue +84 -0
  19. package/packages/components/model/components/annotation-toolbar.vue +425 -0
  20. package/packages/components/model/components/check-proofing-model.vue +42 -0
  21. package/packages/components/model/components/clipping-type.vue +51 -0
  22. package/packages/components/model/components/com-dialogWrapper/Readme.md +53 -0
  23. package/packages/components/model/components/com-dialogWrapper/index.vue +117 -0
  24. package/packages/components/model/components/detect-panel.vue +327 -0
  25. package/packages/components/model/components/detect-tree.vue +460 -0
  26. package/packages/components/model/components/firstPer-panel.vue +111 -0
  27. package/packages/components/model/components/header-button.vue +546 -0
  28. package/packages/components/model/components/imageViewer/index.vue +127 -0
  29. package/packages/components/model/components/import-model.vue +127 -0
  30. package/packages/components/model/components/location-panel.vue +95 -0
  31. package/packages/components/model/components/measure-type.vue +59 -0
  32. package/packages/components/model/components/pbs-tree.vue +502 -0
  33. package/packages/components/model/components/proof-config.vue +80 -0
  34. package/packages/components/model/components/proof-for-pc.vue +123 -0
  35. package/packages/components/model/components/proof-history.vue +318 -0
  36. package/packages/components/model/components/proof-panel-detail.vue +567 -0
  37. package/packages/components/model/components/proof-panel.vue +770 -0
  38. package/packages/components/model/components/proof-project-user.vue +482 -0
  39. package/packages/components/model/components/proof-publish.vue +130 -0
  40. package/packages/components/model/components/proof-role.vue +535 -0
  41. package/packages/components/model/components/props-panel.vue +249 -0
  42. package/packages/components/model/index.vue +3413 -0
  43. package/packages/components/model/readme.md +31 -0
  44. package/packages/components/model/utils/annotation-tool.js +340 -0
  45. package/packages/components/model/utils/cursor.js +18 -0
  46. package/packages/components/model/utils/detect-v1.js +341 -0
  47. package/packages/components/model/utils/index.js +48 -0
  48. package/packages/components/model/utils/threejs/measure-angle.js +258 -0
  49. package/packages/components/model/utils/threejs/measure-area.js +269 -0
  50. package/packages/components/model/utils/threejs/measure-distance.js +207 -0
  51. package/packages/components/model/utils/threejs/measure-volume.js +94 -0
  52. package/packages/index.js +24 -0
@@ -0,0 +1,31 @@
1
+ 适配步骤
2
+ 1. 依赖库在 main.js 进行注册
3
+ // main.js
4
+ //依赖 QWebChannel 库,实现组件与 pc 间通信,需在 main.js 进行注册
5
+ import { QWebChannel } from "@/utils/qwebchannel";
6
+ // 注册 three.js 库
7
+ import * as THREE from 'three'
8
+
9
+ Vue.prototype.THREE = THREE
10
+ Vue.prototype.QWebChannel = QWebChannel
11
+
12
+ 2. 项目所涉及的依赖库
13
+ "dependencies": {
14
+ "camera-controls": "^2.6.0",
15
+ "three": "^0.138.0",
16
+ "three.path": "^1.0.1",
17
+ "lodash": "^4.17.21",
18
+ "konva": "^9.3.14",
19
+ "html2canvas": "^1.4.1",
20
+ "element-ui": "^2.15.3",
21
+ "vue": "^2.5.2",
22
+ },
23
+ 3. request.js
24
+ 关于 xhr 请求的中间件拦截器
25
+ 4. api/config.js 适配
26
+ 关于本地开发和线上服务区分的标识
27
+ api\index.js
28
+
29
+ import config from "@/api/config";
30
+ 5. 白名单
31
+ proof-for-pc.vue
@@ -0,0 +1,340 @@
1
+ import Konva from "konva";
2
+ const className = "annotation-shape";
3
+ var _that = null;
4
+ const AnnotationTool = function(stage, layer, type, strokeWidth = 1) {
5
+ this.stage = stage;
6
+ this.layer = layer;
7
+ this.type = type;
8
+ this.strokeWidth = strokeWidth;
9
+ this.list = [];
10
+ this.currentObj = null;
11
+ this.isDrawing = false;
12
+ this.startPoints = [];
13
+ this.annotationList = [];
14
+ this.linePoints = [];
15
+ this.isInput = false;
16
+ this.color = "#FF3B2F";
17
+ };
18
+ AnnotationTool.prototype = {
19
+ start() {
20
+ _that = this;
21
+ this.stage.on("mousedown", this.stageMouseDown, false);
22
+ this.stage.on("mousemove", this.stageMouseMove, false);
23
+ this.stage.on("mouseup", this.stageMouseUp, false);
24
+ },
25
+ updateType(val) {
26
+ const { type, strokeWidth } = val;
27
+ this.type = type;
28
+ this.strokeWidth = strokeWidth;
29
+ },
30
+ updateColor(color) {
31
+ this.color = color;
32
+ },
33
+ stageMouseDown(e) {
34
+ // _that.currentObj = null
35
+ if (e.attrs.name === "annotation-shape" || _that.isInput) return;
36
+ // 左键开始
37
+ const mousePos = _that.stage.getPointerPosition();
38
+ const x = (mousePos.x - _that.stage.getX()) / _that.stage.scaleX();
39
+ const y = (mousePos.y - _that.stage.getY()) / _that.stage.scaleY();
40
+ _that.startPoints.push(x);
41
+ _that.startPoints.push(y);
42
+ switch (_that.type) {
43
+ case "Rect":
44
+ const rect = new Konva.Rect({
45
+ type: _that.type,
46
+ name: className,
47
+ x: x,
48
+ y: y,
49
+ width: 0,
50
+ height: 0,
51
+ stroke: _that.color,
52
+ strokeWidth: _that.strokeWidth,
53
+ draggable: true
54
+ });
55
+ rect.on("mousedown", e => {
56
+ e.cancelBubble = true;
57
+ });
58
+ // rect.on('mouseup', (e) => {
59
+ // e.cancelBubble = true;
60
+ // })
61
+ rect.on("click", e => {
62
+ e.cancelBubble = true;
63
+ if (_that.type === "Rubber") {
64
+ _that.rubberRemove(rect._id);
65
+ rect.destroy();
66
+ }
67
+ });
68
+ _that.annotationList.push(rect);
69
+ _that.layer.add(rect);
70
+ _that.isDrawing = true;
71
+ break;
72
+ case "Circle":
73
+ const circle = new Konva.Circle({
74
+ type: _that.type,
75
+ name: className,
76
+ x: x,
77
+ y: y,
78
+ radius: 0,
79
+ stroke: _that.color,
80
+ strokeWidth: _that.strokeWidth,
81
+ draggable: true
82
+ });
83
+ // circle.on('mouseup', (e) => {
84
+ // e.cancelBubble = true;
85
+ // })
86
+ circle.on("mousedown", e => {
87
+ e.cancelBubble = true;
88
+ });
89
+ circle.on("click", e => {
90
+ e.cancelBubble = true;
91
+ if (_that.type === "Rubber") {
92
+ _that.rubberRemove(circle._id);
93
+ circle.destroy();
94
+ }
95
+ });
96
+ _that.annotationList.push(circle);
97
+ _that.layer.add(circle);
98
+ _that.isDrawing = true;
99
+ break;
100
+ case "Line":
101
+ _that.linePoints = _that.linePoints.concat(_that.startPoints);
102
+ const line = new Konva.Line({
103
+ name: className,
104
+ type: _that.type,
105
+ points: [x, y],
106
+ stroke: _that.color,
107
+ strokeWidth: _that.strokeWidth,
108
+ lineCap: "round",
109
+ lineJoin: "round",
110
+ draggable: true
111
+ });
112
+ // line.on('mouseup', (e) => {
113
+ // e.cancelBubble = true;
114
+ // })
115
+ line.on("mousedown", e => {
116
+ e.cancelBubble = true;
117
+ });
118
+ line.on("click", e => {
119
+ e.cancelBubble = true;
120
+ if (_that.type === "Rubber") {
121
+ _that.rubberRemove(line._id);
122
+ line.destroy();
123
+ }
124
+ });
125
+ _that.annotationList.push(line);
126
+ _that.layer.add(line);
127
+ _that.isDrawing = true;
128
+ break;
129
+ case "Text":
130
+ const textNode = new Konva.Text({
131
+ name: className,
132
+ type: _that.type,
133
+ x: x,
134
+ y: y,
135
+ width: 200,
136
+ text: "",
137
+ fontSize: 13 + (3 * _that.strokeWidth),
138
+ fill: _that.color,
139
+ draggable: true
140
+ });
141
+ // textNode.on('mouseup', (e) => {
142
+ // e.cancelBubble = true;
143
+ // })
144
+ textNode.on("mousedown", e => {
145
+ e.cancelBubble = true;
146
+ });
147
+ textNode.on("click", e => {
148
+ e.cancelBubble = true;
149
+ if (_that.type === "Rubber") {
150
+ _that.rubberRemove(textNode._id);
151
+ textNode.destroy();
152
+ }
153
+ });
154
+ _that.annotationList.push(textNode);
155
+ _that.layer.add(textNode);
156
+ _that.isDrawing = true;
157
+ textNode.on("dblclick", () => {
158
+ e.cancelBubble = true;
159
+ _that.isInput = true;
160
+ textNode.hide();
161
+ var textPosition = textNode.absolutePosition();
162
+ var stageBox = _that.stage.container().getBoundingClientRect();
163
+ var areaPosition = {
164
+ x: stageBox.left + textPosition.x,
165
+ y: stageBox.top + textPosition.y
166
+ };
167
+ var textarea = document.createElement("textarea");
168
+ document.body.appendChild(textarea);
169
+ textarea.value = textNode.text();
170
+ textarea.style.position = "absolute";
171
+ textarea.style.top = areaPosition.y + "px";
172
+ textarea.style.left = areaPosition.x + "px";
173
+ textarea.style.width =
174
+ textNode.width() - textNode.padding() * 2 + "px";
175
+ textarea.style.height =
176
+ textNode.height() - textNode.padding() * 2 + 5 + "px";
177
+ textarea.style.fontSize = "16px"; // textNode.fontSize() + 'px'
178
+ textarea.style.border = "1px solid " + _that.color;
179
+ textarea.style.padding = "5px";
180
+ textarea.style.margin = "0px";
181
+ textarea.style.overflow = "hidden";
182
+ textarea.style.background = "none";
183
+ textarea.style.outline = "none";
184
+ textarea.style.resize = "none";
185
+ textarea.style.lineHeight = textNode.lineHeight();
186
+ textarea.style.fontFamily = textNode.fontFamily();
187
+ textarea.style.transformOrigin = "left top";
188
+ textarea.style.textAlign = textNode.align();
189
+ textarea.style.color = textNode.fill();
190
+ var rotation = textNode.rotation();
191
+ var transform;
192
+ if (rotation) {
193
+ transform += "rotateZ(" + rotation + "deg)";
194
+ }
195
+ var px = 0;
196
+ var isFirefox =
197
+ navigator.userAgent.toLowerCase().indexOf("firefox") > -1;
198
+ if (isFirefox) {
199
+ px += 2 + Math.round(20 / 20); // textNode.fontSize()
200
+ }
201
+ transform += "translateY(-" + px + "px)";
202
+ textarea.style.transform = transform;
203
+ textarea.style.height = textarea.scrollHeight + 3 + "px";
204
+ textarea.focus();
205
+ function removeTextarea() {
206
+ textarea.parentNode.removeChild(textarea);
207
+ window.removeEventListener("click", handleOutsideClick);
208
+ textNode.show();
209
+ _that.layer.draw();
210
+ }
211
+ function setTextareaWidth(newWidth) {
212
+ if (!newWidth) {
213
+ // set width for placeholder
214
+ newWidth = textNode.placeholder.length * textNode.fontSize();
215
+ }
216
+ // some extra fixes on different browsers
217
+ var isSafari = /^((?!chrome|android).)*safari/i.test(
218
+ navigator.userAgent
219
+ );
220
+ var isFirefox =
221
+ navigator.userAgent.toLowerCase().indexOf("firefox") > -1;
222
+ if (isSafari || isFirefox) {
223
+ newWidth = Math.ceil(newWidth);
224
+ }
225
+
226
+ var isEdge =
227
+ document.documentMode || /Edge/.test(navigator.userAgent);
228
+ if (isEdge) {
229
+ newWidth += 1;
230
+ }
231
+ textarea.style.width = newWidth + "px";
232
+ }
233
+ textarea.addEventListener("keydown", function(e) {
234
+ if (e.code === 13 && !e.shiftKey) {
235
+ textNode.text(textarea.value);
236
+ removeTextarea();
237
+ }
238
+ // on esc do not set value back to node
239
+ if (e.code === 27) {
240
+ removeTextarea();
241
+ }
242
+ });
243
+ // textarea.addEventListener('keydown', function(e) {
244
+ // var scale = textNode.getAbsoluteScale().x
245
+ // setTextareaWidth(textNode.width() * scale)
246
+ // textarea.style.height = 'auto'
247
+ // textarea.style.height =
248
+ // textarea.scrollHeight + textNode.fontSize() + 'px'
249
+ // })
250
+ function handleOutsideClick(e) {
251
+ e.stopPropagation();
252
+ if (e.target !== textarea) {
253
+ textNode.text(textarea.value);
254
+ removeTextarea();
255
+ _that.isInput = false;
256
+ }
257
+ }
258
+ setTimeout(() => {
259
+ window.addEventListener("click", handleOutsideClick);
260
+ });
261
+ });
262
+ break;
263
+ }
264
+ },
265
+ stageMouseMove(e) {
266
+ if (_that.isDrawing) {
267
+ const mousePos = _that.stage.getPointerPosition();
268
+ const x = (mousePos.x - _that.stage.getX()) / _that.stage.scaleX();
269
+ const y = (mousePos.y - _that.stage.getY()) / _that.stage.scaleY();
270
+ const currentObj = _that.annotationList[_that.annotationList.length - 1];
271
+ switch (currentObj.className) {
272
+ case "Rect":
273
+ currentObj.setAttrs({
274
+ width: x - _that.startPoints[0],
275
+ height: y - _that.startPoints[1]
276
+ });
277
+ break;
278
+ case "Circle":
279
+ let radius = 0;
280
+ let width = x - _that.startPoints[0] < 0 ? 0 : x - _that.startPoints[0];
281
+ let height = y - _that.startPoints[1] < 0? 0 : y - _that.startPoints[1];
282
+ if (width === height) {
283
+ radius = width / 2;
284
+ } else {
285
+ radius = Math.max(width, height) / 2;
286
+ }
287
+ currentObj.setAttrs({
288
+ radius: radius
289
+ });
290
+ break;
291
+ case "Line":
292
+ _that.linePoints.push(x);
293
+ _that.linePoints.push(y);
294
+ const points = [].concat(_that.linePoints);
295
+ currentObj.setPoints(points);
296
+ break;
297
+ }
298
+ }
299
+ },
300
+ stageMouseUp(e) {
301
+ _that.isDrawing = false;
302
+ _that.startPoints.splice(0);
303
+ _that.linePoints.splice(0);
304
+ _that.isInput = false;
305
+ },
306
+ clear() {
307
+ this.annotationList.forEach(item => {
308
+ item.destroy();
309
+ });
310
+ this.annotationList.splice(0);
311
+ },
312
+ clearLayer() {
313
+ this.clear();
314
+
315
+ const items = this.stage.getLayers()[0].destroyChildren();
316
+ },
317
+ rubberRemove(id) {
318
+ const l = this.annotationList.length;
319
+ for (let index = 0; index < l; index++) {
320
+ if (id === this.annotationList[index]._id) {
321
+ this.annotationList.splice(index, 1);
322
+ break;
323
+ }
324
+ }
325
+ },
326
+ destroy() {
327
+ this.annotationList.forEach(item => {
328
+ item.off("mousedown");
329
+ // item.off('mouseup')
330
+ item.off("mousemove");
331
+ item.destroy();
332
+ });
333
+ this.stage.off("mousedown");
334
+ this.stage.off("mouseup");
335
+ this.stage.off("mousemove");
336
+ }
337
+ };
338
+ export default {
339
+ AnnotationTool
340
+ };
@@ -0,0 +1,18 @@
1
+ /*
2
+ * @Author: FYang
3
+ * @Date: 2023-05-25 10:55:15
4
+ * @LastEditTime: 2023-06-15 14:11:14
5
+ * @Description:
6
+ * @FilePath: \dmp-ui\src\views\system\drawing-display\components\cursor.js
7
+ */
8
+ let cursors={
9
+ pen:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACd0lEQVRYR+2WT2gTQRTGv7eb9JLkmPoHvHkQLy2i94o0KMiyMxgRbwrmpigeFBUJFPHiRegpgiLiQZbMTFoR/4AX7UVQCD14EfGcQkGFiia7T0Yq1HWTbLeGgnSOszPv9/HNex9L2ORFm8zHloD/1gHyff8cEZ0EEAIIyuXybKPR6MZ7biQOCCEaAM6shRHRrFLq7MgF+L5/nIgexUHMHOXz+XIQBMt/CPuXY+h53m7Xdd8BKPWpO6m1bo9EQLVaHet2uwtEtL8P/HMul9sRBMG3kQjwff8WEV3sA2cAp7TW90fSA0KIwwCeAInBxsx8wRhzO0nchqdACDEeRVHbcZztCQA7gjWt9d1+vbYhAfV63Wm3208BTCcAekR0Win1YFCjb0iAEOIygJsJgB9EdEIppYdNWWYBUsoDzPwawFgMssLMwhjzfBjcfs8sQAjRBCBjkC9RFB1ttVqv0sBTC6hUKoVisSiZeS8RPVZKLQghbNTayP29lpn5iDHmTVp4KgGrVhsAO1cLv9RaH7LuSSlvMPN5AF8BVOIpl0bIwCeoVqvlXq+3CGDbmmI2VI5prZXdm5qaypVKpbH5+fmVNMB1BZGUcoaZr8UvMXPXcZx7RHSn2Wy+BWBFZVp9HajVavmlpaVPa6xPBBDRdaXUTCZ6vynwPK/kuu4lAFeHFWbmK8aYpCwYdvXX978ckFLuY2Zra9plm+9F2sNDe8COXKFQ+AhgPEXRxYmJicl6vR6lOJv8hEm71oUwDB86jrNnQOH3YRh6c3NzH7LCB+aAbcJOp3OQiKaZeRcRWUe+A+gQ0TPXdXX85yKLkMxRnAWWdGdLwJYDPwFn/dQhz4OkVwAAAABJRU5ErkJggg==',
10
+ line:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAA4klEQVRYR+3WTQrCMBCG4fmy8AYeyo2kBS+goAsPJPhzhTEIHso7SEa6EETsXzJjN+m+vE8nhQlo4gcT96kAygRMJ1BV1RrAg5nvbT+7GaCJi8gJwBPAiplvvxAmAO/9hoiOAJyIRCLahhAufwF8fLkjIhGRfQjh8JcjGBtvUGpHkBJXA6TGVQA58WxAbjwLoBFPBmjFkwCa8dEA7fgogEV8MMAqPghgGe8FWMc7Ad8r1Tm3Y+az9i26dRl57xcArkQ061upOajObVjX9TLGOG+7TOSE3++qreNUTAGUCUw+gRcF0dchsIjssQAAAABJRU5ErkJggg==',
11
+ round:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACpUlEQVRYR+2WPW8TQRCG39mLqUBQuKQiCeJDSiT4DRCFwtk964KQ6BCWoCUfonMJOD1gRAkCjG/ODUmB+AcgpQECCVW6NBFQYecGbbSHEhPfnZ0ijbezduedx7PvzhzhiBcdcX4MAYYV6KsCQRAc29nZMSIyA+ASEZ22JhaRTQCfRCQqFApRo9H4k9fcuQG01mUiegTgTIb4BoAFZg7zQGQCBEHgtdvth0R0r0twTUQ2iMhqjAI427W/NDk5uVitVuM0kEwArfXSnuQdInpGREvNZvPHXuFSqTQ2MjIyLyK3AHhur8bMCwMDuLK/dQLbAMrM/CFN0BhzBUADwEnnDxNFUdQrpmcFrOE6nc4Xd+cdAFNZyZMkWuurRPTOVoKI1j3Pu9jLmD0BfN+/LiKvrCgRPQ7D8G4eUyVnjDF1ALfd71lmtlX5b/UEMMa8BHDDRiilRrvvPAumXC6Px3H8zZ17wcw3+wVYs86O4/hrq9U6n5XwoH1jjAUYB7DGzOf6BfgF4DiAZWa+NgiA1nqFiKYA/GbmE4MCrDDz9CEBfjLz7qvoXmke2L2CtPJlQRljMjVymVBExqIosi0297KNyfO87wObUGs9S0SvncATZr6TOzsA3/efikjFPeMgDMOkoe2TyWpEn12f7yilppvN5vs8EK4bLieNqFgsXqjX6+2+PGAPG2N8AE0XuK2UCrIgXPI3AE65OM3MrV7gmcPIGFMDMOcEbEt+LiK1bk8cNIzs+A7DcDGtapkA1WpVra6uPgAw3yVkm4w1ZjKObcP5t2zyiYmJ+4cex4mi1lorpWr2RaT+I6J1EZlLK/s+0DymSs5UKpXC1taWBjATx/FlpdTuJ1kcx5tKqY9EFBWLxVYvw/Vtwn7gBj2b6YFBhfPGDQGGFfgLW7AHMIfxtKYAAAAASUVORK5CYII=',
12
+ trangle:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAl0lEQVRYR+2WsQ2DMBBF/w1BaLIIW/gKGJIU31uwCJUzhFGKVIAEjiUr0nd/95+f5DsbGh9rnA8ByIAMnBoIISQz62o805zzO8b4OOp1CuDuuUb4twfJw6wrACuApRBmAPD81P4C8CI5lQC4+wxgFIAMyIAM/L2B5qO4ZArvam7vgprrGEAi2d9ax1WufaGJvmQyIAPNDWzonXsh3WqxKQAAAABJRU5ErkJggg==',
13
+ eraser:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAA1hJREFUWEfFl09oXUUUxr/vPkzARRFcumhdVGgV8t7MJBFaaC30z0YQMW1AUWyhXVWlYmm7aLWbtiQNFboqoqUFgy1VFBcuuhDRJu2bM0kIRsFkJS7ctC9dNLwQ7pGBtDxe3p9734t04G7uPef7fvfMzJl7iac82I2/c25nzPfe/9ypTscAxphxksOrxlfTNB2ZmpqaywvSEYAx5n2SX9aZVUiOViqV0fn5+WpWkNwAxWLxuUKhcAfAliYmoqojIYRvskDkBrDWngNwop24qkaACCKtYnMBOOcGVDW+faEdwOrzqqqOpmk6Oj09XWmUkxfglqq+mdG8Nuz3CBJCuFqfmxnAGPMOyesdmNem3BSR/bU3MgFYa58BEAC80iUAVPVICOHKY52sAJ8BON2tecxPkmR3uVy+nRmgVCptTZIkvn1vtwAkv/LeH8w1BXUdrxuG+6q6PYTwR2YAa+0bAL7rxrUm96SInM+1C6y1sYmYdQCYXFxc3NmoRTddhM6546p6YR3MQfIt7/2tXI3IGGOTJDmsqoe7hLgmIu8102i5Da21XwN4FsBWAJs7AHkI4DURibuo4WgKYIx5neQPqrqvt7f3l+Xl5XgAnQQQm1LWcUZEzrYKbrUG7qjqX7Xl6+/vfzlN008ANC3pkwZD+mq1umd2dvZBbgBjzEckRwBsF5G79QKxOgA+JrmjaWnJd733bc+ONRUolUobkySZBBAPjg+aGQwNDRUWFhaOkvwQwKa6uBsiciDLPK0BcM5dVtVhVX01hDDfTqRYLG4uFApHAcQrjkcA9orIr+1y4/M1ANbaP1V1PIQQD6BMwzl3XVU3kpxU1VRE2n4xPVkr9Q7WWgWwX0RuZnE3xuwl+ZOqHggh3Ojr63thZmbmnyy5DStgjDlD8tO45ZaWlsbm5uaWW4k5526r6r8i8nZW09q4htvQWvsFgEMAhORF7/14I3Hn3CFV/ZzkLu/9vXUDiELGmH0kjwHYTfJbAGPe+98emwwODm5YWVmZAPC9iJzqxLzhFNQLOeeOqGoEeYnkJZJj5XL579WpGu7p6dk2MTFx/38DiMIDAwPPp2l6bBVkJf4OAoj/hZkXa9OGlYfcOVdK03SY5Iuqei2E8GOe/EaxmT5KuzVplf8fJR1KMBY8k7wAAAAASUVORK5CYII=',
14
+ text:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAA5klEQVRYR+2VPwrCMBSHfwlFvIizq6u7y0vR2Qt4A0dP4AmcLSUUhI6Ozs5epA5NpKBQ1Ni0tAThZUxe8r735Z9A4CYC5wcDsAGngTiOJ8aYRR+HVEp5StP09m0tJwARLQEc+wAAsNJaJ38NsDXGnOsVSCnnAHbPvqbxTgam1tp1lUAIcdBaX+sAb1v0kYCIfs5/rdX5GjYB+J4dBmADbIANsIHWBpRSs7IspeszyrLsAsAO9hQT0R3AyJWgKIpxnudVjFdrbSA4gFJqY62NXOVFUbRPkqT0Kr/66n0Dh4pjADYQ3MADakKSIQVRq+oAAAAASUVORK5CYII=',
15
+ inspectionAdd: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAbCAMAAAC+/9RaAAAAAXNSR0IArs4c6QAAAWVQTFRFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkpKSAAAAgICAeHh4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwcHBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJiYmAAAAAAAAAAAAAAAA19fX29vbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHR0d5+fnQ0ND6OjoAAAAAAAAAAAAAAAAAAAAAAAAuLi4AAAAAAAAREREFhYWgICA8fHx+vr68vLyeHh4pKSkqKio9fX1+Pj4+vr609PT3d3durq6/f39/f397Ozs7u7u7e3t9fX1+Pj48/Pz////+fn5AAAAAI3pCAgIDAwMEBAQHBwcICAgIyMjJycnOzs7R0dHS0tLW1tbY2Njf39/g4ODh4eHj4+Pk5OTp6enr6+vs7Oz29vb39/f4+Pj6+vr8/Pz9/f3////fyxaCgAAAFp0Uk5TAAECAwQFBgcICQsMDQ4ODxARExUZGhwfICEiJCUqKywtLi8yNTU2OkJGRkZLTU9UVVZYaGlpa21xcnN0dnd+gYOEi5WXmpufpsHDxMfPz9rh5e3v9PX29/f5eHS9kwAAATJJREFUKM910vdXwjAQB/CmTSoCioqjgEgFF+69994TFYOoqGi1Kq7e32/TwtOW+P0xn5dc3t0Jwv+pWKtGXMD1sNss8kSOAhz1SDyJw3MhPUG4olEN1msQV2j+e6esmC00937YLXGFZgvpMcIVSp9gtZYQgsUyoXljG8z4xTKhuQ/IZCCMi835IzTLRJXddx50XWfS7pTrS3prnB8wmQ/IBKOS3H1qYMUUKz5ky6ORMszD34AiWR19ga3lE6eohIlxsTHct+J8zZbjpWRTQ3Lv64reMFmcm5kcCGFzcvujnUFMwuNnb/evTPoTaizkRwJu7IgGzH542zZPIcUk4SVEMn+NKqs8bGhisGtkdoFJq+xelbpIvLdY3BUkeSJD01ODpY46zKfEWhQfb/2QZBdn+QHojG9mLMVTWQAAAABJRU5ErkJggg==',
16
+ inspectionRemove: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAdCAMAAABopjdHAAAAAXNSR0IArs4c6QAAAmpQTFRFAAAAAAAA////AAAAgICAAAAAVVVVAAAAQEBAAAAAMzMzmZmZAAAAKioqAAAAJCQkAAAAICAgAAAAAAAAAAAAFxcXRkZGAAAAAAAAEhISAAAAAAAAEBAQAAAAAAAAhoaGAAAAAAAAqqqqAAAAm5ubCQkJAAAAAAAAAAAACAgIAAAAAAAABwcHJCQkAAAABwcHAAAAmJiYAAAABgYGAAAAAAAAs7OzAAAAAAAABQUFAAAAAAAAAAAAAAAAysrKAAAAICAgAAAAAAAAZ2dnAAAAAAAAy8vLAAAAz8/PAAAAAAAAUFBQ29vbAAAAAAAA2traGRkZxsbGAAAADAwM5+fnExMTEBAQBwcHFhYWAAAANzc3ERERPj4+WlpaWVlZDAwMhYWF8vLy9PT0g4OD8fHxYWFhkZGR7u7ue3t7d3d38/Pz8fHx/Pz8cXFxoqKi0dHRwcHBw8PD+vr6/Pz83Nzc/Pz85ubm8vLy/v7+8vLy+/v7+fn5/v7+/P3+/f7+/v//AAAAAQEBAgICBAQECQkJExMTGhoaJCQkJSUlJycnNDQ0RERESUlJVVVVgYGBhISEoKCgoqKip6enq6urrKyswcHBxsbGy8vLzMzM5+fn6urq7Ozs8PDw9PT0+fn5+vr6/f39/f///v7+/v///zQn/zQo/zcr/zgs/zks/zkt/zou/zsv/zsw/zww/0A0/0E1/0I3/0Q5/0U6/25l/4N6/4V9/6ii/6ul/62n/66o/6+p/7Cr/7Gt/7Sv/7ey/7m1/7q2/+Lg/+Pi/+Tj/+jn//f2//j3//v7//z7//z8//39//79//7+////WIDzvAAAAIB0Uk5TAAEBAgIDAwQEBQUFBgYHBwgICQoLCwsMDg4PEBAREhUXGxscHB0eHyAhIiMjIyQkJSUmKywvLzAyNTY3ODo6PD9BSUpLTk5QUFJUXF1fYGFlZmtrbG1wcXJ2eHt8kJKVnZ2eoKCjpaWmp6ips7m9vsLN2uLk5efu8fL6+/v9/v4j10sFAAABsUlEQVQoz2NgwANymBmxirOJny1SYcUmw6l29myNHTZdnAZnJ00764NNRu/slIb+s4kCGNo4tc9ObmjoOluqxIqpByjT0DjnrBkzVpmGhuln3VhRTOSCyTT0nU0Rw6qnoaFjUYU8C1aZhoa5Zw0R7uDRRsg0N8w468HDyM2Gpqe182xP+4SzWSLFSWCnIGRazm49dRYE9h5KZ2eEy0ya2HJ2y+rVZ1IjKw+sWHokGybTNOvsgsbu48tWrz5VtX/lqm31DiIQmbaz1fFnZzZ0H1++eu2eVau2Lww1EQDLzD5bEu4be7a3ofvEqtWrVu1YHGElwwiOhbN5fhb6TmXzGxrm7V61esnJBBtpkIc5tc7GeRoJ8+kEnJ06c9+qVUtWrz8TyA7yD7uGt6MqPyODqE3y2X0rV+06vm71hjP+oGBnllCU5QDSrLrlu5ev2lmfe3rDmo1HQ0BeZWYDhz2zav7BJTvqooMyz2zafNZZCBGyTAouhYdrw2yN3TOOnY0yFUCKDkE9r4JgSylBdde0GHs5lPgV0LQ2kWRm4FG2MpdDi3hecQGQCLuIEDN6OkJJBgDLB7syypb32wAAAABJRU5ErkJggg=='
17
+ }
18
+ export default cursors;