@flikk/ui 1.0.0-beta.27 → 1.0.0-beta.29

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 (319) hide show
  1. package/dist/bg/1.webp +0 -0
  2. package/dist/bg/10.webp +0 -0
  3. package/dist/bg/11.webp +0 -0
  4. package/dist/bg/12.webp +0 -0
  5. package/dist/bg/13.webp +0 -0
  6. package/dist/bg/14.webp +0 -0
  7. package/dist/bg/15.webp +0 -0
  8. package/dist/bg/16.webp +0 -0
  9. package/dist/bg/17.webp +0 -0
  10. package/dist/bg/18.webp +0 -0
  11. package/dist/bg/19.webp +0 -0
  12. package/dist/bg/2.webp +0 -0
  13. package/dist/bg/20.webp +0 -0
  14. package/dist/bg/21.webp +0 -0
  15. package/dist/bg/22.webp +0 -0
  16. package/dist/bg/3.webp +0 -0
  17. package/dist/bg/4.webp +0 -0
  18. package/dist/bg/5.webp +0 -0
  19. package/dist/bg/6.webp +0 -0
  20. package/dist/bg/7.webp +0 -0
  21. package/dist/bg/8.webp +0 -0
  22. package/dist/bg/9.webp +0 -0
  23. package/dist/components/ai/CodeBlock/CodeBlock.theme.js +1 -1
  24. package/dist/components/ai/PromptInput/PromptInput.js +7 -143
  25. package/dist/components/ai/PromptInput/VoiceRecorder.js +0 -88
  26. package/dist/components/ai/TokenCounter/TokenCounter.theme.js +1 -1
  27. package/dist/components/canvas/Background.d.ts +19 -0
  28. package/dist/components/canvas/Background.js +23 -0
  29. package/dist/components/canvas/BaseNode.d.ts +15 -0
  30. package/dist/components/canvas/BaseNode.js +20 -0
  31. package/dist/components/canvas/CanvasToolbar.d.ts +34 -0
  32. package/dist/components/canvas/CanvasToolbar.js +34 -0
  33. package/dist/components/canvas/Edge.d.ts +35 -0
  34. package/dist/components/canvas/Edge.js +97 -0
  35. package/dist/components/canvas/EdgeLayer.d.ts +18 -0
  36. package/dist/components/canvas/EdgeLayer.js +111 -0
  37. package/dist/components/canvas/Handle.d.ts +11 -0
  38. package/dist/components/canvas/Handle.js +63 -0
  39. package/dist/components/canvas/MiniMap.d.ts +22 -0
  40. package/dist/components/canvas/MiniMap.js +105 -0
  41. package/dist/components/canvas/NodeCanvas.d.ts +10 -0
  42. package/dist/components/canvas/NodeCanvas.js +477 -0
  43. package/dist/components/canvas/NodeCanvas.theme.d.ts +7 -0
  44. package/dist/components/canvas/NodeCanvas.theme.js +9 -0
  45. package/dist/components/canvas/NodeCanvas.types.d.ts +187 -0
  46. package/dist/components/canvas/NodeControls.d.ts +25 -0
  47. package/dist/components/canvas/NodeControls.js +40 -0
  48. package/dist/components/canvas/NodeRenderer.d.ts +19 -0
  49. package/dist/components/canvas/NodeRenderer.js +117 -0
  50. package/dist/components/canvas/changes.d.ts +11 -0
  51. package/dist/components/canvas/changes.js +76 -0
  52. package/dist/components/canvas/context/CanvasContext.d.ts +32 -0
  53. package/dist/components/canvas/context/CanvasContext.js +14 -0
  54. package/dist/components/canvas/context/ConnectionContext.d.ts +33 -0
  55. package/dist/components/canvas/context/ConnectionContext.js +13 -0
  56. package/dist/components/canvas/context/HandleRegistry.d.ts +24 -0
  57. package/dist/components/canvas/context/HandleRegistry.js +15 -0
  58. package/dist/components/canvas/context/InteractionContext.d.ts +18 -0
  59. package/dist/components/canvas/context/InteractionContext.js +14 -0
  60. package/dist/components/canvas/context/NodeIdContext.d.ts +3 -0
  61. package/dist/components/canvas/context/NodeIdContext.js +15 -0
  62. package/dist/components/canvas/hooks/useConnection.d.ts +17 -0
  63. package/dist/components/canvas/hooks/useConnection.js +29 -0
  64. package/dist/components/canvas/hooks/useMarquee.d.ts +25 -0
  65. package/dist/components/canvas/hooks/useMarquee.js +91 -0
  66. package/dist/components/canvas/hooks/useNodeDrag.d.ts +23 -0
  67. package/dist/components/canvas/hooks/useNodeDrag.js +110 -0
  68. package/dist/components/canvas/hooks/usePanZoom.d.ts +30 -0
  69. package/dist/components/canvas/hooks/usePanZoom.js +189 -0
  70. package/dist/components/canvas/hooks/useViewport.d.ts +21 -0
  71. package/dist/components/canvas/hooks/useViewport.js +35 -0
  72. package/dist/components/canvas/index.d.ts +14 -0
  73. package/dist/components/canvas/index.js +12 -0
  74. package/dist/components/canvas/layout.d.ts +22 -0
  75. package/dist/components/canvas/layout.js +67 -0
  76. package/dist/components/canvas/utils.d.ts +4 -0
  77. package/dist/components/canvas/utils.js +16 -0
  78. package/dist/components/charts/AreaChart/AreaChart.js +136 -101
  79. package/dist/components/charts/AreaChart/AreaChart.types.d.ts +5 -5
  80. package/dist/components/charts/AreaChart/AreaChart.types.js +1 -0
  81. package/dist/components/charts/BarChart/BarChart.js +207 -143
  82. package/dist/components/charts/BarChart/BarChart.types.d.ts +4 -4
  83. package/dist/components/charts/BarChart/BarChart.types.js +1 -0
  84. package/dist/components/charts/ComboChart/ComboChart.types.d.ts +2 -2
  85. package/dist/components/charts/LineChart/LineChart.js +88 -72
  86. package/dist/components/charts/LineChart/LineChart.types.d.ts +3 -3
  87. package/dist/components/charts/RadarChart/RadarChart.js +1 -1
  88. package/dist/components/charts/RadarChart/RadarChart.theme.js +5 -2
  89. package/dist/components/charts/ScatterPlot/ScatterPlot.js +62 -72
  90. package/dist/components/charts/ScatterPlot/ScatterPlot.theme.js +10 -1
  91. package/dist/components/charts/ScatterPlot/ScatterPlot.types.d.ts +3 -9
  92. package/dist/components/charts/StackedBarChart/StackedBarChart.js +33 -33
  93. package/dist/components/charts/StackedBarChart/StackedBarChart.types.d.ts +2 -2
  94. package/dist/components/charts/hooks/index.d.ts +2 -0
  95. package/dist/components/charts/hooks/useChartDimensions.d.ts +29 -0
  96. package/dist/components/charts/hooks/useChartDimensions.js +42 -0
  97. package/dist/components/charts/shared/ChartTooltip/ChartTooltip.theme.js +1 -1
  98. package/dist/components/charts/types/chart.types.d.ts +11 -2
  99. package/dist/components/charts/types/chart.types.js +10 -3
  100. package/dist/components/core/Avatar/Avatar.js +5 -1
  101. package/dist/components/core/AvatarGroup/AvatarGroup.js +5 -1
  102. package/dist/components/core/AvatarGroup/AvatarGroup.theme.js +4 -2
  103. package/dist/components/core/Badge/Badge.js +1 -1
  104. package/dist/components/core/Badge/Badge.theme.js +16 -15
  105. package/dist/components/core/Button/Button.js +1 -1
  106. package/dist/components/core/Button/Button.theme.js +2 -2
  107. package/dist/components/core/Calendar/Calendar.theme.js +1 -1
  108. package/dist/components/core/Card/Card.js +7 -3
  109. package/dist/components/core/Card/Card.theme.js +3 -3
  110. package/dist/components/core/Card/Card.types.d.ts +27 -2
  111. package/dist/components/core/CommandPalette/CommandPalette.theme.js +2 -2
  112. package/dist/components/core/ContextMenu/ContextMenu.theme.js +2 -2
  113. package/dist/components/core/ContextMenu/ContextMenuItem.js +1 -1
  114. package/dist/components/core/ContextMenu/ContextMenuSubTrigger.js +1 -1
  115. package/dist/components/core/Dropdown/Dropdown.theme.js +3 -3
  116. package/dist/components/core/Dropdown/DropdownMenu.js +57 -29
  117. package/dist/components/core/HeroCard/HeroCard.d.ts +5 -0
  118. package/dist/components/core/HeroCard/HeroCard.js +99 -0
  119. package/dist/components/core/HeroCard/HeroCard.theme.d.ts +3 -0
  120. package/dist/components/core/HeroCard/HeroCard.theme.js +8 -0
  121. package/dist/components/core/HeroCard/HeroCard.types.d.ts +70 -0
  122. package/dist/components/core/HeroCard/index.d.ts +4 -0
  123. package/dist/components/core/Kbd/Kbd.theme.js +1 -1
  124. package/dist/components/core/Modal/Modal.d.ts +1 -1
  125. package/dist/components/core/Modal/Modal.js +2 -7
  126. package/dist/components/core/Modal/Modal.theme.js +4 -8
  127. package/dist/components/core/Modal/Modal.types.d.ts +0 -10
  128. package/dist/components/core/Modal/index.d.ts +1 -1
  129. package/dist/components/core/ModalStack/ModalStack.d.ts +1 -1
  130. package/dist/components/core/ModalStack/ModalStack.types.d.ts +1 -2
  131. package/dist/components/core/ModalStack/ModalStackModal.d.ts +1 -1
  132. package/dist/components/core/ModalStack/ModalStackModal.js +2 -7
  133. package/dist/components/core/PageHeading/PageHeading.theme.js +2 -2
  134. package/dist/components/core/Popover/Popover.theme.js +1 -1
  135. package/dist/components/core/ScrollArea/ScrollArea.js +242 -4
  136. package/dist/components/core/ScrollArea/ScrollArea.types.d.ts +12 -1
  137. package/dist/components/core/ScrollArea/smooth/SmoothScrollEngine.d.ts +4 -0
  138. package/dist/components/core/ScrollArea/smooth/SmoothScrollEngine.js +23 -0
  139. package/dist/components/core/ScrollArea/smooth/useSmoothScroll.js +4 -0
  140. package/dist/components/core/ScrollArea/smooth/useSmoothScroll.types.d.ts +5 -0
  141. package/dist/components/core/Segmented/Segmented.theme.js +2 -2
  142. package/dist/components/core/Tooltip/Tooltip.theme.js +1 -1
  143. package/dist/components/core/index.d.ts +1 -0
  144. package/dist/components/core/index.js +2 -0
  145. package/dist/components/data-display/DescriptionList/DescriptionList.js +23 -7
  146. package/dist/components/data-display/DescriptionList/DescriptionList.theme.js +10 -3
  147. package/dist/components/data-display/DescriptionList/DescriptionList.types.d.ts +49 -10
  148. package/dist/components/data-display/DescriptionList/index.d.ts +1 -1
  149. package/dist/components/data-display/Feed/Feed.js +28 -5
  150. package/dist/components/data-display/Feed/Feed.theme.js +1 -1
  151. package/dist/components/data-display/Feed/Feed.types.d.ts +32 -1
  152. package/dist/components/data-display/Feed/index.d.ts +1 -1
  153. package/dist/components/data-display/Metric/Metric.js +8 -8
  154. package/dist/components/data-display/Metric/Metric.theme.d.ts +3 -2
  155. package/dist/components/data-display/Metric/Metric.theme.js +50 -68
  156. package/dist/components/data-display/Metric/Metric.types.d.ts +19 -21
  157. package/dist/components/data-display/Table/Table.js +2 -2
  158. package/dist/components/data-display/Table/Table.theme.js +24 -4
  159. package/dist/components/data-display/Table/Table.types.d.ts +8 -0
  160. package/dist/components/data-display/Table/TableBody.js +2 -2
  161. package/dist/components/data-display/Table/TableCell.js +1 -1
  162. package/dist/components/data-display/Table/TableRow.d.ts +1 -1
  163. package/dist/components/data-display/Table/TableRow.js +9 -2
  164. package/dist/components/data-display/Timeline/Timeline.js +27 -5
  165. package/dist/components/data-display/Timeline/Timeline.theme.d.ts +10 -2
  166. package/dist/components/data-display/Timeline/Timeline.theme.js +14 -8
  167. package/dist/components/data-display/Timeline/Timeline.types.d.ts +48 -16
  168. package/dist/components/data-display/Timeline/Timeline.utils.d.ts +6 -0
  169. package/dist/components/data-display/Timeline/Timeline.utils.js +11 -0
  170. package/dist/components/data-display/Timeline/TimelineItem.js +13 -20
  171. package/dist/components/data-display/Timeline/TimelineMarker.js +10 -8
  172. package/dist/components/data-display/Timeline/index.d.ts +2 -2
  173. package/dist/components/effects/3d/index.d.ts +0 -2
  174. package/dist/components/effects/3d/index.js +0 -1
  175. package/dist/components/effects/DotPattern/DotPattern.js +1 -1
  176. package/dist/components/effects/Overlay/Overlay.theme.js +1 -2
  177. package/dist/components/effects/Preloader/Preloader.animations.d.ts +23 -0
  178. package/dist/components/effects/Preloader/Preloader.animations.js +150 -0
  179. package/dist/components/effects/Preloader/Preloader.d.ts +3 -0
  180. package/dist/components/effects/Preloader/Preloader.js +119 -0
  181. package/dist/components/effects/Preloader/Preloader.types.d.ts +63 -0
  182. package/dist/components/effects/Preloader/index.d.ts +2 -0
  183. package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.js +25 -14
  184. package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.types.d.ts +2 -0
  185. package/dist/components/effects/TiltCard/TiltCard.d.ts +12 -0
  186. package/dist/components/effects/TiltCard/TiltCard.glow.d.ts +28 -0
  187. package/dist/components/effects/TiltCard/TiltCard.glow.js +114 -0
  188. package/dist/components/effects/TiltCard/TiltCard.js +177 -0
  189. package/dist/components/effects/{SpotlightBorder/SpotlightBorder.shaders.d.ts → TiltCard/TiltCard.shaders.d.ts} +1 -1
  190. package/dist/components/effects/{SpotlightBorder/SpotlightBorder.shaders.js → TiltCard/TiltCard.shaders.js} +1 -1
  191. package/dist/components/effects/TiltCard/TiltCard.types.d.ts +88 -0
  192. package/dist/components/effects/TiltCard/index.d.ts +2 -0
  193. package/dist/components/effects/index.d.ts +4 -12
  194. package/dist/components/effects/index.js +2 -6
  195. package/dist/components/forms/Checkbox/Checkbox.js +7 -1
  196. package/dist/components/forms/DatePicker/DatePicker.theme.js +2 -2
  197. package/dist/components/forms/DateRangePicker/DateRangePicker.theme.js +1 -1
  198. package/dist/components/forms/FileUpload/FileUpload.js +1 -89
  199. package/dist/components/forms/FormLabel/FormLabel.theme.js +1 -1
  200. package/dist/components/forms/RichTextEditor/RichTextEditor.theme.js +2 -2
  201. package/dist/components/forms/Slider/Slider.theme.js +1 -1
  202. package/dist/components/forms/Switch/Switch.js +27 -15
  203. package/dist/components/forms/Switch/Switch.theme.d.ts +36 -6
  204. package/dist/components/forms/Switch/Switch.theme.js +33 -4
  205. package/dist/components/forms/Switch/Switch.types.d.ts +12 -2
  206. package/dist/components/forms/TimePicker/TimePicker.theme.js +1 -2
  207. package/dist/components/forms/TimePicker/TimePickerContent.js +1 -90
  208. package/dist/components/forms/forms.theme.js +1 -1
  209. package/dist/components/forms/index.d.ts +0 -4
  210. package/dist/components/forms/index.js +0 -92
  211. package/dist/components/generative/GenerativeView.d.ts +21 -0
  212. package/dist/components/generative/GenerativeView.js +116 -0
  213. package/dist/components/generative/actions.d.ts +26 -0
  214. package/dist/components/generative/actions.js +51 -0
  215. package/dist/components/generative/index.d.ts +11 -0
  216. package/dist/components/generative/index.js +9 -0
  217. package/dist/components/generative/registry.d.ts +43 -0
  218. package/dist/components/generative/registry.js +114 -0
  219. package/dist/components/generative/resolvers.d.ts +35 -0
  220. package/dist/components/generative/resolvers.js +93 -0
  221. package/dist/components/generative/schema.generated.d.ts +2 -0
  222. package/dist/components/generative/schema.generated.js +1639 -0
  223. package/dist/components/generative/schemaTypes.d.ts +30 -0
  224. package/dist/components/generative/streaming.d.ts +39 -0
  225. package/dist/components/generative/streaming.js +283 -0
  226. package/dist/components/generative/tools.d.ts +21 -0
  227. package/dist/components/generative/tools.js +54 -0
  228. package/dist/components/generative/types.d.ts +41 -0
  229. package/dist/components/generative/useGenerativeStream.d.ts +37 -0
  230. package/dist/components/generative/useGenerativeStream.js +36 -0
  231. package/dist/components/generative/validate.d.ts +24 -0
  232. package/dist/components/generative/validate.js +259 -0
  233. package/dist/components/layout/AppShell/AppShell.theme.js +2 -2
  234. package/dist/components/layout/FormLayout/FormLayout.js +1 -90
  235. package/dist/components/layout/Grid/Grid.d.ts +3 -0
  236. package/dist/components/layout/Grid/Grid.js +50 -0
  237. package/dist/components/layout/Grid/Grid.theme.d.ts +2 -0
  238. package/dist/components/layout/Grid/Grid.theme.js +35 -0
  239. package/dist/components/layout/Grid/Grid.types.d.ts +57 -0
  240. package/dist/components/layout/Grid/index.d.ts +3 -0
  241. package/dist/components/layout/Section/Section.d.ts +3 -0
  242. package/dist/components/layout/Section/Section.js +18 -0
  243. package/dist/components/layout/Section/Section.theme.d.ts +2 -0
  244. package/dist/components/layout/Section/Section.theme.js +10 -0
  245. package/dist/components/layout/Section/Section.types.d.ts +34 -0
  246. package/dist/components/layout/Section/index.d.ts +3 -0
  247. package/dist/components/layout/Stack/Stack.d.ts +3 -0
  248. package/dist/components/layout/Stack/Stack.js +19 -0
  249. package/dist/components/layout/Stack/Stack.theme.d.ts +2 -0
  250. package/dist/components/layout/Stack/Stack.theme.js +10 -0
  251. package/dist/components/layout/Stack/Stack.types.d.ts +39 -0
  252. package/dist/components/layout/Stack/index.d.ts +3 -0
  253. package/dist/components/layout/index.d.ts +3 -0
  254. package/dist/components/layout/index.js +6 -0
  255. package/dist/generative.schema.json +1637 -0
  256. package/dist/index.js +180 -180
  257. package/dist/registry.json +648 -464
  258. package/dist/styles.css +1 -1
  259. package/dist/tools.json +1731 -0
  260. package/package.json +17 -4
  261. package/src/global.scss +53 -101
  262. package/src/styles/theme.css +687 -493
  263. package/dist/bg/1.jpg +0 -0
  264. package/dist/bg/10.jpg +0 -0
  265. package/dist/bg/11.jpg +0 -0
  266. package/dist/bg/14.jpg +0 -0
  267. package/dist/bg/15.jpg +0 -0
  268. package/dist/bg/16.jpg +0 -0
  269. package/dist/bg/17.jpg +0 -0
  270. package/dist/bg/18.jpg +0 -0
  271. package/dist/bg/19.jpg +0 -0
  272. package/dist/bg/2.jpg +0 -0
  273. package/dist/bg/20.jpg +0 -0
  274. package/dist/bg/21.jpg +0 -0
  275. package/dist/bg/22.jpg +0 -0
  276. package/dist/bg/23.jpg +0 -0
  277. package/dist/bg/24.jpg +0 -0
  278. package/dist/bg/3.jpg +0 -0
  279. package/dist/bg/4.jpg +0 -0
  280. package/dist/bg/5.jpg +0 -0
  281. package/dist/bg/6.jpg +0 -0
  282. package/dist/bg/7.jpg +0 -0
  283. package/dist/bg/8.jpg +0 -0
  284. package/dist/bg/9.jpg +0 -0
  285. package/dist/components/effects/MorphingText/MorphingText.d.ts +0 -17
  286. package/dist/components/effects/MorphingText/MorphingText.js +0 -125
  287. package/dist/components/effects/MorphingText/MorphingText.types.d.ts +0 -18
  288. package/dist/components/effects/MorphingText/index.d.ts +0 -2
  289. package/dist/components/effects/PageTransition/PageTransition.animations.d.ts +0 -8
  290. package/dist/components/effects/PageTransition/PageTransition.animations.js +0 -53
  291. package/dist/components/effects/PageTransition/PageTransition.d.ts +0 -3
  292. package/dist/components/effects/PageTransition/PageTransition.js +0 -82
  293. package/dist/components/effects/PageTransition/PageTransition.types.d.ts +0 -15
  294. package/dist/components/effects/PageTransition/index.d.ts +0 -2
  295. package/dist/components/effects/ParallaxSection/ParallaxSection.d.ts +0 -26
  296. package/dist/components/effects/ParallaxSection/ParallaxSection.js +0 -71
  297. package/dist/components/effects/ParallaxSection/ParallaxSection.types.d.ts +0 -11
  298. package/dist/components/effects/ParallaxSection/index.d.ts +0 -2
  299. package/dist/components/effects/Spotlight/Spotlight.d.ts +0 -36
  300. package/dist/components/effects/Spotlight/Spotlight.js +0 -112
  301. package/dist/components/effects/Spotlight/Spotlight.types.d.ts +0 -29
  302. package/dist/components/effects/Spotlight/index.d.ts +0 -2
  303. package/dist/components/effects/SpotlightBorder/SpotlightBorder.d.ts +0 -18
  304. package/dist/components/effects/SpotlightBorder/SpotlightBorder.js +0 -213
  305. package/dist/components/effects/SpotlightBorder/SpotlightBorder.types.d.ts +0 -61
  306. package/dist/components/effects/SpotlightBorder/index.d.ts +0 -2
  307. package/dist/components/effects/StickyScroll/StickyScroll.d.ts +0 -30
  308. package/dist/components/effects/StickyScroll/StickyScroll.js +0 -128
  309. package/dist/components/effects/StickyScroll/StickyScroll.types.d.ts +0 -19
  310. package/dist/components/effects/StickyScroll/index.d.ts +0 -2
  311. package/dist/components/forms/CronInput/CronInput.d.ts +0 -3
  312. package/dist/components/forms/CronInput/CronInput.js +0 -113
  313. package/dist/components/forms/CronInput/CronInput.theme.d.ts +0 -6
  314. package/dist/components/forms/CronInput/CronInput.theme.js +0 -75
  315. package/dist/components/forms/CronInput/CronInput.types.d.ts +0 -109
  316. package/dist/components/forms/CronInput/CronInput.utils.d.ts +0 -67
  317. package/dist/components/forms/CronInput/CronInput.utils.js +0 -505
  318. package/dist/components/forms/CronInput/index.d.ts +0 -4
  319. /package/dist/components/effects/{SpotlightBorder/SpotlightBorder.types.js → TiltCard/TiltCard.types.js} +0 -0
