multiclone 0.2.1 → 0.3.0

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 (46) hide show
  1. package/README.md +4 -4
  2. package/agents/section-builder.md +5 -3
  3. package/commands/multiclone.md +2 -2
  4. package/dist/contracts/tools/session.js +9 -8
  5. package/dist/contracts/tools/session.js.map +1 -1
  6. package/dist/project/assets.js +15 -13
  7. package/dist/project/assets.js.map +1 -1
  8. package/dist/project/convert/attrs.js +318 -0
  9. package/dist/project/convert/attrs.js.map +1 -0
  10. package/dist/project/convert/convert.js +304 -0
  11. package/dist/project/convert/convert.js.map +1 -0
  12. package/dist/project/convert/css.js +299 -0
  13. package/dist/project/convert/css.js.map +1 -0
  14. package/dist/project/convert/html.js +425 -0
  15. package/dist/project/convert/html.js.map +1 -0
  16. package/dist/project/convert/jsx.js +335 -0
  17. package/dist/project/convert/jsx.js.map +1 -0
  18. package/dist/project/convert/locate.js +180 -0
  19. package/dist/project/convert/locate.js.map +1 -0
  20. package/dist/project/convert/scripts.js +214 -0
  21. package/dist/project/convert/scripts.js.map +1 -0
  22. package/dist/project/convert/styles.js +228 -0
  23. package/dist/project/convert/styles.js.map +1 -0
  24. package/dist/project/convert/write.js +142 -0
  25. package/dist/project/convert/write.js.map +1 -0
  26. package/dist/project/fonts.js +131 -0
  27. package/dist/project/fonts.js.map +1 -0
  28. package/dist/project/libraries.js +28 -0
  29. package/dist/project/libraries.js.map +1 -0
  30. package/dist/project/method.js +1 -1
  31. package/dist/project/method.js.map +1 -1
  32. package/dist/project/scaffold.js +33 -6
  33. package/dist/project/scaffold.js.map +1 -1
  34. package/dist/session/proc.js +29 -1
  35. package/dist/session/proc.js.map +1 -1
  36. package/dist/session/session.js +47 -4
  37. package/dist/session/session.js.map +1 -1
  38. package/dist/version.js +1 -1
  39. package/package.json +1 -1
  40. package/skills/multiclone/SKILL.md +15 -5
  41. package/templates/react-vite/index.html +1 -1
  42. package/templates/react-vite/src/main.tsx +2 -2
  43. package/templates/react-vite/src/styles/index.css +0 -1
  44. package/dist/project/draft.js +0 -860
  45. package/dist/project/draft.js.map +0 -1
  46. package/templates/react-vite/src/styles/draft.css +0 -1
package/README.md CHANGED
@@ -19,11 +19,11 @@ No global install? Put `npx` in front of every command.
19
19
 
20
20
  1. The agent asks one question: the landing page only, specific pages, or the whole site.
21
21
  2. `multiclone start <url> --scope …` returns in seconds with a **progress link** (for example `http://127.0.0.1:4300/`). Open it: it shows each step live, then the clone itself.
22
- 3. In about 2–3 minutes the first draft is live: a quick capture (desktop and mobile at the same time), a React project with the real fonts, colours and media, and one component per section with the real text, links, images and video. The clone runs on localhost next to an offline copy of the original.
23
- 4. While the agent polishes the draft, multiclone captures the other pages and a deep pass (scroll motion, hovers, clicks, the code that animates) in the background. `multiclone status` shows where it is.
22
+ 3. In about 2–3 minutes the first draft is live: a quick capture (desktop and mobile at the same time), then the page converted into a React + Vite + TypeScript project. Each section becomes its own component with the original markup and class names, the site's real CSS is split into a shared file plus one file per section, media and fonts are local (missing fonts fall back to Google Fonts), and the site's own animation scripts run unchanged. It looks and moves like the original from the first render. The clone runs on localhost next to an offline copy of the original.
23
+ 4. While the agent polishes the converted sections (never redrawing them), multiclone captures the other pages and a deep pass (scroll motion, hovers, clicks, the code that animates) in the background. `multiclone status` shows where it is.
24
24
  5. The agent compares the clone with the original per section, motion track and hover, fixes the worst first, and finishes with a localhost link and a score.
