pict-section-flow 1.4.0 → 2.0.1

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 (164) hide show
  1. package/package.json +7 -2
  2. package/source/Pict-Section-Flow.js +20 -14
  3. package/source/providers/PictProvider-Flow-Background.js +303 -0
  4. package/source/providers/PictProvider-Flow-CSS.js +73 -7
  5. package/source/providers/PictProvider-Flow-Geometry.js +11 -421
  6. package/source/providers/PictProvider-Flow-Icons.js +12 -0
  7. package/source/providers/PictProvider-Flow-Layouts.js +107 -0
  8. package/source/services/PictService-Flow-ConnectionRenderer.js +1 -1
  9. package/source/services/PictService-Flow-CursorManager.js +113 -0
  10. package/source/services/PictService-Flow-InteractionManager.js +439 -59
  11. package/source/services/PictService-Flow-Layout.js +21 -16
  12. package/source/services/PictService-Flow-PathGenerator.js +30 -417
  13. package/source/services/PictService-Flow-RenderManager.js +23 -3
  14. package/source/services/PictService-Flow-ViewportManager.js +102 -0
  15. package/source/views/PictView-Flow-FloatingToolbar.js +5 -1
  16. package/source/views/PictView-Flow-Node.js +29 -0
  17. package/source/views/PictView-Flow-Toolbar.js +50 -3
  18. package/source/views/PictView-Flow.js +591 -2
  19. package/.claude/launch.json +0 -11
  20. package/docs/.nojekyll +0 -0
  21. package/docs/Architecture.md +0 -163
  22. package/docs/Custom-Styling.md +0 -275
  23. package/docs/Data_Model.md +0 -149
  24. package/docs/Event_System.md +0 -156
  25. package/docs/Getting_Started.md +0 -237
  26. package/docs/Implementation_Reference.md +0 -528
  27. package/docs/Layout_Persistence.md +0 -117
  28. package/docs/README.md +0 -103
  29. package/docs/Theme_Integration.md +0 -150
  30. package/docs/_brand.json +0 -18
  31. package/docs/_cover.md +0 -17
  32. package/docs/_playground.json +0 -24
  33. package/docs/_sidebar.md +0 -57
  34. package/docs/_topbar.md +0 -8
  35. package/docs/_version.json +0 -7
  36. package/docs/api/PictFlowCard.md +0 -216
  37. package/docs/api/PictFlowCardPropertiesPanel.md +0 -235
  38. package/docs/api/addConnection.md +0 -101
  39. package/docs/api/addNode.md +0 -137
  40. package/docs/api/autoLayout.md +0 -77
  41. package/docs/api/getFlowData.md +0 -112
  42. package/docs/api/marshalToView.md +0 -95
  43. package/docs/api/openPanel.md +0 -128
  44. package/docs/api/registerHandler.md +0 -174
  45. package/docs/api/registerNodeType.md +0 -142
  46. package/docs/api/removeConnection.md +0 -57
  47. package/docs/api/removeNode.md +0 -80
  48. package/docs/api/saveLayout.md +0 -152
  49. package/docs/api/screenToSVGCoords.md +0 -68
  50. package/docs/api/selectNode.md +0 -116
  51. package/docs/api/setTheme.md +0 -168
  52. package/docs/api/setZoom.md +0 -97
  53. package/docs/api/toggleFullscreen.md +0 -68
  54. package/docs/card-help/EACH.md +0 -19
  55. package/docs/card-help/FREAD.md +0 -24
  56. package/docs/card-help/FWRITE.md +0 -24
  57. package/docs/card-help/GET.md +0 -22
  58. package/docs/card-help/ITE.md +0 -23
  59. package/docs/card-help/LOG.md +0 -23
  60. package/docs/card-help/NOTE.md +0 -17
  61. package/docs/card-help/PREV.md +0 -18
  62. package/docs/card-help/SET.md +0 -27
  63. package/docs/card-help/SPKL.md +0 -22
  64. package/docs/card-help/STAT.md +0 -23
  65. package/docs/card-help/SW.md +0 -25
  66. package/docs/diagrams/architecture-at-a-glance.excalidraw +0 -4270
  67. package/docs/diagrams/architecture-at-a-glance.mmd +0 -30
  68. package/docs/diagrams/architecture-at-a-glance.svg +0 -2
  69. package/docs/diagrams/data-flow.excalidraw +0 -1451
  70. package/docs/diagrams/data-flow.mmd +0 -17
  71. package/docs/diagrams/data-flow.svg +0 -2
  72. package/docs/diagrams/high-level-design.excalidraw +0 -5767
  73. package/docs/diagrams/high-level-design.mmd +0 -86
  74. package/docs/diagrams/high-level-design.svg +0 -2
  75. package/docs/diagrams/relationships.excalidraw +0 -3852
  76. package/docs/diagrams/relationships.mmd +0 -9
  77. package/docs/diagrams/relationships.svg +0 -2
  78. package/docs/diagrams/service-initialization-sequence.excalidraw +0 -1466
  79. package/docs/diagrams/service-initialization-sequence.mmd +0 -19
  80. package/docs/diagrams/service-initialization-sequence.svg +0 -2
  81. package/docs/diagrams/svg-layer-structure.excalidraw +0 -1060
  82. package/docs/diagrams/svg-layer-structure.mmd +0 -18
  83. package/docs/diagrams/svg-layer-structure.svg +0 -2
  84. package/docs/examples/README.md +0 -9
  85. package/docs/examples/simple_cards/README.md +0 -677
  86. package/docs/examples/simple_cards/css/flowexample.css +0 -65
  87. package/docs/examples/simple_cards/index.html +0 -32
  88. package/docs/examples/simple_cards/js/pict.min.js +0 -12
  89. package/docs/examples/simple_cards/pict-section-flow-example-simple-cards.compatible.min.js +0 -1
  90. package/docs/index.html +0 -38
  91. package/docs/playground/app.json +0 -6
  92. package/docs/playground/appdata.json +0 -85
  93. package/docs/playground/application.js +0 -23
  94. package/docs/playground/pict.json +0 -17
  95. package/docs/playground/runtime/pict-application.min.js +0 -2
  96. package/docs/playground/runtime/pict-section-flow.min.js +0 -2
  97. package/docs/playground/runtime/pict-section-modal.min.js +0 -2
  98. package/docs/playground/runtime/pict.min.js +0 -12
  99. package/docs/retold-catalog.json +0 -244
  100. package/docs/retold-keyword-index.json +0 -26028
  101. package/example_applications/simple_cards/css/flowexample.css +0 -65
  102. package/example_applications/simple_cards/html/index.html +0 -32
  103. package/example_applications/simple_cards/package.json +0 -52
  104. package/example_applications/simple_cards/source/Pict-Application-FlowExample-Configuration.json +0 -15
  105. package/example_applications/simple_cards/source/Pict-Application-FlowExample.js +0 -539
  106. package/example_applications/simple_cards/source/card-help-content.js +0 -16
  107. package/example_applications/simple_cards/source/cards/FlowCard-Comment.js +0 -38
  108. package/example_applications/simple_cards/source/cards/FlowCard-DataPreview.js +0 -44
  109. package/example_applications/simple_cards/source/cards/FlowCard-Each.js +0 -38
  110. package/example_applications/simple_cards/source/cards/FlowCard-FileRead.js +0 -56
  111. package/example_applications/simple_cards/source/cards/FlowCard-FileWrite.js +0 -50
  112. package/example_applications/simple_cards/source/cards/FlowCard-GetValue.js +0 -37
  113. package/example_applications/simple_cards/source/cards/FlowCard-IfThenElse.js +0 -49
  114. package/example_applications/simple_cards/source/cards/FlowCard-LogValues.js +0 -55
  115. package/example_applications/simple_cards/source/cards/FlowCard-SetValue.js +0 -97
  116. package/example_applications/simple_cards/source/cards/FlowCard-Sparkline.js +0 -100
  117. package/example_applications/simple_cards/source/cards/FlowCard-StatusMonitor.js +0 -46
  118. package/example_applications/simple_cards/source/cards/FlowCard-Switch.js +0 -39
  119. package/example_applications/simple_cards/source/providers/PictRouter-FlowExample-Configuration.json +0 -22
  120. package/example_applications/simple_cards/source/sample-flows.js +0 -410
  121. package/example_applications/simple_cards/source/views/PictView-FlowExample-About.js +0 -184
  122. package/example_applications/simple_cards/source/views/PictView-FlowExample-BottomBar.js +0 -77
  123. package/example_applications/simple_cards/source/views/PictView-FlowExample-Documentation.js +0 -325
  124. package/example_applications/simple_cards/source/views/PictView-FlowExample-FileWriteInfo.js +0 -59
  125. package/example_applications/simple_cards/source/views/PictView-FlowExample-Layout.js +0 -90
  126. package/example_applications/simple_cards/source/views/PictView-FlowExample-MainWorkspace.js +0 -453
  127. package/example_applications/simple_cards/source/views/PictView-FlowExample-TopBar.js +0 -95
  128. package/scripts/generate-card-help.js +0 -214
  129. package/source/providers/edges/Edge-Bezier.js +0 -41
  130. package/source/providers/edges/Edge-Orthogonal.js +0 -37
  131. package/source/providers/edges/Edge-OrthogonalSnap.js +0 -72
  132. package/source/providers/edges/Edge-Perimeter-Linear.js +0 -31
  133. package/source/providers/edges/Edge-Perimeter-Orthogonal.js +0 -39
  134. package/source/providers/edges/Edge-Perimeter.js +0 -48
  135. package/source/providers/edges/Edge-PerimeterMath.js +0 -92
  136. package/source/providers/edges/Edge-Straight.js +0 -24
  137. package/source/providers/layouts/Layout-Circular.js +0 -203
  138. package/source/providers/layouts/Layout-Coerce.js +0 -40
  139. package/source/providers/layouts/Layout-Columnar.js +0 -134
  140. package/source/providers/layouts/Layout-Custom.js +0 -27
  141. package/source/providers/layouts/Layout-ForcedFromCenter.js +0 -256
  142. package/source/providers/layouts/Layout-Grid.js +0 -134
  143. package/source/providers/layouts/Layout-Layered.js +0 -155
  144. package/source/providers/layouts/Layout-Rank.js +0 -141
  145. package/source/providers/layouts/Layout-Staggered.js +0 -131
  146. package/source/providers/layouts/Layout-Tabular.js +0 -94
  147. package/test/CardPalette_tests.js +0 -43
  148. package/test/ConnectionHandleManager_tests.js +0 -717
  149. package/test/ConnectionRenderer_tests.js +0 -591
  150. package/test/ConnectionStyle_tests.js +0 -90
  151. package/test/DataManager_tests.js +0 -859
  152. package/test/Geometry_tests.js +0 -767
  153. package/test/InteractionManager_tests.js +0 -279
  154. package/test/Layout_tests.js +0 -1604
  155. package/test/NodeView_tests.js +0 -66
  156. package/test/PanelManager_tests.js +0 -172
  157. package/test/PathGenerator_tests.js +0 -978
  158. package/test/PortRenderer_tests.js +0 -376
  159. package/test/RenderManager_tests.js +0 -756
  160. package/test/Renderer_tests.js +0 -133
  161. package/test/SelectionManager_tests.js +0 -185
  162. package/test/StylePresets_tests.js +0 -153
  163. package/test/ToolbarExtraButtons_tests.js +0 -138
  164. package/test/UndirectedConnections_tests.js +0 -70
