windmill-components 1.70.0 → 1.75.0

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 (408) hide show
  1. package/assets/app.css +12 -1
  2. package/components/AppConnect.svelte +4 -3
  3. package/components/DisplayResult.svelte +27 -9
  4. package/components/FieldHeader.svelte +12 -8
  5. package/components/FlowBuilder.svelte +107 -39
  6. package/components/FlowBuilder.svelte.d.ts +5 -0
  7. package/components/FlowGraphViewer.svelte +5 -4
  8. package/components/FlowJobResult.svelte +3 -3
  9. package/components/FlowPreviewContent.svelte +3 -8
  10. package/components/FlowStatusViewer.svelte +21 -8
  11. package/components/GroupEditor.svelte +8 -0
  12. package/components/InputTransformForm.svelte +13 -20
  13. package/components/InputTransformSchemaForm.svelte +103 -0
  14. package/components/InputTransformSchemaForm.svelte.d.ts +24 -0
  15. package/components/LogViewer.svelte +1 -1
  16. package/components/ModulePreview.svelte +3 -2
  17. package/components/Multiselect.svelte +1 -1
  18. package/components/Path.svelte +15 -11
  19. package/components/Popover.svelte +2 -13
  20. package/components/ResourcePicker.svelte +33 -14
  21. package/components/RunChart.svelte +24 -5
  22. package/components/RunForm.svelte +5 -6
  23. package/components/RunForm.svelte.d.ts +1 -0
  24. package/components/SchemaForm.svelte +59 -57
  25. package/components/SchemaForm.svelte.d.ts +0 -5
  26. package/components/ScriptBuilder.svelte +30 -14
  27. package/components/ScriptPicker.svelte +3 -0
  28. package/components/SimpleEditor.svelte +4 -1
  29. package/components/SimpleEditor.svelte.d.ts +2 -0
  30. package/components/Slider.svelte +6 -1
  31. package/components/Slider.svelte.d.ts +1 -0
  32. package/components/TemplateEditor.svelte +1 -1
  33. package/components/TestJobLoader.svelte +2 -2
  34. package/components/Toggle.svelte +17 -4
  35. package/components/Toggle.svelte.d.ts +2 -0
  36. package/components/Tooltip.svelte +1 -1
  37. package/components/UserSettings.svelte +2 -0
  38. package/components/apps/components/buttons/AppButton.svelte +38 -22
  39. package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -0
  40. package/components/apps/components/buttons/AppForm.svelte +16 -6
  41. package/components/apps/components/buttons/AppForm.svelte.d.ts +3 -0
  42. package/components/apps/components/buttons/AppFormButton.svelte +12 -4
  43. package/components/apps/components/buttons/AppFormButton.svelte.d.ts +3 -0
  44. package/components/apps/components/display/AppBarChart.svelte +15 -7
  45. package/components/apps/components/display/AppBarChart.svelte.d.ts +3 -0
  46. package/components/apps/components/display/AppDisplayComponent.svelte +17 -12
  47. package/components/apps/components/display/AppDisplayComponent.svelte.d.ts +1 -0
  48. package/components/apps/components/display/AppHtml.svelte +18 -4
  49. package/components/apps/components/display/AppHtml.svelte.d.ts +3 -0
  50. package/components/apps/components/display/AppIcon.svelte +20 -8
  51. package/components/apps/components/display/AppIcon.svelte.d.ts +3 -0
  52. package/components/apps/components/display/AppImage.svelte +17 -10
  53. package/components/apps/components/display/AppImage.svelte.d.ts +3 -0
  54. package/components/apps/components/display/AppMap.svelte +214 -0
  55. package/components/apps/components/display/AppMap.svelte.d.ts +23 -0
  56. package/components/apps/components/display/AppPdf.svelte +304 -0
  57. package/components/apps/components/display/AppPdf.svelte.d.ts +24 -0
  58. package/components/apps/components/display/AppPieChart.svelte +15 -7
  59. package/components/apps/components/display/AppPieChart.svelte.d.ts +3 -0
  60. package/components/apps/components/display/AppScatterChart.svelte +12 -4
  61. package/components/apps/components/display/AppScatterChart.svelte.d.ts +3 -0
  62. package/components/apps/components/display/AppText.svelte +38 -32
  63. package/components/apps/components/display/AppText.svelte.d.ts +1 -0
  64. package/components/apps/components/display/AppTimeseries.svelte +12 -4
  65. package/components/apps/components/display/AppTimeseries.svelte.d.ts +3 -0
  66. package/components/apps/components/display/PlotlyHtml.svelte +8 -14
  67. package/components/apps/components/display/PlotlyHtml.svelte.d.ts +1 -1
  68. package/components/apps/components/display/VegaLiteHtml.svelte +3 -8
  69. package/components/apps/components/display/VegaLiteHtml.svelte.d.ts +1 -0
  70. package/components/apps/components/display/index.d.ts +3 -0
  71. package/components/apps/components/display/index.js +3 -0
  72. package/components/apps/components/display/table/AppAggridTable.svelte +16 -7
  73. package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +1 -0
  74. package/components/apps/components/display/table/AppTable.svelte +65 -20
  75. package/components/apps/components/display/table/AppTable.svelte.d.ts +3 -1
  76. package/components/apps/components/display/table/AppTableFooter.svelte +8 -1
  77. package/components/apps/components/display/table/AppTableFooter.svelte.d.ts +2 -0
  78. package/components/apps/components/helpers/AlignWrapper.svelte +13 -7
  79. package/components/apps/components/helpers/AlignWrapper.svelte.d.ts +3 -1
  80. package/components/apps/components/helpers/HiddenComponent.svelte +2 -1
  81. package/components/apps/components/helpers/InputValue.svelte +38 -15
  82. package/components/apps/components/helpers/NonRunnableComponent.svelte +18 -3
  83. package/components/apps/components/helpers/NonRunnableComponent.svelte.d.ts +1 -0
  84. package/components/apps/components/helpers/RefreshButton.svelte +1 -1
  85. package/components/apps/components/helpers/ResizeWrapper.svelte +24 -0
  86. package/components/apps/components/helpers/ResizeWrapper.svelte.d.ts +19 -0
  87. package/components/apps/components/helpers/RunnableComponent.svelte +76 -68
  88. package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +3 -1
  89. package/components/apps/components/helpers/RunnableWrapper.svelte +9 -5
  90. package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +3 -1
  91. package/components/apps/components/inputs/AppCheckbox.svelte +8 -2
  92. package/components/apps/components/inputs/AppCheckbox.svelte.d.ts +3 -0
  93. package/components/apps/components/inputs/AppDateInput.svelte +25 -18
  94. package/components/apps/components/inputs/AppDateInput.svelte.d.ts +6 -1
  95. package/components/apps/components/inputs/AppFileInput.svelte +22 -14
  96. package/components/apps/components/inputs/AppFileInput.svelte.d.ts +3 -0
  97. package/components/apps/components/inputs/AppMultiSelect.svelte +82 -0
  98. package/components/apps/components/inputs/AppMultiSelect.svelte.d.ts +27 -0
  99. package/components/apps/components/inputs/AppNumberInput.svelte +20 -16
  100. package/components/apps/components/inputs/AppNumberInput.svelte.d.ts +5 -0
  101. package/components/apps/components/inputs/AppRangeInput.svelte +55 -14
  102. package/components/apps/components/inputs/AppRangeInput.svelte.d.ts +3 -0
  103. package/components/apps/components/inputs/AppSelect.svelte +58 -21
  104. package/components/apps/components/inputs/AppSelect.svelte.d.ts +3 -0
  105. package/components/apps/components/inputs/AppSliderInputs.svelte +41 -9
  106. package/components/apps/components/inputs/AppSliderInputs.svelte.d.ts +3 -0
  107. package/components/apps/components/inputs/AppTextInput.svelte +53 -19
  108. package/components/apps/components/inputs/AppTextInput.svelte.d.ts +6 -0
  109. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +13 -3
  110. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte.d.ts +3 -0
  111. package/components/apps/components/inputs/currency/CurrencyInput.svelte +2 -0
  112. package/components/apps/components/inputs/currency/CurrencyInput.svelte.d.ts +1 -0
  113. package/components/apps/components/layout/AppContainer.svelte +21 -13
  114. package/components/apps/components/layout/AppContainer.svelte.d.ts +3 -0
  115. package/components/apps/components/layout/AppDivider.svelte +24 -4
  116. package/components/apps/components/layout/AppDivider.svelte.d.ts +3 -1
  117. package/components/apps/components/layout/AppDrawer.svelte +89 -0
  118. package/components/apps/components/layout/AppDrawer.svelte.d.ts +24 -0
  119. package/components/apps/components/layout/AppSplitpanes.svelte +88 -0
  120. package/components/apps/components/layout/AppSplitpanes.svelte.d.ts +26 -0
  121. package/components/apps/components/layout/AppTabs.svelte +62 -21
  122. package/components/apps/components/layout/AppTabs.svelte.d.ts +3 -0
  123. package/components/apps/components/layout/index.d.ts +2 -0
  124. package/components/apps/components/layout/index.js +2 -0
  125. package/components/apps/editor/AppEditor.svelte +83 -19
  126. package/components/apps/editor/AppEditor.svelte.d.ts +3 -1
  127. package/components/apps/editor/AppEditorHeader.svelte +107 -32
  128. package/components/apps/editor/AppInputs.svelte +3 -3
  129. package/components/apps/editor/AppPreview.svelte +20 -7
  130. package/components/apps/editor/ComponentHeader.svelte +14 -3
  131. package/components/apps/editor/ComponentHeader.svelte.d.ts +1 -0
  132. package/components/apps/editor/GridEditor.svelte +85 -71
  133. package/components/apps/editor/GridPanel.svelte +29 -0
  134. package/components/apps/editor/GridPanel.svelte.d.ts +18 -0
  135. package/components/apps/editor/RecomputeAllComponents.svelte +8 -6
  136. package/components/apps/editor/SettingsPanel.svelte +14 -24
  137. package/components/apps/editor/SubGridEditor.svelte +46 -18
  138. package/components/apps/editor/SubGridEditor.svelte.d.ts +5 -0
  139. package/components/apps/editor/appUtils.d.ts +12 -2
  140. package/components/apps/editor/appUtils.js +121 -21
  141. package/components/apps/editor/component/Component.svelte +282 -57
  142. package/components/apps/editor/component/Component.svelte.d.ts +3 -1
  143. package/components/apps/editor/component/ComponentNavigation.svelte +125 -0
  144. package/components/apps/editor/component/ComponentNavigation.svelte.d.ts +14 -0
  145. package/components/apps/editor/component/components.d.ts +14 -2
  146. package/components/apps/editor/component/components.js +417 -43
  147. package/components/apps/editor/component/default-codes.js +6 -6
  148. package/components/apps/editor/component/sets.js +11 -3
  149. package/components/apps/editor/componentsPanel/ComponentList.svelte +72 -29
  150. package/components/apps/editor/componentsPanel/CssProperty.svelte +59 -23
  151. package/components/apps/editor/componentsPanel/CssProperty.svelte.d.ts +2 -1
  152. package/components/apps/editor/componentsPanel/CssSettings.svelte +56 -9
  153. package/components/apps/editor/componentsPanel/ListItem.svelte +23 -12
  154. package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +1 -0
  155. package/components/apps/editor/componentsPanel/componentStaticValues.js +14 -2
  156. package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +1 -1
  157. package/components/apps/editor/contextPanel/ContextPanel.svelte +107 -61
  158. package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +13 -3
  159. package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte.d.ts +1 -0
  160. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +63 -25
  161. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +5 -0
  162. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +11 -5
  163. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte.d.ts +1 -0
  164. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +26 -17
  165. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +95 -85
  166. package/components/apps/editor/inlineScriptsPanel/utils.d.ts +5 -9
  167. package/components/apps/editor/inlineScriptsPanel/utils.js +19 -8
  168. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +10 -9
  169. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +21 -12
  170. package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +1 -1
  171. package/components/apps/editor/settingsPanel/ComponentPanel.svelte +95 -56
  172. package/components/apps/editor/settingsPanel/ComponentPanel.svelte.d.ts +1 -0
  173. package/components/apps/editor/settingsPanel/GridPane.svelte +75 -0
  174. package/components/apps/editor/settingsPanel/GridPane.svelte.d.ts +20 -0
  175. package/components/apps/editor/settingsPanel/GridTab.svelte +5 -5
  176. package/components/apps/editor/settingsPanel/GridTab.svelte.d.ts +2 -0
  177. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +2 -1
  178. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +1 -1
  179. package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte +13 -6
  180. package/components/apps/editor/settingsPanel/Recompute.svelte +1 -1
  181. package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +1 -1
  182. package/components/apps/editor/settingsPanel/TableActions.svelte +28 -1
  183. package/components/apps/editor/settingsPanel/common/PanelSection.svelte +2 -2
  184. package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte +48 -0
  185. package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte.d.ts +19 -0
  186. package/components/apps/editor/settingsPanel/inputEditor/ConnectedInputEditor.svelte +1 -1
  187. package/components/apps/editor/settingsPanel/inputEditor/EvalInputEditor.svelte +1 -1
  188. package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +27 -3
  189. package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte.d.ts +2 -0
  190. package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte +2 -2
  191. package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte.d.ts +2 -1
  192. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +54 -6
  193. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +1 -0
  194. package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte +7 -9
  195. package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte.d.ts +1 -1
  196. package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte +1 -0
  197. package/components/apps/editor/settingsPanel/mainInput/InlineScriptList.svelte.d.ts +1 -0
  198. package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +1 -1
  199. package/components/apps/inputType.d.ts +6 -5
  200. package/components/apps/rx.js +2 -1
  201. package/components/apps/store.d.ts +6 -1
  202. package/components/apps/types.d.ts +14 -4
  203. package/components/apps/utils.d.ts +2 -2
  204. package/components/apps/utils.js +21 -49
  205. package/components/common/button/ButtonPopup.svelte +2 -0
  206. package/components/common/button/ButtonPopup.svelte.d.ts +1 -0
  207. package/components/common/button/UndoRedo.svelte +32 -0
  208. package/components/common/button/UndoRedo.svelte.d.ts +20 -0
  209. package/components/common/drawer/Drawer.svelte +10 -4
  210. package/components/common/drawer/Drawer.svelte.d.ts +3 -1
  211. package/components/common/drawer/DrawerContent.svelte +0 -1
  212. package/components/common/fileInput/FileInput.svelte +47 -21
  213. package/components/common/fileInput/FileInput.svelte.d.ts +3 -1
  214. package/components/common/fileInput/model.d.ts +1 -0
  215. package/components/common/fileInput/model.js +1 -0
  216. package/components/common/index.d.ts +1 -0
  217. package/components/common/index.js +1 -0
  218. package/components/common/menu/Menu.svelte +3 -2
  219. package/components/common/menu/Menu.svelte.d.ts +2 -1
  220. package/components/common/modal/Modal.svelte +9 -4
  221. package/components/common/modal/Modal.svelte.d.ts +2 -0
  222. package/components/common/table/AppRow.svelte +13 -4
  223. package/components/common/table/AppRow.svelte.d.ts +1 -0
  224. package/components/common/table/FlowRow.svelte +21 -8
  225. package/components/common/table/FlowRow.svelte.d.ts +1 -0
  226. package/components/common/table/ScriptRow.svelte +42 -10
  227. package/components/common/table/ScriptRow.svelte.d.ts +1 -0
  228. package/components/common/tabs/Tab.svelte +12 -5
  229. package/components/common/tabs/Tab.svelte.d.ts +4 -1
  230. package/components/common/tabs/Tabs.svelte +8 -6
  231. package/components/common/tabs/Tabs.svelte.d.ts +3 -1
  232. package/components/flows/FlowEditor.svelte +6 -4
  233. package/components/flows/common/FlowCardHeader.svelte +4 -1
  234. package/components/flows/content/BranchPredicateEditor.svelte +3 -4
  235. package/components/flows/content/CapturePayload.svelte +1 -2
  236. package/components/flows/content/FlowBranchesAllWrapper.svelte +1 -1
  237. package/components/flows/content/FlowConstants.svelte +7 -13
  238. package/components/flows/content/FlowEditorPanel.svelte +4 -3
  239. package/components/flows/content/FlowFailureModule.svelte +2 -1
  240. package/components/flows/content/FlowInput.svelte +4 -2
  241. package/components/flows/content/FlowLoop.svelte +3 -4
  242. package/components/flows/content/FlowModuleComponent.svelte +23 -11
  243. package/components/flows/content/FlowModuleEarlyStop.svelte +3 -1
  244. package/components/flows/content/FlowModuleHeader.svelte +26 -3
  245. package/components/flows/content/FlowModuleHeader.svelte.d.ts +1 -0
  246. package/components/flows/content/FlowModuleSleep.svelte +2 -2
  247. package/components/flows/content/FlowModuleWrapper.svelte +2 -8
  248. package/components/flows/content/FlowSchedules.svelte +1 -2
  249. package/components/flows/content/FlowSettings.svelte +17 -37
  250. package/components/flows/content/ScriptEditorDrawer.svelte +98 -0
  251. package/components/flows/content/ScriptEditorDrawer.svelte.d.ts +19 -0
  252. package/components/flows/flowState.d.ts +2 -3
  253. package/components/flows/flowState.js +1 -4
  254. package/components/flows/flowStateUtils.d.ts +7 -6
  255. package/components/flows/flowStateUtils.js +5 -9
  256. package/components/flows/flowStore.d.ts +5 -4
  257. package/components/flows/flowStore.js +5 -17
  258. package/components/flows/header/FlowImportExportMenu.svelte +2 -1
  259. package/components/flows/map/FlowConstantsItem.svelte +2 -2
  260. package/components/flows/map/FlowErrorHandlerItem.svelte +12 -13
  261. package/components/flows/map/FlowInputsItem.svelte +2 -3
  262. package/components/flows/map/FlowModuleSchemaItem.svelte +88 -91
  263. package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +3 -3
  264. package/components/flows/map/FlowModuleSchemaMap.svelte +164 -138
  265. package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -2
  266. package/components/flows/map/FlowSettingsItem.svelte +5 -4
  267. package/components/flows/map/InsertModuleButton.svelte +12 -10
  268. package/components/flows/map/InsertModuleButton.svelte.d.ts +1 -0
  269. package/components/flows/map/MapItem.svelte +176 -103
  270. package/components/flows/map/MapItem.svelte.d.ts +20 -2
  271. package/components/flows/map/VirtualItem.svelte +129 -0
  272. package/components/flows/map/VirtualItem.svelte.d.ts +44 -0
  273. package/components/flows/pickers/WorkspaceScriptPicker.svelte +1 -1
  274. package/components/flows/previousResults.d.ts +1 -1
  275. package/components/flows/previousResults.js +32 -17
  276. package/components/flows/types.d.ts +13 -1
  277. package/components/flows/utils.js +1 -1
  278. package/components/graph/FlowGraph.svelte +227 -167
  279. package/components/graph/FlowGraph.svelte.d.ts +14 -1
  280. package/components/graph/model.d.ts +6 -36
  281. package/components/graph/model.js +1 -1
  282. package/components/graph/svelvet/LICENSE +21 -0
  283. package/components/graph/svelvet/collapsible/controllers/util.d.ts +15 -0
  284. package/components/graph/svelvet/collapsible/controllers/util.js +144 -0
  285. package/components/graph/svelvet/collapsible/models/Collapsible.d.ts +17 -0
  286. package/components/graph/svelvet/collapsible/models/Collapsible.js +25 -0
  287. package/components/graph/svelvet/collapsible/types/types.d.ts +8 -0
  288. package/components/graph/svelvet/collapsible/types/types.js +1 -0
  289. package/components/graph/svelvet/container/README.md +7 -0
  290. package/components/graph/svelvet/container/controllers/middleware.d.ts +18 -0
  291. package/components/graph/svelvet/container/controllers/middleware.js +101 -0
  292. package/components/graph/svelvet/container/views/GraphView.svelte +252 -0
  293. package/components/graph/svelvet/container/views/GraphView.svelte.d.ts +25 -0
  294. package/components/graph/svelvet/container/views/Svelvet.svelte +131 -0
  295. package/components/graph/svelvet/container/views/Svelvet.svelte.d.ts +41 -0
  296. package/components/graph/svelvet/customCss/controllers/getCss.d.ts +2 -0
  297. package/components/graph/svelvet/customCss/controllers/getCss.js +57 -0
  298. package/components/graph/svelvet/d3/controllers/README.md +3 -0
  299. package/components/graph/svelvet/d3/controllers/d3.d.ts +5 -0
  300. package/components/graph/svelvet/d3/controllers/d3.js +59 -0
  301. package/components/graph/svelvet/d3/controllers/d3Old.d.ts +1 -0
  302. package/components/graph/svelvet/d3/controllers/d3Old.js +43 -0
  303. package/components/graph/svelvet/docs/CHANGELOG.md +145 -0
  304. package/components/graph/svelvet/docs/DESIGN_PATTERNS.md +44 -0
  305. package/components/graph/svelvet/docs/DOCUMENTATION.md +5 -0
  306. package/components/graph/svelvet/docs/README.md +34 -0
  307. package/components/graph/svelvet/docs/TODO.md +14 -0
  308. package/components/graph/svelvet/docs/Tutorials.md +25 -0
  309. package/components/graph/svelvet/docs/images/css-background-after.png +0 -0
  310. package/components/graph/svelvet/docs/images/css-background-before.png +0 -0
  311. package/components/graph/svelvet/docs/images/custom-edges-after.png +0 -0
  312. package/components/graph/svelvet/docs/images/custom-edges-before.png +0 -0
  313. package/components/graph/svelvet/docs/images/custom-nodes-after.png +0 -0
  314. package/components/graph/svelvet/docs/images/custom-nodes-before.png +0 -0
  315. package/components/graph/svelvet/docs/images/custom-svelte-components-after.png +0 -0
  316. package/components/graph/svelvet/docs/images/custom-svelte-components-before.png +0 -0
  317. package/components/graph/svelvet/docs/images/html-docs-after.png +0 -0
  318. package/components/graph/svelvet/docs/images/html-docs-before.png +0 -0
  319. package/components/graph/svelvet/docs/images/minimap-after.png +0 -0
  320. package/components/graph/svelvet/docs/images/minimap-before.png +0 -0
  321. package/components/graph/svelvet/docs/images/node-classes-after.png +0 -0
  322. package/components/graph/svelvet/docs/images/node-classes-before.png +0 -0
  323. package/components/graph/svelvet/docs/images/node-create-after.png +0 -0
  324. package/components/graph/svelvet/docs/images/node-create-before.png +0 -0
  325. package/components/graph/svelvet/edges/controllers/anchorCbDev.d.ts +4 -0
  326. package/components/graph/svelvet/edges/controllers/anchorCbDev.js +92 -0
  327. package/components/graph/svelvet/edges/controllers/anchorCbUser.d.ts +57 -0
  328. package/components/graph/svelvet/edges/controllers/anchorCbUser.js +73 -0
  329. package/components/graph/svelvet/edges/controllers/util.d.ts +37 -0
  330. package/components/graph/svelvet/edges/controllers/util.js +72 -0
  331. package/components/graph/svelvet/edges/models/Anchor.d.ts +48 -0
  332. package/components/graph/svelvet/edges/models/Anchor.js +122 -0
  333. package/components/graph/svelvet/edges/models/Edge.d.ts +47 -0
  334. package/components/graph/svelvet/edges/models/Edge.js +107 -0
  335. package/components/graph/svelvet/edges/types/types.d.ts +18 -0
  336. package/components/graph/svelvet/edges/types/types.js +1 -0
  337. package/components/graph/svelvet/edges/views/Edges/BaseEdge.svelte +105 -0
  338. package/components/graph/svelvet/edges/views/Edges/BaseEdge.svelte.d.ts +18 -0
  339. package/components/graph/svelvet/edges/views/Edges/EdgeAnchor.svelte +12 -0
  340. package/components/graph/svelvet/edges/views/Edges/EdgeAnchor.svelte.d.ts +17 -0
  341. package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte +43 -0
  342. package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte.d.ts +17 -0
  343. package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte +137 -0
  344. package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte.d.ts +17 -0
  345. package/components/graph/svelvet/edges/views/Edges/SmoothStepEdge.svelte +176 -0
  346. package/components/graph/svelvet/edges/views/Edges/SmoothStepEdge.svelte.d.ts +60 -0
  347. package/components/graph/svelvet/edges/views/Edges/StepEdge.svelte +8 -0
  348. package/components/graph/svelvet/edges/views/Edges/StepEdge.svelte.d.ts +25 -0
  349. package/components/graph/svelvet/edges/views/Edges/types.d.ts +52 -0
  350. package/components/graph/svelvet/edges/views/Edges/types.js +1 -0
  351. package/components/graph/svelvet/edges/views/Edges/utils.d.ts +33 -0
  352. package/components/graph/svelvet/edges/views/Edges/utils.js +31 -0
  353. package/components/graph/svelvet/editEdges/views/EditEdge.svelte +151 -0
  354. package/components/graph/svelvet/editEdges/views/EditEdge.svelte.d.ts +20 -0
  355. package/components/graph/svelvet/nodes/controllers/util.d.ts +9 -0
  356. package/components/graph/svelvet/nodes/controllers/util.js +13 -0
  357. package/components/graph/svelvet/nodes/models/Node.d.ts +78 -0
  358. package/components/graph/svelvet/nodes/models/Node.js +195 -0
  359. package/components/graph/svelvet/nodes/views/EditNode.svelte +147 -0
  360. package/components/graph/svelvet/nodes/views/EditNode.svelte.d.ts +33 -0
  361. package/components/graph/svelvet/nodes/views/Node.svelte +85 -0
  362. package/components/graph/svelvet/nodes/views/Node.svelte.d.ts +22 -0
  363. package/components/graph/svelvet/resizableNodes/controllers/util.d.ts +11 -0
  364. package/components/graph/svelvet/resizableNodes/controllers/util.js +24 -0
  365. package/components/graph/svelvet/resizableNodes/models/ResizeNode.d.ts +33 -0
  366. package/components/graph/svelvet/resizableNodes/models/ResizeNode.js +71 -0
  367. package/components/graph/svelvet/resizableNodes/views/ResizeNode.svelte +81 -0
  368. package/components/graph/svelvet/resizableNodes/views/ResizeNode.svelte.d.ts +20 -0
  369. package/components/graph/svelvet/store/controllers/storeApi.d.ts +32 -0
  370. package/components/graph/svelvet/store/controllers/storeApi.js +111 -0
  371. package/components/graph/svelvet/store/controllers/userApi.d.ts +3 -0
  372. package/components/graph/svelvet/store/controllers/userApi.js +18 -0
  373. package/components/graph/svelvet/store/controllers/util.d.ts +31 -0
  374. package/components/graph/svelvet/store/controllers/util.js +180 -0
  375. package/components/graph/svelvet/store/models/store.d.ts +12 -0
  376. package/components/graph/svelvet/store/models/store.js +9 -0
  377. package/components/graph/svelvet/store/types/types.d.ts +134 -0
  378. package/components/graph/svelvet/store/types/types.js +1 -0
  379. package/components/graph/svelvet/types/README.md +3 -0
  380. package/components/graph/svelvet/types/index.d.ts +2 -0
  381. package/components/graph/svelvet/types/index.js +1 -0
  382. package/components/graph/svelvet/types/types.d.ts +49 -0
  383. package/components/graph/svelvet/types/types.js +18 -0
  384. package/components/graph/util.js +2 -2
  385. package/components/home/ItemsList.svelte +53 -5
  386. package/components/home/ItemsList.svelte.d.ts +1 -0
  387. package/components/home/ListFilters.svelte +7 -2
  388. package/components/jobs/JobDetail.svelte +12 -1
  389. package/components/propertyPicker/ObjectViewer.svelte +6 -4
  390. package/consts.d.ts +1 -0
  391. package/consts.js +1 -0
  392. package/defaults.d.ts +4 -0
  393. package/defaults.js +4 -0
  394. package/history.d.ts +9 -0
  395. package/history.js +56 -0
  396. package/package.json +92 -8
  397. package/script_helpers.d.ts +1 -1
  398. package/script_helpers.js +1 -0
  399. package/scripts.d.ts +1 -1
  400. package/scripts.js +8 -1
  401. package/utils.d.ts +9 -4
  402. package/utils.js +44 -8
  403. package/components/apps/editor/TablePanel.svelte +0 -19
  404. package/components/apps/editor/TablePanel.svelte.d.ts +0 -17
  405. package/components/flows/map/FlowBranchAllMap.svelte +0 -100
  406. package/components/flows/map/FlowBranchAllMap.svelte.d.ts +0 -17
  407. package/components/flows/map/FlowBranchOneMap.svelte +0 -124
  408. package/components/flows/map/FlowBranchOneMap.svelte.d.ts +0 -17
