@oddkin/workbench 0.0.0-stage → 1.0.0-beta.1

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 (243) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +66 -2
  3. package/dist/app/card-previews.d.ts +14 -0
  4. package/dist/app/card-previews.d.ts.map +1 -0
  5. package/dist/app/card-previews.js +140 -0
  6. package/dist/app/card-previews.js.map +1 -0
  7. package/dist/app/copy.d.ts +48 -0
  8. package/dist/app/copy.d.ts.map +1 -0
  9. package/dist/app/copy.js +52 -0
  10. package/dist/app/copy.js.map +1 -0
  11. package/dist/app/define.d.ts +3 -0
  12. package/dist/app/define.d.ts.map +1 -0
  13. package/dist/app/define.js +10 -0
  14. package/dist/app/define.js.map +1 -0
  15. package/dist/app/details.d.ts +22 -0
  16. package/dist/app/details.d.ts.map +1 -0
  17. package/dist/app/details.js +17 -0
  18. package/dist/app/details.js.map +1 -0
  19. package/dist/app/index.d.ts +12 -0
  20. package/dist/app/index.d.ts.map +1 -0
  21. package/dist/app/index.js +9 -0
  22. package/dist/app/index.js.map +1 -0
  23. package/dist/app/routes.d.ts +26 -0
  24. package/dist/app/routes.d.ts.map +1 -0
  25. package/dist/app/routes.js +96 -0
  26. package/dist/app/routes.js.map +1 -0
  27. package/dist/app/search.d.ts +17 -0
  28. package/dist/app/search.d.ts.map +1 -0
  29. package/dist/app/search.js +52 -0
  30. package/dist/app/search.js.map +1 -0
  31. package/dist/app/shell.d.ts +29 -0
  32. package/dist/app/shell.d.ts.map +1 -0
  33. package/dist/app/shell.js +478 -0
  34. package/dist/app/shell.js.map +1 -0
  35. package/dist/app/styles.d.ts +2 -0
  36. package/dist/app/styles.d.ts.map +1 -0
  37. package/dist/app/styles.js +356 -0
  38. package/dist/app/styles.js.map +1 -0
  39. package/dist/app/theme-studio.d.ts +12 -0
  40. package/dist/app/theme-studio.d.ts.map +1 -0
  41. package/dist/app/theme-studio.js +14 -0
  42. package/dist/app/theme-studio.js.map +1 -0
  43. package/dist/app/views.d.ts +38 -0
  44. package/dist/app/views.d.ts.map +1 -0
  45. package/dist/app/views.js +252 -0
  46. package/dist/app/views.js.map +1 -0
  47. package/dist/config/index.d.ts +170 -0
  48. package/dist/config/index.d.ts.map +1 -0
  49. package/dist/config/index.js +148 -0
  50. package/dist/config/index.js.map +1 -0
  51. package/dist/conformance/button.d.ts +2 -0
  52. package/dist/conformance/button.d.ts.map +1 -0
  53. package/dist/conformance/button.js +233 -0
  54. package/dist/conformance/button.js.map +1 -0
  55. package/dist/conformance/index.d.ts +107 -0
  56. package/dist/conformance/index.d.ts.map +1 -0
  57. package/dist/conformance/index.js +60 -0
  58. package/dist/conformance/index.js.map +1 -0
  59. package/dist/data/build.d.ts +36 -0
  60. package/dist/data/build.d.ts.map +1 -0
  61. package/dist/data/build.js +260 -0
  62. package/dist/data/build.js.map +1 -0
  63. package/dist/data/import-map.d.ts +59 -0
  64. package/dist/data/import-map.d.ts.map +1 -0
  65. package/dist/data/import-map.js +195 -0
  66. package/dist/data/import-map.js.map +1 -0
  67. package/dist/data/index.d.ts +14 -0
  68. package/dist/data/index.d.ts.map +1 -0
  69. package/dist/data/index.js +10 -0
  70. package/dist/data/index.js.map +1 -0
  71. package/dist/data/theme-studio.d.ts +21 -0
  72. package/dist/data/theme-studio.d.ts.map +1 -0
  73. package/dist/data/theme-studio.js +112 -0
  74. package/dist/data/theme-studio.js.map +1 -0
  75. package/dist/data/types.d.ts +187 -0
  76. package/dist/data/types.d.ts.map +1 -0
  77. package/dist/data/types.js +4 -0
  78. package/dist/data/types.js.map +1 -0
  79. package/dist/examples/index.d.ts +101 -0
  80. package/dist/examples/index.d.ts.map +1 -0
  81. package/dist/examples/index.js +106 -0
  82. package/dist/examples/index.js.map +1 -0
  83. package/dist/frame/index.d.ts +9 -0
  84. package/dist/frame/index.d.ts.map +1 -0
  85. package/dist/frame/index.js +482 -0
  86. package/dist/frame/index.js.map +1 -0
  87. package/dist/internal/diagnostics.d.ts +17 -0
  88. package/dist/internal/diagnostics.d.ts.map +1 -0
  89. package/dist/internal/diagnostics.js +19 -0
  90. package/dist/internal/diagnostics.js.map +1 -0
  91. package/dist/node/bin.d.ts +3 -0
  92. package/dist/node/bin.d.ts.map +1 -0
  93. package/dist/node/bin.js +12 -0
  94. package/dist/node/bin.js.map +1 -0
  95. package/dist/node/cli.d.ts +17 -0
  96. package/dist/node/cli.d.ts.map +1 -0
  97. package/dist/node/cli.js +198 -0
  98. package/dist/node/cli.js.map +1 -0
  99. package/dist/node/config.d.ts +28 -0
  100. package/dist/node/config.d.ts.map +1 -0
  101. package/dist/node/config.js +80 -0
  102. package/dist/node/config.js.map +1 -0
  103. package/dist/node/example-modules.d.ts +8 -0
  104. package/dist/node/example-modules.d.ts.map +1 -0
  105. package/dist/node/example-modules.js +28 -0
  106. package/dist/node/example-modules.js.map +1 -0
  107. package/dist/node/generated.d.ts +19 -0
  108. package/dist/node/generated.d.ts.map +1 -0
  109. package/dist/node/generated.js +109 -0
  110. package/dist/node/generated.js.map +1 -0
  111. package/dist/node/html.d.ts +35 -0
  112. package/dist/node/html.d.ts.map +1 -0
  113. package/dist/node/html.js +51 -0
  114. package/dist/node/html.js.map +1 -0
  115. package/dist/node/index.d.ts +24 -0
  116. package/dist/node/index.d.ts.map +1 -0
  117. package/dist/node/index.js +15 -0
  118. package/dist/node/index.js.map +1 -0
  119. package/dist/node/inputs.d.ts +26 -0
  120. package/dist/node/inputs.d.ts.map +1 -0
  121. package/dist/node/inputs.js +282 -0
  122. package/dist/node/inputs.js.map +1 -0
  123. package/dist/node/packages.d.ts +35 -0
  124. package/dist/node/packages.d.ts.map +1 -0
  125. package/dist/node/packages.js +87 -0
  126. package/dist/node/packages.js.map +1 -0
  127. package/dist/node/preload.d.ts +10 -0
  128. package/dist/node/preload.d.ts.map +1 -0
  129. package/dist/node/preload.js +61 -0
  130. package/dist/node/preload.js.map +1 -0
  131. package/dist/node/server.d.ts +42 -0
  132. package/dist/node/server.d.ts.map +1 -0
  133. package/dist/node/server.js +410 -0
  134. package/dist/node/server.js.map +1 -0
  135. package/dist/node/static.d.ts +43 -0
  136. package/dist/node/static.d.ts.map +1 -0
  137. package/dist/node/static.js +157 -0
  138. package/dist/node/static.js.map +1 -0
  139. package/dist/node/workbench.d.ts +43 -0
  140. package/dist/node/workbench.d.ts.map +1 -0
  141. package/dist/node/workbench.js +204 -0
  142. package/dist/node/workbench.js.map +1 -0
  143. package/dist/pages/build.d.ts +22 -0
  144. package/dist/pages/build.d.ts.map +1 -0
  145. package/dist/pages/build.js +363 -0
  146. package/dist/pages/build.js.map +1 -0
  147. package/dist/pages/defaults.d.ts +16 -0
  148. package/dist/pages/defaults.d.ts.map +1 -0
  149. package/dist/pages/defaults.js +88 -0
  150. package/dist/pages/defaults.js.map +1 -0
  151. package/dist/pages/index.d.ts +14 -0
  152. package/dist/pages/index.d.ts.map +1 -0
  153. package/dist/pages/index.js +10 -0
  154. package/dist/pages/index.js.map +1 -0
  155. package/dist/pages/navigation.d.ts +48 -0
  156. package/dist/pages/navigation.d.ts.map +1 -0
  157. package/dist/pages/navigation.js +83 -0
  158. package/dist/pages/navigation.js.map +1 -0
  159. package/dist/pages/types.d.ts +148 -0
  160. package/dist/pages/types.d.ts.map +1 -0
  161. package/dist/pages/types.js +3 -0
  162. package/dist/pages/types.js.map +1 -0
  163. package/dist/panels/catalog-define.d.ts +3 -0
  164. package/dist/panels/catalog-define.d.ts.map +1 -0
  165. package/dist/panels/catalog-define.js +7 -0
  166. package/dist/panels/catalog-define.js.map +1 -0
  167. package/dist/panels/catalog-layout-styles.d.ts +2 -0
  168. package/dist/panels/catalog-layout-styles.d.ts.map +1 -0
  169. package/dist/panels/catalog-layout-styles.js +54 -0
  170. package/dist/panels/catalog-layout-styles.js.map +1 -0
  171. package/dist/panels/catalog-styles.d.ts +2 -0
  172. package/dist/panels/catalog-styles.d.ts.map +1 -0
  173. package/dist/panels/catalog-styles.js +106 -0
  174. package/dist/panels/catalog-styles.js.map +1 -0
  175. package/dist/panels/catalog.d.ts +37 -0
  176. package/dist/panels/catalog.d.ts.map +1 -0
  177. package/dist/panels/catalog.js +74 -0
  178. package/dist/panels/catalog.js.map +1 -0
  179. package/dist/panels/component-define.d.ts +3 -0
  180. package/dist/panels/component-define.d.ts.map +1 -0
  181. package/dist/panels/component-define.js +6 -0
  182. package/dist/panels/component-define.js.map +1 -0
  183. package/dist/panels/component-detail.d.ts +49 -0
  184. package/dist/panels/component-detail.d.ts.map +1 -0
  185. package/dist/panels/component-detail.js +1352 -0
  186. package/dist/panels/component-detail.js.map +1 -0
  187. package/dist/panels/component.d.ts +17 -0
  188. package/dist/panels/component.d.ts.map +1 -0
  189. package/dist/panels/component.js +10 -0
  190. package/dist/panels/component.js.map +1 -0
  191. package/dist/panels/example-styles.d.ts +2 -0
  192. package/dist/panels/example-styles.d.ts.map +1 -0
  193. package/dist/panels/example-styles.js +343 -0
  194. package/dist/panels/example-styles.js.map +1 -0
  195. package/dist/panels/foundation-define.d.ts +3 -0
  196. package/dist/panels/foundation-define.d.ts.map +1 -0
  197. package/dist/panels/foundation-define.js +6 -0
  198. package/dist/panels/foundation-define.js.map +1 -0
  199. package/dist/panels/foundation-detail.d.ts +23 -0
  200. package/dist/panels/foundation-detail.d.ts.map +1 -0
  201. package/dist/panels/foundation-detail.js +216 -0
  202. package/dist/panels/foundation-detail.js.map +1 -0
  203. package/dist/panels/foundation.d.ts +15 -0
  204. package/dist/panels/foundation.d.ts.map +1 -0
  205. package/dist/panels/foundation.js +9 -0
  206. package/dist/panels/foundation.js.map +1 -0
  207. package/dist/panels/model.d.ts +184 -0
  208. package/dist/panels/model.d.ts.map +1 -0
  209. package/dist/panels/model.js +488 -0
  210. package/dist/panels/model.js.map +1 -0
  211. package/dist/panels/styles.d.ts +3 -0
  212. package/dist/panels/styles.d.ts.map +1 -0
  213. package/dist/panels/styles.js +265 -0
  214. package/dist/panels/styles.js.map +1 -0
  215. package/dist/panels/theme-model.d.ts +69 -0
  216. package/dist/panels/theme-model.d.ts.map +1 -0
  217. package/dist/panels/theme-model.js +166 -0
  218. package/dist/panels/theme-model.js.map +1 -0
  219. package/dist/panels/theme-studio.d.ts +32 -0
  220. package/dist/panels/theme-studio.d.ts.map +1 -0
  221. package/dist/panels/theme-studio.js +375 -0
  222. package/dist/panels/theme-studio.js.map +1 -0
  223. package/dist/preview/frame.d.ts +44 -0
  224. package/dist/preview/frame.d.ts.map +1 -0
  225. package/dist/preview/frame.js +260 -0
  226. package/dist/preview/frame.js.map +1 -0
  227. package/dist/preview/index.d.ts +26 -0
  228. package/dist/preview/index.d.ts.map +1 -0
  229. package/dist/preview/index.js +58 -0
  230. package/dist/preview/index.js.map +1 -0
  231. package/dist/preview/theme-generation.d.ts +33 -0
  232. package/dist/preview/theme-generation.d.ts.map +1 -0
  233. package/dist/preview/theme-generation.js +48 -0
  234. package/dist/preview/theme-generation.js.map +1 -0
  235. package/dist/protocol/index.d.ts +222 -0
  236. package/dist/protocol/index.d.ts.map +1 -0
  237. package/dist/protocol/index.js +272 -0
  238. package/dist/protocol/index.js.map +1 -0
  239. package/dist/testing/index.d.ts +47 -0
  240. package/dist/testing/index.d.ts.map +1 -0
  241. package/dist/testing/index.js +145 -0
  242. package/dist/testing/index.js.map +1 -0
  243. package/package.json +118 -4
