@realsee/dnalogel 0.1.5 → 0.1.7-alpha.4

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 (151) hide show
  1. package/components/GLTFView/index.d.ts +104 -0
  2. package/components/GLTFView/index.js +181 -0
  3. package/data/81zxMaeVKLQU93OZMG.d.ts +49 -0
  4. package/data/81zxMaeVKLQU93OZMG.js +633 -0
  5. package/data/PrXel3aqGbp34JQn.js +139 -1
  6. package/data/vLykj3NWrllMrG06.js +335 -71
  7. package/libs/gltf-viewer/Subscribe.d.ts +76 -0
  8. package/libs/gltf-viewer/Subscribe.js +231 -0
  9. package/libs/gltf-viewer/coordsMoveByOffset.d.ts +13 -0
  10. package/libs/gltf-viewer/coordsMoveByOffset.js +22 -0
  11. package/libs/gltf-viewer/coordsToDirection.d.ts +5 -0
  12. package/{components/PBRView/index.js → libs/gltf-viewer/coordsToDirection.js} +14 -18
  13. package/libs/gltf-viewer/formatRad.d.ts +1 -0
  14. package/libs/gltf-viewer/formatRad.js +13 -0
  15. package/libs/gltf-viewer/getFrameTime.d.ts +1 -0
  16. package/libs/gltf-viewer/getFrameTime.js +28 -0
  17. package/libs/gltf-viewer/index.d.ts +69 -0
  18. package/libs/gltf-viewer/index.js +744 -0
  19. package/libs/gltf-viewer/mouseWheel.d.ts +2 -0
  20. package/libs/gltf-viewer/mouseWheel.js +59 -0
  21. package/libs/gltf-viewer/requestAnimationFrame.d.ts +1 -0
  22. package/libs/gltf-viewer/requestAnimationFrame.js +18 -0
  23. package/libs/gltf-viewer/requestAnimationFrameInterval.d.ts +1 -0
  24. package/libs/gltf-viewer/requestAnimationFrameInterval.js +31 -0
  25. package/libs/gltf-viewer/uuid.d.ts +4 -0
  26. package/libs/gltf-viewer/uuid.js +28 -0
  27. package/package.json +5 -4
  28. package/plugins/ModelEntryDoorGuidePlugin/index.d.ts +6 -2
  29. package/plugins/ModelEntryDoorGuidePlugin/index.js +22 -14
  30. package/plugins/ModelRoomLabelPlugin/Controller.js +1 -0
  31. package/plugins/ModelRoomLabelPlugin/RoomLabelItem.js +5 -5
  32. package/plugins/ModelRoomLabelPlugin/index.d.ts +4 -0
  33. package/plugins/ModelRoomLabelPlugin/index.js +7 -2
  34. package/plugins/PanoMaskSelectorPlugin/createBox.js +3 -0
  35. package/plugins/PanoMaskSelectorPlugin/index.js +3 -1
  36. package/plugins/PanoMeasurePlugin/Controller/BaseController.d.ts +36 -0
  37. package/plugins/PanoMeasurePlugin/Controller/BaseController.js +103 -0
  38. package/plugins/PanoMeasurePlugin/Controller/EditController.d.ts +52 -0
  39. package/plugins/PanoMeasurePlugin/Controller/EditController.js +341 -0
  40. package/plugins/PanoMeasurePlugin/Controller/ShortcutKeyController.d.ts +12 -0
  41. package/plugins/PanoMeasurePlugin/Controller/ShortcutKeyController.js +69 -0
  42. package/plugins/PanoMeasurePlugin/Controller/WatchController.d.ts +25 -0
  43. package/plugins/PanoMeasurePlugin/Controller/WatchController.js +371 -0
  44. package/plugins/PanoMeasurePlugin/Controller/index.d.ts +61 -0
  45. package/plugins/PanoMeasurePlugin/Controller/index.js +230 -0
  46. package/plugins/PanoMeasurePlugin/Model/index.d.ts +38 -0
  47. package/plugins/PanoMeasurePlugin/Model/index.js +235 -0
  48. package/plugins/PanoMeasurePlugin/Model/line.d.ts +30 -0
  49. package/plugins/PanoMeasurePlugin/Model/line.js +121 -0
  50. package/plugins/PanoMeasurePlugin/Model/point.d.ts +16 -0
  51. package/plugins/PanoMeasurePlugin/Model/point.js +68 -0
  52. package/plugins/PanoMeasurePlugin/Model/polyline.d.ts +16 -0
  53. package/plugins/PanoMeasurePlugin/Model/polyline.js +109 -0
  54. package/plugins/PanoMeasurePlugin/Modules/DeleteDom/_Assets/delete.svg.d.ts +2 -0
  55. package/plugins/PanoMeasurePlugin/Modules/DeleteDom/_Assets/delete.svg.js +11 -0
  56. package/plugins/PanoMeasurePlugin/Modules/DeleteDom/_Assets/delete_bg.png.d.ts +2 -0
  57. package/plugins/PanoMeasurePlugin/Modules/DeleteDom/_Assets/delete_bg.png.js +11 -0
  58. package/plugins/PanoMeasurePlugin/Modules/DeleteDom/_Assets/delete_hover_bg.png.d.ts +2 -0
  59. package/plugins/PanoMeasurePlugin/Modules/DeleteDom/_Assets/delete_hover_bg.png.js +11 -0
  60. package/plugins/PanoMeasurePlugin/Modules/DeleteDom/index.d.ts +22 -0
  61. package/plugins/PanoMeasurePlugin/Modules/DeleteDom/index.js +182 -0
  62. package/plugins/PanoMeasurePlugin/Modules/FiveHelper.d.ts +11 -0
  63. package/plugins/PanoMeasurePlugin/Modules/FiveHelper.js +66 -0
  64. package/plugins/PanoMeasurePlugin/Modules/GuideController.d.ts +18 -0
  65. package/plugins/PanoMeasurePlugin/Modules/GuideController.js +107 -0
  66. package/plugins/PanoMeasurePlugin/Modules/Magnifier.d.ts +24 -0
  67. package/plugins/PanoMeasurePlugin/Modules/Magnifier.js +139 -0
  68. package/plugins/PanoMeasurePlugin/Modules/UIController/HTML.d.ts +6 -0
  69. package/plugins/PanoMeasurePlugin/Modules/UIController/HTML.js +26 -0
  70. package/plugins/PanoMeasurePlugin/Modules/UIController/MainBtnController.d.ts +18 -0
  71. package/plugins/PanoMeasurePlugin/Modules/UIController/MainBtnController.js +169 -0
  72. package/plugins/PanoMeasurePlugin/Modules/UIController/Revoke/index.d.ts +12 -0
  73. package/plugins/PanoMeasurePlugin/Modules/UIController/Revoke/index.js +59 -0
  74. package/plugins/PanoMeasurePlugin/Modules/UIController/index.d.ts +16 -0
  75. package/plugins/PanoMeasurePlugin/Modules/UIController/index.js +123 -0
  76. package/plugins/PanoMeasurePlugin/Modules/UIController/style.d.ts +17 -0
  77. package/plugins/PanoMeasurePlugin/Modules/UIController/style.js +103 -0
  78. package/plugins/PanoMeasurePlugin/index.d.ts +7 -0
  79. package/plugins/PanoMeasurePlugin/index.js +20 -0
  80. package/plugins/PanoMeasurePlugin/typings/data.d.ts +28 -0
  81. package/plugins/PanoMeasurePlugin/typings/data.js +7 -0
  82. package/plugins/PanoMeasurePlugin/typings/event.type.d.ts +28 -0
  83. package/plugins/PanoMeasurePlugin/typings/event.type.js +7 -0
  84. package/plugins/PanoMeasurePlugin/typings/utils.type.d.ts +1 -0
  85. package/plugins/PanoMeasurePlugin/typings/utils.type.js +7 -0
  86. package/plugins/PanoMeasurePlugin/utils/clearGroup.d.ts +2 -0
  87. package/plugins/PanoMeasurePlugin/utils/clearGroup.js +16 -0
  88. package/plugins/PanoMeasurePlugin/utils/constants.d.ts +4 -0
  89. package/plugins/PanoMeasurePlugin/utils/constants.js +47 -0
  90. package/plugins/PanoMeasurePlugin/utils/distanceDom.d.ts +28 -0
  91. package/plugins/PanoMeasurePlugin/utils/distanceDom.js +147 -0
  92. package/plugins/PanoMeasurePlugin/utils/findAssociatedLines.d.ts +2 -0
  93. package/plugins/PanoMeasurePlugin/utils/findAssociatedLines.js +37 -0
  94. package/plugins/PanoMeasurePlugin/utils/findClosestPoint.d.ts +10 -0
  95. package/plugins/PanoMeasurePlugin/utils/findClosestPoint.js +49 -0
  96. package/plugins/PanoMeasurePlugin/utils/getIntersectionFromEvent.d.ts +4 -0
  97. package/plugins/PanoMeasurePlugin/utils/getIntersectionFromEvent.js +20 -0
  98. package/plugins/PanoMeasurePlugin/utils/getPointFromHammerEvent.d.ts +10 -0
  99. package/plugins/PanoMeasurePlugin/utils/getPointFromHammerEvent.js +33 -0
  100. package/plugins/PanoMeasurePlugin/utils/ironbox.d.ts +1 -0
  101. package/plugins/PanoMeasurePlugin/utils/ironbox.js +14 -0
  102. package/plugins/PanoMeasurePlugin/utils/isNDCPointInScreen.d.ts +2 -0
  103. package/plugins/PanoMeasurePlugin/utils/isNDCPointInScreen.js +16 -0
  104. package/plugins/PanoMeasurePlugin/utils/line.d.ts +17 -0
  105. package/plugins/PanoMeasurePlugin/utils/line.js +61 -0
  106. package/plugins/PanoMeasurePlugin/utils/math.d.ts +17 -0
  107. package/plugins/PanoMeasurePlugin/utils/math.js +57 -0
  108. package/plugins/PanoMeasurePlugin/utils/mouseGroup.d.ts +2 -0
  109. package/plugins/PanoMeasurePlugin/utils/mouseGroup.js +42 -0
  110. package/plugins/PanoMeasurePlugin/utils/ndc2Screen.d.ts +5 -0
  111. package/plugins/PanoMeasurePlugin/utils/ndc2Screen.js +16 -0
  112. package/plugins/PanoRulerPlugin/index.d.ts +4 -0
  113. package/plugins/PanoRulerPlugin/index.js +6 -1
  114. package/plugins/PanoTVVideoPlugin/index.d.ts +2 -0
  115. package/plugins/PanoTVVideoPlugin/index.js +20 -14
  116. package/plugins/floorplan/ModelFloorplanPlugin/Controller.d.ts +5 -2
  117. package/plugins/floorplan/ModelFloorplanPlugin/Controller.js +22 -11
  118. package/plugins/floorplan/ModelFloorplanPlugin/components/Camera.js +4 -4
  119. package/plugins/floorplan/ModelFloorplanPlugin/components/Compass.js +5 -5
  120. package/plugins/floorplan/ModelFloorplanPlugin/components/NowFloor/RoomLabels.js +2 -2
  121. package/plugins/floorplan/ModelFloorplanPlugin/components/NowFloor/RoomMaterial.d.ts +11 -0
  122. package/plugins/floorplan/ModelFloorplanPlugin/components/NowFloor/RoomMaterial.js +174 -0
  123. package/plugins/floorplan/ModelFloorplanPlugin/components/NowFloor/RuleLabels.d.ts +8 -0
  124. package/plugins/floorplan/ModelFloorplanPlugin/components/NowFloor/RuleLabels.js +179 -0
  125. package/plugins/floorplan/ModelFloorplanPlugin/components/NowFloor/index.d.ts +2 -0
  126. package/plugins/floorplan/ModelFloorplanPlugin/components/NowFloor/index.js +14 -2
  127. package/plugins/floorplan/ModelFloorplanPlugin/components/index.d.ts +3 -0
  128. package/plugins/floorplan/ModelFloorplanPlugin/components/index.js +1 -1
  129. package/plugins/floorplan/ModelFloorplanPlugin/typings/utility.d.ts +2 -0
  130. package/plugins/floorplan/ModelFloorplanPlugin/typings/utility.js +7 -0
  131. package/plugins/floorplan/ModelFloorplanPlugin/utils/constant.d.ts +1 -1
  132. package/plugins/floorplan/ModelFloorplanPlugin/utils/constant.js +1 -1
  133. package/plugins/floorplan/PanoFloorplanRadarPlugin/Content/Camera.js +1 -0
  134. package/plugins/floorplan/PanoFloorplanRadarPlugin/Content/Camera.style.js +4 -4
  135. package/plugins/floorplan/PanoFloorplanRadarPlugin/Content/NowFloor/ExtraObjects.js +2 -2
  136. package/plugins/floorplan/TopviewFloorplanPlugin/Controller.js +3 -3
  137. package/plugins/floorplan/index.d.ts +4 -0
  138. package/plugins/floorplan/index.js +13 -0
  139. package/plugins/floorplan/typings/floorplanData.d.ts +2 -0
  140. package/plugins/floorplan/typings/floorplanServerData.d.ts +2 -0
  141. package/plugins/floorplan/utils/formatData.js +2 -1
  142. package/shared-utils/changeModelCanvasOpacity.d.ts +2 -0
  143. package/shared-utils/{changeModelCanvansOpacity.js → changeModelCanvasOpacity.js} +2 -2
  144. package/shared-utils/removeArrayItem.d.ts +7 -0
  145. package/shared-utils/removeArrayItem.js +22 -0
  146. package/shared-utils/three/loadTexture.d.ts +2 -2
  147. package/shared-utils/three/loadTexture.js +21 -2
  148. package/typedoc/libs.d.ts +1 -0
  149. package/typedoc/libs.js +7 -0
  150. package/components/PBRView/index.d.ts +0 -14
  151. package/shared-utils/changeModelCanvansOpacity.d.ts +0 -2
