@api-client/ui 0.2.2 → 0.2.4

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 (371) hide show
  1. package/.vscode/settings.json +3 -3
  2. package/build/src/elements/authorization/ui/ApiKeyAuthorization.d.ts +1 -1
  3. package/build/src/elements/authorization/ui/ApiKeyAuthorization.d.ts.map +1 -1
  4. package/build/src/elements/authorization/ui/ApiKeyAuthorization.js +7 -7
  5. package/build/src/elements/authorization/ui/ApiKeyAuthorization.js.map +1 -1
  6. package/build/src/elements/authorization/ui/Authorization.styles.js +4 -4
  7. package/build/src/elements/authorization/ui/Authorization.styles.js.map +1 -1
  8. package/build/src/elements/authorization/ui/BasicAuthorization.d.ts +1 -1
  9. package/build/src/elements/authorization/ui/BasicAuthorization.d.ts.map +1 -1
  10. package/build/src/elements/authorization/ui/BasicAuthorization.js +5 -5
  11. package/build/src/elements/authorization/ui/BasicAuthorization.js.map +1 -1
  12. package/build/src/elements/authorization/ui/BearerAuthorization.d.ts +1 -1
  13. package/build/src/elements/authorization/ui/BearerAuthorization.d.ts.map +1 -1
  14. package/build/src/elements/authorization/ui/BearerAuthorization.js +3 -3
  15. package/build/src/elements/authorization/ui/BearerAuthorization.js.map +1 -1
  16. package/build/src/elements/authorization/ui/NtlmAuthorization.d.ts +1 -1
  17. package/build/src/elements/authorization/ui/NtlmAuthorization.d.ts.map +1 -1
  18. package/build/src/elements/authorization/ui/NtlmAuthorization.js +7 -7
  19. package/build/src/elements/authorization/ui/NtlmAuthorization.js.map +1 -1
  20. package/build/src/elements/authorization/ui/OAuth2Authorization.d.ts +1 -1
  21. package/build/src/elements/authorization/ui/OAuth2Authorization.d.ts.map +1 -1
  22. package/build/src/elements/authorization/ui/OAuth2Authorization.js +32 -27
  23. package/build/src/elements/authorization/ui/OAuth2Authorization.js.map +1 -1
  24. package/build/src/elements/authorization/ui/OidcAuthorization.js +4 -4
  25. package/build/src/elements/authorization/ui/OidcAuthorization.js.map +1 -1
  26. package/build/src/elements/autocomplete/autocomplete-input.d.ts +10 -0
  27. package/build/src/elements/autocomplete/autocomplete-input.d.ts.map +1 -0
  28. package/build/src/{md/text-field/ui-text-field.js → elements/autocomplete/autocomplete-input.js} +9 -9
  29. package/build/src/elements/autocomplete/autocomplete-input.js.map +1 -0
  30. package/build/src/elements/autocomplete/internals/autocomplete.d.ts +209 -0
  31. package/build/src/elements/autocomplete/internals/autocomplete.d.ts.map +1 -0
  32. package/build/src/elements/autocomplete/internals/autocomplete.js +493 -0
  33. package/build/src/elements/autocomplete/internals/autocomplete.js.map +1 -0
  34. package/build/src/elements/autocomplete/internals/autocomplete.styles.d.ts +3 -0
  35. package/build/src/elements/autocomplete/internals/autocomplete.styles.d.ts.map +1 -0
  36. package/build/src/elements/autocomplete/internals/autocomplete.styles.js +25 -0
  37. package/build/src/elements/autocomplete/internals/autocomplete.styles.js.map +1 -0
  38. package/build/src/elements/dialog/internals/DeleteCookieAction.element.d.ts +1 -1
  39. package/build/src/elements/dialog/internals/DeleteCookieAction.element.d.ts.map +1 -1
  40. package/build/src/elements/dialog/internals/DeleteCookieAction.element.js +5 -5
  41. package/build/src/elements/dialog/internals/DeleteCookieAction.element.js.map +1 -1
  42. package/build/src/elements/dialog/internals/Rename.d.ts +1 -1
  43. package/build/src/elements/dialog/internals/Rename.d.ts.map +1 -1
  44. package/build/src/elements/dialog/internals/Rename.js +3 -3
  45. package/build/src/elements/dialog/internals/Rename.js.map +1 -1
  46. package/build/src/elements/dialog/internals/SetCookieAction.element.d.ts +1 -1
  47. package/build/src/elements/dialog/internals/SetCookieAction.element.d.ts.map +1 -1
  48. package/build/src/elements/dialog/internals/SetCookieAction.element.js +9 -9
  49. package/build/src/elements/dialog/internals/SetCookieAction.element.js.map +1 -1
  50. package/build/src/elements/environment/EnvironmentEditor.d.ts +1 -1
  51. package/build/src/elements/environment/EnvironmentEditor.d.ts.map +1 -1
  52. package/build/src/elements/environment/EnvironmentEditor.js +3 -3
  53. package/build/src/elements/environment/EnvironmentEditor.js.map +1 -1
  54. package/build/src/elements/environment/EnvironmentEditor.styles.js +1 -1
  55. package/build/src/elements/environment/EnvironmentEditor.styles.js.map +1 -1
  56. package/build/src/elements/environment/ServerEditor.d.ts +1 -1
  57. package/build/src/elements/environment/ServerEditor.d.ts.map +1 -1
  58. package/build/src/elements/environment/ServerEditor.js +7 -7
  59. package/build/src/elements/environment/ServerEditor.js.map +1 -1
  60. package/build/src/elements/environment/ServerEditor.styles.js +1 -1
  61. package/build/src/elements/environment/ServerEditor.styles.js.map +1 -1
  62. package/build/src/elements/http/BodyMultipartEditor.d.ts.map +1 -1
  63. package/build/src/elements/http/BodyMultipartEditor.js +4 -0
  64. package/build/src/elements/http/BodyMultipartEditor.js.map +1 -1
  65. package/build/src/elements/http/CertificateAdd.element.d.ts +1 -1
  66. package/build/src/elements/http/CertificateAdd.element.d.ts.map +1 -1
  67. package/build/src/elements/http/CertificateAdd.element.js +8 -8
  68. package/build/src/elements/http/CertificateAdd.element.js.map +1 -1
  69. package/build/src/elements/http/CertificateAdd.styles.js +1 -1
  70. package/build/src/elements/http/CertificateAdd.styles.js.map +1 -1
  71. package/build/src/elements/http/HttpAssertions.element.js +3 -3
  72. package/build/src/elements/http/HttpAssertions.element.js.map +1 -1
  73. package/build/src/elements/http/HttpFlows.element.js +3 -3
  74. package/build/src/elements/http/HttpFlows.element.js.map +1 -1
  75. package/build/src/elements/http/HttpFlowsUi.d.ts +1 -1
  76. package/build/src/elements/http/HttpFlowsUi.d.ts.map +1 -1
  77. package/build/src/elements/http/HttpFlowsUi.js +31 -31
  78. package/build/src/elements/http/HttpFlowsUi.js.map +1 -1
  79. package/build/src/elements/http/RequestConfigElement.d.ts +1 -1
  80. package/build/src/elements/http/RequestConfigElement.d.ts.map +1 -1
  81. package/build/src/elements/http/RequestConfigElement.js +7 -7
  82. package/build/src/elements/http/RequestConfigElement.js.map +1 -1
  83. package/build/src/elements/http/UrlParamsForm.d.ts +1 -1
  84. package/build/src/elements/http/UrlParamsForm.d.ts.map +1 -1
  85. package/build/src/elements/http/UrlParamsForm.js +1 -1
  86. package/build/src/elements/http/UrlParamsForm.js.map +1 -1
  87. package/build/src/elements/project/ProjectRunner.d.ts +1 -1
  88. package/build/src/elements/project/ProjectRunner.d.ts.map +1 -1
  89. package/build/src/elements/project/ProjectRunner.js +5 -5
  90. package/build/src/elements/project/ProjectRunner.js.map +1 -1
  91. package/build/src/md/input/Input.d.ts +0 -15
  92. package/build/src/md/input/Input.d.ts.map +1 -1
  93. package/build/src/md/input/Input.js +7 -42
  94. package/build/src/md/input/Input.js.map +1 -1
  95. package/build/src/md/list/internals/List.d.ts +7 -2
  96. package/build/src/md/list/internals/List.d.ts.map +1 -1
  97. package/build/src/md/list/internals/List.js +6 -0
  98. package/build/src/md/list/internals/List.js.map +1 -1
  99. package/build/src/md/list/internals/ListItem.styles.d.ts.map +1 -1
  100. package/build/src/md/list/internals/ListItem.styles.js +8 -0
  101. package/build/src/md/list/internals/ListItem.styles.js.map +1 -1
  102. package/build/src/md/listbox/internals/Listbox.d.ts +2 -2
  103. package/build/src/md/listbox/internals/Listbox.d.ts.map +1 -1
  104. package/build/src/md/listbox/internals/Listbox.js.map +1 -1
  105. package/build/src/md/text-area/internals/TextAreaElement.d.ts.map +1 -1
  106. package/build/src/md/text-area/internals/TextAreaElement.js +0 -5
  107. package/build/src/md/text-area/internals/TextAreaElement.js.map +1 -1
  108. package/build/src/md/text-area/ui-text-area.d.ts.map +1 -1
  109. package/build/src/md/text-area/ui-text-area.js +3 -2
  110. package/build/src/md/text-area/ui-text-area.js.map +1 -1
  111. package/build/src/md/text-field/internals/{TextFieldElement.d.ts → TextField.d.ts} +2 -2
  112. package/build/src/md/text-field/internals/TextField.d.ts.map +1 -0
  113. package/build/src/md/text-field/internals/{TextFieldElement.js → TextField.js} +2 -5
  114. package/build/src/md/text-field/internals/TextField.js.map +1 -0
  115. package/build/src/{visualization/elements/WorkspaceStyles.d.ts → md/text-field/internals/common.styles.d.ts} +1 -1
  116. package/build/src/md/text-field/internals/common.styles.d.ts.map +1 -0
  117. package/build/src/md/text-field/internals/{TextField.styles.js → common.styles.js} +8 -94
  118. package/build/src/md/text-field/internals/common.styles.js.map +1 -0
  119. package/build/src/md/text-field/internals/{TextField.styles.d.ts → filled.styles.d.ts} +1 -1
  120. package/build/src/md/text-field/internals/filled.styles.d.ts.map +1 -0
  121. package/build/src/md/text-field/internals/filled.styles.js +107 -0
  122. package/build/src/md/text-field/internals/filled.styles.js.map +1 -0
  123. package/build/src/md/text-field/internals/outlined.styles.d.ts +3 -0
  124. package/build/src/md/text-field/internals/outlined.styles.d.ts.map +1 -0
  125. package/build/src/md/text-field/internals/outlined.styles.js +43 -0
  126. package/build/src/md/text-field/internals/outlined.styles.js.map +1 -0
  127. package/build/src/md/text-field/ui-filled-text-field.d.ts +11 -0
  128. package/build/src/md/text-field/ui-filled-text-field.d.ts.map +1 -0
  129. package/build/src/md/text-field/ui-filled-text-field.js +28 -0
  130. package/build/src/md/text-field/ui-filled-text-field.js.map +1 -0
  131. package/build/src/md/text-field/ui-outlined-text-field.d.ts +11 -0
  132. package/build/src/md/text-field/ui-outlined-text-field.d.ts.map +1 -0
  133. package/build/src/md/text-field/ui-outlined-text-field.js +28 -0
  134. package/build/src/md/text-field/ui-outlined-text-field.js.map +1 -0
  135. package/build/src/types/input.d.ts +1 -1
  136. package/build/src/types/input.d.ts.map +1 -1
  137. package/build/src/types/input.js.map +1 -1
  138. package/demo/elements/authorization/oauth-authorize.html +4 -4
  139. package/demo/elements/authorization/oauth-authorize.ts +1 -1
  140. package/demo/elements/autocomplete/index.html +24 -0
  141. package/demo/elements/autocomplete/index.ts +123 -0
  142. package/demo/elements/http/body-editor.ts +3 -3
  143. package/demo/elements/index.html +15 -11
  144. package/demo/md/index.html +1 -1
  145. package/demo/md/inputs/input.html +10 -15
  146. package/demo/md/inputs/input.ts +389 -101
  147. package/demo/page.css +4 -0
  148. package/package.json +7 -2
  149. package/src/elements/authorization/ui/ApiKeyAuthorization.ts +7 -7
  150. package/src/elements/authorization/ui/Authorization.styles.ts +4 -4
  151. package/src/elements/authorization/ui/BasicAuthorization.ts +5 -5
  152. package/src/elements/authorization/ui/BearerAuthorization.ts +3 -3
  153. package/src/elements/authorization/ui/NtlmAuthorization.ts +7 -7
  154. package/src/elements/authorization/ui/OAuth2Authorization.ts +32 -27
  155. package/src/elements/authorization/ui/OidcAuthorization.ts +4 -4
  156. package/src/elements/autocomplete/autocomplete-input.ts +14 -0
  157. package/src/elements/autocomplete/internals/autocomplete.styles.ts +25 -0
  158. package/src/elements/autocomplete/internals/autocomplete.ts +490 -0
  159. package/src/elements/dialog/internals/DeleteCookieAction.element.ts +5 -5
  160. package/src/elements/dialog/internals/Rename.ts +3 -3
  161. package/src/elements/dialog/internals/SetCookieAction.element.ts +9 -9
  162. package/src/elements/environment/EnvironmentEditor.styles.ts +1 -1
  163. package/src/elements/environment/EnvironmentEditor.ts +3 -3
  164. package/src/elements/environment/ServerEditor.styles.ts +1 -1
  165. package/src/elements/environment/ServerEditor.ts +7 -7
  166. package/src/elements/http/BodyMultipartEditor.ts +4 -0
  167. package/src/elements/http/CertificateAdd.element.ts +8 -8
  168. package/src/elements/http/CertificateAdd.styles.ts +1 -1
  169. package/src/elements/http/HttpAssertions.element.ts +3 -3
  170. package/src/elements/http/HttpFlows.element.ts +3 -3
  171. package/src/elements/http/HttpFlowsUi.ts +31 -31
  172. package/src/elements/http/RequestConfigElement.ts +7 -7
  173. package/src/elements/http/UrlParamsForm.ts +1 -1
  174. package/src/elements/project/ProjectRunner.ts +5 -5
  175. package/src/md/input/Input.ts +6 -21
  176. package/src/md/list/internals/List.ts +14 -2
  177. package/src/md/list/internals/ListItem.styles.ts +8 -0
  178. package/src/md/listbox/internals/Listbox.ts +2 -2
  179. package/src/md/text-area/internals/TextAreaElement.ts +0 -5
  180. package/src/md/text-area/ui-text-area.ts +3 -2
  181. package/src/md/text-field/internals/{TextFieldElement.ts → TextField.ts} +1 -4
  182. package/src/md/text-field/internals/{TextField.styles.ts → common.styles.ts} +7 -93
  183. package/src/md/text-field/internals/filled.styles.ts +107 -0
  184. package/src/md/text-field/internals/outlined.styles.ts +43 -0
  185. package/src/md/text-field/ui-filled-text-field.ts +16 -0
  186. package/src/md/text-field/ui-outlined-text-field.ts +16 -0
  187. package/src/types/input.ts +0 -1
  188. package/test/elements/authorization/basic-method.test.ts +3 -3
  189. package/test/elements/authorization/bearer-method.test.ts +2 -2
  190. package/test/elements/authorization/ntlm-method.test.ts +4 -4
  191. package/test/elements/autocomplete/autocomplete-input.spec.ts +448 -0
  192. package/test/elements/http/BodyMultipartEditorElement.test.ts +15 -16
  193. package/test/elements/http/CertificateAdd.test.ts +11 -11
  194. package/test/elements/http/HttpAssertions.test.ts +9 -9
  195. package/test/elements/http/HttpFlows.test.ts +4 -4
  196. package/test/env.ts +15 -0
  197. package/test/tsconfig.json +1 -7
  198. package/web-test-runner.config.js +5 -1
  199. package/build/src/md/text-field/internals/TextField.styles.d.ts.map +0 -1
  200. package/build/src/md/text-field/internals/TextField.styles.js.map +0 -1
  201. package/build/src/md/text-field/internals/TextFieldElement.d.ts.map +0 -1
  202. package/build/src/md/text-field/internals/TextFieldElement.js.map +0 -1
  203. package/build/src/md/text-field/ui-text-field.d.ts +0 -11
  204. package/build/src/md/text-field/ui-text-field.d.ts.map +0 -1
  205. package/build/src/md/text-field/ui-text-field.js.map +0 -1
  206. package/build/src/visualization/elements/VizAssociationElement.d.ts +0 -4
  207. package/build/src/visualization/elements/VizAssociationElement.d.ts.map +0 -1
  208. package/build/src/visualization/elements/VizAssociationElement.js +0 -4
  209. package/build/src/visualization/elements/VizAssociationElement.js.map +0 -1
  210. package/build/src/visualization/elements/VizWorkspaceElement.d.ts +0 -110
  211. package/build/src/visualization/elements/VizWorkspaceElement.d.ts.map +0 -1
  212. package/build/src/visualization/elements/VizWorkspaceElement.js +0 -321
  213. package/build/src/visualization/elements/VizWorkspaceElement.js.map +0 -1
  214. package/build/src/visualization/elements/WorkspaceStyles.d.ts.map +0 -1
  215. package/build/src/visualization/elements/WorkspaceStyles.js +0 -168
  216. package/build/src/visualization/elements/WorkspaceStyles.js.map +0 -1
  217. package/build/src/visualization/lib/AnchorFinder.d.ts +0 -64
  218. package/build/src/visualization/lib/AnchorFinder.d.ts.map +0 -1
  219. package/build/src/visualization/lib/AnchorFinder.js +0 -107
  220. package/build/src/visualization/lib/AnchorFinder.js.map +0 -1
  221. package/build/src/visualization/lib/AnchorUtils.d.ts +0 -10
  222. package/build/src/visualization/lib/AnchorUtils.d.ts.map +0 -1
  223. package/build/src/visualization/lib/AnchorUtils.js +0 -44
  224. package/build/src/visualization/lib/AnchorUtils.js.map +0 -1
  225. package/build/src/visualization/lib/AssociationAnchors.d.ts +0 -134
  226. package/build/src/visualization/lib/AssociationAnchors.d.ts.map +0 -1
  227. package/build/src/visualization/lib/AssociationAnchors.js +0 -351
  228. package/build/src/visualization/lib/AssociationAnchors.js.map +0 -1
  229. package/build/src/visualization/lib/LabelSketch.d.ts +0 -16
  230. package/build/src/visualization/lib/LabelSketch.d.ts.map +0 -1
  231. package/build/src/visualization/lib/LabelSketch.js +0 -53
  232. package/build/src/visualization/lib/LabelSketch.js.map +0 -1
  233. package/build/src/visualization/lib/LineSketch.d.ts +0 -26
  234. package/build/src/visualization/lib/LineSketch.d.ts.map +0 -1
  235. package/build/src/visualization/lib/LineSketch.js +0 -55
  236. package/build/src/visualization/lib/LineSketch.js.map +0 -1
  237. package/build/src/visualization/lib/Point.d.ts +0 -74
  238. package/build/src/visualization/lib/Point.d.ts.map +0 -1
  239. package/build/src/visualization/lib/Point.js +0 -121
  240. package/build/src/visualization/lib/Point.js.map +0 -1
  241. package/build/src/visualization/lib/PositionUtils.d.ts +0 -65
  242. package/build/src/visualization/lib/PositionUtils.d.ts.map +0 -1
  243. package/build/src/visualization/lib/PositionUtils.js +0 -205
  244. package/build/src/visualization/lib/PositionUtils.js.map +0 -1
  245. package/build/src/visualization/lib/SelectionManager.d.ts +0 -183
  246. package/build/src/visualization/lib/SelectionManager.d.ts.map +0 -1
  247. package/build/src/visualization/lib/SelectionManager.js +0 -481
  248. package/build/src/visualization/lib/SelectionManager.js.map +0 -1
  249. package/build/src/visualization/lib/ShapeArtist.d.ts +0 -45
  250. package/build/src/visualization/lib/ShapeArtist.d.ts.map +0 -1
  251. package/build/src/visualization/lib/ShapeArtist.js +0 -209
  252. package/build/src/visualization/lib/ShapeArtist.js.map +0 -1
  253. package/build/src/visualization/lib/SvgMarkers.d.ts +0 -14
  254. package/build/src/visualization/lib/SvgMarkers.d.ts.map +0 -1
  255. package/build/src/visualization/lib/SvgMarkers.js +0 -77
  256. package/build/src/visualization/lib/SvgMarkers.js.map +0 -1
  257. package/build/src/visualization/lib/TipSketch.d.ts +0 -26
  258. package/build/src/visualization/lib/TipSketch.d.ts.map +0 -1
  259. package/build/src/visualization/lib/TipSketch.js +0 -77
  260. package/build/src/visualization/lib/TipSketch.js.map +0 -1
  261. package/build/src/visualization/lib/TouchSupport.d.ts +0 -14
  262. package/build/src/visualization/lib/TouchSupport.d.ts.map +0 -1
  263. package/build/src/visualization/lib/TouchSupport.js +0 -55
  264. package/build/src/visualization/lib/TouchSupport.js.map +0 -1
  265. package/build/src/visualization/lib/Utils.d.ts +0 -25
  266. package/build/src/visualization/lib/Utils.d.ts.map +0 -1
  267. package/build/src/visualization/lib/Utils.js +0 -59
  268. package/build/src/visualization/lib/Utils.js.map +0 -1
  269. package/build/src/visualization/lib/VisualizationTypes.d.ts +0 -216
  270. package/build/src/visualization/lib/VisualizationTypes.d.ts.map +0 -1
  271. package/build/src/visualization/lib/VisualizationTypes.js +0 -3
  272. package/build/src/visualization/lib/VisualizationTypes.js.map +0 -1
  273. package/build/src/visualization/lib/WorkspaceAlignment.d.ts +0 -51
  274. package/build/src/visualization/lib/WorkspaceAlignment.d.ts.map +0 -1
  275. package/build/src/visualization/lib/WorkspaceAlignment.js +0 -243
  276. package/build/src/visualization/lib/WorkspaceAlignment.js.map +0 -1
  277. package/build/src/visualization/lib/WorkspaceDebugging.d.ts +0 -104
  278. package/build/src/visualization/lib/WorkspaceDebugging.d.ts.map +0 -1
  279. package/build/src/visualization/lib/WorkspaceDebugging.js +0 -286
  280. package/build/src/visualization/lib/WorkspaceDebugging.js.map +0 -1
  281. package/build/src/visualization/lib/WorkspaceEdges.d.ts +0 -293
  282. package/build/src/visualization/lib/WorkspaceEdges.d.ts.map +0 -1
  283. package/build/src/visualization/lib/WorkspaceEdges.js +0 -1073
  284. package/build/src/visualization/lib/WorkspaceEdges.js.map +0 -1
  285. package/build/src/visualization/lib/WorkspaceGestures.d.ts +0 -119
  286. package/build/src/visualization/lib/WorkspaceGestures.d.ts.map +0 -1
  287. package/build/src/visualization/lib/WorkspaceGestures.js +0 -376
  288. package/build/src/visualization/lib/WorkspaceGestures.js.map +0 -1
  289. package/build/src/visualization/lib/WorkspaceSizing.d.ts +0 -66
  290. package/build/src/visualization/lib/WorkspaceSizing.d.ts.map +0 -1
  291. package/build/src/visualization/lib/WorkspaceSizing.js +0 -168
  292. package/build/src/visualization/lib/WorkspaceSizing.js.map +0 -1
  293. package/build/src/visualization/lib/lines/RectilinearLine.d.ts +0 -114
  294. package/build/src/visualization/lib/lines/RectilinearLine.d.ts.map +0 -1
  295. package/build/src/visualization/lib/lines/RectilinearLine.js +0 -605
  296. package/build/src/visualization/lib/lines/RectilinearLine.js.map +0 -1
  297. package/build/src/visualization/lib/tips/RectilinearTip.d.ts +0 -26
  298. package/build/src/visualization/lib/tips/RectilinearTip.d.ts.map +0 -1
  299. package/build/src/visualization/lib/tips/RectilinearTip.js +0 -149
  300. package/build/src/visualization/lib/tips/RectilinearTip.js.map +0 -1
  301. package/build/src/visualization/lib/tips/TipArtist.d.ts +0 -22
  302. package/build/src/visualization/lib/tips/TipArtist.d.ts.map +0 -1
  303. package/build/src/visualization/lib/tips/TipArtist.js +0 -31
  304. package/build/src/visualization/lib/tips/TipArtist.js.map +0 -1
  305. package/build/src/visualization/lib/types.d.ts +0 -164
  306. package/build/src/visualization/lib/types.d.ts.map +0 -1
  307. package/build/src/visualization/lib/types.js +0 -2
  308. package/build/src/visualization/lib/types.js.map +0 -1
  309. package/build/src/visualization/plugin/dnd/DragAndDropPlugin.d.ts +0 -126
  310. package/build/src/visualization/plugin/dnd/DragAndDropPlugin.d.ts.map +0 -1
  311. package/build/src/visualization/plugin/dnd/DragAndDropPlugin.js +0 -260
  312. package/build/src/visualization/plugin/dnd/DragAndDropPlugin.js.map +0 -1
  313. package/build/src/visualization/plugin/group-selection/GroupSelection.d.ts +0 -93
  314. package/build/src/visualization/plugin/group-selection/GroupSelection.d.ts.map +0 -1
  315. package/build/src/visualization/plugin/group-selection/GroupSelection.js +0 -250
  316. package/build/src/visualization/plugin/group-selection/GroupSelection.js.map +0 -1
  317. package/build/src/visualization/plugin/positioning/DataModelLayout.d.ts +0 -10
  318. package/build/src/visualization/plugin/positioning/DataModelLayout.d.ts.map +0 -1
  319. package/build/src/visualization/plugin/positioning/DataModelLayout.js +0 -105
  320. package/build/src/visualization/plugin/positioning/DataModelLayout.js.map +0 -1
  321. package/build/src/visualization/plugin/positioning/WorkspaceLayout.d.ts +0 -93
  322. package/build/src/visualization/plugin/positioning/WorkspaceLayout.d.ts.map +0 -1
  323. package/build/src/visualization/plugin/positioning/WorkspaceLayout.js +0 -96
  324. package/build/src/visualization/plugin/positioning/WorkspaceLayout.js.map +0 -1
  325. package/build/src/visualization/viz-association.d.ts +0 -7
  326. package/build/src/visualization/viz-association.d.ts.map +0 -1
  327. package/build/src/visualization/viz-association.js +0 -3
  328. package/build/src/visualization/viz-association.js.map +0 -1
  329. package/build/src/visualization/viz-workspace.d.ts +0 -7
  330. package/build/src/visualization/viz-workspace.d.ts.map +0 -1
  331. package/build/src/visualization/viz-workspace.js +0 -3
  332. package/build/src/visualization/viz-workspace.js.map +0 -1
  333. package/src/md/text-field/ui-text-field.ts +0 -15
  334. package/src/visualization/elements/VizAssociationElement.ts +0 -3
  335. package/src/visualization/elements/VizWorkspaceElement.ts +0 -302
  336. package/src/visualization/elements/WorkspaceStyles.ts +0 -168
  337. package/src/visualization/lib/AnchorFinder.ts +0 -112
  338. package/src/visualization/lib/AnchorUtils.ts +0 -53
  339. package/src/visualization/lib/AssociationAnchors.ts +0 -418
  340. package/src/visualization/lib/LabelSketch.ts +0 -67
  341. package/src/visualization/lib/LineSketch.ts +0 -62
  342. package/src/visualization/lib/Point.ts +0 -134
  343. package/src/visualization/lib/PositionUtils.ts +0 -218
  344. package/src/visualization/lib/SelectionManager.ts +0 -513
  345. package/src/visualization/lib/ShapeArtist.ts +0 -222
  346. package/src/visualization/lib/SvgMarkers.ts +0 -80
  347. package/src/visualization/lib/TipSketch.ts +0 -91
  348. package/src/visualization/lib/TouchSupport.ts +0 -72
  349. package/src/visualization/lib/Utils.ts +0 -63
  350. package/src/visualization/lib/VisualizationTypes.ts +0 -232
  351. package/src/visualization/lib/WorkspaceAlignment.ts +0 -261
  352. package/src/visualization/lib/WorkspaceDebugging.ts +0 -313
  353. package/src/visualization/lib/WorkspaceEdges.ts +0 -1153
  354. package/src/visualization/lib/WorkspaceGestures.ts +0 -400
  355. package/src/visualization/lib/WorkspaceSizing.ts +0 -181
  356. package/src/visualization/lib/lines/RectilinearLine.ts +0 -589
  357. package/src/visualization/lib/tips/RectilinearTip.ts +0 -156
  358. package/src/visualization/lib/tips/TipArtist.ts +0 -34
  359. package/src/visualization/lib/types.ts +0 -173
  360. package/src/visualization/plugin/dnd/DragAndDropPlugin.ts +0 -294
  361. package/src/visualization/plugin/group-selection/GroupSelection.ts +0 -271
  362. package/src/visualization/plugin/positioning/DataModelLayout.ts +0 -114
  363. package/src/visualization/plugin/positioning/WorkspaceLayout.ts +0 -149
  364. package/src/visualization/viz-association.ts +0 -9
  365. package/src/visualization/viz-workspace.ts +0 -9
  366. package/test/env.d.ts +0 -9
  367. package/test/env.js +0 -7
  368. package/test/visualization/lib/AnchorFinder.test.ts +0 -313
  369. package/test/visualization/lib/AnchorUtils.test.ts +0 -178
  370. package/test/visualization/lib/PositionUtils.test.ts +0 -406
  371. package/test/visualization/lib/test-styles.css +0 -80
