@api-client/ui 0.2.2 → 0.2.3

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 (170) hide show
  1. package/package.json +7 -2
  2. package/test/env.ts +15 -0
  3. package/test/tsconfig.json +1 -7
  4. package/web-test-runner.config.js +5 -1
  5. package/build/src/visualization/elements/VizAssociationElement.d.ts +0 -4
  6. package/build/src/visualization/elements/VizAssociationElement.d.ts.map +0 -1
  7. package/build/src/visualization/elements/VizAssociationElement.js +0 -4
  8. package/build/src/visualization/elements/VizAssociationElement.js.map +0 -1
  9. package/build/src/visualization/elements/VizWorkspaceElement.d.ts +0 -110
  10. package/build/src/visualization/elements/VizWorkspaceElement.d.ts.map +0 -1
  11. package/build/src/visualization/elements/VizWorkspaceElement.js +0 -321
  12. package/build/src/visualization/elements/VizWorkspaceElement.js.map +0 -1
  13. package/build/src/visualization/elements/WorkspaceStyles.d.ts +0 -3
  14. package/build/src/visualization/elements/WorkspaceStyles.d.ts.map +0 -1
  15. package/build/src/visualization/elements/WorkspaceStyles.js +0 -168
  16. package/build/src/visualization/elements/WorkspaceStyles.js.map +0 -1
  17. package/build/src/visualization/lib/AnchorFinder.d.ts +0 -64
  18. package/build/src/visualization/lib/AnchorFinder.d.ts.map +0 -1
  19. package/build/src/visualization/lib/AnchorFinder.js +0 -107
  20. package/build/src/visualization/lib/AnchorFinder.js.map +0 -1
  21. package/build/src/visualization/lib/AnchorUtils.d.ts +0 -10
  22. package/build/src/visualization/lib/AnchorUtils.d.ts.map +0 -1
  23. package/build/src/visualization/lib/AnchorUtils.js +0 -44
  24. package/build/src/visualization/lib/AnchorUtils.js.map +0 -1
  25. package/build/src/visualization/lib/AssociationAnchors.d.ts +0 -134
  26. package/build/src/visualization/lib/AssociationAnchors.d.ts.map +0 -1
  27. package/build/src/visualization/lib/AssociationAnchors.js +0 -351
  28. package/build/src/visualization/lib/AssociationAnchors.js.map +0 -1
  29. package/build/src/visualization/lib/LabelSketch.d.ts +0 -16
  30. package/build/src/visualization/lib/LabelSketch.d.ts.map +0 -1
  31. package/build/src/visualization/lib/LabelSketch.js +0 -53
  32. package/build/src/visualization/lib/LabelSketch.js.map +0 -1
  33. package/build/src/visualization/lib/LineSketch.d.ts +0 -26
  34. package/build/src/visualization/lib/LineSketch.d.ts.map +0 -1
  35. package/build/src/visualization/lib/LineSketch.js +0 -55
  36. package/build/src/visualization/lib/LineSketch.js.map +0 -1
  37. package/build/src/visualization/lib/Point.d.ts +0 -74
  38. package/build/src/visualization/lib/Point.d.ts.map +0 -1
  39. package/build/src/visualization/lib/Point.js +0 -121
  40. package/build/src/visualization/lib/Point.js.map +0 -1
  41. package/build/src/visualization/lib/PositionUtils.d.ts +0 -65
  42. package/build/src/visualization/lib/PositionUtils.d.ts.map +0 -1
  43. package/build/src/visualization/lib/PositionUtils.js +0 -205
  44. package/build/src/visualization/lib/PositionUtils.js.map +0 -1
  45. package/build/src/visualization/lib/SelectionManager.d.ts +0 -183
  46. package/build/src/visualization/lib/SelectionManager.d.ts.map +0 -1
  47. package/build/src/visualization/lib/SelectionManager.js +0 -481
  48. package/build/src/visualization/lib/SelectionManager.js.map +0 -1
  49. package/build/src/visualization/lib/ShapeArtist.d.ts +0 -45
  50. package/build/src/visualization/lib/ShapeArtist.d.ts.map +0 -1
  51. package/build/src/visualization/lib/ShapeArtist.js +0 -209
  52. package/build/src/visualization/lib/ShapeArtist.js.map +0 -1
  53. package/build/src/visualization/lib/SvgMarkers.d.ts +0 -14
  54. package/build/src/visualization/lib/SvgMarkers.d.ts.map +0 -1
  55. package/build/src/visualization/lib/SvgMarkers.js +0 -77
  56. package/build/src/visualization/lib/SvgMarkers.js.map +0 -1
  57. package/build/src/visualization/lib/TipSketch.d.ts +0 -26
  58. package/build/src/visualization/lib/TipSketch.d.ts.map +0 -1
  59. package/build/src/visualization/lib/TipSketch.js +0 -77
  60. package/build/src/visualization/lib/TipSketch.js.map +0 -1
  61. package/build/src/visualization/lib/TouchSupport.d.ts +0 -14
  62. package/build/src/visualization/lib/TouchSupport.d.ts.map +0 -1
  63. package/build/src/visualization/lib/TouchSupport.js +0 -55
  64. package/build/src/visualization/lib/TouchSupport.js.map +0 -1
  65. package/build/src/visualization/lib/Utils.d.ts +0 -25
  66. package/build/src/visualization/lib/Utils.d.ts.map +0 -1
  67. package/build/src/visualization/lib/Utils.js +0 -59
  68. package/build/src/visualization/lib/Utils.js.map +0 -1
  69. package/build/src/visualization/lib/VisualizationTypes.d.ts +0 -216
  70. package/build/src/visualization/lib/VisualizationTypes.d.ts.map +0 -1
  71. package/build/src/visualization/lib/VisualizationTypes.js +0 -3
  72. package/build/src/visualization/lib/VisualizationTypes.js.map +0 -1
  73. package/build/src/visualization/lib/WorkspaceAlignment.d.ts +0 -51
  74. package/build/src/visualization/lib/WorkspaceAlignment.d.ts.map +0 -1
  75. package/build/src/visualization/lib/WorkspaceAlignment.js +0 -243
  76. package/build/src/visualization/lib/WorkspaceAlignment.js.map +0 -1
  77. package/build/src/visualization/lib/WorkspaceDebugging.d.ts +0 -104
  78. package/build/src/visualization/lib/WorkspaceDebugging.d.ts.map +0 -1
  79. package/build/src/visualization/lib/WorkspaceDebugging.js +0 -286
  80. package/build/src/visualization/lib/WorkspaceDebugging.js.map +0 -1
  81. package/build/src/visualization/lib/WorkspaceEdges.d.ts +0 -293
  82. package/build/src/visualization/lib/WorkspaceEdges.d.ts.map +0 -1
  83. package/build/src/visualization/lib/WorkspaceEdges.js +0 -1073
  84. package/build/src/visualization/lib/WorkspaceEdges.js.map +0 -1
  85. package/build/src/visualization/lib/WorkspaceGestures.d.ts +0 -119
  86. package/build/src/visualization/lib/WorkspaceGestures.d.ts.map +0 -1
  87. package/build/src/visualization/lib/WorkspaceGestures.js +0 -376
  88. package/build/src/visualization/lib/WorkspaceGestures.js.map +0 -1
  89. package/build/src/visualization/lib/WorkspaceSizing.d.ts +0 -66
  90. package/build/src/visualization/lib/WorkspaceSizing.d.ts.map +0 -1
  91. package/build/src/visualization/lib/WorkspaceSizing.js +0 -168
  92. package/build/src/visualization/lib/WorkspaceSizing.js.map +0 -1
  93. package/build/src/visualization/lib/lines/RectilinearLine.d.ts +0 -114
  94. package/build/src/visualization/lib/lines/RectilinearLine.d.ts.map +0 -1
  95. package/build/src/visualization/lib/lines/RectilinearLine.js +0 -605
  96. package/build/src/visualization/lib/lines/RectilinearLine.js.map +0 -1
  97. package/build/src/visualization/lib/tips/RectilinearTip.d.ts +0 -26
  98. package/build/src/visualization/lib/tips/RectilinearTip.d.ts.map +0 -1
  99. package/build/src/visualization/lib/tips/RectilinearTip.js +0 -149
  100. package/build/src/visualization/lib/tips/RectilinearTip.js.map +0 -1
  101. package/build/src/visualization/lib/tips/TipArtist.d.ts +0 -22
  102. package/build/src/visualization/lib/tips/TipArtist.d.ts.map +0 -1
  103. package/build/src/visualization/lib/tips/TipArtist.js +0 -31
  104. package/build/src/visualization/lib/tips/TipArtist.js.map +0 -1
  105. package/build/src/visualization/lib/types.d.ts +0 -164
  106. package/build/src/visualization/lib/types.d.ts.map +0 -1
  107. package/build/src/visualization/lib/types.js +0 -2
  108. package/build/src/visualization/lib/types.js.map +0 -1
  109. package/build/src/visualization/plugin/dnd/DragAndDropPlugin.d.ts +0 -126
  110. package/build/src/visualization/plugin/dnd/DragAndDropPlugin.d.ts.map +0 -1
  111. package/build/src/visualization/plugin/dnd/DragAndDropPlugin.js +0 -260
  112. package/build/src/visualization/plugin/dnd/DragAndDropPlugin.js.map +0 -1
  113. package/build/src/visualization/plugin/group-selection/GroupSelection.d.ts +0 -93
  114. package/build/src/visualization/plugin/group-selection/GroupSelection.d.ts.map +0 -1
  115. package/build/src/visualization/plugin/group-selection/GroupSelection.js +0 -250
  116. package/build/src/visualization/plugin/group-selection/GroupSelection.js.map +0 -1
  117. package/build/src/visualization/plugin/positioning/DataModelLayout.d.ts +0 -10
  118. package/build/src/visualization/plugin/positioning/DataModelLayout.d.ts.map +0 -1
  119. package/build/src/visualization/plugin/positioning/DataModelLayout.js +0 -105
  120. package/build/src/visualization/plugin/positioning/DataModelLayout.js.map +0 -1
  121. package/build/src/visualization/plugin/positioning/WorkspaceLayout.d.ts +0 -93
  122. package/build/src/visualization/plugin/positioning/WorkspaceLayout.d.ts.map +0 -1
  123. package/build/src/visualization/plugin/positioning/WorkspaceLayout.js +0 -96
  124. package/build/src/visualization/plugin/positioning/WorkspaceLayout.js.map +0 -1
  125. package/build/src/visualization/viz-association.d.ts +0 -7
  126. package/build/src/visualization/viz-association.d.ts.map +0 -1
  127. package/build/src/visualization/viz-association.js +0 -3
  128. package/build/src/visualization/viz-association.js.map +0 -1
  129. package/build/src/visualization/viz-workspace.d.ts +0 -7
  130. package/build/src/visualization/viz-workspace.d.ts.map +0 -1
  131. package/build/src/visualization/viz-workspace.js +0 -3
  132. package/build/src/visualization/viz-workspace.js.map +0 -1
  133. package/src/visualization/elements/VizAssociationElement.ts +0 -3
  134. package/src/visualization/elements/VizWorkspaceElement.ts +0 -302
  135. package/src/visualization/elements/WorkspaceStyles.ts +0 -168
  136. package/src/visualization/lib/AnchorFinder.ts +0 -112
  137. package/src/visualization/lib/AnchorUtils.ts +0 -53
  138. package/src/visualization/lib/AssociationAnchors.ts +0 -418
  139. package/src/visualization/lib/LabelSketch.ts +0 -67
  140. package/src/visualization/lib/LineSketch.ts +0 -62
  141. package/src/visualization/lib/Point.ts +0 -134
  142. package/src/visualization/lib/PositionUtils.ts +0 -218
  143. package/src/visualization/lib/SelectionManager.ts +0 -513
  144. package/src/visualization/lib/ShapeArtist.ts +0 -222
  145. package/src/visualization/lib/SvgMarkers.ts +0 -80
  146. package/src/visualization/lib/TipSketch.ts +0 -91
  147. package/src/visualization/lib/TouchSupport.ts +0 -72
  148. package/src/visualization/lib/Utils.ts +0 -63
  149. package/src/visualization/lib/VisualizationTypes.ts +0 -232
  150. package/src/visualization/lib/WorkspaceAlignment.ts +0 -261
  151. package/src/visualization/lib/WorkspaceDebugging.ts +0 -313
  152. package/src/visualization/lib/WorkspaceEdges.ts +0 -1153
  153. package/src/visualization/lib/WorkspaceGestures.ts +0 -400
  154. package/src/visualization/lib/WorkspaceSizing.ts +0 -181
  155. package/src/visualization/lib/lines/RectilinearLine.ts +0 -589
  156. package/src/visualization/lib/tips/RectilinearTip.ts +0 -156
  157. package/src/visualization/lib/tips/TipArtist.ts +0 -34
  158. package/src/visualization/lib/types.ts +0 -173
  159. package/src/visualization/plugin/dnd/DragAndDropPlugin.ts +0 -294
  160. package/src/visualization/plugin/group-selection/GroupSelection.ts +0 -271
  161. package/src/visualization/plugin/positioning/DataModelLayout.ts +0 -114
  162. package/src/visualization/plugin/positioning/WorkspaceLayout.ts +0 -149
  163. package/src/visualization/viz-association.ts +0 -9
  164. package/src/visualization/viz-workspace.ts +0 -9
  165. package/test/env.d.ts +0 -9
  166. package/test/env.js +0 -7
  167. package/test/visualization/lib/AnchorFinder.test.ts +0 -313
  168. package/test/visualization/lib/AnchorUtils.test.ts +0 -178
  169. package/test/visualization/lib/PositionUtils.test.ts +0 -406
  170. package/test/visualization/lib/test-styles.css +0 -80
