@dailies-studio/shot-editor 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (432) hide show
  1. package/dist/.vite/manifest.json +382 -0
  2. package/dist/assets/AgentPanel-CQejLbiX.js +2 -0
  3. package/dist/assets/AgentPanel-DJEphah0.css +1 -0
  4. package/dist/assets/AgentQuestionDialog-BqkD0kXF.js +1 -0
  5. package/dist/assets/CodeStudio-Dv4ihHpz.js +23 -0
  6. package/dist/assets/CommentsPanel-B4yhhT1T.js +1 -0
  7. package/dist/assets/ComponentLibraryRail-Ch_dsAru.js +1 -0
  8. package/dist/assets/ComponentStage-BRhRotyH.js +1 -0
  9. package/dist/assets/CurvePane-BjFVabKX.css +1 -0
  10. package/dist/assets/CurvePane-R22WzllJ.js +1 -0
  11. package/dist/assets/ExportDialog-CWLQWTmG.js +2 -0
  12. package/dist/assets/FontPicker-DWKaYL7F.js +1 -0
  13. package/dist/assets/FontPicker-v0IOIArM.css +1 -0
  14. package/dist/assets/GenerateDrawer-Bh3SqDKt.js +2 -0
  15. package/dist/assets/InsertDrawer-Ce1fod1L.js +1 -0
  16. package/dist/assets/LibraryBrowser-D9sEGz5w.js +2 -0
  17. package/dist/assets/MakeItYoursSection-CMO4319_.js +2 -0
  18. package/dist/assets/MaterialGraphCanvas-BFzl4wWR.js +23 -0
  19. package/dist/assets/MaterialGraphCanvas-BIUD59ik.css +1 -0
  20. package/dist/assets/MaterialWorkspace-CqTWqaRA.js +14 -0
  21. package/dist/assets/PreferencesDialog-CBf9_OoD.js +1 -0
  22. package/dist/assets/PresetsSection-CUEaoCVU.js +1 -0
  23. package/dist/assets/SoundHistory-BeS8EW1h.js +1 -0
  24. package/dist/assets/SoundMode-BmcZru3i.js +3 -0
  25. package/dist/assets/StockSounds-DdAUGRYK.js +1 -0
  26. package/dist/assets/TemplateFieldSection-CaeXpLFo.js +1 -0
  27. package/dist/assets/VersionHistoryPanel-CxG6XhNP.js +1 -0
  28. package/dist/assets/board-B88EPuLO.css +1 -0
  29. package/dist/assets/board-CL-he7SL.js +3 -0
  30. package/dist/assets/components-0oOSPN0l.js +1 -0
  31. package/dist/assets/googleFontRanges-gp32wJMo.js +1 -0
  32. package/dist/assets/googleFonts-BNon6M7X.js +1 -0
  33. package/dist/assets/iconsAndAliases-DL7gXP5j.js +1863 -0
  34. package/dist/assets/index-4F5NQmI8.css +1 -0
  35. package/dist/assets/index-BGHQGV5z.js +117 -0
  36. package/dist/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  37. package/dist/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  38. package/dist/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  39. package/dist/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  40. package/dist/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  41. package/dist/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  42. package/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  43. package/dist/assets/libraryModel-CpIwfFha.js +1 -0
  44. package/dist/assets/lucide-6iK64tTB.js +9319 -0
  45. package/dist/assets/motionStamp-CH-Hew4E.js +1 -0
  46. package/dist/assets/takeMeasure-Tdg0TxEi.js +1 -0
  47. package/dist/assets/webmcp-BsB9gxWC.js +2 -0
  48. package/dist/index.html +34 -3
  49. package/package.json +12 -9
  50. package/src/addFamilies.ts +66 -0
  51. package/src/api.ts +1631 -55
  52. package/src/app/App.tsx +977 -198
  53. package/src/app/lazyPanel.tsx +137 -0
  54. package/src/app/lazySurfaces.tsx +203 -0
  55. package/src/audio/index.tsx +41 -10
  56. package/src/audio/meter.ts +485 -0
  57. package/src/audio/meterMath.ts +273 -0
  58. package/src/audio/meterStore.ts +155 -0
  59. package/src/audio/offlineMix.ts +289 -0
  60. package/src/audio/preview.ts +928 -118
  61. package/src/bridge.ts +15 -5
  62. package/src/bridgeTypes.ts +1611 -36
  63. package/src/channels.ts +17 -32
  64. package/src/fonts/googleFonts.ts +4 -0
  65. package/src/hostApi.ts +174 -0
  66. package/src/icons.tsx +770 -0
  67. package/src/layerWords.ts +61 -0
  68. package/src/main.tsx +56 -4
  69. package/src/panels/ResizeHandle.tsx +33 -43
  70. package/src/panels/agent/AgentDots.tsx +36 -0
  71. package/src/panels/agent/AgentPanel.tsx +119 -43
  72. package/src/panels/agent/AgentQuestionDialog.tsx +202 -0
  73. package/src/panels/agent/agent.css +113 -97
  74. package/src/panels/agent/agentGate.ts +35 -0
  75. package/src/panels/code/CodeDefaultsPanel.tsx +345 -0
  76. package/src/panels/code/CodeStudio.tsx +373 -0
  77. package/src/panels/code/FileTree.tsx +265 -0
  78. package/src/panels/code/codeBufferGuard.ts +52 -0
  79. package/src/panels/code/codeParts.tsx +321 -0
  80. package/src/panels/comments/CommentComposer.tsx +239 -0
  81. package/src/panels/comments/CommentThread.tsx +346 -0
  82. package/src/panels/comments/CommentsPanel.tsx +336 -0
  83. package/src/panels/comments/InboxButton.tsx +131 -0
  84. package/src/panels/comments/MentionMenu.tsx +98 -0
  85. package/src/panels/comments/parts.tsx +171 -0
  86. package/src/panels/export/ExportDialog.tsx +919 -96
  87. package/src/panels/export/ExportScrim.tsx +57 -0
  88. package/src/panels/files/AssetsTab.tsx +656 -0
  89. package/src/panels/files/FilePanel.tsx +1466 -216
  90. package/src/panels/files/LayerMarks.tsx +40 -0
  91. package/src/panels/files/LeftColumn.tsx +37 -0
  92. package/src/panels/files/McpSection.tsx +690 -47
  93. package/src/panels/files/MissingAssetsNotice.tsx +60 -0
  94. package/src/panels/files/assetDrag.ts +79 -0
  95. package/src/panels/files/resourceParts.tsx +255 -0
  96. package/src/panels/fonts/FontPicker.tsx +762 -0
  97. package/src/panels/fonts/faceCache.ts +207 -0
  98. package/src/panels/fonts/fontPicker.css +271 -0
  99. package/src/panels/fonts/pickerModel.ts +265 -0
  100. package/src/panels/fonts/pickerRequest.ts +46 -0
  101. package/src/panels/header/AccountAvatar.tsx +76 -0
  102. package/src/panels/header/AgentChip.tsx +77 -0
  103. package/src/panels/header/AppMenu.tsx +213 -0
  104. package/src/panels/header/Header.tsx +564 -84
  105. package/src/panels/header/HistoryControls.tsx +31 -5
  106. package/src/panels/header/PresenceStack.tsx +329 -0
  107. package/src/panels/header/ProjectTitle.tsx +232 -0
  108. package/src/panels/header/ShareButton.tsx +59 -0
  109. package/src/panels/header/StatusBadges.tsx +358 -27
  110. package/src/panels/header/SyncDeletedDialog.tsx +88 -0
  111. package/src/panels/header/ZoomControls.tsx +46 -15
  112. package/src/panels/header/agentHandoff.ts +52 -0
  113. package/src/panels/header/leave.ts +26 -0
  114. package/src/panels/help/HelpSection.tsx +189 -163
  115. package/src/panels/insert/InsertDrawer.tsx +723 -0
  116. package/src/panels/insert/iconSet.ts +109 -0
  117. package/src/panels/inspector/ExposeDot.tsx +117 -0
  118. package/src/panels/inspector/FramingRows.tsx +314 -44
  119. package/src/panels/inspector/InspectorFooter.tsx +91 -0
  120. package/src/panels/inspector/InspectorHead.tsx +425 -0
  121. package/src/panels/inspector/InspectorPanel.tsx +408 -124
  122. package/src/panels/inspector/KeyframeDot.tsx +373 -0
  123. package/src/panels/inspector/KeyframeSection.tsx +257 -0
  124. package/src/panels/inspector/MarkerSection.tsx +55 -11
  125. package/src/panels/inspector/ParamRow.tsx +84 -53
  126. package/src/panels/inspector/RightColumn.tsx +152 -0
  127. package/src/panels/inspector/TimeSection.tsx +866 -0
  128. package/src/panels/inspector/animate/EaseControl.tsx +244 -0
  129. package/src/panels/inspector/animate/PresetsSection.tsx +135 -0
  130. package/src/panels/inspector/animate/ShotSection.tsx +562 -48
  131. package/src/panels/inspector/design/AlignRow.tsx +95 -31
  132. package/src/panels/inspector/design/AppearanceSection.tsx +118 -9
  133. package/src/panels/inspector/design/ClonerSection.tsx +323 -62
  134. package/src/panels/inspector/design/ComponentSection.tsx +50 -43
  135. package/src/panels/inspector/design/CornerSection.tsx +45 -14
  136. package/src/panels/inspector/design/DefinitionProps.tsx +315 -0
  137. package/src/panels/inspector/design/DefinitionSection.tsx +136 -0
  138. package/src/panels/inspector/design/DeviceSection.tsx +210 -0
  139. package/src/panels/inspector/design/FillSection.tsx +83 -51
  140. package/src/panels/inspector/design/FontField.tsx +196 -0
  141. package/src/panels/inspector/design/HtmlSection.tsx +23 -12
  142. package/src/panels/inspector/design/InstanceSection.tsx +373 -154
  143. package/src/panels/inspector/design/MaskSection.tsx +84 -0
  144. package/src/panels/inspector/design/MaterialSection.tsx +177 -0
  145. package/src/panels/inspector/design/MediaSection.tsx +273 -120
  146. package/src/panels/inspector/design/MeshSection.tsx +910 -82
  147. package/src/panels/inspector/design/PaintRows.tsx +550 -0
  148. package/src/panels/inspector/design/PlateStyleSection.tsx +177 -0
  149. package/src/panels/inspector/design/ShadowSection.tsx +221 -48
  150. package/src/panels/inspector/design/SplineFollowSection.tsx +235 -0
  151. package/src/panels/inspector/design/StrokeSection.tsx +228 -43
  152. package/src/panels/inspector/design/TemplateFieldSection.tsx +57 -0
  153. package/src/panels/inspector/design/TransformSection.tsx +244 -50
  154. package/src/panels/inspector/design/TypographySection.tsx +679 -110
  155. package/src/panels/inspector/layout.ts +295 -0
  156. package/src/panels/inspector/propValue.ts +199 -0
  157. package/src/panels/inspector/scene/CameraSection.tsx +232 -22
  158. package/src/panels/inspector/scene/EffectsSection.tsx +722 -71
  159. package/src/panels/inspector/scene/MakeItYoursSection.tsx +180 -0
  160. package/src/panels/inspector/scene/SceneDocSection.tsx +191 -0
  161. package/src/panels/inspector/scene/SceneSection.tsx +219 -44
  162. package/src/panels/inspector/scene/TransitionSection.tsx +523 -72
  163. package/src/panels/inspector/storyboard/StoryboardReferenceSection.tsx +593 -0
  164. package/src/panels/inspector/storyboard/VideoStill.tsx +120 -0
  165. package/src/panels/inspector/timeModel.ts +190 -0
  166. package/src/panels/inspector/useDocWrite.ts +438 -146
  167. package/src/panels/library/LibraryBrowser.tsx +435 -0
  168. package/src/panels/library/LibraryGrid.tsx +190 -0
  169. package/src/panels/library/LibraryPreviewPanel.tsx +349 -0
  170. package/src/panels/library/LibraryRail.tsx +84 -0
  171. package/src/panels/library/LibrarySoundPanel.tsx +293 -0
  172. package/src/panels/library/SoundHistory.tsx +245 -0
  173. package/src/panels/library/StockSounds.tsx +390 -0
  174. package/src/panels/library/libraryModel.ts +147 -0
  175. package/src/panels/library/stockSearch.ts +77 -0
  176. package/src/panels/maskMarks.tsx +117 -0
  177. package/src/panels/material/MaterialCommentNode.tsx +54 -0
  178. package/src/panels/material/MaterialGraphCanvas.tsx +861 -0
  179. package/src/panels/material/MaterialGraphMenu.tsx +45 -0
  180. package/src/panels/material/MaterialGroupNode.tsx +56 -0
  181. package/src/panels/material/MaterialLibrary.tsx +253 -0
  182. package/src/panels/material/MaterialNode.tsx +453 -0
  183. package/src/panels/material/MaterialNodePalette.tsx +349 -0
  184. package/src/panels/material/MaterialParameterControls.tsx +525 -0
  185. package/src/panels/material/MaterialRerouteNode.tsx +42 -0
  186. package/src/panels/material/MaterialWorkspace.tsx +501 -0
  187. package/src/panels/material/NodePreview.tsx +70 -0
  188. package/src/panels/material/flowModel.ts +441 -0
  189. package/src/panels/material/parameterValues.ts +231 -0
  190. package/src/panels/material/previewScheduler.ts +235 -0
  191. package/src/panels/material/reactFlow.css +6 -0
  192. package/src/panels/material/socketGlyph.ts +85 -0
  193. package/src/panels/material/viewportMemory.ts +58 -0
  194. package/src/panels/preferences/PreferencesDialog.tsx +215 -0
  195. package/src/panels/share/ShareComponentDialog.tsx +247 -0
  196. package/src/panels/stage/StageMenu.tsx +35 -5
  197. package/src/panels/stage/StagePanel.tsx +338 -23
  198. package/src/panels/stage/cellSlots.tsx +70 -0
  199. package/src/panels/storyboard/BoardCanvas.tsx +739 -0
  200. package/src/panels/storyboard/BoardCursors.tsx +158 -0
  201. package/src/panels/storyboard/BoardDropDialog.tsx +161 -0
  202. package/src/panels/storyboard/BoardPlan.tsx +42 -0
  203. package/src/panels/storyboard/ComponentSheet.tsx +187 -0
  204. package/src/panels/storyboard/ComponentStage.tsx +235 -0
  205. package/src/panels/storyboard/MiniSketch.tsx +173 -0
  206. package/src/panels/storyboard/PartPicker.tsx +64 -0
  207. package/src/panels/storyboard/PlanPanel.tsx +617 -0
  208. package/src/panels/storyboard/ReferencePreview.tsx +217 -0
  209. package/src/panels/storyboard/ShotBrief.tsx +360 -0
  210. package/src/panels/storyboard/ShotCard.tsx +251 -0
  211. package/src/panels/storyboard/StagePreview.tsx +348 -0
  212. package/src/panels/storyboard/StillThumbs.tsx +162 -0
  213. package/src/panels/storyboard/StoryboardView.tsx +79 -0
  214. package/src/panels/storyboard/board.css +1065 -0
  215. package/src/panels/storyboard/board.ts +12 -0
  216. package/src/panels/storyboard/boardClipboard.ts +111 -0
  217. package/src/panels/storyboard/boardOrder.ts +68 -0
  218. package/src/panels/storyboard/boardRows.tsx +425 -0
  219. package/src/panels/storyboard/liveCap.ts +90 -0
  220. package/src/panels/storyboard/plan.css +295 -0
  221. package/src/panels/storyboard/posterCache.ts +133 -0
  222. package/src/panels/storyboard/shotboard/ComponentPicker.tsx +373 -0
  223. package/src/panels/storyboard/shotboard/ImagePicker.tsx +145 -0
  224. package/src/panels/storyboard/shotboard/ShotBoard.tsx +292 -0
  225. package/src/panels/storyboard/shotboard/SketchCanvas.tsx +443 -0
  226. package/src/panels/storyboard/shotboard/SketchInspector.tsx +471 -0
  227. package/src/panels/storyboard/shotboard/SketchItem.tsx +240 -0
  228. package/src/panels/storyboard/shotboard/SketchLayers.tsx +130 -0
  229. package/src/panels/storyboard/shotboard/SketchPlay.tsx +108 -0
  230. package/src/panels/storyboard/shotboard/SketchStrip.tsx +178 -0
  231. package/src/panels/storyboard/shotboard/SketchToolFooter.tsx +99 -0
  232. package/src/panels/storyboard/shotboard/sketch.css +1392 -0
  233. package/src/panels/storyboard/shotboard/sketchModel.ts +219 -0
  234. package/src/panels/storyboard/storyboardDrop.ts +164 -0
  235. package/src/panels/studio/ComponentLibraryRail.tsx +346 -0
  236. package/src/panels/studio/ComponentSidePanel.tsx +355 -0
  237. package/src/panels/studio/ComponentStudio.tsx +243 -0
  238. package/src/panels/studio/ComponentsHome.tsx +318 -0
  239. package/src/panels/studio/ComponentsPreview.tsx +179 -0
  240. package/src/panels/studio/EveryUse.tsx +244 -0
  241. package/src/panels/studio/ThisUsePanel.tsx +679 -0
  242. package/src/panels/studio/componentParts.tsx +341 -0
  243. package/src/panels/studio/components.ts +6 -0
  244. package/src/panels/studio/newCodeComponent.ts +66 -0
  245. package/src/panels/timeline/AudioFxButton.tsx +290 -0
  246. package/src/panels/timeline/AudioLane.tsx +674 -85
  247. package/src/panels/timeline/BlockRow.tsx +154 -85
  248. package/src/panels/timeline/ChannelRow.tsx +378 -129
  249. package/src/panels/timeline/CurvePane.tsx +508 -0
  250. package/src/panels/timeline/Filmstrip.tsx +361 -0
  251. package/src/panels/timeline/GenerateDrawer.tsx +407 -0
  252. package/src/panels/timeline/KeyStretch.tsx +115 -0
  253. package/src/panels/timeline/LifespanRow.tsx +730 -47
  254. package/src/panels/timeline/MarkerLane.tsx +46 -8
  255. package/src/panels/timeline/PlayButton.tsx +91 -0
  256. package/src/panels/timeline/PropertyPicker.tsx +254 -0
  257. package/src/panels/timeline/ShotRow.tsx +400 -0
  258. package/src/panels/timeline/SoundMode.tsx +1406 -0
  259. package/src/panels/timeline/TimelineDock.tsx +2338 -272
  260. package/src/panels/timeline/TransportVolume.tsx +163 -0
  261. package/src/panels/timeline/beatRuler.ts +74 -0
  262. package/src/panels/timeline/curveModel.ts +500 -0
  263. package/src/panels/timeline/duckUnderVoice.ts +68 -0
  264. package/src/panels/timeline/keyframeMenu.ts +138 -0
  265. package/src/panels/timeline/labelWidth.ts +49 -0
  266. package/src/panels/timeline/marquee.ts +155 -0
  267. package/src/panels/timeline/model.ts +1860 -199
  268. package/src/panels/timeline/snap.ts +125 -43
  269. package/src/panels/timeline/staggerPreview.tsx +92 -0
  270. package/src/panels/timeline/takeMeasure.ts +72 -0
  271. package/src/panels/timeline/useLive.ts +48 -0
  272. package/src/panels/timeline/viewport.ts +234 -0
  273. package/src/panels/toolbar/BackChip.tsx +116 -0
  274. package/src/panels/toolbar/CameraViewBar.tsx +118 -49
  275. package/src/panels/toolbar/CanvasBar.tsx +117 -0
  276. package/src/panels/toolbar/InsertButton.tsx +38 -0
  277. package/src/panels/toolbar/IsolationTrail.tsx +156 -0
  278. package/src/panels/toolbar/PanelToggles.tsx +86 -0
  279. package/src/panels/toolbar/ShadingBar.tsx +119 -26
  280. package/src/panels/toolbar/ToolDockBar.tsx +329 -80
  281. package/src/panels/toolbar/ToolFooter.tsx +102 -0
  282. package/src/panels/toolbar/ViewModeBar.tsx +247 -38
  283. package/src/panels/toolbar/WorkPlaneBar.tsx +94 -0
  284. package/src/panels/toolbar/useAddRows.tsx +326 -0
  285. package/src/panels/toolbar/useDismiss.ts +122 -0
  286. package/src/panels/versions/VersionHistoryPanel.tsx +274 -0
  287. package/src/panels/versions/versionModel.ts +103 -0
  288. package/src/panels/virtualWindow.ts +271 -0
  289. package/src/shotTokens.css +151 -60
  290. package/src/stage/FrustumGizmo.tsx +504 -84
  291. package/src/stage/GridPlane.tsx +225 -16
  292. package/src/stage/NodePreviews.tsx +628 -0
  293. package/src/stage/PerfHud.tsx +437 -47
  294. package/src/stage/SplitRenderer.tsx +816 -169
  295. package/src/stage/StageApp.tsx +4274 -486
  296. package/src/stage/StageRootBoundary.tsx +114 -0
  297. package/src/stage/StageTools.tsx +651 -151
  298. package/src/stage/TransformGizmo.tsx +696 -0
  299. package/src/stage/adaptivePresentation.ts +145 -0
  300. package/src/stage/bridgeClient.ts +2522 -41
  301. package/src/stage/exportWorker.ts +9 -0
  302. package/src/stage/feed.ts +305 -14
  303. package/src/stage/fontPreview.ts +176 -0
  304. package/src/stage/frustumGeometry.ts +319 -1
  305. package/src/stage/furnitureTokens.ts +33 -0
  306. package/src/stage/gizmoMath.ts +508 -16
  307. package/src/stage/gpuTimer.ts +276 -0
  308. package/src/stage/instanceModules.ts +194 -33
  309. package/src/stage/interactions/move.ts +24 -5
  310. package/src/stage/isolation.ts +291 -33
  311. package/src/stage/jsSelfProfiler.ts +325 -0
  312. package/src/stage/main.tsx +116 -16
  313. package/src/stage/modalState.ts +222 -23
  314. package/src/stage/moduleEpoch.ts +60 -0
  315. package/src/stage/motionPathStage.ts +279 -0
  316. package/src/stage/motionPreview.ts +74 -0
  317. package/src/stage/overlays/Overlays.tsx +1112 -159
  318. package/src/stage/overlays/Rulers.tsx +495 -0
  319. package/src/stage/panes.ts +159 -10
  320. package/src/stage/project.ts +68 -3
  321. package/src/stage/renderScaleController.ts +730 -0
  322. package/src/stage/rulers.ts +129 -0
  323. package/src/stage/sceneExtent.ts +75 -0
  324. package/src/stage/shading.ts +20 -0
  325. package/src/stage/splineStage.ts +632 -0
  326. package/src/stage/stagePerformanceTelemetry.ts +717 -0
  327. package/src/stage/stageTheme.ts +36 -0
  328. package/src/stage/stageWarmup.ts +11 -0
  329. package/src/stage/textAutoSize.ts +124 -0
  330. package/src/stage/tier1Export.ts +641 -0
  331. package/src/stage/tokenColor.ts +14 -9
  332. package/src/stage/view.ts +56 -9
  333. package/src/stage/workingView.ts +277 -33
  334. package/src/state/accountPrefs.ts +261 -0
  335. package/src/state/agentActions.ts +173 -15
  336. package/src/state/agentActivity.ts +198 -0
  337. package/src/state/agentQuestion.ts +239 -0
  338. package/src/state/bootOpen.ts +42 -0
  339. package/src/state/cameraVerbs.ts +139 -0
  340. package/src/state/clientId.ts +6 -1
  341. package/src/state/comments.ts +1099 -0
  342. package/src/state/context.tsx +19 -1
  343. package/src/state/editorPrefs.ts +220 -0
  344. package/src/state/errorReports.ts +121 -0
  345. package/src/state/fieldWrite.ts +161 -0
  346. package/src/state/fontRecents.ts +70 -0
  347. package/src/state/fonts.ts +656 -0
  348. package/src/state/graphClipboard.ts +414 -0
  349. package/src/state/imageThumbs.ts +216 -0
  350. package/src/state/insert.ts +444 -67
  351. package/src/state/isolationTrail.ts +92 -0
  352. package/src/state/keyMoves.ts +134 -0
  353. package/src/state/keyframeClipboard.ts +177 -0
  354. package/src/state/keymap.ts +1153 -117
  355. package/src/state/layoutPrefs.ts +272 -0
  356. package/src/state/layouts.ts +205 -0
  357. package/src/state/measureMedia.ts +167 -0
  358. package/src/state/menu.ts +2341 -28
  359. package/src/state/motionStamp.ts +7 -0
  360. package/src/state/panelSize.ts +375 -5
  361. package/src/state/pendingChanges.ts +119 -0
  362. package/src/state/playHold.ts +78 -0
  363. package/src/state/playbackPreparation.ts +562 -0
  364. package/src/state/posterCapture.ts +242 -0
  365. package/src/state/presence.ts +254 -0
  366. package/src/state/projectComponents.ts +160 -0
  367. package/src/state/renderEvents.ts +298 -18
  368. package/src/state/runtimeErrors.ts +46 -0
  369. package/src/state/selection.ts +12 -0
  370. package/src/state/shortcuts.ts +1606 -0
  371. package/src/state/sketchGuide.ts +51 -0
  372. package/src/state/splineRefs.ts +87 -0
  373. package/src/state/stageHealth.ts +259 -0
  374. package/src/state/stageWatchdog.ts +47 -0
  375. package/src/state/stillStage.ts +330 -0
  376. package/src/state/stillThumbs.ts +474 -0
  377. package/src/state/store.ts +23591 -2982
  378. package/src/state/storyboardModel.ts +528 -0
  379. package/src/state/sync.ts +1257 -0
  380. package/src/state/syncCache.ts +159 -0
  381. package/src/state/triangles.ts +13 -0
  382. package/src/state/types.ts +1698 -55
  383. package/src/state/unsavedGuard.ts +49 -0
  384. package/src/state/viewMode.ts +200 -0
  385. package/src/state/webmcp.ts +1128 -0
  386. package/src/state/workspace.ts +1147 -0
  387. package/src/styles/assets-tab.css +304 -0
  388. package/src/styles/canvas.css +545 -0
  389. package/src/styles/comments.css +1435 -0
  390. package/src/styles/controls.css +162 -0
  391. package/src/styles/dialogs.css +390 -0
  392. package/src/styles/insert-drawer.css +586 -0
  393. package/src/styles/inspector-board.css +207 -0
  394. package/src/styles/inspector-object.css +486 -0
  395. package/src/styles/inspector-shot.css +252 -0
  396. package/src/styles/inspector.css +360 -0
  397. package/src/styles/left-column.css +1628 -0
  398. package/src/styles/library-preview.css +575 -0
  399. package/src/styles/library.css +512 -0
  400. package/src/styles/modes/code.css +569 -0
  401. package/src/styles/modes/component.css +1561 -0
  402. package/src/styles/modes/material.css +1201 -0
  403. package/src/styles/modes/storyboard.css +518 -0
  404. package/src/styles/share-component.css +49 -0
  405. package/src/styles/shell.css +653 -0
  406. package/src/styles/shot-brief.css +360 -0
  407. package/src/styles/states.css +76 -0
  408. package/src/styles/sync.css +380 -0
  409. package/src/styles/timeline-graph.css +384 -0
  410. package/src/styles/timeline-meters.css +89 -0
  411. package/src/styles/timeline-rows.css +1959 -0
  412. package/src/styles/timeline-sound.css +1003 -0
  413. package/src/styles/timeline.css +754 -0
  414. package/src/styles/tool-footer.css +525 -0
  415. package/src/styles/topbar.css +886 -0
  416. package/src/styles/versions.css +262 -0
  417. package/src/styles.css +72 -2921
  418. package/src/tools.ts +108 -23
  419. package/dist/assets/index-B7notge7.css +0 -1
  420. package/dist/assets/index-BBE6Ta9L.js +0 -52
  421. package/src/panels/files/icons.tsx +0 -118
  422. package/src/panels/header/DocSwitcher.tsx +0 -85
  423. package/src/panels/header/TransportBar.tsx +0 -86
  424. package/src/panels/inspector/animate/BlockTiming.tsx +0 -341
  425. package/src/panels/inspector/animate/DuringBlocks.tsx +0 -85
  426. package/src/panels/inspector/animate/InOutPresets.tsx +0 -57
  427. package/src/panels/inspector/animate/ResolvedChannels.tsx +0 -150
  428. package/src/panels/inspector/animate/useBlocks.ts +0 -43
  429. package/src/panels/material/MaterialPicker.tsx +0 -172
  430. package/src/panels/timeline/SceneStrip.tsx +0 -145
  431. package/src/panels/toolbar/AddMenu.tsx +0 -230
  432. package/src/stage/MoveGizmo.tsx +0 -411