25
25
 
26
- Run `start` again after a crash or restart: finished captures are reused and drafted pages are never overwritten. `multiclone stop` ends the servers; the files stay.
26
+ Run `start` again after a crash or restart: finished captures are reused and converted pages are never overwritten. Running it from inside the workspace reuses that workspace. `multiclone stop` ends the servers; the files stay.
27
27
 
28
28
  ## What's inside
29
29
 
@@ -54,7 +54,7 @@ Run `start` again after a crash or restart: finished captures are reused and dra
54
54
  | `multiclone setup [dir] [--agents claude,cursor,agents] [--mcp] [--global]` | Teach your agent the method |
55
55
  | `multiclone guide [topic]` | Print the method |
56
56
  | `multiclone capture <url> [--depth quick\|full] [--viewports desktop,mobile\|auto] [--headed]` | Record and analyse the page |
57
- | `multiclone draft <capture-dir> <project-dir> [--route /pricing]` | Write section components from a capture |
57
+ | `multiclone draft <capture-dir> <project-dir> [--route /pricing]` | Convert a capture into section components |
58
58
  | `multiclone analyze <capture-dir>` | Rebuild the derived files |
59
59
  | `multiclone inspect <capture-dir> section [03-pricing]` | Page through a capture |
60
60
  | `multiclone serve <capture-dir> [--port 4400] [--mode live\|snapshot]` | Offline mirror and mock API |
@@ -4,7 +4,9 @@ description: Rebuilds one section of a multiclone capture as a React component i
4
4
  tools: Read, Write, Edit, Glob, Grep, Bash
5
5
  ---
6
6
 
7
- You rebuild exactly one section of a captured website inside an existing React + Vite + TypeScript clone project. You get three things: the capture folder, the section id (for example `03-pricing`) and the project folder.
7
+ You improve or rebuild exactly one section of a captured website inside an existing React + Vite + TypeScript clone project. You get three things: the capture folder, the section id (for example `03-pricing`) and the project folder.
8
+
9
+ **If the section is already converted** (a component under `<project>/src/sections/<page>/` whose root has `data-mc-section="<id>"`), polish it in place and never delete or redraw it: it already uses the original markup, class names, CSS (`<Name>.css` plus `src/styles/original/<page>/base.css`) and the site's own scripts (`src/original/<page>.ts`). Fix only what differs from the crops, keep class names unless you also update their CSS and scripts, and port a script to React only when you can match its motion (then remove its entry from `src/original/<page>.ts`).
8
10
 
9
11
  ## Read first
10
12
 
@@ -18,8 +20,8 @@ Use the multiclone `inspect` tool (`facet: "section"`, `selector: "<id>"`) for a
18
20
 
19
21
  ## Build
20
22
 
21
- - One component in `<project>/src/components/sections/<Name>.tsx`, plus typed content in `src/content/` when the section has copy or lists. Copy text from the capture; never retype or invent it.
22
- - Root element: `<section {...mcSection('<id>')}>`.
23
+ - For a section with no converted component: one component in `<project>/src/sections/<page>/<Name>/<Name>.tsx`, plus typed content in `src/content/` when the section has copy or lists. Copy text from the capture; never retype or invent it.
24
+ - Root element: `<section {...mcSection('<id>')}>` (converted sections already carry `data-mc-section`).
23
25
  - Every element in `motion.json` gets `{...mcTrack(id)}`; every element in `interactions.json` gets `{...mcHover(id)}`.
24
26
  - Match the captured values: sizes, spacing, colours, fonts, radii, shadows and the motion curves (start, end, easing). Prefer the existing tokens when a value matches one.
25
27
  - Media paths come from `src/content/asset-map.json`.
