@terra-symposium/docs 0.0.0-stage → 0.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +72 -2
  3. package/lib-dist/Docs.d.ts +22 -0
  4. package/lib-dist/Docs.d.ts.map +1 -0
  5. package/lib-dist/Docs.js +60 -0
  6. package/lib-dist/Docs.js.map +1 -0
  7. package/lib-dist/LocalDocsWorkspace.d.ts +30 -0
  8. package/lib-dist/LocalDocsWorkspace.d.ts.map +1 -0
  9. package/lib-dist/LocalDocsWorkspace.js +148 -0
  10. package/lib-dist/LocalDocsWorkspace.js.map +1 -0
  11. package/lib-dist/SiteLayout.d.ts +30 -0
  12. package/lib-dist/SiteLayout.d.ts.map +1 -0
  13. package/lib-dist/SiteLayout.js +34 -0
  14. package/lib-dist/SiteLayout.js.map +1 -0
  15. package/lib-dist/StaticWorkspace.d.ts +21 -0
  16. package/lib-dist/StaticWorkspace.d.ts.map +1 -0
  17. package/lib-dist/StaticWorkspace.js +179 -0
  18. package/lib-dist/StaticWorkspace.js.map +1 -0
  19. package/lib-dist/_Toolbar.d.ts +7 -0
  20. package/lib-dist/_Toolbar.d.ts.map +1 -0
  21. package/lib-dist/_Toolbar.js +85 -0
  22. package/lib-dist/_Toolbar.js.map +1 -0
  23. package/lib-dist/blocks.d.ts +23 -0
  24. package/lib-dist/blocks.d.ts.map +1 -0
  25. package/lib-dist/blocks.js +321 -0
  26. package/lib-dist/blocks.js.map +1 -0
  27. package/lib-dist/docs-catalog.d.ts +5 -0
  28. package/lib-dist/docs-catalog.d.ts.map +1 -0
  29. package/lib-dist/docs-catalog.js +38 -0
  30. package/lib-dist/docs-catalog.js.map +1 -0
  31. package/lib-dist/docs-style.css +31 -0
  32. package/lib-dist/fonts/Avara-Bold.woff2 +0 -0
  33. package/lib-dist/fonts/Avara-BoldItalic.woff2 +0 -0
  34. package/lib-dist/fonts/OFL-1.1.txt +93 -0
  35. package/lib-dist/fonts/README.md +5 -0
  36. package/lib-dist/host-runtime.d.ts +5 -0
  37. package/lib-dist/host-runtime.d.ts.map +1 -0
  38. package/lib-dist/host-runtime.js +21 -0
  39. package/lib-dist/host-runtime.js.map +1 -0
  40. package/lib-dist/host.d.ts +170 -0
  41. package/lib-dist/host.d.ts.map +1 -0
  42. package/lib-dist/host.js +2 -0
  43. package/lib-dist/host.js.map +1 -0
  44. package/lib-dist/index.d.ts +35 -0
  45. package/lib-dist/index.d.ts.map +1 -0
  46. package/lib-dist/index.js +28 -0
  47. package/lib-dist/index.js.map +1 -0
  48. package/lib-dist/markdown-model.d.ts +7 -0
  49. package/lib-dist/markdown-model.d.ts.map +1 -0
  50. package/lib-dist/markdown-model.js +181 -0
  51. package/lib-dist/markdown-model.js.map +1 -0
  52. package/lib-dist/markdown.d.ts +3 -0
  53. package/lib-dist/markdown.d.ts.map +1 -0
  54. package/lib-dist/markdown.js +83 -0
  55. package/lib-dist/markdown.js.map +1 -0
  56. package/lib-dist/navigation.d.ts +17 -0
  57. package/lib-dist/navigation.d.ts.map +1 -0
  58. package/lib-dist/navigation.js +9 -0
  59. package/lib-dist/navigation.js.map +1 -0
  60. package/lib-dist/schema.d.ts +135 -0
  61. package/lib-dist/schema.d.ts.map +1 -0
  62. package/lib-dist/schema.js +55 -0
  63. package/lib-dist/schema.js.map +1 -0
  64. package/lib-dist/style.css +1 -0
  65. package/lib-dist/terra/Workspace.d.ts +5 -0
  66. package/lib-dist/terra/Workspace.d.ts.map +1 -0
  67. package/lib-dist/terra/Workspace.js +9 -0
  68. package/lib-dist/terra/Workspace.js.map +1 -0
  69. package/lib-dist/terra/editor/TerraContentEditor.d.ts +10 -0
  70. package/lib-dist/terra/editor/TerraContentEditor.d.ts.map +1 -0
  71. package/lib-dist/terra/editor/TerraContentEditor.js +47 -0
  72. package/lib-dist/terra/editor/TerraContentEditor.js.map +1 -0
  73. package/lib-dist/terra/editor/_blocks.d.ts +71 -0
  74. package/lib-dist/terra/editor/_blocks.d.ts.map +1 -0
  75. package/lib-dist/terra/editor/_blocks.js +110 -0
  76. package/lib-dist/terra/editor/_blocks.js.map +1 -0
  77. package/lib-dist/terra/editor/docs/_Callout.d.ts +14 -0
  78. package/lib-dist/terra/editor/docs/_Callout.d.ts.map +1 -0
  79. package/lib-dist/terra/editor/docs/_Callout.js +41 -0
  80. package/lib-dist/terra/editor/docs/_Callout.js.map +1 -0
  81. package/lib-dist/terra/editor/docs/_CodeBlock.d.ts +39 -0
  82. package/lib-dist/terra/editor/docs/_CodeBlock.d.ts.map +1 -0
  83. package/lib-dist/terra/editor/docs/_CodeBlock.js +494 -0
  84. package/lib-dist/terra/editor/docs/_CodeBlock.js.map +1 -0
  85. package/lib-dist/terra/editor/docs/_DocsCode.d.ts +14 -0
  86. package/lib-dist/terra/editor/docs/_DocsCode.d.ts.map +1 -0
  87. package/lib-dist/terra/editor/docs/_DocsCode.js +95 -0
  88. package/lib-dist/terra/editor/docs/_DocsCode.js.map +1 -0
  89. package/lib-dist/terra/editor/docs/_DocsImage.d.ts +18 -0
  90. package/lib-dist/terra/editor/docs/_DocsImage.d.ts.map +1 -0
  91. package/lib-dist/terra/editor/docs/_DocsImage.js +62 -0
  92. package/lib-dist/terra/editor/docs/_DocsImage.js.map +1 -0
  93. package/lib-dist/terra/editor/docs/_Embed.d.ts +15 -0
  94. package/lib-dist/terra/editor/docs/_Embed.d.ts.map +1 -0
  95. package/lib-dist/terra/editor/docs/_Embed.js +27 -0
  96. package/lib-dist/terra/editor/docs/_Embed.js.map +1 -0
  97. package/lib-dist/terra/editor/docs/_Math.d.ts +31 -0
  98. package/lib-dist/terra/editor/docs/_Math.d.ts.map +1 -0
  99. package/lib-dist/terra/editor/docs/_Math.js +126 -0
  100. package/lib-dist/terra/editor/docs/_Math.js.map +1 -0
  101. package/lib-dist/terra/editor/docs/_Nodes.d.ts +15 -0
  102. package/lib-dist/terra/editor/docs/_Nodes.d.ts.map +1 -0
  103. package/lib-dist/terra/editor/docs/_Nodes.js +52 -0
  104. package/lib-dist/terra/editor/docs/_Nodes.js.map +1 -0
  105. package/lib-dist/terra/editor/docs/_Raw.d.ts +15 -0
  106. package/lib-dist/terra/editor/docs/_Raw.d.ts.map +1 -0
  107. package/lib-dist/terra/editor/docs/_Raw.js +26 -0
  108. package/lib-dist/terra/editor/docs/_Raw.js.map +1 -0
  109. package/lib-dist/terra/editor/docs/_Table.d.ts +12 -0
  110. package/lib-dist/terra/editor/docs/_Table.d.ts.map +1 -0
  111. package/lib-dist/terra/editor/docs/_Table.js +71 -0
  112. package/lib-dist/terra/editor/docs/_Table.js.map +1 -0
  113. package/lib-dist/terra/editor/docs/_Tabs.d.ts +14 -0
  114. package/lib-dist/terra/editor/docs/_Tabs.d.ts.map +1 -0
  115. package/lib-dist/terra/editor/docs/_Tabs.js +104 -0
  116. package/lib-dist/terra/editor/docs/_Tabs.js.map +1 -0
  117. package/lib-dist/terra/editor/docs/_TsDocs.d.ts +15 -0
  118. package/lib-dist/terra/editor/docs/_TsDocs.d.ts.map +1 -0
  119. package/lib-dist/terra/editor/docs/_TsDocs.js +81 -0
  120. package/lib-dist/terra/editor/docs/_TsDocs.js.map +1 -0
  121. package/lib-dist/terra/editor/docs/_math_inline.d.ts +14 -0
  122. package/lib-dist/terra/editor/docs/_math_inline.d.ts.map +1 -0
  123. package/lib-dist/terra/editor/docs/_math_inline.js +30 -0
  124. package/lib-dist/terra/editor/docs/_math_inline.js.map +1 -0
  125. package/lib-dist/terra/editor/docs/heading.d.ts +23 -0
  126. package/lib-dist/terra/editor/docs/heading.d.ts.map +1 -0
  127. package/lib-dist/terra/editor/docs/heading.js +60 -0
  128. package/lib-dist/terra/editor/docs/heading.js.map +1 -0
  129. package/lib-dist/terra/editor/docs/index.d.ts +13 -0
  130. package/lib-dist/terra/editor/docs/index.d.ts.map +1 -0
  131. package/lib-dist/terra/editor/docs/index.js +14 -0
  132. package/lib-dist/terra/editor/docs/index.js.map +1 -0
  133. package/lib-dist/terra/editor/types.d.ts +40 -0
  134. package/lib-dist/terra/editor/types.d.ts.map +1 -0
  135. package/lib-dist/terra/editor/types.js +11 -0
  136. package/lib-dist/terra/editor/types.js.map +1 -0
  137. package/lib-dist/terra/flow/Nodes.d.ts +78 -0
  138. package/lib-dist/terra/flow/Nodes.d.ts.map +1 -0
  139. package/lib-dist/terra/flow/Nodes.js +912 -0
  140. package/lib-dist/terra/flow/Nodes.js.map +1 -0
  141. package/lib-dist/terra/flow/_chrome.d.ts +267 -0
  142. package/lib-dist/terra/flow/_chrome.d.ts.map +1 -0
  143. package/lib-dist/terra/flow/_chrome.js +798 -0
  144. package/lib-dist/terra/flow/_chrome.js.map +1 -0
  145. package/lib-dist/terra/flow/_layout.d.ts +30 -0
  146. package/lib-dist/terra/flow/_layout.d.ts.map +1 -0
  147. package/lib-dist/terra/flow/_layout.js +53 -0
  148. package/lib-dist/terra/flow/_layout.js.map +1 -0
  149. package/lib-dist/terra/flow/menuContext.d.ts +13 -0
  150. package/lib-dist/terra/flow/menuContext.d.ts.map +1 -0
  151. package/lib-dist/terra/flow/menuContext.js +10 -0
  152. package/lib-dist/terra/flow/menuContext.js.map +1 -0
  153. package/lib-dist/terra/flow/powerSource.d.ts +16 -0
  154. package/lib-dist/terra/flow/powerSource.d.ts.map +1 -0
  155. package/lib-dist/terra/flow/powerSource.js +59 -0
  156. package/lib-dist/terra/flow/powerSource.js.map +1 -0
  157. package/lib-dist/terra/pages/docs/_attachments.d.ts +20 -0
  158. package/lib-dist/terra/pages/docs/_attachments.d.ts.map +1 -0
  159. package/lib-dist/terra/pages/docs/_attachments.js +904 -0
  160. package/lib-dist/terra/pages/docs/_attachments.js.map +1 -0
  161. package/lib-dist/terra/pages/docs/_blocks.d.ts +48 -0
  162. package/lib-dist/terra/pages/docs/_blocks.d.ts.map +1 -0
  163. package/lib-dist/terra/pages/docs/_blocks.js +192 -0
  164. package/lib-dist/terra/pages/docs/_blocks.js.map +1 -0
  165. package/lib-dist/terra/pages/docs/_custom.d.ts +5 -0
  166. package/lib-dist/terra/pages/docs/_custom.d.ts.map +1 -0
  167. package/lib-dist/terra/pages/docs/_custom.js +6 -0
  168. package/lib-dist/terra/pages/docs/_custom.js.map +1 -0
  169. package/lib-dist/terra/pages/docs/_editable.d.ts +61 -0
  170. package/lib-dist/terra/pages/docs/_editable.d.ts.map +1 -0
  171. package/lib-dist/terra/pages/docs/_editable.js +404 -0
  172. package/lib-dist/terra/pages/docs/_editable.js.map +1 -0
  173. package/lib-dist/terra/pages/docs/_export-dialog.d.ts +19 -0
  174. package/lib-dist/terra/pages/docs/_export-dialog.d.ts.map +1 -0
  175. package/lib-dist/terra/pages/docs/_export-dialog.js +78 -0
  176. package/lib-dist/terra/pages/docs/_export-dialog.js.map +1 -0
  177. package/lib-dist/terra/pages/docs/_helpers.d.ts +395 -0
  178. package/lib-dist/terra/pages/docs/_helpers.d.ts.map +1 -0
  179. package/lib-dist/terra/pages/docs/_helpers.js +911 -0
  180. package/lib-dist/terra/pages/docs/_helpers.js.map +1 -0
  181. package/lib-dist/terra/pages/docs/_icons.d.ts +20 -0
  182. package/lib-dist/terra/pages/docs/_icons.d.ts.map +1 -0
  183. package/lib-dist/terra/pages/docs/_icons.js +29 -0
  184. package/lib-dist/terra/pages/docs/_icons.js.map +1 -0
  185. package/lib-dist/terra/pages/docs/_main.d.ts +51 -0
  186. package/lib-dist/terra/pages/docs/_main.d.ts.map +1 -0
  187. package/lib-dist/terra/pages/docs/_main.js +1959 -0
  188. package/lib-dist/terra/pages/docs/_main.js.map +1 -0
  189. package/lib-dist/terra/pages/docs/_sidebar.d.ts +42 -0
  190. package/lib-dist/terra/pages/docs/_sidebar.d.ts.map +1 -0
  191. package/lib-dist/terra/pages/docs/_sidebar.js +2450 -0
  192. package/lib-dist/terra/pages/docs/_sidebar.js.map +1 -0
  193. package/lib-dist/terra/pages/docs/_toolbar.d.ts +23 -0
  194. package/lib-dist/terra/pages/docs/_toolbar.d.ts.map +1 -0
  195. package/lib-dist/terra/pages/docs/_toolbar.js +1539 -0
  196. package/lib-dist/terra/pages/docs/_toolbar.js.map +1 -0
  197. package/lib-dist/terra/pages/docs/_tree.d.ts +178 -0
  198. package/lib-dist/terra/pages/docs/_tree.d.ts.map +1 -0
  199. package/lib-dist/terra/pages/docs/_tree.js +1168 -0
  200. package/lib-dist/terra/pages/docs/_tree.js.map +1 -0
  201. package/lib-dist/terra/regex.mjs +398 -0
  202. package/lib-dist/terra/runtime/action-proxy.d.ts +5 -0
  203. package/lib-dist/terra/runtime/action-proxy.d.ts.map +1 -0
  204. package/lib-dist/terra/runtime/action-proxy.js +19 -0
  205. package/lib-dist/terra/runtime/action-proxy.js.map +1 -0
  206. package/lib-dist/terra/runtime/content.d.ts +150 -0
  207. package/lib-dist/terra/runtime/content.d.ts.map +1 -0
  208. package/lib-dist/terra/runtime/content.js +1171 -0
  209. package/lib-dist/terra/runtime/content.js.map +1 -0
  210. package/lib-dist/terra/runtime/leaf.d.ts +5 -0
  211. package/lib-dist/terra/runtime/leaf.d.ts.map +1 -0
  212. package/lib-dist/terra/runtime/leaf.js +13 -0
  213. package/lib-dist/terra/runtime/leaf.js.map +1 -0
  214. package/lib-dist/terra/runtime/nodes.d.ts +112 -0
  215. package/lib-dist/terra/runtime/nodes.d.ts.map +1 -0
  216. package/lib-dist/terra/runtime/nodes.js +534 -0
  217. package/lib-dist/terra/runtime/nodes.js.map +1 -0
  218. package/lib-dist/terra/runtime/runtime.d.ts +25 -0
  219. package/lib-dist/terra/runtime/runtime.d.ts.map +1 -0
  220. package/lib-dist/terra/runtime/runtime.js +50 -0
  221. package/lib-dist/terra/runtime/runtime.js.map +1 -0
  222. package/lib-dist/terra/runtime/shared.d.ts +35 -0
  223. package/lib-dist/terra/runtime/shared.d.ts.map +1 -0
  224. package/lib-dist/terra/runtime/shared.js +79 -0
  225. package/lib-dist/terra/runtime/shared.js.map +1 -0
  226. package/lib-dist/terra/runtime/types.d.ts +266 -0
  227. package/lib-dist/terra/runtime/types.d.ts.map +1 -0
  228. package/lib-dist/terra/runtime/types.js +18 -0
  229. package/lib-dist/terra/runtime/types.js.map +1 -0
  230. package/lib-dist/terra/runtime/ui.d.ts +31 -0
  231. package/lib-dist/terra/runtime/ui.d.ts.map +1 -0
  232. package/lib-dist/terra/runtime/ui.js +16 -0
  233. package/lib-dist/terra/runtime/ui.js.map +1 -0
  234. package/lib-dist/workspace.d.ts +78 -0
  235. package/lib-dist/workspace.d.ts.map +1 -0
  236. package/lib-dist/workspace.js +151 -0
  237. package/lib-dist/workspace.js.map +1 -0
  238. package/package.json +90 -3
  239. package/src/SiteLayout.astro +38 -0
  240. package/src/navigation.tsx +47 -0
  241. package/src/style.css +733 -0