@@ -1,313 +0,0 @@
1
- import { assert, fixture, html } from '@open-wc/testing'
2
- import {
3
- findClosestAnchors,
4
- readEastAnchorPoints,
5
- readWestAnchorPoints,
6
- readNorthAnchorPoints,
7
- readSouthAnchorPoints,
8
- } from '../../../src/visualization/lib/AnchorFinder.js'
9
- import VizWorkspaceElement from '../../../src/visualization/elements/VizWorkspaceElement.js'
10
- import '../../../src/visualization/viz-workspace.js'
11
-
12
- describe('AnchorFinder', () => {
13
- async function objectsFixture(): Promise<VizWorkspaceElement> {
14
- return fixture(html`
15
- <viz-workspace style="width: 1200px; height: 800px;">
16
- <div class="workspace-dummy big" style="transform: translate(0px, 0px)"></div>
17
- <div class="workspace-dummy big" style="transform: translate(0px, 0px)"></div>
18
- </viz-workspace>
19
- `)
20
- }
21
-
22
- async function objectFixture(): Promise<VizWorkspaceElement> {
23
- return fixture(html`
24
- <viz-workspace style="width: 1200px; height: 800px;">
25
- <div class="workspace-dummy" style="transform: translate(0px, 0px)"></div>
26
- </viz-workspace>
27
- `)
28
- }
29
-
30
- // let styles: HTMLLinkElement;
31
- // before(async () => {
32
- // styles = document.createElement('link');
33
- // styles.rel = 'stylesheet';
34
- // styles.href = '/test/visualization/lib/test-styles.css';
35
- // document.body.appendChild(styles);
36
- // await nextFrame();
37
- // await aTimeout(100);
38
- // });
39
-
40
- // after(() => {
41
- // document.body.removeChild(styles);
42
- // });
43
-
44
- describe('readEastAnchorPoints()', () => {
45
- let el: HTMLElement
46
-
47
- beforeEach(async () => {
48
- const workspace = await objectFixture()
49
- el = workspace.querySelector('div')!
50
- })
51
-
52
- it('reads anchors', () => {
53
- el.style.transform = 'translate(10px, 20px)'
54
- const box = el.getBoundingClientRect()
55
-
56
- const result = readEastAnchorPoints(box, 0)
57
- assert.typeOf(result, 'array', 'returns an array')
58
- assert.lengthOf(result, 3, 'has 3 points')
59
- const [p1, p2, p3] = result
60
-
61
- assert.equal(p1.x, 51, 'p1.x has value')
62
- assert.equal(p1.y, 21, 'p1.y has value')
63
- assert.equal(p2.x, 51, 'p2.x has value')
64
- assert.equal(p2.y, 61, 'p2.y has value')
65
- assert.equal(p3.x, 51, 'p3.x has value')
66
- assert.equal(p3.y, 101, 'p3.y has value')
67
- })
68
-
69
- it('reads anchors with padding', () => {
70
- el.style.transform = 'translate(10px, 20px)'
71
- const box = el.getBoundingClientRect()
72
- const result = readEastAnchorPoints(box, 10)
73
- const [p1, p2, p3] = result
74
- assert.equal(p1.x, 51, 'p1.x has value')
75
- assert.equal(p1.y, 31, 'p1.y has value')
76
- assert.equal(p2.x, 51, 'p2.x has value')
77
- assert.equal(p2.y, 61, 'p2.y has value')
78
- assert.equal(p3.x, 51, 'p3.x has value')
79
- assert.equal(p3.y, 91, 'p3.y has value')
80
- })
81
- })
82
-
83
- describe('readWestAnchorPoints()', () => {
84
- let el: HTMLElement
85
-
86
- beforeEach(async () => {
87
- const workspace = await objectFixture()
88
- el = workspace.querySelector('div')!
89
- })
90
-
91
- it('reads anchors', () => {
92
- el.style.transform = 'translate(10px, 20px)'
93
- const box = el.getBoundingClientRect()
94
- const result = readWestAnchorPoints(box, 0)
95
- assert.typeOf(result, 'array', 'returns an array')
96
- assert.lengthOf(result, 3, 'has 3 points')
97
- const [p1, p2, p3] = result
98
- assert.equal(p1.x, 11, 'p1.x has value')
99
- assert.equal(p1.y, 21, 'p1.y has value')
100
- assert.equal(p2.x, 11, 'p2.x has value')
101
- assert.equal(p2.y, 61, 'p2.y has value')
102
- assert.equal(p3.x, 11, 'p3.x has value')
103
- assert.equal(p3.y, 101, 'p3.y has value')
104
- })
105
-
106
- it('reads anchors with padding', () => {
107
- el.style.transform = 'translate(10px, 20px)'
108
- const box = el.getBoundingClientRect()
109
- const result = readWestAnchorPoints(box, 10)
110
- const [p1, p2, p3] = result
111
- assert.equal(p1.x, 11, 'p1.x has value')
112
- assert.equal(p1.y, 31, 'p1.y has value')
113
- assert.equal(p2.x, 11, 'p2.x has value')
114
- assert.equal(p2.y, 61, 'p2.y has value')
115
- assert.equal(p3.x, 11, 'p3.x has value')
116
- assert.equal(p3.y, 91, 'p3.y has value')
117
- })
118
- })
119
-
120
- describe('readNorthAnchorPoints()', () => {
121
- let el: HTMLElement
122
-
123
- beforeEach(async () => {
124
- const workspace = await objectFixture()
125
- el = workspace.querySelector('div')!
126
- })
127
-
128
- it('reads anchors', () => {
129
- el.style.transform = 'translate(10px, 20px)'
130
- const box = el.getBoundingClientRect()
131
- const result = readNorthAnchorPoints(box, 0)
132
- assert.typeOf(result, 'array', 'returns an array')
133
- assert.lengthOf(result, 3, 'has 3 points')
134
- const [p1, p2, p3] = result
135
- assert.equal(p1.x, 11, 'p1.x has value')
136
- assert.equal(p1.y, 21, 'p1.y has value')
137
- assert.equal(p2.x, 31, 'p2.x has value')
138
- assert.equal(p2.y, 21, 'p2.y has value')
139
- assert.equal(p3.x, 51, 'p3.x has value')
140
- assert.equal(p3.y, 21, 'p3.y has value')
141
- })
142
-
143
- it('reads anchors with padding', () => {
144
- el.style.transform = 'translate(10px, 20px)'
145
- const box = el.getBoundingClientRect()
146
- const result = readNorthAnchorPoints(box, 10)
147
- const [p1, p2, p3] = result
148
- assert.equal(p1.x, 21, 'p1.x has value')
149
- assert.equal(p1.y, 21, 'p1.y has value')
150
- assert.equal(p2.x, 31, 'p2.x has value')
151
- assert.equal(p2.y, 21, 'p2.y has value')
152
- assert.equal(p3.x, 41, 'p3.x has value')
153
- assert.equal(p3.y, 21, 'p3.y has value')
154
- })
155
- })
156
-
157
- describe('readSouthAnchorPoints()', () => {
158
- let el: HTMLElement
159
-
160
- beforeEach(async () => {
161
- const workspace = await objectFixture()
162
- el = workspace.querySelector('div')!
163
- })
164
-
165
- it('reads anchors', () => {
166
- el.style.transform = 'translate(10px, 20px)'
167
- const box = el.getBoundingClientRect()
168
- const result = readSouthAnchorPoints(box, 0)
169
- assert.typeOf(result, 'array', 'returns an array')
170
- assert.lengthOf(result, 3, 'has 3 points')
171
- const [p1, p2, p3] = result
172
- assert.equal(p1.x, 11, 'p1.x has value')
173
- assert.equal(p1.y, 101, 'p1.y has value')
174
- assert.equal(p2.x, 31, 'p2.x has value')
175
- assert.equal(p2.y, 101, 'p2.y has value')
176
- assert.equal(p3.x, 51, 'p3.x has value')
177
- assert.equal(p3.y, 101, 'p3.y has value')
178
- })
179
-
180
- it('reads anchors with padding', () => {
181
- el.style.transform = 'translate(10px, 20px)'
182
- const box = el.getBoundingClientRect()
183
- const result = readSouthAnchorPoints(box, 10)
184
- const [p1, p2, p3] = result
185
- assert.equal(p1.x, 21, 'p1.x has value')
186
- assert.equal(p1.y, 101, 'p1.y has value')
187
- assert.equal(p2.x, 31, 'p2.x has value')
188
- assert.equal(p2.y, 101, 'p2.y has value')
189
- assert.equal(p3.x, 41, 'p3.x has value')
190
- assert.equal(p3.y, 101, 'p3.y has value')
191
- })
192
- })
193
-
194
- describe('findClosestAnchors()', () => {
195
- let e1: HTMLElement
196
- let e2: HTMLElement
197
-
198
- beforeEach(async () => {
199
- const workspace = await objectsFixture()
200
- const objects = workspace.querySelectorAll('div')
201
- e1 = objects[0]
202
- e2 = objects[1]
203
- })
204
-
205
- // Testing without the padding so the anchors are in the vertexes.
206
- // .workspace-dummy has `width: 200px;` and `height: 360px;`.
207
-
208
- it('computes equal sizes and y-position (top anchors)', () => {
209
- e1.style.transform = 'translate(10px, 20px)'
210
- e2.style.transform = 'translate(220px, 20px)'
211
- const b1 = e1.getBoundingClientRect()
212
- const b2 = e2.getBoundingClientRect()
213
- const result = findClosestAnchors(b1, b2, 0)
214
- const [p1, p2] = result
215
-
216
- assert.equal(p1.x, 211, 'has p1.x') // right
217
- assert.equal(p1.y, 21, 'has p1.y') // y
218
- assert.equal(p2.x, 221, 'has p2.x') // left
219
- assert.equal(p2.y, 21, 'has p2.y') // y
220
- })
221
-
222
- it('computes equal sizes, target below-right, middle-top anchors', () => {
223
- e1.style.transform = 'translate(10px, 180px)'
224
- e2.style.transform = 'translate(250px, 305px)'
225
- const b1 = e1.getBoundingClientRect()
226
- const b2 = e2.getBoundingClientRect()
227
- const result = findClosestAnchors(b1, b2, 0)
228
- const [p1, p2] = result
229
- assert.equal(p1.x, 211, 'has p1.x') // right
230
- assert.equal(p1.y, 361, 'has p1.y') // middle
231
- assert.equal(p2.x, 251, 'has p2.x') // left
232
- assert.equal(p2.y, 306, 'has p2.y') // top
233
- })
234
-
235
- it('computes equal sizes, target below-right, bottom-top anchors', () => {
236
- e1.style.transform = 'translate(10px, 180px)'
237
- e2.style.transform = 'translate(250px, 405px)'
238
- const b1 = e1.getBoundingClientRect()
239
- const b2 = e2.getBoundingClientRect()
240
- const result = findClosestAnchors(b1, b2, 0)
241
- const [p1, p2] = result
242
- assert.equal(p1.x, 211, 'has p1.x') // right
243
- assert.equal(p1.y, 361, 'has p1.y') // bottom
244
- assert.equal(p2.x, 251, 'has p2.x') // left
245
- assert.equal(p2.y, 406, 'has p2.y') // top
246
- })
247
-
248
- it('computes equal sizes, target below-right, bottom-middle anchors', () => {
249
- e1.style.transform = 'translate(10px, 180px)'
250
- e2.style.transform = 'translate(250px, 255px)'
251
- const b1 = e1.getBoundingClientRect()
252
- const b2 = e2.getBoundingClientRect()
253
- const result = findClosestAnchors(b1, b2, 0)
254
- const [p1, p2] = result
255
- assert.equal(p1.x, 211, 'has p1.x') // right
256
- assert.equal(p1.y, 181, 'has p1.y') // bottom
257
- assert.equal(p2.x, 251, 'has p2.x') // left
258
- assert.equal(p2.y, 256, 'has p2.y') // middle
259
- })
260
-
261
- it('computes aligned, the same sizes (top anchors)', () => {
262
- e1.style.transform = 'translate(10px, 180px)'
263
- e2.style.transform = 'translate(250px, 180px)'
264
- const b1 = e1.getBoundingClientRect()
265
- const b2 = e2.getBoundingClientRect()
266
- const result = findClosestAnchors(b1, b2, 0)
267
- const [p1, p2] = result
268
- assert.equal(p1.x, 211, 'has p1.x') // right
269
- assert.equal(p1.y, 181, 'has p1.y') // bottom
270
- assert.equal(p2.x, 251, 'has p2.x') // left
271
- assert.equal(p2.y, 181, 'has p2.y') // middle
272
- })
273
-
274
- it('computes target East-South', () => {
275
- e1.style.transform = 'translate(10px, 10px)'
276
- e2.style.transform = 'translate(250px, 400px)'
277
- const b1 = e1.getBoundingClientRect()
278
- const b2 = e2.getBoundingClientRect()
279
- const result = findClosestAnchors(b1, b2, 0)
280
- const [p1, p2] = result
281
- assert.equal(p1.x, 211, 'has p1.x') // right
282
- assert.equal(p1.y, 371, 'has p1.y') // bottom
283
- assert.equal(p2.x, 251, 'has p2.x') // left
284
- assert.equal(p2.y, 401, 'has p2.y') // top
285
- })
286
-
287
- it('computes target South', () => {
288
- e1.style.transform = 'translate(10px, 10px)'
289
- e2.style.transform = 'translate(10px, 400px)'
290
- const b1 = e1.getBoundingClientRect()
291
- const b2 = e2.getBoundingClientRect()
292
- const result = findClosestAnchors(b1, b2, 0)
293
- const [p1, p2] = result
294
- assert.equal(p1.x, 211, 'has p1.x') // right
295
- assert.equal(p1.y, 371, 'has p1.y') // bottom
296
- assert.equal(p2.x, 211, 'has p2.x') // right
297
- assert.equal(p2.y, 401, 'has p2.y') // top
298
- })
299
-
300
- it('computes target South-West', () => {
301
- e1.style.transform = 'translate(155px, 10px)'
302
- e2.style.transform = 'translate(10px, 400px)'
303
- const b1 = e1.getBoundingClientRect()
304
- const b2 = e2.getBoundingClientRect()
305
- const result = findClosestAnchors(b1, b2, 0)
306
- const [p1, p2] = result
307
- assert.equal(p1.x, 156, 'has p1.x') // left
308
- assert.equal(p1.y, 371, 'has p1.y') // bottom
309
- assert.equal(p2.x, 111, 'has p2.x') // middle
310
- assert.equal(p2.y, 401, 'has p2.y') // top
311
- })
312
- })
313
- })
@@ -1,178 +0,0 @@
1
- import { TemplateResult } from 'lit'
2
- import { assert, fixture, html, nextFrame } from '@open-wc/testing'
3
- import { anchorToPoint, closestAnchors } from '../../../src/visualization/lib/AnchorUtils.js'
4
- import { Point } from '../../../src/visualization/lib/Point.js'
5
- import VizWorkspaceElement from '../../../src/visualization/elements/VizWorkspaceElement.js'
6
- import '../../../src/visualization/viz-workspace.js'
7
-
8
- describe('AnchorUtils', () => {
9
- function slotsTemplate(): TemplateResult {
10
- const items = [
11
- ['top-edge left-slot', 'top-left', '6', '6'],
12
- ['top-edge center-slot', 'top-center', '6', '6'],
13
- ['top-edge right-slot', 'top-right', '6', '6'],
14
-
15
- ['bottom-edge left-slot', 'bottom-left', '6', '6'],
16
- ['bottom-edge center-slot', 'bottom-center', '6', '6'],
17
- ['bottom-edge right-slot', 'bottom-right', '6', '6'],
18
-
19
- ['left-edge top-slot', 'left-top', '8', '6'],
20
- ['left-edge middle-slot', 'left-middle', '8', '6'],
21
- ['left-edge bottom-slot', 'left-bottom', '8', '6'],
22
-
23
- ['right-edge top-slot', 'right-top', '8', '6'],
24
- ['right-edge middle-slot', 'right-middle', '8', '6'],
25
- ['right-edge bottom-slot', 'right-bottom', '8', '6'],
26
- ]
27
- return html`
28
- ${items.map(
29
- (item) => html`
30
- <div
31
- class="manual-association ${item[0]}"
32
- data-association-slot="${item[1]}"
33
- data-vertical-offset="${item[2]}"
34
- data-horizontal-offset="${item[3]}"
35
- ></div>
36
- `
37
- )}
38
- `
39
- }
40
-
41
- async function workspaceEntityFixture(): Promise<HTMLElement> {
42
- return fixture(html`
43
- <div class="workspace-position-wrapper">
44
- <viz-workspace style="width: 400px; height: 400px;">
45
- <div class="entity" data-association-slots data-key="testId" style="transform: translate(100px, 200px)">
46
- ${slotsTemplate()}
47
- </div>
48
- </viz-workspace>
49
- </div>
50
- `)
51
- }
52
-
53
- async function workspaceMultiEntityFixture(): Promise<HTMLElement> {
54
- return fixture(html`
55
- <div class="workspace-position-wrapper">
56
- <viz-workspace style="width: 400px; height: 400px;">
57
- <div class="entity" data-association-slots data-key="testId1" style="transform: translate(100px, 200px)">
58
- ${slotsTemplate()}
59
- </div>
60
- <div class="entity" data-association-slots data-key="testId2" style="transform: translate(300px, 300px)">
61
- ${slotsTemplate()}
62
- </div>
63
- <div class="entity" data-association-slots data-key="testId3" style="transform: translate(10px, 10px)">
64
- ${slotsTemplate()}
65
- </div>
66
- </viz-workspace>
67
- </div>
68
- `)
69
- }
70
-
71
- async function noAnchorsFixture(): Promise<HTMLElement> {
72
- return fixture(html`
73
- <div class="workspace-position-wrapper">
74
- <viz-workspace style="width: 400px; height: 400px;">
75
- <div class="entity" data-key="testId1" style="transform: translate(100px, 200px)"></div>
76
- <div class="entity" data-key="testId2" style="transform: translate(300px, 300px)"></div>
77
- <div class="entity" data-key="testId3" style="transform: translate(10px, 10px)"></div>
78
- </viz-workspace>
79
- </div>
80
- `)
81
- }
82
-
83
- describe('anchorToPoint()', () => {
84
- let workspace: VizWorkspaceElement
85
- let element: HTMLElement
86
-
87
- beforeEach(async () => {
88
- const wrapper = await workspaceEntityFixture()
89
- workspace = wrapper.querySelector('viz-workspace')!
90
- const entity = workspace.querySelector('.entity')!
91
- element = entity.querySelector('.manual-association')!
92
- })
93
-
94
- it('computes position with vertical/horizontal offset', async () => {
95
- await nextFrame()
96
- const result = anchorToPoint(element, workspace)
97
- // offset to the parent (entity), + position change + v/h offset + border
98
- assert.approximately(result.x, element.offsetLeft + 100 + 6 + 2, 1, 'has the x position')
99
- assert.approximately(result.y, element.offsetTop + 200 + 6 + 2, 1, 'has the y position')
100
- })
101
-
102
- it('computes position without vertical/horizontal offset', async () => {
103
- delete element.dataset.verticalOffset
104
- delete element.dataset.horizontalOffset
105
- await nextFrame()
106
- const result = anchorToPoint(element, workspace)
107
- // offset to the parent (entity), + position change + border
108
- assert.approximately(result.x, element.offsetLeft + 100 + 2, 1, 'has the x position')
109
- assert.approximately(result.y, element.offsetTop + 200 + 2, 1, 'has the y position')
110
- })
111
-
112
- it('ignores invalid vertical/horizontal offset', async () => {
113
- element.dataset.verticalOffset = 'test 1'
114
- element.dataset.horizontalOffset = 'test 2'
115
- await nextFrame()
116
- const result = anchorToPoint(element, workspace)
117
- // offset to the parent (entity), + position change + border
118
- assert.approximately(result.x, element.offsetLeft + 100 + 2, 1, 'has the x position')
119
- assert.approximately(result.y, element.offsetTop + 200 + 2, 1, 'has the y position')
120
- })
121
- })
122
-
123
- describe('closestAnchors()', () => {
124
- it('returns the closest points', async () => {
125
- const wrapper = await workspaceMultiEntityFixture()
126
- const workspace = wrapper.querySelector('viz-workspace')!
127
- const entities = workspace.querySelectorAll('.entity') as NodeListOf<HTMLElement>
128
-
129
- const result = closestAnchors(entities[1], entities[2], workspace)!
130
- assert.typeOf(result, 'array', 'returns an array')
131
- assert.lengthOf(result, 2, 'returns two points')
132
- const [p1, p2] = result
133
-
134
- assert.approximately(p1.x, 356, 1, 'p1.x is set')
135
- assert.approximately(p2.x, 252, 1, 'p2.x is set')
136
- assert.approximately(p1.y, 300, 1, 'p1.y is set')
137
- assert.approximately(p2.y, 166, 1, 'p2.y is set')
138
- })
139
-
140
- it('returns null when no anchors', async () => {
141
- const wrapper = await noAnchorsFixture()
142
- const workspace = wrapper.querySelector('viz-workspace')!
143
- const entities = workspace.querySelectorAll('.entity') as NodeListOf<HTMLElement>
144
- const result = closestAnchors(entities[1], entities[2], workspace)
145
- assert.strictEqual(result, null)
146
- })
147
-
148
- it('avoids already used anchors', async () => {
149
- const wrapper = await workspaceMultiEntityFixture()
150
- const workspace = wrapper.querySelector('viz-workspace')!
151
- const entities = workspace.querySelectorAll('.entity') as NodeListOf<HTMLElement>
152
- const result = closestAnchors(entities[1], entities[2], workspace, [
153
- {
154
- directions: { start: 'east', end: 'north' },
155
- id: 'test',
156
- positionChange: false,
157
- shape: {
158
- line: {
159
- startPoint: new Point(356, 300),
160
- endPoint: new Point(254, 127),
161
- type: 'rectilinear',
162
- transformOrigin: '0px 0px',
163
- },
164
- },
165
- source: 's1',
166
- target: 't1',
167
- },
168
- ])!
169
- assert.typeOf(result, 'array', 'returns an array')
170
- assert.lengthOf(result, 2, 'returns two points')
171
- const [p1, p2] = result
172
- assert.approximately(p1.x, 300, 1, 'p1.x is set')
173
- assert.approximately(p2.x, 196, 1, 'p2.x is set')
174
- assert.approximately(p1.y, 350, 1, 'p1.y is set')
175
- assert.approximately(p2.y, 212, 1, 'p2.y is set')
176
- })
177
- })
178
- })