@@ -7,8 +7,8 @@ Clone this website with the multiclone method: $ARGUMENTS
7
7
 
8
8
  1. Ask the user one short question first: clone just the landing page, specific pages (which ones), or the whole site?
9
9
  2. Run `multiclone start <url> --scope <answer>` (add `--pages /a,/b` for specific pages, `--dir <folder>` if a project folder was given). Give the user the progress link it prints right away.
10
- 3. Run `multiclone status --wait draft`. When the first draft is live, give the user the clone link.
11
- 4. Follow the `multiclone` skill (or `multiclone guide`) to polish the draft section by section, then compare and fix.
10
+ 3. Run `multiclone status --wait draft`. When the converted page is live, give the user the clone link.
11
+ 4. Follow the `multiclone` skill (or `multiclone guide`): compare first, then polish the converted sections in place, then compare and fix. Never delete a converted section and redraw it; it already uses the site's real markup, CSS and scripts.
12
12
 
13
13
  If `multiclone` isn't on the PATH, use `npx -y multiclone` instead. The result must be the React + Vite project with one component per section; never hand over a downloaded copy of the original site as the clone. If multiclone can't run, say what failed and stop.
14
14
 
@@ -3,8 +3,8 @@ import { readdir } from 'node:fs/promises';
3
3
  import { join, resolve } from 'node:path';
4
4
  import { z } from 'zod';
5
5
  import { ok, err, mcError } from '../../domain/result.js';
6
- import { generateDraft } from '../../project/draft.js';
7
- import { sessionStatus, startSession, stopSession } from '../../session/session.js';
6
+ import { convertPage } from '../../project/convert/convert.js';
7
+ import { enclosingWorkspace, sessionStatus, startSession, stopSession, } from '../../session/session.js';
8
8
  import { defineTool } from '../types.js';
9
9
  /** Short, capped summary for agents; everything else is in .multiclone/session.json. */