@@ -0,0 +1,534 @@
1
+ // @ts-nocheck -- canonical website diagram converter, now isolated from host imports.
2
+ /**
3
+ * astro/src/actions/docs/nodes.ts
4
+ * Pure utility functions for parsing and rendering node blocks.
5
+ * Extracted from the React component to prevent circular dependencies.
6
+ */
7
+ /*//////////////////////////////////////////////////
8
+ IMPORTS
9
+ //////////////////////////////////////////////////*/
10
+ // API
11
+ import { createTrace, validateType } from './runtime.js';
12
+ import { parse as fromYaml } from 'yaml';
13
+ // COMPONENTS
14
+ import * as TerraQualityRegex from '../regex.mjs';
15
+ /*//////////////////////////////////////////////////
16
+ CONFIG
17
+ //////////////////////////////////////////////////*/
18
+ const trace = createTrace('DOCS:nodes', false);
19
+ trace('module.loaded');
20
+ /**
21
+ * Canonical fallback `Nodes` block used when a document has no explicit graph markup.
22
+ *
23
+ * @remarks
24
+ * The template keeps the editor and migration paths aligned on a minimal valid node payload.
25
+ */
26
+ export const EMPTY_NODES = `\n\n<Nodes\n node_data={[\n { id: 'start', type: 'origin', data: { title: 'Start' } }\n ]}\n edges_data={[]}\n direction="TB"\n height={400}\n/>\n\n`;
27
+ /**
28
+ * Handles the nodes route.
29
+ */
30
+ export const NODES = {
31
+ empty: EMPTY_NODES,
32
+ jsx: EMPTY_NODES,
33
+ fields:
34
+ /*
35
+ * Validated UI node mappings matching structural attributes and parsing constraints.
36
+ */ [
37
+ { key: 'direction', kind: 'string', label: 'Direction', placeholder: 'TB or LR', tooltip: 'Graph flow direction.' },
38
+ { key: 'nodes', kind: 'expression', label: 'Nodes', placeholder: '[...]', textarea: true, tooltip: 'Node defs.' },
39
+ { key: 'edges', kind: 'expression', label: 'Edges', placeholder: '[...]', textarea: true, tooltip: 'Edge defs.' },
40
+ { key: 'height', kind: 'expression', label: 'Height', placeholder: '384', tooltip: 'Canvas height.' },
41
+ { key: 'nodeSep', kind: 'expression', label: 'node_sep', placeholder: '50', tooltip: 'Node x-spacing.' },
42
+ { key: 'rankSep', kind: 'expression', label: 'rank_sep', placeholder: '5', tooltip: 'Rank y-spacing.' },
43
+ { key: 'proximityConnect', kind: 'boolean', label: 'proximity', tooltip: 'Enable auto-connect.' },
44
+ ],
45
+ import: "import Nodes from '@src/pages/docs/blocks/nodes';",
46
+ keys: { direction: 'direction', edges: 'edges_data', height: 'height', nodeSep: 'node_sep', nodes: 'node_data', proximityConnect: 'proximity_connect', rankSep: 'rank_sep' },
47
+ rx: {
48
+ block: /(?:^|\n)[ \t\xA0]*\^\^\^[ \t]*\r?\n([\s\S]*?)\r?\n[ \t\xA0]*\^\^\^[ \t]*(?=\n|$)/g,
49
+ import: /^import\s+Nodes\s+from\s+['"]@(?:src|pages)\/pages\/docs\/(?:_components\/(?:blocks\/nodes|docs\/(?:editor\/nodes|scaffold\/nodes|nodes))|components\/_Nodes)['"];\s*\n?/m,
50
+ tag: /<Nodes\b[\s\S]*?\/>/g,
51
+ meta: /\b(nodes|edges|direction|height|nodeSep|rankSep|proximityConnect)=\{metadata\.([A-Za-z0-9_$]+)\}/g,
52
+ },
53
+ inline: (content, meta = {}) => {
54
+ trace('inline.start', { length: content.length });
55
+ const n = content
56
+ ?.replace(NODES.rx.import, '')
57
+ ?.replace(NODES.rx.tag, c => {
58
+ const vals = Object.fromEntries(Object.entries(properties(c)).map(([k, v]) => [k, `${v ?? ''}`]));
59
+ const result = {};
60
+ for (const field of NODES.fields) {
61
+ const content = Object.hasOwn(vals, field.key) ? vals[field.key] : undefined;
62
+ if (field.kind === 'boolean') {
63
+ if (content)
64
+ result[NODES.keys[field.key]] = true;
65
+ continue;
66
+ }
67
+ if (validateType(['string'], content) && content.trim()) {
68
+ const trimmed = content.trim();
69
+ const key = trimmed.match(/^metadata\.([A-Za-z0-9_$]+)$/)?.[1];
70
+ if (key) {
71
+ result[NODES.keys[field.key]] = meta[key];
72
+ }
73
+ else
74
+ result[NODES.keys[field.key]] = scalar(trimmed);
75
+ }
76
+ }
77
+ return jsx(result);
78
+ })
79
+ ?.replace(NODES.rx.block, (_, p) => {
80
+ // prettier-ignore
81
+ const src = p.replace(/^\s*```[a-z]*\r?\n/i, '').replace(/\r?\n\s*```\s*$/i, '').split('\n').map(l => l.replace(/^[ \t]*(?:>\s*)+/u, '')).join('\n').trim();
82
+ if (!src)
83
+ return jsx({ node_data: [{ id: 'start', type: 'terminator', data: { title: 'Start' } }], edges_data: [] });
84
+ const recs = [];
85
+ const statements = [];
86
+ for (const line of src.split('\n')) {
87
+ if (!line.trim()) {
88
+ recs.push(line);
89
+ continue;
90
+ }
91
+ if (TerraQualityRegex.REGEX_A_ZA_Z_W_S_U_REGEX().test(line.trim())) {
92
+ statements.push(line);
93
+ continue;
94
+ }
95
+ recs.push(line);
96
+ }
97
+ const san = recs.join('\n').trim();
98
+ const assignmentVals = {};
99
+ // prettier-ignore
100
+ for (const line of statements.join('\n').split('\n').map(x => x.trim()).filter(Boolean)) {
101
+ let i = 0;
102
+ while (i < line.length) {
103
+ const el = line.slice(i).match(/^([A-Za-z_$][\w$]*)\s*=\s*/u);
104
+ if (!el)
105
+ break;
106
+ i += el[0].length;
107
+ let v = '';
108
+ let depth = 0;
109
+ let mQuote = null;
110
+ while (i < line.length) {
111
+ const char = line[i];
112
+ if (mQuote) {
113
+ v += char;
114
+ if (char === '\\') {
115
+ v += line[i + 1] ?? '';
116
+ i += 2;
117
+ continue;
118
+ }
119
+ if (char === mQuote)
120
+ mQuote = null;
121
+ i++;
122
+ continue;
123
+ }
124
+ if (char === '"' || char === "'" || char === '`') {
125
+ mQuote = char;
126
+ v += char;
127
+ i++;
128
+ continue;
129
+ }
130
+ if (char === '[' || char === '{' || char === '(') {
131
+ depth++;
132
+ v += char;
133
+ i++;
134
+ continue;
135
+ }
136
+ if (char === ']' || char === '}' || char === ')') {
137
+ depth = Math.max(0, depth - 1);
138
+ v += char;
139
+ i++;
140
+ continue;
141
+ }
142
+ if (depth === 0 && TerraQualityRegex.REGEX_S_U_REGEX().test(char))
143
+ if (TerraQualityRegex.REGEX_A_ZA_Z_W_S_U_REGEX().test(line.slice(i).trimStart()))
144
+ break;
145
+ v += char;
146
+ i++;
147
+ }
148
+ const trimmed = v.trim();
149
+ assignmentVals[el[1]] = scalar((trimmed.match(/^\{([^{}\n]+)\}$/u)?.[1]?.trim() ?? (/^\{[-\w.'"`$]+\}$/u.test(trimmed) ? trimmed.slice(1, -1).trim() : null)) ?? trimmed);
150
+ while (i < line.length && TerraQualityRegex.REGEX_S_U_REGEX().test(line[i]))
151
+ i++;
152
+ }
153
+ }
154
+ const asgn = Object.keys(assignmentVals).length ? assignmentVals : null;
155
+ let parsed = null;
156
+ if (san) {
157
+ try {
158
+ parsed = fromYaml(san);
159
+ }
160
+ catch {
161
+ parsed = null;
162
+ }
163
+ }
164
+ if (!parsed) {
165
+ if (asgn)
166
+ parsed = asgn;
167
+ else {
168
+ try {
169
+ parsed = Function(`"use strict"; return ({\n${loose(src)}\n});`)();
170
+ }
171
+ catch {
172
+ parsed = null;
173
+ }
174
+ }
175
+ }
176
+ else if (asgn && validateType(['object'], parsed))
177
+ parsed = { ...parsed, ...asgn };
178
+ if (!parsed || !validateType(['object'], parsed) || Array.isArray(parsed))
179
+ return _;
180
+ return jsx(Object.fromEntries(Object.entries(parsed).flatMap(([k, c]) => {
181
+ const field = new Map(Object.entries(NODES.keys).map(([f, s]) => [s, f])).get(k) ?? (FIELDS.has(k) ? k : null);
182
+ if (!field)
183
+ return [];
184
+ return [[NODES.keys[field], c]];
185
+ })));
186
+ });
187
+ trace('inline.complete', { inputLength: content.length, outputLength: n?.length ?? 0, hasNodes: n?.includes('<Nodes') });
188
+ return n;
189
+ },
190
+ };
191
+ /**
192
+ * Encodes node payload arrays into a serializer-safe string literal.
193
+ *
194
+ * @remarks
195
+ * A template literal keeps the payload readable while preventing mdxeditor from compacting the
196
+ * payload back into a raw array expression during code/edit round-trips.
197
+ *
198
+ * @param value - Node or edge array to encode for safe serializer round-tripping.
199
+ */
200
+ export const encodeNodesPayload = (val) => `\`${(Array.isArray(val) ? `[\n${val.map(i => ` ${literal(i)}`).join(',\n')}\n ]` : '[]')
201
+ .replace(TerraQualityRegex.REGEX_G_REGEX_12(), '\\\\')
202
+ .replace(TerraQualityRegex.REGEX_G_REGEX_18(), '\\`')
203
+ .replace(TerraQualityRegex.REGEX_G_REGEX_16(), '\\$')}\``;
204
+ /**
205
+ * Decodes a serializer-safe node payload back into arrays.
206
+ *
207
+ * @remarks
208
+ * Accepts raw arrays, JSON strings, backtick-wrapped literals, and the newer quoted payload.
209
+ *
210
+ * @param value - Serialized node payload in array, JSON, or quoted literal form.
211
+ */
212
+ export const decodeNodesPayload = (val) => {
213
+ if (Array.isArray(val))
214
+ return val;
215
+ if (typeof val !== 'string' || !val.trim())
216
+ return [];
217
+ try {
218
+ const parsed = JSON.parse(val.trim().startsWith('`') && val.trim().endsWith('`')
219
+ ? val.trim().slice(1, -1).replace(TerraQualityRegex.REGEX_G_REGEX_15(), '`').replace(TerraQualityRegex.REGEX_G_REGEX_14(), '$').replace(TerraQualityRegex.REGEX_G_REGEX_13(), '\\')
220
+ : val.trim());
221
+ if (Array.isArray(parsed))
222
+ return parsed;
223
+ if (typeof parsed === 'string') {
224
+ const nested = JSON.parse(parsed);
225
+ return Array.isArray(nested) ? nested : [];
226
+ }
227
+ return [];
228
+ }
229
+ catch {
230
+ return [];
231
+ }
232
+ };
233
+ /**
234
+ * Reflows serialized `Nodes` tags into a stable multiline attribute shell.
235
+ *
236
+ * @param source - MDX source that may contain one or more `Nodes` tags.
237
+ *
238
+ * @returns Source with `Nodes` tags rewritten to a multiline layout.
239
+ *
240
+ * @remarks
241
+ * This keeps the code view stable even when the MDX editor would otherwise compact the shell.
242
+ */
243
+ export const fmtNodesSrc = (src) => {
244
+ trace('format.start', { length: src.length });
245
+ const n = src.replace(NODES.rx.tag, t => {
246
+ return `<Nodes\n${NODES.fields
247
+ .flatMap(f => {
248
+ const content = properties(t)[f.key];
249
+ if (validateType(['undefined'], content) || content === null || content === '')
250
+ return [];
251
+ if (f.kind === 'boolean')
252
+ return content === true || content === 'true' ? [f.key] : [];
253
+ if (f.key === 'nodes' || f.key === 'edges')
254
+ return [`${f.key}={${encodeNodesPayload(nodesPayload(content))}}`];
255
+ if (f.kind === 'string')
256
+ return typeof content === 'string' ? [`${f.key}=${JSON.stringify(content)}`] : [];
257
+ if (['height', 'nodeSep', 'rankSep'].includes(f.key))
258
+ return [`${f.key}={${typeof content === 'string' ? content.trim() : String(content)}}`];
259
+ return [`${f.key}={${JSON.stringify(content)}}`];
260
+ })
261
+ .map(a => ` ${a}`)
262
+ .join('\n')}\n/>`;
263
+ });
264
+ trace('format.complete', { length: n.length });
265
+ return n;
266
+ };
267
+ const FIELDS = new Map(NODES.fields.map(f => [f.key, f]));
268
+ /*//////////////////////////////////////////////////
269
+ FUNCTIONS
270
+ //////////////////////////////////////////////////*/
271
+ /**
272
+ * Serializes a value into a compact literal suitable for inline MDX attributes.
273
+ *
274
+ * @param v - Value to stringify.
275
+ *
276
+ * @returns A one-line literal that stays readable inside MDX attribute shells.
277
+ *
278
+ * @remarks Keeps serialized node metadata compact enough to embed inside MDX attributes.
279
+ */
280
+ const literal = (v) => {
281
+ if (Array.isArray(v))
282
+ return `[${v.map(literal).join(', ')}]`;
283
+ if (v && typeof v === 'object') {
284
+ return `{ ${Object.entries(v)
285
+ .sort(([l], [r]) => l.localeCompare(r))
286
+ .map(([k, e]) => `${JSON.stringify(k)}: ${literal(e)}`)
287
+ .join(', ')} }`;
288
+ }
289
+ if (typeof v === 'string')
290
+ return JSON.stringify(v);
291
+ if (typeof v === 'number' || typeof v === 'boolean')
292
+ return `${v}`;
293
+ if (v === null)
294
+ return 'null';
295
+ return 'undefined';
296
+ };
297
+ /**
298
+ * Interprets a plain scalar string without forcing object or array parsing.
299
+ *
300
+ * @param value - Scalar text to interpret.
301
+ *
302
+ * @returns Scalar value, or the original string when it should remain a literal label.
303
+ *
304
+ * @remarks The scalar path preserves plain strings unless they clearly parse as another primitive.
305
+ */
306
+ const scalar = (val) => {
307
+ const trimmed = val.trim();
308
+ if (!trimmed)
309
+ return '';
310
+ try {
311
+ if (trimmed.startsWith('{') || trimmed.startsWith('['))
312
+ return Function(`"use strict"; return (${loose(trimmed)});`)();
313
+ if (trimmed.startsWith('"') || trimmed.startsWith("'") || trimmed.startsWith('`') || TerraQualityRegex.REGEX_TRUE_FALSE_NULL_UNDEFINED_D_D_U_REGEX().test(trimmed))
314
+ return Function(`"use strict"; return (${trimmed});`)();
315
+ return Function(`"use strict"; return (${quote(trimmed)});`)();
316
+ }
317
+ catch {
318
+ return val;
319
+ }
320
+ };
321
+ /**
322
+ * Parses the raw attribute shell on a `Nodes` tag into a field map of editor keys and raw values.
323
+ *
324
+ * @param content - Raw `Nodes` tag source.
325
+ *
326
+ * @returns Parsed field values keyed by editor field name.
327
+ *
328
+ * @remarks This parser reads one inline `Nodes` tag at a time and preserves only recognized fields.
329
+ */
330
+ const properties = (content) => {
331
+ const vals = {};
332
+ let i = content.indexOf('Nodes') + 5;
333
+ while (i < content.length) {
334
+ while (TerraQualityRegex.REGEX_S_U_REGEX().test(content[i] ?? ''))
335
+ i++;
336
+ if (content.slice(i).startsWith('/>') || content[i] === '>')
337
+ break;
338
+ const name = content.slice(i).match(TerraQualityRegex.REGEX_A_ZA_Z_W_U_REGEX())?.[0];
339
+ if (!name) {
340
+ i++;
341
+ continue;
342
+ }
343
+ i += name.length;
344
+ const field = FIELDS.get(name);
345
+ while (TerraQualityRegex.REGEX_S_U_REGEX().test(content[i] ?? ''))
346
+ i++;
347
+ if (content[i] !== '=') {
348
+ if (field?.kind === 'boolean')
349
+ vals[field.key] = true;
350
+ continue;
351
+ }
352
+ i++;
353
+ while (TerraQualityRegex.REGEX_S_U_REGEX().test(content[i] ?? ''))
354
+ i++;
355
+ if (!field)
356
+ continue;
357
+ if (content[i] === '{') {
358
+ i++;
359
+ let depth = 1;
360
+ let v = '';
361
+ let mQuote = null;
362
+ for (; i < content.length; i++) {
363
+ const char = content[i];
364
+ if (!char)
365
+ break;
366
+ if (mQuote) {
367
+ v += char;
368
+ if (char === '\\') {
369
+ v += content[i + 1] ?? '';
370
+ i++;
371
+ continue;
372
+ }
373
+ if (char === mQuote)
374
+ mQuote = null;
375
+ continue;
376
+ }
377
+ if (char === '"' || char === "'" || char === '`') {
378
+ mQuote = char;
379
+ v += char;
380
+ continue;
381
+ }
382
+ if (char === '{') {
383
+ depth++;
384
+ v += char;
385
+ continue;
386
+ }
387
+ if (char === '}') {
388
+ depth--;
389
+ if (!depth)
390
+ break;
391
+ v += char;
392
+ continue;
393
+ }
394
+ v += char;
395
+ }
396
+ vals[field.key] = v.trim();
397
+ i++;
398
+ continue;
399
+ }
400
+ const qmarker = content[i];
401
+ if (qmarker !== '"' && qmarker !== "'")
402
+ continue;
403
+ i++;
404
+ const end = content.indexOf(qmarker, i);
405
+ if (end === -1)
406
+ break;
407
+ vals[field.key] = content.slice(i, end);
408
+ i = end + 1;
409
+ }
410
+ return vals;
411
+ };
412
+ /**
413
+ * Serializes a node payload into the `Nodes` JSX form used in docs.
414
+ *
415
+ * @param vals - Normalized node payload.
416
+ *
417
+ * @returns Rendered `Nodes` JSX string used by the editor and source view.
418
+ *
419
+ * @remarks The rendered tag shape matches the editor-side `Nodes` component contract.
420
+ */
421
+ const jsx = (vals) => {
422
+ return `<Nodes ${NODES.fields
423
+ .flatMap(f => {
424
+ const content = vals[NODES.keys[f.key]];
425
+ if (validateType(['undefined'], content) || content === null)
426
+ return [];
427
+ if (f.kind === 'boolean')
428
+ return content === true ? [f.key] : [];
429
+ if (f.kind === 'string')
430
+ return typeof content === 'string' ? [`${f.key}=${JSON.stringify(content)}`] : [];
431
+ return [`${f.key}={${f.key === 'nodes' || f.key === 'edges' ? encodeNodesPayload(nodesPayload(content)) : literal(content)}}`];
432
+ })
433
+ .join(' ')} />`;
434
+ };
435
+ /**
436
+ * Quotes a bare scalar when it would otherwise be misread by the YAML parser.
437
+ *
438
+ * @param x - String value to quote if needed.
439
+ *
440
+ * @returns Original string when it is already safe, otherwise a JSON-quoted literal.
441
+ *
442
+ * @remarks Plain identifiers are preserved so the generated YAML stays readable.
443
+ */
444
+ const quote = (x) => {
445
+ const y = x.trim();
446
+ if (!y)
447
+ return '""';
448
+ if (['"', "'", '`', '{', '['].includes(y?.[0]) || TerraQualityRegex.REGEX_TRUE_FALSE_NULL_UNDEFINED_D_D_U_REGEX().test(y))
449
+ return y;
450
+ return JSON.stringify(y);
451
+ };
452
+ /**
453
+ * Adds quoting to bare scalar values that would otherwise parse as JS expressions.
454
+ *
455
+ * @param body - Raw node block source.
456
+ *
457
+ * @returns Source with bare scalar values quoted so YAML does not misread them.
458
+ *
459
+ * @remarks This pass quotes bare values that would otherwise be misread as JS expressions.
460
+ */
461
+ const loose = (body) => {
462
+ let name = '';
463
+ let i = 0;
464
+ let mquote = null;
465
+ while (i < body.length) {
466
+ const char = body[i];
467
+ if (mquote) {
468
+ name += char;
469
+ if (char === '\\') {
470
+ name += body[i + 1] ?? '';
471
+ i += 2;
472
+ continue;
473
+ }
474
+ if (char === mquote)
475
+ mquote = null;
476
+ i++;
477
+ continue;
478
+ }
479
+ if (char === '"' || char === "'" || char === '`') {
480
+ mquote = char;
481
+ name += char;
482
+ i++;
483
+ continue;
484
+ }
485
+ if (char !== ':') {
486
+ name += char;
487
+ i++;
488
+ continue;
489
+ }
490
+ name += char;
491
+ i++;
492
+ while (body[i] === ' ' || body[i] === '\t') {
493
+ name += body[i];
494
+ i++;
495
+ }
496
+ const src = body[i] ?? '';
497
+ if (!src || ['"', "'", '`', '{', '[', '\n'].includes(src) || /[-\d]/u.test(src))
498
+ continue;
499
+ let end = i;
500
+ while (end < body.length && !/[,\]\n}]/u.test(body[end]))
501
+ end++;
502
+ const v = body.slice(i, end);
503
+ if (/^(?:true|false|null|undefined)$/u.test(v.trim()))
504
+ name += v;
505
+ else
506
+ name += quote(v);
507
+ i = end;
508
+ }
509
+ return name;
510
+ };
511
+ /**
512
+ * Normalizes a raw nodes payload before JSX emission.
513
+ *
514
+ * @param value - Raw attribute payload.
515
+ *
516
+ * @returns Decoded node payload ready for JSX emission.
517
+ *
518
+ * @remarks The payload may already be encoded as a backtick-wrapped string during a previous round-trip.
519
+ */
520
+ const nodesPayload = (val) => {
521
+ const decoded = decodeNodesPayload(val);
522
+ void {
523
+ rawType: Array.isArray(val) ? 'array' : typeof val,
524
+ rawLength: Array.isArray(val) ? val.length : typeof val === 'string' ? val.length : 0,
525
+ decodedLength: decoded.length,
526
+ decodedHead: decoded.length > 0 ? JSON.stringify(decoded[0]).slice(0, 200) : '',
527
+ preview: typeof val === 'string' ? val.slice(0, 160) : Array.isArray(val) ? JSON.stringify(val.slice(0, 1)).slice(0, 160) : '',
528
+ };
529
+ return decoded;
530
+ };
531
+ /*//////////////////////////////////////////////////
532
+ EXPORTS
533
+ //////////////////////////////////////////////////*/
534
+ //# sourceMappingURL=nodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../../src/terra/runtime/nodes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { cn as stylingCn } from '@terra-symposium/styling/ui';
2
+ export declare const cn: typeof stylingCn;
3
+ export declare function isDevOrigin(value: string | URL): boolean;
4
+ export declare const isRec: (value: unknown) => value is Record<string, any>;
5
+ export declare const isString: (value: unknown) => value is string;
6
+ export declare const isNumber: (value: unknown) => value is number;
7
+ export declare const validateType: (types: readonly string[], value: unknown) => boolean;
8
+ export declare const warn: (tag: string, message: string, detail?: unknown) => void;
9
+ export declare const error: (tag: string, message: string, detail?: unknown) => void;
10
+ export declare const errorLog: (tag: string, message: string, detail?: unknown) => void;
11
+ export declare const createTrace: (scope: string, enabled: boolean) => (event: string, detail?: unknown) => void;
12
+ export declare const notify: ({ error: reason, fallback }: {
13
+ error: unknown;
14
+ fallback: string;
15
+ }) => void;
16
+ export declare const hash: (value: string) => number;
17
+ export declare const canonicalId: (value: string) => string;
18
+ export declare const normArcGraph: <T>(graph: T) => T;
19
+ export declare function resolvedEdges(graph: any): any[];
20
+ export declare function setDocumentTitle(title: string): void;
21
+ export declare const isDarkMode: () => boolean;
22
+ export declare const getImg: (id: string, width?: number) => {
23
+ url: () => string;
24
+ };
25
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/terra/runtime/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAG9D,eAAO,MAAM,EAAE,kBAAY,CAAC;AAC5B,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,CASxD;AACD,eAAO,MAAM,KAAK,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAyE,CAAC;AAC5I,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAAmC,CAAC;AACvF,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAA6D,CAAC;AACjH,eAAO,MAAM,YAAY,GAAI,OAAO,SAAS,MAAM,EAAE,EAAE,OAAO,OAAO,KAAG,OAAuC,CAAC;AAChH,eAAO,MAAM,IAAI,GAAI,KAAK,MAAM,EAAE,SAAS,MAAM,EAAE,SAAS,OAAO,KAAG,IAAyD,CAAC;AAChI,eAAO,MAAM,KAAK,QADQ,MAAM,WAAW,MAAM,WAAW,OAAO,KAAG,IAC7C,CAAC;AAC1B,eAAO,MAAM,QAAQ,QAFK,MAAM,WAAW,MAAM,WAAW,OAAO,KAAG,IAE1C,CAAC;AAC7B,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,EAAE,SAAS,OAAO,MAAM,OAAO,MAAM,EAAE,SAAS,OAAO,KAAG,IAA4E,CAAC;AAChL,eAAO,MAAM,MAAM,GAAI,6BAA6B;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,KAAG,IAG1F,CAAC;AACF,eAAO,MAAM,IAAI,GAAI,OAAO,MAAM,KAAG,MAAuH,CAAC;AAC7J,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAAkE,CAAC;AAC/G,eAAO,MAAM,YAAY,GAAI,CAAC,EAAG,OAAO,CAAC,KAAG,CAAU,CAAC;AACvD,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,EAAE,CAQ/C;AACD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAGpD;AACD,eAAO,MAAM,UAAU,QAAO,OAAiG,CAAC;AAChI,eAAO,MAAM,MAAM,GAAI,IAAI,MAAM,EAAE,QAAQ,MAAM,KAAG;IAAE,GAAG,EAAE,MAAM,MAAM,CAAA;CAAwE,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { cn as stylingCn } from '@terra-symposium/styling/ui';
2
+ import { getDocsHostAdapter } from '../../host-runtime.js';
3
+ export const cn = stylingCn;
4
+ export function isDevOrigin(value) {
5
+ const hostCheck = getDocsHostAdapter()?.isDevelopmentOrigin;
6
+ if (hostCheck)
7
+ return hostCheck(String(value));
8
+ try {
9
+ const host = new URL(value).hostname;
10
+ return host === 'localhost' || host === '127.0.0.1' || host === '::1';
11
+ }
12
+ catch {
13
+ return false;
14
+ }
15
+ }
16
+ export const isRec = (value) => Boolean(value && typeof value === 'object' && !Array.isArray(value));
17
+ export const isString = (value) => typeof value === 'string';
18
+ export const isNumber = (value) => typeof value === 'number' && Number.isFinite(value);
19
+ export const validateType = (types, value) => types.includes(typeof value);
20
+ export const warn = (tag, message, detail) => console.warn(`[${tag}] ${message}`, detail ?? '');
21
+ export const error = warn;
22
+ export const errorLog = warn;
23
+ export const createTrace = (scope, enabled) => (event, detail) => { if (enabled)
24
+ console.debug(`[${scope}] ${event}`, detail ?? ''); };
25
+ export const notify = ({ error: reason, fallback }) => {
26
+ const message = reason instanceof Error ? reason.message : fallback;
27
+ if (typeof document !== 'undefined')
28
+ document.dispatchEvent(new CustomEvent('docs:notify', { detail: { message, variant: 'error' } }));
29
+ };
30
+ export const hash = (value) => { let result = 0; for (const char of value)
31
+ result = (result * 31 + char.charCodeAt(0)) | 0; return result; };
32
+ export const canonicalId = (value) => value.trim().replace(/[^a-z0-9_-]/gi, '-').toLowerCase();
33
+ export const normArcGraph = (graph) => graph;
34
+ export function resolvedEdges(graph) {
35
+ const nodes = Array.isArray(graph?.nodes) ? graph.nodes.filter((node) => !node.hidden) : [];
36
+ const keys = new Set(nodes.map((node) => node._key));
37
+ const edges = (Array.isArray(graph?.edges) ? graph.edges : []).filter((edge) => keys.has(edge.source) && keys.has(edge.target));
38
+ const terminal = nodes.find((node) => node.type === 'terminal');
39
+ if (!terminal)
40
+ return edges;
41
+ const sources = new Set(edges.map((edge) => edge.source));
42
+ return [...edges, ...nodes.filter((node) => node.type === 'content' && !sources.has(node._key)).map((node) => ({ _key: `terminal:${node._key}`, _type: 'edge', source: node._key, target: terminal._key }))];
43
+ }
44
+ export function setDocumentTitle(title) {
45
+ const siteTitle = getDocsHostAdapter()?.siteTitle ?? 'Terra Symposium';
46
+ document.title = title ? `${title} | ${siteTitle}` : siteTitle;
47
+ }
48
+ export const isDarkMode = () => typeof document !== 'undefined' && document.documentElement.classList.contains('dark');
49
+ export const getImg = (id, width) => ({ url: () => getDocsHostAdapter()?.assetUrl?.(id, width) ?? '' });
50
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/terra/runtime/runtime.ts"],"names":[],"mappings":"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"}