@vertexvis/viewer 0.18.1 → 0.18.2-testing.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 (226) hide show
  1. package/dist/components/_commonjsHelpers.js +41 -0
  2. package/dist/components/_commonjsHelpers.js.map +1 -0
  3. package/dist/components/browser.esm.js +3173 -0
  4. package/dist/components/browser.esm.js.map +1 -0
  5. package/dist/components/bundle.esm.js +2250 -0
  6. package/dist/components/bundle.esm.js.map +1 -0
  7. package/dist/components/bundle.esm2.js +39740 -0
  8. package/dist/components/bundle.esm2.js.map +1 -0
  9. package/dist/components/config.js +81 -0
  10. package/dist/components/config.js.map +1 -0
  11. package/dist/components/controller.js +7627 -0
  12. package/dist/components/controller.js.map +1 -0
  13. package/dist/components/controller2.js +124 -0
  14. package/dist/components/controller2.js.map +1 -0
  15. package/dist/components/controller3.js +111 -0
  16. package/dist/components/controller3.js.map +1 -0
  17. package/dist/components/cursors.js +110 -0
  18. package/dist/components/cursors.js.map +1 -0
  19. package/dist/components/dom.js +43 -0
  20. package/dist/components/dom.js.map +1 -0
  21. package/dist/components/dom2.js +10 -0
  22. package/dist/components/dom2.js.map +1 -0
  23. package/dist/components/elementRectObserver.js +25 -0
  24. package/dist/components/elementRectObserver.js.map +1 -0
  25. package/dist/components/entities.js +179 -0
  26. package/dist/components/entities.js.map +1 -0
  27. package/dist/components/errors.js +80 -0
  28. package/dist/components/errors.js.map +1 -0
  29. package/dist/components/events.js +11 -0
  30. package/dist/components/events.js.map +1 -0
  31. package/dist/components/index.d.ts +26 -0
  32. package/dist/components/index.js +365 -0
  33. package/dist/components/index.js.map +1 -0
  34. package/dist/components/index2.js +63 -0
  35. package/dist/components/index2.js.map +1 -0
  36. package/dist/components/interactions.js +236 -0
  37. package/dist/components/interactions.js.map +1 -0
  38. package/dist/components/mapper.js +9811 -0
  39. package/dist/components/mapper.js.map +1 -0
  40. package/dist/components/markup.js +33 -0
  41. package/dist/components/markup.js.map +1 -0
  42. package/dist/components/model.js +134 -0
  43. package/dist/components/model.js.map +1 -0
  44. package/dist/components/model2.js +157 -0
  45. package/dist/components/model2.js.map +1 -0
  46. package/dist/components/overlays.js +76 -0
  47. package/dist/components/overlays.js.map +1 -0
  48. package/dist/components/png-decoder.js +2405 -0
  49. package/dist/components/png-decoder.js.map +1 -0
  50. package/dist/components/regl-component.js +12582 -0
  51. package/dist/components/regl-component.js.map +1 -0
  52. package/dist/components/results.js +24 -0
  53. package/dist/components/results.js.map +1 -0
  54. package/dist/components/row.js +32 -0
  55. package/dist/components/row.js.map +1 -0
  56. package/dist/components/scene-tree-search.js +146 -0
  57. package/dist/components/scene-tree-search.js.map +1 -0
  58. package/dist/components/scene-tree-table-layout.js +928 -0
  59. package/dist/components/scene-tree-table-layout.js.map +1 -0
  60. package/dist/components/scene-tree-toolbar.js +35 -0
  61. package/dist/components/scene-tree-toolbar.js.map +1 -0
  62. package/dist/components/scene.js +1508 -0
  63. package/dist/components/scene.js.map +1 -0
  64. package/dist/components/stencil.js +25 -0
  65. package/dist/components/stencil.js.map +1 -0
  66. package/dist/components/streamAttributes.js +40833 -0
  67. package/dist/components/streamAttributes.js.map +1 -0
  68. package/dist/components/templates.js +36 -0
  69. package/dist/components/templates.js.map +1 -0
  70. package/dist/components/tslib.es6.js +125 -0
  71. package/dist/components/tslib.es6.js.map +1 -0
  72. package/dist/components/vertex-scene-tree-search.d.ts +11 -0
  73. package/dist/components/vertex-scene-tree-search.js +11 -0
  74. package/dist/components/vertex-scene-tree-search.js.map +1 -0
  75. package/dist/components/vertex-scene-tree-table-cell.d.ts +11 -0
  76. package/dist/components/vertex-scene-tree-table-cell.js +209 -0
  77. package/dist/components/vertex-scene-tree-table-cell.js.map +1 -0
  78. package/dist/components/vertex-scene-tree-table-column.d.ts +11 -0
  79. package/dist/components/vertex-scene-tree-table-column.js +42 -0
  80. package/dist/components/vertex-scene-tree-table-column.js.map +1 -0
  81. package/dist/components/vertex-scene-tree-table-header.d.ts +11 -0
  82. package/dist/components/vertex-scene-tree-table-header.js +38 -0
  83. package/dist/components/vertex-scene-tree-table-header.js.map +1 -0
  84. package/dist/components/vertex-scene-tree-table-layout.d.ts +11 -0
  85. package/dist/components/vertex-scene-tree-table-layout.js +11 -0
  86. package/dist/components/vertex-scene-tree-table-layout.js.map +1 -0
  87. package/dist/components/vertex-scene-tree-table-resize-divider.d.ts +11 -0
  88. package/dist/components/vertex-scene-tree-table-resize-divider.js +57 -0
  89. package/dist/components/vertex-scene-tree-table-resize-divider.js.map +1 -0
  90. package/dist/components/vertex-scene-tree-toolbar-group.d.ts +11 -0
  91. package/dist/components/vertex-scene-tree-toolbar-group.js +38 -0
  92. package/dist/components/vertex-scene-tree-toolbar-group.js.map +1 -0
  93. package/dist/components/vertex-scene-tree-toolbar.d.ts +11 -0
  94. package/dist/components/vertex-scene-tree-toolbar.js +11 -0
  95. package/dist/components/vertex-scene-tree-toolbar.js.map +1 -0
  96. package/dist/components/vertex-scene-tree.d.ts +11 -0
  97. package/dist/components/vertex-scene-tree.js +803 -0
  98. package/dist/components/vertex-scene-tree.js.map +1 -0
  99. package/dist/components/vertex-viewer-box-query-tool.d.ts +11 -0
  100. package/dist/components/vertex-viewer-box-query-tool.js +352 -0
  101. package/dist/components/vertex-viewer-box-query-tool.js.map +1 -0
  102. package/dist/components/vertex-viewer-button.d.ts +11 -0
  103. package/dist/components/vertex-viewer-button.js +11 -0
  104. package/dist/components/vertex-viewer-button.js.map +1 -0
  105. package/dist/components/vertex-viewer-default-toolbar.d.ts +11 -0
  106. package/dist/components/vertex-viewer-default-toolbar.js +99 -0
  107. package/dist/components/vertex-viewer-default-toolbar.js.map +1 -0
  108. package/dist/components/vertex-viewer-dom-element.d.ts +11 -0
  109. package/dist/components/vertex-viewer-dom-element.js +11 -0
  110. package/dist/components/vertex-viewer-dom-element.js.map +1 -0
  111. package/dist/components/vertex-viewer-dom-group.d.ts +11 -0
  112. package/dist/components/vertex-viewer-dom-group.js +11 -0
  113. package/dist/components/vertex-viewer-dom-group.js.map +1 -0
  114. package/dist/components/vertex-viewer-dom-renderer.d.ts +11 -0
  115. package/dist/components/vertex-viewer-dom-renderer.js +11 -0
  116. package/dist/components/vertex-viewer-dom-renderer.js.map +1 -0
  117. package/dist/components/vertex-viewer-hit-result-indicator.d.ts +11 -0
  118. package/dist/components/vertex-viewer-hit-result-indicator.js +335 -0
  119. package/dist/components/vertex-viewer-hit-result-indicator.js.map +1 -0
  120. package/dist/components/vertex-viewer-icon.d.ts +11 -0
  121. package/dist/components/vertex-viewer-icon.js +11 -0
  122. package/dist/components/vertex-viewer-icon.js.map +1 -0
  123. package/dist/components/vertex-viewer-layer.d.ts +11 -0
  124. package/dist/components/vertex-viewer-layer.js +11 -0
  125. package/dist/components/vertex-viewer-layer.js.map +1 -0
  126. package/dist/components/vertex-viewer-markup-arrow.d.ts +11 -0
  127. package/dist/components/vertex-viewer-markup-arrow.js +11 -0
  128. package/dist/components/vertex-viewer-markup-arrow.js.map +1 -0
  129. package/dist/components/vertex-viewer-markup-circle.d.ts +11 -0
  130. package/dist/components/vertex-viewer-markup-circle.js +11 -0
  131. package/dist/components/vertex-viewer-markup-circle.js.map +1 -0
  132. package/dist/components/vertex-viewer-markup-freeform.d.ts +11 -0
  133. package/dist/components/vertex-viewer-markup-freeform.js +11 -0
  134. package/dist/components/vertex-viewer-markup-freeform.js.map +1 -0
  135. package/dist/components/vertex-viewer-markup-tool.d.ts +11 -0
  136. package/dist/components/vertex-viewer-markup-tool.js +257 -0
  137. package/dist/components/vertex-viewer-markup-tool.js.map +1 -0
  138. package/dist/components/vertex-viewer-markup.d.ts +11 -0
  139. package/dist/components/vertex-viewer-markup.js +362 -0
  140. package/dist/components/vertex-viewer-markup.js.map +1 -0
  141. package/dist/components/vertex-viewer-measurement-details.d.ts +11 -0
  142. package/dist/components/vertex-viewer-measurement-details.js +307 -0
  143. package/dist/components/vertex-viewer-measurement-details.js.map +1 -0
  144. package/dist/components/vertex-viewer-measurement-distance.d.ts +11 -0
  145. package/dist/components/vertex-viewer-measurement-distance.js +1067 -0
  146. package/dist/components/vertex-viewer-measurement-distance.js.map +1 -0
  147. package/dist/components/vertex-viewer-measurement-line.d.ts +11 -0
  148. package/dist/components/vertex-viewer-measurement-line.js +11 -0
  149. package/dist/components/vertex-viewer-measurement-line.js.map +1 -0
  150. package/dist/components/vertex-viewer-measurement-overlays.d.ts +11 -0
  151. package/dist/components/vertex-viewer-measurement-overlays.js +11 -0
  152. package/dist/components/vertex-viewer-measurement-overlays.js.map +1 -0
  153. package/dist/components/vertex-viewer-measurement-precise.d.ts +11 -0
  154. package/dist/components/vertex-viewer-measurement-precise.js +362 -0
  155. package/dist/components/vertex-viewer-measurement-precise.js.map +1 -0
  156. package/dist/components/vertex-viewer-pin-group.d.ts +11 -0
  157. package/dist/components/vertex-viewer-pin-group.js +11 -0
  158. package/dist/components/vertex-viewer-pin-group.js.map +1 -0
  159. package/dist/components/vertex-viewer-pin-label-line.d.ts +11 -0
  160. package/dist/components/vertex-viewer-pin-label-line.js +11 -0
  161. package/dist/components/vertex-viewer-pin-label-line.js.map +1 -0
  162. package/dist/components/vertex-viewer-pin-label.d.ts +11 -0
  163. package/dist/components/vertex-viewer-pin-label.js +11 -0
  164. package/dist/components/vertex-viewer-pin-label.js.map +1 -0
  165. package/dist/components/vertex-viewer-pin-tool.d.ts +11 -0
  166. package/dist/components/vertex-viewer-pin-tool.js +430 -0
  167. package/dist/components/vertex-viewer-pin-tool.js.map +1 -0
  168. package/dist/components/vertex-viewer-spinner.d.ts +11 -0
  169. package/dist/components/vertex-viewer-spinner.js +11 -0
  170. package/dist/components/vertex-viewer-spinner.js.map +1 -0
  171. package/dist/components/vertex-viewer-toolbar-group.d.ts +11 -0
  172. package/dist/components/vertex-viewer-toolbar-group.js +11 -0
  173. package/dist/components/vertex-viewer-toolbar-group.js.map +1 -0
  174. package/dist/components/vertex-viewer-toolbar.d.ts +11 -0
  175. package/dist/components/vertex-viewer-toolbar.js +11 -0
  176. package/dist/components/vertex-viewer-toolbar.js.map +1 -0
  177. package/dist/components/vertex-viewer-transform-widget.d.ts +11 -0
  178. package/dist/components/vertex-viewer-transform-widget.js +838 -0
  179. package/dist/components/vertex-viewer-transform-widget.js.map +1 -0
  180. package/dist/components/vertex-viewer-view-cube.d.ts +11 -0
  181. package/dist/components/vertex-viewer-view-cube.js +270 -0
  182. package/dist/components/vertex-viewer-view-cube.js.map +1 -0
  183. package/dist/components/vertex-viewer.d.ts +11 -0
  184. package/dist/components/vertex-viewer.js +3543 -0
  185. package/dist/components/vertex-viewer.js.map +1 -0
  186. package/dist/components/viewer-button.js +35 -0
  187. package/dist/components/viewer-button.js.map +1 -0
  188. package/dist/components/viewer-dom-element.js +250 -0
  189. package/dist/components/viewer-dom-element.js.map +1 -0
  190. package/dist/components/viewer-dom-group.js +214 -0
  191. package/dist/components/viewer-dom-group.js.map +1 -0
  192. package/dist/components/viewer-dom-renderer.js +295 -0
  193. package/dist/components/viewer-dom-renderer.js.map +1 -0
  194. package/dist/components/viewer-icon.js +87 -0
  195. package/dist/components/viewer-icon.js.map +1 -0
  196. package/dist/components/viewer-layer.js +46 -0
  197. package/dist/components/viewer-layer.js.map +1 -0
  198. package/dist/components/viewer-markup-arrow.js +235 -0
  199. package/dist/components/viewer-markup-arrow.js.map +1 -0
  200. package/dist/components/viewer-markup-circle-components.js +42 -0
  201. package/dist/components/viewer-markup-circle-components.js.map +1 -0
  202. package/dist/components/viewer-markup-circle.js +201 -0
  203. package/dist/components/viewer-markup-circle.js.map +1 -0
  204. package/dist/components/viewer-markup-freeform.js +251 -0
  205. package/dist/components/viewer-markup-freeform.js.map +1 -0
  206. package/dist/components/viewer-measurement-line.js +77 -0
  207. package/dist/components/viewer-measurement-line.js.map +1 -0
  208. package/dist/components/viewer-measurement-overlays.js +184 -0
  209. package/dist/components/viewer-measurement-overlays.js.map +1 -0
  210. package/dist/components/viewer-pin-group.js +207 -0
  211. package/dist/components/viewer-pin-group.js.map +1 -0
  212. package/dist/components/viewer-pin-label-line.js +43 -0
  213. package/dist/components/viewer-pin-label-line.js.map +1 -0
  214. package/dist/components/viewer-pin-label.js +427 -0
  215. package/dist/components/viewer-pin-label.js.map +1 -0
  216. package/dist/components/viewer-spinner.js +53 -0
  217. package/dist/components/viewer-spinner.js.map +1 -0
  218. package/dist/components/viewer-toolbar-group.js +42 -0
  219. package/dist/components/viewer-toolbar-group.js.map +1 -0
  220. package/dist/components/viewer-toolbar.js +61 -0
  221. package/dist/components/viewer-toolbar.js.map +1 -0
  222. package/dist/components/viewport.js +188 -0
  223. package/dist/components/viewport.js.map +1 -0
  224. package/dist/components/wrappers_pb.js +1926 -0
  225. package/dist/components/wrappers_pb.js.map +1 -0
  226. package/package.json +7 -7