@@ -0,0 +1,81 @@
1
+ <script>import { findStore } from '../../store/controllers/storeApi';
2
+ import { writable, derived, get, readable } from 'svelte/store';
3
+ export let resizeId;
4
+ export let canvasId;
5
+ const store = findStore(canvasId);
6
+ const { resizeNodesStore, nodeSelected } = store;
7
+ let isSelected = false;
8
+ let reactResizeNode;
9
+ $: reactResizeNode = $resizeNodesStore[resizeId];
10
+ </script>
11
+
12
+ <svelte:window
13
+ on:mousemove={(e) => {
14
+ e.preventDefault();
15
+ if (isSelected) {
16
+ resizeNodesStore.update((resNode) => {
17
+ const newResNode = resNode[resizeId];
18
+ const d3Scale = get(store.d3Scale);
19
+ newResNode.setPositionAndCascade(
20
+ e.movementX / d3Scale,
21
+ e.movementY / d3Scale,
22
+ resizeId
23
+ );
24
+ return { ...resNode };
25
+ });
26
+ }
27
+ }}
28
+ on:mouseup={(e) => {
29
+ e.preventDefault();
30
+ // don't need to set $nodeSelected = false because Node component will do it for you
31
+ isSelected = false;
32
+ }}
33
+ />
34
+
35
+ <div
36
+ on:mousedown={(e) => {
37
+ e.preventDefault();
38
+ $nodeSelected = true;
39
+ isSelected = true;
40
+ }}
41
+ on:mouseover={(e) => ($nodeSelected = true)}
42
+ on:focus
43
+ on:mouseleave={(e) => ($nodeSelected = false)}
44
+ on:mouseenter={(e) => ($nodeSelected = true)}
45
+ on:wheel|preventDefault
46
+ class="ResizeNode"
47
+ style="
48
+ left: {reactResizeNode.positionX - 10}px;
49
+ top: {reactResizeNode.positionY - 10}px;
50
+ width: {20}px;
51
+ height: {20}px;
52
+ background-color: purple;
53
+ border-color: purple;
54
+ border-radius: 50%;"
55
+ id="svelvet-{resizeId}"
56
+ />
57
+
58
+ <style>
59
+ .ResizeNode {
60
+ position: absolute;
61
+ display: grid;
62
+ -webkit-user-select: none;
63
+ -moz-user-select: none;
64
+ user-select: none;
65
+ cursor: move;
66
+ justify-content: center;
67
+ overscroll-behavior: auto;
68
+ align-items: center;
69
+ font-size: 14px;
70
+ text-align: center;
71
+ border: solid 1px black;
72
+ border-radius: 5px;
73
+ box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.2);
74
+ opacity: 0;
75
+ pointer-events: auto; /* this is needed for pointer events to work since we disable them in graphview */
76
+ }
77
+
78
+ .ResizeNode:hover {
79
+ cursor: nwse-resize;
80
+ opacity: 0.5;
81
+ }</style>
@@ -0,0 +1,20 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ resizeId: string;
5
+ canvasId: string;
6
+ };
7
+ events: {
8
+ focus: FocusEvent;
9
+ wheel: WheelEvent;
10
+ } & {
11
+ [evt: string]: CustomEvent<any>;
12
+ };
13
+ slots: {};
14
+ };
15
+ export type ResizeNodeProps = typeof __propDef.props;
16
+ export type ResizeNodeEvents = typeof __propDef.events;
17
+ export type ResizeNodeSlots = typeof __propDef.slots;
18
+ export default class ResizeNode extends SvelteComponentTyped<ResizeNodeProps, ResizeNodeEvents, ResizeNodeSlots> {
19
+ }
20
+ export {};
@@ -0,0 +1,32 @@
1
+ import type { StoreType } from '../types/types';
2
+ import type { UserNodeType, UserEdgeType } from '../../types/types';
3
+ /**
4
+ * findStore is going to return the target Svelvet store with the canvasId provided as argument.
5
+ * There can be multiple Svelvet canvases on the same page, and each has their own store with a unique canvasId.
6
+ * @param canvasId The canvasId of a Svelvet component
7
+ * @returns The store of a Svelvet component that matches the canvasId
8
+ */
9
+ export declare function findStore(canvasId: string): StoreType;
10
+ /**
11
+ * createStoreEmpty will initialize a new Svelvet store with a unique canvasId.
12
+ * If you have multiple Svelvet components on the page, the stores object will look like the following example:
13
+ * const stores = \{
14
+ * canvasId-1: store of Svelvet component 1,
15
+ * canvasId-2: store of Svelvet component 2,
16
+ * canvasId-3: store of Svelvet component 3,
17
+ * \}
18
+ * Notes: This should be called once every time you initialize a new Svelvet canvas, (ie, only in the Svelvet.svelte file).
19
+ * This function will initialize an empty store for the Svelvet component and should be followed by invoking populateSvelvetStoreFromUserInput to populate all the initial state from the user input.
20
+ *
21
+ * @param canvasId The canvasId of the newly created Svelvet component
22
+ * @returns An empty store for the newly created Svelvet component.
23
+ */
24
+ export declare function createStoreEmpty(canvasId: string): StoreType;
25
+ /**
26
+ * populateSvelvetStoreFromUserInput will populate all the states and set these states into the Svelvet store initialized by invoking createStoreEmpty
27
+ *
28
+ * @param canvasId The canvasId of the Svelvet component you are creating a store for
29
+ * @param nodes This is an array of objects containing node info that is defined by the user. NOTE THAT THE STRUCTURE DIFFERS FROM THE NODES CLASS. The whole point of populateSvelvetStoreFromUserInput is to convert nodes into proper Svelvet Node objects. An example of nodes is in $routes/testingplayground/index.svelte
30
+ * @param edges Same as nodes, this is an array of objects containing edge info THAT IS DIFFERENT FROM THE EDGE CLASS.
31
+ */
32
+ export declare function populateSvelvetStoreFromUserInput(canvasId: string, nodes: UserNodeType[], edges: UserEdgeType[]): void;
@@ -0,0 +1,111 @@
1
+ /*
2
+
3
+
4
+ Important functions (in order of how likely I think you are to use them):
5
+
6
+ findStore(canvasId: string)
7
+ - Input: canvasId. There can be multiple Svelvet canvases on the same page, and each has their own store
8
+ - Returns: store
9
+ - Notes: You will need to call this function on every component you make
10
+
11
+ getNodes(store, filter)
12
+ - Description: this function returns of list of Node objects
13
+ - Input: store: the store where you get the list of Node objects from
14
+ - filter: an object where you can filter the array. For example, if you want to find nodes with an id of 'sdf-2d3fs' and positionX=35, then you
15
+ would set filter = {id: 'sdf-2d3fs, positionX: 35}.
16
+ Right now, you can only test for equality.
17
+ - Notes: This is a very mongoose way of retrieving information. Given the relational nature of our stores, maybe it would be better to use an SQL-like syntax
18
+ This array is non-reactive (ie, you cannot use information from this array to force a re-render of a Svelte component)
19
+
20
+ createStoreEmpty(canvasId: string)
21
+ - Input: canvasId.
22
+ - Returns: store
23
+ - Notes. This should be called once every time you initialize a new Svelvet canvas, (ie, only in the Svelvet.svelte file)
24
+
25
+ populateSvelvetStoreFromUserInput(canvasId, nodes, edges)
26
+ - canvasId: this the the canvasId of the Svelvet component you are creating a store for
27
+ - nodes: this is an array of objects containing node info that is defined by the user. NOTE THAT THE STRUCTURE DIFFERS FROM THE NODES CLASS
28
+ The whole point of populateSvelvetStoreFromUserInput is to convert nodes into proper Svelvet Node objects. An example of nodes is in
29
+ $routes/testingplayground/index.svelte
30
+ - edges: same as nodes, this is an array of objects containing edge info THAT IS DIFFERENT FROM THE EDGE CLASS.
31
+ - Returns: store
32
+ */
33
+ import { stores } from '../models/store';
34
+ import { writable, get } from 'svelte/store';
35
+ import { populateAnchorsStore, populateNodesStore, populateEdgesStore, populateResizeNodeStore, } from './util';
36
+ import { populateCollapsibleStore } from '../../collapsible/controllers/util';
37
+ /**
38
+ * findStore is going to return the target Svelvet store with the canvasId provided as argument.
39
+ * There can be multiple Svelvet canvases on the same page, and each has their own store with a unique canvasId.
40
+ * @param canvasId The canvasId of a Svelvet component
41
+ * @returns The store of a Svelvet component that matches the canvasId
42
+ */
43
+ export function findStore(canvasId) {
44
+ return stores[canvasId];
45
+ }
46
+ /**
47
+ * createStoreEmpty will initialize a new Svelvet store with a unique canvasId.
48
+ * If you have multiple Svelvet components on the page, the stores object will look like the following example:
49
+ * const stores = \{
50
+ * canvasId-1: store of Svelvet component 1,
51
+ * canvasId-2: store of Svelvet component 2,
52
+ * canvasId-3: store of Svelvet component 3,
53
+ * \}
54
+ * Notes: This should be called once every time you initialize a new Svelvet canvas, (ie, only in the Svelvet.svelte file).
55
+ * This function will initialize an empty store for the Svelvet component and should be followed by invoking populateSvelvetStoreFromUserInput to populate all the initial state from the user input.
56
+ *
57
+ * @param canvasId The canvasId of the newly created Svelvet component
58
+ * @returns An empty store for the newly created Svelvet component.
59
+ */
60
+ export function createStoreEmpty(canvasId) {
61
+ stores[canvasId] = {
62
+ nodesStore: writable({}),
63
+ edgesStore: writable({}),
64
+ anchorsStore: writable({}),
65
+ resizeNodesStore: writable({}),
66
+ potentialAnchorsStore: writable({}),
67
+ widthStore: writable(600),
68
+ heightStore: writable(600),
69
+ backgroundStore: writable(false),
70
+ movementStore: writable(true),
71
+ nodeSelected: writable(false),
72
+ nodeIdSelected: writable(-1),
73
+ d3Scale: writable(1),
74
+ options: writable({}),
75
+ temporaryEdgeStore: writable([]),
76
+ nodeCreate: writable(false),
77
+ boundary: writable(false),
78
+ edgeEditModal: writable(null),
79
+ collapsibleStore: writable([]),
80
+ collapsibleOption: writable(false),
81
+ lockedOption: writable(false),
82
+ editableOption: writable(false),
83
+ d3ZoomParameters: writable({}),
84
+ resizableOption: writable(true),
85
+ highlightEdgesOption: writable(true), // option to turn on/off highlightable edges
86
+ };
87
+ return stores[canvasId];
88
+ }
89
+ /**
90
+ * populateSvelvetStoreFromUserInput will populate all the states and set these states into the Svelvet store initialized by invoking createStoreEmpty
91
+ *
92
+ * @param canvasId The canvasId of the Svelvet component you are creating a store for
93
+ * @param nodes This is an array of objects containing node info that is defined by the user. NOTE THAT THE STRUCTURE DIFFERS FROM THE NODES CLASS. The whole point of populateSvelvetStoreFromUserInput is to convert nodes into proper Svelvet Node objects. An example of nodes is in $routes/testingplayground/index.svelte
94
+ * @param edges Same as nodes, this is an array of objects containing edge info THAT IS DIFFERENT FROM THE EDGE CLASS.
95
+ */
96
+ export function populateSvelvetStoreFromUserInput(canvasId, nodes, edges) {
97
+ // find the store
98
+ const store = findStore(canvasId);
99
+ // populate store.nodesStore with user nodes
100
+ populateNodesStore(store, nodes, canvasId);
101
+ // populate store.anchorsStore with anchors. Note the userdoes not explictly define anchors; anchors are calculated from the edges
102
+ populateAnchorsStore(store, nodes, edges, canvasId);
103
+ // populate edges
104
+ populateEdgesStore(store, edges, canvasId);
105
+ //populate resize Store
106
+ if (get(store.resizableOption))
107
+ populateResizeNodeStore(store, nodes, canvasId);
108
+ // populatate collapsible objects if "collapsible" feature is turned on
109
+ if (get(store.collapsibleOption))
110
+ populateCollapsibleStore(store, nodes, edges, canvasId);
111
+ }
@@ -0,0 +1,3 @@
1
+ export declare function getD3PositionX(canvasId: any): number;
2
+ export declare function getD3PositionY(canvasId: any): number;
3
+ export declare function getD3Zoom(canvasId: any): number;
@@ -0,0 +1,18 @@
1
+ import { findStore } from './storeApi';
2
+ import { get } from 'svelte/store';
3
+ export function getD3PositionX(canvasId) {
4
+ const store = findStore(canvasId);
5
+ const width = get(store.widthStore);
6
+ const x = width / 2 - get(store.d3ZoomParameters).x; // user input is shifted so that x=0, y=0 occurs in the center
7
+ return x;
8
+ }
9
+ export function getD3PositionY(canvasId) {
10
+ const store = findStore(canvasId);
11
+ const height = get(store.heightStore);
12
+ const y = height / 2 - get(store.d3ZoomParameters).y; // user input is shifted so that x=0, y=0 occurs in the center
13
+ return y;
14
+ }
15
+ export function getD3Zoom(canvasId) {
16
+ const store = findStore(canvasId);
17
+ return get(store.d3ZoomParameters).k;
18
+ }
@@ -0,0 +1,31 @@
1
+ import type { StoreType } from '../types/types';
2
+ import type { UserNodeType, UserEdgeType } from '../../types/types';
3
+ /**
4
+ * Populates edgesStore of Edges. This function does not return the edgesStore. Instead it sets the nodesStore of Svelvet store.
5
+ * @param store An object containing the state of the Svelvet component. You can access the following through `store`: nodesStore, edgesStore, anchorsStore, etc.
6
+ * @param edges An edge that the user specifies. This is NOT the same as a Edge object.
7
+ * @param canvasId The canvasId of the Svelvet component that holds the Edges
8
+ */
9
+ export declare function populateEdgesStore(store: StoreType, edges: UserEdgeType[], canvasId: string): void;
10
+ /**
11
+ * Populates the anchorsStore. This will overwrite any data in the AnchorsStore.
12
+ * @param store The Svelvet store containing the state of the Svelvet component
13
+ * @param nodes An array of user specified nodes
14
+ * @param edges An array of user specified edges
15
+ * @param canvasId The canvasId of the Svelvet component that holds the nodes and edges
16
+ */
17
+ export declare function populateAnchorsStore(store: StoreType, nodes: UserNodeType[], edges: UserEdgeType[], canvasId: string): void;
18
+ /**
19
+ * Populates the nodesStore. This will overwrite any data in the nodesStore.
20
+ * @param store The Svelvet store containing the state of the Svelvet component
21
+ * @param nodes An array of user specifed nodes
22
+ * @param canvasId The canvasId of the Svelvet component that holds the nodes
23
+ */
24
+ export declare function populateNodesStore(store: StoreType, nodes: UserNodeType[], canvasId: string): void;
25
+ /**
26
+ * Populates the resizeNodeStore. If a Node is resizable, a small ResizeNode object is going to be attached to the Node's right bottom corner to react to the mouse drag.
27
+ * @param store The Svelvet store containing the state of the Svelvet component
28
+ * @param nodes An array of user specifed nodes (NOT the same as Node)
29
+ * @param canvasId The canvasId of the Svelvet component that holds the resizeNodes
30
+ */
31
+ export declare function populateResizeNodeStore(store: StoreType, nodes: UserNodeType[], canvasId: string): void;
@@ -0,0 +1,180 @@
1
+ const pkStringGenerator = () => (Math.random() + 1).toString(36).substring(7);
2
+ import { rightCb, leftCb, topCb, bottomCb, } from '../../edges/controllers/anchorCbUser'; // these are callbacks used to calculate anchor position relative to node
3
+ import { dynamicCbCreator, fixedCbCreator, } from '../../edges/controllers/anchorCbDev';
4
+ import { ResizeNode } from '../../resizableNodes/models/ResizeNode';
5
+ import { Anchor } from '../../edges/models/Anchor';
6
+ import { Node } from '../../nodes/models/Node';
7
+ import { Edge } from '../../edges/models/Edge';
8
+ import { writable, derived, get, readable } from 'svelte/store';
9
+ import { getEdgeById, getAnchors } from '../../edges/controllers/util';
10
+ /**
11
+ * Creates resize node on the bottom right corner of the targeted Node
12
+ * @param canvasId The canvasId of the Svelvet component that holds the targeted Node
13
+ * @param nodeId The id of the Node that the resize node attached to
14
+ * @param posX The number of pixels on the x-axis relative to the left top corner of the targeted Node
15
+ * @param posY The number of pixels on the y-axis relative to the left top corner of the targeted Node
16
+ * @returns A ReziseNode object with randomized id, canvasId, nodeId, posX, and posY
17
+ */
18
+ function createResizeNode(canvasId, nodeId, posX, posY) {
19
+ const id = pkStringGenerator();
20
+ const resizeNode = new ResizeNode(id, canvasId, nodeId, posX, posY);
21
+ return resizeNode;
22
+ }
23
+ /**
24
+ * Creates an Anchor on the targeted Node with infomation the userNode holds
25
+ * @param store An object containing the state of the Svelvet component. You can access the following through `store`: nodesStore, edgesStore, anchorsStore, etc.
26
+ * @param userNode A node that the user specifies. This is NOT the same as a Node object.
27
+ * @param sourceOrTarget User specified information of source or target
28
+ * @param canvasId The id of the canvas that holds the Anchor and its attached Node
29
+ * @param edge An edge that the user specifies. It should target the userNode as source or target. This is NOT the same as an Edge object
30
+ * @returns An Anchor object
31
+ */
32
+ function createAnchor(store, userNode, sourceOrTarget, canvasId, edge) {
33
+ // edge case
34
+ if (userNode === null)
35
+ throw `you cannot create an anchor without a user node (for now)`;
36
+ const edgeId = edge.id;
37
+ const anchorId = pkStringGenerator();
38
+ // userCb is the appropriate source or taret callback from userEdge object. It is
39
+ // possible the user to NOT set userCb in which case userCb will be undefined
40
+ let userCb;
41
+ if (sourceOrTarget === 'target')
42
+ userCb = edge.targetAnchorCb;
43
+ else
44
+ userCb = edge.sourceAnchorCb;
45
+ // create anchor callbacks
46
+ let cb;
47
+ if (userCb === undefined)
48
+ cb = dynamicCbCreator(store, edgeId, anchorId);
49
+ else
50
+ cb = fixedCbCreator(store, edgeId, anchorId, userNode.id, userCb);
51
+ // Create a new anchor.
52
+ const anchor = new Anchor(anchorId, userNode.id, edgeId, sourceOrTarget, -1, // dummy variables for x,y,angle for now
53
+ -1, // dummy variables for x,y,angle for now
54
+ cb, canvasId, 0 // dummy variables for x,y,angle for now
55
+ );
56
+ // return
57
+ return anchor;
58
+ }
59
+ /**
60
+ * Populates edgesStore of Edges. This function does not return the edgesStore. Instead it sets the nodesStore of Svelvet store.
61
+ * @param store An object containing the state of the Svelvet component. You can access the following through `store`: nodesStore, edgesStore, anchorsStore, etc.
62
+ * @param edges An edge that the user specifies. This is NOT the same as a Edge object.
63
+ * @param canvasId The canvasId of the Svelvet component that holds the Edges
64
+ */
65
+ export function populateEdgesStore(store, edges, canvasId) {
66
+ const edgesStore = {};
67
+ for (let i = 0; i < edges.length; i++) {
68
+ const userEdge = edges[i];
69
+ // { id: 'e1-2', source: 1, type: 'straight', target: 2, label: 'e1-2' },
70
+ // source is node.id for the source node
71
+ // target is node.id for the target node
72
+ // We need to get the anchors
73
+ const { source: sourceNodeId, target: targetNodeId, id: edgeId, type, label, labelBgColor, labelTextColor, edgeColor, animate, noHandle, arrow, clickCallback, className, } = userEdge;
74
+ const anchors = getAnchors(store, { edgeId: edgeId });
75
+ // check that we have two anchors for every edge
76
+ if (anchors.length !== 2)
77
+ throw 'We should have two anchors for every node';
78
+ // check that we have 1 source anchor and 1 target anchor. Since sourceOrTarget is typed to be either 'source'
79
+ // or 'target', it suffices to check whether there are two unique elements
80
+ if (new Set(anchors.map((e) => e.sourceOrTarget)).size !== 2)
81
+ throw 'we should have one source and one target anchor';
82
+ // get source and target anchor
83
+ let sourceAnchor, targetAnchor;
84
+ if (anchors[0].sourceOrTarget === 'source') {
85
+ sourceAnchor = anchors[0];
86
+ targetAnchor = anchors[1];
87
+ }
88
+ else {
89
+ sourceAnchor = anchors[1];
90
+ targetAnchor = anchors[0];
91
+ }
92
+ edgesStore[edgeId] = new Edge(edgeId, sourceAnchor.positionX, sourceAnchor.positionY, targetAnchor.positionX, targetAnchor.positionY, canvasId, userEdge.label === undefined ? '' : userEdge.label, userEdge.type === undefined ? 'bezier' : userEdge.type, userEdge.labelBgColor === undefined ? 'white' : userEdge.labelBgColor, userEdge.labelTextColor === undefined ? 'black' : userEdge.labelTextColor, userEdge.edgeColor === undefined ? 'black' : userEdge.edgeColor, userEdge.animate === undefined ? false : userEdge.animate, userEdge.noHandle === undefined ? false : userEdge.noHandle, userEdge.arrow === undefined ? false : userEdge.arrow, userEdge.clickCallback === undefined ? () => { } : userEdge.clickCallback, userEdge.className === undefined ? '' : userEdge.className);
93
+ }
94
+ store.edgesStore.set(edgesStore);
95
+ }
96
+ /**
97
+ * Finds userNode (with UserNodeType; Not the same as the Node) by the node id from nodesStore
98
+ * @param id The id of the Node in its nodesStore
99
+ * @param userNodes The array of userNodes (NOT the same as Node object)
100
+ * @returns The node that user specified or null if not found
101
+ */
102
+ function findUserNodeById(id, userNodes) {
103
+ for (let i = 0; i < userNodes.length; i++) {
104
+ const userNode = userNodes[i];
105
+ if (userNode.id === id)
106
+ return userNode;
107
+ }
108
+ return null;
109
+ }
110
+ /**
111
+ * Populates the anchorsStore. This will overwrite any data in the AnchorsStore.
112
+ * @param store The Svelvet store containing the state of the Svelvet component
113
+ * @param nodes An array of user specified nodes
114
+ * @param edges An array of user specified edges
115
+ * @param canvasId The canvasId of the Svelvet component that holds the nodes and edges
116
+ */
117
+ export function populateAnchorsStore(store, nodes, edges, canvasId) {
118
+ // anchorsStore will populated and eventaully synchronized to store.anchorsStore
119
+ const anchorsStore = {};
120
+ // iterate through user edges. Note the user never explicitly defines anchors; we calculate anchors
121
+ // from the user edge/node information
122
+ for (let i = 0; i < edges.length; i++) {
123
+ const userEdge = edges[i];
124
+ // find the source and target userNodes. These will be used to create the nodeId foreign key and
125
+ // determine placement of the anchor based on userNode.targetPosition, useNode.sourcePosition
126
+ const { source: sourceNodeId, target: targetNodeId } = userEdge;
127
+ const sourceUserNode = findUserNodeById(sourceNodeId, nodes);
128
+ const targetUserNode = findUserNodeById(targetNodeId, nodes);
129
+ // create source anchor
130
+ const sourceAnchor = createAnchor(store, sourceUserNode, 'source', canvasId, userEdge);
131
+ // create target anchor
132
+ const targetAnchor = createAnchor(store, targetUserNode, 'target', canvasId, userEdge);
133
+ // store source and target anchors
134
+ anchorsStore[sourceAnchor.id] = sourceAnchor;
135
+ anchorsStore[targetAnchor.id] = targetAnchor;
136
+ }
137
+ //populates the anchorsStore
138
+ store.anchorsStore.set(anchorsStore);
139
+ // set anchor positions. We can only set anchor positions after anchorsStore and nodesStore
140
+ // has been populated. TODO: maybe add a check to see that anchorsStore and NodesStore populated?
141
+ const anchors = getAnchors(store);
142
+ for (const anchor of anchors)
143
+ anchor.callback();
144
+ }
145
+ /**
146
+ * Populates the nodesStore. This will overwrite any data in the nodesStore.
147
+ * @param store The Svelvet store containing the state of the Svelvet component
148
+ * @param nodes An array of user specifed nodes
149
+ * @param canvasId The canvasId of the Svelvet component that holds the nodes
150
+ */
151
+ export function populateNodesStore(store, nodes, canvasId) {
152
+ // this is the nodesStore object. THIS IS NOT THE SAME AS A NODESTORE
153
+ const nodesStore = {};
154
+ // iterate through user nodes and create node objects
155
+ for (let i = 0; i < nodes.length; i++) {
156
+ const userNode = nodes[i];
157
+ const nodeId = userNode.id;
158
+ // TODO: move sanitizing default values to middleware
159
+ const node = new Node(nodeId.toString(), userNode.position.x, userNode.position.y, userNode.width, userNode.height, userNode.bgColor ?? 'white', userNode.data, canvasId, userNode.borderColor === undefined ? 'black' : userNode.borderColor, userNode.image === undefined ? false : userNode.image, userNode.src === undefined ? '' : userNode.src, userNode.textColor === undefined ? '' : userNode.textColor, userNode.borderRadius === undefined ? 0 : userNode.borderRadius, userNode.childNodes === undefined ? [] : userNode.childNodes, userNode.className === undefined ? '' : userNode.className, userNode.clickCallback === undefined ? () => { } : userNode.clickCallback);
160
+ nodesStore[nodeId] = node;
161
+ }
162
+ // This is actually what sets the store
163
+ store.nodesStore.set(nodesStore);
164
+ }
165
+ /**
166
+ * Populates the resizeNodeStore. If a Node is resizable, a small ResizeNode object is going to be attached to the Node's right bottom corner to react to the mouse drag.
167
+ * @param store The Svelvet store containing the state of the Svelvet component
168
+ * @param nodes An array of user specifed nodes (NOT the same as Node)
169
+ * @param canvasId The canvasId of the Svelvet component that holds the resizeNodes
170
+ */
171
+ export function populateResizeNodeStore(store, nodes, canvasId) {
172
+ const resizeNodeStore = {};
173
+ for (let i = 0; i < nodes.length; i++) {
174
+ const userNode = nodes[i];
175
+ const { id, width, height, position } = userNode;
176
+ const resizeNode = createResizeNode(canvasId, id, position.x + width, position.y + height);
177
+ resizeNodeStore[resizeNode.id] = resizeNode;
178
+ }
179
+ store.resizeNodesStore.set(resizeNodeStore);
180
+ }
@@ -0,0 +1,12 @@
1
+ import type { StoreType } from '../types/types';
2
+ /**
3
+ `store` is a dictionary of Svelvet stores.
4
+ * The reason why we have multiple Svelvet stores is to handle multiple canvases on the same page.
5
+ * A Svelvet store is the single source of truth for a canvas state.
6
+ * We discourage developers from interacting with stores directly; instead use the api methods in
7
+ `src/lib/controllers/storeApi.ts`. However, if need to direct access you can do so by importing:
8
+ `import { store } from 'src/lib/models/store';`
9
+ */
10
+ export declare const stores: {
11
+ [key: string]: StoreType;
12
+ };
@@ -0,0 +1,9 @@
1
+ /**
2
+ `store` is a dictionary of Svelvet stores.
3
+ * The reason why we have multiple Svelvet stores is to handle multiple canvases on the same page.
4
+ * A Svelvet store is the single source of truth for a canvas state.
5
+ * We discourage developers from interacting with stores directly; instead use the api methods in
6
+ `src/lib/controllers/storeApi.ts`. However, if need to direct access you can do so by importing:
7
+ `import { store } from 'src/lib/models/store';`
8
+ */
9
+ export const stores = {};
@@ -0,0 +1,134 @@
1
+ import type { CollapsibleType } from '../../collapsible/types/types';
2
+ import type { Writable } from 'svelte/store';
3
+ import type { AnchorType } from '../../edges/types/types';
4
+ export interface ResizeNodeType {
5
+ id: string;
6
+ nodeId: string;
7
+ edgeId?: string;
8
+ canvasId: string;
9
+ anchorId?: string;
10
+ positionX: number;
11
+ positionY: number;
12
+ setPositionAndCascade: Function;
13
+ setPosition: Function;
14
+ delete: Function;
15
+ }
16
+ export interface StoreType {
17
+ nodesStore: Writable<{
18
+ [key: string]: NodeType;
19
+ }>;
20
+ edgesStore: Writable<{
21
+ [key: string]: EdgeType;
22
+ }>;
23
+ anchorsStore: Writable<{
24
+ [key: string]: AnchorType;
25
+ }>;
26
+ resizeNodesStore: Writable<{
27
+ [key: string]: ResizeNodeType;
28
+ }>;
29
+ potentialAnchorsStore: Writable<{
30
+ [key: string]: PotentialAnchorType;
31
+ }>;
32
+ widthStore: Writable<number>;
33
+ heightStore: Writable<number>;
34
+ backgroundStore: Writable<boolean>;
35
+ movementStore: Writable<boolean>;
36
+ nodeIdSelected: Writable<number>;
37
+ nodeSelected: Writable<boolean>;
38
+ d3Scale: Writable<number>;
39
+ options: Writable<{
40
+ [key: string]: any;
41
+ }>;
42
+ temporaryEdgeStore: Writable<TemporaryEdgeType[]>;
43
+ nodeCreate: Writable<boolean>;
44
+ boundary: Writable<boolean | PositionType>;
45
+ edgeEditModal: Writable<null | string>;
46
+ collapsibleStore: Writable<CollapsibleType[]>;
47
+ collapsibleOption: Writable<boolean>;
48
+ lockedOption: Writable<boolean>;
49
+ editableOption: Writable<boolean>;
50
+ d3ZoomParameters: Writable<{
51
+ [key: string]: number;
52
+ }>;
53
+ resizableOption: Writable<boolean>;
54
+ highlightEdgesOption: Writable<boolean>;
55
+ }
56
+ export interface PositionType {
57
+ x: number;
58
+ y: number;
59
+ }
60
+ export interface NodeType {
61
+ id: string;
62
+ width: number;
63
+ height: number;
64
+ positionX: number;
65
+ positionY: number;
66
+ bgColor: string;
67
+ data: {
68
+ html?: any;
69
+ custom?: {
70
+ component: any;
71
+ props?: any;
72
+ cb?: (e: string, detail: any) => void;
73
+ };
74
+ img?: any;
75
+ label?: string;
76
+ };
77
+ canvasId: string;
78
+ setPositionFromMovement: Function;
79
+ delete: Function;
80
+ setSizeFromMovement: Function;
81
+ setExportableData: Function;
82
+ borderColor: string;
83
+ image: boolean;
84
+ src: string;
85
+ textColor: string;
86
+ borderRadius: number;
87
+ childNodes: string[];
88
+ className: string;
89
+ clickCallback: Function;
90
+ }
91
+ export interface EdgeType {
92
+ id: string;
93
+ sourceX: number;
94
+ sourceY: number;
95
+ targetX: number;
96
+ targetY: number;
97
+ canvasId: string;
98
+ label: string;
99
+ type: 'straight' | 'smoothstep' | 'step' | 'bezier';
100
+ labelBgColor: string;
101
+ labelTextColor: string;
102
+ edgeColor: string;
103
+ animate: boolean;
104
+ noHandle: boolean;
105
+ arrow: boolean;
106
+ clickCallback: Function;
107
+ className: string;
108
+ delete: Function;
109
+ setExportableData: Function;
110
+ }
111
+ export interface PotentialAnchorType {
112
+ id: string;
113
+ nodeId: string;
114
+ callback: Function;
115
+ positionX: number;
116
+ positionY: number;
117
+ angle: number;
118
+ canvasId: string;
119
+ delete: Function;
120
+ }
121
+ export interface TemporaryEdgeType {
122
+ id: string;
123
+ sourcePotentialAnchorId: string;
124
+ sourceX: number;
125
+ sourceY: number;
126
+ targetPotentialAnchorId: string | null;
127
+ targetX: number;
128
+ targetY: number;
129
+ canvasId: string;
130
+ type: string;
131
+ edgeColor: string;
132
+ createEdge: Function;
133
+ createNode: Function;
134
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ # Types
2
+
3
+ This folder contains types exported to the user, as decribed in feature: `https://www.svelvet.io/docs/typescript/`
@@ -0,0 +1,2 @@
1
+ import type { UserEdgeType, UserNodeType } from './types';
2
+ export { UserEdgeType, UserNodeType };
@@ -0,0 +1 @@
1
+ export {};