@@ -0,0 +1,23 @@
1
+ import{gl as di,gm as rc,gn as ic,B as M,v as b,aF as sc,ay as ac,q as ue,u as Je,eM as Yn,eL as cc,go as fi,gp as lc,T as uc,x as uo,gq as dc,F as un,aG as hi,gr as Oo,gs as jo,b5 as fc,gt as hc,gu as pc,A as Oe,aZ as gc,gv as mc,aw as yc,gw as xc,gx as wc,gy as $n,fn as vc,aj as bc,ak as Sc}from"./index-BGHQGV5z.js";function fe(e){if(typeof e=="string"||typeof e=="number")return""+e;let t="";if(Array.isArray(e))for(let n=0,o;n<e.length;n++)(o=fe(e[n]))!==""&&(t+=(t&&" ")+o);else for(let n in e)e[n]&&(t+=(t&&" ")+n);return t}var Ec={value:()=>{}};function dn(){for(var e=0,t=arguments.length,n={},o;e<t;++e){if(!(o=arguments[e]+"")||o in n||/[\s.]/.test(o))throw new Error("illegal type: "+o);n[o]=[]}return new Gt(n)}function Gt(e){this._=e}function _c(e,t){return e.trim().split(/^|\s+/).map(function(n){var o="",r=n.indexOf(".");if(r>=0&&(o=n.slice(r+1),n=n.slice(0,r)),n&&!t.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:o}})}Gt.prototype=dn.prototype={constructor:Gt,on:function(e,t){var n=this._,o=_c(e+"",n),r,i=-1,s=o.length;if(arguments.length<2){for(;++i<s;)if((r=(e=o[i]).type)&&(r=Nc(n[r],e.name)))return r;return}if(t!=null&&typeof t!="function")throw new Error("invalid callback: "+t);for(;++i<s;)if(r=(e=o[i]).type)n[r]=Vo(n[r],e.name,t);else if(t==null)for(r in n)n[r]=Vo(n[r],e.name,null);return this},copy:function(){var e={},t=this._;for(var n in t)e[n]=t[n].slice();return new Gt(e)},call:function(e,t){if((r=arguments.length-2)>0)for(var n=new Array(r),o=0,r,i;o<r;++o)n[o]=arguments[o+2];if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(i=this._[e],o=0,r=i.length;o<r;++o)i[o].value.apply(t,n)},apply:function(e,t,n){if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(var o=this._[e],r=0,i=o.length;r<i;++r)o[r].value.apply(t,n)}};function Nc(e,t){for(var n=0,o=e.length,r;n<o;++n)if((r=e[n]).name===t)return r.value}function Vo(e,t,n){for(var o=0,r=e.length;o<r;++o)if(e[o].name===t){e[o]=Ec,e=e.slice(0,o).concat(e.slice(o+1));break}return n!=null&&e.push({name:t,value:n}),e}var Zn="http://www.w3.org/1999/xhtml";const Bo={svg:"http://www.w3.org/2000/svg",xhtml:Zn,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function fn(e){var t=e+="",n=t.indexOf(":");return n>=0&&(t=e.slice(0,n))!=="xmlns"&&(e=e.slice(n+1)),Bo.hasOwnProperty(t)?{space:Bo[t],local:e}:e}function Cc(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===Zn&&t.documentElement.namespaceURI===Zn?t.createElement(e):t.createElementNS(n,e)}}function Mc(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function pi(e){var t=fn(e);return(t.local?Mc:Cc)(t)}function Ic(){}function fo(e){return e==null?Ic:function(){return this.querySelector(e)}}function kc(e){typeof e!="function"&&(e=fo(e));for(var t=this._groups,n=t.length,o=new Array(n),r=0;r<n;++r)for(var i=t[r],s=i.length,a=o[r]=new Array(s),c,l,u=0;u<s;++u)(c=i[u])&&(l=e.call(c,c.__data__,u,i))&&("__data__"in c&&(l.__data__=c.__data__),a[u]=l);return new Se(o,this._parents)}function $c(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function Ac(){return[]}function gi(e){return e==null?Ac:function(){return this.querySelectorAll(e)}}function Pc(e){return function(){return $c(e.apply(this,arguments))}}function Tc(e){typeof e=="function"?e=Pc(e):e=gi(e);for(var t=this._groups,n=t.length,o=[],r=[],i=0;i<n;++i)for(var s=t[i],a=s.length,c,l=0;l<a;++l)(c=s[l])&&(o.push(e.call(c,c.__data__,l,s)),r.push(c));return new Se(o,r)}function mi(e){return function(){return this.matches(e)}}function yi(e){return function(t){return t.matches(e)}}var zc=Array.prototype.find;function Dc(e){return function(){return zc.call(this.children,e)}}function Rc(){return this.firstElementChild}function Hc(e){return this.select(e==null?Rc:Dc(typeof e=="function"?e:yi(e)))}var Lc=Array.prototype.filter;function Oc(){return Array.from(this.children)}function jc(e){return function(){return Lc.call(this.children,e)}}function Vc(e){return this.selectAll(e==null?Oc:jc(typeof e=="function"?e:yi(e)))}function Bc(e){typeof e!="function"&&(e=mi(e));for(var t=this._groups,n=t.length,o=new Array(n),r=0;r<n;++r)for(var i=t[r],s=i.length,a=o[r]=[],c,l=0;l<s;++l)(c=i[l])&&e.call(c,c.__data__,l,i)&&a.push(c);return new Se(o,this._parents)}function xi(e){return new Array(e.length)}function Fc(){return new Se(this._enter||this._groups.map(xi),this._parents)}function Qt(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}Qt.prototype={constructor:Qt,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};function Xc(e){return function(){return e}}function Yc(e,t,n,o,r,i){for(var s=0,a,c=t.length,l=i.length;s<l;++s)(a=t[s])?(a.__data__=i[s],o[s]=a):n[s]=new Qt(e,i[s]);for(;s<c;++s)(a=t[s])&&(r[s]=a)}function Zc(e,t,n,o,r,i,s){var a,c,l=new Map,u=t.length,d=i.length,f=new Array(u),h;for(a=0;a<u;++a)(c=t[a])&&(f[a]=h=s.call(c,c.__data__,a,t)+"",l.has(h)?r[a]=c:l.set(h,c));for(a=0;a<d;++a)h=s.call(e,i[a],a,i)+"",(c=l.get(h))?(o[a]=c,c.__data__=i[a],l.delete(h)):n[a]=new Qt(e,i[a]);for(a=0;a<u;++a)(c=t[a])&&l.get(f[a])===c&&(r[a]=c)}function Gc(e){return e.__data__}function Wc(e,t){if(!arguments.length)return Array.from(this,Gc);var n=t?Zc:Yc,o=this._parents,r=this._groups;typeof e!="function"&&(e=Xc(e));for(var i=r.length,s=new Array(i),a=new Array(i),c=new Array(i),l=0;l<i;++l){var u=o[l],d=r[l],f=d.length,h=qc(e.call(u,u&&u.__data__,l,o)),p=h.length,y=a[l]=new Array(p),w=s[l]=new Array(p),x=c[l]=new Array(f);n(u,d,y,w,x,h,t);for(var E=0,g=0,m,_;E<p;++E)if(m=y[E]){for(E>=g&&(g=E+1);!(_=w[g])&&++g<p;);m._next=_||null}}return s=new Se(s,o),s._enter=a,s._exit=c,s}function qc(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function Uc(){return new Se(this._exit||this._groups.map(xi),this._parents)}function Kc(e,t,n){var o=this.enter(),r=this,i=this.exit();return typeof e=="function"?(o=e(o),o&&(o=o.selection())):o=o.append(e+""),t!=null&&(r=t(r),r&&(r=r.selection())),n==null?i.remove():n(i),o&&r?o.merge(r).order():r}function Qc(e){for(var t=e.selection?e.selection():e,n=this._groups,o=t._groups,r=n.length,i=o.length,s=Math.min(r,i),a=new Array(r),c=0;c<s;++c)for(var l=n[c],u=o[c],d=l.length,f=a[c]=new Array(d),h,p=0;p<d;++p)(h=l[p]||u[p])&&(f[p]=h);for(;c<r;++c)a[c]=n[c];return new Se(a,this._parents)}function Jc(){for(var e=this._groups,t=-1,n=e.length;++t<n;)for(var o=e[t],r=o.length-1,i=o[r],s;--r>=0;)(s=o[r])&&(i&&s.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(s,i),i=s);return this}function el(e){e||(e=tl);function t(d,f){return d&&f?e(d.__data__,f.__data__):!d-!f}for(var n=this._groups,o=n.length,r=new Array(o),i=0;i<o;++i){for(var s=n[i],a=s.length,c=r[i]=new Array(a),l,u=0;u<a;++u)(l=s[u])&&(c[u]=l);c.sort(t)}return new Se(r,this._parents).order()}function tl(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function nl(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function ol(){return Array.from(this)}function rl(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var o=e[t],r=0,i=o.length;r<i;++r){var s=o[r];if(s)return s}return null}function il(){let e=0;for(const t of this)++e;return e}function sl(){return!this.node()}function al(e){for(var t=this._groups,n=0,o=t.length;n<o;++n)for(var r=t[n],i=0,s=r.length,a;i<s;++i)(a=r[i])&&e.call(a,a.__data__,i,r);return this}function cl(e){return function(){this.removeAttribute(e)}}function ll(e){return function(){this.removeAttributeNS(e.space,e.local)}}function ul(e,t){return function(){this.setAttribute(e,t)}}function dl(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function fl(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}}function hl(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}}function pl(e,t){var n=fn(e);if(arguments.length<2){var o=this.node();return n.local?o.getAttributeNS(n.space,n.local):o.getAttribute(n)}return this.each((t==null?n.local?ll:cl:typeof t=="function"?n.local?hl:fl:n.local?dl:ul)(n,t))}function wi(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function gl(e){return function(){this.style.removeProperty(e)}}function ml(e,t,n){return function(){this.style.setProperty(e,t,n)}}function yl(e,t,n){return function(){var o=t.apply(this,arguments);o==null?this.style.removeProperty(e):this.style.setProperty(e,o,n)}}function xl(e,t,n){return arguments.length>1?this.each((t==null?gl:typeof t=="function"?yl:ml)(e,t,n??"")):ct(this.node(),e)}function ct(e,t){return e.style.getPropertyValue(t)||wi(e).getComputedStyle(e,null).getPropertyValue(t)}function wl(e){return function(){delete this[e]}}function vl(e,t){return function(){this[e]=t}}function bl(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function Sl(e,t){return arguments.length>1?this.each((t==null?wl:typeof t=="function"?bl:vl)(e,t)):this.node()[e]}function vi(e){return e.trim().split(/^|\s+/)}function ho(e){return e.classList||new bi(e)}function bi(e){this._node=e,this._names=vi(e.getAttribute("class")||"")}bi.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function Si(e,t){for(var n=ho(e),o=-1,r=t.length;++o<r;)n.add(t[o])}function Ei(e,t){for(var n=ho(e),o=-1,r=t.length;++o<r;)n.remove(t[o])}function El(e){return function(){Si(this,e)}}function _l(e){return function(){Ei(this,e)}}function Nl(e,t){return function(){(t.apply(this,arguments)?Si:Ei)(this,e)}}function Cl(e,t){var n=vi(e+"");if(arguments.length<2){for(var o=ho(this.node()),r=-1,i=n.length;++r<i;)if(!o.contains(n[r]))return!1;return!0}return this.each((typeof t=="function"?Nl:t?El:_l)(n,t))}function Ml(){this.textContent=""}function Il(e){return function(){this.textContent=e}}function kl(e){return function(){var t=e.apply(this,arguments);this.textContent=t??""}}function $l(e){return arguments.length?this.each(e==null?Ml:(typeof e=="function"?kl:Il)(e)):this.node().textContent}function Al(){this.innerHTML=""}function Pl(e){return function(){this.innerHTML=e}}function Tl(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??""}}function zl(e){return arguments.length?this.each(e==null?Al:(typeof e=="function"?Tl:Pl)(e)):this.node().innerHTML}function Dl(){this.nextSibling&&this.parentNode.appendChild(this)}function Rl(){return this.each(Dl)}function Hl(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Ll(){return this.each(Hl)}function Ol(e){var t=typeof e=="function"?e:pi(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function jl(){return null}function Vl(e,t){var n=typeof e=="function"?e:pi(e),o=t==null?jl:typeof t=="function"?t:fo(t);return this.select(function(){return this.insertBefore(n.apply(this,arguments),o.apply(this,arguments)||null)})}function Bl(){var e=this.parentNode;e&&e.removeChild(this)}function Fl(){return this.each(Bl)}function Xl(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function Yl(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function Zl(e){return this.select(e?Yl:Xl)}function Gl(e){return arguments.length?this.property("__data__",e):this.node().__data__}function Wl(e){return function(t){e.call(this,t,this.__data__)}}function ql(e){return e.trim().split(/^|\s+/).map(function(t){var n="",o=t.indexOf(".");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{type:t,name:n}})}function Ul(e){return function(){var t=this.__on;if(t){for(var n=0,o=-1,r=t.length,i;n<r;++n)i=t[n],(!e.type||i.type===e.type)&&i.name===e.name?this.removeEventListener(i.type,i.listener,i.options):t[++o]=i;++o?t.length=o:delete this.__on}}}function Kl(e,t,n){return function(){var o=this.__on,r,i=Wl(t);if(o){for(var s=0,a=o.length;s<a;++s)if((r=o[s]).type===e.type&&r.name===e.name){this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=i,r.options=n),r.value=t;return}}this.addEventListener(e.type,i,n),r={type:e.type,name:e.name,value:t,listener:i,options:n},o?o.push(r):this.__on=[r]}}function Ql(e,t,n){var o=ql(e+""),r,i=o.length,s;if(arguments.length<2){var a=this.node().__on;if(a){for(var c=0,l=a.length,u;c<l;++c)for(r=0,u=a[c];r<i;++r)if((s=o[r]).type===u.type&&s.name===u.name)return u.value}return}for(a=t?Kl:Ul,r=0;r<i;++r)this.each(a(o[r],t,n));return this}function _i(e,t,n){var o=wi(e),r=o.CustomEvent;typeof r=="function"?r=new r(t,n):(r=o.document.createEvent("Event"),n?(r.initEvent(t,n.bubbles,n.cancelable),r.detail=n.detail):r.initEvent(t,!1,!1)),e.dispatchEvent(r)}function Jl(e,t){return function(){return _i(this,e,t)}}function eu(e,t){return function(){return _i(this,e,t.apply(this,arguments))}}function tu(e,t){return this.each((typeof t=="function"?eu:Jl)(e,t))}function*nu(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var o=e[t],r=0,i=o.length,s;r<i;++r)(s=o[r])&&(yield s)}var Ni=[null];function Se(e,t){this._groups=e,this._parents=t}function kt(){return new Se([[document.documentElement]],Ni)}function ou(){return this}Se.prototype=kt.prototype={constructor:Se,select:kc,selectAll:Tc,selectChild:Hc,selectChildren:Vc,filter:Bc,data:Wc,enter:Fc,exit:Uc,join:Kc,merge:Qc,selection:ou,order:Jc,sort:el,call:nl,nodes:ol,node:rl,size:il,empty:sl,each:al,attr:pl,style:xl,property:Sl,classed:Cl,text:$l,html:zl,raise:Rl,lower:Ll,append:Ol,insert:Vl,remove:Fl,clone:Zl,datum:Gl,on:Ql,dispatch:tu,[Symbol.iterator]:nu};function be(e){return typeof e=="string"?new Se([[document.querySelector(e)]],[document.documentElement]):new Se([[e]],Ni)}function ru(e){let t;for(;t=e.sourceEvent;)e=t;return e}function Ee(e,t){if(e=ru(e),t===void 0&&(t=e.currentTarget),t){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var o=n.createSVGPoint();return o.x=e.clientX,o.y=e.clientY,o=o.matrixTransform(t.getScreenCTM().inverse()),[o.x,o.y]}if(t.getBoundingClientRect){var r=t.getBoundingClientRect();return[e.clientX-r.left-t.clientLeft,e.clientY-r.top-t.clientTop]}}return[e.pageX,e.pageY]}const iu={passive:!1},bt={capture:!0,passive:!1};function An(e){e.stopImmediatePropagation()}function st(e){e.preventDefault(),e.stopImmediatePropagation()}function Ci(e){var t=e.document.documentElement,n=be(e).on("dragstart.drag",st,bt);"onselectstart"in t?n.on("selectstart.drag",st,bt):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect="none")}function Mi(e,t){var n=e.document.documentElement,o=be(e).on("dragstart.drag",null);t&&(o.on("click.drag",st,bt),setTimeout(function(){o.on("click.drag",null)},0)),"onselectstart"in n?o.on("selectstart.drag",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}const Rt=e=>()=>e;function Gn(e,{sourceEvent:t,subject:n,target:o,identifier:r,active:i,x:s,y:a,dx:c,dy:l,dispatch:u}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:o,enumerable:!0,configurable:!0},identifier:{value:r,enumerable:!0,configurable:!0},active:{value:i,enumerable:!0,configurable:!0},x:{value:s,enumerable:!0,configurable:!0},y:{value:a,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:l,enumerable:!0,configurable:!0},_:{value:u}})}Gn.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function su(e){return!e.ctrlKey&&!e.button}function au(){return this.parentNode}function cu(e,t){return t??{x:e.x,y:e.y}}function lu(){return navigator.maxTouchPoints||"ontouchstart"in this}function Ii(){var e=su,t=au,n=cu,o=lu,r={},i=dn("start","drag","end"),s=0,a,c,l,u,d=0;function f(m){m.on("mousedown.drag",h).filter(o).on("touchstart.drag",w).on("touchmove.drag",x,iu).on("touchend.drag touchcancel.drag",E).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function h(m,_){if(!(u||!e.call(this,m,_))){var S=g(this,t.call(this,m,_),m,_,"mouse");S&&(be(m.view).on("mousemove.drag",p,bt).on("mouseup.drag",y,bt),Ci(m.view),An(m),l=!1,a=m.clientX,c=m.clientY,S("start",m))}}function p(m){if(st(m),!l){var _=m.clientX-a,S=m.clientY-c;l=_*_+S*S>d}r.mouse("drag",m)}function y(m){be(m.view).on("mousemove.drag mouseup.drag",null),Mi(m.view,l),st(m),r.mouse("end",m)}function w(m,_){if(e.call(this,m,_)){var S=m.changedTouches,N=t.call(this,m,_),$=S.length,A,O;for(A=0;A<$;++A)(O=g(this,N,m,_,S[A].identifier,S[A]))&&(An(m),O("start",m,S[A]))}}function x(m){var _=m.changedTouches,S=_.length,N,$;for(N=0;N<S;++N)($=r[_[N].identifier])&&(st(m),$("drag",m,_[N]))}function E(m){var _=m.changedTouches,S=_.length,N,$;for(u&&clearTimeout(u),u=setTimeout(function(){u=null},500),N=0;N<S;++N)($=r[_[N].identifier])&&(An(m),$("end",m,_[N]))}function g(m,_,S,N,$,A){var O=i.copy(),T=Ee(A||S,_),L,D,v;if((v=n.call(m,new Gn("beforestart",{sourceEvent:S,target:f,identifier:$,active:s,x:T[0],y:T[1],dx:0,dy:0,dispatch:O}),N))!=null)return L=v.x-T[0]||0,D=v.y-T[1]||0,function C(I,k,z){var P=T,j;switch(I){case"start":r[$]=C,j=s++;break;case"end":delete r[$],--s;case"drag":T=Ee(z||k,_),j=s;break}O.call(I,m,new Gn(I,{sourceEvent:k,subject:v,target:f,identifier:$,active:j,x:T[0]+L,y:T[1]+D,dx:T[0]-P[0],dy:T[1]-P[1],dispatch:O}),N)}}return f.filter=function(m){return arguments.length?(e=typeof m=="function"?m:Rt(!!m),f):e},f.container=function(m){return arguments.length?(t=typeof m=="function"?m:Rt(m),f):t},f.subject=function(m){return arguments.length?(n=typeof m=="function"?m:Rt(m),f):n},f.touchable=function(m){return arguments.length?(o=typeof m=="function"?m:Rt(!!m),f):o},f.on=function(){var m=i.on.apply(i,arguments);return m===i?f:m},f.clickDistance=function(m){return arguments.length?(d=(m=+m)*m,f):Math.sqrt(d)},f}function po(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function ki(e,t){var n=Object.create(e.prototype);for(var o in t)n[o]=t[o];return n}function $t(){}var St=.7,Jt=1/St,at="\\s*([+-]?\\d+)\\s*",Et="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Ae="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",uu=/^#([0-9a-f]{3,8})$/,du=new RegExp(`^rgb\\(${at},${at},${at}\\)$`),fu=new RegExp(`^rgb\\(${Ae},${Ae},${Ae}\\)$`),hu=new RegExp(`^rgba\\(${at},${at},${at},${Et}\\)$`),pu=new RegExp(`^rgba\\(${Ae},${Ae},${Ae},${Et}\\)$`),gu=new RegExp(`^hsl\\(${Et},${Ae},${Ae}\\)$`),mu=new RegExp(`^hsla\\(${Et},${Ae},${Ae},${Et}\\)$`),Fo={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};po($t,Ge,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Xo,formatHex:Xo,formatHex8:yu,formatHsl:xu,formatRgb:Yo,toString:Yo});function Xo(){return this.rgb().formatHex()}function yu(){return this.rgb().formatHex8()}function xu(){return $i(this).formatHsl()}function Yo(){return this.rgb().formatRgb()}function Ge(e){var t,n;return e=(e+"").trim().toLowerCase(),(t=uu.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?Zo(t):n===3?new ve(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?Ht(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?Ht(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=du.exec(e))?new ve(t[1],t[2],t[3],1):(t=fu.exec(e))?new ve(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=hu.exec(e))?Ht(t[1],t[2],t[3],t[4]):(t=pu.exec(e))?Ht(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=gu.exec(e))?qo(t[1],t[2]/100,t[3]/100,1):(t=mu.exec(e))?qo(t[1],t[2]/100,t[3]/100,t[4]):Fo.hasOwnProperty(e)?Zo(Fo[e]):e==="transparent"?new ve(NaN,NaN,NaN,0):null}function Zo(e){return new ve(e>>16&255,e>>8&255,e&255,1)}function Ht(e,t,n,o){return o<=0&&(e=t=n=NaN),new ve(e,t,n,o)}function wu(e){return e instanceof $t||(e=Ge(e)),e?(e=e.rgb(),new ve(e.r,e.g,e.b,e.opacity)):new ve}function Wn(e,t,n,o){return arguments.length===1?wu(e):new ve(e,t,n,o??1)}function ve(e,t,n,o){this.r=+e,this.g=+t,this.b=+n,this.opacity=+o}po(ve,Wn,ki($t,{brighter(e){return e=e==null?Jt:Math.pow(Jt,e),new ve(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?St:Math.pow(St,e),new ve(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new ve(Ye(this.r),Ye(this.g),Ye(this.b),en(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Go,formatHex:Go,formatHex8:vu,formatRgb:Wo,toString:Wo}));function Go(){return`#${Xe(this.r)}${Xe(this.g)}${Xe(this.b)}`}function vu(){return`#${Xe(this.r)}${Xe(this.g)}${Xe(this.b)}${Xe((isNaN(this.opacity)?1:this.opacity)*255)}`}function Wo(){const e=en(this.opacity);return`${e===1?"rgb(":"rgba("}${Ye(this.r)}, ${Ye(this.g)}, ${Ye(this.b)}${e===1?")":`, ${e})`}`}function en(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Ye(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Xe(e){return e=Ye(e),(e<16?"0":"")+e.toString(16)}function qo(e,t,n,o){return o<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new _e(e,t,n,o)}function $i(e){if(e instanceof _e)return new _e(e.h,e.s,e.l,e.opacity);if(e instanceof $t||(e=Ge(e)),!e)return new _e;if(e instanceof _e)return e;e=e.rgb();var t=e.r/255,n=e.g/255,o=e.b/255,r=Math.min(t,n,o),i=Math.max(t,n,o),s=NaN,a=i-r,c=(i+r)/2;return a?(t===i?s=(n-o)/a+(n<o)*6:n===i?s=(o-t)/a+2:s=(t-n)/a+4,a/=c<.5?i+r:2-i-r,s*=60):a=c>0&&c<1?0:s,new _e(s,a,c,e.opacity)}function bu(e,t,n,o){return arguments.length===1?$i(e):new _e(e,t,n,o??1)}function _e(e,t,n,o){this.h=+e,this.s=+t,this.l=+n,this.opacity=+o}po(_e,bu,ki($t,{brighter(e){return e=e==null?Jt:Math.pow(Jt,e),new _e(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?St:Math.pow(St,e),new _e(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,o=n+(n<.5?n:1-n)*t,r=2*n-o;return new ve(Pn(e>=240?e-240:e+120,r,o),Pn(e,r,o),Pn(e<120?e+240:e-120,r,o),this.opacity)},clamp(){return new _e(Uo(this.h),Lt(this.s),Lt(this.l),en(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=en(this.opacity);return`${e===1?"hsl(":"hsla("}${Uo(this.h)}, ${Lt(this.s)*100}%, ${Lt(this.l)*100}%${e===1?")":`, ${e})`}`}}));function Uo(e){return e=(e||0)%360,e<0?e+360:e}function Lt(e){return Math.max(0,Math.min(1,e||0))}function Pn(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}const go=e=>()=>e;function Su(e,t){return function(n){return e+n*t}}function Eu(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(o){return Math.pow(e+o*t,n)}}function _u(e){return(e=+e)==1?Ai:function(t,n){return n-t?Eu(t,n,e):go(isNaN(t)?n:t)}}function Ai(e,t){var n=t-e;return n?Su(e,n):go(isNaN(e)?t:e)}const tn=(function e(t){var n=_u(t);function o(r,i){var s=n((r=Wn(r)).r,(i=Wn(i)).r),a=n(r.g,i.g),c=n(r.b,i.b),l=Ai(r.opacity,i.opacity);return function(u){return r.r=s(u),r.g=a(u),r.b=c(u),r.opacity=l(u),r+""}}return o.gamma=e,o})(1);function Nu(e,t){t||(t=[]);var n=e?Math.min(t.length,e.length):0,o=t.slice(),r;return function(i){for(r=0;r<n;++r)o[r]=e[r]*(1-i)+t[r]*i;return o}}function Cu(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Mu(e,t){var n=t?t.length:0,o=e?Math.min(n,e.length):0,r=new Array(o),i=new Array(n),s;for(s=0;s<o;++s)r[s]=wt(e[s],t[s]);for(;s<n;++s)i[s]=t[s];return function(a){for(s=0;s<o;++s)i[s]=r[s](a);return i}}function Iu(e,t){var n=new Date;return e=+e,t=+t,function(o){return n.setTime(e*(1-o)+t*o),n}}function $e(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function ku(e,t){var n={},o={},r;(e===null||typeof e!="object")&&(e={}),(t===null||typeof t!="object")&&(t={});for(r in t)r in e?n[r]=wt(e[r],t[r]):o[r]=t[r];return function(i){for(r in n)o[r]=n[r](i);return o}}var qn=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Tn=new RegExp(qn.source,"g");function $u(e){return function(){return e}}function Au(e){return function(t){return e(t)+""}}function Pi(e,t){var n=qn.lastIndex=Tn.lastIndex=0,o,r,i,s=-1,a=[],c=[];for(e=e+"",t=t+"";(o=qn.exec(e))&&(r=Tn.exec(t));)(i=r.index)>n&&(i=t.slice(n,i),a[s]?a[s]+=i:a[++s]=i),(o=o[0])===(r=r[0])?a[s]?a[s]+=r:a[++s]=r:(a[++s]=null,c.push({i:s,x:$e(o,r)})),n=Tn.lastIndex;return n<t.length&&(i=t.slice(n),a[s]?a[s]+=i:a[++s]=i),a.length<2?c[0]?Au(c[0].x):$u(t):(t=c.length,function(l){for(var u=0,d;u<t;++u)a[(d=c[u]).i]=d.x(l);return a.join("")})}function wt(e,t){var n=typeof t,o;return t==null||n==="boolean"?go(t):(n==="number"?$e:n==="string"?(o=Ge(t))?(t=o,tn):Pi:t instanceof Ge?tn:t instanceof Date?Iu:Cu(t)?Nu:Array.isArray(t)?Mu:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?ku:$e)(e,t)}var Ko=180/Math.PI,Un={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Ti(e,t,n,o,r,i){var s,a,c;return(s=Math.sqrt(e*e+t*t))&&(e/=s,t/=s),(c=e*n+t*o)&&(n-=e*c,o-=t*c),(a=Math.sqrt(n*n+o*o))&&(n/=a,o/=a,c/=a),e*o<t*n&&(e=-e,t=-t,c=-c,s=-s),{translateX:r,translateY:i,rotate:Math.atan2(t,e)*Ko,skewX:Math.atan(c)*Ko,scaleX:s,scaleY:a}}var Ot;function Pu(e){const t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?Un:Ti(t.a,t.b,t.c,t.d,t.e,t.f)}function Tu(e){return e==null||(Ot||(Ot=document.createElementNS("http://www.w3.org/2000/svg","g")),Ot.setAttribute("transform",e),!(e=Ot.transform.baseVal.consolidate()))?Un:(e=e.matrix,Ti(e.a,e.b,e.c,e.d,e.e,e.f))}function zi(e,t,n,o){function r(l){return l.length?l.pop()+" ":""}function i(l,u,d,f,h,p){if(l!==d||u!==f){var y=h.push("translate(",null,t,null,n);p.push({i:y-4,x:$e(l,d)},{i:y-2,x:$e(u,f)})}else(d||f)&&h.push("translate("+d+t+f+n)}function s(l,u,d,f){l!==u?(l-u>180?u+=360:u-l>180&&(l+=360),f.push({i:d.push(r(d)+"rotate(",null,o)-2,x:$e(l,u)})):u&&d.push(r(d)+"rotate("+u+o)}function a(l,u,d,f){l!==u?f.push({i:d.push(r(d)+"skewX(",null,o)-2,x:$e(l,u)}):u&&d.push(r(d)+"skewX("+u+o)}function c(l,u,d,f,h,p){if(l!==d||u!==f){var y=h.push(r(h)+"scale(",null,",",null,")");p.push({i:y-4,x:$e(l,d)},{i:y-2,x:$e(u,f)})}else(d!==1||f!==1)&&h.push(r(h)+"scale("+d+","+f+")")}return function(l,u){var d=[],f=[];return l=e(l),u=e(u),i(l.translateX,l.translateY,u.translateX,u.translateY,d,f),s(l.rotate,u.rotate,d,f),a(l.skewX,u.skewX,d,f),c(l.scaleX,l.scaleY,u.scaleX,u.scaleY,d,f),l=u=null,function(h){for(var p=-1,y=f.length,w;++p<y;)d[(w=f[p]).i]=w.x(h);return d.join("")}}}var zu=zi(Pu,"px, ","px)","deg)"),Du=zi(Tu,", ",")",")"),Ru=1e-12;function Qo(e){return((e=Math.exp(e))+1/e)/2}function Hu(e){return((e=Math.exp(e))-1/e)/2}function Lu(e){return((e=Math.exp(2*e))-1)/(e+1)}const Wt=(function e(t,n,o){function r(i,s){var a=i[0],c=i[1],l=i[2],u=s[0],d=s[1],f=s[2],h=u-a,p=d-c,y=h*h+p*p,w,x;if(y<Ru)x=Math.log(f/l)/t,w=function(N){return[a+N*h,c+N*p,l*Math.exp(t*N*x)]};else{var E=Math.sqrt(y),g=(f*f-l*l+o*y)/(2*l*n*E),m=(f*f-l*l-o*y)/(2*f*n*E),_=Math.log(Math.sqrt(g*g+1)-g),S=Math.log(Math.sqrt(m*m+1)-m);x=(S-_)/t,w=function(N){var $=N*x,A=Qo(_),O=l/(n*E)*(A*Lu(t*$+_)-Hu(_));return[a+O*h,c+O*p,l*A/Qo(t*$+_)]}}return w.duration=x*1e3*t/Math.SQRT2,w}return r.rho=function(i){var s=Math.max(.001,+i),a=s*s,c=a*a;return e(s,a,c)},r})(Math.SQRT2,2,4);var lt=0,yt=0,gt=0,Di=1e3,nn,xt,on=0,We=0,hn=0,_t=typeof performance=="object"&&performance.now?performance:Date,Ri=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function mo(){return We||(Ri(Ou),We=_t.now()+hn)}function Ou(){We=0}function rn(){this._call=this._time=this._next=null}rn.prototype=Hi.prototype={constructor:rn,restart:function(e,t,n){if(typeof e!="function")throw new TypeError("callback is not a function");n=(n==null?mo():+n)+(t==null?0:+t),!this._next&&xt!==this&&(xt?xt._next=this:nn=this,xt=this),this._call=e,this._time=n,Kn()},stop:function(){this._call&&(this._call=null,this._time=1/0,Kn())}};function Hi(e,t,n){var o=new rn;return o.restart(e,t,n),o}function ju(){mo(),++lt;for(var e=nn,t;e;)(t=We-e._time)>=0&&e._call.call(void 0,t),e=e._next;--lt}function Jo(){We=(on=_t.now())+hn,lt=yt=0;try{ju()}finally{lt=0,Bu(),We=0}}function Vu(){var e=_t.now(),t=e-on;t>Di&&(hn-=t,on=e)}function Bu(){for(var e,t=nn,n,o=1/0;t;)t._call?(o>t._time&&(o=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:nn=n);xt=e,Kn(o)}function Kn(e){if(!lt){yt&&(yt=clearTimeout(yt));var t=e-We;t>24?(e<1/0&&(yt=setTimeout(Jo,e-_t.now()-hn)),gt&&(gt=clearInterval(gt))):(gt||(on=_t.now(),gt=setInterval(Vu,Di)),lt=1,Ri(Jo))}}function er(e,t,n){var o=new rn;return t=t==null?0:+t,o.restart(r=>{o.stop(),e(r+t)},t,n),o}var Fu=dn("start","end","cancel","interrupt"),Xu=[],Li=0,tr=1,Qn=2,qt=3,nr=4,Jn=5,Ut=6;function pn(e,t,n,o,r,i){var s=e.__transition;if(!s)e.__transition={};else if(n in s)return;Yu(e,n,{name:t,index:o,group:r,on:Fu,tween:Xu,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:Li})}function yo(e,t){var n=Ie(e,t);if(n.state>Li)throw new Error("too late; already scheduled");return n}function Pe(e,t){var n=Ie(e,t);if(n.state>qt)throw new Error("too late; already running");return n}function Ie(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("transition not found");return n}function Yu(e,t,n){var o=e.__transition,r;o[t]=n,n.timer=Hi(i,0,n.time);function i(l){n.state=tr,n.timer.restart(s,n.delay,n.time),n.delay<=l&&s(l-n.delay)}function s(l){var u,d,f,h;if(n.state!==tr)return c();for(u in o)if(h=o[u],h.name===n.name){if(h.state===qt)return er(s);h.state===nr?(h.state=Ut,h.timer.stop(),h.on.call("interrupt",e,e.__data__,h.index,h.group),delete o[u]):+u<t&&(h.state=Ut,h.timer.stop(),h.on.call("cancel",e,e.__data__,h.index,h.group),delete o[u])}if(er(function(){n.state===qt&&(n.state=nr,n.timer.restart(a,n.delay,n.time),a(l))}),n.state=Qn,n.on.call("start",e,e.__data__,n.index,n.group),n.state===Qn){for(n.state=qt,r=new Array(f=n.tween.length),u=0,d=-1;u<f;++u)(h=n.tween[u].value.call(e,e.__data__,n.index,n.group))&&(r[++d]=h);r.length=d+1}}function a(l){for(var u=l<n.duration?n.ease.call(null,l/n.duration):(n.timer.restart(c),n.state=Jn,1),d=-1,f=r.length;++d<f;)r[d].call(e,u);n.state===Jn&&(n.on.call("end",e,e.__data__,n.index,n.group),c())}function c(){n.state=Ut,n.timer.stop(),delete o[t];for(var l in o)return;delete e.__transition}}function Kt(e,t){var n=e.__transition,o,r,i=!0,s;if(n){t=t==null?null:t+"";for(s in n){if((o=n[s]).name!==t){i=!1;continue}r=o.state>Qn&&o.state<Jn,o.state=Ut,o.timer.stop(),o.on.call(r?"interrupt":"cancel",e,e.__data__,o.index,o.group),delete n[s]}i&&delete e.__transition}}function Zu(e){return this.each(function(){Kt(this,e)})}function Gu(e,t){var n,o;return function(){var r=Pe(this,e),i=r.tween;if(i!==n){o=n=i;for(var s=0,a=o.length;s<a;++s)if(o[s].name===t){o=o.slice(),o.splice(s,1);break}}r.tween=o}}function Wu(e,t,n){var o,r;if(typeof n!="function")throw new Error;return function(){var i=Pe(this,e),s=i.tween;if(s!==o){r=(o=s).slice();for(var a={name:t,value:n},c=0,l=r.length;c<l;++c)if(r[c].name===t){r[c]=a;break}c===l&&r.push(a)}i.tween=r}}function qu(e,t){var n=this._id;if(e+="",arguments.length<2){for(var o=Ie(this.node(),n).tween,r=0,i=o.length,s;r<i;++r)if((s=o[r]).name===e)return s.value;return null}return this.each((t==null?Gu:Wu)(n,e,t))}function xo(e,t,n){var o=e._id;return e.each(function(){var r=Pe(this,o);(r.value||(r.value={}))[t]=n.apply(this,arguments)}),function(r){return Ie(r,o).value[t]}}function Oi(e,t){var n;return(typeof t=="number"?$e:t instanceof Ge?tn:(n=Ge(t))?(t=n,tn):Pi)(e,t)}function Uu(e){return function(){this.removeAttribute(e)}}function Ku(e){return function(){this.removeAttributeNS(e.space,e.local)}}function Qu(e,t,n){var o,r=n+"",i;return function(){var s=this.getAttribute(e);return s===r?null:s===o?i:i=t(o=s,n)}}function Ju(e,t,n){var o,r=n+"",i;return function(){var s=this.getAttributeNS(e.space,e.local);return s===r?null:s===o?i:i=t(o=s,n)}}function ed(e,t,n){var o,r,i;return function(){var s,a=n(this),c;return a==null?void this.removeAttribute(e):(s=this.getAttribute(e),c=a+"",s===c?null:s===o&&c===r?i:(r=c,i=t(o=s,a)))}}function td(e,t,n){var o,r,i;return function(){var s,a=n(this),c;return a==null?void this.removeAttributeNS(e.space,e.local):(s=this.getAttributeNS(e.space,e.local),c=a+"",s===c?null:s===o&&c===r?i:(r=c,i=t(o=s,a)))}}function nd(e,t){var n=fn(e),o=n==="transform"?Du:Oi;return this.attrTween(e,typeof t=="function"?(n.local?td:ed)(n,o,xo(this,"attr."+e,t)):t==null?(n.local?Ku:Uu)(n):(n.local?Ju:Qu)(n,o,t))}function od(e,t){return function(n){this.setAttribute(e,t.call(this,n))}}function rd(e,t){return function(n){this.setAttributeNS(e.space,e.local,t.call(this,n))}}function id(e,t){var n,o;function r(){var i=t.apply(this,arguments);return i!==o&&(n=(o=i)&&rd(e,i)),n}return r._value=t,r}function sd(e,t){var n,o;function r(){var i=t.apply(this,arguments);return i!==o&&(n=(o=i)&&od(e,i)),n}return r._value=t,r}function ad(e,t){var n="attr."+e;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!="function")throw new Error;var o=fn(e);return this.tween(n,(o.local?id:sd)(o,t))}function cd(e,t){return function(){yo(this,e).delay=+t.apply(this,arguments)}}function ld(e,t){return t=+t,function(){yo(this,e).delay=t}}function ud(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?cd:ld)(t,e)):Ie(this.node(),t).delay}function dd(e,t){return function(){Pe(this,e).duration=+t.apply(this,arguments)}}function fd(e,t){return t=+t,function(){Pe(this,e).duration=t}}function hd(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?dd:fd)(t,e)):Ie(this.node(),t).duration}function pd(e,t){if(typeof t!="function")throw new Error;return function(){Pe(this,e).ease=t}}function gd(e){var t=this._id;return arguments.length?this.each(pd(t,e)):Ie(this.node(),t).ease}function md(e,t){return function(){var n=t.apply(this,arguments);if(typeof n!="function")throw new Error;Pe(this,e).ease=n}}function yd(e){if(typeof e!="function")throw new Error;return this.each(md(this._id,e))}function xd(e){typeof e!="function"&&(e=mi(e));for(var t=this._groups,n=t.length,o=new Array(n),r=0;r<n;++r)for(var i=t[r],s=i.length,a=o[r]=[],c,l=0;l<s;++l)(c=i[l])&&e.call(c,c.__data__,l,i)&&a.push(c);return new Re(o,this._parents,this._name,this._id)}function wd(e){if(e._id!==this._id)throw new Error;for(var t=this._groups,n=e._groups,o=t.length,r=n.length,i=Math.min(o,r),s=new Array(o),a=0;a<i;++a)for(var c=t[a],l=n[a],u=c.length,d=s[a]=new Array(u),f,h=0;h<u;++h)(f=c[h]||l[h])&&(d[h]=f);for(;a<o;++a)s[a]=t[a];return new Re(s,this._parents,this._name,this._id)}function vd(e){return(e+"").trim().split(/^|\s+/).every(function(t){var n=t.indexOf(".");return n>=0&&(t=t.slice(0,n)),!t||t==="start"})}function bd(e,t,n){var o,r,i=vd(t)?yo:Pe;return function(){var s=i(this,e),a=s.on;a!==o&&(r=(o=a).copy()).on(t,n),s.on=r}}function Sd(e,t){var n=this._id;return arguments.length<2?Ie(this.node(),n).on.on(e):this.each(bd(n,e,t))}function Ed(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function _d(){return this.on("end.remove",Ed(this._id))}function Nd(e){var t=this._name,n=this._id;typeof e!="function"&&(e=fo(e));for(var o=this._groups,r=o.length,i=new Array(r),s=0;s<r;++s)for(var a=o[s],c=a.length,l=i[s]=new Array(c),u,d,f=0;f<c;++f)(u=a[f])&&(d=e.call(u,u.__data__,f,a))&&("__data__"in u&&(d.__data__=u.__data__),l[f]=d,pn(l[f],t,n,f,l,Ie(u,n)));return new Re(i,this._parents,t,n)}function Cd(e){var t=this._name,n=this._id;typeof e!="function"&&(e=gi(e));for(var o=this._groups,r=o.length,i=[],s=[],a=0;a<r;++a)for(var c=o[a],l=c.length,u,d=0;d<l;++d)if(u=c[d]){for(var f=e.call(u,u.__data__,d,c),h,p=Ie(u,n),y=0,w=f.length;y<w;++y)(h=f[y])&&pn(h,t,n,y,f,p);i.push(f),s.push(u)}return new Re(i,s,t,n)}var Md=kt.prototype.constructor;function Id(){return new Md(this._groups,this._parents)}function kd(e,t){var n,o,r;return function(){var i=ct(this,e),s=(this.style.removeProperty(e),ct(this,e));return i===s?null:i===n&&s===o?r:r=t(n=i,o=s)}}function ji(e){return function(){this.style.removeProperty(e)}}function $d(e,t,n){var o,r=n+"",i;return function(){var s=ct(this,e);return s===r?null:s===o?i:i=t(o=s,n)}}function Ad(e,t,n){var o,r,i;return function(){var s=ct(this,e),a=n(this),c=a+"";return a==null&&(c=a=(this.style.removeProperty(e),ct(this,e))),s===c?null:s===o&&c===r?i:(r=c,i=t(o=s,a))}}function Pd(e,t){var n,o,r,i="style."+t,s="end."+i,a;return function(){var c=Pe(this,e),l=c.on,u=c.value[i]==null?a||(a=ji(t)):void 0;(l!==n||r!==u)&&(o=(n=l).copy()).on(s,r=u),c.on=o}}function Td(e,t,n){var o=(e+="")=="transform"?zu:Oi;return t==null?this.styleTween(e,kd(e,o)).on("end.style."+e,ji(e)):typeof t=="function"?this.styleTween(e,Ad(e,o,xo(this,"style."+e,t))).each(Pd(this._id,e)):this.styleTween(e,$d(e,o,t),n).on("end.style."+e,null)}function zd(e,t,n){return function(o){this.style.setProperty(e,t.call(this,o),n)}}function Dd(e,t,n){var o,r;function i(){var s=t.apply(this,arguments);return s!==r&&(o=(r=s)&&zd(e,s,n)),o}return i._value=t,i}function Rd(e,t,n){var o="style."+(e+="");if(arguments.length<2)return(o=this.tween(o))&&o._value;if(t==null)return this.tween(o,null);if(typeof t!="function")throw new Error;return this.tween(o,Dd(e,t,n??""))}function Hd(e){return function(){this.textContent=e}}function Ld(e){return function(){var t=e(this);this.textContent=t??""}}function Od(e){return this.tween("text",typeof e=="function"?Ld(xo(this,"text",e)):Hd(e==null?"":e+""))}function jd(e){return function(t){this.textContent=e.call(this,t)}}function Vd(e){var t,n;function o(){var r=e.apply(this,arguments);return r!==n&&(t=(n=r)&&jd(r)),t}return o._value=e,o}function Bd(e){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!="function")throw new Error;return this.tween(t,Vd(e))}function Fd(){for(var e=this._name,t=this._id,n=Vi(),o=this._groups,r=o.length,i=0;i<r;++i)for(var s=o[i],a=s.length,c,l=0;l<a;++l)if(c=s[l]){var u=Ie(c,t);pn(c,e,n,l,s,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new Re(o,this._parents,e,n)}function Xd(){var e,t,n=this,o=n._id,r=n.size();return new Promise(function(i,s){var a={value:s},c={value:function(){--r===0&&i()}};n.each(function(){var l=Pe(this,o),u=l.on;u!==e&&(t=(e=u).copy(),t._.cancel.push(a),t._.interrupt.push(a),t._.end.push(c)),l.on=t}),r===0&&i()})}var Yd=0;function Re(e,t,n,o){this._groups=e,this._parents=t,this._name=n,this._id=o}function Vi(){return++Yd}var ze=kt.prototype;Re.prototype={constructor:Re,select:Nd,selectAll:Cd,selectChild:ze.selectChild,selectChildren:ze.selectChildren,filter:xd,merge:wd,selection:Id,transition:Fd,call:ze.call,nodes:ze.nodes,node:ze.node,size:ze.size,empty:ze.empty,each:ze.each,on:Sd,attr:nd,attrTween:ad,style:Td,styleTween:Rd,text:Od,textTween:Bd,remove:_d,tween:qu,delay:ud,duration:hd,ease:gd,easeVarying:yd,end:Xd,[Symbol.iterator]:ze[Symbol.iterator]};function Zd(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var Gd={time:null,delay:0,duration:250,ease:Zd};function Wd(e,t){for(var n;!(n=e.__transition)||!(n=n[t]);)if(!(e=e.parentNode))throw new Error(`transition ${t} not found`);return n}function qd(e){var t,n;e instanceof Re?(t=e._id,e=e._name):(t=Vi(),(n=Gd).time=mo(),e=e==null?null:e+"");for(var o=this._groups,r=o.length,i=0;i<r;++i)for(var s=o[i],a=s.length,c,l=0;l<a;++l)(c=s[l])&&pn(c,e,t,l,s,n||Wd(c,t));return new Re(o,this._parents,e,t)}kt.prototype.interrupt=Zu;kt.prototype.transition=qd;const jt=e=>()=>e;function Ud(e,{sourceEvent:t,target:n,transform:o,dispatch:r}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:o,enumerable:!0,configurable:!0},_:{value:r}})}function De(e,t,n){this.k=e,this.x=t,this.y=n}De.prototype={constructor:De,scale:function(e){return e===1?this:new De(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new De(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var gn=new De(1,0,0);Bi.prototype=De.prototype;function Bi(e){for(;!e.__zoom;)if(!(e=e.parentNode))return gn;return e.__zoom}function zn(e){e.stopImmediatePropagation()}function mt(e){e.preventDefault(),e.stopImmediatePropagation()}function Kd(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function Qd(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function or(){return this.__zoom||gn}function Jd(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function ef(){return navigator.maxTouchPoints||"ontouchstart"in this}function tf(e,t,n){var o=e.invertX(t[0][0])-n[0][0],r=e.invertX(t[1][0])-n[1][0],i=e.invertY(t[0][1])-n[0][1],s=e.invertY(t[1][1])-n[1][1];return e.translate(r>o?(o+r)/2:Math.min(0,o)||Math.max(0,r),s>i?(i+s)/2:Math.min(0,i)||Math.max(0,s))}function Fi(){var e=Kd,t=Qd,n=tf,o=Jd,r=ef,i=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],a=250,c=Wt,l=dn("start","zoom","end"),u,d,f,h=500,p=150,y=0,w=10;function x(v){v.property("__zoom",or).on("wheel.zoom",$,{passive:!1}).on("mousedown.zoom",A).on("dblclick.zoom",O).filter(r).on("touchstart.zoom",T).on("touchmove.zoom",L).on("touchend.zoom touchcancel.zoom",D).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}x.transform=function(v,C,I,k){var z=v.selection?v.selection():v;z.property("__zoom",or),v!==z?_(v,C,I,k):z.interrupt().each(function(){S(this,arguments).event(k).start().zoom(null,typeof C=="function"?C.apply(this,arguments):C).end()})},x.scaleBy=function(v,C,I,k){x.scaleTo(v,function(){var z=this.__zoom.k,P=typeof C=="function"?C.apply(this,arguments):C;return z*P},I,k)},x.scaleTo=function(v,C,I,k){x.transform(v,function(){var z=t.apply(this,arguments),P=this.__zoom,j=I==null?m(z):typeof I=="function"?I.apply(this,arguments):I,V=P.invert(j),B=typeof C=="function"?C.apply(this,arguments):C;return n(g(E(P,B),j,V),z,s)},I,k)},x.translateBy=function(v,C,I,k){x.transform(v,function(){return n(this.__zoom.translate(typeof C=="function"?C.apply(this,arguments):C,typeof I=="function"?I.apply(this,arguments):I),t.apply(this,arguments),s)},null,k)},x.translateTo=function(v,C,I,k,z){x.transform(v,function(){var P=t.apply(this,arguments),j=this.__zoom,V=k==null?m(P):typeof k=="function"?k.apply(this,arguments):k;return n(gn.translate(V[0],V[1]).scale(j.k).translate(typeof C=="function"?-C.apply(this,arguments):-C,typeof I=="function"?-I.apply(this,arguments):-I),P,s)},k,z)};function E(v,C){return C=Math.max(i[0],Math.min(i[1],C)),C===v.k?v:new De(C,v.x,v.y)}function g(v,C,I){var k=C[0]-I[0]*v.k,z=C[1]-I[1]*v.k;return k===v.x&&z===v.y?v:new De(v.k,k,z)}function m(v){return[(+v[0][0]+ +v[1][0])/2,(+v[0][1]+ +v[1][1])/2]}function _(v,C,I,k){v.on("start.zoom",function(){S(this,arguments).event(k).start()}).on("interrupt.zoom end.zoom",function(){S(this,arguments).event(k).end()}).tween("zoom",function(){var z=this,P=arguments,j=S(z,P).event(k),V=t.apply(z,P),B=I==null?m(V):typeof I=="function"?I.apply(z,P):I,Z=Math.max(V[1][0]-V[0][0],V[1][1]-V[0][1]),Y=z.__zoom,X=typeof C=="function"?C.apply(z,P):C,K=c(Y.invert(B).concat(Z/Y.k),X.invert(B).concat(Z/X.k));return function(U){if(U===1)U=X;else{var H=K(U),G=Z/H[2];U=new De(G,B[0]-H[0]*G,B[1]-H[1]*G)}j.zoom(null,U)}})}function S(v,C,I){return!I&&v.__zooming||new N(v,C)}function N(v,C){this.that=v,this.args=C,this.active=0,this.sourceEvent=null,this.extent=t.apply(v,C),this.taps=0}N.prototype={event:function(v){return v&&(this.sourceEvent=v),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(v,C){return this.mouse&&v!=="mouse"&&(this.mouse[1]=C.invert(this.mouse[0])),this.touch0&&v!=="touch"&&(this.touch0[1]=C.invert(this.touch0[0])),this.touch1&&v!=="touch"&&(this.touch1[1]=C.invert(this.touch1[0])),this.that.__zoom=C,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(v){var C=be(this.that).datum();l.call(v,this.that,new Ud(v,{sourceEvent:this.sourceEvent,target:x,transform:this.that.__zoom,dispatch:l}),C)}};function $(v,...C){if(!e.apply(this,arguments))return;var I=S(this,C).event(v),k=this.__zoom,z=Math.max(i[0],Math.min(i[1],k.k*Math.pow(2,o.apply(this,arguments)))),P=Ee(v);if(I.wheel)(I.mouse[0][0]!==P[0]||I.mouse[0][1]!==P[1])&&(I.mouse[1]=k.invert(I.mouse[0]=P)),clearTimeout(I.wheel);else{if(k.k===z)return;I.mouse=[P,k.invert(P)],Kt(this),I.start()}mt(v),I.wheel=setTimeout(j,p),I.zoom("mouse",n(g(E(k,z),I.mouse[0],I.mouse[1]),I.extent,s));function j(){I.wheel=null,I.end()}}function A(v,...C){if(f||!e.apply(this,arguments))return;var I=v.currentTarget,k=S(this,C,!0).event(v),z=be(v.view).on("mousemove.zoom",B,!0).on("mouseup.zoom",Z,!0),P=Ee(v,I),j=v.clientX,V=v.clientY;Ci(v.view),zn(v),k.mouse=[P,this.__zoom.invert(P)],Kt(this),k.start();function B(Y){if(mt(Y),!k.moved){var X=Y.clientX-j,K=Y.clientY-V;k.moved=X*X+K*K>y}k.event(Y).zoom("mouse",n(g(k.that.__zoom,k.mouse[0]=Ee(Y,I),k.mouse[1]),k.extent,s))}function Z(Y){z.on("mousemove.zoom mouseup.zoom",null),Mi(Y.view,k.moved),mt(Y),k.event(Y).end()}}function O(v,...C){if(e.apply(this,arguments)){var I=this.__zoom,k=Ee(v.changedTouches?v.changedTouches[0]:v,this),z=I.invert(k),P=I.k*(v.shiftKey?.5:2),j=n(g(E(I,P),k,z),t.apply(this,C),s);mt(v),a>0?be(this).transition().duration(a).call(_,j,k,v):be(this).call(x.transform,j,k,v)}}function T(v,...C){if(e.apply(this,arguments)){var I=v.touches,k=I.length,z=S(this,C,v.changedTouches.length===k).event(v),P,j,V,B;for(zn(v),j=0;j<k;++j)V=I[j],B=Ee(V,this),B=[B,this.__zoom.invert(B),V.identifier],z.touch0?!z.touch1&&z.touch0[2]!==B[2]&&(z.touch1=B,z.taps=0):(z.touch0=B,P=!0,z.taps=1+!!u);u&&(u=clearTimeout(u)),P&&(z.taps<2&&(d=B[0],u=setTimeout(function(){u=null},h)),Kt(this),z.start())}}function L(v,...C){if(this.__zooming){var I=S(this,C).event(v),k=v.changedTouches,z=k.length,P,j,V,B;for(mt(v),P=0;P<z;++P)j=k[P],V=Ee(j,this),I.touch0&&I.touch0[2]===j.identifier?I.touch0[0]=V:I.touch1&&I.touch1[2]===j.identifier&&(I.touch1[0]=V);if(j=I.that.__zoom,I.touch1){var Z=I.touch0[0],Y=I.touch0[1],X=I.touch1[0],K=I.touch1[1],U=(U=X[0]-Z[0])*U+(U=X[1]-Z[1])*U,H=(H=K[0]-Y[0])*H+(H=K[1]-Y[1])*H;j=E(j,Math.sqrt(U/H)),V=[(Z[0]+X[0])/2,(Z[1]+X[1])/2],B=[(Y[0]+K[0])/2,(Y[1]+K[1])/2]}else if(I.touch0)V=I.touch0[0],B=I.touch0[1];else return;I.zoom("touch",n(g(j,V,B),I.extent,s))}}function D(v,...C){if(this.__zooming){var I=S(this,C).event(v),k=v.changedTouches,z=k.length,P,j;for(zn(v),f&&clearTimeout(f),f=setTimeout(function(){f=null},h),P=0;P<z;++P)j=k[P],I.touch0&&I.touch0[2]===j.identifier?delete I.touch0:I.touch1&&I.touch1[2]===j.identifier&&delete I.touch1;if(I.touch1&&!I.touch0&&(I.touch0=I.touch1,delete I.touch1),I.touch0)I.touch0[1]=this.__zoom.invert(I.touch0[0]);else if(I.end(),I.taps===2&&(j=Ee(j,this),Math.hypot(d[0]-j[0],d[1]-j[1])<w)){var V=be(this).on("dblclick.zoom");V&&V.apply(this,arguments)}}}return x.wheelDelta=function(v){return arguments.length?(o=typeof v=="function"?v:jt(+v),x):o},x.filter=function(v){return arguments.length?(e=typeof v=="function"?v:jt(!!v),x):e},x.touchable=function(v){return arguments.length?(r=typeof v=="function"?v:jt(!!v),x):r},x.extent=function(v){return arguments.length?(t=typeof v=="function"?v:jt([[+v[0][0],+v[0][1]],[+v[1][0],+v[1][1]]]),x):t},x.scaleExtent=function(v){return arguments.length?(i[0]=+v[0],i[1]=+v[1],x):[i[0],i[1]]},x.translateExtent=function(v){return arguments.length?(s[0][0]=+v[0][0],s[1][0]=+v[1][0],s[0][1]=+v[0][1],s[1][1]=+v[1][1],x):[[s[0][0],s[0][1]],[s[1][0],s[1][1]]]},x.constrain=function(v){return arguments.length?(n=v,x):n},x.duration=function(v){return arguments.length?(a=+v,x):a},x.interpolate=function(v){return arguments.length?(c=v,x):c},x.on=function(){var v=l.on.apply(l,arguments);return v===l?x:v},x.clickDistance=function(v){return arguments.length?(y=(v=+v)*v,x):Math.sqrt(y)},x.tapDistance=function(v){return arguments.length?(w=+v,x):w},x}const Me={error001:(e="react")=>`Seems like you have not used ${e==="svelte"?"SvelteFlowProvider":"ReactFlowProvider"} as an ancestor. Help: https://${e}flow.dev/error#001`,error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>"The parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,{id:t,sourceHandle:n,targetHandle:o})=>`Couldn't create edge for ${e} handle id: "${e==="source"?n:o}", edge id: ${t}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,error013:(e="react")=>`It seems that you haven't loaded the styles. Please import '@xyflow/${e}/dist/style.css' or base.css to make sure everything is working properly.`,error014:()=>"useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.",error015:()=>"It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs.",error016:e=>`Edge with id "${e}" does not exist, it may have been removed. This can happen when an edge is deleted before the "onEdgeClick" handler is called.`},Nt=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],Xi=["Enter"," ","Escape"],Yi={"node.a11yDescription.default":"Press enter or space to select a node. Press delete to remove it and escape to cancel.","node.a11yDescription.keyboardDisabled":"Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.","node.a11yDescription.ariaLiveMessage":({direction:e,x:t,y:n})=>`Moved selected node ${e}. New position, x: ${t}, y: ${n}`,"edge.a11yDescription.default":"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.","controls.ariaLabel":"Control Panel","controls.zoomIn.ariaLabel":"Zoom In","controls.zoomOut.ariaLabel":"Zoom Out","controls.fitView.ariaLabel":"Fit View","controls.interactive.ariaLabel":"Toggle Interactivity","minimap.ariaLabel":"Mini Map","handle.ariaLabel":"Handle"};var ut;(function(e){e.Strict="strict",e.Loose="loose"})(ut||(ut={}));var Ze;(function(e){e.Free="free",e.Vertical="vertical",e.Horizontal="horizontal"})(Ze||(Ze={}));var dt;(function(e){e.Partial="partial",e.Full="full"})(dt||(dt={}));const Zi={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null};var Ve;(function(e){e.Bezier="default",e.Straight="straight",e.Step="step",e.SmoothStep="smoothstep",e.SimpleBezier="simplebezier"})(Ve||(Ve={}));var sn;(function(e){e.Arrow="arrow",e.ArrowClosed="arrowclosed"})(sn||(sn={}));var q;(function(e){e.Left="left",e.Top="top",e.Right="right",e.Bottom="bottom"})(q||(q={}));const rr={[q.Left]:q.Right,[q.Right]:q.Left,[q.Top]:q.Bottom,[q.Bottom]:q.Top};function Gi(e){return e===null?null:e?"valid":"invalid"}const Wi=e=>!!e&&typeof e=="object"&&"id"in e&&"source"in e&&"target"in e,nf=e=>!!e&&typeof e=="object"&&"id"in e&&"position"in e&&!("source"in e)&&!("target"in e),wo=e=>!!e&&typeof e=="object"&&"id"in e&&"internals"in e&&!("source"in e)&&!("target"in e),At=(e,t=[0,0])=>{const{width:n,height:o}=ke(e),r=e.origin??t,i=n*r[0],s=o*r[1];return{x:e.position.x-i,y:e.position.y-s}},of=(e,t={nodeOrigin:[0,0]})=>{if(e.length===0)return{x:0,y:0,width:0,height:0};let n=!1;const o=e.reduce((r,i)=>{const s=typeof i=="string";let a=!t.nodeLookup&&!s?i:void 0;return t.nodeLookup&&(a=s?t.nodeLookup.get(i):wo(i)?i:t.nodeLookup.get(i.id)),a?(n=!0,mn(r,an(a,t.nodeOrigin))):r},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return n?yn(o):{x:0,y:0,width:0,height:0}},Pt=(e,t={})=>{let n={x:1/0,y:1/0,x2:-1/0,y2:-1/0},o=!1;return e.forEach(r=>{(t.filter===void 0||t.filter(r))&&(n=mn(n,an(r)),o=!0)}),o?yn(n):{x:0,y:0,width:0,height:0}},vo=(e,t,[n,o,r]=[0,0,1],i=!1,s=!1)=>{const a=(t.x-n)/r,c=(t.y-o)/r,l=t.width/r,u=t.height/r,d=[];for(const f of e.values()){const{measured:h,selectable:p=!0,hidden:y=!1}=f;if(s&&!p||y)continue;const w=h.width??f.width??f.initialWidth??0,x=h.height??f.height??f.initialHeight??0,{x:E,y:g}=f.internals.positionAbsolute,m=Qi(a,c,l,u,E,g,w,x),_=w*x,S=i&&m>0;(!f.internals.handleBounds||S||m>=_||f.dragging)&&d.push(f)}return d},rf=(e,t)=>{const n=new Set;return e.forEach(o=>{n.add(o.id)}),t.filter(o=>n.has(o.source)||n.has(o.target))};function sf(e,t){const n=new Map,o=t?.nodes?new Set(t.nodes.map(r=>r.id)):null;return e.forEach(r=>{let i;if(t?.includeHiddenNodes){const{width:s,height:a}=ke(r);i=s>0&&a>0}else i=!!(r.measured.width&&r.measured.height&&!r.hidden);i&&(!o||o.has(r.id))&&n.set(r.id,r)}),n}async function af({nodes:e,width:t,height:n,panZoom:o,minZoom:r,maxZoom:i},s){if(e.size===0)return!0;const a=sf(e,s),c=Pt(a),l=So(c,t,n,s?.minZoom??r,s?.maxZoom??i,s?.padding??.1);return await o.setViewport(l,{duration:s?.duration,ease:s?.ease,interpolate:s?.interpolate}),!0}function qi({nodeId:e,nextPosition:t,nodeLookup:n,nodeOrigin:o=[0,0],nodeExtent:r,onError:i}){const s=n.get(e),a=s.parentId?n.get(s.parentId):void 0,{x:c,y:l}=a?a.internals.positionAbsolute:{x:0,y:0},u=s.origin??o;let d=s.extent||r;if(s.extent==="parent"&&!s.expandParent)if(!a)i?.("005",Me.error005());else{const{width:h,height:p}=ke(a);h&&p&&(d=[[c,l],[c+h,l+p]])}else a&&Ue(s.extent)&&(d=[[s.extent[0][0]+c,s.extent[0][1]+l],[s.extent[1][0]+c,s.extent[1][1]+l]]);const f=Ue(d)?qe(t,d,s.measured):t;return(s.measured.width===void 0||s.measured.height===void 0)&&i?.("015",Me.error015()),{position:{x:f.x-c+(s.measured.width??0)*u[0],y:f.y-l+(s.measured.height??0)*u[1]},positionAbsolute:f}}async function cf({nodesToRemove:e=[],edgesToRemove:t=[],nodes:n,edges:o,onBeforeDelete:r}){const i=new Set(e.map(f=>f.id)),s=[];for(const f of n){if(f.deletable===!1)continue;const h=i.has(f.id),p=!h&&f.parentId&&s.find(y=>y.id===f.parentId);(h||p)&&s.push(f)}const a=new Set(t.map(f=>f.id)),c=o.filter(f=>f.deletable!==!1),u=rf(s,c);for(const f of c)a.has(f.id)&&!u.find(p=>p.id===f.id)&&u.push(f);if(!r)return{edges:u,nodes:s};const d=await r({nodes:s,edges:u});return typeof d=="boolean"?d?{edges:u,nodes:s}:{edges:[],nodes:[]}:d}const ft=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),qe=(e={x:0,y:0},t,n)=>({x:ft(e.x,t[0][0],t[1][0]-(n?.width??0)),y:ft(e.y,t[0][1],t[1][1]-(n?.height??0))});function Ui(e,t,n){const{width:o,height:r}=ke(n),{x:i,y:s}=n.internals.positionAbsolute;return qe(e,[[i,s],[i+o,s+r]],t)}const ir=(e,t,n)=>e<t?ft(Math.abs(e-t),1,t)/t:e>n?-ft(Math.abs(e-n),1,t)/t:0,bo=(e,t,n=15,o=40)=>{const r=ir(e.x,o,t.width-o)*n,i=ir(e.y,o,t.height-o)*n;return[r,i]},mn=(e,t)=>({x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x2,t.x2),y2:Math.max(e.y2,t.y2)}),eo=({x:e,y:t,width:n,height:o})=>({x:e,y:t,x2:e+n,y2:t+o}),yn=({x:e,y:t,x2:n,y2:o})=>({x:e,y:t,width:n-e,height:o-t}),Ct=(e,t=[0,0])=>{const{x:n,y:o}=wo(e)?e.internals.positionAbsolute:At(e,t);return{x:n,y:o,width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}},an=(e,t=[0,0])=>{const{x:n,y:o}=wo(e)?e.internals.positionAbsolute:At(e,t);return{x:n,y:o,x2:n+(e.measured?.width??e.width??e.initialWidth??0),y2:o+(e.measured?.height??e.height??e.initialHeight??0)}},Ki=(e,t)=>yn(mn(eo(e),eo(t))),Qi=(e,t,n,o,r,i,s,a)=>{const c=Math.max(0,Math.min(e+n,r+s)-Math.max(e,r)),l=Math.max(0,Math.min(t+o,i+a)-Math.max(t,i));return Math.ceil(c*l)},cn=(e,t)=>Qi(e.x,e.y,e.width,e.height,t.x,t.y,t.width,t.height),sr=e=>Ne(e.width)&&Ne(e.height)&&Ne(e.x)&&Ne(e.y),Ne=e=>!isNaN(e)&&isFinite(e),Ji=(e,t)=>(n,o)=>{},Tt=(e,t=[1,1])=>({x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}),zt=({x:e,y:t},[n,o,r],i=!1,s=[1,1])=>{const a={x:(e-n)/r,y:(t-o)/r};return i?Tt(a,s):a},ht=({x:e,y:t},[n,o,r])=>({x:e*r+n,y:t*r+o});function ot(e,t){if(typeof e=="number")return Math.floor((t-t/(1+e))*.5);if(typeof e=="string"&&e.endsWith("px")){const n=parseFloat(e);if(!Number.isNaN(n))return Math.floor(n)}if(typeof e=="string"&&e.endsWith("%")){const n=parseFloat(e);if(!Number.isNaN(n))return Math.floor(t*n*.01)}return console.error(`The padding value "${e}" is invalid. Please provide a number or a string with a valid unit (px or %).`),0}function lf(e,t,n){if(typeof e=="string"||typeof e=="number"){const o=ot(e,n),r=ot(e,t);return{top:o,right:r,bottom:o,left:r,x:r*2,y:o*2}}if(typeof e=="object"){const o=ot(e.top??e.y??0,n),r=ot(e.bottom??e.y??0,n),i=ot(e.left??e.x??0,t),s=ot(e.right??e.x??0,t);return{top:o,right:s,bottom:r,left:i,x:i+s,y:o+r}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function uf(e,t,n,o,r,i){const{x:s,y:a}=ht(e,[t,n,o]),{x:c,y:l}=ht({x:e.x+e.width,y:e.y+e.height},[t,n,o]),u=r-c,d=i-l;return{left:Math.floor(s),top:Math.floor(a),right:Math.floor(u),bottom:Math.floor(d)}}const So=(e,t,n,o,r,i)=>{const s=lf(i,t,n),a=(t-s.x)/e.width,c=(n-s.y)/e.height,l=Math.min(a,c),u=ft(l,o,r),d=e.x+e.width/2,f=e.y+e.height/2,h=t/2-d*u,p=n/2-f*u,y=uf(e,h,p,u,t,n),w={left:Math.min(y.left-s.left,0),top:Math.min(y.top-s.top,0),right:Math.min(y.right-s.right,0),bottom:Math.min(y.bottom-s.bottom,0)};return{x:h-w.left+w.right,y:p-w.top+w.bottom,zoom:u}},Mt=()=>typeof navigator<"u"&&navigator?.userAgent?.indexOf("Mac")>=0;function Ue(e){return e!=null&&e!=="parent"}function ke(e){return{width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}}function Eo(e){return(e.measured?.width??e.width??e.initialWidth)!==void 0&&(e.measured?.height??e.height??e.initialHeight)!==void 0}function es(e,t={width:0,height:0},n,o,r){const i={...e},s=o.get(n);if(s){const a=s.origin||r;i.x+=s.internals.positionAbsolute.x-(t.width??0)*a[0],i.y+=s.internals.positionAbsolute.y-(t.height??0)*a[1]}return i}function ar(e,t){if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}function df(){let e,t;return{promise:new Promise((o,r)=>{e=o,t=r}),resolve:e,reject:t}}function ff(e){return{...Yi,...e||{}}}function vt(e,{snapGrid:t=[0,0],snapToGrid:n=!1,transform:o,containerBounds:r}){const{x:i,y:s}=Ce(e),a=zt({x:i-(r?.left??0),y:s-(r?.top??0)},o),{x:c,y:l}=n?Tt(a,t):a;return{xSnapped:c,ySnapped:l,...a}}const _o=e=>({width:e.offsetWidth,height:e.offsetHeight}),ts=e=>e?.getRootNode?.()||window?.document,hf=["INPUT","SELECT","TEXTAREA"];function ns(e){const t=e.composedPath?.()?.[0]||e.target;return t?.nodeType!==1?!1:hf.includes(t.nodeName)||t.hasAttribute("contenteditable")||!!t.closest(".nokey")}const os=e=>"clientX"in e,Ce=(e,t)=>{const n=os(e),o=n?e.clientX:e.touches?.[0].clientX,r=n?e.clientY:e.touches?.[0].clientY;return{x:o-(t?.left??0),y:r-(t?.top??0)}},cr=(e,t,n,o,r)=>{const i=t.querySelectorAll(`.${e}`);return!i||!i.length?null:Array.from(i).map(s=>{const a=s.getBoundingClientRect();return{id:s.getAttribute("data-handleid"),type:e,nodeId:r,position:s.getAttribute("data-handlepos"),x:(a.left-n.left)/o,y:(a.top-n.top)/o,..._o(s)}})};function rs({sourceX:e,sourceY:t,targetX:n,targetY:o,sourceControlX:r,sourceControlY:i,targetControlX:s,targetControlY:a}){const c=e*.125+r*.375+s*.375+n*.125,l=t*.125+i*.375+a*.375+o*.125,u=Math.abs(c-e),d=Math.abs(l-t);return[c,l,u,d]}function Vt(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function lr({pos:e,x1:t,y1:n,x2:o,y2:r,c:i}){switch(e){case q.Left:return[t-Vt(t-o,i),n];case q.Right:return[t+Vt(o-t,i),n];case q.Top:return[t,n-Vt(n-r,i)];case q.Bottom:return[t,n+Vt(r-n,i)]}}function is({sourceX:e,sourceY:t,sourcePosition:n=q.Bottom,targetX:o,targetY:r,targetPosition:i=q.Top,curvature:s=.25}){const[a,c]=lr({pos:n,x1:e,y1:t,x2:o,y2:r,c:s}),[l,u]=lr({pos:i,x1:o,y1:r,x2:e,y2:t,c:s}),[d,f,h,p]=rs({sourceX:e,sourceY:t,targetX:o,targetY:r,sourceControlX:a,sourceControlY:c,targetControlX:l,targetControlY:u});return[`M${e},${t} C${a},${c} ${l},${u} ${o},${r}`,d,f,h,p]}function ss({sourceX:e,sourceY:t,targetX:n,targetY:o}){const r=Math.abs(n-e)/2,i=n<e?n+r:n-r,s=Math.abs(o-t)/2,a=o<t?o+s:o-s;return[i,a,r,s]}function pf({sourceNode:e,targetNode:t,selected:n=!1,zIndex:o=0,elevateOnSelect:r=!1,zIndexMode:i="basic"}){if(i==="manual")return o;const s=r&&n?o+1e3:o,a=Math.max(e.parentId||r&&e.selected?e.internals.z:0,t.parentId||r&&t.selected?t.internals.z:0);return s+a}function gf({sourceNode:e,targetNode:t,width:n,height:o,transform:r}){const i=mn(an(e),an(t));i.x===i.x2&&(i.x2+=1),i.y===i.y2&&(i.y2+=1);const s={x:-r[0]/r[2],y:-r[1]/r[2],width:n/r[2],height:o/r[2]};return cn(s,yn(i))>0}const mf=({source:e,sourceHandle:t,target:n,targetHandle:o})=>`xy-edge__${e}${t||""}-${n}${o||""}`,yf=(e,t)=>t.some(n=>n.source===e.source&&n.target===e.target&&(n.sourceHandle===e.sourceHandle||!n.sourceHandle&&!e.sourceHandle)&&(n.targetHandle===e.targetHandle||!n.targetHandle&&!e.targetHandle)),xf=(e,t,n={})=>{if(!e.source||!e.target)return n.onError?.("006",Me.error006()),t;const o=n.getEdgeId||mf;let r;return Wi(e)?r={...e}:r={...e,id:o(e)},yf(r,t)?t:(r.sourceHandle===null&&delete r.sourceHandle,r.targetHandle===null&&delete r.targetHandle,t.concat(r))};function as({sourceX:e,sourceY:t,targetX:n,targetY:o}){const[r,i,s,a]=ss({sourceX:e,sourceY:t,targetX:n,targetY:o});return[`M ${e},${t}L ${n},${o}`,r,i,s,a]}const ur={[q.Left]:{x:-1,y:0},[q.Right]:{x:1,y:0},[q.Top]:{x:0,y:-1},[q.Bottom]:{x:0,y:1}},wf=({source:e,sourcePosition:t=q.Bottom,target:n})=>t===q.Left||t===q.Right?e.x<n.x?{x:1,y:0}:{x:-1,y:0}:e.y<n.y?{x:0,y:1}:{x:0,y:-1},dr=(e,t)=>Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2));function vf({source:e,sourcePosition:t=q.Bottom,target:n,targetPosition:o=q.Top,center:r,offset:i,stepPosition:s}){const a=ur[t],c=ur[o],l={x:e.x+a.x*i,y:e.y+a.y*i},u={x:n.x+c.x*i,y:n.y+c.y*i},d=wf({source:l,sourcePosition:t,target:u}),f=d.x!==0?"x":"y",h=d[f];let p=[],y,w;const x={x:0,y:0},E={x:0,y:0},[,,g,m]=ss({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(a[f]*c[f]===-1){f==="x"?(y=r.x??l.x+(u.x-l.x)*s,w=r.y??(l.y+u.y)/2):(y=r.x??(l.x+u.x)/2,w=r.y??l.y+(u.y-l.y)*s);const $=[{x:y,y:l.y},{x:y,y:u.y}],A=[{x:l.x,y:w},{x:u.x,y:w}];a[f]===h?p=f==="x"?$:A:p=f==="x"?A:$}else{const $=[{x:l.x,y:u.y}],A=[{x:u.x,y:l.y}];if(f==="x"?p=a.x===h?A:$:p=a.y===h?$:A,t===o){const v=Math.abs(e[f]-n[f]);if(v<=i){const C=Math.min(i-1,i-v);a[f]===h?x[f]=(l[f]>e[f]?-1:1)*C:E[f]=(u[f]>n[f]?-1:1)*C}}if(t!==o){const v=f==="x"?"y":"x",C=a[f]===c[v],I=l[v]>u[v],k=l[v]<u[v];(a[f]===1&&(!C&&I||C&&k)||a[f]!==1&&(!C&&k||C&&I))&&(p=f==="x"?$:A)}const O={x:l.x+x.x,y:l.y+x.y},T={x:u.x+E.x,y:u.y+E.y},L=Math.max(Math.abs(O.x-p[0].x),Math.abs(T.x-p[0].x)),D=Math.max(Math.abs(O.y-p[0].y),Math.abs(T.y-p[0].y));L>=D?(y=(O.x+T.x)/2,w=p[0].y):(y=p[0].x,w=(O.y+T.y)/2)}const _={x:l.x+x.x,y:l.y+x.y},S={x:u.x+E.x,y:u.y+E.y};return[[e,..._.x!==p[0].x||_.y!==p[0].y?[_]:[],...p,...S.x!==p[p.length-1].x||S.y!==p[p.length-1].y?[S]:[],n],y,w,g,m]}function bf(e,t,n,o){const r=Math.min(dr(e,t)/2,dr(t,n)/2,o),{x:i,y:s}=t;if(e.x===i&&i===n.x||e.y===s&&s===n.y)return`L${i} ${s}`;if(e.y===s){const l=e.x<n.x?-1:1,u=e.y<n.y?1:-1;return`L ${i+r*l},${s}Q ${i},${s} ${i},${s+r*u}`}const a=e.x<n.x?1:-1,c=e.y<n.y?-1:1;return`L ${i},${s+r*c}Q ${i},${s} ${i+r*a},${s}`}function to({sourceX:e,sourceY:t,sourcePosition:n=q.Bottom,targetX:o,targetY:r,targetPosition:i=q.Top,borderRadius:s=5,centerX:a,centerY:c,offset:l=20,stepPosition:u=.5}){const[d,f,h,p,y]=vf({source:{x:e,y:t},sourcePosition:n,target:{x:o,y:r},targetPosition:i,center:{x:a,y:c},offset:l,stepPosition:u});let w=`M${d[0].x} ${d[0].y}`;for(let x=1;x<d.length-1;x++)w+=bf(d[x-1],d[x],d[x+1],s);return w+=`L${d[d.length-1].x} ${d[d.length-1].y}`,[w,f,h,p,y]}function fr(e){return e&&!!(e.internals.handleBounds||e.handles?.length)&&!!(e.measured.width||e.width||e.initialWidth)}function Sf(e){const{sourceNode:t,targetNode:n}=e;if(!fr(t)||!fr(n))return null;const o=t.internals.handleBounds||hr(t.handles),r=n.internals.handleBounds||hr(n.handles),i=pr(o?.source??[],e.sourceHandle),s=pr(e.connectionMode===ut.Strict?r?.target??[]:(r?.target??[]).concat(r?.source??[]),e.targetHandle);if(!i||!s)return e.onError?.("008",Me.error008(i?"target":"source",{id:e.id,sourceHandle:e.sourceHandle,targetHandle:e.targetHandle})),null;const a=i?.position||q.Bottom,c=s?.position||q.Top,l=Ke(t,i,a),u=Ke(n,s,c);return{sourceX:l.x,sourceY:l.y,targetX:u.x,targetY:u.y,sourcePosition:a,targetPosition:c}}function hr(e){if(!e)return null;const t=[],n=[];for(const o of e)o.width=o.width??1,o.height=o.height??1,o.type==="source"?t.push(o):o.type==="target"&&n.push(o);return{source:t,target:n}}function Ke(e,t,n=q.Left,o=!1){const r=(t?.x??0)+e.internals.positionAbsolute.x,i=(t?.y??0)+e.internals.positionAbsolute.y,{width:s,height:a}=t??ke(e);if(o)return{x:r+s/2,y:i+a/2};switch(t?.position??n){case q.Top:return{x:r+s/2,y:i};case q.Right:return{x:r+s,y:i+a/2};case q.Bottom:return{x:r+s/2,y:i+a};case q.Left:return{x:r,y:i+a/2}}}function pr(e,t){return e&&(t?e.find(n=>n.id===t):e[0])||null}function no(e,t){return e?typeof e=="string"?e:`${t?`${t}__`:""}${Object.keys(e).sort().map(o=>`${o}=${e[o]}`).join("&")}`:""}function Ef(e,{id:t,defaultColor:n,defaultMarkerStart:o,defaultMarkerEnd:r}){const i=new Set;return e.reduce((s,a)=>([a.markerStart||o,a.markerEnd||r].forEach(c=>{if(c&&typeof c=="object"){const l=no(c,t);i.has(l)||(s.push({id:l,color:c.color||n,...c}),i.add(l))}}),s),[]).sort((s,a)=>s.id.localeCompare(a.id))}const cs=1e3,_f=10,No={nodeOrigin:[0,0],nodeExtent:Nt,elevateNodesOnSelect:!0,zIndexMode:"basic",defaults:{}},Nf={...No,checkEquality:!0};function Co(e,t){const n={...e};for(const o in t)t[o]!==void 0&&(n[o]=t[o]);return n}function Cf(e,t,n){const o=Co(No,n);for(const r of e.values())if(r.parentId)Io(r,e,t,o);else{const i=At(r,o.nodeOrigin),s=Ue(r.extent)?r.extent:o.nodeExtent,a=qe(i,s,ke(r));r.internals.positionAbsolute=a}}function Mf(e,t){if(!e.handles)return e.measured?t?.internals.handleBounds:void 0;const n=[],o=[];for(const r of e.handles){const i={id:r.id,width:r.width??1,height:r.height??1,nodeId:e.id,x:r.x,y:r.y,position:r.position,type:r.type};r.type==="source"?n.push(i):r.type==="target"&&o.push(i)}return{source:n,target:o}}function Mo(e){return e==="manual"}function oo(e,t,n,o={}){const r=Co(Nf,o),i={i:0},s=new Map(t),a=r?.elevateNodesOnSelect&&!Mo(r.zIndexMode)?cs:0;let c=e.length>0,l=!1;t.clear(),n.clear();for(const u of e){let d=s.get(u.id);if(r.checkEquality&&u===d?.internals.userNode)t.set(u.id,d);else{const f=At(u,r.nodeOrigin),h=Ue(u.extent)?u.extent:r.nodeExtent,p=qe(f,h,ke(u));d={...r.defaults,...u,measured:{width:u.measured?.width,height:u.measured?.height},internals:{positionAbsolute:p,handleBounds:Mf(u,d),z:ls(u,a,r.zIndexMode),userNode:u}},t.set(u.id,d)}(d.measured===void 0||d.measured.width===void 0||d.measured.height===void 0)&&!d.hidden&&(c=!1),u.parentId&&Io(d,t,n,o,i),l||=u.selected??!1}return{nodesInitialized:c,hasSelectedNodes:l}}function If(e,t){if(!e.parentId)return;const n=t.get(e.parentId);n?n.set(e.id,e):t.set(e.parentId,new Map([[e.id,e]]))}function Io(e,t,n,o,r){const{elevateNodesOnSelect:i,nodeOrigin:s,nodeExtent:a,zIndexMode:c}=Co(No,o),l=e.parentId,u=t.get(l);if(!u){console.warn(`Parent node ${l} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}If(e,n),r&&!u.parentId&&u.internals.rootParentIndex===void 0&&c==="auto"&&(u.internals.rootParentIndex=++r.i,u.internals.z=u.internals.z+r.i*_f),r&&u.internals.rootParentIndex!==void 0&&(r.i=u.internals.rootParentIndex);const d=i&&!Mo(c)?cs:0,{x:f,y:h,z:p}=kf(e,u,s,a,d,c),{positionAbsolute:y}=e.internals,w=f!==y.x||h!==y.y;(w||p!==e.internals.z)&&t.set(e.id,{...e,internals:{...e.internals,positionAbsolute:w?{x:f,y:h}:y,z:p}})}function ls(e,t,n){const o=Ne(e.zIndex)?e.zIndex:0;return Mo(n)?o:o+(e.selected?t:0)}function kf(e,t,n,o,r,i){const{x:s,y:a}=t.internals.positionAbsolute,c=ke(e),l=At(e,n),u=Ue(e.extent)?qe(l,e.extent,c):l;let d=qe({x:s+u.x,y:a+u.y},o,c);e.extent==="parent"&&(d=Ui(d,c,t));const f=ls(e,r,i),h=t.internals.z??0;return{x:d.x,y:d.y,z:h>=f?h+1:f}}function ko(e,t,n,o=[0,0]){const r=[],i=new Map;for(const s of e){const a=t.get(s.parentId);if(!a)continue;const c=i.get(s.parentId)?.expandedRect??Ct(a),l=Ki(c,s.rect);i.set(s.parentId,{expandedRect:l,parent:a})}return i.size>0&&i.forEach(({expandedRect:s,parent:a},c)=>{const l=a.internals.positionAbsolute,u=ke(a),d=a.origin??o,f=s.x<l.x?Math.round(Math.abs(l.x-s.x)):0,h=s.y<l.y?Math.round(Math.abs(l.y-s.y)):0,p=Math.max(u.width,Math.round(s.width)),y=Math.max(u.height,Math.round(s.height)),w=(p-u.width)*d[0],x=(y-u.height)*d[1];(f>0||h>0||w||x)&&(r.push({id:c,type:"position",position:{x:a.position.x-f+w,y:a.position.y-h+x}}),n.get(c)?.forEach(E=>{e.some(g=>g.id===E.id)||r.push({id:E.id,type:"position",position:{x:E.position.x+f,y:E.position.y+h}})})),(u.width<s.width||u.height<s.height||f||h)&&r.push({id:c,type:"dimensions",setAttributes:!0,dimensions:{width:p+(f?d[0]*f-w:0),height:y+(h?d[1]*h-x:0)}})}),r}function $f(e,t,n,o,r,i,s){const a=o?.querySelector(".xyflow__viewport");let c=!1;if(!a)return{changes:[],updatedInternals:c};const l=[],u=window.getComputedStyle(a),{m22:d}=new window.DOMMatrixReadOnly(u.transform),f=[];for(const h of e.values()){const p=t.get(h.id);if(!p)continue;if(p.hidden){t.set(p.id,{...p,internals:{...p.internals,handleBounds:void 0}}),c=!0;continue}const y=_o(h.nodeElement),w=p.measured.width!==y.width||p.measured.height!==y.height;if(!!(y.width&&y.height&&(w||!p.internals.handleBounds||h.force))){const E=h.nodeElement.getBoundingClientRect(),g=Ue(p.extent)?p.extent:i;let{positionAbsolute:m}=p.internals;if(p.parentId&&p.extent==="parent"){const S=t.get(p.parentId);S&&(m=Ui(m,y,S))}else g&&(m=qe(m,g,y));const _={...p,measured:y,internals:{...p.internals,positionAbsolute:m,handleBounds:{source:cr("source",h.nodeElement,E,d,p.id),target:cr("target",h.nodeElement,E,d,p.id)}}};t.set(p.id,_),p.parentId&&Io(_,t,n,{nodeOrigin:r,zIndexMode:s}),c=!0,w&&(l.push({id:p.id,type:"dimensions",dimensions:y}),p.expandParent&&p.parentId&&f.push({id:p.id,parentId:p.parentId,rect:Ct(_,r)}))}}if(f.length>0){const h=ko(f,t,n,r);l.push(...h)}return{changes:l,updatedInternals:c}}async function Af({delta:e,panZoom:t,transform:n,translateExtent:o,width:r,height:i}){if(!t||!e.x&&!e.y)return!1;const s=await t.setViewportConstrained({x:n[0]+e.x,y:n[1]+e.y,zoom:n[2]},[[0,0],[r,i]],o);return!!s&&(s.x!==n[0]||s.y!==n[1]||s.k!==n[2])}function gr(e,t,n,o,r,i){let s=r;const a=o.get(s)||new Map;o.set(s,a.set(n,t)),s=`${r}-${e}`;const c=o.get(s)||new Map;if(o.set(s,c.set(n,t)),i){s=`${r}-${e}-${i}`;const l=o.get(s)||new Map;o.set(s,l.set(n,t))}}function us(e,t,n){e.clear(),t.clear();for(const o of n){const{source:r,target:i,sourceHandle:s=null,targetHandle:a=null}=o,c={edgeId:o.id,source:r,target:i,sourceHandle:s,targetHandle:a},l=`${r}-${s}--${i}-${a}`,u=`${i}-${a}--${r}-${s}`;gr("source",c,u,e,r,s),gr("target",c,l,e,i,a),t.set(o.id,o)}}function ds(e,t){if(!e.parentId)return!1;const n=t.get(e.parentId);return n?n.selected?!0:ds(n,t):!1}function mr(e,t,n){let o=e;do{if(o?.matches?.(t))return!0;if(o===n)return!1;o=o?.parentElement}while(o);return!1}function Pf(e,t,n,o){const r=new Map;for(const[i,s]of e)if((s.selected||s.id===o)&&(!s.parentId||!ds(s,e))&&(s.draggable||t&&typeof s.draggable>"u")){const a=e.get(i);a&&r.set(i,{id:i,position:a.position||{x:0,y:0},distance:{x:n.x-a.internals.positionAbsolute.x,y:n.y-a.internals.positionAbsolute.y},extent:a.extent,parentId:a.parentId,origin:a.origin,expandParent:a.expandParent,internals:{positionAbsolute:a.internals.positionAbsolute||{x:0,y:0}},measured:{width:a.measured.width??0,height:a.measured.height??0}})}return r}function Dn({nodeId:e,dragItems:t,nodeLookup:n,dragging:o=!0}){const r=[];for(const[s,a]of t){const c=n.get(s)?.internals.userNode;c&&r.push({...c,position:a.position,dragging:o})}if(!e)return[r[0],r];const i=n.get(e)?.internals.userNode;return[i?{...i,position:t.get(e)?.position||i.position,dragging:o}:r[0],r]}function Tf({dragItems:e,snapGrid:t,x:n,y:o}){const r=e.values().next().value;if(!r)return null;const i={x:n-r.distance.x,y:o-r.distance.y},s=Tt(i,t);return{x:s.x-i.x,y:s.y-i.y}}function zf({onNodeMouseDown:e,getStoreItems:t,onDragStart:n,onDrag:o,onDragStop:r}){let i={x:null,y:null},s=0,a=new Map,c=!1,l={x:0,y:0},u=null,d=!1,f=null,h=!1,p=!1,y=null;function w({noDragClassName:E,handleSelector:g,domNode:m,isSelectable:_,nodeId:S,nodeClickDistance:N=0}){f=be(m);function $({x:L,y:D}){const{nodeLookup:v,nodeExtent:C,snapGrid:I,snapToGrid:k,nodeOrigin:z,onNodeDrag:P,onSelectionDrag:j,onError:V,updateNodePositions:B}=t();i={x:L,y:D};let Z=!1;const Y=a.size>1,X=Y&&C?eo(Pt(a)):null,K=Y&&k?Tf({dragItems:a,snapGrid:I,x:L,y:D}):null;for(const[U,H]of a){if(!v.has(U))continue;let G={x:L-H.distance.x,y:D-H.distance.y};k&&(G=K?{x:Math.round(G.x+K.x),y:Math.round(G.y+K.y)}:Tt(G,I));let te=null;if(Y&&C&&!H.extent&&X){const{positionAbsolute:Q}=H.internals,ne=Q.x-X.x+C[0][0],re=Q.x+H.measured.width-X.x2+C[1][0],ae=Q.y-X.y+C[0][1],R=Q.y+H.measured.height-X.y2+C[1][1];te=[[ne,ae],[re,R]]}const{position:ee,positionAbsolute:W}=qi({nodeId:U,nextPosition:G,nodeLookup:v,nodeExtent:te||C,nodeOrigin:z,onError:V});Z=Z||H.position.x!==ee.x||H.position.y!==ee.y,H.position=ee,H.internals.positionAbsolute=W}if(p=p||Z,!!Z&&(B(a,!0),y&&(o||P||!S&&j))){const[U,H]=Dn({nodeId:S,dragItems:a,nodeLookup:v});o?.(y,a,U,H),P?.(y,U,H),S||j?.(y,H)}}async function A(){if(!u)return;const{transform:L,panBy:D,autoPanSpeed:v,autoPanOnNodeDrag:C}=t();if(!C){c=!1,cancelAnimationFrame(s);return}const[I,k]=bo(l,u,v);(I!==0||k!==0)&&(i.x=(i.x??0)-I/L[2],i.y=(i.y??0)-k/L[2],await D({x:I,y:k})&&$(i)),s=requestAnimationFrame(A)}function O(L){const{nodeLookup:D,multiSelectionActive:v,nodesDraggable:C,transform:I,snapGrid:k,snapToGrid:z,selectNodesOnDrag:P,onNodeDragStart:j,onSelectionDragStart:V,unselectNodesAndEdges:B}=t();d=!0,(!P||!_)&&!v&&S&&(D.get(S)?.selected||B()),_&&P&&S&&e?.(S);const Z=vt(L.sourceEvent,{transform:I,snapGrid:k,snapToGrid:z,containerBounds:u});if(i=Z,a=Pf(D,C,Z,S),a.size>0&&(n||j||!S&&V)){const[Y,X]=Dn({nodeId:S,dragItems:a,nodeLookup:D});n?.(L.sourceEvent,a,Y,X),j?.(L.sourceEvent,Y,X),S||V?.(L.sourceEvent,X)}}const T=Ii().clickDistance(N).on("start",L=>{const{domNode:D,nodeDragThreshold:v,transform:C,snapGrid:I,snapToGrid:k}=t();u=D?.getBoundingClientRect()||null,h=!1,p=!1,y=L.sourceEvent,v===0&&O(L),i=vt(L.sourceEvent,{transform:C,snapGrid:I,snapToGrid:k,containerBounds:u}),l=Ce(L.sourceEvent,u)}).on("drag",L=>{const{autoPanOnNodeDrag:D,transform:v,snapGrid:C,snapToGrid:I,nodeDragThreshold:k,nodeLookup:z}=t(),P=vt(L.sourceEvent,{transform:v,snapGrid:C,snapToGrid:I,containerBounds:u});if(y=L.sourceEvent,(L.sourceEvent.type==="touchmove"&&L.sourceEvent.touches.length>1||S&&!z.has(S))&&(h=!0),!h){if(!c&&D&&d&&(c=!0,A()),!d){const j=Ce(L.sourceEvent,u),V=j.x-l.x,B=j.y-l.y;Math.sqrt(V*V+B*B)>k&&O(L)}(i.x!==P.xSnapped||i.y!==P.ySnapped)&&a&&d&&(l=Ce(L.sourceEvent,u),$(P))}}).on("end",L=>{if(!d||h){h&&a.size>0&&t().updateNodePositions(a,!1);return}if(c=!1,d=!1,cancelAnimationFrame(s),a.size>0){const{nodeLookup:D,updateNodePositions:v,onNodeDragStop:C,onSelectionDragStop:I}=t();if(p&&(v(a,!1),p=!1),r||C||!S&&I){const[k,z]=Dn({nodeId:S,dragItems:a,nodeLookup:D,dragging:!1});r?.(L.sourceEvent,a,k,z),C?.(L.sourceEvent,k,z),S||I?.(L.sourceEvent,z)}}}).filter(L=>{const D=L.target;return!L.button&&(!E||!mr(D,`.${E}`,m))&&(!g||mr(D,g,m))});f.call(T)}function x(){f?.on(".drag",null)}return{update:w,destroy:x}}function Df(e,t,n){const o=[],r={x:e.x-n,y:e.y-n,width:n*2,height:n*2};for(const i of t.values())cn(r,Ct(i))>0&&o.push(i);return o}const Rf=250;function Hf(e,t,n,o){let r=[],i=1/0;const s=Df(e,n,t+Rf);for(const a of s){const c=[...a.internals.handleBounds?.source??[],...a.internals.handleBounds?.target??[]];for(const l of c){if(o.nodeId===l.nodeId&&o.type===l.type&&o.id===l.id)continue;const{x:u,y:d}=Ke(a,l,l.position,!0),f=Math.sqrt(Math.pow(u-e.x,2)+Math.pow(d-e.y,2));f>t||(f<i?(r=[{...l,x:u,y:d}],i=f):f===i&&r.push({...l,x:u,y:d}))}}if(!r.length)return null;if(r.length>1){const a=o.type==="source"?"target":"source";return r.find(c=>c.type===a)??r[0]}return r[0]}function fs(e,t,n,o,r,i=!1){const s=o.get(e);if(!s)return null;const a=r==="strict"?s.internals.handleBounds?.[t]:[...s.internals.handleBounds?.source??[],...s.internals.handleBounds?.target??[]],c=(n?a?.find(l=>l.id===n):a?.[0])??null;return c&&i?{...c,...Ke(s,c,c.position,!0)}:c}function hs(e,t){return e||(t?.classList.contains("target")?"target":t?.classList.contains("source")?"source":null)}function Lf(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}const ps=()=>!0;function Of(e,{connectionMode:t,connectionRadius:n,handleId:o,nodeId:r,edgeUpdaterType:i,isTarget:s,domNode:a,nodeLookup:c,lib:l,autoPanOnConnect:u,flowId:d,panBy:f,cancelConnection:h,onConnectStart:p,onConnect:y,onConnectEnd:w,isValidConnection:x=ps,onReconnectEnd:E,updateConnection:g,getTransform:m,getFromHandle:_,autoPanSpeed:S,dragThreshold:N=1,handleDomNode:$}){const A=ts(e.target);let O=0,T;const{x:L,y:D}=Ce(e),v=hs(i,$),C=a?.getBoundingClientRect();let I=!1;if(!C||!v)return;const k=fs(r,v,o,c,t);if(!k)return;let z=Ce(e,C),P=!1,j=null,V=!1,B=null;function Z(){if(!u||!C)return;const[ee,W]=bo(z,C,S);f({x:ee,y:W}),O=requestAnimationFrame(Z)}const Y={...k,nodeId:r,type:v,position:k.position},X=c.get(r);let U={inProgress:!0,isValid:null,from:Ke(X,Y,q.Left,!0),fromHandle:Y,fromPosition:Y.position,fromNode:X,to:z,toHandle:null,toPosition:rr[Y.position],toNode:null,pointer:z};function H(){I=!0,g(U),p?.(e,{nodeId:r,handleId:o,handleType:v})}N===0&&H();function G(ee){if(!I){const{x:R,y:F}=Ce(ee),J=R-L,se=F-D;if(!(J*J+se*se>N*N))return;H()}if(!_()||!Y){te(ee);return}const W=m();z=Ce(ee,C),T=Hf(zt(z,W,!1,[1,1]),n,c,Y),P||(Z(),P=!0);const Q=gs(ee,{handle:T,connectionMode:t,fromNodeId:r,fromHandleId:o,fromType:s?"target":"source",isValidConnection:x,doc:A,lib:l,flowId:d,nodeLookup:c});B=Q.handleDomNode,j=Q.connection,V=Lf(!!T,Q.isValid);const ne=c.get(r),re=ne?Ke(ne,Y,q.Left,!0):U.from,ae={...U,from:re,isValid:V,to:Q.toHandle&&V?ht({x:Q.toHandle.x,y:Q.toHandle.y},W):z,toHandle:Q.toHandle,toPosition:V&&Q.toHandle?Q.toHandle.position:rr[Y.position],toNode:Q.toHandle?c.get(Q.toHandle.nodeId):null,pointer:z};g(ae),U=ae}function te(ee){if(!("touches"in ee&&ee.touches.length>0)){if(I){(T||B)&&j&&V&&y?.(j);const{inProgress:W,...Q}=U,ne={...Q,toPosition:U.toHandle?U.toPosition:null};w?.(ee,ne),i&&E?.(ee,ne)}h(),cancelAnimationFrame(O),P=!1,V=!1,j=null,B=null,A.removeEventListener("mousemove",G),A.removeEventListener("mouseup",te),A.removeEventListener("touchmove",G),A.removeEventListener("touchend",te)}}A.addEventListener("mousemove",G),A.addEventListener("mouseup",te),A.addEventListener("touchmove",G),A.addEventListener("touchend",te)}function gs(e,{handle:t,connectionMode:n,fromNodeId:o,fromHandleId:r,fromType:i,doc:s,lib:a,flowId:c,isValidConnection:l=ps,nodeLookup:u}){const d=i==="target",f=t?s.querySelector(`.${a}-flow__handle[data-id="${c}-${t?.nodeId}-${t?.id}-${t?.type}"]`):null,{x:h,y:p}=Ce(e),y=s.elementFromPoint(h,p),w=y?.classList.contains(`${a}-flow__handle`)?y:f,x={handleDomNode:w,isValid:!1,connection:null,toHandle:null};if(w){const E=hs(void 0,w),g=w.getAttribute("data-nodeid"),m=w.getAttribute("data-handleid"),_=w.classList.contains("connectable"),S=w.classList.contains("connectableend");if(!g||!E)return x;const N={source:d?g:o,sourceHandle:d?m:r,target:d?o:g,targetHandle:d?r:m};x.connection=N;const A=_&&S&&(n===ut.Strict?d&&E==="source"||!d&&E==="target":g!==o||m!==r);x.isValid=A&&l(N),x.toHandle=fs(g,E,m,u,n,!0)}return x}const ro={onPointerDown:Of,isValid:gs};function jf({domNode:e,panZoom:t,getTransform:n,getViewScale:o}){const r=be(e);function i({translateExtent:a,width:c,height:l,zoomStep:u=1,pannable:d=!0,zoomable:f=!0,inversePan:h=!1}){const p=g=>{if(g.sourceEvent.type!=="wheel"||!t)return;const m=n(),_=g.sourceEvent.ctrlKey&&Mt()?10:1,S=-g.sourceEvent.deltaY*(g.sourceEvent.deltaMode===1?.05:g.sourceEvent.deltaMode?1:.002)*u,N=m[2]*Math.pow(2,S*_);t.scaleTo(N)};let y=[0,0];const w=g=>{(g.sourceEvent.type==="mousedown"||g.sourceEvent.type==="touchstart")&&(y=[g.sourceEvent.clientX??g.sourceEvent.touches[0].clientX,g.sourceEvent.clientY??g.sourceEvent.touches[0].clientY])},x=g=>{const m=n();if(g.sourceEvent.type!=="mousemove"&&g.sourceEvent.type!=="touchmove"||!t)return;const _=[g.sourceEvent.clientX??g.sourceEvent.touches[0].clientX,g.sourceEvent.clientY??g.sourceEvent.touches[0].clientY],S=[_[0]-y[0],_[1]-y[1]];y=_;const N=o()*Math.max(m[2],Math.log(m[2]))*(h?-1:1),$={x:m[0]-S[0]*N,y:m[1]-S[1]*N},A=[[0,0],[c,l]];t.setViewportConstrained({x:$.x,y:$.y,zoom:m[2]},A,a)},E=Fi().on("start",w).on("zoom",d?x:null).on("zoom.wheel",f?p:null);r.call(E,{})}function s(){r.on("zoom",null)}return{update:i,destroy:s,pointer:Ee}}const xn=e=>({x:e.x,y:e.y,zoom:e.k}),Rn=({x:e,y:t,zoom:n})=>gn.translate(e,t).scale(n),je=(e,t)=>e.target.closest(`.${t}`),ms=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),Vf=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,Hn=(e,t=0,n=Vf,o=()=>{})=>{const r=typeof t=="number"&&t>0;return r||o(),r?e.transition().duration(t).ease(n).on("end",o):e},ys=e=>{const t=e.ctrlKey&&Mt()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t};function Bf({zoomPanValues:e,noWheelClassName:t,d3Selection:n,d3Zoom:o,panOnScrollMode:r,panOnScrollSpeed:i,zoomOnPinch:s,onPanZoomStart:a,onPanZoom:c,onPanZoomEnd:l}){return u=>{if(je(u,t))return u.ctrlKey&&u.preventDefault(),!1;u.preventDefault(),u.stopImmediatePropagation();const d=n.property("__zoom").k||1;if(u.ctrlKey&&s){const w=Ee(u),x=ys(u),E=d*Math.pow(2,x);o.scaleTo(n,E,w,u);return}const f=u.deltaMode===1?20:1;let h=r===Ze.Vertical?0:u.deltaX*f,p=r===Ze.Horizontal?0:u.deltaY*f;!Mt()&&u.shiftKey&&r!==Ze.Vertical&&(h=u.deltaY*f,p=0),o.translateBy(n,-(h/d)*i,-(p/d)*i,{internal:!0});const y=xn(n.property("__zoom"));clearTimeout(e.panScrollTimeout),e.isPanScrolling?c?.(u,y):(e.isPanScrolling=!0,a?.(u,y)),e.panScrollTimeout=setTimeout(()=>{l?.(u,y),e.isPanScrolling=!1},150)}}function Ff({noWheelClassName:e,preventScrolling:t,d3ZoomHandler:n}){return function(o,r){const i=o.type==="wheel",s=!t&&i&&!o.ctrlKey,a=je(o,e);if(o.ctrlKey&&i&&a&&o.preventDefault(),s||a)return null;o.preventDefault(),n.call(this,o,r)}}function Xf({zoomPanValues:e,onDraggingChange:t,onPanZoomStart:n}){return o=>{if(o.sourceEvent?.internal)return;const r=xn(o.transform);e.mouseButton=o.sourceEvent?.button||0,e.isZoomingOrPanning=!0,e.prevViewport=r,o.sourceEvent?.type==="mousedown"&&t(!0),n&&n?.(o.sourceEvent,r)}}function Yf({zoomPanValues:e,panOnDrag:t,onPaneContextMenu:n,onTransformChange:o,onPanZoom:r}){return i=>{e.usedRightMouseButton=!!(n&&ms(t,e.mouseButton??0)),i.sourceEvent?.sync||o([i.transform.x,i.transform.y,i.transform.k]),r&&!i.sourceEvent?.internal&&r?.(i.sourceEvent,xn(i.transform))}}function Zf({zoomPanValues:e,panOnDrag:t,panOnScroll:n,onDraggingChange:o,onPanZoomEnd:r,onPaneContextMenu:i}){return s=>{if(!s.sourceEvent?.internal&&(e.isZoomingOrPanning=!1,i&&ms(t,e.mouseButton??0)&&!e.usedRightMouseButton&&s.sourceEvent&&i(s.sourceEvent),e.usedRightMouseButton=!1,o(!1),r)){const a=xn(s.transform);e.prevViewport=a,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{r?.(s.sourceEvent,a)},n?150:0)}}}function Gf({panActivationKeyPressed:e,zoomActivationKeyPressed:t,zoomOnScroll:n,zoomOnPinch:o,panOnDrag:r,panOnScroll:i,zoomOnDoubleClick:s,userSelectionActive:a,noWheelClassName:c,noPanClassName:l,lib:u,connectionInProgress:d}){return f=>{const h=t||n,p=o&&f.ctrlKey,y=f.type==="wheel";if(f.button===1&&f.type==="mousedown"&&(je(f,`${u}-flow__node`)||je(f,`${u}-flow__edge`)||je(f,`${u}-flow__selection`)||je(f,`${u}-flow__nodesselection`)))return!0;if(!r&&!h&&!i&&!s&&!o||a||d&&!y||je(f,c)&&y||je(f,l)&&(!y||i&&y&&!t)||!o&&f.ctrlKey&&y)return!1;if(!o&&f.type==="touchstart"&&f.touches?.length>1)return f.preventDefault(),!1;if(!h&&!i&&!p&&y||!r&&(f.type==="mousedown"||f.type==="touchstart")||Array.isArray(r)&&!r.includes(f.button)&&f.type==="mousedown")return!1;const w=Array.isArray(r)&&r.includes(f.button)||!f.button||f.button<=1;return(!f.ctrlKey||y||e)&&w}}function Wf({domNode:e,minZoom:t,maxZoom:n,translateExtent:o,viewport:r,onPanZoom:i,onPanZoomStart:s,onPanZoomEnd:a,onDraggingChange:c}){const l={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},u=e.getBoundingClientRect();let d=[[0,0],[u.width,u.height]];(typeof ResizeObserver<"u"?new ResizeObserver(D=>{const v=D[0];v&&(d=[[0,0],[v.contentRect.width,v.contentRect.height]])}):null)?.observe(e);const h=Fi().extent(()=>d).scaleExtent([t,n]).translateExtent(o),p=be(e).call(h);m({x:r.x,y:r.y,zoom:ft(r.zoom,t,n)},[[0,0],[u.width,u.height]],o);const y=p.on("wheel.zoom"),w=p.on("dblclick.zoom");h.wheelDelta(ys);async function x(D,v){return p?new Promise(C=>{h?.interpolate(v?.interpolate==="linear"?wt:Wt).transform(Hn(p,v?.duration,v?.ease,()=>C(!0)),D)}):!1}function E({noWheelClassName:D,noPanClassName:v,onPaneContextMenu:C,userSelectionActive:I,panOnScroll:k,panOnDrag:z,panOnScrollMode:P,panOnScrollSpeed:j,preventScrolling:V,zoomOnPinch:B,zoomOnScroll:Z,zoomOnDoubleClick:Y,panActivationKeyPressed:X=!1,zoomActivationKeyPressed:K,lib:U,onTransformChange:H,connectionInProgress:G,paneClickDistance:te,selectionOnDrag:ee}){I&&!l.isZoomingOrPanning&&g();const W=k&&!K&&!I;h.clickDistance(ee?1/0:!Ne(te)||te<0?0:te);const Q=W?Bf({zoomPanValues:l,noWheelClassName:D,d3Selection:p,d3Zoom:h,panOnScrollMode:P,panOnScrollSpeed:j,zoomOnPinch:B,onPanZoomStart:s,onPanZoom:i,onPanZoomEnd:a}):Ff({noWheelClassName:D,preventScrolling:V,d3ZoomHandler:y});p.on("wheel.zoom",Q,{passive:!1});const ne=Xf({zoomPanValues:l,onDraggingChange:c,onPanZoomStart:s});h.on("start",ne);const re=Yf({zoomPanValues:l,panOnDrag:z,onPaneContextMenu:!!C,onPanZoom:i,onTransformChange:H});h.on("zoom",re);const ae=Zf({zoomPanValues:l,panOnDrag:z,panOnScroll:k,onPaneContextMenu:C,onPanZoomEnd:a,onDraggingChange:c});h.on("end",ae);const R=Gf({panActivationKeyPressed:X,zoomActivationKeyPressed:K,panOnDrag:z,zoomOnScroll:Z,panOnScroll:k,zoomOnDoubleClick:Y,zoomOnPinch:B,userSelectionActive:I,noPanClassName:v,noWheelClassName:D,lib:U,connectionInProgress:G});h.filter(R),Y?p.on("dblclick.zoom",w):p.on("dblclick.zoom",null)}function g(){h.on("zoom",null)}async function m(D,v,C){const I=Rn(D),k=h?.constrain()(I,v,C);return k&&await x(k),k}async function _(D,v){const C=Rn(D);return await x(C,v),C}function S(D){if(p){const v=Rn(D),C=p.property("__zoom");(C.k!==D.zoom||C.x!==D.x||C.y!==D.y)&&h?.transform(p,v,null,{sync:!0})}}function N(){const D=p?Bi(p.node()):{x:0,y:0,k:1};return{x:D.x,y:D.y,zoom:D.k}}async function $(D,v){return p?new Promise(C=>{h?.interpolate(v?.interpolate==="linear"?wt:Wt).scaleTo(Hn(p,v?.duration,v?.ease,()=>C(!0)),D)}):!1}async function A(D,v){return p?new Promise(C=>{h?.interpolate(v?.interpolate==="linear"?wt:Wt).scaleBy(Hn(p,v?.duration,v?.ease,()=>C(!0)),D)}):!1}function O(D){h?.scaleExtent(D)}function T(D){h?.translateExtent(D)}function L(D){const v=!Ne(D)||D<0?0:D;h?.clickDistance(v)}return{update:E,destroy:g,setViewport:_,setViewportConstrained:m,getViewport:N,scaleTo:$,scaleBy:A,setScaleExtent:O,setTranslateExtent:T,syncViewport:S,setClickDistance:L}}var pt;(function(e){e.Line="line",e.Handle="handle"})(pt||(pt={}));function qf({width:e,prevWidth:t,height:n,prevHeight:o,affectsX:r,affectsY:i}){const s=e-t,a=n-o,c=[s>0?1:s<0?-1:0,a>0?1:a<0?-1:0];return s&&r&&(c[0]=c[0]*-1),a&&i&&(c[1]=c[1]*-1),c}function yr(e){const t=e.includes("right")||e.includes("left"),n=e.includes("bottom")||e.includes("top"),o=e.includes("left"),r=e.includes("top");return{isHorizontal:t,isVertical:n,affectsX:o,affectsY:r}}function He(e,t){return Math.max(0,t-e)}function Le(e,t){return Math.max(0,e-t)}function Bt(e,t,n){return Math.max(0,t-e,e-n)}function xr(e,t){return e?!t:t}function Uf(e,t,n,o,r,i,s,a){let{affectsX:c,affectsY:l}=t;const{isHorizontal:u,isVertical:d}=t,f=u&&d,{xSnapped:h,ySnapped:p}=n,{minWidth:y,maxWidth:w,minHeight:x,maxHeight:E}=o,{x:g,y:m,width:_,height:S,aspectRatio:N}=e;let $=Math.floor(u?h-e.pointerX:0),A=Math.floor(d?p-e.pointerY:0);const O=_+(c?-$:$),T=S+(l?-A:A),L=-i[0]*_,D=-i[1]*S;let v=Bt(O,y,w),C=Bt(T,x,E);if(s){let z=0,P=0;c&&$<0?z=He(g+$+L,s[0][0]):!c&&$>0&&(z=Le(g+O+L,s[1][0])),l&&A<0?P=He(m+A+D,s[0][1]):!l&&A>0&&(P=Le(m+T+D,s[1][1])),v=Math.max(v,z),C=Math.max(C,P)}if(a){let z=0,P=0;c&&$>0?z=Le(g+$,a[0][0]):!c&&$<0&&(z=He(g+O,a[1][0])),l&&A>0?P=Le(m+A,a[0][1]):!l&&A<0&&(P=He(m+T,a[1][1])),v=Math.max(v,z),C=Math.max(C,P)}if(r){if(u){const z=Bt(O/N,x,E)*N;if(v=Math.max(v,z),s){let P=0;!c&&!l||c&&!l&&f?P=Le(m+D+O/N,s[1][1])*N:P=He(m+D+(c?$:-$)/N,s[0][1])*N,v=Math.max(v,P)}if(a){let P=0;!c&&!l||c&&!l&&f?P=He(m+O/N,a[1][1])*N:P=Le(m+(c?$:-$)/N,a[0][1])*N,v=Math.max(v,P)}}if(d){const z=Bt(T*N,y,w)/N;if(C=Math.max(C,z),s){let P=0;!c&&!l||l&&!c&&f?P=Le(g+T*N+L,s[1][0])/N:P=He(g+(l?A:-A)*N+L,s[0][0])/N,C=Math.max(C,P)}if(a){let P=0;!c&&!l||l&&!c&&f?P=He(g+T*N,a[1][0])/N:P=Le(g+(l?A:-A)*N,a[0][0])/N,C=Math.max(C,P)}}}A=A+(A<0?C:-C),$=$+($<0?v:-v),r&&(f?O>T*N?A=(xr(c,l)?-$:$)/N:$=(xr(c,l)?-A:A)*N:u?(A=$/N,l=c):($=A*N,c=l));const I=c?g+$:g,k=l?m+A:m;return{width:_+(c?-$:$),height:S+(l?-A:A),x:i[0]*$*(c?-1:1)+I,y:i[1]*A*(l?-1:1)+k}}const xs={width:0,height:0,x:0,y:0},Kf={...xs,pointerX:0,pointerY:0,aspectRatio:1};function Qf(e,t,n){const o=t.position.x+e.position.x,r=t.position.y+e.position.y,i=e.measured.width??0,s=e.measured.height??0,a=n[0]*i,c=n[1]*s;return[[o-a,r-c],[o+i-a,r+s-c]]}function Jf({domNode:e,nodeId:t,getStoreItems:n,onChange:o,onEnd:r}){const i=be(e);let s={controlDirection:yr("bottom-right"),boundaries:{minWidth:0,minHeight:0,maxWidth:Number.MAX_VALUE,maxHeight:Number.MAX_VALUE},resizeDirection:void 0,keepAspectRatio:!1};function a({controlPosition:l,boundaries:u,keepAspectRatio:d,resizeDirection:f,onResizeStart:h,onResize:p,onResizeEnd:y,shouldResize:w}){let x={...xs},E={...Kf};s={boundaries:u,resizeDirection:f,keepAspectRatio:d,controlDirection:yr(l)};let g,m=null,_=[],S,N,$,A=!1;const O=Ii().on("start",T=>{const{nodeLookup:L,transform:D,snapGrid:v,snapToGrid:C,nodeOrigin:I,paneDomNode:k}=n();if(g=L.get(t),!g)return;m=k?.getBoundingClientRect()??null;const{xSnapped:z,ySnapped:P}=vt(T.sourceEvent,{transform:D,snapGrid:v,snapToGrid:C,containerBounds:m});x={width:g.measured.width??0,height:g.measured.height??0,x:g.position.x??0,y:g.position.y??0},E={...x,pointerX:z,pointerY:P,aspectRatio:x.width/x.height},S=void 0,N=Ue(g.extent)?g.extent:void 0,g.parentId&&(g.extent==="parent"||g.expandParent)&&(S=L.get(g.parentId)),S&&g.extent==="parent"&&(N=[[0,0],[S.measured.width,S.measured.height]]),_=[],$=void 0;for(const[j,V]of L)if(V.parentId===t&&(_.push({id:j,position:{...V.position},extent:V.extent}),V.extent==="parent"||V.expandParent)){const B=Qf(V,g,V.origin??I);$?$=[[Math.min(B[0][0],$[0][0]),Math.min(B[0][1],$[0][1])],[Math.max(B[1][0],$[1][0]),Math.max(B[1][1],$[1][1])]]:$=B}h?.(T,{...x})}).on("drag",T=>{const{transform:L,snapGrid:D,snapToGrid:v,nodeOrigin:C}=n(),I=vt(T.sourceEvent,{transform:L,snapGrid:D,snapToGrid:v,containerBounds:m}),k=[];if(!g)return;const{x:z,y:P,width:j,height:V}=x,B={},Z=g.origin??C,{width:Y,height:X,x:K,y:U}=Uf(E,s.controlDirection,I,s.boundaries,s.keepAspectRatio,Z,N,$),H=Y!==j,G=X!==V,te=K!==z&&H,ee=U!==P&&G;if(!te&&!ee&&!H&&!G)return;if((te||ee||Z[0]===1||Z[1]===1)&&(B.x=te?K:x.x,B.y=ee?U:x.y,x.x=B.x,x.y=B.y,_.length>0)){const re=K-z,ae=U-P;for(const R of _)R.position={x:R.position.x-re+Z[0]*(Y-j),y:R.position.y-ae+Z[1]*(X-V)},k.push(R)}if((H||G)&&(B.width=H&&(!s.resizeDirection||s.resizeDirection==="horizontal")?Y:x.width,B.height=G&&(!s.resizeDirection||s.resizeDirection==="vertical")?X:x.height,x.width=B.width,x.height=B.height),S&&g.expandParent){const re=Z[0]*(B.width??0);B.x&&B.x<re&&(x.x=re,E.x=E.x-(B.x-re));const ae=Z[1]*(B.height??0);B.y&&B.y<ae&&(x.y=ae,E.y=E.y-(B.y-ae))}const W=qf({width:x.width,prevWidth:j,height:x.height,prevHeight:V,affectsX:s.controlDirection.affectsX,affectsY:s.controlDirection.affectsY}),Q={...x,direction:W};w?.(T,Q)!==!1&&(A=!0,p?.(T,Q),o(B,k))}).on("end",T=>{A&&(y?.(T,{...x}),r?.({...x}),A=!1)});i.call(O)}function c(){i.on(".drag",null)}return{update:a,destroy:c}}var Ln={exports:{}},On={},jn={exports:{}},Vn={};/**
2
+ * @license React
3
+ * use-sync-external-store-shim.production.js
4
+ *
5
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */var wr;function eh(){if(wr)return Vn;wr=1;var e=di();function t(d,f){return d===f&&(d!==0||1/d===1/f)||d!==d&&f!==f}var n=typeof Object.is=="function"?Object.is:t,o=e.useState,r=e.useEffect,i=e.useLayoutEffect,s=e.useDebugValue;function a(d,f){var h=f(),p=o({inst:{value:h,getSnapshot:f}}),y=p[0].inst,w=p[1];return i(function(){y.value=h,y.getSnapshot=f,c(y)&&w({inst:y})},[d,h,f]),r(function(){return c(y)&&w({inst:y}),d(function(){c(y)&&w({inst:y})})},[d]),s(h),h}function c(d){var f=d.getSnapshot;d=d.value;try{var h=f();return!n(d,h)}catch{return!0}}function l(d,f){return f()}var u=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?l:a;return Vn.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:u,Vn}var vr;function th(){return vr||(vr=1,jn.exports=eh()),jn.exports}/**
10
+ * @license React
11
+ * use-sync-external-store-shim/with-selector.production.js
12
+ *
13
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
14
+ *
15
+ * This source code is licensed under the MIT license found in the
16
+ * LICENSE file in the root directory of this source tree.
17
+ */var br;function nh(){if(br)return On;br=1;var e=di(),t=th();function n(l,u){return l===u&&(l!==0||1/l===1/u)||l!==l&&u!==u}var o=typeof Object.is=="function"?Object.is:n,r=t.useSyncExternalStore,i=e.useRef,s=e.useEffect,a=e.useMemo,c=e.useDebugValue;return On.useSyncExternalStoreWithSelector=function(l,u,d,f,h){var p=i(null);if(p.current===null){var y={hasValue:!1,value:null};p.current=y}else y=p.current;p=a(function(){function x(S){if(!E){if(E=!0,g=S,S=f(S),h!==void 0&&y.hasValue){var N=y.value;if(h(N,S))return m=N}return m=S}if(N=m,o(g,S))return N;var $=f(S);return h!==void 0&&h(N,$)?(g=S,N):(g=S,m=$)}var E=!1,g,m,_=d===void 0?null:d;return[function(){return x(u())},_===null?void 0:function(){return x(_())}]},[u,d,f,h]);var w=r(l,p[0],p[1]);return s(function(){y.hasValue=!0,y.value=w},[w]),c(w),w},On}var Sr;function oh(){return Sr||(Sr=1,Ln.exports=nh()),Ln.exports}var rh=oh();const ih=rc(rh),sh={},Er=e=>{let t;const n=new Set,o=(u,d)=>{const f=typeof u=="function"?u(t):u;if(!Object.is(f,t)){const h=t;t=d??(typeof f!="object"||f===null)?f:Object.assign({},t,f),n.forEach(p=>p(t,h))}},r=()=>t,c={setState:o,getState:r,getInitialState:()=>l,subscribe:u=>(n.add(u),()=>n.delete(u)),destroy:()=>{(sh?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}},l=t=e(o,r,c);return c},ah=e=>e?Er(e):Er,{useDebugValue:ch}=ic,{useSyncExternalStoreWithSelector:lh}=ih,uh=e=>e;function ws(e,t=uh,n){const o=lh(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return ch(o),o}const _r=(e,t)=>{const n=ah(e),o=(r,i=t)=>ws(n,r,i);return Object.assign(o,n),o},dh=(e,t)=>e?_r(e,t):_r;function le(e,t){if(Object.is(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(const[o,r]of e)if(!Object.is(r,t.get(o)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(const o of e)if(!t.has(o))return!1;return!0}const n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(const o of n)if(!Object.prototype.hasOwnProperty.call(t,o)||!Object.is(e[o],t[o]))return!1;return!0}const wn=M.createContext(null),fh=wn.Provider,vs=Me.error001("react");function oe(e,t){const n=M.useContext(wn);if(n===null)throw new Error(vs);return ws(n,e,t)}function ce(){const e=M.useContext(wn);if(e===null)throw new Error(vs);return M.useMemo(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}const Nr={display:"none"},hh={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},bs="react-flow__node-desc",Ss="react-flow__edge-desc",ph="react-flow__aria-live",gh=e=>e.ariaLiveMessage,mh=e=>e.ariaLabelConfig;function yh({rfId:e}){const t=oe(gh);return b.jsx("div",{id:`${ph}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:hh,children:t})}function xh({rfId:e,disableKeyboardA11y:t}){const n=oe(mh);return b.jsxs(b.Fragment,{children:[b.jsx("div",{id:`${bs}-${e}`,style:Nr,children:t?n["node.a11yDescription.default"]:n["node.a11yDescription.keyboardDisabled"]}),b.jsx("div",{id:`${Ss}-${e}`,style:Nr,children:n["edge.a11yDescription.default"]}),!t&&b.jsx(yh,{rfId:e})]})}const vn=M.forwardRef(({position:e="top-left",children:t,className:n,style:o,...r},i)=>{const s=`${e}`.split("-");return b.jsx("div",{className:fe(["react-flow__panel",n,...s]),style:o,ref:i,...r,children:t})});vn.displayName="Panel";const Cr="https://reactflow.dev?utm_source=attribution";function wh({proOptions:e,position:t="bottom-right"}){return e?.hideAttribution?null:b.jsx(vn,{position:t,className:"react-flow__attribution","data-message":`Please only hide this attribution when you are subscribed to React Flow Pro: ${Cr}`,children:b.jsx("a",{href:Cr,target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}const vh=e=>{const t=[],n=[];for(const[,o]of e.nodeLookup)o.selected&&t.push(o.internals.userNode);for(const[,o]of e.edgeLookup)o.selected&&n.push(o);return{selectedNodes:t,selectedEdges:n}},Ft=e=>e.id;function bh(e,t){return le(e.selectedNodes.map(Ft),t.selectedNodes.map(Ft))&&le(e.selectedEdges.map(Ft),t.selectedEdges.map(Ft))}function Sh({onSelectionChange:e}){const t=ce(),{selectedNodes:n,selectedEdges:o}=oe(vh,bh);return M.useEffect(()=>{const r={nodes:n,edges:o};e?.(r),t.getState().onSelectionChangeHandlers.forEach(i=>i(r))},[n,o,e]),null}const Eh=e=>!!e.onSelectionChangeHandlers;function _h({onSelectionChange:e}){const t=oe(Eh);return e||t?b.jsx(Sh,{onSelectionChange:e}):null}const Es=[0,0],Nh={x:0,y:0,zoom:1},Ch=["nodes","edges","defaultNodes","defaultEdges","onConnect","onConnectStart","onConnectEnd","onClickConnectStart","onClickConnectEnd","nodesDraggable","autoPanOnNodeFocus","nodesConnectable","nodesFocusable","edgesFocusable","edgesReconnectable","elevateNodesOnSelect","elevateEdgesOnSelect","minZoom","maxZoom","nodeExtent","onNodesChange","onEdgesChange","elementsSelectable","connectionMode","snapGrid","snapToGrid","translateExtent","connectOnClick","defaultEdgeOptions","fitView","fitViewOptions","onNodesDelete","onEdgesDelete","onDelete","onNodeDrag","onNodeDragStart","onNodeDragStop","onSelectionDrag","onSelectionDragStart","onSelectionDragStop","onMoveStart","onMove","onMoveEnd","noPanClassName","nodeOrigin","autoPanOnConnect","autoPanOnNodeDrag","onError","connectionRadius","isValidConnection","selectNodesOnDrag","nodeDragThreshold","connectionDragThreshold","onBeforeDelete","debug","autoPanSpeed","ariaLabelConfig","zIndexMode"],Mr=[...Ch,"rfId"],Mh=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges}),Ir={translateExtent:Nt,nodeOrigin:Es,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1"};function Ih(e){const{setNodes:t,setEdges:n,setMinZoom:o,setMaxZoom:r,setTranslateExtent:i,setNodeExtent:s,reset:a,setDefaultNodesAndEdges:c}=oe(Mh,le),l=ce();M.useEffect(()=>(c(e.defaultNodes,e.defaultEdges),()=>{u.current=Ir,a()}),[]);const u=M.useRef(Ir);return M.useEffect(()=>{for(const d of Mr){const f=e[d],h=u.current[d];f!==h&&(typeof e[d]>"u"||(d==="nodes"?t(f):d==="edges"?n(f):d==="minZoom"?o(f):d==="maxZoom"?r(f):d==="translateExtent"?i(f):d==="nodeExtent"?s(f):d==="ariaLabelConfig"?l.setState({ariaLabelConfig:ff(f)}):d==="fitView"?l.setState({fitViewQueued:f}):d==="fitViewOptions"?l.setState({fitViewOptions:f}):l.setState({[d]:f})))}u.current=e},Mr.map(d=>e[d])),null}function kr(){return typeof window>"u"||!window.matchMedia?null:window.matchMedia("(prefers-color-scheme: dark)")}function kh(e){const[t,n]=M.useState(e==="system"?null:e);return M.useEffect(()=>{if(e!=="system"){n(e);return}const o=kr(),r=()=>n(o?.matches?"dark":"light");return r(),o?.addEventListener("change",r),()=>{o?.removeEventListener("change",r)}},[e]),t!==null?t:kr()?.matches?"dark":"light"}const $r=typeof document<"u"?document:null;function It(e=null,t={target:$r,actInsideInputWithModifier:!0}){const[n,o]=M.useState(!1),r=M.useRef(!1),i=M.useRef(new Set([])),[s,a]=M.useMemo(()=>{if(e!==null){const l=(Array.isArray(e)?e:[e]).filter(d=>typeof d=="string").map(d=>d.replace(/\+/g,`
18
+ `).replace(`
19
+
20
+ `,`
21
+ +`).split(`
22
+ `)),u=l.reduce((d,f)=>d.concat(...f),[]);return[l,u]}return[[],[]]},[e]);return M.useEffect(()=>{const c=t?.target??$r,l=t?.actInsideInputWithModifier??!0;if(e!==null){const u=h=>{if(r.current=h.ctrlKey||h.metaKey||h.shiftKey||h.altKey,(!r.current||r.current&&!l)&&ns(h))return!1;const y=Pr(h.code,a);if(i.current.add(h[y]),Ar(s,i.current,!1)){const w=h.composedPath?.()?.[0]||h.target,x=w?.nodeName==="BUTTON"||w?.nodeName==="A";t.preventDefault!==!1&&(r.current||!x)&&h.preventDefault(),o(!0)}},d=h=>{const p=Pr(h.code,a);Ar(s,i.current,!0)?(o(!1),i.current.clear()):i.current.delete(h[p]),h.key==="Meta"&&i.current.clear(),r.current=!1},f=()=>{i.current.clear(),o(!1)};return c?.addEventListener("keydown",u),c?.addEventListener("keyup",d),window.addEventListener("blur",f),window.addEventListener("contextmenu",f),()=>{c?.removeEventListener("keydown",u),c?.removeEventListener("keyup",d),window.removeEventListener("blur",f),window.removeEventListener("contextmenu",f)}}},[e,o]),n}function Ar(e,t,n){return e.filter(o=>n||o.length===t.size).some(o=>o.every(r=>t.has(r)))}function Pr(e,t){return t.includes(e)?"code":"key"}const $h=()=>{const e=ce();return M.useMemo(()=>({zoomIn:async t=>{const{panZoom:n}=e.getState();return n?n.scaleBy(1.2,t):!1},zoomOut:async t=>{const{panZoom:n}=e.getState();return n?n.scaleBy(1/1.2,t):!1},zoomTo:async(t,n)=>{const{panZoom:o}=e.getState();return o?o.scaleTo(t,n):!1},getZoom:()=>e.getState().transform[2],setViewport:async(t,n)=>{const{transform:[o,r,i],panZoom:s}=e.getState();return s?(await s.setViewport({x:t.x??o,y:t.y??r,zoom:t.zoom??i},n),!0):!1},getViewport:()=>{const[t,n,o]=e.getState().transform;return{x:t,y:n,zoom:o}},setCenter:async(t,n,o)=>e.getState().setCenter(t,n,o),fitBounds:async(t,n)=>{const{width:o,height:r,minZoom:i,maxZoom:s,panZoom:a}=e.getState(),c=So(t,o,r,i,s,n?.padding??.1);return a?(await a.setViewport(c,{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),!0):!1},screenToFlowPosition:(t,n={})=>{const{transform:o,snapGrid:r,snapToGrid:i,domNode:s}=e.getState();if(!s)return t;const{x:a,y:c}=s.getBoundingClientRect(),l={x:t.x-a,y:t.y-c},u=n.snapGrid??r,d=n.snapToGrid??i;return zt(l,o,d,u)},flowToScreenPosition:t=>{const{transform:n,domNode:o}=e.getState();if(!o)return t;const{x:r,y:i}=o.getBoundingClientRect(),s=ht(t,n);return{x:s.x+r,y:s.y+i}}}),[])};function _s(e,t){const n=[],o=new Map,r=[];for(const i of e)if(i.type==="add"){r.push(i);continue}else if(i.type==="remove"||i.type==="replace")o.set(i.id,[i]);else{const s=o.get(i.id);s?s.push(i):o.set(i.id,[i])}for(const i of t){const s=o.get(i.id);if(!s){n.push(i);continue}if(s[0].type==="remove")continue;if(s[0].type==="replace"){n.push({...s[0].item});continue}const a={...i};for(const c of s)Ah(c,a);n.push(a)}return r.length&&r.forEach(i=>{i.index!==void 0?n.splice(i.index,0,{...i.item}):n.push({...i.item})}),n}function Ah(e,t){switch(e.type){case"select":{t.selected=e.selected;break}case"position":{typeof e.position<"u"&&(t.position=e.position),typeof e.dragging<"u"&&(t.dragging=e.dragging);break}case"dimensions":{typeof e.dimensions<"u"&&(t.measured={...e.dimensions},e.setAttributes&&((e.setAttributes===!0||e.setAttributes==="width")&&(t.width=e.dimensions.width),(e.setAttributes===!0||e.setAttributes==="height")&&(t.height=e.dimensions.height))),typeof e.resizing=="boolean"&&(t.resizing=e.resizing);break}}}function Ph(e,t){return _s(e,t)}function Th(e,t){return _s(e,t)}function Fe(e,t){return{id:e,type:"select",selected:t}}function it(e,t=new Set,n=!1){const o=[];for(const[r,i]of e){const s=t.has(r);!(i.selected===void 0&&!s)&&i.selected!==s&&(n&&(i.selected=s),o.push(Fe(i.id,s)))}return o}function Tr({items:e=[],lookup:t}){const n=[],o=new Map(e.map(r=>[r.id,r]));for(const[r,i]of e.entries()){const s=t.get(i.id),a=s?.internals?.userNode??s;a!==void 0&&a!==i&&n.push({id:i.id,item:i,type:"replace"}),a===void 0&&n.push({item:i,type:"add",index:r})}for(const[r]of t)o.get(r)===void 0&&n.push({id:r,type:"remove"});return n}function zr(e){return{id:e.id,type:"remove"}}const zh=Ji();function Dh(e,t,n={}){return xf(e,t,{...n,onError:n.onError??zh})}const Dr=e=>nf(e),Rh=e=>Wi(e);function Ns(e){return M.forwardRef(e)}const Cs=typeof window<"u"?M.useLayoutEffect:M.useEffect;function Rr(e){const[t,n]=M.useState(BigInt(0)),[o]=M.useState(()=>Hh(()=>n(r=>r+BigInt(1))));return Cs(()=>{const r=o.get();r.length&&(e(r),o.reset())},[t]),o}function Hh(e){let t=[];return{get:()=>t,reset:()=>{t=[]},push:n=>{t.push(n),e()}}}const Ms=M.createContext(null);function Lh({children:e}){const t=ce(),n=M.useCallback(a=>{const{nodes:c=[],setNodes:l,hasDefaultNodes:u,onNodesChange:d,nodeLookup:f,fitViewQueued:h,onNodesChangeMiddlewareMap:p}=t.getState();let y=c;for(const x of a)y=typeof x=="function"?x(y):x;let w=Tr({items:y,lookup:f});for(const x of p.values())w=x(w);u&&l(y),w.length>0?d?.(w):h&&window.requestAnimationFrame(()=>{const{fitViewQueued:x,nodes:E,setNodes:g}=t.getState();x&&g(E)})},[]),o=Rr(n),r=M.useCallback(a=>{const{edges:c=[],setEdges:l,hasDefaultEdges:u,onEdgesChange:d,edgeLookup:f}=t.getState();let h=c;for(const p of a)h=typeof p=="function"?p(h):p;u?l(h):d&&d(Tr({items:h,lookup:f}))},[]),i=Rr(r),s=M.useMemo(()=>({nodeQueue:o,edgeQueue:i}),[]);return b.jsx(Ms.Provider,{value:s,children:e})}function Oh(){const e=M.useContext(Ms);if(!e)throw new Error("useBatchContext must be used within a BatchProvider");return e}const jh=e=>!!e.panZoom;function Dt(){const e=$h(),t=ce(),n=Oh(),o=oe(jh),r=M.useMemo(()=>{const i=d=>t.getState().nodeLookup.get(d),s=d=>{n.nodeQueue.push(d)},a=d=>{n.edgeQueue.push(d)},c=d=>{const{nodeLookup:f,nodeOrigin:h}=t.getState(),p=Dr(d)?d:f.get(d.id),y=p.parentId?es(p.position,p.measured,p.parentId,f,h):p.position,w={...p,position:y,width:p.measured?.width??p.width,height:p.measured?.height??p.height};return Ct(w)},l=(d,f,h={replace:!1})=>{s(p=>p.map(y=>{if(y.id===d){const w=typeof f=="function"?f(y):f;return h.replace&&Dr(w)?w:{...y,...w}}return y}))},u=(d,f,h={replace:!1})=>{a(p=>p.map(y=>{if(y.id===d){const w=typeof f=="function"?f(y):f;return h.replace&&Rh(w)?w:{...y,...w}}return y}))};return{getNodes:()=>t.getState().nodes.map(d=>({...d})),getNode:d=>i(d)?.internals.userNode,getInternalNode:i,getEdges:()=>{const{edges:d=[]}=t.getState();return d.map(f=>({...f}))},getEdge:d=>t.getState().edgeLookup.get(d),setNodes:s,setEdges:a,addNodes:d=>{const f=Array.isArray(d)?d:[d];n.nodeQueue.push(h=>[...h,...f])},addEdges:d=>{const f=Array.isArray(d)?d:[d];n.edgeQueue.push(h=>[...h,...f])},toObject:()=>{const{nodes:d=[],edges:f=[],transform:h}=t.getState(),[p,y,w]=h;return{nodes:d.map(x=>({...x})),edges:f.map(x=>({...x})),viewport:{x:p,y,zoom:w}}},deleteElements:async({nodes:d=[],edges:f=[]})=>{const{nodes:h,edges:p,onNodesDelete:y,onEdgesDelete:w,triggerNodeChanges:x,triggerEdgeChanges:E,onDelete:g,onBeforeDelete:m}=t.getState(),{nodes:_,edges:S}=await cf({nodesToRemove:d,edgesToRemove:f,nodes:h,edges:p,onBeforeDelete:m}),N=S.length>0,$=_.length>0;if(N){const A=S.map(zr);w?.(S),E(A)}if($){const A=_.map(zr);y?.(_),x(A)}return($||N)&&g?.({nodes:_,edges:S}),{deletedNodes:_,deletedEdges:S}},getIntersectingNodes:(d,f=!0,h)=>{const p=sr(d),y=p?d:c(d),w=h!==void 0;return y?(h||t.getState().nodes).filter(x=>{const E=t.getState().nodeLookup.get(x.id);if(E&&!p&&(x.id===d.id||!E.internals.positionAbsolute))return!1;const g=Ct(w?x:E),m=cn(g,y);return f&&m>0||m>=g.width*g.height||m>=y.width*y.height}):[]},isNodeIntersecting:(d,f,h=!0)=>{const y=sr(d)?d:c(d);if(!y)return!1;const w=cn(y,f);return h&&w>0||w>=f.width*f.height||w>=y.width*y.height},updateNode:l,updateNodeData:(d,f,h={replace:!1})=>{l(d,p=>{const y=typeof f=="function"?f(p):f;return h.replace?{...p,data:y}:{...p,data:{...p.data,...y}}},h)},updateEdge:u,updateEdgeData:(d,f,h={replace:!1})=>{u(d,p=>{const y=typeof f=="function"?f(p):f;return h.replace?{...p,data:y}:{...p,data:{...p.data,...y}}},h)},getNodesBounds:d=>{const{nodeLookup:f,nodeOrigin:h}=t.getState();return of(d,{nodeLookup:f,nodeOrigin:h})},getHandleConnections:({type:d,id:f,nodeId:h})=>Array.from(t.getState().connectionLookup.get(`${h}-${d}${f?`-${f}`:""}`)?.values()??[]),getNodeConnections:({type:d,handleId:f,nodeId:h})=>Array.from(t.getState().connectionLookup.get(`${h}${d?f?`-${d}-${f}`:`-${d}`:""}`)?.values()??[]),fitView:async d=>{const f=t.getState().fitViewResolver??df();return t.setState({fitViewQueued:!0,fitViewOptions:d,fitViewResolver:f}),n.nodeQueue.push(h=>[...h]),f.promise}}},[]);return M.useMemo(()=>({...r,...e,viewportInitialized:o}),[o])}const Hr=e=>e.selected,Vh=typeof window<"u"?window:void 0;function Bh({deleteKeyCode:e,multiSelectionKeyCode:t}){const n=ce(),{deleteElements:o}=Dt(),r=It(e,{actInsideInputWithModifier:!1}),i=It(t,{target:Vh});M.useEffect(()=>{if(r){const{edges:s,nodes:a}=n.getState();o({nodes:a.filter(Hr),edges:s.filter(Hr)}),n.setState({nodesSelectionActive:!1})}},[r]),M.useEffect(()=>{n.setState({multiSelectionActive:i})},[i])}function Fh(e){const t=ce();M.useEffect(()=>{const n=()=>{if(!e.current||!(e.current.checkVisibility?.()??!0))return!1;const o=_o(e.current);(o.height===0||o.width===0)&&t.getState().onError?.("004",Me.error004()),t.setState({width:o.width||500,height:o.height||500})};if(e.current){n(),window.addEventListener("resize",n);const o=new ResizeObserver(()=>n());return o.observe(e.current),()=>{window.removeEventListener("resize",n),o&&e.current&&o.unobserve(e.current)}}},[])}const bn={position:"absolute",width:"100%",height:"100%",top:0,left:0},Xh=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function Yh({onPaneContextMenu:e,zoomOnScroll:t=!0,zoomOnPinch:n=!0,panOnScroll:o=!1,panActivationKeyPressed:r,panOnScrollSpeed:i=.5,panOnScrollMode:s=Ze.Free,zoomOnDoubleClick:a=!0,panOnDrag:c=!0,defaultViewport:l,translateExtent:u,minZoom:d,maxZoom:f,zoomActivationKeyCode:h,preventScrolling:p=!0,children:y,noWheelClassName:w,noPanClassName:x,onViewportChange:E,isControlledViewport:g,paneClickDistance:m,selectionOnDrag:_}){const S=ce(),N=M.useRef(null),{userSelectionActive:$,lib:A,connectionInProgress:O}=oe(Xh,le),T=It(h),L=M.useRef();Fh(N);const D=M.useCallback(v=>{E?.({x:v[0],y:v[1],zoom:v[2]}),g||S.setState({transform:v})},[E,g]);return M.useEffect(()=>{if(N.current){L.current=Wf({domNode:N.current,minZoom:d,maxZoom:f,translateExtent:u,viewport:l,onDraggingChange:k=>S.setState(z=>z.paneDragging===k?z:{paneDragging:k}),onPanZoomStart:(k,z)=>{const{onViewportChangeStart:P,onMoveStart:j}=S.getState();j?.(k,z),P?.(z)},onPanZoom:(k,z)=>{const{onViewportChange:P,onMove:j}=S.getState();j?.(k,z),P?.(z)},onPanZoomEnd:(k,z)=>{const{onViewportChangeEnd:P,onMoveEnd:j}=S.getState();j?.(k,z),P?.(z)}});const{x:v,y:C,zoom:I}=L.current.getViewport();return S.setState({panZoom:L.current,transform:[v,C,I],domNode:N.current.closest(".react-flow")}),()=>{L.current?.destroy()}}},[]),M.useEffect(()=>{L.current?.update({onPaneContextMenu:e,zoomOnScroll:t,zoomOnPinch:n,panOnScroll:o,panActivationKeyPressed:r,panOnScrollSpeed:i,panOnScrollMode:s,zoomOnDoubleClick:a,panOnDrag:c,zoomActivationKeyPressed:T,preventScrolling:p,noPanClassName:x,userSelectionActive:$,noWheelClassName:w,lib:A,onTransformChange:D,connectionInProgress:O,selectionOnDrag:_,paneClickDistance:m})},[e,t,n,o,r,i,s,a,c,T,p,x,$,w,A,D,O,_,m]),b.jsx("div",{className:"react-flow__renderer",ref:N,style:bn,children:y})}const Zh=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function Gh(){const{userSelectionActive:e,userSelectionRect:t}=oe(Zh,le);return e&&t?b.jsx("div",{className:"react-flow__selection react-flow__container",style:{width:t.width,height:t.height,transform:`translate(${t.x}px, ${t.y}px)`}}):null}const Bn=(e,t)=>n=>{n.target===t.current&&e?.(n)},Wh=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging,panBy:e.panBy,autoPanSpeed:e.autoPanSpeed});function qh({isSelecting:e,selectionKeyPressed:t,selectionMode:n=dt.Full,panOnDrag:o,autoPanOnSelection:r,paneClickDistance:i,selectionOnDrag:s,onSelectionStart:a,onSelectionEnd:c,onPaneClick:l,onPaneContextMenu:u,onPaneScroll:d,onPaneMouseEnter:f,onPaneMouseMove:h,onPaneMouseLeave:p,children:y}){const w=M.useRef(0),x=ce(),{userSelectionActive:E,elementsSelectable:g,dragging:m,panBy:_,autoPanSpeed:S}=oe(Wh,le),N=g&&(e||E),$=M.useRef(null),A=M.useRef(),O=M.useRef(new Set),T=M.useRef(new Set),L=M.useRef(!1),D=M.useRef(!1),v=M.useRef({x:0,y:0}),C=M.useRef(!1),I=H=>{if(D.current||L.current||x.getState().connection.inProgress){D.current=!1,L.current=!1;return}l?.(H),x.getState().resetSelectedElements(),x.setState({nodesSelectionActive:!1})},k=H=>{if(Array.isArray(o)&&o?.includes(2)){H.preventDefault();return}u?.(H)},z=d?H=>d(H):void 0,P=H=>{D.current&&(H.stopPropagation(),D.current=!1)},j=H=>{if(H.pointerType==="touch"&&o!==!1&&!t)return;const{domNode:G,transform:te}=x.getState();if(A.current=G?.getBoundingClientRect(),!A.current)return;const ee=H.target===$.current;if(!ee&&!!H.target.closest(".nokey")||!e||!(s&&ee||t)||H.button!==0||!H.isPrimary)return;H.target?.setPointerCapture?.(H.pointerId),D.current=!1;const{x:ne,y:re}=Ce(H.nativeEvent,A.current),ae=zt({x:ne,y:re},te);x.setState({userSelectionRect:{width:0,height:0,startX:ae.x,startY:ae.y,x:ne,y:re}}),ee||(H.stopPropagation(),H.preventDefault())};function V(H,G){const{userSelectionRect:te}=x.getState();if(!te)return;const{transform:ee,nodeLookup:W,edgeLookup:Q,connectionLookup:ne,triggerNodeChanges:re,triggerEdgeChanges:ae,defaultEdgeOptions:R}=x.getState(),F={x:te.startX,y:te.startY},{x:J,y:se}=ht(F,ee),de={startX:F.x,startY:F.y,x:H<J?H:J,y:G<se?G:se,width:Math.abs(H-J),height:Math.abs(G-se)},ye=O.current,ie=T.current;O.current=new Set(vo(W,de,ee,n===dt.Partial,!0).map(pe=>pe.id)),T.current=new Set;const he=R?.selectable??!0;for(const pe of O.current){const ge=ne.get(pe);if(ge)for(const{edgeId:me}of ge.values()){const xe=Q.get(me);xe&&(xe.selectable??he)&&T.current.add(me)}}if(!ar(ye,O.current)){const pe=it(W,O.current,!0);re(pe)}if(!ar(ie,T.current)){const pe=it(Q,T.current);ae(pe)}x.setState({userSelectionRect:de,userSelectionActive:!0,nodesSelectionActive:!1})}function B(){if(!r||!A.current)return;const[H,G]=bo(v.current,A.current,S);_({x:H,y:G}).then(te=>{if(!D.current||!te){w.current=requestAnimationFrame(B);return}const{x:ee,y:W}=v.current;V(ee,W),w.current=requestAnimationFrame(B)})}const Z=()=>{cancelAnimationFrame(w.current),w.current=0,C.current=!1};M.useEffect(()=>()=>Z(),[]);const Y=H=>{const{userSelectionRect:G,transform:te,resetSelectedElements:ee}=x.getState();if(!A.current||!G)return;const{x:W,y:Q}=Ce(H.nativeEvent,A.current);v.current={x:W,y:Q};const ne=ht({x:G.startX,y:G.startY},te);if(!D.current){const re=t?0:i;if(Math.hypot(W-ne.x,Q-ne.y)<=re)return;ee(),a?.(H)}D.current=!0,C.current||(B(),C.current=!0),V(W,Q)},X=H=>{if(!N){H.target===$.current&&x.getState().connection.inProgress&&(L.current=!0);return}H.button===0&&(H.target?.releasePointerCapture?.(H.pointerId),!E&&H.target===$.current&&x.getState().userSelectionRect&&I?.(H),x.setState({userSelectionActive:!1,userSelectionRect:null}),D.current&&(c?.(H),x.setState({nodesSelectionActive:O.current.size>0})),Z())},K=H=>{H.target?.releasePointerCapture?.(H.pointerId),Z()},U=o===!0||Array.isArray(o)&&o.includes(0);return b.jsxs("div",{className:fe(["react-flow__pane",{draggable:U,dragging:m,selection:e}]),onClick:N?void 0:Bn(I,$),onContextMenu:Bn(k,$),onWheel:Bn(z,$),onPointerEnter:N?void 0:f,onPointerMove:N?Y:h,onPointerUp:X,onPointerCancel:N?K:void 0,onPointerDownCapture:N?j:void 0,onClickCapture:N?P:void 0,onPointerLeave:p,ref:$,style:bn,children:[y,b.jsx(Gh,{})]})}function io({id:e,store:t,unselect:n=!1,nodeRef:o}){const{addSelectedNodes:r,unselectNodesAndEdges:i,multiSelectionActive:s,nodeLookup:a,onError:c}=t.getState(),l=a.get(e);if(!l){c?.("012",Me.error012(e));return}t.setState({nodesSelectionActive:!1}),l.selected?(n||l.selected&&s)&&(i({nodes:[l],edges:[]}),requestAnimationFrame(()=>o?.current?.blur())):r([e])}function Is({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:o,nodeId:r,isSelectable:i,nodeClickDistance:s}){const a=ce(),[c,l]=M.useState(!1),u=M.useRef();return M.useEffect(()=>{if(!t)return u.current=zf({getStoreItems:()=>a.getState(),onNodeMouseDown:d=>{io({id:d,store:a,nodeRef:e})},onDragStart:()=>{l(!0)},onDragStop:()=>{l(!1)}}),()=>{u.current?.destroy(),u.current=void 0}},[t,a,e]),M.useEffect(()=>{t||!e.current||!u.current||u.current.update({noDragClassName:n,handleSelector:o,domNode:e.current,isSelectable:i,nodeId:r,nodeClickDistance:s})},[n,o,t,i,e,r,s]),c}const Uh=e=>t=>t.selected&&(t.draggable||e&&typeof t.draggable>"u");function ks(){const e=ce();return M.useCallback(n=>{const{nodeExtent:o,snapToGrid:r,snapGrid:i,nodesDraggable:s,onError:a,updateNodePositions:c,nodeLookup:l,nodeOrigin:u}=e.getState(),d=new Map,f=Uh(s),h=r?i[0]:5,p=r?i[1]:5,y=n.direction.x*h*n.factor,w=n.direction.y*p*n.factor;for(const[,x]of l){if(!f(x))continue;let E={x:x.internals.positionAbsolute.x+y,y:x.internals.positionAbsolute.y+w};r&&(E=Tt(E,i));const{position:g,positionAbsolute:m}=qi({nodeId:x.id,nextPosition:E,nodeLookup:l,nodeExtent:o,nodeOrigin:u,onError:a});x.position=g,x.internals.positionAbsolute=m,d.set(x.id,x)}c(d)},[])}const $o=M.createContext(null),Kh=$o.Provider;$o.Consumer;const $s=()=>M.useContext($o),Qh=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),As=M.createContext(null);function Jh({children:e}){const t=oe(Qh,le);return b.jsx(As.Provider,{value:t,children:e})}function ep(){const e=M.useContext(As);if(!e)throw new Error("useHandleConfig must be used within a HandleConfigProvider");return e}const tp={connectingFrom:!1,connectingTo:!1,clickConnecting:!1,isPossibleEndHandle:!0,connectionInProcess:!1,clickConnectionInProcess:!1,valid:!1},np=(e,t,n)=>o=>{const{connectionClickStartHandle:r,connectionMode:i,connection:s}=o,{fromHandle:a,toHandle:c,isValid:l}=s;if(!a&&!r)return tp;const u=c?.nodeId===e&&c?.id===t&&c?.type===n;return{connectingFrom:a?.nodeId===e&&a?.id===t&&a?.type===n,connectingTo:u,clickConnecting:r?.nodeId===e&&r?.id===t&&r?.type===n,isPossibleEndHandle:i===ut.Strict?a?.type!==n:e!==a?.nodeId||t!==a?.id,connectionInProcess:!!a,clickConnectionInProcess:!!r,valid:u&&l}};function op({type:e="source",position:t=q.Top,isValidConnection:n,isConnectable:o=!0,isConnectableStart:r=!0,isConnectableEnd:i=!0,id:s,onConnect:a,children:c,className:l,onMouseDown:u,onTouchStart:d,...f},h){const p=s||null,y=e==="target",w=ce(),x=$s(),{connectOnClick:E,noPanClassName:g,rfId:m}=ep(),{connectingFrom:_,connectingTo:S,clickConnecting:N,isPossibleEndHandle:$,connectionInProcess:A,clickConnectionInProcess:O,valid:T}=oe(np(x,p,e),le);x||w.getState().onError?.("010",Me.error010());const L=C=>{const{defaultEdgeOptions:I,onConnect:k,hasDefaultEdges:z}=w.getState(),P={...I,...C};if(z){const{edges:j,setEdges:V,onError:B}=w.getState();V(Dh(P,j,{onError:B}))}k?.(P),a?.(P)},D=C=>{if(!x)return;const I=os(C.nativeEvent);if(r&&(I&&C.button===0||!I)){const k=w.getState();ro.onPointerDown(C.nativeEvent,{handleDomNode:C.currentTarget,autoPanOnConnect:k.autoPanOnConnect,connectionMode:k.connectionMode,connectionRadius:k.connectionRadius,domNode:k.domNode,nodeLookup:k.nodeLookup,lib:k.lib,isTarget:y,handleId:p,nodeId:x,flowId:k.rfId,panBy:k.panBy,cancelConnection:k.cancelConnection,onConnectStart:k.onConnectStart,onConnectEnd:(...z)=>w.getState().onConnectEnd?.(...z),updateConnection:k.updateConnection,onConnect:L,isValidConnection:n||((...z)=>w.getState().isValidConnection?.(...z)??!0),getTransform:()=>w.getState().transform,getFromHandle:()=>w.getState().connection.fromHandle,autoPanSpeed:k.autoPanSpeed,dragThreshold:k.connectionDragThreshold})}I?u?.(C):d?.(C)},v=C=>{const{onClickConnectStart:I,onClickConnectEnd:k,connectionClickStartHandle:z,connectionMode:P,isValidConnection:j,lib:V,rfId:B,nodeLookup:Z,connection:Y}=w.getState();if(!x||!z&&!r)return;if(!z){I?.(C.nativeEvent,{nodeId:x,handleId:p,handleType:e}),w.setState({connectionClickStartHandle:{nodeId:x,type:e,id:p}});return}const X=ts(C.target),K=n||j,{connection:U,isValid:H}=ro.isValid(C.nativeEvent,{handle:{nodeId:x,id:p,type:e},connectionMode:P,fromNodeId:z.nodeId,fromHandleId:z.id||null,fromType:z.type,isValidConnection:K,flowId:B,doc:X,lib:V,nodeLookup:Z});H&&U&&L(U);const G=structuredClone(Y);delete G.inProgress,G.toPosition=G.toHandle?G.toHandle.position:null,k?.(C,G),w.setState({connectionClickStartHandle:null})};return b.jsx("div",{"data-handleid":p,"data-nodeid":x,"data-handlepos":t,"data-id":`${m}-${x}-${p}-${e}`,className:fe(["react-flow__handle",`react-flow__handle-${t}`,"nodrag",g,l,{source:!y,target:y,connectable:o,connectablestart:r,connectableend:i,clickconnecting:N,connectingfrom:_,connectingto:S,valid:T,connectionindicator:o&&(!A||$)&&(A||O?i:r)}]),onMouseDown:D,onTouchStart:D,onClick:E?v:void 0,ref:h,...f,children:c})}const Qe=M.memo(Ns(op));function rp({data:e,isConnectable:t,sourcePosition:n=q.Bottom}){return b.jsxs(b.Fragment,{children:[e?.label,b.jsx(Qe,{type:"source",position:n,isConnectable:t})]})}function ip({data:e,isConnectable:t,targetPosition:n=q.Top,sourcePosition:o=q.Bottom}){return b.jsxs(b.Fragment,{children:[b.jsx(Qe,{type:"target",position:n,isConnectable:t}),e?.label,b.jsx(Qe,{type:"source",position:o,isConnectable:t})]})}function sp(){return null}function ap({data:e,isConnectable:t,targetPosition:n=q.Top}){return b.jsxs(b.Fragment,{children:[b.jsx(Qe,{type:"target",position:n,isConnectable:t}),e?.label]})}const ln={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},Lr={input:rp,default:ip,output:ap,group:sp};function cp(e){return e.internals.handleBounds===void 0?{width:e.width??e.initialWidth??e.style?.width,height:e.height??e.initialHeight??e.style?.height}:{width:e.width??e.style?.width,height:e.height??e.style?.height}}const lp=e=>{const{width:t,height:n,x:o,y:r}=Pt(e.nodeLookup,{filter:i=>!!i.selected});return{width:Ne(t)?t:null,height:Ne(n)?n:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${o}px,${r}px)`}};function up({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){const o=ce(),{width:r,height:i,transformString:s,userSelectionActive:a}=oe(lp,le),c=ks(),l=M.useRef(null);M.useEffect(()=>{n||l.current?.focus({preventScroll:!0})},[n]);const u=!a&&r!==null&&i!==null;if(Is({nodeRef:l,disabled:!u}),!u)return null;const d=e?h=>{const p=o.getState().nodes.filter(y=>y.selected);e(h,p)}:void 0,f=h=>{Object.prototype.hasOwnProperty.call(ln,h.key)&&(h.preventDefault(),c({direction:ln[h.key],factor:h.shiftKey?4:1}))};return b.jsx("div",{className:fe(["react-flow__nodesselection","react-flow__container",t]),style:{transform:s},children:b.jsx("div",{ref:l,className:"react-flow__nodesselection-rect",onContextMenu:d,tabIndex:n?void 0:-1,onKeyDown:n?void 0:f,style:{width:r,height:i}})})}const Or=typeof window<"u"?window:void 0,dp=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function Ps({children:e,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:o,onPaneMouseLeave:r,onPaneContextMenu:i,onPaneScroll:s,paneClickDistance:a,deleteKeyCode:c,selectionKeyCode:l,selectionOnDrag:u,selectionMode:d,onSelectionStart:f,onSelectionEnd:h,multiSelectionKeyCode:p,panActivationKeyCode:y,zoomActivationKeyCode:w,elementsSelectable:x,zoomOnScroll:E,zoomOnPinch:g,panOnScroll:m,panOnScrollSpeed:_,panOnScrollMode:S,zoomOnDoubleClick:N,panOnDrag:$,autoPanOnSelection:A,defaultViewport:O,translateExtent:T,minZoom:L,maxZoom:D,preventScrolling:v,onSelectionContextMenu:C,noWheelClassName:I,noPanClassName:k,disableKeyboardA11y:z,onViewportChange:P,isControlledViewport:j}){const{nodesSelectionActive:V,userSelectionActive:B}=oe(dp,le),Z=It(l,{target:Or}),Y=It(y,{target:Or}),X=Y||$,K=Y||m,U=u&&X!==!0,H=Z||B||U;return Bh({deleteKeyCode:c,multiSelectionKeyCode:p}),b.jsx(Yh,{onPaneContextMenu:i,elementsSelectable:x,zoomOnScroll:E,zoomOnPinch:g,panOnScroll:K,panActivationKeyPressed:Y,panOnScrollSpeed:_,panOnScrollMode:S,zoomOnDoubleClick:N,panOnDrag:!Z&&X,defaultViewport:O,translateExtent:T,minZoom:L,maxZoom:D,zoomActivationKeyCode:w,preventScrolling:v,noWheelClassName:I,noPanClassName:k,onViewportChange:P,isControlledViewport:j,paneClickDistance:a,selectionOnDrag:U,children:b.jsxs(qh,{onSelectionStart:f,onSelectionEnd:h,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:o,onPaneMouseLeave:r,onPaneContextMenu:i,onPaneScroll:s,panOnDrag:X,autoPanOnSelection:A,isSelecting:!!H,selectionMode:d,selectionKeyPressed:Z,paneClickDistance:a,selectionOnDrag:U,children:[e,V&&b.jsx(up,{onSelectionContextMenu:C,noPanClassName:k,disableKeyboardA11y:z})]})})}Ps.displayName="FlowRenderer";const fp=M.memo(Ps),hp=e=>t=>e?vo(t.nodeLookup,{x:0,y:0,width:t.width,height:t.height},t.transform,!0).map(n=>n.id):Array.from(t.nodeLookup.keys());function pp(e){return oe(M.useCallback(hp(e),[e]),le)}const gp=e=>e.updateNodeInternals;function mp(){const e=oe(gp),[t]=M.useState(()=>typeof ResizeObserver>"u"?null:new ResizeObserver(n=>{const o=new Map;n.forEach(r=>{const i=r.target.getAttribute("data-id");o.set(i,{id:i,nodeElement:r.target,force:!0})}),e(o)}));return M.useEffect(()=>()=>{t?.disconnect()},[t]),t}function yp({node:e,nodeType:t,hasDimensions:n,resizeObserver:o}){const r=ce(),i=M.useRef(null),s=M.useRef(null),a=M.useRef(e.sourcePosition),c=M.useRef(e.targetPosition),l=M.useRef(t),u=n&&!!e.internals.handleBounds;return M.useEffect(()=>{i.current&&!e.hidden&&(!u||s.current!==i.current)&&(s.current&&o?.unobserve(s.current),o?.observe(i.current),s.current=i.current)},[u,e.hidden]),M.useEffect(()=>()=>{s.current&&(o?.unobserve(s.current),s.current=null)},[]),M.useEffect(()=>{if(i.current){const d=l.current!==t,f=a.current!==e.sourcePosition,h=c.current!==e.targetPosition;(d||f||h)&&(l.current=t,a.current=e.sourcePosition,c.current=e.targetPosition,r.getState().updateNodeInternals(new Map([[e.id,{id:e.id,nodeElement:i.current,force:!0}]])))}},[e.id,t,e.sourcePosition,e.targetPosition]),i}function xp({id:e,onClick:t,onMouseEnter:n,onMouseMove:o,onMouseLeave:r,onContextMenu:i,onDoubleClick:s,nodesDraggable:a,elementsSelectable:c,nodesConnectable:l,nodesFocusable:u,resizeObserver:d,noDragClassName:f,noPanClassName:h,disableKeyboardA11y:p,rfId:y,nodeTypes:w,nodeClickDistance:x,onError:E}){const{node:g,internals:m,isParent:_}=oe(H=>{const G=H.nodeLookup.get(e),te=H.parentLookup.has(e);return{node:G,internals:G.internals,isParent:te}},le);let S=g.type||"default",N=w?.[S]||Lr[S];N===void 0&&(E?.("003",Me.error003(S)),S="default",N=w?.default||Lr.default);const $=!!(g.draggable||a&&typeof g.draggable>"u"),A=!!(g.selectable||c&&typeof g.selectable>"u"),O=!!(g.connectable||l&&typeof g.connectable>"u"),T=!!(g.focusable||u&&typeof g.focusable>"u"),L=ce(),D=Eo(g),v=yp({node:g,nodeType:S,hasDimensions:D,resizeObserver:d}),C=Is({nodeRef:v,disabled:g.hidden||!$,noDragClassName:f,handleSelector:g.dragHandle,nodeId:e,isSelectable:A,nodeClickDistance:x}),I=ks();if(g.hidden)return null;const k=ke(g),z=cp(g),P=A||$||t||n||o||r,j=n?H=>n(H,{...m.userNode}):void 0,V=o?H=>o(H,{...m.userNode}):void 0,B=r?H=>r(H,{...m.userNode}):void 0,Z=i?H=>i(H,{...m.userNode}):void 0,Y=s?H=>s(H,{...m.userNode}):void 0,X=H=>{const{selectNodesOnDrag:G,nodeDragThreshold:te}=L.getState();A&&(!G||!$||te>0)&&io({id:e,store:L,nodeRef:v}),t&&t(H,{...m.userNode})},K=H=>{if(!(ns(H.nativeEvent)||p)){if(Xi.includes(H.key)&&A){const G=H.key==="Escape";io({id:e,store:L,unselect:G,nodeRef:v})}else if($&&g.selected&&Object.prototype.hasOwnProperty.call(ln,H.key)){H.preventDefault();const{ariaLabelConfig:G}=L.getState();L.setState({ariaLiveMessage:G["node.a11yDescription.ariaLiveMessage"]({direction:H.key.replace("Arrow","").toLowerCase(),x:~~m.positionAbsolute.x,y:~~m.positionAbsolute.y})}),I({direction:ln[H.key],factor:H.shiftKey?4:1})}}},U=()=>{if(p||!v.current?.matches(":focus-visible"))return;const{transform:H,width:G,height:te,autoPanOnNodeFocus:ee,setCenter:W}=L.getState();if(!ee)return;vo(new Map([[e,g]]),{x:0,y:0,width:G,height:te},H,!0).length>0||W(g.position.x+k.width/2,g.position.y+k.height/2,{zoom:H[2]})};return b.jsx("div",{className:fe(["react-flow__node",`react-flow__node-${S}`,{[h]:$},g.className,{selected:g.selected,selectable:A,parent:_,draggable:$,dragging:C}]),ref:v,style:{zIndex:m.z,transform:`translate(${m.positionAbsolute.x}px,${m.positionAbsolute.y}px)`,pointerEvents:P?"all":"none",visibility:D?"visible":"hidden",...g.style,...z},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:j,onMouseMove:V,onMouseLeave:B,onContextMenu:Z,onClick:X,onDoubleClick:Y,onKeyDown:T?K:void 0,tabIndex:T?0:void 0,onFocus:T?U:void 0,role:g.ariaRole??(T?"group":void 0),"aria-roledescription":"node","aria-describedby":p?void 0:`${bs}-${y}`,"aria-label":g.ariaLabel,...g.domAttributes,children:b.jsx(Kh,{value:e,children:b.jsx(N,{id:e,data:g.data,type:S,positionAbsoluteX:m.positionAbsolute.x,positionAbsoluteY:m.positionAbsolute.y,selected:g.selected??!1,selectable:A,draggable:$,deletable:g.deletable??!0,isConnectable:O,sourcePosition:g.sourcePosition,targetPosition:g.targetPosition,dragging:C,dragHandle:g.dragHandle,zIndex:m.z,parentId:g.parentId,...k})})})}var wp=M.memo(xp);const vp=e=>({nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function Ts(e){const{nodesConnectable:t,nodesFocusable:n,elementsSelectable:o,onError:r}=oe(vp,le),i=pp(e.onlyRenderVisibleElements),s=mp();return b.jsx("div",{className:"react-flow__nodes",style:bn,children:i.map(a=>b.jsx(wp,{id:a,nodeTypes:e.nodeTypes,nodeExtent:e.nodeExtent,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,resizeObserver:s,nodesDraggable:e.nodesDraggable??!0,nodesConnectable:t,nodesFocusable:n,elementsSelectable:o,nodeClickDistance:e.nodeClickDistance,onError:r},a))})}Ts.displayName="NodeRenderer";const bp=M.memo(Ts);function Sp(e){return oe(M.useCallback(n=>{if(!e)return n.edges.map(r=>r.id);const o=[];if(n.width&&n.height)for(const r of n.edges){const i=n.nodeLookup.get(r.source),s=n.nodeLookup.get(r.target);i&&s&&gf({sourceNode:i,targetNode:s,width:n.width,height:n.height,transform:n.transform})&&o.push(r.id)}return o},[e]),le)}const Ep=({color:e="none",strokeWidth:t=1})=>{const n={strokeWidth:t,...e&&{stroke:e}};return b.jsx("polyline",{className:"arrow",style:n,strokeLinecap:"round",fill:"none",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4"})},_p=({color:e="none",strokeWidth:t=1})=>{const n={strokeWidth:t,...e&&{stroke:e,fill:e}};return b.jsx("polyline",{className:"arrowclosed",style:n,strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"})},jr={[sn.Arrow]:Ep,[sn.ArrowClosed]:_p};function Np(e){const t=ce();return M.useMemo(()=>Object.prototype.hasOwnProperty.call(jr,e)?jr[e]:(t.getState().onError?.("009",Me.error009(e)),null),[e])}const Cp=({id:e,type:t,color:n,width:o=12.5,height:r=12.5,markerUnits:i="strokeWidth",strokeWidth:s,orient:a="auto-start-reverse"})=>{const c=Np(t);return c?b.jsx("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${o}`,markerHeight:`${r}`,viewBox:"-10 -10 20 20",markerUnits:i,orient:a,refX:"0",refY:"0",children:b.jsx(c,{color:n,strokeWidth:s})}):null},zs=({defaultColor:e,rfId:t})=>{const n=oe(i=>i.edges),o=oe(i=>i.defaultEdgeOptions),r=M.useMemo(()=>Ef(n,{id:t,defaultColor:e,defaultMarkerStart:o?.markerStart,defaultMarkerEnd:o?.markerEnd}),[n,o,t,e]);return r.length?b.jsx("svg",{className:"react-flow__marker","aria-hidden":"true",children:b.jsx("defs",{children:r.map(i=>b.jsx(Cp,{id:i.id,type:i.type,color:i.color,width:i.width,height:i.height,markerUnits:i.markerUnits,strokeWidth:i.strokeWidth,orient:i.orient},i.id))})}):null};zs.displayName="MarkerDefinitions";var Mp=M.memo(zs);function Ds({x:e,y:t,label:n,labelStyle:o,labelShowBg:r=!0,labelBgStyle:i,labelBgPadding:s=[2,4],labelBgBorderRadius:a=2,children:c,className:l,...u}){const[d,f]=M.useState({x:1,y:0,width:0,height:0}),h=fe(["react-flow__edge-textwrapper",l]),p=M.useRef(null);return M.useEffect(()=>{if(p.current){const y=p.current.getBBox();f({x:y.x,y:y.y,width:y.width,height:y.height})}},[n]),n?b.jsxs("g",{transform:`translate(${e-d.width/2} ${t-d.height/2})`,className:h,visibility:d.width?"visible":"hidden",...u,children:[r&&b.jsx("rect",{width:d.width+2*s[0],x:-s[0],y:-s[1],height:d.height+2*s[1],className:"react-flow__edge-textbg",style:i,rx:a,ry:a}),b.jsx("text",{className:"react-flow__edge-text",y:d.height/2,dy:"0.3em",ref:p,style:o,children:n}),c]}):null}Ds.displayName="EdgeText";const Ip=M.memo(Ds);function Sn({path:e,labelX:t,labelY:n,label:o,labelStyle:r,labelShowBg:i,labelBgStyle:s,labelBgPadding:a,labelBgBorderRadius:c,interactionWidth:l=20,...u}){return b.jsxs(b.Fragment,{children:[b.jsx("path",{...u,d:e,fill:"none",className:fe(["react-flow__edge-path",u.className])}),l?b.jsx("path",{d:e,fill:"none",strokeOpacity:0,strokeWidth:l,className:"react-flow__edge-interaction"}):null,o&&Ne(t)&&Ne(n)?b.jsx(Ip,{x:t,y:n,label:o,labelStyle:r,labelShowBg:i,labelBgStyle:s,labelBgPadding:a,labelBgBorderRadius:c}):null]})}function Vr({pos:e,x1:t,y1:n,x2:o,y2:r}){return e===q.Left||e===q.Right?[.5*(t+o),n]:[t,.5*(n+r)]}function Rs({sourceX:e,sourceY:t,sourcePosition:n=q.Bottom,targetX:o,targetY:r,targetPosition:i=q.Top}){const[s,a]=Vr({pos:n,x1:e,y1:t,x2:o,y2:r}),[c,l]=Vr({pos:i,x1:o,y1:r,x2:e,y2:t}),[u,d,f,h]=rs({sourceX:e,sourceY:t,targetX:o,targetY:r,sourceControlX:s,sourceControlY:a,targetControlX:c,targetControlY:l});return[`M${e},${t} C${s},${a} ${c},${l} ${o},${r}`,u,d,f,h]}function Hs(e){return M.memo(({id:t,sourceX:n,sourceY:o,targetX:r,targetY:i,sourcePosition:s,targetPosition:a,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:h,style:p,markerEnd:y,markerStart:w,interactionWidth:x})=>{const[E,g,m]=Rs({sourceX:n,sourceY:o,sourcePosition:s,targetX:r,targetY:i,targetPosition:a}),_=e.isInternal?void 0:t;return b.jsx(Sn,{id:_,path:E,labelX:g,labelY:m,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:h,style:p,markerEnd:y,markerStart:w,interactionWidth:x})})}const kp=Hs({isInternal:!1}),Ls=Hs({isInternal:!0});kp.displayName="SimpleBezierEdge";Ls.displayName="SimpleBezierEdgeInternal";function Os(e){return M.memo(({id:t,sourceX:n,sourceY:o,targetX:r,targetY:i,label:s,labelStyle:a,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,sourcePosition:h=q.Bottom,targetPosition:p=q.Top,markerEnd:y,markerStart:w,pathOptions:x,interactionWidth:E})=>{const[g,m,_]=to({sourceX:n,sourceY:o,sourcePosition:h,targetX:r,targetY:i,targetPosition:p,borderRadius:x?.borderRadius,offset:x?.offset,stepPosition:x?.stepPosition}),S=e.isInternal?void 0:t;return b.jsx(Sn,{id:S,path:g,labelX:m,labelY:_,label:s,labelStyle:a,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:y,markerStart:w,interactionWidth:E})})}const js=Os({isInternal:!1}),Vs=Os({isInternal:!0});js.displayName="SmoothStepEdge";Vs.displayName="SmoothStepEdgeInternal";function Bs(e){return M.memo(({id:t,...n})=>{const o=e.isInternal?void 0:t;return b.jsx(js,{...n,id:o,pathOptions:M.useMemo(()=>({borderRadius:0,offset:n.pathOptions?.offset}),[n.pathOptions?.offset])})})}const $p=Bs({isInternal:!1}),Fs=Bs({isInternal:!0});$p.displayName="StepEdge";Fs.displayName="StepEdgeInternal";function Xs(e){return M.memo(({id:t,sourceX:n,sourceY:o,targetX:r,targetY:i,label:s,labelStyle:a,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:p,interactionWidth:y})=>{const[w,x,E]=as({sourceX:n,sourceY:o,targetX:r,targetY:i}),g=e.isInternal?void 0:t;return b.jsx(Sn,{id:g,path:w,labelX:x,labelY:E,label:s,labelStyle:a,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:p,interactionWidth:y})})}const Ap=Xs({isInternal:!1}),Ys=Xs({isInternal:!0});Ap.displayName="StraightEdge";Ys.displayName="StraightEdgeInternal";function Zs(e){return M.memo(({id:t,sourceX:n,sourceY:o,targetX:r,targetY:i,sourcePosition:s=q.Bottom,targetPosition:a=q.Top,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:h,style:p,markerEnd:y,markerStart:w,pathOptions:x,interactionWidth:E})=>{const[g,m,_]=is({sourceX:n,sourceY:o,sourcePosition:s,targetX:r,targetY:i,targetPosition:a,curvature:x?.curvature}),S=e.isInternal?void 0:t;return b.jsx(Sn,{id:S,path:g,labelX:m,labelY:_,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:h,style:p,markerEnd:y,markerStart:w,interactionWidth:E})})}const Pp=Zs({isInternal:!1}),Gs=Zs({isInternal:!0});Pp.displayName="BezierEdge";Gs.displayName="BezierEdgeInternal";const Br={default:Gs,straight:Ys,step:Fs,smoothstep:Vs,simplebezier:Ls},Fr={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null,zIndex:void 0},Tp=(e,t,n)=>n===q.Left?e-t:n===q.Right?e+t:e,zp=(e,t,n)=>n===q.Top?e-t:n===q.Bottom?e+t:e,Xr="react-flow__edgeupdater";function Yr({position:e,centerX:t,centerY:n,radius:o=10,onMouseDown:r,onMouseEnter:i,onMouseOut:s,type:a}){return b.jsx("circle",{onMouseDown:r,onMouseEnter:i,onMouseOut:s,className:fe([Xr,`${Xr}-${a}`]),cx:Tp(t,o,e),cy:zp(n,o,e),r:o,stroke:"transparent",fill:"transparent"})}function Dp({isReconnectable:e,reconnectRadius:t,edge:n,sourceX:o,sourceY:r,targetX:i,targetY:s,sourcePosition:a,targetPosition:c,onReconnect:l,onReconnectStart:u,onReconnectEnd:d,setReconnecting:f,setUpdateHover:h}){const p=ce(),y=(m,_)=>{if(m.button!==0)return;const{autoPanOnConnect:S,domNode:N,connectionMode:$,connectionRadius:A,lib:O,onConnectStart:T,cancelConnection:L,nodeLookup:D,rfId:v,panBy:C,updateConnection:I}=p.getState(),k=_.type==="target",z=(V,B)=>{f(!1),d?.(V,n,_.type,B)},P=V=>l?.(n,V),j=(V,B)=>{f(!0),u?.(m,n,_.type),T?.(V,B)};ro.onPointerDown(m.nativeEvent,{autoPanOnConnect:S,connectionMode:$,connectionRadius:A,domNode:N,handleId:_.id,nodeId:_.nodeId,nodeLookup:D,isTarget:k,edgeUpdaterType:_.type,lib:O,flowId:v,cancelConnection:L,panBy:C,isValidConnection:(...V)=>p.getState().isValidConnection?.(...V)??!0,onConnect:P,onConnectStart:j,onConnectEnd:(...V)=>p.getState().onConnectEnd?.(...V),onReconnectEnd:z,updateConnection:I,getTransform:()=>p.getState().transform,getFromHandle:()=>p.getState().connection.fromHandle,dragThreshold:p.getState().connectionDragThreshold,handleDomNode:m.currentTarget})},w=m=>y(m,{nodeId:n.target,id:n.targetHandle??null,type:"target"}),x=m=>y(m,{nodeId:n.source,id:n.sourceHandle??null,type:"source"}),E=()=>h(!0),g=()=>h(!1);return b.jsxs(b.Fragment,{children:[(e===!0||e==="source")&&b.jsx(Yr,{position:a,centerX:o,centerY:r,radius:t,onMouseDown:w,onMouseEnter:E,onMouseOut:g,type:"source"}),(e===!0||e==="target")&&b.jsx(Yr,{position:c,centerX:i,centerY:s,radius:t,onMouseDown:x,onMouseEnter:E,onMouseOut:g,type:"target"})]})}function Rp({id:e,edgesFocusable:t,edgesReconnectable:n,elementsSelectable:o,onClick:r,onDoubleClick:i,onContextMenu:s,onMouseEnter:a,onMouseMove:c,onMouseLeave:l,reconnectRadius:u,onReconnect:d,onReconnectStart:f,onReconnectEnd:h,rfId:p,edgeTypes:y,noPanClassName:w,onError:x,disableKeyboardA11y:E}){let g=oe(W=>W.edgeLookup.get(e));const m=oe(W=>W.defaultEdgeOptions);g=m?{...m,...g}:g;let _=g.type||"default",S=y?.[_]||Br[_];S===void 0&&(x?.("011",Me.error011(_)),_="default",S=y?.default||Br.default);const N=!!(g.focusable||t&&typeof g.focusable>"u"),$=typeof d<"u"&&(g.reconnectable||n&&typeof g.reconnectable>"u"),A=!!(g.selectable||o&&typeof g.selectable>"u"),O=M.useRef(null),[T,L]=M.useState(!1),[D,v]=M.useState(!1),C=ce(),{zIndex:I=g.zIndex,sourceX:k,sourceY:z,targetX:P,targetY:j,sourcePosition:V,targetPosition:B}=oe(M.useCallback(W=>{const Q=W.nodeLookup.get(g.source),ne=W.nodeLookup.get(g.target);if(!Q||!ne)return Fr;const re=Sf({id:e,sourceNode:Q,targetNode:ne,sourceHandle:g.sourceHandle||null,targetHandle:g.targetHandle||null,connectionMode:W.connectionMode,onError:x}),ae=pf({selected:g.selected,zIndex:g.zIndex,sourceNode:Q,targetNode:ne,elevateOnSelect:W.elevateEdgesOnSelect,zIndexMode:W.zIndexMode});return{...re||Fr,zIndex:ae}},[g.source,g.target,g.sourceHandle,g.targetHandle,g.selected,g.zIndex,x]),le),Z=M.useMemo(()=>g.markerStart?`url('#${no(g.markerStart,p)}')`:void 0,[g.markerStart,p]),Y=M.useMemo(()=>g.markerEnd?`url('#${no(g.markerEnd,p)}')`:void 0,[g.markerEnd,p]);if(g.hidden||k===null||z===null||P===null||j===null)return null;const X=W=>{const{addSelectedEdges:Q,unselectNodesAndEdges:ne,multiSelectionActive:re}=C.getState();A&&(C.setState({nodesSelectionActive:!1}),g.selected&&re?(ne({nodes:[],edges:[g]}),O.current?.blur()):Q([e])),r&&r(W,g)},K=i?W=>{i(W,{...g})}:void 0,U=s?W=>{s(W,{...g})}:void 0,H=a?W=>{a(W,{...g})}:void 0,G=c?W=>{c(W,{...g})}:void 0,te=l?W=>{l(W,{...g})}:void 0,ee=W=>{if(!E&&Xi.includes(W.key)&&A){const{unselectNodesAndEdges:Q,addSelectedEdges:ne}=C.getState();W.key==="Escape"?(O.current?.blur(),Q({edges:[g]})):ne([e])}};return b.jsx("svg",{style:{zIndex:I},children:b.jsxs("g",{className:fe(["react-flow__edge",`react-flow__edge-${_}`,g.className,w,{selected:g.selected,animated:g.animated,inactive:!A&&!r,updating:T,selectable:A}]),onClick:X,onDoubleClick:K,onContextMenu:U,onMouseEnter:H,onMouseMove:G,onMouseLeave:te,onKeyDown:N?ee:void 0,tabIndex:N?0:void 0,role:g.ariaRole??(N?"group":"img"),"aria-roledescription":"edge","data-id":e,"data-testid":`rf__edge-${e}`,"aria-label":g.ariaLabel===null?void 0:g.ariaLabel||`Edge from ${g.source} to ${g.target}`,"aria-describedby":N?`${Ss}-${p}`:void 0,ref:O,...g.domAttributes,children:[!D&&b.jsx(S,{id:e,source:g.source,target:g.target,type:g.type,selected:g.selected,animated:g.animated,selectable:A,deletable:g.deletable??!0,label:g.label,labelStyle:g.labelStyle,labelShowBg:g.labelShowBg,labelBgStyle:g.labelBgStyle,labelBgPadding:g.labelBgPadding,labelBgBorderRadius:g.labelBgBorderRadius,sourceX:k,sourceY:z,targetX:P,targetY:j,sourcePosition:V,targetPosition:B,data:g.data,style:g.style,sourceHandleId:g.sourceHandle,targetHandleId:g.targetHandle,markerStart:Z,markerEnd:Y,pathOptions:"pathOptions"in g?g.pathOptions:void 0,interactionWidth:g.interactionWidth}),$&&b.jsx(Dp,{edge:g,isReconnectable:$,reconnectRadius:u,onReconnect:d,onReconnectStart:f,onReconnectEnd:h,sourceX:k,sourceY:z,targetX:P,targetY:j,sourcePosition:V,targetPosition:B,setUpdateHover:L,setReconnecting:v})]})})}var Hp=M.memo(Rp);const Lp=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function Ws({defaultMarkerColor:e,onlyRenderVisibleElements:t,rfId:n,edgeTypes:o,noPanClassName:r,onReconnect:i,onEdgeContextMenu:s,onEdgeMouseEnter:a,onEdgeMouseMove:c,onEdgeMouseLeave:l,onEdgeClick:u,reconnectRadius:d,onEdgeDoubleClick:f,onReconnectStart:h,onReconnectEnd:p,disableKeyboardA11y:y}){const{edgesFocusable:w,edgesReconnectable:x,elementsSelectable:E,onError:g}=oe(Lp,le),m=Sp(t);return b.jsxs("div",{className:"react-flow__edges",children:[b.jsx(Mp,{defaultColor:e,rfId:n}),m.map(_=>b.jsx(Hp,{id:_,edgesFocusable:w,edgesReconnectable:x,elementsSelectable:E,noPanClassName:r,onReconnect:i,onContextMenu:s,onMouseEnter:a,onMouseMove:c,onMouseLeave:l,onClick:u,reconnectRadius:d,onDoubleClick:f,onReconnectStart:h,onReconnectEnd:p,rfId:n,onError:g,edgeTypes:o,disableKeyboardA11y:y},_))]})}Ws.displayName="EdgeRenderer";const Op=M.memo(Ws),Zr=e=>`translate(${e[0]}px,${e[1]}px) scale(${e[2]})`;function jp({children:e}){const t=ce(),n=M.useRef(null),[o]=M.useState(()=>t.getState().transform);return Cs(()=>{let r=null;const i=()=>{const s=t.getState().transform;r&&s[0]===r[0]&&s[1]===r[1]&&s[2]===r[2]||(r=s,n.current&&(n.current.style.transform=Zr(s)))};return i(),t.subscribe(i)},[t]),b.jsx("div",{ref:n,className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:Zr(o)},children:e})}function Vp(e){const t=Dt(),n=M.useRef(!1);M.useEffect(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}const Bp=e=>e.panZoom?.syncViewport;function Fp(e){const t=oe(Bp),n=ce();return M.useEffect(()=>{e&&(t?.(e),n.setState({transform:[e.x,e.y,e.zoom]}))},[e,t]),null}function Gr(e){return e.connection.inProgress?{...e.connection,to:zt(e.connection.to,e.transform)}:{...e.connection}}function Xp(e){return e?n=>{const o=Gr(n);return e(o)}:Gr}function qs(e){const t=Xp(e);return oe(t,le)}const Yp=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function Zp({containerStyle:e,style:t,type:n,component:o}){const{nodesConnectable:r,width:i,height:s,isValid:a,inProgress:c}=oe(Yp,le);return!(i&&r&&c)?null:b.jsx("svg",{style:e,width:i,height:s,className:"react-flow__connectionline react-flow__container",children:b.jsx("g",{className:fe(["react-flow__connection",Gi(a)]),children:b.jsx(Us,{style:t,type:n,CustomComponent:o,isValid:a})})})}const Us=({style:e,type:t=Ve.Bezier,CustomComponent:n,isValid:o})=>{const{inProgress:r,from:i,fromNode:s,fromHandle:a,fromPosition:c,to:l,toNode:u,toHandle:d,toPosition:f,pointer:h}=qs();if(!r)return;if(n)return b.jsx(n,{connectionLineType:t,connectionLineStyle:e,fromNode:s,fromHandle:a,fromX:i.x,fromY:i.y,toX:l.x,toY:l.y,fromPosition:c,toPosition:f,connectionStatus:Gi(o),toNode:u,toHandle:d,pointer:h});let p="";const y={sourceX:i.x,sourceY:i.y,sourcePosition:c,targetX:l.x,targetY:l.y,targetPosition:f};switch(t){case Ve.Bezier:[p]=is(y);break;case Ve.SimpleBezier:[p]=Rs(y);break;case Ve.Step:[p]=to({...y,borderRadius:0});break;case Ve.SmoothStep:[p]=to(y);break;default:[p]=as(y)}return b.jsx("path",{d:p,fill:"none",className:"react-flow__connection-path",style:e})};Us.displayName="ConnectionLine";const Gp={};function Wr(e=Gp){M.useRef(e),ce(),M.useEffect(()=>{},[e])}function Wp(){ce(),M.useRef(!1),M.useEffect(()=>{},[])}function Ks({nodeTypes:e,edgeTypes:t,onInit:n,onNodeClick:o,onEdgeClick:r,onNodeDoubleClick:i,onEdgeDoubleClick:s,onNodeMouseEnter:a,onNodeMouseMove:c,onNodeMouseLeave:l,onNodeContextMenu:u,onSelectionContextMenu:d,onSelectionStart:f,onSelectionEnd:h,connectionLineType:p,connectionLineStyle:y,connectionLineComponent:w,connectionLineContainerStyle:x,selectionKeyCode:E,selectionOnDrag:g,selectionMode:m,multiSelectionKeyCode:_,panActivationKeyCode:S,zoomActivationKeyCode:N,deleteKeyCode:$,onlyRenderVisibleElements:A,elementsSelectable:O,defaultViewport:T,translateExtent:L,minZoom:D,maxZoom:v,preventScrolling:C,defaultMarkerColor:I,zoomOnScroll:k,zoomOnPinch:z,panOnScroll:P,panOnScrollSpeed:j,panOnScrollMode:V,zoomOnDoubleClick:B,panOnDrag:Z,autoPanOnSelection:Y,onPaneClick:X,onPaneMouseEnter:K,onPaneMouseMove:U,onPaneMouseLeave:H,onPaneScroll:G,onPaneContextMenu:te,paneClickDistance:ee,nodeClickDistance:W,onEdgeContextMenu:Q,onEdgeMouseEnter:ne,onEdgeMouseMove:re,onEdgeMouseLeave:ae,reconnectRadius:R,onReconnect:F,onReconnectStart:J,onReconnectEnd:se,noDragClassName:de,noWheelClassName:ye,noPanClassName:ie,disableKeyboardA11y:he,nodeExtent:pe,rfId:ge,viewport:me,onViewportChange:xe,nodesDraggable:we}){return Wr(e),Wr(t),Wp(),Vp(n),Fp(me),b.jsx(fp,{onPaneClick:X,onPaneMouseEnter:K,onPaneMouseMove:U,onPaneMouseLeave:H,onPaneContextMenu:te,onPaneScroll:G,paneClickDistance:ee,deleteKeyCode:$,selectionKeyCode:E,selectionOnDrag:g,selectionMode:m,onSelectionStart:f,onSelectionEnd:h,multiSelectionKeyCode:_,panActivationKeyCode:S,zoomActivationKeyCode:N,elementsSelectable:O,zoomOnScroll:k,zoomOnPinch:z,zoomOnDoubleClick:B,panOnScroll:P,panOnScrollSpeed:j,panOnScrollMode:V,panOnDrag:Z,autoPanOnSelection:Y,defaultViewport:T,translateExtent:L,minZoom:D,maxZoom:v,onSelectionContextMenu:d,preventScrolling:C,noDragClassName:de,noWheelClassName:ye,noPanClassName:ie,disableKeyboardA11y:he,onViewportChange:xe,isControlledViewport:!!me,children:b.jsxs(jp,{children:[b.jsx(Op,{edgeTypes:t,onEdgeClick:r,onEdgeDoubleClick:s,onReconnect:F,onReconnectStart:J,onReconnectEnd:se,onlyRenderVisibleElements:A,onEdgeContextMenu:Q,onEdgeMouseEnter:ne,onEdgeMouseMove:re,onEdgeMouseLeave:ae,reconnectRadius:R,defaultMarkerColor:I,noPanClassName:ie,disableKeyboardA11y:he,rfId:ge}),b.jsx(Zp,{style:y,type:p,component:w,containerStyle:x}),b.jsx("div",{className:"react-flow__edgelabel-renderer"}),b.jsx(bp,{nodeTypes:e,onNodeClick:o,onNodeDoubleClick:i,onNodeMouseEnter:a,onNodeMouseMove:c,onNodeMouseLeave:l,onNodeContextMenu:u,nodeClickDistance:W,onlyRenderVisibleElements:A,noPanClassName:ie,noDragClassName:de,disableKeyboardA11y:he,nodeExtent:pe,rfId:ge,nodesDraggable:we}),b.jsx("div",{className:"react-flow__viewport-portal"})]})})}Ks.displayName="GraphView";const qp=M.memo(Ks),Up=Ji(),qr=({nodes:e,edges:t,defaultNodes:n,defaultEdges:o,width:r,height:i,fitView:s,fitViewOptions:a,minZoom:c=.5,maxZoom:l=2,nodeOrigin:u,nodeExtent:d,zIndexMode:f="basic"}={})=>{const h=new Map,p=new Map,y=new Map,w=new Map,x=o??t??[],E=n??e??[],g=u??[0,0],m=d??Nt;us(y,w,x);const{nodesInitialized:_}=oo(E,h,p,{nodeOrigin:g,nodeExtent:m,zIndexMode:f});let S=[0,0,1];if(s&&r&&i){const N=Pt(h,{filter:T=>!!((T.width||T.initialWidth)&&(T.height||T.initialHeight))}),{x:$,y:A,zoom:O}=So(N,r,i,c,l,a?.padding??.1);S=[$,A,O]}return{rfId:"1",width:r??0,height:i??0,transform:S,nodes:E,nodesInitialized:_,nodeLookup:h,parentLookup:p,edges:x,edgeLookup:w,connectionLookup:y,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:n!==void 0,hasDefaultEdges:o!==void 0,panZoom:null,minZoom:c,maxZoom:l,translateExtent:Nt,nodeExtent:m,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:ut.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:g,nodeDragThreshold:1,connectionDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,fitViewQueued:s??!1,fitViewOptions:a,fitViewResolver:null,connection:{...Zi},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:Up,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1,ariaLabelConfig:Yi,zIndexMode:f,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},Kp=({nodes:e,edges:t,defaultNodes:n,defaultEdges:o,width:r,height:i,fitView:s,fitViewOptions:a,minZoom:c,maxZoom:l,nodeOrigin:u,nodeExtent:d,zIndexMode:f})=>dh((h,p)=>{async function y(){const{nodeLookup:w,panZoom:x,fitViewOptions:E,fitViewResolver:g,width:m,height:_,minZoom:S,maxZoom:N}=p();x&&(await af({nodes:w,width:m,height:_,panZoom:x,minZoom:S,maxZoom:N},E),g?.resolve(!0),h({fitViewResolver:null}))}return{...qr({nodes:e,edges:t,width:r,height:i,fitView:s,fitViewOptions:a,minZoom:c,maxZoom:l,nodeOrigin:u,nodeExtent:d,defaultNodes:n,defaultEdges:o,zIndexMode:f}),setNodes:w=>{const{nodeLookup:x,parentLookup:E,nodeOrigin:g,nodeExtent:m,elevateNodesOnSelect:_,fitViewQueued:S,zIndexMode:N,nodesSelectionActive:$}=p(),{nodesInitialized:A,hasSelectedNodes:O}=oo(w,x,E,{nodeOrigin:g,nodeExtent:m,elevateNodesOnSelect:_,checkEquality:!0,zIndexMode:N}),T=$&&O;S&&A?(y(),h({nodes:w,nodesInitialized:A,fitViewQueued:!1,fitViewOptions:void 0,nodesSelectionActive:T})):h({nodes:w,nodesInitialized:A,nodesSelectionActive:T})},setEdges:w=>{const{connectionLookup:x,edgeLookup:E}=p();us(x,E,w),h({edges:w})},setDefaultNodesAndEdges:(w,x)=>{if(w){const{setNodes:E}=p();E(w),h({hasDefaultNodes:!0})}if(x){const{setEdges:E}=p();E(x),h({hasDefaultEdges:!0})}},updateNodeInternals:w=>{const{triggerNodeChanges:x,nodeLookup:E,parentLookup:g,domNode:m,nodeOrigin:_,nodeExtent:S,debug:N,fitViewQueued:$,zIndexMode:A}=p(),{changes:O,updatedInternals:T}=$f(w,E,g,m,_,S,A);T&&(Cf(E,g,{nodeOrigin:_,nodeExtent:S,zIndexMode:A}),$?(y(),h({fitViewQueued:!1,fitViewOptions:void 0})):h({}),O?.length>0&&(N&&console.log("React Flow: trigger node changes",O),x?.(O)))},updateNodePositions:(w,x=!1)=>{const E=[];let g=[];const{nodeLookup:m,triggerNodeChanges:_,connection:S,updateConnection:N,onNodesChangeMiddlewareMap:$}=p();for(const[A,O]of w){const T=m.get(A),L=!!(T?.expandParent&&T?.parentId&&O?.position),D={id:A,type:"position",position:L?{x:Math.max(0,O.position.x),y:Math.max(0,O.position.y)}:O.position,dragging:x};if(T&&S.inProgress&&S.fromNode.id===T.id){const v=Ke(T,S.fromHandle,q.Left,!0);N({...S,from:v})}L&&T.parentId&&E.push({id:A,parentId:T.parentId,rect:{...O.internals.positionAbsolute,width:O.measured.width??0,height:O.measured.height??0}}),g.push(D)}if(E.length>0){const{parentLookup:A,nodeOrigin:O}=p(),T=ko(E,m,A,O);g.push(...T)}for(const A of $.values())g=A(g);_(g)},triggerNodeChanges:w=>{const{onNodesChange:x,setNodes:E,nodes:g,hasDefaultNodes:m,debug:_}=p();if(w?.length){if(m){const S=Ph(w,g);E(S)}_&&console.log("React Flow: trigger node changes",w),x?.(w)}},triggerEdgeChanges:w=>{const{onEdgesChange:x,setEdges:E,edges:g,hasDefaultEdges:m,debug:_}=p();if(w?.length){if(m){const S=Th(w,g);E(S)}_&&console.log("React Flow: trigger edge changes",w),x?.(w)}},addSelectedNodes:w=>{const{multiSelectionActive:x,edgeLookup:E,nodeLookup:g,triggerNodeChanges:m,triggerEdgeChanges:_}=p();if(x){const S=w.map(N=>Fe(N,!0));m(S);return}m(it(g,new Set([...w]),!0)),_(it(E))},addSelectedEdges:w=>{const{multiSelectionActive:x,edgeLookup:E,nodeLookup:g,triggerNodeChanges:m,triggerEdgeChanges:_}=p();if(x){const S=w.map(N=>Fe(N,!0));_(S);return}_(it(E,new Set([...w]))),m(it(g,new Set,!0))},unselectNodesAndEdges:({nodes:w,edges:x}={})=>{const{edges:E,nodes:g,nodeLookup:m,triggerNodeChanges:_,triggerEdgeChanges:S}=p(),N=w||g,$=x||E,A=[];for(const T of N){if(!T.selected)continue;const L=m.get(T.id);L&&(L.selected=!1),A.push(Fe(T.id,!1))}const O=[];for(const T of $)T.selected&&O.push(Fe(T.id,!1));_(A),S(O)},setMinZoom:w=>{const{panZoom:x,maxZoom:E}=p();x?.setScaleExtent([w,E]),h({minZoom:w})},setMaxZoom:w=>{const{panZoom:x,minZoom:E}=p();x?.setScaleExtent([E,w]),h({maxZoom:w})},setTranslateExtent:w=>{p().panZoom?.setTranslateExtent(w),h({translateExtent:w})},resetSelectedElements:()=>{const{edges:w,nodes:x,triggerNodeChanges:E,triggerEdgeChanges:g,elementsSelectable:m}=p();if(!m)return;const _=x.reduce((N,$)=>$.selected?[...N,Fe($.id,!1)]:N,[]),S=w.reduce((N,$)=>$.selected?[...N,Fe($.id,!1)]:N,[]);E(_),g(S)},setNodeExtent:w=>{const{nodes:x,nodeLookup:E,parentLookup:g,nodeOrigin:m,elevateNodesOnSelect:_,nodeExtent:S,zIndexMode:N}=p();w[0][0]===S[0][0]&&w[0][1]===S[0][1]&&w[1][0]===S[1][0]&&w[1][1]===S[1][1]||(oo(x,E,g,{nodeOrigin:m,nodeExtent:w,elevateNodesOnSelect:_,checkEquality:!1,zIndexMode:N}),h({nodeExtent:w}))},panBy:w=>{const{transform:x,width:E,height:g,panZoom:m,translateExtent:_}=p();return Af({delta:w,panZoom:m,transform:x,translateExtent:_,width:E,height:g})},setCenter:async(w,x,E)=>{const{width:g,height:m,maxZoom:_,panZoom:S}=p();if(!S)return!1;const N=typeof E?.zoom<"u"?E.zoom:_;return await S.setViewport({x:g/2-w*N,y:m/2-x*N,zoom:N},{duration:E?.duration,ease:E?.ease,interpolate:E?.interpolate}),!0},cancelConnection:()=>{h({connection:{...Zi}})},updateConnection:w=>{h({connection:w})},reset:()=>h({...qr()})}},Object.is);function Qs({initialNodes:e,initialEdges:t,defaultNodes:n,defaultEdges:o,initialWidth:r,initialHeight:i,initialMinZoom:s,initialMaxZoom:a,initialFitViewOptions:c,fitView:l,nodeOrigin:u,nodeExtent:d,zIndexMode:f,children:h}){const[p]=M.useState(()=>Kp({nodes:e,edges:t,defaultNodes:n,defaultEdges:o,width:r,height:i,fitView:l,minZoom:s,maxZoom:a,fitViewOptions:c,nodeOrigin:u,nodeExtent:d,zIndexMode:f}));return b.jsx(fh,{value:p,children:b.jsx(Lh,{children:b.jsx(Jh,{children:h})})})}function Qp({children:e,nodes:t,edges:n,defaultNodes:o,defaultEdges:r,width:i,height:s,fitView:a,fitViewOptions:c,minZoom:l,maxZoom:u,nodeOrigin:d,nodeExtent:f,zIndexMode:h}){return M.useContext(wn)?b.jsx(b.Fragment,{children:e}):b.jsx(Qs,{initialNodes:t,initialEdges:n,defaultNodes:o,defaultEdges:r,initialWidth:i,initialHeight:s,fitView:a,initialFitViewOptions:c,initialMinZoom:l,initialMaxZoom:u,nodeOrigin:d,nodeExtent:f,zIndexMode:h,children:e})}const Jp={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};function eg({nodes:e,edges:t,defaultNodes:n,defaultEdges:o,className:r,nodeTypes:i,edgeTypes:s,onNodeClick:a,onEdgeClick:c,onInit:l,onMove:u,onMoveStart:d,onMoveEnd:f,onConnect:h,onConnectStart:p,onConnectEnd:y,onClickConnectStart:w,onClickConnectEnd:x,onNodeMouseEnter:E,onNodeMouseMove:g,onNodeMouseLeave:m,onNodeContextMenu:_,onNodeDoubleClick:S,onNodeDragStart:N,onNodeDrag:$,onNodeDragStop:A,onNodesDelete:O,onEdgesDelete:T,onDelete:L,onSelectionChange:D,onSelectionDragStart:v,onSelectionDrag:C,onSelectionDragStop:I,onSelectionContextMenu:k,onSelectionStart:z,onSelectionEnd:P,onBeforeDelete:j,connectionMode:V,connectionLineType:B=Ve.Bezier,connectionLineStyle:Z,connectionLineComponent:Y,connectionLineContainerStyle:X,deleteKeyCode:K="Backspace",selectionKeyCode:U="Shift",selectionOnDrag:H=!1,selectionMode:G=dt.Full,panActivationKeyCode:te="Space",multiSelectionKeyCode:ee=Mt()?"Meta":"Control",zoomActivationKeyCode:W=Mt()?"Meta":"Control",snapToGrid:Q,snapGrid:ne,onlyRenderVisibleElements:re=!1,selectNodesOnDrag:ae,nodesDraggable:R,autoPanOnNodeFocus:F,nodesConnectable:J,nodesFocusable:se,nodeOrigin:de=Es,edgesFocusable:ye,edgesReconnectable:ie,elementsSelectable:he=!0,defaultViewport:pe=Nh,minZoom:ge=.5,maxZoom:me=2,translateExtent:xe=Nt,preventScrolling:we=!0,nodeExtent:Te,defaultMarkerColor:tt="#b1b1b7",zoomOnScroll:En=!0,zoomOnPinch:_n=!0,panOnScroll:Nn=!1,panOnScrollSpeed:Cn=.5,panOnScrollMode:Mn=Ze.Free,zoomOnDoubleClick:In=!0,panOnDrag:nt=!0,onPaneClick:la,onPaneMouseEnter:ua,onPaneMouseMove:da,onPaneMouseLeave:fa,onPaneScroll:ha,onPaneContextMenu:pa,paneClickDistance:ga=1,nodeClickDistance:ma=0,children:ya,onReconnect:xa,onReconnectStart:wa,onReconnectEnd:va,onEdgeContextMenu:ba,onEdgeDoubleClick:Sa,onEdgeMouseEnter:Ea,onEdgeMouseMove:_a,onEdgeMouseLeave:Na,reconnectRadius:Ca=10,onNodesChange:Ma,onEdgesChange:Ia,noDragClassName:ka="nodrag",noWheelClassName:$a="nowheel",noPanClassName:Ao="nopan",fitView:Po,fitViewOptions:To,connectOnClick:Aa,attributionPosition:Pa,proOptions:Ta,defaultEdgeOptions:za,elevateNodesOnSelect:Da=!0,elevateEdgesOnSelect:Ra=!1,disableKeyboardA11y:zo=!1,autoPanOnConnect:Ha,autoPanOnNodeDrag:La,autoPanOnSelection:Oa=!0,autoPanSpeed:ja,connectionRadius:Va,isValidConnection:Ba,onError:Fa,style:Xa,id:Do,nodeDragThreshold:Ya,connectionDragThreshold:Za,viewport:Ga,onViewportChange:Wa,width:qa,height:Ua,colorMode:Ka="light",debug:Qa,onScroll:Ro,ariaLabelConfig:Ja,zIndexMode:Ho="basic",...ec},tc){const kn=Do||"1",nc=kh(Ka),oc=M.useCallback(Lo=>{Lo.currentTarget.scrollTo({top:0,left:0,behavior:"instant"}),Ro?.(Lo)},[Ro]);return b.jsx("div",{"data-testid":"rf__wrapper",...ec,onScroll:oc,style:{...Xa,...Jp},ref:tc,className:fe(["react-flow",r,nc]),id:Do,role:"application",children:b.jsxs(Qp,{nodes:e,edges:t,width:qa,height:Ua,fitView:Po,fitViewOptions:To,minZoom:ge,maxZoom:me,nodeOrigin:de,nodeExtent:Te,zIndexMode:Ho,children:[b.jsx(Ih,{nodes:e,edges:t,defaultNodes:n,defaultEdges:o,onConnect:h,onConnectStart:p,onConnectEnd:y,onClickConnectStart:w,onClickConnectEnd:x,nodesDraggable:R,autoPanOnNodeFocus:F,nodesConnectable:J,nodesFocusable:se,edgesFocusable:ye,edgesReconnectable:ie,elementsSelectable:he,elevateNodesOnSelect:Da,elevateEdgesOnSelect:Ra,minZoom:ge,maxZoom:me,nodeExtent:Te,onNodesChange:Ma,onEdgesChange:Ia,snapToGrid:Q,snapGrid:ne,connectionMode:V,translateExtent:xe,connectOnClick:Aa,defaultEdgeOptions:za,fitView:Po,fitViewOptions:To,onNodesDelete:O,onEdgesDelete:T,onDelete:L,onNodeDragStart:N,onNodeDrag:$,onNodeDragStop:A,onSelectionDrag:C,onSelectionDragStart:v,onSelectionDragStop:I,onMove:u,onMoveStart:d,onMoveEnd:f,noPanClassName:Ao,nodeOrigin:de,rfId:kn,autoPanOnConnect:Ha,autoPanOnNodeDrag:La,autoPanSpeed:ja,onError:Fa,connectionRadius:Va,isValidConnection:Ba,selectNodesOnDrag:ae,nodeDragThreshold:Ya,connectionDragThreshold:Za,onBeforeDelete:j,debug:Qa,ariaLabelConfig:Ja,zIndexMode:Ho}),b.jsx(qp,{onInit:l,onNodeClick:a,onEdgeClick:c,onNodeMouseEnter:E,onNodeMouseMove:g,onNodeMouseLeave:m,onNodeContextMenu:_,onNodeDoubleClick:S,nodeTypes:i,edgeTypes:s,connectionLineType:B,connectionLineStyle:Z,connectionLineComponent:Y,connectionLineContainerStyle:X,selectionKeyCode:U,selectionOnDrag:H,selectionMode:G,deleteKeyCode:K,multiSelectionKeyCode:ee,panActivationKeyCode:te,zoomActivationKeyCode:W,onlyRenderVisibleElements:re,defaultViewport:pe,translateExtent:xe,minZoom:ge,maxZoom:me,preventScrolling:we,zoomOnScroll:En,zoomOnPinch:_n,zoomOnDoubleClick:In,panOnScroll:Nn,panOnScrollSpeed:Cn,panOnScrollMode:Mn,panOnDrag:nt,autoPanOnSelection:Oa,onPaneClick:la,onPaneMouseEnter:ua,onPaneMouseMove:da,onPaneMouseLeave:fa,onPaneScroll:ha,onPaneContextMenu:pa,paneClickDistance:ga,nodeClickDistance:ma,onSelectionContextMenu:k,onSelectionStart:z,onSelectionEnd:P,onReconnect:xa,onReconnectStart:wa,onReconnectEnd:va,onEdgeContextMenu:ba,onEdgeDoubleClick:Sa,onEdgeMouseEnter:Ea,onEdgeMouseMove:_a,onEdgeMouseLeave:Na,reconnectRadius:Ca,defaultMarkerColor:tt,noDragClassName:ka,noWheelClassName:$a,noPanClassName:Ao,rfId:kn,disableKeyboardA11y:zo,nodeExtent:Te,viewport:Ga,onViewportChange:Wa,nodesDraggable:R}),b.jsx(_h,{onSelectionChange:D}),ya,b.jsx(wh,{proOptions:Ta,position:Pa}),b.jsx(xh,{rfId:kn,disableKeyboardA11y:zo})]})})}var tg=Ns(eg);const ng=e=>t=>{if(!e.includeHiddenNodes)return t.nodesInitialized;if(t.nodeLookup.size===0)return!1;for(const[,{internals:n}]of t.nodeLookup)if(n.handleBounds===void 0||!Eo(n.userNode))return!1;return!0};function og(e={includeHiddenNodes:!1}){return oe(ng(e))}function rg({dimensions:e,lineWidth:t,variant:n,className:o}){return b.jsx("path",{strokeWidth:t,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`,className:fe(["react-flow__background-pattern",n,o])})}function ig({radius:e,className:t}){return b.jsx("circle",{cx:e,cy:e,r:e,className:fe(["react-flow__background-pattern","dots",t])})}var Be;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(Be||(Be={}));const sg={[Be.Dots]:1,[Be.Lines]:1,[Be.Cross]:6},ag=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function Js({id:e,variant:t=Be.Dots,gap:n=20,size:o,lineWidth:r=1,offset:i=0,color:s,bgColor:a,style:c,className:l,patternClassName:u}){const d=M.useRef(null),{transform:f,patternId:h}=oe(ag,le),p=o||sg[t],y=t===Be.Dots,w=t===Be.Cross,x=Array.isArray(n)?n:[n,n],E=[x[0]*f[2]||1,x[1]*f[2]||1],g=p*f[2],m=Array.isArray(i)?i:[i,i],_=w?[g,g]:E,S=[m[0]*f[2]+_[0]/2,m[1]*f[2]+_[1]/2],N=`${h}${e||""}`;return b.jsxs("svg",{className:fe(["react-flow__background",l]),style:{...c,...bn,"--xy-background-color-props":a,"--xy-background-pattern-color-props":s},ref:d,"data-testid":"rf__background",children:[b.jsx("pattern",{id:N,x:f[0]%E[0],y:f[1]%E[1],width:E[0],height:E[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${S[0]},-${S[1]})`,children:y?b.jsx(ig,{radius:g/2,className:u}):b.jsx(rg,{dimensions:_,lineWidth:r,variant:t,className:u})}),b.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${N})`})]})}Js.displayName="Background";const cg=M.memo(Js);function lg(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",children:b.jsx("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"})})}function ug(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5",children:b.jsx("path",{d:"M0 0h32v4.2H0z"})})}function dg(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30",children:b.jsx("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"})})}function fg(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:b.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"})})}function hg(){return b.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:b.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"})})}function Xt({children:e,className:t,...n}){return b.jsx("button",{type:"button",className:fe(["react-flow__controls-button",t]),...n,children:e})}const pg=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function ea({style:e,showZoom:t=!0,showFitView:n=!0,showInteractive:o=!0,fitViewOptions:r,onZoomIn:i,onZoomOut:s,onFitView:a,onInteractiveChange:c,className:l,children:u,position:d="bottom-left",orientation:f="vertical","aria-label":h}){const p=ce(),{isInteractive:y,minZoomReached:w,maxZoomReached:x,ariaLabelConfig:E}=oe(pg,le),{zoomIn:g,zoomOut:m,fitView:_}=Dt(),S=()=>{g(),i?.()},N=()=>{m(),s?.()},$=()=>{_(r),a?.()},A=()=>{p.setState({nodesDraggable:!y,nodesConnectable:!y,elementsSelectable:!y}),c?.(!y)},O=f==="horizontal"?"horizontal":"vertical";return b.jsxs(vn,{className:fe(["react-flow__controls",O,l]),position:d,style:e,"data-testid":"rf__controls","aria-label":h??E["controls.ariaLabel"],children:[t&&b.jsxs(b.Fragment,{children:[b.jsx(Xt,{onClick:S,className:"react-flow__controls-zoomin",title:E["controls.zoomIn.ariaLabel"],"aria-label":E["controls.zoomIn.ariaLabel"],disabled:x,children:b.jsx(lg,{})}),b.jsx(Xt,{onClick:N,className:"react-flow__controls-zoomout",title:E["controls.zoomOut.ariaLabel"],"aria-label":E["controls.zoomOut.ariaLabel"],disabled:w,children:b.jsx(ug,{})})]}),n&&b.jsx(Xt,{className:"react-flow__controls-fitview",onClick:$,title:E["controls.fitView.ariaLabel"],"aria-label":E["controls.fitView.ariaLabel"],children:b.jsx(dg,{})}),o&&b.jsx(Xt,{className:"react-flow__controls-interactive",onClick:A,title:E["controls.interactive.ariaLabel"],"aria-label":E["controls.interactive.ariaLabel"],children:y?b.jsx(hg,{}):b.jsx(fg,{})}),u]})}ea.displayName="Controls";M.memo(ea);function gg({id:e,x:t,y:n,width:o,height:r,style:i,color:s,strokeColor:a,strokeWidth:c,className:l,borderRadius:u,shapeRendering:d,selected:f,onClick:h}){const{background:p,backgroundColor:y}=i||{},w=s||p||y;return b.jsx("rect",{className:fe(["react-flow__minimap-node",{selected:f},l]),x:t,y:n,rx:u,ry:u,width:o,height:r,style:{fill:w,stroke:a,strokeWidth:c},shapeRendering:d,onClick:h?x=>h(x,e):void 0})}const mg=M.memo(gg),yg=e=>e.nodes.map(t=>t.id),Fn=e=>e instanceof Function?e:()=>e;function xg({nodeStrokeColor:e,nodeColor:t,nodeClassName:n="",nodeBorderRadius:o=5,nodeStrokeWidth:r,nodeComponent:i=mg,onClick:s}){const a=oe(yg,le),c=Fn(t),l=Fn(e),u=Fn(n),d=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return b.jsx(b.Fragment,{children:a.map(f=>b.jsx(vg,{id:f,nodeColorFunc:c,nodeStrokeColorFunc:l,nodeClassNameFunc:u,nodeBorderRadius:o,nodeStrokeWidth:r,NodeComponent:i,onClick:s,shapeRendering:d},f))})}function wg({id:e,nodeColorFunc:t,nodeStrokeColorFunc:n,nodeClassNameFunc:o,nodeBorderRadius:r,nodeStrokeWidth:i,shapeRendering:s,NodeComponent:a,onClick:c}){const{node:l,x:u,y:d,width:f,height:h}=oe(p=>{const y=p.nodeLookup.get(e);if(!y)return{node:void 0,x:0,y:0,width:0,height:0};const w=y.internals.userNode,{x,y:E}=y.internals.positionAbsolute,{width:g,height:m}=ke(w);return{node:w,x,y:E,width:g,height:m}},le);return!l||l.hidden||!Eo(l)?null:b.jsx(a,{x:u,y:d,width:f,height:h,style:l.style,selected:!!l.selected,className:o(l),color:t(l),borderRadius:r,strokeColor:n(l),strokeWidth:i,shapeRendering:s,onClick:c,id:l.id})}const vg=M.memo(wg);var bg=M.memo(xg);const Sg=200,Eg=150,_g=e=>!e.hidden,Ng=e=>{const t={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:t,boundingRect:e.nodeLookup.size>0?Ki(Pt(e.nodeLookup,{filter:_g}),t):t,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}},Ur=(e,t)=>e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height,Cg=(e,t)=>Ur(e.viewBB,t.viewBB)&&Ur(e.boundingRect,t.boundingRect)&&e.rfId===t.rfId&&e.panZoom===t.panZoom&&e.translateExtent===t.translateExtent&&e.flowWidth===t.flowWidth&&e.flowHeight===t.flowHeight&&e.ariaLabelConfig===t.ariaLabelConfig,Mg="react-flow__minimap-desc";function ta({style:e,className:t,nodeStrokeColor:n,nodeColor:o,nodeClassName:r="",nodeBorderRadius:i=5,nodeStrokeWidth:s,nodeComponent:a,bgColor:c,maskColor:l,maskStrokeColor:u,maskStrokeWidth:d,position:f="bottom-right",onClick:h,onNodeClick:p,pannable:y=!1,zoomable:w=!1,ariaLabel:x,inversePan:E,zoomStep:g=1,offsetScale:m=5}){const _=ce(),S=M.useRef(null),{boundingRect:N,viewBB:$,rfId:A,panZoom:O,translateExtent:T,flowWidth:L,flowHeight:D,ariaLabelConfig:v}=oe(Ng,Cg),C=e?.width??Sg,I=e?.height??Eg,k=N.width/C,z=N.height/I,P=Math.max(k,z),j=P*C,V=P*I,B=m*P,Z=N.x-(j-N.width)/2-B,Y=N.y-(V-N.height)/2-B,X=j+B*2,K=V+B*2,U=`${Mg}-${A}`,H=M.useRef(0),G=M.useRef();H.current=P,M.useEffect(()=>{if(S.current&&O)return G.current=jf({domNode:S.current,panZoom:O,getTransform:()=>_.getState().transform,getViewScale:()=>H.current}),()=>{G.current?.destroy()}},[O]),M.useEffect(()=>{G.current?.update({translateExtent:T,width:L,height:D,inversePan:E,pannable:y,zoomStep:g,zoomable:w})},[y,w,E,g,T,L,D]);const te=h?Q=>{const[ne,re]=G.current?.pointer(Q)||[0,0];h(Q,{x:ne,y:re})}:void 0,ee=p?M.useCallback((Q,ne)=>{const re=_.getState().nodeLookup.get(ne).internals.userNode;p(Q,re)},[]):void 0,W=x??v["minimap.ariaLabel"];return b.jsx(vn,{position:f,style:{...e,"--xy-minimap-background-color-props":typeof c=="string"?c:void 0,"--xy-minimap-mask-background-color-props":typeof l=="string"?l:void 0,"--xy-minimap-mask-stroke-color-props":typeof u=="string"?u:void 0,"--xy-minimap-mask-stroke-width-props":typeof d=="number"?d*P:void 0,"--xy-minimap-node-background-color-props":typeof o=="string"?o:void 0,"--xy-minimap-node-stroke-color-props":typeof n=="string"?n:void 0,"--xy-minimap-node-stroke-width-props":typeof s=="number"?s:void 0},className:fe(["react-flow__minimap",t]),"data-testid":"rf__minimap",children:b.jsxs("svg",{width:C,height:I,viewBox:`${Z} ${Y} ${X} ${K}`,className:"react-flow__minimap-svg",role:"img","aria-labelledby":U,ref:S,onClick:te,children:[W&&b.jsx("title",{id:U,children:W}),b.jsx(bg,{onClick:ee,nodeColor:o,nodeStrokeColor:n,nodeBorderRadius:i,nodeClassName:r,nodeStrokeWidth:s,nodeComponent:a}),b.jsx("path",{className:"react-flow__minimap-mask",d:`M${Z-B},${Y-B}h${X+B*2}v${K+B*2}h${-X-B*2}z
23
+ M${$.x},${$.y}h${$.width}v${$.height}h${-$.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}ta.displayName="MiniMap";const Ig=M.memo(ta),kg=e=>t=>e?`${Math.max(1/t.transform[2],1)}`:void 0,$g={[pt.Line]:"right",[pt.Handle]:"bottom-right"};function Ag({nodeId:e,position:t,variant:n=pt.Handle,className:o,style:r=void 0,children:i,color:s,minWidth:a=10,minHeight:c=10,maxWidth:l=Number.MAX_VALUE,maxHeight:u=Number.MAX_VALUE,keepAspectRatio:d=!1,resizeDirection:f,autoScale:h=!0,shouldResize:p,onResizeStart:y,onResize:w,onResizeEnd:x}){const E=$s(),g=typeof e=="string"?e:E,m=ce(),_=M.useRef(null),S=n===pt.Handle,N=oe(M.useCallback(kg(S&&h),[S,h]),le),$=M.useRef(null),A=t??$g[n];M.useEffect(()=>{if(!(!_.current||!g))return $.current||($.current=Jf({domNode:_.current,nodeId:g,getStoreItems:()=>{const{nodeLookup:T,transform:L,snapGrid:D,snapToGrid:v,nodeOrigin:C,domNode:I}=m.getState();return{nodeLookup:T,transform:L,snapGrid:D,snapToGrid:v,nodeOrigin:C,paneDomNode:I}},onChange:(T,L)=>{const{triggerNodeChanges:D,nodeLookup:v,parentLookup:C,nodeOrigin:I}=m.getState(),k=[],z={x:T.x,y:T.y},P=v.get(g);if(P&&P.expandParent&&P.parentId){const j=P.origin??I,V=T.width??P.measured.width??0,B=T.height??P.measured.height??0,Z={id:P.id,parentId:P.parentId,rect:{width:V,height:B,...es({x:T.x??P.position.x,y:T.y??P.position.y},{width:V,height:B},P.parentId,v,j)}},Y=ko([Z],v,C,I);k.push(...Y),z.x=T.x?Math.max(j[0]*V,T.x):void 0,z.y=T.y?Math.max(j[1]*B,T.y):void 0}if(z.x!==void 0&&z.y!==void 0){const j={id:g,type:"position",position:{...z}};k.push(j)}if(T.width!==void 0&&T.height!==void 0){const V={id:g,type:"dimensions",resizing:!0,setAttributes:f?f==="horizontal"?"width":"height":!0,dimensions:{width:T.width,height:T.height}};k.push(V)}for(const j of L){const V={...j,type:"position"};k.push(V)}D(k)},onEnd:({width:T,height:L})=>{const D={id:g,type:"dimensions",resizing:!1,dimensions:{width:T,height:L}};m.getState().triggerNodeChanges([D])}})),$.current.update({controlPosition:A,boundaries:{minWidth:a,minHeight:c,maxWidth:l,maxHeight:u},keepAspectRatio:d,resizeDirection:f,onResizeStart:y,onResize:w,onResizeEnd:x,shouldResize:p}),()=>{$.current?.destroy()}},[A,a,c,l,u,d,y,w,x,p]);const O=A.split("-");return b.jsx("div",{className:fe(["react-flow__resize-control","nodrag",...O,n,o]),ref:_,style:{...r,scale:N,...s&&{[S?"backgroundColor":"borderColor"]:s}},children:i})}const na=M.memo(Ag);function oa(e,t){const n=t.length===0?void 0:t[t.length-1];return Object.values(e.nodesById).filter(o=>(o.scope??void 0)===n)}function Pg(e){return e.kind==="group"?"materialGroup":e.kind==="comment"?"materialComment":e.kind==="reroute"?"materialReroute":"material"}let rt=null,Xn=0;function Tg(e,t){if(rt!==null&&rt.assets===e&&rt.parameters===t)return{value:rt.value,token:rt.token};Xn+=1;const n={images:Object.values(e).filter(o=>o.kind==="image").map(o=>({value:o.id,label:o.path.split("/").pop()??o.id})).sort((o,r)=>o.label.localeCompare(r.label)),parameters:Object.values(t).sort((o,r)=>o.label.localeCompare(r.label)).map(o=>({value:o.id,label:`${o.label} · ${o.type}`}))};return rt={assets:e,parameters:t,value:n,token:Xn},{value:n,token:Xn}}const Kr=new WeakMap,Qr=new WeakMap;function zg(e){const t=new Map,n=(o,r)=>{const i=t.get(o);i===void 0?t.set(o,new Set([r])):i.add(r)};for(const o of e.edges)n(o.source.nodeId,`out:${o.source.socket}`),n(o.target.nodeId,`in:${o.target.socket}`);return t}function Dg(e){const t=new Map;for(const n of e){const o=n.at.split(".");if(o[0]!=="nodesById")continue;const r=o[1];r===void 0||t.has(r)||t.set(r,n.message)}return t}const Rg=new Set;function Hg(e){const{graph:t,materialId:n,path:o,assets:r,selection:i,problems:s,types:a}=e,c=oa(t,o),l=zg(t),u=Dg(s),d=new Set(i.nodeIds),f=new Set(i.edgeIds),{value:h,token:p}=Tg(r,t.parameters),y=c.filter(m=>m.kind==="group"),w=c.filter(m=>m.kind!=="group"),x=[];for(const m of[...y,...w]){const _=m.groupId===void 0?void 0:t.nodesById[m.groupId],N=_?.kind==="group"&&(_.scope??void 0)===(m.scope??void 0)?_.position:null,$=l.get(m.id)??Rg,A=u.get(m.id)??null,O=d.has(m.id),T=sc(m.kind),L=T===null?{inputs:[],outputs:[]}:ac(t,m),D=L.outputs[0]===void 0?null:a.outputTypeOf(m.id,L.outputs[0].id),v=m.parameterId===void 0?void 0:t.parameters[m.parameterId],C=m.assetId===void 0?void 0:r[m.assetId]?.path.split("/").pop()??m.assetId,I=[O?"1":"0",[...$].sort().join(","),N===null?"-":`${N[0]},${N[1]}`,A??"",D??"",v===void 0?"":`${v.id}:${v.label}:${v.type}`,C??"",String(p),L.inputs.map(j=>`${j.id}:${j.type}`).join("|"),L.outputs.map(j=>`${j.id}:${j.type}`).join("|")].join(""),k=Kr.get(m);if(k!==void 0&&k.key===I){x.push(k.flow);continue}if(T===null)continue;const z={materialId:n,path:o,node:m,spec:T,inputs:L.inputs,outputs:L.outputs,connected:$,parameter:v,assetLabel:C,outputType:D,problem:A,choices:h},P={id:m.id,type:Pg(m),position:N===null?{x:m.position[0],y:m.position[1]}:{x:m.position[0]-N[0],y:m.position[1]-N[1]},selected:O,data:z,...N===null?{}:{parentId:m.groupId},...m.kind==="group"||m.kind==="comment"?{style:{width:m.size?.[0]??240,height:m.size?.[1]??160}}:{}};Kr.set(m,{key:I,flow:P}),x.push(P)}const E=[],g=new Set(c.map(m=>m.id));for(const m of t.edges){if(!g.has(m.source.nodeId)||!g.has(m.target.nodeId))continue;const _=f.has(m.id)?"1":"0",S=Qr.get(m);if(S!==void 0&&S.key===_){E.push(S.edge);continue}const N={id:m.id,source:m.source.nodeId,sourceHandle:m.source.socket,target:m.target.nodeId,targetHandle:m.target.socket,type:"smoothstep",className:"material-edge",selected:_==="1",reconnectable:!0};Qr.set(m,{key:_,edge:N}),E.push(N)}return{nodes:x,edges:E}}function Jr(e,t){const n=e.parentId===void 0?void 0:t.nodesById[e.parentId];return n===void 0?[Math.round(e.position.x),Math.round(e.position.y)]:[Math.round(e.position.x+n.position[0]),Math.round(e.position.y+n.position[1])]}function Lg(e,t,n){const o=t.x-e.x,r=t.y-e.y;let i=0,s=1;const a=[[-o,e.x-n.x],[o,n.x+n.width-e.x],[-r,e.y-n.y],[r,n.y+n.height-e.y]];for(const[c,l]of a){if(c===0){if(l<0)return!1;continue}const u=l/c;if(c<0){if(u>s)return!1;u>i&&(i=u)}else{if(u<i)return!1;u<s&&(s=u)}}return!0}function Og(e){return{x:e.position[0],y:e.position[1],width:e.size?.[0]??240,height:e.size?.[1]??160}}function ei(e,t,n){const o=t.length===0?void 0:t[t.length-1];let r=null;for(const i of Object.values(e.nodesById)){if(i.kind!=="group"||(i.scope??void 0)!==o)continue;const s=Og(i);if(n[0]<s.x||n[0]>s.x+s.width||n[1]<s.y||n[1]>s.y+s.height)continue;const a=s.width*s.height;(r===null||a<r.area||a===r.area&&i.id<r.id)&&(r={id:i.id,area:a})}return r===null?null:r.id}const ra={float:{shape:"material-socket-circle",label:"Float"},int:{shape:"material-socket-circle-dotted",label:"Integer"},bool:{shape:"material-socket-triangle",label:"Boolean"},vec2:{shape:"material-socket-diamond",label:"Vector 2"},vec3:{shape:"material-socket-square",label:"Vector 3"},vec4:{shape:"material-socket-square-round",label:"Vector 4"},color:{shape:"material-socket-ring",label:"Colour"},texture:{shape:"material-socket-ring-double",label:"Texture"},numeric:{shape:"material-socket-circle-dashed",label:"Any number"}};function so(e,t){return["material-socket",ra[e].shape,t.connected?"is-connected":"",t.drop==="ok"?"is-droppable":"",t.drop==="blocked"?"is-blocked":""].filter(o=>o!=="").join(" ")}function ia(e,t){return`${e} · ${ra[t].label}`}const sa=M.createContext(new Map);function jg(e){const t=ue.c(3),{entries:n,children:o}=e;let r;return t[0]!==o||t[1]!==n?(r=b.jsx(sa.Provider,{value:n,children:o}),t[0]=o,t[1]=n,t[2]=r):r=t[2],r}function Vg(e){const t=ue.c(3),n=M.useContext(sa);let o;return t[0]!==e||t[1]!==n?(o=n.get(e),t[0]=e,t[1]=n,t[2]=o):o=t[2],o}const ao=96;function Bg(e){const t=ue.c(8),{nodeId:n}=e,o=Vg(n),r=M.useRef(null);let i,s;t[0]!==o?(i=()=>{const u=r.current;if(u===null||o===void 0||typeof o=="string")return;const d=u.getContext("2d");d!==null&&(d.clearRect(0,0,u.width,u.height),d.drawImage(o,0,0,u.width,u.height))},s=[o],t[0]=o,t[1]=i,t[2]=s):(i=t[1],s=t[2]),M.useEffect(i,s);const a=typeof o!="string";let c;t[3]!==o?(c=typeof o=="string"?b.jsx("span",{className:"material-node-preview-message",children:o}):b.jsx("canvas",{ref:r,className:`material-node-preview-canvas${o===void 0?" is-waiting":""}`,width:ao,height:ao}),t[3]=o,t[4]=c):c=t[4];let l;return t[5]!==a||t[6]!==c?(l=b.jsx("div",{className:"material-node-preview","aria-hidden":a,children:c}),t[5]=a,t[6]=c,t[7]=l):l=t[7],l}const aa=M.createContext(()=>!1);function Fg(e){const t=ue.c(3),{canConnect:n,children:o}=e;let r;return t[0]!==n||t[1]!==o?(r=b.jsx(aa.Provider,{value:n,children:o}),t[0]=n,t[1]=o,t[2]=r):r=t[2],r}function co(e,t,n){const o=M.useContext(aa),r=qs(Xg),i=r===null||r.id==null?null:{nodeId:r.nodeId,socket:r.id};if(r===null||i===null||r.nodeId===e||r.type===n)return"idle";const s=n==="target"?{source:i,target:{nodeId:e,socket:t}}:{source:{nodeId:e,socket:t},target:i};return o(s.source,s.target)?"ok":"blocked"}function Xg(e){return e.inProgress?e.fromHandle:null}function ti(e){const t=ue.c(13),{nodeId:n,socket:o,side:r,connected:i}=e,s=co(n,o.id,r),a=r==="target"?q.Left:q.Right,c=o.id;let l;t[0]!==i||t[1]!==s||t[2]!==o.type?(l=so(o.type,{connected:i,drop:s}),t[0]=i,t[1]=s,t[2]=o.type,t[3]=l):l=t[3];let u;t[4]!==o.label||t[5]!==o.type?(u=ia(o.label,o.type),t[4]=o.label,t[5]=o.type,t[6]=u):u=t[6];let d;return t[7]!==r||t[8]!==o.id||t[9]!==a||t[10]!==l||t[11]!==u?(d=b.jsx(Qe,{type:r,position:a,id:c,className:l,title:u}),t[7]=r,t[8]=o.id,t[9]=a,t[10]=l,t[11]=u,t[12]=d):d=t[12],d}const Yg=M.memo(function(t){const n=ue.c(45),{data:o}=t,{node:r,spec:i,inputs:s,outputs:a,connected:c,problem:l}=o,u=`material-node material-node-${i.category}${l===null?"":" is-problem"}`,d=`${i.label} shader node`,f=r.kind,h=`material-node-${r.id}`;let p;n[0]!==i.label?(p=b.jsx("span",{children:i.label}),n[0]=i.label,n[1]=p):p=n[1];let y;n[2]!==o.outputType?(y=o.outputType===null?null:b.jsx("small",{children:o.outputType}),n[2]=o.outputType,n[3]=y):y=n[3];let w;n[4]!==p||n[5]!==y?(w=b.jsxs("header",{className:"material-node-title",children:[p,y]}),n[4]=p,n[5]=y,n[6]=w):w=n[6];let x;n[7]!==l?(x=l===null?null:b.jsx("p",{className:"material-node-problem",role:"status",children:l}),n[7]=l,n[8]=x):x=n[8];let E;n[9]!==o?(E=b.jsx(Gg,{data:o}),n[9]=o,n[10]=E):E=n[10];let g;n[11]!==r.id||n[12]!==r.preview?(g=r.preview===!0?b.jsx(Bg,{nodeId:r.id}):null,n[11]=r.id,n[12]=r.preview,n[13]=g):g=n[13];let m;if(n[14]!==c||n[15]!==s||n[16]!==r.id){let O;n[18]!==c||n[19]!==r.id?(O=T=>b.jsxs("div",{className:"material-socket-row is-input",children:[b.jsx(ti,{nodeId:r.id,socket:T,side:"target",connected:c.has(`in:${T.id}`)}),b.jsx("span",{children:T.label})]},T.id),n[18]=c,n[19]=r.id,n[20]=O):O=n[20],m=s.map(O),n[14]=c,n[15]=s,n[16]=r.id,n[17]=m}else m=n[17];let _;n[21]!==m?(_=b.jsx("div",{className:"material-node-inputs",children:m}),n[21]=m,n[22]=_):_=n[22];let S;if(n[23]!==c||n[24]!==r.id||n[25]!==a){let O;n[27]!==c||n[28]!==r.id?(O=T=>b.jsxs("div",{className:"material-socket-row is-output",children:[b.jsx("span",{children:T.label}),b.jsx(ti,{nodeId:r.id,socket:T,side:"source",connected:c.has(`out:${T.id}`)})]},T.id),n[27]=c,n[28]=r.id,n[29]=O):O=n[29],S=a.map(O),n[23]=c,n[24]=r.id,n[25]=a,n[26]=S}else S=n[26];let N;n[30]!==S?(N=b.jsx("div",{className:"material-node-outputs",children:S}),n[30]=S,n[31]=N):N=n[31];let $;n[32]!==_||n[33]!==N?($=b.jsxs("div",{className:"material-node-sockets",children:[_,N]}),n[32]=_,n[33]=N,n[34]=$):$=n[34];let A;return n[35]!==r.kind||n[36]!==u||n[37]!==g||n[38]!==$||n[39]!==d||n[40]!==h||n[41]!==w||n[42]!==x||n[43]!==E?(A=b.jsxs("article",{className:u,"aria-label":d,"data-node-kind":f,"data-testid":h,children:[w,x,E,g,$]}),n[35]=r.kind,n[36]=u,n[37]=g,n[38]=$,n[39]=d,n[40]=h,n[41]=w,n[42]=x,n[43]=E,n[44]=A):A=n[44],A}),Zg={vec2:2,vec3:3,vec4:4},ni=["X","Y","Z","W"];function Gg(e){const t=ue.c(6),{data:n}=e,{spec:o,node:r}=n;let i;if(t[0]!==n||t[1]!==o.fields){i=[];for(const c of o.fields)c==="value"?i.push(b.jsx(Wg,{data:n},"value")):c==="mask"?i.push(b.jsx(Kg,{data:n},"mask")):c==="wrap"?i.push(b.jsx(Qg,{data:n},"wrap")):c==="index"?i.push(b.jsx(em,{data:n},"index")):c==="assetId"?i.push(b.jsx(tm,{data:n},"assetId")):c==="parameterId"?i.push(b.jsx(rm,{data:n},"parameterId")):c==="generator"&&i.push(b.jsx(om,{data:n},"generator"));t[0]=n,t[1]=o.fields,t[2]=i}else i=t[2];if(i.length===0)return null;const s=`material-fields-${r.id}`;let a;return t[3]!==i||t[4]!==s?(a=b.jsx("div",{className:"material-node-fields nodrag nowheel","data-testid":s,children:i}),t[3]=i,t[4]=s,t[5]=a):a=t[5],a}function et(e){const t=ue.c(5),n=Je();let o;return t[0]!==e.materialId||t[1]!==e.node.id||t[2]!==e.path||t[3]!==n?(o=r=>n.setMaterialNodeValue(e.materialId,e.path,e.node.id,r),t[0]=e.materialId,t[1]=e.node.id,t[2]=e.path,t[3]=n,t[4]=o):o=t[4],o}function oi(e,t){const n=ue.c(3);let o;return n[0]!==t||n[1]!==e?(o=(r,i)=>{const s=r.materials?.[e.materialId]?.nodesById[e.node.id];if(s===void 0)return r;const a=t(s,i);return a===null?r:fi(r,e.materialId,e.path,e.node.id,a)},n[0]=t,n[1]=e,n[2]=o):o=n[2],cc(o)}function Wg(e){const t=ue.c(38),{data:n}=e,o=Je(),r=et(n),{node:i,spec:s}=n,a=Zg[i.kind],c=s.label,l=oi(n,Ug),u=oi(n,qg);let d;t[0]!==n.materialId||t[1]!==n.path||t[2]!==i.id||t[3]!==o?(d=(E,g)=>({start:()=>o.beginScrub(),move:m=>{typeof m=="number"&&o.scrubCapture(_=>{const S=_.materials?.[n.materialId]?.nodesById[i.id];return S===void 0?_:fi(_,n.materialId,n.path,i.id,ri(S.value,g,E,m))})},end:m=>o.endScrub(m)}),t[0]=n.materialId,t[1]=n.path,t[2]=i.id,t[3]=o,t[4]=d):d=t[4];const f=d;if(i.kind==="color"){const E=typeof i.value=="string"?i.value:"#ffffff",g=`${c} value`;let m;t[5]!==r?(m=S=>r({value:S}),t[5]=r,t[6]=m):m=t[6];let _;return t[7]!==u||t[8]!==E||t[9]!==g||t[10]!==m?(_=b.jsx("div",{className:"material-node-field is-color",children:b.jsx(lc,{value:E,ariaLabel:g,commit:m,scrub:u})}),t[7]=u,t[8]=E,t[9]=g,t[10]=m,t[11]=_):_=t[11],_}if(i.kind==="bool"){const E=i.value===!0,g=`${c} value`;let m;t[12]!==r?(m=S=>r({value:S}),t[12]=r,t[13]=m):m=t[13];let _;return t[14]!==E||t[15]!==g||t[16]!==m?(_=b.jsx("div",{className:"material-node-field",children:b.jsx(uc,{checked:E,ariaLabel:g,onChange:m})}),t[14]=E,t[15]=g,t[16]=m,t[17]=_):_=t[17],_}if(a!==void 0){let E;t[18]!==i.value?(E=Array.isArray(i.value)?i.value:[],t[18]=i.value,t[19]=E):E=t[19];const g=E;let m;return t[20]!==r||t[21]!==c||t[22]!==i.value||t[23]!==g||t[24]!==f||t[25]!==a?(m=b.jsx("div",{className:"material-node-field is-vector",children:Array.from({length:a},(_,S)=>{const N=f(S,a);return b.jsx(Yn,{value:typeof g[S]=="number"?g[S]:0,ariaLabel:`${c} ${ni[S]}`,label:ni[S],step:.01,onCommit:$=>r({value:ri(i.value,a,S,$)}),onScrubStart:N.start,onScrub:N.move,onScrubEnd:N.end},S)})}),t[20]=r,t[21]=c,t[22]=i.value,t[23]=g,t[24]=f,t[25]=a,t[26]=m):m=t[26],m}const h=i.kind==="int"?1:.01,p=typeof i.value=="number"?i.value:0,y=`${c} value`;let w;t[27]!==r||t[28]!==i.kind?(w=E=>r({value:i.kind==="int"?Math.round(E):E}),t[27]=r,t[28]=i.kind,t[29]=w):w=t[29];let x;return t[30]!==l.end||t[31]!==l.move||t[32]!==l.start||t[33]!==h||t[34]!==p||t[35]!==y||t[36]!==w?(x=b.jsx("div",{className:"material-node-field",children:b.jsx(Yn,{value:p,ariaLabel:y,step:h,onCommit:w,onScrubStart:l.start,onScrub:l.move,onScrubEnd:l.end})}),t[30]=l.end,t[31]=l.move,t[32]=l.start,t[33]=h,t[34]=p,t[35]=y,t[36]=w,t[37]=x):x=t[37],x}function qg(e,t){return typeof t=="string"?t:null}function Ug(e,t){return typeof t=="number"?t:null}function ri(e,t,n,o){const r=Array.isArray(e)?e:[];return Array.from({length:t},(s,a)=>a===n?o:typeof r[a]=="number"?r[a]:0)}function Kg(e){const t=ue.c(5),{data:n}=e,o=et(n),r=n.node.mask??"xyz";let i;t[0]!==o?(i=a=>{const c=a.trim().toLowerCase();/^[xyzw]{1,4}$/.test(c)&&o({mask:c})},t[0]=o,t[1]=i):i=t[1];let s;return t[2]!==r||t[3]!==i?(s=b.jsx("div",{className:"material-node-field",children:b.jsx(uo,{value:r,ariaLabel:"Swizzle mask",onCommit:i})}),t[2]=r,t[3]=i,t[4]=s):s=t[4],s}function Qg(e){const t=ue.c(6),{data:n}=e,o=et(n),r=n.node.wrap??"clamp";let i;t[0]===Symbol.for("react.memo_cache_sentinel")?(i=dc.map(Jg),t[0]=i):i=t[0];let s;t[1]!==o?(s=c=>o({wrap:c}),t[1]=o,t[2]=s):s=t[2];let a;return t[3]!==r||t[4]!==s?(a=b.jsx("div",{className:"material-node-field",children:b.jsx(un,{value:r,ariaLabel:"Texture wrap",options:i,onChange:s})}),t[3]=r,t[4]=s,t[5]=a):a=t[5],a}function Jg(e){return{value:e,label:e}}function em(e){const t=ue.c(5),{data:n}=e,o=et(n),r=n.node.index??0;let i;t[0]!==o?(i=a=>o({index:Math.round(a)}),t[0]=o,t[1]=i):i=t[1];let s;return t[2]!==r||t[3]!==i?(s=b.jsx("div",{className:"material-node-field",children:b.jsx(Yn,{value:r,ariaLabel:"Set index",min:0,max:3,step:1,onCommit:i})}),t[2]=r,t[3]=i,t[4]=s):s=t[4],s}function tm(e){const t=ue.c(8),{data:n}=e,o=et(n),r=n.node.assetId??"";let i;t[0]!==n.choices.images?(i=[...n.choices.images],t[0]=n.choices.images,t[1]=i):i=t[1];let s;t[2]!==o?(s=c=>o({assetId:c}),t[2]=o,t[3]=s):s=t[3];let a;return t[4]!==r||t[5]!==i||t[6]!==s?(a=b.jsx("div",{className:"material-node-field",children:b.jsx(un,{value:r,ariaLabel:"Texture image",placeholder:"Choose image",options:i,onChange:s})}),t[4]=r,t[5]=i,t[6]=s,t[7]=a):a=t[7],a}const nm=Object.entries(hi).map(([e,t])=>({value:e,label:t.label})).sort((e,t)=>e.label.localeCompare(t.label));function om(e){const t=ue.c(5),{data:n}=e,o=et(n),r=n.node.generator??"";let i;t[0]!==o?(i=a=>o({generator:a}),t[0]=o,t[1]=i):i=t[1];let s;return t[2]!==r||t[3]!==i?(s=b.jsx("div",{className:"material-node-field",children:b.jsx(un,{value:r,ariaLabel:"Procedural material",placeholder:"Choose material",options:nm,onChange:i})}),t[2]=r,t[3]=i,t[4]=s):s=t[4],s}function rm(e){const t=ue.c(8),{data:n}=e,o=et(n),r=n.node.parameterId??"";let i;t[0]!==n.choices.parameters?(i=[...n.choices.parameters],t[0]=n.choices.parameters,t[1]=i):i=t[1];let s;t[2]!==o?(s=c=>o({parameterId:c}),t[2]=o,t[3]=s):s=t[3];let a;return t[4]!==r||t[5]!==i||t[6]!==s?(a=b.jsx("div",{className:"material-node-field",children:b.jsx(un,{value:r,ariaLabel:"Exposed control",placeholder:"Choose control",options:i,onChange:s})}),t[4]=r,t[5]=i,t[6]=s,t[7]=a):a=t[7],a}const im=M.memo(function(t){const n=ue.c(18),{data:o,selected:r}=t,i=Je(),{node:s,materialId:a,path:c}=o,l=`material-node-${s.id}`,u=s.label??"Group";let d;n[0]!==a||n[1]!==s.id||n[2]!==c||n[3]!==i?(d=y=>i.setMaterialComment(a,c,s.id,{label:y}),n[0]=a,n[1]=s.id,n[2]=c,n[3]=i,n[4]=d):d=n[4];let f;n[5]!==u||n[6]!==d?(f=b.jsx("div",{className:"material-group-title nodrag nowheel",children:b.jsx(uo,{value:u,ariaLabel:"Group name",onCommit:d})}),n[5]=u,n[6]=d,n[7]=f):f=n[7];let h;n[8]!==a||n[9]!==s.id||n[10]!==c||n[11]!==r||n[12]!==i?(h=r===!0?b.jsx(na,{className:"material-resize-handle",position:"bottom-right",minWidth:160,minHeight:120,onResizeEnd:(y,w)=>i.setMaterialComment(a,c,s.id,{size:[Math.round(w.width),Math.round(w.height)]})}):null,n[8]=a,n[9]=s.id,n[10]=c,n[11]=r,n[12]=i,n[13]=h):h=n[13];let p;return n[14]!==l||n[15]!==f||n[16]!==h?(p=b.jsxs("div",{className:"material-group","data-testid":l,children:[f,h]}),n[14]=l,n[15]=f,n[16]=h,n[17]=p):p=n[17],p}),sm=M.memo(function(t){const n=ue.c(18),{data:o,selected:r}=t,i=Je(),{node:s,materialId:a,path:c}=o,l=`material-node-${s.id}`,u=s.text??"";let d;n[0]!==a||n[1]!==s.id||n[2]!==c||n[3]!==i?(d=y=>i.setMaterialComment(a,c,s.id,{text:y}),n[0]=a,n[1]=s.id,n[2]=c,n[3]=i,n[4]=d):d=n[4];let f;n[5]!==u||n[6]!==d?(f=b.jsx("div",{className:"material-comment-body nodrag nowheel",children:b.jsx(uo,{multiline:!0,value:u,placeholder:"Note",ariaLabel:"Comment",onCommit:d})}),n[5]=u,n[6]=d,n[7]=f):f=n[7];let h;n[8]!==a||n[9]!==s.id||n[10]!==c||n[11]!==r||n[12]!==i?(h=r===!0?b.jsx(na,{className:"material-resize-handle",position:"bottom-right",minWidth:140,minHeight:80,onResizeEnd:(y,w)=>i.setMaterialComment(a,c,s.id,{size:[Math.round(w.width),Math.round(w.height)]})}):null,n[8]=a,n[9]=s.id,n[10]=c,n[11]=r,n[12]=i,n[13]=h):h=n[13];let p;return n[14]!==l||n[15]!==f||n[16]!==h?(p=b.jsxs("div",{className:"material-comment","data-testid":l,children:[f,h]}),n[14]=l,n[15]=f,n[16]=h,n[17]=p):p=n[17],p}),am=M.memo(function(t){const n=ue.c(19),{data:o}=t,{node:r,connected:i,outputType:s}=o,a=s===null||s==="texture"?"numeric":s,c=co(r.id,"value","target"),l=co(r.id,"value","source"),u=`material-node-${r.id}`;let d;n[0]!==a?(d=ia("Reroute",a),n[0]=a,n[1]=d):d=n[1];let f;n[2]!==i||n[3]!==c||n[4]!==a?(f=so(a,{connected:i.has("in:value"),drop:c}),n[2]=i,n[3]=c,n[4]=a,n[5]=f):f=n[5];let h;n[6]!==f?(h=b.jsx(Qe,{type:"target",position:q.Left,id:"value",className:f}),n[6]=f,n[7]=h):h=n[7];let p;n[8]!==i||n[9]!==l||n[10]!==a?(p=so(a,{connected:i.has("out:value"),drop:l}),n[8]=i,n[9]=l,n[10]=a,n[11]=p):p=n[11];let y;n[12]!==p?(y=b.jsx(Qe,{type:"source",position:q.Right,id:"value",className:p}),n[12]=p,n[13]=y):y=n[13];let w;return n[14]!==u||n[15]!==d||n[16]!==h||n[17]!==y?(w=b.jsxs("div",{className:"material-reroute","data-testid":u,title:d,children:[h,y]}),n[14]=u,n[15]=d,n[16]=h,n[17]=y,n[18]=w):w=n[18],w}),Yt=["input","source","geometry","uv","math","vector","construct","logic","color","noise","generator","texture","function","editor","output"],cm={source:"Surface",input:"Input",geometry:"Geometry",math:"Math",vector:"Vector",construct:"Construct",logic:"Logic",color:"Colour",noise:"Noise",generator:"Materials",uv:"UV",texture:"Texture",function:"Function",editor:"Editor",output:"Output"},lm=new Set(["subgraph","fn-input","fn-output","group"]);function um(e){return e.category!=="output"&&!lm.has(e.kind)&&e.kind!=="tsl-texture"}function ii(e,t){return e===""||t.some(n=>n!==void 0&&n.toLowerCase().includes(e))}function si(e,t){const n=t.type==="numeric";return t.side==="source"?e.inputs.some(o=>n?o.type!=="texture":jo(o.type,t.type,o.accepts)):e.outputs.some(o=>o.type==="numeric"?t.type!=="texture":n?o.type!=="texture":jo(t.type,o.type))}function dm(e,t){const n=e.trim().toLowerCase(),o=[];for(const i of Object.values(Oo))um(i)&&(t!==void 0&&!si(i,t)||ii(n,[i.label,i.kind,i.category,...i.keywords??[]])&&o.push({kind:i.kind,label:i.label,category:i.category}));const r=Oo["tsl-texture"];for(const[i,s]of Object.entries(hi))t!==void 0&&!si({inputs:s.inputs,outputs:r.outputs},t)||ii(n,[s.label,i,r.label,r.category,...s.keywords??[],...r.keywords??[]])&&o.push({kind:"tsl-texture",label:s.label,category:r.category,generator:i});return o.sort((i,s)=>{const a=Yt.indexOf(i.category),c=Yt.indexOf(s.category),l=a<0?Yt.length:a,u=c<0?Yt.length:c;return l===u?i.label.localeCompare(s.label):l-u})}function fm(e){const t=ue.c(61),{materialId:n,path:o,request:r,screenAt:i,graphAt:s}=e,a=Je(),[c,l]=M.useState(""),[u,d]=M.useState(0),f=M.useRef(null);let h,p;t[0]!==c||t[1]!==r.from?(p=dm(c,r.from),t[0]=c,t[1]=r.from,t[2]=p):p=t[2],h=p;const y=h;let w;t[3]===Symbol.for("react.memo_cache_sentinel")?(w=()=>{l(""),d(0)},t[3]=w):w=t[3];let x;t[4]!==r?(x=[r],t[4]=r,t[5]=x):x=t[5],M.useEffect(w,x);let E,g;t[6]!==y.length?(E=()=>{d(P=>P>=y.length?Math.max(0,y.length-1):P)},g=[y.length],t[6]=y.length,t[7]=E,t[8]=g):(E=t[7],g=t[8]),M.useEffect(E,g);let m;t[9]===Symbol.for("react.memo_cache_sentinel")?(m=()=>{const P=f.current?.querySelector("[data-active='true']");typeof P?.scrollIntoView=="function"&&P.scrollIntoView({block:"nearest"})},t[9]=m):m=t[9];let _;t[10]!==u?(_=[u],t[10]=u,t[11]=_):_=t[11],M.useEffect(m,_);let S;t[12]!==s[0]||t[13]!==s[1]||t[14]!==n||t[15]!==o||t[16]!==r.from||t[17]!==a?(S=P=>{a.addMaterialNode(n,o,P.kind,[s[0],s[1]],r.from,P.generator)},t[12]=s[0],t[13]=s[1],t[14]=n,t[15]=o,t[16]=r.from,t[17]=a,t[18]=S):S=t[18];const N=S;let $,A,O,T,L,D,v,C,I;if(t[19]!==u||t[20]!==N||t[21]!==c||t[22]!==r.from||t[23]!==y||t[24]!==i.x||t[25]!==i.y||t[26]!==a){let P;P=null,T="material-node-palette nodrag nowheel",L="dialog",D="Add shader node",v="material-node-palette";const j=`${i.x}px`,V=`${i.y}px`;t[36]!==j||t[37]!==V?(C={left:j,top:V},t[36]=j,t[37]=V,t[38]=C):C=t[38];const B=r.from===void 0?"Search nodes":"Search nodes that fit";let Z;t[39]===Symbol.for("react.memo_cache_sentinel")?(Z=X=>l(X.currentTarget.value),t[39]=Z):Z=t[39];let Y;t[40]!==u||t[41]!==N||t[42]!==y||t[43]!==a?(Y=X=>{if(X.key==="ArrowDown")X.preventDefault(),d(K=>y.length===0?0:(K+1)%y.length);else if(X.key==="ArrowUp")X.preventDefault(),d(K=>y.length===0?0:(K-1+y.length)%y.length);else if(X.key==="Enter"){X.preventDefault();const K=y[u];K!==void 0&&N(K)}else X.key==="Escape"&&(X.preventDefault(),X.stopPropagation(),a.closeMaterialPalette())},t[40]=u,t[41]=N,t[42]=y,t[43]=a,t[44]=Y):Y=t[44],t[45]!==c||t[46]!==B||t[47]!==Y?(I=b.jsx("input",{autoFocus:!0,type:"search",className:"material-node-search",value:c,placeholder:B,"aria-label":"Search shader nodes",onChange:Z,onKeyDown:Y}),t[45]=c,t[46]=B,t[47]=Y,t[48]=I):I=t[48],$="material-node-palette-scroll",A=f,O=y.length===0?b.jsx("p",{className:"material-empty-copy",children:r.from===void 0?`No node matches “${c.trim()}”.`:"No node takes that connection."}):y.map((X,K)=>{const U=X.category===P?null:b.jsx("h3",{children:cm[X.category]},`shelf-${X.category}`);return P=X.category,b.jsxs("div",{className:"material-node-category",children:[U,b.jsx("button",{type:"button","data-active":K===u,className:K===u?"is-active":"",onPointerDown:H=>{H.preventDefault(),N(X)},onMouseEnter:()=>d(K),children:b.jsx("span",{children:X.label})})]},X.generator??X.kind)}),t[19]=u,t[20]=N,t[21]=c,t[22]=r.from,t[23]=y,t[24]=i.x,t[25]=i.y,t[26]=a,t[27]=$,t[28]=A,t[29]=O,t[30]=T,t[31]=L,t[32]=D,t[33]=v,t[34]=C,t[35]=I}else $=t[27],A=t[28],O=t[29],T=t[30],L=t[31],D=t[32],v=t[33],C=t[34],I=t[35];let k;t[49]!==$||t[50]!==A||t[51]!==O?(k=b.jsx("div",{className:$,ref:A,children:O}),t[49]=$,t[50]=A,t[51]=O,t[52]=k):k=t[52];let z;return t[53]!==T||t[54]!==L||t[55]!==D||t[56]!==v||t[57]!==C||t[58]!==I||t[59]!==k?(z=b.jsxs("div",{className:T,role:L,"aria-label":D,"data-testid":v,style:C,children:[I,k]}),t[53]=T,t[54]=L,t[55]=D,t[56]=v,t[57]=C,t[58]=I,t[59]=k,t[60]=z):z=t[60],z}function hm(){const e=ue.c(7),t=Je(),n=fc(),o=n.open;let r;e[0]!==o||e[1]!==t?(r=(a,c)=>{const l=hc(t,t.getState(),c);l.length!==0&&o(a,l)},e[0]=o,e[1]=t,e[2]=r):r=e[2];const i=r;let s;return e[3]!==n.close||e[4]!==n.menu||e[5]!==i?(s={menu:n.menu,open:i,close:n.close},e[3]=n.close,e[4]=n.menu,e[5]=i,e[6]=s):s=e[6],s}const ai={width:220,height:150},Zt=240,pm=120;function gm(e,t,n){const o=Number.isFinite(t.zoom)&&t.zoom>0?t.zoom:1,r=Number.isFinite(t.x)?t.x:0,i=Number.isFinite(t.y)?t.y:0,s=[];for(const a of e){if(a.preview!==!0)continue;const c=a.position[0]*o+r,l=a.position[1]*o+i,u=c+ai.width*o,d=l+ai.height*o;if(!(u<-Zt||c>n.width+Zt)&&!(d<-Zt||l>n.height+Zt)&&(s.push(a.id),s.length>=pc))break}return s}function mm(e){const t=new Map,n=e.debounceMs??pm;let o=null,r=!1,i=null,s=null,a=!1;const c=h=>`${h.materialId}|${h.slot??"-"}|${h.size}|${h.pixelSignature}|${[...h.nodeIds].sort().join(",")}`,l=h=>{h===void 0||typeof h=="string"||typeof h.close=="function"&&h.close()},u=()=>{if(t.size!==0){for(const h of t.values())l(h);t.clear(),e.onChange(new Map(t))}},d=(h,p)=>{if(p.materialId!==h.materialId||p.semanticSignature!==h.semanticSignature)return;const y=new Set(h.nodeIds);for(const[w,x]of t)y.has(w)||(l(x),t.delete(w));for(const w of p.results)y.has(w.nodeId)&&(l(t.get(w.nodeId)),t.set(w.nodeId,w.bitmap??w.message));s=c(h),e.onChange(new Map(t))},f=h=>{r=!0;const p={materialId:h.materialId,layerId:h.layerId,slot:h.slot,nodeIds:h.nodeIds,size:h.size};e.request(p).then(y=>{a||y===null||d(h,y)}).catch(()=>{}).finally(()=>{if(r=!1,a)return;const y=i;i=null,y!==null&&c(y)!==s&&f(y)})};return{ask(h){if(!a){if(o!==null&&(clearTimeout(o),o=null),h===null||h.nodeIds.length===0){i=null,s=null,u();return}if(c(h)===s){i=null;return}i=h,o=setTimeout(()=>{o=null;const p=i;p!==null&&(r||(i=null,f(p)))},n)}},dispose(){a=!0,o!==null&&clearTimeout(o),o=null,i=null;for(const h of t.values())l(h);t.clear()}}}function ci(e,t){return`${e}/${t.join("/")}`}const ca=new Map;function ym(e,t){!Number.isFinite(t.x)||!Number.isFinite(t.y)||!Number.isFinite(t.zoom)||t.zoom<=0||ca.set(e,{x:t.x,y:t.y,zoom:t.zoom})}function xm(e){return ca.get(e)??null}const wm={material:Yg,materialGroup:im,materialComment:sm,materialReroute:am},lo={padding:.2,maxZoom:1},vm=new Map,li=180,ui=96;function Mm(e){const t=ue.c(10),n=Oe(bm);let o;t[0]!==e?(o=b.jsx(_m,{...e}),t[0]=e,t[1]=o):o=t[1];let r;t[2]!==n||t[3]!==o?(r=b.jsx(vc,{value:n,children:o}),t[2]=n,t[3]=o,t[4]=r):r=t[4];let i;t[5]!==e.zoomSlot?(i=e.zoomSlot==null?null:gc.createPortal(b.jsx(Sm,{}),e.zoomSlot),t[5]=e.zoomSlot,t[6]=i):i=t[6];let s;return t[7]!==r||t[8]!==i?(s=b.jsxs(Qs,{children:[r,i]}),t[7]=r,t[8]=i,t[9]=s):s=t[9],s}function bm(e){return e.readOnly}function Sm(){const e=ue.c(21),t=Dt(),n=oe(Em);let o;e[0]!==t?(o=()=>void t.zoomOut(),e[0]=t,e[1]=o):o=e[1];let r;e[2]===Symbol.for("react.memo_cache_sentinel")?(r=b.jsx(bc,{}),e[2]=r):r=e[2];let i;e[3]!==o?(i=b.jsx("button",{type:"button",className:"btn is-icon","aria-label":"Zoom the graph out",title:"Zoom the graph out",onClick:o,children:r}),e[3]=o,e[4]=i):i=e[4];let s;e[5]!==n?(s=Math.round(n*100),e[5]=n,e[6]=s):s=e[6];let a;e[7]!==s?(a=b.jsxs("span",{className:"zoom-readout","data-testid":"material-zoom-level",children:[s,"%"]}),e[7]=s,e[8]=a):a=e[8];let c;e[9]!==t?(c=()=>void t.zoomIn(),e[9]=t,e[10]=c):c=e[10];let l;e[11]===Symbol.for("react.memo_cache_sentinel")?(l=b.jsx(Sc,{}),e[11]=l):l=e[11];let u;e[12]!==c?(u=b.jsx("button",{type:"button",className:"btn is-icon","aria-label":"Zoom the graph in",title:"Zoom the graph in",onClick:c,children:l}),e[12]=c,e[13]=u):u=e[13];let d;e[14]!==t?(d=b.jsx("button",{type:"button",className:"btn","aria-label":"Fit the graph",title:"Fit the whole graph (Home or F over the graph)",onClick:()=>void t.fitView(lo),children:"Fit"}),e[14]=t,e[15]=d):d=e[15];let f;return e[16]!==i||e[17]!==a||e[18]!==u||e[19]!==d?(f=b.jsxs("div",{className:"zoom-controls",role:"group","aria-label":"Graph zoom","data-testid":"material-zoom",children:[i,a,u,d]}),e[16]=i,e[17]=a,e[18]=u,e[19]=d,e[20]=f):f=e[20],f}function Em(e){return e.transform[2]}function _m({graph:e,materialId:t,layerId:n,slot:o}){const r=Je(),i=Dt(),s=og(),a=hm(),c=a.open,l=M.useRef(null),u=Oe(R=>R.doc?.assets),d=Oe(R=>R.materialGraphPath),f=Oe(R=>R.materialGraphSelection),h=Oe(R=>R.materialPalette),p=Oe(R=>R.materialSnapToGrid),y=Oe(R=>R.readOnly),w=Oe(R=>R.materialFrameRequest),[x,E]=M.useState(null),[g,m]=M.useState(vm),[_,S]=M.useState(null),[N,$]=M.useState(null),[A,O]=M.useState(null),T=M.useMemo(()=>mc(e),[e]),L=M.useMemo(()=>yc(e,u??{}),[e,u]),D=M.useMemo(()=>Hg({graph:e,materialId:t,path:d,assets:u??{},selection:f,problems:L,types:T}),[e,t,d,u,f,L,T]),v=M.useMemo(()=>x===null&&N===null&&A===null?D.nodes:D.nodes.map(R=>{const F=x?.[R.id],J=A?.[R.id],se=R.id===N;return F===void 0&&J===void 0&&!se?R:{...R,...F===void 0?{}:{position:F},...J===void 0?{}:{style:{...R.style,...J}},...se?{className:[R.className,"is-drop-target"].filter(Boolean).join(" ")}:{}}}),[D.nodes,x,N,A]),C=M.useMemo(()=>_===null?D.edges:D.edges.map(R=>R.id===_?{...R,className:`${R.className??""} is-splice-target`.trim()}:R),[D.edges,_]),I=M.useCallback((R,F)=>T.canConnect(R,F).ok,[T]),k=ci(t,d),z=M.useRef(null);M.useEffect(()=>{if(!s||z.current===k)return;z.current=k;const R=xm(k);R===null?i.fitView(lo):i.setViewport(R)},[s,k,i]);const P=M.useRef(w);M.useEffect(()=>{if(w===null||P.current===w){P.current=w;return}P.current=w,i.fitView(lo)},[w,i]);const j=M.useCallback(R=>ym(ci(t,d),R),[t,d]),V=M.useMemo(()=>mm({request:async R=>await r.stage()?.requestNodePreviews(R)??null,onChange:R=>m(R)}),[r]);M.useEffect(()=>()=>V.dispose(),[V]);const B=M.useCallback(()=>{const R=l.current?.getBoundingClientRect();if(R===void 0||d.length>0){V.ask(null);return}const F=gm(oa(e,d),i.getViewport(),R);if(F.length===0){V.ask(null);return}V.ask({materialId:t,layerId:n,slot:o,nodeIds:F,size:Math.round(ao*(window.devicePixelRatio||1)),pixelSignature:wc(e),semanticSignature:xc(e)})},[e,d,t,n,o,i,V]);M.useEffect(()=>{B()},[B,s]);const Z=M.useCallback(R=>{const F=r.getState().materialGraphSelection;r.setMaterialGraphSelection({nodeIds:R.nodeIds??F.nodeIds,edgeIds:R.edgeIds??F.edgeIds})},[r]),Y=M.useCallback(R=>{let F=null,J=null,se=null,de=!1;for(const ie of R)ie.type==="position"&&ie.dragging===!0&&ie.position!==void 0?(F??={},F[ie.id]=ie.position):ie.type==="select"?(J??=new Set(r.getState().materialGraphSelection.nodeIds),ie.selected?J.add(ie.id):J.delete(ie.id)):ie.type==="dimensions"&&ie.dimensions!==void 0&&(ie.resizing===!0?(se??={},se[ie.id]=ie.dimensions):ie.resizing===!1&&(de=!0));if(J!==null&&Z({nodeIds:[...J]}),de&&O(null),se!==null){const ie=se;O(he=>({...he??{},...ie}))}if(F===null)return;const ye=F;E(ie=>({...ie??{},...ye}))},[r,Z]),X=M.useCallback(R=>{let F=null;for(const J of R)J.type==="select"&&(F??=new Set(r.getState().materialGraphSelection.edgeIds),J.selected?F.add(J.id):F.delete(J.id));F!==null&&Z({edgeIds:[...F]})},[r,Z]),K=M.useCallback((R,F)=>{const J=x===null||Object.keys(x).length===1,se=F.data,de=J&&(F.type==="material"||F.type==="materialReroute")&&se.inputs.length>0&&se.outputs.length>0;let ye=null;if(de){const pe=new Set(e.edges.filter(xe=>xe.target.nodeId===F.id).map(xe=>`${xe.target.nodeId}\0${xe.target.socket}`)),ge=i.getInternalNode(F.id),me=ge?.measured;if(ge!==void 0&&me?.width!=null&&me.height!=null){const xe={x:ge.internals.positionAbsolute.x,y:ge.internals.positionAbsolute.y,width:me.width,height:me.height};for(const we of D.edges){if(we.source===F.id||we.target===F.id)continue;const Te=i.getInternalNode(we.source),tt=i.getInternalNode(we.target);if(Te===void 0||tt===void 0)continue;const En={x:Te.internals.positionAbsolute.x+(Te.measured?.width??0),y:Te.internals.positionAbsolute.y+(Te.measured?.height??0)/2},_n={x:tt.internals.positionAbsolute.x,y:tt.internals.positionAbsolute.y+(tt.measured?.height??0)/2};if(!Lg(En,_n,xe))continue;const Nn={nodeId:we.source,socket:we.sourceHandle??"value"},Cn={nodeId:we.target,socket:we.targetHandle??"value"},Mn=se.inputs.some(nt=>!pe.has(`${F.id}\0${nt.id}`)&&T.canConnect(Nn,{nodeId:F.id,socket:nt.id}).ok),In=se.outputs.some(nt=>T.canConnect({nodeId:F.id,socket:nt.id},Cn).ok);if(Mn&&In){ye=we.id;break}}}}S(ye);const ie=Jr({position:F.position,parentId:F.parentId},e),he=F.measured;$(F.type==="materialGroup"?null:ei(e,d,[ie[0]+(he?.width??li)/2,ie[1]+(he?.height??ui)/2]))},[x,i,D.edges,T,e,d]),U=M.useCallback(()=>{const R=x,F=_;if(E(null),S(null),$(null),R===null)return;const J={},se={};let de=null;for(const[ye,ie]of Object.entries(R)){const he=D.nodes.find(we=>we.id===ye);if(he===void 0)continue;const pe=Jr({position:ie,parentId:he.parentId},e);if(J[ye]=pe,de=de===null?ye:"",he.type==="materialGroup")continue;const ge=he.measured,me=ei(e,d,[pe[0]+(ge?.width??li)/2,pe[1]+(ge?.height??ui)/2]),xe=e.nodesById[ye]?.groupId??null;me!==xe&&(se[ye]=me)}r.dropMaterialNodes(t,d,J,{...Object.keys(se).length===0?{}:{membership:se},...F!==null&&de!==null&&de!==""?{splice:{nodeId:de,edgeId:F}}:{}})},[x,_,D.nodes,e,r,t,d]),H=M.useCallback(R=>{R.sourceHandle===null||R.targetHandle===null||r.connectMaterialSockets(t,d,{nodeId:R.source,socket:R.sourceHandle},{nodeId:R.target,socket:R.targetHandle})},[r,t,d]),G=M.useRef(!1),te=M.useCallback((R,F)=>{if(F.isValid===!0||F.fromHandle?.id==null)return;const J="changedTouches"in R?R.changedTouches[0]:R;if(J===void 0)return;const se=i.screenToFlowPosition({x:J.clientX,y:J.clientY});r.openMaterialPalette(se,{nodeId:F.fromHandle.nodeId,socket:F.fromHandle.id,side:F.fromHandle.type==="source"?"source":"target",type:Nm(F.fromHandle.nodeId,F.fromHandle.id,F.fromHandle.type,D.nodes)})},[i,r,D.nodes]),ee=M.useCallback((R,F)=>{F.data.node.kind==="subgraph"&&r.enterMaterialSubgraph(F.id)},[r]),W=M.useCallback((R,F)=>{const J=i.screenToFlowPosition({x:R.clientX,y:R.clientY});return{materialId:t,path:d,nodeIds:F.nodeIds??[],edgeIds:F.edgeIds??[],at:{x:J.x,y:J.y}}},[i,t,d]),Q=M.useCallback((R,F)=>{R.preventDefault();const J=f.nodeIds.includes(F.id)?[...f.nodeIds]:[F.id];f.nodeIds.includes(F.id)||r.setMaterialGraphSelection({nodeIds:J,edgeIds:[]}),c({x:R.clientX,y:R.clientY},W(R,{nodeIds:J}))},[c,f.nodeIds,r,W]),ne=M.useCallback((R,F)=>{R.preventDefault();const J=f.edgeIds.includes(F.id)?[...f.edgeIds]:[F.id];f.edgeIds.includes(F.id)||r.setMaterialGraphSelection({nodeIds:[],edgeIds:J}),c({x:R.clientX,y:R.clientY},W(R,{edgeIds:J}))},[c,f.edgeIds,r,W]),re=M.useCallback(R=>{const F=R.sourceHandle??null,J=R.targetHandle??null;return F===null||J===null?!1:T.canConnect({nodeId:R.source,socket:F},{nodeId:R.target,socket:J}).ok},[T]),ae=M.useMemo(()=>{if(h===null)return null;const R=l.current?.getBoundingClientRect();if(h.at!==null){const J=i.flowToScreenPosition(h.at);return{screenAt:{x:J.x-(R?.left??0),y:J.y-(R?.top??0)},graphAt:[h.at.x,h.at.y]}}const F=i.screenToFlowPosition({x:(R?.left??0)+(R?.width??0)/2,y:(R?.top??0)+(R?.height??0)/2});return{screenAt:{x:(R?.width??0)/2,y:(R?.height??0)/2},graphAt:[F.x,F.y]}},[h,i]);return b.jsxs("section",{className:"material-graph-canvas","aria-label":"Material node graph",tabIndex:0,ref:l,onPointerDownCapture:R=>{const F=R.target;F instanceof Element&&F.closest("button, input, textarea, select, [contenteditable='true']")!==null||R.currentTarget.focus({preventScroll:!0})},children:[b.jsx(jg,{entries:g,children:b.jsx(Fg,{canConnect:I,children:b.jsxs(tg,{nodes:v,edges:C,nodeTypes:wm,nodesDraggable:!y,nodesConnectable:!y,edgesReconnectable:!y,onNodesChange:Y,onEdgesChange:X,onNodeDrag:K,onNodeDragStop:U,onConnect:H,onConnectEnd:te,isValidConnection:re,onReconnectStart:()=>{G.current=!1},onReconnect:(R,F)=>{F.sourceHandle===null||F.targetHandle===null||(G.current=!0,r.reconnectMaterialEdge(t,d,R.id,{source:{nodeId:F.source,socket:F.sourceHandle},target:{nodeId:F.target,socket:F.targetHandle}}))},onReconnectEnd:(R,F)=>{G.current||r.disconnectMaterialEdges(t,d,[F.id])},onNodeDoubleClick:ee,onNodeContextMenu:Q,onEdgeContextMenu:ne,onPaneContextMenu:R=>{R.preventDefault(),c({x:R.clientX,y:R.clientY},W(R,{}))},onDoubleClick:R=>{if(!(R.target instanceof Element)||R.target.classList.contains("react-flow__pane")!==!0)return;const F=i.screenToFlowPosition({x:R.clientX,y:R.clientY});r.openMaterialPalette({x:F.x,y:F.y})},onMoveEnd:(R,F)=>{j(F),B()},snapToGrid:p,snapGrid:[$n,$n],deleteKeyCode:null,disableKeyboardA11y:!0,zoomOnDoubleClick:!1,selectionOnDrag:!0,selectionMode:dt.Partial,panOnDrag:[1],panActivationKeyCode:"Space",nodeDragThreshold:4,connectionRadius:24,connectionDragThreshold:3,selectionKeyCode:"Shift",multiSelectionKeyCode:["Meta","Control"],minZoom:.15,maxZoom:2.5,proOptions:{hideAttribution:!0},children:[b.jsx(cg,{gap:$n,size:1,color:"var(--material-grid-dot)"}),b.jsx(Ig,{pannable:!0,zoomable:!0,position:"bottom-right",ariaLabel:"Material graph overview"})]})})}),h===null||ae===null?null:b.jsx(fm,{materialId:t,path:d,request:h,screenAt:ae.screenAt,graphAt:ae.graphAt}),a.menu]})}function Nm(e,t,n,o){const r=o.find(s=>s.id===e);return(n==="source"?r?.data.outputs:r?.data.inputs)?.find(s=>s.id===t)?.type??"numeric"}export{Mm as MaterialGraphCanvas};