fl-web-component 2.0.0-beta.9 → 2.0.1

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 (34) hide show
  1. package/README.md +5 -0
  2. package/dist/fl-web-component.common.js +34766 -1686
  3. package/dist/fl-web-component.common.js.map +1 -1
  4. package/dist/fl-web-component.css +1 -1
  5. package/package.json +4 -15
  6. package/packages/components/com-card/index.vue +1 -1
  7. package/packages/components/com-flcanvas/components/bspline.js +31 -34
  8. package/packages/components/com-flcanvas/components/entityFormatting.js +810 -823
  9. package/packages/components/com-flcanvas/components/round10.js +17 -17
  10. package/packages/components/com-flcanvas/index.vue +314 -333
  11. package/packages/components/com-formDialog/index.vue +6 -4
  12. package/packages/components/com-graphics/component/ann-tool.vue +263 -208
  13. package/packages/components/com-graphics/index.vue +374 -773
  14. package/packages/components/com-graphics/pid.vue +304 -295
  15. package/packages/components/com-table/column-default.vue +2 -3
  16. package/packages/components/com-table/column-dynamic.vue +7 -4
  17. package/packages/components/com-table/column.vue +1 -2
  18. package/packages/components/com-table/index.vue +6 -5
  19. package/packages/components/com-tabs/index.vue +1 -2
  20. package/packages/components/com-tiles/index.vue +134 -136
  21. package/packages/components/com-treeDynamic/index.vue +1 -1
  22. package/packages/utils/StreamLoader.js +95 -36
  23. package/packages/utils/StreamLoaderParser.worker.js +9 -14
  24. package/src/main.js +2 -8
  25. package/src/utils/cloud.js +28 -28
  26. package/src/utils/cursor.js +11 -9
  27. package/src/utils/flgltf-parser.js +257 -245
  28. package/src/utils/instance-parser.js +20 -22
  29. package/src/utils/mini-devtool.js +94 -39
  30. package/src/utils/threejs/measure-angle.js +51 -13
  31. package/src/utils/threejs/measure-area.js +44 -13
  32. package/src/utils/threejs/measure-distance.js +43 -12
  33. package/src/utils/threejs/rain-shader.js +10 -10
  34. package/src/utils/threejs/snow-shader.js +9 -9
