@terra-symposium/docs 0.1.17 → 0.1.71
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 +3 -3
- 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} +100 -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} +2 -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 +15 -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 +10 -6
- 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 +110 -44
- 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 +44 -11
- 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 +26 -14
- 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 +35 -14
- 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 +15 -13
- 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 +3 -3
- package/lib-dist/components/terra/flow/Nodes.d.ts.map +1 -0
- package/lib-dist/{terra → components/terra}/flow/Nodes.js +211 -104
- package/lib-dist/components/terra/flow/Nodes.js.map +1 -0
- package/lib-dist/{terra → components/terra}/flow/_chrome.d.ts +9 -9
- package/lib-dist/components/terra/flow/_chrome.d.ts.map +1 -0
- package/lib-dist/{terra → components/terra}/flow/_chrome.js +325 -114
- 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 +371 -127
- 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 +39 -28
- package/lib-dist/components/terra/pages/docs/_blocks.js.map +1 -0
- package/lib-dist/{terra → components/terra}/pages/docs/_editable.d.ts +3 -3
- package/lib-dist/components/terra/pages/docs/_editable.d.ts.map +1 -0
- package/lib-dist/{terra → components/terra}/pages/docs/_editable.js +81 -43
- 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 +13 -13
- 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 +4 -5
- package/lib-dist/components/terra/pages/docs/_toolbar.d.ts.map +1 -0
- package/lib-dist/{terra → components/terra}/pages/docs/_toolbar.js +312 -343
- package/lib-dist/components/terra/pages/docs/_toolbar.js.map +1 -0
- package/lib-dist/{terra → components/terra}/pages/docs/_tree.d.ts +4 -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/{docs-catalog.d.ts → lib/docs-catalog.d.ts} +1 -1
- package/lib-dist/lib/docs-catalog.d.ts.map +1 -0
- package/lib-dist/lib/docs-catalog.js +75 -0
- package/lib-dist/lib/docs-catalog.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 +2031 -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 +186 -0
- package/lib-dist/lib/terra/docs/state.d.ts.map +1 -0
- package/lib-dist/lib/terra/docs/state.js +255 -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} +7 -6
- 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 -27
- 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/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 +29 -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 +34 -16
- package/src/components/NotFound.astro +6 -0
- package/src/components/NotFound.tsx +48 -0
- package/src/{SiteLayout.astro → components/SiteLayout.astro} +8 -4
- package/src/{navigation.tsx → components/navigation.tsx} +2 -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.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}/flow/powerSource.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';
|
|
16
|
+
import { Background, BackgroundVariant, BaseEdge, Controls, EdgeLabelRenderer, Handle, Position as HandlePos, ReactFlow, ReactFlowProvider, } from '@xyflow/react';
|
|
17
17
|
import { Button } from '@terra-symposium/styling/ui/terra-original';
|
|
18
18
|
import { ButtonGroup } from '@terra-symposium/styling/ui/terra-original';
|
|
19
19
|
import { Card, CardDescription } from '@terra-symposium/styling/ui/terra-original';
|
|
20
|
-
import { ErrorBoundary } from '../
|
|
21
|
-
import { FitToScreen as FitToScreenIcon, MagicWand as MagicWandIcon, ZoomIn as ZoomInIcon, ZoomOut as ZoomOutIcon } from '@carbon/icons-react';
|
|
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
22
|
import { Textarea } from '@terra-symposium/styling/ui/terra-original';
|
|
23
|
-
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@terra-symposium/styling/ui/terra-original';
|
|
23
|
+
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from '@terra-symposium/styling/ui/terra-original';
|
|
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
|