@@ -0,0 +1,18 @@
1
+ import type { ConnectionState } from "./context/ConnectionContext";
2
+ import type { NodeCanvasEdge, NodeCanvasNode } from "./NodeCanvas.types";
3
+ interface EdgeLayerProps {
4
+ nodes: NodeCanvasNode[];
5
+ edges: NodeCanvasEdge[];
6
+ connection: ConnectionState | null;
7
+ onSelectEdge: (id: string, additive: boolean) => void;
8
+ onDeleteEdge: (id: string) => void;
9
+ }
10
+ /**
11
+ * SVG layer (inside the zoom-scaled world) that draws every edge, the in-progress
12
+ * connection ghost, and a delete (×) button at the midpoint of hovered/selected
13
+ * edges. Anchors come from `node.position + handleOffset`, so edges stay locked to
14
+ * handles through pan / zoom / node drag. The × is counter-scaled so it stays a
15
+ * constant on-screen size.
16
+ */
17
+ export declare function EdgeLayer({ nodes, edges, connection, onSelectEdge, onDeleteEdge, }: EdgeLayerProps): import("react/jsx-runtime").JSX.Element;
18
+ export {};
@@ -0,0 +1,111 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useState, useMemo } from 'react';
3
+ import { edgeMidpoint, Edge } from './Edge.js';
4
+ import { useHandleRegistry } from './context/HandleRegistry.js';
5
+ import { useNodeCanvasContext } from './context/CanvasContext.js';
6
+
7
+ const SIDE_NORMAL = {
8
+ top: [0, -1],
9
+ right: [1, 0],
10
+ bottom: [0, 1],
11
+ left: [-1, 0],
12
+ };
13
+ /**
14
+ * SVG layer (inside the zoom-scaled world) that draws every edge, the in-progress
15
+ * connection ghost, and a delete (×) button at the midpoint of hovered/selected
16
+ * edges. Anchors come from `node.position + handleOffset`, so edges stay locked to
17
+ * handles through pan / zoom / node drag. The × is counter-scaled so it stays a
18
+ * constant on-screen size.
19
+ */
20
+ function EdgeLayer({ nodes, edges, connection, onSelectEdge, onDeleteEdge, }) {
21
+ const { handlesRef, version } = useHandleRegistry();
22
+ const { viewport } = useNodeCanvasContext();
23
+ const [hoveredEdge, setHoveredEdge] = useState(null);
24
+ const nodeMap = useMemo(() => new Map(nodes.map((n) => [n.id, n])), [nodes]);
25
+ const anchorAt = (node, h) => ({
26
+ point: { x: node.position.x + h.offset.x, y: node.position.y + h.offset.y },
27
+ position: h.position,
28
+ });
29
+ /** Node center (in flow coords), derived from the 4 auto-handle side-centers. */
30
+ const nodeCenter = (node) => {
31
+ var _a;
32
+ const auto = ((_a = handlesRef.current.get(node.id)) !== null && _a !== void 0 ? _a : []).filter((h) => h.kind === "auto");
33
+ if (auto.length) {
34
+ const sum = auto.reduce((a, h) => ({ x: a.x + h.offset.x, y: a.y + h.offset.y }), {
35
+ x: 0,
36
+ y: 0,
37
+ });
38
+ return { x: node.position.x + sum.x / auto.length, y: node.position.y + sum.y / auto.length };
39
+ }
40
+ return { x: node.position.x + 90, y: node.position.y + 40 };
41
+ };
42
+ /**
43
+ * Anchor an edge end. An explicit (non-auto) `<Handle>` is honored; otherwise the
44
+ * edge "floats" — it anchors to whichever auto-handle side faces `toward`, so edges
45
+ * route cleanly and re-route as nodes move.
46
+ */
47
+ const anchorFor = (nodeId, handleId, type, toward) => {
48
+ var _a;
49
+ const node = nodeMap.get(nodeId);
50
+ if (!node)
51
+ return null;
52
+ const list = (_a = handlesRef.current.get(nodeId)) !== null && _a !== void 0 ? _a : [];
53
+ const explicit = handleId
54
+ ? list.find((h) => h.id === handleId && h.kind !== "auto")
55
+ : list.find((h) => h.type === type && h.kind !== "auto");
56
+ if (explicit)
57
+ return anchorAt(node, explicit);
58
+ // Float: pick the auto-handle whose side best faces the other node.
59
+ const auto = list.filter((h) => h.kind === "auto");
60
+ if (auto.length) {
61
+ const center = nodeCenter(node);
62
+ const dir = { x: toward.x - center.x, y: toward.y - center.y };
63
+ let best = auto[0];
64
+ let bestDot = -Infinity;
65
+ for (const h of auto) {
66
+ const n = SIDE_NORMAL[h.position];
67
+ const dot = n[0] * dir.x + n[1] * dir.y;
68
+ if (dot > bestDot) {
69
+ bestDot = dot;
70
+ best = h;
71
+ }
72
+ }
73
+ return anchorAt(node, best);
74
+ }
75
+ return { point: { ...node.position }, position: type === "source" ? "right" : "left" };
76
+ };
77
+ const resolveEdge = (edge) => {
78
+ const sNode = nodeMap.get(edge.source);
79
+ const tNode = nodeMap.get(edge.target);
80
+ if (!sNode || !tNode)
81
+ return null;
82
+ const s = anchorFor(edge.source, edge.sourceHandle, "source", nodeCenter(tNode));
83
+ const t = anchorFor(edge.target, edge.targetHandle, "target", nodeCenter(sNode));
84
+ if (!s || !t)
85
+ return null;
86
+ return { s, t };
87
+ };
88
+ let ghost = null;
89
+ if (connection) {
90
+ // Ghost source floats toward the cursor.
91
+ ghost = anchorFor(connection.sourceNodeId, connection.sourceHandleId, connection.sourceType, connection.to);
92
+ }
93
+ return (jsxs("svg", { className: "absolute top-0 left-0 overflow-visible pointer-events-none", style: { width: 1, height: 1 }, children: [edges.map((edge) => {
94
+ var _a;
95
+ const resolved = resolveEdge(edge);
96
+ if (!resolved)
97
+ return null;
98
+ const { s, t } = resolved;
99
+ const showDelete = !connection && (edge.selected || hoveredEdge === edge.id);
100
+ const mid = edgeMidpoint((_a = edge.type) !== null && _a !== void 0 ? _a : "bezier", s.point, s.position, t.point, t.position);
101
+ return (jsxs("g", { onPointerEnter: () => setHoveredEdge(edge.id), onPointerLeave: () => setHoveredEdge((h) => (h === edge.id ? null : h)), children: [jsx(Edge, { id: edge.id, type: edge.type, source: s.point, sourcePosition: s.position, target: t.point, targetPosition: t.position, selected: edge.selected, color: edge.color, onPointerDown: (e) => {
102
+ e.stopPropagation();
103
+ onSelectEdge(edge.id, e.shiftKey);
104
+ } }), showDelete && (jsxs("g", { transform: `translate(${mid.x} ${mid.y}) scale(${1 / viewport.zoom})`, style: { pointerEvents: "auto", cursor: "pointer" }, className: "group/delete", onPointerDown: (e) => {
105
+ e.stopPropagation();
106
+ onDeleteEdge(edge.id);
107
+ }, "aria-label": "Delete connection", children: [jsx("circle", { r: 9, className: "fill-[var(--color-surface)] stroke-[var(--color-border)] drop-shadow-sm transition-colors group-hover/delete:fill-[var(--color-danger)] group-hover/delete:stroke-[var(--color-danger)]", strokeWidth: 1 }), jsx("path", { d: "M -3 -3 L 3 3 M 3 -3 L -3 3", className: "stroke-[var(--color-danger)] transition-colors group-hover/delete:stroke-white", strokeWidth: 1.5, strokeLinecap: "round", fill: "none" })] }))] }, edge.id));
108
+ }), connection && ghost && (jsx(Edge, { source: ghost.point, sourcePosition: ghost.position, target: connection.to, targetPosition: connection.to.x >= ghost.point.x ? "left" : "right", dashed: true, selected: true }))] }));
109
+ }
110
+
111
+ export { EdgeLayer };
@@ -0,0 +1,11 @@
1
+ import type { HandleProps } from "./NodeCanvas.types";
2
+ /**
3
+ * A connection port, declared inside a custom node. Registers its center offset
4
+ * (in flow coords, relative to the node) so edges and connection drags anchor to
5
+ * `node.position + offset` — stable under pan/zoom/drag. Measured once after
6
+ * render and again only when the node's size changes.
7
+ */
8
+ export declare function Handle({ type, id, position, isConnectable, className, style, children, }: HandleProps): import("react/jsx-runtime").JSX.Element;
9
+ export declare namespace Handle {
10
+ var displayName: string;
11
+ }
@@ -0,0 +1,63 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useRef, useEffect } from 'react';
3
+ import { cn } from '../../utils/cn.js';
4
+ import { useNodeId } from './context/NodeIdContext.js';
5
+ import { useHandleRegistry, handleKey } from './context/HandleRegistry.js';
6
+ import { useNodeCanvasContext } from './context/CanvasContext.js';
7
+ import { useConnection } from './hooks/useConnection.js';
8
+
9
+ const SIDE_CLASSES = {
10
+ top: "top-0 left-1/2 -translate-x-1/2 -translate-y-1/2",
11
+ right: "right-0 top-1/2 translate-x-1/2 -translate-y-1/2",
12
+ bottom: "bottom-0 left-1/2 -translate-x-1/2 translate-y-1/2",
13
+ left: "left-0 top-1/2 -translate-x-1/2 -translate-y-1/2",
14
+ };
15
+ /**
16
+ * A connection port, declared inside a custom node. Registers its center offset
17
+ * (in flow coords, relative to the node) so edges and connection drags anchor to
18
+ * `node.position + offset` — stable under pan/zoom/drag. Measured once after
19
+ * render and again only when the node's size changes.
20
+ */
21
+ function Handle({ type, id, position = type === "source" ? "right" : "left", isConnectable = true, className, style, children, }) {
22
+ const nodeId = useNodeId();
23
+ const ref = useRef(null);
24
+ const { register, unregister } = useHandleRegistry();
25
+ const { viewportRef, locked } = useNodeCanvasContext();
26
+ const { onPointerDown } = useConnection({ nodeId, handleId: id, type });
27
+ const connectable = isConnectable && !locked;
28
+ useEffect(() => {
29
+ const el = ref.current;
30
+ if (!el)
31
+ return;
32
+ const nodeEl = el.closest("[data-flikkui-node]");
33
+ if (!nodeEl)
34
+ return;
35
+ const measure = () => {
36
+ const hr = el.getBoundingClientRect();
37
+ const nr = nodeEl.getBoundingClientRect();
38
+ const zoom = viewportRef.current.zoom || 1;
39
+ register(nodeId, {
40
+ id,
41
+ type,
42
+ position,
43
+ offset: {
44
+ x: (hr.left + hr.width / 2 - nr.left) / zoom,
45
+ y: (hr.top + hr.height / 2 - nr.top) / zoom,
46
+ },
47
+ });
48
+ };
49
+ measure();
50
+ const ro = new ResizeObserver(measure);
51
+ ro.observe(nodeEl);
52
+ return () => {
53
+ ro.disconnect();
54
+ unregister(nodeId, handleKey(type, id));
55
+ };
56
+ }, [nodeId, id, type, position, register, unregister, viewportRef]);
57
+ return (jsx("div", { ref: ref, "data-flikkui-handle": "", "data-node-id": nodeId, "data-handle-type": type, "data-handle-id": id !== null && id !== void 0 ? id : "", className: cn("nodrag absolute z-10", children
58
+ ? "grid place-items-center"
59
+ : "size-3 rounded-full border-2 bg-[var(--color-surface)] border-[var(--color-primary)]", SIDE_CLASSES[position], connectable ? "cursor-crosshair" : "opacity-50", className), style: style, onPointerDown: connectable ? onPointerDown : undefined, children: children }));
60
+ }
61
+ Handle.displayName = "Handle";
62
+
63
+ export { Handle };
@@ -0,0 +1,22 @@
1
+ declare const POSITIONS: {
2
+ readonly "bottom-left": "bottom-4 left-4";
3
+ readonly "bottom-right": "bottom-4 right-4";
4
+ readonly "top-left": "top-4 left-4";
5
+ readonly "top-right": "top-4 right-4";
6
+ };
7
+ export interface MiniMapProps {
8
+ position?: keyof typeof POSITIONS;
9
+ width?: number;
10
+ height?: number;
11
+ className?: string;
12
+ }
13
+ /**
14
+ * Overview map: all nodes + the current viewport rectangle, scaled to fit. Click or
15
+ * drag inside it to recenter the canvas on that point. Pane-level chrome (`z-20`),
16
+ * opted out of canvas panning via `data-flikkui-nopan`.
17
+ */
18
+ export declare function MiniMap({ position, width, height, className, }: MiniMapProps): import("react/jsx-runtime").JSX.Element;
19
+ export declare namespace MiniMap {
20
+ var displayName: string;
21
+ }
22
+ export {};
@@ -0,0 +1,105 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useRef } from 'react';
3
+ import { cn } from '../../utils/cn.js';
4
+ import { useNodeCanvasContext } from './context/CanvasContext.js';
5
+
6
+ const POSITIONS = {
7
+ "bottom-left": "bottom-4 left-4",
8
+ "bottom-right": "bottom-4 right-4",
9
+ "top-left": "top-4 left-4",
10
+ "top-right": "top-4 right-4",
11
+ };
12
+ /** Estimated node footprint (node sizes aren't measured yet — issue 4 fast-follow). */
13
+ const NODE_W = 180;
14
+ const NODE_H = 80;
15
+ const PADDING = 40;
16
+ /**
17
+ * Overview map: all nodes + the current viewport rectangle, scaled to fit. Click or
18
+ * drag inside it to recenter the canvas on that point. Pane-level chrome (`z-20`),
19
+ * opted out of canvas panning via `data-flikkui-nopan`.
20
+ */
21
+ function MiniMap({ position = "bottom-left", width = 200, height = 140, className, }) {
22
+ var _a, _b;
23
+ const { nodes, viewport, setViewport, paneRef } = useNodeCanvasContext();
24
+ const svgRef = useRef(null);
25
+ const dragging = useRef(false);
26
+ const pane = paneRef.current;
27
+ const paneW = (_a = pane === null || pane === void 0 ? void 0 : pane.clientWidth) !== null && _a !== void 0 ? _a : 0;
28
+ const paneH = (_b = pane === null || pane === void 0 ? void 0 : pane.clientHeight) !== null && _b !== void 0 ? _b : 0;
29
+ // Current viewport rectangle in flow coords.
30
+ const vx = -viewport.x / viewport.zoom;
31
+ const vy = -viewport.y / viewport.zoom;
32
+ const vw = paneW / viewport.zoom;
33
+ const vh = paneH / viewport.zoom;
34
+ // Bounds = union of node bounds and the viewport rect, padded.
35
+ let minX = vx;
36
+ let minY = vy;
37
+ let maxX = vx + vw;
38
+ let maxY = vy + vh;
39
+ for (const n of nodes) {
40
+ minX = Math.min(minX, n.position.x);
41
+ minY = Math.min(minY, n.position.y);
42
+ maxX = Math.max(maxX, n.position.x + NODE_W);
43
+ maxY = Math.max(maxY, n.position.y + NODE_H);
44
+ }
45
+ minX -= PADDING;
46
+ minY -= PADDING;
47
+ maxX += PADDING;
48
+ maxY += PADDING;
49
+ const bw = Math.max(maxX - minX, 1);
50
+ const bh = Math.max(maxY - minY, 1);
51
+ const scale = Math.min(width / bw, height / bh);
52
+ const ox = (width - bw * scale) / 2;
53
+ const oy = (height - bh * scale) / 2;
54
+ const toMM = (x, y) => ({
55
+ x: (x - minX) * scale + ox,
56
+ y: (y - minY) * scale + oy,
57
+ });
58
+ const recenter = (clientX, clientY) => {
59
+ var _a;
60
+ const r = (_a = svgRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
61
+ if (!r)
62
+ return;
63
+ const flowX = (clientX - r.left - ox) / scale + minX;
64
+ const flowY = (clientY - r.top - oy) / scale + minY;
65
+ setViewport((v) => ({
66
+ zoom: v.zoom,
67
+ x: paneW / 2 - flowX * v.zoom,
68
+ y: paneH / 2 - flowY * v.zoom,
69
+ }));
70
+ };
71
+ const onPointerDown = (e) => {
72
+ var _a;
73
+ e.stopPropagation();
74
+ dragging.current = true;
75
+ recenter(e.clientX, e.clientY);
76
+ try {
77
+ (_a = svgRef.current) === null || _a === void 0 ? void 0 : _a.setPointerCapture(e.pointerId);
78
+ }
79
+ catch (_b) {
80
+ /* pointer inactive — drag still tracked via pointermove */
81
+ }
82
+ };
83
+ const onPointerMove = (e) => {
84
+ if (dragging.current)
85
+ recenter(e.clientX, e.clientY);
86
+ };
87
+ const onPointerUp = (e) => {
88
+ var _a;
89
+ dragging.current = false;
90
+ try {
91
+ (_a = svgRef.current) === null || _a === void 0 ? void 0 : _a.releasePointerCapture(e.pointerId);
92
+ }
93
+ catch (_b) {
94
+ /* noop */
95
+ }
96
+ };
97
+ const view = toMM(vx, vy);
98
+ return (jsx("div", { "data-flikkui-nopan": "", className: cn("absolute z-20 overflow-hidden rounded-lg border border-[var(--color-border)] bg-[var(--color-surface-overlay)] shadow-md", POSITIONS[position], className), style: { width, height }, children: jsxs("svg", { ref: svgRef, width: width, height: height, className: "cursor-pointer touch-none", onPointerDown: onPointerDown, onPointerMove: onPointerMove, onPointerUp: onPointerUp, children: [nodes.map((n) => {
99
+ const p = toMM(n.position.x, n.position.y);
100
+ return (jsx("rect", { x: p.x, y: p.y, width: NODE_W * scale, height: NODE_H * scale, rx: 2, className: cn(n.selected ? "fill-[var(--color-primary)]" : "fill-[var(--color-border)]") }, n.id));
101
+ }), jsx("rect", { x: view.x, y: view.y, width: vw * scale, height: vh * scale, className: "fill-[var(--color-primary)]/10 stroke-[var(--color-primary)]", strokeWidth: 1.5 })] }) }));
102
+ }
103
+ MiniMap.displayName = "MiniMap";
104
+
105
+ export { MiniMap };
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import type { NodeCanvasProps } from "./NodeCanvas.types";
3
+ /**
4
+ * The node-editor canvas: a pannable / zoomable viewport over an unbounded flow
5
+ * space. Renders nodes from `nodes` (via the `nodeTypes` registry) and edges from
6
+ * `edges`, supports drag-to-connect, and exposes everything through change-object
7
+ * callbacks. `children` are pane-level chrome (e.g. `Background`, controls) drawn
8
+ * over the canvas; nodes + edges live in the transformed world.
9
+ */
10
+ export declare const NodeCanvas: React.ForwardRefExoticComponent<NodeCanvasProps & React.RefAttributes<HTMLDivElement>>;