@@ -0,0 +1,488 @@
1
+ import { isCustomPropertyName, isJsonValue, } from '../protocol/index.js';
2
+ const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
3
+ const text = (value) => typeof value === 'string' && value.trim() ? value : undefined;
4
+ const list = (value) => Array.isArray(value) ? value.filter(isRecord) : [];
5
+ /** Split a type at top-level `|`, ignoring separators inside brackets, braces, and quotes. */
6
+ export function unionMembers(type) {
7
+ const parts = [];
8
+ let depth = 0;
9
+ let quote = '';
10
+ let current = '';
11
+ for (const char of type) {
12
+ if (quote) {
13
+ if (char === quote)
14
+ quote = '';
15
+ }
16
+ else if (char === '"' || char === "'" || char === '`')
17
+ quote = char;
18
+ else if ('([{<'.includes(char))
19
+ depth++;
20
+ else if (')]}>'.includes(char))
21
+ depth--;
22
+ else if (char === '|' && depth === 0) {
23
+ parts.push(current.trim());
24
+ current = '';
25
+ continue;
26
+ }
27
+ current += char;
28
+ }
29
+ if (current.trim())
30
+ parts.push(current.trim());
31
+ return parts;
32
+ }
33
+ const LITERAL = /^(["'])(.*)\1$/;
34
+ /** The control a declared type supports (workbench.md §4); unknown shapes require a fixture. */
35
+ export function classifyType(type) {
36
+ const members = unionMembers(type);
37
+ const nullable = members.includes('null');
38
+ const rest = members.filter((m) => m !== 'null' && m !== 'undefined');
39
+ if (!rest.length)
40
+ return { control: 'fixture', nullable };
41
+ const literals = rest.map((m) => LITERAL.exec(m)?.[2]);
42
+ if (literals.every((v) => v !== undefined))
43
+ return { control: 'enum', values: literals, nullable };
44
+ if (rest.length === 1) {
45
+ const only = rest[0];
46
+ if (only === 'boolean')
47
+ return { control: 'boolean', nullable };
48
+ if (only === 'string')
49
+ return { control: 'string', nullable };
50
+ if (only === 'number')
51
+ return { control: 'number', nullable };
52
+ if (/^(readonly\s+)?(string|number|boolean)\[\]$/.test(only))
53
+ return { control: 'json', nullable };
54
+ }
55
+ return { control: 'fixture', nullable };
56
+ }
57
+ /** Columns and controls of the editable API table, from the CEM declaration and enrichment. */
58
+ export function componentFacts(page) {
59
+ const declaration = page.declaration;
60
+ const enrichment = page.enrichment ?? {};
61
+ const propertyOnly = new Set(list(enrichment['propertyOnly']).flatMap((entry) => {
62
+ const id = text(entry['property']);
63
+ return id ? [id.slice(id.indexOf('#') + 1)] : [];
64
+ }));
65
+ const rows = [];
66
+ const covered = new Set();
67
+ for (const member of list(declaration['members'])) {
68
+ if (member['kind'] !== 'field' || member['static'] === true)
69
+ continue;
70
+ if (member['privacy'] === 'private' || member['privacy'] === 'protected')
71
+ continue;
72
+ const name = text(member['name']);
73
+ if (!name || name.startsWith('#') || name.startsWith('_'))
74
+ continue;
75
+ const type = text(isRecord(member['type']) ? member['type']['text'] : undefined) ?? 'unknown';
76
+ const attribute = text(member['attribute']);
77
+ if (attribute)
78
+ covered.add(attribute);
79
+ const classified = classifyType(type);
80
+ const readonly = member['readonly'] === true;
81
+ const defaultValue = text(member['default']);
82
+ const description = text(member['description']);
83
+ rows.push({
84
+ id: `property:${page.tag}#${name}`,
85
+ property: name,
86
+ ...(attribute ? { attribute } : {}),
87
+ reflects: member['reflects'] === true,
88
+ type,
89
+ control: readonly ? 'readonly' : classified.control,
90
+ ...(classified.values ? { values: classified.values } : {}),
91
+ nullable: classified.nullable,
92
+ ...(defaultValue ? { default: defaultValue } : {}),
93
+ ...(description ? { description } : {}),
94
+ propertyOnly: propertyOnly.has(name),
95
+ });
96
+ }
97
+ for (const attr of list(declaration['attributes'])) {
98
+ const name = text(attr['name']);
99
+ if (!name || covered.has(name) || text(attr['fieldName']))
100
+ continue;
101
+ const type = text(isRecord(attr['type']) ? attr['type']['text'] : undefined) ?? 'string';
102
+ const classified = classifyType(type);
103
+ const defaultValue = text(attr['default']);
104
+ const description = text(attr['description']);
105
+ rows.push({
106
+ id: `property:${page.tag}#${name}`,
107
+ attribute: name,
108
+ reflects: false,
109
+ type,
110
+ // An attribute is always a string or a boolean presence.
111
+ control: classified.control === 'boolean' || classified.control === 'enum'
112
+ ? classified.control
113
+ : 'string',
114
+ ...(classified.values ? { values: classified.values } : {}),
115
+ nullable: false,
116
+ ...(defaultValue ? { default: defaultValue } : {}),
117
+ ...(description ? { description } : {}),
118
+ propertyOnly: false,
119
+ });
120
+ }
121
+ const named = (value) => list(value).flatMap((entry) => {
122
+ const name = typeof entry['name'] === 'string' ? entry['name'] : undefined;
123
+ if (name === undefined)
124
+ return [];
125
+ const description = text(entry['description']);
126
+ const type = text(isRecord(entry['type']) ? entry['type']['text'] : undefined) ?? text(entry['syntax']);
127
+ const fallback = text(entry['default']);
128
+ return [
129
+ {
130
+ name,
131
+ ...(description ? { description } : {}),
132
+ ...(type ? { type } : {}),
133
+ ...(fallback ? { default: fallback } : {}),
134
+ },
135
+ ];
136
+ });
137
+ const methods = named(list(declaration['members']).filter((m) => m['kind'] === 'method' &&
138
+ m['static'] !== true &&
139
+ m['privacy'] !== 'private' &&
140
+ m['privacy'] !== 'protected'));
141
+ const syncPairs = list(enrichment['syncPairs']).flatMap((pair) => {
142
+ const property = text(pair['property']);
143
+ const event = text(pair['event']);
144
+ return property && event ? [{ property, event }] : [];
145
+ });
146
+ return {
147
+ rows,
148
+ events: named(declaration['events']),
149
+ slots: named(declaration['slots']),
150
+ methods,
151
+ parts: named(declaration['cssParts']),
152
+ cssProperties: named(declaration['cssProperties']),
153
+ cssStates: named(declaration['cssStates']),
154
+ syncPairs,
155
+ };
156
+ }
157
+ /** The write a row's control uses by default: the attribute when one exists, unless property-only. */
158
+ export function defaultWriteMode(row) {
159
+ if (!row.property)
160
+ return 'attribute';
161
+ if (!row.attribute || row.propertyOnly || row.control === 'json')
162
+ return 'property';
163
+ return 'attribute';
164
+ }
165
+ const EMPTY_STATE = { preset: 'default', attributes: {}, properties: {}, slots: {} };
166
+ function stateFrom(name, values) {
167
+ const props = isRecord(values['props']) ? values['props'] : {};
168
+ const attributes = isRecord(values['attributes']) ? values['attributes'] : {};
169
+ const slots = isRecord(values['slots']) ? values['slots'] : {};
170
+ if (!isJsonValue(props))
171
+ return undefined;
172
+ const stringAttributes = {};
173
+ for (const [key, value] of Object.entries(attributes))
174
+ if (typeof value === 'string')
175
+ stringAttributes[key] = value;
176
+ const stringSlots = {};
177
+ for (const [key, value] of Object.entries(slots))
178
+ if (typeof value === 'string')
179
+ stringSlots[key === 'default' ? '' : key] = value;
180
+ return {
181
+ preset: name,
182
+ attributes: stringAttributes,
183
+ properties: props,
184
+ slots: stringSlots,
185
+ };
186
+ }
187
+ /**
188
+ * Presets from authored examples (`defineExamples`). Values come from the published example
189
+ * definition (`definition`); without it the example is listed but cannot be applied.
190
+ */
191
+ export function presets(page) {
192
+ return page.examples.flatMap((example) => {
193
+ const name = text(example['name']);
194
+ const id = text(example['id']);
195
+ if (!name || !id)
196
+ return [];
197
+ const definition = isRecord(example['definition']) ? example['definition'] : undefined;
198
+ const fixture = definition?.['hasFixture'] === true;
199
+ // A frame runs the fixture from the example module, when the page names one.
200
+ const requiresFixture = fixture && !page.exampleModule;
201
+ const state = definition && !requiresFixture ? stateFrom(name, definition) : undefined;
202
+ const incorrect = isRecord(definition?.['incorrect'])
203
+ ? definition['incorrect']
204
+ : isRecord(example['incorrect'])
205
+ ? example['incorrect']
206
+ : undefined;
207
+ const label = text(definition?.['label']) ?? name;
208
+ const guidance = text(definition?.['guidance']);
209
+ const explanation = text(incorrect?.['explanation']);
210
+ const correct = text(incorrect?.['correct']);
211
+ return [
212
+ {
213
+ name,
214
+ id,
215
+ label,
216
+ ...(state ? { state } : {}),
217
+ preset: definition?.['preset'] === true,
218
+ requiresFixture,
219
+ fixture,
220
+ ...(guidance ? { guidance } : {}),
221
+ ...(incorrect
222
+ ? {
223
+ incorrect: {
224
+ ...(explanation ? { explanation } : {}),
225
+ ...(correct ? { correct } : {}),
226
+ },
227
+ }
228
+ : {}),
229
+ },
230
+ ];
231
+ });
232
+ }
233
+ /** The state a page starts from: its `default` example when published, otherwise nothing set. */
234
+ export function initialState(page) {
235
+ const entries = presets(page);
236
+ const first = entries.find((p) => p.name === 'default' && p.state) ??
237
+ entries.find((p) => p.preset && !p.incorrect && p.state);
238
+ return first?.state ?? EMPTY_STATE;
239
+ }
240
+ /** Authored metadata values (`{ value, provenance }` records or plain strings) as text. */
241
+ export const authoredValues = (value) => Array.isArray(value)
242
+ ? value.flatMap((entry) => typeof entry === 'string'
243
+ ? [entry]
244
+ : isRecord(entry) && typeof entry['value'] === 'string'
245
+ ? [entry['value']]
246
+ : [])
247
+ : [];
248
+ /** Intended use: authored content (`oddkin.docs.ts`) over the enrichment's `@useFor`/`@notFor`. */
249
+ export function intendedUse(page) {
250
+ return {
251
+ useFor: page.authored?.useFor ?? authoredValues(page.enrichment?.['useFor']),
252
+ notFor: page.authored?.notFor ?? authoredValues(page.enrichment?.['notFor']),
253
+ };
254
+ }
255
+ export function usagePairs(page) {
256
+ const entries = presets(page);
257
+ return entries.flatMap((incorrect) => {
258
+ if (!incorrect.incorrect)
259
+ return [];
260
+ const ref = incorrect.incorrect.correct;
261
+ const correct = ref
262
+ ? entries.find((e) => !e.incorrect && (e.name === ref || e.id === ref))
263
+ : undefined;
264
+ return [{ incorrect, ...(correct ? { correct } : {}) }];
265
+ });
266
+ }
267
+ const EXAMPLES_SOURCE = 'an example set (defineExamples)';
268
+ const REGISTRATION_SOURCE = 'the registration entry in oddkin.metadata.json, or a custom-element-definition export in custom-elements.json';
269
+ /** The module that registers the element: the Oddkin enrichment's, else the standard CEM's. */
270
+ export function registrationOf(page) {
271
+ const value = page.enrichment?.['registration'];
272
+ return typeof value === 'string' ? value : page.registration;
273
+ }
274
+ /**
275
+ * Every item a component's detail page shows, in page order, and how it is shown. The panel
276
+ * renders from this, and the coverage check walks it for every component (workbench-pages.md §7).
277
+ */
278
+ export function pageCoverage(page) {
279
+ const facts = componentFacts(page);
280
+ const entries = presets(page);
281
+ const { useFor, notFor } = intendedUse(page);
282
+ const enrichment = page.enrichment ?? {};
283
+ const registered = registrationOf(page) !== undefined;
284
+ const description = text(page.declaration['description']);
285
+ const items = [];
286
+ const item = (id, state, extra = {}, section = id.slice(0, id.indexOf('/'))) => items.push({ id, section, state, ...extra });
287
+ const documented = (id, present, source, subject) => item(id, present ? 'documented' : 'missing', {
288
+ ...(present ? {} : { source }),
289
+ ...(subject ? { subject } : {}),
290
+ });
291
+ const declared = (id, list, empty, section) => {
292
+ const undocumented = list
293
+ .filter((entry) => !entry.description)
294
+ .map((entry) => 'name' in entry ? entry.name || '(default)' : (entry.property ?? entry.attribute ?? ''));
295
+ item(id, list.length ? 'documented' : 'none', {
296
+ ...(list.length ? {} : { empty }),
297
+ ...(undocumented.length ? { undocumented } : {}),
298
+ }, section);
299
+ };
300
+ documented('overview/description', Boolean(description), 'a JSDoc description on the class');
301
+ documented('interactive-example/presets', entries.some((p) => p.state && !p.incorrect), EXAMPLES_SOURCE, 'Presets');
302
+ documented('interactive-example/preview', registered, REGISTRATION_SOURCE, 'Preview');
303
+ // The editable controls render in the interactive example (its "Controls and API").
304
+ declared('api/properties', facts.rows, 'No properties or attributes are declared.', 'interactive-example');
305
+ declared('api/slots', facts.slots, 'No slots are declared.', 'interactive-example');
306
+ declared('api/css-properties', facts.cssProperties, 'No CSS custom properties are declared.', 'interactive-example');
307
+ item('source/module', 'documented');
308
+ documented('source/register', registered, REGISTRATION_SOURCE);
309
+ documented('examples/examples', entries.length > 0, EXAMPLES_SOURCE);
310
+ declared('api/events', facts.events, 'None declared.');
311
+ declared('api/parts', facts.parts, 'None declared.');
312
+ declared('api/methods', facts.methods, 'None declared.');
313
+ declared('api/css-states', facts.cssStates, 'None declared.');
314
+ const mappings = list(enrichment['styleMappings']);
315
+ item('tokens/style-mappings', mappings.length ? 'documented' : 'none', {
316
+ ...(mappings.length ? {} : { empty: 'No style mappings are declared.' }),
317
+ });
318
+ const reads = list(enrichment['tokenReads']);
319
+ item('tokens/token-reads', reads.length ? 'documented' : 'none', {
320
+ ...(reads.length ? {} : { empty: 'No token reads are declared.' }),
321
+ });
322
+ documented('behavior-and-accessibility/a11y', authoredValues(enrichment['a11y']).length > 0, '@a11y');
323
+ documented('behavior-and-accessibility/keyboard', authoredValues(enrichment['keyboard']).length > 0, '@keyboard');
324
+ if (page.authored?.guidance)
325
+ item('guidance/authored', 'documented');
326
+ documented('guidance/use-for', useFor.length > 0, '@useFor');
327
+ documented('guidance/not-for', notFor.length > 0, '@notFor');
328
+ documented('guidance/usage-pairs', entries.some((p) => p.incorrect), 'an incorrect example that names its correct one (`incorrect` in defineExamples)');
329
+ const limitations = authoredValues(enrichment['limitations']);
330
+ item('known-limitations/limitations', limitations.length ? 'documented' : 'none', {
331
+ ...(limitations.length ? {} : { empty: 'None documented.' }),
332
+ });
333
+ return items;
334
+ }
335
+ const escapeHtml = (value) => value.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
336
+ /**
337
+ * Plain HTML and JavaScript that reproduce a state: the public registration entry, attributes,
338
+ * property assignments by script, slot content, declared-event listeners, and preview scopes.
339
+ */
340
+ export function snippet(page, state, options = {}) {
341
+ const registration = registrationOf(page);
342
+ const attrs = Object.entries(state.attributes).map(([name, value]) => value === '' ? ` ${name}` : ` ${name}="${escapeHtml(value)}"`);
343
+ const scope = [];
344
+ if (options.settings?.mode)
345
+ scope.push(` data-odd-mode="${options.settings.mode}"`);
346
+ if (options.settings?.direction)
347
+ scope.push(` dir="${options.settings.direction}"`);
348
+ const children = Object.entries(state.slots).map(([name, value]) => name
349
+ ? ` <span slot="${escapeHtml(name)}">${escapeHtml(value)}</span>`
350
+ : ` ${escapeHtml(value)}`);
351
+ const element = children.length
352
+ ? `<${page.tag}${attrs.join('')}>\n${children.join('\n')}\n</${page.tag}>`
353
+ : `<${page.tag}${attrs.join('')}></${page.tag}>`;
354
+ const markup = scope.length
355
+ ? `<div${scope.join('')}>\n${element
356
+ .split('\n')
357
+ .map((line) => ` ${line}`)
358
+ .join('\n')}\n</div>`
359
+ : element;
360
+ const lines = ['<script type="module">'];
361
+ if (registration)
362
+ lines.push(` import '${registration}';`);
363
+ else
364
+ lines.push(` // No registration entry is published for <${page.tag}>; import its define module.`);
365
+ if (presets(page).some((p) => p.name === state.preset && p.fixture))
366
+ lines.push(` // The "${state.preset}" example also runs setup code: its fixture in defineExamples.`);
367
+ const properties = Object.entries(state.properties);
368
+ const styles = Object.entries(state.styles ?? {});
369
+ const events = options.events ?? componentFacts(page).events.map((e) => e.name);
370
+ if (properties.length || styles.length || events.length) {
371
+ lines.push('', ` const element = document.querySelector('${page.tag}');`);
372
+ for (const [name, value] of properties)
373
+ lines.push(` element.${name} = ${JSON.stringify(value)};`);
374
+ for (const [name, value] of styles)
375
+ lines.push(` element.style.setProperty(${JSON.stringify(name)}, ${JSON.stringify(value)});`);
376
+ for (const name of events)
377
+ lines.push(` element.addEventListener('${name}', (event) => console.log(event.type, event.detail));`);
378
+ }
379
+ lines.push('</script>');
380
+ return `${lines.join('\n')}\n${markup}\n`;
381
+ }
382
+ export const SHARE_VERSION = 1;
383
+ export const SHARE_PARAM = 'preview';
384
+ /** Narrowest numeric preview width a share link carries (share-payload.v1). */
385
+ export const MIN_SHARE_WIDTH = 160;
386
+ export const MAX_SHARE_WIDTH = 4096;
387
+ const toBase64Url = (value) => {
388
+ const bytes = new TextEncoder().encode(value);
389
+ let binary = '';
390
+ for (const byte of bytes)
391
+ binary += String.fromCharCode(byte);
392
+ return btoa(binary).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
393
+ };
394
+ const fromBase64Url = (value) => {
395
+ const binary = atob(value.replace(/-/g, '+').replace(/_/g, '/'));
396
+ return new TextDecoder().decode(Uint8Array.from(binary, (c) => c.charCodeAt(0)));
397
+ };
398
+ /** The share payload for a component's preview state. */
399
+ export function sharePayload(tag, state, preview) {
400
+ const slots = {};
401
+ for (const [name, text] of Object.entries(state.slots))
402
+ slots[name || 'default'] = text;
403
+ return {
404
+ v: SHARE_VERSION,
405
+ kind: 'component',
406
+ component: tag,
407
+ preset: state.preset,
408
+ ...(Object.keys(state.properties).length ? { props: state.properties } : {}),
409
+ ...(Object.keys(state.attributes).length ? { attributes: state.attributes } : {}),
410
+ ...(Object.keys(slots).length ? { slots } : {}),
411
+ ...(Object.keys(state.styles ?? {}).length ? { styles: state.styles } : {}),
412
+ ...(preview ? { preview } : {}),
413
+ };
414
+ }
415
+ export function encodeShare(payload) {
416
+ return toBase64Url(JSON.stringify(payload));
417
+ }
418
+ /**
419
+ * Decode and validate a share link against the page's contract. Names the component does not
420
+ * declare are dropped and reported, so a stale link never writes undeclared properties.
421
+ */
422
+ export function decodeShare(page, encoded) {
423
+ let value;
424
+ try {
425
+ value = JSON.parse(fromBase64Url(encoded));
426
+ }
427
+ catch {
428
+ return { problems: ['The preview link is not valid.'] };
429
+ }
430
+ if (!isRecord(value) || value['v'] !== SHARE_VERSION || value['kind'] !== 'component')
431
+ return { problems: ['The preview link uses an unsupported version.'] };
432
+ if (value['component'] !== page.tag)
433
+ return { problems: ['The preview link is for another component.'] };
434
+ const facts = componentFacts(page);
435
+ const properties = new Set(facts.rows.flatMap((r) => r.property && r.control !== 'readonly' && r.control !== 'fixture' ? [r.property] : []));
436
+ const attributes = new Set(facts.rows.flatMap((r) => (r.attribute ? [r.attribute] : [])));
437
+ const slots = new Set(facts.slots.map((s) => s.name || 'default'));
438
+ const cssProperties = new Set(facts.cssProperties.map((p) => p.name).filter((name) => isCustomPropertyName(name)));
439
+ const problems = [];
440
+ const pick = (source, allowed, check, kind) => {
441
+ const out = {};
442
+ if (!isRecord(source))
443
+ return out;
444
+ for (const [key, entry] of Object.entries(source)) {
445
+ if (!allowed.has(key) || !check(entry))
446
+ problems.push(`Ignored ${kind} "${key}".`);
447
+ else
448
+ out[key] = entry;
449
+ }
450
+ return out;
451
+ };
452
+ const isString = (v) => typeof v === 'string';
453
+ const slotText = {};
454
+ for (const [name, text] of Object.entries(pick(value['slots'], slots, isString, 'slot')))
455
+ slotText[name === 'default' ? '' : name] = text;
456
+ const preview = isRecord(value['preview']) ? sanitizePreview(value['preview']) : undefined;
457
+ const styles = pick(value['styles'], cssProperties, isString, 'CSS custom property');
458
+ return {
459
+ state: {
460
+ preset: typeof value['preset'] === 'string' ? value['preset'] : 'default',
461
+ attributes: pick(value['attributes'], attributes, isString, 'attribute'),
462
+ properties: pick(value['props'], properties, isJsonValue, 'property'),
463
+ slots: slotText,
464
+ ...(Object.keys(styles).length ? { styles } : {}),
465
+ },
466
+ ...(preview ? { preview } : {}),
467
+ problems,
468
+ };
469
+ }
470
+ function sanitizePreview(preview) {
471
+ const out = {};
472
+ if (preview['mode'] === 'light' || preview['mode'] === 'dark')
473
+ out.mode = preview['mode'];
474
+ if (preview['direction'] === 'ltr' || preview['direction'] === 'rtl')
475
+ out.direction = preview['direction'];
476
+ const width = preview['width'];
477
+ if (width === 'fill')
478
+ out.width = 'fill';
479
+ else if (typeof width === 'number' &&
480
+ Number.isInteger(width) &&
481
+ width >= MIN_SHARE_WIDTH &&
482
+ width <= MAX_SHARE_WIDTH)
483
+ out.width = width;
484
+ if (preview['sameAsSite'] === true)
485
+ out.sameAsSite = true;
486
+ return out;
487
+ }
488
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/panels/model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const panelHostStyles: import("@oddkin/core/styles").CSSResult;
2
+ export declare const contentStyles: import("@oddkin/core/styles").CSSResult;
3
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/panels/styles.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,eAAe,yCAQ3B,CAAC;AAEF,eAAO,MAAM,aAAa,yCAwPzB,CAAC"}