@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.
- package/package.json +7 -2
- package/test/env.ts +15 -0
- package/test/tsconfig.json +1 -7
- package/web-test-runner.config.js +5 -1
- package/build/src/visualization/elements/VizAssociationElement.d.ts +0 -4
- package/build/src/visualization/elements/VizAssociationElement.d.ts.map +0 -1
- package/build/src/visualization/elements/VizAssociationElement.js +0 -4
- package/build/src/visualization/elements/VizAssociationElement.js.map +0 -1
- package/build/src/visualization/elements/VizWorkspaceElement.d.ts +0 -110
- package/build/src/visualization/elements/VizWorkspaceElement.d.ts.map +0 -1
- package/build/src/visualization/elements/VizWorkspaceElement.js +0 -321
- package/build/src/visualization/elements/VizWorkspaceElement.js.map +0 -1
- package/build/src/visualization/elements/WorkspaceStyles.d.ts +0 -3
- package/build/src/visualization/elements/WorkspaceStyles.d.ts.map +0 -1
- package/build/src/visualization/elements/WorkspaceStyles.js +0 -168
- package/build/src/visualization/elements/WorkspaceStyles.js.map +0 -1
- package/build/src/visualization/lib/AnchorFinder.d.ts +0 -64
- package/build/src/visualization/lib/AnchorFinder.d.ts.map +0 -1
- package/build/src/visualization/lib/AnchorFinder.js +0 -107
- package/build/src/visualization/lib/AnchorFinder.js.map +0 -1
- package/build/src/visualization/lib/AnchorUtils.d.ts +0 -10
- package/build/src/visualization/lib/AnchorUtils.d.ts.map +0 -1
- package/build/src/visualization/lib/AnchorUtils.js +0 -44
- package/build/src/visualization/lib/AnchorUtils.js.map +0 -1
- package/build/src/visualization/lib/AssociationAnchors.d.ts +0 -134
- package/build/src/visualization/lib/AssociationAnchors.d.ts.map +0 -1
- package/build/src/visualization/lib/AssociationAnchors.js +0 -351
- package/build/src/visualization/lib/AssociationAnchors.js.map +0 -1
- package/build/src/visualization/lib/LabelSketch.d.ts +0 -16
- package/build/src/visualization/lib/LabelSketch.d.ts.map +0 -1
- package/build/src/visualization/lib/LabelSketch.js +0 -53
- package/build/src/visualization/lib/LabelSketch.js.map +0 -1
- package/build/src/visualization/lib/LineSketch.d.ts +0 -26
- package/build/src/visualization/lib/LineSketch.d.ts.map +0 -1
- package/build/src/visualization/lib/LineSketch.js +0 -55
- package/build/src/visualization/lib/LineSketch.js.map +0 -1
- package/build/src/visualization/lib/Point.d.ts +0 -74
- package/build/src/visualization/lib/Point.d.ts.map +0 -1
- package/build/src/visualization/lib/Point.js +0 -121
- package/build/src/visualization/lib/Point.js.map +0 -1
- package/build/src/visualization/lib/PositionUtils.d.ts +0 -65
- package/build/src/visualization/lib/PositionUtils.d.ts.map +0 -1
- package/build/src/visualization/lib/PositionUtils.js +0 -205
- package/build/src/visualization/lib/PositionUtils.js.map +0 -1
- package/build/src/visualization/lib/SelectionManager.d.ts +0 -183
- package/build/src/visualization/lib/SelectionManager.d.ts.map +0 -1
- package/build/src/visualization/lib/SelectionManager.js +0 -481
- package/build/src/visualization/lib/SelectionManager.js.map +0 -1
- package/build/src/visualization/lib/ShapeArtist.d.ts +0 -45
- package/build/src/visualization/lib/ShapeArtist.d.ts.map +0 -1
- package/build/src/visualization/lib/ShapeArtist.js +0 -209
- package/build/src/visualization/lib/ShapeArtist.js.map +0 -1
- package/build/src/visualization/lib/SvgMarkers.d.ts +0 -14
- package/build/src/visualization/lib/SvgMarkers.d.ts.map +0 -1
- package/build/src/visualization/lib/SvgMarkers.js +0 -77
- package/build/src/visualization/lib/SvgMarkers.js.map +0 -1
- package/build/src/visualization/lib/TipSketch.d.ts +0 -26
- package/build/src/visualization/lib/TipSketch.d.ts.map +0 -1
- package/build/src/visualization/lib/TipSketch.js +0 -77
- package/build/src/visualization/lib/TipSketch.js.map +0 -1
- package/build/src/visualization/lib/TouchSupport.d.ts +0 -14
- package/build/src/visualization/lib/TouchSupport.d.ts.map +0 -1
- package/build/src/visualization/lib/TouchSupport.js +0 -55
- package/build/src/visualization/lib/TouchSupport.js.map +0 -1
- package/build/src/visualization/lib/Utils.d.ts +0 -25
- package/build/src/visualization/lib/Utils.d.ts.map +0 -1
- package/build/src/visualization/lib/Utils.js +0 -59
- package/build/src/visualization/lib/Utils.js.map +0 -1
- package/build/src/visualization/lib/VisualizationTypes.d.ts +0 -216
- package/build/src/visualization/lib/VisualizationTypes.d.ts.map +0 -1
- package/build/src/visualization/lib/VisualizationTypes.js +0 -3
- package/build/src/visualization/lib/VisualizationTypes.js.map +0 -1
- package/build/src/visualization/lib/WorkspaceAlignment.d.ts +0 -51
- package/build/src/visualization/lib/WorkspaceAlignment.d.ts.map +0 -1
- package/build/src/visualization/lib/WorkspaceAlignment.js +0 -243
- package/build/src/visualization/lib/WorkspaceAlignment.js.map +0 -1
- package/build/src/visualization/lib/WorkspaceDebugging.d.ts +0 -104
- package/build/src/visualization/lib/WorkspaceDebugging.d.ts.map +0 -1
- package/build/src/visualization/lib/WorkspaceDebugging.js +0 -286
- package/build/src/visualization/lib/WorkspaceDebugging.js.map +0 -1
- package/build/src/visualization/lib/WorkspaceEdges.d.ts +0 -293
- package/build/src/visualization/lib/WorkspaceEdges.d.ts.map +0 -1
- package/build/src/visualization/lib/WorkspaceEdges.js +0 -1073
- package/build/src/visualization/lib/WorkspaceEdges.js.map +0 -1
- package/build/src/visualization/lib/WorkspaceGestures.d.ts +0 -119
- package/build/src/visualization/lib/WorkspaceGestures.d.ts.map +0 -1
- package/build/src/visualization/lib/WorkspaceGestures.js +0 -376
- package/build/src/visualization/lib/WorkspaceGestures.js.map +0 -1
- package/build/src/visualization/lib/WorkspaceSizing.d.ts +0 -66
- package/build/src/visualization/lib/WorkspaceSizing.d.ts.map +0 -1
- package/build/src/visualization/lib/WorkspaceSizing.js +0 -168
- package/build/src/visualization/lib/WorkspaceSizing.js.map +0 -1
- package/build/src/visualization/lib/lines/RectilinearLine.d.ts +0 -114
- package/build/src/visualization/lib/lines/RectilinearLine.d.ts.map +0 -1
- package/build/src/visualization/lib/lines/RectilinearLine.js +0 -605
- package/build/src/visualization/lib/lines/RectilinearLine.js.map +0 -1
- package/build/src/visualization/lib/tips/RectilinearTip.d.ts +0 -26
- package/build/src/visualization/lib/tips/RectilinearTip.d.ts.map +0 -1
- package/build/src/visualization/lib/tips/RectilinearTip.js +0 -149
- package/build/src/visualization/lib/tips/RectilinearTip.js.map +0 -1
- package/build/src/visualization/lib/tips/TipArtist.d.ts +0 -22
- package/build/src/visualization/lib/tips/TipArtist.d.ts.map +0 -1
- package/build/src/visualization/lib/tips/TipArtist.js +0 -31
- package/build/src/visualization/lib/tips/TipArtist.js.map +0 -1
- package/build/src/visualization/lib/types.d.ts +0 -164
- package/build/src/visualization/lib/types.d.ts.map +0 -1
- package/build/src/visualization/lib/types.js +0 -2
- package/build/src/visualization/lib/types.js.map +0 -1
- package/build/src/visualization/plugin/dnd/DragAndDropPlugin.d.ts +0 -126
- package/build/src/visualization/plugin/dnd/DragAndDropPlugin.d.ts.map +0 -1
- package/build/src/visualization/plugin/dnd/DragAndDropPlugin.js +0 -260
- package/build/src/visualization/plugin/dnd/DragAndDropPlugin.js.map +0 -1
- package/build/src/visualization/plugin/group-selection/GroupSelection.d.ts +0 -93
- package/build/src/visualization/plugin/group-selection/GroupSelection.d.ts.map +0 -1
- package/build/src/visualization/plugin/group-selection/GroupSelection.js +0 -250
- package/build/src/visualization/plugin/group-selection/GroupSelection.js.map +0 -1
- package/build/src/visualization/plugin/positioning/DataModelLayout.d.ts +0 -10
- package/build/src/visualization/plugin/positioning/DataModelLayout.d.ts.map +0 -1
- package/build/src/visualization/plugin/positioning/DataModelLayout.js +0 -105
- package/build/src/visualization/plugin/positioning/DataModelLayout.js.map +0 -1
- package/build/src/visualization/plugin/positioning/WorkspaceLayout.d.ts +0 -93
- package/build/src/visualization/plugin/positioning/WorkspaceLayout.d.ts.map +0 -1
- package/build/src/visualization/plugin/positioning/WorkspaceLayout.js +0 -96
- package/build/src/visualization/plugin/positioning/WorkspaceLayout.js.map +0 -1
- package/build/src/visualization/viz-association.d.ts +0 -7
- package/build/src/visualization/viz-association.d.ts.map +0 -1
- package/build/src/visualization/viz-association.js +0 -3
- package/build/src/visualization/viz-association.js.map +0 -1
- package/build/src/visualization/viz-workspace.d.ts +0 -7
- package/build/src/visualization/viz-workspace.d.ts.map +0 -1
- package/build/src/visualization/viz-workspace.js +0 -3
- package/build/src/visualization/viz-workspace.js.map +0 -1
- package/src/visualization/elements/VizAssociationElement.ts +0 -3
- package/src/visualization/elements/VizWorkspaceElement.ts +0 -302
- package/src/visualization/elements/WorkspaceStyles.ts +0 -168
- package/src/visualization/lib/AnchorFinder.ts +0 -112
- package/src/visualization/lib/AnchorUtils.ts +0 -53
- package/src/visualization/lib/AssociationAnchors.ts +0 -418
- package/src/visualization/lib/LabelSketch.ts +0 -67
- package/src/visualization/lib/LineSketch.ts +0 -62
- package/src/visualization/lib/Point.ts +0 -134
- package/src/visualization/lib/PositionUtils.ts +0 -218
- package/src/visualization/lib/SelectionManager.ts +0 -513
- package/src/visualization/lib/ShapeArtist.ts +0 -222
- package/src/visualization/lib/SvgMarkers.ts +0 -80
- package/src/visualization/lib/TipSketch.ts +0 -91
- package/src/visualization/lib/TouchSupport.ts +0 -72
- package/src/visualization/lib/Utils.ts +0 -63
- package/src/visualization/lib/VisualizationTypes.ts +0 -232
- package/src/visualization/lib/WorkspaceAlignment.ts +0 -261
- package/src/visualization/lib/WorkspaceDebugging.ts +0 -313
- package/src/visualization/lib/WorkspaceEdges.ts +0 -1153
- package/src/visualization/lib/WorkspaceGestures.ts +0 -400
- package/src/visualization/lib/WorkspaceSizing.ts +0 -181
- package/src/visualization/lib/lines/RectilinearLine.ts +0 -589
- package/src/visualization/lib/tips/RectilinearTip.ts +0 -156
- package/src/visualization/lib/tips/TipArtist.ts +0 -34
- package/src/visualization/lib/types.ts +0 -173
- package/src/visualization/plugin/dnd/DragAndDropPlugin.ts +0 -294
- package/src/visualization/plugin/group-selection/GroupSelection.ts +0 -271
- package/src/visualization/plugin/positioning/DataModelLayout.ts +0 -114
- package/src/visualization/plugin/positioning/WorkspaceLayout.ts +0 -149
- package/src/visualization/viz-association.ts +0 -9
- package/src/visualization/viz-workspace.ts +0 -9
- package/test/env.d.ts +0 -9
- package/test/env.js +0 -7
- package/test/visualization/lib/AnchorFinder.test.ts +0 -313
- package/test/visualization/lib/AnchorUtils.test.ts +0 -178
- package/test/visualization/lib/PositionUtils.test.ts +0 -406
- 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
|
-
}
|