@@ -0,0 +1,236 @@
1
+ /*!
2
+ * Copyright (c) 2023 Vertex Software LLC. All rights reserved.
3
+ */
4
+ import { p as point, j as matrix, c as angle, e as rectangle, d as dimensions } from './bundle.esm.js';
5
+ import { h } from '@stencil/core/internal/client';
6
+
7
+ function createArrowheadPoints(start, end, arrowAngle = 60) {
8
+ const distance = point.distance(start, end);
9
+ const angle$1 = angle.normalize(angle.toDegrees(angle.fromPoints(start, end)) - 270);
10
+ // Adjust the arrow height in relation to the distance between the to and from
11
+ // points. Uses a min and max size so the arrow doesn't become cartoonish.
12
+ const height = Math.max(4, Math.min(16, distance * 0.25));
13
+ const sideLength = height / Math.cos(angle.toRadians(90 - arrowAngle));
14
+ const rotation = matrix.rotation(angle$1);
15
+ const arrowLeft = point.polar(sideLength, angle.toRadians(arrowAngle * 2));
16
+ const arrowRight = point.polar(sideLength, angle.toRadians(arrowAngle));
17
+ const arrowBase = point.polar(height, angle.toRadians(90));
18
+ return {
19
+ tip: end,
20
+ left: point.add(end, matrix.transformPoint(rotation, arrowLeft)),
21
+ right: point.add(end, matrix.transformPoint(rotation, arrowRight)),
22
+ base: point.add(end, matrix.transformPoint(rotation, arrowBase)),
23
+ };
24
+ }
25
+ function arrowheadPointsToPolygonPoints(points) {
26
+ return [points.tip, points.right, points.base, points.left]
27
+ .map((pt) => `${pt.x},${pt.y}`)
28
+ .join(' ');
29
+ }
30
+ function isVertexViewerArrowMarkup(el) {
31
+ return (el instanceof HTMLElement && el.nodeName === 'VERTEX-VIEWER-MARKUP-ARROW');
32
+ }
33
+ function parsePoint(value) {
34
+ return typeof value === 'string' ? point.fromJson(value) : value;
35
+ }
36
+
37
+ function isVertexViewerCircleMarkup(el) {
38
+ return (el instanceof HTMLElement && el.nodeName === 'VERTEX-VIEWER-MARKUP-CIRCLE');
39
+ }
40
+ function parseBounds(value) {
41
+ return typeof value === 'string' ? rectangle.fromJson(value) : value;
42
+ }
43
+
44
+ function parsePoints(value) {
45
+ return typeof value === 'string'
46
+ ? JSON.parse(value).map((values) => point.fromJson(JSON.stringify(values)))
47
+ : value;
48
+ }
49
+ function isVertexViewerFreeformMarkup(el) {
50
+ return (el instanceof HTMLElement && el.nodeName === 'VERTEX-VIEWER-MARKUP-FREEFORM');
51
+ }
52
+
53
+ function getBoundingBox2dAnchorPosition(rect, position) {
54
+ switch (position) {
55
+ case 'top-left':
56
+ return point.create(rect.x, rect.y);
57
+ case 'top':
58
+ return point.create(rect.x + rect.width / 2, rect.y);
59
+ case 'top-right':
60
+ return point.create(rect.x + rect.width, rect.y);
61
+ case 'right':
62
+ return point.create(rect.x + rect.width, rect.y + rect.height / 2);
63
+ case 'bottom-right':
64
+ return point.create(rect.x + rect.width, rect.y + rect.height);
65
+ case 'bottom':
66
+ return point.create(rect.x + rect.width / 2, rect.y + rect.height);
67
+ case 'bottom-left':
68
+ return point.create(rect.x, rect.y + rect.height);
69
+ case 'left':
70
+ return point.create(rect.x, rect.y + rect.height / 2);
71
+ case 'center':
72
+ return rectangle.center(rect);
73
+ }
74
+ }
75
+ function translatePointToScreen(pt, canvasDimensions) {
76
+ const scaleFactor = canvasDimensions.height;
77
+ return point.add(point.scale(pt, scaleFactor, scaleFactor), dimensions.center(canvasDimensions));
78
+ }
79
+ function translateDimensionsToScreen(dimensions$1, canvasDimensions) {
80
+ const scaleFactor = canvasDimensions.height;
81
+ return dimensions.scale(scaleFactor, scaleFactor, dimensions$1);
82
+ }
83
+ /**
84
+ * Translates a rectangle in relative units, to a rectangle in screen units.
85
+ *
86
+ * Shape coordinates are persisted in relative units, so they can be presented
87
+ * at any size.
88
+ */
89
+ function translateRectToScreen(rect, canvasDimensions) {
90
+ const position = translatePointToScreen(rect, canvasDimensions);
91
+ const dimensions = translateDimensionsToScreen(rect, canvasDimensions);
92
+ return rectangle.fromPointAndDimensions(position, dimensions);
93
+ }
94
+ /**
95
+ * Translates a point in screen units, to a point in relative units.
96
+ */
97
+ function translatePointToRelative(pt, canvasDimensions) {
98
+ const scaleFactor = 1 / canvasDimensions.height;
99
+ const point$1 = point.scale(point.subtract(pt, dimensions.center(canvasDimensions)), scaleFactor, scaleFactor);
100
+ return point$1;
101
+ }
102
+ /**
103
+ * Translates a set of points in relative `original` units to
104
+ * points in relative `bounds` units.
105
+ */
106
+ function translatePointsToBounds(points, original, bounds) {
107
+ return points.map((pt) => point.add(point.scale(point.subtract(pt, original), bounds.width / (original.width || 1), bounds.height / (original.height || 1)), bounds));
108
+ }
109
+ function createRectangle(initialPoint, currentPoint, maintainAspectRatio) {
110
+ const bounds = rectangle.fromPoints(initialPoint, currentPoint);
111
+ if (maintainAspectRatio) {
112
+ const fitBoundsSize = Math.max(bounds.width, bounds.height);
113
+ const isPortrait = bounds.height > bounds.width;
114
+ const currentIsLeftOfInitial = currentPoint.x <= initialPoint.x;
115
+ const currentIsAboveInitial = currentPoint.y <= initialPoint.y;
116
+ const fitBoundsX = currentIsLeftOfInitial
117
+ ? isPortrait
118
+ ? initialPoint.x - fitBoundsSize
119
+ : currentPoint.x
120
+ : initialPoint.x;
121
+ const fitBoundsY = currentIsAboveInitial
122
+ ? isPortrait
123
+ ? currentPoint.y
124
+ : initialPoint.y - fitBoundsSize
125
+ : initialPoint.y;
126
+ return rectangle.create(fitBoundsX, fitBoundsY, fitBoundsSize, fitBoundsSize);
127
+ }
128
+ else {
129
+ return bounds;
130
+ }
131
+ }
132
+ function transformRectangle(bounds, start, current, anchor, maintainAspectRatio) {
133
+ const delta = point.subtract(current, start);
134
+ const { x: left, y: top, width: w, height: h } = bounds;
135
+ const right = left + w;
136
+ const bottom = top + h;
137
+ const topLeft = point.create(left, top);
138
+ const bottomLeft = point.create(left, bottom);
139
+ const topRight = point.create(right, top);
140
+ const bottomRight = point.create(right, bottom);
141
+ switch (anchor) {
142
+ case 'top-left':
143
+ return createRectangle(bottomRight, current, !!maintainAspectRatio);
144
+ case 'top':
145
+ return createRectangle(bottomRight, point.create(left, current.y), !!maintainAspectRatio);
146
+ case 'top-right':
147
+ return createRectangle(bottomLeft, current, !!maintainAspectRatio);
148
+ case 'right':
149
+ return createRectangle(bottomLeft, point.create(current.x, top), !!maintainAspectRatio);
150
+ case 'bottom-right':
151
+ return createRectangle(topLeft, current, !!maintainAspectRatio);
152
+ case 'bottom':
153
+ return createRectangle(topLeft, point.create(right, current.y), !!maintainAspectRatio);
154
+ case 'bottom-left':
155
+ return createRectangle(topRight, current, !!maintainAspectRatio);
156
+ case 'left':
157
+ return createRectangle(bottomRight, point.create(current.x, top), !!maintainAspectRatio);
158
+ case 'center':
159
+ return rectangle.create(bounds.x + delta.x, bounds.y + delta.y, bounds.width, bounds.height);
160
+ }
161
+ }
162
+ function isVertexViewerMarkupElement(el) {
163
+ return (isVertexViewerArrowMarkup(el) ||
164
+ isVertexViewerCircleMarkup(el) ||
165
+ isVertexViewerFreeformMarkup(el));
166
+ }
167
+ function isValidPointData(...points) {
168
+ return points.every((pt) => !isNaN(pt.x) && !isNaN(pt.y));
169
+ }
170
+ function isValidStartEvent(event) {
171
+ const el = event.target;
172
+ return isVertexViewerMarkupElement(el) && el.mode !== 'edit';
173
+ }
174
+
175
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
176
+ const RelativeAnchor = ({ id, rotation, name, point, onPointerDown }, children) => {
177
+ return (h("div", { id: id, class: "bounds-anchor-position", style: {
178
+ top: `${point.y}px`,
179
+ left: `${point.x}px`,
180
+ }, onTouchStart: (event) => event.preventDefault(), onPointerDown: onPointerDown },
181
+ h("div", { class: "bounds-anchor", style: {
182
+ transform: `rotateZ(${rotation !== null && rotation !== void 0 ? rotation : 0}deg)`,
183
+ } },
184
+ h("slot", { name: name }, children))));
185
+ };
186
+ const SvgShadow = ({ id }) => {
187
+ return (h("filter", { id: id, filterUnits: "userSpaceOnUse" },
188
+ h("feGaussianBlur", { in: "SourceAlpha", stdDeviation: "2" }),
189
+ h("feOffset", { dx: "0", dy: "1", result: "offsetblur" }),
190
+ h("feFlood", { "flood-color": "#000000", "flood-opacity": "0.25" }),
191
+ h("feComposite", { in2: "offsetblur", operator: "in" }),
192
+ h("feMerge", null,
193
+ h("feMergeNode", null),
194
+ h("feMergeNode", { in: "SourceGraphic" }))));
195
+ };
196
+
197
+ class MarkupInteractionHandler {
198
+ constructor() {
199
+ this.handlePointerDown = (event) => {
200
+ this.handleInteractionAttempt(event);
201
+ };
202
+ this.handlePointerMove = (event) => {
203
+ this.handleInteractionMove(event);
204
+ };
205
+ this.handlePointerUp = (event) => {
206
+ window.removeEventListener('pointermove', this.handlePointerMove);
207
+ window.removeEventListener('pointerup', this.handlePointerUp);
208
+ this.handleInteractionEnd(event);
209
+ };
210
+ this.resizeObserver = new ResizeObserver(([entry]) => {
211
+ this.elementBounds = this.computeBoundingRect();
212
+ });
213
+ }
214
+ initialize(element, api) {
215
+ this.element = element;
216
+ this.api = api;
217
+ this.elementBounds = this.computeBoundingRect();
218
+ this.resizeObserver.observe(this.element);
219
+ this.element.addEventListener('pointerdown', this.handlePointerDown);
220
+ }
221
+ dispose() {
222
+ var _a;
223
+ this.resizeObserver.disconnect();
224
+ (_a = this.element) === null || _a === void 0 ? void 0 : _a.removeEventListener('pointerdown', this.handlePointerDown);
225
+ this.element = undefined;
226
+ this.api = undefined;
227
+ }
228
+ acceptInteraction() {
229
+ window.addEventListener('pointermove', this.handlePointerMove);
230
+ window.addEventListener('pointerup', this.handlePointerUp);
231
+ }
232
+ }
233
+
234
+ export { MarkupInteractionHandler as M, RelativeAnchor as R, SvgShadow as S, isVertexViewerCircleMarkup as a, isVertexViewerFreeformMarkup as b, translatePointToScreen as c, isValidStartEvent as d, createArrowheadPoints as e, isValidPointData as f, arrowheadPointsToPolygonPoints as g, transformRectangle as h, isVertexViewerArrowMarkup as i, parseBounds as j, translateRectToScreen as k, translatePointsToBounds as l, parsePoints as m, getBoundingBox2dAnchorPosition as n, parsePoint as p, translatePointToRelative as t };
235
+
236
+ //# sourceMappingURL=interactions.js.map
@@ -0,0 +1 @@
1
+ {"file":"interactions.js","mappings":";;;;;;SASgB,qBAAqB,CACnC,KAAkB,EAClB,GAAgB,EAChB,UAAU,GAAG,EAAE;EAEf,MAAM,QAAQ,GAAGA,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;EAC5C,MAAMC,OAAK,GAAGC,KAAK,CAAC,SAAS,CAC3BA,KAAK,CAAC,SAAS,CAACA,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CACpD,CAAC;;;EAIF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;EAC1D,MAAM,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAACA,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;EAEvE,MAAM,QAAQ,GAAGC,MAAM,CAAC,QAAQ,CAACF,OAAK,CAAC,CAAC;EACxC,MAAM,SAAS,GAAGD,KAAK,CAAC,KAAK,CAAC,UAAU,EAAEE,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;EAC3E,MAAM,UAAU,GAAGF,KAAK,CAAC,KAAK,CAAC,UAAU,EAAEE,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;EACxE,MAAM,SAAS,GAAGF,KAAK,CAAC,KAAK,CAAC,MAAM,EAAEE,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;EAE3D,OAAO;IACL,GAAG,EAAE,GAAG;IACR,IAAI,EAAEF,KAAK,CAAC,GAAG,CAAC,GAAG,EAAEG,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAChE,KAAK,EAAEH,KAAK,CAAC,GAAG,CAAC,GAAG,EAAEG,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAClE,IAAI,EAAEH,KAAK,CAAC,GAAG,CAAC,GAAG,EAAEG,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;GACjE,CAAC;AACJ,CAAC;SAEe,8BAA8B,CAC5C,MAAuB;EAEvB,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;KACxD,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;KAC9B,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;SAEe,yBAAyB,CACvC,EAAW;EAEX,QACE,EAAE,YAAY,WAAW,IAAI,EAAE,CAAC,QAAQ,KAAK,4BAA4B,EACzE;AACJ,CAAC;SAEe,UAAU,CACxB,KAAuC;EAEvC,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAGH,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AACnE;;SCvDgB,0BAA0B,CACxC,EAAW;EAEX,QACE,EAAE,YAAY,WAAW,IAAI,EAAE,CAAC,QAAQ,KAAK,6BAA6B,EAC1E;AACJ,CAAC;SAEe,WAAW,CACzB,KAA+C;EAE/C,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAGI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AACvE;;SCZgB,WAAW,CACzB,KAAyC;EAEzC,OAAO,OAAO,KAAK,KAAK,QAAQ;MAC5B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,MAAgB,KACrCJ,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CACvC;MACD,KAAK,CAAC;AACZ,CAAC;SAEe,4BAA4B,CAC1C,EAAW;EAEX,QACE,EAAE,YAAY,WAAW,IAAI,EAAE,CAAC,QAAQ,KAAK,+BAA+B,EAC5E;AACJ;;SCDgB,8BAA8B,CAC5C,IAAyB,EACzB,QAAqC;EAErC,QAAQ,QAAQ;IACd,KAAK,UAAU;MACb,OAAOA,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACtC,KAAK,KAAK;MACR,OAAOA,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACvD,KAAK,WAAW;MACd,OAAOA,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACnD,KAAK,OAAO;MACV,OAAOA,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrE,KAAK,cAAc;MACjB,OAAOA,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACjE,KAAK,QAAQ;MACX,OAAOA,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACrE,KAAK,aAAa;MAChB,OAAOA,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACpD,KAAK,MAAM;MACT,OAAOA,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACxD,KAAK,QAAQ;MACX,OAAOI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;GACjC;AACH,CAAC;SAEe,sBAAsB,CACpC,EAAe,EACf,gBAAuC;EAEvC,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC;EAC5C,OAAOJ,KAAK,CAAC,GAAG,CACdA,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,EACzCK,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,CACpC,CAAC;AACJ,CAAC;SAWe,2BAA2B,CACzCC,YAAiC,EACjC,gBAAuC;EAEvC,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC;EAC5C,OAAOD,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,EAAEC,YAAU,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;SAMgB,qBAAqB,CACnC,IAAyB,EACzB,gBAAuC;EAEvC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;EAChE,MAAM,UAAU,GAAG,2BAA2B,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;EACvE,OAAOF,SAAS,CAAC,sBAAsB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAChE,CAAC;AAED;;;SAGgB,wBAAwB,CACtC,EAAe,EACf,gBAAuC;EAEvC,MAAM,WAAW,GAAG,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC;EAChD,MAAMG,OAAK,GAAGP,KAAK,CAAC,KAAK,CACvBA,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAEK,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EACvD,WAAW,EACX,WAAW,CACZ,CAAC;EAEF,OAAOE,OAAK,CAAC;AACf,CAAC;AAED;;;;SAIgB,uBAAuB,CACrC,MAAqB,EACrB,QAA6B,EAC7B,MAA2B;EAE3B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,KACnBP,KAAK,CAAC,GAAG,CACPA,KAAK,CAAC,KAAK,CACTA,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,EAC5B,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,EACpC,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,CACvC,EACD,MAAM,CACP,CACF,CAAC;AACJ,CAAC;SAEe,eAAe,CAC7B,YAAyB,EACzB,YAAyB,EACzB,mBAA4B;EAE5B,MAAM,MAAM,GAAGI,SAAS,CAAC,UAAU,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;EAChE,IAAI,mBAAmB,EAAE;IACvB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;IAChD,MAAM,sBAAsB,GAAG,YAAY,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC;IAChE,MAAM,qBAAqB,GAAG,YAAY,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,sBAAsB;QACrC,UAAU;UACR,YAAY,CAAC,CAAC,GAAG,aAAa;UAC9B,YAAY,CAAC,CAAC;QAChB,YAAY,CAAC,CAAC,CAAC;IACnB,MAAM,UAAU,GAAG,qBAAqB;QACpC,UAAU;UACR,YAAY,CAAC,CAAC;UACd,YAAY,CAAC,CAAC,GAAG,aAAa;QAChC,YAAY,CAAC,CAAC,CAAC;IACnB,OAAOA,SAAS,CAAC,MAAM,CACrB,UAAU,EACV,UAAU,EACV,aAAa,EACb,aAAa,CACd,CAAC;GACH;OAAM;IACL,OAAO,MAAM,CAAC;GACf;AACH,CAAC;SAEe,kBAAkB,CAChC,MAA2B,EAC3B,KAAkB,EAClB,OAAoB,EACpB,MAAmC,EACnC,mBAA6B;EAE7B,MAAM,KAAK,GAAGJ,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;EAC7C,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;EACxD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC;EACvB,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC;EACvB,MAAM,OAAO,GAAGA,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACxC,MAAM,UAAU,GAAGA,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;EAC9C,MAAM,QAAQ,GAAGA,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;EAC1C,MAAM,WAAW,GAAGA,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;EAChD,QAAQ,MAAM;IACZ,KAAK,UAAU;MACb,OAAO,eAAe,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACtE,KAAK,KAAK;MACR,OAAO,eAAe,CACpB,WAAW,EACXA,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAC7B,CAAC,CAAC,mBAAmB,CACtB,CAAC;IACJ,KAAK,WAAW;MACd,OAAO,eAAe,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACrE,KAAK,OAAO;MACV,OAAO,eAAe,CACpB,UAAU,EACVA,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,EAC5B,CAAC,CAAC,mBAAmB,CACtB,CAAC;IACJ,KAAK,cAAc;MACjB,OAAO,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAClE,KAAK,QAAQ;MACX,OAAO,eAAe,CACpB,OAAO,EACPA,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAC9B,CAAC,CAAC,mBAAmB,CACtB,CAAC;IACJ,KAAK,aAAa;MAChB,OAAO,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACnE,KAAK,MAAM;MACT,OAAO,eAAe,CACpB,WAAW,EACXA,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,EAC5B,CAAC,CAAC,mBAAmB,CACtB,CAAC;IACJ,KAAK,QAAQ;MACX,OAAOI,SAAS,CAAC,MAAM,CACrB,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAClB,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAClB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,MAAM,CACd,CAAC;GACL;AACH,CAAC;SAEe,2BAA2B,CACzC,EAAe;EAKf,QACE,yBAAyB,CAAC,EAAE,CAAC;IAC7B,0BAA0B,CAAC,EAAE,CAAC;IAC9B,4BAA4B,CAAC,EAAE,CAAC,EAChC;AACJ,CAAC;SAEe,gBAAgB,CAAC,GAAG,MAAqB;EACvD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;SAEe,iBAAiB,CAAC,KAAmB;EACnD,MAAM,EAAE,GAAG,KAAK,CAAC,MAAqB,CAAC;EAEvC,OAAO,2BAA2B,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC;AAC/D;;AC3OA;MAYa,cAAc,GAA6C,CACtE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,EAC5C,QAAQ;EAER,QACE,WACE,EAAE,EAAE,EAAE,EACN,KAAK,EAAC,wBAAwB,EAC9B,KAAK,EAAE;MACL,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI;MACnB,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI;KACrB,EACD,YAAY,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,cAAc,EAAE,EAC/C,aAAa,EAAE,aAAa;IAE5B,WACE,KAAK,EAAC,eAAe,EACrB,KAAK,EAAE;QACL,SAAS,EAAE,WAAW,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,CAAC,MAAM;OAC1C;MAED,YAAM,IAAI,EAAE,IAAI,IAAG,QAAQ,CAAQ,CAC/B,CACF,EACN;AACJ,EAAE;MAMW,SAAS,GAAwC,CAAC,EAAE,EAAE,EAAE;EACnE,QACE,cAAQ,EAAE,EAAE,EAAE,EAAE,WAAW,EAAC,gBAAgB;IAC1C,sBAAgB,EAAE,EAAC,aAAa,EAAC,YAAY,EAAC,GAAG,GAAG;IACpD,gBAAU,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,MAAM,EAAC,YAAY,GAAG;IAC9C,8BAAqB,SAAS,mBAAe,MAAM,GAAG;IACtD,mBAAa,GAAG,EAAC,YAAY,EAAC,QAAQ,EAAC,IAAI,GAAG;IAC9C;MACE,sBAAe;MACf,mBAAa,EAAE,EAAC,eAAe,GAAG,CAC1B,CACH,EACT;AACJ;;MCtDsB,wBAAwB;EAO5C;IA6BQ,sBAAiB,GAAG,CAAC,KAAmB;MAC9C,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;KACtC,CAAC;IAEM,sBAAiB,GAAG,CAAC,KAAmB;MAC9C,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACnC,CAAC;IAEM,oBAAe,GAAG,CAAC,KAAmB;MAC5C,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;MAClE,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;MAE9D,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;KAClC,CAAC;IAzCA,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC;MAC/C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;KACjD,CAAC,CAAC;GACJ;EAEM,UAAU,CAAC,OAAoB,EAAE,GAAmB;IACzD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAEf,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAChD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE1C,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;GACtE;EAEM,OAAO;;IACZ,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;IACjC,MAAA,IAAI,CAAC,OAAO,0CAAE,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAEzE,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;IACzB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;GACtB;EAES,iBAAiB;IACzB,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC/D,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;GAC5D;;;;;","names":["Point","angle","Angle","Matrix","Rectangle","Dimensions","dimensions","point"],"sources":["./src/components/viewer-markup-arrow/utils.ts","./src/components/viewer-markup-circle/utils.ts","./src/components/viewer-markup-freeform/utils.ts","./src/components/viewer-markup/markup-utils.ts","./src/components/viewer-markup/viewer-markup-components.tsx","./src/lib/markup/interactions.ts"],"sourcesContent":["import { Angle, Matrix, Point } from '@vertexvis/geometry';\n\nexport interface ArrowheadPoints {\n tip: Point.Point;\n left: Point.Point;\n right: Point.Point;\n base: Point.Point;\n}\n\nexport function createArrowheadPoints(\n start: Point.Point,\n end: Point.Point,\n arrowAngle = 60\n): ArrowheadPoints {\n const distance = Point.distance(start, end);\n const angle = Angle.normalize(\n Angle.toDegrees(Angle.fromPoints(start, end)) - 270\n );\n\n // Adjust the arrow height in relation to the distance between the to and from\n // points. Uses a min and max size so the arrow doesn't become cartoonish.\n const height = Math.max(4, Math.min(16, distance * 0.25));\n const sideLength = height / Math.cos(Angle.toRadians(90 - arrowAngle));\n\n const rotation = Matrix.rotation(angle);\n const arrowLeft = Point.polar(sideLength, Angle.toRadians(arrowAngle * 2));\n const arrowRight = Point.polar(sideLength, Angle.toRadians(arrowAngle));\n const arrowBase = Point.polar(height, Angle.toRadians(90));\n\n return {\n tip: end,\n left: Point.add(end, Matrix.transformPoint(rotation, arrowLeft)),\n right: Point.add(end, Matrix.transformPoint(rotation, arrowRight)),\n base: Point.add(end, Matrix.transformPoint(rotation, arrowBase)),\n };\n}\n\nexport function arrowheadPointsToPolygonPoints(\n points: ArrowheadPoints\n): string {\n return [points.tip, points.right, points.base, points.left]\n .map((pt) => `${pt.x},${pt.y}`)\n .join(' ');\n}\n\nexport function isVertexViewerArrowMarkup(\n el: unknown\n): el is HTMLVertexViewerMarkupArrowElement {\n return (\n el instanceof HTMLElement && el.nodeName === 'VERTEX-VIEWER-MARKUP-ARROW'\n );\n}\n\nexport function parsePoint(\n value: string | Point.Point | undefined\n): Point.Point | undefined {\n return typeof value === 'string' ? Point.fromJson(value) : value;\n}\n","import { Rectangle } from '@vertexvis/geometry';\n\nexport function isVertexViewerCircleMarkup(\n el: unknown\n): el is HTMLVertexViewerMarkupCircleElement {\n return (\n el instanceof HTMLElement && el.nodeName === 'VERTEX-VIEWER-MARKUP-CIRCLE'\n );\n}\n\nexport function parseBounds(\n value: string | Rectangle.Rectangle | undefined\n): Rectangle.Rectangle | undefined {\n return typeof value === 'string' ? Rectangle.fromJson(value) : value;\n}\n","import { Point } from '@vertexvis/geometry';\n\nexport function parsePoints(\n value: string | Point.Point[] | undefined\n): Point.Point[] | undefined {\n return typeof value === 'string'\n ? JSON.parse(value).map((values: number[]) =>\n Point.fromJson(JSON.stringify(values))\n )\n : value;\n}\n\nexport function isVertexViewerFreeformMarkup(\n el: unknown\n): el is HTMLVertexViewerMarkupFreeformElement {\n return (\n el instanceof HTMLElement && el.nodeName === 'VERTEX-VIEWER-MARKUP-FREEFORM'\n );\n}\n","import { Dimensions, Point, Rectangle } from '@vertexvis/geometry';\n\nimport { isVertexViewerArrowMarkup } from '../viewer-markup-arrow/utils';\nimport { isVertexViewerCircleMarkup } from '../viewer-markup-circle/utils';\nimport { isVertexViewerFreeformMarkup } from '../viewer-markup-freeform/utils';\n\nexport type BoundingBox2dAnchorPosition =\n | 'left'\n | 'right'\n | 'top'\n | 'bottom'\n | 'top-left'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-right'\n | 'center';\n\nexport function getBoundingBox2dAnchorPosition(\n rect: Rectangle.Rectangle,\n position: BoundingBox2dAnchorPosition\n): Point.Point {\n switch (position) {\n case 'top-left':\n return Point.create(rect.x, rect.y);\n case 'top':\n return Point.create(rect.x + rect.width / 2, rect.y);\n case 'top-right':\n return Point.create(rect.x + rect.width, rect.y);\n case 'right':\n return Point.create(rect.x + rect.width, rect.y + rect.height / 2);\n case 'bottom-right':\n return Point.create(rect.x + rect.width, rect.y + rect.height);\n case 'bottom':\n return Point.create(rect.x + rect.width / 2, rect.y + rect.height);\n case 'bottom-left':\n return Point.create(rect.x, rect.y + rect.height);\n case 'left':\n return Point.create(rect.x, rect.y + rect.height / 2);\n case 'center':\n return Rectangle.center(rect);\n }\n}\n\nexport function translatePointToScreen(\n pt: Point.Point,\n canvasDimensions: Dimensions.Dimensions\n): Point.Point {\n const scaleFactor = canvasDimensions.height;\n return Point.add(\n Point.scale(pt, scaleFactor, scaleFactor),\n Dimensions.center(canvasDimensions)\n );\n}\n\nexport function translatePointToBounds(\n pt: Point.Point,\n rect: Rectangle.Rectangle,\n canvasDimensions: Dimensions.Dimensions\n): Point.Point {\n const rectToScreen = translateRectToScreen(rect, canvasDimensions);\n return Point.add(pt, rectToScreen);\n}\n\nexport function translateDimensionsToScreen(\n dimensions: Dimensions.Dimensions,\n canvasDimensions: Dimensions.Dimensions\n): Dimensions.Dimensions {\n const scaleFactor = canvasDimensions.height;\n return Dimensions.scale(scaleFactor, scaleFactor, dimensions);\n}\n\n/**\n * Translates a rectangle in relative units, to a rectangle in screen units.\n *\n * Shape coordinates are persisted in relative units, so they can be presented\n * at any size.\n */\nexport function translateRectToScreen(\n rect: Rectangle.Rectangle,\n canvasDimensions: Dimensions.Dimensions\n): Rectangle.Rectangle {\n const position = translatePointToScreen(rect, canvasDimensions);\n const dimensions = translateDimensionsToScreen(rect, canvasDimensions);\n return Rectangle.fromPointAndDimensions(position, dimensions);\n}\n\n/**\n * Translates a point in screen units, to a point in relative units.\n */\nexport function translatePointToRelative(\n pt: Point.Point,\n canvasDimensions: Dimensions.Dimensions\n): Point.Point {\n const scaleFactor = 1 / canvasDimensions.height;\n const point = Point.scale(\n Point.subtract(pt, Dimensions.center(canvasDimensions)),\n scaleFactor,\n scaleFactor\n );\n\n return point;\n}\n\n/**\n * Translates a set of points in relative `original` units to\n * points in relative `bounds` units.\n */\nexport function translatePointsToBounds(\n points: Point.Point[],\n original: Rectangle.Rectangle,\n bounds: Rectangle.Rectangle\n): Point.Point[] {\n return points.map((pt) =>\n Point.add(\n Point.scale(\n Point.subtract(pt, original),\n bounds.width / (original.width || 1),\n bounds.height / (original.height || 1)\n ),\n bounds\n )\n );\n}\n\nexport function createRectangle(\n initialPoint: Point.Point,\n currentPoint: Point.Point,\n maintainAspectRatio: boolean\n): Rectangle.Rectangle {\n const bounds = Rectangle.fromPoints(initialPoint, currentPoint);\n if (maintainAspectRatio) {\n const fitBoundsSize = Math.max(bounds.width, bounds.height);\n const isPortrait = bounds.height > bounds.width;\n const currentIsLeftOfInitial = currentPoint.x <= initialPoint.x;\n const currentIsAboveInitial = currentPoint.y <= initialPoint.y;\n const fitBoundsX = currentIsLeftOfInitial\n ? isPortrait\n ? initialPoint.x - fitBoundsSize\n : currentPoint.x\n : initialPoint.x;\n const fitBoundsY = currentIsAboveInitial\n ? isPortrait\n ? currentPoint.y\n : initialPoint.y - fitBoundsSize\n : initialPoint.y;\n return Rectangle.create(\n fitBoundsX,\n fitBoundsY,\n fitBoundsSize,\n fitBoundsSize\n );\n } else {\n return bounds;\n }\n}\n\nexport function transformRectangle(\n bounds: Rectangle.Rectangle,\n start: Point.Point,\n current: Point.Point,\n anchor: BoundingBox2dAnchorPosition,\n maintainAspectRatio?: boolean\n): Rectangle.Rectangle {\n const delta = Point.subtract(current, start);\n const { x: left, y: top, width: w, height: h } = bounds;\n const right = left + w;\n const bottom = top + h;\n const topLeft = Point.create(left, top);\n const bottomLeft = Point.create(left, bottom);\n const topRight = Point.create(right, top);\n const bottomRight = Point.create(right, bottom);\n switch (anchor) {\n case 'top-left':\n return createRectangle(bottomRight, current, !!maintainAspectRatio);\n case 'top':\n return createRectangle(\n bottomRight,\n Point.create(left, current.y),\n !!maintainAspectRatio\n );\n case 'top-right':\n return createRectangle(bottomLeft, current, !!maintainAspectRatio);\n case 'right':\n return createRectangle(\n bottomLeft,\n Point.create(current.x, top),\n !!maintainAspectRatio\n );\n case 'bottom-right':\n return createRectangle(topLeft, current, !!maintainAspectRatio);\n case 'bottom':\n return createRectangle(\n topLeft,\n Point.create(right, current.y),\n !!maintainAspectRatio\n );\n case 'bottom-left':\n return createRectangle(topRight, current, !!maintainAspectRatio);\n case 'left':\n return createRectangle(\n bottomRight,\n Point.create(current.x, top),\n !!maintainAspectRatio\n );\n case 'center':\n return Rectangle.create(\n bounds.x + delta.x,\n bounds.y + delta.y,\n bounds.width,\n bounds.height\n );\n }\n}\n\nexport function isVertexViewerMarkupElement(\n el: HTMLElement\n): el is\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement {\n return (\n isVertexViewerArrowMarkup(el) ||\n isVertexViewerCircleMarkup(el) ||\n isVertexViewerFreeformMarkup(el)\n );\n}\n\nexport function isValidPointData(...points: Point.Point[]): boolean {\n return points.every((pt) => !isNaN(pt.x) && !isNaN(pt.y));\n}\n\nexport function isValidStartEvent(event: PointerEvent): boolean {\n const el = event.target as HTMLElement;\n\n return isVertexViewerMarkupElement(el) && el.mode !== 'edit';\n}\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { FunctionalComponent, h } from '@stencil/core';\nimport { Point } from '@vertexvis/geometry';\n\nexport interface RelativeAnchorProps {\n id?: string;\n rotation?: number;\n name: string;\n point: Point.Point;\n onPointerDown?: (event: PointerEvent) => void;\n}\n\nexport const RelativeAnchor: FunctionalComponent<RelativeAnchorProps> = (\n { id, rotation, name, point, onPointerDown },\n children\n) => {\n return (\n <div\n id={id}\n class=\"bounds-anchor-position\"\n style={{\n top: `${point.y}px`,\n left: `${point.x}px`,\n }}\n onTouchStart={(event) => event.preventDefault()}\n onPointerDown={onPointerDown}\n >\n <div\n class=\"bounds-anchor\"\n style={{\n transform: `rotateZ(${rotation ?? 0}deg)`,\n }}\n >\n <slot name={name}>{children}</slot>\n </div>\n </div>\n );\n};\n\nexport interface SvgShadowProps {\n id: string;\n}\n\nexport const SvgShadow: FunctionalComponent<SvgShadowProps> = ({ id }) => {\n return (\n <filter id={id} filterUnits=\"userSpaceOnUse\">\n <feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"2\" />\n <feOffset dx=\"0\" dy=\"1\" result=\"offsetblur\" />\n <feFlood flood-color=\"#000000\" flood-opacity=\"0.25\" />\n <feComposite in2=\"offsetblur\" operator=\"in\" />\n <feMerge>\n <feMergeNode />\n <feMergeNode in=\"SourceGraphic\" />\n </feMerge>\n </filter>\n );\n};\n","import type { InteractionApi, InteractionHandler } from '../interactions';\n\nexport abstract class MarkupInteractionHandler implements InteractionHandler {\n protected element?: HTMLElement;\n protected elementBounds?: DOMRect;\n protected api?: InteractionApi;\n\n private resizeObserver: ResizeObserver;\n\n public constructor() {\n this.resizeObserver = new ResizeObserver(([entry]) => {\n this.elementBounds = this.computeBoundingRect();\n });\n }\n\n public initialize(element: HTMLElement, api: InteractionApi): void {\n this.element = element;\n this.api = api;\n\n this.elementBounds = this.computeBoundingRect();\n this.resizeObserver.observe(this.element);\n\n this.element.addEventListener('pointerdown', this.handlePointerDown);\n }\n\n public dispose(): void {\n this.resizeObserver.disconnect();\n this.element?.removeEventListener('pointerdown', this.handlePointerDown);\n\n this.element = undefined;\n this.api = undefined;\n }\n\n protected acceptInteraction(): void {\n window.addEventListener('pointermove', this.handlePointerMove);\n window.addEventListener('pointerup', this.handlePointerUp);\n }\n\n private handlePointerDown = (event: PointerEvent): void => {\n this.handleInteractionAttempt(event);\n };\n\n private handlePointerMove = (event: PointerEvent): void => {\n this.handleInteractionMove(event);\n };\n\n private handlePointerUp = (event: PointerEvent): void => {\n window.removeEventListener('pointermove', this.handlePointerMove);\n window.removeEventListener('pointerup', this.handlePointerUp);\n\n this.handleInteractionEnd(event);\n };\n\n protected abstract computeBoundingRect(): DOMRect;\n\n protected abstract handleInteractionAttempt(event: PointerEvent): void;\n\n protected abstract handleInteractionMove(event: PointerEvent): void;\n\n protected abstract handleInteractionEnd(event: PointerEvent): void;\n}\n"],"version":3}