@onerjs/shared-ui-components 8.45.9 → 8.46.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 (335) 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/colorPicker/ColorComponentEntry.d.ts +1 -1
  14. package/components/colorPicker/ColorComponentEntry.js.map +1 -1
  15. package/components/colorPicker/ColorPicker.d.ts +1 -1
  16. package/components/colorPicker/ColorPicker.js.map +1 -1
  17. package/components/colorPicker/HexColor.d.ts +1 -1
  18. package/components/colorPicker/HexColor.js.map +1 -1
  19. package/components/layout/DraggableIcon.d.ts +2 -2
  20. package/components/layout/DraggableIcon.js.map +1 -1
  21. package/components/layout/FlexibleColumn.d.ts +1 -1
  22. package/components/layout/FlexibleColumn.js.map +1 -1
  23. package/components/layout/FlexibleDragHandler.d.ts +1 -1
  24. package/components/layout/FlexibleDragHandler.js.map +1 -1
  25. package/components/layout/FlexibleDropZone.d.ts +1 -1
  26. package/components/layout/FlexibleDropZone.js.map +1 -1
  27. package/components/layout/FlexibleGridContainer.d.ts +1 -1
  28. package/components/layout/FlexibleGridContainer.js.map +1 -1
  29. package/components/layout/FlexibleGridLayout.d.ts +2 -2
  30. package/components/layout/FlexibleGridLayout.js.map +1 -1
  31. package/components/layout/FlexibleResizeBar.d.ts +1 -1
  32. package/components/layout/FlexibleResizeBar.js.map +1 -1
  33. package/components/layout/FlexibleTab.d.ts +2 -2
  34. package/components/layout/FlexibleTab.js.map +1 -1
  35. package/components/layout/FlexibleTabsContainer.d.ts +2 -2
  36. package/components/layout/FlexibleTabsContainer.js.map +1 -1
  37. package/components/layout/LayoutContext.d.ts +1 -1
  38. package/components/layout/LayoutContext.js.map +1 -1
  39. package/components/layout/types.d.ts +1 -1
  40. package/components/layout/types.js.map +1 -1
  41. package/components/layout/utils.d.ts +1 -1
  42. package/components/layout/utils.js.map +1 -1
  43. package/components/lines/ColorPickerLineComponent.d.ts +2 -2
  44. package/components/lines/ColorPickerLineComponent.js.map +1 -1
  45. package/components/lines/NumericInputComponent.d.ts +1 -1
  46. package/components/lines/NumericInputComponent.js.map +1 -1
  47. package/components/lines/OptionsLineComponent.js.map +1 -1
  48. package/components/propertyTabComponentBase.d.ts +1 -1
  49. package/components/propertyTabComponentBase.js.map +1 -1
  50. package/components/reactGraphSystem/GraphConnectorHandle.d.ts +1 -1
  51. package/components/reactGraphSystem/GraphConnectorHandle.js.map +1 -1
  52. package/components/reactGraphSystem/GraphContainer.d.ts +1 -1
  53. package/components/reactGraphSystem/GraphContainer.js.map +1 -1
  54. package/components/reactGraphSystem/GraphLine.d.ts +1 -1
  55. package/components/reactGraphSystem/GraphLine.js.map +1 -1
  56. package/components/reactGraphSystem/GraphLinesContainer.d.ts +1 -1
  57. package/components/reactGraphSystem/GraphLinesContainer.js.map +1 -1
  58. package/components/reactGraphSystem/GraphNode.d.ts +1 -1
  59. package/components/reactGraphSystem/GraphNode.js.map +1 -1
  60. package/components/reactGraphSystem/GraphNodesContainer.d.ts +1 -1
  61. package/components/reactGraphSystem/GraphNodesContainer.js.map +1 -1
  62. package/components/reactGraphSystem/NodeRenderer.d.ts +2 -2
  63. package/components/reactGraphSystem/NodeRenderer.js.map +1 -1
  64. package/constToOptionsMaps.js.map +1 -1
  65. package/copyCommandToClipboard.js.map +1 -1
  66. package/fluent/hoc/buttonLine.d.ts +2 -2
  67. package/fluent/hoc/buttonLine.js.map +1 -1
  68. package/fluent/hoc/childWindow.d.ts +1 -1
  69. package/fluent/hoc/childWindow.js +1 -3
  70. package/fluent/hoc/childWindow.js.map +1 -1
  71. package/fluent/hoc/fileUploadLine.d.ts +2 -2
  72. package/fluent/hoc/fileUploadLine.js.map +1 -1
  73. package/fluent/hoc/fluentToolWrapper.d.ts +2 -2
  74. package/fluent/hoc/fluentToolWrapper.js.map +1 -1
  75. package/fluent/hoc/gradientList.d.ts +2 -2
  76. package/fluent/hoc/gradientList.js.map +1 -1
  77. package/fluent/hoc/pane.d.ts +2 -2
  78. package/fluent/hoc/pane.js.map +1 -1
  79. package/fluent/hoc/propertyLines/booleanBadgePropertyLine.d.ts +3 -3
  80. package/fluent/hoc/propertyLines/booleanBadgePropertyLine.js.map +1 -1
  81. package/fluent/hoc/propertyLines/checkboxPropertyLine.d.ts +3 -3
  82. package/fluent/hoc/propertyLines/checkboxPropertyLine.js.map +1 -1
  83. package/fluent/hoc/propertyLines/colorPropertyLine.d.ts +4 -5
  84. package/fluent/hoc/propertyLines/colorPropertyLine.js.map +1 -1
  85. package/fluent/hoc/propertyLines/comboBoxPropertyLine.d.ts +3 -3
  86. package/fluent/hoc/propertyLines/comboBoxPropertyLine.js.map +1 -1
  87. package/fluent/hoc/propertyLines/dropdownPropertyLine.d.ts +3 -3
  88. package/fluent/hoc/propertyLines/dropdownPropertyLine.js.map +1 -1
  89. package/fluent/hoc/propertyLines/entitySelectorPropertyLine.d.ts +12 -12
  90. package/fluent/hoc/propertyLines/entitySelectorPropertyLine.js.map +1 -1
  91. package/fluent/hoc/propertyLines/hexPropertyLine.d.ts +2 -2
  92. package/fluent/hoc/propertyLines/hexPropertyLine.js.map +1 -1
  93. package/fluent/hoc/propertyLines/inputPropertyLine.d.ts +4 -4
  94. package/fluent/hoc/propertyLines/inputPropertyLine.js.map +1 -1
  95. package/fluent/hoc/propertyLines/linkPropertyLine.d.ts +3 -3
  96. package/fluent/hoc/propertyLines/linkPropertyLine.js.map +1 -1
  97. package/fluent/hoc/propertyLines/propertyLine.d.ts +3 -3
  98. package/fluent/hoc/propertyLines/propertyLine.js +2 -4
  99. package/fluent/hoc/propertyLines/propertyLine.js.map +1 -1
  100. package/fluent/hoc/propertyLines/spinButtonPropertyLine.d.ts +3 -3
  101. package/fluent/hoc/propertyLines/spinButtonPropertyLine.js.map +1 -1
  102. package/fluent/hoc/propertyLines/stringifiedPropertyLine.d.ts +3 -3
  103. package/fluent/hoc/propertyLines/stringifiedPropertyLine.js.map +1 -1
  104. package/fluent/hoc/propertyLines/switchPropertyLine.d.ts +3 -3
  105. package/fluent/hoc/propertyLines/switchPropertyLine.js.map +1 -1
  106. package/fluent/hoc/propertyLines/syncedSliderPropertyLine.d.ts +2 -2
  107. package/fluent/hoc/propertyLines/syncedSliderPropertyLine.js.map +1 -1
  108. package/fluent/hoc/propertyLines/textAreaPropertyLine.d.ts +3 -3
  109. package/fluent/hoc/propertyLines/textAreaPropertyLine.js.map +1 -1
  110. package/fluent/hoc/propertyLines/textPropertyLine.d.ts +3 -3
  111. package/fluent/hoc/propertyLines/textPropertyLine.js.map +1 -1
  112. package/fluent/hoc/propertyLines/vectorPropertyLine.d.ts +4 -5
  113. package/fluent/hoc/propertyLines/vectorPropertyLine.js +2 -2
  114. package/fluent/hoc/propertyLines/vectorPropertyLine.js.map +1 -1
  115. package/fluent/hoc/textureUpload.d.ts +3 -3
  116. package/fluent/hoc/textureUpload.js.map +1 -1
  117. package/fluent/hooks/keyboardHooks.d.ts +1 -1
  118. package/fluent/hooks/keyboardHooks.js +1 -1
  119. package/fluent/hooks/keyboardHooks.js.map +1 -1
  120. package/fluent/primitives/accordion.contexts.d.ts +2 -2
  121. package/fluent/primitives/accordion.contexts.js.map +1 -1
  122. package/fluent/primitives/accordion.d.ts +1 -1
  123. package/fluent/primitives/accordion.js +1 -1
  124. package/fluent/primitives/accordion.js.map +1 -1
  125. package/fluent/primitives/button.d.ts +3 -3
  126. package/fluent/primitives/button.js.map +1 -1
  127. package/fluent/primitives/checkbox.d.ts +2 -2
  128. package/fluent/primitives/checkbox.js.map +1 -1
  129. package/fluent/primitives/clusteredLightContainerSelector.d.ts +5 -5
  130. package/fluent/primitives/clusteredLightContainerSelector.js.map +1 -1
  131. package/fluent/primitives/collapse.d.ts +1 -1
  132. package/fluent/primitives/collapse.js.map +1 -1
  133. package/fluent/primitives/colorPicker.d.ts +2 -2
  134. package/fluent/primitives/colorPicker.js +1 -1
  135. package/fluent/primitives/colorPicker.js.map +1 -1
  136. package/fluent/primitives/comboBox.d.ts +1 -1
  137. package/fluent/primitives/comboBox.js.map +1 -1
  138. package/fluent/primitives/contextMenu.d.ts +4 -4
  139. package/fluent/primitives/contextMenu.js +2 -2
  140. package/fluent/primitives/contextMenu.js.map +1 -1
  141. package/fluent/primitives/dropdown.d.ts +2 -2
  142. package/fluent/primitives/dropdown.js.map +1 -1
  143. package/fluent/primitives/entitySelector.d.ts +2 -2
  144. package/fluent/primitives/entitySelector.js +2 -6
  145. package/fluent/primitives/entitySelector.js.map +1 -1
  146. package/fluent/primitives/gradient.d.ts +2 -2
  147. package/fluent/primitives/gradient.js.map +1 -1
  148. package/fluent/primitives/infoLabel.d.ts +1 -1
  149. package/fluent/primitives/infoLabel.js.map +1 -1
  150. package/fluent/primitives/lazyComponent.d.ts +2 -2
  151. package/fluent/primitives/lazyComponent.js.map +1 -1
  152. package/fluent/primitives/link.d.ts +1 -1
  153. package/fluent/primitives/link.js.map +1 -1
  154. package/fluent/primitives/list.d.ts +1 -1
  155. package/fluent/primitives/list.js +1 -1
  156. package/fluent/primitives/list.js.map +1 -1
  157. package/fluent/primitives/materialSelector.d.ts +6 -6
  158. package/fluent/primitives/materialSelector.js.map +1 -1
  159. package/fluent/primitives/messageBar.d.ts +1 -1
  160. package/fluent/primitives/messageBar.js.map +1 -1
  161. package/fluent/primitives/nodeSelector.d.ts +6 -6
  162. package/fluent/primitives/nodeSelector.js.map +1 -1
  163. package/fluent/primitives/popover.d.ts +3 -3
  164. package/fluent/primitives/popover.js +1 -1
  165. package/fluent/primitives/popover.js.map +1 -1
  166. package/fluent/primitives/positionedPopover.d.ts +1 -1
  167. package/fluent/primitives/positionedPopover.js.map +1 -1
  168. package/fluent/primitives/primitive.d.ts +1 -1
  169. package/fluent/primitives/primitive.js.map +1 -1
  170. package/fluent/primitives/searchBar.js.map +1 -1
  171. package/fluent/primitives/searchBox.d.ts +1 -1
  172. package/fluent/primitives/searchBox.js.map +1 -1
  173. package/fluent/primitives/skeletonSelector.d.ts +6 -6
  174. package/fluent/primitives/skeletonSelector.js.map +1 -1
  175. package/fluent/primitives/slider.d.ts +2 -2
  176. package/fluent/primitives/slider.js.map +1 -1
  177. package/fluent/primitives/spinButton.d.ts +1 -1
  178. package/fluent/primitives/spinButton.js +1 -1
  179. package/fluent/primitives/spinButton.js.map +1 -1
  180. package/fluent/primitives/switch.d.ts +2 -2
  181. package/fluent/primitives/switch.js.map +1 -1
  182. package/fluent/primitives/syncedSlider.d.ts +2 -2
  183. package/fluent/primitives/syncedSlider.js +1 -1
  184. package/fluent/primitives/syncedSlider.js.map +1 -1
  185. package/fluent/primitives/textInput.d.ts +2 -2
  186. package/fluent/primitives/textInput.js.map +1 -1
  187. package/fluent/primitives/textarea.d.ts +2 -2
  188. package/fluent/primitives/textarea.js.map +1 -1
  189. package/fluent/primitives/textureSelector.d.ts +6 -6
  190. package/fluent/primitives/textureSelector.js +2 -2
  191. package/fluent/primitives/textureSelector.js.map +1 -1
  192. package/fluent/primitives/toast.d.ts +1 -1
  193. package/fluent/primitives/toast.js +1 -1
  194. package/fluent/primitives/toast.js.map +1 -1
  195. package/fluent/primitives/toggleButton.d.ts +3 -3
  196. package/fluent/primitives/toggleButton.js.map +1 -1
  197. package/fluent/primitives/tooltip.d.ts +2 -2
  198. package/fluent/primitives/tooltip.js.map +1 -1
  199. package/fluent/primitives/uploadButton.d.ts +2 -2
  200. package/fluent/primitives/uploadButton.js.map +1 -1
  201. package/fluent/primitives/utils.d.ts +2 -2
  202. package/fluent/primitives/utils.js.map +1 -1
  203. package/historyStack.d.ts +9 -1
  204. package/historyStack.js +12 -0
  205. package/historyStack.js.map +1 -1
  206. package/lines/booleanLineComponent.js +2 -2
  207. package/lines/checkBoxLineComponent.d.ts +3 -3
  208. package/lines/checkBoxLineComponent.js.map +1 -1
  209. package/lines/color3LineComponent.d.ts +3 -3
  210. package/lines/color3LineComponent.js.map +1 -1
  211. package/lines/color4LineComponent.d.ts +3 -3
  212. package/lines/color4LineComponent.js.map +1 -1
  213. package/lines/colorLineComponent.d.ts +3 -3
  214. package/lines/colorLineComponent.js.map +1 -1
  215. package/lines/colorPickerComponent.d.ts +2 -2
  216. package/lines/colorPickerComponent.js.map +1 -1
  217. package/lines/draggableLineComponent.d.ts +1 -1
  218. package/lines/draggableLineComponent.js.map +1 -1
  219. package/lines/fileButtonLineComponent.js +1 -1
  220. package/lines/floatLineComponent.d.ts +3 -3
  221. package/lines/floatLineComponent.js.map +1 -1
  222. package/lines/hexLineComponent.d.ts +3 -3
  223. package/lines/hexLineComponent.js.map +1 -1
  224. package/lines/lineContainerComponent.d.ts +1 -1
  225. package/lines/lineContainerComponent.js.map +1 -1
  226. package/lines/lineWithFileButtonComponent.js +1 -1
  227. package/lines/lineWithFileButtonComponent.js.map +1 -1
  228. package/lines/linkButtonComponent.d.ts +1 -1
  229. package/lines/linkButtonComponent.js.map +1 -1
  230. package/lines/matrixLineComponent.d.ts +4 -5
  231. package/lines/matrixLineComponent.js.map +1 -1
  232. package/lines/messageLineComponent.d.ts +1 -1
  233. package/lines/messageLineComponent.js.map +1 -1
  234. package/lines/numericInputComponent.d.ts +1 -1
  235. package/lines/numericInputComponent.js.map +1 -1
  236. package/lines/optionsLineComponent.d.ts +3 -3
  237. package/lines/optionsLineComponent.js.map +1 -1
  238. package/lines/radioLineComponent.d.ts +1 -1
  239. package/lines/radioLineComponent.js.map +1 -1
  240. package/lines/sliderLineComponent.d.ts +3 -3
  241. package/lines/sliderLineComponent.js.map +1 -1
  242. package/lines/targetsProxy.d.ts +2 -2
  243. package/lines/targetsProxy.js.map +1 -1
  244. package/lines/textInputLineComponent.d.ts +4 -5
  245. package/lines/textInputLineComponent.js.map +1 -1
  246. package/lines/textureButtonLineComponent.d.ts +2 -2
  247. package/lines/textureButtonLineComponent.js.map +1 -1
  248. package/lines/vector2LineComponent.d.ts +3 -3
  249. package/lines/vector2LineComponent.js.map +1 -1
  250. package/lines/vector3LineComponent.d.ts +3 -3
  251. package/lines/vector3LineComponent.js.map +1 -1
  252. package/lines/vector4LineComponent.d.ts +3 -3
  253. package/lines/vector4LineComponent.js.map +1 -1
  254. package/nodeGraphSystem/automaticProperties.d.ts +2 -2
  255. package/nodeGraphSystem/automaticProperties.js.map +1 -1
  256. package/nodeGraphSystem/frameNodePort.d.ts +6 -6
  257. package/nodeGraphSystem/frameNodePort.js.map +1 -1
  258. package/nodeGraphSystem/graphCanvas.d.ts +6 -6
  259. package/nodeGraphSystem/graphCanvas.js.map +1 -1
  260. package/nodeGraphSystem/graphFrame.d.ts +4 -4
  261. package/nodeGraphSystem/graphFrame.js.map +1 -1
  262. package/nodeGraphSystem/graphMinimap.d.ts +1 -1
  263. package/nodeGraphSystem/graphMinimap.js.map +1 -1
  264. package/nodeGraphSystem/graphNode.d.ts +8 -8
  265. package/nodeGraphSystem/graphNode.js.map +1 -1
  266. package/nodeGraphSystem/graphSearch.d.ts +3 -3
  267. package/nodeGraphSystem/graphSearch.js.map +1 -1
  268. package/nodeGraphSystem/graphStickyNote.d.ts +2 -2
  269. package/nodeGraphSystem/graphStickyNote.js.map +1 -1
  270. package/nodeGraphSystem/interfaces/displayManager.d.ts +4 -4
  271. package/nodeGraphSystem/interfaces/displayManager.js.map +1 -1
  272. package/nodeGraphSystem/interfaces/nodeContainer.d.ts +2 -2
  273. package/nodeGraphSystem/interfaces/nodeContainer.js.map +1 -1
  274. package/nodeGraphSystem/interfaces/nodeData.d.ts +2 -2
  275. package/nodeGraphSystem/interfaces/nodeData.js.map +1 -1
  276. package/nodeGraphSystem/interfaces/portData.d.ts +2 -2
  277. package/nodeGraphSystem/interfaces/portData.js.map +1 -1
  278. package/nodeGraphSystem/interfaces/propertyComponentProps.d.ts +2 -2
  279. package/nodeGraphSystem/interfaces/propertyComponentProps.js.map +1 -1
  280. package/nodeGraphSystem/interfaces/selectionChangedOptions.d.ts +7 -7
  281. package/nodeGraphSystem/interfaces/selectionChangedOptions.js.map +1 -1
  282. package/nodeGraphSystem/nodeLink.d.ts +4 -4
  283. package/nodeGraphSystem/nodeLink.js.map +1 -1
  284. package/nodeGraphSystem/nodePort.d.ts +8 -8
  285. package/nodeGraphSystem/nodePort.js.map +1 -1
  286. package/nodeGraphSystem/propertyLedger.d.ts +2 -2
  287. package/nodeGraphSystem/propertyLedger.js.map +1 -1
  288. package/nodeGraphSystem/searchBox.d.ts +1 -1
  289. package/nodeGraphSystem/searchBox.js.map +1 -1
  290. package/nodeGraphSystem/stateManager.d.ts +12 -12
  291. package/nodeGraphSystem/stateManager.js.map +1 -1
  292. package/nodeGraphSystem/tools.d.ts +4 -4
  293. package/nodeGraphSystem/tools.js.map +1 -1
  294. package/nodeGraphSystem/typeLedger.d.ts +4 -4
  295. package/nodeGraphSystem/typeLedger.js.map +1 -1
  296. package/nodeGraphSystem/types/framePortData.d.ts +2 -2
  297. package/nodeGraphSystem/types/framePortData.js.map +1 -1
  298. package/package.json +2 -2
  299. package/split/splitContainer.d.ts +1 -1
  300. package/split/splitContainer.js +1 -1
  301. package/split/splitContainer.js.map +1 -1
  302. package/split/splitter.d.ts +1 -1
  303. package/split/splitter.js.map +1 -1
  304. package/tabs/propertyGrids/gui/checkboxPropertyGridComponent.d.ts +4 -4
  305. package/tabs/propertyGrids/gui/checkboxPropertyGridComponent.js.map +1 -1
  306. package/tabs/propertyGrids/gui/colorPickerPropertyGridComponent.d.ts +4 -4
  307. package/tabs/propertyGrids/gui/colorPickerPropertyGridComponent.js.map +1 -1
  308. package/tabs/propertyGrids/gui/commonControlPropertyGridComponent.d.ts +3 -3
  309. package/tabs/propertyGrids/gui/commonControlPropertyGridComponent.js.map +1 -1
  310. package/tabs/propertyGrids/gui/controlPropertyGridComponent.d.ts +4 -4
  311. package/tabs/propertyGrids/gui/controlPropertyGridComponent.js.map +1 -1
  312. package/tabs/propertyGrids/gui/ellipsePropertyGridComponent.d.ts +4 -4
  313. package/tabs/propertyGrids/gui/ellipsePropertyGridComponent.js.map +1 -1
  314. package/tabs/propertyGrids/gui/gridPropertyGridComponent.d.ts +4 -4
  315. package/tabs/propertyGrids/gui/gridPropertyGridComponent.js.map +1 -1
  316. package/tabs/propertyGrids/gui/imageBasedSliderPropertyGridComponent.d.ts +4 -4
  317. package/tabs/propertyGrids/gui/imageBasedSliderPropertyGridComponent.js.map +1 -1
  318. package/tabs/propertyGrids/gui/imagePropertyGridComponent.d.ts +3 -3
  319. package/tabs/propertyGrids/gui/imagePropertyGridComponent.js.map +1 -1
  320. package/tabs/propertyGrids/gui/inputTextPropertyGridComponent.d.ts +4 -4
  321. package/tabs/propertyGrids/gui/inputTextPropertyGridComponent.js.map +1 -1
  322. package/tabs/propertyGrids/gui/linePropertyGridComponent.d.ts +4 -4
  323. package/tabs/propertyGrids/gui/linePropertyGridComponent.js.map +1 -1
  324. package/tabs/propertyGrids/gui/radioButtonPropertyGridComponent.d.ts +4 -4
  325. package/tabs/propertyGrids/gui/radioButtonPropertyGridComponent.js.map +1 -1
  326. package/tabs/propertyGrids/gui/rectanglePropertyGridComponent.d.ts +4 -4
  327. package/tabs/propertyGrids/gui/rectanglePropertyGridComponent.js.map +1 -1
  328. package/tabs/propertyGrids/gui/scrollViewerPropertyGridComponent.d.ts +4 -4
  329. package/tabs/propertyGrids/gui/scrollViewerPropertyGridComponent.js.map +1 -1
  330. package/tabs/propertyGrids/gui/sliderPropertyGridComponent.d.ts +4 -4
  331. package/tabs/propertyGrids/gui/sliderPropertyGridComponent.js.map +1 -1
  332. package/tabs/propertyGrids/gui/stackPanelPropertyGridComponent.d.ts +4 -4
  333. package/tabs/propertyGrids/gui/stackPanelPropertyGridComponent.js.map +1 -1
  334. package/tabs/propertyGrids/gui/textBlockPropertyGridComponent.d.ts +4 -4
  335. package/tabs/propertyGrids/gui/textBlockPropertyGridComponent.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"nodePort.js","sourceRoot":"","sources":["../../../../dev/sharedUiComponents/src/nodeGraphSystem/nodePort.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"core/types\";\r\nimport type { Observer } from \"core/Misc/observable\";\r\nimport type { Vector2 } from \"core/Maths/math.vector\";\r\nimport type { GraphNode } from \"./graphNode\";\r\nimport type { StateManager } from \"./stateManager\";\r\nimport type { ISelectionChangedOptions } from \"./interfaces/selectionChangedOptions\";\r\nimport type { FrameNodePort } from \"./frameNodePort\";\r\nimport type { IDisplayManager } from \"./interfaces/displayManager\";\r\nimport { PortDirectValueTypes, type IPortData } from \"./interfaces/portData\";\r\nimport * as commonStyles from \"./common.module.scss\";\r\nimport * as localStyles from \"./nodePort.module.scss\";\r\nimport { BuildFloatUI } from \"./tools\";\r\n\r\nexport class NodePort {\r\n protected _element: HTMLDivElement;\r\n protected _portContainer: HTMLElement;\r\n protected _imgHost: HTMLImageElement;\r\n protected _pip: HTMLDivElement;\r\n protected _stateManager: StateManager;\r\n protected _portLabelElement: Element;\r\n protected _onCandidateLinkMovedObserver: Nullable<Observer<Nullable<Vector2>>>;\r\n protected _onSelectionChangedObserver: Nullable<Observer<Nullable<ISelectionChangedOptions>>>;\r\n protected _exposedOnFrame: boolean;\r\n protected _portUIcontainer?: HTMLDivElement;\r\n public delegatedPort: Nullable<FrameNodePort> = null;\r\n\r\n public get element(): HTMLDivElement {\r\n if (this.delegatedPort) {\r\n return this.delegatedPort.element;\r\n }\r\n\r\n return this._element;\r\n }\r\n\r\n public get container(): HTMLElement {\r\n if (this.delegatedPort) {\r\n return this.delegatedPort.container;\r\n }\r\n\r\n return this._portContainer;\r\n }\r\n\r\n public get portName() {\r\n return this.portData.name;\r\n }\r\n\r\n public set portName(newName: string) {\r\n if (this._portLabelElement) {\r\n this.portData.updateDisplayName(newName);\r\n this.refreshLabel();\r\n }\r\n }\r\n\r\n public refreshLabel() {\r\n if (this._portLabelElement) {\r\n this._portLabelElement.innerHTML = this.portData.name;\r\n (this._portLabelElement as HTMLElement).title = this.portData.name;\r\n }\r\n }\r\n\r\n public get disabled() {\r\n if (!this.portData.isConnected) {\r\n return false;\r\n } else if (this._isConnectedToNodeOutsideOfFrame()) {\r\n //connected to outside node\r\n return true;\r\n } else {\r\n const link = this.node.getLinksForPortData(this.portData);\r\n if (link.length) {\r\n if (link[0].nodeB === this.node) {\r\n // check if this node is the receiving\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public hasLabel() {\r\n return !!this._portLabelElement;\r\n }\r\n\r\n public get exposedOnFrame() {\r\n if (!!this.portData.isExposedOnFrame || this._isConnectedToNodeOutsideOfFrame()) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n public set exposedOnFrame(value: boolean) {\r\n if (this.disabled) {\r\n return;\r\n }\r\n this.portData.isExposedOnFrame = value;\r\n }\r\n\r\n public get exposedPortPosition() {\r\n return this.portData.exposedPortPosition;\r\n }\r\n\r\n public set exposedPortPosition(value: number) {\r\n this.portData.exposedPortPosition = value;\r\n }\r\n\r\n private _isConnectedToNodeOutsideOfFrame() {\r\n const link = this.node.getLinksForPortData(this.portData);\r\n if (link.length) {\r\n for (let i = 0; i < link.length; i++) {\r\n if (link[i].nodeA.enclosingFrameId !== link[i].nodeB!.enclosingFrameId) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public refresh() {\r\n this.refreshLabel();\r\n if (this._stateManager.applyNodePortDesign(this.portData, this._element, this._imgHost, this._pip)) {\r\n this._element.style.background = \"#000\";\r\n }\r\n\r\n if (this._portUIcontainer) {\r\n if (this.portData.isConnected) {\r\n if (this._portLabelElement) {\r\n this._portLabelElement.classList.remove(commonStyles.hidden);\r\n }\r\n this._portUIcontainer.classList.add(commonStyles.hidden);\r\n } else {\r\n if (this._portLabelElement) {\r\n this._portLabelElement.classList.add(commonStyles.hidden);\r\n }\r\n this._portUIcontainer.classList.remove(commonStyles.hidden);\r\n }\r\n }\r\n }\r\n\r\n public constructor(\r\n portContainer: HTMLElement,\r\n public portData: IPortData,\r\n public node: GraphNode,\r\n stateManager: StateManager,\r\n portUIcontainer?: HTMLDivElement\r\n ) {\r\n this._portUIcontainer = portUIcontainer;\r\n this._portContainer = portContainer;\r\n this._element = portContainer.ownerDocument.createElement(\"div\");\r\n this._element.classList.add(commonStyles.port);\r\n portContainer.appendChild(this._element);\r\n this._stateManager = stateManager;\r\n\r\n this._imgHost = portContainer.ownerDocument.createElement(\"img\");\r\n this._imgHost.classList.add(localStyles[\"port-icon\"]);\r\n this._imgHost.classList.add(\"port-icon\"); // Used to flag it as a port icon\r\n this._element.appendChild(this._imgHost);\r\n\r\n this._pip = portContainer.ownerDocument.createElement(\"div\");\r\n this._pip.classList.add(localStyles[\"pip\"]);\r\n this._pip.style.display = \"none\";\r\n this._element.appendChild(this._pip);\r\n\r\n // determine if node name is editable\r\n if (portContainer.children[0].className === commonStyles[\"port-label\"]) {\r\n this._portLabelElement = portContainer.children[0];\r\n }\r\n\r\n (this._element as any).port = this;\r\n\r\n // Drag support\r\n this._element.ondragstart = () => false;\r\n\r\n this._onCandidateLinkMovedObserver = stateManager.onCandidateLinkMoved.add((coords) => {\r\n const rect = this._element.getBoundingClientRect();\r\n\r\n if (!coords || rect.left > coords.x || rect.right < coords.x || rect.top > coords.y || rect.bottom < coords.y) {\r\n this._element.classList.remove(localStyles[\"selected\"]);\r\n this._element.classList.remove(localStyles[\"incompatible\"]);\r\n return;\r\n }\r\n\r\n // Check type compatibility with the source port being dragged\r\n const sourcePortData = this._stateManager.candidateSourcePortData;\r\n if (sourcePortData && sourcePortData.checkCompatibilityState(this.portData) !== 0) {\r\n this._element.classList.add(localStyles[\"incompatible\"]);\r\n this._element.classList.remove(localStyles[\"selected\"]);\r\n } else {\r\n this._element.classList.add(localStyles[\"selected\"]);\r\n this._element.classList.remove(localStyles[\"incompatible\"]);\r\n }\r\n this._stateManager.onCandidatePortSelectedObservable.notifyObservers(this);\r\n });\r\n\r\n this._onSelectionChangedObserver = this._stateManager.onSelectionChangedObservable.add((options) => {\r\n const { selection } = options || {};\r\n if (selection === this) {\r\n this._imgHost.classList.add(localStyles[\"icon-selected\"]);\r\n } else {\r\n this._imgHost.classList.remove(localStyles[\"icon-selected\"]);\r\n }\r\n });\r\n\r\n this.refresh();\r\n }\r\n\r\n public remove() {\r\n this._portContainer.remove();\r\n this.dispose();\r\n }\r\n\r\n public dispose() {\r\n this._stateManager.onCandidateLinkMoved.remove(this._onCandidateLinkMovedObserver);\r\n\r\n if (this._onSelectionChangedObserver) {\r\n this._stateManager.onSelectionChangedObservable.remove(this._onSelectionChangedObserver);\r\n }\r\n }\r\n\r\n public static CreatePortElement(portData: IPortData, node: GraphNode, root: HTMLElement, displayManager: Nullable<IDisplayManager>, stateManager: StateManager) {\r\n const portContainer = root.ownerDocument.createElement(\"div\");\r\n\r\n portContainer.classList.add(commonStyles.portLine);\r\n\r\n root.appendChild(portContainer);\r\n\r\n if (!displayManager || displayManager.shouldDisplayPortLabels(portData)) {\r\n const portLabel = root.ownerDocument.createElement(\"div\");\r\n portLabel.classList.add(commonStyles[\"port-label\"]);\r\n portLabel.innerHTML = portData.name;\r\n portLabel.title = portData.name;\r\n portContainer.appendChild(portLabel);\r\n }\r\n\r\n let portUIcontainer: HTMLDivElement | undefined;\r\n if (portData.directValueDefinition) {\r\n portUIcontainer = root.ownerDocument.createElement(\"div\");\r\n portUIcontainer.classList.add(localStyles.numberContainer);\r\n portContainer.appendChild(portUIcontainer);\r\n portUIcontainer.addEventListener(\"pointerdown\", (evt) => evt.stopPropagation());\r\n portUIcontainer.addEventListener(\"pointerup\", (evt) => evt.stopPropagation());\r\n portUIcontainer.addEventListener(\"pointermove\", (evt) => evt.stopPropagation());\r\n const source = portData.directValueDefinition.source;\r\n const propertyName = portData.directValueDefinition.propertyName;\r\n switch (portData.directValueDefinition.valueType) {\r\n case PortDirectValueTypes.Float:\r\n case PortDirectValueTypes.Int:\r\n BuildFloatUI(\r\n portUIcontainer,\r\n root.ownerDocument,\r\n portData.name,\r\n portData.directValueDefinition.valueType === PortDirectValueTypes.Int,\r\n source,\r\n propertyName,\r\n () => {\r\n node._forceRebuild(source, propertyName);\r\n },\r\n portData.directValueDefinition.valueMin,\r\n portData.directValueDefinition.valueMax\r\n );\r\n break;\r\n case PortDirectValueTypes.String: {\r\n portUIcontainer.classList.add(localStyles.stringContainer);\r\n const textInput = root.ownerDocument.createElement(\"input\");\r\n textInput.type = \"text\";\r\n textInput.value = source[propertyName] ?? \"\";\r\n textInput.placeholder = portData.name;\r\n textInput.onchange = () => {\r\n source[propertyName] = textInput.value;\r\n node._forceRebuild(source, propertyName);\r\n };\r\n portUIcontainer.appendChild(textInput);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return new NodePort(portContainer, portData, node, stateManager, portUIcontainer);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"nodePort.js","sourceRoot":"","sources":["../../../../dev/sharedUiComponents/src/nodeGraphSystem/nodePort.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,oBAAoB,EAAkB,MAAM,uBAAuB,CAAC;AAC7E,OAAO,KAAK,YAAY,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,WAAW,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,OAAO,QAAQ;IAajB,IAAW,OAAO;QACd,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QACtC,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,IAAW,SAAS;QAChB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;QACxC,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC9B,CAAC;IAED,IAAW,QAAQ,CAAC,OAAe;QAC/B,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC;IACL,CAAC;IAEM,YAAY;QACf,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrD,IAAI,CAAC,iBAAiC,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACvE,CAAC;IACL,CAAC;IAED,IAAW,QAAQ;QACf,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC;QACjB,CAAC;aAAM,IAAI,IAAI,CAAC,gCAAgC,EAAE,EAAE,CAAC;YACjD,2BAA2B;YAC3B,OAAO,IAAI,CAAC;QAChB,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1D,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC9B,sCAAsC;oBACtC,OAAO,IAAI,CAAC;gBAChB,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,QAAQ;QACX,OAAO,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACpC,CAAC;IAED,IAAW,cAAc;QACrB,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,IAAI,CAAC,gCAAgC,EAAE,EAAE,CAAC;YAC9E,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAW,cAAc,CAAC,KAAc;QACpC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,OAAO;QACX,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,gBAAgB,GAAG,KAAK,CAAC;IAC3C,CAAC;IAED,IAAW,mBAAmB;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC7C,CAAC;IAED,IAAW,mBAAmB,CAAC,KAAa;QACxC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,GAAG,KAAK,CAAC;IAC9C,CAAC;IAEO,gCAAgC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAM,CAAC,gBAAgB,EAAE,CAAC;oBACrE,OAAO,IAAI,CAAC;gBAChB,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,OAAO;QACV,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACjG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;QAC5C,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;gBAC5B,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACzB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBACjE,CAAC;gBACD,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACJ,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACzB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAC9D,CAAC;gBACD,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAChE,CAAC;QACL,CAAC;IACL,CAAC;IAED,YACI,aAA0B,EACnB,QAAmB,EACnB,IAAe,EACtB,YAA0B,EAC1B,eAAgC;QAHzB,aAAQ,GAAR,QAAQ,CAAW;QACnB,SAAI,GAAJ,IAAI,CAAW;QApHnB,kBAAa,GAA4B,IAAI,CAAC;QAwHjD,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/C,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAElC,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,iCAAiC;QAC3E,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEzC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErC,qCAAqC;QACrC,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;YACrE,IAAI,CAAC,iBAAiB,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC;QAEA,IAAI,CAAC,QAAgB,CAAC,IAAI,GAAG,IAAI,CAAC;QAEnC,eAAe;QACf,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC;QAExC,IAAI,CAAC,6BAA6B,GAAG,YAAY,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAClF,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;YAEnD,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC;gBAC5G,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;gBACxD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC5D,OAAO;YACX,CAAC;YAED,8DAA8D;YAC9D,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC;YAClE,IAAI,cAAc,IAAI,cAAc,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChF,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;gBACzD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;gBACrD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;YAChE,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,iCAAiC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,aAAa,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YAC/F,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;YACpC,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;gBACrB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC;YAC9D,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC;YACjE,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAEM,MAAM;QACT,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAEM,OAAO;QACV,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAEnF,IAAI,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACnC,IAAI,CAAC,aAAa,CAAC,4BAA4B,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC7F,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAAC,QAAmB,EAAE,IAAe,EAAE,IAAiB,EAAE,cAAyC,EAAE,YAA0B;QAC1J,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAE9D,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEnD,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAEhC,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtE,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC1D,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;YACpD,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC;YACpC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC;YAChC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,eAA2C,CAAC;QAChD,IAAI,QAAQ,CAAC,qBAAqB,EAAE,CAAC;YACjC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC1D,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;YAC3D,aAAa,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;YAC3C,eAAe,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;YAChF,eAAe,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;YAC9E,eAAe,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;YAChF,MAAM,MAAM,GAAG,QAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC;YACrD,MAAM,YAAY,GAAG,QAAQ,CAAC,qBAAqB,CAAC,YAAY,CAAC;YACjE,QAAQ,QAAQ,CAAC,qBAAqB,CAAC,SAAS,EAAE,CAAC;gBAC/C,KAAK,oBAAoB,CAAC,KAAK,CAAC;gBAChC,KAAK,oBAAoB,CAAC,GAAG;oBACzB,YAAY,CACR,eAAe,EACf,IAAI,CAAC,aAAa,EAClB,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,qBAAqB,CAAC,SAAS,KAAK,oBAAoB,CAAC,GAAG,EACrE,MAAM,EACN,YAAY,EACZ,GAAG,EAAE;wBACD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;oBAC7C,CAAC,EACD,QAAQ,CAAC,qBAAqB,CAAC,QAAQ,EACvC,QAAQ,CAAC,qBAAqB,CAAC,QAAQ,CAC1C,CAAC;oBACF,MAAM;gBACV,KAAK,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC/B,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;oBAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;oBAC5D,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC;oBACxB,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;oBAC7C,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;oBACtC,SAAS,CAAC,QAAQ,GAAG,GAAG,EAAE;wBACtB,MAAM,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;wBACvC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;oBAC7C,CAAC,CAAC;oBACF,eAAe,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;oBACvC,MAAM;gBACV,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,IAAI,QAAQ,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;IACtF,CAAC;CACJ","sourcesContent":["import { type Nullable } from \"core/types\";\r\nimport { type Observer } from \"core/Misc/observable\";\r\nimport { type Vector2 } from \"core/Maths/math.vector\";\r\nimport { type GraphNode } from \"./graphNode\";\r\nimport { type StateManager } from \"./stateManager\";\r\nimport { type ISelectionChangedOptions } from \"./interfaces/selectionChangedOptions\";\r\nimport { type FrameNodePort } from \"./frameNodePort\";\r\nimport { type IDisplayManager } from \"./interfaces/displayManager\";\r\nimport { PortDirectValueTypes, type IPortData } from \"./interfaces/portData\";\r\nimport * as commonStyles from \"./common.module.scss\";\r\nimport * as localStyles from \"./nodePort.module.scss\";\r\nimport { BuildFloatUI } from \"./tools\";\r\n\r\nexport class NodePort {\r\n protected _element: HTMLDivElement;\r\n protected _portContainer: HTMLElement;\r\n protected _imgHost: HTMLImageElement;\r\n protected _pip: HTMLDivElement;\r\n protected _stateManager: StateManager;\r\n protected _portLabelElement: Element;\r\n protected _onCandidateLinkMovedObserver: Nullable<Observer<Nullable<Vector2>>>;\r\n protected _onSelectionChangedObserver: Nullable<Observer<Nullable<ISelectionChangedOptions>>>;\r\n protected _exposedOnFrame: boolean;\r\n protected _portUIcontainer?: HTMLDivElement;\r\n public delegatedPort: Nullable<FrameNodePort> = null;\r\n\r\n public get element(): HTMLDivElement {\r\n if (this.delegatedPort) {\r\n return this.delegatedPort.element;\r\n }\r\n\r\n return this._element;\r\n }\r\n\r\n public get container(): HTMLElement {\r\n if (this.delegatedPort) {\r\n return this.delegatedPort.container;\r\n }\r\n\r\n return this._portContainer;\r\n }\r\n\r\n public get portName() {\r\n return this.portData.name;\r\n }\r\n\r\n public set portName(newName: string) {\r\n if (this._portLabelElement) {\r\n this.portData.updateDisplayName(newName);\r\n this.refreshLabel();\r\n }\r\n }\r\n\r\n public refreshLabel() {\r\n if (this._portLabelElement) {\r\n this._portLabelElement.innerHTML = this.portData.name;\r\n (this._portLabelElement as HTMLElement).title = this.portData.name;\r\n }\r\n }\r\n\r\n public get disabled() {\r\n if (!this.portData.isConnected) {\r\n return false;\r\n } else if (this._isConnectedToNodeOutsideOfFrame()) {\r\n //connected to outside node\r\n return true;\r\n } else {\r\n const link = this.node.getLinksForPortData(this.portData);\r\n if (link.length) {\r\n if (link[0].nodeB === this.node) {\r\n // check if this node is the receiving\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public hasLabel() {\r\n return !!this._portLabelElement;\r\n }\r\n\r\n public get exposedOnFrame() {\r\n if (!!this.portData.isExposedOnFrame || this._isConnectedToNodeOutsideOfFrame()) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n public set exposedOnFrame(value: boolean) {\r\n if (this.disabled) {\r\n return;\r\n }\r\n this.portData.isExposedOnFrame = value;\r\n }\r\n\r\n public get exposedPortPosition() {\r\n return this.portData.exposedPortPosition;\r\n }\r\n\r\n public set exposedPortPosition(value: number) {\r\n this.portData.exposedPortPosition = value;\r\n }\r\n\r\n private _isConnectedToNodeOutsideOfFrame() {\r\n const link = this.node.getLinksForPortData(this.portData);\r\n if (link.length) {\r\n for (let i = 0; i < link.length; i++) {\r\n if (link[i].nodeA.enclosingFrameId !== link[i].nodeB!.enclosingFrameId) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public refresh() {\r\n this.refreshLabel();\r\n if (this._stateManager.applyNodePortDesign(this.portData, this._element, this._imgHost, this._pip)) {\r\n this._element.style.background = \"#000\";\r\n }\r\n\r\n if (this._portUIcontainer) {\r\n if (this.portData.isConnected) {\r\n if (this._portLabelElement) {\r\n this._portLabelElement.classList.remove(commonStyles.hidden);\r\n }\r\n this._portUIcontainer.classList.add(commonStyles.hidden);\r\n } else {\r\n if (this._portLabelElement) {\r\n this._portLabelElement.classList.add(commonStyles.hidden);\r\n }\r\n this._portUIcontainer.classList.remove(commonStyles.hidden);\r\n }\r\n }\r\n }\r\n\r\n public constructor(\r\n portContainer: HTMLElement,\r\n public portData: IPortData,\r\n public node: GraphNode,\r\n stateManager: StateManager,\r\n portUIcontainer?: HTMLDivElement\r\n ) {\r\n this._portUIcontainer = portUIcontainer;\r\n this._portContainer = portContainer;\r\n this._element = portContainer.ownerDocument.createElement(\"div\");\r\n this._element.classList.add(commonStyles.port);\r\n portContainer.appendChild(this._element);\r\n this._stateManager = stateManager;\r\n\r\n this._imgHost = portContainer.ownerDocument.createElement(\"img\");\r\n this._imgHost.classList.add(localStyles[\"port-icon\"]);\r\n this._imgHost.classList.add(\"port-icon\"); // Used to flag it as a port icon\r\n this._element.appendChild(this._imgHost);\r\n\r\n this._pip = portContainer.ownerDocument.createElement(\"div\");\r\n this._pip.classList.add(localStyles[\"pip\"]);\r\n this._pip.style.display = \"none\";\r\n this._element.appendChild(this._pip);\r\n\r\n // determine if node name is editable\r\n if (portContainer.children[0].className === commonStyles[\"port-label\"]) {\r\n this._portLabelElement = portContainer.children[0];\r\n }\r\n\r\n (this._element as any).port = this;\r\n\r\n // Drag support\r\n this._element.ondragstart = () => false;\r\n\r\n this._onCandidateLinkMovedObserver = stateManager.onCandidateLinkMoved.add((coords) => {\r\n const rect = this._element.getBoundingClientRect();\r\n\r\n if (!coords || rect.left > coords.x || rect.right < coords.x || rect.top > coords.y || rect.bottom < coords.y) {\r\n this._element.classList.remove(localStyles[\"selected\"]);\r\n this._element.classList.remove(localStyles[\"incompatible\"]);\r\n return;\r\n }\r\n\r\n // Check type compatibility with the source port being dragged\r\n const sourcePortData = this._stateManager.candidateSourcePortData;\r\n if (sourcePortData && sourcePortData.checkCompatibilityState(this.portData) !== 0) {\r\n this._element.classList.add(localStyles[\"incompatible\"]);\r\n this._element.classList.remove(localStyles[\"selected\"]);\r\n } else {\r\n this._element.classList.add(localStyles[\"selected\"]);\r\n this._element.classList.remove(localStyles[\"incompatible\"]);\r\n }\r\n this._stateManager.onCandidatePortSelectedObservable.notifyObservers(this);\r\n });\r\n\r\n this._onSelectionChangedObserver = this._stateManager.onSelectionChangedObservable.add((options) => {\r\n const { selection } = options || {};\r\n if (selection === this) {\r\n this._imgHost.classList.add(localStyles[\"icon-selected\"]);\r\n } else {\r\n this._imgHost.classList.remove(localStyles[\"icon-selected\"]);\r\n }\r\n });\r\n\r\n this.refresh();\r\n }\r\n\r\n public remove() {\r\n this._portContainer.remove();\r\n this.dispose();\r\n }\r\n\r\n public dispose() {\r\n this._stateManager.onCandidateLinkMoved.remove(this._onCandidateLinkMovedObserver);\r\n\r\n if (this._onSelectionChangedObserver) {\r\n this._stateManager.onSelectionChangedObservable.remove(this._onSelectionChangedObserver);\r\n }\r\n }\r\n\r\n public static CreatePortElement(portData: IPortData, node: GraphNode, root: HTMLElement, displayManager: Nullable<IDisplayManager>, stateManager: StateManager) {\r\n const portContainer = root.ownerDocument.createElement(\"div\");\r\n\r\n portContainer.classList.add(commonStyles.portLine);\r\n\r\n root.appendChild(portContainer);\r\n\r\n if (!displayManager || displayManager.shouldDisplayPortLabels(portData)) {\r\n const portLabel = root.ownerDocument.createElement(\"div\");\r\n portLabel.classList.add(commonStyles[\"port-label\"]);\r\n portLabel.innerHTML = portData.name;\r\n portLabel.title = portData.name;\r\n portContainer.appendChild(portLabel);\r\n }\r\n\r\n let portUIcontainer: HTMLDivElement | undefined;\r\n if (portData.directValueDefinition) {\r\n portUIcontainer = root.ownerDocument.createElement(\"div\");\r\n portUIcontainer.classList.add(localStyles.numberContainer);\r\n portContainer.appendChild(portUIcontainer);\r\n portUIcontainer.addEventListener(\"pointerdown\", (evt) => evt.stopPropagation());\r\n portUIcontainer.addEventListener(\"pointerup\", (evt) => evt.stopPropagation());\r\n portUIcontainer.addEventListener(\"pointermove\", (evt) => evt.stopPropagation());\r\n const source = portData.directValueDefinition.source;\r\n const propertyName = portData.directValueDefinition.propertyName;\r\n switch (portData.directValueDefinition.valueType) {\r\n case PortDirectValueTypes.Float:\r\n case PortDirectValueTypes.Int:\r\n BuildFloatUI(\r\n portUIcontainer,\r\n root.ownerDocument,\r\n portData.name,\r\n portData.directValueDefinition.valueType === PortDirectValueTypes.Int,\r\n source,\r\n propertyName,\r\n () => {\r\n node._forceRebuild(source, propertyName);\r\n },\r\n portData.directValueDefinition.valueMin,\r\n portData.directValueDefinition.valueMax\r\n );\r\n break;\r\n case PortDirectValueTypes.String: {\r\n portUIcontainer.classList.add(localStyles.stringContainer);\r\n const textInput = root.ownerDocument.createElement(\"input\");\r\n textInput.type = \"text\";\r\n textInput.value = source[propertyName] ?? \"\";\r\n textInput.placeholder = portData.name;\r\n textInput.onchange = () => {\r\n source[propertyName] = textInput.value;\r\n node._forceRebuild(source, propertyName);\r\n };\r\n portUIcontainer.appendChild(textInput);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return new NodePort(portContainer, portData, node, stateManager, portUIcontainer);\r\n }\r\n}\r\n"]}