@@ -1,17 +0,0 @@
1
- sequenceDiagram
2
- participant App as Application
3
- participant FV as PictViewFlow
4
- participant DM as DataManager
5
- participant EH as EventHandler
6
- participant RM as RenderManager
7
-
8
- App->>FV: addNode('start', 50, 100, 'Begin')
9
- FV->>DM: addNode(pType, pX, pY, pTitle, pData)
10
- DM->>DM: Create node object with UUID hash
11
- DM->>DM: Merge default ports from NodeType
12
- DM->>EH: fireEvent('onNodeAdded', node)
13
- DM->>EH: fireEvent('onFlowChanged', flowData)
14
- DM->>RM: renderFlow()
15
- RM->>RM: Render SVG nodes, connections, tethers, panels
16
- DM-->>FV: Return node object
17
- FV-->>App: Return node object
@@ -1,2 +0,0 @@
1
- <svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1653.6 872" width="1653.6" height="872"><!-- svg-source:excalidraw --><metadata><!-- payload-type:application/vnd.excalidraw+json --><!-- payload-version:2 --><!-- payload-start -->eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO2dXXebOFx1MDAxYcfv+yk4not0z0k96Fx1MDAwNUn0Lq/Tzm463aTtzJw9c0GMYrMl4MVy025Pv/tcYmJcdTAwMWJcdTAwMDFyXCJcdTAwMTk7JSnOSU5cdTAwMTBcdTAwMDJcdTAwMWXE8+enR2/++sxxXHUwMDA24suUXHUwMDBmXjpcdTAwMDP+eVx1MDAxNMRRmFx1MDAwNTeD/Tz9XHUwMDEzz2ZRmshdsNiepfNsVOScXGIxffnzz1x1MDAwMNKhK3/AS+xTRG+P4jG/5omYyXz/kduO87X4K/dEYX7sjP/vRVx1MDAxY13xXHUwMDE3XHUwMDA302lxRLFvaUNcdTAwMWMlvEz9LJNcdTAwMDCFq+0v+TYkq+2bKFx1MDAxNFx1MDAxM5nmrlImPFx1MDAxYU+ETKJ+mS1IxjGvZJuJLP3Ij9I4zfKr/sRcdTAwMGXoKYXlhS+D0cdxls6TcJVHZEEym1x1MDAwNpm8tzLfVVx1MDAxNMdcdTAwMTfiS3F2WT6y9Fx1MDAwNrVr/L4wXHUwMDExXGa92p7VcWEwm3DlQHnd8SThs7xcYsEqNZ1cdTAwMDajSFx1MDAxNCXgljeSXHUwMDFiOX1cdTAwMWRcdTAwMTal/VdpVlx1MDAxNlxc89d5cSfzOFZPnISLXHUwMDEzV3bMOFx1MDAwZmsnrj18Ne1Nmlx1MDAxNG5cdTAwMDA834XYZ1x1MDAxMK9yRLNj+fxFcbarIJ7xskTza58ovlFaO5+Gwe0hgDJcdTAwMTdjSFx1MDAxOFx1MDAwNrS8c+lcdTAwMTNcdTAwMWbrXHUwMDE2x+noo+Yq0zRSXS//lP85pVx1MDAwM1x1MDAxNFx1MDAxYqv//9q/P7f0pzL/s9pxgziYiaP0+jpcdTAwMTLyRt7mRjSKWFx1MDAwNJk4jJIwSsb1fTxcdNfsKY46yLL0ZsKDxvOUx63fXHUwMDE3X6Y3mlx1MDAxMpLX4bmsXHUwMDA2gTtQii3+Mi5cdTAwMWV2kblI/rZ/p3pPP5iIXHUwMDE3o1KFvXh3K15cXMrQRLxcdTAwMDBcdTAwMTPoXHUwMDExXHUwMDBm9+J9jOJcdTAwMDWtxHt8ZlwiXqq4ai/enYqXMt9KvC5CXHUwMDE4Y+r24n2M4oWtxHvyykS8Pil9o1x1MDAxN+9OxStrwXbVZlx1MDAwMFxipsgvc/TifTziRa3Ee25EXlx1MDAwMCHr1fsw6sXUUr1cYjBCMStcdTAwMWZQr97Ho168qXqDkUgzfZtVxkfiVm1VXHUwMDAyV9utaOm/S1x1MDAwNVx1MDAwM6LRsGcjYXBcYk4hainhSTCazDO+TsSwlr5O+lx1MDAwZqLgryt/XFxcdTAwMTY/WqR8q1x1MDAwYlx1MDAxYsLy5WMgbEyBS1x1MDAwMCFcdTAwMWJVqVdWlfY1vSdcdTAwMGUueVxccaGKXHUwMDFiXHT+WVxmVju+NeS2xTdGqVx1MDAwN29g4vdNy6tWV+FVXHUwMDBiXHUwMDFimadQYOX6SrvDyvWVXHUwMDA39kCufze9uuT4OnRBpVZgXHUwMDE0NVx1MDAxMpdcdTAwMDLqQ3dcdTAwMTNcdTAwMTffiSNcdTAwMTbeI0tUulZcdTAwMWONXHUwMDAykd9BWSppXCIuov/npism56mnwXVcdTAwMTTnRetVznRcdTAwMTBH47xcdTAwMDRcdTAwMDYjaTTPXHUwMDA2akFcYnn6eJXhOlxuQ/V9PZInXHJkNSx7fddcdTAwMGI/zaJxlFx1MDAwNPG7u6xcdTAwMGXmXCI957Nbu6t3m1f0Xi2dXHUwMDFkXGZcdTAwMTV3L1x1MDAwNUmMXHUwMDA0qW1+XcMh5FX1qFx1MDAwM5FSXHUwMDA36kG0bVx1MDAxMKlcdTAwMWQkJjIlru8xd8PGXHUwMDFkXHUwMDBiXHUwMDEyKT5U8aPvXHUwMDAyXCJqXHUwMDAxXCKd8zc5hLxqXGal55Di5T2HNuRcdTAwMTCzq2lcdTAwMDFcdTAwMDAoZaBDPVx1MDAwZktcZr2NRuJDxG9O4/SmW1x1MDAxY1Jdvo4hvdUtOcTMOKTrSVjDIVx1MDAwMu/nUFx1MDAxZlx1MDAxMO0yIFwiTPXE+2VKXHUwMDEwI1x1MDAxZcRcdTAwMWK1dFhwSPGhilx1MDAxZn1cdTAwMTdcdTAwMGX5XHUwMDE2XHUwMDFj0jl/k0NcdTAwMDSacKiPh7ZcdTAwMTBcdTAwMGZcdTAwMTGrXjRcdTAwMDJ8Ql3Gulx1MDAxN1x1MDAwZVx1MDAxZFx1MDAwN1wiOFx1MDAwYpJgrMKjXHUwMDBiXHUwMDE4Uj2+jiGt0S0pdGBGIV2X2Fx1MDAxYVxuMVpVY1x1MDAxZlxyPTCFMKVWXHUwMDE08mUo5PtAXHUwMDE5SLRcdTAwMWJcbik+VPGj70KhQ1x1MDAwYlxu6Zy/SSHGqiOx+mhod1x1MDAxZEpW1SzPR8BzUYeGciwpdPJJXuZVkEg0dFxmQ6rL1zGkt7olh47MOKTr3V3DIVx1MDAwMGpDI3UgYppKYVx1MDAwZqJthUOWo52pS1x1MDAxMPR3XHUwMDFmXHUwMDBlnXcpXHUwMDFjOrZcdTAwMDCRzvs13UNqqLOeREqs2pNo03jIXHUwMDA1Vlx1MDAxZU5cdTAwMTCAPmZgo6rWTlF0zqVHZp1cZonO71xiidaY3Vx1MDAxMkYn92nyejZ+4Ta1XHUwMDE45MMm6pNrylx1MDAwYlx1MDAxNK5Iy1xieilF6GmkWJZ2XHUwMDE3lNhxXHUwMDA0wXVcYsLAauxcdTAwMTFyXHUwMDAx8Vx1MDAxOKRPdOCg4mi1/Fxy1nVi6JH02qhWs7t/XHUwMDAw0qmBeG9xqlGwhqbYXHUwMDFk1oZcbnqleywljCBcdTAwMTnq2lx1MDAxN8tn3lx1MDAwNVx1MDAxNXeep1x1MDAxOCArnmKXXCKAu6TXJU+DMHyThvz5XuHwe/uO5+5cdTAwMTfl5uxcdTAwMWRyibC9f2ghq9RcZrZcdTAwMDJZkU7XXHUwMDExtnI3da7amF+Brcjmdqz9xYS1wIi1XHUwMDE4lWzNXHUwMDBiXHKisiGsZ+3OWcvsWFx1MDAwYlx1MDAwMCB+3v31RMf5/lx1MDAxMLB9ZVxmW42ENSNKfHdYjV0haLbaIM9cdTAwMWJqOlx1MDAxMHrYWlx1MDAwZSqxhC1gmErWet2F7fSd9Kx9Z/qH/P1T/r6LRJxv51x1MDAxZGePg7eGd9BcdTAwMGW5r02QXHUwMDBijZBbn8Fcbv1mS1x1MDAxM9Z0eSgtVF3Q6mNFLrZcdTAwMWP4XGIhZfLt2SFcdG9cdTAwMTW5padtkFx1MDAxZOP78rvrsj8hoP9qXGZ0zVx1MDAwYqJcdHTqVftgkEs0bdFcYpChrjW6XHUwMDA3ul30bDlcdTAwMWZcdTAwMDczXG59jLs3Ouco4/KUTlwiieikl//lI+HcRGLivH//+tiZXHUwMDA0s8k2WFx1MDAxZfMrsVx1MDAwM5Jb2N6O4v80oTjaiOLY7Sm+SH2QwNlyYVx1MDAxOdeXwsVcdTAwMWXoKd7M3lM8l/i/jCmueUHcT3FcZnqK7y4sx3ZzPSCFXHUwMDA0u373upTPeDbmTsivgnksnGmaiZlzlaXXTlx1MDAxZenmcW6HKW5hezuKn5lQXHUwMDFjXHUwMDFiUrxszylKXGY0Ndo3f++M4lx1MDAxNNk1pyFcdTAwMDJk5ZtuNuy2+1x1MDAxNP8hmr/fXHUwMDE4c1YjYc1EXHUwMDE2Vu1pVtdAWSmY9Yxtv1x1MDAxYVx1MDAxY7KrcXuAYuRB1J1cdTAwMWH3XHUwMDEysldRxotcdTAwMDG5z/dye0N+XHUwMDEwhjzc2y9cdTAwMDLQbrd5m5reXHUwMDBlsL+ZXHUwMDAw1ttcZrC03O5cdTAwMDG7+8ZuZlcxlpJlUmdPdVx1MDAxZKlcdTAwMWZcdTAwMDKwb41cdTAwMDGrkbBcdTAwMDawnq/0XHUwMDFjXHUwMDE3XHUwMDFhxs1131x1MDAxMPaGnq98ymEkPXE3bZtmVivp+IBQ6PpcdTAwMWRawVFcdTAwMGLcfEGAo4l0gIJbV3Kr+13NdjfQXHUwMDBlvv82gS/ZXGK+XHUwMDA0lY9xKVxcXHUwMDBmaoaF9PDdXHUwMDA2fH3lhWegX1xiXHUwMDEww4jSXHUwMDBlXHR4q/BVPK2W/1x0wffcXHUwMDE4vlx1MDAxYVx0N+Hru6Q2uIsoczJX85KAN1x1MDAwNCp8yzGdPXw3XT9cdTAwMTnajczEXGJcdTAwMDMsXHUwMDE1352mqSV9s2K+T06t592mrN7QdjS9MKEpNZuWVF//mLDmvKS+y3dnOEXAbmFJXHUwMDBmIVx1MDAxZjLiPtFYtu/ybVxy63fGsNa8ITTTniCrspq6rqbPXHUwMDE3Y9CHylumNVx1MDAwMnbrt1x1MDAwMOpcdTAwMDNEXHUwMDEx7Vx1MDAxZa1vZ+c6XHUwMDE3XHUwMDFmfinadGf7jiRowkf5eq5yQ3Axkfey70yDhMezXHUwMDBld1x1MDAwN296I+14/96E98yI90RcdTAwMTFmoWb/aU1D/i5fdmBcdTAwMTM+K2ugXHUwMDE5XHLqQIjQTq1Zs1Xev/ghXHUwMDFhrz9cdTAwMTgjWSPiJpIxXHUwMDAzw9qKNsrEV2VttSFVidx3XHUwMDE3t4+fmVXjXHUwMDE3pZQwXHUwMDBmdXD53XMu5lmiXHUwMDBlTu50XHUwMDEwfZe57dD6u1x0Wn0jtGJUbZhm3tOaddx1tNp+py5BXr5qXHUwMDAw6446e7Rao/VcdTAwMGZjtGpE3EQrXHUwMDA0dEhcXOVT7SRmSLuGac/ZrX89tt1yWlx1MDAxZVx1MDAwMNjv4ret9Jxd6PTPhU6fLV47g2A6vVx1MDAxMLK4V+946UFRWFti7DZN8GlZXHUwMDE2RdKZNPAkXHQu43rRXHUwMDBmPkX85rApmJ9OXHUwMDBmT+nJyeJuXHUwMDE2T+1sXHUwMDFli+hC+slt+J5bkttXvEtyNfFF0re/XHUwMDAxu+bUxSJ9<!-- payload-end --><pict-renderer-graph:source xmlns:pict-renderer-graph="https://fable-retold.github.io/pict-renderer-graph/ns/v1"><![CDATA[{"type":"seqgraph","mermaid":"sequenceDiagram\n participant App as Application\n participant FV as PictViewFlow\n participant DM as DataManager\n participant EH as EventHandler\n participant RM as RenderManager\n\n App->>FV: addNode('start', 50, 100, 'Begin')\n FV->>DM: addNode(pType, pX, pY, pTitle, pData)\n DM->>DM: Create node object with UUID hash\n DM->>DM: Merge default ports from NodeType\n DM->>EH: fireEvent('onNodeAdded', node)\n DM->>EH: fireEvent('onFlowChanged', flowData)\n DM->>RM: renderFlow()\n RM->>RM: Render SVG nodes, connections, tethers, panels\n DM-->>FV: Return node object\n FV-->>App: Return node object\n","style":"notebook"}]]></pict-renderer-graph:source></metadata><defs><style class="style-fonts">
2
- @font-face { font-family: Excalifont; src: url(data:font/woff2;base64,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); }</style></defs><g stroke-linecap="round"><g transform="translate(90 66) rotate(0 -0.18129876556045588 398)"><path d="M0 0 C-0.09 158.91, -0.77 318.44, 0 796" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="2" fill="none" stroke-dasharray="8 9.5"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(354 66) rotate(0 -0.5106647298877363 398)"><path d="M0 0 C-1.05 160.04, -1.64 320.03, 0 796" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="2" fill="none" stroke-dasharray="8 9.5"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(618 66) rotate(0 -0.9711535500655373 398)"><path d="M0 0 C-2.45 162.23, -2.72 324.74, 0 796" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="2" fill="none" stroke-dasharray="8 9.5"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(882 66) rotate(0 0.5518943283682347 398)"><path d="M0 0 C0.97 162.2, 1.9 324.53, 0 796" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="2" fill="none" stroke-dasharray="8 9.5"/></g></g><mask/><g stroke-linecap="round"><g transform="translate(1146 66) rotate(0 -1.0432955587477863 398)"><path d="M0 0 C-2.87 161.27, -2.69 321.38, 0 796" stroke="var(--diagram-deemphasis, #8A7F72)" stroke-width="2" fill="none" stroke-dasharray="8 9.5"/></g></g><mask/><g stroke-linecap="round" transform="translate(10 10) rotate(0 80 28)"><path d="M14 0 C41.42 1.41, 67.12 2.24, 146 0 M14 0 C66.75 -1.91, 119.87 -1.82, 146 0 M146 0 C155.43 -0.93, 161.75 2.83, 160 14 M146 0 C154.04 2.08, 158.66 3.25, 160 14 M160 14 C161.79 21.84, 159.29 33.74, 160 42 M160 14 C160.03 21.68, 160.66 26.62, 160 42 M160 42 C161.95 51.66, 156.25 56.95, 146 56 M160 42 C161.73 51.67, 154.29 54.29, 146 56 M146 56 C103.81 56.75, 59.7 57.34, 14 56 M146 56 C99.14 57.6, 51.73 56.55, 14 56 M14 56 C4.12 55.32, 0.46 50.05, 0 42 M14 56 C2.56 56.64, -1.69 49.99, 0 42 M0 42 C2.06 33.37, -0.13 23.52, 0 14 M0 42 C0.25 30.45, 0.35 20.64, 0 14 M0 14 C-1.92 5.87, 3.58 1.73, 14 0 M0 14 C-1.57 3.26, 2.75 0.71, 14 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(18 25.5) rotate(0 72 12.5)"><text x="72" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Application</text></g><g stroke-linecap="round" transform="translate(268 10) rotate(0 86 28)"><path d="M14 0 C43.72 0.26, 71.19 0.47, 158 0 M14 0 C61.14 0.88, 107.89 0.68, 158 0 M158 0 C168.33 -1.94, 170.22 3.64, 172 14 M158 0 C167.76 0.18, 173.77 3.1, 172 14 M172 14 C172.4 20.68, 171.65 26.16, 172 42 M172 14 C173.1 24.83, 172.67 34.6, 172 42 M172 42 C172.57 52.13, 168.2 56.53, 158 56 M172 42 C171.6 50.2, 167.95 54.27, 158 56 M158 56 C114.28 54.34, 66.61 55.16, 14 56 M158 56 C124.77 55.97, 89.7 54.77, 14 56 M14 56 C3.9 57.13, 1.18 52.11, 0 42 M14 56 C6.6 57.61, 1.6 50.14, 0 42 M0 42 C0.5 30.81, 1.15 22.09, 0 14 M0 42 C0.33 32.15, 0.18 22.3, 0 14 M0 14 C1.19 3.74, 4.22 0.31, 14 0 M0 14 C1.76 6.96, 5.06 -1.99, 14 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(276 25.5) rotate(0 78 12.5)"><text x="78" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">PictViewFlow</text></g><g stroke-linecap="round" transform="translate(538 10) rotate(0 80 28)"><path d="M14 0 C40.31 1.23, 67.42 2.64, 146 0 M14 0 C52.43 -0.65, 91.53 -0.17, 146 0 M146 0 C153.65 -0.18, 161.55 2.81, 160 14 M146 0 C155.69 0.92, 158.76 6.4, 160 14 M160 14 C161.63 23.29, 160.3 29.98, 160 42 M160 14 C160.26 25.27, 159.12 36.58, 160 42 M160 42 C161.56 52.92, 155.06 56.98, 146 56 M160 42 C160.39 52.07, 155.43 54.62, 146 56 M146 56 C119.72 56.96, 91.3 54.43, 14 56 M146 56 C115.27 55.24, 82.14 54.47, 14 56 M14 56 C4.99 56.96, -1.1 50.74, 0 42 M14 56 C5.37 58.19, 1.47 51.83, 0 42 M0 42 C1.02 33.15, 0.03 27.56, 0 14 M0 42 C-0.37 34.06, 0.13 27.11, 0 14 M0 14 C-1.18 5.71, 2.86 -0.51, 14 0 M0 14 C1.65 3.9, 2.64 -0.48, 14 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(546 25.5) rotate(0 72 12.5)"><text x="72" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">DataManager</text></g><g stroke-linecap="round" transform="translate(796 10) rotate(0 86 28)"><path d="M14 0 C44.02 -1.19, 71.7 -2.13, 158 0 M14 0 C62.68 -0.2, 111.33 -1.12, 158 0 M158 0 C168.51 0.43, 171.24 4.94, 172 14 M158 0 C165.51 0.92, 170.07 2.58, 172 14 M172 14 C172.94 25.28, 172.11 32.35, 172 42 M172 14 C172.85 18.9, 172.34 25.45, 172 42 M172 42 C171.98 52.83, 166.23 55.45, 158 56 M172 42 C171.25 49.1, 167.52 56.05, 158 56 M158 56 C116.48 54.01, 78.09 55.75, 14 56 M158 56 C107.89 56.1, 59.18 56.59, 14 56 M14 56 C4.64 54.88, 0.17 51.02, 0 42 M14 56 C3.87 56.81, -0.28 51.24, 0 42 M0 42 C0.22 37.91, 1.34 29.31, 0 14 M0 42 C0.09 35.14, -0.8 27.18, 0 14 M0 14 C-0.07 4.97, 4.59 0.14, 14 0 M0 14 C-1.49 5.74, 5.2 -1.63, 14 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(804 25.5) rotate(0 78 12.5)"><text x="78" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">EventHandler</text></g><g stroke-linecap="round" transform="translate(1054 10) rotate(0 92 28)"><path d="M14 0 C46.79 -0.49, 74.73 -0.63, 170 0 M14 0 C76.44 0.26, 137.76 -0.1, 170 0 M170 0 C177.87 -0.16, 185.78 4.15, 184 14 M170 0 C179.97 -0.45, 186.13 3.66, 184 14 M184 14 C185.52 22.53, 185.96 30.88, 184 42 M184 14 C184.32 22.31, 184.22 31.87, 184 42 M184 42 C185.07 49.62, 178.15 57.95, 170 56 M184 42 C184.26 52.4, 180.2 54.73, 170 56 M170 56 C118.38 56.64, 65.72 56.72, 14 56 M170 56 C113.85 57.83, 56 56.9, 14 56 M14 56 C5.3 56.51, -1.15 50.86, 0 42 M14 56 C5.09 54.78, 1.82 49.88, 0 42 M0 42 C1.84 33.57, -1.89 22.06, 0 14 M0 42 C0.11 34.6, -0.24 26.64, 0 14 M0 14 C1.18 5.96, 4.36 0.42, 14 0 M0 14 C-2.16 6.74, 2.71 1.39, 14 0" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(1062 25.5) rotate(0 84 12.5)"><text x="84" y="17.619999999999997" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="20px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">RenderManager</text></g><g stroke-linecap="round"><g transform="translate(93 119) rotate(0 128.4590061571682 -0.9189003353286438)"><path d="M0.59 -0.48 C43.7 -0.47, 214.45 -1.05, 257.47 -1.04 M-0.55 -1.78 C42.45 -1.56, 213.1 -0.45, 256.25 -0.05" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(93 119) rotate(0 128.4590061571682 -0.9189003353286438)"><path d="M254.9 0.26 L243.22 5.75 L244.29 -7.11 L258.09 -0.35" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M256.25 -0.05 C252.83 0.61, 249.38 3.45, 242.6 6.18 M256.25 -0.05 C252.58 2.24, 249.86 3.79, 242.6 6.18 M242.6 6.18 C242.94 3.45, 242.07 -0.94, 242.7 -6.5 M242.6 6.18 C243.36 3.16, 243.15 0.31, 242.7 -6.5 M242.7 -6.5 C246.52 -4.55, 253.18 -1.16, 256.25 -0.05 M242.7 -6.5 C246.67 -4.34, 249.89 -2.99, 256.25 -0.05 M256.25 -0.05 C256.25 -0.05, 256.25 -0.05, 256.25 -0.05 M256.25 -0.05 C256.25 -0.05, 256.25 -0.05, 256.25 -0.05" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(58.80000000000001 92) rotate(0 163.2 10.5)"><text x="163.2" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">addNode('start', 50, 100, 'Begin')</text></g><g stroke-linecap="round"><g transform="translate(357 177) rotate(0 128.93653616756202 -0.11658990878169107)"><path d="M-0.53 -1.14 C42.73 -1.12, 215.47 -1.09, 258.4 -0.98 M1.39 0.87 C44.63 1.1, 214.65 0.09, 257.67 0.04" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(357 177) rotate(0 128.93653616756202 -0.11658990878169107)"><path d="M258.66 -0.08 L245.97 7.01 L243.34 -7.81 L256.25 1.62" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M257.67 0.04 C253.42 1.78, 250.85 1.45, 244.1 6.43 M257.67 0.04 C254.41 2.08, 250.4 3.12, 244.1 6.43 M244.1 6.43 C243.75 1.19, 243.01 -2.23, 244.05 -6.25 M244.1 6.43 C244.33 2.83, 244.64 -2.44, 244.05 -6.25 M244.05 -6.25 C248.13 -4.11, 254.1 -1.06, 257.67 0.04 M244.05 -6.25 C246.72 -4.44, 250.52 -4.12, 257.67 0.04 M257.67 0.04 C257.67 0.04, 257.67 0.04, 257.67 0.04 M257.67 0.04 C257.67 0.04, 257.67 0.04, 257.67 0.04" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(308.4 150) rotate(0 177.59999999999997 10.5)"><text x="177.6" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">addNode(pType, pX, pY, pTitle, pData)</text></g><g stroke-linecap="round"><g transform="translate(618 235) rotate(0 25.93623602833975 22.13903092980547)"><path d="M0.51 0.41 C8.21 0.42, 38.09 -7.72, 45.64 -0.43 C53.18 6.86, 53.36 36.66, 45.78 44.14 C38.19 51.61, 7.73 44.48, 0.11 44.42 M0.11 0.14 C8.02 0.25, 39.15 -7.4, 46.69 0.04 C54.22 7.49, 53.05 37.57, 45.31 44.81 C37.58 52.05, 7.92 43.64, 0.28 43.47" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(618 235) rotate(0 25.93623602833975 22.13903092980547)"><path d="M0.76 43 L15.65 39.26 L12.54 52.6 L0.75 43.23" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M0.28 43.47 C3.76 42.05, 5.52 41.37, 14.66 39.2 M0.28 43.47 C5.02 41.85, 9.71 40.65, 14.66 39.2 M14.66 39.2 C14.06 42.68, 13.8 47.22, 12.8 51.74 M14.66 39.2 C13.93 43.45, 13.46 47.19, 12.8 51.74 M12.8 51.74 C9.1 49.88, 6.48 47.39, 0.28 43.47 M12.8 51.74 C8.36 49.01, 4.03 46.25, 0.28 43.47 M0.28 43.47 C0.28 43.47, 0.28 43.47, 0.28 43.47 M0.28 43.47 C0.28 43.47, 0.28 43.47, 0.28 43.47" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(674 246.5) rotate(0 158.39999999999998 10.5)"><text x="0" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Create node object with UUID hash</text></g><g stroke-linecap="round"><g transform="translate(618 345) rotate(0 25.386127106754316 22.21517659049698)"><path d="M0.02 0.42 C7.76 0.38, 38.22 -7.29, 45.87 0.04 C53.52 7.36, 53.49 37.01, 45.92 44.35 C38.36 51.68, 8.08 44.19, 0.48 44.06 M-0.63 0.16 C7.07 0.19, 37.67 -6.46, 45.37 0.75 C53.06 7.97, 53.23 36.15, 45.53 43.46 C37.83 50.76, 6.79 44.58, -0.83 44.59" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(618 345) rotate(0 25.386127106754316 22.21517659049698)"><path d="M0.08 44.19 L14.05 39.25 L12.94 51.85 L-0.07 45.14" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M-0.83 44.59 C2.61 43.38, 4.97 42.43, 13.3 39.56 M-0.83 44.59 C4.49 42.46, 9.53 40.7, 13.3 39.56 M13.3 39.56 C12.87 42.7, 13.33 45.41, 12.11 52.18 M13.3 39.56 C12.79 43.66, 12.78 48.32, 12.11 52.18 M12.11 52.18 C7.84 49.91, 4.08 47.92, -0.83 44.59 M12.11 52.18 C7.59 49.37, 3.3 47.26, -0.83 44.59 M-0.83 44.59 C-0.83 44.59, -0.83 44.59, -0.83 44.59 M-0.83 44.59 C-0.83 44.59, -0.83 44.59, -0.83 44.59" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(674 356.5) rotate(0 158.39999999999998 10.5)"><text x="0" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Merge default ports from NodeType</text></g><g stroke-linecap="round"><g transform="translate(621 455) rotate(0 129.4534011812322 0.1291744003518147)"><path d="M0.66 0.22 C43.7 0.45, 214.17 0.87, 257.12 0.97 M-0.46 -0.7 C43.06 -0.76, 216.32 -0.58, 259.36 -0.64" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(621 455) rotate(0 129.4534011812322 0.1291744003518147)"><path d="M259.81 -0.84 L246.71 6.99 L244.95 -8.22 L258.19 0.15" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M259.36 -0.64 C256.86 -0.38, 255.03 2.47, 245.77 5.7 M259.36 -0.64 C254.15 1.23, 249.76 4.29, 245.77 5.7 M245.77 5.7 C246.34 0.37, 246.88 -2.5, 245.77 -6.98 M245.77 5.7 C245.35 1.63, 246.39 -0.96, 245.77 -6.98 M245.77 -6.98 C250.52 -5.53, 256.87 -1.02, 259.36 -0.64 M245.77 -6.98 C250.59 -4.9, 256.03 -2.08, 259.36 -0.64 M259.36 -0.64 C259.36 -0.64, 259.36 -0.64, 259.36 -0.64 M259.36 -0.64 C259.36 -0.64, 259.36 -0.64, 259.36 -0.64" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(606 428) rotate(0 144 10.5)"><text x="144" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">fireEvent('onNodeAdded', node)</text></g><g stroke-linecap="round"><g transform="translate(621 513) rotate(0 128.3795183248725 -0.48033242302454937)"><path d="M0.35 -0.14 C43.49 0.06, 214.73 0.49, 257.69 0.55 M-0.93 -1.25 C42.13 -1.36, 213.53 -1.76, 256.58 -1.28" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(621 513) rotate(0 128.3795183248725 -0.48033242302454937)"><path d="M254.62 -2.26 L243.84 5.59 L241.77 -7.76 L256.63 -0.7" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M256.58 -1.28 C253.62 -0.36, 251.73 1.41, 242.96 5.01 M256.58 -1.28 C251.65 1.07, 247.44 2.18, 242.96 5.01 M242.96 5.01 C243.75 1.85, 243.39 -0.41, 243.01 -7.67 M242.96 5.01 C243.39 2.74, 242.85 -0.05, 243.01 -7.67 M243.01 -7.67 C246.36 -6.78, 253.16 -2.41, 256.58 -1.28 M243.01 -7.67 C245.84 -5.54, 249.42 -5.2, 256.58 -1.28 M256.58 -1.28 C256.58 -1.28, 256.58 -1.28, 256.58 -1.28 M256.58 -1.28 C256.58 -1.28, 256.58 -1.28, 256.58 -1.28" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(577.2 486) rotate(0 172.79999999999995 10.5)"><text x="172.79999999999998" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">fireEvent('onFlowChanged', flowData)</text></g><g stroke-linecap="round"><g transform="translate(621 571) rotate(0 260.7833992169146 0.14661664062896307)"><path d="M0.78 0.92 C87.94 1.15, 435.04 1.05, 521.84 0.9 M-0.28 0.36 C86.82 0.3, 434 -0.92, 520.81 -0.74" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(621 571) rotate(0 260.7833992169146 0.14661664062896307)"><path d="M520.12 -1.91 L505.43 4.86 L505.35 -5.11 L518.9 1.17" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M520.81 -0.74 C519.17 0.44, 516.37 1.4, 507.22 5.61 M520.81 -0.74 C517.11 1.02, 512.25 2.93, 507.22 5.61 M507.22 5.61 C506.52 0.52, 508.2 -4.13, 507.21 -7.07 M507.22 5.61 C507.25 2.42, 507.44 -0.3, 507.21 -7.07 M507.21 -7.07 C512.57 -5.4, 518.24 -2.77, 520.81 -0.74 M507.21 -7.07 C511.68 -5.42, 514.46 -4.18, 520.81 -0.74 M520.81 -0.74 C520.81 -0.74, 520.81 -0.74, 520.81 -0.74 M520.81 -0.74 C520.81 -0.74, 520.81 -0.74, 520.81 -0.74" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(824.4 544) rotate(0 57.599999999999966 10.5)"><text x="57.599999999999994" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">renderFlow()</text></g><g stroke-linecap="round"><g transform="translate(1146 629) rotate(0 25.87806462895378 21.83072836162893)"><path d="M-0.53 0.25 C7.16 0.22, 37.79 -7.07, 45.61 0.26 C53.44 7.6, 54.07 37.02, 46.43 44.28 C38.79 51.53, 7.45 43.79, -0.2 43.79 M0.2 -0.1 C8.11 -0.32, 38.96 -7.81, 46.65 -0.57 C54.33 6.68, 54.11 35.89, 46.3 43.35 C38.5 50.81, 7.5 43.98, -0.19 44.18" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g><g transform="translate(1146 629) rotate(0 25.87806462895378 21.83072836162893)"><path d="M-0.11 43.35 L14.82 38.74 L11.97 52.15 L0.32 44.76" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M-0.19 44.18 C2.97 42.71, 5.84 42.81, 13.94 39.16 M-0.19 44.18 C5.14 42.63, 10.04 40.48, 13.94 39.16 M13.94 39.16 C13.7 43.16, 13.33 46.53, 12.74 51.78 M13.94 39.16 C13.2 44, 13.21 49.17, 12.74 51.78 M12.74 51.78 C10.19 49.69, 5.93 48.5, -0.19 44.18 M12.74 51.78 C8.35 49.02, 4.65 46.69, -0.19 44.18 M-0.19 44.18 C-0.19 44.18, -0.19 44.18, -0.19 44.18 M-0.19 44.18 C-0.19 44.18, -0.19 44.18, -0.19 44.18" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2" fill="none"/></g></g><mask/><g transform="translate(1202 640.5) rotate(0 220.79999999999995 10.5)"><text x="0" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Render SVG nodes, connections, tethers, panels</text></g><g stroke-linecap="round"><g transform="translate(615 739) rotate(0 -129.6559046253562 -0.37217056900266243)"><path d="M-0.48 -1.13 C-43.42 -1, -216.11 0.09, -258.84 0.38" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2.5" fill="none" stroke-dasharray="8 10"/></g><g transform="translate(615 739) rotate(0 -129.6559046253562 -0.37217056900266243)"><path d="M-259.18 1.02 L-247.26 -5.31 L-247.17 5.19 L-259.84 0.21" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M-258.84 0.38 C-257.46 -1.92, -252.79 -0.76, -245.28 -6.04 M-245.28 -6.04 C-246.31 -1.24, -246.24 3.04, -245.2 6.64 M-245.2 6.64 C-247.73 4.64, -251.29 4.05, -258.84 0.38 M-258.84 0.38 C-258.84 0.38, -258.84 0.38, -258.84 0.38" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2.5" fill="none"/></g></g><mask/><g transform="translate(399.6 712) rotate(0 86.39999999999998 10.5)"><text x="86.39999999999999" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Return node object</text></g><g stroke-linecap="round"><g transform="translate(351 797) rotate(0 -129.92407190054655 -0.6905956402925995)"><path d="M-0.88 -0.16 C-43.84 -0.36, -215.95 -1.41, -258.97 -1.19" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2.5" fill="none" stroke-dasharray="8 10"/></g><g transform="translate(351 797) rotate(0 -129.92407190054655 -0.6905956402925995)"><path d="M-257.94 -0.14 L-243.44 -6.45 L-246.32 3.96 L-258.01 -1.37" stroke="none" stroke-width="0" fill="var(--diagram-ink, #1B1F23)" fill-rule="evenodd"/><path d="M-258.97 -1.19 C-256.45 -3.56, -255 -4.88, -245.36 -7.51 M-245.36 -7.51 C-244.53 -2, -245.1 2.84, -245.38 5.17 M-245.38 5.17 C-249.05 2.77, -254.76 2.76, -258.97 -1.19 M-258.97 -1.19 C-258.97 -1.19, -258.97 -1.19, -258.97 -1.19" stroke="var(--diagram-ink, #1B1F23)" stroke-width="2.5" fill="none"/></g></g><mask/><g transform="translate(135.60000000000002 770) rotate(0 86.39999999999998 10.5)"><text x="86.39999999999999" y="14.096" font-family="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji" font-size="16px" fill="var(--diagram-ink, #1B1F23)" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">Return node object</text></g></svg>