@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,18 +8,18 @@ IMPORTS
|
|
|
8
8
|
//////////////////////////////////////////////////*/
|
|
9
9
|
// API
|
|
10
10
|
import katex from 'katex';
|
|
11
|
-
import { applyEdgeChanges, applyNodeChanges, useNodesInitialized, useReactFlow } from '@xyflow/react';
|
|
12
|
-
import { cn, createTrace, errorLog, isRec, validateType, warn as logWarn } from '
|
|
11
|
+
import { applyEdgeChanges, applyNodeChanges, useNodesInitialized, useReactFlow, } from '@xyflow/react';
|
|
12
|
+
import { cn, createTrace, errorLog, isRec, validateType, warn as logWarn, } from '../../../lib/terra/runtime/runtime.js';
|
|
13
13
|
import { getCustomPos, getGroupId, getNodeSize, layoutGraph, useEditor } from './_chrome.js';
|
|
14
14
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
15
15
|
// COMPONENTS
|
|
16
16
|
import React from 'react';
|
|
17
17
|
import { AlignHorizontalCenter as AlignHorizontalCenterIcon, AlignHorizontalLeft as AlignHorizontalLeftIcon, AlignHorizontalRight as AlignHorizontalRightIcon, AlignVerticalBottom as AlignVerticalBottomIcon, AlignVerticalCenter as AlignVerticalCenterIcon, AlignVerticalTop as AlignVerticalTopIcon, Choices as DecisionIcon, DataCategorical as TypeIcon, DataStructured as DataIcon, DistributeHorizontalCenter as DistributeHorizontalCenterIcon, DistributeHorizontalLeft as DistributeHorizontalLeftIcon, DistributeHorizontalRight as DistributeHorizontalRightIcon, DistributeVerticalBottom as DistributeVerticalBottomIcon, DistributeVerticalCenter as DistributeVerticalCenterIcon, DistributeVerticalTop as DistributeVerticalTopIcon, Document as NoteIcon, Edit as EditIcon, MagicWand as WandIcon, Maximize as MaximizeIcon, ObjectStorage as GroupIcon, PlayOutline as OriginIcon, RadioButton as TerminatorIcon, Redo as RedoIcon, StopOutline as TerminalIcon, Table as ErdIcon, Task as ProcessIcon, TrashCan as TrashIcon, Undo as UndoIcon, } from '@carbon/icons-react';
|
|
18
|
-
import { Background, ControlButton, Controls, MarkerType, NodeResizer, ReactFlow, ReactFlowProvider } from '@xyflow/react';
|
|
19
|
-
import { Button } from '@terra-symposium/styling/ui
|
|
20
|
-
import { ButtonGroup } from '@terra-symposium/styling/ui
|
|
21
|
-
import { ContextMenu, ContextMenuContent, ContextMenuItem, ContextMenuSeparator, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger } from '@terra-symposium/styling/ui
|
|
22
|
-
import { ErrorBoundary } from '../
|
|
18
|
+
import { Background, ControlButton, Controls, MarkerType, NodeResizer, ReactFlow, ReactFlowProvider, } from '@xyflow/react';
|
|
19
|
+
import { Button } from '@terra-symposium/styling/ui';
|
|
20
|
+
import { ButtonGroup } from '@terra-symposium/styling/ui';
|
|
21
|
+
import { ContextMenu, ContextMenuContent, ContextMenuItem, ContextMenuSeparator, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, } from '@terra-symposium/styling/ui';
|
|
22
|
+
import { ErrorBoundary } from '../ui.js';
|
|
23
23
|
import { Handles, SkeletonCard, ZoomControls } from './_chrome.js';
|
|
24
24
|
/*//////////////////////////////////////////////////
|
|
25
25
|
CONFIG
|
|
@@ -96,10 +96,10 @@ NODE TYPES
|
|
|
96
96
|
* @return Resizable group frame, title bar, and group handles.
|
|
97
97
|
*/
|
|
98
98
|
export function GroupNode({ data, selected }) {
|
|
99
|
-
return (_jsxs(ErrorBoundary, { name:
|
|
99
|
+
return (_jsxs(ErrorBoundary, { name: "GroupNode", children: [_jsx(NodeResizer, { color: "#ef4444", isVisible: selected && data.editable === true, minWidth: 160, minHeight: 100, onResizeEnd: (_e, p) => {
|
|
100
100
|
if (data.id)
|
|
101
101
|
data.onResizeEnd?.(data.id, p);
|
|
102
|
-
} }), _jsxs("div", { className: cn('size-full text-primary-11 transition-all', selected && `rounded-lg ${NODE_CLASS.selected}`, data.isDragTarget && 'ring-dashed rounded-lg bg-primary-3/20 ring-2 ring-primary-6'), children: [_jsx("div", { className:
|
|
102
|
+
} }), _jsxs("div", { className: cn('size-full text-primary-11 transition-all', selected && `rounded-lg ${NODE_CLASS.selected}`, data.isDragTarget && 'ring-dashed rounded-lg bg-primary-3/20 ring-2 ring-primary-6'), children: [_jsx("div", { className: "border-b border-primary-6 pb-2 text-lg font-bold text-primary-12", children: data.title }), _jsx(Handles, { editable: data.editable === true, ...data.requiredHandles })] })] }));
|
|
103
103
|
}
|
|
104
104
|
/**
|
|
105
105
|
* Creates a higher-order flowchart node renderer with specified styling.
|
|
@@ -112,7 +112,7 @@ export function GroupNode({ data, selected }) {
|
|
|
112
112
|
function createNode(className, inner) {
|
|
113
113
|
return function NodeCard({ data, selected }) {
|
|
114
114
|
const Element = data.onClick ? 'button' : data.href ? 'a' : 'div';
|
|
115
|
-
return (_jsxs(Element, { ...(Element === 'button' ? { type: 'button' } : {}), ...(Element === 'a' ? { href: data.href } : {}), onClick: data.onClick, className: cn('relative block min-w-40 text-pretty p-2 text-center text-sm font-normal !no-underline shadow-md transition-shadow', selected && 'ring-2 ring-red-500 ring-offset-2 ring-offset-transparent', className), children: [_jsx(Handles, { editable: data.editable === true, sources: data.requiredHandles?.sources ?? [], tgts: data.requiredHandles?.tgts ?? [] }), _jsx("span", { className: inner, children: data.title })] }));
|
|
115
|
+
return (_jsxs(Element, { ...(Element === 'button' ? { type: 'button' } : {}), ...(Element === 'a' ? { href: data.href } : {}), ...(Element === 'a' ? { 'data-docs-flow-node-link': '' } : {}), onClick: data.onClick, className: cn('relative block min-w-40 text-pretty p-2 text-center text-sm font-normal !no-underline shadow-md transition-shadow', selected && 'ring-2 ring-red-500 ring-offset-2 ring-offset-transparent', className), children: [_jsx(Handles, { editable: data.editable === true, sources: data.requiredHandles?.sources ?? [], tgts: data.requiredHandles?.tgts ?? [] }), _jsx("span", { className: inner, children: data.title })] }));
|
|
116
116
|
};
|
|
117
117
|
}
|
|
118
118
|
/**
|
|
@@ -125,17 +125,17 @@ function createNode(className, inner) {
|
|
|
125
125
|
*
|
|
126
126
|
* @return Sticky note styled container.
|
|
127
127
|
*/
|
|
128
|
-
export function NoteNode({ id, data, selected }) {
|
|
129
|
-
return (_jsxs(ErrorBoundary, { name:
|
|
128
|
+
export function NoteNode({ id, data, selected, }) {
|
|
129
|
+
return (_jsxs(ErrorBoundary, { name: "NoteNode", children: [_jsx(NodeResizer, { color: "#ef4444", isVisible: selected && data.editable === true, minWidth: 128, minHeight: 128, onResizeEnd: (_e, p) => {
|
|
130
130
|
if (data.id)
|
|
131
131
|
data.onResizeEnd?.(data.id, p);
|
|
132
|
-
} }), _jsxs("div", { className: cn("relative size-full min-h-32 min-w-32 before:absolute before:left-[5px] before:top-[30%] before:h-3/4 before:w-[90%] before:bg-black/25 before:shadow-[rgba(0,0,0,0.5)_-2px_2px_15px] before:content-['']", selected && NODE_CLASS.selected), children: [_jsx("svg", { width:
|
|
132
|
+
} }), _jsxs("div", { className: cn("relative size-full min-h-32 min-w-32 before:absolute before:left-[5px] before:top-[30%] before:h-3/4 before:w-[90%] before:bg-black/25 before:shadow-[rgba(0,0,0,0.5)_-2px_2px_15px] before:content-['']", selected && NODE_CLASS.selected), children: [_jsx(Handles, { editable: data.editable === true, sources: data.requiredHandles?.sources ?? [], tgts: data.requiredHandles?.tgts ?? [] }), _jsx("svg", { width: "0", height: "0", className: "absolute", children: _jsx("defs", { children: _jsx("clipPath", { id: `sticky-${id}`, clipPathUnits: "objectBoundingBox", children: _jsx("path", { d: "M 1 0 Q 1 0.69, 0.97 0.96 0.97 0.96, 0 0.96 Q 0.04 0.69, 0.04 0 0.04 0, 1 0" }) }) }) }), _jsx("div", { className: "relative flex size-full min-h-32 min-w-32 items-center justify-center bg-yellow-300 p-5 pt-3 text-center text-sm font-normal text-yellow-950 shadow-md", style: { clipPath: `url(#sticky-${id})` }, children: data.title })] })] }));
|
|
133
133
|
}
|
|
134
134
|
export const NODE_TYPES = {
|
|
135
135
|
erd: function ErdNode({ data, selected }) {
|
|
136
136
|
const compact = data.compact === true;
|
|
137
137
|
const Element = data.onClick ? 'button' : data.href ? 'a' : 'div';
|
|
138
|
-
return (_jsxs(Element, { type: Element === 'button' ? 'button' : undefined, href: Element === 'a' ? data.href : undefined, onClick: data.onClick, className: cn('block max-h-96 w-full overflow-y-scroll rounded-md border-2 border-primary-6 bg-primary-2 text-primary-12 !no-underline shadow-lg transition-shadow', compact ? 'text-xs' : 'text-sm', selected && NODE_CLASS.selected), children: [_jsx("div", { className: cn('border-b-2 border-primary-6 bg-primary-3 text-center font-bold text-primary-12', compact ? 'px-2 py-0.5 text-sm' : 'px-3 py-2 text-lg'), children: data.title }), data.attributes && data.attributes.length > 0 && (_jsx("ul", { className: cn('my-0', compact ? 'gap-y-0.5 p-0.5 px-1.5' : 'p-2'), children: data.attributes.map(a => (_jsxs("li", { className: cn('grid grid-cols-[auto,1fr] font-mono', compact ? 'my-0 gap-x-2 leading-tight' : 'gap-x-3 gap-y-0'), children: [_jsx("span", { className:
|
|
138
|
+
return (_jsxs(Element, { type: Element === 'button' ? 'button' : undefined, href: Element === 'a' ? data.href : undefined, "data-docs-flow-node-link": Element === 'a' ? '' : undefined, onClick: data.onClick, className: cn('block max-h-96 w-full overflow-y-scroll rounded-md border-2 border-primary-6 bg-primary-2 text-primary-12 !no-underline shadow-lg transition-shadow', compact ? 'text-xs' : 'text-sm', selected && NODE_CLASS.selected), children: [_jsx("div", { className: cn('border-b-2 border-primary-6 bg-primary-3 text-center font-bold text-primary-12', compact ? 'px-2 py-0.5 text-sm' : 'px-3 py-2 text-lg'), children: data.title }), data.attributes && data.attributes.length > 0 && (_jsx("ul", { className: cn('my-0', compact ? 'gap-y-0.5 p-0.5 px-1.5' : 'p-2'), children: data.attributes.map((a) => (_jsxs("li", { className: cn('grid grid-cols-[auto,1fr] font-mono', compact ? 'my-0 gap-x-2 leading-tight' : 'gap-x-3 gap-y-0'), children: [_jsx("span", { className: "shrink-0", children: a.name }), (() => {
|
|
139
139
|
const inlineMath = a.type.match(/^\$(?!\$)([\s\S]+)\$$/);
|
|
140
140
|
const displayMath = a.type.match(/^\$\$([\s\S]+)\$\$$/);
|
|
141
141
|
if (!inlineMath && !displayMath)
|
|
@@ -179,29 +179,34 @@ CANVAS
|
|
|
179
179
|
*/
|
|
180
180
|
function syncGraph(v, r, dir, proximityConnect, editable, arcControls, onResizeEnd) {
|
|
181
181
|
const sNodes = Array.isArray(v) ? v : [];
|
|
182
|
-
const nodesById = new Map(sNodes.map(_node => [_node.id, _node]));
|
|
182
|
+
const nodesById = new Map(sNodes.map((_node) => [_node.id, _node]));
|
|
183
183
|
const handlesByNodeId = new Map();
|
|
184
184
|
const syncedGraph = {
|
|
185
185
|
edges: (Array.isArray(r) ? r : [])
|
|
186
|
-
.filter(_e => nodesById.has(_e.source) && nodesById.has(_e.target))
|
|
187
|
-
.map(e => {
|
|
186
|
+
.filter((_e) => nodesById.has(_e.source) && nodesById.has(_e.target))
|
|
187
|
+
.map((e) => {
|
|
188
188
|
const edgeData = e.data ?? {};
|
|
189
189
|
const l = isRec(e) ? e : {};
|
|
190
190
|
const arrowHead = edgeData.arrowHead ?? l['arrowHead'] ?? false;
|
|
191
191
|
const srcOverride = edgeData.srcHandleOverride ?? l['srcHandleOverride'];
|
|
192
192
|
const tgtOverride = edgeData.tgtHandleOverride ?? l['tgtHandleOverride'];
|
|
193
193
|
const strokeStyle = edgeData.strokeStyle ?? 'solid';
|
|
194
|
-
const markerEnd = arrowHead
|
|
194
|
+
const markerEnd = arrowHead
|
|
195
|
+
? { type: MarkerType.ArrowClosed, width: 20, height: 20 }
|
|
196
|
+
: undefined;
|
|
195
197
|
let srcHandle;
|
|
196
198
|
let tgtHandle;
|
|
197
199
|
if (arcControls) {
|
|
198
200
|
// Arc nodes use named ports, not the positional ports used by docs flowcharts.
|
|
199
|
-
srcHandle =
|
|
201
|
+
srcHandle =
|
|
202
|
+
e.sourceHandle && !HANDLES.includes(e.sourceHandle) ? e.sourceHandle : 'default';
|
|
200
203
|
tgtHandle = 'inbound';
|
|
201
204
|
}
|
|
202
205
|
else if (proximityConnect) {
|
|
203
|
-
const dx = (nodesById.get(e.target).position?.x ?? 0) -
|
|
204
|
-
|
|
206
|
+
const dx = (nodesById.get(e.target).position?.x ?? 0) -
|
|
207
|
+
(nodesById.get(e.source).position?.x ?? 0);
|
|
208
|
+
const dy = (nodesById.get(e.target).position?.y ?? 0) -
|
|
209
|
+
(nodesById.get(e.source).position?.y ?? 0);
|
|
205
210
|
const horizontal = Math.abs(dx) > Math.abs(dy);
|
|
206
211
|
srcHandle = horizontal ? (dx > 0 ? 'right' : 'left') : dy > 0 ? 'bottom' : 'top';
|
|
207
212
|
tgtHandle = horizontal ? (dx > 0 ? 'left' : 'right') : dy > 0 ? 'top' : 'bottom';
|
|
@@ -224,22 +229,34 @@ function syncGraph(v, r, dir, proximityConnect, editable, arcControls, onResizeE
|
|
|
224
229
|
}
|
|
225
230
|
const updatedEdge = {
|
|
226
231
|
...e,
|
|
227
|
-
data: {
|
|
232
|
+
data: {
|
|
233
|
+
...edgeData,
|
|
234
|
+
arrowHead,
|
|
235
|
+
srcHandleOverride: srcOverride,
|
|
236
|
+
tgtHandleOverride: tgtOverride,
|
|
237
|
+
strokeStyle,
|
|
238
|
+
},
|
|
228
239
|
sourceHandle: srcHandle,
|
|
229
240
|
targetHandle: tgtHandle,
|
|
230
|
-
style: {
|
|
241
|
+
style: {
|
|
242
|
+
...e.style,
|
|
243
|
+
strokeDasharray: strokeStyle === 'dashed' ? '5 5' : strokeStyle === 'dotted' ? '2 2' : undefined,
|
|
244
|
+
},
|
|
231
245
|
};
|
|
232
246
|
if (markerEnd)
|
|
233
247
|
updatedEdge.markerEnd = markerEnd;
|
|
234
248
|
return updatedEdge;
|
|
235
249
|
}),
|
|
236
|
-
nodes: sNodes.map(n => {
|
|
250
|
+
nodes: sNodes.map((n) => {
|
|
237
251
|
const handles = handlesByNodeId.get(n.id);
|
|
238
252
|
const resGroupId = getGroupId(n);
|
|
239
253
|
return {
|
|
240
254
|
...n,
|
|
241
255
|
parentId: undefined, // enforce flat absolute structure globally
|
|
242
|
-
className: cn(validateType(['string'], n.className) || Array.isArray(n.className)
|
|
256
|
+
className: cn(validateType(['string'], n.className) || Array.isArray(n.className)
|
|
257
|
+
? n.className
|
|
258
|
+
: undefined, n.type === 'group' &&
|
|
259
|
+
'rounded-lg border !border-primary-6 !bg-primary-2 !text-primary-12'),
|
|
243
260
|
zIndex: n.type === 'group' ? -10 : 10,
|
|
244
261
|
nodeOrigin: n.type === 'group' ? [0, 0] : [0.5, 0.5],
|
|
245
262
|
data: {
|
|
@@ -248,12 +265,21 @@ function syncGraph(v, r, dir, proximityConnect, editable, arcControls, onResizeE
|
|
|
248
265
|
editable,
|
|
249
266
|
...(resGroupId ? { groupId: resGroupId } : {}),
|
|
250
267
|
...(onResizeEnd ? { onResizeEnd } : {}),
|
|
251
|
-
requiredHandles: {
|
|
268
|
+
requiredHandles: {
|
|
269
|
+
sources: editable ? HANDLES : Array.from(handles?.sources ?? []),
|
|
270
|
+
targets: editable ? HANDLES : Array.from(handles?.tgts ?? []),
|
|
271
|
+
},
|
|
252
272
|
},
|
|
253
273
|
};
|
|
254
274
|
}),
|
|
255
275
|
};
|
|
256
|
-
return {
|
|
276
|
+
return {
|
|
277
|
+
nodes: [
|
|
278
|
+
...syncedGraph.nodes.filter((n) => n.type === 'group'),
|
|
279
|
+
...syncedGraph.nodes.filter((n) => n.type !== 'group'),
|
|
280
|
+
],
|
|
281
|
+
edges: syncedGraph.edges,
|
|
282
|
+
};
|
|
257
283
|
}
|
|
258
284
|
const FLOW_COMPONENTS = {
|
|
259
285
|
nodeTypes: NODE_TYPES,
|
|
@@ -303,7 +329,7 @@ const FLOW_COMPONENTS = {
|
|
|
303
329
|
*/
|
|
304
330
|
Canvas({ flow, nodeTypes, edgeTypes, nodeLabels, onNodeClick, onNodesChange, onEdgesChange, onConnect, onEdgeDoubleClick, onAddNode, onAddContent, lockedTypes, allowedTypes, onGroupNodes, onUngroupNodes, onDeleteSelected, onAlignNodes, onDistributeNodes, onRenameNode, onChangeNodeType, onChangeEdgeStyle, onDeleteEdge, onAutoLayout, onReady, interactive, editable, isFocused, height, showBg, showCtrls, arcControls, readyWhenEmpty, }) {
|
|
305
331
|
// STATES
|
|
306
|
-
const { fitView, screenToFlowPosition: screenToFlowPos, getIntersectingNodes, updateNodeData, getNodes } = useReactFlow();
|
|
332
|
+
const { fitView, screenToFlowPosition: screenToFlowPos, getIntersectingNodes, updateNodeData, getNodes, } = useReactFlow();
|
|
307
333
|
const nodesInit = useNodesInitialized();
|
|
308
334
|
const hasInitialLayout = useRef(false);
|
|
309
335
|
const lastFit = useRef('');
|
|
@@ -322,7 +348,7 @@ const FLOW_COMPONENTS = {
|
|
|
322
348
|
}
|
|
323
349
|
if (!nodesInit)
|
|
324
350
|
return;
|
|
325
|
-
const key = `${height}:${flow.nodes.map(_node => _node.id).join(',')}`;
|
|
351
|
+
const key = `${height}:${flow.nodes.map((_node) => _node.id).join(',')}`;
|
|
326
352
|
if (lastFit.current === key)
|
|
327
353
|
return;
|
|
328
354
|
const frame = { id: 0 };
|
|
@@ -348,8 +374,8 @@ const FLOW_COMPONENTS = {
|
|
|
348
374
|
onReady?.();
|
|
349
375
|
}, [onReady, ready]);
|
|
350
376
|
// HELPERS
|
|
351
|
-
const selNodes = flow.nodes.filter(n => n.selected);
|
|
352
|
-
const nodesMap = React.useMemo(() => new Map(flow.nodes.map(n => [n.id, n])), [flow.nodes]);
|
|
377
|
+
const selNodes = flow.nodes.filter((n) => n.selected);
|
|
378
|
+
const nodesMap = React.useMemo(() => new Map(flow.nodes.map((n) => [n.id, n])), [flow.nodes]);
|
|
353
379
|
const tgtNode = React.useMemo(() => (menuCtx.type === '_node' && menuCtx.id ? nodesMap.get(menuCtx.id) : undefined), [nodesMap, menuCtx.type, menuCtx.id]);
|
|
354
380
|
/**
|
|
355
381
|
* Checks whether the n is locked.
|
|
@@ -375,12 +401,12 @@ const FLOW_COMPONENTS = {
|
|
|
375
401
|
return locked(tgtNode);
|
|
376
402
|
}, [flow.nodes.length, lockedTypes, menuCtx, tgtNode]);
|
|
377
403
|
// RENDER
|
|
378
|
-
return (_jsxs(ContextMenu, { onOpenChange: o => {
|
|
404
|
+
return (_jsxs(ContextMenu, { onOpenChange: (o) => {
|
|
379
405
|
trace('menu.state', { open: o, context: menuCtx });
|
|
380
|
-
}, children: [_jsx(ContextMenuTrigger, { asChild: true, onContextMenu: _e => {
|
|
406
|
+
}, children: [_jsx(ContextMenuTrigger, { asChild: true, onContextMenu: (_e) => {
|
|
381
407
|
lastPos.current = { x: _e.clientX, y: _e.clientY };
|
|
382
408
|
trace('menu.open.request', { position: lastPos.current });
|
|
383
|
-
}, children: _jsxs("div", { className:
|
|
409
|
+
}, children: _jsxs("div", { className: "relative z-20 size-full", ref: reactFlowWrapper, children: [!ready && (_jsx("div", { className: "pointer-events-none absolute inset-0 z-10 rounded-md border border-primary-6 bg-primary-1/95", "aria-label": "Loading nodes", children: _jsx("div", { className: "absolute inset-0 flex items-center justify-center", children: _jsxs("div", { className: "flex flex-col items-center gap-8", children: [_jsx(SkeletonCard, {}), _jsx(SkeletonCard, { className: "translate-x-16 animate-pulse opacity-75" }), _jsx(SkeletonCard, { className: "-translate-x-12 animate-pulse opacity-50" })] }) }) })), _jsxs(ReactFlow, { nodes: flow.nodes, edges: flow.edges, onNodesChange: onNodesChange, onEdgesChange: onEdgesChange, onConnect: onConnect, onEdgeDoubleClick: onEdgeDoubleClick, onNodeContextMenu: (_e, _node) => {
|
|
384
410
|
trace('menu.n', { id: _node.id, type: _node.type });
|
|
385
411
|
setMenuCtx({ type: '_node', id: _node.id });
|
|
386
412
|
}, ...(onNodeClick
|
|
@@ -401,7 +427,7 @@ const FLOW_COMPONENTS = {
|
|
|
401
427
|
const primaryNode = draggedNodes[0] || _node;
|
|
402
428
|
if (primaryNode.type === 'group')
|
|
403
429
|
return;
|
|
404
|
-
const groupId = getIntersectingNodes(primaryNode).find(n => n.type === 'group')?.id ?? null;
|
|
430
|
+
const groupId = getIntersectingNodes(primaryNode).find((n) => n.type === 'group')?.id ?? null;
|
|
405
431
|
if (groupId !== dragTgtGroup.current) {
|
|
406
432
|
if (dragTgtGroup.current)
|
|
407
433
|
updateNodeData(dragTgtGroup.current, { isDragTarget: false });
|
|
@@ -416,26 +442,32 @@ const FLOW_COMPONENTS = {
|
|
|
416
442
|
const tgtGroupId = dragTgtGroup.current;
|
|
417
443
|
updateNodeData(tgtGroupId, { isDragTarget: false });
|
|
418
444
|
dragTgtGroup.current = null;
|
|
419
|
-
const groupNode = getNodes().find(n => n.id === tgtGroupId);
|
|
420
|
-
const nodesToGroup = draggedNodes.filter(n => n.type !== 'group' && n.id !== tgtGroupId);
|
|
445
|
+
const groupNode = getNodes().find((n) => n.id === tgtGroupId);
|
|
446
|
+
const nodesToGroup = draggedNodes.filter((n) => n.type !== 'group' && n.id !== tgtGroupId);
|
|
421
447
|
if (groupNode && nodesToGroup.length > 0)
|
|
422
448
|
onGroupNodes(groupNode, nodesToGroup, groupNode.position.x, groupNode.position.y);
|
|
423
449
|
}
|
|
424
450
|
else {
|
|
425
|
-
const nodesToUngroup = draggedNodes.filter(n => getGroupId(n) && n.type !== 'group');
|
|
451
|
+
const nodesToUngroup = draggedNodes.filter((n) => getGroupId(n) && n.type !== 'group');
|
|
426
452
|
if (nodesToUngroup.length > 0)
|
|
427
453
|
onUngroupNodes(nodesToUngroup);
|
|
428
454
|
}
|
|
429
|
-
}, nodeTypes: nodeTypes, ...(edgeTypes ? { edgeTypes: edgeTypes } : {}), fitView: true, minZoom: 0.1, zoomOnScroll: false, panOnScroll: isFocused, zoomOnPinch: true, preventScrolling: false, nodesDraggable: interactive || editable, nodesConnectable: editable, elementsSelectable: true, panOnDrag: false, selectionOnDrag: true, elevateNodesOnSelect: false, children: [showBg && _jsx(Background, {}), showCtrls && arcControls ? (_jsxs(_Fragment, { children: [_jsx(Controls, { position:
|
|
455
|
+
}, nodeTypes: nodeTypes, ...(edgeTypes ? { edgeTypes: edgeTypes } : {}), fitView: true, minZoom: 0.1, zoomOnScroll: false, panOnScroll: isFocused, zoomOnPinch: true, preventScrolling: false, nodesDraggable: interactive || editable, nodesConnectable: editable, elementsSelectable: true, panOnDrag: false, selectionOnDrag: true, elevateNodesOnSelect: false, children: [showBg && _jsx(Background, {}), showCtrls && arcControls ? (_jsxs(_Fragment, { children: [_jsx(Controls, { position: "top-left", showFitView: false, showInteractive: false, showZoom: false, children: _jsxs(ButtonGroup, { children: [_jsx(Button, { variant: "ghost", size: "icon-sm", disabled: true, "aria-label": "Undo", title: "Undo", children: _jsx(UndoIcon, { "aria-hidden": "true" }) }), _jsx(Button, { variant: "ghost", size: "icon-sm", disabled: true, "aria-label": "Redo", title: "Redo", children: _jsx(RedoIcon, { "aria-hidden": "true" }) })] }) }), _jsx(Controls, { position: "top-right", showFitView: false, showInteractive: false, showZoom: false, children: _jsx(ButtonGroup, { children: _jsx(Button, { variant: "ghost", size: "icon-sm", "aria-label": "Arrange nodes", title: "Arrange nodes", onClick: onAutoLayout, children: _jsx(WandIcon, { "aria-hidden": "true" }) }) }) }), _jsx(ZoomControls, { position: "bottom-right" })] })) : (showCtrls && (_jsxs(Controls, { position: "bottom-left", showInteractive: false, className: "!m-3 [&_*]:!border-primary-6 [&_*]:!bg-primary-3", children: [editable && (_jsx(ControlButton, { "aria-label": "Auto-layout nodes", title: "Auto-layout nodes", onClick: onAutoLayout, children: _jsx(WandIcon, { "aria-hidden": "true" }) })), _jsx(ControlButton, { "aria-label": "Full screen", title: "Full screen", onClick: () => document.fullscreenElement
|
|
456
|
+
? void document.exitFullscreen()
|
|
457
|
+
: void reactFlowWrapper.current?.requestFullscreen(), children: _jsx(MaximizeIcon, { "aria-hidden": "true" }) })] })))] })] }) }), editable && (_jsx(ContextMenuContent, { className: MENU_CLASS.content, children: selNodes.length > 1 ? (_jsxs(_Fragment, { children: [_jsxs(ContextMenuSub, { children: [_jsx(ContextMenuSubTrigger, { children: "Align" }), _jsx(ContextMenuSubContent, { className: MENU_CLASS.subContent, children: NODE_MENUS.align.map((m) => m.label === 'sep' ? (_jsx(ContextMenuSeparator, {}, m.val)) : (_jsxs(ContextMenuItem, { onClick: () => {
|
|
430
458
|
onAlignNodes(selNodes, m.val);
|
|
431
|
-
}, children: [m.Icon && _jsx(m.Icon, { className: MENU_CLASS.icon }), " ", m.label] }, m.val))) })] }), selNodes.length > 2 && (_jsxs(ContextMenuSub, { children: [_jsx(ContextMenuSubTrigger, { children: "Distribute" }), _jsx(ContextMenuSubContent, { className: MENU_CLASS.subContent, children: NODE_MENUS.distribute.map(m => m.label === 'sep' ? (_jsx(ContextMenuSeparator, {}, m.val)) : (_jsxs(ContextMenuItem, { onClick: () => {
|
|
459
|
+
}, children: [m.Icon && _jsx(m.Icon, { className: MENU_CLASS.icon }), " ", m.label] }, m.val))) })] }), selNodes.length > 2 && (_jsxs(ContextMenuSub, { children: [_jsx(ContextMenuSubTrigger, { children: "Distribute" }), _jsx(ContextMenuSubContent, { className: MENU_CLASS.subContent, children: NODE_MENUS.distribute.map((m) => m.label === 'sep' ? (_jsx(ContextMenuSeparator, {}, m.val)) : (_jsxs(ContextMenuItem, { onClick: () => {
|
|
432
460
|
onDistributeNodes(selNodes, m.val);
|
|
433
|
-
}, children: [m.Icon && _jsx(m.Icon, { className: MENU_CLASS.icon }), " ", m.label] }, m.val))) })] })), _jsx(ContextMenuSeparator, {}), _jsxs(ContextMenuItem, { className:
|
|
434
|
-
const minX = Math.min(...selNodes.map(n => n.position.x - getNodeSize(n).w / 2));
|
|
435
|
-
const minY = Math.min(...selNodes.map(n => n.position.y - getNodeSize(n).h / 2));
|
|
461
|
+
}, children: [m.Icon && _jsx(m.Icon, { className: MENU_CLASS.icon }), " ", m.label] }, m.val))) })] })), _jsx(ContextMenuSeparator, {}), _jsxs(ContextMenuItem, { className: "cursor-pointer focus:!bg-primary-3 focus:!text-primary-12", onClick: () => {
|
|
462
|
+
const minX = Math.min(...selNodes.map((n) => n.position.x - getNodeSize(n).w / 2));
|
|
463
|
+
const minY = Math.min(...selNodes.map((n) => n.position.y - getNodeSize(n).h / 2));
|
|
436
464
|
const padding = 40;
|
|
437
|
-
const gWidth = Math.max(...selNodes.map(n => n.position.x + getNodeSize(n).w / 2)) -
|
|
438
|
-
|
|
465
|
+
const gWidth = Math.max(...selNodes.map((n) => n.position.x + getNodeSize(n).w / 2)) -
|
|
466
|
+
minX +
|
|
467
|
+
padding * 2;
|
|
468
|
+
const gHeight = Math.max(...selNodes.map((n) => n.position.y + getNodeSize(n).h / 2)) -
|
|
469
|
+
minY +
|
|
470
|
+
padding * 2;
|
|
439
471
|
const gX = minX - padding + gWidth / 2;
|
|
440
472
|
const gY = minY - padding + gHeight / 2;
|
|
441
473
|
onGroupNodes({
|
|
@@ -445,20 +477,20 @@ const FLOW_COMPONENTS = {
|
|
|
445
477
|
style: { width: gWidth, height: gHeight },
|
|
446
478
|
data: { attributes: [], customPosition: { x: gX, y: gY }, title: 'Group' },
|
|
447
479
|
}, selNodes, gX, gY);
|
|
448
|
-
}, children: [_jsx(GroupIcon, { className: MENU_CLASS.icon }), " Create Group"] }), _jsxs(ContextMenuItem, { intent:
|
|
449
|
-
onDeleteSelected(selNodes.filter(n => !locked(n)));
|
|
480
|
+
}, children: [_jsx(GroupIcon, { className: MENU_CLASS.icon }), " Create Group"] }), _jsxs(ContextMenuItem, { intent: "destructive", onClick: () => {
|
|
481
|
+
onDeleteSelected(selNodes.filter((n) => !locked(n)));
|
|
450
482
|
}, disabled: selNodes.every(locked), children: [_jsx(TrashIcon, { className: MENU_CLASS.icon }), " Delete Selected"] })] })) : menuCtx.type === '_node' && menuCtx.id ? (_jsxs(_Fragment, { children: [_jsxs(ContextMenuItem, { disabled: isTgtLocked, onClick: () => {
|
|
451
483
|
onRenameNode(menuCtx.id);
|
|
452
|
-
}, children: [_jsx(EditIcon, { className: MENU_CLASS.icon }), " Rename Node"] }), _jsxs(ContextMenuSub, { children: [_jsxs(ContextMenuSubTrigger, { disabled: isTgtLocked, children: [_jsx(TypeIcon, { className: MENU_CLASS.icon }), " Change Type"] }), _jsx(ContextMenuSubContent, { className: MENU_CLASS.content, children: allowedTypes.map(t => {
|
|
484
|
+
}, children: [_jsx(EditIcon, { className: MENU_CLASS.icon }), " Rename Node"] }), _jsxs(ContextMenuSub, { children: [_jsxs(ContextMenuSubTrigger, { disabled: isTgtLocked, children: [_jsx(TypeIcon, { className: MENU_CLASS.icon }), " Change Type"] }), _jsx(ContextMenuSubContent, { className: MENU_CLASS.content, children: allowedTypes.map((t) => {
|
|
453
485
|
const { Icon, label, colorCls } = NODE_CFG[t];
|
|
454
486
|
return (_jsxs(ContextMenuItem, { disabled: isTgtLocked, onClick: () => {
|
|
455
487
|
onChangeNodeType(menuCtx.id, t);
|
|
456
488
|
}, children: [_jsx(Icon, { className: cn('size-4 shrink-0', colorCls) }), _jsx("span", { children: nodeLabels[t] || label })] }, t));
|
|
457
|
-
}) })] }), _jsx(ContextMenuSeparator, {}), _jsxs(ContextMenuItem, { disabled: isTgtLocked, intent:
|
|
489
|
+
}) })] }), _jsx(ContextMenuSeparator, {}), _jsxs(ContextMenuItem, { disabled: isTgtLocked, intent: "destructive", onClick: () => tgtNode && onDeleteSelected([tgtNode]), children: [_jsx(TrashIcon, { className: MENU_CLASS.icon }), " Delete Node"] })] })) : menuCtx.type === 'e' && menuCtx.id ? (_jsxs(_Fragment, { children: [_jsxs(ContextMenuSub, { children: [_jsxs(ContextMenuSubTrigger, { children: [_jsx(TypeIcon, { className: MENU_CLASS.icon }), " Change Style"] }), _jsx(ContextMenuSubContent, { className: MENU_CLASS.content, children: NODE_MENUS.edges.map((m) => (_jsxs(ContextMenuItem, { onClick: () => {
|
|
458
490
|
onChangeEdgeStyle(menuCtx.id, m.val);
|
|
459
|
-
}, children: [_jsx("svg", { className:
|
|
491
|
+
}, children: [_jsx("svg", { className: "size-4 shrink-0 text-primary-11", viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeDasharray: m.dash, strokeLinecap: m.cap, children: _jsx("line", { x1: "0", y1: "8", x2: "16", y2: "8" }) }), _jsx("span", { children: m.label })] }, m.val))) })] }), _jsx(ContextMenuSeparator, {}), _jsxs(ContextMenuItem, { intent: "destructive", onClick: () => {
|
|
460
492
|
onDeleteEdge(menuCtx.id);
|
|
461
|
-
}, children: [_jsx(TrashIcon, { className: MENU_CLASS.icon }), " Delete Edge"] })] })) : menuCtx.type === 'pane' ? (_jsxs(ContextMenuSub, { children: [_jsxs(ContextMenuSubTrigger, { children: [_jsx(TypeIcon, { className: MENU_CLASS.icon }), " Add Node"] }), _jsx(ContextMenuSubContent, { className: MENU_CLASS.content, children: allowedTypes.map(t => {
|
|
493
|
+
}, children: [_jsx(TrashIcon, { className: MENU_CLASS.icon }), " Delete Edge"] })] })) : menuCtx.type === 'pane' ? (_jsxs(ContextMenuSub, { children: [_jsxs(ContextMenuSubTrigger, { children: [_jsx(TypeIcon, { className: MENU_CLASS.icon }), " Add Node"] }), _jsx(ContextMenuSubContent, { className: MENU_CLASS.content, children: allowedTypes.map((t) => {
|
|
462
494
|
const { Icon, label, colorCls } = NODE_CFG[t];
|
|
463
495
|
return (_jsxs(ContextMenuItem, { onClick: () => {
|
|
464
496
|
try {
|
|
@@ -474,7 +506,9 @@ const FLOW_COMPONENTS = {
|
|
|
474
506
|
onAddNode(t, pos);
|
|
475
507
|
}
|
|
476
508
|
catch (err) {
|
|
477
|
-
errorLog('AuthNodes', `menu.add.failed: ${t}`, {
|
|
509
|
+
errorLog('AuthNodes', `menu.add.failed: ${t}`, {
|
|
510
|
+
error: err instanceof Error ? err.message : String(err),
|
|
511
|
+
});
|
|
478
512
|
}
|
|
479
513
|
}, children: [_jsx(Icon, { className: cn('size-4 shrink-0', colorCls) }), _jsx("span", { children: nodeLabels[t] || label })] }, t));
|
|
480
514
|
}) })] })) : null }))] }));
|
|
@@ -522,7 +556,10 @@ COMPONENT
|
|
|
522
556
|
*/
|
|
523
557
|
export default function Nodes({ nodes: initialNodes = [], edges: initialEdges = [], className, direction: dir = 'TB', nodeSep = 50, rankSep = 5, proximityConnect = false, interactive = false, height, onCommit, onAddContent, onNodeClick, nodeTypes: customNodeTypes = {}, nodeLabels = {}, lockedTypes = [], allowedTypes = Object.keys(NODE_TYPES), editable = false, disabled = !editable, clipboardKey = editable ? 'terra.flow.docs' : undefined, showBg = true, showCtrls = true, arcControls = false, edgeTypes, readyWhenEmpty = true, onReady, style, ...rest }) {
|
|
524
558
|
// STATES
|
|
525
|
-
const [graph, setGraph] = useState({
|
|
559
|
+
const [graph, setGraph] = useState({
|
|
560
|
+
nodes: initialNodes,
|
|
561
|
+
edges: initialEdges,
|
|
562
|
+
});
|
|
526
563
|
const [flow, setFlow] = useState({ nodes: [], edges: [] });
|
|
527
564
|
const [isFocused, setIsFocused] = useState(false);
|
|
528
565
|
const [internalHeight, setInternalHeight] = useState(384);
|
|
@@ -549,20 +586,39 @@ export default function Nodes({ nodes: initialNodes = [], edges: initialEdges =
|
|
|
549
586
|
useEditor({
|
|
550
587
|
adapter: {
|
|
551
588
|
...(clipboardKey ? { clipboardKey } : {}),
|
|
552
|
-
cloneNode: (n, id) => ({
|
|
553
|
-
|
|
589
|
+
cloneNode: (n, id) => ({
|
|
590
|
+
...n,
|
|
591
|
+
id,
|
|
592
|
+
data: {
|
|
593
|
+
...n.data,
|
|
594
|
+
...(typeof n.data.graphKey === 'string'
|
|
595
|
+
? { graphKey: id }
|
|
596
|
+
: {}),
|
|
597
|
+
},
|
|
598
|
+
}),
|
|
599
|
+
editableNode: (n) => !lockedTypes.includes(n.type),
|
|
554
600
|
read: flow,
|
|
555
601
|
write: useCallback((n) => {
|
|
556
602
|
flowRef.current = n;
|
|
557
603
|
setFlow(n);
|
|
558
|
-
writeGraph(c => {
|
|
559
|
-
const currEntities = {
|
|
604
|
+
writeGraph((c) => {
|
|
605
|
+
const currEntities = {
|
|
606
|
+
nodes: new Map(c.nodes.map((i) => [i.id, i])),
|
|
607
|
+
edges: new Map(c.edges.map((i) => [i.id, i])),
|
|
608
|
+
};
|
|
560
609
|
return {
|
|
561
|
-
nodes: n.nodes.map(n => {
|
|
610
|
+
nodes: n.nodes.map((n) => {
|
|
562
611
|
const { editable: _, groupId: __, id: ___, isDragTarget: ____, onResizeEnd: _____, requiredHandles: ______, ...data } = n.data;
|
|
563
|
-
return {
|
|
612
|
+
return {
|
|
613
|
+
...currEntities.nodes.get(n.id),
|
|
614
|
+
id: n.id,
|
|
615
|
+
type: n.type,
|
|
616
|
+
position: n.position,
|
|
617
|
+
style: n.style,
|
|
618
|
+
data,
|
|
619
|
+
};
|
|
564
620
|
}),
|
|
565
|
-
edges: n.edges.map(e => {
|
|
621
|
+
edges: n.edges.map((e) => {
|
|
566
622
|
return {
|
|
567
623
|
...currEntities.edges.get(e.id),
|
|
568
624
|
id: e.id,
|
|
@@ -581,9 +637,9 @@ export default function Nodes({ nodes: initialNodes = [], edges: initialEdges =
|
|
|
581
637
|
disabled,
|
|
582
638
|
});
|
|
583
639
|
const handleResizeEnd = useCallback((i, p) => {
|
|
584
|
-
writeGraph(c => ({
|
|
640
|
+
writeGraph((c) => ({
|
|
585
641
|
...c,
|
|
586
|
-
nodes: c.nodes.map(n => n.id === i
|
|
642
|
+
nodes: c.nodes.map((n) => n.id === i
|
|
587
643
|
? {
|
|
588
644
|
...n,
|
|
589
645
|
position: { x: p.x, y: p.y },
|
|
@@ -633,10 +689,10 @@ export default function Nodes({ nodes: initialNodes = [], edges: initialEdges =
|
|
|
633
689
|
}, [initialNodes, initialEdges, writeGraph]);
|
|
634
690
|
// HELPERS
|
|
635
691
|
// RENDER
|
|
636
|
-
return (_jsx(ErrorBoundary, { name:
|
|
692
|
+
return (_jsx(ErrorBoundary, { name: "Nodes", children: _jsx("div", { ...rest, style: { height: height ?? internalHeight, ...style }, className: cn('docs-flow size-full overflow-hidden rounded-md border border-primary-6', interactive && 'scrim-primary-1 scrim-20', className), tabIndex: rest.tabIndex ?? 0, onFocus: (e) => {
|
|
637
693
|
setIsFocused(true);
|
|
638
694
|
rest.onFocus?.(e);
|
|
639
|
-
}, onBlur: e => {
|
|
695
|
+
}, onBlur: (e) => {
|
|
640
696
|
setIsFocused(false);
|
|
641
697
|
rest.onBlur?.(e);
|
|
642
698
|
}, children: _jsx(ReactFlowProvider, { children: _jsx(FLOW_COMPONENTS.Canvas, { flow: flow, nodeTypes: { ...FLOW_COMPONENTS.nodeTypes, ...customNodeTypes }, ...(edgeTypes ? { edgeTypes } : {}), nodeLabels: nodeLabels, onNodeClick: onNodeClick, onNodesChange:
|
|
@@ -714,14 +770,19 @@ export default function Nodes({ nodes: initialNodes = [], edges: initialEdges =
|
|
|
714
770
|
const nEdges = applyEdgeChanges(v, flowRef.current.edges);
|
|
715
771
|
setFlow({ ...flowRef.current, edges: nEdges });
|
|
716
772
|
flowRef.current = { ...flowRef.current, edges: nEdges };
|
|
717
|
-
if (editable && v.some(c => c.type === 'remove')) {
|
|
718
|
-
const remEdgeIds = new Set(v.filter(c => c.type === 'remove').map(c => c.id));
|
|
719
|
-
writeGraph(c => ({
|
|
773
|
+
if (editable && v.some((c) => c.type === 'remove')) {
|
|
774
|
+
const remEdgeIds = new Set(v.filter((c) => c.type === 'remove').map((c) => c.id));
|
|
775
|
+
writeGraph((c) => ({
|
|
776
|
+
...c,
|
|
777
|
+
edges: remEdgeIds.size
|
|
778
|
+
? c.edges.filter((_e) => !remEdgeIds.has(_e.id))
|
|
779
|
+
: c.edges,
|
|
780
|
+
}));
|
|
720
781
|
}
|
|
721
782
|
}, [editable, writeGraph]), onConnect: useCallback((p) => {
|
|
722
783
|
if (!editable)
|
|
723
784
|
return;
|
|
724
|
-
writeGraph(c => ({
|
|
785
|
+
writeGraph((c) => ({
|
|
725
786
|
...c,
|
|
726
787
|
edges: [
|
|
727
788
|
...c.edges,
|
|
@@ -732,7 +793,11 @@ export default function Nodes({ nodes: initialNodes = [], edges: initialEdges =
|
|
|
732
793
|
sourceHandle: p.sourceHandle,
|
|
733
794
|
targetHandle: p.targetHandle,
|
|
734
795
|
labelBgStyle: { fill: 'white', fillOpacity: 0.8 },
|
|
735
|
-
data: {
|
|
796
|
+
data: {
|
|
797
|
+
srcHandleOverride: p.sourceHandle,
|
|
798
|
+
tgtHandleOverride: p.targetHandle,
|
|
799
|
+
arrowHead: true,
|
|
800
|
+
},
|
|
736
801
|
},
|
|
737
802
|
],
|
|
738
803
|
}));
|
|
@@ -742,9 +807,14 @@ export default function Nodes({ nodes: initialNodes = [], edges: initialEdges =
|
|
|
742
807
|
const nLabel = window.prompt('Enter edge label:', r.label || '');
|
|
743
808
|
if (nLabel === null)
|
|
744
809
|
return;
|
|
745
|
-
writeGraph(
|
|
810
|
+
writeGraph((g) => ({
|
|
811
|
+
...g,
|
|
812
|
+
edges: g.edges.map((e) => e.id === r.id
|
|
813
|
+
? { ...e, label: nLabel, labelBgStyle: { fill: 'white', fillOpacity: 0.8 } }
|
|
814
|
+
: e),
|
|
815
|
+
}));
|
|
746
816
|
}, [editable, writeGraph]), onAddNode: useCallback((t, p) => {
|
|
747
|
-
writeGraph(c => ({
|
|
817
|
+
writeGraph((c) => ({
|
|
748
818
|
...c,
|
|
749
819
|
nodes: [
|
|
750
820
|
...c.nodes,
|
|
@@ -752,27 +822,36 @@ export default function Nodes({ nodes: initialNodes = [], edges: initialEdges =
|
|
|
752
822
|
id: `${t}-${Date.now().toString(36)}`,
|
|
753
823
|
type: t,
|
|
754
824
|
position: p,
|
|
755
|
-
data: {
|
|
825
|
+
data: {
|
|
826
|
+
attributes: [],
|
|
827
|
+
customPosition: p,
|
|
828
|
+
title: `${NODE_CFG[t].label} ${c.nodes.length + 1}`,
|
|
829
|
+
},
|
|
756
830
|
},
|
|
757
831
|
],
|
|
758
832
|
}));
|
|
759
833
|
}, [writeGraph]), lockedTypes: lockedTypes, allowedTypes: allowedTypes, onAddContent: fns.current.onAddContent, onGroupNodes: useCallback((g, v) => {
|
|
760
|
-
const group = { node: g, targetIds: new Set(v.map(s => s.id)) };
|
|
761
|
-
writeGraph(c => {
|
|
762
|
-
const nNodes = c.nodes.map(n => {
|
|
834
|
+
const group = { node: g, targetIds: new Set(v.map((s) => s.id)) };
|
|
835
|
+
writeGraph((c) => {
|
|
836
|
+
const nNodes = c.nodes.map((n) => {
|
|
763
837
|
if (group.targetIds.has(n.id)) {
|
|
764
838
|
const { parentId: _parentId, extent: _extent, ...rest } = n;
|
|
765
839
|
return { ...rest, data: { ...n.data, groupId: g.id } };
|
|
766
840
|
}
|
|
767
841
|
return n;
|
|
768
842
|
});
|
|
769
|
-
return {
|
|
843
|
+
return {
|
|
844
|
+
...c,
|
|
845
|
+
nodes: nNodes.some((n) => n.id === group.node.id)
|
|
846
|
+
? nNodes
|
|
847
|
+
: [group.node, ...nNodes],
|
|
848
|
+
};
|
|
770
849
|
});
|
|
771
850
|
}, [writeGraph]), onUngroupNodes: useCallback((v) => {
|
|
772
|
-
const ungroupMap = new Map(v.map(u => [u.id, u]));
|
|
773
|
-
writeGraph(c => ({
|
|
851
|
+
const ungroupMap = new Map(v.map((u) => [u.id, u]));
|
|
852
|
+
writeGraph((c) => ({
|
|
774
853
|
...c,
|
|
775
|
-
nodes: c.nodes.map(n => {
|
|
854
|
+
nodes: c.nodes.map((n) => {
|
|
776
855
|
if (ungroupMap.has(n.id)) {
|
|
777
856
|
if (!getGroupId(ungroupMap.get(n.id)))
|
|
778
857
|
return n;
|
|
@@ -784,23 +863,27 @@ export default function Nodes({ nodes: initialNodes = [], edges: initialEdges =
|
|
|
784
863
|
}),
|
|
785
864
|
}));
|
|
786
865
|
}, [writeGraph]), onDeleteSelected: useCallback((s) => {
|
|
787
|
-
writeGraph(c => {
|
|
788
|
-
const selIds = new Set(s.map(n => n.id));
|
|
789
|
-
return {
|
|
866
|
+
writeGraph((c) => {
|
|
867
|
+
const selIds = new Set(s.map((n) => n.id));
|
|
868
|
+
return {
|
|
869
|
+
...c,
|
|
870
|
+
nodes: c.nodes.filter((n) => !selIds.has(n.id)),
|
|
871
|
+
edges: c.edges.filter((_e) => !selIds.has(_e.source) && !selIds.has(_e.target)),
|
|
872
|
+
};
|
|
790
873
|
});
|
|
791
874
|
}, [writeGraph]), onAlignNodes: useCallback((v, t) => {
|
|
792
875
|
if (v.length < 2)
|
|
793
876
|
return;
|
|
794
|
-
const selNodesMap = new Map(v.map(s => [s.id, s]));
|
|
795
|
-
writeGraph(c => {
|
|
796
|
-
const absPos = v.map(n => ({ n, abs: n.position }));
|
|
797
|
-
const minX = Math.min(...absPos.map(p => p.abs.x - getNodeSize(p.n).w / 2));
|
|
798
|
-
const maxX = Math.max(...absPos.map(p => p.abs.x + getNodeSize(p.n).w / 2));
|
|
799
|
-
const minY = Math.min(...absPos.map(p => p.abs.y - getNodeSize(p.n).h / 2));
|
|
800
|
-
const maxY = Math.max(...absPos.map(p => p.abs.y + getNodeSize(p.n).h / 2));
|
|
877
|
+
const selNodesMap = new Map(v.map((s) => [s.id, s]));
|
|
878
|
+
writeGraph((c) => {
|
|
879
|
+
const absPos = v.map((n) => ({ n, abs: n.position }));
|
|
880
|
+
const minX = Math.min(...absPos.map((p) => p.abs.x - getNodeSize(p.n).w / 2));
|
|
881
|
+
const maxX = Math.max(...absPos.map((p) => p.abs.x + getNodeSize(p.n).w / 2));
|
|
882
|
+
const minY = Math.min(...absPos.map((p) => p.abs.y - getNodeSize(p.n).h / 2));
|
|
883
|
+
const maxY = Math.max(...absPos.map((p) => p.abs.y + getNodeSize(p.n).h / 2));
|
|
801
884
|
return {
|
|
802
885
|
...c,
|
|
803
|
-
nodes: c.nodes.map(n => {
|
|
886
|
+
nodes: c.nodes.map((n) => {
|
|
804
887
|
if (selNodesMap.has(n.id)) {
|
|
805
888
|
const flowNode = selNodesMap.get(n.id);
|
|
806
889
|
const size = getNodeSize(flowNode);
|
|
@@ -836,7 +919,7 @@ export default function Nodes({ nodes: initialNodes = [], edges: initialEdges =
|
|
|
836
919
|
}, [writeGraph]), onDistributeNodes: useCallback((v, t) => {
|
|
837
920
|
if (v.length < 3)
|
|
838
921
|
return;
|
|
839
|
-
writeGraph(c => {
|
|
922
|
+
writeGraph((c) => {
|
|
840
923
|
const isHoriz = t.startsWith('horizontal');
|
|
841
924
|
const sizeKey = isHoriz ? 'w' : 'h';
|
|
842
925
|
/**
|
|
@@ -853,14 +936,19 @@ export default function Nodes({ nodes: initialNodes = [], edges: initialEdges =
|
|
|
853
936
|
return basePos;
|
|
854
937
|
return basePos + size / 2;
|
|
855
938
|
};
|
|
856
|
-
const sorted = [...v.map(n => ({ n, abs: n.position }))].sort((a, b) => getEdge(a) - getEdge(b));
|
|
939
|
+
const sorted = [...v.map((n) => ({ n, abs: n.position }))].sort((a, b) => getEdge(a) - getEdge(b));
|
|
857
940
|
const min = getEdge(sorted[0]);
|
|
858
|
-
const layoutLookup = {
|
|
941
|
+
const layoutLookup = {
|
|
942
|
+
nodes: new Map(v.map((s) => [s.id, s])),
|
|
943
|
+
indices: new Map(sorted.map((s, i) => [s.n.id, i])),
|
|
944
|
+
};
|
|
859
945
|
return {
|
|
860
946
|
...c,
|
|
861
|
-
nodes: c.nodes.map(n => {
|
|
947
|
+
nodes: c.nodes.map((n) => {
|
|
862
948
|
if (layoutLookup.nodes.has(n.id)) {
|
|
863
|
-
const tEdge = min +
|
|
949
|
+
const tEdge = min +
|
|
950
|
+
((getEdge(sorted[sorted.length - 1]) - min) / (sorted.length - 1)) *
|
|
951
|
+
layoutLookup.indices.get(n.id);
|
|
864
952
|
const flowNode = layoutLookup.nodes.get(n.id);
|
|
865
953
|
const size = getNodeSize(flowNode)[sizeKey];
|
|
866
954
|
let nAbsVal = tEdge;
|
|
@@ -868,8 +956,15 @@ export default function Nodes({ nodes: initialNodes = [], edges: initialEdges =
|
|
|
868
956
|
nAbsVal = tEdge + size / 2;
|
|
869
957
|
else if (t.endsWith('right') || t.endsWith('bottom'))
|
|
870
958
|
nAbsVal = tEdge - size / 2;
|
|
871
|
-
const newPos = {
|
|
872
|
-
|
|
959
|
+
const newPos = {
|
|
960
|
+
x: isHoriz ? nAbsVal : flowNode.position.x,
|
|
961
|
+
y: isHoriz ? flowNode.position.y : nAbsVal,
|
|
962
|
+
};
|
|
963
|
+
return {
|
|
964
|
+
...n,
|
|
965
|
+
position: newPos,
|
|
966
|
+
data: { ...n.data, customPosition: newPos },
|
|
967
|
+
};
|
|
873
968
|
}
|
|
874
969
|
return n;
|
|
875
970
|
}),
|
|
@@ -888,23 +983,35 @@ export default function Nodes({ nodes: initialNodes = [], edges: initialEdges =
|
|
|
888
983
|
const nTitle = window.prompt('Enter new name:', _node.data.title);
|
|
889
984
|
if (!nTitle)
|
|
890
985
|
return;
|
|
891
|
-
writeGraph(
|
|
986
|
+
writeGraph((c) => ({
|
|
987
|
+
...c,
|
|
988
|
+
nodes: c.nodes.map((n) => n.id === i ? { ...n, data: { ...n.data, title: nTitle } } : n),
|
|
989
|
+
}));
|
|
892
990
|
}, [writeGraph]), onChangeNodeType: useCallback((i, t) => {
|
|
893
|
-
writeGraph(
|
|
991
|
+
writeGraph((c) => ({
|
|
992
|
+
...c,
|
|
993
|
+
nodes: c.nodes.map((n) => (n.id === i ? { ...n, type: t } : n)),
|
|
994
|
+
}));
|
|
894
995
|
}, [writeGraph]), onChangeEdgeStyle: useCallback((i, s) => {
|
|
895
|
-
writeGraph(
|
|
996
|
+
writeGraph((c) => ({
|
|
997
|
+
...c,
|
|
998
|
+
edges: c.edges.map((e) => e.id === i ? { ...e, data: { ...e.data, strokeStyle: s } } : e),
|
|
999
|
+
}));
|
|
896
1000
|
}, [writeGraph]), onDeleteEdge: useCallback((i) => {
|
|
897
|
-
writeGraph(c => ({ ...c, edges: c.edges.filter(_e => _e.id !== i) }));
|
|
1001
|
+
writeGraph((c) => ({ ...c, edges: c.edges.filter((_e) => _e.id !== i) }));
|
|
898
1002
|
}, [writeGraph]), onAutoLayout: useCallback(() => {
|
|
899
|
-
writeGraph(c => {
|
|
900
|
-
const validNodeIds = new Set(c.nodes.map(n => n.id));
|
|
1003
|
+
writeGraph((c) => {
|
|
1004
|
+
const validNodeIds = new Set(c.nodes.map((n) => n.id));
|
|
901
1005
|
return {
|
|
902
1006
|
...c,
|
|
903
|
-
nodes: c.nodes.map(n => {
|
|
1007
|
+
nodes: c.nodes.map((n) => {
|
|
904
1008
|
const { parentId: _parentId, extent: _extent, ...rest } = n;
|
|
905
|
-
return {
|
|
1009
|
+
return {
|
|
1010
|
+
...rest,
|
|
1011
|
+
data: Object.fromEntries(Object.entries(rest.data ?? {}).filter(([k]) => k !== 'customPosition')),
|
|
1012
|
+
};
|
|
906
1013
|
}),
|
|
907
|
-
edges: c.edges.filter(e => validNodeIds.has(e.source) && validNodeIds.has(e.target)),
|
|
1014
|
+
edges: c.edges.filter((e) => validNodeIds.has(e.source) && validNodeIds.has(e.target)),
|
|
908
1015
|
};
|
|
909
1016
|
});
|
|
910
1017
|
}, [writeGraph]), interactive: interactive, editable: permitted, isFocused: isFocused, height: typeof height === 'number' && Number.isFinite(height) ? height : internalHeight, showBg: showBg, showCtrls: showCtrls, arcControls: arcControls, readyWhenEmpty: readyWhenEmpty, onReady: onReady }) }) }) }));
|