@terra-symposium/docs 0.1.17 → 0.1.72

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 (565) hide show
  1. package/README.md +26 -7
  2. package/bin/terra-docs.mjs +187 -0
  3. package/lib-dist/assets/fonts/AUTHENTICSans-130.woff +0 -0
  4. package/lib-dist/assets/fonts/AUTHENTICSans-130.woff2 +0 -0
  5. package/lib-dist/assets/fonts/AUTHENTICSans-150.woff +0 -0
  6. package/lib-dist/assets/fonts/AUTHENTICSans-150.woff2 +0 -0
  7. package/lib-dist/assets/fonts/AUTHENTICSans-90.woff +0 -0
  8. package/lib-dist/assets/fonts/AUTHENTICSans-90.woff2 +0 -0
  9. package/lib-dist/assets/fonts/Avara-Bold.woff +0 -0
  10. package/lib-dist/assets/fonts/Avara-BoldItalic.woff +0 -0
  11. package/lib-dist/assets/fonts/InterVariable-Italic-latin-20260728.woff2 +0 -0
  12. package/lib-dist/assets/fonts/InterVariable-latin-20260728.woff2 +0 -0
  13. package/lib-dist/assets/fonts/README.md +7 -0
  14. package/lib-dist/assets/fonts/licenses/Inter-OFL-1.1.txt +92 -0
  15. package/lib-dist/assets/fonts/licenses/OFL-1.1.txt +93 -0
  16. package/lib-dist/{Docs.d.ts → components/Docs.d.ts} +1 -1
  17. package/lib-dist/components/Docs.d.ts.map +1 -0
  18. package/lib-dist/components/Docs.js +9 -0
  19. package/lib-dist/components/Docs.js.map +1 -0
  20. package/lib-dist/{LocalDocsWorkspace.d.ts → components/LocalDocsWorkspace.d.ts} +9 -2
  21. package/lib-dist/components/LocalDocsWorkspace.d.ts.map +1 -0
  22. package/lib-dist/{LocalDocsWorkspace.js → components/LocalDocsWorkspace.js} +83 -24
  23. package/lib-dist/components/LocalDocsWorkspace.js.map +1 -0
  24. package/lib-dist/components/NotFound.d.ts +8 -0
  25. package/lib-dist/components/NotFound.d.ts.map +1 -0
  26. package/lib-dist/components/NotFound.js +6 -0
  27. package/lib-dist/components/NotFound.js.map +1 -0
  28. package/lib-dist/components/SiteLayout.d.ts +25 -0
  29. package/lib-dist/components/SiteLayout.d.ts.map +1 -0
  30. package/lib-dist/components/SiteLayout.js +12 -0
  31. package/lib-dist/components/SiteLayout.js.map +1 -0
  32. package/lib-dist/{StaticWorkspace.d.ts → components/StaticWorkspace.d.ts} +7 -3
  33. package/lib-dist/components/StaticWorkspace.d.ts.map +1 -0
  34. package/lib-dist/{StaticWorkspace.js → components/StaticWorkspace.js} +106 -34
  35. package/lib-dist/components/StaticWorkspace.js.map +1 -0
  36. package/lib-dist/components/StrictLocalWorkspaceHarness.d.ts +10 -0
  37. package/lib-dist/components/StrictLocalWorkspaceHarness.d.ts.map +1 -0
  38. package/lib-dist/components/StrictLocalWorkspaceHarness.js +12 -0
  39. package/lib-dist/components/StrictLocalWorkspaceHarness.js.map +1 -0
  40. package/lib-dist/components/blocks.d.ts.map +1 -0
  41. package/lib-dist/{blocks.js → components/blocks.js} +88 -13
  42. package/lib-dist/components/blocks.js.map +1 -0
  43. package/lib-dist/{navigation.d.ts → components/navigation.d.ts} +3 -1
  44. package/lib-dist/components/navigation.d.ts.map +1 -0
  45. package/lib-dist/components/navigation.js.map +1 -0
  46. package/lib-dist/{terra → components/terra}/Workspace.d.ts +1 -1
  47. package/lib-dist/components/terra/Workspace.d.ts.map +1 -0
  48. package/lib-dist/components/terra/Workspace.js +190 -0
  49. package/lib-dist/components/terra/Workspace.js.map +1 -0
  50. package/lib-dist/components/terra/editor/TerraContentEditor.d.ts +16 -0
  51. package/lib-dist/components/terra/editor/TerraContentEditor.d.ts.map +1 -0
  52. package/lib-dist/components/terra/editor/TerraContentEditor.js +358 -0
  53. package/lib-dist/components/terra/editor/TerraContentEditor.js.map +1 -0
  54. package/lib-dist/{terra → components/terra}/editor/_blocks.d.ts +3 -4
  55. package/lib-dist/components/terra/editor/_blocks.d.ts.map +1 -0
  56. package/lib-dist/components/terra/editor/_blocks.js +120 -0
  57. package/lib-dist/components/terra/editor/_blocks.js.map +1 -0
  58. package/lib-dist/components/terra/editor/docs/BlockContext.d.ts +7 -0
  59. package/lib-dist/components/terra/editor/docs/BlockContext.d.ts.map +1 -0
  60. package/lib-dist/components/terra/editor/docs/BlockContext.js +60 -0
  61. package/lib-dist/components/terra/editor/docs/BlockContext.js.map +1 -0
  62. package/lib-dist/components/terra/editor/docs/DocsAttachmentPicker.d.ts +12 -0
  63. package/lib-dist/components/terra/editor/docs/DocsAttachmentPicker.d.ts.map +1 -0
  64. package/lib-dist/components/terra/editor/docs/DocsAttachmentPicker.js +66 -0
  65. package/lib-dist/components/terra/editor/docs/DocsAttachmentPicker.js.map +1 -0
  66. package/lib-dist/components/terra/editor/docs/TerraToolbar.d.ts +12 -0
  67. package/lib-dist/components/terra/editor/docs/TerraToolbar.d.ts.map +1 -0
  68. package/lib-dist/components/terra/editor/docs/TerraToolbar.js +169 -0
  69. package/lib-dist/components/terra/editor/docs/TerraToolbar.js.map +1 -0
  70. package/lib-dist/{terra → components/terra}/editor/docs/_Callout.d.ts +1 -1
  71. package/lib-dist/components/terra/editor/docs/_Callout.d.ts.map +1 -0
  72. package/lib-dist/{terra → components/terra}/editor/docs/_Callout.js +11 -7
  73. package/lib-dist/components/terra/editor/docs/_Callout.js.map +1 -0
  74. package/lib-dist/components/terra/editor/docs/_CodeBlock.d.ts.map +1 -0
  75. package/lib-dist/{terra → components/terra}/editor/docs/_CodeBlock.js +111 -46
  76. package/lib-dist/components/terra/editor/docs/_CodeBlock.js.map +1 -0
  77. package/lib-dist/{terra → components/terra}/editor/docs/_DocsCode.d.ts +1 -1
  78. package/lib-dist/components/terra/editor/docs/_DocsCode.d.ts.map +1 -0
  79. package/lib-dist/{terra → components/terra}/editor/docs/_DocsCode.js +47 -14
  80. package/lib-dist/components/terra/editor/docs/_DocsCode.js.map +1 -0
  81. package/lib-dist/{terra → components/terra}/editor/docs/_DocsImage.d.ts +1 -1
  82. package/lib-dist/components/terra/editor/docs/_DocsImage.d.ts.map +1 -0
  83. package/lib-dist/components/terra/editor/docs/_DocsImage.js +62 -0
  84. package/lib-dist/components/terra/editor/docs/_DocsImage.js.map +1 -0
  85. package/lib-dist/{terra → components/terra}/editor/docs/_Embed.d.ts +3 -1
  86. package/lib-dist/components/terra/editor/docs/_Embed.d.ts.map +1 -0
  87. package/lib-dist/components/terra/editor/docs/_Embed.js +73 -0
  88. package/lib-dist/components/terra/editor/docs/_Embed.js.map +1 -0
  89. package/lib-dist/{terra → components/terra}/editor/docs/_Math.d.ts +2 -2
  90. package/lib-dist/components/terra/editor/docs/_Math.d.ts.map +1 -0
  91. package/lib-dist/{terra → components/terra}/editor/docs/_Math.js +29 -17
  92. package/lib-dist/components/terra/editor/docs/_Math.js.map +1 -0
  93. package/lib-dist/{terra → components/terra}/editor/docs/_Nodes.d.ts +1 -1
  94. package/lib-dist/components/terra/editor/docs/_Nodes.d.ts.map +1 -0
  95. package/lib-dist/components/terra/editor/docs/_Nodes.js +62 -0
  96. package/lib-dist/components/terra/editor/docs/_Nodes.js.map +1 -0
  97. package/lib-dist/{terra → components/terra}/editor/docs/_Raw.d.ts +1 -1
  98. package/lib-dist/components/terra/editor/docs/_Raw.d.ts.map +1 -0
  99. package/lib-dist/{terra → components/terra}/editor/docs/_Raw.js +8 -3
  100. package/lib-dist/components/terra/editor/docs/_Raw.js.map +1 -0
  101. package/lib-dist/{terra → components/terra}/editor/docs/_Table.d.ts +1 -1
  102. package/lib-dist/components/terra/editor/docs/_Table.d.ts.map +1 -0
  103. package/lib-dist/components/terra/editor/docs/_Table.js +99 -0
  104. package/lib-dist/components/terra/editor/docs/_Table.js.map +1 -0
  105. package/lib-dist/{terra → components/terra}/editor/docs/_Tabs.d.ts +1 -1
  106. package/lib-dist/components/terra/editor/docs/_Tabs.d.ts.map +1 -0
  107. package/lib-dist/{terra → components/terra}/editor/docs/_Tabs.js +36 -15
  108. package/lib-dist/components/terra/editor/docs/_Tabs.js.map +1 -0
  109. package/lib-dist/{terra → components/terra}/editor/docs/_TsDocs.d.ts +1 -1
  110. package/lib-dist/components/terra/editor/docs/_TsDocs.d.ts.map +1 -0
  111. package/lib-dist/{terra → components/terra}/editor/docs/_TsDocs.js +16 -14
  112. package/lib-dist/components/terra/editor/docs/_TsDocs.js.map +1 -0
  113. package/lib-dist/{terra → components/terra}/editor/docs/_math_inline.d.ts +1 -1
  114. package/lib-dist/components/terra/editor/docs/_math_inline.d.ts.map +1 -0
  115. package/lib-dist/{terra → components/terra}/editor/docs/_math_inline.js +2 -2
  116. package/lib-dist/components/terra/editor/docs/_math_inline.js.map +1 -0
  117. package/lib-dist/{terra → components/terra}/editor/docs/heading.d.ts +1 -1
  118. package/lib-dist/components/terra/editor/docs/heading.d.ts.map +1 -0
  119. package/lib-dist/{terra → components/terra}/editor/docs/heading.js +8 -5
  120. package/lib-dist/components/terra/editor/docs/heading.js.map +1 -0
  121. package/lib-dist/components/terra/editor/docs/index.d.ts.map +1 -0
  122. package/lib-dist/components/terra/editor/docs/index.js.map +1 -0
  123. package/lib-dist/components/terra/editor/terra-content.styles.d.ts +3 -0
  124. package/lib-dist/components/terra/editor/terra-content.styles.d.ts.map +1 -0
  125. package/lib-dist/components/terra/editor/terra-content.styles.js +3 -0
  126. package/lib-dist/components/terra/editor/terra-content.styles.js.map +1 -0
  127. package/lib-dist/{terra → components/terra}/editor/types.d.ts +2 -2
  128. package/lib-dist/components/terra/editor/types.d.ts.map +1 -0
  129. package/lib-dist/{terra → components/terra}/editor/types.js +1 -1
  130. package/lib-dist/components/terra/editor/types.js.map +1 -0
  131. package/lib-dist/{terra → components/terra}/flow/Nodes.d.ts +2 -3
  132. package/lib-dist/components/terra/flow/Nodes.d.ts.map +1 -0
  133. package/lib-dist/{terra → components/terra}/flow/Nodes.js +213 -106
  134. package/lib-dist/components/terra/flow/Nodes.js.map +1 -0
  135. package/lib-dist/{terra → components/terra}/flow/_chrome.d.ts +7 -9
  136. package/lib-dist/components/terra/flow/_chrome.d.ts.map +1 -0
  137. package/lib-dist/{terra → components/terra}/flow/_chrome.js +329 -118
  138. package/lib-dist/components/terra/flow/_chrome.js.map +1 -0
  139. package/lib-dist/components/terra/flow/menuContext.d.ts.map +1 -0
  140. package/lib-dist/components/terra/flow/menuContext.js.map +1 -0
  141. package/lib-dist/{terra → components/terra}/pages/docs/_attachments.d.ts +1 -1
  142. package/lib-dist/components/terra/pages/docs/_attachments.d.ts.map +1 -0
  143. package/lib-dist/{terra → components/terra}/pages/docs/_attachments.js +375 -131
  144. package/lib-dist/components/terra/pages/docs/_attachments.js.map +1 -0
  145. package/lib-dist/components/terra/pages/docs/_blocks.d.ts.map +1 -0
  146. package/lib-dist/{terra → components/terra}/pages/docs/_blocks.js +42 -31
  147. package/lib-dist/components/terra/pages/docs/_blocks.js.map +1 -0
  148. package/lib-dist/{terra → components/terra}/pages/docs/_editable.d.ts +2 -3
  149. package/lib-dist/components/terra/pages/docs/_editable.d.ts.map +1 -0
  150. package/lib-dist/{terra → components/terra}/pages/docs/_editable.js +82 -44
  151. package/lib-dist/components/terra/pages/docs/_editable.js.map +1 -0
  152. package/lib-dist/{terra → components/terra}/pages/docs/_export-dialog.d.ts +1 -1
  153. package/lib-dist/components/terra/pages/docs/_export-dialog.d.ts.map +1 -0
  154. package/lib-dist/{terra → components/terra}/pages/docs/_export-dialog.js +17 -17
  155. package/lib-dist/components/terra/pages/docs/_export-dialog.js.map +1 -0
  156. package/lib-dist/components/terra/pages/docs/_icons.d.ts.map +1 -0
  157. package/lib-dist/components/terra/pages/docs/_icons.js.map +1 -0
  158. package/lib-dist/{terra → components/terra}/pages/docs/_main.d.ts +10 -7
  159. package/lib-dist/components/terra/pages/docs/_main.d.ts.map +1 -0
  160. package/lib-dist/components/terra/pages/docs/_main.js +710 -0
  161. package/lib-dist/components/terra/pages/docs/_main.js.map +1 -0
  162. package/lib-dist/components/terra/pages/docs/_manage-attachments-dialog.d.ts +10 -0
  163. package/lib-dist/components/terra/pages/docs/_manage-attachments-dialog.d.ts.map +1 -0
  164. package/lib-dist/components/terra/pages/docs/_manage-attachments-dialog.js +597 -0
  165. package/lib-dist/components/terra/pages/docs/_manage-attachments-dialog.js.map +1 -0
  166. package/lib-dist/{terra → components/terra}/pages/docs/_sidebar.d.ts +3 -12
  167. package/lib-dist/components/terra/pages/docs/_sidebar.d.ts.map +1 -0
  168. package/lib-dist/components/terra/pages/docs/_sidebar.js +1437 -0
  169. package/lib-dist/components/terra/pages/docs/_sidebar.js.map +1 -0
  170. package/lib-dist/components/terra/pages/docs/_toc.d.ts +4 -0
  171. package/lib-dist/components/terra/pages/docs/_toc.d.ts.map +1 -0
  172. package/lib-dist/components/terra/pages/docs/_toc.js +212 -0
  173. package/lib-dist/components/terra/pages/docs/_toc.js.map +1 -0
  174. package/lib-dist/components/terra/pages/docs/_toolbar-find-replace.d.ts +15 -0
  175. package/lib-dist/components/terra/pages/docs/_toolbar-find-replace.d.ts.map +1 -0
  176. package/lib-dist/components/terra/pages/docs/_toolbar-find-replace.js +207 -0
  177. package/lib-dist/components/terra/pages/docs/_toolbar-find-replace.js.map +1 -0
  178. package/lib-dist/{terra → components/terra}/pages/docs/_toolbar.d.ts +3 -5
  179. package/lib-dist/components/terra/pages/docs/_toolbar.d.ts.map +1 -0
  180. package/lib-dist/{terra → components/terra}/pages/docs/_toolbar.js +318 -350
  181. package/lib-dist/components/terra/pages/docs/_toolbar.js.map +1 -0
  182. package/lib-dist/{terra → components/terra}/pages/docs/_tree.d.ts +1 -4
  183. package/lib-dist/components/terra/pages/docs/_tree.d.ts.map +1 -0
  184. package/lib-dist/{terra → components/terra}/pages/docs/_tree.js +219 -264
  185. package/lib-dist/components/terra/pages/docs/_tree.js.map +1 -0
  186. package/lib-dist/components/terra/pages/docs/use-block-nav.d.ts +5 -0
  187. package/lib-dist/components/terra/pages/docs/use-block-nav.d.ts.map +1 -0
  188. package/lib-dist/components/terra/pages/docs/use-block-nav.js +1306 -0
  189. package/lib-dist/components/terra/pages/docs/use-block-nav.js.map +1 -0
  190. package/lib-dist/components/terra/pages/docs/use-media-paste.d.ts +5 -0
  191. package/lib-dist/components/terra/pages/docs/use-media-paste.d.ts.map +1 -0
  192. package/lib-dist/components/terra/pages/docs/use-media-paste.js +391 -0
  193. package/lib-dist/components/terra/pages/docs/use-media-paste.js.map +1 -0
  194. package/lib-dist/components/terra/pages/docs/use-render-tripwire.d.ts +2 -0
  195. package/lib-dist/components/terra/pages/docs/use-render-tripwire.d.ts.map +1 -0
  196. package/lib-dist/components/terra/pages/docs/use-render-tripwire.js +25 -0
  197. package/lib-dist/components/terra/pages/docs/use-render-tripwire.js.map +1 -0
  198. package/lib-dist/{terra/runtime → components/terra}/ui.d.ts +2 -5
  199. package/lib-dist/components/terra/ui.d.ts.map +1 -0
  200. package/lib-dist/components/terra/ui.js +20 -0
  201. package/lib-dist/components/terra/ui.js.map +1 -0
  202. package/lib-dist/components/workspace-demo-fixture.d.ts +35 -0
  203. package/lib-dist/components/workspace-demo-fixture.d.ts.map +1 -0
  204. package/lib-dist/components/workspace-demo-fixture.js +820 -0
  205. package/lib-dist/components/workspace-demo-fixture.js.map +1 -0
  206. package/lib-dist/fonts/KaTeX_AMS-Regular.ttf +0 -0
  207. package/lib-dist/fonts/KaTeX_AMS-Regular.woff +0 -0
  208. package/lib-dist/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  209. package/lib-dist/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  210. package/lib-dist/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  211. package/lib-dist/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  212. package/lib-dist/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  213. package/lib-dist/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  214. package/lib-dist/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  215. package/lib-dist/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  216. package/lib-dist/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  217. package/lib-dist/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  218. package/lib-dist/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  219. package/lib-dist/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  220. package/lib-dist/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  221. package/lib-dist/fonts/KaTeX_Main-Bold.ttf +0 -0
  222. package/lib-dist/fonts/KaTeX_Main-Bold.woff +0 -0
  223. package/lib-dist/fonts/KaTeX_Main-Bold.woff2 +0 -0
  224. package/lib-dist/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  225. package/lib-dist/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  226. package/lib-dist/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  227. package/lib-dist/fonts/KaTeX_Main-Italic.ttf +0 -0
  228. package/lib-dist/fonts/KaTeX_Main-Italic.woff +0 -0
  229. package/lib-dist/fonts/KaTeX_Main-Italic.woff2 +0 -0
  230. package/lib-dist/fonts/KaTeX_Main-Regular.ttf +0 -0
  231. package/lib-dist/fonts/KaTeX_Main-Regular.woff +0 -0
  232. package/lib-dist/fonts/KaTeX_Main-Regular.woff2 +0 -0
  233. package/lib-dist/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  234. package/lib-dist/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  235. package/lib-dist/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  236. package/lib-dist/fonts/KaTeX_Math-Italic.ttf +0 -0
  237. package/lib-dist/fonts/KaTeX_Math-Italic.woff +0 -0
  238. package/lib-dist/fonts/KaTeX_Math-Italic.woff2 +0 -0
  239. package/lib-dist/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  240. package/lib-dist/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  241. package/lib-dist/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  242. package/lib-dist/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  243. package/lib-dist/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  244. package/lib-dist/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  245. package/lib-dist/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  246. package/lib-dist/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  247. package/lib-dist/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  248. package/lib-dist/fonts/KaTeX_Script-Regular.ttf +0 -0
  249. package/lib-dist/fonts/KaTeX_Script-Regular.woff +0 -0
  250. package/lib-dist/fonts/KaTeX_Script-Regular.woff2 +0 -0
  251. package/lib-dist/fonts/KaTeX_Size1-Regular.ttf +0 -0
  252. package/lib-dist/fonts/KaTeX_Size1-Regular.woff +0 -0
  253. package/lib-dist/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  254. package/lib-dist/fonts/KaTeX_Size2-Regular.ttf +0 -0
  255. package/lib-dist/fonts/KaTeX_Size2-Regular.woff +0 -0
  256. package/lib-dist/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  257. package/lib-dist/fonts/KaTeX_Size3-Regular.ttf +0 -0
  258. package/lib-dist/fonts/KaTeX_Size3-Regular.woff +0 -0
  259. package/lib-dist/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  260. package/lib-dist/fonts/KaTeX_Size4-Regular.ttf +0 -0
  261. package/lib-dist/fonts/KaTeX_Size4-Regular.woff +0 -0
  262. package/lib-dist/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  263. package/lib-dist/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  264. package/lib-dist/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  265. package/lib-dist/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  266. package/lib-dist/lib/astro.d.ts +8 -0
  267. package/lib-dist/lib/astro.d.ts.map +1 -0
  268. package/lib-dist/lib/astro.js +27 -0
  269. package/lib-dist/lib/astro.js.map +1 -0
  270. package/lib-dist/lib/docs-theme.d.ts +7 -0
  271. package/lib-dist/lib/docs-theme.d.ts.map +1 -0
  272. package/lib-dist/lib/docs-theme.js +51 -0
  273. package/lib-dist/lib/docs-theme.js.map +1 -0
  274. package/lib-dist/lib/host-runtime.d.ts.map +1 -0
  275. package/lib-dist/{host-runtime.js → lib/host-runtime.js} +4 -2
  276. package/lib-dist/lib/host-runtime.js.map +1 -0
  277. package/lib-dist/{host.d.ts → lib/host.d.ts} +20 -0
  278. package/lib-dist/lib/host.d.ts.map +1 -0
  279. package/lib-dist/lib/host.js.map +1 -0
  280. package/lib-dist/lib/index.d.ts +34 -0
  281. package/lib-dist/lib/index.d.ts.map +1 -0
  282. package/lib-dist/lib/index.js +27 -0
  283. package/lib-dist/lib/index.js.map +1 -0
  284. package/lib-dist/{markdown-model.d.ts → lib/markdown-model.d.ts} +3 -3
  285. package/lib-dist/lib/markdown-model.d.ts.map +1 -0
  286. package/lib-dist/lib/markdown-model.js +2030 -0
  287. package/lib-dist/lib/markdown-model.js.map +1 -0
  288. package/lib-dist/lib/markdown.d.ts +3 -0
  289. package/lib-dist/lib/markdown.d.ts.map +1 -0
  290. package/lib-dist/lib/markdown.js +222 -0
  291. package/lib-dist/lib/markdown.js.map +1 -0
  292. package/lib-dist/{schema.d.ts → lib/schema.d.ts} +55 -23
  293. package/lib-dist/lib/schema.d.ts.map +1 -0
  294. package/lib-dist/{schema.js → lib/schema.js} +26 -18
  295. package/lib-dist/lib/schema.js.map +1 -0
  296. package/lib-dist/{terra/pages/docs/_custom.d.ts → lib/terra/custom-components.d.ts} +2 -2
  297. package/lib-dist/lib/terra/custom-components.d.ts.map +1 -0
  298. package/lib-dist/{terra/pages/docs/_custom.js → lib/terra/custom-components.js} +1 -1
  299. package/lib-dist/lib/terra/custom-components.js.map +1 -0
  300. package/lib-dist/lib/terra/docs/archive.d.ts +3 -0
  301. package/lib-dist/lib/terra/docs/archive.d.ts.map +1 -0
  302. package/lib-dist/lib/terra/docs/archive.js +654 -0
  303. package/lib-dist/lib/terra/docs/archive.js.map +1 -0
  304. package/lib-dist/lib/terra/docs/assets.d.ts +26 -0
  305. package/lib-dist/lib/terra/docs/assets.d.ts.map +1 -0
  306. package/lib-dist/lib/terra/docs/assets.js +74 -0
  307. package/lib-dist/lib/terra/docs/assets.js.map +1 -0
  308. package/lib-dist/lib/terra/docs/attachments.d.ts +4 -0
  309. package/lib-dist/lib/terra/docs/attachments.d.ts.map +1 -0
  310. package/lib-dist/lib/terra/docs/attachments.js +5 -0
  311. package/lib-dist/lib/terra/docs/attachments.js.map +1 -0
  312. package/lib-dist/lib/terra/docs/editor-dom.d.ts +50 -0
  313. package/lib-dist/lib/terra/docs/editor-dom.d.ts.map +1 -0
  314. package/lib-dist/lib/terra/docs/editor-dom.js +236 -0
  315. package/lib-dist/lib/terra/docs/editor-dom.js.map +1 -0
  316. package/lib-dist/lib/terra/docs/mutations.d.ts +10 -0
  317. package/lib-dist/lib/terra/docs/mutations.d.ts.map +1 -0
  318. package/lib-dist/lib/terra/docs/mutations.js +105 -0
  319. package/lib-dist/lib/terra/docs/mutations.js.map +1 -0
  320. package/lib-dist/lib/terra/docs/navigation.d.ts +6 -0
  321. package/lib-dist/lib/terra/docs/navigation.d.ts.map +1 -0
  322. package/lib-dist/lib/terra/docs/navigation.js +21 -0
  323. package/lib-dist/lib/terra/docs/navigation.js.map +1 -0
  324. package/lib-dist/lib/terra/docs/state.d.ts +185 -0
  325. package/lib-dist/lib/terra/docs/state.d.ts.map +1 -0
  326. package/lib-dist/lib/terra/docs/state.js +254 -0
  327. package/lib-dist/lib/terra/docs/state.js.map +1 -0
  328. package/lib-dist/lib/terra/docs/toolbar.d.ts +11 -0
  329. package/lib-dist/lib/terra/docs/toolbar.d.ts.map +1 -0
  330. package/lib-dist/lib/terra/docs/toolbar.js +41 -0
  331. package/lib-dist/lib/terra/docs/toolbar.js.map +1 -0
  332. package/lib-dist/lib/terra/docs/tree.d.ts +15 -0
  333. package/lib-dist/lib/terra/docs/tree.d.ts.map +1 -0
  334. package/lib-dist/lib/terra/docs/tree.js +61 -0
  335. package/lib-dist/lib/terra/docs/tree.js.map +1 -0
  336. package/lib-dist/{terra/pages/docs/_helpers.d.ts → lib/terra/docs/workspace.d.ts} +6 -8
  337. package/lib-dist/lib/terra/docs/workspace.d.ts.map +1 -0
  338. package/lib-dist/{terra/pages/docs/_helpers.js → lib/terra/docs/workspace.js} +39 -28
  339. package/lib-dist/lib/terra/docs/workspace.js.map +1 -0
  340. package/lib-dist/lib/terra/flow/_layout.d.ts.map +1 -0
  341. package/lib-dist/{terra → lib/terra}/flow/_layout.js +16 -6
  342. package/lib-dist/lib/terra/flow/_layout.js.map +1 -0
  343. package/lib-dist/{terra → lib/terra}/flow/powerSource.d.ts +1 -2
  344. package/lib-dist/lib/terra/flow/powerSource.d.ts.map +1 -0
  345. package/lib-dist/{terra → lib/terra}/flow/powerSource.js +10 -4
  346. package/lib-dist/lib/terra/flow/powerSource.js.map +1 -0
  347. package/lib-dist/{terra → lib/terra}/regex.mjs +11 -6
  348. package/lib-dist/lib/terra/runtime/action-proxy.d.ts +45 -0
  349. package/lib-dist/lib/terra/runtime/action-proxy.d.ts.map +1 -0
  350. package/lib-dist/{terra → lib/terra}/runtime/action-proxy.js +1 -1
  351. package/lib-dist/lib/terra/runtime/action-proxy.js.map +1 -0
  352. package/lib-dist/lib/terra/runtime/content/block-jsx.d.ts +23 -0
  353. package/lib-dist/lib/terra/runtime/content/block-jsx.d.ts.map +1 -0
  354. package/lib-dist/lib/terra/runtime/content/block-jsx.js +225 -0
  355. package/lib-dist/lib/terra/runtime/content/block-jsx.js.map +1 -0
  356. package/lib-dist/lib/terra/runtime/content/document-markdown.d.ts +41 -0
  357. package/lib-dist/lib/terra/runtime/content/document-markdown.d.ts.map +1 -0
  358. package/lib-dist/lib/terra/runtime/content/document-markdown.js +536 -0
  359. package/lib-dist/lib/terra/runtime/content/document-markdown.js.map +1 -0
  360. package/lib-dist/lib/terra/runtime/content/markdown.d.ts +109 -0
  361. package/lib-dist/lib/terra/runtime/content/markdown.d.ts.map +1 -0
  362. package/lib-dist/lib/terra/runtime/content/markdown.js +428 -0
  363. package/lib-dist/lib/terra/runtime/content/markdown.js.map +1 -0
  364. package/lib-dist/lib/terra/runtime/content.d.ts.map +1 -0
  365. package/lib-dist/{terra → lib/terra}/runtime/content.js +147 -62
  366. package/lib-dist/lib/terra/runtime/content.js.map +1 -0
  367. package/lib-dist/lib/terra/runtime/leaf.d.ts.map +1 -0
  368. package/lib-dist/{terra → lib/terra}/runtime/leaf.js +1 -1
  369. package/lib-dist/lib/terra/runtime/leaf.js.map +1 -0
  370. package/lib-dist/lib/terra/runtime/nodes.d.ts.map +1 -0
  371. package/lib-dist/{terra → lib/terra}/runtime/nodes.js +103 -31
  372. package/lib-dist/lib/terra/runtime/nodes.js.map +1 -0
  373. package/lib-dist/{terra → lib/terra}/runtime/runtime.d.ts +8 -2
  374. package/lib-dist/lib/terra/runtime/runtime.d.ts.map +1 -0
  375. package/lib-dist/lib/terra/runtime/runtime.js +86 -0
  376. package/lib-dist/lib/terra/runtime/runtime.js.map +1 -0
  377. package/lib-dist/lib/terra/runtime/shared.d.ts.map +1 -0
  378. package/lib-dist/{terra → lib/terra}/runtime/shared.js +56 -11
  379. package/lib-dist/lib/terra/runtime/shared.js.map +1 -0
  380. package/lib-dist/lib/terra/runtime/types.d.ts +529 -0
  381. package/lib-dist/lib/terra/runtime/types.d.ts.map +1 -0
  382. package/lib-dist/{terra → lib/terra}/runtime/types.js +28 -2
  383. package/lib-dist/lib/terra/runtime/types.js.map +1 -0
  384. package/lib-dist/lib/workspace-types.d.ts +32 -0
  385. package/lib-dist/lib/workspace-types.d.ts.map +1 -0
  386. package/lib-dist/lib/workspace-types.js +2 -0
  387. package/lib-dist/lib/workspace-types.js.map +1 -0
  388. package/lib-dist/style.css +237 -1
  389. package/package.json +63 -38
  390. package/site/astro.config.mjs +67 -0
  391. package/site/docs-content-plugin.mjs +62 -0
  392. package/site/src/components/DocsSiteSearch.tsx +108 -0
  393. package/site/src/lib/catalog.ts +151 -0
  394. package/site/src/pages/404.astro +38 -0
  395. package/site/src/pages/[...slug].astro +49 -0
  396. package/site/src/styles/search.css +56 -0
  397. package/src/components/NotFound.astro +6 -0
  398. package/src/components/NotFound.tsx +48 -0
  399. package/src/{SiteLayout.astro → components/SiteLayout.astro} +17 -5
  400. package/src/{navigation.tsx → components/navigation.tsx} +3 -1
  401. package/lib-dist/Docs.d.ts.map +0 -1
  402. package/lib-dist/Docs.js +0 -60
  403. package/lib-dist/Docs.js.map +0 -1
  404. package/lib-dist/LocalDocsWorkspace.d.ts.map +0 -1
  405. package/lib-dist/LocalDocsWorkspace.js.map +0 -1
  406. package/lib-dist/SiteLayout.d.ts +0 -30
  407. package/lib-dist/SiteLayout.d.ts.map +0 -1
  408. package/lib-dist/SiteLayout.js +0 -34
  409. package/lib-dist/SiteLayout.js.map +0 -1
  410. package/lib-dist/StaticWorkspace.d.ts.map +0 -1
  411. package/lib-dist/StaticWorkspace.js.map +0 -1
  412. package/lib-dist/_Toolbar.d.ts +0 -7
  413. package/lib-dist/_Toolbar.d.ts.map +0 -1
  414. package/lib-dist/_Toolbar.js +0 -85
  415. package/lib-dist/_Toolbar.js.map +0 -1
  416. package/lib-dist/blocks.d.ts.map +0 -1
  417. package/lib-dist/blocks.js.map +0 -1
  418. package/lib-dist/docs-catalog.d.ts +0 -5
  419. package/lib-dist/docs-catalog.d.ts.map +0 -1
  420. package/lib-dist/docs-catalog.js +0 -38
  421. package/lib-dist/docs-catalog.js.map +0 -1
  422. package/lib-dist/docs-style.css +0 -31
  423. package/lib-dist/fonts/README.md +0 -5
  424. package/lib-dist/host-runtime.d.ts.map +0 -1
  425. package/lib-dist/host-runtime.js.map +0 -1
  426. package/lib-dist/host.d.ts.map +0 -1
  427. package/lib-dist/host.js.map +0 -1
  428. package/lib-dist/index.d.ts +0 -35
  429. package/lib-dist/index.d.ts.map +0 -1
  430. package/lib-dist/index.js +0 -28
  431. package/lib-dist/index.js.map +0 -1
  432. package/lib-dist/markdown-model.d.ts.map +0 -1
  433. package/lib-dist/markdown-model.js +0 -181
  434. package/lib-dist/markdown-model.js.map +0 -1
  435. package/lib-dist/markdown.d.ts +0 -3
  436. package/lib-dist/markdown.d.ts.map +0 -1
  437. package/lib-dist/markdown.js +0 -83
  438. package/lib-dist/markdown.js.map +0 -1
  439. package/lib-dist/navigation.d.ts.map +0 -1
  440. package/lib-dist/navigation.js.map +0 -1
  441. package/lib-dist/schema.d.ts.map +0 -1
  442. package/lib-dist/schema.js.map +0 -1
  443. package/lib-dist/terra/Workspace.d.ts.map +0 -1
  444. package/lib-dist/terra/Workspace.js +0 -9
  445. package/lib-dist/terra/Workspace.js.map +0 -1
  446. package/lib-dist/terra/editor/TerraContentEditor.d.ts +0 -10
  447. package/lib-dist/terra/editor/TerraContentEditor.d.ts.map +0 -1
  448. package/lib-dist/terra/editor/TerraContentEditor.js +0 -47
  449. package/lib-dist/terra/editor/TerraContentEditor.js.map +0 -1
  450. package/lib-dist/terra/editor/_blocks.d.ts.map +0 -1
  451. package/lib-dist/terra/editor/_blocks.js +0 -110
  452. package/lib-dist/terra/editor/_blocks.js.map +0 -1
  453. package/lib-dist/terra/editor/docs/_Callout.d.ts.map +0 -1
  454. package/lib-dist/terra/editor/docs/_Callout.js.map +0 -1
  455. package/lib-dist/terra/editor/docs/_CodeBlock.d.ts.map +0 -1
  456. package/lib-dist/terra/editor/docs/_CodeBlock.js.map +0 -1
  457. package/lib-dist/terra/editor/docs/_DocsCode.d.ts.map +0 -1
  458. package/lib-dist/terra/editor/docs/_DocsCode.js.map +0 -1
  459. package/lib-dist/terra/editor/docs/_DocsImage.d.ts.map +0 -1
  460. package/lib-dist/terra/editor/docs/_DocsImage.js +0 -62
  461. package/lib-dist/terra/editor/docs/_DocsImage.js.map +0 -1
  462. package/lib-dist/terra/editor/docs/_Embed.d.ts.map +0 -1
  463. package/lib-dist/terra/editor/docs/_Embed.js +0 -27
  464. package/lib-dist/terra/editor/docs/_Embed.js.map +0 -1
  465. package/lib-dist/terra/editor/docs/_Math.d.ts.map +0 -1
  466. package/lib-dist/terra/editor/docs/_Math.js.map +0 -1
  467. package/lib-dist/terra/editor/docs/_Nodes.d.ts.map +0 -1
  468. package/lib-dist/terra/editor/docs/_Nodes.js +0 -52
  469. package/lib-dist/terra/editor/docs/_Nodes.js.map +0 -1
  470. package/lib-dist/terra/editor/docs/_Raw.d.ts.map +0 -1
  471. package/lib-dist/terra/editor/docs/_Raw.js.map +0 -1
  472. package/lib-dist/terra/editor/docs/_Table.d.ts.map +0 -1
  473. package/lib-dist/terra/editor/docs/_Table.js +0 -71
  474. package/lib-dist/terra/editor/docs/_Table.js.map +0 -1
  475. package/lib-dist/terra/editor/docs/_Tabs.d.ts.map +0 -1
  476. package/lib-dist/terra/editor/docs/_Tabs.js.map +0 -1
  477. package/lib-dist/terra/editor/docs/_TsDocs.d.ts.map +0 -1
  478. package/lib-dist/terra/editor/docs/_TsDocs.js.map +0 -1
  479. package/lib-dist/terra/editor/docs/_math_inline.d.ts.map +0 -1
  480. package/lib-dist/terra/editor/docs/_math_inline.js.map +0 -1
  481. package/lib-dist/terra/editor/docs/heading.d.ts.map +0 -1
  482. package/lib-dist/terra/editor/docs/heading.js.map +0 -1
  483. package/lib-dist/terra/editor/docs/index.d.ts.map +0 -1
  484. package/lib-dist/terra/editor/docs/index.js.map +0 -1
  485. package/lib-dist/terra/editor/types.d.ts.map +0 -1
  486. package/lib-dist/terra/editor/types.js.map +0 -1
  487. package/lib-dist/terra/flow/Nodes.d.ts.map +0 -1
  488. package/lib-dist/terra/flow/Nodes.js.map +0 -1
  489. package/lib-dist/terra/flow/_chrome.d.ts.map +0 -1
  490. package/lib-dist/terra/flow/_chrome.js.map +0 -1
  491. package/lib-dist/terra/flow/_layout.d.ts.map +0 -1
  492. package/lib-dist/terra/flow/_layout.js.map +0 -1
  493. package/lib-dist/terra/flow/menuContext.d.ts.map +0 -1
  494. package/lib-dist/terra/flow/menuContext.js.map +0 -1
  495. package/lib-dist/terra/flow/powerSource.d.ts.map +0 -1
  496. package/lib-dist/terra/flow/powerSource.js.map +0 -1
  497. package/lib-dist/terra/pages/docs/_attachments.d.ts.map +0 -1
  498. package/lib-dist/terra/pages/docs/_attachments.js.map +0 -1
  499. package/lib-dist/terra/pages/docs/_blocks.d.ts.map +0 -1
  500. package/lib-dist/terra/pages/docs/_blocks.js.map +0 -1
  501. package/lib-dist/terra/pages/docs/_custom.d.ts.map +0 -1
  502. package/lib-dist/terra/pages/docs/_custom.js.map +0 -1
  503. package/lib-dist/terra/pages/docs/_editable.d.ts.map +0 -1
  504. package/lib-dist/terra/pages/docs/_editable.js.map +0 -1
  505. package/lib-dist/terra/pages/docs/_export-dialog.d.ts.map +0 -1
  506. package/lib-dist/terra/pages/docs/_export-dialog.js.map +0 -1
  507. package/lib-dist/terra/pages/docs/_helpers.d.ts.map +0 -1
  508. package/lib-dist/terra/pages/docs/_helpers.js.map +0 -1
  509. package/lib-dist/terra/pages/docs/_icons.d.ts.map +0 -1
  510. package/lib-dist/terra/pages/docs/_icons.js.map +0 -1
  511. package/lib-dist/terra/pages/docs/_main.d.ts.map +0 -1
  512. package/lib-dist/terra/pages/docs/_main.js +0 -1959
  513. package/lib-dist/terra/pages/docs/_main.js.map +0 -1
  514. package/lib-dist/terra/pages/docs/_sidebar.d.ts.map +0 -1
  515. package/lib-dist/terra/pages/docs/_sidebar.js +0 -2450
  516. package/lib-dist/terra/pages/docs/_sidebar.js.map +0 -1
  517. package/lib-dist/terra/pages/docs/_toolbar.d.ts.map +0 -1
  518. package/lib-dist/terra/pages/docs/_toolbar.js.map +0 -1
  519. package/lib-dist/terra/pages/docs/_tree.d.ts.map +0 -1
  520. package/lib-dist/terra/pages/docs/_tree.js.map +0 -1
  521. package/lib-dist/terra/runtime/action-proxy.d.ts +0 -5
  522. package/lib-dist/terra/runtime/action-proxy.d.ts.map +0 -1
  523. package/lib-dist/terra/runtime/action-proxy.js.map +0 -1
  524. package/lib-dist/terra/runtime/content.d.ts.map +0 -1
  525. package/lib-dist/terra/runtime/content.js.map +0 -1
  526. package/lib-dist/terra/runtime/leaf.d.ts.map +0 -1
  527. package/lib-dist/terra/runtime/leaf.js.map +0 -1
  528. package/lib-dist/terra/runtime/nodes.d.ts.map +0 -1
  529. package/lib-dist/terra/runtime/nodes.js.map +0 -1
  530. package/lib-dist/terra/runtime/runtime.d.ts.map +0 -1
  531. package/lib-dist/terra/runtime/runtime.js +0 -50
  532. package/lib-dist/terra/runtime/runtime.js.map +0 -1
  533. package/lib-dist/terra/runtime/shared.d.ts.map +0 -1
  534. package/lib-dist/terra/runtime/shared.js.map +0 -1
  535. package/lib-dist/terra/runtime/types.d.ts +0 -266
  536. package/lib-dist/terra/runtime/types.d.ts.map +0 -1
  537. package/lib-dist/terra/runtime/types.js.map +0 -1
  538. package/lib-dist/terra/runtime/ui.d.ts.map +0 -1
  539. package/lib-dist/terra/runtime/ui.js +0 -16
  540. package/lib-dist/terra/runtime/ui.js.map +0 -1
  541. package/lib-dist/workspace.d.ts +0 -78
  542. package/lib-dist/workspace.d.ts.map +0 -1
  543. package/lib-dist/workspace.js +0 -151
  544. package/lib-dist/workspace.js.map +0 -1
  545. package/src/style.css +0 -733
  546. /package/lib-dist/{fonts → assets/fonts}/Avara-Bold.woff2 +0 -0
  547. /package/lib-dist/{fonts → assets/fonts}/Avara-BoldItalic.woff2 +0 -0
  548. /package/lib-dist/{fonts → assets/fonts}/OFL-1.1.txt +0 -0
  549. /package/lib-dist/{blocks.d.ts → components/blocks.d.ts} +0 -0
  550. /package/lib-dist/{navigation.js → components/navigation.js} +0 -0
  551. /package/lib-dist/{terra → components/terra}/editor/docs/_CodeBlock.d.ts +0 -0
  552. /package/lib-dist/{terra → components/terra}/editor/docs/index.d.ts +0 -0
  553. /package/lib-dist/{terra → components/terra}/editor/docs/index.js +0 -0
  554. /package/lib-dist/{terra → components/terra}/flow/menuContext.d.ts +0 -0
  555. /package/lib-dist/{terra → components/terra}/flow/menuContext.js +0 -0
  556. /package/lib-dist/{terra → components/terra}/pages/docs/_blocks.d.ts +0 -0
  557. /package/lib-dist/{terra → components/terra}/pages/docs/_icons.d.ts +0 -0
  558. /package/lib-dist/{terra → components/terra}/pages/docs/_icons.js +0 -0
  559. /package/lib-dist/{host-runtime.d.ts → lib/host-runtime.d.ts} +0 -0
  560. /package/lib-dist/{host.js → lib/host.js} +0 -0
  561. /package/lib-dist/{terra → lib/terra}/flow/_layout.d.ts +0 -0
  562. /package/lib-dist/{terra → lib/terra}/runtime/content.d.ts +0 -0
  563. /package/lib-dist/{terra → lib/terra}/runtime/leaf.d.ts +0 -0
  564. /package/lib-dist/{terra → lib/terra}/runtime/nodes.d.ts +0 -0
  565. /package/lib-dist/{terra → lib/terra}/runtime/shared.d.ts +0 -0
