@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,406 +0,0 @@
1
- import { assert, fixture, html, nextFrame } from '@open-wc/testing'
2
- import sinon from 'sinon'
3
- import {
4
- filterPoints,
5
- getRelativeClickPoint,
6
- findDirection,
7
- // theSamePair,
8
- closetsPair,
9
- getWorkspaceClick,
10
- getObjectBoundingClientRect,
11
- notifyMoved,
12
- } from '../../../src/visualization/lib/PositionUtils.js'
13
- import { Point } from '../../../src/visualization/lib/Point.js'
14
- import VizWorkspaceElement from '../../../src/visualization/elements/VizWorkspaceElement.js'
15
- import '../../../src/visualization/viz-workspace.js'
16
-
17
- describe('PositionUtils', () => {
18
- async function emptyWorkspaceFixture(): Promise<VizWorkspaceElement> {
19
- return fixture(html`<viz-workspace style="width: 400px; height: 400px;"></viz-workspace>`)
20
- }
21
-
22
- async function scaledWorkspaceFixture(): Promise<VizWorkspaceElement> {
23
- return fixture(html`<viz-workspace style="width: 400px; height: 400px;" zoom="10"></viz-workspace>`)
24
- }
25
-
26
- async function positionedWorkspaceFixture(): Promise<VizWorkspaceElement> {
27
- const elm = await fixture(html`
28
- <div class="workspace-position-wrapper">
29
- <viz-workspace style="width: 400px; height: 400px;"></viz-workspace>
30
- </div>
31
- `)
32
- return elm.querySelector('viz-workspace')!
33
- }
34
-
35
- async function workspaceFixture(): Promise<VizWorkspaceElement> {
36
- return fixture(
37
- html`<viz-workspace style="width: 400px; height: 400px;">
38
- <div class="workspace-dummy" style="transform: translate(10px, 10px)"></div>
39
- <div class="workspace-dummy" style="transform: translate(60px, 60px)"></div>
40
- <div class="workspace-dummy" style="transform: translate(200px, 200px)"></div>
41
- </viz-workspace>`
42
- )
43
- }
44
-
45
- async function positionedDataFixture(): Promise<VizWorkspaceElement> {
46
- const elm = await fixture(html`
47
- <div class="workspace-position-wrapper">
48
- <viz-workspace style="width: 400px; height: 400px;">
49
- <div class="workspace-dummy" style="transform: translate(10px, 10px)"></div>
50
- <div class="workspace-dummy" style="transform: translate(60px, 60px)"></div>
51
- <div class="workspace-dummy" style="transform: translate(200px, 200px)"></div>
52
- </viz-workspace>
53
- </div>
54
- `)
55
- return elm.querySelector('viz-workspace')!
56
- }
57
-
58
- async function scaledDataFixture(): Promise<VizWorkspaceElement> {
59
- return fixture(
60
- html` <viz-workspace style="width: 400px; height: 400px;" zoom="10">
61
- <div class="workspace-dummy" style="transform: translate(10px, 10px)"></div>
62
- <div class="workspace-dummy" style="transform: translate(60px, 60px)"></div>
63
- <div class="workspace-dummy" style="transform: translate(200px, 200px)"></div>
64
- </viz-workspace>`
65
- )
66
- }
67
-
68
- async function eventTargetFixture(): Promise<HTMLDivElement> {
69
- return fixture(html`<div></div>`)
70
- }
71
-
72
- // let styles: HTMLLinkElement;
73
- // before(async () => {
74
- // styles = document.createElement('link');
75
- // styles.rel = 'stylesheet';
76
- // styles.href = '/test/visualization/lib/test-styles.css';
77
- // document.body.appendChild(styles);
78
- // await nextFrame();
79
- // await aTimeout(100);
80
- // });
81
-
82
- // after(() => {
83
- // document.body.removeChild(styles);
84
- // });
85
-
86
- describe('filterPoints', () => {
87
- it('returns all valid points', () => {
88
- const arr = [new Point(0, 0), new Point(10, 1000)]
89
- const result = filterPoints(arr)
90
- assert.deepEqual(result, arr)
91
- })
92
-
93
- it('filters out invalid points', () => {
94
- const arr = [new Point(0, 0), new Point(10, Number('test'))]
95
- const result = filterPoints(arr)
96
- assert.deepEqual(result, [arr[0]])
97
- })
98
- })
99
-
100
- describe('getRelativeClickPoint()', () => {
101
- it('returns the same values when no scale and no positioning', async () => {
102
- const workspace = await emptyWorkspaceFixture()
103
- const result = getRelativeClickPoint(10, 10, workspace)
104
- assert.equal(result.x, 10, 'the x is set')
105
- assert.equal(result.y, 10, 'the y is set')
106
- })
107
-
108
- it('returns position relative to the canvas position', async () => {
109
- const workspace = await positionedWorkspaceFixture()
110
- const result = getRelativeClickPoint(110, 120, workspace)
111
- const { marginTop, marginLeft } = getComputedStyle(workspace.parentElement!)
112
- const mt = Number(marginTop.replace('px', ''))
113
- const ml = Number(marginLeft.replace('px', ''))
114
- assert.equal(result.x, 110 - ml, 'the x is set')
115
- assert.equal(result.y, 120 - mt, 'the y is set')
116
- })
117
-
118
- it('returns relative position to the scroll position', async () => {
119
- const workspace = await positionedWorkspaceFixture()
120
- workspace.scrollTo(-200, -200) // to the right and bottom
121
- await nextFrame()
122
- const result = getRelativeClickPoint(0, 0, workspace)
123
- const { marginTop, marginLeft } = getComputedStyle(workspace.parentElement!)
124
- const mt = Number(marginTop.replace('px', ''))
125
- const ml = Number(marginLeft.replace('px', ''))
126
- assert.equal(result.x, 200 - ml, 'the x is set')
127
- assert.equal(result.y, 200 - mt, 'the y is set')
128
- })
129
-
130
- it('applies the scale', async () => {
131
- const workspace = await scaledWorkspaceFixture()
132
- workspace.scrollTo(-100, -200) // to the right and bottom
133
- await nextFrame()
134
- const result = getRelativeClickPoint(50, 80, workspace)
135
- assert.approximately(result.x, 138, 1, 'the x is set')
136
- assert.approximately(result.y, 261, 1, 'the y is set')
137
- })
138
- })
139
-
140
- describe('findDirection()', () => {
141
- it('starts in west', () => {
142
- const sp = new Point(10, 20)
143
- const ep = new Point(0, 0)
144
- const sb = new DOMRect(9, 10, 100, 100)
145
- const eb = new DOMRect(1, 1, 1, 1)
146
- const result = findDirection(sp, ep, sb, eb)
147
- assert.equal(result.start, 'west')
148
- })
149
-
150
- it('starts in east', () => {
151
- const sp = new Point(110, 20)
152
- const ep = new Point(0, 0)
153
- const sb = new DOMRect(10, 10, 100, 100)
154
- const eb = new DOMRect(1, 1, 100, 100)
155
- const result = findDirection(sp, ep, sb, eb)
156
- assert.equal(result.start, 'east')
157
- })
158
-
159
- it('starts in north', () => {
160
- const sp = new Point(20, 10)
161
- const ep = new Point(0, 0)
162
- const sb = new DOMRect(10, 10, 100, 100)
163
- const eb = new DOMRect(1, 1, 100, 100)
164
- const result = findDirection(sp, ep, sb, eb)
165
- assert.equal(result.start, 'north')
166
- })
167
-
168
- it('starts in south', () => {
169
- const sp = new Point(20, 110)
170
- const ep = new Point(0, 0)
171
- const sb = new DOMRect(10, 10, 100, 100)
172
- const eb = new DOMRect(1, 1, 100, 100)
173
- const result = findDirection(sp, ep, sb, eb)
174
- assert.equal(result.start, 'south')
175
- })
176
-
177
- it('ends in east', () => {
178
- const sp = new Point(0, 0)
179
- const ep = new Point(10, 20)
180
- const sb = new DOMRect(1, 1, 100, 100)
181
- const eb = new DOMRect(10, 10, 100, 100)
182
- const result = findDirection(sp, ep, sb, eb)
183
- assert.equal(result.end, 'east')
184
- })
185
-
186
- it('ends in west', () => {
187
- const sp = new Point(0, 0)
188
- const ep = new Point(110, 20)
189
- const sb = new DOMRect(1, 1, 100, 100)
190
- const eb = new DOMRect(10, 10, 100, 100)
191
- const result = findDirection(sp, ep, sb, eb)
192
- assert.equal(result.end, 'west')
193
- })
194
-
195
- it('ends in south', () => {
196
- const sp = new Point(0, 0)
197
- const ep = new Point(20, 110)
198
- const sb = new DOMRect(1, 1, 100, 100)
199
- const eb = new DOMRect(10, 10, 100, 100)
200
- const result = findDirection(sp, ep, sb, eb)
201
- assert.equal(result.end, 'south')
202
- })
203
-
204
- it('ends in north', () => {
205
- const sp = new Point(0, 0)
206
- const ep = new Point(20, 10)
207
- const sb = new DOMRect(1, 1, 100, 100)
208
- const eb = new DOMRect(10, 10, 100, 100)
209
- const result = findDirection(sp, ep, sb, eb)
210
- assert.equal(result.end, 'north')
211
- })
212
- })
213
-
214
- // describe('theSamePair()', () => {
215
- // it('the same for even pairs', () => {
216
- // const p1 = new Point(1, 2);
217
- // const p2 = new Point(3, 4);
218
- // const p3 = new Point(1, 2);
219
- // const p4 = new Point(3, 4);
220
- // const result = theSamePair(p1, p2, p3, p4);
221
- // assert.isTrue(result);
222
- // });
223
-
224
- // it('the same for odd pairs', () => {
225
- // const p1 = new Point(1, 2);
226
- // const p2 = new Point(3, 4);
227
- // const p3 = new Point(3, 4);
228
- // const p4 = new Point(1, 2);
229
- // const result = theSamePair(p1, p2, p3, p4);
230
- // assert.isTrue(result);
231
- // });
232
-
233
- // it('is false when not equal', () => {
234
- // const p1 = new Point(1, 3);
235
- // const p2 = new Point(3, 4);
236
- // const p3 = new Point(3, 4);
237
- // const p4 = new Point(1, 2);
238
- // const result = theSamePair(p1, p2, p3, p4);
239
- // assert.isFalse(result);
240
- // });
241
- // });
242
-
243
- describe('closetsPair()', () => {
244
- it('finds the closest 2 points', () => {
245
- const set1 = [
246
- new Point(1, 6),
247
- new Point(2, 6),
248
- new Point(3, 6),
249
- new Point(1, 5),
250
- new Point(3, 5),
251
- new Point(1, 3),
252
- new Point(2, 3),
253
- new Point(3, 3),
254
- ]
255
-
256
- const set2 = [
257
- new Point(4, 3),
258
- new Point(5, 3),
259
- new Point(6, 3),
260
- new Point(4, 2),
261
- new Point(6, 2),
262
- new Point(4, 1),
263
- new Point(5, 1),
264
- new Point(6, 1),
265
- ]
266
-
267
- const result = closetsPair(set1, set2)!
268
- assert.deepEqual(result[0], set1[7], 'has the fist point')
269
- assert.deepEqual(result[1], set2[0], 'has the second point')
270
- })
271
-
272
- it('avoids a specific point', () => {
273
- const set1 = [
274
- new Point(1, 6),
275
- new Point(2, 6),
276
- new Point(3, 6),
277
- new Point(1, 5),
278
- new Point(3, 5),
279
- new Point(1, 3),
280
- new Point(2, 3),
281
- new Point(3, 3),
282
- ]
283
-
284
- const set2 = [
285
- new Point(4, 3),
286
- new Point(5, 3),
287
- new Point(6, 3),
288
- new Point(4, 2),
289
- new Point(6, 2),
290
- new Point(4, 1),
291
- new Point(5, 1),
292
- new Point(6, 1),
293
- ]
294
-
295
- const result = closetsPair(set1, set2, [set1[7]], [set2[0]])!
296
- assert.deepEqual(result[0], set1[6], 'has the fist point')
297
- assert.deepEqual(result[1], set2[3], 'has the second point')
298
- })
299
-
300
- it('returns null when the pair cannot be find', () => {
301
- const set1: Point[] = []
302
- const set2: Point[] = []
303
- const result = closetsPair(set1, set2)
304
- assert.strictEqual(result, null)
305
- })
306
-
307
- // it('returns avoided pairs when necessary', () => {
308
- // const set1 = [new Point(1, 6)]
309
-
310
- // const set2 = [new Point(4, 3)]
311
-
312
- // const result = closetsPair(set1, set2, [set1[0]], [set2[0]])!
313
- // assert.deepEqual(result[0], set1[0], 'has the fist point')
314
- // assert.deepEqual(result[1], set2[0], 'has the second point')
315
- // })
316
- })
317
-
318
- describe('getWorkspaceClick()', () => {
319
- it('returns the click position when not positioned', async () => {
320
- const workspace = await emptyWorkspaceFixture()
321
- const result = getWorkspaceClick(100, 200, workspace)
322
- assert.equal(result.x, 100)
323
- assert.equal(result.y, 200)
324
- })
325
-
326
- it('returns the click position when positioned', async () => {
327
- const x = 100
328
- const y = 200
329
- const workspace = await positionedWorkspaceFixture()
330
- const result = getWorkspaceClick(x, y, workspace)
331
- const { marginTop, marginLeft } = getComputedStyle(workspace.parentElement!)
332
- const mt = Number(marginTop.replace('px', ''))
333
- const ml = Number(marginLeft.replace('px', ''))
334
- assert.equal(result.x, x - ml)
335
- assert.equal(result.y, y - mt)
336
- })
337
- })
338
-
339
- describe('getObjectBoundingClientRect()', () => {
340
- it('returns the DOMRect when not positioned', async () => {
341
- const workspace = await workspaceFixture()
342
- const elm = workspace.querySelector('.workspace-dummy')!
343
- const result = getObjectBoundingClientRect(elm, workspace)
344
- // the .content.canvas element in the workspace has 1px border
345
- assert.equal(result.x, 11, 'has computed x')
346
- assert.equal(result.y, 11, 'has computed y')
347
- assert.equal(result.width, 40, 'has computed width')
348
- assert.equal(result.height, 80, 'has computed height')
349
- })
350
-
351
- it('returns the DOMRect when positioned', async () => {
352
- const workspace = await positionedDataFixture()
353
- const elm = workspace.querySelector('.workspace-dummy')!
354
- const result = getObjectBoundingClientRect(elm, workspace)
355
- // the .content.canvas element in the workspace has 1px border
356
- assert.equal(result.x, 11, 'has computed x')
357
- assert.equal(result.y, 11, 'has computed y')
358
- assert.equal(result.width, 40, 'has computed width')
359
- assert.equal(result.height, 80, 'has computed height')
360
- })
361
-
362
- it('returns the DOMRect when positioned', async () => {
363
- const workspace = await scaledDataFixture()
364
- const elm = workspace.querySelector('.workspace-dummy')!
365
- const result = getObjectBoundingClientRect(elm, workspace)
366
- // the .content.canvas element in the workspace has 1px border
367
- assert.approximately(result.x, 11, 1, 'has computed x')
368
- assert.approximately(result.y, 11, 1, 'has computed y')
369
- assert.approximately(result.width, 40, 1, 'has computed width')
370
- assert.approximately(result.height, 80, 1, 'has computed height')
371
- })
372
- })
373
-
374
- describe('notifyMoved()', () => {
375
- let element: HTMLDivElement
376
-
377
- beforeEach(async () => {
378
- element = await eventTargetFixture()
379
- })
380
-
381
- it('dispatches the bubbling event', () => {
382
- const spy = sinon.spy()
383
- window.addEventListener('positionchange', spy)
384
- notifyMoved(element, 10, 20)
385
- window.removeEventListener('positionchange', spy)
386
- assert.isTrue(spy.calledOnce)
387
- })
388
-
389
- it('is cancelable', () => {
390
- const spy = sinon.spy()
391
- element.addEventListener('positionchange', spy)
392
- notifyMoved(element, 10, 20)
393
- const e = spy.args[0][0]
394
- assert.isTrue(e.cancelable)
395
- })
396
-
397
- it('has the position delta', () => {
398
- const spy = sinon.spy()
399
- element.addEventListener('positionchange', spy)
400
- notifyMoved(element, 10, 20)
401
- const { detail } = spy.args[0][0]
402
- assert.equal(detail.dx, 10)
403
- assert.equal(detail.dy, 20)
404
- })
405
- })
406
- })
@@ -1,80 +0,0 @@
1
- html, body {
2
- margin: 0;
3
- padding: 0;
4
- }
5
-
6
- .workspace-position-wrapper {
7
- margin: 40px;
8
- }
9
-
10
- .workspace-dummy {
11
- width: 40px;
12
- height: 80px;
13
- position: absolute;
14
- background-color: red;
15
- }
16
-
17
- .workspace-dummy.big {
18
- width: 200px;
19
- height: 360px;
20
- position: absolute;
21
- background-color: red;
22
- }
23
-
24
- .manual-association {
25
- position: absolute;
26
- width: 12px;
27
- height: 12px;
28
- border: 1px #000 solid;
29
- border-radius: 50%;
30
- background-color: #fff;
31
- cursor: crosshair;
32
- }
33
-
34
- .manual-association.top-edge {
35
- top: -8px;
36
- }
37
-
38
- .manual-association.bottom-edge {
39
- bottom: -8px;
40
- }
41
-
42
- .manual-association.left-edge {
43
- left: -8px;
44
- }
45
-
46
- .manual-association.right-edge {
47
- right: -8px;
48
- }
49
-
50
- .manual-association.left-slot {
51
- left: 20%;
52
- }
53
-
54
- .manual-association.center-slot {
55
- left: calc(50% - 6px);
56
- }
57
-
58
- .manual-association.right-slot {
59
- right: 20%;
60
- }
61
-
62
- .manual-association.top-slot {
63
- top: 20%;
64
- }
65
-
66
- .manual-association.middle-slot {
67
- top: calc(50% - 6px);
68
- }
69
-
70
- .manual-association.bottom-slot {
71
- bottom: 20%;
72
- }
73
-
74
- .entity {
75
- position: absolute;
76
- border: 1px solid #afafaf;
77
- min-width: 240px;
78
- min-height: 200px;
79
- width: fit-content;
80
- }