@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,313 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
2
|
-
import VizWorkspaceElement from '../elements/VizWorkspaceElement.js'
|
|
3
|
-
import { getRelativeClickPoint, getObjectBoundingClientRect, getWorkspaceClick } from './PositionUtils.js'
|
|
4
|
-
|
|
5
|
-
const mousePortioningValue = Symbol('mousePortioningValue')
|
|
6
|
-
const setupMousePositioning = Symbol('setupMousePositioning')
|
|
7
|
-
const disableMousePositioning = Symbol('disableMousePositioning')
|
|
8
|
-
const mouseMoveHandler = Symbol('mouseMoveHandler')
|
|
9
|
-
const mousePositionAnchor = Symbol('mousePositionAnchor')
|
|
10
|
-
const workspacePositioningValue = Symbol('workspacePositioningValue')
|
|
11
|
-
const setupWorkspacePositioning = Symbol('setupWorkspacePositioning')
|
|
12
|
-
const disableWorkspacePositioning = Symbol('disableWorkspacePositioning')
|
|
13
|
-
const mutationHandler = Symbol('mutationHandler')
|
|
14
|
-
const mutationObserver = Symbol('mutationObserver')
|
|
15
|
-
const observeItems = Symbol('observeItems')
|
|
16
|
-
const processAddedNodes = Symbol('processAddedNodes')
|
|
17
|
-
const processRemovedNodes = Symbol('processRemovedNodes')
|
|
18
|
-
const updateVisualizationItem = Symbol('updateVisualizationItem')
|
|
19
|
-
const positionedElements = Symbol('positionedElements')
|
|
20
|
-
const scrollHandler = Symbol('scrollHandler')
|
|
21
|
-
const scrollTimeout = Symbol('scrollTimeout')
|
|
22
|
-
const onScroll = Symbol('onScroll')
|
|
23
|
-
const createPositioningInfoElement = Symbol('createPositioningInfoElement')
|
|
24
|
-
const ensurePositioningInfoElement = Symbol('ensurePositioningInfoElement')
|
|
25
|
-
const updatePositioningInfoElement = Symbol('updatePositioningInfoElement')
|
|
26
|
-
|
|
27
|
-
let elementIndex = 0
|
|
28
|
-
|
|
29
|
-
const ignoredElements = ['viz-association']
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Debugging helpers for the visualization workspace.
|
|
33
|
-
*/
|
|
34
|
-
export class WorkspaceDebugging {
|
|
35
|
-
[mousePortioningValue] = false
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* @return Whether a mouse position value is rendered in the workspace
|
|
39
|
-
*/
|
|
40
|
-
get mousePositioning(): boolean {
|
|
41
|
-
return this[mousePortioningValue]
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* @param value Whether a mouse position value is rendered in the workspace
|
|
46
|
-
*/
|
|
47
|
-
set mousePositioning(value: boolean) {
|
|
48
|
-
const old = this[mousePortioningValue]
|
|
49
|
-
if (old === value) {
|
|
50
|
-
return
|
|
51
|
-
}
|
|
52
|
-
this[mousePortioningValue] = value
|
|
53
|
-
if (value) {
|
|
54
|
-
this[setupMousePositioning]()
|
|
55
|
-
} else {
|
|
56
|
-
this[disableMousePositioning]()
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
[workspacePositioningValue] = false
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* @return Whether the position of each visualized element is rendered in the workspace
|
|
64
|
-
*/
|
|
65
|
-
get workspacePositioning(): boolean {
|
|
66
|
-
return this[workspacePositioningValue]
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
set workspacePositioning(value: boolean) {
|
|
70
|
-
const old = this[workspacePositioningValue]
|
|
71
|
-
if (old === value) {
|
|
72
|
-
return
|
|
73
|
-
}
|
|
74
|
-
this[workspacePositioningValue] = old
|
|
75
|
-
if (value) {
|
|
76
|
-
this[setupWorkspacePositioning]()
|
|
77
|
-
} else {
|
|
78
|
-
this[disableWorkspacePositioning]()
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
[positionedElements] = new WeakMap<HTMLElement, string>();
|
|
83
|
-
|
|
84
|
-
[mousePositionAnchor]?: HTMLDivElement;
|
|
85
|
-
|
|
86
|
-
[mutationObserver]?: MutationObserver
|
|
87
|
-
|
|
88
|
-
constructor(public workspace: VizWorkspaceElement) {
|
|
89
|
-
this[mouseMoveHandler] = this[mouseMoveHandler].bind(this)
|
|
90
|
-
this[mutationHandler] = this[mutationHandler].bind(this)
|
|
91
|
-
this[scrollHandler] = this[scrollHandler].bind(this)
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
[setupMousePositioning](): void {
|
|
95
|
-
this.workspace.addEventListener('mousemove', this[mouseMoveHandler])
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
[disableMousePositioning](): void {
|
|
99
|
-
this.workspace.removeEventListener('mousemove', this[mouseMoveHandler])
|
|
100
|
-
if (this[mousePositionAnchor]) {
|
|
101
|
-
this.workspace.shadowRoot!.removeChild(this[mousePositionAnchor]!)
|
|
102
|
-
this[mousePositionAnchor] = undefined
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Redraws the position anchor
|
|
108
|
-
*/
|
|
109
|
-
[mouseMoveHandler](e: MouseEvent): void {
|
|
110
|
-
const { clientX, clientY } = e
|
|
111
|
-
const rPos = getRelativeClickPoint(clientX, clientY, this.workspace)
|
|
112
|
-
const pos = getWorkspaceClick(clientX, clientY, this.workspace)
|
|
113
|
-
if (!this[mousePositionAnchor]) {
|
|
114
|
-
const a = document.createElement('div')
|
|
115
|
-
a.style.position = 'absolute'
|
|
116
|
-
a.style.backgroundColor = 'rgb(253 216 53 / 54%)'
|
|
117
|
-
a.style.padding = '4px 8px'
|
|
118
|
-
a.style.pointerEvents = 'none'
|
|
119
|
-
this.workspace.shadowRoot!.appendChild(a)
|
|
120
|
-
this[mousePositionAnchor] = a
|
|
121
|
-
}
|
|
122
|
-
this[mousePositionAnchor]!.style.left = `${pos.x + 8}px`
|
|
123
|
-
this[mousePositionAnchor]!.style.top = `${pos.y}px`
|
|
124
|
-
this[mousePositionAnchor]!.innerText = `${Math.round(rPos.x)} x ${Math.round(rPos.y)}`
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
[setupWorkspacePositioning](): void {
|
|
128
|
-
this[mutationObserver] = this[observeItems]()
|
|
129
|
-
this.workspace.addEventListener('scroll', this[scrollHandler])
|
|
130
|
-
this.workspace.addEventListener('zoomchange', this[scrollHandler])
|
|
131
|
-
const nodes = this.workspace.querySelectorAll('*')
|
|
132
|
-
this[processAddedNodes](nodes)
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
[disableWorkspacePositioning](): void {
|
|
136
|
-
this.workspace.removeEventListener('scroll', this[scrollHandler])
|
|
137
|
-
this.workspace.removeEventListener('zoomchange', this[scrollHandler])
|
|
138
|
-
if (this[mutationObserver]) {
|
|
139
|
-
this[mutationObserver]!.disconnect()
|
|
140
|
-
this[mutationObserver] = undefined
|
|
141
|
-
}
|
|
142
|
-
const nodes = this.workspace.shadowRoot!.querySelectorAll('.debug-viz-positioning')
|
|
143
|
-
nodes.forEach((node) => {
|
|
144
|
-
node.parentNode!.removeChild(node)
|
|
145
|
-
})
|
|
146
|
-
this[positionedElements] = new WeakMap()
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
/**
|
|
150
|
-
* Observe items change in the element's light DOM
|
|
151
|
-
* @return The observer handler
|
|
152
|
-
*/
|
|
153
|
-
[observeItems](): MutationObserver {
|
|
154
|
-
const config = { attributes: true, childList: true, subtree: true }
|
|
155
|
-
const observer = new MutationObserver(this[mutationHandler])
|
|
156
|
-
observer.observe(this.workspace, config)
|
|
157
|
-
return observer
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
/**
|
|
161
|
-
* Processes mutations in the workspace and manages selection state.
|
|
162
|
-
* @param mutationsList List of mutations.
|
|
163
|
-
*/
|
|
164
|
-
[mutationHandler](mutationsList: MutationRecord[]): void {
|
|
165
|
-
for (const mutation of mutationsList) {
|
|
166
|
-
if (mutation.type === 'childList') {
|
|
167
|
-
this[processAddedNodes](mutation.addedNodes)
|
|
168
|
-
this[processRemovedNodes](mutation.removedNodes)
|
|
169
|
-
} else if (mutation.type === 'attributes') {
|
|
170
|
-
const { target } = mutation
|
|
171
|
-
this[updateVisualizationItem](target)
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
* Processes added to the canvas elements.
|
|
178
|
-
* @param nodes The list of added nodes
|
|
179
|
-
*/
|
|
180
|
-
[processAddedNodes](nodes: NodeList): void {
|
|
181
|
-
nodes.forEach((node) => this[updateVisualizationItem](node))
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
isVisualizedObject(element: Element): boolean {
|
|
185
|
-
const { localName } = element
|
|
186
|
-
if (localName.startsWith('viz-')) {
|
|
187
|
-
return true
|
|
188
|
-
}
|
|
189
|
-
return element.hasAttribute('data-key')
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* Processes removed from the canvas elements.
|
|
194
|
-
* @param nodes The list of removed nodes
|
|
195
|
-
*/
|
|
196
|
-
[processRemovedNodes](nodes: NodeList): void {
|
|
197
|
-
nodes.forEach((node) => {
|
|
198
|
-
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
199
|
-
return
|
|
200
|
-
}
|
|
201
|
-
const typed = node as HTMLElement
|
|
202
|
-
if (!this.isVisualizedObject(typed)) {
|
|
203
|
-
return
|
|
204
|
-
}
|
|
205
|
-
if (this[positionedElements].has(typed)) {
|
|
206
|
-
const id = this[positionedElements].get(typed)
|
|
207
|
-
this[positionedElements].delete(typed)
|
|
208
|
-
const label = this.workspace.shadowRoot!.querySelector(`#${id}`) as HTMLDivElement
|
|
209
|
-
if (label) {
|
|
210
|
-
label.parentNode!.removeChild(label)
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
this[processRemovedNodes](typed.childNodes)
|
|
214
|
-
})
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
[updateVisualizationItem](node: Node): void {
|
|
218
|
-
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
219
|
-
return
|
|
220
|
-
}
|
|
221
|
-
const typed = node as HTMLElement
|
|
222
|
-
const { localName } = typed
|
|
223
|
-
if (!this.isVisualizedObject(typed) || ignoredElements.includes(localName)) {
|
|
224
|
-
return
|
|
225
|
-
}
|
|
226
|
-
const rect = typed.getBoundingClientRect()
|
|
227
|
-
const { width, height } = rect
|
|
228
|
-
if (!width || !height) {
|
|
229
|
-
// don't need them
|
|
230
|
-
return
|
|
231
|
-
}
|
|
232
|
-
this[ensurePositioningInfoElement](typed)
|
|
233
|
-
this[updatePositioningInfoElement](typed, rect)
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
/**
|
|
237
|
-
* Ensures that element that is positioned relative to each visualized item exists.
|
|
238
|
-
*/
|
|
239
|
-
[ensurePositioningInfoElement](targetElement: HTMLElement): void {
|
|
240
|
-
if (!this[positionedElements].has(targetElement)) {
|
|
241
|
-
const label = this[createPositioningInfoElement](targetElement)
|
|
242
|
-
this.workspace.shadowRoot!.appendChild(label)
|
|
243
|
-
this[positionedElements].set(targetElement, label.id)
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
/**
|
|
248
|
-
* Creates an element that is positioned relative to each visualized item.
|
|
249
|
-
* @param {HTMLElement} targetElement
|
|
250
|
-
* @returns {HTMLDivElement}
|
|
251
|
-
*/
|
|
252
|
-
[createPositioningInfoElement](targetElement: HTMLElement): HTMLDivElement {
|
|
253
|
-
const label = document.createElement('div')
|
|
254
|
-
label.style.position = 'absolute'
|
|
255
|
-
label.style.backgroundColor = 'rgb(253 216 53 / 54%)'
|
|
256
|
-
label.style.padding = '4px 8px'
|
|
257
|
-
label.style.pointerEvents = 'none'
|
|
258
|
-
label.id = `debug-position${elementIndex++}`
|
|
259
|
-
label.classList.add('debug-viz-positioning')
|
|
260
|
-
label.dataset.target = targetElement.getAttribute('data-key')!
|
|
261
|
-
return label
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
/**
|
|
265
|
-
* Updates the position of the visualized element position label
|
|
266
|
-
* @param {HTMLElement} targetElement
|
|
267
|
-
* @param {DOMRect} rect
|
|
268
|
-
*/
|
|
269
|
-
[updatePositioningInfoElement](targetElement: HTMLElement, rect: DOMRect): void {
|
|
270
|
-
const { x, y } = rect
|
|
271
|
-
const rPos = getRelativeClickPoint(x, y, this.workspace)
|
|
272
|
-
const pos = getWorkspaceClick(x, y, this.workspace)
|
|
273
|
-
const sizedRect = getObjectBoundingClientRect(targetElement, this.workspace)
|
|
274
|
-
|
|
275
|
-
const id = this[positionedElements].get(targetElement)
|
|
276
|
-
const label = this.workspace.shadowRoot!.querySelector(`#${id}`) as HTMLDivElement
|
|
277
|
-
label.style.left = `${pos.x + 8}px`
|
|
278
|
-
label.style.top = `${pos.y + rect.height}px`
|
|
279
|
-
const position = `(x,y) ${Math.round(rPos.x)} x ${Math.round(rPos.y)}`
|
|
280
|
-
const realSize = `(w,h) ${Math.round(sizedRect.width)} x ${Math.round(sizedRect.height)}`
|
|
281
|
-
const scaledSize = `(sw,sh) ${Math.round(rect.width)} x ${Math.round(rect.height)}`
|
|
282
|
-
label.innerText = `${position}\n${realSize}\n${scaledSize}`
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
[scrollTimeout]?: number;
|
|
286
|
-
|
|
287
|
-
/**
|
|
288
|
-
* Updates the labels on each visualized item after the workspace scroll
|
|
289
|
-
*/
|
|
290
|
-
[scrollHandler](): void {
|
|
291
|
-
if (this[scrollTimeout]) {
|
|
292
|
-
clearTimeout(this[scrollTimeout])
|
|
293
|
-
}
|
|
294
|
-
this[scrollTimeout] = setTimeout(() => {
|
|
295
|
-
this[scrollTimeout] = undefined
|
|
296
|
-
this[onScroll]()
|
|
297
|
-
}, 1) as unknown as number
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
/**
|
|
301
|
-
* Updates the labels on each visualized item after the workspace scroll
|
|
302
|
-
*/
|
|
303
|
-
[onScroll](): void {
|
|
304
|
-
const nodes = Array.from(this.workspace.shadowRoot!.querySelectorAll('.debug-viz-positioning')) as HTMLDivElement[]
|
|
305
|
-
nodes.forEach((node) => {
|
|
306
|
-
const { target } = node.dataset
|
|
307
|
-
const item = this.workspace.querySelector(`[data-key="${target}"]`)
|
|
308
|
-
if (item) {
|
|
309
|
-
this[updateVisualizationItem](item)
|
|
310
|
-
}
|
|
311
|
-
})
|
|
312
|
-
}
|
|
313
|
-
}
|