@@ -0,0 +1,38 @@
1
+ import Line from './line';
2
+ import Point from './point';
3
+ import { Subscribe, SubscribeEventMap } from '@realsee/five';
4
+ import { PluginData } from '../typings/data';
5
+ import { Polyline } from './polyline';
6
+ import { UserDistanceItem } from '../utils/distanceDom';
7
+ interface IModelEvent extends SubscribeEventMap {
8
+ /** 新增线条
9
+ * @param line 被创建的线条
10
+ */
11
+ lineAdded: (line: Line) => void;
12
+ /** 删除线条
13
+ * @param lines 被删除的线条数组
14
+ */
15
+ lineRemoved: (lines: Line) => void;
16
+ }
17
+ export interface ModelParams {
18
+ userDistanceItemCreator?: () => UserDistanceItem;
19
+ }
20
+ export declare class Model {
21
+ readonly lines: Line[];
22
+ readonly points: Point[];
23
+ readonly params: ModelParams;
24
+ readonly polylines: Polyline[];
25
+ readonly hook: Subscribe<IModelEvent>;
26
+ constructor(params: ModelParams);
27
+ addLine(line: Line): this | undefined;
28
+ removeLineByID(lineID: string): void;
29
+ removeLine(line: Line): this;
30
+ mergeModel(model: Model): void;
31
+ includes(item: Point | Line): boolean | undefined;
32
+ getPointByID(id: string): Point | undefined;
33
+ getLineByID(id: string): Line | undefined;
34
+ getClosestPoint(): void;
35
+ parse(data: PluginData): this;
36
+ toJson(): PluginData;
37
+ }
38
+ export {};
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.define-property.js");
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.Model = void 0;
11
+
12
+ require("core-js/modules/es.array.includes.js");
13
+
14
+ require("core-js/modules/es.string.includes.js");
15
+
16
+ require("core-js/modules/es.array.find.js");
17
+
18
+ require("core-js/modules/es.array.slice.js");
19
+
20
+ require("core-js/modules/es.array.for-each.js");
21
+
22
+ require("core-js/modules/web.dom-collections.for-each.js");
23
+
24
+ require("core-js/modules/es.array.map.js");
25
+
26
+ require("core-js/modules/es.array.splice.js");
27
+
28
+ require("core-js/modules/es.array.concat.js");
29
+
30
+ require("core-js/modules/es.array.filter.js");
31
+
32
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
33
+
34
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
35
+
36
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
37
+
38
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
39
+
40
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
41
+
42
+ var _line = _interopRequireDefault(require("./line"));
43
+
44
+ var _point = _interopRequireDefault(require("./point"));
45
+
46
+ var _five = require("@realsee/five");
47
+
48
+ var _removeArrayItem = _interopRequireDefault(require("../../../shared-utils/removeArrayItem"));
49
+
50
+ var _polyline = require("./polyline");
51
+
52
+ var Model = /*#__PURE__*/function () {
53
+ function Model(params) {
54
+ (0, _classCallCheck2["default"])(this, Model);
55
+ (0, _defineProperty2["default"])(this, "lines", []);
56
+ (0, _defineProperty2["default"])(this, "points", []);
57
+ (0, _defineProperty2["default"])(this, "polylines", []);
58
+ (0, _defineProperty2["default"])(this, "hook", new _five.Subscribe());
59
+ this.params = params;
60
+ }
61
+
62
+ (0, _createClass2["default"])(Model, [{
63
+ key: "addLine",
64
+ value: function addLine(line) {
65
+ var _line$points = (0, _slicedToArray2["default"])(line.points, 2),
66
+ startPoint = _line$points[0],
67
+ endPoint = _line$points[1];
68
+
69
+ if (!startPoint || !endPoint) return this;
70
+ if (!this.includes(startPoint)) this.points.push(startPoint);
71
+ if (!this.includes(endPoint)) this.points.push(endPoint);
72
+ this.lines.push(line);
73
+ var lastPolyline = this.polylines.find(function (polyline) {
74
+ return !!polyline.getNext(line);
75
+ });
76
+
77
+ if (lastPolyline) {
78
+ lastPolyline.push(line);
79
+ } else {
80
+ var polyline = new _polyline.Polyline();
81
+ polyline.push(line);
82
+ this.polylines.push(polyline);
83
+ }
84
+
85
+ this.hook.emit('lineAdded', line);
86
+ }
87
+ }, {
88
+ key: "removeLineByID",
89
+ value: function removeLineByID(lineID) {
90
+ var line = this.getLineByID(lineID);
91
+ if (line) this.removeLine(line);
92
+ }
93
+ }, {
94
+ key: "removeLine",
95
+ value: function removeLine(line) {
96
+ // handle polyline
97
+ var polyline = this.polylines.find(function (polyline) {
98
+ return polyline.lines.includes(line);
99
+ });
100
+
101
+ if (polyline) {
102
+ if (polyline.lines.slice(-1)[0] !== line) throw new Error('不能从中间删除线段');
103
+ polyline.pop();
104
+ if (polyline.lines.length === 0) (0, _removeArrayItem["default"])(polyline, this.polylines);
105
+ }
106
+
107
+ var _line$points2 = (0, _slicedToArray2["default"])(line.points, 2),
108
+ point = _line$points2[0],
109
+ anotherPoint = _line$points2[1];
110
+
111
+ if (point.lines.length === 0) (0, _removeArrayItem["default"])(point, this.points);
112
+ if (anotherPoint.lines.length === 0) (0, _removeArrayItem["default"])(anotherPoint, this.points);
113
+ (0, _removeArrayItem["default"])(line, this.lines);
114
+ line.clear();
115
+ this.hook.emit('lineRemoved', line);
116
+ return this;
117
+ }
118
+ }, {
119
+ key: "mergeModel",
120
+ value: function mergeModel(model) {
121
+ var _this = this;
122
+
123
+ model.lines.forEach(function (line) {
124
+ return _this.addLine(line);
125
+ });
126
+ }
127
+ }, {
128
+ key: "includes",
129
+ value: function includes(item) {
130
+ if (item.type === 'point') {
131
+ return this.points.find(function (_ref) {
132
+ var id = _ref.id;
133
+ return id === item.id;
134
+ }) !== undefined;
135
+ } else if (item.type === 'line') {
136
+ return this.lines.find(function (_ref2) {
137
+ var id = _ref2.id;
138
+ return id === item.id;
139
+ }) !== undefined;
140
+ }
141
+ }
142
+ }, {
143
+ key: "getPointByID",
144
+ value: function getPointByID(id) {
145
+ return this.points.find(function (_ref3) {
146
+ var _id = _ref3.id;
147
+ return _id === id;
148
+ });
149
+ }
150
+ }, {
151
+ key: "getLineByID",
152
+ value: function getLineByID(id) {
153
+ return this.lines.find(function (_ref4) {
154
+ var _id = _ref4.id;
155
+ return _id === id;
156
+ });
157
+ }
158
+ }, {
159
+ key: "getClosestPoint",
160
+ value: function getClosestPoint() {}
161
+ }, {
162
+ key: "parse",
163
+ value: function parse(data) {
164
+ var _this2 = this,
165
+ _this$points,
166
+ _this$lines,
167
+ _this$polylines;
168
+
169
+ var points = data.points.map(function (_ref5) {
170
+ var id = _ref5.id,
171
+ position = _ref5.position;
172
+ var point = new _point["default"](position);
173
+ point.id = id;
174
+ return point;
175
+ });
176
+ var lines = data.lines.map(function (data) {
177
+ var _data$points = (0, _slicedToArray2["default"])(data.points, 2),
178
+ pointID = _data$points[0],
179
+ anotherPointID = _data$points[1];
180
+
181
+ var point = _this2.getPointByID.call({
182
+ points: points
183
+ }, pointID);
184
+
185
+ var anotherPoint = _this2.getPointByID.call({
186
+ points: points
187
+ }, anotherPointID);
188
+
189
+ if (!point || !anotherPoint) throw new Error('线上的点不存在');
190
+ var line = new _line["default"](point, anotherPoint, _this2);
191
+ line.id = data.id;
192
+ return line;
193
+ });
194
+ var polylines = data.polylines.map(function (polylineJson) {
195
+ var polyline = new _polyline.Polyline();
196
+ polylineJson.lines.forEach(function (lineID) {
197
+ var line = lines.find(function (_ref6) {
198
+ var id = _ref6.id;
199
+ return id === lineID;
200
+ });
201
+ line && polyline.push(line);
202
+ });
203
+ return polyline;
204
+ });
205
+
206
+ (_this$points = this.points).splice.apply(_this$points, [0, this.points.length].concat((0, _toConsumableArray2["default"])(points)));
207
+
208
+ (_this$lines = this.lines).splice.apply(_this$lines, [0, this.lines.length].concat((0, _toConsumableArray2["default"])(lines)));
209
+
210
+ (_this$polylines = this.polylines).splice.apply(_this$polylines, [0, this.polylines.length].concat((0, _toConsumableArray2["default"])(polylines)));
211
+
212
+ return this;
213
+ }
214
+ }, {
215
+ key: "toJson",
216
+ value: function toJson() {
217
+ return {
218
+ points: this.points.map(function (point) {
219
+ return point.toJson();
220
+ }),
221
+ lines: this.lines.map(function (line) {
222
+ return line.toJson();
223
+ }),
224
+ polylines: this.polylines.map(function (polyline) {
225
+ return polyline.toJson();
226
+ }).filter(function (polylines) {
227
+ return polylines.lines.length > 0;
228
+ })
229
+ };
230
+ }
231
+ }]);
232
+ return Model;
233
+ }();
234
+
235
+ exports.Model = Model;
@@ -0,0 +1,30 @@
1
+ import { Model } from '.';
2
+ import Point from './point';
3
+ import { LineJson } from '..';
4
+ import { Polyline } from './polyline';
5
+ import { LineCompletelyJson } from '../typings/data';
6
+ import { Line as FiveLine } from '@realsee/five/line';
7
+ import { Subscribe, SubscribeEventMap } from '@realsee/five';
8
+ import { DistanceItem } from '../utils/distanceDom';
9
+ export interface ILineHook extends SubscribeEventMap {
10
+ selected: (line: Line) => void;
11
+ }
12
+ export default class Line {
13
+ id: string;
14
+ selected: boolean;
15
+ readonly type = "line";
16
+ readonly model: Model;
17
+ readonly mesh: FiveLine;
18
+ readonly points: Point[];
19
+ readonly lightMesh: FiveLine;
20
+ readonly hook: Subscribe<ILineHook>;
21
+ readonly distanceItem: DistanceItem;
22
+ private polyline?;
23
+ constructor(point: Point, anotherPoint: Point, model: Model);
24
+ clear(): void;
25
+ getPolyline(): Polyline;
26
+ findAnotherPoint(point: Point): Point | undefined;
27
+ toJson(): LineJson;
28
+ toCompletelyJson(): LineCompletelyJson;
29
+ clone(): Line;
30
+ }
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.define-property.js");
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ require("core-js/modules/es.array.find.js");
13
+
14
+ require("core-js/modules/es.array.includes.js");
15
+
16
+ require("core-js/modules/es.string.includes.js");
17
+
18
+ require("core-js/modules/es.array.map.js");
19
+
20
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
21
+
22
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
23
+
24
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
+
26
+ var _polyline = require("./polyline");
27
+
28
+ var _uuid = _interopRequireDefault(require("../../../shared-utils/uuid"));
29
+
30
+ var _line = require("../utils/line");
31
+
32
+ var _five = require("@realsee/five");
33
+
34
+ var _distanceDom = require("../utils/distanceDom");
35
+
36
+ var Line = /*#__PURE__*/function () {
37
+ function Line(point, anotherPoint, model) {
38
+ var _this = this;
39
+
40
+ (0, _classCallCheck2["default"])(this, Line);
41
+ (0, _defineProperty2["default"])(this, "selected", false);
42
+ (0, _defineProperty2["default"])(this, "type", 'line');
43
+ this.id = (0, _uuid["default"])();
44
+ this.model = model;
45
+ if (point.id === anotherPoint.id) throw new Error('无效的线段, 一个点无法构成线段');
46
+ this.hook = new _five.Subscribe();
47
+ this.points = [point, anotherPoint];
48
+ this.mesh = (0, _line.creatLineMesh)(this, 'normal');
49
+ this.lightMesh = (0, _line.creatLineMesh)(this, 'light');
50
+ this.distanceItem = (0, _distanceDom.creatDistanceItem)({
51
+ line: this,
52
+ clickCallback: function clickCallback() {
53
+ return _this.hook.emit('selected', _this);
54
+ },
55
+ userDistanceItem: this.model.params.userDistanceItemCreator ? this.model.params.userDistanceItemCreator() : undefined
56
+ });
57
+ point.lines.push(this);
58
+ anotherPoint.lines.push(this);
59
+ }
60
+
61
+ (0, _createClass2["default"])(Line, [{
62
+ key: "clear",
63
+ value: function clear() {
64
+ this.selected = false;
65
+ this.polyline = undefined;
66
+ }
67
+ }, {
68
+ key: "getPolyline",
69
+ value: function getPolyline() {
70
+ var _this2 = this;
71
+
72
+ if (this.polyline) return this.polyline;
73
+ var modelPolyline = this.model.polylines.find(function (polyline) {
74
+ return polyline.lines.includes(_this2);
75
+ });
76
+ this.polyline = modelPolyline;
77
+ if (modelPolyline) return modelPolyline;
78
+ var polyline = new _polyline.Polyline();
79
+ polyline.push(this);
80
+ return polyline;
81
+ }
82
+ }, {
83
+ key: "findAnotherPoint",
84
+ value: function findAnotherPoint(point) {
85
+ return this.points.find(function (_ref) {
86
+ var id = _ref.id;
87
+ return id !== point.id;
88
+ });
89
+ }
90
+ }, {
91
+ key: "toJson",
92
+ value: function toJson() {
93
+ return {
94
+ id: this.id,
95
+ points: this.points.map(function (_ref2) {
96
+ var id = _ref2.id;
97
+ return id;
98
+ })
99
+ };
100
+ }
101
+ }, {
102
+ key: "toCompletelyJson",
103
+ value: function toCompletelyJson() {
104
+ return {
105
+ id: this.id,
106
+ points: this.points.map(function (point) {
107
+ return point.toJson();
108
+ })
109
+ };
110
+ }
111
+ }, {
112
+ key: "clone",
113
+ value: function clone() {
114
+ var line = new Line(this.points[0].clone(), this.points[1].clone(), this.model);
115
+ return line;
116
+ }
117
+ }]);
118
+ return Line;
119
+ }();
120
+
121
+ exports["default"] = Line;
@@ -0,0 +1,16 @@
1
+ import Line from './line';
2
+ import { Vector3 } from 'three';
3
+ import { PluginData } from '../typings/data';
4
+ declare type IPointData = PluginData['points'][0];
5
+ export default class Point {
6
+ id: string;
7
+ lines: Line[];
8
+ position: Vector3;
9
+ readonly type = "point";
10
+ constructor(position: Vector3 | number[]);
11
+ toJson(): IPointData;
12
+ addLine(line: Line): void;
13
+ removeLine(line: Line): void;
14
+ clone(): Point;
15
+ }
16
+ export {};
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.define-property.js");
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ require("core-js/modules/es.array.map.js");
13
+
14
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
+
16
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
+
18
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
19
+
20
+ var _three = require("three");
21
+
22
+ var _uuid = _interopRequireDefault(require("../../../shared-utils/uuid"));
23
+
24
+ var _removeArrayItem = _interopRequireDefault(require("../../../shared-utils/removeArrayItem"));
25
+
26
+ var Point = /*#__PURE__*/function () {
27
+ function Point(position) {
28
+ (0, _classCallCheck2["default"])(this, Point);
29
+ (0, _defineProperty2["default"])(this, "type", 'point');
30
+ this.id = (0, _uuid["default"])();
31
+ this.lines = [];
32
+ this.position = new _three.Vector3();
33
+ position instanceof _three.Vector3 ? this.position.copy(position) : this.position.fromArray(position);
34
+ }
35
+
36
+ (0, _createClass2["default"])(Point, [{
37
+ key: "toJson",
38
+ value: function toJson() {
39
+ return {
40
+ id: this.id,
41
+ lines: this.lines.map(function (_ref) {
42
+ var id = _ref.id;
43
+ return id;
44
+ }),
45
+ position: this.position.toArray()
46
+ };
47
+ }
48
+ }, {
49
+ key: "addLine",
50
+ value: function addLine(line) {
51
+ this.lines.push(line);
52
+ }
53
+ }, {
54
+ key: "removeLine",
55
+ value: function removeLine(line) {
56
+ (0, _removeArrayItem["default"])(line, this.lines);
57
+ }
58
+ }, {
59
+ key: "clone",
60
+ value: function clone() {
61
+ var point = new Point(this.position);
62
+ return point;
63
+ }
64
+ }]);
65
+ return Point;
66
+ }();
67
+
68
+ exports["default"] = Point;
@@ -0,0 +1,16 @@
1
+ import Line from './line';
2
+ import Point from './point';
3
+ import { PolylineJson, PolylineCompletelyJson } from '../typings/data';
4
+ export declare class Polyline {
5
+ readonly id: string;
6
+ points: Point[];
7
+ readonly lines: Line[];
8
+ push(line: Line): number;
9
+ pop(): Line | undefined;
10
+ getNext(line: Line): {
11
+ line: Line;
12
+ points: Point[];
13
+ } | null;
14
+ toJson(): PolylineJson;
15
+ toCompletelyJson(): PolylineCompletelyJson;
16
+ }
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.define-property.js");
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.Polyline = void 0;
11
+
12
+ require("core-js/modules/es.array.slice.js");
13
+
14
+ require("core-js/modules/es.array.includes.js");
15
+
16
+ require("core-js/modules/es.string.includes.js");
17
+
18
+ require("core-js/modules/es.array.find.js");
19
+
20
+ require("core-js/modules/es.array.map.js");
21
+
22
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
23
+
24
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
25
+
26
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
27
+
28
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
29
+
30
+ var _uuid = _interopRequireDefault(require("../../../shared-utils/uuid"));
31
+
32
+ var Polyline = /*#__PURE__*/function () {
33
+ function Polyline() {
34
+ (0, _classCallCheck2["default"])(this, Polyline);
35
+ (0, _defineProperty2["default"])(this, "id", (0, _uuid["default"])());
36
+ (0, _defineProperty2["default"])(this, "points", []);
37
+ (0, _defineProperty2["default"])(this, "lines", []);
38
+ }
39
+
40
+ (0, _createClass2["default"])(Polyline, [{
41
+ key: "push",
42
+ value: function push(line) {
43
+ var _this$points;
44
+
45
+ var next = this.getNext(line);
46
+ if (!next) throw new Error('当前线段于上一条线段无法构成折线');
47
+ this.lines.push(next.line);
48
+
49
+ (_this$points = this.points).push.apply(_this$points, (0, _toConsumableArray2["default"])(next.points));
50
+
51
+ return this.lines.length;
52
+ }
53
+ }, {
54
+ key: "pop",
55
+ value: function pop() {
56
+ var lastPoint = this.lines.pop();
57
+ var polylineLength = this.lines.length;
58
+ if (polylineLength === 0) this.points.slice(0, this.points.length);else this.points.pop();
59
+ return lastPoint;
60
+ }
61
+ }, {
62
+ key: "getNext",
63
+ value: function getNext(line) {
64
+ var lastPoint = this.points.slice(-1)[0];
65
+ if (!lastPoint) return {
66
+ line: line,
67
+ points: line.points
68
+ };
69
+ if (!line.points.includes(lastPoint)) return null;
70
+ var nextPoint = line.points.find(function (point) {
71
+ return point !== lastPoint;
72
+ });
73
+ if (!nextPoint) return null;
74
+ return {
75
+ line: line,
76
+ points: [nextPoint]
77
+ };
78
+ }
79
+ }, {
80
+ key: "toJson",
81
+ value: function toJson() {
82
+ return {
83
+ id: this.id,
84
+ lines: this.lines.map(function (line) {
85
+ return line.id;
86
+ }),
87
+ points: this.points.map(function (point) {
88
+ return point.id;
89
+ })
90
+ };
91
+ }
92
+ }, {
93
+ key: "toCompletelyJson",
94
+ value: function toCompletelyJson() {
95
+ return {
96
+ id: this.id,
97
+ points: this.points.map(function (point) {
98
+ return point.toJson();
99
+ }),
100
+ lines: this.lines.map(function (line) {
101
+ return line.toCompletelyJson();
102
+ })
103
+ };
104
+ }
105
+ }]);
106
+ return Polyline;
107
+ }();
108
+
109
+ exports.Polyline = Polyline;
@@ -0,0 +1,2 @@
1
+ declare const svg = "<svg class=\"fpm__delete-icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\">\n <defs>\n <linearGradient x1=\"21.443%\" y1=\"100%\" x2=\"67.281%\" y2=\"6.672%\" id=\"a\">\n <stop stop-color=\"#FFFCFC\" stop-opacity=\".6\" offset=\"0%\" />\n <stop stop-color=\"#FFF\" offset=\"100%\" />\n </linearGradient>\n </defs>\n <path\n d=\"M14.932 3.545a.75.75 0 0 1 .102 1.494l-.102.006H13.83l-.979 8.813a2.05 2.05 0 0 1-1.882 1.818l-.155.006H4.868a2.05 2.05 0 0 1-2.037-1.824l-.98-8.813H.75a.75.75 0 0 1-.102-1.493l.102-.007h14.182zm-2.611 1.5H3.36l.961 8.648a.55.55 0 0 0 .369.46l.087.021.091.008h5.946a.55.55 0 0 0 .546-.49l.961-8.647zM10.795 0a.75.75 0 0 1 .102 1.493l-.102.007H4.886A.75.75 0 0 1 4.785.007L4.886 0h5.91z\"\n transform=\"translate(2.16 2.16)\"\n fill=\"url(#a)\"\n fill-rule=\"nonzero\"\n />\n</svg>";
2
+ export default svg;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.define-property.js");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+ var svg = "<svg class=\"fpm__delete-icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\">\n <defs>\n <linearGradient x1=\"21.443%\" y1=\"100%\" x2=\"67.281%\" y2=\"6.672%\" id=\"a\">\n <stop stop-color=\"#FFFCFC\" stop-opacity=\".6\" offset=\"0%\" />\n <stop stop-color=\"#FFF\" offset=\"100%\" />\n </linearGradient>\n </defs>\n <path\n d=\"M14.932 3.545a.75.75 0 0 1 .102 1.494l-.102.006H13.83l-.979 8.813a2.05 2.05 0 0 1-1.882 1.818l-.155.006H4.868a2.05 2.05 0 0 1-2.037-1.824l-.98-8.813H.75a.75.75 0 0 1-.102-1.493l.102-.007h14.182zm-2.611 1.5H3.36l.961 8.648a.55.55 0 0 0 .369.46l.087.021.091.008h5.946a.55.55 0 0 0 .546-.49l.961-8.647zM10.795 0a.75.75 0 0 1 .102 1.493l-.102.007H4.886A.75.75 0 0 1 4.785.007L4.886 0h5.91z\"\n transform=\"translate(2.16 2.16)\"\n fill=\"url(#a)\"\n fill-rule=\"nonzero\"\n />\n</svg>";
10
+ var _default = svg;
11
+ exports["default"] = _default;
@@ -0,0 +1,2 @@
1
+ declare const image = "data:image/png;base64,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";
2
+ export default image;