@@ -8,19 +8,19 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
8
  IMPORTS
9
9
  //////////////////////////////////////////////////*/
10
10
  // API
11
- import { applyEdgeChanges, applyNodeChanges, getSmoothStepPath, useInternalNode, useNodeConnections, useReactFlow, useStore } from '@xyflow/react';
12
- import { canonicalId, cn, isNumber, isRec, isString, normArcGraph, resolvedEdges } from '../runtime/runtime.js';
13
- import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
14
- import { layoutGraph } from './_layout.js';
11
+ import { applyEdgeChanges, applyNodeChanges, getSmoothStepPath, useInternalNode, useNodeConnections, useReactFlow, useStore, } from '@xyflow/react';
12
+ import { canonicalId, cn, isNumber, isRec, isString, normArcGraph, resolvedEdges, } from '../../../lib/terra/runtime/runtime.js';
13
+ import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState, } from 'react';
14
+ import { layoutGraph } from '../../../lib/terra/flow/_layout.js';
15
15
  // COMPONENTS
16
- import { Background, BackgroundVariant, BaseEdge, Controls, EdgeLabelRenderer, Handle, Position as HandlePos, ReactFlow, ReactFlowProvider } from '@xyflow/react';
17
- import { Button } from '@terra-symposium/styling/ui/terra-original';
18
- import { ButtonGroup } from '@terra-symposium/styling/ui/terra-original';
19
- import { Card, CardDescription } from '@terra-symposium/styling/ui/terra-original';
20
- import { ErrorBoundary } from '../runtime/ui.js';
21
- import { FitToScreen as FitToScreenIcon, MagicWand as MagicWandIcon, ZoomIn as ZoomInIcon, ZoomOut as ZoomOutIcon } from '@carbon/icons-react';
22
- import { Textarea } from '@terra-symposium/styling/ui/terra-original';
23
- import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@terra-symposium/styling/ui/terra-original';
16
+ import { Background, BackgroundVariant, BaseEdge, Controls, EdgeLabelRenderer, Handle, Position as HandlePos, ReactFlow, ReactFlowProvider, } from '@xyflow/react';
17
+ import { Button } from '@terra-symposium/styling/ui';
18
+ import { ButtonGroup } from '@terra-symposium/styling/ui';
19
+ import { Card, CardDescription } from '@terra-symposium/styling/ui';
20
+ import { ErrorBoundary } from '../ui.js';
21
+ import { FitToScreen as FitToScreenIcon, MagicWand as MagicWandIcon, ZoomIn as ZoomInIcon, ZoomOut as ZoomOutIcon, } from '@carbon/icons-react';
22
+ import { Textarea } from '@terra-symposium/styling/ui';
23
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from '@terra-symposium/styling/ui';
24
24
  /*//////////////////////////////////////////////////
25
25
  CONFIG
26
26
  //////////////////////////////////////////////////*/