@@ -1,481 +0,0 @@
1
- export const clickHandler = Symbol('clickHandler');
2
- export const observeItems = Symbol('observeItems');
3
- export const mutationHandler = Symbol('mutationHandler');
4
- export const mutationObserver = Symbol('mutationObserver');
5
- export const processAddedNodes = Symbol('processAddedNodes');
6
- export const processRemovedNodes = Symbol('processRemovedNodes');
7
- export const processAttributeChanged = Symbol('processAttributeChanged');
8
- export const propagateSelection = Symbol('propagateSelection');
9
- export const selectAssociations = Symbol('selectAssociation');
10
- export const selectReverseAssociations = Symbol('selectReverseAssociations');
11
- export const propagateDeselection = Symbol('propagateDeselection');
12
- export const deselectAssociations = Symbol('deselectAssociations');
13
- export const deselectReverseAssociations = Symbol('deselectReverseAssociations');
14
- export const notifyChanged = Symbol('notifyChanged');
15
- export const selectedItemsValue = Symbol('selectedItemsValue');
16
- export const selectedIdsValue = Symbol('selectedIdsValue');
17
- /**
18
- * A class that takes care of selection in the visualization workspace.
19
- */
20
- export class SelectionManager {
21
- target;
22
- /**
23
- * The list of currently selected elements
24
- */
25
- [selectedItemsValue] = new Set();
26
- /**
27
- * The list of currently selected domain ids
28
- */
29
- [selectedIdsValue] = [];
30
- [mutationObserver];
31
- /**
32
- * @returns A set of currently selected items.
33
- */
34
- get selectedItems() {
35
- return this[selectedItemsValue];
36
- }
37
- /**
38
- * @returns A list of currently selected domain ids.
39
- */
40
- get selected() {
41
- return this[selectedIdsValue];
42
- }
43
- /**
44
- * @returns A list of all selectable items
45
- */
46
- get selectable() {
47
- const nodes = this.target.querySelectorAll('[data-selectable]');
48
- return Array.from(nodes);
49
- }
50
- constructor(target) {
51
- this.target = target;
52
- this[clickHandler] = this[clickHandler].bind(this);
53
- this[mutationHandler] = this[mutationHandler].bind(this);
54
- }
55
- /**
56
- * Initializes the library. Should be called when the workspace is ready to render content.
57
- */
58
- connect() {
59
- this.target.addEventListener('click', this[clickHandler]);
60
- this[mutationObserver] = this[observeItems]();
61
- }
62
- /**
63
- * Cleans up and removes listeners
64
- */
65
- disconnect() {
66
- const mo = this[mutationObserver];
67
- if (mo) {
68
- mo.disconnect();
69
- this[mutationObserver] = undefined;
70
- }
71
- this.target.removeEventListener('click', this[clickHandler]);
72
- }
73
- /**
74
- * Checks if given element is marked as selectable target
75
- * @param selectable The element to test for `selectable` or `data-selectable` attribute
76
- * @returns True if the element can be selected
77
- */
78
- isSelectable(selectable) {
79
- return selectable.hasAttribute('data-selectable');
80
- }
81
- /**
82
- * Checks if given element is marked as selected
83
- * @param selectable The element to test for `selected` or `data-selected` attribute
84
- * @returns True if the element is marked as selected
85
- */
86
- isSelected(selectable) {
87
- return selectable.hasAttribute('data-selected');
88
- }
89
- /**
90
- * Marks an element as selected
91
- * @param selectable The element to add the selected mark to.
92
- */
93
- setSelected(selectable) {
94
- selectable.setAttribute('data-selected', '');
95
- }
96
- /**
97
- * Marks an element as not selected
98
- * @param selectable The element to remove the selected mark from.
99
- */
100
- setUnselected(selectable) {
101
- selectable.removeAttribute('data-selected');
102
- }
103
- /**
104
- * Deselects all currently selected items.
105
- */
106
- selectAll() {
107
- this.selectable.forEach((node) => {
108
- if (!this.isSelected(node)) {
109
- this.setSelected(node);
110
- }
111
- });
112
- }
113
- /**
114
- * Deselects all currently selected items.
115
- */
116
- deselectAll() {
117
- this.selectable.forEach((node) => {
118
- if (this.isSelected(node)) {
119
- this.setUnselected(node);
120
- }
121
- });
122
- const ids = [...this[selectedIdsValue]];
123
- ids.forEach((info) => {
124
- const elm = this.getDomainTarget(info.id);
125
- if (!elm) {
126
- const index = this[selectedIdsValue].indexOf(info);
127
- this[selectedIdsValue].splice(index, 1);
128
- }
129
- else if (this.isSelected(elm)) {
130
- this.setUnselected(elm);
131
- }
132
- });
133
- }
134
- /**
135
- * Selects objects that are selectable by their `key`.
136
- *
137
- * The `addToSelection` argument is equivalent of calling `deselectAll()` and then `select(...)`.
138
- *
139
- * @param keys The list of domain ids of objects to select.
140
- * @param addToSelection If true it adds to the current selection rather than replacing it.
141
- */
142
- select(keys, addToSelection = false) {
143
- if (!addToSelection) {
144
- this.deselectAll();
145
- }
146
- keys.forEach((id) => {
147
- const node = this.getSelectableDomainTarget(id);
148
- if (!node) {
149
- return;
150
- }
151
- if (this.isSelectable(node) && !this.isSelected(node)) {
152
- this.setSelected(node);
153
- }
154
- });
155
- }
156
- /**
157
- * Removes objects from selection.
158
- *
159
- * @param keys The list of domain ids of objects to deselect.
160
- */
161
- deselect(keys) {
162
- keys.forEach((id) => {
163
- const node = this.getSelectableDomainTarget(id);
164
- if (!node) {
165
- return;
166
- }
167
- if (this.isSelectable(node) && this.isSelected(node)) {
168
- this.setUnselected(node);
169
- }
170
- });
171
- }
172
- /**
173
- * Synchronizes the selection state with the view
174
- */
175
- syncView() {
176
- const nodes = this.target.querySelectorAll(`[data-selectable][data-selected]`);
177
- if (this[selectedItemsValue].size !== nodes.length) {
178
- // eslint-disable-next-line no-console
179
- console.log('invalid selection', this[selectedItemsValue], nodes);
180
- }
181
- }
182
- /**
183
- * Reads the attribute value to get the `key` property.
184
- * @param selectable
185
- * @returns The domain id of the object or `null` when not found
186
- */
187
- readKey(selectable) {
188
- if (selectable.hasAttribute('data-key')) {
189
- return selectable.getAttribute('data-key');
190
- }
191
- return null;
192
- }
193
- /**
194
- * Finds a workspace element that has the domain id.
195
- * @param id Target domain id
196
- */
197
- getDomainTarget(id) {
198
- return this.target.querySelector(`[data-key="${id}"]`);
199
- }
200
- /**
201
- * Finds a workspace element that has the domain id and is selectable.
202
- * @param id Target domain id
203
- */
204
- getSelectableDomainTarget(id) {
205
- const node = this.target.querySelector(`[data-key="${id}"][data-selectable]`);
206
- return node;
207
- }
208
- // PRIVATE APIS
209
- [clickHandler](e) {
210
- const path = e.composedPath();
211
- const svg = this.target.associationSvg;
212
- if (path[0] !== svg && path.includes(svg)) {
213
- // Selection of the edges is managed by the workspace edges manager.
214
- return;
215
- }
216
- let selectableTarget;
217
- while (path.length > 0) {
218
- const tmp = path.shift();
219
- if (tmp.nodeType !== Node.ELEMENT_NODE) {
220
- continue;
221
- }
222
- const typed = tmp;
223
- if (this.isSelectable(typed)) {
224
- selectableTarget = typed;
225
- break;
226
- }
227
- }
228
- if (!selectableTarget) {
229
- this.deselectAll();
230
- return;
231
- }
232
- const isSelected = this.isSelected(selectableTarget);
233
- // note: if toggle mode is required then this should toggle the attribute
234
- if (isSelected) {
235
- if (e.shiftKey) {
236
- this.setUnselected(selectableTarget);
237
- }
238
- return;
239
- }
240
- if (!e.shiftKey) {
241
- this.deselectAll();
242
- }
243
- this.setSelected(selectableTarget);
244
- }
245
- /**
246
- * Observe items change in the element's light DOM
247
- * @returns The observer handler
248
- */
249
- [observeItems]() {
250
- const config = { attributes: true, childList: true, subtree: true };
251
- const observer = new MutationObserver(this[mutationHandler]);
252
- observer.observe(this.target, config);
253
- return observer;
254
- }
255
- /**
256
- * Processes mutations in the workspace and manages selection state.
257
- * @param mutationsList List of mutations.
258
- */
259
- [mutationHandler](mutationsList) {
260
- for (const mutation of mutationsList) {
261
- if (mutation.type === 'childList') {
262
- this[processAddedNodes](mutation.addedNodes);
263
- this[processRemovedNodes](mutation.removedNodes);
264
- }
265
- else if (mutation.type === 'attributes') {
266
- const { attributeName, target } = mutation;
267
- this[processAttributeChanged](target, attributeName);
268
- }
269
- }
270
- requestAnimationFrame(() => this.syncView());
271
- }
272
- /**
273
- * Processes added to the canvas elements.
274
- * @param nodes The list of added nodes
275
- */
276
- [processAddedNodes](nodes) {
277
- nodes.forEach((node) => {
278
- if (node.nodeType !== Node.ELEMENT_NODE) {
279
- return;
280
- }
281
- const typed = node;
282
- const children = typed.querySelectorAll('*');
283
- this[processAddedNodes](children);
284
- if (!this.isSelectable(typed)) {
285
- return;
286
- }
287
- if (this.isSelected(typed)) {
288
- this[propagateSelection](typed);
289
- }
290
- });
291
- }
292
- /**
293
- * Processes removed from the canvas elements.
294
- * @param nodes The list of removed nodes
295
- */
296
- [processRemovedNodes](nodes) {
297
- nodes.forEach((node) => {
298
- if (node.nodeType !== Node.ELEMENT_NODE) {
299
- return;
300
- }
301
- const typed = node;
302
- const children = typed.querySelectorAll('*');
303
- this[processRemovedNodes](children);
304
- // An item might not be selectable but it may have a secondary selection
305
- // through association.
306
- // if (!this.isSelectable(typed)) {
307
- // return;
308
- // }
309
- if (this.isSelected(typed)) {
310
- this[propagateDeselection](typed);
311
- }
312
- });
313
- }
314
- /**
315
- * Processes changed attribute on any element in the canvas
316
- * @param node Changed element
317
- * @param prop Changed property
318
- */
319
- [processAttributeChanged](node, prop) {
320
- if (!['data-selected'].includes(prop)) {
321
- return;
322
- }
323
- if (node.hasAttribute(prop)) {
324
- this[propagateSelection](node);
325
- }
326
- else {
327
- this[propagateDeselection](node);
328
- }
329
- }
330
- /**
331
- * Sets selection to the elements that are related to the `selectable` element.
332
- *
333
- * A related element is an element that is an association target to the `selectable`
334
- * ot the `selectable` has `parent` attribute.
335
- *
336
- * The related are not added to the `selectedItems` set and does not have `selected` attribute.
337
- * They are marked with `second-selected` attribute.
338
- */
339
- [propagateSelection](selectable) {
340
- if (this.selectedItems.has(selectable)) {
341
- return;
342
- }
343
- this.selectedItems.add(selectable);
344
- const id = this.readKey(selectable);
345
- if (!id) {
346
- this[notifyChanged]();
347
- return;
348
- }
349
- const selected = this[selectedIdsValue];
350
- const index = selected.findIndex((item) => item.id === id);
351
- if (index === -1) {
352
- selected.push({
353
- id,
354
- name: selectable.localName,
355
- node: selectable,
356
- });
357
- }
358
- this[selectAssociations](selectable);
359
- this[selectReverseAssociations](selectable);
360
- this[notifyChanged]();
361
- }
362
- /**
363
- * Marks `viz-association` and referenced targets of the `selectable` as a secondary selection.
364
- */
365
- [selectAssociations](selectable) {
366
- const nodes = selectable.querySelectorAll('viz-association');
367
- if (!nodes.length) {
368
- return;
369
- }
370
- Array.from(nodes).forEach((node) => {
371
- const target = node.getAttribute('data-target');
372
- if (!target) {
373
- return;
374
- }
375
- node.setAttribute('secondary-selected', '');
376
- const targetElement = this.getDomainTarget(target);
377
- if (targetElement) {
378
- targetElement.setAttribute('secondary-selected', '');
379
- }
380
- });
381
- }
382
- /**
383
- * Similar to `[selectAssociations]()` but it selects associations where
384
- * the `selectable` is the target.
385
- */
386
- [selectReverseAssociations](selectable) {
387
- const id = this.readKey(selectable);
388
- if (!id) {
389
- return;
390
- }
391
- const nodes = this.target.querySelectorAll(`viz-association[data-target="${id}"]`);
392
- if (!nodes.length) {
393
- return;
394
- }
395
- Array.from(nodes).forEach((node) => {
396
- const target = node.getAttribute('data-target');
397
- if (!target) {
398
- return;
399
- }
400
- node.setAttribute('secondary-selected', '');
401
- const targetElement = node.parentElement;
402
- if (targetElement) {
403
- targetElement.setAttribute('secondary-selected', '');
404
- }
405
- });
406
- }
407
- /**
408
- * Removes secondary selection from the elements that are related to the `selectable` element.
409
- *
410
- * A related element is an element that is an association target to the `selectable`
411
- * ot the `selectable` has `parent` attribute.
412
- */
413
- [propagateDeselection](selectable) {
414
- if (!this.selectedItems.has(selectable)) {
415
- return;
416
- }
417
- this.selectedItems.delete(selectable);
418
- const id = this.readKey(selectable);
419
- if (!id) {
420
- this[notifyChanged]();
421
- return;
422
- }
423
- const selected = this[selectedIdsValue];
424
- const index = selected.findIndex((item) => item.id === id);
425
- if (index !== -1) {
426
- this[selectedIdsValue].splice(index, 1);
427
- }
428
- this[deselectAssociations](selectable);
429
- this[deselectReverseAssociations](selectable);
430
- this[notifyChanged]();
431
- }
432
- /**
433
- * Removes secondary selection mark from `viz-association`
434
- */
435
- [deselectAssociations](selectable) {
436
- const nodes = selectable.querySelectorAll('viz-association');
437
- if (!nodes.length) {
438
- return;
439
- }
440
- Array.from(nodes).forEach((node) => {
441
- const target = node.getAttribute('data-target');
442
- if (!target) {
443
- return;
444
- }
445
- node.removeAttribute('secondary-selected');
446
- const targetElement = this.getDomainTarget(target);
447
- if (targetElement) {
448
- targetElement.removeAttribute('secondary-selected');
449
- }
450
- });
451
- }
452
- /**
453
- * Similar to `[selectAssociation]()` but it selects associations where
454
- * the `selectable` is the target.
455
- */
456
- [deselectReverseAssociations](selectable) {
457
- const id = this.readKey(selectable);
458
- if (!id) {
459
- return;
460
- }
461
- const nodes = this.target.querySelectorAll(`viz-association[data-target="${id}"]`);
462
- if (!nodes.length) {
463
- return;
464
- }
465
- Array.from(nodes).forEach((node) => {
466
- const target = node.getAttribute('data-target');
467
- if (!target) {
468
- return;
469
- }
470
- node.removeAttribute('secondary-selected');
471
- const targetElement = node.parentElement;
472
- if (targetElement) {
473
- targetElement.removeAttribute('secondary-selected');
474
- }
475
- });
476
- }
477
- [notifyChanged]() {
478
- this.target.dispatchEvent(new Event('selectedchange'));
479
- }
480
- }
481
- //# sourceMappingURL=SelectionManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SelectionManager.js","sourceRoot":"","sources":["../../../../src/visualization/lib/SelectionManager.ts"],"names":[],"mappings":"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","sourcesContent":["import VizWorkspaceElement from '../elements/VizWorkspaceElement.js'\nimport { ISelectedDomain } from './types.js'\n\nexport const clickHandler = Symbol('clickHandler')\nexport const observeItems = Symbol('observeItems')\nexport const mutationHandler = Symbol('mutationHandler')\nexport const mutationObserver = Symbol('mutationObserver')\nexport const processAddedNodes = Symbol('processAddedNodes')\nexport const processRemovedNodes = Symbol('processRemovedNodes')\nexport const processAttributeChanged = Symbol('processAttributeChanged')\nexport const propagateSelection = Symbol('propagateSelection')\nexport const selectAssociations = Symbol('selectAssociation')\nexport const selectReverseAssociations = Symbol('selectReverseAssociations')\nexport const propagateDeselection = Symbol('propagateDeselection')\nexport const deselectAssociations = Symbol('deselectAssociations')\nexport const deselectReverseAssociations = Symbol('deselectReverseAssociations')\nexport const notifyChanged = Symbol('notifyChanged')\nexport const selectedItemsValue = Symbol('selectedItemsValue')\nexport const selectedIdsValue = Symbol('selectedIdsValue')\n\n/**\n * A class that takes care of selection in the visualization workspace.\n */\nexport class SelectionManager {\n /**\n * The list of currently selected elements\n */\n [selectedItemsValue] = new Set<Element>();\n\n /**\n * The list of currently selected domain ids\n */\n [selectedIdsValue]: ISelectedDomain[] = [];\n\n [mutationObserver]?: MutationObserver\n\n /**\n * @returns A set of currently selected items.\n */\n get selectedItems(): Set<Element> {\n return this[selectedItemsValue]\n }\n\n /**\n * @returns A list of currently selected domain ids.\n */\n get selected(): ISelectedDomain[] {\n return this[selectedIdsValue]\n }\n\n /**\n * @returns A list of all selectable items\n */\n get selectable(): Element[] {\n const nodes = this.target.querySelectorAll('[data-selectable]')\n return Array.from(nodes) as Element[]\n }\n\n constructor(public target: VizWorkspaceElement) {\n this[clickHandler] = this[clickHandler].bind(this)\n this[mutationHandler] = this[mutationHandler].bind(this)\n }\n\n /**\n * Initializes the library. Should be called when the workspace is ready to render content.\n */\n connect(): void {\n this.target.addEventListener('click', this[clickHandler] as EventListener)\n this[mutationObserver] = this[observeItems]()\n }\n\n /**\n * Cleans up and removes listeners\n */\n disconnect(): void {\n const mo = this[mutationObserver]\n if (mo) {\n mo.disconnect()\n this[mutationObserver] = undefined\n }\n this.target.removeEventListener('click', this[clickHandler] as EventListener)\n }\n\n /**\n * Checks if given element is marked as selectable target\n * @param selectable The element to test for `selectable` or `data-selectable` attribute\n * @returns True if the element can be selected\n */\n isSelectable(selectable: Element): boolean {\n return selectable.hasAttribute('data-selectable')\n }\n\n /**\n * Checks if given element is marked as selected\n * @param selectable The element to test for `selected` or `data-selected` attribute\n * @returns True if the element is marked as selected\n */\n isSelected(selectable: Element): boolean {\n return selectable.hasAttribute('data-selected')\n }\n\n /**\n * Marks an element as selected\n * @param selectable The element to add the selected mark to.\n */\n setSelected(selectable: Element): void {\n selectable.setAttribute('data-selected', '')\n }\n\n /**\n * Marks an element as not selected\n * @param selectable The element to remove the selected mark from.\n */\n setUnselected(selectable: Element): void {\n selectable.removeAttribute('data-selected')\n }\n\n /**\n * Deselects all currently selected items.\n */\n selectAll(): void {\n this.selectable.forEach((node) => {\n if (!this.isSelected(node)) {\n this.setSelected(node)\n }\n })\n }\n\n /**\n * Deselects all currently selected items.\n */\n deselectAll(): void {\n this.selectable.forEach((node) => {\n if (this.isSelected(node)) {\n this.setUnselected(node)\n }\n })\n const ids = [...this[selectedIdsValue]]\n ids.forEach((info) => {\n const elm = this.getDomainTarget(info.id)\n if (!elm) {\n const index = this[selectedIdsValue].indexOf(info)\n this[selectedIdsValue].splice(index, 1)\n } else if (this.isSelected(elm)) {\n this.setUnselected(elm)\n }\n })\n }\n\n /**\n * Selects objects that are selectable by their `key`.\n *\n * The `addToSelection` argument is equivalent of calling `deselectAll()` and then `select(...)`.\n *\n * @param keys The list of domain ids of objects to select.\n * @param addToSelection If true it adds to the current selection rather than replacing it.\n */\n select(keys: string[], addToSelection = false): void {\n if (!addToSelection) {\n this.deselectAll()\n }\n keys.forEach((id) => {\n const node = this.getSelectableDomainTarget(id)\n if (!node) {\n return\n }\n if (this.isSelectable(node) && !this.isSelected(node)) {\n this.setSelected(node)\n }\n })\n }\n\n /**\n * Removes objects from selection.\n *\n * @param keys The list of domain ids of objects to deselect.\n */\n deselect(keys: string[]): void {\n keys.forEach((id) => {\n const node = this.getSelectableDomainTarget(id)\n if (!node) {\n return\n }\n if (this.isSelectable(node) && this.isSelected(node)) {\n this.setUnselected(node)\n }\n })\n }\n\n /**\n * Synchronizes the selection state with the view\n */\n syncView(): void {\n const nodes = this.target.querySelectorAll(`[data-selectable][data-selected]`)\n if (this[selectedItemsValue].size !== nodes.length) {\n // eslint-disable-next-line no-console\n console.log('invalid selection', this[selectedItemsValue], nodes)\n }\n }\n\n /**\n * Reads the attribute value to get the `key` property.\n * @param selectable\n * @returns The domain id of the object or `null` when not found\n */\n readKey(selectable: Element): string | null {\n if (selectable.hasAttribute('data-key')) {\n return selectable.getAttribute('data-key')\n }\n return null\n }\n\n /**\n * Finds a workspace element that has the domain id.\n * @param id Target domain id\n */\n getDomainTarget(id: string): Element | null {\n return this.target.querySelector(`[data-key=\"${id}\"]`)\n }\n\n /**\n * Finds a workspace element that has the domain id and is selectable.\n * @param id Target domain id\n */\n getSelectableDomainTarget(id: string): Element | null {\n const node = this.target.querySelector(`[data-key=\"${id}\"][data-selectable]`)\n return node\n }\n\n // PRIVATE APIS\n\n [clickHandler](e: PointerEvent): void {\n const path = e.composedPath()\n const svg = this.target.associationSvg\n if (path[0] !== svg && path.includes(svg)) {\n // Selection of the edges is managed by the workspace edges manager.\n return\n }\n let selectableTarget\n while (path.length > 0) {\n const tmp = path.shift() as Node\n if (tmp.nodeType !== Node.ELEMENT_NODE) {\n continue\n }\n const typed = tmp as Element\n if (this.isSelectable(typed)) {\n selectableTarget = typed\n break\n }\n }\n if (!selectableTarget) {\n this.deselectAll()\n return\n }\n const isSelected = this.isSelected(selectableTarget)\n // note: if toggle mode is required then this should toggle the attribute\n if (isSelected) {\n if (e.shiftKey) {\n this.setUnselected(selectableTarget)\n }\n return\n }\n if (!e.shiftKey) {\n this.deselectAll()\n }\n this.setSelected(selectableTarget)\n }\n\n /**\n * Observe items change in the element's light DOM\n * @returns The observer handler\n */\n [observeItems](): MutationObserver {\n const config = { attributes: true, childList: true, subtree: true }\n const observer = new MutationObserver(this[mutationHandler])\n observer.observe(this.target, config)\n return observer\n }\n\n /**\n * Processes mutations in the workspace and manages selection state.\n * @param mutationsList List of mutations.\n */\n [mutationHandler](mutationsList: MutationRecord[]): void {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n this[processAddedNodes](mutation.addedNodes)\n this[processRemovedNodes](mutation.removedNodes)\n } else if (mutation.type === 'attributes') {\n const { attributeName, target } = mutation\n this[processAttributeChanged](target as Element, attributeName as string)\n }\n }\n requestAnimationFrame(() => this.syncView())\n }\n\n /**\n * Processes added to the canvas elements.\n * @param nodes The list of added nodes\n */\n [processAddedNodes](nodes: NodeList): void {\n nodes.forEach((node) => {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return\n }\n const typed = node as Element\n const children = typed.querySelectorAll('*')\n this[processAddedNodes](children)\n if (!this.isSelectable(typed)) {\n return\n }\n if (this.isSelected(typed)) {\n this[propagateSelection](typed)\n }\n })\n }\n\n /**\n * Processes removed from the canvas elements.\n * @param nodes The list of removed nodes\n */\n [processRemovedNodes](nodes: NodeList): void {\n nodes.forEach((node) => {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return\n }\n const typed = node as Element\n const children = typed.querySelectorAll('*')\n this[processRemovedNodes](children)\n // An item might not be selectable but it may have a secondary selection\n // through association.\n // if (!this.isSelectable(typed)) {\n // return;\n // }\n if (this.isSelected(typed)) {\n this[propagateDeselection](typed)\n }\n })\n }\n\n /**\n * Processes changed attribute on any element in the canvas\n * @param node Changed element\n * @param prop Changed property\n */\n [processAttributeChanged](node: Element, prop: string): void {\n if (!['data-selected'].includes(prop)) {\n return\n }\n if (node.hasAttribute(prop)) {\n this[propagateSelection](node)\n } else {\n this[propagateDeselection](node)\n }\n }\n\n /**\n * Sets selection to the elements that are related to the `selectable` element.\n *\n * A related element is an element that is an association target to the `selectable`\n * ot the `selectable` has `parent` attribute.\n *\n * The related are not added to the `selectedItems` set and does not have `selected` attribute.\n * They are marked with `second-selected` attribute.\n */\n [propagateSelection](selectable: Element): void {\n if (this.selectedItems.has(selectable)) {\n return\n }\n this.selectedItems.add(selectable)\n const id = this.readKey(selectable)\n if (!id) {\n this[notifyChanged]()\n return\n }\n const selected = this[selectedIdsValue]\n const index = selected.findIndex((item) => item.id === id)\n if (index === -1) {\n selected.push({\n id,\n name: selectable.localName,\n node: selectable,\n })\n }\n this[selectAssociations](selectable)\n this[selectReverseAssociations](selectable)\n this[notifyChanged]()\n }\n\n /**\n * Marks `viz-association` and referenced targets of the `selectable` as a secondary selection.\n */\n [selectAssociations](selectable: Element): void {\n const nodes = selectable.querySelectorAll('viz-association')\n if (!nodes.length) {\n return\n }\n Array.from(nodes).forEach((node) => {\n const target = node.getAttribute('data-target')\n if (!target) {\n return\n }\n node.setAttribute('secondary-selected', '')\n const targetElement = this.getDomainTarget(target)\n if (targetElement) {\n targetElement.setAttribute('secondary-selected', '')\n }\n })\n }\n\n /**\n * Similar to `[selectAssociations]()` but it selects associations where\n * the `selectable` is the target.\n */\n [selectReverseAssociations](selectable: Element): void {\n const id = this.readKey(selectable)\n if (!id) {\n return\n }\n const nodes = this.target.querySelectorAll(`viz-association[data-target=\"${id}\"]`)\n if (!nodes.length) {\n return\n }\n Array.from(nodes).forEach((node) => {\n const target = node.getAttribute('data-target')\n if (!target) {\n return\n }\n node.setAttribute('secondary-selected', '')\n const targetElement = node.parentElement\n if (targetElement) {\n targetElement.setAttribute('secondary-selected', '')\n }\n })\n }\n\n /**\n * Removes secondary selection from the elements that are related to the `selectable` element.\n *\n * A related element is an element that is an association target to the `selectable`\n * ot the `selectable` has `parent` attribute.\n */\n [propagateDeselection](selectable: Element): void {\n if (!this.selectedItems.has(selectable)) {\n return\n }\n this.selectedItems.delete(selectable)\n const id = this.readKey(selectable)\n if (!id) {\n this[notifyChanged]()\n return\n }\n const selected = this[selectedIdsValue]\n const index = selected.findIndex((item) => item.id === id)\n if (index !== -1) {\n this[selectedIdsValue].splice(index, 1)\n }\n this[deselectAssociations](selectable)\n this[deselectReverseAssociations](selectable)\n this[notifyChanged]()\n }\n\n /**\n * Removes secondary selection mark from `viz-association`\n */\n [deselectAssociations](selectable: Element): void {\n const nodes = selectable.querySelectorAll('viz-association')\n if (!nodes.length) {\n return\n }\n Array.from(nodes).forEach((node) => {\n const target = node.getAttribute('data-target')\n if (!target) {\n return\n }\n node.removeAttribute('secondary-selected')\n const targetElement = this.getDomainTarget(target)\n if (targetElement) {\n targetElement.removeAttribute('secondary-selected')\n }\n })\n }\n\n /**\n * Similar to `[selectAssociation]()` but it selects associations where\n * the `selectable` is the target.\n */\n [deselectReverseAssociations](selectable: Element): void {\n const id = this.readKey(selectable)\n if (!id) {\n return\n }\n const nodes = this.target.querySelectorAll(`viz-association[data-target=\"${id}\"]`)\n if (!nodes.length) {\n return\n }\n Array.from(nodes).forEach((node) => {\n const target = node.getAttribute('data-target')\n if (!target) {\n return\n }\n node.removeAttribute('secondary-selected')\n const targetElement = node.parentElement\n if (targetElement) {\n targetElement.removeAttribute('secondary-selected')\n }\n })\n }\n\n [notifyChanged](): void {\n this.target.dispatchEvent(new Event('selectedchange'))\n }\n}\n"]}
@@ -1,45 +0,0 @@
1
- import { SVGTemplateResult } from 'lit';
2
- import { IEdgeDirections, IWorkspaceEdge } from './types.js';
3
- import { IAssociationLabelShape, AssociationShapeType, IAssociationTip } from './VisualizationTypes.js';
4
- import { Point } from './Point.js';
5
- /**
6
- * A class that builds templates for lines, tips, and labels.
7
- */
8
- export declare class ShapeArtist {
9
- /**
10
- * @param info The definition of the line to visualize
11
- * @param debug Whether debugging is enabled.
12
- * @return The template for an association line
13
- */
14
- static line(info: IWorkspaceEdge, debug?: boolean): SVGTemplateResult | string;
15
- /**
16
- * @param info The line to visualize
17
- * @param debug Whether debugging is enabled.
18
- * @returns The template for an association line
19
- */
20
- static rectilinearLine(info: IWorkspaceEdge, debug: boolean): SVGTemplateResult;
21
- /**
22
- * @param tip The parent line to visualize
23
- * @returns The template for the parent line tip
24
- */
25
- static edgeTipTemplate(tip: IAssociationTip): SVGTemplateResult;
26
- /**
27
- * @param id The key of the association.
28
- * @returns The template for the association drag handlers on the tips.
29
- */
30
- static associationDraggable(id: string, start: Point, end: Point, directions: IEdgeDirections): SVGTemplateResult;
31
- /**
32
- * @param parentId The association key
33
- * @returns The template for a text label for an association
34
- */
35
- static edgeLabelTemplate(label: IAssociationLabelShape, parentId: string): SVGTemplateResult | string;
36
- /**
37
- * Draws a debug control points positions for the given line type.
38
- * @param start The start of the line
39
- * @param end The end of the line
40
- * @param cp Control points on the line
41
- */
42
- static controlPointsDebugTemplate(type: AssociationShapeType, start: Point, end: Point, cp: Point[]): SVGTemplateResult | string;
43
- static rectilinearPathDebugTemplate(start: Point, end: Point, controlPoints: Point[]): SVGTemplateResult | string;
44
- }
45
- //# sourceMappingURL=ShapeArtist.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ShapeArtist.d.ts","sourceRoot":"","sources":["../../../../src/visualization/lib/ShapeArtist.ts"],"names":[],"mappings":"AAEA,OAAO,EAAO,iBAAiB,EAAE,MAAM,KAAK,CAAA;AAI5C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EAEhB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC;;GAEG;AACH,qBAAa,WAAW;IACtB;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,UAAQ,GAAG,iBAAiB,GAAG,MAAM;IAU5E;;;;OAIG;IACH,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,GAAG,iBAAiB;IAgD/E;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,eAAe,GAAG,iBAAiB;IAyB/D;;;OAGG;IACH,MAAM,CAAC,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,GAAG,iBAAiB;IAwCjH;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GAAG,MAAM;IAsBrG;;;;;OAKG;IACH,MAAM,CAAC,0BAA0B,CAC/B,IAAI,EAAE,oBAAoB,EAC1B,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,KAAK,EACV,EAAE,EAAE,KAAK,EAAE,GACV,iBAAiB,GAAG,MAAM;IAS7B,MAAM,CAAC,4BAA4B,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,iBAAiB,GAAG,MAAM;CAelH"}