@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.
- package/README.md +26 -7
- package/bin/terra-docs.mjs +187 -0
- package/lib-dist/assets/fonts/AUTHENTICSans-130.woff +0 -0
- package/lib-dist/assets/fonts/AUTHENTICSans-130.woff2 +0 -0
- package/lib-dist/assets/fonts/AUTHENTICSans-150.woff +0 -0
- package/lib-dist/assets/fonts/AUTHENTICSans-150.woff2 +0 -0
- package/lib-dist/assets/fonts/AUTHENTICSans-90.woff +0 -0
- package/lib-dist/assets/fonts/AUTHENTICSans-90.woff2 +0 -0
- package/lib-dist/assets/fonts/Avara-Bold.woff +0 -0
- package/lib-dist/assets/fonts/Avara-BoldItalic.woff +0 -0
- package/lib-dist/assets/fonts/InterVariable-Italic-latin-20260728.woff2 +0 -0
- package/lib-dist/assets/fonts/InterVariable-latin-20260728.woff2 +0 -0
- package/lib-dist/assets/fonts/README.md +7 -0
- package/lib-dist/assets/fonts/licenses/Inter-OFL-1.1.txt +92 -0
- package/lib-dist/assets/fonts/licenses/OFL-1.1.txt +93 -0
- package/lib-dist/{Docs.d.ts → components/Docs.d.ts} +1 -1
- package/lib-dist/components/Docs.d.ts.map +1 -0
- package/lib-dist/components/Docs.js +9 -0
- package/lib-dist/components/Docs.js.map +1 -0
- package/lib-dist/{LocalDocsWorkspace.d.ts → components/LocalDocsWorkspace.d.ts} +9 -2
- package/lib-dist/components/LocalDocsWorkspace.d.ts.map +1 -0
- package/lib-dist/{LocalDocsWorkspace.js → components/LocalDocsWorkspace.js} +83 -24
- package/lib-dist/components/LocalDocsWorkspace.js.map +1 -0
- package/lib-dist/components/NotFound.d.ts +8 -0
- package/lib-dist/components/NotFound.d.ts.map +1 -0
- package/lib-dist/components/NotFound.js +6 -0
- package/lib-dist/components/NotFound.js.map +1 -0
- package/lib-dist/components/SiteLayout.d.ts +25 -0
- package/lib-dist/components/SiteLayout.d.ts.map +1 -0
- package/lib-dist/components/SiteLayout.js +12 -0
- package/lib-dist/components/SiteLayout.js.map +1 -0
- package/lib-dist/{StaticWorkspace.d.ts → components/StaticWorkspace.d.ts} +7 -3
- package/lib-dist/components/StaticWorkspace.d.ts.map +1 -0
- package/lib-dist/{StaticWorkspace.js → components/StaticWorkspace.js} +106 -34
- package/lib-dist/components/StaticWorkspace.js.map +1 -0
- package/lib-dist/components/StrictLocalWorkspaceHarness.d.ts +10 -0
- package/lib-dist/components/StrictLocalWorkspaceHarness.d.ts.map +1 -0
- package/lib-dist/components/StrictLocalWorkspaceHarness.js +12 -0
- package/lib-dist/components/StrictLocalWorkspaceHarness.js.map +1 -0
- package/lib-dist/components/blocks.d.ts.map +1 -0
- package/lib-dist/{blocks.js → components/blocks.js} +88 -13
- package/lib-dist/components/blocks.js.map +1 -0
- package/lib-dist/{navigation.d.ts → components/navigation.d.ts} +3 -1
- package/lib-dist/components/navigation.d.ts.map +1 -0
- package/lib-dist/components/navigation.js.map +1 -0
- package/lib-dist/{terra → components/terra}/Workspace.d.ts +1 -1
- package/lib-dist/components/terra/Workspace.d.ts.map +1 -0
- package/lib-dist/components/terra/Workspace.js +190 -0
- package/lib-dist/components/terra/Workspace.js.map +1 -0
- package/lib-dist/components/terra/editor/TerraContentEditor.d.ts +16 -0
- package/lib-dist/components/terra/editor/TerraContentEditor.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/TerraContentEditor.js +358 -0
- package/lib-dist/components/terra/editor/TerraContentEditor.js.map +1 -0
- package/lib-dist/{terra → components/terra}/editor/_blocks.d.ts +3 -4
- package/lib-dist/components/terra/editor/_blocks.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/_blocks.js +120 -0
- package/lib-dist/components/terra/editor/_blocks.js.map +1 -0
- package/lib-dist/components/terra/editor/docs/BlockContext.d.ts +7 -0
- package/lib-dist/components/terra/editor/docs/BlockContext.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/docs/BlockContext.js +60 -0
- package/lib-dist/components/terra/editor/docs/BlockContext.js.map +1 -0
- package/lib-dist/components/terra/editor/docs/DocsAttachmentPicker.d.ts +12 -0
- package/lib-dist/components/terra/editor/docs/DocsAttachmentPicker.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/docs/DocsAttachmentPicker.js +66 -0
- package/lib-dist/components/terra/editor/docs/DocsAttachmentPicker.js.map +1 -0
- package/lib-dist/components/terra/editor/docs/TerraToolbar.d.ts +12 -0
- package/lib-dist/components/terra/editor/docs/TerraToolbar.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/docs/TerraToolbar.js +169 -0
- package/lib-dist/components/terra/editor/docs/TerraToolbar.js.map +1 -0
- package/lib-dist/{terra → components/terra}/editor/docs/_Callout.d.ts +1 -1
- package/lib-dist/components/terra/editor/docs/_Callout.d.ts.map +1 -0
- package/lib-dist/{terra → components/terra}/editor/docs/_Callout.js +11 -7
- package/lib-dist/components/terra/editor/docs/_Callout.js.map +1 -0
- package/lib-dist/components/terra/editor/docs/_CodeBlock.d.ts.map +1 -0
- package/lib-dist/{terra → components/terra}/editor/docs/_CodeBlock.js +111 -46
- package/lib-dist/components/terra/editor/docs/_CodeBlock.js.map +1 -0
- package/lib-dist/{terra → components/terra}/editor/docs/_DocsCode.d.ts +1 -1
- package/lib-dist/components/terra/editor/docs/_DocsCode.d.ts.map +1 -0
- package/lib-dist/{terra → components/terra}/editor/docs/_DocsCode.js +47 -14
- package/lib-dist/components/terra/editor/docs/_DocsCode.js.map +1 -0
- package/lib-dist/{terra → components/terra}/editor/docs/_DocsImage.d.ts +1 -1
- package/lib-dist/components/terra/editor/docs/_DocsImage.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/docs/_DocsImage.js +62 -0
- package/lib-dist/components/terra/editor/docs/_DocsImage.js.map +1 -0
- package/lib-dist/{terra → components/terra}/editor/docs/_Embed.d.ts +3 -1
- package/lib-dist/components/terra/editor/docs/_Embed.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/docs/_Embed.js +73 -0
- package/lib-dist/components/terra/editor/docs/_Embed.js.map +1 -0
- package/lib-dist/{terra → components/terra}/editor/docs/_Math.d.ts +2 -2
- package/lib-dist/components/terra/editor/docs/_Math.d.ts.map +1 -0
- package/lib-dist/{terra → components/terra}/editor/docs/_Math.js +29 -17
- package/lib-dist/components/terra/editor/docs/_Math.js.map +1 -0
- package/lib-dist/{terra → components/terra}/editor/docs/_Nodes.d.ts +1 -1
- package/lib-dist/components/terra/editor/docs/_Nodes.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/docs/_Nodes.js +62 -0
- package/lib-dist/components/terra/editor/docs/_Nodes.js.map +1 -0
- package/lib-dist/{terra → components/terra}/editor/docs/_Raw.d.ts +1 -1
- package/lib-dist/components/terra/editor/docs/_Raw.d.ts.map +1 -0
- package/lib-dist/{terra → components/terra}/editor/docs/_Raw.js +8 -3
- package/lib-dist/components/terra/editor/docs/_Raw.js.map +1 -0
- package/lib-dist/{terra → components/terra}/editor/docs/_Table.d.ts +1 -1
- package/lib-dist/components/terra/editor/docs/_Table.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/docs/_Table.js +99 -0
- package/lib-dist/components/terra/editor/docs/_Table.js.map +1 -0
- package/lib-dist/{terra → components/terra}/editor/docs/_Tabs.d.ts +1 -1
- package/lib-dist/components/terra/editor/docs/_Tabs.d.ts.map +1 -0
- package/lib-dist/{terra → components/terra}/editor/docs/_Tabs.js +36 -15
- package/lib-dist/components/terra/editor/docs/_Tabs.js.map +1 -0
- package/lib-dist/{terra → components/terra}/editor/docs/_TsDocs.d.ts +1 -1
- package/lib-dist/components/terra/editor/docs/_TsDocs.d.ts.map +1 -0
- package/lib-dist/{terra → components/terra}/editor/docs/_TsDocs.js +16 -14
- package/lib-dist/components/terra/editor/docs/_TsDocs.js.map +1 -0
- package/lib-dist/{terra → components/terra}/editor/docs/_math_inline.d.ts +1 -1
- package/lib-dist/components/terra/editor/docs/_math_inline.d.ts.map +1 -0
- package/lib-dist/{terra → components/terra}/editor/docs/_math_inline.js +2 -2
- package/lib-dist/components/terra/editor/docs/_math_inline.js.map +1 -0
- package/lib-dist/{terra → components/terra}/editor/docs/heading.d.ts +1 -1
- package/lib-dist/components/terra/editor/docs/heading.d.ts.map +1 -0
- package/lib-dist/{terra → components/terra}/editor/docs/heading.js +8 -5
- package/lib-dist/components/terra/editor/docs/heading.js.map +1 -0
- package/lib-dist/components/terra/editor/docs/index.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/docs/index.js.map +1 -0
- package/lib-dist/components/terra/editor/terra-content.styles.d.ts +3 -0
- package/lib-dist/components/terra/editor/terra-content.styles.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/terra-content.styles.js +3 -0
- package/lib-dist/components/terra/editor/terra-content.styles.js.map +1 -0
- package/lib-dist/{terra → components/terra}/editor/types.d.ts +2 -2
- package/lib-dist/components/terra/editor/types.d.ts.map +1 -0
- package/lib-dist/{terra → components/terra}/editor/types.js +1 -1
- package/lib-dist/components/terra/editor/types.js.map +1 -0
- package/lib-dist/{terra → components/terra}/flow/Nodes.d.ts +2 -3
- package/lib-dist/components/terra/flow/Nodes.d.ts.map +1 -0
- package/lib-dist/{terra → components/terra}/flow/Nodes.js +213 -106
- package/lib-dist/components/terra/flow/Nodes.js.map +1 -0
- package/lib-dist/{terra → components/terra}/flow/_chrome.d.ts +7 -9
- package/lib-dist/components/terra/flow/_chrome.d.ts.map +1 -0
- package/lib-dist/{terra → components/terra}/flow/_chrome.js +329 -118
- package/lib-dist/components/terra/flow/_chrome.js.map +1 -0
- package/lib-dist/components/terra/flow/menuContext.d.ts.map +1 -0
- package/lib-dist/components/terra/flow/menuContext.js.map +1 -0
- package/lib-dist/{terra → components/terra}/pages/docs/_attachments.d.ts +1 -1
- package/lib-dist/components/terra/pages/docs/_attachments.d.ts.map +1 -0
- package/lib-dist/{terra → components/terra}/pages/docs/_attachments.js +375 -131
- package/lib-dist/components/terra/pages/docs/_attachments.js.map +1 -0
- package/lib-dist/components/terra/pages/docs/_blocks.d.ts.map +1 -0
- package/lib-dist/{terra → components/terra}/pages/docs/_blocks.js +42 -31
- package/lib-dist/components/terra/pages/docs/_blocks.js.map +1 -0
- package/lib-dist/{terra → components/terra}/pages/docs/_editable.d.ts +2 -3
- package/lib-dist/components/terra/pages/docs/_editable.d.ts.map +1 -0
- package/lib-dist/{terra → components/terra}/pages/docs/_editable.js +82 -44
- package/lib-dist/components/terra/pages/docs/_editable.js.map +1 -0
- package/lib-dist/{terra → components/terra}/pages/docs/_export-dialog.d.ts +1 -1
- package/lib-dist/components/terra/pages/docs/_export-dialog.d.ts.map +1 -0
- package/lib-dist/{terra → components/terra}/pages/docs/_export-dialog.js +17 -17
- package/lib-dist/components/terra/pages/docs/_export-dialog.js.map +1 -0
- package/lib-dist/components/terra/pages/docs/_icons.d.ts.map +1 -0
- package/lib-dist/components/terra/pages/docs/_icons.js.map +1 -0
- package/lib-dist/{terra → components/terra}/pages/docs/_main.d.ts +10 -7
- package/lib-dist/components/terra/pages/docs/_main.d.ts.map +1 -0
- package/lib-dist/components/terra/pages/docs/_main.js +710 -0
- package/lib-dist/components/terra/pages/docs/_main.js.map +1 -0
- package/lib-dist/components/terra/pages/docs/_manage-attachments-dialog.d.ts +10 -0
- package/lib-dist/components/terra/pages/docs/_manage-attachments-dialog.d.ts.map +1 -0
- package/lib-dist/components/terra/pages/docs/_manage-attachments-dialog.js +597 -0
- package/lib-dist/components/terra/pages/docs/_manage-attachments-dialog.js.map +1 -0
- package/lib-dist/{terra → components/terra}/pages/docs/_sidebar.d.ts +3 -12
- package/lib-dist/components/terra/pages/docs/_sidebar.d.ts.map +1 -0
- package/lib-dist/components/terra/pages/docs/_sidebar.js +1437 -0
- package/lib-dist/components/terra/pages/docs/_sidebar.js.map +1 -0
- package/lib-dist/components/terra/pages/docs/_toc.d.ts +4 -0
- package/lib-dist/components/terra/pages/docs/_toc.d.ts.map +1 -0
- package/lib-dist/components/terra/pages/docs/_toc.js +212 -0
- package/lib-dist/components/terra/pages/docs/_toc.js.map +1 -0
- package/lib-dist/components/terra/pages/docs/_toolbar-find-replace.d.ts +15 -0
- package/lib-dist/components/terra/pages/docs/_toolbar-find-replace.d.ts.map +1 -0
- package/lib-dist/components/terra/pages/docs/_toolbar-find-replace.js +207 -0
- package/lib-dist/components/terra/pages/docs/_toolbar-find-replace.js.map +1 -0
- package/lib-dist/{terra → components/terra}/pages/docs/_toolbar.d.ts +3 -5
- package/lib-dist/components/terra/pages/docs/_toolbar.d.ts.map +1 -0
- package/lib-dist/{terra → components/terra}/pages/docs/_toolbar.js +318 -350
- package/lib-dist/components/terra/pages/docs/_toolbar.js.map +1 -0
- package/lib-dist/{terra → components/terra}/pages/docs/_tree.d.ts +1 -4
- package/lib-dist/components/terra/pages/docs/_tree.d.ts.map +1 -0
- package/lib-dist/{terra → components/terra}/pages/docs/_tree.js +219 -264
- package/lib-dist/components/terra/pages/docs/_tree.js.map +1 -0
- package/lib-dist/components/terra/pages/docs/use-block-nav.d.ts +5 -0
- package/lib-dist/components/terra/pages/docs/use-block-nav.d.ts.map +1 -0
- package/lib-dist/components/terra/pages/docs/use-block-nav.js +1306 -0
- package/lib-dist/components/terra/pages/docs/use-block-nav.js.map +1 -0
- package/lib-dist/components/terra/pages/docs/use-media-paste.d.ts +5 -0
- package/lib-dist/components/terra/pages/docs/use-media-paste.d.ts.map +1 -0
- package/lib-dist/components/terra/pages/docs/use-media-paste.js +391 -0
- package/lib-dist/components/terra/pages/docs/use-media-paste.js.map +1 -0
- package/lib-dist/components/terra/pages/docs/use-render-tripwire.d.ts +2 -0
- package/lib-dist/components/terra/pages/docs/use-render-tripwire.d.ts.map +1 -0
- package/lib-dist/components/terra/pages/docs/use-render-tripwire.js +25 -0
- package/lib-dist/components/terra/pages/docs/use-render-tripwire.js.map +1 -0
- package/lib-dist/{terra/runtime → components/terra}/ui.d.ts +2 -5
- package/lib-dist/components/terra/ui.d.ts.map +1 -0
- package/lib-dist/components/terra/ui.js +20 -0
- package/lib-dist/components/terra/ui.js.map +1 -0
- package/lib-dist/components/workspace-demo-fixture.d.ts +35 -0
- package/lib-dist/components/workspace-demo-fixture.d.ts.map +1 -0
- package/lib-dist/components/workspace-demo-fixture.js +820 -0
- package/lib-dist/components/workspace-demo-fixture.js.map +1 -0
- package/lib-dist/fonts/KaTeX_AMS-Regular.ttf +0 -0
- package/lib-dist/fonts/KaTeX_AMS-Regular.woff +0 -0
- package/lib-dist/fonts/KaTeX_AMS-Regular.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
- package/lib-dist/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
- package/lib-dist/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Fraktur-Bold.woff +0 -0
- package/lib-dist/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Fraktur-Regular.woff +0 -0
- package/lib-dist/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Main-Bold.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Main-Bold.woff +0 -0
- package/lib-dist/fonts/KaTeX_Main-Bold.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Main-BoldItalic.woff +0 -0
- package/lib-dist/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Main-Italic.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Main-Italic.woff +0 -0
- package/lib-dist/fonts/KaTeX_Main-Italic.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Main-Regular.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Main-Regular.woff +0 -0
- package/lib-dist/fonts/KaTeX_Main-Regular.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Math-BoldItalic.woff +0 -0
- package/lib-dist/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Math-Italic.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Math-Italic.woff +0 -0
- package/lib-dist/fonts/KaTeX_Math-Italic.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
- package/lib-dist/fonts/KaTeX_SansSerif-Bold.woff +0 -0
- package/lib-dist/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
- package/lib-dist/fonts/KaTeX_SansSerif-Italic.woff +0 -0
- package/lib-dist/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
- package/lib-dist/fonts/KaTeX_SansSerif-Regular.woff +0 -0
- package/lib-dist/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Script-Regular.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Script-Regular.woff +0 -0
- package/lib-dist/fonts/KaTeX_Script-Regular.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Size1-Regular.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Size1-Regular.woff +0 -0
- package/lib-dist/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Size2-Regular.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Size2-Regular.woff +0 -0
- package/lib-dist/fonts/KaTeX_Size2-Regular.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Size3-Regular.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Size3-Regular.woff +0 -0
- package/lib-dist/fonts/KaTeX_Size3-Regular.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Size4-Regular.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Size4-Regular.woff +0 -0
- package/lib-dist/fonts/KaTeX_Size4-Regular.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Typewriter-Regular.woff +0 -0
- package/lib-dist/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
- package/lib-dist/lib/astro.d.ts +8 -0
- package/lib-dist/lib/astro.d.ts.map +1 -0
- package/lib-dist/lib/astro.js +27 -0
- package/lib-dist/lib/astro.js.map +1 -0
- package/lib-dist/lib/docs-theme.d.ts +7 -0
- package/lib-dist/lib/docs-theme.d.ts.map +1 -0
- package/lib-dist/lib/docs-theme.js +51 -0
- package/lib-dist/lib/docs-theme.js.map +1 -0
- package/lib-dist/lib/host-runtime.d.ts.map +1 -0
- package/lib-dist/{host-runtime.js → lib/host-runtime.js} +4 -2
- package/lib-dist/lib/host-runtime.js.map +1 -0
- package/lib-dist/{host.d.ts → lib/host.d.ts} +20 -0
- package/lib-dist/lib/host.d.ts.map +1 -0
- package/lib-dist/lib/host.js.map +1 -0
- package/lib-dist/lib/index.d.ts +34 -0
- package/lib-dist/lib/index.d.ts.map +1 -0
- package/lib-dist/lib/index.js +27 -0
- package/lib-dist/lib/index.js.map +1 -0
- package/lib-dist/{markdown-model.d.ts → lib/markdown-model.d.ts} +3 -3
- package/lib-dist/lib/markdown-model.d.ts.map +1 -0
- package/lib-dist/lib/markdown-model.js +2030 -0
- package/lib-dist/lib/markdown-model.js.map +1 -0
- package/lib-dist/lib/markdown.d.ts +3 -0
- package/lib-dist/lib/markdown.d.ts.map +1 -0
- package/lib-dist/lib/markdown.js +222 -0
- package/lib-dist/lib/markdown.js.map +1 -0
- package/lib-dist/{schema.d.ts → lib/schema.d.ts} +55 -23
- package/lib-dist/lib/schema.d.ts.map +1 -0
- package/lib-dist/{schema.js → lib/schema.js} +26 -18
- package/lib-dist/lib/schema.js.map +1 -0
- package/lib-dist/{terra/pages/docs/_custom.d.ts → lib/terra/custom-components.d.ts} +2 -2
- package/lib-dist/lib/terra/custom-components.d.ts.map +1 -0
- package/lib-dist/{terra/pages/docs/_custom.js → lib/terra/custom-components.js} +1 -1
- package/lib-dist/lib/terra/custom-components.js.map +1 -0
- package/lib-dist/lib/terra/docs/archive.d.ts +3 -0
- package/lib-dist/lib/terra/docs/archive.d.ts.map +1 -0
- package/lib-dist/lib/terra/docs/archive.js +654 -0
- package/lib-dist/lib/terra/docs/archive.js.map +1 -0
- package/lib-dist/lib/terra/docs/assets.d.ts +26 -0
- package/lib-dist/lib/terra/docs/assets.d.ts.map +1 -0
- package/lib-dist/lib/terra/docs/assets.js +74 -0
- package/lib-dist/lib/terra/docs/assets.js.map +1 -0
- package/lib-dist/lib/terra/docs/attachments.d.ts +4 -0
- package/lib-dist/lib/terra/docs/attachments.d.ts.map +1 -0
- package/lib-dist/lib/terra/docs/attachments.js +5 -0
- package/lib-dist/lib/terra/docs/attachments.js.map +1 -0
- package/lib-dist/lib/terra/docs/editor-dom.d.ts +50 -0
- package/lib-dist/lib/terra/docs/editor-dom.d.ts.map +1 -0
- package/lib-dist/lib/terra/docs/editor-dom.js +236 -0
- package/lib-dist/lib/terra/docs/editor-dom.js.map +1 -0
- package/lib-dist/lib/terra/docs/mutations.d.ts +10 -0
- package/lib-dist/lib/terra/docs/mutations.d.ts.map +1 -0
- package/lib-dist/lib/terra/docs/mutations.js +105 -0
- package/lib-dist/lib/terra/docs/mutations.js.map +1 -0
- package/lib-dist/lib/terra/docs/navigation.d.ts +6 -0
- package/lib-dist/lib/terra/docs/navigation.d.ts.map +1 -0
- package/lib-dist/lib/terra/docs/navigation.js +21 -0
- package/lib-dist/lib/terra/docs/navigation.js.map +1 -0
- package/lib-dist/lib/terra/docs/state.d.ts +185 -0
- package/lib-dist/lib/terra/docs/state.d.ts.map +1 -0
- package/lib-dist/lib/terra/docs/state.js +254 -0
- package/lib-dist/lib/terra/docs/state.js.map +1 -0
- package/lib-dist/lib/terra/docs/toolbar.d.ts +11 -0
- package/lib-dist/lib/terra/docs/toolbar.d.ts.map +1 -0
- package/lib-dist/lib/terra/docs/toolbar.js +41 -0
- package/lib-dist/lib/terra/docs/toolbar.js.map +1 -0
- package/lib-dist/lib/terra/docs/tree.d.ts +15 -0
- package/lib-dist/lib/terra/docs/tree.d.ts.map +1 -0
- package/lib-dist/lib/terra/docs/tree.js +61 -0
- package/lib-dist/lib/terra/docs/tree.js.map +1 -0
- package/lib-dist/{terra/pages/docs/_helpers.d.ts → lib/terra/docs/workspace.d.ts} +6 -8
- package/lib-dist/lib/terra/docs/workspace.d.ts.map +1 -0
- package/lib-dist/{terra/pages/docs/_helpers.js → lib/terra/docs/workspace.js} +39 -28
- package/lib-dist/lib/terra/docs/workspace.js.map +1 -0
- package/lib-dist/lib/terra/flow/_layout.d.ts.map +1 -0
- package/lib-dist/{terra → lib/terra}/flow/_layout.js +16 -6
- package/lib-dist/lib/terra/flow/_layout.js.map +1 -0
- package/lib-dist/{terra → lib/terra}/flow/powerSource.d.ts +1 -2
- package/lib-dist/lib/terra/flow/powerSource.d.ts.map +1 -0
- package/lib-dist/{terra → lib/terra}/flow/powerSource.js +10 -4
- package/lib-dist/lib/terra/flow/powerSource.js.map +1 -0
- package/lib-dist/{terra → lib/terra}/regex.mjs +11 -6
- package/lib-dist/lib/terra/runtime/action-proxy.d.ts +45 -0
- package/lib-dist/lib/terra/runtime/action-proxy.d.ts.map +1 -0
- package/lib-dist/{terra → lib/terra}/runtime/action-proxy.js +1 -1
- package/lib-dist/lib/terra/runtime/action-proxy.js.map +1 -0
- package/lib-dist/lib/terra/runtime/content/block-jsx.d.ts +23 -0
- package/lib-dist/lib/terra/runtime/content/block-jsx.d.ts.map +1 -0
- package/lib-dist/lib/terra/runtime/content/block-jsx.js +225 -0
- package/lib-dist/lib/terra/runtime/content/block-jsx.js.map +1 -0
- package/lib-dist/lib/terra/runtime/content/document-markdown.d.ts +41 -0
- package/lib-dist/lib/terra/runtime/content/document-markdown.d.ts.map +1 -0
- package/lib-dist/lib/terra/runtime/content/document-markdown.js +536 -0
- package/lib-dist/lib/terra/runtime/content/document-markdown.js.map +1 -0
- package/lib-dist/lib/terra/runtime/content/markdown.d.ts +109 -0
- package/lib-dist/lib/terra/runtime/content/markdown.d.ts.map +1 -0
- package/lib-dist/lib/terra/runtime/content/markdown.js +428 -0
- package/lib-dist/lib/terra/runtime/content/markdown.js.map +1 -0
- package/lib-dist/lib/terra/runtime/content.d.ts.map +1 -0
- package/lib-dist/{terra → lib/terra}/runtime/content.js +147 -62
- package/lib-dist/lib/terra/runtime/content.js.map +1 -0
- package/lib-dist/lib/terra/runtime/leaf.d.ts.map +1 -0
- package/lib-dist/{terra → lib/terra}/runtime/leaf.js +1 -1
- package/lib-dist/lib/terra/runtime/leaf.js.map +1 -0
- package/lib-dist/lib/terra/runtime/nodes.d.ts.map +1 -0
- package/lib-dist/{terra → lib/terra}/runtime/nodes.js +103 -31
- package/lib-dist/lib/terra/runtime/nodes.js.map +1 -0
- package/lib-dist/{terra → lib/terra}/runtime/runtime.d.ts +8 -2
- package/lib-dist/lib/terra/runtime/runtime.d.ts.map +1 -0
- package/lib-dist/lib/terra/runtime/runtime.js +86 -0
- package/lib-dist/lib/terra/runtime/runtime.js.map +1 -0
- package/lib-dist/lib/terra/runtime/shared.d.ts.map +1 -0
- package/lib-dist/{terra → lib/terra}/runtime/shared.js +56 -11
- package/lib-dist/lib/terra/runtime/shared.js.map +1 -0
- package/lib-dist/lib/terra/runtime/types.d.ts +529 -0
- package/lib-dist/lib/terra/runtime/types.d.ts.map +1 -0
- package/lib-dist/{terra → lib/terra}/runtime/types.js +28 -2
- package/lib-dist/lib/terra/runtime/types.js.map +1 -0
- package/lib-dist/lib/workspace-types.d.ts +32 -0
- package/lib-dist/lib/workspace-types.d.ts.map +1 -0
- package/lib-dist/lib/workspace-types.js +2 -0
- package/lib-dist/lib/workspace-types.js.map +1 -0
- package/lib-dist/style.css +237 -1
- package/package.json +63 -38
- package/site/astro.config.mjs +67 -0
- package/site/docs-content-plugin.mjs +62 -0
- package/site/src/components/DocsSiteSearch.tsx +108 -0
- package/site/src/lib/catalog.ts +151 -0
- package/site/src/pages/404.astro +38 -0
- package/site/src/pages/[...slug].astro +49 -0
- package/site/src/styles/search.css +56 -0
- package/src/components/NotFound.astro +6 -0
- package/src/components/NotFound.tsx +48 -0
- package/src/{SiteLayout.astro → components/SiteLayout.astro} +17 -5
- package/src/{navigation.tsx → components/navigation.tsx} +3 -1
- package/lib-dist/Docs.d.ts.map +0 -1
- package/lib-dist/Docs.js +0 -60
- package/lib-dist/Docs.js.map +0 -1
- package/lib-dist/LocalDocsWorkspace.d.ts.map +0 -1
- package/lib-dist/LocalDocsWorkspace.js.map +0 -1
- package/lib-dist/SiteLayout.d.ts +0 -30
- package/lib-dist/SiteLayout.d.ts.map +0 -1
- package/lib-dist/SiteLayout.js +0 -34
- package/lib-dist/SiteLayout.js.map +0 -1
- package/lib-dist/StaticWorkspace.d.ts.map +0 -1
- package/lib-dist/StaticWorkspace.js.map +0 -1
- package/lib-dist/_Toolbar.d.ts +0 -7
- package/lib-dist/_Toolbar.d.ts.map +0 -1
- package/lib-dist/_Toolbar.js +0 -85
- package/lib-dist/_Toolbar.js.map +0 -1
- package/lib-dist/blocks.d.ts.map +0 -1
- package/lib-dist/blocks.js.map +0 -1
- package/lib-dist/docs-catalog.d.ts +0 -5
- package/lib-dist/docs-catalog.d.ts.map +0 -1
- package/lib-dist/docs-catalog.js +0 -38
- package/lib-dist/docs-catalog.js.map +0 -1
- package/lib-dist/docs-style.css +0 -31
- package/lib-dist/fonts/README.md +0 -5
- package/lib-dist/host-runtime.d.ts.map +0 -1
- package/lib-dist/host-runtime.js.map +0 -1
- package/lib-dist/host.d.ts.map +0 -1
- package/lib-dist/host.js.map +0 -1
- package/lib-dist/index.d.ts +0 -35
- package/lib-dist/index.d.ts.map +0 -1
- package/lib-dist/index.js +0 -28
- package/lib-dist/index.js.map +0 -1
- package/lib-dist/markdown-model.d.ts.map +0 -1
- package/lib-dist/markdown-model.js +0 -181
- package/lib-dist/markdown-model.js.map +0 -1
- package/lib-dist/markdown.d.ts +0 -3
- package/lib-dist/markdown.d.ts.map +0 -1
- package/lib-dist/markdown.js +0 -83
- package/lib-dist/markdown.js.map +0 -1
- package/lib-dist/navigation.d.ts.map +0 -1
- package/lib-dist/navigation.js.map +0 -1
- package/lib-dist/schema.d.ts.map +0 -1
- package/lib-dist/schema.js.map +0 -1
- package/lib-dist/terra/Workspace.d.ts.map +0 -1
- package/lib-dist/terra/Workspace.js +0 -9
- package/lib-dist/terra/Workspace.js.map +0 -1
- package/lib-dist/terra/editor/TerraContentEditor.d.ts +0 -10
- package/lib-dist/terra/editor/TerraContentEditor.d.ts.map +0 -1
- package/lib-dist/terra/editor/TerraContentEditor.js +0 -47
- package/lib-dist/terra/editor/TerraContentEditor.js.map +0 -1
- package/lib-dist/terra/editor/_blocks.d.ts.map +0 -1
- package/lib-dist/terra/editor/_blocks.js +0 -110
- package/lib-dist/terra/editor/_blocks.js.map +0 -1
- package/lib-dist/terra/editor/docs/_Callout.d.ts.map +0 -1
- package/lib-dist/terra/editor/docs/_Callout.js.map +0 -1
- package/lib-dist/terra/editor/docs/_CodeBlock.d.ts.map +0 -1
- package/lib-dist/terra/editor/docs/_CodeBlock.js.map +0 -1
- package/lib-dist/terra/editor/docs/_DocsCode.d.ts.map +0 -1
- package/lib-dist/terra/editor/docs/_DocsCode.js.map +0 -1
- package/lib-dist/terra/editor/docs/_DocsImage.d.ts.map +0 -1
- package/lib-dist/terra/editor/docs/_DocsImage.js +0 -62
- package/lib-dist/terra/editor/docs/_DocsImage.js.map +0 -1
- package/lib-dist/terra/editor/docs/_Embed.d.ts.map +0 -1
- package/lib-dist/terra/editor/docs/_Embed.js +0 -27
- package/lib-dist/terra/editor/docs/_Embed.js.map +0 -1
- package/lib-dist/terra/editor/docs/_Math.d.ts.map +0 -1
- package/lib-dist/terra/editor/docs/_Math.js.map +0 -1
- package/lib-dist/terra/editor/docs/_Nodes.d.ts.map +0 -1
- package/lib-dist/terra/editor/docs/_Nodes.js +0 -52
- package/lib-dist/terra/editor/docs/_Nodes.js.map +0 -1
- package/lib-dist/terra/editor/docs/_Raw.d.ts.map +0 -1
- package/lib-dist/terra/editor/docs/_Raw.js.map +0 -1
- package/lib-dist/terra/editor/docs/_Table.d.ts.map +0 -1
- package/lib-dist/terra/editor/docs/_Table.js +0 -71
- package/lib-dist/terra/editor/docs/_Table.js.map +0 -1
- package/lib-dist/terra/editor/docs/_Tabs.d.ts.map +0 -1
- package/lib-dist/terra/editor/docs/_Tabs.js.map +0 -1
- package/lib-dist/terra/editor/docs/_TsDocs.d.ts.map +0 -1
- package/lib-dist/terra/editor/docs/_TsDocs.js.map +0 -1
- package/lib-dist/terra/editor/docs/_math_inline.d.ts.map +0 -1
- package/lib-dist/terra/editor/docs/_math_inline.js.map +0 -1
- package/lib-dist/terra/editor/docs/heading.d.ts.map +0 -1
- package/lib-dist/terra/editor/docs/heading.js.map +0 -1
- package/lib-dist/terra/editor/docs/index.d.ts.map +0 -1
- package/lib-dist/terra/editor/docs/index.js.map +0 -1
- package/lib-dist/terra/editor/types.d.ts.map +0 -1
- package/lib-dist/terra/editor/types.js.map +0 -1
- package/lib-dist/terra/flow/Nodes.d.ts.map +0 -1
- package/lib-dist/terra/flow/Nodes.js.map +0 -1
- package/lib-dist/terra/flow/_chrome.d.ts.map +0 -1
- package/lib-dist/terra/flow/_chrome.js.map +0 -1
- package/lib-dist/terra/flow/_layout.d.ts.map +0 -1
- package/lib-dist/terra/flow/_layout.js.map +0 -1
- package/lib-dist/terra/flow/menuContext.d.ts.map +0 -1
- package/lib-dist/terra/flow/menuContext.js.map +0 -1
- package/lib-dist/terra/flow/powerSource.d.ts.map +0 -1
- package/lib-dist/terra/flow/powerSource.js.map +0 -1
- package/lib-dist/terra/pages/docs/_attachments.d.ts.map +0 -1
- package/lib-dist/terra/pages/docs/_attachments.js.map +0 -1
- package/lib-dist/terra/pages/docs/_blocks.d.ts.map +0 -1
- package/lib-dist/terra/pages/docs/_blocks.js.map +0 -1
- package/lib-dist/terra/pages/docs/_custom.d.ts.map +0 -1
- package/lib-dist/terra/pages/docs/_custom.js.map +0 -1
- package/lib-dist/terra/pages/docs/_editable.d.ts.map +0 -1
- package/lib-dist/terra/pages/docs/_editable.js.map +0 -1
- package/lib-dist/terra/pages/docs/_export-dialog.d.ts.map +0 -1
- package/lib-dist/terra/pages/docs/_export-dialog.js.map +0 -1
- package/lib-dist/terra/pages/docs/_helpers.d.ts.map +0 -1
- package/lib-dist/terra/pages/docs/_helpers.js.map +0 -1
- package/lib-dist/terra/pages/docs/_icons.d.ts.map +0 -1
- package/lib-dist/terra/pages/docs/_icons.js.map +0 -1
- package/lib-dist/terra/pages/docs/_main.d.ts.map +0 -1
- package/lib-dist/terra/pages/docs/_main.js +0 -1959
- package/lib-dist/terra/pages/docs/_main.js.map +0 -1
- package/lib-dist/terra/pages/docs/_sidebar.d.ts.map +0 -1
- package/lib-dist/terra/pages/docs/_sidebar.js +0 -2450
- package/lib-dist/terra/pages/docs/_sidebar.js.map +0 -1
- package/lib-dist/terra/pages/docs/_toolbar.d.ts.map +0 -1
- package/lib-dist/terra/pages/docs/_toolbar.js.map +0 -1
- package/lib-dist/terra/pages/docs/_tree.d.ts.map +0 -1
- package/lib-dist/terra/pages/docs/_tree.js.map +0 -1
- package/lib-dist/terra/runtime/action-proxy.d.ts +0 -5
- package/lib-dist/terra/runtime/action-proxy.d.ts.map +0 -1
- package/lib-dist/terra/runtime/action-proxy.js.map +0 -1
- package/lib-dist/terra/runtime/content.d.ts.map +0 -1
- package/lib-dist/terra/runtime/content.js.map +0 -1
- package/lib-dist/terra/runtime/leaf.d.ts.map +0 -1
- package/lib-dist/terra/runtime/leaf.js.map +0 -1
- package/lib-dist/terra/runtime/nodes.d.ts.map +0 -1
- package/lib-dist/terra/runtime/nodes.js.map +0 -1
- package/lib-dist/terra/runtime/runtime.d.ts.map +0 -1
- package/lib-dist/terra/runtime/runtime.js +0 -50
- package/lib-dist/terra/runtime/runtime.js.map +0 -1
- package/lib-dist/terra/runtime/shared.d.ts.map +0 -1
- package/lib-dist/terra/runtime/shared.js.map +0 -1
- package/lib-dist/terra/runtime/types.d.ts +0 -266
- package/lib-dist/terra/runtime/types.d.ts.map +0 -1
- package/lib-dist/terra/runtime/types.js.map +0 -1
- package/lib-dist/terra/runtime/ui.d.ts.map +0 -1
- package/lib-dist/terra/runtime/ui.js +0 -16
- package/lib-dist/terra/runtime/ui.js.map +0 -1
- package/lib-dist/workspace.d.ts +0 -78
- package/lib-dist/workspace.d.ts.map +0 -1
- package/lib-dist/workspace.js +0 -151
- package/lib-dist/workspace.js.map +0 -1
- package/src/style.css +0 -733
- /package/lib-dist/{fonts → assets/fonts}/Avara-Bold.woff2 +0 -0
- /package/lib-dist/{fonts → assets/fonts}/Avara-BoldItalic.woff2 +0 -0
- /package/lib-dist/{fonts → assets/fonts}/OFL-1.1.txt +0 -0
- /package/lib-dist/{blocks.d.ts → components/blocks.d.ts} +0 -0
- /package/lib-dist/{navigation.js → components/navigation.js} +0 -0
- /package/lib-dist/{terra → components/terra}/editor/docs/_CodeBlock.d.ts +0 -0
- /package/lib-dist/{terra → components/terra}/editor/docs/index.d.ts +0 -0
- /package/lib-dist/{terra → components/terra}/editor/docs/index.js +0 -0
- /package/lib-dist/{terra → components/terra}/flow/menuContext.d.ts +0 -0
- /package/lib-dist/{terra → components/terra}/flow/menuContext.js +0 -0
- /package/lib-dist/{terra → components/terra}/pages/docs/_blocks.d.ts +0 -0
- /package/lib-dist/{terra → components/terra}/pages/docs/_icons.d.ts +0 -0
- /package/lib-dist/{terra → components/terra}/pages/docs/_icons.js +0 -0
- /package/lib-dist/{host-runtime.d.ts → lib/host-runtime.d.ts} +0 -0
- /package/lib-dist/{host.js → lib/host.js} +0 -0
- /package/lib-dist/{terra → lib/terra}/flow/_layout.d.ts +0 -0
- /package/lib-dist/{terra → lib/terra}/runtime/content.d.ts +0 -0
- /package/lib-dist/{terra → lib/terra}/runtime/leaf.d.ts +0 -0
- /package/lib-dist/{terra → lib/terra}/runtime/nodes.d.ts +0 -0
- /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 '
|
|
13
|
-
import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
|
|
14
|
-
import { layoutGraph } from '
|
|
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
|
|
18
|
-
import { ButtonGroup } from '@terra-symposium/styling/ui
|
|
19
|
-
import { Card, CardDescription } from '@terra-symposium/styling/ui
|
|
20
|
-
import { ErrorBoundary } from '../
|
|
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
|
|
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 = {
|
|
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 {
|
|
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({
|
|
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) ||
|
|
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(
|
|
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(
|
|
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) ||
|
|
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 ||
|
|
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) ??
|
|
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({
|
|
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)
|
|
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 ??
|
|
243
|
-
|
|
244
|
-
|
|
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 = {
|
|
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 {
|
|
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 '
|
|
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:
|
|
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: {
|
|
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:
|
|
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:
|
|
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:
|
|
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'
|
|
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:
|
|
422
|
-
{ label: 'Zoom in', icon: _jsx(ZoomInIcon, { "aria-hidden":
|
|
423
|
-
{ label: 'Zoom out', icon: _jsx(ZoomOutIcon, { "aria-hidden":
|
|
424
|
-
{ label: 'Fit view', icon: _jsx(FitToScreenIcon, { "aria-hidden":
|
|
425
|
-
].map(({ label: l, icon: i, onClick: o }) => (_jsx(Button, { variant:
|
|
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:
|
|
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 ||
|
|
470
|
-
|
|
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)
|
|
479
|
-
|
|
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
|
|
482
|
-
|
|
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
|
|
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":
|
|
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 => ({
|
|
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:
|
|
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
|
-
? {
|
|
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?.([
|
|
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
|
-
? {
|
|
704
|
+
? {
|
|
705
|
+
onResizeEnd: (_id, params) => onResizeEnd?.(n.id, params),
|
|
706
|
+
}
|
|
573
707
|
: {}),
|
|
574
708
|
},
|
|
575
|
-
})), edges: els.edges, nodeTypes: useMemo(() => ({
|
|
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
|
|
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:
|
|
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'
|
|
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'
|
|
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
|
-
? {
|
|
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'
|
|
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
|
|
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 ||
|
|
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 [
|
|
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
|
-
? {
|
|
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
|
|
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, {
|
|
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
|
|
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 ??
|
|
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) &&
|
|
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
|
|
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({
|
|
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:
|
|
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:
|
|
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 &&
|
|
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:
|
|
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:
|
|
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
|
|
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:
|
|
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
|