@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
|
@@ -0,0 +1,710 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// @ts-nocheck -- source-preserving extraction; public host contracts are typed in src/host.ts.
|
|
3
|
+
/**
|
|
4
|
+
* astro/src/pages/docs/_main.tsx
|
|
5
|
+
* Docs scaffold entrypoint, shell, transition ctx, and compiled view/edit surfaces.
|
|
6
|
+
* Folder boundary: page composition and shared Docs state; block rendering, editing, chrome, and navigation remain separate.
|
|
7
|
+
*/
|
|
8
|
+
/*//////////////////////////////////////////////////
|
|
9
|
+
IMPORTS
|
|
10
|
+
//////////////////////////////////////////////////*/
|
|
11
|
+
// API
|
|
12
|
+
import { $editReadyPath, $editorMounts, $leafTitle, $mode, $sidebar, $surfaceReady, $toolbar, resetEditorMounts, setEditorMount, useAtom, useTransitionState, } from '../../../../lib/terra/docs/state.js';
|
|
13
|
+
import { keepDeepPath } from '../../../../lib/terra/docs/tree.js';
|
|
14
|
+
import { document } from '../../../../lib/terra/docs/editor-dom.js';
|
|
15
|
+
import { isDocBody } from '../../../../lib/terra/runtime/types.js';
|
|
16
|
+
import { cn, setDocumentTitle } from '../../../../lib/terra/runtime/runtime.js';
|
|
17
|
+
import { toPortableBody } from '../../../../lib/terra/runtime/leaf.js';
|
|
18
|
+
import { dirname } from '../../../../lib/terra/runtime/shared.js';
|
|
19
|
+
import { lazy, useCallback, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState, } from 'react';
|
|
20
|
+
import { toast } from 'sonner';
|
|
21
|
+
import { getDocsHostAdapter } from '../../../../lib/host-runtime.js';
|
|
22
|
+
import { docsRootPath } from '../../../../lib/terra/runtime/shared.js';
|
|
23
|
+
import { actions } from '../../../../lib/terra/runtime/action-proxy.js';
|
|
24
|
+
// COMPONENTS
|
|
25
|
+
import * as TerraQualityRegex from '../../../../lib/terra/regex.mjs';
|
|
26
|
+
import EditProvider, { Loader, TransitionShell } from './_editable.js';
|
|
27
|
+
import Nav from './_sidebar.js';
|
|
28
|
+
import { Suspense } from 'react';
|
|
29
|
+
import { AlertError } from '@terra-symposium/styling/ui/terra-original';
|
|
30
|
+
import { Attachments } from './_attachments.js';
|
|
31
|
+
import { Badge } from '@terra-symposium/styling/ui/terra-original';
|
|
32
|
+
import { Button } from '@terra-symposium/styling/ui/terra-original';
|
|
33
|
+
import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '@terra-symposium/styling/ui/terra-original';
|
|
34
|
+
import { DocsToolbarActions, Toolbar } from './_toolbar.js';
|
|
35
|
+
import { useBlockNav } from './use-block-nav.js';
|
|
36
|
+
import { useMediaPaste } from './use-media-paste.js';
|
|
37
|
+
import { EditStateCtx, EditorSurfaceCtx, TransitionCtx } from '../../../../lib/terra/docs/state.js';
|
|
38
|
+
import { ErrorBoundary } from '../../ui.js';
|
|
39
|
+
import { Input } from '@terra-symposium/styling/ui/terra-original';
|
|
40
|
+
import { Label } from '@terra-symposium/styling/ui/terra-original';
|
|
41
|
+
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@terra-symposium/styling/ui/terra-original';
|
|
42
|
+
import { SidebarInset, SidebarProvider, SidebarTrigger, } from '@terra-symposium/styling/ui/terra-original';
|
|
43
|
+
import { Separator } from '@terra-symposium/styling/ui/terra-original';
|
|
44
|
+
import { Textarea } from '@terra-symposium/styling/ui/terra-original';
|
|
45
|
+
import { Toaster } from 'sonner';
|
|
46
|
+
const TerraContentEditor = lazy(() => import('../../editor/TerraContentEditor.js').then((module) => ({
|
|
47
|
+
default: module.TerraContentEditor,
|
|
48
|
+
})));
|
|
49
|
+
/*//////////////////////////////////////////////////
|
|
50
|
+
HOOKS
|
|
51
|
+
//////////////////////////////////////////////////*/
|
|
52
|
+
/**
|
|
53
|
+
* Handles DOM keyboard and pointer tracking for custom block els.
|
|
54
|
+
*
|
|
55
|
+
* @param refs - Refs input supplied to use block nav's operation.
|
|
56
|
+
*
|
|
57
|
+
* @return Selection, keyboard, and pointer handlers used to navigate and position custom editor blocks.
|
|
58
|
+
*/
|
|
59
|
+
/**
|
|
60
|
+
* Renders the view component.
|
|
61
|
+
*
|
|
62
|
+
* @param props - Document body and optional reset key used to render the read-only Docs editor surface.
|
|
63
|
+
* @param body - Body input supplied to view's operation.
|
|
64
|
+
* @param resetKey - Key used to reset Terra's editor state for a new document.
|
|
65
|
+
*
|
|
66
|
+
* @return The read-only editor view for the supplied document body.
|
|
67
|
+
*/
|
|
68
|
+
function View({ body, blocks, resetKey, }) {
|
|
69
|
+
const transition = useTransitionState();
|
|
70
|
+
useEffect(() => {
|
|
71
|
+
return ((timer) => () => {
|
|
72
|
+
window.clearTimeout(timer);
|
|
73
|
+
if ($surfaceReady.get() === 'view')
|
|
74
|
+
$surfaceReady.set(null);
|
|
75
|
+
})(window.setTimeout(() => {
|
|
76
|
+
$surfaceReady.set('view');
|
|
77
|
+
document.dispatchEvent(new Event('docs:surface-ready'));
|
|
78
|
+
}));
|
|
79
|
+
}, [resetKey, transition]);
|
|
80
|
+
return (_jsx(Suspense, { fallback: _jsx("div", { "aria-hidden": "true", "data-docs-view-loading": true }), children: _jsx(TerraContentEditor, { content: body, readOnly: true, ...(blocks ? { blocks } : {}), ...(resetKey !== undefined ? { resetKey } : {}) }) }));
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Reads the editor surface context when a Docs editor provider is present.
|
|
84
|
+
*
|
|
85
|
+
* @return The active editor surface, or `null` when this component is outside an editor provider.
|
|
86
|
+
*/
|
|
87
|
+
function useEditorSurfaceOptional() {
|
|
88
|
+
return useContext(EditorSurfaceCtx);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Wraps lexical engine maintaining layout constraints.
|
|
92
|
+
*
|
|
93
|
+
* @param props - Optional wrapper classes for the editable Lexical editor surface.
|
|
94
|
+
* @param className - Additional CSS classes merged into edit.
|
|
95
|
+
*
|
|
96
|
+
* @return The interactive Docs editing surface with its configured toolbar.
|
|
97
|
+
*/
|
|
98
|
+
const EditorSurfaces = {
|
|
99
|
+
Edit({ blocks, className, editable = false, }) {
|
|
100
|
+
// INIT
|
|
101
|
+
const surface = useEditorSurfaceOptional();
|
|
102
|
+
const editorRefs = { toolbar: useAtom($toolbar), empty: useRef({}) };
|
|
103
|
+
const [init, setInit] = useState(false);
|
|
104
|
+
const [docsAttachments, setDocsAttachments] = useState([]);
|
|
105
|
+
const transition = useContext(TransitionCtx);
|
|
106
|
+
useLayoutEffect(() => {
|
|
107
|
+
if (!init)
|
|
108
|
+
transition?.setLoading(true);
|
|
109
|
+
}, [init, transition]);
|
|
110
|
+
useLayoutEffect(() => {
|
|
111
|
+
$editReadyPath.set(null);
|
|
112
|
+
$surfaceReady.set(null);
|
|
113
|
+
setInit(false);
|
|
114
|
+
if (!surface)
|
|
115
|
+
return;
|
|
116
|
+
if (!surface.editor.loaded)
|
|
117
|
+
return;
|
|
118
|
+
resetEditorMounts(surface.path, ['root']);
|
|
119
|
+
if (surface.parseError) {
|
|
120
|
+
setInit(true);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
const body = surface.refs.current.body;
|
|
124
|
+
if (!body)
|
|
125
|
+
return;
|
|
126
|
+
let frame = 0;
|
|
127
|
+
const mountObserver = {
|
|
128
|
+
check() {
|
|
129
|
+
const root = body.querySelector('[data-terra-content-editor]');
|
|
130
|
+
if (root) {
|
|
131
|
+
setEditorMount(surface.path, 'root', true);
|
|
132
|
+
observer.disconnect();
|
|
133
|
+
}
|
|
134
|
+
const mounts = $editorMounts.get();
|
|
135
|
+
setInit(!!root &&
|
|
136
|
+
mounts.path === surface.path &&
|
|
137
|
+
mounts.expected.length === mounts.mounted.length);
|
|
138
|
+
},
|
|
139
|
+
queue() {
|
|
140
|
+
window.cancelAnimationFrame(frame);
|
|
141
|
+
frame = window.requestAnimationFrame(mountObserver.check);
|
|
142
|
+
},
|
|
143
|
+
};
|
|
144
|
+
const observer = new MutationObserver(mountObserver.queue);
|
|
145
|
+
observer.observe(body, { childList: true, subtree: true });
|
|
146
|
+
mountObserver.queue();
|
|
147
|
+
return () => {
|
|
148
|
+
window.cancelAnimationFrame(frame);
|
|
149
|
+
setEditorMount(surface.path, 'root', false);
|
|
150
|
+
observer.disconnect();
|
|
151
|
+
};
|
|
152
|
+
}, [surface?.path, surface?.parseError, surface?.editor.loaded]);
|
|
153
|
+
useEffect(() => {
|
|
154
|
+
let active = true;
|
|
155
|
+
const path = surface?.path;
|
|
156
|
+
if (!path) {
|
|
157
|
+
setDocsAttachments([]);
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
void actions.read.doc.attachments({ path }).then(({ data, error }) => {
|
|
161
|
+
if (!active)
|
|
162
|
+
return;
|
|
163
|
+
if (error) {
|
|
164
|
+
console.error('[Docs:attachments] load-failed', { path, error });
|
|
165
|
+
setDocsAttachments([]);
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
setDocsAttachments(Array.isArray(data) ? data : []);
|
|
169
|
+
});
|
|
170
|
+
return () => {
|
|
171
|
+
active = false;
|
|
172
|
+
};
|
|
173
|
+
}, [surface?.path]);
|
|
174
|
+
useEffect(() => {
|
|
175
|
+
$editReadyPath.set(null);
|
|
176
|
+
$surfaceReady.set(null);
|
|
177
|
+
if (!init)
|
|
178
|
+
return;
|
|
179
|
+
return ((timer) => () => {
|
|
180
|
+
window.clearTimeout(timer);
|
|
181
|
+
if ($editReadyPath.get() === surface?.path)
|
|
182
|
+
$editReadyPath.set(null);
|
|
183
|
+
if ($surfaceReady.get() === 'edit')
|
|
184
|
+
$surfaceReady.set(null);
|
|
185
|
+
})(window.setTimeout(() => {
|
|
186
|
+
$editReadyPath.set(surface?.path || null);
|
|
187
|
+
$surfaceReady.set('edit');
|
|
188
|
+
document.dispatchEvent(new Event('docs:surface-ready'));
|
|
189
|
+
}, 50));
|
|
190
|
+
}, [init, surface?.path]);
|
|
191
|
+
// bind keyboard shortcuts and rich media ingestion at the root
|
|
192
|
+
// these must execute unconditionally to satisfy React hooks rules
|
|
193
|
+
useBlockNav(surface ? surface.refs : editorRefs.empty);
|
|
194
|
+
useMediaPaste(surface ? surface.refs : editorRefs.empty, surface?.insert ?? (() => undefined), surface?.uploadImage ?? (async () => ''), surface?.attachFiles ?? (async () => undefined));
|
|
195
|
+
// VALIDATION
|
|
196
|
+
if (!surface)
|
|
197
|
+
return (_jsx(AlertError, { title: "Editor failed to initialize.", description: "Reload the page to reattach the docs editor provider." }));
|
|
198
|
+
const { editor, parseError: parseErr, refs } = surface;
|
|
199
|
+
// RENDER
|
|
200
|
+
return (_jsxs("div", { ref: (e) => {
|
|
201
|
+
refs.current.body = e;
|
|
202
|
+
}, className: cn('min-w-0', className, '[&_[class*="_toolbarRoot_"]]:static [&_[class*="_toolbarRoot_"]]:!top-auto [&_[class*="_toolbarRoot_"]]:!z-auto [&_[class*="_toolbarRoot_"]]:m-0 [&_[class*="_toolbarRoot_"]]:w-full [&_[class*="_toolbarRoot_"]]:gap-0 [&_[class*="_toolbarRoot_"]]:overflow-visible [&_[class*="_toolbarRoot_"]]:rounded-none [&_[class*="_toolbarRoot_"]]:border-none [&_[class*="_toolbarRoot_"]]:!bg-transparent [&_[class*="_toolbarRoot_"]]:p-0 [&_[class*="_toolbarRoot_"]]:!shadow-none [&_[class*="_toolbarRoot_"]]:outline-none [&_[class*="_toolbarRoot_"]]:ring-0 focus-within:[&_[class*="_toolbarRoot_"]]:!shadow-none'), "data-docs-body-editor": true, "data-docs-editor": "inline", "data-docs-editor-initialized": init, "data-docs-path": editor.draft.path, children: [editor.busy === 'loading' && _jsx("div", { "aria-hidden": "true", "data-docs-editor-loading": true }), parseErr ? (_jsxs(_Fragment, { children: [_jsx(AlertError, { description: `${parseErr}\n\nThe source remains editable below.`, title: "Visual editor fallback" }), _jsx("textarea", { className: "mt-4 min-h-[32rem] w-full rounded-md border border-primary-6 bg-primary-1 p-4 font-mono text-sm leading-relaxed outline-none focus:ring-2 focus:ring-primary-8", value: editor.draft.source || '', onChange: (e) => surface.onMdChange(e.currentTarget.value), "aria-label": "Document source fallback" })] })) : (_jsx(Suspense, { fallback: _jsx("div", { "aria-hidden": "true", "data-docs-editor-loading": true }), children: _jsx(TerraContentEditor, { content: (isDocBody(editor.draft.content)
|
|
203
|
+
? editor.draft.content
|
|
204
|
+
: undefined), docsAttachments: docsAttachments, blocks: blocks, readOnly: !editable, memberProfile: "docs", toolbarActions: _jsx(DocsToolbarActions, { activeMode: "edit", editable: editable, size: "sm", toolbar: editorRefs.toolbar }), onChange: (c) => {
|
|
205
|
+
surface.onBodyChange(toPortableBody(c.map((b) => (b._type === 'terraBlock' ? { ...b, _type: 'block' } : b))));
|
|
206
|
+
}, resetKey: `${editor.draft.path}:${editor.version}` }) }))] }));
|
|
207
|
+
},
|
|
208
|
+
/**
|
|
209
|
+
* Renders the head component.
|
|
210
|
+
*
|
|
211
|
+
* @param props - Compact layout, editability, page metadata, contributors, and timestamps displayed in the Docs page header.
|
|
212
|
+
* @param full - Whether the page is rendered in full mode.
|
|
213
|
+
* @param contributors - Contributors input supplied to head's operation.
|
|
214
|
+
* @param updatedAt - Updated at input supplied to head's operation.
|
|
215
|
+
* @param editable - Editability flag controlling whether head accepts changes.
|
|
216
|
+
* @param description - Supporting text shown in head.
|
|
217
|
+
* @param title - Heading text shown in head.
|
|
218
|
+
*
|
|
219
|
+
* @return The page head block.
|
|
220
|
+
*
|
|
221
|
+
* @remarks Renders the docs page head metadata and edit controls.
|
|
222
|
+
*/
|
|
223
|
+
Head({ compact = false, description = '', editable, title, full, contributors: initContributors = [], updatedAt, }) {
|
|
224
|
+
// STATES
|
|
225
|
+
const edit = useContext(EditStateCtx);
|
|
226
|
+
const draft = edit?.draft ?? { description, title };
|
|
227
|
+
const contributors = initContributors ?? [];
|
|
228
|
+
const titleRef = useRef(null);
|
|
229
|
+
const descriptionRef = useRef(null);
|
|
230
|
+
useLayoutEffect(() => {
|
|
231
|
+
const input = titleRef.current;
|
|
232
|
+
const context = window.document.createElement('canvas').getContext('2d');
|
|
233
|
+
if (!input || !context)
|
|
234
|
+
return;
|
|
235
|
+
let active = true;
|
|
236
|
+
const fitTitle = () => {
|
|
237
|
+
if (!active)
|
|
238
|
+
return;
|
|
239
|
+
// Restore the responsive Tailwind size first so repeated resizes never
|
|
240
|
+
// compound a previous shrink. Then scale only titles that exceed the
|
|
241
|
+
// available content width.
|
|
242
|
+
input.style.removeProperty('font-size');
|
|
243
|
+
const styles = window.getComputedStyle(input);
|
|
244
|
+
const baseSize = Number.parseFloat(styles.fontSize);
|
|
245
|
+
const available = input.clientWidth -
|
|
246
|
+
Number.parseFloat(styles.paddingLeft || '0') -
|
|
247
|
+
Number.parseFloat(styles.paddingRight || '0');
|
|
248
|
+
const text = input.value || input.placeholder;
|
|
249
|
+
if (!text || !Number.isFinite(baseSize) || available <= 0)
|
|
250
|
+
return;
|
|
251
|
+
context.font = `${styles.fontStyle} ${styles.fontWeight} ${baseSize}px ${styles.fontFamily}`;
|
|
252
|
+
const letterSpacing = Number.parseFloat(styles.letterSpacing) || 0;
|
|
253
|
+
const textWidth = context.measureText(text).width + Math.max(text.length - 1, 0) * letterSpacing;
|
|
254
|
+
if (textWidth > available) {
|
|
255
|
+
const fittedSize = Math.max(12, (baseSize * (available - 1)) / textWidth);
|
|
256
|
+
input.style.fontSize = `${fittedSize}px`;
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
fitTitle();
|
|
260
|
+
void window.document.fonts.ready.then(fitTitle);
|
|
261
|
+
window.document.fonts.addEventListener('loadingdone', fitTitle);
|
|
262
|
+
const parent = input.parentElement;
|
|
263
|
+
let previousWidth = parent?.getBoundingClientRect().width ?? input.clientWidth;
|
|
264
|
+
const resize = () => {
|
|
265
|
+
const nextWidth = parent?.getBoundingClientRect().width ?? input.clientWidth;
|
|
266
|
+
if (nextWidth === previousWidth)
|
|
267
|
+
return;
|
|
268
|
+
previousWidth = nextWidth;
|
|
269
|
+
fitTitle();
|
|
270
|
+
};
|
|
271
|
+
const observer = new ResizeObserver(resize);
|
|
272
|
+
if (parent)
|
|
273
|
+
observer.observe(parent);
|
|
274
|
+
window.addEventListener('resize', resize);
|
|
275
|
+
return () => {
|
|
276
|
+
active = false;
|
|
277
|
+
observer.disconnect();
|
|
278
|
+
window.document.fonts.removeEventListener('loadingdone', fitTitle);
|
|
279
|
+
window.removeEventListener('resize', resize);
|
|
280
|
+
};
|
|
281
|
+
}, [draft.title]);
|
|
282
|
+
useLayoutEffect(() => {
|
|
283
|
+
const textarea = descriptionRef.current;
|
|
284
|
+
if (!textarea)
|
|
285
|
+
return;
|
|
286
|
+
let active = true;
|
|
287
|
+
const resize = () => {
|
|
288
|
+
if (!active)
|
|
289
|
+
return;
|
|
290
|
+
// The original shared Textarea variant fixes this field at h-10 (40px).
|
|
291
|
+
// Measure that CSS height without the previous inline measurement, then
|
|
292
|
+
// grow only when the wrapped description needs more room.
|
|
293
|
+
textarea.style.removeProperty('height');
|
|
294
|
+
const baseHeight = textarea.getBoundingClientRect().height;
|
|
295
|
+
textarea.style.height = 'auto';
|
|
296
|
+
textarea.style.height = `${Math.max(baseHeight, textarea.scrollHeight)}px`;
|
|
297
|
+
};
|
|
298
|
+
resize();
|
|
299
|
+
const fonts = document.fonts;
|
|
300
|
+
void fonts.ready.then(resize);
|
|
301
|
+
fonts.addEventListener('loadingdone', resize);
|
|
302
|
+
let previousWidth = textarea.parentElement?.getBoundingClientRect().width;
|
|
303
|
+
const observer = new ResizeObserver(() => {
|
|
304
|
+
const nextWidth = textarea.parentElement?.getBoundingClientRect().width;
|
|
305
|
+
if (nextWidth !== previousWidth) {
|
|
306
|
+
previousWidth = nextWidth;
|
|
307
|
+
resize();
|
|
308
|
+
}
|
|
309
|
+
});
|
|
310
|
+
if (textarea.parentElement)
|
|
311
|
+
observer.observe(textarea.parentElement);
|
|
312
|
+
window.addEventListener('resize', resize);
|
|
313
|
+
return () => {
|
|
314
|
+
active = false;
|
|
315
|
+
observer.disconnect();
|
|
316
|
+
fonts.removeEventListener('loadingdone', resize);
|
|
317
|
+
window.removeEventListener('resize', resize);
|
|
318
|
+
};
|
|
319
|
+
}, [draft.description]);
|
|
320
|
+
// RENDER
|
|
321
|
+
// prettier-ignore
|
|
322
|
+
return (_jsx("header", { className: 'terra-docs-document-header relative z-10 w-full print:!mb-8 print:border-none', children: _jsxs("div", { className: cn('mx-auto w-full px-6 transition-opacity duration-200 md:px-10 print:!pb-3', compact ? 'pb-3 pt-5' : 'pb-10 pt-7', full ? 'max-w-none' : 'max-w-5xl'), children: [_jsxs("div", { children: [_jsx(Label, { htmlFor: 'docs-title', className: 'sr-only', children: "Title" }), _jsx(Input, { ref: titleRef, id: 'docs-title', value: draft.title, onChange: e => {
|
|
323
|
+
const title = e.currentTarget.value;
|
|
324
|
+
edit?.update({ title });
|
|
325
|
+
if (!edit?.draft.path)
|
|
326
|
+
return;
|
|
327
|
+
$leafTitle.set({ path: edit.draft.path, title });
|
|
328
|
+
setDocumentTitle(title);
|
|
329
|
+
}, placeholder: 'Page title', disabled: !editable, className: 'mb-2 mt-0 h-fit border-none bg-transparent p-0 font-serif italic tracking-tight text-4xl text-primary-12 shadow-none focus-visible:ring-0 md:text-5xl disabled:cursor-default disabled:opacity-100 dark:bg-transparent', suppressHydrationWarning: true })] }), _jsxs("div", { children: [_jsx(Label, { htmlFor: 'docs-description', className: 'sr-only', children: "Description" }), _jsx(Textarea, { ref: descriptionRef, id: 'docs-description', rows: 1, value: draft.description, onChange: e => edit?.update({ description: e.currentTarget.value }), placeholder: 'Add a description...', disabled: !editable, className: 'min-h-0 resize-none overflow-hidden border-none bg-transparent p-0 text-base text-pretty text-primary-11 shadow-none focus-visible:ring-0 disabled:cursor-default disabled:opacity-100 dark:bg-transparent', suppressHydrationWarning: true })] }), (updatedAt || contributors.length > 0) && (_jsxs("div", { className: 'mt-4 flex flex-wrap items-center gap-2 text-sm text-primary-11', children: [updatedAt && _jsxs("span", { children: ["Last modified ", new Intl.DateTimeFormat('en-AU', { day: 'numeric', month: 'short', year: 'numeric' }).format(new Date(updatedAt))] }), contributors.map(c => _jsx(Badge, { size: 'sm', title: 'Contributing author', variant: 'secondary-tonal', children: c }, c))] }))] }) }));
|
|
330
|
+
},
|
|
331
|
+
};
|
|
332
|
+
/**
|
|
333
|
+
* Renders the scaffold component.
|
|
334
|
+
*
|
|
335
|
+
* @param props - Tree, route, user, document content, edit permission, metadata, and display mode for the Docs page shell.
|
|
336
|
+
* @param tree - Tree input supplied to scaffold's operation.
|
|
337
|
+
* @param pathname - Pathname input supplied to scaffold's operation.
|
|
338
|
+
* @param permission - Permission input supplied to scaffold's operation.
|
|
339
|
+
* @param userData - user record supplied to scaffold.
|
|
340
|
+
* @param description - Supporting text shown in scaffold.
|
|
341
|
+
* @param contributors - Contributors input supplied to scaffold's operation.
|
|
342
|
+
* @param updatedAt - Updated at input supplied to scaffold's operation.
|
|
343
|
+
* @param full - Full input supplied to scaffold's operation.
|
|
344
|
+
* @param standalone - Standalone input supplied to scaffold's operation.
|
|
345
|
+
* @param path - Source or route path resolved for scaffold.
|
|
346
|
+
* @param compiledMDX - Compiled mdx input supplied to scaffold's operation.
|
|
347
|
+
* @param title - Heading text shown in scaffold.
|
|
348
|
+
* @param source - Source node identifier for the connection drawn by scaffold.
|
|
349
|
+
* @param content - Content input supplied to scaffold's operation.
|
|
350
|
+
* @param mode - Mode input supplied to scaffold's operation.
|
|
351
|
+
*
|
|
352
|
+
* @return The Docs scaffold with its navigation tree, content surface, and page controls.
|
|
353
|
+
*/
|
|
354
|
+
export default function Scaffold({ tree, pathname: initPathname, permission, userData, description: initDesc, contributors: initContributors, updatedAt: initUpdatedAt, full = false, standalone = false, path: initPath, compiledMDX: initMdx = '', title: initTitle, source: initSrc, content: initContent, mode: initialMode, viewContent, beforeContent, afterContent, blocks: docsBlocks, }) {
|
|
355
|
+
// STATES
|
|
356
|
+
const navigationState = { open: useAtom($sidebar) };
|
|
357
|
+
// Match the original Docs shell: only render the Portable Text editor after hydration.
|
|
358
|
+
// Its external store is not SSR-safe, and rendering it in the initial HTML causes React #419.
|
|
359
|
+
const [hydrated, setHydrated] = useState(standalone);
|
|
360
|
+
const toolbar = useAtom($toolbar);
|
|
361
|
+
const stored = useAtom($mode);
|
|
362
|
+
const writable = permission === 'write';
|
|
363
|
+
const modeSynced = useRef(false);
|
|
364
|
+
const pendingMode = useRef(initialMode ?? null);
|
|
365
|
+
const contributors = useMemo(() => initContributors ?? [], [initContributors]);
|
|
366
|
+
// prettier-ignore
|
|
367
|
+
const [dest, setDest] = useState({ open: false, section: '', group: '', title: 'Untitled', newSection: false, });
|
|
368
|
+
const destRes = useRef(null);
|
|
369
|
+
const sects = useMemo(() => tree.filter((n) => n.type === 'branch'), [tree]);
|
|
370
|
+
const destActions = {
|
|
371
|
+
groups: useMemo(() => {
|
|
372
|
+
if (!dest.section)
|
|
373
|
+
return [];
|
|
374
|
+
return (sects
|
|
375
|
+
.find((s) => s.origName === dest.section)
|
|
376
|
+
?.children?.filter((c) => c.type === 'branch') ?? []);
|
|
377
|
+
}, [sects, dest.section]),
|
|
378
|
+
finish: useCallback(async () => {
|
|
379
|
+
if (!dest.section || !dest.group)
|
|
380
|
+
return;
|
|
381
|
+
const section = dest.newSection
|
|
382
|
+
? dest.section.trim().toLowerCase().replace(TerraQualityRegex.REGEX_A_Z0_9_G_REGEX(), '-')
|
|
383
|
+
: dest.section;
|
|
384
|
+
const group = dest.newSection
|
|
385
|
+
? dest.group.trim().toLowerCase().replace(TerraQualityRegex.REGEX_A_Z0_9_G_REGEX(), '-')
|
|
386
|
+
: dest.group;
|
|
387
|
+
const sel = sects
|
|
388
|
+
.find((i) => i.origName === section)
|
|
389
|
+
?.children?.find((i) => i.type === 'branch' && i.origName === group);
|
|
390
|
+
const selPath = sel?.type === 'branch'
|
|
391
|
+
? sel.children?.find((i) => i.type === 'leaf' && Boolean(i.path))
|
|
392
|
+
: undefined;
|
|
393
|
+
const leafPath = selPath?.type === 'leaf' ? selPath.path : undefined;
|
|
394
|
+
const selBase = leafPath ? dirname(leafPath) : '';
|
|
395
|
+
const destPath = {
|
|
396
|
+
base: !dest.newSection && selBase && selBase !== '.' ? selBase : `${section}/${group}`,
|
|
397
|
+
slug: dest.title
|
|
398
|
+
.trim()
|
|
399
|
+
.toLowerCase()
|
|
400
|
+
.replace(TerraQualityRegex.REGEX_A_Z0_9_G_REGEX(), '-')
|
|
401
|
+
.replace(TerraQualityRegex.REGEX_G_REGEX_20(), '') || 'untitled',
|
|
402
|
+
};
|
|
403
|
+
destRes.current?.({
|
|
404
|
+
path: `${destPath.base}/${destPath.slug}.mdx`,
|
|
405
|
+
parentId: dest.newSection ? undefined : sel?.origName,
|
|
406
|
+
title: dest.title.trim() || 'Untitled',
|
|
407
|
+
});
|
|
408
|
+
destRes.current = null;
|
|
409
|
+
setDest((p) => ({ ...p, open: false }));
|
|
410
|
+
}, [dest, sects]),
|
|
411
|
+
};
|
|
412
|
+
// prettier-ignore
|
|
413
|
+
const [currDoc, setCurrDoc] = useState({ pathname: initPathname, path: initPath, title: initTitle, description: initDesc, contributors, updatedAt: initUpdatedAt, source: initSrc || (typeof initContent === 'string' ? initContent : ''), content: toPortableBody(initContent), compiledMDX: initMdx, versions: [] });
|
|
414
|
+
// 1. ASTRO VIEW TRANSITION / HMR PROP SYNC
|
|
415
|
+
// Force component state to update if Astro swaps the underlying page and injects new props into this instance.
|
|
416
|
+
useEffect(() => {
|
|
417
|
+
const content = toPortableBody(initContent);
|
|
418
|
+
const src = initSrc || (typeof initContent === 'string' ? initContent : '');
|
|
419
|
+
setCurrDoc((p) => {
|
|
420
|
+
const existingContributors = Array.isArray(p.contributors) ? p.contributors : [];
|
|
421
|
+
if (p.pathname === initPathname &&
|
|
422
|
+
p.path === initPath &&
|
|
423
|
+
p.title === initTitle &&
|
|
424
|
+
p.description === initDesc &&
|
|
425
|
+
p.updatedAt === initUpdatedAt &&
|
|
426
|
+
p.source === src &&
|
|
427
|
+
p.compiledMDX === initMdx &&
|
|
428
|
+
Array.isArray(p.contributors) &&
|
|
429
|
+
existingContributors.length === contributors.length &&
|
|
430
|
+
existingContributors.every((c, i) => c === contributors[i]) &&
|
|
431
|
+
JSON.stringify(p.content) === JSON.stringify(content))
|
|
432
|
+
return p;
|
|
433
|
+
return {
|
|
434
|
+
...p,
|
|
435
|
+
pathname: initPathname,
|
|
436
|
+
path: initPath,
|
|
437
|
+
title: initTitle,
|
|
438
|
+
description: initDesc,
|
|
439
|
+
contributors,
|
|
440
|
+
updatedAt: initUpdatedAt,
|
|
441
|
+
source: src,
|
|
442
|
+
content,
|
|
443
|
+
compiledMDX: initMdx,
|
|
444
|
+
versions: p.versions,
|
|
445
|
+
};
|
|
446
|
+
});
|
|
447
|
+
}, [
|
|
448
|
+
initPathname,
|
|
449
|
+
initPath,
|
|
450
|
+
initTitle,
|
|
451
|
+
initDesc,
|
|
452
|
+
contributors,
|
|
453
|
+
initUpdatedAt,
|
|
454
|
+
initSrc,
|
|
455
|
+
initContent,
|
|
456
|
+
initMdx,
|
|
457
|
+
]);
|
|
458
|
+
useEffect(() => {
|
|
459
|
+
/**
|
|
460
|
+
* Handles rename.
|
|
461
|
+
*
|
|
462
|
+
* @param e - Pointer event received from the editor control.
|
|
463
|
+
*/
|
|
464
|
+
const rename = (e) => {
|
|
465
|
+
if (!e.detail.isActive ||
|
|
466
|
+
typeof e.detail.title !== 'string')
|
|
467
|
+
return;
|
|
468
|
+
const title = e.detail.title;
|
|
469
|
+
setCurrDoc((p) => ({ ...p, title }));
|
|
470
|
+
};
|
|
471
|
+
document.addEventListener('docs:rename', rename);
|
|
472
|
+
return () => {
|
|
473
|
+
document.removeEventListener('docs:rename', rename);
|
|
474
|
+
};
|
|
475
|
+
}, []);
|
|
476
|
+
useEffect(() => {
|
|
477
|
+
setDocumentTitle(currDoc.title);
|
|
478
|
+
}, [currDoc.path, currDoc.title]);
|
|
479
|
+
useEffect(() => {
|
|
480
|
+
/**
|
|
481
|
+
* Handles update favicon.
|
|
482
|
+
*/
|
|
483
|
+
const updateFavicon = () => {
|
|
484
|
+
const favicon = document.getElementById('favicon');
|
|
485
|
+
if (!favicon)
|
|
486
|
+
return;
|
|
487
|
+
const href = favicon.href.split(',')[1];
|
|
488
|
+
if (!href)
|
|
489
|
+
return;
|
|
490
|
+
const styles = getComputedStyle(document.documentElement);
|
|
491
|
+
const primary = styles.getPropertyValue('--primaryLight9').trim();
|
|
492
|
+
const secondary = styles.getPropertyValue('--secondaryLight5').trim();
|
|
493
|
+
if (!primary || !secondary)
|
|
494
|
+
return;
|
|
495
|
+
favicon.href = `data:image/svg+xml,${encodeURIComponent(decodeURIComponent(href)
|
|
496
|
+
.replace(/fill="[^"]*"\s*stroke="[^"]*"/, `fill="rgb(${secondary})" stroke="rgb(${secondary})"`)
|
|
497
|
+
.replace(/fill="[^"]*"/, `fill="rgb(${primary})"`))}`;
|
|
498
|
+
};
|
|
499
|
+
updateFavicon();
|
|
500
|
+
document.addEventListener('docs:hue-change', updateFavicon);
|
|
501
|
+
return () => {
|
|
502
|
+
document.removeEventListener('docs:hue-change', updateFavicon);
|
|
503
|
+
};
|
|
504
|
+
}, []);
|
|
505
|
+
// 2. SPA NAVIGATION INTERCEPT & URL SYNC
|
|
506
|
+
// Only updates the state, letting React naturally handle side effects.
|
|
507
|
+
useEffect(() => {
|
|
508
|
+
/**
|
|
509
|
+
* Handles handle nav.
|
|
510
|
+
*
|
|
511
|
+
* @param e - Keyboard or pointer event received from the editor control.
|
|
512
|
+
*/
|
|
513
|
+
const handleNav = (e) => {
|
|
514
|
+
setCurrDoc((previous) => {
|
|
515
|
+
const detail = (e.detail || {});
|
|
516
|
+
const rawPathname = typeof detail.pathname === 'string'
|
|
517
|
+
? detail.pathname
|
|
518
|
+
: typeof detail.url === 'string'
|
|
519
|
+
? detail.url
|
|
520
|
+
: previous.pathname || '';
|
|
521
|
+
const pathname = keepDeepPath(previous.pathname || '', rawPathname ? rawPathname.split('?')[0] || '' : previous.pathname || '');
|
|
522
|
+
const contributors = Array.isArray(detail.contributors)
|
|
523
|
+
? detail.contributors.filter((value) => typeof value === 'string')
|
|
524
|
+
: pathname === previous.pathname && Array.isArray(previous.contributors)
|
|
525
|
+
? previous.contributors
|
|
526
|
+
: [];
|
|
527
|
+
return {
|
|
528
|
+
...previous,
|
|
529
|
+
...detail,
|
|
530
|
+
contributors,
|
|
531
|
+
source: Object.prototype.hasOwnProperty.call(detail, 'source') &&
|
|
532
|
+
typeof detail.source === 'string'
|
|
533
|
+
? detail.source
|
|
534
|
+
: previous.source || '',
|
|
535
|
+
content: isDocBody(detail.content) ? detail.content : previous.content,
|
|
536
|
+
pathname,
|
|
537
|
+
compiledMDX: Object.prototype.hasOwnProperty.call(detail, 'compiledMDX') &&
|
|
538
|
+
detail.compiledMDX !== undefined
|
|
539
|
+
? String(detail.compiledMDX)
|
|
540
|
+
: (previous.compiledMDX ?? ''),
|
|
541
|
+
versions: previous.versions,
|
|
542
|
+
};
|
|
543
|
+
});
|
|
544
|
+
};
|
|
545
|
+
document.addEventListener('docs:navigate', handleNav);
|
|
546
|
+
window.addEventListener('docs:navigate', handleNav);
|
|
547
|
+
// Handle 403/404 Soft-Redirect Intercepts
|
|
548
|
+
/**
|
|
549
|
+
* Handles handle err redirect.
|
|
550
|
+
*
|
|
551
|
+
* @param e - Change event received from the active Docs input.
|
|
552
|
+
*/
|
|
553
|
+
const handleErrRedirect = (e) => {
|
|
554
|
+
const type = (e.detail || {}).type; // '403' or '404'
|
|
555
|
+
console.warn(`[Scaffold] Caught docs:error:redirect event (${type}). Performing soft redirect...`);
|
|
556
|
+
toast.error(type === '403' ? 'Permission denied.' : 'Document not found.');
|
|
557
|
+
if (type === '403') {
|
|
558
|
+
const url = new URL(window.location.href);
|
|
559
|
+
url.searchParams.delete('403');
|
|
560
|
+
url.searchParams.delete('404');
|
|
561
|
+
window.history.replaceState(null, '', `${url.pathname}${url.search}${url.hash}`);
|
|
562
|
+
return;
|
|
563
|
+
}
|
|
564
|
+
// find first leaf to fall back to securely
|
|
565
|
+
/**
|
|
566
|
+
* Handles get first leaf.
|
|
567
|
+
*
|
|
568
|
+
* @param nodes - Docs tree nodes being rendered in the navigation.
|
|
569
|
+
*/
|
|
570
|
+
const cFallback = ((function firstLeaf(nodes) {
|
|
571
|
+
for (const n of nodes) {
|
|
572
|
+
if (n.type === 'leaf')
|
|
573
|
+
return n.url || null;
|
|
574
|
+
if (n.type === 'branch' && n.children) {
|
|
575
|
+
const found = firstLeaf(n.children);
|
|
576
|
+
if (found)
|
|
577
|
+
return found;
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
return null;
|
|
581
|
+
})(tree) || docsRootPath()).split('?')[0];
|
|
582
|
+
const url = new URL(window.location.href);
|
|
583
|
+
url.pathname = cFallback;
|
|
584
|
+
url.searchParams.delete('403');
|
|
585
|
+
url.searchParams.delete('404');
|
|
586
|
+
window.history.replaceState(null, '', url.toString());
|
|
587
|
+
document.dispatchEvent(new CustomEvent('docs:navigate', { detail: { url: cFallback, pathname: cFallback } }));
|
|
588
|
+
};
|
|
589
|
+
document.addEventListener('docs:error:redirect', handleErrRedirect);
|
|
590
|
+
return () => {
|
|
591
|
+
document.removeEventListener('docs:navigate', handleNav);
|
|
592
|
+
window.removeEventListener('docs:navigate', handleNav);
|
|
593
|
+
document.removeEventListener('docs:error:redirect', handleErrRedirect);
|
|
594
|
+
};
|
|
595
|
+
}, [tree]);
|
|
596
|
+
// keep the selected mode and URL query aligned so reloads preserve the active surface
|
|
597
|
+
useEffect(() => {
|
|
598
|
+
if (modeSynced.current)
|
|
599
|
+
return;
|
|
600
|
+
modeSynced.current = true;
|
|
601
|
+
if (typeof window === 'undefined')
|
|
602
|
+
return;
|
|
603
|
+
const cur = new URL(window.location.href).searchParams.get('mode');
|
|
604
|
+
if (!writable && stored === 'edit')
|
|
605
|
+
$mode.set('view');
|
|
606
|
+
if (cur && ['view', 'edit', 'attachments'].includes(cur) && (writable || cur !== 'edit')) {
|
|
607
|
+
pendingMode.current = cur;
|
|
608
|
+
if (cur !== stored)
|
|
609
|
+
$mode.set(cur);
|
|
610
|
+
}
|
|
611
|
+
else if (!cur && stored !== 'view')
|
|
612
|
+
$mode.set('view');
|
|
613
|
+
}, [stored, writable]);
|
|
614
|
+
useEffect(() => {
|
|
615
|
+
if (pendingMode.current && stored !== pendingMode.current)
|
|
616
|
+
return;
|
|
617
|
+
pendingMode.current = null;
|
|
618
|
+
const url = new URL(window.location.href);
|
|
619
|
+
const cur = url.searchParams.get('mode');
|
|
620
|
+
if (!writable) {
|
|
621
|
+
if (cur === 'edit') {
|
|
622
|
+
url.searchParams.delete('mode');
|
|
623
|
+
window.history.replaceState(null, '', `${url.pathname}${url.search}${url.hash}`);
|
|
624
|
+
}
|
|
625
|
+
if (stored === 'edit')
|
|
626
|
+
$mode.set('view');
|
|
627
|
+
return;
|
|
628
|
+
}
|
|
629
|
+
if (cur === stored)
|
|
630
|
+
return;
|
|
631
|
+
if (stored === 'view')
|
|
632
|
+
url.searchParams.delete('mode');
|
|
633
|
+
else
|
|
634
|
+
url.searchParams.set('mode', stored);
|
|
635
|
+
window.history.replaceState(null, '', `${url.pathname}${url.search}${url.hash}`);
|
|
636
|
+
}, [stored, writable]);
|
|
637
|
+
// Ensure URL matches document viewed (without appending duplicate query strings)
|
|
638
|
+
useEffect(() => {
|
|
639
|
+
const url = new URL(window.location.href);
|
|
640
|
+
const cCurrPath = currDoc.pathname?.split('?')[0];
|
|
641
|
+
if (!cCurrPath)
|
|
642
|
+
return;
|
|
643
|
+
// Local repository adapters can address pages by #id while sharing `/`.
|
|
644
|
+
// Keep the id in the hash instead of encoding `#` into the URL pathname.
|
|
645
|
+
const routeUrl = new URL(cCurrPath, url.origin);
|
|
646
|
+
if (routeUrl.hash) {
|
|
647
|
+
if (url.pathname !== routeUrl.pathname || url.hash !== routeUrl.hash) {
|
|
648
|
+
url.pathname = routeUrl.pathname;
|
|
649
|
+
url.hash = routeUrl.hash;
|
|
650
|
+
window.history.replaceState(null, '', url.toString());
|
|
651
|
+
}
|
|
652
|
+
return;
|
|
653
|
+
}
|
|
654
|
+
const nPath = keepDeepPath(url.pathname, routeUrl.pathname);
|
|
655
|
+
if (nPath && url.pathname !== nPath) {
|
|
656
|
+
console.info('[Docs:url-sync]', {
|
|
657
|
+
current: url.pathname,
|
|
658
|
+
next: routeUrl.pathname,
|
|
659
|
+
path: currDoc.path,
|
|
660
|
+
resolved: nPath,
|
|
661
|
+
});
|
|
662
|
+
url.pathname = nPath;
|
|
663
|
+
window.history.replaceState(null, '', url.toString());
|
|
664
|
+
}
|
|
665
|
+
}, [currDoc.pathname]);
|
|
666
|
+
// PROCESS
|
|
667
|
+
const a = !hydrated
|
|
668
|
+
? (initialMode ?? 'view')
|
|
669
|
+
: !writable && stored === 'edit'
|
|
670
|
+
? 'view'
|
|
671
|
+
: stored;
|
|
672
|
+
// unify all loading scenarios into a single boolean
|
|
673
|
+
const loadingState = {
|
|
674
|
+
isSaving: toolbar?.busy === 'saving' && !toolbar?.optimistic,
|
|
675
|
+
transition: useTransitionState(),
|
|
676
|
+
};
|
|
677
|
+
const isLoading = !hydrated || loadingState.isSaving || loadingState.transition !== 'idle';
|
|
678
|
+
useEffect(() => {
|
|
679
|
+
setHydrated(true);
|
|
680
|
+
if (!writable && stored === 'edit')
|
|
681
|
+
$mode.set('view');
|
|
682
|
+
}, [currDoc.pathname, writable, stored]);
|
|
683
|
+
useEffect(() => {
|
|
684
|
+
const url = new URL(window.location.href);
|
|
685
|
+
if (!(url.searchParams.get('403') === 'true'))
|
|
686
|
+
return;
|
|
687
|
+
console.warn('[Docs:403]', { pathname: url.pathname, search: url.search });
|
|
688
|
+
toast.error('Permission denied.');
|
|
689
|
+
url.searchParams.delete('403');
|
|
690
|
+
url.searchParams.delete('404');
|
|
691
|
+
window.history.replaceState(null, '', `${url.pathname}${url.search}${url.hash}`);
|
|
692
|
+
}, []);
|
|
693
|
+
// RENDER
|
|
694
|
+
if (standalone) {
|
|
695
|
+
return (_jsx(TransitionShell, { className: "size-full min-w-0 max-w-none overflow-visible text-inherit print:m-0 print:h-auto print:min-h-0 print:w-full print:overflow-visible print:p-0", mode: "view", children: _jsx("div", { "data-docs-shell": true, "data-docs-mode": "view", className: "w-full", children: _jsx("div", { className: cn('mx-auto w-full px-6 md:px-10', full ? 'max-w-none' : 'max-w-5xl'), children: _jsx("div", { "data-docs-body": true, className: "relative h-full min-h-[50vh] text-primary-12", children: _jsx("div", { className: "prose max-w-none pb-40 pt-8 transition-opacity duration-200", "data-docs-body-content": true, "data-docs-view-root": "true", children: _jsx(ErrorBoundary, { name: "StandaloneBody", fallback: () => (_jsx(AlertError, { title: "Standalone Surface Crashed", description: "The standalone documentation surface crashed during rendering." })), children: _jsx(View, { body: isDocBody(currDoc.content) ? currDoc.content : [], resetKey: currDoc.path ?? currDoc.pathname }) }) }) }) }) }) }));
|
|
696
|
+
}
|
|
697
|
+
return (_jsxs(SidebarProvider, { className: "terra-docs-workspace font-docs", open: hydrated ? navigationState.open : true, onOpenChange: (n) => {
|
|
698
|
+
$sidebar.set(n);
|
|
699
|
+
}, children: [_jsx(Toaster, { richColors: true }), _jsx(Nav, { docs: tree, pathname: currDoc.pathname, permission: permission, userData: userData ?? null, siteTitle: getDocsHostAdapter()?.siteTitle ?? 'Terra Symposium', siteDescription: getDocsHostAdapter()?.siteDescription, homePath: getDocsHostAdapter()?.homePath ?? docsRootPath() }), _jsxs(SidebarInset, { className: "relative flex min-h-svh min-w-0 flex-col print:min-h-0", children: [_jsx(ErrorBoundary, { name: "NavHeader", children: _jsxs("header", { className: "flex h-14 shrink-0 items-center border-b border-primary-6 bg-primary-2 px-5 md:hidden print:hidden", children: [_jsx(SidebarTrigger, {}), _jsx(Separator, { orientation: "vertical", className: "mx-2 h-4" }), _jsx("span", { className: "font-serif text-lg", children: getDocsHostAdapter()?.siteTitle ?? 'Terra Symposium' })] }) }), _jsxs("div", { className: cn('relative flex min-h-0 flex-1 flex-col', isLoading && 'overflow-hidden'), children: [hydrated && !loadingState.isSaving && (_jsx(TransitionShell, { className: cn('size-full min-w-0 max-w-none overflow-visible text-inherit print:m-0 print:h-auto print:min-h-0 print:w-full print:overflow-visible print:p-0', loadingState.isSaving
|
|
700
|
+
? 'hidden'
|
|
701
|
+
: isLoading
|
|
702
|
+
? 'pointer-events-none absolute inset-0 overflow-hidden opacity-0'
|
|
703
|
+
: 'block'), mode: a, path: currDoc.path, children: _jsx(EditProvider, { permission: permission, ...currDoc, children: _jsxs("div", { className: "w-full", children: [_jsx(EditorSurfaces.Head, { compact: a === 'edit', editable: writable && a !== 'view', title: currDoc.title, full: full, ...(currDoc.description !== undefined && { description: currDoc.description }), contributors: currDoc.contributors, updatedAt: currDoc.updatedAt }), _jsx("div", { className: "w-full", children: _jsx("div", { className: cn('mx-auto w-full px-6 md:px-10', full ? 'max-w-none' : 'max-w-5xl'), children: _jsxs("div", { "data-docs-body": true, className: "relative h-full min-h-[50vh] text-primary-12", children: [a !== 'edit' && (_jsx(Toolbar, { toolbar: toolbar, activeMode: a, editable: writable })), _jsx("div", { className: cn('prose max-w-none pb-40 transition-opacity duration-200', a === 'edit' ? 'pt-2' : 'pt-8'), "data-docs-body-content": true, "data-docs-view-root": a === 'view' ? 'true' : undefined, children: _jsx(ErrorBoundary, { name: "EditorBody", resetKey: `${a}:${currDoc.path ?? ''}`, fallback: () => (_jsx("div", { className: "p-8", children: _jsx(AlertError, { title: "Editor Surface Crashed", description: "The workspace editor canvas encountered a rendering crash. You can safely switch to attachments view to recover." }) })), children: hydrated &&
|
|
704
|
+
(a === 'view' ? (_jsxs(_Fragment, { children: [beforeContent, viewContent ?? (_jsx(View, { body: isDocBody(currDoc.content) ? currDoc.content : [], blocks: docsBlocks, resetKey: currDoc.path ?? currDoc.pathname })), afterContent] })) : a === 'edit' ? (_jsx(EditorSurfaces.Edit, { blocks: docsBlocks, editable: writable })) : a === 'attachments' ? (_jsx(Attachments, { dPath: currDoc.path ?? '', tree: tree })) : null) }) })] }) }) })] }) }, currDoc.pathname) })), isLoading && _jsx(Loader, { className: "absolute inset-0 z-10" })] }), _jsx(Dialog, { open: dest.open, onOpenChange: (o) => {
|
|
705
|
+
if (!o)
|
|
706
|
+
destRes.current?.(null);
|
|
707
|
+
setDest((p) => ({ ...p, open: o }));
|
|
708
|
+
}, children: _jsxs(DialogContent, { children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: "Save document" }), _jsx(DialogDescription, { children: "Choose where to save this document." })] }), _jsxs("div", { className: 'space-y-4', children: [_jsx(Label, { children: "Page title" }), _jsx(Input, { value: dest.title, onChange: e => { setDest(p => ({ ...p, title: e.currentTarget.value })); } }), _jsx(Label, { children: "Section" }), _jsxs(Select, { value: dest.section, onValueChange: v => { setDest(p => ({ ...p, section: v, group: sects.find(s => s.origName === v)?.children?.find(c => c.type === 'branch')?.origName || '' })); }, children: [_jsx(SelectTrigger, { "aria-label": 'Select section', children: _jsx(SelectValue, { placeholder: 'Select section' }) }), _jsx(SelectContent, { children: sects.map(s => (_jsx(SelectItem, { value: s.origName, children: s.title || s.origName }, s.origName))) })] }), _jsx(Label, { children: "Group" }), _jsxs(Select, { value: dest.group, onValueChange: g => { setDest(p => ({ ...p, group: g })); }, children: [_jsx(SelectTrigger, { "aria-label": 'Select group', children: _jsx(SelectValue, { placeholder: 'Select group' }) }), _jsx(SelectContent, { children: destActions.groups.map(s => (_jsx(SelectItem, { value: s.origName, children: s.title || s.origName }, s.origName))) })] }), _jsx(Button, { variant: 'outline', onClick: () => { setDest(p => ({ ...p, newSection: !p.newSection, section: '', group: '' })); }, children: dest.newSection ? 'Use existing section' : 'Create new section' }), dest.newSection && (_jsxs(_Fragment, { children: [_jsx(Label, { children: "New section name" }), _jsx(Input, { value: dest.section, onChange: e => { setDest(p => ({ ...p, section: e.currentTarget.value })); } }), _jsx(Label, { children: "New group name" }), _jsx(Input, { value: dest.group, onChange: e => { setDest(p => ({ ...p, group: e.currentTarget.value })); } })] }))] }), _jsx(DialogFooter, { children: _jsx(Button, { onClick: destActions.finish, disabled: !dest.title.trim() || !dest.section || !dest.group, children: "Save" }) })] }) })] })] }));
|
|
709
|
+
}
|
|
710
|
+
//# sourceMappingURL=_main.js.map
|