@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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"viz-workspace.d.ts","sourceRoot":"","sources":["../../../src/visualization/viz-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,mCAAmC,CAAA;AAIvD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,eAAe,EAAE,OAAO,CAAA;KACzB;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"viz-workspace.js","sourceRoot":"","sources":["../../../src/visualization/viz-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,mCAAmC,CAAA;AAEvD,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA","sourcesContent":["import Element from './elements/VizWorkspaceElement.js'\n\nwindow.customElements.define('viz-workspace', Element)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'viz-workspace': Element\n }\n}\n"]}
|
|
@@ -1,302 +0,0 @@
|
|
|
1
|
-
import { CSSResult, html, LitElement, PropertyValues, svg, SVGTemplateResult, TemplateResult } from 'lit'
|
|
2
|
-
import { property } from 'lit/decorators.js'
|
|
3
|
-
import { styleMap } from 'lit/directives/style-map.js'
|
|
4
|
-
import { AssociationAnchors } from '../lib/AssociationAnchors.js'
|
|
5
|
-
import { SelectionManager } from '../lib/SelectionManager.js'
|
|
6
|
-
import { ShapeArtist } from '../lib/ShapeArtist.js'
|
|
7
|
-
import { WorkspaceEdges } from '../lib/WorkspaceEdges.js'
|
|
8
|
-
import { WorkspaceGestures } from '../lib/WorkspaceGestures.js'
|
|
9
|
-
import { WorkspaceSizing } from '../lib/WorkspaceSizing.js'
|
|
10
|
-
import elementStyles from './WorkspaceStyles.js'
|
|
11
|
-
|
|
12
|
-
const defaultCanvasWidth = 3840
|
|
13
|
-
const defaultCanvasHeight = 2160
|
|
14
|
-
|
|
15
|
-
export const canvasRef = Symbol('canvasRef')
|
|
16
|
-
export const svgRef = Symbol('svgRef')
|
|
17
|
-
export const attributeTypeEditHandler = Symbol('attributeTypeEditHandler')
|
|
18
|
-
export const attributeTypeDropdownClosedHandler = Symbol('attributeTypeDropdownClosedHandler')
|
|
19
|
-
export const attributeTypeSelectHandler = Symbol('attributeTypeSelectHandler')
|
|
20
|
-
export const geometryChangeHandler = Symbol('geometryChangeHandler')
|
|
21
|
-
|
|
22
|
-
export const notifyZoom = Symbol('notifyZoom')
|
|
23
|
-
export const zoomTimeout = Symbol('zoomTimeout')
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* @fires positionchange
|
|
27
|
-
*/
|
|
28
|
-
export default class VizWorkspaceElement extends LitElement {
|
|
29
|
-
static override get styles(): CSSResult[] {
|
|
30
|
-
return [elementStyles]
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* The zoom level of the current visualization
|
|
35
|
-
* @attribute
|
|
36
|
-
*/
|
|
37
|
-
@property({ type: Number, reflect: true })
|
|
38
|
-
accessor zoom = 0
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Gets or sets the number of pixels that an element's content is scrolled horizontally.
|
|
42
|
-
* Unlike regular HTML elements, this can be a negative value as it is possible to
|
|
43
|
-
* scroll outside the working area.
|
|
44
|
-
*/
|
|
45
|
-
override get scrollLeft(): number {
|
|
46
|
-
const s = this.gestures
|
|
47
|
-
return (s && s.left) || 0
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* @param value The x-axis position value
|
|
52
|
-
*/
|
|
53
|
-
override set scrollLeft(value: number) {
|
|
54
|
-
this.gestures.left = value
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Gets or sets the number of pixels that an element's content is scrolled vertically.
|
|
59
|
-
* Unlike regular HTML elements, this can be a negative value as it is possible to
|
|
60
|
-
* scroll outside the working area.
|
|
61
|
-
*/
|
|
62
|
-
override get scrollTop(): number {
|
|
63
|
-
const s = this.gestures
|
|
64
|
-
return (s && s.top) || 0
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* @param value The y-axis position value
|
|
69
|
-
*/
|
|
70
|
-
override set scrollTop(value: number) {
|
|
71
|
-
this.gestures.top = value
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
[canvasRef]?: HTMLDivElement
|
|
75
|
-
|
|
76
|
-
get canvas(): HTMLDivElement | null {
|
|
77
|
-
if (!this[canvasRef]) {
|
|
78
|
-
this[canvasRef] = this.shadowRoot?.querySelector('.canvas') as HTMLDivElement
|
|
79
|
-
}
|
|
80
|
-
return this[canvasRef] as HTMLDivElement
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
[svgRef]?: SVGElement
|
|
84
|
-
|
|
85
|
-
get associationSvg(): SVGElement {
|
|
86
|
-
if (!this[svgRef]) {
|
|
87
|
-
this[svgRef] = this.shadowRoot?.querySelector('.association') as SVGElement
|
|
88
|
-
}
|
|
89
|
-
return this[svgRef] as SVGElement
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* The width of the canvas element, in pixels
|
|
94
|
-
*/
|
|
95
|
-
@property({ type: Number })
|
|
96
|
-
accessor width = defaultCanvasWidth
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* The height of the canvas element, in pixels
|
|
100
|
-
*/
|
|
101
|
-
@property({ type: Number })
|
|
102
|
-
accessor height: number = defaultCanvasHeight
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* When set it instruct the visualization workspace to grow over the currently set `width` and `height`
|
|
106
|
-
* when a new added item is placed outside the bounds of the workspace.
|
|
107
|
-
*/
|
|
108
|
-
@property({ type: Boolean, reflect: true })
|
|
109
|
-
accessor autoResize = false
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* Enables some limited debugging information.
|
|
113
|
-
*/
|
|
114
|
-
@property({ type: Boolean, reflect: true }) accessor debug: boolean | undefined
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* The current scale of the visualization
|
|
118
|
-
*/
|
|
119
|
-
@property({ type: Number }) accessor scale = 1;
|
|
120
|
-
|
|
121
|
-
[zoomTimeout]?: number
|
|
122
|
-
|
|
123
|
-
gestures = new WorkspaceGestures(this)
|
|
124
|
-
|
|
125
|
-
selection = new SelectionManager(this)
|
|
126
|
-
|
|
127
|
-
edges = new WorkspaceEdges(this)
|
|
128
|
-
|
|
129
|
-
anchors = new AssociationAnchors(this)
|
|
130
|
-
|
|
131
|
-
sizing = new WorkspaceSizing(this)
|
|
132
|
-
|
|
133
|
-
constructor() {
|
|
134
|
-
super()
|
|
135
|
-
this.addEventListener('geometrychange', this[geometryChangeHandler].bind(this))
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
override connectedCallback(): void {
|
|
139
|
-
super.connectedCallback()
|
|
140
|
-
this.gestures.connect()
|
|
141
|
-
this.selection.connect()
|
|
142
|
-
this.edges.connect()
|
|
143
|
-
this.anchors.connect()
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
override disconnectedCallback(): void {
|
|
147
|
-
super.disconnectedCallback()
|
|
148
|
-
this.gestures.disconnect()
|
|
149
|
-
this.selection.disconnect()
|
|
150
|
-
this.edges.disconnect()
|
|
151
|
-
this.anchors.disconnect()
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
protected override firstUpdated(cp: PropertyValues<this>): void {
|
|
155
|
-
super.firstUpdated(cp)
|
|
156
|
-
const { top, left } = this.gestures
|
|
157
|
-
if (top === null || left === null) {
|
|
158
|
-
this.gestures.scrollTo(0, 0)
|
|
159
|
-
// this.center();
|
|
160
|
-
}
|
|
161
|
-
this.edges.listenContent()
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
protected override willUpdate(cp: PropertyValues<this>): void {
|
|
165
|
-
if (cp.has('autoResize')) {
|
|
166
|
-
const value = cp.get('autoResize')
|
|
167
|
-
if (value === true) {
|
|
168
|
-
this.sizing.connect()
|
|
169
|
-
} else if (this.sizing.connected) {
|
|
170
|
-
this.sizing.disconnect()
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
if (cp.has('zoom')) {
|
|
174
|
-
this.gestures.updateScale()
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
/**
|
|
179
|
-
* Clears the state of the workspace.
|
|
180
|
-
*/
|
|
181
|
-
clear(): void {
|
|
182
|
-
this.edges.clear()
|
|
183
|
-
this.selection.deselectAll()
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
/**
|
|
187
|
-
* Centers the workspace.
|
|
188
|
-
*/
|
|
189
|
-
center(): void {
|
|
190
|
-
const { width: cWidth = defaultCanvasWidth, height: cHeight = defaultCanvasHeight } = this
|
|
191
|
-
const { height, width } = this.getBoundingClientRect()
|
|
192
|
-
const midWidth = cWidth / 2
|
|
193
|
-
const midHeight = cHeight / 2
|
|
194
|
-
const left = midWidth - width / 2
|
|
195
|
-
const top = midHeight - height / 2
|
|
196
|
-
this.gestures.left = -left
|
|
197
|
-
this.gestures.top = -top
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
[notifyZoom](): void {
|
|
201
|
-
if (this[zoomTimeout]) {
|
|
202
|
-
clearTimeout(this[zoomTimeout])
|
|
203
|
-
}
|
|
204
|
-
this[zoomTimeout] = setTimeout(() => {
|
|
205
|
-
this.dispatchEvent(new Event('zoomchange'))
|
|
206
|
-
}, 1) as unknown as number
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
async [geometryChangeHandler](e: Event): Promise<void> {
|
|
210
|
-
const source = e.target as HTMLElement
|
|
211
|
-
await this.edges.update(source.dataset.key as string)
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
override scrollBy(options: ScrollToOptions): void
|
|
215
|
-
|
|
216
|
-
override scrollBy(x: number, y: number): void
|
|
217
|
-
|
|
218
|
-
/**
|
|
219
|
-
* Scrolls the element by the given amount.
|
|
220
|
-
* @param {ScrollToOptions|number} xCoordOrOptions The horizontal pixel value that you want to scroll by
|
|
221
|
-
* or the scroll options. When passed value is the `ScrollToOptions` interface then
|
|
222
|
-
* the second argument is ignored.
|
|
223
|
-
* @param {number=} yCoord The vertical pixel value that you want to scroll by.
|
|
224
|
-
*/
|
|
225
|
-
override scrollBy(xCoordOrOptions: ScrollToOptions | number, yCoord?: number | undefined): void {
|
|
226
|
-
this.gestures.scrollBy(xCoordOrOptions, yCoord)
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
override scrollTo(options: ScrollToOptions): void
|
|
230
|
-
|
|
231
|
-
override scrollTo(x: number, y: number): void
|
|
232
|
-
|
|
233
|
-
/**
|
|
234
|
-
* Scrolls to a particular set of coordinates inside the element.
|
|
235
|
-
*
|
|
236
|
-
* @param xCoordOrOptions The pixel along the horizontal axis of the element
|
|
237
|
-
* that you want displayed in the upper left. When passed value is the `ScrollToOptions` interface then
|
|
238
|
-
* the second argument is ignored.
|
|
239
|
-
* @param yCoord The pixel along the vertical axis of the element that you want displayed in the upper left.
|
|
240
|
-
*/
|
|
241
|
-
override scrollTo(xCoordOrOptions: ScrollToOptions | number, yCoord?: number): void {
|
|
242
|
-
this.gestures.scrollTo(xCoordOrOptions, yCoord)
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
/**
|
|
246
|
-
* Scrolls the view if the position defined by `x` and `y` arguments requires
|
|
247
|
-
* the view to be moved.
|
|
248
|
-
*
|
|
249
|
-
* @param x The x coordinate of the point
|
|
250
|
-
* @param y The y coordinate of the point
|
|
251
|
-
* @returns true if the canvas was moved
|
|
252
|
-
*/
|
|
253
|
-
scrollIfNeeded(x: number, y: number): boolean {
|
|
254
|
-
return this.gestures.scrollIfNeeded(x, y)
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
override render(): TemplateResult {
|
|
258
|
-
const { scale, scrollLeft, scrollTop } = this
|
|
259
|
-
const styles = {
|
|
260
|
-
transform: `scale(${scale}) translate(${scrollLeft}px, ${scrollTop}px)`,
|
|
261
|
-
width: `${this.width}px`,
|
|
262
|
-
height: `${this.height}px`,
|
|
263
|
-
}
|
|
264
|
-
return html`
|
|
265
|
-
<div class="content canvas" style="${styleMap(styles)}">
|
|
266
|
-
${this.renderLinesTemplate()}
|
|
267
|
-
<slot></slot>
|
|
268
|
-
</div>
|
|
269
|
-
`
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
/**
|
|
273
|
-
* @return {SVGTemplateResult} The template for the associations
|
|
274
|
-
*/
|
|
275
|
-
renderLinesTemplate(): SVGTemplateResult {
|
|
276
|
-
const { debug } = this
|
|
277
|
-
const { edges } = this.edges
|
|
278
|
-
const primarySelected: (string | SVGTemplateResult)[] = []
|
|
279
|
-
const secondarySelected: (string | SVGTemplateResult)[] = []
|
|
280
|
-
const hovered: (string | SVGTemplateResult)[] = []
|
|
281
|
-
const rest: (string | SVGTemplateResult)[] = []
|
|
282
|
-
edges.forEach((item) => {
|
|
283
|
-
const line = ShapeArtist.line(item, debug)
|
|
284
|
-
const { shape } = item
|
|
285
|
-
const { selection = {} } = shape
|
|
286
|
-
if (selection.primary) {
|
|
287
|
-
primarySelected.push(line)
|
|
288
|
-
} else if (selection.secondary) {
|
|
289
|
-
secondarySelected.push(line)
|
|
290
|
-
} else if (selection.hover) {
|
|
291
|
-
hovered.push(line)
|
|
292
|
-
} else {
|
|
293
|
-
rest.push(line)
|
|
294
|
-
}
|
|
295
|
-
})
|
|
296
|
-
const edgesResult = primarySelected.concat(secondarySelected).concat(hovered).concat(rest).reverse()
|
|
297
|
-
return svg`
|
|
298
|
-
<svg width="100%" height="100%" class="association">
|
|
299
|
-
${edgesResult.length ? edgesResult : ''}
|
|
300
|
-
</svg>`
|
|
301
|
-
}
|
|
302
|
-
}
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
import { css } from 'lit'
|
|
2
|
-
|
|
3
|
-
export default css`
|
|
4
|
-
:host {
|
|
5
|
-
display: block;
|
|
6
|
-
position: relative;
|
|
7
|
-
overflow: hidden;
|
|
8
|
-
background-color: var(--workspace-background-color, #e5e5e5);
|
|
9
|
-
|
|
10
|
-
--edge-line-color: var(--workspace-association-line-color, var(--md-ref-palette-neutral70));
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
:host ::slotted(*) {
|
|
14
|
-
position: absolute;
|
|
15
|
-
z-index: 2;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/* this chess board background was removed after a team meeting, May 2021. */
|
|
19
|
-
/* :host {
|
|
20
|
-
background-image:
|
|
21
|
-
linear-gradient(to right, rgba(226, 226, 226, 0.85), rgba(226, 226, 226, 0.85)),
|
|
22
|
-
linear-gradient(to right, black 50%, white 50%),
|
|
23
|
-
linear-gradient(to bottom, black 50%, white 50%);
|
|
24
|
-
background-blend-mode: normal, difference, normal;
|
|
25
|
-
background-size: 1.5em 1.5em;
|
|
26
|
-
} */
|
|
27
|
-
|
|
28
|
-
.hidden {
|
|
29
|
-
display: none;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
.content {
|
|
33
|
-
position: absolute;
|
|
34
|
-
top: 0;
|
|
35
|
-
left: 0;
|
|
36
|
-
right: 0;
|
|
37
|
-
bottom: 0;
|
|
38
|
-
background-color: var(--workspace-content-background-color, #e5e5e5);
|
|
39
|
-
/* background-color: transparent; */
|
|
40
|
-
transform: scale(1) translate(0px, 0px);
|
|
41
|
-
transform-origin: top left;
|
|
42
|
-
border-radius: var(--workspace-content-border-radius, 12px);
|
|
43
|
-
border: 1px var(--workspace-border-color, #c0c0c0) solid;
|
|
44
|
-
box-shadow: var(--workspace-content-box-shadow, none);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
.content ::slotted(.selected) {
|
|
48
|
-
border: 1px var(--selection-color) solid;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
.association {
|
|
52
|
-
position: absolute;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
.association polyline {
|
|
56
|
-
stroke-width: 2px;
|
|
57
|
-
fill: none;
|
|
58
|
-
outline: none;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
.association .association-line {
|
|
62
|
-
fill: none;
|
|
63
|
-
stroke: var(--edge-line-color);
|
|
64
|
-
stroke-width: var(--workspace-association-line-width, 4px);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
.association .association-line-area {
|
|
68
|
-
fill: none;
|
|
69
|
-
stroke: transparent;
|
|
70
|
-
stroke-width: 28px;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
.association-group.hovered .edge-tip.association,
|
|
74
|
-
.association .association-line:hover,
|
|
75
|
-
.association-group.hovered .association-line {
|
|
76
|
-
--edge-line-color: var(--workspace-association-line-hover-color, var(--md-ref-palette-neutral60));
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
.association-group.selected .edge-tip.association,
|
|
80
|
-
.association-group.selected .association-line {
|
|
81
|
-
--edge-line-color: var(--workspace-association-line-selection-color, var(--md-ref-palette-primary60));
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
.selectedSecondary .edge-tip.association,
|
|
85
|
-
.selectedSecondary .association-line {
|
|
86
|
-
--edge-line-color: var(--workspace-association-line-secondary-selection-color, var(--md-ref-palette-primary70));
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/* Edge tips */
|
|
90
|
-
.edge-tip {
|
|
91
|
-
fill: #607d8b;
|
|
92
|
-
stroke: none;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
.edge-tip.parent {
|
|
96
|
-
fill: var(--md-ref-palette-tertiary60);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
.edge-tip.parameter-in {
|
|
100
|
-
fill: #ff9e91;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
.edge-tip.parameter-out {
|
|
104
|
-
fill: #fbc02d;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
.edge-tip.association {
|
|
108
|
-
stroke: var(--edge-line-color);
|
|
109
|
-
stroke-width: 3px;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
.parameter-in path {
|
|
113
|
-
stroke: #ff9e91;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
.parameter-out path {
|
|
117
|
-
stroke: #fbc02d;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
.edge-vertex {
|
|
121
|
-
stroke: transparent;
|
|
122
|
-
fill: transparent;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
.selected .edge-vertex,
|
|
126
|
-
.selectedSecondary .edge-vertex {
|
|
127
|
-
stroke: var(--selection-color);
|
|
128
|
-
stroke-width: 3px;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
/* Edge label */
|
|
132
|
-
.association-label {
|
|
133
|
-
fill: var(--workspace-edge-label-color, #212121);
|
|
134
|
-
font-size: 0.9rem;
|
|
135
|
-
user-select: none;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
.edge-name-input {
|
|
139
|
-
border: 1px #757575 solid;
|
|
140
|
-
padding: 4px 6px;
|
|
141
|
-
font-size: 1rem;
|
|
142
|
-
outline: none;
|
|
143
|
-
background-color: var(--workspace-edge-input-background-color, #fff);
|
|
144
|
-
color: var(--workspace-edge-input-color, initial);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
.edge-name-input:focus {
|
|
148
|
-
border-color: var(--primary-color);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
.selection-zone {
|
|
152
|
-
z-index: 100;
|
|
153
|
-
position: absolute;
|
|
154
|
-
width: 4px;
|
|
155
|
-
height: 4px;
|
|
156
|
-
border: 1px solid #2196f3;
|
|
157
|
-
background-color: var(--workspace-selection-zone-background-color, rgb(3 169 244 / 0.54));
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
/* edges selection zones */
|
|
161
|
-
|
|
162
|
-
.association-draggable {
|
|
163
|
-
fill: white;
|
|
164
|
-
stroke: #424242;
|
|
165
|
-
stroke-width: 2;
|
|
166
|
-
cursor: pointer;
|
|
167
|
-
}
|
|
168
|
-
`
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { Point } from './Point.js'
|
|
2
|
-
import { closetsPair } from './PositionUtils.js'
|
|
3
|
-
|
|
4
|
-
export const anchorPadding = 40
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Creates an array of pots that can be placed on the East side of a rectangular object.
|
|
8
|
-
*
|
|
9
|
-
* | ------ | o
|
|
10
|
-
* | |
|
|
11
|
-
* | | o
|
|
12
|
-
* | |
|
|
13
|
-
* | ------ | o
|
|
14
|
-
*
|
|
15
|
-
* @param rect The object DOMRect
|
|
16
|
-
* @param padding The padding from the top/bottom
|
|
17
|
-
*/
|
|
18
|
-
export function readEastAnchorPoints(rect: DOMRect, padding: number): Point[] {
|
|
19
|
-
const { right, top, bottom, height } = rect
|
|
20
|
-
const middle = height / 2
|
|
21
|
-
const p1 = new Point(right, top + padding)
|
|
22
|
-
const p2 = new Point(right, top + middle)
|
|
23
|
-
const p3 = new Point(right, bottom - padding)
|
|
24
|
-
return [p1, p2, p3]
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Creates an array of pots that can be placed on the West side of a rectangular object.
|
|
29
|
-
*
|
|
30
|
-
* o | ------ |
|
|
31
|
-
* | |
|
|
32
|
-
* o | |
|
|
33
|
-
* | |
|
|
34
|
-
* o | ------ |
|
|
35
|
-
*
|
|
36
|
-
* @param {DOMRect} rect The object DOMRect
|
|
37
|
-
* @param {number} padding The padding from the top/bottom
|
|
38
|
-
* @returns {Point[]}
|
|
39
|
-
*/
|
|
40
|
-
export function readWestAnchorPoints(rect: DOMRect, padding: number): Point[] {
|
|
41
|
-
const { left, top, bottom, height } = rect
|
|
42
|
-
const middle = height / 2
|
|
43
|
-
const p1 = new Point(left, top + padding)
|
|
44
|
-
const p2 = new Point(left, top + middle)
|
|
45
|
-
const p3 = new Point(left, bottom - padding)
|
|
46
|
-
return [p1, p2, p3]
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Creates an array of pots that can be placed on the North side of a rectangular object.
|
|
51
|
-
*
|
|
52
|
-
* o o o
|
|
53
|
-
* | ------- |
|
|
54
|
-
* | |
|
|
55
|
-
* | |
|
|
56
|
-
* | |
|
|
57
|
-
* | ------- |
|
|
58
|
-
*
|
|
59
|
-
* @param rect The object DOMRect
|
|
60
|
-
* @param padding The padding from the left/right
|
|
61
|
-
*/
|
|
62
|
-
export function readNorthAnchorPoints(rect: DOMRect, padding: number): Point[] {
|
|
63
|
-
const { left, top, width, right } = rect
|
|
64
|
-
const middle = width / 2
|
|
65
|
-
const p1 = new Point(left + padding, top)
|
|
66
|
-
const p2 = new Point(left + middle, top)
|
|
67
|
-
const p3 = new Point(right - padding, top)
|
|
68
|
-
return [p1, p2, p3]
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Creates an array of pots that can be placed on the South side of a rectangular object.
|
|
73
|
-
*
|
|
74
|
-
* | ------- |
|
|
75
|
-
* | |
|
|
76
|
-
* | |
|
|
77
|
-
* | |
|
|
78
|
-
* | ------- |
|
|
79
|
-
* o o o
|
|
80
|
-
*
|
|
81
|
-
* @param rect The object DOMRect
|
|
82
|
-
* @param padding The padding from the left/right
|
|
83
|
-
*/
|
|
84
|
-
export function readSouthAnchorPoints(rect: DOMRect, padding: number): Point[] {
|
|
85
|
-
const { left, bottom, width, right } = rect
|
|
86
|
-
const middle = width / 2
|
|
87
|
-
const p1 = new Point(left + padding, bottom)
|
|
88
|
-
const p2 = new Point(left + middle, bottom)
|
|
89
|
-
const p3 = new Point(right - padding, bottom)
|
|
90
|
-
return [p1, p2, p3]
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* Finds a pair of virtual (created on the shape based on the size) anchor points.
|
|
95
|
-
*
|
|
96
|
-
* @param padding The padding from the left/right/top/bottom
|
|
97
|
-
*/
|
|
98
|
-
export function findClosestAnchors(source: DOMRect, target: DOMRect, padding: number): Point[] {
|
|
99
|
-
const sources = [
|
|
100
|
-
...readEastAnchorPoints(source, padding),
|
|
101
|
-
...readWestAnchorPoints(source, padding),
|
|
102
|
-
...readNorthAnchorPoints(source, padding),
|
|
103
|
-
...readSouthAnchorPoints(source, padding),
|
|
104
|
-
]
|
|
105
|
-
const targets = [
|
|
106
|
-
...readEastAnchorPoints(target, padding),
|
|
107
|
-
...readWestAnchorPoints(target, padding),
|
|
108
|
-
...readNorthAnchorPoints(target, padding),
|
|
109
|
-
...readSouthAnchorPoints(target, padding),
|
|
110
|
-
]
|
|
111
|
-
return closetsPair(sources, targets) as Point[]
|
|
112
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import VizWorkspaceElement from '../elements/VizWorkspaceElement.js'
|
|
2
|
-
import { Point } from './Point.js'
|
|
3
|
-
import { closetsPair, getRelativeClickPoint } from './PositionUtils.js'
|
|
4
|
-
import { IWorkspaceEdge } from './types.js'
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* @param element The association anchor object
|
|
8
|
-
* @returns The x,y position of the anchor.
|
|
9
|
-
*/
|
|
10
|
-
export function anchorToPoint(element: HTMLElement, workspace: VizWorkspaceElement): Point {
|
|
11
|
-
const box = element.getBoundingClientRect()
|
|
12
|
-
let { x, y } = box
|
|
13
|
-
const { dataset } = element
|
|
14
|
-
if (dataset.verticalOffset) {
|
|
15
|
-
const vo = Number(dataset.verticalOffset)
|
|
16
|
-
if (!Number.isNaN(vo)) {
|
|
17
|
-
y += vo
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
if (dataset.horizontalOffset) {
|
|
21
|
-
const ho = Number(dataset.horizontalOffset)
|
|
22
|
-
if (!Number.isNaN(ho)) {
|
|
23
|
-
x += ho
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
return getRelativeClickPoint(x, y, workspace)
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export function closestAnchors(
|
|
30
|
-
elm1: HTMLElement,
|
|
31
|
-
elm2: HTMLElement,
|
|
32
|
-
workspace: VizWorkspaceElement,
|
|
33
|
-
others: IWorkspaceEdge[] = []
|
|
34
|
-
): Point[] | null {
|
|
35
|
-
const dom1 = elm1.shadowRoot || elm1
|
|
36
|
-
const dom2 = elm2.shadowRoot || elm2
|
|
37
|
-
const anchors1 = Array.from(dom1.querySelectorAll('[data-association-slot]')) as HTMLElement[]
|
|
38
|
-
const anchors2 = Array.from(dom2.querySelectorAll('[data-association-slot]')) as HTMLElement[]
|
|
39
|
-
if (!anchors1.length || !anchors2.length) {
|
|
40
|
-
return null
|
|
41
|
-
}
|
|
42
|
-
const points1 = anchors1.map((item) => anchorToPoint(item, workspace))
|
|
43
|
-
const points2 = anchors2.map((item) => anchorToPoint(item, workspace))
|
|
44
|
-
const avoid1: Point[] = []
|
|
45
|
-
const avoid2: Point[] = []
|
|
46
|
-
others.forEach((i) => {
|
|
47
|
-
avoid1.push(i.shape.line.startPoint)
|
|
48
|
-
avoid2.push(i.shape.line.startPoint)
|
|
49
|
-
avoid1.push(i.shape.line.endPoint)
|
|
50
|
-
avoid2.push(i.shape.line.endPoint)
|
|
51
|
-
})
|
|
52
|
-
return closetsPair(points1, points2, avoid1, avoid2)
|
|
53
|
-
}
|