@@ -1,5 +1,5 @@
1
- import type { ComponentClass } from "react";
2
- import type { IPropertyComponentProps } from "./interfaces/propertyComponentProps.js";
1
+ import { type ComponentClass } from "react";
2
+ import { type IPropertyComponentProps } from "./interfaces/propertyComponentProps.js";
3
3
  export declare class PropertyLedger {
4
4
  static DefaultControl: ComponentClass<IPropertyComponentProps>;
5
5
  static RegisteredControls: {
@@ -1 +1 @@
1
- {"version":3,"file":"propertyLedger.js","sourceRoot":"","sources":["../../../../dev/sharedUiComponents/src/nodeGraphSystem/propertyLedger.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,cAAc;;AAET,iCAAkB,GAA+D,EAAE,CAAC","sourcesContent":["import type { ComponentClass } from \"react\";\r\nimport type { IPropertyComponentProps } from \"./interfaces/propertyComponentProps\";\r\n\r\nexport class PropertyLedger {\r\n public static DefaultControl: ComponentClass<IPropertyComponentProps>;\r\n public static RegisteredControls: { [key: string]: ComponentClass<IPropertyComponentProps> } = {};\r\n}\r\n"]}
1
+ {"version":3,"file":"propertyLedger.js","sourceRoot":"","sources":["../../../../dev/sharedUiComponents/src/nodeGraphSystem/propertyLedger.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,cAAc;;AAET,iCAAkB,GAA+D,EAAE,CAAC","sourcesContent":["import { type ComponentClass } from \"react\";\r\nimport { type IPropertyComponentProps } from \"./interfaces/propertyComponentProps\";\r\n\r\nexport class PropertyLedger {\r\n public static DefaultControl: ComponentClass<IPropertyComponentProps>;\r\n public static RegisteredControls: { [key: string]: ComponentClass<IPropertyComponentProps> } = {};\r\n}\r\n"]}
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import type { StateManager } from "./stateManager.js";
2
+ import { type StateManager } from "./stateManager.js";
3
3
  import "./searchBox.scss";
4
4
  export interface ISearchBoxComponentProps {
5
5
  stateManager: StateManager;
@@ -1 +1 @@
1
- {"version":3,"file":"searchBox.js","sourceRoot":"","sources":["../../../../dev/sharedUiComponents/src/nodeGraphSystem/searchBox.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAM3D;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK,CAAC,SAAkG;IAM5I,YAAY,KAA+B;QACvC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;QAEhE,IAAI,CAAC,aAAa,GAAG,CAAC,GAAkB,EAAE,EAAE;YACxC,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACvB,IAAI,CAAC,IAAI,EAAE,CAAC;YAChB,CAAC;QACL,CAAC,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC9D,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACzF,CAAC,CAAC,CAAC;IACP,CAAC;IAED,IAAI;QACA,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,gBAAgB,GAAG,KAAK,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5F,CAAC;IAED,cAAc,CAAC,GAAwC;QACnD,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,kBAAkB,CAAC,IAAY;QAC3B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,4BAA4B,CAAC,eAAe,CAAC;YACjE,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,iBAAiB,EAAE,IAAI;YACvB,QAAQ,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,EAAE,CAAC;IAChB,CAAC;IAED,SAAS,CAAC,GAAwB;QAC9B,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;YAC/D,OAAO;QACX,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjG,OAAO;QACX,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5E,OAAO;QACX,CAAC;IACL,CAAC;IAED,YAAY;QACR,6FAA6F;QAE7F,uCAAuC;QACvC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACzE,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAEjF,OAAO,CACH,KAAC,iBAAiB,IACd,CAAC,EAAE,IAAI,CAAC,QAAQ,EAChB,CAAC,EAAE,IAAI,CAAC,QAAQ,EAChB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC7B,IAAI,EAAE,GAAG,EAAE;gBACP,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,gBAAgB,GAAG,KAAK,CAAC;YACrD,CAAC,YAED,KAAC,SAAS,IACN,KAAK,EAAE,cAAc,EACrB,cAAc,EAAE,CAAC,IAAY,EAAE,EAAE;oBAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC/D,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,4BAA4B,CAAC,eAAe,CAAC;wBACjE,IAAI,EAAE,YAAY;wBAClB,OAAO,EAAE,IAAI,CAAC,QAAQ;wBACtB,OAAO,EAAE,IAAI,CAAC,QAAQ;wBACtB,iBAAiB,EAAE,IAAI;wBACvB,QAAQ,EAAE,IAAI;qBACjB,CAAC,CAAC;gBACP,CAAC,EACD,KAAK,EAAC,YAAY,GACpB,GACc,CACvB,CAAC;IACN,CAAC;IAED,cAAc;QACV,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,aAAa,GAAG,GAAG,CAAC;QAC1B,MAAM,cAAc,GAAG,GAAG,CAAC;QAE3B,uCAAuC;QACvC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAEzE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;YACtD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9G,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,cAAc,CAAC,cAAc,CAAE,CAAC,qBAAqB,EAAE,CAAC;QACnH,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,aAAa,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACtE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,cAAc,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG;YACb,IAAI,EAAE,OAAO,GAAG,IAAI;YACpB,GAAG,EAAE,OAAO,GAAG,IAAI;SACtB,CAAC;QAEF,IAAI,OAAO,GAAG,aAAa,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC;YAChD,QAAQ,CAAC,IAAI,GAAG,aAAa,CAAC,KAAK,GAAG,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC;QACpE,CAAC;aAAM,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;YACtB,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC;QAC3B,CAAC;QAED,IAAI,OAAO,GAAG,cAAc,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;YAClD,QAAQ,CAAC,GAAG,GAAG,aAAa,CAAC,MAAM,GAAG,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC;QACrE,CAAC;aAAM,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;YACtB,QAAQ,CAAC,GAAG,GAAG,MAAM,CAAC;QAC1B,CAAC;QAED,OAAO,CACH,eAAK,EAAE,EAAC,wBAAwB,aAC5B,cAAK,EAAE,EAAC,8BAA8B,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAQ,EACzE,eAAK,EAAE,EAAC,kBAAkB,EAAC,KAAK,EAAE,QAAQ,aACtC,cAAK,SAAS,EAAC,wBAAwB,2BAAiB,EACxD,gBACI,IAAI,EAAC,MAAM,EACX,WAAW,EAAC,WAAW,EACvB,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAC3C,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EACvC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACxB,SAAS,EAAC,yBAAyB,EACnC,SAAS,EAAE,IAAI,EACf,QAAQ,EAAE,CAAC,GACb,EACF,cAAK,SAAS,EAAC,uBAAuB,YACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gCACzB,OAAO,CACH,cACI,SAAS,EAAE,6BAA6B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAC9F,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAG3C,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,IAF1B,IAAI,CAGP,CACT,CAAC;4BACN,CAAC,CAAC,GACA,IACJ,IACJ,CACT,CAAC;IACN,CAAC;IAEQ,MAAM;QACX,OAAO,KAAC,WAAW,CAAC,QAAQ,cAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,GAAwB,CAAC;IACvI,CAAC;CACJ","sourcesContent":["import * as React from \"react\";\r\nimport type { StateManager } from \"./stateManager\";\r\nimport \"./searchBox.scss\";\r\nimport { NodeLedger } from \"./nodeLedger\";\r\nimport { ToolContext } from \"../fluent/hoc/fluentToolWrapper\";\r\nimport { PositionedPopover } from \"../fluent/primitives/positionedPopover\";\r\nimport { SearchBox } from \"../fluent/primitives/searchBox\";\r\n\r\nexport interface ISearchBoxComponentProps {\r\n stateManager: StateManager;\r\n}\r\n\r\n/**\r\n * The search box component.\r\n */\r\nexport class SearchBoxComponent extends React.Component<ISearchBoxComponentProps, { isVisible: boolean; filter: string; selectedIndex: number }> {\r\n private _handleEscKey: (evt: KeyboardEvent) => void;\r\n private _targetX: number;\r\n private _targetY: number;\r\n private _nodes: string[];\r\n\r\n constructor(props: ISearchBoxComponentProps) {\r\n super(props);\r\n\r\n this.state = { isVisible: false, filter: \"\", selectedIndex: 0 };\r\n\r\n this._handleEscKey = (evt: KeyboardEvent) => {\r\n if (evt.key === \"Escape\") {\r\n this.hide();\r\n }\r\n };\r\n\r\n this.props.stateManager.onSearchBoxRequiredObservable.add((loc) => {\r\n this._targetX = loc.x;\r\n this._targetY = loc.y;\r\n this.setState({ isVisible: true, filter: \"\", selectedIndex: 0 });\r\n this.props.stateManager.hostDocument.addEventListener(\"keydown\", this._handleEscKey);\r\n });\r\n }\r\n\r\n hide() {\r\n this.setState({ isVisible: false });\r\n this.props.stateManager.modalIsDisplayed = false;\r\n this.props.stateManager.hostDocument.removeEventListener(\"keydown\", this._handleEscKey);\r\n }\r\n\r\n onFilterChange(evt: React.ChangeEvent<HTMLInputElement>) {\r\n this.setState({ filter: evt.target.value });\r\n }\r\n\r\n onNewNodeRequested(name: string) {\r\n this.props.stateManager.onNewBlockRequiredObservable.notifyObservers({\r\n type: name,\r\n targetX: this._targetX,\r\n targetY: this._targetY,\r\n needRepositioning: true,\r\n smartAdd: true,\r\n });\r\n\r\n this.hide();\r\n }\r\n\r\n onKeyDown(evt: React.KeyboardEvent) {\r\n if (evt.code === \"Enter\" && this._nodes.length > 0) {\r\n this.onNewNodeRequested(this._nodes[this.state.selectedIndex]);\r\n return;\r\n }\r\n\r\n if (evt.code === \"ArrowDown\" && this._nodes.length > 0) {\r\n this.setState({ selectedIndex: Math.min(this.state.selectedIndex + 1, this._nodes.length - 1) });\r\n return;\r\n }\r\n\r\n if (evt.code === \"ArrowUp\" && this._nodes.length > 0) {\r\n this.setState({ selectedIndex: Math.max(this.state.selectedIndex - 1, 0) });\r\n return;\r\n }\r\n }\r\n\r\n renderFluent() {\r\n // Note this function no longer uses other helpers from this file for easy non-fluent removal\r\n\r\n // Sort and deduplicate the node names.\r\n this._nodes = Array.from(new Set(NodeLedger.RegisteredNodeNames.sort()));\r\n const formattedNodes = this._nodes.map((name) => NodeLedger.NameFormatter(name));\r\n\r\n return (\r\n <PositionedPopover\r\n x={this._targetX}\r\n y={this._targetY}\r\n visible={this.state.isVisible}\r\n hide={() => {\r\n this.props.stateManager.modalIsDisplayed = false;\r\n }}\r\n >\r\n <SearchBox\r\n items={formattedNodes}\r\n onItemSelected={(item: string) => {\r\n const originalName = this._nodes[formattedNodes.indexOf(item)];\r\n this.props.stateManager.onNewBlockRequiredObservable.notifyObservers({\r\n type: originalName,\r\n targetX: this._targetX,\r\n targetY: this._targetY,\r\n needRepositioning: true,\r\n smartAdd: true,\r\n });\r\n }}\r\n title=\"Add a node\"\r\n />\r\n </PositionedPopover>\r\n );\r\n }\r\n\r\n renderOriginal() {\r\n if (!this.state.isVisible) {\r\n return null;\r\n }\r\n\r\n const expectedWidth = 300;\r\n const expectedHeight = 400;\r\n\r\n // Sort and deduplicate the node names.\r\n this._nodes = Array.from(new Set(NodeLedger.RegisteredNodeNames.sort()));\r\n\r\n if (this.state.filter) {\r\n const filter = this.state.filter.toLowerCase().trim();\r\n this._nodes = this._nodes.filter((name) => NodeLedger.NameFormatter(name).toLowerCase().includes(filter));\r\n }\r\n\r\n const containerRect = this.props.stateManager.hostDocument.getElementById(\"graph-canvas\")!.getBoundingClientRect();\r\n const targetX = this._targetX - (expectedWidth / 2 + containerRect.x);\r\n const targetY = this._targetY - (expectedHeight / 2 + containerRect.y);\r\n const locStyle = {\r\n left: targetX + \"px\",\r\n top: targetY + \"px\",\r\n };\r\n\r\n if (targetX + expectedWidth > containerRect.width) {\r\n locStyle.left = containerRect.width - expectedWidth - 10 + \"px\";\r\n } else if (targetX < 10) {\r\n locStyle.left = \"10px\";\r\n }\r\n\r\n if (targetY + expectedHeight > containerRect.height) {\r\n locStyle.top = containerRect.height - expectedHeight - 10 + \"px\";\r\n } else if (targetY < 10) {\r\n locStyle.top = \"10px\";\r\n }\r\n\r\n return (\r\n <div id=\"graph-search-container\">\r\n <div id=\"graph-search-picking-blocker\" onClick={() => this.hide()}></div>\r\n <div id=\"graph-search-box\" style={locStyle}>\r\n <div className=\"graph-search-box-title\">Add a node</div>\r\n <input\r\n type=\"text\"\r\n placeholder=\"Search...\"\r\n onChange={(evt) => this.onFilterChange(evt)}\r\n onKeyDown={(evt) => this.onKeyDown(evt)}\r\n value={this.state.filter}\r\n className=\"graph-search-box-filter\"\r\n autoFocus={true}\r\n tabIndex={0}\r\n />\r\n <div className=\"graph-search-box-list\">\r\n {this._nodes.map((name, i) => {\r\n return (\r\n <div\r\n className={\"graph-search-box-list-item \" + (this.state.selectedIndex === i ? \"selected \" : \"\")}\r\n onClick={() => this.onNewNodeRequested(name)}\r\n key={name}\r\n >\r\n {NodeLedger.NameFormatter(name)}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n override render() {\r\n return <ToolContext.Consumer>{({ useFluent }) => (useFluent ? this.renderFluent() : this.renderOriginal())}</ToolContext.Consumer>;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"searchBox.js","sourceRoot":"","sources":["../../../../dev/sharedUiComponents/src/nodeGraphSystem/searchBox.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\r\nimport { type StateManager } from \"./stateManager\";\r\nimport \"./searchBox.scss\";\r\nimport { NodeLedger } from \"./nodeLedger\";\r\nimport { ToolContext } from \"../fluent/hoc/fluentToolWrapper\";\r\nimport { PositionedPopover } from \"../fluent/primitives/positionedPopover\";\r\nimport { SearchBox } from \"../fluent/primitives/searchBox\";\r\n\r\nexport interface ISearchBoxComponentProps {\r\n stateManager: StateManager;\r\n}\r\n\r\n/**\r\n * The search box component.\r\n */\r\nexport class SearchBoxComponent extends React.Component<ISearchBoxComponentProps, { isVisible: boolean; filter: string; selectedIndex: number }> {\r\n private _handleEscKey: (evt: KeyboardEvent) => void;\r\n private _targetX: number;\r\n private _targetY: number;\r\n private _nodes: string[];\r\n\r\n constructor(props: ISearchBoxComponentProps) {\r\n super(props);\r\n\r\n this.state = { isVisible: false, filter: \"\", selectedIndex: 0 };\r\n\r\n this._handleEscKey = (evt: KeyboardEvent) => {\r\n if (evt.key === \"Escape\") {\r\n this.hide();\r\n }\r\n };\r\n\r\n this.props.stateManager.onSearchBoxRequiredObservable.add((loc) => {\r\n this._targetX = loc.x;\r\n this._targetY = loc.y;\r\n this.setState({ isVisible: true, filter: \"\", selectedIndex: 0 });\r\n this.props.stateManager.hostDocument.addEventListener(\"keydown\", this._handleEscKey);\r\n });\r\n }\r\n\r\n hide() {\r\n this.setState({ isVisible: false });\r\n this.props.stateManager.modalIsDisplayed = false;\r\n this.props.stateManager.hostDocument.removeEventListener(\"keydown\", this._handleEscKey);\r\n }\r\n\r\n onFilterChange(evt: React.ChangeEvent<HTMLInputElement>) {\r\n this.setState({ filter: evt.target.value });\r\n }\r\n\r\n onNewNodeRequested(name: string) {\r\n this.props.stateManager.onNewBlockRequiredObservable.notifyObservers({\r\n type: name,\r\n targetX: this._targetX,\r\n targetY: this._targetY,\r\n needRepositioning: true,\r\n smartAdd: true,\r\n });\r\n\r\n this.hide();\r\n }\r\n\r\n onKeyDown(evt: React.KeyboardEvent) {\r\n if (evt.code === \"Enter\" && this._nodes.length > 0) {\r\n this.onNewNodeRequested(this._nodes[this.state.selectedIndex]);\r\n return;\r\n }\r\n\r\n if (evt.code === \"ArrowDown\" && this._nodes.length > 0) {\r\n this.setState({ selectedIndex: Math.min(this.state.selectedIndex + 1, this._nodes.length - 1) });\r\n return;\r\n }\r\n\r\n if (evt.code === \"ArrowUp\" && this._nodes.length > 0) {\r\n this.setState({ selectedIndex: Math.max(this.state.selectedIndex - 1, 0) });\r\n return;\r\n }\r\n }\r\n\r\n renderFluent() {\r\n // Note this function no longer uses other helpers from this file for easy non-fluent removal\r\n\r\n // Sort and deduplicate the node names.\r\n this._nodes = Array.from(new Set(NodeLedger.RegisteredNodeNames.sort()));\r\n const formattedNodes = this._nodes.map((name) => NodeLedger.NameFormatter(name));\r\n\r\n return (\r\n <PositionedPopover\r\n x={this._targetX}\r\n y={this._targetY}\r\n visible={this.state.isVisible}\r\n hide={() => {\r\n this.props.stateManager.modalIsDisplayed = false;\r\n }}\r\n >\r\n <SearchBox\r\n items={formattedNodes}\r\n onItemSelected={(item: string) => {\r\n const originalName = this._nodes[formattedNodes.indexOf(item)];\r\n this.props.stateManager.onNewBlockRequiredObservable.notifyObservers({\r\n type: originalName,\r\n targetX: this._targetX,\r\n targetY: this._targetY,\r\n needRepositioning: true,\r\n smartAdd: true,\r\n });\r\n }}\r\n title=\"Add a node\"\r\n />\r\n </PositionedPopover>\r\n );\r\n }\r\n\r\n renderOriginal() {\r\n if (!this.state.isVisible) {\r\n return null;\r\n }\r\n\r\n const expectedWidth = 300;\r\n const expectedHeight = 400;\r\n\r\n // Sort and deduplicate the node names.\r\n this._nodes = Array.from(new Set(NodeLedger.RegisteredNodeNames.sort()));\r\n\r\n if (this.state.filter) {\r\n const filter = this.state.filter.toLowerCase().trim();\r\n this._nodes = this._nodes.filter((name) => NodeLedger.NameFormatter(name).toLowerCase().includes(filter));\r\n }\r\n\r\n const containerRect = this.props.stateManager.hostDocument.getElementById(\"graph-canvas\")!.getBoundingClientRect();\r\n const targetX = this._targetX - (expectedWidth / 2 + containerRect.x);\r\n const targetY = this._targetY - (expectedHeight / 2 + containerRect.y);\r\n const locStyle = {\r\n left: targetX + \"px\",\r\n top: targetY + \"px\",\r\n };\r\n\r\n if (targetX + expectedWidth > containerRect.width) {\r\n locStyle.left = containerRect.width - expectedWidth - 10 + \"px\";\r\n } else if (targetX < 10) {\r\n locStyle.left = \"10px\";\r\n }\r\n\r\n if (targetY + expectedHeight > containerRect.height) {\r\n locStyle.top = containerRect.height - expectedHeight - 10 + \"px\";\r\n } else if (targetY < 10) {\r\n locStyle.top = \"10px\";\r\n }\r\n\r\n return (\r\n <div id=\"graph-search-container\">\r\n <div id=\"graph-search-picking-blocker\" onClick={() => this.hide()}></div>\r\n <div id=\"graph-search-box\" style={locStyle}>\r\n <div className=\"graph-search-box-title\">Add a node</div>\r\n <input\r\n type=\"text\"\r\n placeholder=\"Search...\"\r\n onChange={(evt) => this.onFilterChange(evt)}\r\n onKeyDown={(evt) => this.onKeyDown(evt)}\r\n value={this.state.filter}\r\n className=\"graph-search-box-filter\"\r\n autoFocus={true}\r\n tabIndex={0}\r\n />\r\n <div className=\"graph-search-box-list\">\r\n {this._nodes.map((name, i) => {\r\n return (\r\n <div\r\n className={\"graph-search-box-list-item \" + (this.state.selectedIndex === i ? \"selected \" : \"\")}\r\n onClick={() => this.onNewNodeRequested(name)}\r\n key={name}\r\n >\r\n {NodeLedger.NameFormatter(name)}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n override render() {\r\n return <ToolContext.Consumer>{({ useFluent }) => (useFluent ? this.renderFluent() : this.renderOriginal())}</ToolContext.Consumer>;\r\n }\r\n}\r\n"]}
@@ -1,16 +1,16 @@
1
- import type { Vector2 } from "@onerjs/core/Maths/math.vector.js";
1
+ import { type Vector2 } from "@onerjs/core/Maths/math.vector.js";
2
2
  import { Observable } from "@onerjs/core/Misc/observable.js";
3
- import type { Nullable } from "@onerjs/core/types.js";
4
- import type { FrameNodePort } from "./frameNodePort.js";
5
- import type { GraphFrame } from "./graphFrame.js";
6
- import type { GraphNode } from "./graphNode.js";
7
- import type { INodeContainer } from "./interfaces/nodeContainer.js";
8
- import type { INodeData } from "./interfaces/nodeData.js";
9
- import type { IPortData } from "./interfaces/portData.js";
10
- import type { ISelectionChangedOptions } from "./interfaces/selectionChangedOptions.js";
11
- import type { NodePort } from "./nodePort.js";
12
- import type { HistoryStack } from "../historyStack.js";
13
- import type { Scene } from "@onerjs/core/scene.js";
3
+ import { type Nullable } from "@onerjs/core/types.js";
4
+ import { type FrameNodePort } from "./frameNodePort.js";
5
+ import { type GraphFrame } from "./graphFrame.js";
6
+ import { type GraphNode } from "./graphNode.js";
7
+ import { type INodeContainer } from "./interfaces/nodeContainer.js";
8
+ import { type INodeData } from "./interfaces/nodeData.js";
9
+ import { type IPortData } from "./interfaces/portData.js";
10
+ import { type ISelectionChangedOptions } from "./interfaces/selectionChangedOptions.js";
11
+ import { type NodePort } from "./nodePort.js";
12
+ import { type HistoryStack } from "../historyStack.js";
13
+ import { type Scene } from "@onerjs/core/scene.js";
14
14
  export declare class StateManager {
15
15
  data: any;
16
16
  hostDocument: Document;
@@ -1 +1 @@
1
- {"version":3,"file":"stateManager.js","sourceRoot":"","sources":["../../../../dev/sharedUiComponents/src/nodeGraphSystem/stateManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,wCAA6B;AAalD,MAAM,OAAO,YAAY;IAAzB;QAQI,kCAA6B,GAAG,IAAI,UAAU,EAA4B,CAAC;QAC3E,iCAA4B,GAAG,IAAI,UAAU,EAAsC,CAAC;QACpF,6BAAwB,GAAG,IAAI,UAAU,EAAc,CAAC;QACxD,+BAA0B,GAAG,IAAI,UAAU,EAAiB,CAAC;QAC7D,iCAA4B,GAAG,IAAI,UAAU,EAAa,CAAC;QAC3D,wBAAmB,GAAG,IAAI,UAAU,EAAwB,CAAC;QAC7D,yBAAoB,GAAG,IAAI,UAAU,EAAqB,CAAC;QAC3D,sCAAiC,GAAG,IAAI,UAAU,EAAsC,CAAC;QACzF,qGAAqG;QACrG,4BAAuB,GAAwB,IAAI,CAAC;QACpD,sGAAsG;QACtG,qCAAgC,GAAY,KAAK,CAAC;QAClD,4FAA4F;QAC5F,qBAAgB,GAAY,KAAK,CAAC;QAClC,+BAA0B,GAAG,IAAI,UAAU,EAAa,CAAC;QACzD,gCAA2B,GAAG,IAAI,UAAU,EAAQ,CAAC;QACrD,0BAAqB,GAAG,IAAI,UAAU,EAAa,CAAC;QACpD,2CAAsC,GAAG,IAAI,UAAU,EAAU,CAAC;QAClE,kCAA6B,GAAG,IAAI,UAAU,EAAa,CAAC;QAC5D,sBAAiB,GAAG,IAAI,UAAU,EAAQ,CAAC;QAC3C,iCAA4B,GAAG,IAAI,UAAU,EAAuG,CAAC;QACrJ,8BAAyB,GAAG,IAAI,UAAU,EAAkC,CAAC;QAC7E,8BAAyB,GAAG,IAAI,UAAU,EAAW,CAAC;IA+B1D,CAAC;IAZG,mBAAmB;QACf,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,OAAO;QACX,CAAC;QAED,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAE7B,UAAU,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,2BAA2B,CAAC,eAAe,EAAE,CAAC;YACnD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAClC,CAAC,EAAE,CAAC,CAAC,CAAC;IACV,CAAC;CACJ","sourcesContent":["import type { Vector2 } from \"core/Maths/math.vector\";\r\nimport { Observable } from \"core/Misc/observable\";\r\nimport type { Nullable } from \"core/types\";\r\nimport type { FrameNodePort } from \"./frameNodePort\";\r\nimport type { GraphFrame } from \"./graphFrame\";\r\nimport type { GraphNode } from \"./graphNode\";\r\nimport type { INodeContainer } from \"./interfaces/nodeContainer\";\r\nimport type { INodeData } from \"./interfaces/nodeData\";\r\nimport type { IPortData } from \"./interfaces/portData\";\r\nimport type { ISelectionChangedOptions } from \"./interfaces/selectionChangedOptions\";\r\nimport type { NodePort } from \"./nodePort\";\r\nimport type { HistoryStack } from \"../historyStack\";\r\nimport type { Scene } from \"core/scene\";\r\n\r\nexport class StateManager {\r\n data: any;\r\n hostDocument: Document;\r\n lockObject: any;\r\n modalIsDisplayed: boolean;\r\n historyStack: HistoryStack;\r\n activeNode: Nullable<GraphNode>;\r\n\r\n onSearchBoxRequiredObservable = new Observable<{ x: number; y: number }>();\r\n onSelectionChangedObservable = new Observable<Nullable<ISelectionChangedOptions>>();\r\n onFrameCreatedObservable = new Observable<GraphFrame>();\r\n onUpdateRequiredObservable = new Observable<Nullable<any>>();\r\n onGraphNodeRemovalObservable = new Observable<GraphNode>();\r\n onSelectionBoxMoved = new Observable<ClientRect | DOMRect>();\r\n onCandidateLinkMoved = new Observable<Nullable<Vector2>>();\r\n onCandidatePortSelectedObservable = new Observable<Nullable<NodePort | FrameNodePort>>();\r\n /** The source port data for the current drag operation, used for design-time compatibility checks */\r\n candidateSourcePortData: Nullable<IPortData> = null;\r\n /** When true, ports glow red during drag when hovering over an incompatible target. Default false. */\r\n enablePortCompatibilityHighlight: boolean = false;\r\n /** When true, nodes can display validation and breakpoint badge overlays. Default false. */\r\n enableNodeBadges: boolean = false;\r\n onNewNodeCreatedObservable = new Observable<GraphNode>();\r\n onRebuildRequiredObservable = new Observable<void>();\r\n onNodeMovedObservable = new Observable<GraphNode>();\r\n onErrorMessageDialogRequiredObservable = new Observable<string>();\r\n onExposePortOnFrameObservable = new Observable<GraphNode>();\r\n onGridSizeChanged = new Observable<void>();\r\n onNewBlockRequiredObservable = new Observable<{ type: string; targetX: number; targetY: number; needRepositioning?: boolean; smartAdd?: boolean }>();\r\n onHighlightNodeObservable = new Observable<{ data: any; active: boolean }>();\r\n onPreviewCommandActivated = new Observable<boolean>();\r\n\r\n exportData: (data: any, frame?: Nullable<GraphFrame>) => string;\r\n isElbowConnectionAllowed: (nodeA: FrameNodePort | NodePort, nodeB: FrameNodePort | NodePort) => boolean;\r\n isDebugConnectionAllowed: (nodeA: FrameNodePort | NodePort, nodeB: FrameNodePort | NodePort) => boolean;\r\n applyNodePortDesign: (data: IPortData, element: HTMLElement, imgHost: HTMLImageElement, pip: HTMLDivElement) => boolean;\r\n\r\n getPortColor: (portData: IPortData) => string;\r\n\r\n storeEditorData: (serializationObject: any, frame?: Nullable<GraphFrame>) => void;\r\n\r\n getEditorDataMap: () => { [key: number]: number };\r\n\r\n getScene?: () => Scene;\r\n\r\n createDefaultInputData: (rootData: any, portData: IPortData, nodeContainer: INodeContainer) => Nullable<{ data: INodeData; name: string }>;\r\n\r\n private _isRebuildQueued: boolean;\r\n\r\n queueRebuildCommand() {\r\n if (this._isRebuildQueued) {\r\n return;\r\n }\r\n\r\n this._isRebuildQueued = true;\r\n\r\n setTimeout(() => {\r\n this.onRebuildRequiredObservable.notifyObservers();\r\n this._isRebuildQueued = false;\r\n }, 1);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"stateManager.js","sourceRoot":"","sources":["../../../../dev/sharedUiComponents/src/nodeGraphSystem/stateManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAalD,MAAM,OAAO,YAAY;IAAzB;QAQI,kCAA6B,GAAG,IAAI,UAAU,EAA4B,CAAC;QAC3E,iCAA4B,GAAG,IAAI,UAAU,EAAsC,CAAC;QACpF,6BAAwB,GAAG,IAAI,UAAU,EAAc,CAAC;QACxD,+BAA0B,GAAG,IAAI,UAAU,EAAiB,CAAC;QAC7D,iCAA4B,GAAG,IAAI,UAAU,EAAa,CAAC;QAC3D,wBAAmB,GAAG,IAAI,UAAU,EAAwB,CAAC;QAC7D,yBAAoB,GAAG,IAAI,UAAU,EAAqB,CAAC;QAC3D,sCAAiC,GAAG,IAAI,UAAU,EAAsC,CAAC;QACzF,qGAAqG;QACrG,4BAAuB,GAAwB,IAAI,CAAC;QACpD,sGAAsG;QACtG,qCAAgC,GAAY,KAAK,CAAC;QAClD,4FAA4F;QAC5F,qBAAgB,GAAY,KAAK,CAAC;QAClC,+BAA0B,GAAG,IAAI,UAAU,EAAa,CAAC;QACzD,gCAA2B,GAAG,IAAI,UAAU,EAAQ,CAAC;QACrD,0BAAqB,GAAG,IAAI,UAAU,EAAa,CAAC;QACpD,2CAAsC,GAAG,IAAI,UAAU,EAAU,CAAC;QAClE,kCAA6B,GAAG,IAAI,UAAU,EAAa,CAAC;QAC5D,sBAAiB,GAAG,IAAI,UAAU,EAAQ,CAAC;QAC3C,iCAA4B,GAAG,IAAI,UAAU,EAAuG,CAAC;QACrJ,8BAAyB,GAAG,IAAI,UAAU,EAAkC,CAAC;QAC7E,8BAAyB,GAAG,IAAI,UAAU,EAAW,CAAC;IA+B1D,CAAC;IAZG,mBAAmB;QACf,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,OAAO;QACX,CAAC;QAED,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAE7B,UAAU,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,2BAA2B,CAAC,eAAe,EAAE,CAAC;YACnD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAClC,CAAC,EAAE,CAAC,CAAC,CAAC;IACV,CAAC;CACJ","sourcesContent":["import { type Vector2 } from \"core/Maths/math.vector\";\r\nimport { Observable } from \"core/Misc/observable\";\r\nimport { type Nullable } from \"core/types\";\r\nimport { type FrameNodePort } from \"./frameNodePort\";\r\nimport { type GraphFrame } from \"./graphFrame\";\r\nimport { type GraphNode } from \"./graphNode\";\r\nimport { type INodeContainer } from \"./interfaces/nodeContainer\";\r\nimport { type INodeData } from \"./interfaces/nodeData\";\r\nimport { type IPortData } from \"./interfaces/portData\";\r\nimport { type ISelectionChangedOptions } from \"./interfaces/selectionChangedOptions\";\r\nimport { type NodePort } from \"./nodePort\";\r\nimport { type HistoryStack } from \"../historyStack\";\r\nimport { type Scene } from \"core/scene\";\r\n\r\nexport class StateManager {\r\n data: any;\r\n hostDocument: Document;\r\n lockObject: any;\r\n modalIsDisplayed: boolean;\r\n historyStack: HistoryStack;\r\n activeNode: Nullable<GraphNode>;\r\n\r\n onSearchBoxRequiredObservable = new Observable<{ x: number; y: number }>();\r\n onSelectionChangedObservable = new Observable<Nullable<ISelectionChangedOptions>>();\r\n onFrameCreatedObservable = new Observable<GraphFrame>();\r\n onUpdateRequiredObservable = new Observable<Nullable<any>>();\r\n onGraphNodeRemovalObservable = new Observable<GraphNode>();\r\n onSelectionBoxMoved = new Observable<ClientRect | DOMRect>();\r\n onCandidateLinkMoved = new Observable<Nullable<Vector2>>();\r\n onCandidatePortSelectedObservable = new Observable<Nullable<NodePort | FrameNodePort>>();\r\n /** The source port data for the current drag operation, used for design-time compatibility checks */\r\n candidateSourcePortData: Nullable<IPortData> = null;\r\n /** When true, ports glow red during drag when hovering over an incompatible target. Default false. */\r\n enablePortCompatibilityHighlight: boolean = false;\r\n /** When true, nodes can display validation and breakpoint badge overlays. Default false. */\r\n enableNodeBadges: boolean = false;\r\n onNewNodeCreatedObservable = new Observable<GraphNode>();\r\n onRebuildRequiredObservable = new Observable<void>();\r\n onNodeMovedObservable = new Observable<GraphNode>();\r\n onErrorMessageDialogRequiredObservable = new Observable<string>();\r\n onExposePortOnFrameObservable = new Observable<GraphNode>();\r\n onGridSizeChanged = new Observable<void>();\r\n onNewBlockRequiredObservable = new Observable<{ type: string; targetX: number; targetY: number; needRepositioning?: boolean; smartAdd?: boolean }>();\r\n onHighlightNodeObservable = new Observable<{ data: any; active: boolean }>();\r\n onPreviewCommandActivated = new Observable<boolean>();\r\n\r\n exportData: (data: any, frame?: Nullable<GraphFrame>) => string;\r\n isElbowConnectionAllowed: (nodeA: FrameNodePort | NodePort, nodeB: FrameNodePort | NodePort) => boolean;\r\n isDebugConnectionAllowed: (nodeA: FrameNodePort | NodePort, nodeB: FrameNodePort | NodePort) => boolean;\r\n applyNodePortDesign: (data: IPortData, element: HTMLElement, imgHost: HTMLImageElement, pip: HTMLDivElement) => boolean;\r\n\r\n getPortColor: (portData: IPortData) => string;\r\n\r\n storeEditorData: (serializationObject: any, frame?: Nullable<GraphFrame>) => void;\r\n\r\n getEditorDataMap: () => { [key: number]: number };\r\n\r\n getScene?: () => Scene;\r\n\r\n createDefaultInputData: (rootData: any, portData: IPortData, nodeContainer: INodeContainer) => Nullable<{ data: INodeData; name: string }>;\r\n\r\n private _isRebuildQueued: boolean;\r\n\r\n queueRebuildCommand() {\r\n if (this._isRebuildQueued) {\r\n return;\r\n }\r\n\r\n this._isRebuildQueued = true;\r\n\r\n setTimeout(() => {\r\n this.onRebuildRequiredObservable.notifyObservers();\r\n this._isRebuildQueued = false;\r\n }, 1);\r\n }\r\n}\r\n"]}
@@ -1,7 +1,7 @@
1
- import type { GraphCanvasComponent } from "./graphCanvas.js";
2
- import type { GraphNode } from "./graphNode.js";
3
- import type { NodeLink } from "./nodeLink.js";
4
- import type { FramePortData } from "./types/framePortData.js";
1
+ import { type GraphCanvasComponent } from "./graphCanvas.js";
2
+ import { type GraphNode } from "./graphNode.js";
3
+ import { type NodeLink } from "./nodeLink.js";
4
+ import { type FramePortData } from "./types/framePortData.js";
5
5
  export declare const IsFramePortData: (variableToCheck: any) => variableToCheck is FramePortData;
6
6
  export declare const RefreshNode: (node: GraphNode, visitedNodes?: Set<GraphNode>, visitedLinks?: Set<NodeLink>, canvas?: GraphCanvasComponent) => void;
7
7
  export declare const BuildFloatUI: (container: HTMLDivElement, document: Document, displayName: string, isInteger: boolean, source: any, propertyName: string, onChange: () => void, min?: number, max?: number, visualPropertiesRefresh?: Array<() => void>, additionalClassName?: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../../dev/sharedUiComponents/src/nodeGraphSystem/tools.ts"],"names":[],"mappings":"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","sourcesContent":["import type { GraphCanvasComponent } from \"./graphCanvas\";\r\nimport type { GraphNode } from \"./graphNode\";\r\nimport type { NodeLink } from \"./nodeLink\";\r\nimport type { FramePortData } from \"./types/framePortData\";\r\nimport * as localStyles from \"./graphNode.module.scss\";\r\n\r\nexport const IsFramePortData = (variableToCheck: any): variableToCheck is FramePortData => {\r\n if (variableToCheck) {\r\n return (variableToCheck as FramePortData).port !== undefined;\r\n } else {\r\n return false;\r\n }\r\n};\r\n\r\nexport const RefreshNode = (node: GraphNode, visitedNodes?: Set<GraphNode>, visitedLinks?: Set<NodeLink>, canvas?: GraphCanvasComponent) => {\r\n node.refresh();\r\n\r\n const links = node.links;\r\n\r\n if (visitedNodes) {\r\n // refresh first the nodes so that the right types are assigned to the auto-detect ports\r\n for (const link of links) {\r\n const nodeA = link.nodeA,\r\n nodeB = link.nodeB;\r\n\r\n if (!visitedNodes.has(nodeA)) {\r\n visitedNodes.add(nodeA);\r\n RefreshNode(nodeA, visitedNodes, visitedLinks);\r\n }\r\n\r\n if (nodeB && !visitedNodes.has(nodeB)) {\r\n visitedNodes.add(nodeB);\r\n RefreshNode(nodeB, visitedNodes, visitedLinks);\r\n }\r\n }\r\n }\r\n\r\n // Invisible endpoints (for teleport nodes)\r\n const invisibleEndpoints = node.content.invisibleEndpoints;\r\n if (invisibleEndpoints && invisibleEndpoints.length) {\r\n for (const endpoint of invisibleEndpoints) {\r\n const graphNode = canvas?.findNodeFromData(endpoint);\r\n if (graphNode) {\r\n if (visitedNodes) {\r\n visitedNodes.add(graphNode);\r\n }\r\n RefreshNode(graphNode, visitedNodes, visitedLinks);\r\n }\r\n }\r\n }\r\n\r\n if (!visitedLinks) {\r\n return;\r\n }\r\n\r\n // then refresh the links to display the right color between ports\r\n for (const link of links) {\r\n if (!visitedLinks.has(link)) {\r\n visitedLinks.add(link);\r\n link.update();\r\n }\r\n }\r\n};\r\n\r\nlet IdGenerator = 0;\r\nexport const BuildFloatUI = (\r\n container: HTMLDivElement,\r\n document: Document,\r\n displayName: string,\r\n isInteger: boolean,\r\n source: any,\r\n propertyName: string,\r\n onChange: () => void,\r\n min?: number,\r\n max?: number,\r\n visualPropertiesRefresh?: Array<() => void>,\r\n additionalClassName?: string\r\n) => {\r\n const cantDisplaySlider = min === undefined || max === undefined || isNaN(min) || isNaN(max) || min === max;\r\n if (cantDisplaySlider) {\r\n container.classList.add(localStyles.floatContainer);\r\n const numberInput = document.createElement(\"input\");\r\n numberInput.type = \"number\";\r\n numberInput.id = `number-${IdGenerator++}`;\r\n if (additionalClassName) {\r\n numberInput.classList.add(additionalClassName);\r\n }\r\n\r\n if (visualPropertiesRefresh) {\r\n visualPropertiesRefresh.push(() => {\r\n numberInput.value = source[propertyName];\r\n });\r\n } else {\r\n numberInput.value = source[propertyName];\r\n }\r\n numberInput.onchange = () => {\r\n source[propertyName] = parseFloat(numberInput.value);\r\n onChange();\r\n };\r\n\r\n if (isInteger) {\r\n numberInput.step = \"1\";\r\n }\r\n\r\n container.appendChild(numberInput);\r\n const label = document.createElement(\"div\");\r\n label.innerText = displayName;\r\n if (additionalClassName) {\r\n label.classList.add(additionalClassName);\r\n }\r\n container.appendChild(label);\r\n\r\n let shouldCapture = false;\r\n numberInput.onpointerdown = (evt) => {\r\n shouldCapture = true;\r\n evt.preventDefault();\r\n };\r\n numberInput.onpointerup = (evt) => {\r\n if (numberInput.hasPointerCapture(evt.pointerId)) {\r\n numberInput.releasePointerCapture(evt.pointerId);\r\n shouldCapture = false;\r\n evt.preventDefault();\r\n } else {\r\n numberInput.focus();\r\n numberInput.select();\r\n }\r\n };\r\n numberInput.onpointermove = (evt) => {\r\n if (shouldCapture) {\r\n numberInput.setPointerCapture(evt.pointerId);\r\n }\r\n\r\n if (numberInput.hasPointerCapture(evt.pointerId)) {\r\n const delta = isInteger ? Math.sign(evt.movementX) : evt.movementX * 0.01;\r\n let currentValue = parseFloat(numberInput.value) + delta;\r\n if (min !== undefined) {\r\n currentValue = Math.max(currentValue, min);\r\n }\r\n if (max !== undefined) {\r\n currentValue = Math.min(currentValue, max);\r\n }\r\n\r\n numberInput.value = currentValue.toFixed(isInteger ? 0 : 2);\r\n\r\n source[propertyName] = isInteger ? parseInt(numberInput.value) : parseFloat(numberInput.value);\r\n onChange();\r\n evt.preventDefault();\r\n }\r\n };\r\n } else {\r\n container.classList.add(localStyles.sliderContainer);\r\n const label = document.createElement(\"label\");\r\n container.appendChild(label);\r\n const value = document.createElement(\"div\");\r\n container.appendChild(value);\r\n const slider = document.createElement(\"input\");\r\n slider.type = \"range\";\r\n slider.id = `slider-${IdGenerator++}`;\r\n slider.step = isInteger ? \"1\" : (Math.abs(max - min) / 100.0).toString();\r\n slider.min = min.toString();\r\n slider.max = max.toString();\r\n container.appendChild(slider);\r\n label.innerText = displayName;\r\n label.htmlFor = slider.id;\r\n if (visualPropertiesRefresh) {\r\n visualPropertiesRefresh.push(() => {\r\n slider.value = source[propertyName];\r\n value.innerText = source[propertyName];\r\n });\r\n } else {\r\n slider.value = source[propertyName];\r\n value.innerText = source[propertyName];\r\n }\r\n slider.oninput = () => {\r\n source[propertyName] = parseFloat(slider.value);\r\n value.innerText = source[propertyName];\r\n onChange();\r\n };\r\n }\r\n};\r\n\r\nexport function GetListOfAcceptedTypes<T extends Record<string, string | number>>(\r\n types: T,\r\n allValue: number,\r\n autoDetectValue: number,\r\n port: { acceptedConnectionPointTypes: number[]; excludedConnectionPointTypes: number[]; type: number },\r\n skips: number[] = []\r\n) {\r\n let acceptedTypes: string[] = [];\r\n\r\n if (port.type !== autoDetectValue) {\r\n acceptedTypes = [types[port.type] as string];\r\n }\r\n\r\n if (port.acceptedConnectionPointTypes.length !== 0) {\r\n acceptedTypes = port.acceptedConnectionPointTypes.filter((t) => t && t !== port.type).map((t) => types[t] as string);\r\n }\r\n\r\n if (skips.indexOf(autoDetectValue) === -1) {\r\n skips.push(autoDetectValue);\r\n }\r\n\r\n if (port.excludedConnectionPointTypes.length !== 0) {\r\n let bitmask = 0;\r\n let val = 2 ** bitmask;\r\n const candidates: number[] = [];\r\n while (val < allValue) {\r\n if (port.excludedConnectionPointTypes.indexOf(val) === -1 && skips.indexOf(val) === -1) {\r\n if (candidates.indexOf(val) === -1) {\r\n candidates.push(val);\r\n }\r\n }\r\n bitmask++;\r\n val = 2 ** bitmask;\r\n }\r\n acceptedTypes = (Object.values(types) as T[keyof T][])\r\n .filter((t) => candidates.indexOf(t as number) !== -1 && t !== port.type)\r\n .map((t) => types[t as number] as string)\r\n .filter((t) => t);\r\n }\r\n return acceptedTypes;\r\n}\r\n\r\nexport function GetConnectionErrorMessage<T extends Record<string, string | number>>(\r\n sourceType: number,\r\n types: T,\r\n allValue: number,\r\n autoDetectValue: number,\r\n port: { acceptedConnectionPointTypes: number[]; excludedConnectionPointTypes: number[]; type: number },\r\n skips: number[] = []\r\n) {\r\n const list = GetListOfAcceptedTypes(types, allValue, autoDetectValue, port, skips).join(\", \");\r\n\r\n return `Cannot connect two different connection types:\\nSource is ${types[sourceType]} but destination only accepts ${list}`;\r\n}\r\n"]}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../../dev/sharedUiComponents/src/nodeGraphSystem/tools.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAEvD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,eAAoB,EAAoC,EAAE;IACtF,IAAI,eAAe,EAAE,CAAC;QAClB,OAAQ,eAAiC,CAAC,IAAI,KAAK,SAAS,CAAC;IACjE,CAAC;SAAM,CAAC;QACJ,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAe,EAAE,YAA6B,EAAE,YAA4B,EAAE,MAA6B,EAAE,EAAE;IACvI,IAAI,CAAC,OAAO,EAAE,CAAC;IAEf,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAEzB,IAAI,YAAY,EAAE,CAAC;QACf,wFAAwF;QACxF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EACpB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YAEvB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACxB,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;YACnD,CAAC;YAED,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACxB,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;YACnD,CAAC;QACL,CAAC;IACL,CAAC;IAED,2CAA2C;IAC3C,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;IAC3D,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,EAAE,CAAC;QAClD,KAAK,MAAM,QAAQ,IAAI,kBAAkB,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YACrD,IAAI,SAAS,EAAE,CAAC;gBACZ,IAAI,YAAY,EAAE,CAAC;oBACf,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAChC,CAAC;gBACD,WAAW,CAAC,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;YACvD,CAAC;QACL,CAAC;IACL,CAAC;IAED,IAAI,CAAC,YAAY,EAAE,CAAC;QAChB,OAAO;IACX,CAAC;IAED,kEAAkE;IAClE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvB,IAAI,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAEF,IAAI,WAAW,GAAG,CAAC,CAAC;AACpB,MAAM,CAAC,MAAM,YAAY,GAAG,CACxB,SAAyB,EACzB,QAAkB,EAClB,WAAmB,EACnB,SAAkB,EAClB,MAAW,EACX,YAAoB,EACpB,QAAoB,EACpB,GAAY,EACZ,GAAY,EACZ,uBAA2C,EAC3C,mBAA4B,EAC9B,EAAE;IACA,MAAM,iBAAiB,GAAG,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC;IAC5G,IAAI,iBAAiB,EAAE,CAAC;QACpB,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACpD,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACpD,WAAW,CAAC,IAAI,GAAG,QAAQ,CAAC;QAC5B,WAAW,CAAC,EAAE,GAAG,UAAU,WAAW,EAAE,EAAE,CAAC;QAC3C,IAAI,mBAAmB,EAAE,CAAC;YACtB,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,uBAAuB,EAAE,CAAC;YAC1B,uBAAuB,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC9B,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;QAC7C,CAAC;QACD,WAAW,CAAC,QAAQ,GAAG,GAAG,EAAE;YACxB,MAAM,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACrD,QAAQ,EAAE,CAAC;QACf,CAAC,CAAC;QAEF,IAAI,SAAS,EAAE,CAAC;YACZ,WAAW,CAAC,IAAI,GAAG,GAAG,CAAC;QAC3B,CAAC;QAED,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC5C,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC;QAC9B,IAAI,mBAAmB,EAAE,CAAC;YACtB,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAC7C,CAAC;QACD,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAE7B,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,WAAW,CAAC,aAAa,GAAG,CAAC,GAAG,EAAE,EAAE;YAChC,aAAa,GAAG,IAAI,CAAC;YACrB,GAAG,CAAC,cAAc,EAAE,CAAC;QACzB,CAAC,CAAC;QACF,WAAW,CAAC,WAAW,GAAG,CAAC,GAAG,EAAE,EAAE;YAC9B,IAAI,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/C,WAAW,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACjD,aAAa,GAAG,KAAK,CAAC;gBACtB,GAAG,CAAC,cAAc,EAAE,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACJ,WAAW,CAAC,KAAK,EAAE,CAAC;gBACpB,WAAW,CAAC,MAAM,EAAE,CAAC;YACzB,CAAC;QACL,CAAC,CAAC;QACF,WAAW,CAAC,aAAa,GAAG,CAAC,GAAG,EAAE,EAAE;YAChC,IAAI,aAAa,EAAE,CAAC;gBAChB,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACjD,CAAC;YAED,IAAI,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/C,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;gBAC1E,IAAI,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;gBACzD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBACpB,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;gBAC/C,CAAC;gBACD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBACpB,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;gBAC/C,CAAC;gBAED,WAAW,CAAC,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE5D,MAAM,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC/F,QAAQ,EAAE,CAAC;gBACX,GAAG,CAAC,cAAc,EAAE,CAAC;YACzB,CAAC;QACL,CAAC,CAAC;IACN,CAAC;SAAM,CAAC;QACJ,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9C,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC5C,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;QACtB,MAAM,CAAC,EAAE,GAAG,UAAU,WAAW,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;QACzE,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC5B,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC9B,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC;QAC9B,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC;QAC1B,IAAI,uBAAuB,EAAE,CAAC;YAC1B,uBAAuB,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC9B,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;gBACpC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;YACpC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE;YAClB,MAAM,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAChD,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;YACvC,QAAQ,EAAE,CAAC;QACf,CAAC,CAAC;IACN,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,UAAU,sBAAsB,CAClC,KAAQ,EACR,QAAgB,EAChB,eAAuB,EACvB,IAAsG,EACtG,QAAkB,EAAE;IAEpB,IAAI,aAAa,GAAa,EAAE,CAAC;IAEjC,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAChC,aAAa,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAW,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,IAAI,CAAC,4BAA4B,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,aAAa,GAAG,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAW,CAAC,CAAC;IACzH,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,IAAI,CAAC,4BAA4B,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,GAAG,GAAG,CAAC,IAAI,OAAO,CAAC;QACvB,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,OAAO,GAAG,GAAG,QAAQ,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACrF,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;oBACjC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC;YACL,CAAC;YACD,OAAO,EAAE,CAAC;YACV,GAAG,GAAG,CAAC,IAAI,OAAO,CAAC;QACvB,CAAC;QACD,aAAa,GAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAkB;aACjD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC;aACxE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAW,CAAW,CAAC;aACxC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,aAAa,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,yBAAyB,CACrC,UAAkB,EAClB,KAAQ,EACR,QAAgB,EAChB,eAAuB,EACvB,IAAsG,EACtG,QAAkB,EAAE;IAEpB,MAAM,IAAI,GAAG,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE9F,OAAO,6DAA6D,KAAK,CAAC,UAAU,CAAC,iCAAiC,IAAI,EAAE,CAAC;AACjI,CAAC","sourcesContent":["import { type GraphCanvasComponent } from \"./graphCanvas\";\r\nimport { type GraphNode } from \"./graphNode\";\r\nimport { type NodeLink } from \"./nodeLink\";\r\nimport { type FramePortData } from \"./types/framePortData\";\r\nimport * as localStyles from \"./graphNode.module.scss\";\r\n\r\nexport const IsFramePortData = (variableToCheck: any): variableToCheck is FramePortData => {\r\n if (variableToCheck) {\r\n return (variableToCheck as FramePortData).port !== undefined;\r\n } else {\r\n return false;\r\n }\r\n};\r\n\r\nexport const RefreshNode = (node: GraphNode, visitedNodes?: Set<GraphNode>, visitedLinks?: Set<NodeLink>, canvas?: GraphCanvasComponent) => {\r\n node.refresh();\r\n\r\n const links = node.links;\r\n\r\n if (visitedNodes) {\r\n // refresh first the nodes so that the right types are assigned to the auto-detect ports\r\n for (const link of links) {\r\n const nodeA = link.nodeA,\r\n nodeB = link.nodeB;\r\n\r\n if (!visitedNodes.has(nodeA)) {\r\n visitedNodes.add(nodeA);\r\n RefreshNode(nodeA, visitedNodes, visitedLinks);\r\n }\r\n\r\n if (nodeB && !visitedNodes.has(nodeB)) {\r\n visitedNodes.add(nodeB);\r\n RefreshNode(nodeB, visitedNodes, visitedLinks);\r\n }\r\n }\r\n }\r\n\r\n // Invisible endpoints (for teleport nodes)\r\n const invisibleEndpoints = node.content.invisibleEndpoints;\r\n if (invisibleEndpoints && invisibleEndpoints.length) {\r\n for (const endpoint of invisibleEndpoints) {\r\n const graphNode = canvas?.findNodeFromData(endpoint);\r\n if (graphNode) {\r\n if (visitedNodes) {\r\n visitedNodes.add(graphNode);\r\n }\r\n RefreshNode(graphNode, visitedNodes, visitedLinks);\r\n }\r\n }\r\n }\r\n\r\n if (!visitedLinks) {\r\n return;\r\n }\r\n\r\n // then refresh the links to display the right color between ports\r\n for (const link of links) {\r\n if (!visitedLinks.has(link)) {\r\n visitedLinks.add(link);\r\n link.update();\r\n }\r\n }\r\n};\r\n\r\nlet IdGenerator = 0;\r\nexport const BuildFloatUI = (\r\n container: HTMLDivElement,\r\n document: Document,\r\n displayName: string,\r\n isInteger: boolean,\r\n source: any,\r\n propertyName: string,\r\n onChange: () => void,\r\n min?: number,\r\n max?: number,\r\n visualPropertiesRefresh?: Array<() => void>,\r\n additionalClassName?: string\r\n) => {\r\n const cantDisplaySlider = min === undefined || max === undefined || isNaN(min) || isNaN(max) || min === max;\r\n if (cantDisplaySlider) {\r\n container.classList.add(localStyles.floatContainer);\r\n const numberInput = document.createElement(\"input\");\r\n numberInput.type = \"number\";\r\n numberInput.id = `number-${IdGenerator++}`;\r\n if (additionalClassName) {\r\n numberInput.classList.add(additionalClassName);\r\n }\r\n\r\n if (visualPropertiesRefresh) {\r\n visualPropertiesRefresh.push(() => {\r\n numberInput.value = source[propertyName];\r\n });\r\n } else {\r\n numberInput.value = source[propertyName];\r\n }\r\n numberInput.onchange = () => {\r\n source[propertyName] = parseFloat(numberInput.value);\r\n onChange();\r\n };\r\n\r\n if (isInteger) {\r\n numberInput.step = \"1\";\r\n }\r\n\r\n container.appendChild(numberInput);\r\n const label = document.createElement(\"div\");\r\n label.innerText = displayName;\r\n if (additionalClassName) {\r\n label.classList.add(additionalClassName);\r\n }\r\n container.appendChild(label);\r\n\r\n let shouldCapture = false;\r\n numberInput.onpointerdown = (evt) => {\r\n shouldCapture = true;\r\n evt.preventDefault();\r\n };\r\n numberInput.onpointerup = (evt) => {\r\n if (numberInput.hasPointerCapture(evt.pointerId)) {\r\n numberInput.releasePointerCapture(evt.pointerId);\r\n shouldCapture = false;\r\n evt.preventDefault();\r\n } else {\r\n numberInput.focus();\r\n numberInput.select();\r\n }\r\n };\r\n numberInput.onpointermove = (evt) => {\r\n if (shouldCapture) {\r\n numberInput.setPointerCapture(evt.pointerId);\r\n }\r\n\r\n if (numberInput.hasPointerCapture(evt.pointerId)) {\r\n const delta = isInteger ? Math.sign(evt.movementX) : evt.movementX * 0.01;\r\n let currentValue = parseFloat(numberInput.value) + delta;\r\n if (min !== undefined) {\r\n currentValue = Math.max(currentValue, min);\r\n }\r\n if (max !== undefined) {\r\n currentValue = Math.min(currentValue, max);\r\n }\r\n\r\n numberInput.value = currentValue.toFixed(isInteger ? 0 : 2);\r\n\r\n source[propertyName] = isInteger ? parseInt(numberInput.value) : parseFloat(numberInput.value);\r\n onChange();\r\n evt.preventDefault();\r\n }\r\n };\r\n } else {\r\n container.classList.add(localStyles.sliderContainer);\r\n const label = document.createElement(\"label\");\r\n container.appendChild(label);\r\n const value = document.createElement(\"div\");\r\n container.appendChild(value);\r\n const slider = document.createElement(\"input\");\r\n slider.type = \"range\";\r\n slider.id = `slider-${IdGenerator++}`;\r\n slider.step = isInteger ? \"1\" : (Math.abs(max - min) / 100.0).toString();\r\n slider.min = min.toString();\r\n slider.max = max.toString();\r\n container.appendChild(slider);\r\n label.innerText = displayName;\r\n label.htmlFor = slider.id;\r\n if (visualPropertiesRefresh) {\r\n visualPropertiesRefresh.push(() => {\r\n slider.value = source[propertyName];\r\n value.innerText = source[propertyName];\r\n });\r\n } else {\r\n slider.value = source[propertyName];\r\n value.innerText = source[propertyName];\r\n }\r\n slider.oninput = () => {\r\n source[propertyName] = parseFloat(slider.value);\r\n value.innerText = source[propertyName];\r\n onChange();\r\n };\r\n }\r\n};\r\n\r\nexport function GetListOfAcceptedTypes<T extends Record<string, string | number>>(\r\n types: T,\r\n allValue: number,\r\n autoDetectValue: number,\r\n port: { acceptedConnectionPointTypes: number[]; excludedConnectionPointTypes: number[]; type: number },\r\n skips: number[] = []\r\n) {\r\n let acceptedTypes: string[] = [];\r\n\r\n if (port.type !== autoDetectValue) {\r\n acceptedTypes = [types[port.type] as string];\r\n }\r\n\r\n if (port.acceptedConnectionPointTypes.length !== 0) {\r\n acceptedTypes = port.acceptedConnectionPointTypes.filter((t) => t && t !== port.type).map((t) => types[t] as string);\r\n }\r\n\r\n if (skips.indexOf(autoDetectValue) === -1) {\r\n skips.push(autoDetectValue);\r\n }\r\n\r\n if (port.excludedConnectionPointTypes.length !== 0) {\r\n let bitmask = 0;\r\n let val = 2 ** bitmask;\r\n const candidates: number[] = [];\r\n while (val < allValue) {\r\n if (port.excludedConnectionPointTypes.indexOf(val) === -1 && skips.indexOf(val) === -1) {\r\n if (candidates.indexOf(val) === -1) {\r\n candidates.push(val);\r\n }\r\n }\r\n bitmask++;\r\n val = 2 ** bitmask;\r\n }\r\n acceptedTypes = (Object.values(types) as T[keyof T][])\r\n .filter((t) => candidates.indexOf(t as number) !== -1 && t !== port.type)\r\n .map((t) => types[t as number] as string)\r\n .filter((t) => t);\r\n }\r\n return acceptedTypes;\r\n}\r\n\r\nexport function GetConnectionErrorMessage<T extends Record<string, string | number>>(\r\n sourceType: number,\r\n types: T,\r\n allValue: number,\r\n autoDetectValue: number,\r\n port: { acceptedConnectionPointTypes: number[]; excludedConnectionPointTypes: number[]; type: number },\r\n skips: number[] = []\r\n) {\r\n const list = GetListOfAcceptedTypes(types, allValue, autoDetectValue, port, skips).join(\", \");\r\n\r\n return `Cannot connect two different connection types:\\nSource is ${types[sourceType]} but destination only accepts ${list}`;\r\n}\r\n"]}
@@ -1,7 +1,7 @@
1
- import type { INodeContainer } from "./interfaces/nodeContainer.js";
2
- import type { INodeData } from "./interfaces/nodeData.js";
3
- import type { IPortData } from "./interfaces/portData.js";
4
- import type { NodePort } from "./nodePort.js";
1
+ import { type INodeContainer } from "./interfaces/nodeContainer.js";
2
+ import { type INodeData } from "./interfaces/nodeData.js";
3
+ import { type IPortData } from "./interfaces/portData.js";
4
+ import { type NodePort } from "./nodePort.js";
5
5
  export declare class TypeLedger {
6
6
  static PortDataBuilder: (port: NodePort, nodeContainer: INodeContainer) => IPortData;
7
7
  static NodeDataBuilder: (data: any, nodeContainer: INodeContainer) => INodeData;
@@ -1 +1 @@
1
- {"version":3,"file":"typeLedger.js","sourceRoot":"","sources":["../../../../dev/sharedUiComponents/src/nodeGraphSystem/typeLedger.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,UAAU;CAGtB","sourcesContent":["import type { INodeContainer } from \"./interfaces/nodeContainer\";\r\nimport type { INodeData } from \"./interfaces/nodeData\";\r\nimport type { IPortData } from \"./interfaces/portData\";\r\nimport type { NodePort } from \"./nodePort\";\r\n\r\nexport class TypeLedger {\r\n public static PortDataBuilder: (port: NodePort, nodeContainer: INodeContainer) => IPortData;\r\n public static NodeDataBuilder: (data: any, nodeContainer: INodeContainer) => INodeData;\r\n}\r\n"]}
1
+ {"version":3,"file":"typeLedger.js","sourceRoot":"","sources":["../../../../dev/sharedUiComponents/src/nodeGraphSystem/typeLedger.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,UAAU;CAGtB","sourcesContent":["import { type INodeContainer } from \"./interfaces/nodeContainer\";\r\nimport { type INodeData } from \"./interfaces/nodeData\";\r\nimport { type IPortData } from \"./interfaces/portData\";\r\nimport { type NodePort } from \"./nodePort\";\r\n\r\nexport class TypeLedger {\r\n public static PortDataBuilder: (port: NodePort, nodeContainer: INodeContainer) => IPortData;\r\n public static NodeDataBuilder: (data: any, nodeContainer: INodeContainer) => INodeData;\r\n}\r\n"]}
@@ -1,5 +1,5 @@
1
- import type { GraphFrame } from "../graphFrame.js";
2
- import type { FrameNodePort } from "../frameNodePort.js";
1
+ import { type GraphFrame } from "../graphFrame.js";
2
+ import { type FrameNodePort } from "../frameNodePort.js";
3
3
  export type FramePortData = {
4
4
  frame: GraphFrame;
5
5
  port: FrameNodePort;
@@ -1 +1 @@
1
- {"version":3,"file":"framePortData.js","sourceRoot":"","sources":["../../../../../dev/sharedUiComponents/src/nodeGraphSystem/types/framePortData.ts"],"names":[],"mappings":"","sourcesContent":["import type { GraphFrame } from \"../graphFrame\";\r\n\r\nimport type { FrameNodePort } from \"../frameNodePort\";\r\n\r\nexport type FramePortData = {\r\n frame: GraphFrame;\r\n port: FrameNodePort;\r\n};\r\n"]}
1
+ {"version":3,"file":"framePortData.js","sourceRoot":"","sources":["../../../../../dev/sharedUiComponents/src/nodeGraphSystem/types/framePortData.ts"],"names":[],"mappings":"","sourcesContent":["import { type GraphFrame } from \"../graphFrame\";\r\n\r\nimport { type FrameNodePort } from \"../frameNodePort\";\r\n\r\nexport type FramePortData = {\r\n frame: GraphFrame;\r\n port: FrameNodePort;\r\n};\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onerjs/shared-ui-components",
3
- "version": "8.45.9",
3
+ "version": "8.46.1",
4
4
  "main": "index.js",
5
5
  "module": "index.js",
6
6
  "types": "index.d.ts",
@@ -16,7 +16,7 @@
16
16
  "scripts": {
17
17
  "build": "npm run clean && npm run compile",
18
18
  "clean": "rimraf dist && rimraf *.tsbuildinfo -g && rimraf \"./**/*.!(md|json|build.json)\" -g",
19
- "compile": "tsc -b tsconfig.build.json --verbose",
19
+ "compile": "tsc -b tsconfig.build.json --verbose && build-tools -c tp --outDir . --buildType es6 --basePackage @onerjs/shared-ui-components --appendJS",
20
20
  "precompile": "build-tools -c process-assets --path-prefix ../../../dev/sharedUiComponents/ --output-dir ./",
21
21
  "postcompile": "build-tools -c add-js-to-es6"
22
22
  },
@@ -1,4 +1,4 @@
1
- import type { PropsWithChildren } from "react";
1
+ import { type PropsWithChildren } from "react";
2
2
  import { SplitDirection } from "./splitContext.js";
3
3
  /**
4
4
  * Split container properties
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useContext, useEffect, useRef } from "react";
3
3
  import * as styles from "./splitContainer.module.scss";
4
4
  import { ControlledSize, SplitDirection, SplitContext } from "./splitContext.js";
5
- import { ToolContext } from "shared-ui-components/fluent/hoc/fluentToolWrapper";
5
+ import { ToolContext } from "../fluent/hoc/fluentToolWrapper.js";
6
6
  /**
7
7
  * Creates a split container component
8
8
  * @param props defines the split container properties
@@ -1 +1 @@
1
- {"version":3,"file":"splitContainer.js","sourceRoot":"","sources":["../../../../dev/sharedUiComponents/src/split/splitContainer.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { PropsWithChildren } from \"react\";\r\nimport { useContext, useEffect, useRef } from \"react\";\r\nimport * as styles from \"./splitContainer.module.scss\";\r\nimport { ControlledSize, SplitDirection, SplitContext } from \"./splitContext\";\r\nimport { ToolContext } from \"shared-ui-components/fluent/hoc/fluentToolWrapper\";\r\n\r\n/**\r\n * Split container properties\r\n */\r\nexport interface ISplitContainerProps {\r\n /**\r\n * Unique identifier\r\n */\r\n id?: string;\r\n\r\n /**\r\n * Split direction\r\n */\r\n direction: SplitDirection;\r\n\r\n /**\r\n * Minimum size for the floating elements\r\n */\r\n floatingMinSize?: number;\r\n\r\n /**\r\n * RefObject to the root div element\r\n */\r\n containerRef?: React.RefObject<HTMLDivElement>;\r\n\r\n /**\r\n * Optional class name\r\n */\r\n className?: string;\r\n\r\n /**\r\n * Pointer down\r\n * @param event pointer events\r\n */\r\n onPointerDown?: (event: React.PointerEvent) => void;\r\n\r\n /**\r\n * Pointer move\r\n * @param event pointer events\r\n */\r\n onPointerMove?: (event: React.PointerEvent) => void;\r\n\r\n /**\r\n * Pointer up\r\n * @param event pointer events\r\n */\r\n onPointerUp?: (event: React.PointerEvent) => void;\r\n\r\n /**\r\n * Drop\r\n * @param event drag events\r\n */\r\n onDrop?: (event: React.DragEvent<HTMLDivElement>) => void;\r\n\r\n /**\r\n * Drag over\r\n * @param event drag events\r\n */\r\n onDragOver?: (event: React.DragEvent<HTMLDivElement>) => void;\r\n}\r\n\r\n/**\r\n * Creates a split container component\r\n * @param props defines the split container properties\r\n * @returns the split container component\r\n */\r\nexport const SplitContainer: React.FC<PropsWithChildren<ISplitContainerProps>> = (props) => {\r\n const elementRef: React.RefObject<HTMLDivElement> = props.containerRef || useRef(null);\r\n const sizes: number[] = [];\r\n const floatingCells: boolean[] = [];\r\n const noInitialSizes: boolean[] = [];\r\n const floatingMinSize = props.floatingMinSize || 200;\r\n const controllers: number[][] = [];\r\n const minSizes: number[] = [];\r\n const maxSizes: number[] = [];\r\n const useFluent = useContext(ToolContext).useFluent;\r\n\r\n const buildGridDefinition = () => {\r\n if (!elementRef.current) {\r\n return;\r\n }\r\n const children = elementRef.current.children;\r\n\r\n let gridIndex = 1;\r\n const pickArray = Array.from(children);\r\n let gridDefinition = \"\";\r\n for (const child of children) {\r\n const childElement = child as HTMLElement;\r\n if (child.classList.contains(styles[\"splitter\"])) {\r\n gridDefinition += \"auto \";\r\n } else {\r\n const sourceIndex = pickArray.indexOf(child);\r\n if (floatingCells[sourceIndex] || noInitialSizes[sourceIndex]) {\r\n gridDefinition += \"1fr \";\r\n } else {\r\n gridDefinition += \"auto \";\r\n }\r\n }\r\n\r\n if (props.direction === SplitDirection.Horizontal) {\r\n childElement.style.gridRow = \"1\";\r\n childElement.style.gridColumn = gridIndex.toString();\r\n } else {\r\n childElement.style.gridColumn = \"1\";\r\n childElement.style.gridRow = gridIndex.toString();\r\n }\r\n\r\n gridIndex++;\r\n }\r\n\r\n if (props.direction === SplitDirection.Horizontal) {\r\n elementRef.current.style.gridTemplateRows = \"100%\";\r\n elementRef.current.style.gridTemplateColumns = gridDefinition;\r\n } else {\r\n elementRef.current.style.gridTemplateColumns = \"100%\";\r\n elementRef.current.style.gridTemplateRows = gridDefinition;\r\n }\r\n };\r\n\r\n const handleResize = () => {\r\n if (!elementRef.current) {\r\n return;\r\n }\r\n\r\n // Check if we have enough room for everyone\r\n const children = elementRef.current.children;\r\n for (let i = 0; i < children.length; i++) {\r\n if (!floatingCells[i]) {\r\n continue;\r\n }\r\n\r\n const child = children[i] as HTMLElement;\r\n let childsize: number;\r\n if (props.direction === SplitDirection.Horizontal) {\r\n childsize = child.getBoundingClientRect().width;\r\n } else {\r\n childsize = child.getBoundingClientRect().height;\r\n }\r\n\r\n if (childsize < floatingMinSize) {\r\n const missing = Math.floor(floatingMinSize - childsize);\r\n let done = 0;\r\n\r\n // picking the controller in order and try to reduce their size to fit\r\n for (let j = 0; j < controllers[i].length; j++) {\r\n const controllerIndex = controllers[i][j];\r\n const controller = children[controllerIndex] as HTMLElement;\r\n const currentSize = props.direction === SplitDirection.Horizontal ? controller.getBoundingClientRect().width : controller.getBoundingClientRect().height;\r\n let newSize = currentSize - missing;\r\n if (minSizes[controllerIndex]) {\r\n newSize = Math.max(newSize, minSizes[controllerIndex]);\r\n }\r\n if (props.direction === SplitDirection.Horizontal) {\r\n controller.style.width = `${newSize}px`;\r\n } else {\r\n controller.style.height = `${newSize}px`;\r\n }\r\n\r\n done += currentSize - newSize;\r\n\r\n if (done === missing) {\r\n // We made it\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n buildGridDefinition();\r\n\r\n // Add event listener for window resize\r\n window.addEventListener(\"resize\", handleResize);\r\n\r\n // Cleanup the event listener on component unmount\r\n return () => {\r\n window.removeEventListener(\"resize\", handleResize);\r\n };\r\n }, []);\r\n\r\n const drag = (offset: number, source: HTMLElement, controlledSide: ControlledSize) => {\r\n if (!elementRef.current) {\r\n return;\r\n }\r\n\r\n const children = elementRef.current.children;\r\n const childArray = Array.from(children) as HTMLElement[];\r\n const sourceIndex = childArray.indexOf(source);\r\n if (sourceIndex <= 0) {\r\n return;\r\n }\r\n\r\n let current: number;\r\n if (controlledSide === ControlledSize.First) {\r\n current = sourceIndex - 1;\r\n } else {\r\n current = sourceIndex + 1;\r\n }\r\n const minSize = minSizes[current] || 0;\r\n const maxSize = maxSizes[current];\r\n\r\n noInitialSizes[current] = false;\r\n buildGridDefinition();\r\n\r\n let newSize = Math.floor(controlledSide === ControlledSize.First ? sizes[current] + offset : sizes[current] - offset);\r\n\r\n // Min size check\r\n if (newSize < minSize) {\r\n newSize = minSize;\r\n }\r\n\r\n // Max size check\r\n if (maxSize && newSize > maxSize) {\r\n newSize = maxSize;\r\n }\r\n\r\n // Max size check across the whole container\r\n const maxContainerSize = sizes.reduce((a, b) => a + b, 0) || 0;\r\n let totalSize = 0;\r\n let totalFloating = 0;\r\n for (let i = 0; i < children.length; i++) {\r\n if (floatingCells[i]) {\r\n totalFloating++;\r\n } else {\r\n totalSize += i === current ? newSize : sizes[i];\r\n }\r\n }\r\n\r\n if (maxContainerSize - totalSize < floatingMinSize * totalFloating) {\r\n newSize = maxContainerSize - floatingMinSize * totalFloating;\r\n }\r\n\r\n if (props.direction === SplitDirection.Horizontal) {\r\n childArray[current].style.width = `${newSize}px`;\r\n } else {\r\n childArray[current].style.height = `${newSize}px`;\r\n }\r\n };\r\n\r\n const beginDrag = () => {\r\n if (!elementRef.current) {\r\n return;\r\n }\r\n const children = elementRef.current.children;\r\n sizes.length = 0;\r\n for (const child of children) {\r\n const childElement = child as HTMLElement;\r\n\r\n if (props.direction === SplitDirection.Horizontal) {\r\n sizes.push(childElement.getBoundingClientRect().width);\r\n } else {\r\n sizes.push(childElement.getBoundingClientRect().height);\r\n }\r\n }\r\n };\r\n\r\n const endDrag = () => {\r\n sizes.length = 0;\r\n };\r\n\r\n // We assume splitter are not flagging floating cells in a different way\r\n const sync = (source: HTMLElement, controlledSide: ControlledSize, size?: number, minSize?: number, maxSize?: number) => {\r\n if (!elementRef.current) {\r\n return;\r\n }\r\n\r\n const children = elementRef.current.children;\r\n const childArray = Array.from(children) as HTMLElement[];\r\n const sourceIndex = childArray.indexOf(source);\r\n if (sourceIndex <= 0) {\r\n return;\r\n }\r\n\r\n let current: number;\r\n let other: number;\r\n if (controlledSide === ControlledSize.First) {\r\n current = sourceIndex - 1;\r\n other = sourceIndex + 1;\r\n } else {\r\n current = sourceIndex + 1;\r\n other = sourceIndex - 1;\r\n }\r\n\r\n if (size !== undefined) {\r\n const sizeString = `${size | 0}px`;\r\n const alreadySet = props.direction === SplitDirection.Horizontal ? childArray[current].style.width : childArray[current].style.height;\r\n\r\n if (!alreadySet) {\r\n if (props.direction === SplitDirection.Horizontal) {\r\n childArray[current].style.width = sizeString;\r\n } else {\r\n childArray[current].style.height = sizeString;\r\n }\r\n }\r\n } else {\r\n noInitialSizes[current] = true;\r\n }\r\n\r\n if (minSize !== undefined) {\r\n minSizes[current] = minSize;\r\n }\r\n\r\n if (maxSize !== undefined) {\r\n maxSizes[current] = maxSize;\r\n }\r\n\r\n if (!controllers[other]) {\r\n controllers[other] = [];\r\n }\r\n controllers[other].push(current);\r\n floatingCells[other] = true;\r\n };\r\n\r\n return (\r\n <SplitContext.Provider value={{ direction: props.direction, drag, beginDrag, endDrag, sync }}>\r\n <div\r\n id={props.id}\r\n className={styles[\"split-container\"] + \" \" + props.className}\r\n style={useFluent ? { height: \"100vh\" } : undefined} // temporary until splitContainer is fluentized\r\n ref={elementRef}\r\n onPointerDown={(evt) => props.onPointerDown && props.onPointerDown(evt)}\r\n onPointerMove={(evt) => props.onPointerMove && props.onPointerMove(evt)}\r\n onPointerUp={(evt) => props.onPointerUp && props.onPointerUp(evt)}\r\n onDrop={(evt) => props.onDrop && props.onDrop(evt)}\r\n onDragOver={(evt) => props.onDragOver && props.onDragOver(evt)}\r\n >\r\n {props.children}\r\n </div>\r\n </SplitContext.Provider>\r\n );\r\n};\r\n"]}
1
+ {"version":3,"file":"splitContainer.js","sourceRoot":"","sources":["../../../../dev/sharedUiComponents/src/split/splitContainer.tsx"],"names":[],"mappings":"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","sourcesContent":["import { type PropsWithChildren, useContext, useEffect, useRef } from \"react\";\r\nimport * as styles from \"./splitContainer.module.scss\";\r\nimport { ControlledSize, SplitDirection, SplitContext } from \"./splitContext\";\r\nimport { ToolContext } from \"shared-ui-components/fluent/hoc/fluentToolWrapper\";\r\n\r\n/**\r\n * Split container properties\r\n */\r\nexport interface ISplitContainerProps {\r\n /**\r\n * Unique identifier\r\n */\r\n id?: string;\r\n\r\n /**\r\n * Split direction\r\n */\r\n direction: SplitDirection;\r\n\r\n /**\r\n * Minimum size for the floating elements\r\n */\r\n floatingMinSize?: number;\r\n\r\n /**\r\n * RefObject to the root div element\r\n */\r\n containerRef?: React.RefObject<HTMLDivElement>;\r\n\r\n /**\r\n * Optional class name\r\n */\r\n className?: string;\r\n\r\n /**\r\n * Pointer down\r\n * @param event pointer events\r\n */\r\n onPointerDown?: (event: React.PointerEvent) => void;\r\n\r\n /**\r\n * Pointer move\r\n * @param event pointer events\r\n */\r\n onPointerMove?: (event: React.PointerEvent) => void;\r\n\r\n /**\r\n * Pointer up\r\n * @param event pointer events\r\n */\r\n onPointerUp?: (event: React.PointerEvent) => void;\r\n\r\n /**\r\n * Drop\r\n * @param event drag events\r\n */\r\n onDrop?: (event: React.DragEvent<HTMLDivElement>) => void;\r\n\r\n /**\r\n * Drag over\r\n * @param event drag events\r\n */\r\n onDragOver?: (event: React.DragEvent<HTMLDivElement>) => void;\r\n}\r\n\r\n/**\r\n * Creates a split container component\r\n * @param props defines the split container properties\r\n * @returns the split container component\r\n */\r\nexport const SplitContainer: React.FC<PropsWithChildren<ISplitContainerProps>> = (props) => {\r\n const elementRef: React.RefObject<HTMLDivElement> = props.containerRef || useRef(null);\r\n const sizes: number[] = [];\r\n const floatingCells: boolean[] = [];\r\n const noInitialSizes: boolean[] = [];\r\n const floatingMinSize = props.floatingMinSize || 200;\r\n const controllers: number[][] = [];\r\n const minSizes: number[] = [];\r\n const maxSizes: number[] = [];\r\n const useFluent = useContext(ToolContext).useFluent;\r\n\r\n const buildGridDefinition = () => {\r\n if (!elementRef.current) {\r\n return;\r\n }\r\n const children = elementRef.current.children;\r\n\r\n let gridIndex = 1;\r\n const pickArray = Array.from(children);\r\n let gridDefinition = \"\";\r\n for (const child of children) {\r\n const childElement = child as HTMLElement;\r\n if (child.classList.contains(styles[\"splitter\"])) {\r\n gridDefinition += \"auto \";\r\n } else {\r\n const sourceIndex = pickArray.indexOf(child);\r\n if (floatingCells[sourceIndex] || noInitialSizes[sourceIndex]) {\r\n gridDefinition += \"1fr \";\r\n } else {\r\n gridDefinition += \"auto \";\r\n }\r\n }\r\n\r\n if (props.direction === SplitDirection.Horizontal) {\r\n childElement.style.gridRow = \"1\";\r\n childElement.style.gridColumn = gridIndex.toString();\r\n } else {\r\n childElement.style.gridColumn = \"1\";\r\n childElement.style.gridRow = gridIndex.toString();\r\n }\r\n\r\n gridIndex++;\r\n }\r\n\r\n if (props.direction === SplitDirection.Horizontal) {\r\n elementRef.current.style.gridTemplateRows = \"100%\";\r\n elementRef.current.style.gridTemplateColumns = gridDefinition;\r\n } else {\r\n elementRef.current.style.gridTemplateColumns = \"100%\";\r\n elementRef.current.style.gridTemplateRows = gridDefinition;\r\n }\r\n };\r\n\r\n const handleResize = () => {\r\n if (!elementRef.current) {\r\n return;\r\n }\r\n\r\n // Check if we have enough room for everyone\r\n const children = elementRef.current.children;\r\n for (let i = 0; i < children.length; i++) {\r\n if (!floatingCells[i]) {\r\n continue;\r\n }\r\n\r\n const child = children[i] as HTMLElement;\r\n let childsize: number;\r\n if (props.direction === SplitDirection.Horizontal) {\r\n childsize = child.getBoundingClientRect().width;\r\n } else {\r\n childsize = child.getBoundingClientRect().height;\r\n }\r\n\r\n if (childsize < floatingMinSize) {\r\n const missing = Math.floor(floatingMinSize - childsize);\r\n let done = 0;\r\n\r\n // picking the controller in order and try to reduce their size to fit\r\n for (let j = 0; j < controllers[i].length; j++) {\r\n const controllerIndex = controllers[i][j];\r\n const controller = children[controllerIndex] as HTMLElement;\r\n const currentSize = props.direction === SplitDirection.Horizontal ? controller.getBoundingClientRect().width : controller.getBoundingClientRect().height;\r\n let newSize = currentSize - missing;\r\n if (minSizes[controllerIndex]) {\r\n newSize = Math.max(newSize, minSizes[controllerIndex]);\r\n }\r\n if (props.direction === SplitDirection.Horizontal) {\r\n controller.style.width = `${newSize}px`;\r\n } else {\r\n controller.style.height = `${newSize}px`;\r\n }\r\n\r\n done += currentSize - newSize;\r\n\r\n if (done === missing) {\r\n // We made it\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n buildGridDefinition();\r\n\r\n // Add event listener for window resize\r\n window.addEventListener(\"resize\", handleResize);\r\n\r\n // Cleanup the event listener on component unmount\r\n return () => {\r\n window.removeEventListener(\"resize\", handleResize);\r\n };\r\n }, []);\r\n\r\n const drag = (offset: number, source: HTMLElement, controlledSide: ControlledSize) => {\r\n if (!elementRef.current) {\r\n return;\r\n }\r\n\r\n const children = elementRef.current.children;\r\n const childArray = Array.from(children) as HTMLElement[];\r\n const sourceIndex = childArray.indexOf(source);\r\n if (sourceIndex <= 0) {\r\n return;\r\n }\r\n\r\n let current: number;\r\n if (controlledSide === ControlledSize.First) {\r\n current = sourceIndex - 1;\r\n } else {\r\n current = sourceIndex + 1;\r\n }\r\n const minSize = minSizes[current] || 0;\r\n const maxSize = maxSizes[current];\r\n\r\n noInitialSizes[current] = false;\r\n buildGridDefinition();\r\n\r\n let newSize = Math.floor(controlledSide === ControlledSize.First ? sizes[current] + offset : sizes[current] - offset);\r\n\r\n // Min size check\r\n if (newSize < minSize) {\r\n newSize = minSize;\r\n }\r\n\r\n // Max size check\r\n if (maxSize && newSize > maxSize) {\r\n newSize = maxSize;\r\n }\r\n\r\n // Max size check across the whole container\r\n const maxContainerSize = sizes.reduce((a, b) => a + b, 0) || 0;\r\n let totalSize = 0;\r\n let totalFloating = 0;\r\n for (let i = 0; i < children.length; i++) {\r\n if (floatingCells[i]) {\r\n totalFloating++;\r\n } else {\r\n totalSize += i === current ? newSize : sizes[i];\r\n }\r\n }\r\n\r\n if (maxContainerSize - totalSize < floatingMinSize * totalFloating) {\r\n newSize = maxContainerSize - floatingMinSize * totalFloating;\r\n }\r\n\r\n if (props.direction === SplitDirection.Horizontal) {\r\n childArray[current].style.width = `${newSize}px`;\r\n } else {\r\n childArray[current].style.height = `${newSize}px`;\r\n }\r\n };\r\n\r\n const beginDrag = () => {\r\n if (!elementRef.current) {\r\n return;\r\n }\r\n const children = elementRef.current.children;\r\n sizes.length = 0;\r\n for (const child of children) {\r\n const childElement = child as HTMLElement;\r\n\r\n if (props.direction === SplitDirection.Horizontal) {\r\n sizes.push(childElement.getBoundingClientRect().width);\r\n } else {\r\n sizes.push(childElement.getBoundingClientRect().height);\r\n }\r\n }\r\n };\r\n\r\n const endDrag = () => {\r\n sizes.length = 0;\r\n };\r\n\r\n // We assume splitter are not flagging floating cells in a different way\r\n const sync = (source: HTMLElement, controlledSide: ControlledSize, size?: number, minSize?: number, maxSize?: number) => {\r\n if (!elementRef.current) {\r\n return;\r\n }\r\n\r\n const children = elementRef.current.children;\r\n const childArray = Array.from(children) as HTMLElement[];\r\n const sourceIndex = childArray.indexOf(source);\r\n if (sourceIndex <= 0) {\r\n return;\r\n }\r\n\r\n let current: number;\r\n let other: number;\r\n if (controlledSide === ControlledSize.First) {\r\n current = sourceIndex - 1;\r\n other = sourceIndex + 1;\r\n } else {\r\n current = sourceIndex + 1;\r\n other = sourceIndex - 1;\r\n }\r\n\r\n if (size !== undefined) {\r\n const sizeString = `${size | 0}px`;\r\n const alreadySet = props.direction === SplitDirection.Horizontal ? childArray[current].style.width : childArray[current].style.height;\r\n\r\n if (!alreadySet) {\r\n if (props.direction === SplitDirection.Horizontal) {\r\n childArray[current].style.width = sizeString;\r\n } else {\r\n childArray[current].style.height = sizeString;\r\n }\r\n }\r\n } else {\r\n noInitialSizes[current] = true;\r\n }\r\n\r\n if (minSize !== undefined) {\r\n minSizes[current] = minSize;\r\n }\r\n\r\n if (maxSize !== undefined) {\r\n maxSizes[current] = maxSize;\r\n }\r\n\r\n if (!controllers[other]) {\r\n controllers[other] = [];\r\n }\r\n controllers[other].push(current);\r\n floatingCells[other] = true;\r\n };\r\n\r\n return (\r\n <SplitContext.Provider value={{ direction: props.direction, drag, beginDrag, endDrag, sync }}>\r\n <div\r\n id={props.id}\r\n className={styles[\"split-container\"] + \" \" + props.className}\r\n style={useFluent ? { height: \"100vh\" } : undefined} // temporary until splitContainer is fluentized\r\n ref={elementRef}\r\n onPointerDown={(evt) => props.onPointerDown && props.onPointerDown(evt)}\r\n onPointerMove={(evt) => props.onPointerMove && props.onPointerMove(evt)}\r\n onPointerUp={(evt) => props.onPointerUp && props.onPointerUp(evt)}\r\n onDrop={(evt) => props.onDrop && props.onDrop(evt)}\r\n onDragOver={(evt) => props.onDragOver && props.onDragOver(evt)}\r\n >\r\n {props.children}\r\n </div>\r\n </SplitContext.Provider>\r\n );\r\n};\r\n"]}
@@ -1,4 +1,4 @@
1
- import type { ControlledSize } from "./splitContext.js";
1
+ import { type ControlledSize } from "./splitContext.js";
2
2
  /**
3
3
  * Splitter component properties
4
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"splitter.js","sourceRoot":"","sources":["../../../../dev/sharedUiComponents/src/split/splitter.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useContext, useEffect, useRef } from \"react\";\r\nimport * as styles from \"./splitContainer.module.scss\";\r\nimport type { ControlledSize } from \"./splitContext\";\r\nimport { SplitContext, SplitDirection } from \"./splitContext\";\r\n\r\n/**\r\n * Splitter component properties\r\n */\r\nexport interface ISplitterProps {\r\n /**\r\n * Unique identifier\r\n */\r\n id?: string;\r\n\r\n /**\r\n * Splitter size\r\n */\r\n size: number;\r\n\r\n /**\r\n * Minimum size for the controlled element\r\n */\r\n minSize?: number;\r\n\r\n /**\r\n * Maximum size for the controlled element\r\n */\r\n maxSize?: number;\r\n\r\n /**\r\n * Initial size for the controlled element\r\n */\r\n initialSize?: number;\r\n\r\n /**\r\n * Defines the controlled side\r\n */\r\n controlledSide: ControlledSize;\r\n\r\n /**\r\n * refObject to the splitter element\r\n */\r\n refObject?: React.RefObject<HTMLDivElement>;\r\n}\r\n\r\n/**\r\n * Creates a splitter component\r\n * @param props defines the splitter properties\r\n * @returns the splitter component\r\n */\r\nexport const Splitter: React.FC<ISplitterProps> = (props) => {\r\n const elementRef: React.RefObject<HTMLDivElement> = props.refObject || useRef(null);\r\n const splitContext = useContext(SplitContext);\r\n let isCaptured = false;\r\n let startValue: number;\r\n\r\n useEffect(() => {\r\n if (!elementRef.current) {\r\n return;\r\n }\r\n\r\n if (!elementRef.current.style.width) {\r\n if (splitContext.direction === SplitDirection.Horizontal) {\r\n elementRef.current.style.width = `${props.size}px`;\r\n elementRef.current.style.height = `100%`;\r\n elementRef.current.classList.add(styles[\"horizontal\"]);\r\n } else {\r\n elementRef.current.style.height = `${props.size}px`;\r\n elementRef.current.style.width = `100%`;\r\n elementRef.current.classList.add(styles[\"vertical\"]);\r\n }\r\n }\r\n\r\n splitContext.sync(elementRef.current, props.controlledSide, props.initialSize, props.minSize, props.maxSize);\r\n });\r\n\r\n const onPointerDown = (evt: React.PointerEvent) => {\r\n if (!elementRef.current) {\r\n return;\r\n }\r\n elementRef.current.setPointerCapture(evt.pointerId);\r\n isCaptured = true;\r\n splitContext.beginDrag();\r\n\r\n if (splitContext.direction === SplitDirection.Horizontal) {\r\n startValue = evt.clientX;\r\n } else {\r\n startValue = evt.clientY;\r\n }\r\n evt.preventDefault();\r\n };\r\n const onPointerMove = (evt: React.PointerEvent) => {\r\n if (!elementRef.current || !isCaptured) {\r\n return;\r\n }\r\n if (splitContext.direction === SplitDirection.Horizontal) {\r\n splitContext.drag(evt.clientX - startValue, elementRef.current, props.controlledSide);\r\n } else {\r\n splitContext.drag(evt.clientY - startValue, elementRef.current, props.controlledSide);\r\n }\r\n evt.preventDefault();\r\n };\r\n const onPointerUp = (evt: React.PointerEvent) => {\r\n if (!elementRef.current) {\r\n return;\r\n }\r\n elementRef.current.releasePointerCapture(evt.pointerId);\r\n isCaptured = false;\r\n splitContext.endDrag();\r\n evt.preventDefault();\r\n };\r\n\r\n return (\r\n <div\r\n id={props.id}\r\n className={styles[\"splitter\"]}\r\n ref={elementRef}\r\n onPointerDown={(evt) => onPointerDown(evt)}\r\n onPointerUp={(evt) => onPointerUp(evt)}\r\n onPointerMove={(evt) => onPointerMove(evt)}\r\n ></div>\r\n );\r\n};\r\n"]}
1
+ {"version":3,"file":"splitter.js","sourceRoot":"","sources":["../../../../dev/sharedUiComponents/src/split/splitter.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useContext, useEffect, useRef } from \"react\";\r\nimport * as styles from \"./splitContainer.module.scss\";\r\nimport { type ControlledSize, SplitContext, SplitDirection } from \"./splitContext\";\r\n\r\n/**\r\n * Splitter component properties\r\n */\r\nexport interface ISplitterProps {\r\n /**\r\n * Unique identifier\r\n */\r\n id?: string;\r\n\r\n /**\r\n * Splitter size\r\n */\r\n size: number;\r\n\r\n /**\r\n * Minimum size for the controlled element\r\n */\r\n minSize?: number;\r\n\r\n /**\r\n * Maximum size for the controlled element\r\n */\r\n maxSize?: number;\r\n\r\n /**\r\n * Initial size for the controlled element\r\n */\r\n initialSize?: number;\r\n\r\n /**\r\n * Defines the controlled side\r\n */\r\n controlledSide: ControlledSize;\r\n\r\n /**\r\n * refObject to the splitter element\r\n */\r\n refObject?: React.RefObject<HTMLDivElement>;\r\n}\r\n\r\n/**\r\n * Creates a splitter component\r\n * @param props defines the splitter properties\r\n * @returns the splitter component\r\n */\r\nexport const Splitter: React.FC<ISplitterProps> = (props) => {\r\n const elementRef: React.RefObject<HTMLDivElement> = props.refObject || useRef(null);\r\n const splitContext = useContext(SplitContext);\r\n let isCaptured = false;\r\n let startValue: number;\r\n\r\n useEffect(() => {\r\n if (!elementRef.current) {\r\n return;\r\n }\r\n\r\n if (!elementRef.current.style.width) {\r\n if (splitContext.direction === SplitDirection.Horizontal) {\r\n elementRef.current.style.width = `${props.size}px`;\r\n elementRef.current.style.height = `100%`;\r\n elementRef.current.classList.add(styles[\"horizontal\"]);\r\n } else {\r\n elementRef.current.style.height = `${props.size}px`;\r\n elementRef.current.style.width = `100%`;\r\n elementRef.current.classList.add(styles[\"vertical\"]);\r\n }\r\n }\r\n\r\n splitContext.sync(elementRef.current, props.controlledSide, props.initialSize, props.minSize, props.maxSize);\r\n });\r\n\r\n const onPointerDown = (evt: React.PointerEvent) => {\r\n if (!elementRef.current) {\r\n return;\r\n }\r\n elementRef.current.setPointerCapture(evt.pointerId);\r\n isCaptured = true;\r\n splitContext.beginDrag();\r\n\r\n if (splitContext.direction === SplitDirection.Horizontal) {\r\n startValue = evt.clientX;\r\n } else {\r\n startValue = evt.clientY;\r\n }\r\n evt.preventDefault();\r\n };\r\n const onPointerMove = (evt: React.PointerEvent) => {\r\n if (!elementRef.current || !isCaptured) {\r\n return;\r\n }\r\n if (splitContext.direction === SplitDirection.Horizontal) {\r\n splitContext.drag(evt.clientX - startValue, elementRef.current, props.controlledSide);\r\n } else {\r\n splitContext.drag(evt.clientY - startValue, elementRef.current, props.controlledSide);\r\n }\r\n evt.preventDefault();\r\n };\r\n const onPointerUp = (evt: React.PointerEvent) => {\r\n if (!elementRef.current) {\r\n return;\r\n }\r\n elementRef.current.releasePointerCapture(evt.pointerId);\r\n isCaptured = false;\r\n splitContext.endDrag();\r\n evt.preventDefault();\r\n };\r\n\r\n return (\r\n <div\r\n id={props.id}\r\n className={styles[\"splitter\"]}\r\n ref={elementRef}\r\n onPointerDown={(evt) => onPointerDown(evt)}\r\n onPointerUp={(evt) => onPointerUp(evt)}\r\n onPointerMove={(evt) => onPointerMove(evt)}\r\n ></div>\r\n );\r\n};\r\n"]}
@@ -1,8 +1,8 @@
1
1
  import * as React from "react";
2
- import type { Observable } from "@onerjs/core/Misc/observable.js";
3
- import type { PropertyChangedEvent } from "../../../propertyChangedEvent.js";
4
- import type { LockObject } from "../../../tabs/propertyGrids/lockObject.js";
5
- import type { Checkbox } from "@onerjs/gui/2D/controls/checkbox.js";
2
+ import { type Observable } from "@onerjs/core/Misc/observable.js";
3
+ import { type PropertyChangedEvent } from "../../../propertyChangedEvent.js";
4
+ import { type LockObject } from "../../../tabs/propertyGrids/lockObject.js";
5
+ import { type Checkbox } from "@onerjs/gui/2D/controls/checkbox.js";
6
6
  interface ICheckboxPropertyGridComponentProps {
7
7
  checkbox: Checkbox;
8
8
  lockObject: LockObject;