@babylonjs/shared-ui-components 9.0.0 → 9.2.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 (353) hide show
  1. package/colorPicker/colorComponentEntry.d.ts +1 -1
  2. package/colorPicker/colorComponentEntry.js.map +1 -1
  3. package/colorPicker/colorPicker.d.ts +1 -1
  4. package/colorPicker/colorPicker.js.map +1 -1
  5. package/colorPicker/hexColor.d.ts +1 -1
  6. package/colorPicker/hexColor.js.map +1 -1
  7. package/components/Button.d.ts +1 -1
  8. package/components/Button.js.map +1 -1
  9. package/components/Label.d.ts +1 -1
  10. package/components/Label.js.map +1 -1
  11. package/components/bars/CommandBarComponent.d.ts +1 -1
  12. package/components/bars/CommandBarComponent.js.map +1 -1
  13. package/components/bars/CommandButton.module.scss +2 -0
  14. package/components/colorPicker/ColorComponentEntry.d.ts +1 -1
  15. package/components/colorPicker/ColorComponentEntry.js.map +1 -1
  16. package/components/colorPicker/ColorPicker.d.ts +1 -1
  17. package/components/colorPicker/ColorPicker.js.map +1 -1
  18. package/components/colorPicker/HexColor.d.ts +1 -1
  19. package/components/colorPicker/HexColor.js.map +1 -1
  20. package/components/layout/DraggableIcon.d.ts +2 -2
  21. package/components/layout/DraggableIcon.js.map +1 -1
  22. package/components/layout/FlexibleColumn.d.ts +1 -1
  23. package/components/layout/FlexibleColumn.js.map +1 -1
  24. package/components/layout/FlexibleDragHandler.d.ts +1 -1
  25. package/components/layout/FlexibleDragHandler.js.map +1 -1
  26. package/components/layout/FlexibleDropZone.d.ts +1 -1
  27. package/components/layout/FlexibleDropZone.js.map +1 -1
  28. package/components/layout/FlexibleGridContainer.d.ts +1 -1
  29. package/components/layout/FlexibleGridContainer.js.map +1 -1
  30. package/components/layout/FlexibleGridLayout.d.ts +2 -2
  31. package/components/layout/FlexibleGridLayout.js.map +1 -1
  32. package/components/layout/FlexibleResizeBar.d.ts +1 -1
  33. package/components/layout/FlexibleResizeBar.js.map +1 -1
  34. package/components/layout/FlexibleTab.d.ts +2 -2
  35. package/components/layout/FlexibleTab.js.map +1 -1
  36. package/components/layout/FlexibleTabsContainer.d.ts +2 -2
  37. package/components/layout/FlexibleTabsContainer.js.map +1 -1
  38. package/components/layout/LayoutContext.d.ts +1 -1
  39. package/components/layout/LayoutContext.js.map +1 -1
  40. package/components/layout/types.d.ts +1 -1
  41. package/components/layout/types.js.map +1 -1
  42. package/components/layout/utils.d.ts +1 -1
  43. package/components/layout/utils.js.map +1 -1
  44. package/components/lines/ColorPickerLineComponent.d.ts +2 -2
  45. package/components/lines/ColorPickerLineComponent.js.map +1 -1
  46. package/components/lines/NumericInputComponent.d.ts +1 -1
  47. package/components/lines/NumericInputComponent.js.map +1 -1
  48. package/components/lines/OptionsLineComponent.js.map +1 -1
  49. package/components/propertyTabComponentBase.d.ts +1 -1
  50. package/components/propertyTabComponentBase.js.map +1 -1
  51. package/components/reactGraphSystem/GraphConnectorHandle.d.ts +1 -1
  52. package/components/reactGraphSystem/GraphConnectorHandle.js.map +1 -1
  53. package/components/reactGraphSystem/GraphContainer.d.ts +1 -1
  54. package/components/reactGraphSystem/GraphContainer.js.map +1 -1
  55. package/components/reactGraphSystem/GraphLine.d.ts +1 -1
  56. package/components/reactGraphSystem/GraphLine.js.map +1 -1
  57. package/components/reactGraphSystem/GraphLinesContainer.d.ts +1 -1
  58. package/components/reactGraphSystem/GraphLinesContainer.js.map +1 -1
  59. package/components/reactGraphSystem/GraphNode.d.ts +1 -1
  60. package/components/reactGraphSystem/GraphNode.js.map +1 -1
  61. package/components/reactGraphSystem/GraphNodesContainer.d.ts +1 -1
  62. package/components/reactGraphSystem/GraphNodesContainer.js.map +1 -1
  63. package/components/reactGraphSystem/NodeRenderer.d.ts +2 -2
  64. package/components/reactGraphSystem/NodeRenderer.js.map +1 -1
  65. package/constToOptionsMaps.js.map +1 -1
  66. package/copyCommandToClipboard.js.map +1 -1
  67. package/fluent/hoc/buttonLine.d.ts +2 -2
  68. package/fluent/hoc/buttonLine.js.map +1 -1
  69. package/fluent/hoc/childWindow.d.ts +1 -1
  70. package/fluent/hoc/childWindow.js +1 -3
  71. package/fluent/hoc/childWindow.js.map +1 -1
  72. package/fluent/hoc/fileUploadLine.d.ts +2 -2
  73. package/fluent/hoc/fileUploadLine.js.map +1 -1
  74. package/fluent/hoc/fluentToolWrapper.d.ts +2 -2
  75. package/fluent/hoc/fluentToolWrapper.js.map +1 -1
  76. package/fluent/hoc/gradientList.d.ts +2 -2
  77. package/fluent/hoc/gradientList.js.map +1 -1
  78. package/fluent/hoc/pane.d.ts +2 -2
  79. package/fluent/hoc/pane.js.map +1 -1
  80. package/fluent/hoc/propertyLines/booleanBadgePropertyLine.d.ts +3 -3
  81. package/fluent/hoc/propertyLines/booleanBadgePropertyLine.js.map +1 -1
  82. package/fluent/hoc/propertyLines/checkboxPropertyLine.d.ts +3 -3
  83. package/fluent/hoc/propertyLines/checkboxPropertyLine.js.map +1 -1
  84. package/fluent/hoc/propertyLines/colorPropertyLine.d.ts +4 -5
  85. package/fluent/hoc/propertyLines/colorPropertyLine.js.map +1 -1
  86. package/fluent/hoc/propertyLines/comboBoxPropertyLine.d.ts +3 -3
  87. package/fluent/hoc/propertyLines/comboBoxPropertyLine.js.map +1 -1
  88. package/fluent/hoc/propertyLines/dropdownPropertyLine.d.ts +3 -3
  89. package/fluent/hoc/propertyLines/dropdownPropertyLine.js.map +1 -1
  90. package/fluent/hoc/propertyLines/entitySelectorPropertyLine.d.ts +12 -12
  91. package/fluent/hoc/propertyLines/entitySelectorPropertyLine.js.map +1 -1
  92. package/fluent/hoc/propertyLines/hexPropertyLine.d.ts +2 -2
  93. package/fluent/hoc/propertyLines/hexPropertyLine.js.map +1 -1
  94. package/fluent/hoc/propertyLines/inputPropertyLine.d.ts +4 -4
  95. package/fluent/hoc/propertyLines/inputPropertyLine.js.map +1 -1
  96. package/fluent/hoc/propertyLines/linkPropertyLine.d.ts +3 -3
  97. package/fluent/hoc/propertyLines/linkPropertyLine.js.map +1 -1
  98. package/fluent/hoc/propertyLines/propertyLine.d.ts +3 -3
  99. package/fluent/hoc/propertyLines/propertyLine.js +2 -4
  100. package/fluent/hoc/propertyLines/propertyLine.js.map +1 -1
  101. package/fluent/hoc/propertyLines/spinButtonPropertyLine.d.ts +3 -3
  102. package/fluent/hoc/propertyLines/spinButtonPropertyLine.js.map +1 -1
  103. package/fluent/hoc/propertyLines/stringifiedPropertyLine.d.ts +3 -3
  104. package/fluent/hoc/propertyLines/stringifiedPropertyLine.js.map +1 -1
  105. package/fluent/hoc/propertyLines/switchPropertyLine.d.ts +3 -3
  106. package/fluent/hoc/propertyLines/switchPropertyLine.js.map +1 -1
  107. package/fluent/hoc/propertyLines/syncedSliderPropertyLine.d.ts +2 -2
  108. package/fluent/hoc/propertyLines/syncedSliderPropertyLine.js.map +1 -1
  109. package/fluent/hoc/propertyLines/textAreaPropertyLine.d.ts +3 -3
  110. package/fluent/hoc/propertyLines/textAreaPropertyLine.js.map +1 -1
  111. package/fluent/hoc/propertyLines/textPropertyLine.d.ts +3 -3
  112. package/fluent/hoc/propertyLines/textPropertyLine.js.map +1 -1
  113. package/fluent/hoc/propertyLines/vectorPropertyLine.d.ts +4 -5
  114. package/fluent/hoc/propertyLines/vectorPropertyLine.js +2 -2
  115. package/fluent/hoc/propertyLines/vectorPropertyLine.js.map +1 -1
  116. package/fluent/hoc/textureUpload.d.ts +3 -3
  117. package/fluent/hoc/textureUpload.js.map +1 -1
  118. package/fluent/hooks/keyboardHooks.d.ts +1 -1
  119. package/fluent/hooks/keyboardHooks.js +1 -1
  120. package/fluent/hooks/keyboardHooks.js.map +1 -1
  121. package/fluent/primitives/accordion.contexts.d.ts +2 -2
  122. package/fluent/primitives/accordion.contexts.js.map +1 -1
  123. package/fluent/primitives/accordion.d.ts +1 -1
  124. package/fluent/primitives/accordion.js +1 -1
  125. package/fluent/primitives/accordion.js.map +1 -1
  126. package/fluent/primitives/button.d.ts +3 -3
  127. package/fluent/primitives/button.js.map +1 -1
  128. package/fluent/primitives/checkbox.d.ts +2 -2
  129. package/fluent/primitives/checkbox.js.map +1 -1
  130. package/fluent/primitives/clusteredLightContainerSelector.d.ts +5 -5
  131. package/fluent/primitives/clusteredLightContainerSelector.js.map +1 -1
  132. package/fluent/primitives/collapse.d.ts +1 -1
  133. package/fluent/primitives/collapse.js.map +1 -1
  134. package/fluent/primitives/colorPicker.d.ts +2 -2
  135. package/fluent/primitives/colorPicker.js +1 -1
  136. package/fluent/primitives/colorPicker.js.map +1 -1
  137. package/fluent/primitives/comboBox.d.ts +1 -1
  138. package/fluent/primitives/comboBox.js.map +1 -1
  139. package/fluent/primitives/contextMenu.d.ts +4 -4
  140. package/fluent/primitives/contextMenu.js +2 -2
  141. package/fluent/primitives/contextMenu.js.map +1 -1
  142. package/fluent/primitives/dropdown.d.ts +2 -2
  143. package/fluent/primitives/dropdown.js.map +1 -1
  144. package/fluent/primitives/entitySelector.d.ts +2 -2
  145. package/fluent/primitives/entitySelector.js +2 -6
  146. package/fluent/primitives/entitySelector.js.map +1 -1
  147. package/fluent/primitives/gradient.d.ts +2 -2
  148. package/fluent/primitives/gradient.js.map +1 -1
  149. package/fluent/primitives/infoLabel.d.ts +1 -1
  150. package/fluent/primitives/infoLabel.js.map +1 -1
  151. package/fluent/primitives/lazyComponent.d.ts +2 -2
  152. package/fluent/primitives/lazyComponent.js.map +1 -1
  153. package/fluent/primitives/link.d.ts +1 -1
  154. package/fluent/primitives/link.js.map +1 -1
  155. package/fluent/primitives/list.d.ts +1 -1
  156. package/fluent/primitives/list.js +1 -1
  157. package/fluent/primitives/list.js.map +1 -1
  158. package/fluent/primitives/materialSelector.d.ts +6 -6
  159. package/fluent/primitives/materialSelector.js.map +1 -1
  160. package/fluent/primitives/messageBar.d.ts +1 -1
  161. package/fluent/primitives/messageBar.js.map +1 -1
  162. package/fluent/primitives/nodeSelector.d.ts +6 -6
  163. package/fluent/primitives/nodeSelector.js.map +1 -1
  164. package/fluent/primitives/popover.d.ts +3 -3
  165. package/fluent/primitives/popover.js +1 -1
  166. package/fluent/primitives/popover.js.map +1 -1
  167. package/fluent/primitives/positionedPopover.d.ts +1 -1
  168. package/fluent/primitives/positionedPopover.js.map +1 -1
  169. package/fluent/primitives/primitive.d.ts +1 -1
  170. package/fluent/primitives/primitive.js.map +1 -1
  171. package/fluent/primitives/searchBar.js.map +1 -1
  172. package/fluent/primitives/searchBox.d.ts +1 -1
  173. package/fluent/primitives/searchBox.js.map +1 -1
  174. package/fluent/primitives/skeletonSelector.d.ts +6 -6
  175. package/fluent/primitives/skeletonSelector.js.map +1 -1
  176. package/fluent/primitives/slider.d.ts +2 -2
  177. package/fluent/primitives/slider.js.map +1 -1
  178. package/fluent/primitives/spinButton.d.ts +1 -1
  179. package/fluent/primitives/spinButton.js +5 -2
  180. package/fluent/primitives/spinButton.js.map +1 -1
  181. package/fluent/primitives/switch.d.ts +2 -2
  182. package/fluent/primitives/switch.js.map +1 -1
  183. package/fluent/primitives/syncedSlider.d.ts +2 -2
  184. package/fluent/primitives/syncedSlider.js +1 -1
  185. package/fluent/primitives/syncedSlider.js.map +1 -1
  186. package/fluent/primitives/textInput.d.ts +2 -2
  187. package/fluent/primitives/textInput.js.map +1 -1
  188. package/fluent/primitives/textarea.d.ts +2 -2
  189. package/fluent/primitives/textarea.js.map +1 -1
  190. package/fluent/primitives/textureSelector.d.ts +6 -6
  191. package/fluent/primitives/textureSelector.js +2 -2
  192. package/fluent/primitives/textureSelector.js.map +1 -1
  193. package/fluent/primitives/toast.d.ts +34 -3
  194. package/fluent/primitives/toast.js +9 -4
  195. package/fluent/primitives/toast.js.map +1 -1
  196. package/fluent/primitives/toggleButton.d.ts +3 -3
  197. package/fluent/primitives/toggleButton.js.map +1 -1
  198. package/fluent/primitives/tooltip.d.ts +2 -2
  199. package/fluent/primitives/tooltip.js.map +1 -1
  200. package/fluent/primitives/uploadButton.d.ts +2 -2
  201. package/fluent/primitives/uploadButton.js.map +1 -1
  202. package/fluent/primitives/utils.d.ts +2 -2
  203. package/fluent/primitives/utils.js.map +1 -1
  204. package/historyStack.d.ts +9 -1
  205. package/historyStack.js +15 -0
  206. package/historyStack.js.map +1 -1
  207. package/lines/booleanLineComponent.js +2 -2
  208. package/lines/checkBoxLineComponent.d.ts +3 -3
  209. package/lines/checkBoxLineComponent.js.map +1 -1
  210. package/lines/color3LineComponent.d.ts +3 -3
  211. package/lines/color3LineComponent.js.map +1 -1
  212. package/lines/color4LineComponent.d.ts +3 -3
  213. package/lines/color4LineComponent.js.map +1 -1
  214. package/lines/colorLineComponent.d.ts +3 -3
  215. package/lines/colorLineComponent.js.map +1 -1
  216. package/lines/colorPickerComponent.d.ts +2 -2
  217. package/lines/colorPickerComponent.js.map +1 -1
  218. package/lines/draggableLineComponent.d.ts +1 -1
  219. package/lines/draggableLineComponent.js.map +1 -1
  220. package/lines/fileButtonLineComponent.js +1 -1
  221. package/lines/floatLineComponent.d.ts +3 -3
  222. package/lines/floatLineComponent.js.map +1 -1
  223. package/lines/hexLineComponent.d.ts +3 -3
  224. package/lines/hexLineComponent.js.map +1 -1
  225. package/lines/lineContainerComponent.d.ts +1 -1
  226. package/lines/lineContainerComponent.js.map +1 -1
  227. package/lines/lineWithFileButtonComponent.js +1 -1
  228. package/lines/lineWithFileButtonComponent.js.map +1 -1
  229. package/lines/linkButtonComponent.d.ts +1 -1
  230. package/lines/linkButtonComponent.js.map +1 -1
  231. package/lines/matrixLineComponent.d.ts +4 -5
  232. package/lines/matrixLineComponent.js.map +1 -1
  233. package/lines/messageLineComponent.d.ts +1 -1
  234. package/lines/messageLineComponent.js.map +1 -1
  235. package/lines/numericInputComponent.d.ts +1 -1
  236. package/lines/numericInputComponent.js.map +1 -1
  237. package/lines/optionsLineComponent.d.ts +3 -3
  238. package/lines/optionsLineComponent.js.map +1 -1
  239. package/lines/radioLineComponent.d.ts +1 -1
  240. package/lines/radioLineComponent.js.map +1 -1
  241. package/lines/sliderLineComponent.d.ts +3 -3
  242. package/lines/sliderLineComponent.js.map +1 -1
  243. package/lines/targetsProxy.d.ts +2 -2
  244. package/lines/targetsProxy.js.map +1 -1
  245. package/lines/textInputLineComponent.d.ts +4 -5
  246. package/lines/textInputLineComponent.js.map +1 -1
  247. package/lines/textureButtonLineComponent.d.ts +2 -2
  248. package/lines/textureButtonLineComponent.js.map +1 -1
  249. package/lines/vector2LineComponent.d.ts +3 -3
  250. package/lines/vector2LineComponent.js.map +1 -1
  251. package/lines/vector3LineComponent.d.ts +3 -3
  252. package/lines/vector3LineComponent.js.map +1 -1
  253. package/lines/vector4LineComponent.d.ts +3 -3
  254. package/lines/vector4LineComponent.js.map +1 -1
  255. package/nodeGraphSystem/automaticProperties.d.ts +2 -2
  256. package/nodeGraphSystem/automaticProperties.js.map +1 -1
  257. package/nodeGraphSystem/common.module.scss +3 -0
  258. package/nodeGraphSystem/frameNodePort.d.ts +6 -6
  259. package/nodeGraphSystem/frameNodePort.js.map +1 -1
  260. package/nodeGraphSystem/graphCanvas.d.ts +43 -6
  261. package/nodeGraphSystem/graphCanvas.js +139 -6
  262. package/nodeGraphSystem/graphCanvas.js.map +1 -1
  263. package/nodeGraphSystem/graphFrame.d.ts +4 -4
  264. package/nodeGraphSystem/graphFrame.js.map +1 -1
  265. package/nodeGraphSystem/graphMinimap.d.ts +79 -0
  266. package/nodeGraphSystem/graphMinimap.js +319 -0
  267. package/nodeGraphSystem/graphMinimap.js.map +1 -0
  268. package/nodeGraphSystem/graphMinimap.module.scss +30 -0
  269. package/nodeGraphSystem/graphNode.d.ts +24 -8
  270. package/nodeGraphSystem/graphNode.js +76 -1
  271. package/nodeGraphSystem/graphNode.js.map +1 -1
  272. package/nodeGraphSystem/graphNode.module.scss +61 -0
  273. package/nodeGraphSystem/graphSearch.d.ts +54 -0
  274. package/nodeGraphSystem/graphSearch.js +181 -0
  275. package/nodeGraphSystem/graphSearch.js.map +1 -0
  276. package/nodeGraphSystem/graphSearch.module.scss +86 -0
  277. package/nodeGraphSystem/graphStickyNote.d.ts +94 -0
  278. package/nodeGraphSystem/graphStickyNote.js +310 -0
  279. package/nodeGraphSystem/graphStickyNote.js.map +1 -0
  280. package/nodeGraphSystem/graphStickyNote.module.scss +87 -0
  281. package/nodeGraphSystem/interfaces/displayManager.d.ts +4 -4
  282. package/nodeGraphSystem/interfaces/displayManager.js.map +1 -1
  283. package/nodeGraphSystem/interfaces/nodeContainer.d.ts +2 -2
  284. package/nodeGraphSystem/interfaces/nodeContainer.js.map +1 -1
  285. package/nodeGraphSystem/interfaces/nodeData.d.ts +4 -2
  286. package/nodeGraphSystem/interfaces/nodeData.js.map +1 -1
  287. package/nodeGraphSystem/interfaces/nodeLocationInfo.d.ts +10 -0
  288. package/nodeGraphSystem/interfaces/nodeLocationInfo.js.map +1 -1
  289. package/nodeGraphSystem/interfaces/portData.d.ts +4 -3
  290. package/nodeGraphSystem/interfaces/portData.js +1 -0
  291. package/nodeGraphSystem/interfaces/portData.js.map +1 -1
  292. package/nodeGraphSystem/interfaces/propertyComponentProps.d.ts +2 -2
  293. package/nodeGraphSystem/interfaces/propertyComponentProps.js.map +1 -1
  294. package/nodeGraphSystem/interfaces/selectionChangedOptions.d.ts +8 -7
  295. package/nodeGraphSystem/interfaces/selectionChangedOptions.js.map +1 -1
  296. package/nodeGraphSystem/nodeLink.d.ts +16 -4
  297. package/nodeGraphSystem/nodeLink.js +77 -0
  298. package/nodeGraphSystem/nodeLink.js.map +1 -1
  299. package/nodeGraphSystem/nodePort.d.ts +8 -8
  300. package/nodeGraphSystem/nodePort.js +26 -1
  301. package/nodeGraphSystem/nodePort.js.map +1 -1
  302. package/nodeGraphSystem/nodePort.module.scss +37 -0
  303. package/nodeGraphSystem/propertyLedger.d.ts +2 -2
  304. package/nodeGraphSystem/propertyLedger.js.map +1 -1
  305. package/nodeGraphSystem/searchBox.d.ts +1 -1
  306. package/nodeGraphSystem/searchBox.js.map +1 -1
  307. package/nodeGraphSystem/stateManager.d.ts +18 -12
  308. package/nodeGraphSystem/stateManager.js +6 -0
  309. package/nodeGraphSystem/stateManager.js.map +1 -1
  310. package/nodeGraphSystem/tools.d.ts +4 -4
  311. package/nodeGraphSystem/tools.js.map +1 -1
  312. package/nodeGraphSystem/typeLedger.d.ts +4 -4
  313. package/nodeGraphSystem/typeLedger.js.map +1 -1
  314. package/nodeGraphSystem/types/framePortData.d.ts +2 -2
  315. package/nodeGraphSystem/types/framePortData.js.map +1 -1
  316. package/package.json +3 -4
  317. package/split/splitContainer.d.ts +1 -1
  318. package/split/splitContainer.js +3 -2
  319. package/split/splitContainer.js.map +1 -1
  320. package/split/splitter.d.ts +1 -1
  321. package/split/splitter.js.map +1 -1
  322. package/tabs/propertyGrids/gui/checkboxPropertyGridComponent.d.ts +4 -4
  323. package/tabs/propertyGrids/gui/checkboxPropertyGridComponent.js.map +1 -1
  324. package/tabs/propertyGrids/gui/colorPickerPropertyGridComponent.d.ts +4 -4
  325. package/tabs/propertyGrids/gui/colorPickerPropertyGridComponent.js.map +1 -1
  326. package/tabs/propertyGrids/gui/commonControlPropertyGridComponent.d.ts +3 -3
  327. package/tabs/propertyGrids/gui/commonControlPropertyGridComponent.js.map +1 -1
  328. package/tabs/propertyGrids/gui/controlPropertyGridComponent.d.ts +4 -4
  329. package/tabs/propertyGrids/gui/controlPropertyGridComponent.js.map +1 -1
  330. package/tabs/propertyGrids/gui/ellipsePropertyGridComponent.d.ts +4 -4
  331. package/tabs/propertyGrids/gui/ellipsePropertyGridComponent.js.map +1 -1
  332. package/tabs/propertyGrids/gui/gridPropertyGridComponent.d.ts +4 -4
  333. package/tabs/propertyGrids/gui/gridPropertyGridComponent.js.map +1 -1
  334. package/tabs/propertyGrids/gui/imageBasedSliderPropertyGridComponent.d.ts +4 -4
  335. package/tabs/propertyGrids/gui/imageBasedSliderPropertyGridComponent.js.map +1 -1
  336. package/tabs/propertyGrids/gui/imagePropertyGridComponent.d.ts +3 -3
  337. package/tabs/propertyGrids/gui/imagePropertyGridComponent.js.map +1 -1
  338. package/tabs/propertyGrids/gui/inputTextPropertyGridComponent.d.ts +4 -4
  339. package/tabs/propertyGrids/gui/inputTextPropertyGridComponent.js.map +1 -1
  340. package/tabs/propertyGrids/gui/linePropertyGridComponent.d.ts +4 -4
  341. package/tabs/propertyGrids/gui/linePropertyGridComponent.js.map +1 -1
  342. package/tabs/propertyGrids/gui/radioButtonPropertyGridComponent.d.ts +4 -4
  343. package/tabs/propertyGrids/gui/radioButtonPropertyGridComponent.js.map +1 -1
  344. package/tabs/propertyGrids/gui/rectanglePropertyGridComponent.d.ts +4 -4
  345. package/tabs/propertyGrids/gui/rectanglePropertyGridComponent.js.map +1 -1
  346. package/tabs/propertyGrids/gui/scrollViewerPropertyGridComponent.d.ts +4 -4
  347. package/tabs/propertyGrids/gui/scrollViewerPropertyGridComponent.js.map +1 -1
  348. package/tabs/propertyGrids/gui/sliderPropertyGridComponent.d.ts +4 -4
  349. package/tabs/propertyGrids/gui/sliderPropertyGridComponent.js.map +1 -1
  350. package/tabs/propertyGrids/gui/stackPanelPropertyGridComponent.d.ts +4 -4
  351. package/tabs/propertyGrids/gui/stackPanelPropertyGridComponent.js.map +1 -1
  352. package/tabs/propertyGrids/gui/textBlockPropertyGridComponent.d.ts +4 -4
  353. package/tabs/propertyGrids/gui/textBlockPropertyGridComponent.js.map +1 -1
