@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 +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,3 +0,0 @@
1
- import Element from './elements/VizWorkspaceElement.js';
2
- window.customElements.define('viz-workspace', Element);
3
- //# sourceMappingURL=viz-workspace.js.map
@@ -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,3 +0,0 @@
1
- import { LitElement } from 'lit'
2
-
3
- export default class VizAssociationElement extends LitElement {}
@@ -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
- }