10
10
  export function summarize(state) {
@@ -143,8 +143,8 @@ export const stopTool = defineTool({
143
143
  });
144
144
  export const draftTool = defineTool({
145
145
  name: 'draft',
146
- title: 'Write a first draft from a capture',
147
- description: 'Turn a capture into React components in a scaffolded project: one component and CSS module per section with the real text, links, media and fonts, a page that composes them, and a route. Layout is approximated from the captured computed styles (flex and grid kept, sizes relative); motion and interactions are left to the agent. `start` runs this for you.',
146
+ title: 'Convert a capture into React sections',
147
+ description: "Convert a captured page into the React project: the original markup becomes one .tsx component per section (original class names kept), the site's real CSS is split into a shared sheet plus one sheet per section, media and fonts point at local copies, and the site's own animation scripts run unchanged from public/original. The result looks and moves like the original from the first render; polish it section by section, never redraw it. `start` runs this for you.",
148
148
  input: z.object({
149
149
  capture: z.string().describe('Capture folder.'),
150
150
  project: z.string().describe('Scaffolded project folder.'),
@@ -158,7 +158,7 @@ export const draftTool = defineTool({
158
158
  readOnly: false,
159
159
  openWorld: false,
160
160
  run: async (input) => {
161
- const result = await generateDraft({
161
+ const result = await convertPage({
162
162
  capture: input.capture,
163
163
  project: input.project,
164
164
  route: input.route,
@@ -170,7 +170,7 @@ export const draftTool = defineTool({
170
170
  return ok({
171
171
  data: result,
172
172
  text: [
173
- `Drafted ${result.route} → ${result.page} (${String(result.sections.length)} sections)`,
173
+ `Converted ${result.route} → ${result.page} (${String(result.sections.length)} sections, ${result.source} HTML, ${String(result.scripts.kept)} original scripts, ${String(result.css.sectionRules)} CSS rules in section files)`,
174
174
  ...list,
175
175
  ...result.warnings.slice(0, 5).map((warning) => ` ! ${warning}`),
176
176
  ].join('\n'),
@@ -184,8 +184,9 @@ function noSession() {
184
184
  async function findWorkspace(dir) {
185
185
  if (dir !== undefined)
186
186
  return resolve(dir);
187
- if (existsSync(join('.multiclone', 'session.json')))
188
- return resolve('.');
187
+ const around = enclosingWorkspace('.');
188
+ if (around)
189
+ return around;
189
190
  const candidates = (await readdir('.').catch(() => []))
190
191
  .filter((name) => name.startsWith('multiclone-') && existsSync(join(name, '.multiclone', 'session.json')))
191
192
  .sort();
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/contracts/tools/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/contracts/tools/session.ts"],"names":[],"mappings":"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"}
@@ -29,19 +29,7 @@ export async function exportAssets(captureDir, projectDir) {
29
29
  continue;
30
30
  if (!MEDIA.test(entry.mimeType) && !MEDIA_EXT.test(url.pathname))
31
31
  continue;
32
- const safePath = url.pathname
33
- .split('/')
34
- .filter(Boolean)
35
- .map((part) => safeDecode(part)
36
- .replace(/[^a-zA-Z0-9._-]+/g, '_')
37
- .slice(0, 80))
38
- .join('/');
39
- const ext = extname(safePath) ? '' : extname(entry.file);
40
- const local = `/media/${url.hostname}/${safePath || 'index'}${ext}`;
41
- const suffix = url.search
42
- ? `-${Buffer.from(url.search).toString('base64url').slice(0, 10)}`
43
- : '';
44
- const finalLocal = suffix ? local.replace(/(\.[a-z0-9]+)?$/i, `${suffix}$1`) : local;
32
+ const finalLocal = mediaPath(url, entry.file);
45
33
  const target = join(project, 'public', finalLocal);
46
34
  await ensureDir(join(target, '..'));
47
35
  // A missing or unreadable capture file costs one asset, never the whole export.
@@ -66,4 +54,18 @@ function safeDecode(part) {
66
54
  return part;
67
55
  }
68
56
  }
57
+ /** Where a captured file lives in the clone: `/media/<host>/<path>` (query kept as a suffix). */
58
+ export function mediaPath(url, file) {
59
+ const safePath = url.pathname
60
+ .split('/')
61
+ .filter(Boolean)
62
+ .map((part) => safeDecode(part)
63
+ .replace(/[^a-zA-Z0-9._-]+/g, '_')
64
+ .slice(0, 80))
65
+ .join('/');
66
+ const ext = extname(safePath) ? '' : extname(file);
67
+ const local = `/media/${url.hostname}/${safePath || 'index'}${ext}`;
68
+ const suffix = url.search ? `-${Buffer.from(url.search).toString('base64url').slice(0, 10)}` : '';
69
+ return suffix ? local.replace(/(\.[a-z0-9]+)?$/i, `${suffix}$1`) : local;
70
+ }
69
71
  //# sourceMappingURL=assets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/project/assets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/project/assets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,318 @@
1
+ /**
2
+ * HTML attribute → React prop rules. Props React types strictly go out as real props; anything
3
+ * React's types would reject (unknown names, values outside an enumerated union) goes out through
4
+ * a typed spread so the original attribute still reaches the DOM unchanged.
5
+ */
6
+ /** HTML attribute names whose React prop name differs. */
7
+ export const RENAMED = {
8
+ class: 'className',
9
+ for: 'htmlFor',
10
+ tabindex: 'tabIndex',
11
+ readonly: 'readOnly',
12
+ maxlength: 'maxLength',
13
+ minlength: 'minLength',
14
+ colspan: 'colSpan',
15
+ rowspan: 'rowSpan',
16
+ srcset: 'srcSet',
17
+ srcdoc: 'srcDoc',
18
+ srclang: 'srcLang',
19
+ crossorigin: 'crossOrigin',
20
+ autoplay: 'autoPlay',
21
+ playsinline: 'playsInline',
22
+ contenteditable: 'contentEditable',
23
+ datetime: 'dateTime',
24
+ enctype: 'encType',
25
+ 'accept-charset': 'acceptCharset',
26
+ frameborder: 'frameBorder',
27
+ allowfullscreen: 'allowFullScreen',
28
+ referrerpolicy: 'referrerPolicy',
29
+ autocomplete: 'autoComplete',
30
+ autofocus: 'autoFocus',
31
+ novalidate: 'noValidate',
32
+ formnovalidate: 'formNoValidate',
33
+ usemap: 'useMap',
34
+ spellcheck: 'spellCheck',
35
+ cellpadding: 'cellPadding',
36
+ cellspacing: 'cellSpacing',
37
+ inputmode: 'inputMode',
38
+ enterkeyhint: 'enterKeyHint',
39
+ fetchpriority: 'fetchPriority',
40
+ itemprop: 'itemProp',
41
+ itemscope: 'itemScope',
42
+ itemtype: 'itemType',
43
+ itemid: 'itemID',
44
+ itemref: 'itemRef',
45
+ hreflang: 'hrefLang',
46
+ charset: 'charSet',
47
+ accesskey: 'accessKey',
48
+ value: 'value',
49
+ checked: 'checked',
50
+ };
51
+ const GLOBAL = new Set([
52
+ 'id',
53
+ 'className',
54
+ 'title',
55
+ 'role',
56
+ 'lang',
57
+ 'dir',
58
+ 'hidden',
59
+ 'tabIndex',
60
+ 'accessKey',
61
+ 'draggable',
62
+ 'spellCheck',
63
+ 'contentEditable',
64
+ 'translate',
65
+ 'slot',
66
+ 'itemProp',
67
+ 'itemScope',
68
+ 'itemType',
69
+ 'itemID',
70
+ 'itemRef',
71
+ 'autoFocus',
72
+ 'inputMode',
73
+ 'enterKeyHint',
74
+ 'nonce',
75
+ 'inert',
76
+ ]);
77
+ const MEDIA = [
78
+ 'src',
79
+ 'width',
80
+ 'height',
81
+ 'crossOrigin',
82
+ 'preload',
83
+ 'autoPlay',
84
+ 'muted',
85
+ 'loop',
86
+ 'controls',
87
+ 'playsInline',
88
+ ];
89
+ const BY_TAG = {
90
+ a: ['href', 'target', 'rel', 'download', 'hrefLang', 'referrerPolicy', 'type', 'media', 'ping'],
91
+ area: ['href', 'target', 'rel', 'alt', 'coords', 'shape', 'download', 'referrerPolicy'],
92
+ img: [
93
+ 'src',
94
+ 'srcSet',
95
+ 'sizes',
96
+ 'alt',
97
+ 'width',
98
+ 'height',
99
+ 'loading',
100
+ 'decoding',
101
+ 'crossOrigin',
102
+ 'referrerPolicy',
103
+ 'fetchPriority',
104
+ 'useMap',
105
+ ],
106
+ video: [...MEDIA, 'poster'],
107
+ audio: MEDIA,
108
+ source: ['src', 'srcSet', 'type', 'media', 'sizes', 'width', 'height'],
109
+ track: ['src', 'kind', 'label', 'srcLang', 'default'],
110
+ iframe: [
111
+ 'src',
112
+ 'srcDoc',
113
+ 'width',
114
+ 'height',
115
+ 'allow',
116
+ 'allowFullScreen',
117
+ 'loading',
118
+ 'name',
119
+ 'referrerPolicy',
120
+ 'sandbox',
121
+ 'frameBorder',
122
+ ],
123
+ embed: ['src', 'type', 'width', 'height'],
124
+ object: ['data', 'type', 'width', 'height', 'name'],
125
+ input: [
126
+ 'type',
127
+ 'name',
128
+ 'value',
129
+ 'placeholder',
130
+ 'required',
131
+ 'disabled',
132
+ 'checked',
133
+ 'readOnly',
134
+ 'min',
135
+ 'max',
136
+ 'step',
137
+ 'maxLength',
138
+ 'minLength',
139
+ 'pattern',
140
+ 'autoComplete',
141
+ 'multiple',
142
+ 'accept',
143
+ 'size',
144
+ 'list',
145
+ 'form',
146
+ 'alt',
147
+ 'src',
148
+ 'width',
149
+ 'height',
150
+ 'formNoValidate',
151
+ ],
152
+ button: ['type', 'name', 'value', 'disabled', 'form', 'formNoValidate'],
153
+ form: [
154
+ 'action',
155
+ 'method',
156
+ 'target',
157
+ 'encType',
158
+ 'noValidate',
159
+ 'name',
160
+ 'autoComplete',
161
+ 'acceptCharset',
162
+ ],
163
+ label: ['htmlFor', 'form'],
164
+ textarea: [
165
+ 'name',
166
+ 'placeholder',
167
+ 'rows',
168
+ 'cols',
169
+ 'required',
170
+ 'disabled',
171
+ 'readOnly',
172
+ 'maxLength',
173
+ 'minLength',
174
+ 'wrap',
175
+ 'autoComplete',
176
+ 'form',
177
+ ],
178
+ select: ['name', 'required', 'disabled', 'multiple', 'size', 'autoComplete', 'form'],
179
+ option: ['value', 'disabled', 'label'],
180
+ optgroup: ['label', 'disabled'],
181
+ fieldset: ['disabled', 'name', 'form'],
182
+ output: ['htmlFor', 'name', 'form'],
183
+ ol: ['start', 'reversed', 'type'],
184
+ li: ['value'],
185
+ td: ['colSpan', 'rowSpan', 'headers'],
186
+ th: ['colSpan', 'rowSpan', 'headers', 'scope', 'abbr'],
187
+ col: ['span', 'width'],
188
+ colgroup: ['span'],
189
+ table: ['cellPadding', 'cellSpacing', 'summary', 'width'],
190
+ time: ['dateTime'],
191
+ canvas: ['width', 'height'],
192
+ details: ['open'],
193
+ dialog: ['open'],
194
+ blockquote: ['cite'],
195
+ q: ['cite'],
196
+ del: ['cite', 'dateTime'],
197
+ ins: ['cite', 'dateTime'],
198
+ meter: ['value', 'min', 'max', 'low', 'high', 'optimum'],
199
+ progress: ['value', 'max'],
200
+ data: ['value'],
201
+ map: ['name'],
202
+ };
203
+ /** Prop values React types as unions; any other value goes through the spread. */
204
+ const UNIONS = {
205
+ 'button.type': new Set(['button', 'submit', 'reset']),
206
+ loading: new Set(['lazy', 'eager']),
207
+ decoding: new Set(['async', 'sync', 'auto']),
208
+ fetchPriority: new Set(['high', 'low', 'auto']),
209
+ crossOrigin: new Set(['anonymous', 'use-credentials', '']),
210
+ preload: new Set(['none', 'metadata', 'auto', '']),
211
+ referrerPolicy: new Set([
212
+ '',
213
+ 'no-referrer',
214
+ 'no-referrer-when-downgrade',
215
+ 'origin',
216
+ 'origin-when-cross-origin',
217
+ 'same-origin',
218
+ 'strict-origin',
219
+ 'strict-origin-when-cross-origin',
220
+ 'unsafe-url',
221
+ ]),
222
+ translate: new Set(['yes', 'no']),
223
+ draggable: new Set(['true', 'false']),
224
+ spellCheck: new Set(['true', 'false']),
225
+ contentEditable: new Set(['true', 'false', 'inherit', 'plaintext-only']),
226
+ inputMode: new Set(['none', 'text', 'tel', 'url', 'email', 'numeric', 'decimal', 'search']),
227
+ enterKeyHint: new Set(['enter', 'done', 'go', 'next', 'previous', 'search', 'send']),
228
+ 'ol.type': new Set(['1', 'a', 'A', 'i', 'I']),
229
+ wrap: new Set(['hard', 'soft', 'off']),
230
+ scope: new Set(['row', 'col', 'rowgroup', 'colgroup']),
231
+ 'track.kind': new Set(['subtitles', 'captions', 'descriptions', 'chapters', 'metadata']),
232
+ };
233
+ /** Attributes that are present-or-absent in HTML and booleans in React. */
234
+ export const BOOLEAN = new Set([
235
+ 'hidden',
236
+ 'disabled',
237
+ 'checked',
238
+ 'muted',
239
+ 'loop',
240
+ 'autoPlay',
241
+ 'controls',
242
+ 'playsInline',
243
+ 'required',
244
+ 'multiple',
245
+ 'open',
246
+ 'noValidate',
247
+ 'formNoValidate',
248
+ 'allowFullScreen',
249
+ 'itemScope',
250
+ 'default',
251
+ 'reversed',
252
+ 'readOnly',
253
+ 'autoFocus',
254
+ 'inert',
255
+ ]);
256
+ /** Props React types as numbers. */
257
+ export const NUMERIC = new Set([
258
+ 'tabIndex',
259
+ 'colSpan',
260
+ 'rowSpan',
261
+ 'rows',
262
+ 'cols',
263
+ 'size',
264
+ 'maxLength',
265
+ 'minLength',
266
+ 'start',
267
+ 'span',
268
+ 'cellPadding',
269
+ 'cellSpacing',
270
+ ]);
271
+ /** True when React's types accept `prop="value"` on this HTML tag. */
272
+ export function isTypedProp(tag, prop, value) {
273
+ if (!GLOBAL.has(prop) && !(BY_TAG[tag]?.includes(prop) ?? false))
274
+ return false;
275
+ const union = UNIONS[`${tag}.${prop}`] ?? (prop === 'type' ? undefined : UNIONS[prop]);
276
+ if (union && !union.has(value))
277
+ return false;
278
+ if (NUMERIC.has(prop) && !/^-?\d+$/.test(value.trim()))
279
+ return false;
280
+ return true;
281
+ }
282
+ /** React prop name for an HTML attribute (lower-case names that React spells the same pass). */
283
+ export function htmlPropName(name) {
284
+ return RENAMED[name] ?? name;
285
+ }
286
+ /** React prop name for an SVG/MathML attribute: kebab-case and namespaced names camel-cased. */
287
+ export function svgPropName(name) {
288
+ if (name === 'class')
289
+ return 'className';
290
+ if (name.startsWith('data-') || name.startsWith('aria-'))
291
+ return name;
292
+ if (name === 'xlink:href')
293
+ return 'href';
294
+ if (name.startsWith('xlink:'))
295
+ return `xlink${cap(name.slice(6))}`;
296
+ if (name === 'xml:space')
297
+ return 'xmlSpace';
298
+ if (name === 'xml:lang')
299
+ return 'xmlLang';
300
+ if (name === 'xmlns:xlink')
301
+ return 'xmlnsXlink';
302
+ if (name.includes(':'))
303
+ return null;
304
+ return name.replace(/-([a-z])/g, (_match, letter) => letter.toUpperCase());
305
+ }
306
+ function cap(value) {
307
+ return value.charAt(0).toUpperCase() + value.slice(1);
308
+ }
309
+ /** CSS property → React style key (`-webkit-mask` → `WebkitMask`, `--x` unchanged). */
310
+ export function styleKey(property) {
311
+ if (property.startsWith('--'))
312
+ return property;
313
+ const name = property.toLowerCase();
314
+ const unprefixed = name.startsWith('-ms-') ? `ms-${name.slice(4)}` : name.replace(/^-/, '');
315
+ const camel = unprefixed.replace(/-([a-z])/g, (_match, letter) => letter.toUpperCase());
316
+ return name.startsWith('-') && !name.startsWith('-ms-') ? cap(camel) : camel;
317
+ }
318
+ //# sourceMappingURL=attrs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attrs.js","sourceRoot":"","sources":["../../../src/project/convert/attrs.ts"],"names":[],"mappings":"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"}