@@ -0,0 +1,310 @@
1
+ import * as styles from "./graphStickyNote.module.scss";
2
+ /**
3
+ * Auto-incrementing counter for unique sticky note IDs.
4
+ */
5
+ let StickyNoteCounter = 0;
6
+ /**
7
+ * A free-floating sticky note annotation on the graph canvas.
8
+ *
9
+ * Sticky notes are lightweight, text-only overlays that live in the frame container.
10
+ * They support dragging, resizing, and inline editing of both title and body text.
11
+ * Unlike frames, they do not group or contain nodes.
12
+ */
13
+ export class GraphStickyNote {
14
+ /** Unique ID for this sticky note */
15
+ get id() {
16
+ return this._id;
17
+ }
18
+ /** X position in canvas space */
19
+ get x() {
20
+ return this._x;
21
+ }
22
+ /** X position in canvas space */
23
+ set x(value) {
24
+ this._x = value;
25
+ this.element.style.left = `${this._ownerCanvas.getGridPosition(value)}px`;
26
+ }
27
+ /** Y position in canvas space */
28
+ get y() {
29
+ return this._y;
30
+ }
31
+ /** Y position in canvas space */
32
+ set y(value) {
33
+ this._y = value;
34
+ this.element.style.top = `${this._ownerCanvas.getGridPosition(value)}px`;
35
+ }
36
+ /** Width in pixels */
37
+ get width() {
38
+ return this._width;
39
+ }
40
+ /** Width in pixels */
41
+ set width(value) {
42
+ this._width = Math.max(100, value);
43
+ this.element.style.width = `${this._width}px`;
44
+ }
45
+ /** Height in pixels */
46
+ get height() {
47
+ return this._height;
48
+ }
49
+ /** Height in pixels */
50
+ set height(value) {
51
+ this._height = Math.max(60, value);
52
+ this.element.style.height = `${this._height}px`;
53
+ }
54
+ /** Display name */
55
+ get name() {
56
+ return this._name;
57
+ }
58
+ /** Display name */
59
+ set name(value) {
60
+ this._name = value;
61
+ this._titleElement.textContent = value;
62
+ }
63
+ /** Body text content */
64
+ get body() {
65
+ return this._body;
66
+ }
67
+ /** Body text content */
68
+ set body(value) {
69
+ this._body = value;
70
+ this._bodyElement.textContent = value;
71
+ }
72
+ /** Background color CSS value */
73
+ get color() {
74
+ return this._color;
75
+ }
76
+ /** Background color CSS value */
77
+ set color(value) {
78
+ this._color = value;
79
+ this.element.style.background = value;
80
+ }
81
+ /**
82
+ * Create a new sticky note on the canvas.
83
+ * @param canvas - the owning graph canvas component
84
+ */
85
+ constructor(canvas) {
86
+ this._x = 0;
87
+ this._y = 0;
88
+ this._width = 180;
89
+ this._height = 120;
90
+ this._name = "Note";
91
+ this._body = "";
92
+ this._color = "rgba(255, 235, 130, 0.92)";
93
+ // Drag state
94
+ this._mouseStartX = 0;
95
+ this._mouseStartY = 0;
96
+ this._isDragging = false;
97
+ this._isResizing = false;
98
+ this._resizeStartW = 0;
99
+ this._resizeStartH = 0;
100
+ this._onDragMoveHandler = (evt) => {
101
+ if (!this._isDragging) {
102
+ return;
103
+ }
104
+ const zoom = this._ownerCanvas.zoom;
105
+ const dx = (evt.clientX - this._mouseStartX) / zoom;
106
+ const dy = (evt.clientY - this._mouseStartY) / zoom;
107
+ this._mouseStartX = evt.clientX;
108
+ this._mouseStartY = evt.clientY;
109
+ this.x += dx;
110
+ this.y += dy;
111
+ };
112
+ this._onDragEndHandler = (evt) => {
113
+ this._isDragging = false;
114
+ this._headerElement.releasePointerCapture(evt.pointerId);
115
+ this._headerElement.removeEventListener("pointermove", this._onDragMoveHandler);
116
+ this._headerElement.removeEventListener("pointerup", this._onDragEndHandler);
117
+ };
118
+ this._onResizeMoveHandler = (evt) => {
119
+ if (!this._isResizing) {
120
+ return;
121
+ }
122
+ const zoom = this._ownerCanvas.zoom;
123
+ const dx = (evt.clientX - this._mouseStartX) / zoom;
124
+ const dy = (evt.clientY - this._mouseStartY) / zoom;
125
+ this.width = this._resizeStartW + dx;
126
+ this.height = this._resizeStartH + dy;
127
+ };
128
+ this._onResizeEndHandler = (evt) => {
129
+ this._isResizing = false;
130
+ this._resizeHandle.releasePointerCapture(evt.pointerId);
131
+ this._resizeHandle.removeEventListener("pointermove", this._onResizeMoveHandler);
132
+ this._resizeHandle.removeEventListener("pointerup", this._onResizeEndHandler);
133
+ };
134
+ this._id = StickyNoteCounter++;
135
+ this._ownerCanvas = canvas;
136
+ const root = canvas.frameContainer;
137
+ const doc = root.ownerDocument;
138
+ // Root element
139
+ this.element = doc.createElement("div");
140
+ this.element.classList.add(styles["sticky-note"]);
141
+ root.appendChild(this.element);
142
+ // Header (drag handle + title + close button)
143
+ this._headerElement = doc.createElement("div");
144
+ this._headerElement.classList.add(styles["sticky-note-header"]);
145
+ this.element.appendChild(this._headerElement);
146
+ this._titleElement = doc.createElement("div");
147
+ this._titleElement.classList.add(styles["sticky-note-title"]);
148
+ this._titleElement.textContent = this._name;
149
+ this._titleElement.contentEditable = "false";
150
+ this._headerElement.appendChild(this._titleElement);
151
+ // Double-click title to edit
152
+ this._titleElement.addEventListener("dblclick", (evt) => {
153
+ evt.stopPropagation();
154
+ this._titleElement.contentEditable = "true";
155
+ this._titleElement.focus();
156
+ // Select all text
157
+ const range = doc.createRange();
158
+ range.selectNodeContents(this._titleElement);
159
+ const sel = doc.defaultView?.getSelection();
160
+ if (sel) {
161
+ sel.removeAllRanges();
162
+ sel.addRange(range);
163
+ }
164
+ });
165
+ this._titleElement.addEventListener("blur", () => {
166
+ this._titleElement.contentEditable = "false";
167
+ this._name = this._titleElement.textContent || "Note";
168
+ });
169
+ this._titleElement.addEventListener("keydown", (evt) => {
170
+ if (evt.key === "Enter") {
171
+ evt.preventDefault();
172
+ this._titleElement.blur();
173
+ }
174
+ evt.stopPropagation();
175
+ });
176
+ // Close button
177
+ const closeBtn = doc.createElement("div");
178
+ closeBtn.classList.add(styles["sticky-note-close"]);
179
+ closeBtn.textContent = "\u00D7"; // ×
180
+ closeBtn.addEventListener("pointerdown", (evt) => {
181
+ evt.stopPropagation();
182
+ });
183
+ closeBtn.addEventListener("click", (evt) => {
184
+ evt.stopPropagation();
185
+ this.dispose();
186
+ });
187
+ this._headerElement.appendChild(closeBtn);
188
+ // Body (editable text area)
189
+ this._bodyElement = doc.createElement("div");
190
+ this._bodyElement.classList.add(styles["sticky-note-body"]);
191
+ this._bodyElement.contentEditable = "true";
192
+ this._bodyElement.textContent = this._body;
193
+ this.element.appendChild(this._bodyElement);
194
+ this._bodyElement.addEventListener("input", () => {
195
+ this._body = this._bodyElement.textContent || "";
196
+ });
197
+ // Stop keyboard events from bubbling while editing body
198
+ this._bodyElement.addEventListener("keydown", (evt) => {
199
+ evt.stopPropagation();
200
+ });
201
+ // Resize handle
202
+ this._resizeHandle = doc.createElement("div");
203
+ this._resizeHandle.classList.add(styles["sticky-note-resize"]);
204
+ this.element.appendChild(this._resizeHandle);
205
+ // --- Event wiring ---
206
+ // Drag via header
207
+ this._headerElement.addEventListener("pointerdown", (evt) => this._onDragStart(evt));
208
+ // Resize via handle
209
+ this._resizeHandle.addEventListener("pointerdown", (evt) => this._onResizeStart(evt));
210
+ // Click to select
211
+ this.element.addEventListener("pointerdown", (evt) => {
212
+ evt.stopPropagation();
213
+ if (!this._ownerCanvas.selectedStickyNotes.includes(this)) {
214
+ this._ownerCanvas.stateManager.onSelectionChangedObservable.notifyObservers({ selection: this });
215
+ }
216
+ });
217
+ // Apply initial dimensions
218
+ this.element.style.width = `${this._width}px`;
219
+ this.element.style.height = `${this._height}px`;
220
+ }
221
+ /**
222
+ * Mark this note as visually selected or deselected.
223
+ * @param selected - whether the note is selected
224
+ */
225
+ setIsSelected(selected) {
226
+ if (selected) {
227
+ this.element.classList.add(styles["selected"]);
228
+ }
229
+ else {
230
+ this.element.classList.remove(styles["selected"]);
231
+ }
232
+ }
233
+ /**
234
+ * Serialize this sticky note to a plain data object.
235
+ * @returns the serialized data
236
+ */
237
+ serialize() {
238
+ return {
239
+ x: this._x,
240
+ y: this._y,
241
+ width: this._width,
242
+ height: this._height,
243
+ name: this._name,
244
+ body: this._body,
245
+ color: this._color,
246
+ };
247
+ }
248
+ /**
249
+ * Create a sticky note from serialized data.
250
+ * @param data - the serialized sticky note data
251
+ * @param canvas - the owning graph canvas
252
+ * @returns the new sticky note instance
253
+ */
254
+ static Parse(data, canvas) {
255
+ const note = new GraphStickyNote(canvas);
256
+ note.x = data.x;
257
+ note.y = data.y;
258
+ note.width = data.width;
259
+ note.height = data.height;
260
+ note.name = data.name;
261
+ note.body = data.body;
262
+ if (data.color) {
263
+ note.color = data.color;
264
+ }
265
+ return note;
266
+ }
267
+ /**
268
+ * Remove this sticky note from the canvas and clean up.
269
+ */
270
+ dispose() {
271
+ this.element.parentElement?.removeChild(this.element);
272
+ const idx = this._ownerCanvas.stickyNotes.indexOf(this);
273
+ if (idx !== -1) {
274
+ this._ownerCanvas.stickyNotes.splice(idx, 1);
275
+ }
276
+ // Deselect if selected
277
+ const selIdx = this._ownerCanvas.selectedStickyNotes.indexOf(this);
278
+ if (selIdx !== -1) {
279
+ this._ownerCanvas.selectedStickyNotes.splice(selIdx, 1);
280
+ }
281
+ this._ownerCanvas.stateManager.onRebuildRequiredObservable.notifyObservers();
282
+ }
283
+ // --- Drag ---
284
+ _onDragStart(evt) {
285
+ // Don't drag if we're editing the title
286
+ if (this._titleElement.contentEditable === "true") {
287
+ return;
288
+ }
289
+ this._isDragging = true;
290
+ this._mouseStartX = evt.clientX;
291
+ this._mouseStartY = evt.clientY;
292
+ this._headerElement.setPointerCapture(evt.pointerId);
293
+ this._headerElement.addEventListener("pointermove", this._onDragMoveHandler);
294
+ this._headerElement.addEventListener("pointerup", this._onDragEndHandler);
295
+ evt.stopPropagation();
296
+ }
297
+ // --- Resize ---
298
+ _onResizeStart(evt) {
299
+ this._isResizing = true;
300
+ this._mouseStartX = evt.clientX;
301
+ this._mouseStartY = evt.clientY;
302
+ this._resizeStartW = this._width;
303
+ this._resizeStartH = this._height;
304
+ this._resizeHandle.setPointerCapture(evt.pointerId);
305
+ this._resizeHandle.addEventListener("pointermove", this._onResizeMoveHandler);
306
+ this._resizeHandle.addEventListener("pointerup", this._onResizeEndHandler);
307
+ evt.stopPropagation();
308
+ }
309
+ }
310
+ //# sourceMappingURL=graphStickyNote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphStickyNote.js","sourceRoot":"","sources":["../../../../dev/sharedUiComponents/src/nodeGraphSystem/graphStickyNote.ts"],"names":[],"mappings":"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","sourcesContent":["import * as styles from \"./graphStickyNote.module.scss\";\nimport { type GraphCanvasComponent } from \"./graphCanvas\";\nimport { type IStickyNoteData } from \"./interfaces/nodeLocationInfo\";\n\n/**\n * Auto-incrementing counter for unique sticky note IDs.\n */\nlet StickyNoteCounter = 0;\n\n/**\n * A free-floating sticky note annotation on the graph canvas.\n *\n * Sticky notes are lightweight, text-only overlays that live in the frame container.\n * They support dragging, resizing, and inline editing of both title and body text.\n * Unlike frames, they do not group or contain nodes.\n */\nexport class GraphStickyNote {\n /** The root DOM element for this sticky note. */\n public element: HTMLDivElement;\n\n private _ownerCanvas: GraphCanvasComponent;\n private _id: number;\n private _x = 0;\n private _y = 0;\n private _width = 180;\n private _height = 120;\n private _name = \"Note\";\n private _body = \"\";\n private _color = \"rgba(255, 235, 130, 0.92)\";\n\n // DOM\n private _headerElement: HTMLDivElement;\n private _titleElement: HTMLDivElement;\n private _bodyElement: HTMLDivElement;\n private _resizeHandle: HTMLDivElement;\n\n // Drag state\n private _mouseStartX = 0;\n private _mouseStartY = 0;\n private _isDragging = false;\n private _isResizing = false;\n private _resizeStartW = 0;\n private _resizeStartH = 0;\n\n /** Unique ID for this sticky note */\n public get id() {\n return this._id;\n }\n\n /** X position in canvas space */\n public get x() {\n return this._x;\n }\n\n /** X position in canvas space */\n public set x(value: number) {\n this._x = value;\n this.element.style.left = `${this._ownerCanvas.getGridPosition(value)}px`;\n }\n\n /** Y position in canvas space */\n public get y() {\n return this._y;\n }\n\n /** Y position in canvas space */\n public set y(value: number) {\n this._y = value;\n this.element.style.top = `${this._ownerCanvas.getGridPosition(value)}px`;\n }\n\n /** Width in pixels */\n public get width() {\n return this._width;\n }\n\n /** Width in pixels */\n public set width(value: number) {\n this._width = Math.max(100, value);\n this.element.style.width = `${this._width}px`;\n }\n\n /** Height in pixels */\n public get height() {\n return this._height;\n }\n\n /** Height in pixels */\n public set height(value: number) {\n this._height = Math.max(60, value);\n this.element.style.height = `${this._height}px`;\n }\n\n /** Display name */\n public get name() {\n return this._name;\n }\n\n /** Display name */\n public set name(value: string) {\n this._name = value;\n this._titleElement.textContent = value;\n }\n\n /** Body text content */\n public get body() {\n return this._body;\n }\n\n /** Body text content */\n public set body(value: string) {\n this._body = value;\n this._bodyElement.textContent = value;\n }\n\n /** Background color CSS value */\n public get color() {\n return this._color;\n }\n\n /** Background color CSS value */\n public set color(value: string) {\n this._color = value;\n this.element.style.background = value;\n }\n\n /**\n * Create a new sticky note on the canvas.\n * @param canvas - the owning graph canvas component\n */\n constructor(canvas: GraphCanvasComponent) {\n this._id = StickyNoteCounter++;\n this._ownerCanvas = canvas;\n\n const root = canvas.frameContainer;\n const doc = root.ownerDocument;\n\n // Root element\n this.element = doc.createElement(\"div\");\n this.element.classList.add(styles[\"sticky-note\"]);\n root.appendChild(this.element);\n\n // Header (drag handle + title + close button)\n this._headerElement = doc.createElement(\"div\");\n this._headerElement.classList.add(styles[\"sticky-note-header\"]);\n this.element.appendChild(this._headerElement);\n\n this._titleElement = doc.createElement(\"div\");\n this._titleElement.classList.add(styles[\"sticky-note-title\"]);\n this._titleElement.textContent = this._name;\n this._titleElement.contentEditable = \"false\";\n this._headerElement.appendChild(this._titleElement);\n\n // Double-click title to edit\n this._titleElement.addEventListener(\"dblclick\", (evt) => {\n evt.stopPropagation();\n this._titleElement.contentEditable = \"true\";\n this._titleElement.focus();\n // Select all text\n const range = doc.createRange();\n range.selectNodeContents(this._titleElement);\n const sel = doc.defaultView?.getSelection();\n if (sel) {\n sel.removeAllRanges();\n sel.addRange(range);\n }\n });\n\n this._titleElement.addEventListener(\"blur\", () => {\n this._titleElement.contentEditable = \"false\";\n this._name = this._titleElement.textContent || \"Note\";\n });\n\n this._titleElement.addEventListener(\"keydown\", (evt) => {\n if (evt.key === \"Enter\") {\n evt.preventDefault();\n this._titleElement.blur();\n }\n evt.stopPropagation();\n });\n\n // Close button\n const closeBtn = doc.createElement(\"div\");\n closeBtn.classList.add(styles[\"sticky-note-close\"]);\n closeBtn.textContent = \"\\u00D7\"; // ×\n closeBtn.addEventListener(\"pointerdown\", (evt) => {\n evt.stopPropagation();\n });\n closeBtn.addEventListener(\"click\", (evt) => {\n evt.stopPropagation();\n this.dispose();\n });\n this._headerElement.appendChild(closeBtn);\n\n // Body (editable text area)\n this._bodyElement = doc.createElement(\"div\");\n this._bodyElement.classList.add(styles[\"sticky-note-body\"]);\n this._bodyElement.contentEditable = \"true\";\n this._bodyElement.textContent = this._body;\n this.element.appendChild(this._bodyElement);\n\n this._bodyElement.addEventListener(\"input\", () => {\n this._body = this._bodyElement.textContent || \"\";\n });\n\n // Stop keyboard events from bubbling while editing body\n this._bodyElement.addEventListener(\"keydown\", (evt) => {\n evt.stopPropagation();\n });\n\n // Resize handle\n this._resizeHandle = doc.createElement(\"div\");\n this._resizeHandle.classList.add(styles[\"sticky-note-resize\"]);\n this.element.appendChild(this._resizeHandle);\n\n // --- Event wiring ---\n\n // Drag via header\n this._headerElement.addEventListener(\"pointerdown\", (evt) => this._onDragStart(evt));\n\n // Resize via handle\n this._resizeHandle.addEventListener(\"pointerdown\", (evt) => this._onResizeStart(evt));\n\n // Click to select\n this.element.addEventListener(\"pointerdown\", (evt) => {\n evt.stopPropagation();\n if (!this._ownerCanvas.selectedStickyNotes.includes(this)) {\n this._ownerCanvas.stateManager.onSelectionChangedObservable.notifyObservers({ selection: this });\n }\n });\n\n // Apply initial dimensions\n this.element.style.width = `${this._width}px`;\n this.element.style.height = `${this._height}px`;\n }\n\n /**\n * Mark this note as visually selected or deselected.\n * @param selected - whether the note is selected\n */\n public setIsSelected(selected: boolean) {\n if (selected) {\n this.element.classList.add(styles[\"selected\"]);\n } else {\n this.element.classList.remove(styles[\"selected\"]);\n }\n }\n\n /**\n * Serialize this sticky note to a plain data object.\n * @returns the serialized data\n */\n public serialize(): IStickyNoteData {\n return {\n x: this._x,\n y: this._y,\n width: this._width,\n height: this._height,\n name: this._name,\n body: this._body,\n color: this._color,\n };\n }\n\n /**\n * Create a sticky note from serialized data.\n * @param data - the serialized sticky note data\n * @param canvas - the owning graph canvas\n * @returns the new sticky note instance\n */\n public static Parse(data: IStickyNoteData, canvas: GraphCanvasComponent): GraphStickyNote {\n const note = new GraphStickyNote(canvas);\n note.x = data.x;\n note.y = data.y;\n note.width = data.width;\n note.height = data.height;\n note.name = data.name;\n note.body = data.body;\n if (data.color) {\n note.color = data.color;\n }\n return note;\n }\n\n /**\n * Remove this sticky note from the canvas and clean up.\n */\n public dispose() {\n this.element.parentElement?.removeChild(this.element);\n const idx = this._ownerCanvas.stickyNotes.indexOf(this);\n if (idx !== -1) {\n this._ownerCanvas.stickyNotes.splice(idx, 1);\n }\n // Deselect if selected\n const selIdx = this._ownerCanvas.selectedStickyNotes.indexOf(this);\n if (selIdx !== -1) {\n this._ownerCanvas.selectedStickyNotes.splice(selIdx, 1);\n }\n this._ownerCanvas.stateManager.onRebuildRequiredObservable.notifyObservers();\n }\n\n // --- Drag ---\n\n private _onDragStart(evt: PointerEvent) {\n // Don't drag if we're editing the title\n if (this._titleElement.contentEditable === \"true\") {\n return;\n }\n this._isDragging = true;\n this._mouseStartX = evt.clientX;\n this._mouseStartY = evt.clientY;\n this._headerElement.setPointerCapture(evt.pointerId);\n this._headerElement.addEventListener(\"pointermove\", this._onDragMoveHandler);\n this._headerElement.addEventListener(\"pointerup\", this._onDragEndHandler);\n evt.stopPropagation();\n }\n\n private _onDragMoveHandler = (evt: PointerEvent) => {\n if (!this._isDragging) {\n return;\n }\n const zoom = this._ownerCanvas.zoom;\n const dx = (evt.clientX - this._mouseStartX) / zoom;\n const dy = (evt.clientY - this._mouseStartY) / zoom;\n this._mouseStartX = evt.clientX;\n this._mouseStartY = evt.clientY;\n this.x += dx;\n this.y += dy;\n };\n\n private _onDragEndHandler = (evt: PointerEvent) => {\n this._isDragging = false;\n this._headerElement.releasePointerCapture(evt.pointerId);\n this._headerElement.removeEventListener(\"pointermove\", this._onDragMoveHandler);\n this._headerElement.removeEventListener(\"pointerup\", this._onDragEndHandler);\n };\n\n // --- Resize ---\n\n private _onResizeStart(evt: PointerEvent) {\n this._isResizing = true;\n this._mouseStartX = evt.clientX;\n this._mouseStartY = evt.clientY;\n this._resizeStartW = this._width;\n this._resizeStartH = this._height;\n this._resizeHandle.setPointerCapture(evt.pointerId);\n this._resizeHandle.addEventListener(\"pointermove\", this._onResizeMoveHandler);\n this._resizeHandle.addEventListener(\"pointerup\", this._onResizeEndHandler);\n evt.stopPropagation();\n }\n\n private _onResizeMoveHandler = (evt: PointerEvent) => {\n if (!this._isResizing) {\n return;\n }\n const zoom = this._ownerCanvas.zoom;\n const dx = (evt.clientX - this._mouseStartX) / zoom;\n const dy = (evt.clientY - this._mouseStartY) / zoom;\n this.width = this._resizeStartW + dx;\n this.height = this._resizeStartH + dy;\n };\n\n private _onResizeEndHandler = (evt: PointerEvent) => {\n this._isResizing = false;\n this._resizeHandle.releasePointerCapture(evt.pointerId);\n this._resizeHandle.removeEventListener(\"pointermove\", this._onResizeMoveHandler);\n this._resizeHandle.removeEventListener(\"pointerup\", this._onResizeEndHandler);\n };\n}\n"]}
@@ -0,0 +1,87 @@
1
+ .sticky-note {
2
+ position: absolute;
3
+ min-width: 140px;
4
+ min-height: 80px;
5
+ background: rgba(255, 235, 130, 0.92);
6
+ border: 2px solid rgba(200, 180, 60, 0.7);
7
+ border-radius: 4px;
8
+ box-sizing: border-box;
9
+ display: flex;
10
+ flex-direction: column;
11
+ z-index: 3;
12
+ box-shadow: 2px 3px 8px rgba(0, 0, 0, 0.25);
13
+ cursor: default;
14
+ user-select: none;
15
+
16
+ &.selected {
17
+ border-color: white;
18
+ box-shadow: 0 0 8px rgba(255, 255, 255, 0.5);
19
+ }
20
+ }
21
+
22
+ .sticky-note-header {
23
+ display: flex;
24
+ align-items: center;
25
+ padding: 4px 8px;
26
+ font-size: 11px;
27
+ font-weight: 700;
28
+ color: rgba(60, 50, 10, 0.85);
29
+ cursor: grab;
30
+ border-bottom: 1px solid rgba(200, 180, 60, 0.3);
31
+ flex-shrink: 0;
32
+
33
+ &:active {
34
+ cursor: grabbing;
35
+ }
36
+ }
37
+
38
+ .sticky-note-title {
39
+ flex: 1;
40
+ overflow: hidden;
41
+ text-overflow: ellipsis;
42
+ white-space: nowrap;
43
+ outline: none;
44
+
45
+ &[contenteditable="true"] {
46
+ cursor: text;
47
+ }
48
+ }
49
+
50
+ .sticky-note-close {
51
+ width: 16px;
52
+ height: 16px;
53
+ line-height: 16px;
54
+ text-align: center;
55
+ font-size: 14px;
56
+ cursor: pointer;
57
+ opacity: 0.5;
58
+ flex-shrink: 0;
59
+ margin-left: 4px;
60
+
61
+ &:hover {
62
+ opacity: 1;
63
+ }
64
+ }
65
+
66
+ .sticky-note-body {
67
+ flex: 1;
68
+ padding: 6px 8px;
69
+ font-size: 12px;
70
+ line-height: 1.4;
71
+ color: rgba(40, 35, 5, 0.9);
72
+ white-space: pre-wrap;
73
+ word-wrap: break-word;
74
+ overflow-y: auto;
75
+ outline: none;
76
+ cursor: text;
77
+ min-height: 40px;
78
+ }
79
+
80
+ .sticky-note-resize {
81
+ position: absolute;
82
+ right: 0;
83
+ bottom: 0;
84
+ width: 12px;
85
+ height: 12px;
86
+ cursor: nwse-resize;
87
+ }
@@ -1,7 +1,7 @@
1
- import type { Nullable } from "@babylonjs/core/types.js";
2
- import type { StateManager } from "../stateManager.js";
3
- import type { INodeData } from "./nodeData.js";
4
- import type { IPortData } from "./portData.js";
1
+ import { type Nullable } from "@babylonjs/core/types.js";
2
+ import { type StateManager } from "../stateManager.js";
3
+ import { type INodeData } from "./nodeData.js";
4
+ import { type IPortData } from "./portData.js";
5
5
  export interface VisualContentDescription {
6
6
  [key: string]: HTMLElement;
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"displayManager.js","sourceRoot":"","sources":["../../../../../dev/sharedUiComponents/src/nodeGraphSystem/interfaces/displayManager.ts"],"names":[],"mappings":"","sourcesContent":["import type { Nullable } from \"core/types\";\r\nimport type { StateManager } from \"../stateManager\";\r\nimport type { INodeData } from \"./nodeData\";\r\nimport type { IPortData } from \"./portData\";\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport interface VisualContentDescription {\r\n [key: string]: HTMLElement;\r\n}\r\n\r\nexport interface IDisplayManager {\r\n getHeaderClass(data: INodeData): string;\r\n shouldDisplayPortLabels(data: IPortData): boolean;\r\n updatePreviewContent(data: INodeData, contentArea: HTMLDivElement): void;\r\n updateFullVisualContent?(data: INodeData, visualContent: VisualContentDescription): void;\r\n getBackgroundColor(data: INodeData): string;\r\n getHeaderText(data: INodeData): string;\r\n onSelectionChanged?(data: INodeData, selectedData: Nullable<INodeData>, manager: StateManager): void;\r\n onDispose?(nodeData: INodeData, manager: StateManager): void;\r\n}\r\n"]}
1
+ {"version":3,"file":"displayManager.js","sourceRoot":"","sources":["../../../../../dev/sharedUiComponents/src/nodeGraphSystem/interfaces/displayManager.ts"],"names":[],"mappings":"","sourcesContent":["import { type Nullable } from \"core/types\";\r\nimport { type StateManager } from \"../stateManager\";\r\nimport { type INodeData } from \"./nodeData\";\r\nimport { type IPortData } from \"./portData\";\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport interface VisualContentDescription {\r\n [key: string]: HTMLElement;\r\n}\r\n\r\nexport interface IDisplayManager {\r\n getHeaderClass(data: INodeData): string;\r\n shouldDisplayPortLabels(data: IPortData): boolean;\r\n updatePreviewContent(data: INodeData, contentArea: HTMLDivElement): void;\r\n updateFullVisualContent?(data: INodeData, visualContent: VisualContentDescription): void;\r\n getBackgroundColor(data: INodeData): string;\r\n getHeaderText(data: INodeData): string;\r\n onSelectionChanged?(data: INodeData, selectedData: Nullable<INodeData>, manager: StateManager): void;\r\n onDispose?(nodeData: INodeData, manager: StateManager): void;\r\n}\r\n"]}
@@ -1,5 +1,5 @@
1
- import type { GraphNode } from "../graphNode.js";
2
- import type { INodeData } from "./nodeData.js";
1
+ import { type GraphNode } from "../graphNode.js";
2
+ import { type INodeData } from "./nodeData.js";
3
3
  export interface INodeContainer {
4
4
  nodes: GraphNode[];
5
5
  appendNode(data: INodeData): GraphNode;
@@ -1 +1 @@
1
- {"version":3,"file":"nodeContainer.js","sourceRoot":"","sources":["../../../../../dev/sharedUiComponents/src/nodeGraphSystem/interfaces/nodeContainer.ts"],"names":[],"mappings":"","sourcesContent":["import type { GraphNode } from \"../graphNode\";\r\nimport type { INodeData } from \"./nodeData\";\r\n\r\nexport interface INodeContainer {\r\n nodes: GraphNode[];\r\n appendNode(data: INodeData): GraphNode;\r\n}\r\n"]}
1
+ {"version":3,"file":"nodeContainer.js","sourceRoot":"","sources":["../../../../../dev/sharedUiComponents/src/nodeGraphSystem/interfaces/nodeContainer.ts"],"names":[],"mappings":"","sourcesContent":["import { type GraphNode } from \"../graphNode\";\r\nimport { type INodeData } from \"./nodeData\";\r\n\r\nexport interface INodeContainer {\r\n nodes: GraphNode[];\r\n appendNode(data: INodeData): GraphNode;\r\n}\r\n"]}
@@ -1,5 +1,5 @@
1
- import type { Nullable } from "@babylonjs/core/types.js";
2
- import type { IPortData } from "./portData.js";
1
+ import { type Nullable } from "@babylonjs/core/types.js";
2
+ import { type IPortData } from "./portData.js";
3
3
  export interface INodeData {
4
4
  data: any;
5
5
  name: string;
@@ -21,4 +21,6 @@ export interface INodeData {
21
21
  canBeActivated?: boolean;
22
22
  onInputCountChanged?: () => void;
23
23
  onInputRemoved?: (index: number) => void;
24
+ onOutputCountChanged?: () => void;
25
+ onOutputRemoved?: (index: number) => void;
24
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nodeData.js","sourceRoot":"","sources":["../../../../../dev/sharedUiComponents/src/nodeGraphSystem/interfaces/nodeData.ts"],"names":[],"mappings":"","sourcesContent":["import type { Nullable } from \"core/types\";\r\nimport type { IPortData } from \"./portData\";\r\n\r\nexport interface INodeData {\r\n data: any;\r\n name: string;\r\n uniqueId: number;\r\n isInput: boolean;\r\n comments: string;\r\n executionTime?: number;\r\n\r\n refreshCallback?: () => void;\r\n\r\n prepareHeaderIcon: (iconDiv: HTMLDivElement, img: HTMLImageElement) => void;\r\n getClassName: () => string;\r\n dispose: () => void;\r\n\r\n getPortByName: (name: string) => Nullable<IPortData>;\r\n\r\n inputs: IPortData[];\r\n outputs: IPortData[];\r\n\r\n invisibleEndpoints?: Nullable<any[]>;\r\n\r\n isConnectedToOutput?: () => boolean;\r\n\r\n isActive?: boolean;\r\n setIsActive?: (value: boolean) => void;\r\n canBeActivated?: boolean;\r\n\r\n onInputCountChanged?: () => void;\r\n onInputRemoved?: (index: number) => void;\r\n}\r\n"]}
1
+ {"version":3,"file":"nodeData.js","sourceRoot":"","sources":["../../../../../dev/sharedUiComponents/src/nodeGraphSystem/interfaces/nodeData.ts"],"names":[],"mappings":"","sourcesContent":["import { type Nullable } from \"core/types\";\r\nimport { type IPortData } from \"./portData\";\r\n\r\nexport interface INodeData {\r\n data: any;\r\n name: string;\r\n uniqueId: number;\r\n isInput: boolean;\r\n comments: string;\r\n executionTime?: number;\r\n\r\n refreshCallback?: () => void;\r\n\r\n prepareHeaderIcon: (iconDiv: HTMLDivElement, img: HTMLImageElement) => void;\r\n getClassName: () => string;\r\n dispose: () => void;\r\n\r\n getPortByName: (name: string) => Nullable<IPortData>;\r\n\r\n inputs: IPortData[];\r\n outputs: IPortData[];\r\n\r\n invisibleEndpoints?: Nullable<any[]>;\r\n\r\n isConnectedToOutput?: () => boolean;\r\n\r\n isActive?: boolean;\r\n setIsActive?: (value: boolean) => void;\r\n canBeActivated?: boolean;\r\n\r\n onInputCountChanged?: () => void;\r\n onInputRemoved?: (index: number) => void;\r\n onOutputCountChanged?: () => void;\r\n onOutputRemoved?: (index: number) => void;\r\n}\r\n"]}
@@ -15,12 +15,22 @@ export interface IFrameData {
15
15
  blocks: number[];
16
16
  comments: string;
17
17
  }
18
+ export interface IStickyNoteData {
19
+ x: number;
20
+ y: number;
21
+ width: number;
22
+ height: number;
23
+ name: string;
24
+ body: string;
25
+ color?: string;
26
+ }
18
27
  export interface IEditorData {
19
28
  locations: INodeLocationInfo[];
20
29
  x: number;
21
30
  y: number;
22
31
  zoom: number;
23
32
  frames?: IFrameData[];
33
+ stickyNotes?: IStickyNoteData[];
24
34
  map?: {
25
35
  [key: number]: number;
26
36
  };
@@ -1 +1 @@
1
- {"version":3,"file":"nodeLocationInfo.js","sourceRoot":"","sources":["../../../../../dev/sharedUiComponents/src/nodeGraphSystem/interfaces/nodeLocationInfo.ts"],"names":[],"mappings":"","sourcesContent":["export interface INodeLocationInfo {\r\n blockId: number;\r\n x: number;\r\n y: number;\r\n isCollapsed: boolean;\r\n}\r\n\r\nexport interface IFrameData {\r\n x: number;\r\n y: number;\r\n width: number;\r\n height: number;\r\n color: number[];\r\n name: string;\r\n isCollapsed: boolean;\r\n blocks: number[];\r\n comments: string;\r\n}\r\n\r\nexport interface IEditorData {\r\n locations: INodeLocationInfo[];\r\n x: number;\r\n y: number;\r\n zoom: number;\r\n frames?: IFrameData[];\r\n map?: { [key: number]: number };\r\n}\r\n"]}
1
+ {"version":3,"file":"nodeLocationInfo.js","sourceRoot":"","sources":["../../../../../dev/sharedUiComponents/src/nodeGraphSystem/interfaces/nodeLocationInfo.ts"],"names":[],"mappings":"","sourcesContent":["export interface INodeLocationInfo {\r\n blockId: number;\r\n x: number;\r\n y: number;\r\n isCollapsed: boolean;\r\n}\r\n\r\nexport interface IFrameData {\r\n x: number;\r\n y: number;\r\n width: number;\r\n height: number;\r\n color: number[];\r\n name: string;\r\n isCollapsed: boolean;\r\n blocks: number[];\r\n comments: string;\r\n}\r\n\r\nexport interface IStickyNoteData {\r\n x: number;\r\n y: number;\r\n width: number;\r\n height: number;\r\n name: string;\r\n body: string;\r\n color?: string;\r\n}\r\n\r\nexport interface IEditorData {\r\n locations: INodeLocationInfo[];\r\n x: number;\r\n y: number;\r\n zoom: number;\r\n frames?: IFrameData[];\r\n stickyNotes?: IStickyNoteData[];\r\n map?: { [key: number]: number };\r\n}\r\n"]}
@@ -1,5 +1,5 @@
1
- import type { Nullable } from "@babylonjs/core/types.js";
2
- import type { GraphNode } from "../graphNode.js";
1
+ import { type Nullable } from "@babylonjs/core/types.js";
2
+ import { type GraphNode } from "../graphNode.js";
3
3
  export declare enum PortDataDirection {
4
4
  /** Input */
5
5
  Input = 0,
@@ -8,7 +8,8 @@ export declare enum PortDataDirection {
8
8
  }
9
9
  export declare enum PortDirectValueTypes {
10
10
  Float = 0,
11
- Int = 1
11
+ Int = 1,
12
+ String = 2
12
13
  }
13
14
  export interface IPortDirectValueDefinition {
14
15
  /**
@@ -9,5 +9,6 @@ export var PortDirectValueTypes;
9
9
  (function (PortDirectValueTypes) {
10
10
  PortDirectValueTypes[PortDirectValueTypes["Float"] = 0] = "Float";
11
11
  PortDirectValueTypes[PortDirectValueTypes["Int"] = 1] = "Int";
12
+ PortDirectValueTypes[PortDirectValueTypes["String"] = 2] = "String";
12
13
  })(PortDirectValueTypes || (PortDirectValueTypes = {}));
13
14
  //# sourceMappingURL=portData.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"portData.js","sourceRoot":"","sources":["../../../../../dev/sharedUiComponents/src/nodeGraphSystem/interfaces/portData.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,iBAKX;AALD,WAAY,iBAAiB;IACzB,YAAY;IACZ,2DAAK,CAAA;IACL,aAAa;IACb,6DAAM,CAAA;AACV,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B;AAED,MAAM,CAAN,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC5B,iEAAK,CAAA;IACL,6DAAG,CAAA;AACP,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,QAG/B","sourcesContent":["import type { Nullable } from \"core/types\";\r\nimport type { GraphNode } from \"../graphNode\";\r\n\r\nexport enum PortDataDirection {\r\n /** Input */\r\n Input,\r\n /** Output */\r\n Output,\r\n}\r\n\r\nexport enum PortDirectValueTypes {\r\n Float,\r\n Int,\r\n}\r\n\r\nexport interface IPortDirectValueDefinition {\r\n /**\r\n * Gets the source object\r\n */\r\n source: any;\r\n /**\r\n * Gets the property name used to store the value\r\n */\r\n propertyName: string;\r\n\r\n /**\r\n * Gets or sets the min value accepted for this point if nothing is connected\r\n */\r\n valueMin: Nullable<any>;\r\n\r\n /**\r\n * Gets or sets the max value accepted for this point if nothing is connected\r\n */\r\n valueMax: Nullable<any>;\r\n\r\n /**\r\n * Gets or sets the type of the value\r\n */\r\n valueType: PortDirectValueTypes;\r\n}\r\n\r\nexport interface IPortData {\r\n data: any;\r\n name: string;\r\n internalName: string;\r\n isExposedOnFrame: boolean;\r\n exposedPortPosition: number;\r\n isConnected: boolean;\r\n isInactive: boolean;\r\n direction: PortDataDirection;\r\n ownerData: any;\r\n connectedPort: Nullable<IPortData>;\r\n needDualDirectionValidation: boolean;\r\n hasEndpoints: boolean;\r\n endpoints: Nullable<IPortData[]>;\r\n directValueDefinition?: IPortDirectValueDefinition;\r\n\r\n updateDisplayName: (newName: string) => void;\r\n canConnectTo: (port: IPortData) => boolean;\r\n connectTo: (port: IPortData) => void;\r\n disconnectFrom: (port: IPortData) => void;\r\n checkCompatibilityState(port: IPortData): number;\r\n getCompatibilityIssueMessage(issue: number, targetNode: GraphNode, targetPort: IPortData): string;\r\n}\r\n"]}
1
+ {"version":3,"file":"portData.js","sourceRoot":"","sources":["../../../../../dev/sharedUiComponents/src/nodeGraphSystem/interfaces/portData.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,iBAKX;AALD,WAAY,iBAAiB;IACzB,YAAY;IACZ,2DAAK,CAAA;IACL,aAAa;IACb,6DAAM,CAAA;AACV,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B;AAED,MAAM,CAAN,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC5B,iEAAK,CAAA;IACL,6DAAG,CAAA;IACH,mEAAM,CAAA;AACV,CAAC,EAJW,oBAAoB,KAApB,oBAAoB,QAI/B","sourcesContent":["import { type Nullable } from \"core/types\";\r\nimport { type GraphNode } from \"../graphNode\";\r\n\r\nexport enum PortDataDirection {\r\n /** Input */\r\n Input,\r\n /** Output */\r\n Output,\r\n}\r\n\r\nexport enum PortDirectValueTypes {\r\n Float,\r\n Int,\r\n String,\r\n}\r\n\r\nexport interface IPortDirectValueDefinition {\r\n /**\r\n * Gets the source object\r\n */\r\n source: any;\r\n /**\r\n * Gets the property name used to store the value\r\n */\r\n propertyName: string;\r\n\r\n /**\r\n * Gets or sets the min value accepted for this point if nothing is connected\r\n */\r\n valueMin: Nullable<any>;\r\n\r\n /**\r\n * Gets or sets the max value accepted for this point if nothing is connected\r\n */\r\n valueMax: Nullable<any>;\r\n\r\n /**\r\n * Gets or sets the type of the value\r\n */\r\n valueType: PortDirectValueTypes;\r\n}\r\n\r\nexport interface IPortData {\r\n data: any;\r\n name: string;\r\n internalName: string;\r\n isExposedOnFrame: boolean;\r\n exposedPortPosition: number;\r\n isConnected: boolean;\r\n isInactive: boolean;\r\n direction: PortDataDirection;\r\n ownerData: any;\r\n connectedPort: Nullable<IPortData>;\r\n needDualDirectionValidation: boolean;\r\n hasEndpoints: boolean;\r\n endpoints: Nullable<IPortData[]>;\r\n directValueDefinition?: IPortDirectValueDefinition;\r\n\r\n updateDisplayName: (newName: string) => void;\r\n canConnectTo: (port: IPortData) => boolean;\r\n connectTo: (port: IPortData) => void;\r\n disconnectFrom: (port: IPortData) => void;\r\n checkCompatibilityState(port: IPortData): number;\r\n getCompatibilityIssueMessage(issue: number, targetNode: GraphNode, targetPort: IPortData): string;\r\n}\r\n"]}
@@ -1,5 +1,5 @@
1
- import type { StateManager } from "../stateManager.js";
2
- import type { INodeData } from "./nodeData.js";
1
+ import { type StateManager } from "../stateManager.js";
2
+ import { type INodeData } from "./nodeData.js";
3
3
  export interface IPropertyComponentProps {
4
4
  stateManager: StateManager;
5
5
  nodeData: INodeData;
@@ -1 +1 @@
1
- {"version":3,"file":"propertyComponentProps.js","sourceRoot":"","sources":["../../../../../dev/sharedUiComponents/src/nodeGraphSystem/interfaces/propertyComponentProps.ts"],"names":[],"mappings":"","sourcesContent":["import type { StateManager } from \"../stateManager\";\r\nimport type { INodeData } from \"./nodeData\";\r\n\r\nexport interface IPropertyComponentProps {\r\n stateManager: StateManager;\r\n nodeData: INodeData;\r\n}\r\n"]}
1
+ {"version":3,"file":"propertyComponentProps.js","sourceRoot":"","sources":["../../../../../dev/sharedUiComponents/src/nodeGraphSystem/interfaces/propertyComponentProps.ts"],"names":[],"mappings":"","sourcesContent":["import { type StateManager } from \"../stateManager\";\r\nimport { type INodeData } from \"./nodeData\";\r\n\r\nexport interface IPropertyComponentProps {\r\n stateManager: StateManager;\r\n nodeData: INodeData;\r\n}\r\n"]}
@@ -1,11 +1,12 @@
1
- import type { Nullable } from "@babylonjs/core/types.js";
2
- import type { GraphFrame } from "../graphFrame.js";
3
- import type { GraphNode } from "../graphNode.js";
4
- import type { NodeLink } from "../nodeLink.js";
5
- import type { NodePort } from "../nodePort.js";
6
- import type { FramePortData } from "../types/framePortData.js";
1
+ import { type Nullable } from "@babylonjs/core/types.js";
2
+ import { type GraphFrame } from "../graphFrame.js";
3
+ import { type GraphNode } from "../graphNode.js";
4
+ import { type GraphStickyNote } from "../graphStickyNote.js";
5
+ import { type NodeLink } from "../nodeLink.js";
6
+ import { type NodePort } from "../nodePort.js";
7
+ import { type FramePortData } from "../types/framePortData.js";
7
8
  export interface ISelectionChangedOptions {
8
- selection: Nullable<GraphNode | NodeLink | GraphFrame | NodePort | FramePortData>;
9
+ selection: Nullable<GraphNode | NodeLink | GraphFrame | NodePort | FramePortData | GraphStickyNote>;
9
10
  forceKeepSelection?: boolean;
10
11
  marqueeSelection?: boolean;
11
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"selectionChangedOptions.js","sourceRoot":"","sources":["../../../../../dev/sharedUiComponents/src/nodeGraphSystem/interfaces/selectionChangedOptions.ts"],"names":[],"mappings":"","sourcesContent":["import type { Nullable } from \"core/types\";\r\nimport type { GraphFrame } from \"../graphFrame\";\r\nimport type { GraphNode } from \"../graphNode\";\r\n\r\nimport type { NodeLink } from \"../nodeLink\";\r\nimport type { NodePort } from \"../nodePort\";\r\nimport type { FramePortData } from \"../types/framePortData\";\r\n\r\nexport interface ISelectionChangedOptions {\r\n selection: Nullable<GraphNode | NodeLink | GraphFrame | NodePort | FramePortData>;\r\n forceKeepSelection?: boolean;\r\n marqueeSelection?: boolean;\r\n}\r\n"]}
1
+ {"version":3,"file":"selectionChangedOptions.js","sourceRoot":"","sources":["../../../../../dev/sharedUiComponents/src/nodeGraphSystem/interfaces/selectionChangedOptions.ts"],"names":[],"mappings":"","sourcesContent":["import { type Nullable } from \"core/types\";\r\nimport { type GraphFrame } from \"../graphFrame\";\r\nimport { type GraphNode } from \"../graphNode\";\r\nimport { type GraphStickyNote } from \"../graphStickyNote\";\r\n\r\nimport { type NodeLink } from \"../nodeLink\";\r\nimport { type NodePort } from \"../nodePort\";\r\nimport { type FramePortData } from \"../types/framePortData\";\r\n\r\nexport interface ISelectionChangedOptions {\r\n selection: Nullable<GraphNode | NodeLink | GraphFrame | NodePort | FramePortData | GraphStickyNote>;\r\n forceKeepSelection?: boolean;\r\n marqueeSelection?: boolean;\r\n}\r\n"]}