@@ -252,8 +252,7 @@ function parseBufferData(buffer, prefixIdKey) {
252
252
  const primitive = primitives[i];
253
253
  _applyPrefixId(primitive, 'id', null, prefixIdKey);
254
254
  _applyPrefixId(primitive, 'material', null, prefixIdKey);
255
- const { position, normal, posindex, nolindex, indices } =
256
- parsePrimitiveData(primitive);
255
+ const { position, normal, posindex, nolindex, indices } = parsePrimitiveData(primitive);
257
256
  const formatted = formatPrimitiveData({ position, normal, posindex, nolindex });
258
257
  delete primitive.nolindex;
259
258
  delete primitive.posindex;
@@ -335,8 +334,7 @@ function parsePrimitive(dataView, uint8Array, offset, isFullProps = true) {
335
334
  offset += 4;
336
335
 
337
336
  if (isFullProps) {
338
- if (dataView.byteLength < offset + 4)
339
- throw new Error('Insufficient data for Position length');
337
+ if (dataView.byteLength < offset + 4) throw new Error('Insufficient data for Position length');
340
338
  const positionLen = dataView.getUint32(offset, false);
341
339
  offset += 4;
342
340
  if (positionLen === 0xffffffff) {
@@ -378,8 +376,7 @@ function parsePrimitive(dataView, uint8Array, offset, isFullProps = true) {
378
376
  }
379
377
 
380
378
  if (isFullProps) {
381
- if (dataView.byteLength < offset + 4)
382
- throw new Error('Insufficient data for Posindex length');
379
+ if (dataView.byteLength < offset + 4) throw new Error('Insufficient data for Posindex length');
383
380
  const posindexLen = dataView.getUint32(offset, false);
384
381
  offset += 4;
385
382
  if (posindexLen === 0xffffffff) {
@@ -393,8 +390,7 @@ function parsePrimitive(dataView, uint8Array, offset, isFullProps = true) {
393
390
  }
394
391
 
395
392
  if (isFullProps) {
396
- if (dataView.byteLength < offset + 4)
397
- throw new Error('Insufficient data for Nolindex length');
393
+ if (dataView.byteLength < offset + 4) throw new Error('Insufficient data for Nolindex length');
398
394
  const nolindexLen = dataView.getUint32(offset, false);
399
395
  offset += 4;
400
396
  if (nolindexLen === 0xffffffff) {
@@ -474,18 +470,17 @@ function parsePrimitiveData(primitive) {
474
470
  const key = keyOrder[i];
475
471
  const typeCode = dataTypeString[i];
476
472
  const typeInfo = typeMap[typeCode];
477
- const uint8Array = primitive.isCompressed === 1 || primitive.isCompressed === undefined ? gunzipSync(primitive[key]) : primitive[key];
473
+ const uint8Array =
474
+ primitive.isCompressed === 1 || primitive.isCompressed === undefined
475
+ ? gunzipSync(primitive[key])
476
+ : primitive[key];
478
477
  if (!typeInfo || !uint8Array) {
479
478
  // console.warn(`无法找到键 "${key}" 或其类型定义,已跳过。`);
480
479
  parsedResult[key] = [];
481
480
  continue;
482
481
  }
483
482
  const result_array = [];
484
- const dataView = new DataView(
485
- uint8Array.buffer,
486
- uint8Array.byteOffset,
487
- uint8Array.byteLength
488
- );
483
+ const dataView = new DataView(uint8Array.buffer, uint8Array.byteOffset, uint8Array.byteLength);
489
484
  const littleEndian = true;
490
485
  for (let byteOffset = 0; byteOffset < dataView.byteLength; byteOffset += typeInfo.bytes) {
491
486
  if (byteOffset + typeInfo.bytes > dataView.byteLength) {
package/src/main.js CHANGED
@@ -2,17 +2,11 @@ import FlModel from '../packages/components/com-graphics/index.vue';
2
2
  import Fl2dcanvas from '../packages/components/com-flcanvas/index.vue';
3
3
  import FLPerControl from '../packages/components/com-graphics/per-control.vue';
4
4
  import FlSvg from '../packages/components/com-graphics/pid.vue';
5
- import FlTiles from '../packages/components/com-tiles/index.vue'
5
+ import FlTiles from '../packages/components/com-tiles/index.vue';
6
6
  import * as THREE from 'three';
7
7
  import pkg from '../package.json';
8
8
 
9
- const components = [
10
- FlModel,
11
- Fl2dcanvas,
12
- FLPerControl,
13
- FlSvg,
14
- FlTiles
15
- ];
9
+ const components = [FlModel, Fl2dcanvas, FLPerControl, FlSvg, FlTiles];
16
10
 
17
11
  const install = Vue => {
18
12
  Vue.prototype.THREE = THREE;
@@ -2,37 +2,37 @@ export function drawCloudWave(path, start, end, arcRadius, density) {
2
2
  const dx = end.x - start.x;
3
3
  const dy = end.y - start.y;
4
4
  const length = Math.sqrt(dx * dx + dy * dy);
5
-
5
+
6
6
  if (length === 0) return;
7
-
7
+
8
8
  // 计算单位向量
9
9
  const unitX = dx / length;
10
10
  const unitY = dy / length;
11
-
11
+
12
12
  // 计算垂直向量
13
13
  const perpX = -unitY;
14
14
  const perpY = unitX;
15
-
15
+
16
16
  // 中点
17
17
  const midX = (start.x + end.x) / 2;
18
18
  const midY = (start.y + end.y) / 2;
19
-
19
+
20
20
  // 最大弧度点(向外凸)
21
21
  const amplitude = arcRadius * density;
22
- const peakX = midX - perpX * amplitude; // 向外凸
22
+ const peakX = midX - perpX * amplitude; // 向外凸
23
23
  const peakY = midY - perpY * amplitude;
24
-
24
+
25
25
  // 使用三次贝塞尔曲线创建平滑的圆弧效果
26
26
  // 控制点稍微向内收缩,创建更自然的S形曲线
27
27
  const control1X = start.x + dx * 0.25;
28
28
  const control1Y = start.y + dy * 0.25;
29
29
  const control2X = end.x - dx * 0.25;
30
30
  const control2Y = end.y - dy * 0.25;
31
-
31
+
32
32
  // 添加弧度偏移
33
33
  const arcOffsetX = -perpX * amplitude * 0.3;
34
34
  const arcOffsetY = -perpY * amplitude * 0.3;
35
-
35
+
36
36
  path.bezierCurveTo(
37
37
  control1X + arcOffsetX,
38
38
  control1Y + arcOffsetY,
@@ -43,55 +43,55 @@ export function drawCloudWave(path, start, end, arcRadius, density) {
43
43
  );
44
44
  }
45
45
 
46
-
47
46
  // // 绘制云线路径
48
47
  export function drawCloudPath(path, vertices, config, close) {
49
48
  const { radius, density } = config;
50
-
49
+
51
50
  if (vertices.length < 3) return;
52
-
51
+
53
52
  // 从第一个顶点开始
54
53
  path.moveTo(vertices[0].x, vertices[0].y);
55
- let n = vertices.length
54
+ let n = vertices.length;
56
55
  // 如果close为false则不闭合
57
- if(!close) n--
56
+ if (!close) n--;
58
57
  // 为每条边绘制云线效果
59
58
  for (let i = 0; i < n; i++) {
60
59
  const currentVertex = vertices[i];
61
60
  const nextVertex = vertices[(i + 1) % vertices.length];
62
-
61
+
63
62
  // 在当前边绘制云线效果
64
63
  drawCloudWave(path, currentVertex, nextVertex, radius, density);
65
64
  }
66
-
65
+
67
66
  // if(close) path.closePath();
68
- path.closePath()
69
- path.stroke()
67
+ path.closePath();
68
+ path.stroke();
70
69
  // path.restore()
71
70
  }
72
71
 
73
-
74
72
  // // 基于原始顶点扩充成更多点
75
73
  export function expansionHexagonVertices(originalVertices, frequency) {
76
74
  const expansionVertices = [];
77
- let n = originalVertices.length
75
+ let n = originalVertices.length;
78
76
  for (let i = 0; i < n; i++) {
79
77
  const current = originalVertices[i];
80
78
  const next = originalVertices[(i + 1) % originalVertices.length];
81
-
82
- const len = Math.floor(Math.sqrt((next.x - current.x) ** 2 + (next.y - current.y) ** 2) / 1 / 8)
83
-
79
+
80
+ const len = Math.floor(
81
+ Math.sqrt((next.x - current.x) ** 2 + (next.y - current.y) ** 2) / 1 / 8
82
+ );
83
+
84
84
  for (let j = 0; j < len; j++) {
85
85
  const ratio = len === 1 ? 0 : j / (len - 1); // 0 到 1 之间
86
86
  const expansionPoint = {
87
87
  x: current.x + (next.x - current.x) * ratio,
88
- y: current.y + (next.y - current.y) * ratio
88
+ y: current.y + (next.y - current.y) * ratio,
89
89
  };
90
-
90
+
91
91
  expansionVertices.push(expansionPoint);
92
92
  }
93
93
  }
94
-
94
+
95
95
  return expansionVertices;
96
96
  }
97
97
 
@@ -103,8 +103,8 @@ export function drawCloudLines(path, vertices) {
103
103
  const config = {
104
104
  radius: 15,
105
105
  outward: true,
106
- density: 0.8
106
+ density: 0.8,
107
107
  };
108
108
 
109
109
  drawCloudPath(path, expansionVertices, config);
110
- }
110
+ }
@@ -1,10 +1,12 @@
1
-
2
- let cursors={
3
- 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==',
4
- line:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAA4klEQVRYR+3WTQrCMBCG4fmy8AYeyo2kBS+goAsPJPhzhTEIHso7SEa6EETsXzJjN+m+vE8nhQlo4gcT96kAygRMJ1BV1RrAg5nvbT+7GaCJi8gJwBPAiplvvxAmAO/9hoiOAJyIRCLahhAufwF8fLkjIhGRfQjh8JcjGBtvUGpHkBJXA6TGVQA58WxAbjwLoBFPBmjFkwCa8dEA7fgogEV8MMAqPghgGe8FWMc7Ad8r1Tm3Y+az9i26dRl57xcArkQ061upOajObVjX9TLGOG+7TOSE3++qreNUTAGUCUw+gRcF0dchsIjssQAAAABJRU5ErkJggg==',
5
- 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=',
6
- trangle:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAl0lEQVRYR+2WsQ2DMBBF/w1BaLIIW/gKGJIU31uwCJUzhFGKVIAEjiUr0nd/95+f5DsbGh9rnA8ByIAMnBoIISQz62o805zzO8b4OOp1CuDuuUb4twfJw6wrACuApRBmAPD81P4C8CI5lQC4+wxgFIAMyIAM/L2B5qO4ZArvam7vgprrGEAi2d9ax1WufaGJvmQyIAPNDWzonXsh3WqxKQAAAABJRU5ErkJggg==',
7
- 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=',
8
- text:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAA5klEQVRYR+2VPwrCMBSHfwlFvIizq6u7y0vR2Qt4A0dP4AmcLSUUhI6Ozs5epA5NpKBQ1Ni0tAThZUxe8r735Z9A4CYC5wcDsAGngTiOJ8aYRR+HVEp5StP09m0tJwARLQEc+wAAsNJaJ38NsDXGnOsVSCnnAHbPvqbxTgam1tp1lUAIcdBaX+sAb1v0kYCIfs5/rdX5GjYB+J4dBmADbIANsIHWBpRSs7IspeszyrLsAsAO9hQT0R3AyJWgKIpxnudVjFdrbSA4gFJqY62NXOVFUbRPkqT0Kr/66n0Dh4pjADYQ3MADakKSIQVRq+oAAAAASUVORK5CYII='
9
- }
1
+ let cursors = {
2
+ 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==',
3
+ line: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAA4klEQVRYR+3WTQrCMBCG4fmy8AYeyo2kBS+goAsPJPhzhTEIHso7SEa6EETsXzJjN+m+vE8nhQlo4gcT96kAygRMJ1BV1RrAg5nvbT+7GaCJi8gJwBPAiplvvxAmAO/9hoiOAJyIRCLahhAufwF8fLkjIhGRfQjh8JcjGBtvUGpHkBJXA6TGVQA58WxAbjwLoBFPBmjFkwCa8dEA7fgogEV8MMAqPghgGe8FWMc7Ad8r1Tm3Y+az9i26dRl57xcArkQ061upOajObVjX9TLGOG+7TOSE3++qreNUTAGUCUw+gRcF0dchsIjssQAAAABJRU5ErkJggg==',
4
+ round:
5
+ '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=',
6
+ trangle:
7
+ 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAl0lEQVRYR+2WsQ2DMBBF/w1BaLIIW/gKGJIU31uwCJUzhFGKVIAEjiUr0nd/95+f5DsbGh9rnA8ByIAMnBoIISQz62o805zzO8b4OOp1CuDuuUb4twfJw6wrACuApRBmAPD81P4C8CI5lQC4+wxgFIAMyIAM/L2B5qO4ZArvam7vgprrGEAi2d9ax1WufaGJvmQyIAPNDWzonXsh3WqxKQAAAABJRU5ErkJggg==',
8
+ eraser:
9
+ '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=',
10
+ text: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAA5klEQVRYR+2VPwrCMBSHfwlFvIizq6u7y0vR2Qt4A0dP4AmcLSUUhI6Ozs5epA5NpKBQ1Ni0tAThZUxe8r735Z9A4CYC5wcDsAGngTiOJ8aYRR+HVEp5StP09m0tJwARLQEc+wAAsNJaJ38NsDXGnOsVSCnnAHbPvqbxTgam1tp1lUAIcdBaX+sAb1v0kYCIfs5/rdX5GjYB+J4dBmADbIANsIHWBpRSs7IspeszyrLsAsAO9hQT0R3AyJWgKIpxnudVjFdrbSA4gFJqY62NXOVFUbRPkqT0Kr/66n0Dh4pjADYQ3MADakKSIQVRq+oAAAAASUVORK5CYII=',
11
+ };
10
12
  export default cursors;