@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 +0,0 @@
1
- {"version":3,"file":"WorkspaceEdges.js","sourceRoot":"","sources":["../../../../src/visualization/lib/WorkspaceEdges.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { getObjectBoundingClientRect, findDirection } from './PositionUtils.js'\nimport { closestAnchors, anchorToPoint } from './AnchorUtils.js'\nimport { LineSketch } from './LineSketch.js'\nimport { TipSketch } from './TipSketch.js'\nimport { LabelSketch } from './LabelSketch.js'\nimport { anchorPadding, findClosestAnchors } from './AnchorFinder.js'\nimport { ICalculateEdgeOptions, IEdgeDirections, IWorkspaceEdge } from './types.js'\nimport VizWorkspaceElement from '../elements/VizWorkspaceElement.js'\nimport VizAssociationElement from '../elements/VizAssociationElement.js'\nimport {\n IAssociationShape,\n IAssociationSlots,\n IAssociationVertexes,\n ILineTips,\n IVisualizationAssociationShape,\n IVisualizationRectilinearLineShape,\n} from './VisualizationTypes.js'\nimport { Point } from './Point.js'\n\nconst DefaultLineType = 'rectilinear'\n\nexport const observeItems = Symbol('observeItems')\nexport const clickHandler = Symbol('clickHandler')\nexport const mouseOverHandler = Symbol('mouseOverHandler')\nexport const mouseOutHandler = Symbol('mouseOutHandler')\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 connectedValue = Symbol('connectedValue')\nexport const processAddedAssociation = Symbol('processAddedAssociation')\nexport const processRemovedAssociation = Symbol('processRemovedAssociation')\nexport const processAddedNode = Symbol('processAddedNode')\nexport const processRemovedNode = Symbol('processRemovedNode')\nexport const edgesValue = Symbol('edgesValue')\nexport const associationClickHandler = Symbol('associationClickHandler')\nexport const deselectAllEdges = Symbol('deselectAllEdges')\nexport const calculateEdge = Symbol('calculateEdge')\nexport const processQueue = Symbol('processQueue')\nexport const processQueueDebouncer = Symbol('processQueueDebouncer')\nexport const updateAssociationById = Symbol('updateAssociationById')\nexport const calculateNearestPoints = Symbol('calculateNearestPoints')\nexport const readEventTarget = Symbol('readEventTarget')\n\n/**\n * A class that manages drawing edges between the nodes in the workspace visualization.\n *\n * This class looks for the `viz-association` elements inside other elements\n * and when the association has a valid (existing) target then it creates an internal model for the edge\n * visualization and sets it on the workspace to be rendered.\n *\n * This class also manages selection state of the edge.\n */\nexport class WorkspaceEdges {\n [connectedValue] = false\n\n /**\n * @returns True when the plug-in is listening for the input events.\n */\n get connected(): boolean {\n return this[connectedValue]\n }\n\n [edgesValue]: Map<string, IWorkspaceEdge> = new Map<string, IWorkspaceEdge>()\n\n /**\n * @returns The edges to be visualized in the workspace.\n */\n get edges(): Map<string, IWorkspaceEdge> {\n return this[edgesValue]\n }\n\n /**\n * When an association is changed in the DOM it is held in this array to process them asynchronously\n * in the future, when the workspace is updated.\n */\n [processQueue]: VizAssociationElement[] = []\n\n /**\n * The processor used to draw lines\n */\n lineProcessor = new LineSketch()\n\n /**\n * The processor used to draw tips on the line\n */\n tipProcessor = new TipSketch();\n\n [mutationObserver]?: MutationObserver\n\n constructor(public workspace: VizWorkspaceElement) {\n this[mutationHandler] = this[mutationHandler].bind(this)\n this[clickHandler] = this[clickHandler].bind(this)\n this[mouseOverHandler] = this[mouseOverHandler].bind(this)\n this[mouseOutHandler] = this[mouseOutHandler].bind(this)\n }\n\n /**\n * Starts listening on user events\n */\n connect(): void {\n this[mutationObserver] = this[observeItems]()\n this[connectedValue] = true\n if (this.workspace.associationSvg) {\n this.listenContent()\n }\n this.associateCurrent()\n }\n\n /**\n * Creates associations for the current state of the canvas.\n */\n associateCurrent(): void {\n const nodes = Array.from(this.workspace.querySelectorAll('viz-association')) as VizAssociationElement[]\n nodes.forEach((assoc) => this[processAddedAssociation](assoc))\n }\n\n /**\n * Initializes events when the workspace DOM is rendered.\n */\n listenContent(): void {\n this.workspace.associationSvg.addEventListener('click', this[clickHandler] as EventListener)\n this.workspace.associationSvg.addEventListener('mouseover', this[mouseOverHandler])\n this.workspace.associationSvg.addEventListener('mouseout', this[mouseOutHandler])\n }\n\n /**\n * Cleans up the listeners\n */\n disconnect(): void {\n const observer = this[mutationObserver]\n if (observer) {\n observer.disconnect()\n this[mutationObserver] = undefined\n }\n this[connectedValue] = false\n this.workspace.associationSvg.removeEventListener('click', this[clickHandler] as EventListener)\n this.workspace.associationSvg.removeEventListener('mouseover', this[mouseOverHandler])\n this.workspace.associationSvg.removeEventListener('mouseout', this[mouseOutHandler])\n }\n\n /**\n * Clear all edges from the workspace\n */\n clear(): void {\n this[edgesValue].clear()\n this.workspace.requestUpdate()\n }\n\n /**\n * Forces to re-calculate all existing edges.\n */\n async recalculate(): Promise<void> {\n const { edges, workspace } = this\n edges.forEach((edge) => {\n const { id, source, target, shape } = edge\n const { label } = shape\n const item = this[updateAssociationById](source, target, id, label && label.value)\n if (item) {\n edges.set(id, item)\n }\n })\n workspace.requestUpdate()\n }\n\n /**\n * Reads an edge definition by the association id.\n */\n get(key: string): IWorkspaceEdge | undefined {\n const { edges } = this\n return edges.get(key)\n }\n\n /**\n * Removes an edge and notifies workspace to update.\n */\n removeEdge(id: string): void {\n if (this[edgesValue].has(id)) {\n this[edgesValue].delete(id)\n this.workspace.requestUpdate()\n }\n }\n\n /**\n * Updates associations (in and out) for an element identified by the `key` attribute.\n * The element must be one of the visualized elements in the workspace.\n *\n * This is to be used when position and or size of an element that has associations change.\n *\n * @param key The domain id of the visualized element that has changed.\n */\n async update(key: string): Promise<void> {\n const { edges, workspace } = this\n const element = workspace.querySelector(`[data-key=\"${key}\"]`)\n if (!element) {\n return\n }\n edges.forEach((edge) => {\n const { source, target, id, shape } = edge\n const { label } = shape\n let change = false\n if ([source, target].includes(key)) {\n change = true\n }\n if (change) {\n const item = this[updateAssociationById](source, target, id, label && label.value)\n if (item) {\n edges.set(id, item)\n }\n }\n })\n workspace.requestUpdate()\n await workspace.updateComplete\n }\n\n /**\n * Computes workspace edge object for source and target.\n *\n * @param source The domain id of the source element\n * @param target The domain id of the target element\n * @param id The domain id of the association\n * @param name The label rendered in the association\n */\n [updateAssociationById](source: string, target: string, id: string, name?: string): IWorkspaceEdge | null {\n const { workspace } = this\n const sourceElement = workspace.querySelector(`[data-key=\"${source}\"]`) as HTMLElement\n if (!sourceElement) {\n return null\n }\n const targetElement = workspace.querySelector(`[data-key=\"${target}\"]`) as HTMLElement\n if (!targetElement) {\n return null\n }\n const opts: ICalculateEdgeOptions = {\n sourceElement,\n targetElement,\n id,\n name,\n }\n const assocElement = workspace.querySelector(`viz-association[data-key=\"${id}\"]`) as VizAssociationElement | null\n if (!assocElement) {\n return null\n }\n const slots = this.readAssociationSlots(assocElement)\n if (slots.source) {\n opts.sourceSlot = slots.source\n }\n if (slots.target) {\n opts.targetSlot = slots.target\n }\n const others = this.findOtherAssociations(sourceElement, targetElement, assocElement.dataset.key as string)\n if (others.length) {\n opts.others = others\n }\n return this[calculateEdge](opts) || null\n }\n\n /**\n * Creates a internal data model for the edge drawn between an association source and the target.\n * @param assocElement The viz-association element reference\n * @param targetElement The target element reference.\n */\n buildAssociationEdge(assocElement: VizAssociationElement, targetElement: HTMLElement): void {\n const sourceElement = assocElement.parentElement as HTMLElement\n if (!sourceElement || !sourceElement.dataset.key) {\n return\n }\n const slots = this.readAssociationSlots(assocElement)\n const { title, dataset } = assocElement\n const opts: ICalculateEdgeOptions = {\n sourceElement,\n targetElement,\n id: dataset.key as string,\n name: title || '',\n }\n if (slots.source) {\n opts.sourceSlot = slots.source\n }\n if (slots.target) {\n opts.targetSlot = slots.target\n }\n const map = this[edgesValue]\n const others = this.findOtherAssociations(sourceElement, targetElement, dataset.key as string)\n if (others.length) {\n opts.others = others\n }\n const item = this[calculateEdge](opts)\n if (item) {\n map.set(dataset.key as string, item)\n }\n this.workspace.requestUpdate()\n }\n\n /**\n */\n findOtherAssociations(sourceElement: HTMLElement, targetElement: HTMLElement, assocId: string): IWorkspaceEdge[] {\n const srcId = sourceElement.dataset.key as string\n const trgId = targetElement.dataset.key as string\n const sourceAssociations = Array.from(sourceElement.querySelectorAll('viz-association')) as HTMLElement[]\n const targetAssociations = Array.from(sourceElement.querySelectorAll('viz-association')) as HTMLElement[]\n const otherSourceAssociations = sourceAssociations.filter(\n (i) => i.dataset.target === trgId && i.dataset.key !== assocId\n )\n const otherTargetAssociations = targetAssociations.filter((i) => i.dataset.target === srcId && i.dataset.key)\n const others: IWorkspaceEdge[] = []\n const map = this[edgesValue]\n otherSourceAssociations.concat(otherTargetAssociations).forEach((item) => {\n const m = map.get(item.dataset.key as string)\n if (m) {\n others.push(m)\n }\n })\n return others\n }\n\n /**\n * Reads the view model for an association and returns slot definitions for the association.\n *\n * @param assocElement The viz-association element reference\n */\n readAssociationSlots(assocElement: VizAssociationElement): IAssociationSlots {\n const result: IAssociationSlots = {}\n Array.from(assocElement.querySelectorAll('modeling-view')).forEach((item) => {\n // if (item.name === 'sourceSlot') {\n // result.source = item.value;\n // } else if (item.name === 'targetSlot') {\n // result.target = item.value;\n // }\n })\n return result\n }\n\n /**\n * Calculates the edge between two nodes.\n */\n [calculateNearestPoints](\n sourceElement: HTMLElement,\n targetElement: HTMLElement,\n others?: IWorkspaceEdge[]\n ): Point[] | null {\n const { workspace } = this\n if (sourceElement.hasAttribute('data-association-slots') && targetElement.hasAttribute('data-association-slots')) {\n return closestAnchors(sourceElement, targetElement, workspace, others)\n }\n const sourceBox = getObjectBoundingClientRect(sourceElement, workspace)\n const targetBox = getObjectBoundingClientRect(targetElement, workspace)\n const anchors = findClosestAnchors(sourceBox, targetBox, anchorPadding)\n return anchors\n }\n\n /**\n * Calculates the edge between two nodes.\n */\n [calculateEdge](options: ICalculateEdgeOptions): IWorkspaceEdge | undefined {\n const { sourceElement, targetElement, id, name = '' } = options\n const slotPoints = this.discoverAssociationVertexes(options)\n if (!slotPoints) {\n return undefined\n }\n const sourceRect = getObjectBoundingClientRect(sourceElement, this.workspace)\n const targetRect = getObjectBoundingClientRect(targetElement, this.workspace)\n const sketch = this.lineProcessor.sketch({\n source: sourceRect,\n target: targetRect,\n startPoint: slotPoints.start as Point,\n endPoint: slotPoints.end as Point,\n type: DefaultLineType,\n others: options.others,\n }) as IVisualizationRectilinearLineShape\n if (!sketch) {\n return undefined\n }\n const coords = sketch.coordinates as Point[]\n const [sp] = coords\n const ep = coords[coords.length - 1]\n const directions = findDirection(sp, ep, sourceRect, targetRect)\n\n const labelArtist = new LabelSketch()\n const label = labelArtist.sketch(sketch, name, directions) || undefined\n const assocElement = this.workspace.querySelector(`viz-association[data-key=\"${id}\"]`) as HTMLElement\n const style = this.createAssociationStyles(assocElement)\n const tips = this.createAssociationTips(assocElement, sketch, directions)\n const positionChange =\n sourceElement.hasAttribute('data-association-slots') && targetElement.hasAttribute('data-association-slots')\n\n const shape: IAssociationShape = {\n selection: {\n primary: false,\n secondary: false,\n },\n line: sketch,\n style,\n label,\n tips,\n }\n const srcId = sourceElement.dataset.key\n const trgId = targetElement.dataset.key\n if (!srcId || !trgId) {\n return undefined\n }\n const positionItem: IWorkspaceEdge = {\n id,\n source: srcId,\n target: trgId,\n positionChange,\n directions,\n shape,\n }\n if (options.sourceSlot || options.targetSlot) {\n shape.slots = {}\n if (options.sourceSlot) {\n shape.slots.source = options.sourceSlot\n }\n if (options.targetSlot) {\n shape.slots.target = options.targetSlot\n }\n }\n return positionItem\n }\n\n discoverAssociationVertexes(options: ICalculateEdgeOptions): IAssociationVertexes | undefined {\n const slotPoints = (this.discoverSlotPoints(options) || {}) as IAssociationVertexes\n if (!slotPoints.end || !slotPoints.start) {\n const closest = this[calculateNearestPoints](\n options.sourceElement,\n options.targetElement,\n options.others as IWorkspaceEdge[]\n )\n if (!closest) {\n return undefined\n }\n if (!slotPoints.start) {\n slotPoints.start = closest[0]\n }\n if (!slotPoints.end) {\n slotPoints.end = closest[1]\n }\n }\n return slotPoints\n }\n\n /**\n * When defined and correctly configured it returns position of the slots of the source and the target.\n */\n discoverSlotPoints(options: ICalculateEdgeOptions): IAssociationVertexes | undefined {\n const { sourceElement, targetElement, sourceSlot, targetSlot } = options\n if (!sourceSlot && !targetSlot) {\n return undefined\n }\n const result: IAssociationVertexes = {}\n if (sourceSlot) {\n const dom = sourceElement.shadowRoot ? sourceElement.shadowRoot : sourceElement\n const obj = dom.querySelector(`[data-association-slot=\"${sourceSlot}\"]`) as HTMLElement\n if (obj) {\n result.start = anchorToPoint(obj, this.workspace)\n }\n }\n if (targetElement) {\n const dom = targetElement.shadowRoot ? targetElement.shadowRoot : targetElement\n const obj = dom.querySelector(`[data-association-slot=\"${targetSlot}\"]`) as HTMLElement\n if (obj) {\n result.end = anchorToPoint(obj, this.workspace)\n }\n }\n return result\n }\n\n /**\n * Creates edge's markers definition from the association element.\n * The association element can have the following attributes set:\n * - data-marker-end\n * - data-marker-start\n * With a value of a marker name defined in the visualization workspace.\n *\n * @param assocElement The association element to read the values from.\n * @param lineShape The definition of the line that the marker is attached to\n * @param directions Computed line directions\n */\n createAssociationTips(\n assocElement: HTMLElement,\n lineShape: IVisualizationAssociationShape,\n directions: IEdgeDirections\n ): ILineTips {\n const result: ILineTips = {}\n if (!assocElement) {\n return result\n }\n const { dataset } = assocElement\n const { markerEnd, markerStart } = dataset\n const style = this.createAssociationStyles(assocElement)\n if (markerEnd) {\n // result.end = this.buildEdgeTip(markerEnd, lineShape, directions);\n result.end = this.tipProcessor.endMarker(markerEnd, lineShape, directions)\n if (style) {\n result.end.style = style\n }\n }\n if (markerStart) {\n // result.start = this.buildEdgeTip(markerStart, lineShape, directions);\n result.start = this.tipProcessor.startMarker(markerStart, lineShape, directions)\n if (style) {\n result.start.style = style\n }\n }\n return result\n }\n\n /**\n * Reads element's `data-style` attribute and returns it.\n * This is used in the edge definition for class name.\n *\n * @param assocElement The association element to read the values from.\n */\n createAssociationStyles(assocElement: HTMLElement): string {\n let result = ''\n if (assocElement) {\n const { dataset } = assocElement\n const { style } = dataset\n if (style) {\n result = style\n }\n }\n return result\n }\n\n /**\n * Updates an existing association data model for position\n * @param assocElement The viz-association element reference\n * @param targetElement The target element reference.\n */\n updateAssociationPosition(assocElement: VizAssociationElement, targetElement: HTMLElement): void {\n const id = assocElement.dataset.key as string\n const map = this[edgesValue]\n if (!map.has(id)) {\n return\n }\n const sourceElement = assocElement.parentElement as HTMLElement\n if (!sourceElement || !sourceElement.dataset.key) {\n return\n }\n const model = map.get(id)\n if (!model) {\n return\n }\n const opts: ICalculateEdgeOptions = {\n sourceElement,\n targetElement,\n id,\n }\n\n const slots = this.readAssociationSlots(assocElement)\n if (slots.source) {\n opts.sourceSlot = slots.source\n }\n if (slots.target) {\n opts.targetSlot = slots.target\n }\n const others = this.findOtherAssociations(sourceElement, targetElement, assocElement.dataset.key as string)\n if (others.length) {\n opts.others = others\n }\n const slotPoints = this.discoverAssociationVertexes(opts)\n if (!slotPoints) {\n return\n }\n const sourceRect = getObjectBoundingClientRect(sourceElement, this.workspace)\n const targetRect = getObjectBoundingClientRect(targetElement, this.workspace)\n const sketch = this.lineProcessor.sketch({\n source: sourceRect,\n target: targetRect,\n startPoint: slotPoints.start as Point,\n endPoint: slotPoints.end as Point,\n type: model.shape.line.type || DefaultLineType,\n }) as IVisualizationAssociationShape\n if (!sketch) {\n return\n }\n const coord = sketch.coordinates as Point[]\n const [sp] = coord\n const ep = coord[coord.length - 1]\n const directions = findDirection(sp, ep, sourceRect, targetRect)\n\n const labelArtist = new LabelSketch()\n const label = labelArtist.sketch(sketch, (model.shape.label && model.shape.label.value) || '', directions)\n const tips = this.createAssociationTips(assocElement, sketch, directions)\n\n model.shape.line = sketch\n model.shape.label = label || undefined\n model.shape.tips = tips\n model.directions = directions\n this.workspace.requestUpdate()\n }\n\n /**\n * Updates the label of the association in the visualization canvas.\n *\n * @param assocElement The viz-association element reference\n */\n updateAssociationLabel(assocElement: VizAssociationElement): void {\n const map = this[edgesValue]\n const key = assocElement.dataset.key as string\n if (!map.has(key)) {\n return\n }\n const { title } = assocElement\n const model = map.get(key) as IWorkspaceEdge\n if (model.shape && model.shape.label) {\n model.shape.label.value = title || ''\n this.workspace.requestUpdate()\n }\n }\n\n /**\n * Updates the `markers` property from an association element.\n *\n * @param assocElement The viz-association element reference\n */\n updateEdgeMarker(assocElement: VizAssociationElement): void {\n const map = this[edgesValue]\n const assocId = assocElement.dataset.key\n if (!assocId) {\n return\n }\n if (!map.has(assocId)) {\n return\n }\n const model = map.get(assocId) as IWorkspaceEdge\n const sourceElement = assocElement.parentElement as HTMLElement\n if (!sourceElement || !sourceElement.dataset.key) {\n return\n }\n const targetElement = this.findDomainTarget(model.target) as HTMLElement | undefined\n if (!targetElement || !targetElement.dataset.key) {\n return\n }\n const closest = this[calculateNearestPoints](sourceElement, targetElement)\n if (!closest) {\n return\n }\n const sourceRect = getObjectBoundingClientRect(sourceElement, this.workspace)\n const targetRect = getObjectBoundingClientRect(targetElement, this.workspace)\n const shape = this.lineProcessor.sketch({\n source: sourceRect,\n target: targetRect,\n startPoint: closest[0],\n endPoint: closest[1],\n type: model.shape.line.type || DefaultLineType,\n }) as IVisualizationAssociationShape\n if (!shape || !shape.coordinates) {\n return\n }\n const [sp] = shape.coordinates\n const ep = shape.coordinates[shape.coordinates.length - 1]\n const directions = findDirection(sp, ep, sourceRect, targetRect)\n\n const tips = this.createAssociationTips(assocElement, shape, directions)\n model.shape.tips = tips\n this.workspace.requestUpdate()\n }\n\n /**\n * Updates the `styles` property from an association element.\n *\n * @param assocElement The viz-association element reference\n */\n updateEdgeStyles(assocElement: VizAssociationElement): void {\n const map = this[edgesValue]\n const key = assocElement.dataset.key\n if (!key) {\n return\n }\n if (!map.has(key)) {\n return\n }\n const model = map.get(key) as IWorkspaceEdge\n model.shape.style = this.createAssociationStyles(assocElement)\n this.workspace.requestUpdate()\n }\n\n /**\n * Updates the selection state of the edge\n *\n * @param assocElement The viz-association element reference\n */\n toggleEdgeHighlight(assocElement: VizAssociationElement): void {\n const map = this[edgesValue]\n const key = assocElement.dataset.key\n if (!key) {\n return\n }\n if (!map.has(key)) {\n return\n }\n const model = map.get(key) as IWorkspaceEdge\n if (!model.shape.selection) {\n model.shape.selection = {}\n }\n model.shape.selection.primary = assocElement.hasAttribute('data-selected')\n this.workspace.requestUpdate()\n }\n\n /**\n * Updates the selection state of the edge\n *\n * @param assocElement The viz-association element reference\n */\n toggleEdgeSecondaryHighlight(assocElement: VizAssociationElement): void {\n const map = this[edgesValue]\n const key = assocElement.dataset.key\n if (!key) {\n return\n }\n if (!map.has(key)) {\n return\n }\n const model = map.get(key) as IWorkspaceEdge\n if (!model.shape.selection) {\n model.shape.selection = {}\n }\n model.shape.selection.secondary = assocElement.hasAttribute('secondary-selected')\n this.workspace.requestUpdate()\n }\n\n /**\n * Removes an association edge from the edges list.\n * @param associationId The domain id of the association\n */\n delete(associationId: string): void {\n const map = this[edgesValue]\n if (!map.has(associationId)) {\n return\n }\n map.delete(associationId)\n this.workspace.requestUpdate()\n }\n\n /**\n * A function that checks whether the associations reported in this class still exist in the workspace.\n */\n syncAssociations(): void {\n const map = this[edgesValue]\n const { workspace } = this\n let updated = false\n map.forEach((model) => {\n const { id, target } = model\n const node = workspace.querySelector(`viz-association[data-key=\"${id}\"]`)\n if (!node) {\n map.delete(id)\n updated = true\n return\n }\n const targetNode = this.findDomainTarget(target)\n if (!targetNode) {\n map.delete(id)\n updated = true\n }\n })\n if (updated) {\n workspace.requestUpdate()\n }\n }\n\n /**\n * Searches the DOM for the domain element that has set the `data-key`.\n * It takes into the account the `data-delegate-visualization` attribute.\n *\n * @param target The domain id of the target.\n * @returns The domain element or null if not found.\n */\n findDomainTarget(target: string): HTMLElement | null {\n const targetElement = this.workspace.querySelector(`[data-key=\"${target}\"]`) as HTMLElement | null\n return targetElement\n }\n\n [processQueueDebouncer]?: number\n\n runProcessingQueue(): void {\n const timeout = this[processQueueDebouncer]\n if (timeout) {\n clearTimeout(timeout)\n }\n this[processQueueDebouncer] = setTimeout(async () => {\n this[processQueueDebouncer] = undefined\n await this.workspace.updateComplete\n this[processQueue].forEach((assoc) => {\n const { target } = assoc.dataset\n if (!target) {\n return\n }\n const targetElement = this.findDomainTarget(target)\n if (!targetElement) {\n return\n }\n this.buildAssociationEdge(assoc, targetElement)\n })\n this[processQueue] = []\n }) as unknown as number\n }\n\n /**\n * Adds an association element to the rendering queue and runs the queue.\n */\n queueAssociation(assoc: VizAssociationElement): void {\n if (this[processQueue].includes(assoc)) {\n return\n }\n this[processQueue].push(assoc)\n this.runProcessingQueue()\n }\n\n // PRIVATE APIS\n\n /**\n * Observe items change in the element's light DOM\n * @returns The observer handler\n */\n [observeItems](): MutationObserver {\n const config = /** @type MutationObserverInit */ {\n attributes: true,\n childList: true,\n subtree: true,\n attributeOldValue: true,\n }\n const observer = new MutationObserver(this[mutationHandler])\n observer.observe(this.workspace, 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 async [mutationHandler](mutationsList: MutationRecord[]): Promise<void> {\n await this.workspace.updateComplete\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 this[processAttributeChanged](mutation)\n }\n }\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 name = typed.localName\n if (name === 'viz-association') {\n this[processAddedAssociation](typed as VizAssociationElement)\n } else {\n this[processAddedNode](typed as HTMLElement)\n }\n const children = typed.querySelectorAll('*')\n this[processAddedNodes](children)\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 name = typed.localName\n if (name === 'viz-association') {\n this[processRemovedAssociation](typed as VizAssociationElement)\n } else {\n this[processRemovedNode](typed as HTMLElement)\n }\n const children = typed.querySelectorAll('*')\n this[processRemovedNodes](children)\n })\n this.syncAssociations()\n }\n\n /**\n * Processes changed attribute on any element in the canvas\n * @param mutation The record associated with the change\n */\n [processAttributeChanged](mutation: MutationRecord): void {\n const att = mutation.attributeName as string\n // console.log(att);\n\n const nodeName = mutation.target.nodeName.toLowerCase()\n const isAssociation = nodeName === 'viz-association'\n\n if (att === 'data-key') {\n if (isAssociation) {\n const typed = mutation.target as VizAssociationElement\n const old = mutation.oldValue\n const id = typed.dataset.id\n if (old && id && this[edgesValue].has(old)) {\n const value = this[edgesValue].get(old) as IWorkspaceEdge\n this[edgesValue].delete(old)\n this[edgesValue].set(id, value)\n } else if (old && this[edgesValue].has(old)) {\n this.removeEdge(old)\n }\n } else {\n const typed = mutation.target as HTMLElement\n this[processAddedNode](typed)\n }\n } else if (isAssociation) {\n const typed = mutation.target as VizAssociationElement\n if (att === 'target') {\n this[processAddedAssociation](typed)\n } else if (['name', 'displayName'].includes(att)) {\n this.updateAssociationLabel(typed)\n } else if (att === 'selected') {\n this.toggleEdgeHighlight(typed)\n } else if (att === 'secondary-selected') {\n this.toggleEdgeSecondaryHighlight(typed)\n } else if (att === 'data-marker-end') {\n this.updateEdgeMarker(typed)\n } else if (att === 'data-style') {\n this.updateEdgeStyles(typed)\n }\n }\n }\n\n /**\n * If the target exists it creates the model of the association\n * and adds it to the associations list.\n * If the target is not set the association is ignored.\n * If the parent has no `data-key` it is ignored.\n * If the target does not exists it is ignored (handled in processAddedNode)\n */\n [processAddedAssociation](node: VizAssociationElement): void {\n const { target, key } = node.dataset\n if (!target) {\n if (key) {\n this.removeEdge(key)\n }\n return\n }\n const targetElement = this.findDomainTarget(target)\n if (!targetElement) {\n if (key) {\n this.removeEdge(key)\n }\n return\n }\n this.queueAssociation(node)\n }\n\n /**\n * If there is an association that corresponds to the `data-key` of the element\n * then it builds the association model.\n */\n [processAddedNode](node: HTMLElement): void {\n const { key } = node.dataset\n if (!key) {\n return\n }\n // first add associations that this node has\n const nodesAssociations = node.querySelectorAll('viz-association')\n Array.from(nodesAssociations).forEach((assocNode) => {\n const typed = assocNode as VizAssociationElement\n if (!typed.dataset.target) {\n return\n }\n const targetElement = this.findDomainTarget(typed.dataset.target)\n if (!targetElement) {\n return\n }\n // this.buildAssociationEdge(typed, targetElement);\n this.queueAssociation(typed)\n })\n\n // then find association to this node.\n const assocElement = this.workspace.querySelector(`viz-association[data-target=\"${key}\"]`) as VizAssociationElement\n if (!assocElement) {\n return\n }\n // this.buildAssociationEdge(assocElement, node);\n this.queueAssociation(assocElement)\n }\n\n /**\n * If the association model exists for this association then it is removed.\n */\n [processRemovedAssociation](node: VizAssociationElement): void {\n const { key } = node.dataset\n if (key) {\n this.delete(key)\n }\n }\n\n /**\n * If the element has an association then this association is removed.\n */\n [processRemovedNode](node: HTMLElement): void {\n // first remove associations that this node has\n const nodesAssociations = node.querySelectorAll('viz-association')\n Array.from(nodesAssociations).forEach((assocNode) => {\n const typed = assocNode as VizAssociationElement\n if (typed.dataset.key) {\n this.delete(typed.dataset.key)\n }\n })\n // them remove association that this node is connected to\n const { key } = node.dataset\n if (!key) {\n return\n }\n const assocElement = this.workspace.querySelector(`viz-association[data-target=\"${key}\"]`) as VizAssociationElement\n if (!assocElement || !assocElement.dataset.key) {\n return\n }\n this.delete(assocElement.dataset.key)\n }\n\n /**\n * Handles selection of an association from the SVG element click.\n */\n [clickHandler](e: PointerEvent): void {\n const typeTarget = this[readEventTarget](e)\n if (!typeTarget) {\n this[deselectAllEdges]()\n return\n }\n const { type, id } = typeTarget.dataset\n if (type === 'association' && id) {\n this[associationClickHandler](id, e.shiftKey)\n }\n }\n\n /**\n * Handles mouse over event on the SVG element\n */\n [mouseOverHandler](e: Event): void {\n const typeTarget = this[readEventTarget](e)\n if (!typeTarget) {\n return\n }\n if (!typeTarget.classList.contains('association-line-area')) {\n return\n }\n const { id } = typeTarget.dataset\n if (!id) {\n return\n }\n const item = this.get(id)\n if (!item) {\n return\n }\n if (item.shape.selection) {\n item.shape.selection.hover = true\n this.workspace.requestUpdate()\n }\n }\n\n /**\n * Handles mouse out event on the SVG element\n */\n [mouseOutHandler](e: Event): void {\n const typeTarget = this[readEventTarget](e)\n if (!typeTarget) {\n return\n }\n if (!typeTarget.classList.contains('association-line-area')) {\n return\n }\n const { id } = typeTarget.dataset\n if (!id) {\n return\n }\n const item = this.get(id)\n if (!item) {\n return\n }\n if (item.shape.selection) {\n item.shape.selection.hover = false\n this.workspace.requestUpdate()\n }\n }\n\n [readEventTarget](e: Event): SVGElement | undefined {\n let typeTarget: SVGElement | undefined\n const path = e.composedPath()\n while (path.length) {\n const item = path.shift() as SVGElement\n if (item.localName === 'svg') {\n break\n }\n if (item.dataset.type && item.dataset.id) {\n typeTarget = item\n break\n }\n }\n return typeTarget\n }\n\n /**\n * Handles the logic when an association visualization was clicked.\n * @param id Association id\n * @param multi Whether multi selection is applied\n */\n [associationClickHandler](id: string, multi = false): void {\n const selectableTarget = this.findDomainTarget(id)\n if (!selectableTarget) {\n return\n }\n const manager = this.workspace.selection\n const isSelected = manager.isSelected(selectableTarget)\n if (isSelected) {\n if (multi) {\n manager.setUnselected(selectableTarget)\n }\n return\n }\n if (!multi) {\n this[deselectAllEdges]()\n manager.deselectAll()\n }\n manager.setSelected(selectableTarget)\n }\n\n /**\n * Removes selection from all associations\n */\n [deselectAllEdges](): void {\n const nodes = this.workspace.querySelectorAll(`viz-association[data-selected]`)\n const manager = this.workspace.selection\n Array.from(nodes).forEach((node) => {\n manager.setUnselected(node)\n })\n const map = this[edgesValue]\n map.forEach((model) => {\n if (!model.shape.selection) {\n model.shape.selection = {}\n }\n model.shape.selection.primary = false\n model.shape.selection.secondary = false\n model.shape.selection.hover = false\n })\n this.workspace.requestUpdate()\n }\n}\n"]}
@@ -1,119 +0,0 @@
1
- import VizWorkspaceElement from '../elements/VizWorkspaceElement.js';
2
- import { TouchMoveResult } from './TouchSupport.js';
3
- declare const xValue: unique symbol;
4
- declare const yValue: unique symbol;
5
- /**
6
- * A class that adds gestures support for the visualization workspace.
7
- * It controls the scrolling of the workspace canvas.
8
- */
9
- export declare class WorkspaceGestures {
10
- workspace: VizWorkspaceElement;
11
- [xValue]?: number;
12
- [yValue]?: number;
13
- /**
14
- * @return value The x-axis position value
15
- */
16
- get left(): number | null;
17
- /**
18
- * @param value The x-axis position value
19
- */
20
- set left(value: number | null);
21
- /**
22
- * @returns value The y-axis position value
23
- */
24
- get top(): number | null;
25
- /**
26
- * @param value The y-axis position value
27
- */
28
- set top(value: number | null);
29
- constructor(workspace: VizWorkspaceElement);
30
- connect(): void;
31
- disconnect(): void;
32
- /**
33
- * An event handler for the mouse wheel action.
34
- * Zooms in/out the workspace.
35
- */
36
- wheelHandler(e: WheelEvent): void;
37
- /**
38
- * Zooms in/out the workspace.
39
- */
40
- handleZoomEvent(e: WheelEvent): void;
41
- updateScale(): void;
42
- /**
43
- * @returns true when there is an element that is draggable in the event's path.
44
- */
45
- hasDraggable(e: TouchEvent): boolean;
46
- touchstartHandler(e: TouchEvent): void;
47
- touchmoveHandler(e: TouchEvent): void;
48
- touchendHandler(e: TouchEvent): void;
49
- /**
50
- * Dispatches the `scroll` event on the workspace.
51
- */
52
- notifyScroll(): void;
53
- /**
54
- * Handles scrolling from a touch event
55
- */
56
- zoomFromTouch(moves: TouchMoveResult[]): Promise<void>;
57
- /**
58
- * Scrolls the current viewport to a given location.
59
- * @param forward Defines whether to scroll forward or backward.
60
- * For the `x` (the `left` value) axis it means going right when true and going left when false.
61
- * For the `y` (the `top` value) axis this means going down when true and up when false.
62
- * @param axis Scroll axis. Either `x` or `y`.
63
- */
64
- scroll(forward: boolean, axis: 'top' | 'left'): void;
65
- /**
66
- * Scrolls the view if the position defined by `x` and `y` arguments requires
67
- * the view to be moved.
68
- *
69
- * @param x The x coordinate of the point
70
- * @param y The y coordinate of the point
71
- * @returns true if the workspace was moved
72
- */
73
- scrollIfNeeded(x: number, y: number): boolean;
74
- /**
75
- * Scrolls the element by the given amount.
76
- * @param xCoordOrOptions The horizontal pixel value that you want to scroll by
77
- * or the scroll options. When passed value is the `ScrollToOptions` interface then
78
- * the second argument is ignored.
79
- * @param yCoord The vertical pixel value that you want to scroll by.
80
- */
81
- scrollBy(xCoordOrOptions: number | ScrollToOptions, yCoord?: number): void;
82
- /**
83
- * Scrolls to a particular set of coordinates inside the element.
84
- *
85
- * @param xCoordOrOptions The pixel along the horizontal axis of the element
86
- * that you want displayed in the upper left. When passed value is the `ScrollToOptions` interface then
87
- * the second argument is ignored.
88
- * @param yCoord The pixel along the vertical axis of the element that you want displayed in the upper left.
89
- */
90
- scrollTo(xCoordOrOptions: number | ScrollToOptions, yCoord?: number): void;
91
- /**
92
- * Scrolls from the event values.
93
- */
94
- scrollFromEvent(e: WheelEvent): void;
95
- /**
96
- * Handles scrolling from a touch event
97
- */
98
- scrollFromTouch(move: TouchMoveResult): void;
99
- /**
100
- * Reads the `x` and `y` point from the parameters that can be just a `xy` pair
101
- * or arguments or a value of the `ScrollToOptions` interface.
102
- *
103
- * @param xCoordOrOptions The horizontal pixel value or the scroll options.
104
- * When passed value is the `ScrollToOptions` interface then the second argument is ignored.
105
- * @param yCoord The vertical pixel value
106
- *
107
- * @returns A point of the X and Y read from the options with default values.
108
- */
109
- getScrollOptionsSafe(xCoordOrOptions: ScrollToOptions | number, yCoord?: number): number[];
110
- /**
111
- * Reads current left and top values and returns the numbers, even when not defined.
112
- *
113
- * @returns A point of the left and top position of the workspace.
114
- */
115
- getXYSafe(): number[];
116
- clickHandler(e: PointerEvent): void;
117
- }
118
- export {};
119
- //# sourceMappingURL=WorkspaceGestures.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WorkspaceGestures.d.ts","sourceRoot":"","sources":["../../../../src/visualization/lib/WorkspaceGestures.ts"],"names":[],"mappings":"AAEA,OAAO,mBAAmB,MAAM,oCAAoC,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAKnD,QAAA,MAAM,MAAM,eAAmB,CAAA;AAC/B,QAAA,MAAM,MAAM,eAAmB,CAAA;AAE/B;;;GAGG;AACH,qBAAa,iBAAiB;IAmDT,SAAS,EAAE,mBAAmB;IAlDjD,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC;IAElB,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,GAAG,IAAI,CAExB;IAED;;OAEG;IACH,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAW5B;IAED;;OAEG;IACH,IAAI,GAAG,IAAI,MAAM,GAAG,IAAI,CAEvB;IAED;;OAEG;IACH,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAW3B;gBAEkB,SAAS,EAAE,mBAAmB;IAWjD,OAAO,IAAI,IAAI;IASf,UAAU,IAAI,IAAI;IASlB;;;OAGG;IACH,YAAY,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IASjC;;OAEG;IACH,eAAe,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IAgCpC,WAAW,IAAI,IAAI;IAOnB;;OAEG;IACH,YAAY,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO;IAkBpC,iBAAiB,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IAOtC,gBAAgB,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IAYrC,eAAe,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IAOpC;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB5D;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI;IAUpD;;;;;;;OAOG;IACH,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IA+B7C;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,eAAe,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAU1E;;;;;;;OAOG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,eAAe,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAO1E;;OAEG;IACH,eAAe,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IAmBpC;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAW5C;;;;;;;;;OASG;IACH,oBAAoB,CAAC,eAAe,EAAE,eAAe,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAgB1F;;;;OAIG;IACH,SAAS,IAAI,MAAM,EAAE;IAWrB,YAAY,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;CAOpC"}
@@ -1,376 +0,0 @@
1
- import * as TouchSupport from './TouchSupport.js';
2
- const scrollSize = 25; // 25
3
- const scaleFactor = 0.03; // 25
4
- const xValue = Symbol('xValue');
5
- const yValue = Symbol('yValue');
6
- /**
7
- * A class that adds gestures support for the visualization workspace.
8
- * It controls the scrolling of the workspace canvas.
9
- */
10
- export class WorkspaceGestures {
11
- workspace;
12
- [xValue];
13
- [yValue];
14
- /**
15
- * @return value The x-axis position value
16
- */
17
- get left() {
18
- return this[xValue] || null;
19
- }
20
- /**
21
- * @param value The x-axis position value
22
- */
23
- set left(value) {
24
- const localValue = Number(value);
25
- if (Number.isNaN(localValue)) {
26
- return;
27
- }
28
- const old = this[xValue];
29
- if (old === localValue) {
30
- return;
31
- }
32
- this[xValue] = localValue;
33
- this.workspace.requestUpdate('scrollLeft', old);
34
- }
35
- /**
36
- * @returns value The y-axis position value
37
- */
38
- get top() {
39
- return this[yValue] || null;
40
- }
41
- /**
42
- * @param value The y-axis position value
43
- */
44
- set top(value) {
45
- const localValue = Number(value);
46
- if (Number.isNaN(localValue)) {
47
- return;
48
- }
49
- const old = this[yValue];
50
- if (old === localValue) {
51
- return;
52
- }
53
- this[yValue] = localValue;
54
- this.workspace.requestUpdate('scrollTop', old);
55
- }
56
- constructor(workspace) {
57
- this.workspace = workspace;
58
- this.workspace = workspace;
59
- this.top = null;
60
- this.left = null;
61
- this.wheelHandler = this.wheelHandler.bind(this);
62
- this.touchstartHandler = this.touchstartHandler.bind(this);
63
- this.touchmoveHandler = this.touchmoveHandler.bind(this);
64
- this.touchendHandler = this.touchendHandler.bind(this);
65
- this.clickHandler = this.clickHandler.bind(this);
66
- }
67
- connect() {
68
- this.workspace.addEventListener('mousewheel', this.wheelHandler, { passive: true });
69
- this.workspace.addEventListener('touchstart', this.touchstartHandler, { capture: false, passive: true });
70
- this.workspace.addEventListener('touchmove', this.touchmoveHandler, { passive: true });
71
- this.workspace.addEventListener('touchend', this.touchendHandler, { capture: false });
72
- this.workspace.addEventListener('touchcancel', this.touchendHandler);
73
- this.workspace.addEventListener('click', this.clickHandler, { capture: false });
74
- }
75
- disconnect() {
76
- this.workspace.removeEventListener('mousewheel', this.wheelHandler);
77
- this.workspace.removeEventListener('touchstart', this.touchstartHandler, { capture: true });
78
- this.workspace.removeEventListener('touchmove', this.touchmoveHandler);
79
- this.workspace.removeEventListener('touchend', this.touchendHandler);
80
- this.workspace.removeEventListener('touchcancel', this.touchendHandler, { capture: false });
81
- this.workspace.removeEventListener('click', this.clickHandler, { capture: false });
82
- }
83
- /**
84
- * An event handler for the mouse wheel action.
85
- * Zooms in/out the workspace.
86
- */
87
- wheelHandler(e) {
88
- // cancelEvent(e);
89
- if (e.ctrlKey || e.metaKey) {
90
- this.handleZoomEvent(e);
91
- }
92
- else {
93
- this.scrollFromEvent(e);
94
- }
95
- }
96
- /**
97
- * Zooms in/out the workspace.
98
- */
99
- handleZoomEvent(e) {
100
- let { scale = 1 } = this.workspace;
101
- let pressure = e.deltaY;
102
- const max = 10;
103
- const mousePressure = 7;
104
- if (pressure < -max) {
105
- pressure = -mousePressure;
106
- }
107
- else if (pressure > max) {
108
- pressure = mousePressure;
109
- }
110
- scale += pressure / 100;
111
- if (scale > 3) {
112
- scale = 3;
113
- }
114
- if (scale < 0.2) {
115
- scale = 0.2;
116
- }
117
- this.workspace.scale = scale;
118
- // const { zoom=0 } = this.workspace;
119
- // const zoomOut = e.deltaY > 0;
120
- // let factor = 1;
121
- // if (zoomOut) {
122
- // factor = -1;
123
- // }
124
- // const value = zoom + factor;
125
- // if (value <= -31) {
126
- // return;
127
- // }
128
- // this.workspace.zoom = zoom + factor;
129
- // this.workspace[notifyZoom]();
130
- }
131
- updateScale() {
132
- const { zoom } = this.workspace;
133
- const scale = 1 + zoom * scaleFactor;
134
- this.workspace.scale = scale;
135
- this.workspace.requestUpdate();
136
- }
137
- /**
138
- * @returns true when there is an element that is draggable in the event's path.
139
- */
140
- hasDraggable(e) {
141
- const path = e.composedPath();
142
- let current = path.shift();
143
- while (current) {
144
- const typedNode = current;
145
- if (typedNode.nodeType !== Node.ELEMENT_NODE) {
146
- current = path.shift();
147
- continue;
148
- }
149
- const element = current;
150
- if (element.draggable) {
151
- return true;
152
- }
153
- current = path.shift();
154
- }
155
- return false;
156
- }
157
- touchstartHandler(e) {
158
- if (this.hasDraggable(e)) {
159
- return;
160
- }
161
- TouchSupport.add(e);
162
- }
163
- touchmoveHandler(e) {
164
- if (this.hasDraggable(e)) {
165
- return;
166
- }
167
- const moves = TouchSupport.move(e);
168
- if (moves.length === 1) {
169
- this.scrollFromTouch(moves[0]);
170
- }
171
- else if (moves.length === 2) {
172
- this.zoomFromTouch(moves);
173
- }
174
- }
175
- touchendHandler(e) {
176
- if (this.hasDraggable(e)) {
177
- return;
178
- }
179
- TouchSupport.end(e);
180
- }
181
- /**
182
- * Dispatches the `scroll` event on the workspace.
183
- */
184
- notifyScroll() {
185
- this.workspace.dispatchEvent(new Event('scroll'));
186
- }
187
- /**
188
- * Handles scrolling from a touch event
189
- */
190
- async zoomFromTouch(moves) {
191
- const [m1, m2] = moves;
192
- const { scale } = this.workspace;
193
- // I needed to come up with a number that would make the move a little bit more natural
194
- // and I came up with this..
195
- const anArbitraryNumber = 300;
196
- if (m1.dy > 0 && m2.dy < 0) {
197
- const factor = m1.dy - m2.dy;
198
- // zoom in
199
- this.workspace.scale = scale + (scale * factor) / anArbitraryNumber;
200
- this.workspace.requestUpdate();
201
- }
202
- else if (m1.dy < 0 && m2.dy > 0) {
203
- // zoom out
204
- const factor = -m1.dy + m2.dy;
205
- this.workspace.scale = scale - (scale * factor) / anArbitraryNumber;
206
- this.workspace.requestUpdate();
207
- }
208
- }
209
- /**
210
- * Scrolls the current viewport to a given location.
211
- * @param forward Defines whether to scroll forward or backward.
212
- * For the `x` (the `left` value) axis it means going right when true and going left when false.
213
- * For the `y` (the `top` value) axis this means going down when true and up when false.
214
- * @param axis Scroll axis. Either `x` or `y`.
215
- */
216
- scroll(forward, axis) {
217
- const { workspace } = this;
218
- const { scale } = workspace;
219
- const value = this[axis] || 0;
220
- const scaledSize = scrollSize / scale;
221
- const newValue = forward ? value - scaledSize : value + scaledSize;
222
- this[axis] = newValue;
223
- this.notifyScroll();
224
- }
225
- /**
226
- * Scrolls the view if the position defined by `x` and `y` arguments requires
227
- * the view to be moved.
228
- *
229
- * @param x The x coordinate of the point
230
- * @param y The y coordinate of the point
231
- * @returns true if the workspace was moved
232
- */
233
- scrollIfNeeded(x, y) {
234
- const { workspace } = this;
235
- const { bottom, top, right, left } = workspace.getBoundingClientRect();
236
- const scrollMargin = 40;
237
- if (y - scrollMargin < top) {
238
- // requires workspace' viewport to scroll up
239
- this.scroll(false, 'top');
240
- this.notifyScroll();
241
- return true;
242
- }
243
- if (y + scrollMargin > bottom) {
244
- // requires workspace' viewport to scroll down
245
- this.scroll(true, 'top');
246
- this.notifyScroll();
247
- return true;
248
- }
249
- if (x - scrollMargin < left) {
250
- // requires workspace' viewport to scroll left
251
- this.scroll(false, 'left');
252
- this.notifyScroll();
253
- return true;
254
- }
255
- if (x + scrollMargin > right) {
256
- // requires workspace' viewport to scroll right
257
- this.scroll(true, 'left');
258
- this.notifyScroll();
259
- return true;
260
- }
261
- return false;
262
- }
263
- /**
264
- * Scrolls the element by the given amount.
265
- * @param xCoordOrOptions The horizontal pixel value that you want to scroll by
266
- * or the scroll options. When passed value is the `ScrollToOptions` interface then
267
- * the second argument is ignored.
268
- * @param yCoord The vertical pixel value that you want to scroll by.
269
- */
270
- scrollBy(xCoordOrOptions, yCoord) {
271
- const [byX, byY] = this.getScrollOptionsSafe(xCoordOrOptions, yCoord);
272
- let [x, y] = this.getXYSafe();
273
- x -= byX;
274
- y -= byY;
275
- this.left = x;
276
- this.top = y;
277
- this.notifyScroll();
278
- }
279
- /**
280
- * Scrolls to a particular set of coordinates inside the element.
281
- *
282
- * @param xCoordOrOptions The pixel along the horizontal axis of the element
283
- * that you want displayed in the upper left. When passed value is the `ScrollToOptions` interface then
284
- * the second argument is ignored.
285
- * @param yCoord The pixel along the vertical axis of the element that you want displayed in the upper left.
286
- */
287
- scrollTo(xCoordOrOptions, yCoord) {
288
- const [x, y] = this.getScrollOptionsSafe(xCoordOrOptions, yCoord);
289
- this.left = x;
290
- this.top = y;
291
- this.notifyScroll();
292
- }
293
- /**
294
- * Scrolls from the event values.
295
- */
296
- scrollFromEvent(e) {
297
- let [x, y] = this.getXYSafe();
298
- const factor = 1 / this.workspace.scale; // 1;
299
- let dx = e.deltaX;
300
- let dy = e.deltaY;
301
- if (e.shiftKey && e.deltaX === 0) {
302
- // Under linux (possibly windows too) when shift is pressed
303
- // then the `e.deltaX` is not populated as it happens on MacOS.
304
- // This sets dx value to the dy and resets dy.
305
- dx = dy;
306
- dy = -0;
307
- }
308
- x -= dx * factor;
309
- y -= dy * factor;
310
- this.left = x;
311
- this.top = y;
312
- this.notifyScroll();
313
- }
314
- /**
315
- * Handles scrolling from a touch event
316
- */
317
- scrollFromTouch(move) {
318
- let [x, y] = this.getXYSafe();
319
- const factor = 1;
320
- const { dx, dy } = move;
321
- x -= dx * factor;
322
- y -= dy * factor;
323
- this.left = x;
324
- this.top = y;
325
- this.notifyScroll();
326
- }
327
- /**
328
- * Reads the `x` and `y` point from the parameters that can be just a `xy` pair
329
- * or arguments or a value of the `ScrollToOptions` interface.
330
- *
331
- * @param xCoordOrOptions The horizontal pixel value or the scroll options.
332
- * When passed value is the `ScrollToOptions` interface then the second argument is ignored.
333
- * @param yCoord The vertical pixel value
334
- *
335
- * @returns A point of the X and Y read from the options with default values.
336
- */
337
- getScrollOptionsSafe(xCoordOrOptions, yCoord) {
338
- const typedX = Number(xCoordOrOptions);
339
- const typedY = Number(yCoord);
340
- let byX;
341
- let byY;
342
- if (Number.isNaN(typedX) && Number.isNaN(typedY)) {
343
- const { top = 0, left = 0 } = xCoordOrOptions;
344
- byX = Number(left);
345
- byY = Number(top);
346
- }
347
- else {
348
- byX = typedX || 0;
349
- byY = typedY || 0;
350
- }
351
- return [byX, byY];
352
- }
353
- /**
354
- * Reads current left and top values and returns the numbers, even when not defined.
355
- *
356
- * @returns A point of the left and top position of the workspace.
357
- */
358
- getXYSafe() {
359
- let { left = 0, top = 0 } = this;
360
- if (left === null) {
361
- left = 0;
362
- }
363
- if (top === null) {
364
- top = 0;
365
- }
366
- return [left, top];
367
- }
368
- clickHandler(e) {
369
- if (e.detail === 3) {
370
- this.workspace.zoom = 0;
371
- this.scrollTo(0, 0);
372
- // this.center();
373
- }
374
- }
375
- }
376
- //# sourceMappingURL=WorkspaceGestures.js.map