@@ -35,7 +35,13 @@ const ARC_PORTS = {
35
35
  outbound: ['default', 'bottom'],
36
36
  };
37
37
  const CLASS = { meta: 'text-xs opacity-70' };
38
- const EDGE_LANE = { gap: 20, minWidth: 112, maxWidth: 320, appendageGap: 4, appendageWidth: 128 };
38
+ const EDGE_LANE = {
39
+ gap: 20,
40
+ minWidth: 112,
41
+ maxWidth: 320,
42
+ appendageGap: 4,
43
+ appendageWidth: 128,
44
+ };
39
45
  /*//////////////////////////////////////////////////
40
46
  EDITOR
41
47
  //////////////////////////////////////////////////*/
@@ -48,7 +54,7 @@ EDITOR
48
54
  *
49
55
  * @return The current editor state and mutation helpers.
50
56
  */
51
- export function useEditor({ adapter, disabled = false }) {
57
+ export function useEditor({ adapter, disabled = false, }) {
52
58
  // STATES
53
59
  const [els, setEls] = useState(adapter.read);
54
60
  const ref = useRef(els);
@@ -65,11 +71,15 @@ export function useEditor({ adapter, disabled = false }) {
65
71
  }, [adapter]);
66
72
  const editable = useCallback((n) => adapter.editableNode?.(n) ?? true, [adapter]);
67
73
  const selection = useCallback(() => {
68
- const nodes = ref.current.nodes.filter(n => n.selected && editable(n));
74
+ const nodes = ref.current.nodes.filter((n) => n.selected && editable(n));
69
75
  if (!nodes.length)
70
76
  return null;
71
- const ids = new Set(nodes.map(n => n.id));
72
- return { version: 1, nodes, edges: ref.current.edges.filter(e => ids.has(e.source) && ids.has(e.target)) };
77
+ const ids = new Set(nodes.map((n) => n.id));
78
+ return {
79
+ version: 1,
80
+ nodes,
81
+ edges: ref.current.edges.filter((e) => ids.has(e.source) && ids.has(e.target)),
82
+ };
73
83
  }, [editable]);
74
84
  const copy = useCallback(() => {
75
85
  const val = selection();
@@ -80,10 +90,13 @@ export function useEditor({ adapter, disabled = false }) {
80
90
  const deleteSel = useCallback(() => {
81
91
  if (disabled)
82
92
  return;
83
- const ids = new Set(ref.current.nodes.filter(n => n.selected && editable(n)).map(n => n.id));
93
+ const ids = new Set(ref.current.nodes.filter((n) => n.selected && editable(n)).map((n) => n.id));
84
94
  if (!ids.size)
85
95
  return;
86
- write({ nodes: ref.current.nodes.filter(n => !ids.has(n.id)), edges: ref.current.edges.filter(e => !ids.has(e.source) && !ids.has(e.target)) });
96
+ write({
97
+ nodes: ref.current.nodes.filter((n) => !ids.has(n.id)),
98
+ edges: ref.current.edges.filter((e) => !ids.has(e.source) && !ids.has(e.target)),
99
+ });
87
100
  }, [disabled, editable, write]);
88
101
  const cut = useCallback(() => {
89
102
  if (disabled)
@@ -96,16 +109,31 @@ export function useEditor({ adapter, disabled = false }) {
96
109
  return;
97
110
  try {
98
111
  const raw = JSON.parse(window.localStorage.getItem(adapter.clipboardKey) ?? 'null');
99
- if (!isRec(raw) || raw.version !== 1 || !Array.isArray(raw.nodes) || !Array.isArray(raw.edges))
112
+ if (!isRec(raw) ||
113
+ raw.version !== 1 ||
114
+ !Array.isArray(raw.nodes) ||
115
+ !Array.isArray(raw.edges))
100
116
  return;
101
117
  const val = raw;
102
- const ids = new Map(val.nodes.map(n => [n.id, `n-${crypto.randomUUID()}`]));
118
+ const ids = new Map(val.nodes.map((n) => [n.id, `n-${crypto.randomUUID()}`]));
103
119
  write({
104
120
  nodes: [
105
- ...ref.current.nodes.map(n => ({ ...n, selected: false })),
106
- ...val.nodes.map(n => ({ ...(adapter.cloneNode?.(n, ids.get(n.id)) ?? { ...n, id: ids.get(n.id) }), position: { x: n.position.x + 40, y: n.position.y + 40 }, selected: true })),
121
+ ...ref.current.nodes.map((n) => ({ ...n, selected: false })),
122
+ ...val.nodes.map((n) => ({
123
+ ...(adapter.cloneNode?.(n, ids.get(n.id)) ?? { ...n, id: ids.get(n.id) }),
124
+ position: { x: n.position.x + 40, y: n.position.y + 40 },
125
+ selected: true,
126
+ })),
127
+ ],
128
+ edges: [
129
+ ...ref.current.edges,
130
+ ...val.edges.map((e) => ({
131
+ ...e,
132
+ id: `e-${crypto.randomUUID()}`,
133
+ source: ids.get(e.source),
134
+ target: ids.get(e.target),
135
+ })),
107
136
  ],
108
- edges: [...ref.current.edges, ...val.edges.map(e => ({ ...e, id: `e-${crypto.randomUUID()}`, source: ids.get(e.source), target: ids.get(e.target) }))],
109
137
  });
110
138
  }
111
139
  catch {
@@ -118,13 +146,25 @@ export function useEditor({ adapter, disabled = false }) {
118
146
  const val = selection();
119
147
  if (!val)
120
148
  return;
121
- const ids = new Map(val.nodes.map(n => [n.id, `n-${crypto.randomUUID()}`]));
149
+ const ids = new Map(val.nodes.map((n) => [n.id, `n-${crypto.randomUUID()}`]));
122
150
  write({
123
151
  nodes: [
124
- ...ref.current.nodes.map(n => ({ ...n, selected: false })),
125
- ...val.nodes.map(n => ({ ...(adapter.cloneNode?.(n, ids.get(n.id)) ?? { ...n, id: ids.get(n.id) }), position: { x: n.position.x + 40, y: n.position.y + 40 }, selected: true })),
152
+ ...ref.current.nodes.map((n) => ({ ...n, selected: false })),
153
+ ...val.nodes.map((n) => ({
154
+ ...(adapter.cloneNode?.(n, ids.get(n.id)) ?? { ...n, id: ids.get(n.id) }),
155
+ position: { x: n.position.x + 40, y: n.position.y + 40 },
156
+ selected: true,
157
+ })),
158
+ ],
159
+ edges: [
160
+ ...ref.current.edges,
161
+ ...val.edges.map((e) => ({
162
+ ...e,
163
+ id: `e-${crypto.randomUUID()}`,
164
+ source: ids.get(e.source),
165
+ target: ids.get(e.target),
166
+ })),
126
167
  ],
127
- edges: [...ref.current.edges, ...val.edges.map(e => ({ ...e, id: `e-${crypto.randomUUID()}`, source: ids.get(e.source), target: ids.get(e.target) }))],
128
168
  });
129
169
  }, [adapter, disabled, selection, write]);
130
170
  useEffect(() => {
@@ -136,7 +176,10 @@ export function useEditor({ adapter, disabled = false }) {
136
176
  * @param e - Pointer event received from the flow canvas.
137
177
  */
138
178
  const keydown = (e) => {
139
- if (!(e.metaKey || e.ctrlKey) || e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement || e.target?.isContentEditable)
179
+ if (!(e.metaKey || e.ctrlKey) ||
180
+ e.target instanceof HTMLInputElement ||
181
+ e.target instanceof HTMLTextAreaElement ||
182
+ e.target?.isContentEditable)
140
183
  return;
141
184
  if (e.key.toLowerCase() === 'c') {
142
185
  e.preventDefault();
@@ -163,11 +206,21 @@ export function useEditor({ adapter, disabled = false }) {
163
206
  // RENDER
164
207
  return {
165
208
  ...els,
166
- selected: els.nodes.filter(n => n.selected),
209
+ selected: els.nodes.filter((n) => n.selected),
167
210
  connect: useCallback((c) => {
168
- if (disabled || !c.source || !c.target || adapter.validConnection?.(c, ref.current) === false)
211
+ if (disabled ||
212
+ !c.source ||
213
+ !c.target ||
214
+ adapter.validConnection?.(c, ref.current) === false)
169
215
  return;
170
- const e = adapter.createEdge?.(c, ref.current) ?? { id: `e-${crypto.randomUUID()}`, source: c.source, target: c.target, sourceHandle: c.sourceHandle, targetHandle: c.targetHandle };
216
+ const e = adapter.createEdge?.(c, ref.current) ??
217
+ {
218
+ id: `e-${crypto.randomUUID()}`,
219
+ source: c.source,
220
+ target: c.target,
221
+ sourceHandle: c.sourceHandle,
222
+ targetHandle: c.targetHandle,
223
+ };
171
224
  if (e)
172
225
  write({ ...ref.current, edges: [...ref.current.edges, e] });
173
226
  }, [adapter, disabled, write]),
@@ -180,17 +233,23 @@ export function useEditor({ adapter, disabled = false }) {
180
233
  write(adapter.layout(ref.current));
181
234
  }, [adapter, disabled, write]),
182
235
  onEdgesChange: useCallback((v) => {
183
- const permitted = disabled ? v.filter(c => c.type === 'select') : v;
236
+ const permitted = disabled ? v.filter((c) => c.type === 'select') : v;
184
237
  if (permitted.length)
185
238
  write({ ...ref.current, edges: applyEdgeChanges(permitted, ref.current.edges) });
186
239
  }, [disabled, write]),
187
240
  onNodesChange: useCallback((v) => {
188
- const permitted = disabled ? v.filter(c => c.type === 'select') : v;
241
+ const permitted = disabled ? v.filter((c) => c.type === 'select') : v;
189
242
  if (permitted.length)
190
243
  write({ ...ref.current, nodes: applyNodeChanges(permitted, ref.current.nodes) });
191
244
  }, [disabled, write]),
192
245
  onSelectionChange: useCallback((v) => {
193
- write({ ...ref.current, nodes: ref.current.nodes.map(n => ({ ...n, selected: new Set(v.map(n => n.id)).has(n.id) })) });
246
+ write({
247
+ ...ref.current,
248
+ nodes: ref.current.nodes.map((n) => ({
249
+ ...n,
250
+ selected: new Set(v.map((n) => n.id)).has(n.id),
251
+ })),
252
+ });
194
253
  }, [write]),
195
254
  paste,
196
255
  };
@@ -209,7 +268,9 @@ export function getCustomPos(n) {
209
268
  if (!isRec(n.data) || !('customPosition' in n.data))
210
269
  return;
211
270
  const point = n.data.customPosition;
212
- return isRec(point) && isNumber(point.x) && isNumber(point.y) ? { x: point.x, y: point.y } : undefined;
271
+ return isRec(point) && isNumber(point.x) && isNumber(point.y)
272
+ ? { x: point.x, y: point.y }
273
+ : undefined;
213
274
  }
214
275
  /**
215
276
  * Resolves a node's structural group id from its parent or embedded data.
@@ -239,9 +300,21 @@ export function getNodeSize(n, defaults = {
239
300
  erdHeight: 60,
240
301
  }, extraHeight) {
241
302
  const style = isRec(n.style) ? n.style : {};
242
- const width = Number(n.measured?.width ?? style.width ?? (n.type === 'group' ? (defaults.groupWidth ?? defaults.width) : n.type === 'erd' ? (defaults.erdWidth ?? defaults.width) : defaults.width));
243
- const height = extraHeight?.(n) ?? Number(n.measured?.height ?? style.height ?? (n.type === 'group' ? (defaults.groupHeight ?? defaults.height) : defaults.height));
244
- return { w: Number.isFinite(width) ? width : defaults.width, h: Number.isFinite(height) ? height : defaults.height };
303
+ const width = Number(n.measured?.width ??
304
+ style.width ??
305
+ (n.type === 'group'
306
+ ? (defaults.groupWidth ?? defaults.width)
307
+ : n.type === 'erd'
308
+ ? (defaults.erdWidth ?? defaults.width)
309
+ : defaults.width));
310
+ const height = extraHeight?.(n) ??
311
+ Number(n.measured?.height ??
312
+ style.height ??
313
+ (n.type === 'group' ? (defaults.groupHeight ?? defaults.height) : defaults.height));
314
+ return {
315
+ w: Number.isFinite(width) ? width : defaults.width,
316
+ h: Number.isFinite(height) ? height : defaults.height,
317
+ };
245
318
  }
246
319
  /**
247
320
  * Creates the stable Arc layout used by both the editor and read-only canvas.
@@ -256,7 +329,11 @@ export function useArcNodeLayout(customLayout) {
256
329
  return customLayout(n, e);
257
330
  if (!n.length)
258
331
  return n;
259
- const sizeByType = { content: { w: 208, h: 92 }, group: { w: 240, h: 160 }, default: { w: 160, h: 72 } };
332
+ const sizeByType = {
333
+ content: { w: 208, h: 92 },
334
+ group: { w: 240, h: 160 },
335
+ default: { w: 160, h: 72 },
336
+ };
260
337
  const getSize = (node) => {
261
338
  const type = isRec(node.data) && isString(node.data.graphType) ? node.data.graphType : 'default';
262
339
  return Object.hasOwn(sizeByType, type) ? sizeByType[type] : sizeByType.default;
@@ -265,7 +342,10 @@ export function useArcNodeLayout(customLayout) {
265
342
  getSize,
266
343
  placeNode: (node, dagreNode) => {
267
344
  const size = getSize(node);
268
- return { ...node, position: { x: (dagreNode?.x ?? 0) - size.w / 2, y: (dagreNode?.y ?? 0) - size.h / 2 } };
345
+ return {
346
+ ...node,
347
+ position: { x: (dagreNode?.x ?? 0) - size.w / 2, y: (dagreNode?.y ?? 0) - size.h / 2 },
348
+ };
269
349
  },
270
350
  }).positionedNodes;
271
351
  }, [customLayout]);
@@ -282,7 +362,7 @@ export function useArcNodeLayout(customLayout) {
282
362
  *
283
363
  * @returns Positioned nodes and the resulting graph height.
284
364
  */
285
- export { layoutGraph } from './_layout.js';
365
+ export { layoutGraph } from '../../../lib/terra/flow/_layout.js';
286
366
  /*//////////////////////////////////////////////////
287
367
  NODE CHROME
288
368
  //////////////////////////////////////////////////*/
@@ -296,13 +376,16 @@ NODE CHROME
296
376
  *
297
377
  * @return The full handle set for a node.
298
378
  */
299
- export function Handles({ editable = false, sources: srcs = [], tgts = [] }) {
300
- return (_jsx(ErrorBoundary, { name: 'Handles', children: ['target', 'source'].map(t => [
379
+ export function Handles({ editable = false, sources: srcs = [], tgts = [], }) {
380
+ return (_jsx(ErrorBoundary, { name: "Handles", children: ['target', 'source'].map((t) => [
301
381
  { id: 'top', pos: HandlePos.Top },
302
382
  { id: 'right', pos: HandlePos.Right },
303
383
  { id: 'bottom', pos: HandlePos.Bottom },
304
384
  { id: 'left', pos: HandlePos.Left },
305
- ].map(p => (_jsx(Port, { id: p.id, type: t, position: p.pos, style: { opacity: editable || (t === 'target' ? tgts : srcs).includes(p.id) ? 1 : 0, pointerEvents: editable ? 'auto' : 'none' } }, `${t}-${p.id}`)))) }));
385
+ ].map((p) => (_jsx(Port, { id: p.id, type: t, position: p.pos, style: {
386
+ opacity: editable || (t === 'target' ? tgts : srcs).includes(p.id) ? 1 : 0,
387
+ pointerEvents: editable ? 'auto' : 'none',
388
+ } }, `${t}-${p.id}`)))) }));
306
389
  }
307
390
  /**
308
391
  * Renders a single styled React Flow handle with an optional tooltip.
@@ -340,7 +423,7 @@ function Port({ ariaLabel, className, hidden = false, id, isConnectable, positio
340
423
  pointerEvents: hidden ? 'none' : (style?.pointerEvents ?? 'auto'),
341
424
  ...(choice ? { clipPath: 'polygon(50% 0, 100% 50%, 50% 100%, 0 50%)' } : {}),
342
425
  }, id: id, ...(ariaLabel ? { 'aria-label': ariaLabel } : {}), ...(isConnectable !== undefined ? { isConnectable } : {}) }));
343
- return title ? (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: handle }), _jsx(TooltipContent, { size: 'sm', children: title })] })) : (handle);
426
+ return title ? (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: handle }), _jsx(TooltipContent, { size: "sm", children: title })] })) : (handle);
344
427
  }
345
428
  /**
346
429
  * Renders the compact skeleton card used while a flow is resolving.
@@ -354,19 +437,19 @@ function Port({ ariaLabel, className, hidden = false, id, isConnectable, positio
354
437
  */
355
438
  export function SkeletonCard({ as = 'div', className, style, ...props }) {
356
439
  const Element = as;
357
- return (_jsx(ErrorBoundary, { name: 'SkeletonCard', children: _jsxs(Element, { ...props, className: cn('relative flex h-16 items-center justify-center overflow-visible rounded-md border-2 px-3 py-2 shadow-sm', className), style: { backgroundColor: '#eaf8f9', borderColor: '#16899d', width: 208, ...style }, children: [_jsx("div", { className: 'absolute left-1/2 top-0 z-10 h-2 w-6 -translate-x-1/2 -translate-y-1/2 rounded-full border shadow-sm', style: { backgroundColor: '#f7ffff', borderColor: '#16899d' } }), _jsxs("div", { className: 'flex w-full animate-pulse flex-col items-center gap-2', children: [_jsx("div", { className: 'h-4 w-[92%] rounded-md', style: { backgroundColor: '#5db9c6' } }), _jsx("div", { className: 'mr-2 h-2.5 w-20 rounded-md', style: { backgroundColor: '#91d3db' } })] })] }) }));
440
+ return (_jsx(ErrorBoundary, { name: "SkeletonCard", children: _jsxs(Element, { ...props, className: cn('relative flex h-16 items-center justify-center overflow-visible rounded-md border-2 px-3 py-2 shadow-sm', className), style: { backgroundColor: '#eaf8f9', borderColor: '#16899d', width: 208, ...style }, children: [_jsx("div", { className: "absolute left-1/2 top-0 z-10 h-2 w-6 -translate-x-1/2 -translate-y-1/2 rounded-full border shadow-sm", style: { backgroundColor: '#f7ffff', borderColor: '#16899d' } }), _jsxs("div", { className: "flex w-full animate-pulse flex-col items-center gap-2", children: [_jsx("div", { className: "h-4 w-[92%] rounded-md", style: { backgroundColor: '#5db9c6' } }), _jsx("div", { className: "mr-2 h-2.5 w-20 rounded-md", style: { backgroundColor: '#91d3db' } })] })] }) }));
358
441
  }
359
442
  /** Provides the common card, title, and metadata treatment for every Arc graph host. */
360
443
  const DEFAULT_SKIN = {
361
- Card: ({ children, className, onClick, selected, style, tone = 'default' }) => (_jsx(Card, { onClick: onClick, size: 'sm', style: { overflow: 'visible', ...style }, className: cn('relative min-w-36 !overflow-visible !rounded !p-3 shadow-sm', {
444
+ Card: ({ children, className, onClick, selected, style, tone = 'default' }) => (_jsx(Card, { onClick: onClick, size: "sm", style: { overflow: 'visible', ...style }, className: cn('relative min-w-36 !overflow-visible !rounded !p-3 shadow-sm', {
362
445
  caution: 'border-amber-500 bg-amber-50 text-amber-950 dark:border-amber-800 dark:bg-amber-950 dark:text-amber-100',
363
446
  critical: 'border-red-500 bg-red-50 text-red-900 dark:border-red-800 dark:bg-red-950 dark:text-red-100',
364
447
  default: 'border-primary-6 bg-primary-1 text-primary-12',
365
448
  positive: 'border-green-600 bg-green-50 text-green-900 dark:border-green-700 dark:bg-green-950 dark:text-green-100',
366
449
  primary: 'border-primary-7 bg-primary-2 text-primary-12',
367
450
  }[tone], selected && 'ring-2 ring-primary-8', className), children: children })),
368
- Input: props => _jsx(Textarea, { ...props }),
369
- Text: ({ children, className }) => _jsx(CardDescription, { className: className, children: children }),
451
+ Input: (props) => _jsx(Textarea, { ...props }),
452
+ Text: ({ children, className }) => (_jsx(CardDescription, { className: className, children: children })),
370
453
  };
371
454
  const SkinCtx = createContext(DEFAULT_SKIN);
372
455
  /**
@@ -400,7 +483,11 @@ function isArrayEqual(a, b) {
400
483
  export function LogicNode({ id, data }) {
401
484
  const skin = useSkin();
402
485
  const type = data.graphType ?? 'function';
403
- const detail = type === 'function' ? data.function?.type : type === 'condition' ? data.condition?.type : undefined;
486
+ const detail = type === 'function'
487
+ ? data.function?.type
488
+ : type === 'condition'
489
+ ? data.condition?.type
490
+ : undefined;
404
491
  // prettier-ignore
405
492
  return _jsx(ErrorBoundary, { name: 'LogicNode', children: _jsxs(skin.Card, { className: cn('flex flex-col justify-center', (type === 'origin' || type === 'terminal') && 'items-center rounded-full text-center'), style: { ... /* prettier-ignore */(type === 'origin' ? { background: '#f0fdf4', borderColor: '#16a34a', color: '#14532d' }
406
493
  : type === 'terminal' ? { background: '#fef2f2', borderColor: '#ef4444', color: '#7f1d1d' }
@@ -416,13 +503,13 @@ export function LogicNode({ id, data }) {
416
503
  *
417
504
  * @return The zoom control cluster.
418
505
  */
419
- export function ZoomControls({ position: pos, disabled = false }) {
506
+ export function ZoomControls({ position: pos, disabled = false, }) {
420
507
  const { fitView, zoomIn, zoomOut } = useReactFlow();
421
- return (_jsx(ErrorBoundary, { name: 'ZoomControls', children: _jsx(Controls, { position: pos, showZoom: false, showFitView: false, showInteractive: false, children: _jsx(ButtonGroup, { children: [
422
- { label: 'Zoom in', icon: _jsx(ZoomInIcon, { "aria-hidden": 'true' }), onClick: zoomIn },
423
- { label: 'Zoom out', icon: _jsx(ZoomOutIcon, { "aria-hidden": 'true' }), onClick: zoomOut },
424
- { label: 'Fit view', icon: _jsx(FitToScreenIcon, { "aria-hidden": 'true' }), onClick: fitView },
425
- ].map(({ label: l, icon: i, onClick: o }) => (_jsx(Button, { variant: 'ghost', size: 'icon-sm', "aria-label": l, title: l, disabled: disabled, onClick: () => void o(), children: i }, l))) }) }) }));
508
+ return (_jsx(ErrorBoundary, { name: "ZoomControls", children: _jsx(Controls, { position: pos, showZoom: false, showFitView: false, showInteractive: false, children: _jsx(ButtonGroup, { children: [
509
+ { label: 'Zoom in', icon: _jsx(ZoomInIcon, { "aria-hidden": "true" }), onClick: zoomIn },
510
+ { label: 'Zoom out', icon: _jsx(ZoomOutIcon, { "aria-hidden": "true" }), onClick: zoomOut },
511
+ { label: 'Fit view', icon: _jsx(FitToScreenIcon, { "aria-hidden": "true" }), onClick: fitView },
512
+ ].map(({ label: l, icon: i, onClick: o }) => (_jsx(Button, { variant: "ghost", size: "icon-sm", "aria-label": l, title: l, disabled: disabled, onClick: () => void o(), children: i }, l))) }) }) }));
426
513
  }
427
514
  /**
428
515
  * Renders the shared floating context menu shell used by flow hosts.
@@ -433,7 +520,7 @@ export function ZoomControls({ position: pos, disabled = false }) {
433
520
  *
434
521
  * @return The floating context menu when visible, otherwise `null`.
435
522
  */
436
- function FloatingMenu({ state, children }) {
523
+ function FloatingMenu({ state, children, }) {
437
524
  if (!state.show)
438
525
  return null;
439
526
  // prettier-ignore
@@ -449,7 +536,7 @@ LOADING
449
536
  * @return The shared loading skeleton.
450
537
  */
451
538
  export function Skeleton() {
452
- return (_jsx(ErrorBoundary, { name: 'Skeleton', children: _jsx("div", { className: 'flex w-full items-center justify-center', style: { minHeight: 'calc(100vh - 20rem)' }, children: _jsxs("div", { className: 'flex animate-pulse flex-col items-center gap-8', children: [_jsx(SkeletonCard, {}), _jsx(SkeletonCard, { className: 'translate-x-16 opacity-70' }), _jsx(SkeletonCard, { className: '-translate-x-12 opacity-40' })] }) }) }));
539
+ return (_jsx(ErrorBoundary, { name: "Skeleton", children: _jsx("div", { className: "flex w-full items-center justify-center", style: { minHeight: 'calc(100vh - 20rem)' }, children: _jsxs("div", { className: "flex animate-pulse flex-col items-center gap-8", children: [_jsx(SkeletonCard, {}), _jsx(SkeletonCard, { className: "translate-x-16 opacity-70" }), _jsx(SkeletonCard, { className: "-translate-x-12 opacity-40" })] }) }) }));
453
540
  }
454
541
  /*//////////////////////////////////////////////////
455
542
  ARC ADAPTER
@@ -464,10 +551,17 @@ ARC ADAPTER
464
551
  */
465
552
  export function arcGraphFrom(flow, prev) {
466
553
  return {
467
- nodes: flow.nodes.map(n => {
468
- const prior = new Map(prev.nodes.map(i => [i._key, i])).get(n.data.graphKey);
469
- const type = n.data.graphType || (n.type === 'decision' ? 'function' : n.type === 'origin' || n.type === 'terminal' ? n.type : 'content');
470
- const published = isRec(n.data.published) && isString(n.data.published._id) ? n.data.published._id : undefined;
554
+ nodes: flow.nodes.map((n) => {
555
+ const prior = new Map(prev.nodes.map((i) => [i._key, i])).get(n.data.graphKey);
556
+ const type = n.data.graphType ||
557
+ (n.type === 'decision'
558
+ ? 'function'
559
+ : n.type === 'origin' || n.type === 'terminal'
560
+ ? n.type
561
+ : 'content');
562
+ const published = isRec(n.data.published) && isString(n.data.published._id)
563
+ ? n.data.published._id
564
+ : undefined;
471
565
  return {
472
566
  ...(prior ?? {}),
473
567
  _key: n.data.graphKey || n.id,
@@ -475,18 +569,36 @@ export function arcGraphFrom(flow, prev) {
475
569
  position: { ...n.position, ...(n.data.hierarchy ? { row: n.data.hierarchy.row } : {}) },
476
570
  ...(n.data.title ? { title: n.data.title } : {}),
477
571
  ...(n.parentId ? { parentId: n.parentId } : {}),
478
- ...(isRec(n.style) ? { style: { ...(isNumber(n.style.width) ? { width: n.style.width } : {}), ...(isNumber(n.style.height) ? { height: n.style.height } : {}) } } : {}),
479
- ...(prior?.problem || n.data.problemId || published ? { problem: prior?.problem || { _type: 'reference', _ref: n.data.problemId || published || '' } } : {}),
572
+ ...(isRec(n.style)
573
+ ? {
574
+ style: {
575
+ ...(isNumber(n.style.width) ? { width: n.style.width } : {}),
576
+ ...(isNumber(n.style.height) ? { height: n.style.height } : {}),
577
+ },
578
+ }
579
+ : {}),
580
+ ...(prior?.problem || n.data.problemId || published
581
+ ? {
582
+ problem: prior?.problem || {
583
+ _type: 'reference',
584
+ _ref: n.data.problemId || published || '',
585
+ },
586
+ }
587
+ : {}),
480
588
  ...(n.data.hidden ? { hidden: true } : {}),
481
- ...(type === 'function' && !prior?.function ? { function: { type: 'appendPrefix', value: '' } } : {}),
482
- ...(type === 'condition' && !prior?.condition ? { condition: { type: 'random', weights: [] } } : {}),
589
+ ...(type === 'function' && !prior?.function
590
+ ? { function: { type: 'appendPrefix', value: '' } }
591
+ : {}),
592
+ ...(type === 'condition' && !prior?.condition
593
+ ? { condition: { type: 'random', weights: [] } }
594
+ : {}),
483
595
  };
484
596
  }),
485
- edges: flow.edges.map(e => ({
597
+ edges: flow.edges.map((e) => ({
486
598
  _key: e.id,
487
599
  source: e.source,
488
600
  target: e.target,
489
- ...(new Map(flow.nodes.map(n => [n.id, n.data.graphType])).get(e.source) === 'content' &&
601
+ ...(new Map(flow.nodes.map((n) => [n.id, n.data.graphType])).get(e.source) === 'content' &&
490
602
  e.sourceHandle &&
491
603
  !(
492
604
  /*
@@ -496,7 +608,9 @@ export function arcGraphFrom(flow, prev) {
496
608
  */ ['top', 'right', 'bottom', 'left'].includes(e.sourceHandle))
497
609
  ? { handle: e.sourceHandle }
498
610
  : {}),
499
- ...(e.data?.functions?.length ? { functions: e.data.functions } : {}),
611
+ ...(e.data?.functions?.length
612
+ ? { functions: e.data.functions }
613
+ : {}),
500
614
  })),
501
615
  };
502
616
  }
@@ -524,7 +638,7 @@ export function arcGraphFrom(flow, prev) {
524
638
  *
525
639
  * @return The shared Arc canvas.
526
640
  */
527
- export function ArcCanvas({ elements: els, annotationNodeTypes, arrangeIcon = _jsx(MagicWandIcon, { "aria-hidden": 'true' }), arrangeLabel = 'Arrange nodes', editable = false, layoutNodes, readOnly = false, showDuration = true, showHierarchyControls = true, onArrange, onConnect, onEdgesChange, onInit, onNodeClick, onNodeContextMenu: onNodeCtxMenu, onNodesChange, onPaneContextMenu: onPaneCtxMenu, onProblemOpen, onProblemTitleChange, onReady, onResizeEnd, }) {
641
+ export function ArcCanvas({ elements: els, annotationNodeTypes, arrangeIcon = _jsx(MagicWandIcon, { "aria-hidden": "true" }), arrangeLabel = 'Arrange nodes', editable = false, layoutNodes, readOnly = false, showDuration = true, showHierarchyControls = true, onArrange, onConnect, onEdgesChange, onInit, onNodeClick, onNodeContextMenu: onNodeCtxMenu, onNodesChange, onPaneContextMenu: onPaneCtxMenu, onProblemOpen, onProblemTitleChange, onReady, onResizeEnd, }) {
528
642
  // STATES
529
643
  const arrangeNodes = useArcNodeLayout(layoutNodes);
530
644
  // prettier-ignore
@@ -533,12 +647,15 @@ export function ArcCanvas({ elements: els, annotationNodeTypes, arrangeIcon = _j
533
647
  const [nodes, setNodes] = useState(() => arrangeNodes(els.nodes, els.edges));
534
648
  // INIT
535
649
  useEffect(() => {
536
- setNodes(c => {
650
+ setNodes((c) => {
537
651
  if (layout.current !== topology) {
538
652
  layout.current = topology;
539
653
  return arrangeNodes(els.nodes, els.edges);
540
654
  }
541
- return els.nodes.map(n => ({ ...n, position: new Map(c.map(n => [n.id, n.position])).get(n.id) ?? n.position }));
655
+ return els.nodes.map((n) => ({
656
+ ...n,
657
+ position: new Map(c.map((n) => [n.id, n.position])).get(n.id) ?? n.position,
658
+ }));
542
659
  });
543
660
  }, [arrangeNodes, els.edges, els.nodes, topology]);
544
661
  // HELPERS
@@ -547,9 +664,9 @@ export function ArcCanvas({ elements: els, annotationNodeTypes, arrangeIcon = _j
547
664
  return ((frame) => () => cancelAnimationFrame(frame))(requestAnimationFrame(() => onReady?.()));
548
665
  }, [onReady]);
549
666
  // RENDER
550
- return (_jsx(ErrorBoundary, { name: 'ArcCanvas', children: _jsx(ReactFlowProvider, { children: _jsx(TooltipProvider, { delayDuration: 120, children: _jsx(SkinCtx.Provider, { value: DEFAULT_SKIN, children: _jsx(InitCtx.Provider, { value: true, children: _jsxs(ReactFlow, { nodes: nodes
551
- .filter(n => !n.data.hidden)
552
- .map(n => ({
667
+ return (_jsx(ErrorBoundary, { name: "ArcCanvas", children: _jsx(ReactFlowProvider, { children: _jsx(TooltipProvider, { delayDuration: 120, children: _jsx(SkinCtx.Provider, { value: DEFAULT_SKIN, children: _jsx(InitCtx.Provider, { value: true, children: _jsxs(ReactFlow, { nodes: nodes
668
+ .filter((n) => !n.data.hidden)
669
+ .map((n) => ({
553
670
  ...n,
554
671
  data: {
555
672
  ...n.data,
@@ -558,21 +675,43 @@ export function ArcCanvas({ elements: els, annotationNodeTypes, arrangeIcon = _j
558
675
  showDuration,
559
676
  showHierarchyControls,
560
677
  ...(n.data.graphType === 'content'
561
- ? { onOpen: () => n.data.problem && onProblemOpen?.(n.data.problem), onTitleChange: (title) => onProblemTitleChange?.(n.id, title) }
678
+ ? {
679
+ onOpen: () => n.data.problem && onProblemOpen?.(n.data.problem),
680
+ onTitleChange: (title) => onProblemTitleChange?.(n.id, title),
681
+ }
562
682
  : {}),
563
683
  ...(n.data.hierarchy
564
684
  ? {
565
685
  hierarchy: {
566
686
  ...n.data.hierarchy,
567
- onChange: (pos) => onNodesChange?.([{ id: n.id, type: 'replace', item: { ...n, data: { ...n.data, hierarchy: { ...n.data.hierarchy, ...pos } } } }]),
687
+ onChange: (pos) => onNodesChange?.([
688
+ {
689
+ id: n.id,
690
+ type: 'replace',
691
+ item: {
692
+ ...n,
693
+ data: {
694
+ ...n.data,
695
+ hierarchy: { ...n.data.hierarchy, ...pos },
696
+ },
697
+ },
698
+ },
699
+ ]),
568
700
  },
569
701
  }
570
702
  : {}),
571
703
  ...(n.data.graphType === 'group' || n.data.graphType === 'note'
572
- ? { onResizeEnd: (_id, params) => onResizeEnd?.(n.id, params) }
704
+ ? {
705
+ onResizeEnd: (_id, params) => onResizeEnd?.(n.id, params),
706
+ }
573
707
  : {}),
574
708
  },
575
- })), edges: els.edges, nodeTypes: useMemo(() => ({ group: annotationNodeTypes?.group, logicNode: LogicNode, note: annotationNodeTypes?.note, problemNode: ProblemNode }), [annotationNodeTypes]), edgeTypes: { custom: ArcEdge }, onInit: i => {
709
+ })), edges: els.edges, nodeTypes: useMemo(() => ({
710
+ group: annotationNodeTypes?.group,
711
+ logicNode: LogicNode,
712
+ note: annotationNodeTypes?.note,
713
+ problemNode: ProblemNode,
714
+ }), [annotationNodeTypes]), edgeTypes: { custom: ArcEdge }, onInit: (i) => {
576
715
  onInit?.(i);
577
716
  requestAnimationFrame(() => {
578
717
  void i.fitView({ padding: 0.1, duration: 50 });
@@ -580,12 +719,16 @@ export function ArcCanvas({ elements: els, annotationNodeTypes, arrangeIcon = _j
580
719
  }, onNodesChange: useCallback((c) => {
581
720
  if (!onNodesChange)
582
721
  return;
583
- setNodes(s => applyNodeChanges(c, s));
722
+ setNodes((s) => applyNodeChanges(c, s));
584
723
  onNodesChange(c);
585
- }, [onNodesChange]), ...(onEdgesChange ? { onEdgesChange } : {}), ...(onConnect ? { onConnect: (connection) => onConnect({ ...connection, targetHandle: 'inbound' }) } : {}), ...(onNodeClick ? { onNodeClick } : {}), ...(onNodeCtxMenu ? { onNodeContextMenu: onNodeCtxMenu } : {}), ...(onPaneCtxMenu ? { onPaneContextMenu: onPaneCtxMenu } : {}), fitView: true, minZoom: 0.1, proOptions: { hideAttribution: true }, panOnScroll: true, panOnDrag: false, zoomOnScroll: false, selectionOnDrag: editable, nodesDraggable: editable, nodesConnectable: editable, elementsSelectable: editable, children: [onArrange && (_jsx(Controls, { position: 'top-right', showFitView: false, showInteractive: false, showZoom: false, children: _jsx(ButtonGroup, { children: _jsx(Button, { variant: 'ghost', size: 'icon-sm', "aria-label": arrangeLabel, title: arrangeLabel, onClick: () => {
724
+ }, [onNodesChange]), ...(onEdgesChange ? { onEdgesChange } : {}), ...(onConnect
725
+ ? {
726
+ onConnect: (connection) => onConnect({ ...connection, targetHandle: 'inbound' }),
727
+ }
728
+ : {}), ...(onNodeClick ? { onNodeClick } : {}), ...(onNodeCtxMenu ? { onNodeContextMenu: onNodeCtxMenu } : {}), ...(onPaneCtxMenu ? { onPaneContextMenu: onPaneCtxMenu } : {}), fitView: true, minZoom: 0.1, proOptions: { hideAttribution: true }, panOnScroll: true, panOnDrag: false, zoomOnScroll: false, selectionOnDrag: editable, nodesDraggable: editable, nodesConnectable: editable, elementsSelectable: editable, children: [onArrange && (_jsx(Controls, { position: "top-right", showFitView: false, showInteractive: false, showZoom: false, children: _jsx(ButtonGroup, { children: _jsx(Button, { variant: "ghost", size: "icon-sm", "aria-label": arrangeLabel, title: arrangeLabel, onClick: () => {
586
729
  setNodes(arrangeNodes(els.nodes, els.edges));
587
730
  onArrange?.();
588
- }, children: arrangeIcon }) }) })), _jsx(ZoomControls, { position: 'bottom-right' }), _jsx(Background, { variant: BackgroundVariant.Dots })] }) }) }) }) }) }));
731
+ }, children: arrangeIcon }) }) })), _jsx(ZoomControls, { position: "bottom-right" }), _jsx(Background, { variant: BackgroundVariant.Dots })] }) }) }) }) }) }));
589
732
  }
590
733
  /**
591
734
  * Expands a persisted Arc into the one canonical node and edge projection.
@@ -598,14 +741,18 @@ export function ArcCanvas({ elements: els, annotationNodeTypes, arrangeIcon = _j
598
741
  */
599
742
  export function arcCanvasElements(graph, problems, edgeData) {
600
743
  const norm = normArcGraph(graph);
601
- const byId = new Map(problems.map(p => [canonicalId(p._id), p]));
744
+ const byId = new Map(problems.map((p) => [canonicalId(p._id), p]));
602
745
  return {
603
- nodes: norm.nodes.map(n => {
746
+ nodes: norm.nodes.map((n) => {
604
747
  const problem = n.problem?._ref ? byId.get(canonicalId(n.problem._ref)) : undefined;
605
748
  return {
606
749
  id: n._key,
607
750
  position: n.position ?? { x: 0, y: 0 },
608
- type: n.type === 'content' ? 'problemNode' : n.type === 'group' || n.type === 'note' ? n.type : 'logicNode',
751
+ type: n.type === 'content'
752
+ ? 'problemNode'
753
+ : n.type === 'group' || n.type === 'note'
754
+ ? n.type
755
+ : 'logicNode',
609
756
  ...(n.parentId ? { parentId: n.parentId } : {}),
610
757
  ...(n.style ? { style: n.style } : {}),
611
758
  draggable: n.type !== 'origin' && n.type !== 'terminal' && !(n.position && 'row' in n.position),
@@ -613,7 +760,14 @@ export function arcCanvasElements(graph, problems, edgeData) {
613
760
  data: {
614
761
  graphKey: n._key,
615
762
  graphType: n.type,
616
- title: n.type === 'content' ? problem?.title || 'Problem' : n.title || (n.type === 'group' ? 'Container' : n.type === 'note' ? 'Sticky note' : n.type.slice(0, 1).toUpperCase() + n.type.slice(1)),
763
+ title: n.type === 'content'
764
+ ? problem?.title || 'Problem'
765
+ : n.title ||
766
+ (n.type === 'group'
767
+ ? 'Container'
768
+ : n.type === 'note'
769
+ ? 'Sticky note'
770
+ : n.type.slice(0, 1).toUpperCase() + n.type.slice(1)),
617
771
  ...(n.type === 'group' || n.type === 'note' ? { editable: true, id: n._key } : {}),
618
772
  ...(n.type === 'content'
619
773
  ? {
@@ -622,7 +776,11 @@ export function arcCanvasElements(graph, problems, edgeData) {
622
776
  ...(problem?.title ? { title: problem.title } : {}),
623
777
  ...(problem?.duration !== undefined ? { duration: problem.duration } : {}),
624
778
  ...(problem?.choice?.opts || problem?.choice?.options
625
- ? { choices: (problem.choice.opts?.length ? problem.choice.opts : (problem.choice.options ?? [])).map(c => ({ id: c._key, ...(c.label ? { label: c.label } : {}) })) }
779
+ ? {
780
+ choices: (problem.choice.opts?.length
781
+ ? problem.choice.opts
782
+ : (problem.choice.options ?? [])).map((c) => ({ id: c._key, ...(c.label ? { label: c.label } : {}) })),
783
+ }
626
784
  : {}),
627
785
  },
628
786
  ...(problem ? { published: problem } : {}),
@@ -631,34 +789,50 @@ export function arcCanvasElements(graph, problems, edgeData) {
631
789
  ...(n.function ? { function: n.function } : {}),
632
790
  ...(n.condition ? { condition: n.condition } : {}),
633
791
  ...(n.hidden ? { hidden: true } : {}),
634
- ...(n.position && 'row' in n.position && typeof n.position.row === 'number' ? { hierarchy: { row: n.position.row } } : {}),
792
+ ...(n.position && 'row' in n.position && typeof n.position.row === 'number'
793
+ ? { hierarchy: { row: n.position.row } }
794
+ : {}),
635
795
  },
636
796
  };
637
797
  }),
638
798
  edges: (() => {
639
799
  const routes = [
640
800
  ...resolvedEdges(norm),
641
- ...norm.nodes.flatMap(n => {
801
+ ...norm.nodes.flatMap((n) => {
642
802
  const problem = n.problem?._ref ? byId.get(canonicalId(n.problem._ref)) : undefined;
643
- return (problem?.choice?.opts ?? problem?.choice?.options ?? []).flatMap(c => {
803
+ return (problem?.choice?.opts ?? problem?.choice?.options ?? []).flatMap((c) => {
644
804
  // Authored choice options can project to null (options stored as plain strings lose
645
805
  // their fields under the `options[]{...}` projection). Skip malformed entries rather
646
806
  // than crashing the whole canvas on CMS content this renderer does not control.
647
807
  if (!isRec(c))
648
808
  return [];
649
809
  const tgt = c.referral?._ref
650
- ? new Map(norm.nodes.filter(n => n.type === 'content' && n.problem?._ref).map(n => [canonicalId(n.problem._ref), n._key])).get(canonicalId(c.referral._ref))
810
+ ? new Map(norm.nodes
811
+ .filter((n) => n.type === 'content' && n.problem?._ref)
812
+ .map((n) => [canonicalId(n.problem._ref), n._key])).get(canonicalId(c.referral._ref))
651
813
  : undefined;
652
- if (!tgt || new Set(norm.edges.map(e => `${e.source}:${e.target}:${e.handle ?? ''}`)).has(`${n._key}:${tgt}:${c._key}`))
814
+ if (!tgt ||
815
+ new Set(norm.edges.map((e) => `${e.source}:${e.target}:${e.handle ?? ''}`)).has(`${n._key}:${tgt}:${c._key}`))
653
816
  return [];
654
- return [{ _key: `choice:${n._key}:${c._key}:${tgt}`, source: n._key, target: tgt, handle: c._key }];
817
+ return [
818
+ {
819
+ _key: `choice:${n._key}:${c._key}:${tgt}`,
820
+ source: n._key,
821
+ target: tgt,
822
+ handle: c._key,
823
+ },
824
+ ];
655
825
  });
656
826
  }),
657
- ].map(e => {
827
+ ].map((e) => {
658
828
  return {
659
829
  edge: e,
660
830
  data: e.functions?.length || edgeData
661
- ? { ...(e.functions?.length ? { functions: e.functions } : {}), ...edgeData?.(e, byId.get(canonicalId(new Map(norm.nodes.map(n => [n._key, n])).get(e.source)?.problem?._ref ?? ''))) }
831
+ ? {
832
+ ...(e.functions?.length ? { functions: e.functions } : {}),
833
+ ...edgeData?.(e, byId.get(canonicalId(new Map(norm.nodes.map((n) => [n._key, n])).get(e.source)?.problem?._ref ??
834
+ ''))),
835
+ }
662
836
  : undefined,
663
837
  };
664
838
  });
@@ -673,13 +847,19 @@ export function arcCanvasElements(graph, problems, edgeData) {
673
847
  }
674
848
  const laneMetaMap = new Map();
675
849
  for (const [, group] of routesBySrc) {
676
- const labelledRoutes = group.filter(r => r.data?.label || r.data?.appendages?.length);
850
+ const labelledRoutes = group.filter((r) => r.data?.label || r.data?.appendages?.length);
677
851
  if (labelledRoutes.length > 0) {
678
- const widths = labelledRoutes.map(r => Math.min(EDGE_LANE.maxWidth, Math.max(EDGE_LANE.minWidth, (r.data.label?.length ?? 0) * 6 + 24, r.data.appendages?.length ? r.data.appendages.length * EDGE_LANE.appendageWidth + (r.data.appendages.length - 1) * EDGE_LANE.appendageGap : 0)));
852
+ const widths = labelledRoutes.map((r) => Math.min(EDGE_LANE.maxWidth, Math.max(EDGE_LANE.minWidth, (r.data.label?.length ?? 0) * 6 + 24, r.data.appendages?.length
853
+ ? r.data.appendages.length * EDGE_LANE.appendageWidth +
854
+ (r.data.appendages.length - 1) * EDGE_LANE.appendageGap
855
+ : 0)));
679
856
  let currOffset = -(widths.reduce((s, w) => s + w, 0) + (widths.length - 1) * EDGE_LANE.gap) / 2;
680
857
  for (let i = 0; i < labelledRoutes.length; i++) {
681
858
  const w = widths[i];
682
- laneMetaMap.set(labelledRoutes[i].edge._key, { laneWidth: w, laneOffset: currOffset + w / 2 });
859
+ laneMetaMap.set(labelledRoutes[i].edge._key, {
860
+ laneWidth: w,
861
+ laneOffset: currOffset + w / 2,
862
+ });
683
863
  currOffset += w + EDGE_LANE.gap;
684
864
  }
685
865
  }
@@ -697,7 +877,9 @@ export function arcCanvasElements(graph, problems, edgeData) {
697
877
  ? {
698
878
  data: {
699
879
  ...d,
700
- ...(laneMeta?.laneOffset !== undefined ? { laneOffset: laneMeta.laneOffset } : {}),
880
+ ...(laneMeta?.laneOffset !== undefined
881
+ ? { laneOffset: laneMeta.laneOffset }
882
+ : {}),
701
883
  ...(laneMeta?.laneWidth !== undefined ? { laneWidth: laneMeta.laneWidth } : {}),
702
884
  },
703
885
  }
@@ -727,34 +909,50 @@ export function arcCanvasElements(graph, problems, edgeData) {
727
909
  * @return The rendered edge path and label layer.
728
910
  */
729
911
  export function ArcEdge({ id, source: src, sourceHandleId: srcHandleId, sourceX: srcX, sourceY: srcY, sourcePosition: srcPos, target: tgt, targetHandleId: tgtHandleId, targetX: tgtX, targetY: tgtY, targetPosition: tgtPos, data, }) {
730
- const appendages = data?.appendages ?? data?.functions?.map(f => (f.type === 'appendPrefix' ? { title: f.value, type: 'Prefix' } : { title: 'Definition', type: f.type === 'appendTerm' ? 'Term' : 'Remove' }));
912
+ const appendages = data?.appendages ??
913
+ data?.functions?.map((f) => f.type === 'appendPrefix'
914
+ ? { title: f.value, type: 'Prefix' }
915
+ : { title: 'Definition', type: f.type === 'appendTerm' ? 'Term' : 'Remove' });
731
916
  const srcNode = useInternalNode(src);
732
917
  const tgtNode = useInternalNode(tgt);
733
- const srcHandle = srcNode?.internals.handleBounds?.source?.find(h => h.id === srcHandleId);
734
- const tgtHandle = tgtNode?.internals.handleBounds?.target?.find(h => h.id === tgtHandleId);
918
+ const srcHandle = srcNode?.internals.handleBounds?.source?.find((h) => h.id === srcHandleId);
919
+ const tgtHandle = tgtNode?.internals.handleBounds?.target?.find((h) => h.id === tgtHandleId);
735
920
  // prettier-ignore
736
921
  const srcCenter = srcHandle ? { x: srcNode.internals.positionAbsolute.x + srcHandle.x + srcHandle.width / 2, y: srcNode.internals.positionAbsolute.y + srcHandle.y + srcHandle.height / 2 } : { x: srcX, y: srcY };
737
922
  // prettier-ignore
738
923
  const tgtCenter = tgtHandle ? { x: tgtNode.internals.positionAbsolute.x + tgtHandle.x + tgtHandle.width / 2, y: tgtNode.internals.positionAbsolute.y + tgtHandle.y + tgtHandle.height / 2 } : { x: tgtX, y: tgtY };
739
924
  const terminal = data?.terminal;
740
- const vertical = (srcPos === HandlePos.Bottom || srcPos === HandlePos.Top) && (tgtPos === HandlePos.Bottom || tgtPos === HandlePos.Top);
925
+ const vertical = (srcPos === HandlePos.Bottom || srcPos === HandlePos.Top) &&
926
+ (tgtPos === HandlePos.Bottom || tgtPos === HandlePos.Top);
741
927
  const srcHeight = srcNode?.measured.height;
742
928
  const tgtApproachY = tgtCenter.y - 24;
743
929
  const bendY = terminal
744
- ? (srcHeight === undefined ? srcCenter.y : srcNode ? srcNode.internals.positionAbsolute.y + srcHeight : srcCenter.y) + 52
930
+ ? (srcHeight === undefined
931
+ ? srcCenter.y
932
+ : srcNode
933
+ ? srcNode.internals.positionAbsolute.y + srcHeight
934
+ : srcCenter.y) + 52
745
935
  : !terminal && tgtCenter.y < srcCenter.y
746
936
  ? Math.min(srcCenter.y - 52, tgtApproachY - 24)
747
937
  : (srcCenter.y + tgtApproachY) / 2;
748
- const [fallback, fallbackX, fallbackY] = getSmoothStepPath({ sourceX: srcX, sourceY: srcY, sourcePosition: srcPos, targetX: tgtX, targetY: tgtY, targetPosition: tgtPos, offset: 16 });
938
+ const [fallback, fallbackX, fallbackY] = getSmoothStepPath({
939
+ sourceX: srcX,
940
+ sourceY: srcY,
941
+ sourcePosition: srcPos,
942
+ targetX: tgtX,
943
+ targetY: tgtY,
944
+ targetPosition: tgtPos,
945
+ offset: 16,
946
+ });
749
947
  const laneX = srcCenter.x + (data?.laneOffset ?? 0);
750
- return (_jsxs(ErrorBoundary, { name: 'ArcEdge', children: [_jsx(BaseEdge, { id: id, path:
948
+ return (_jsxs(ErrorBoundary, { name: "ArcEdge", children: [_jsx(BaseEdge, { id: id, path:
751
949
  /* prettier-ignore */ terminal
752
950
  ? `M ${srcCenter.x},${srcCenter.y} V ${bendY} H ${laneX}` : vertical
753
- ? `M ${srcCenter.x},${srcCenter.y} V ${bendY} H ${laneX} V ${tgtApproachY} H ${tgtCenter.x} V ${tgtCenter.y}` : fallback }), (data?.label || appendages?.length) && (_jsx(EdgeLabelRenderer, { children: _jsxs("div", { className: cn('nodrag nopan flex max-w-80 flex-col items-center gap-1 text-[10px] leading-tight', data?.laneWidth ? 'w-full' : 'w-fit'), "aria-label": `${data?.terminal ? 'Terminal route. ' : ''}${data?.label ?? 'Route'}${appendages?.length ? `. ${appendages.map(a => `${a.title}, ${a.type}`).join('; ')}` : ''}`, style: {
951
+ ? `M ${srcCenter.x},${srcCenter.y} V ${bendY} H ${laneX} V ${tgtApproachY} H ${tgtCenter.x} V ${tgtCenter.y}` : fallback }), (data?.label || appendages?.length) && (_jsx(EdgeLabelRenderer, { children: _jsxs("div", { className: cn('nodrag nopan flex max-w-80 flex-col items-center gap-1 text-[10px] leading-tight', data?.laneWidth ? 'w-full' : 'w-fit'), "aria-label": `${data?.terminal ? 'Terminal route. ' : ''}${data?.label ?? 'Route'}${appendages?.length ? `. ${appendages.map((a) => `${a.title}, ${a.type}`).join('; ')}` : ''}`, style: {
754
952
  position: 'absolute',
755
953
  transform: `translate(-50%, -50%) translate(${terminal || vertical ? laneX : fallbackX}px,${terminal ? bendY + 12 : vertical ? bendY : fallbackY}px)`,
756
954
  ...(data?.laneWidth ? { width: data.laneWidth } : {}),
757
- }, children: [data?.label && _jsx("span", { className: 'block w-full truncate whitespace-nowrap rounded bg-white/95 px-1 text-center font-medium text-primary-12 shadow-sm', children: data.label }), _jsx("div", { className: 'flex w-full flex-wrap items-start justify-center gap-0.5', children: appendages?.map((a, i) => (_jsxs("span", { className: cn('inline-flex h-5 w-32 min-w-0 max-w-32 items-baseline justify-center gap-1 overflow-hidden rounded px-1.5 py-0.5 text-center shadow-sm', data?.terminal ? 'bg-primary-9 text-white' : 'bg-secondary-8 text-secondary-12'), title: `${a.title} — ${a.type}`, children: [_jsx("span", { className: 'min-w-0 truncate whitespace-nowrap', children: a.title }), _jsx("span", { className: 'shrink-0 text-[9px] font-semibold uppercase tracking-wide opacity-75', children: a.type })] }, `${a.title}-${a.type}-${i}`))) })] }) }))] }));
955
+ }, children: [data?.label && (_jsx("span", { className: "block w-full truncate whitespace-nowrap rounded bg-white/95 px-1 text-center font-medium text-primary-12 shadow-sm", children: data.label })), _jsx("div", { className: "flex w-full flex-wrap items-start justify-center gap-0.5", children: appendages?.map((a, i) => (_jsxs("span", { className: cn('inline-flex h-5 w-32 min-w-0 max-w-32 items-baseline justify-center gap-1 overflow-hidden rounded px-1.5 py-0.5 text-center shadow-sm', data?.terminal ? 'bg-primary-9 text-white' : 'bg-secondary-8 text-secondary-12'), title: `${a.title} — ${a.type}`, children: [_jsx("span", { className: "min-w-0 truncate whitespace-nowrap", children: a.title }), _jsx("span", { className: "shrink-0 text-[9px] font-semibold uppercase tracking-wide opacity-75", children: a.type })] }, `${a.title}-${a.type}-${i}`))) })] }) }))] }));
758
956
  }
759
957
  /**
760
958
  * Renders the common problem card, its handles, title editing, and route affordances.
@@ -766,33 +964,46 @@ export function ArcEdge({ id, source: src, sourceHandleId: srcHandleId, sourceX:
766
964
  *
767
965
  * @return The rendered problem node.
768
966
  */
769
- export function ProblemNode({ id, data, selected }) {
967
+ export function ProblemNode({ id, data, selected, }) {
770
968
  const skin = useSkin();
771
969
  const input = useRef(null);
772
- const outgoing = useStore(s => s.edges.filter(e => e.source === id).map(e => e.sourceHandle ?? 'default'), isArrayEqual);
970
+ const outgoing = useStore((s) => s.edges.filter((e) => e.source === id).map((e) => e.sourceHandle ?? 'default'), isArrayEqual);
773
971
  const choices = data.problem.choices ?? [];
774
972
  const routes = [
775
973
  { id: 'default' },
776
974
  ...choices,
777
975
  ...Array.from(new Set(outgoing))
778
- .filter(h => h !== 'default' && !choices.some(c => c.id === h))
779
- .map(h => ({ id: h })),
976
+ .filter((h) => h !== 'default' && !choices.some((c) => c.id === h))
977
+ .map((h) => ({ id: h })),
780
978
  ];
781
979
  const connectable = data.editable !== false && data.draft !== false;
782
- const terminus = useNodeConnections({ id: 'inbound' }).length > 0 && (!outgoing.length || (!outgoing.includes('default') && choices.some(c => !outgoing.includes(c.id))));
980
+ const terminus = useNodeConnections({ id: 'inbound' }).length > 0 &&
981
+ (!outgoing.length ||
982
+ (!outgoing.includes('default') && choices.some((c) => !outgoing.includes(c.id))));
783
983
  useEffect(() => {
784
984
  if (!data.renaming || !input.current)
785
985
  return;
786
986
  input.current.focus();
787
987
  input.current.select();
788
988
  }, [data.renaming]);
789
- return (_jsx(ErrorBoundary, { name: 'ProblemNode', children: _jsxs(skin.Card, { selected: selected, tone: terminus ? 'caution' : 'default', className: cn('relative flex w-52 flex-col', data.hierarchy && data.showHierarchyControls ? 'h-[120px]' : data.showDuration === false ? 'h-16' : 'h-[84px]', terminus && 'rounded-2xl'), onClick: e => {
989
+ return (_jsx(ErrorBoundary, { name: "ProblemNode", children: _jsxs(skin.Card, { selected: selected, tone: terminus ? 'caution' : 'default', className: cn('relative flex w-52 flex-col', data.hierarchy && data.showHierarchyControls
990
+ ? 'h-[120px]'
991
+ : data.showDuration === false
992
+ ? 'h-16'
993
+ : 'h-[84px]', terminus && 'rounded-2xl'), onClick: (e) => {
790
994
  if (!e.metaKey && !e.ctrlKey && !e.shiftKey)
791
995
  data.onOpen?.();
792
- }, children: [ARC_PORTS.inbound.map(i => (_jsx(Port, { id: i, type: 'target', position: HandlePos.Top, ariaLabel: 'Incoming route', title: 'Incoming route', isConnectable: connectable }, i))), data.readOnly ? (_jsx("strong", { className: 'block truncate whitespace-nowrap leading-5', title: data.problem.title ?? 'Problem', children: data.problem.title ?? 'Problem' })) : (_jsx(skin.Input, { ref: input, rows: 1, defaultValue: data.problem.title ?? '', "aria-label": 'Problem title', className: 'h-5 !min-h-0 resize-none overflow-hidden whitespace-nowrap border-0 bg-transparent p-0 font-semibold leading-5 shadow-none outline-none focus-visible:ring-0', onClick: e => {
996
+ }, children: [ARC_PORTS.inbound.map((i) => (_jsx(Port, { id: i, type: "target", position: HandlePos.Top, ariaLabel: "Incoming route", title: "Incoming route", isConnectable: connectable }, i))), data.readOnly ? (_jsx("strong", { className: "block truncate whitespace-nowrap leading-5", title: data.problem.title ?? 'Problem', children: data.problem.title ?? 'Problem' })) : (_jsx(skin.Input, { ref: input, rows: 1, defaultValue: data.problem.title ?? '', "aria-label": "Problem title", className: "h-5 !min-h-0 resize-none overflow-hidden whitespace-nowrap border-0 bg-transparent p-0 font-semibold leading-5 shadow-none outline-none focus-visible:ring-0", onClick: (e) => {
793
997
  e.stopPropagation();
794
- }, onChange: e => data.onTitleChange?.(e.currentTarget.value) })), data.showDuration !== false && data.problem.duration !== undefined && _jsxs(skin.Text, { className: cn(CLASS.meta, 'mt-auto'), children: [data.problem.duration, " minutes"] }), data.showDuration !== false && data.duration && (_jsxs(skin.Text, { className: cn(CLASS.meta, data.problem.duration === undefined && 'mt-auto'), children: [data.duration.min === data.duration.max ? data.duration.min : `${data.duration.min}-${data.duration.max}`, " total"] })), data.hierarchy && data.showHierarchyControls !== false && (_jsx("div", { className: 'mt-auto text-[10px]', onClick: e => {
998
+ }, onChange: (e) => data.onTitleChange?.(e.currentTarget.value) })), data.showDuration !== false && data.problem.duration !== undefined && (_jsxs(skin.Text, { className: cn(CLASS.meta, 'mt-auto'), children: [data.problem.duration, " minutes"] })), data.showDuration !== false && data.duration && (_jsxs(skin.Text, { className: cn(CLASS.meta, data.problem.duration === undefined && 'mt-auto'), children: [data.duration.min === data.duration.max
999
+ ? data.duration.min
1000
+ : `${data.duration.min}-${data.duration.max}`, ' ', "total"] })), data.hierarchy && data.showHierarchyControls !== false && (_jsx("div", { className: "mt-auto text-[10px]", onClick: (e) => {
795
1001
  e.stopPropagation();
796
- }, children: _jsxs("label", { htmlFor: `problem-row-${id}`, className: 'grid gap-0.5', children: [_jsx("span", { children: "Row" }), _jsx("input", { id: `problem-row-${id}`, className: 'h-5 rounded border bg-background px-1', "aria-label": 'Hierarchy row', type: 'number', min: '1', value: data.hierarchy.row, onChange: e => data.hierarchy?.onChange?.({ ...data.hierarchy, row: Math.max(1, Number(e.currentTarget.value) || 1) }) })] }) })), skin.Meta?.({ problem: data.problem }), routes.map((r, i) => (_jsx(Port, { id: r.id, type: 'source', position: HandlePos.Bottom, isConnectable: connectable, variant: r.id === 'default' ? 'default' : 'choice', ...(r.id === 'default' ? { ariaLabel: 'Default referral', title: 'Default referral' } : { ariaLabel: `Choice route ${r.label ?? i}`, title: r.label }), style: { left: `${((i + 1) / (routes.length + 1)) * 100}%` } }, r.id)))] }) }));
1002
+ }, children: _jsxs("label", { htmlFor: `problem-row-${id}`, className: "grid gap-0.5", children: [_jsx("span", { children: "Row" }), _jsx("input", { id: `problem-row-${id}`, className: "h-5 rounded border bg-background px-1", "aria-label": "Hierarchy row", type: "number", min: "1", value: data.hierarchy.row, onChange: (e) => data.hierarchy?.onChange?.({
1003
+ ...data.hierarchy,
1004
+ row: Math.max(1, Number(e.currentTarget.value) || 1),
1005
+ }) })] }) })), skin.Meta?.({ problem: data.problem }), routes.map((r, i) => (_jsx(Port, { id: r.id, type: "source", position: HandlePos.Bottom, isConnectable: connectable, variant: r.id === 'default' ? 'default' : 'choice', ...(r.id === 'default'
1006
+ ? { ariaLabel: 'Default referral', title: 'Default referral' }
1007
+ : { ariaLabel: `Choice route ${r.label ?? i}`, title: r.label }), style: { left: `${((i + 1) / (routes.length + 1)) * 100}%` } }, r.id)))] }) }));
797
1008
  }
798
1009
  //# sourceMappingURL=_chrome.js.map