@hyperframes/core 0.7.47 → 0.7.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/figma/client.d.ts +16 -0
- package/dist/figma/client.d.ts.map +1 -1
- package/dist/figma/client.js +132 -21
- package/dist/figma/client.js.map +1 -1
- package/dist/figma/nodeToHtml.d.ts +5 -2
- package/dist/figma/nodeToHtml.d.ts.map +1 -1
- package/dist/figma/nodeToHtml.js +44 -21
- package/dist/figma/nodeToHtml.js.map +1 -1
- package/dist/generated/position-edits-render-inline.d.ts +3 -0
- package/dist/generated/position-edits-render-inline.d.ts.map +1 -0
- package/dist/generated/position-edits-render-inline.js +7 -0
- package/dist/generated/position-edits-render-inline.js.map +1 -0
- package/dist/generated/runtime-inline.js +1 -1
- package/dist/generated/runtime-inline.js.map +1 -1
- package/dist/hyperframe.runtime.iife.js +25 -25
- package/dist/runtime/positionEdits.d.ts +2 -0
- package/dist/runtime/positionEdits.d.ts.map +1 -1
- package/dist/runtime/positionEdits.js +113 -0
- package/dist/runtime/positionEdits.js.map +1 -1
- package/package.json +12 -6
package/dist/figma/client.d.ts
CHANGED
|
@@ -50,8 +50,19 @@ export interface FigmaFileVersion {
|
|
|
50
50
|
version: string;
|
|
51
51
|
lastModified: string;
|
|
52
52
|
}
|
|
53
|
+
/** One batch render result — url is null when figma couldn't render that
|
|
54
|
+
* node (a bad node id in the batch shouldn't fail the whole call). */
|
|
55
|
+
export interface BatchRenderedNode {
|
|
56
|
+
nodeId: string;
|
|
57
|
+
url: string | null;
|
|
58
|
+
ext: FigmaAssetFormat;
|
|
59
|
+
}
|
|
53
60
|
export interface FigmaClient {
|
|
54
61
|
renderNode(ref: FigmaRef, opts: RenderNodeOptions): Promise<RenderedNode>;
|
|
62
|
+
/** Batch render many nodes of ONE file in a single /v1/images call — the
|
|
63
|
+
* documented rate-limit workaround (comma-separated ids). Per-node
|
|
64
|
+
* failures come back as url:null rather than throwing the batch. */
|
|
65
|
+
renderNodes(fileKey: string, nodeIds: string[], opts: RenderNodeOptions): Promise<BatchRenderedNode[]>;
|
|
55
66
|
imageFills(fileKey: string): Promise<Map<string, string>>;
|
|
56
67
|
variables(fileKey: string): Promise<FigmaVariablesResult>;
|
|
57
68
|
styles(fileKey: string): Promise<FigmaStyleMeta[]>;
|
|
@@ -62,6 +73,11 @@ export interface FigmaClientOptions {
|
|
|
62
73
|
token: string;
|
|
63
74
|
fetch?: FigmaFetch;
|
|
64
75
|
baseUrl?: string;
|
|
76
|
+
/** Injectable delay for 429 backoff — tests pass a no-op so retries don't
|
|
77
|
+
* actually wait. Defaults to a real timer. */
|
|
78
|
+
sleep?: (ms: number) => Promise<void>;
|
|
79
|
+
/** Max 429 retries before giving up. Default 3. */
|
|
80
|
+
maxRetries?: number;
|
|
65
81
|
}
|
|
66
82
|
export declare function createFigmaClient(options: FigmaClientOptions): FigmaClient;
|
|
67
83
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/figma/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/figma/client.ts"],"names":[],"mappings":"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"}
|
package/dist/figma/client.js
CHANGED
|
@@ -8,6 +8,61 @@ export class FigmaClientError extends Error {
|
|
|
8
8
|
this.status = status;
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
|
+
/** Read scope each endpoint needs, named exactly as figma's PAT settings UI
|
|
12
|
+
* lists them — so a 403 tells the user which checkbox to tick, not just
|
|
13
|
+
* "some read scope". The styles endpoint's `library_content:read` is the one
|
|
14
|
+
* the setup docs used to omit (it 403s even with file content + metadata). */
|
|
15
|
+
const SCOPE_HINTS = {
|
|
16
|
+
fileContent: "File content: Read-only",
|
|
17
|
+
fileMetadata: "File metadata: Read-only",
|
|
18
|
+
libraryContent: "Library content: Read-only (library_content:read)",
|
|
19
|
+
};
|
|
20
|
+
/** Longest we'll auto-wait on a single Retry-After before giving up — past a
|
|
21
|
+
* minute the user is better off cancelling and reducing batch size (the
|
|
22
|
+
* RATE_LIMITED message says so) than watching the CLI block silently. */
|
|
23
|
+
const MAX_RETRY_WAIT_MS = 60_000;
|
|
24
|
+
/** Parse a Retry-After header (figma sends integer seconds; the HTTP spec
|
|
25
|
+
* also allows a date) into ms, capped at MAX_RETRY_WAIT_MS, or null when
|
|
26
|
+
* absent/unparseable. The cap keeps a spec-legal `Retry-After: 3600` (tier
|
|
27
|
+
* quota exhaustion) from silently blocking the CLI for an hour. */
|
|
28
|
+
function retryAfterMs(res) {
|
|
29
|
+
const raw = res.headers.get("retry-after");
|
|
30
|
+
if (raw === null)
|
|
31
|
+
return null;
|
|
32
|
+
const secs = Number(raw);
|
|
33
|
+
if (Number.isFinite(secs))
|
|
34
|
+
return Math.min(MAX_RETRY_WAIT_MS, Math.max(0, secs * 1000));
|
|
35
|
+
const date = Date.parse(raw);
|
|
36
|
+
if (Number.isNaN(date))
|
|
37
|
+
return null;
|
|
38
|
+
return Math.min(MAX_RETRY_WAIT_MS, Math.max(0, date - Date.now()));
|
|
39
|
+
}
|
|
40
|
+
/** Figma's error bodies are precise — "Invalid token", or "Invalid scope(s):
|
|
41
|
+
* … requires the X scope" — and worth surfacing verbatim instead of a
|
|
42
|
+
* generic guess. The message lives under `err` on most endpoints but
|
|
43
|
+
* `message` on /variables; read both. Returns null when unparseable. */
|
|
44
|
+
async function readFigmaErrorMessage(res) {
|
|
45
|
+
let text;
|
|
46
|
+
try {
|
|
47
|
+
text = await res.text();
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
const body = JSON.parse(text);
|
|
54
|
+
if (isRecord(body)) {
|
|
55
|
+
if (typeof body.err === "string")
|
|
56
|
+
return body.err;
|
|
57
|
+
if (typeof body.message === "string")
|
|
58
|
+
return body.message;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
// non-JSON body — fall through
|
|
63
|
+
}
|
|
64
|
+
return text.trim() === "" ? null : text.trim();
|
|
65
|
+
}
|
|
11
66
|
function requireNodeId(ref) {
|
|
12
67
|
if (!ref.nodeId)
|
|
13
68
|
throw new Error(`figma ref ${ref.fileKey} has no nodeId`);
|
|
@@ -38,6 +93,7 @@ export function createFigmaClient(options) {
|
|
|
38
93
|
" 1. figma.com/settings → Security → Personal access tokens → Generate new token",
|
|
39
94
|
" 2. Scopes (read-only is all this integration ever needs — it never writes to figma):",
|
|
40
95
|
" File content: Read-only · File metadata: Read-only",
|
|
96
|
+
" Library content: Read-only (needed for the `tokens` published-styles fallback)",
|
|
41
97
|
" Variables: Read-only (optional — brand variables, requires figma Enterprise;",
|
|
42
98
|
" without it `tokens` falls back to published styles)",
|
|
43
99
|
' 3. export FIGMA_TOKEN="figd_…" — add it to your shell profile or the project .env',
|
|
@@ -47,37 +103,86 @@ export function createFigmaClient(options) {
|
|
|
47
103
|
}
|
|
48
104
|
const doFetch = options.fetch ?? ((url, init) => fetch(url, init));
|
|
49
105
|
const base = options.baseUrl ?? "https://api.figma.com";
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
106
|
+
const sleep = options.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
|
|
107
|
+
const maxRetries = options.maxRetries ?? 3;
|
|
108
|
+
/** Map a 403 to the right typed error using figma's own response body:
|
|
109
|
+
* "Invalid token" is a bad PAT (figma returns 403, NOT 401, for these on
|
|
110
|
+
* file endpoints), "Invalid scope(s) … requires X" is a missing scope
|
|
111
|
+
* surfaced verbatim. Falls back to the endpoint's scopeHint when the body
|
|
112
|
+
* is silent. */
|
|
113
|
+
function forbiddenError(body, opts) {
|
|
114
|
+
// Every branch RETURNS the error (the caller throws once) — no mixed
|
|
115
|
+
// throw/return, so a future caller that wraps the result gets consistent
|
|
116
|
+
// behavior across all three cases.
|
|
117
|
+
if (body && /invalid token/i.test(body))
|
|
118
|
+
return new FigmaClientError("BAD_TOKEN", "figma rejected the token (403 Invalid token) — it is invalid, expired, or revoked. Re-mint at figma.com/settings → Security, then update FIGMA_TOKEN.", 403);
|
|
119
|
+
if (opts.enterpriseGated)
|
|
120
|
+
return new FigmaClientError("REQUIRES_ENTERPRISE", "figma variables require an Enterprise plan (403) — fall back to styles", 403);
|
|
121
|
+
if (body && /scope/i.test(body))
|
|
122
|
+
return new FigmaClientError("FORBIDDEN", `figma denied access (403): ${body} — add the named scope at figma.com/settings → Security → Personal access tokens.`, 403);
|
|
123
|
+
const scopeLine = opts.scopeHint
|
|
124
|
+
? `This endpoint needs the "${opts.scopeHint}" scope — add it at figma.com/settings → Security → Personal access tokens.`
|
|
125
|
+
: "The token is missing a read scope, or your account can't view this file. Check File content: Read-only + File metadata: Read-only at figma.com/settings → Security.";
|
|
126
|
+
return new FigmaClientError("FORBIDDEN", `figma denied access (403). ${scopeLine} Also confirm the file is visible to your account.`, 403);
|
|
127
|
+
}
|
|
128
|
+
/** Throw the typed error for a non-ok response (no-op when res.ok). */
|
|
129
|
+
async function throwForStatus(res, path, opts) {
|
|
130
|
+
if (res.ok)
|
|
131
|
+
return;
|
|
54
132
|
if (res.status === 401)
|
|
55
133
|
throw new FigmaClientError("BAD_TOKEN", "figma rejected the token (401) — it is expired or revoked. Re-mint at figma.com/settings → Security, then update FIGMA_TOKEN.", 401);
|
|
56
|
-
if (res.status === 403 && enterpriseGated)
|
|
57
|
-
throw new FigmaClientError("REQUIRES_ENTERPRISE", "figma variables require an Enterprise plan (403) — fall back to styles", 403);
|
|
58
134
|
if (res.status === 403)
|
|
59
|
-
throw
|
|
135
|
+
throw forbiddenError(await readFigmaErrorMessage(res), opts);
|
|
60
136
|
if (res.status === 429)
|
|
61
|
-
throw new FigmaClientError("RATE_LIMITED",
|
|
62
|
-
|
|
63
|
-
|
|
137
|
+
throw new FigmaClientError("RATE_LIMITED", `figma rate limit hit (429) and still limited after ${maxRetries} retries — wait a minute and re-run, or import fewer nodes per call.`, 429);
|
|
138
|
+
throw new FigmaClientError("HTTP_ERROR", `figma request failed: HTTP ${res.status} ${path}`, res.status);
|
|
139
|
+
}
|
|
140
|
+
async function get(path, opts = {}) {
|
|
141
|
+
// Retry 429 with backoff before surfacing RATE_LIMITED — figma's limit is
|
|
142
|
+
// per-minute, so a couple of imports in quick succession hit it and a
|
|
143
|
+
// short wait clears it. Honor Retry-After when present, else exponential.
|
|
144
|
+
let res;
|
|
145
|
+
for (let attempt = 0;; attempt += 1) {
|
|
146
|
+
res = await doFetch(`${base}${path}`, { headers: { "X-Figma-Token": token } });
|
|
147
|
+
if (res.status !== 429 || attempt >= maxRetries)
|
|
148
|
+
break;
|
|
149
|
+
const wait = retryAfterMs(res) ?? 1000 * 2 ** attempt;
|
|
150
|
+
await sleep(wait);
|
|
151
|
+
}
|
|
152
|
+
await throwForStatus(res, path, opts);
|
|
64
153
|
return res.json();
|
|
65
154
|
}
|
|
66
155
|
return {
|
|
67
156
|
async renderNode(ref, opts) {
|
|
68
157
|
const nodeId = requireNodeId(ref);
|
|
69
|
-
const
|
|
158
|
+
const [result] = await this.renderNodes(ref.fileKey, [nodeId], opts);
|
|
159
|
+
if (!result || result.url === null)
|
|
160
|
+
throw new FigmaClientError("RENDER_FAILED", `figma could not render node ${nodeId} as ${opts.format}`);
|
|
161
|
+
return { url: result.url, ext: opts.format };
|
|
162
|
+
},
|
|
163
|
+
async renderNodes(fileKey, nodeIds, opts) {
|
|
164
|
+
if (nodeIds.length === 0)
|
|
165
|
+
return [];
|
|
166
|
+
// /v1/images accepts comma-separated ids — one call for the whole batch,
|
|
167
|
+
// which is figma's own answer to the per-minute rate limit.
|
|
168
|
+
const params = new URLSearchParams({ ids: nodeIds.join(","), format: opts.format });
|
|
70
169
|
if (opts.scale !== undefined)
|
|
71
170
|
params.set("scale", String(opts.scale));
|
|
72
|
-
const body = await get(`/v1/images/${
|
|
171
|
+
const body = await get(`/v1/images/${fileKey}?${params}`, {
|
|
172
|
+
scopeHint: SCOPE_HINTS.fileContent,
|
|
173
|
+
});
|
|
73
174
|
const images = isRecord(body) && isRecord(body.images) ? body.images : {};
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
175
|
+
return nodeIds.map((nodeId) => {
|
|
176
|
+
const url = images[nodeId];
|
|
177
|
+
return {
|
|
178
|
+
nodeId,
|
|
179
|
+
url: typeof url === "string" && url !== "" ? url : null,
|
|
180
|
+
ext: opts.format,
|
|
181
|
+
};
|
|
182
|
+
});
|
|
78
183
|
},
|
|
79
184
|
async imageFills(fileKey) {
|
|
80
|
-
const body = await get(`/v1/files/${fileKey}/images
|
|
185
|
+
const body = await get(`/v1/files/${fileKey}/images`, { scopeHint: SCOPE_HINTS.fileContent });
|
|
81
186
|
const meta = isRecord(body) && isRecord(body.meta) ? body.meta : {};
|
|
82
187
|
const images = isRecord(meta.images) ? meta.images : {};
|
|
83
188
|
const out = new Map();
|
|
@@ -88,7 +193,7 @@ export function createFigmaClient(options) {
|
|
|
88
193
|
return out;
|
|
89
194
|
},
|
|
90
195
|
async variables(fileKey) {
|
|
91
|
-
const body = await get(`/v1/files/${fileKey}/variables/local`, true);
|
|
196
|
+
const body = await get(`/v1/files/${fileKey}/variables/local`, { enterpriseGated: true });
|
|
92
197
|
const meta = isRecord(body) && isRecord(body.meta) ? body.meta : {};
|
|
93
198
|
const variables = isRecord(meta.variables) ? meta.variables : {};
|
|
94
199
|
const collections = isRecord(meta.variableCollections) ? meta.variableCollections : {};
|
|
@@ -101,7 +206,9 @@ export function createFigmaClient(options) {
|
|
|
101
206
|
return { variables: typed, variableCollections: collections };
|
|
102
207
|
},
|
|
103
208
|
async styles(fileKey) {
|
|
104
|
-
const body = await get(`/v1/files/${fileKey}/styles
|
|
209
|
+
const body = await get(`/v1/files/${fileKey}/styles`, {
|
|
210
|
+
scopeHint: SCOPE_HINTS.libraryContent,
|
|
211
|
+
});
|
|
105
212
|
const meta = isRecord(body) && isRecord(body.meta) ? body.meta : {};
|
|
106
213
|
const styles = Array.isArray(meta.styles) ? meta.styles : [];
|
|
107
214
|
return styles.filter((s) => isRecord(s) &&
|
|
@@ -112,7 +219,9 @@ export function createFigmaClient(options) {
|
|
|
112
219
|
async nodeTree(ref) {
|
|
113
220
|
const nodeId = requireNodeId(ref);
|
|
114
221
|
const params = new URLSearchParams({ ids: nodeId, geometry: "paths" });
|
|
115
|
-
const body = await get(`/v1/files/${ref.fileKey}/nodes?${params}
|
|
222
|
+
const body = await get(`/v1/files/${ref.fileKey}/nodes?${params}`, {
|
|
223
|
+
scopeHint: SCOPE_HINTS.fileContent,
|
|
224
|
+
});
|
|
116
225
|
const nodes = isRecord(body) && isRecord(body.nodes) ? body.nodes : {};
|
|
117
226
|
const entry = nodes[nodeId];
|
|
118
227
|
const doc = isRecord(entry) ? entry.document : undefined;
|
|
@@ -124,7 +233,9 @@ export function createFigmaClient(options) {
|
|
|
124
233
|
return { ...doc, id: doc.id, name: doc.name, type: doc.type };
|
|
125
234
|
},
|
|
126
235
|
async fileVersion(fileKey) {
|
|
127
|
-
const body = await get(`/v1/files/${fileKey}?depth=1
|
|
236
|
+
const body = await get(`/v1/files/${fileKey}?depth=1`, {
|
|
237
|
+
scopeHint: SCOPE_HINTS.fileMetadata,
|
|
238
|
+
});
|
|
128
239
|
const version = isRecord(body) && typeof body.version === "string" ? body.version : "";
|
|
129
240
|
const lastModified = isRecord(body) && typeof body.lastModified === "string" ? body.lastModified : "";
|
|
130
241
|
return { version, lastModified };
|
package/dist/figma/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/figma/client.ts"],"names":[],"mappings":"AAaA,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAChC,IAAI,CAAuB;IAC3B,MAAM,CAAU;IAEzB,YAAY,IAA0B,EAAE,OAAe,EAAE,MAAe;QACtE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/figma/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,11 @@
|
|
|
7
7
|
* - CSS where CSS is faithful: solid/linear-gradient fills, corner radius,
|
|
8
8
|
* opacity, drop shadow, blur, text styles.
|
|
9
9
|
* - Everything CSS can't match faithfully (vectors, boolean ops, exotic
|
|
10
|
-
* paint) routes to the rasterize list — the caller exports
|
|
11
|
-
* images (Phase 1) and fills in the placeholder src.
|
|
10
|
+
* paint, IMAGE fills) routes to the rasterize list — the caller exports
|
|
11
|
+
* those nodes as images (Phase 1) and fills in the placeholder src. A
|
|
12
|
+
* rasterized node's own fill/corner-radius CSS is never emitted — the
|
|
13
|
+
* exported image already contains it; adding both double-paints (a flat
|
|
14
|
+
* color block behind/around the real art).
|
|
12
15
|
* - Bindings (§7.1): resolved sites emit var(--slug, literal) so a brand
|
|
13
16
|
* refresh propagates; unresolved sites bake the literal and carry a
|
|
14
17
|
* data-figma-unresolved flag. Never a dangling var().
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeToHtml.d.ts","sourceRoot":"","sources":["../../src/figma/nodeToHtml.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"nodeToHtml.d.ts","sourceRoot":"","sources":["../../src/figma/nodeToHtml.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAGlD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,gBAAgB,EAAE,CAAC;CAC/B;AAmCD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AA8QvC,MAAM,WAAW,iBAAiB;IAChC;;uCAEmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,qBAAqB,EAC/B,IAAI,GAAE,iBAAsB,GAC3B,gBAAgB,CAMlB"}
|
package/dist/figma/nodeToHtml.js
CHANGED
|
@@ -7,8 +7,11 @@
|
|
|
7
7
|
* - CSS where CSS is faithful: solid/linear-gradient fills, corner radius,
|
|
8
8
|
* opacity, drop shadow, blur, text styles.
|
|
9
9
|
* - Everything CSS can't match faithfully (vectors, boolean ops, exotic
|
|
10
|
-
* paint) routes to the rasterize list — the caller exports
|
|
11
|
-
* images (Phase 1) and fills in the placeholder src.
|
|
10
|
+
* paint, IMAGE fills) routes to the rasterize list — the caller exports
|
|
11
|
+
* those nodes as images (Phase 1) and fills in the placeholder src. A
|
|
12
|
+
* rasterized node's own fill/corner-radius CSS is never emitted — the
|
|
13
|
+
* exported image already contains it; adding both double-paints (a flat
|
|
14
|
+
* color block behind/around the real art).
|
|
12
15
|
* - Bindings (§7.1): resolved sites emit var(--slug, literal) so a brand
|
|
13
16
|
* refresh propagates; unresolved sites bake the literal and carry a
|
|
14
17
|
* data-figma-unresolved flag. Never a dangling var().
|
|
@@ -89,6 +92,12 @@ function fillCss(node) {
|
|
|
89
92
|
return gradientCss(fill);
|
|
90
93
|
return null;
|
|
91
94
|
}
|
|
95
|
+
/** IMAGE fills (photos, icons pasted as bitmaps) have no CSS equivalent —
|
|
96
|
+
* route to rasterize like vectors, regardless of node.type (a plain
|
|
97
|
+
* RECTANGLE/FRAME carries the fill just as often as a dedicated image node). */
|
|
98
|
+
function hasImageFill(node) {
|
|
99
|
+
return firstVisibleFill(node)?.type === "IMAGE";
|
|
100
|
+
}
|
|
92
101
|
function dropShadowCss(effect) {
|
|
93
102
|
if (!isRecord(effect.offset))
|
|
94
103
|
return null;
|
|
@@ -200,7 +209,11 @@ function geometryCss(node, parentBox, isRoot) {
|
|
|
200
209
|
}
|
|
201
210
|
return styles;
|
|
202
211
|
}
|
|
203
|
-
|
|
212
|
+
/** Corner-radius + clip describe the node's OWN shape — meaningless once
|
|
213
|
+
* that shape has already been baked into a rasterized image (see
|
|
214
|
+
* decorationCss). Opacity stays separate: it's compositing, still correct
|
|
215
|
+
* to apply on top of a raster/vector export. */
|
|
216
|
+
function cornerAndClipCss(node, styles) {
|
|
204
217
|
if (node.type === "ELLIPSE") {
|
|
205
218
|
styles.push("border-radius: 50%");
|
|
206
219
|
}
|
|
@@ -209,27 +222,36 @@ function shapeCss(node, styles) {
|
|
|
209
222
|
}
|
|
210
223
|
if (node.clipsContent === true)
|
|
211
224
|
styles.push("overflow: hidden");
|
|
225
|
+
}
|
|
226
|
+
function opacityCss(node, styles) {
|
|
212
227
|
if (typeof node.opacity === "number" && node.opacity < 1)
|
|
213
228
|
styles.push(`opacity: ${round(node.opacity)}`);
|
|
214
229
|
}
|
|
215
|
-
function decorationCss(node, ctx) {
|
|
230
|
+
function decorationCss(node, ctx, rasterized) {
|
|
216
231
|
const styles = [];
|
|
217
|
-
//
|
|
218
|
-
// color
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
232
|
+
// A rasterized node's fill/shape is already baked into the exported image
|
|
233
|
+
// — background-color/border-radius on top of it would double-paint (a
|
|
234
|
+
// flat color block behind or around the real art). Opacity and effects
|
|
235
|
+
// (shadow/blur) aren't baked by the export, so those still apply.
|
|
236
|
+
if (!rasterized) {
|
|
237
|
+
// backgroundValue is the binding-aware path (var(--slug, literal)) — TEXT
|
|
238
|
+
// color goes through it too, so a token-bound text fill keeps its link.
|
|
239
|
+
const bg = backgroundValue(node, ctx);
|
|
240
|
+
if (node.type === "TEXT") {
|
|
241
|
+
if (bg !== null)
|
|
242
|
+
styles.push(`color: ${bg}`);
|
|
243
|
+
textCss(node, styles);
|
|
244
|
+
}
|
|
245
|
+
else if (bg !== null) {
|
|
246
|
+
// background-color (longhand) for solid fills, never the shorthand: GSAP
|
|
247
|
+
// backgroundColor tweens can't read a var() through the shorthand (its
|
|
248
|
+
// pending-substitution longhands serialize empty), so .from/.to on an
|
|
249
|
+
// imported node would settle on transparent instead of the token color.
|
|
250
|
+
styles.push(bg.includes("gradient(") ? `background: ${bg}` : `background-color: ${bg}`);
|
|
251
|
+
}
|
|
252
|
+
cornerAndClipCss(node, styles);
|
|
231
253
|
}
|
|
232
|
-
|
|
254
|
+
opacityCss(node, styles);
|
|
233
255
|
effectsCss(node, styles);
|
|
234
256
|
return styles;
|
|
235
257
|
}
|
|
@@ -249,12 +271,13 @@ function renderNodeHtml(node, ctx, isRoot, depth = 0, parentBox = ctx.origin) {
|
|
|
249
271
|
if (node.visible === false || depth > MAX_DEPTH)
|
|
250
272
|
return "";
|
|
251
273
|
const slug = uniqueSlug(ctx, node.name);
|
|
252
|
-
const
|
|
274
|
+
const rasterized = RASTERIZE_TYPES.has(node.type) || hasImageFill(node);
|
|
275
|
+
const style = escapeHtml([...geometryCss(node, parentBox, isRoot), ...decorationCss(node, ctx, rasterized)].join("; "));
|
|
253
276
|
// data-hf-snippet marks the file as a mountable fragment, not a standalone
|
|
254
277
|
// composition — the project linter skips composition-root rules for it.
|
|
255
278
|
const snippetAttr = isRoot ? ' data-hf-snippet=""' : "";
|
|
256
279
|
const idAttrs = `id="${slug}"${snippetAttr} data-figma-id="${escapeHtml(node.id)}"${unresolvedAttr(node, ctx)}`;
|
|
257
|
-
if (
|
|
280
|
+
if (rasterized) {
|
|
258
281
|
ctx.rasterize.push({ nodeId: node.id, name: node.name, slug });
|
|
259
282
|
return `<img ${idAttrs} data-figma-rasterize="${escapeHtml(node.id)}" alt="${escapeHtml(node.name)}" style="${style}" />`;
|
|
260
283
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeToHtml.js","sourceRoot":"","sources":["../../src/figma/nodeToHtml.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nodeToHtml.js","sourceRoot":"","sources":["../../src/figma/nodeToHtml.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"position-edits-render-inline.d.ts","sourceRoot":"","sources":["../../src/generated/position-edits-render-inline.ts"],"names":[],"mappings":"AAIA,6EAA6E;AAC7E,wBAAgB,4BAA4B,IAAI,MAAM,CAErD"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// AUTO-GENERATED by scripts/build-position-edits-render.ts - do not edit
|
|
2
|
+
const POSITION_EDITS_RENDER_IIFE = '"use strict";(()=>{function v(){return globalThis}function A(e,t){if(typeof window>"u")return;let o=v(),r=o.__hf?.onSwallowed;if(r)try{r({label:e,error:t})}catch(i){}(o.__hfDebug||o.__HYPERFRAMES_DEBUG)&&console.debug(`[hyperframes] ${e} swallowed:`,t)}var P=null;function T(e,t){if(P)try{P({source:"hf-preview",type:"analytics",event:e,properties:t??{}})}catch(o){A("runtime.analytics.site1",o)}}var w="data-hf-edit-base-x",y="data-hf-edit-base-y",_="data-hf-edit-original-translate",g=e=>{let t=parseFloat(e??"");return Number.isFinite(t)?t:0},H=e=>{let t=[],o=0,r="";for(let i of e.trim())i==="("&&(o+=1),i===")"&&(o=Math.max(0,o-1)),/\\s/.test(i)&&o===0?(r&&t.push(r),r=""):r+=i;return r&&t.push(r),t},R=/^-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)px$/,b=(e,t)=>R.test(e)&&R.test(t)?`${parseFloat(e)+parseFloat(t)}px`:`calc(${e} + ${t})`,I=(e,t,o)=>{if(!e||e==="none")return`${t} ${o}`;let[r,i,a]=H(e);if(r===void 0)return`${t} ${o}`;if(i===void 0)return`${b(r,t)} ${o}`;let c=a===void 0?"":` ${a}`;return`${b(r,t)} ${b(i,o)}${c}`},O=e=>{try{e.ownerDocument.defaultView?.gsap?.getProperty?.(e,"x")}catch{}},j=e=>{let t=e.style.getPropertyValue("translate").trim();if(t)return t==="none"?"":t;try{let o=e.ownerDocument.defaultView,r=o?o.getComputedStyle(e).getPropertyValue("translate").trim():"";return r==="none"?"":r}catch{return""}},x=new WeakMap;function V(e,t){let o=x.get(e);if(!t?.force&&o!==void 0&&e.style.getPropertyValue("translate")!==o){T("position_edit_fold_skipped",{hfId:e.getAttribute("data-hf-id")});return}let r=g(e.getAttribute("data-x"))-g(e.getAttribute(w)),i=g(e.getAttribute("data-y"))-g(e.getAttribute(y));e.hasAttribute(_)||e.setAttribute(_,j(e)),o===void 0&&O(e);let a=e.getAttribute(_)??"",c=I(a,`${r}px`,`${i}px`);e.style.setProperty("translate",c),x.set(e,e.style.getPropertyValue("translate"))}function m(e){let t=e.querySelectorAll(`[${w}], [${y}]`),o=e.defaultView?.HTMLElement,r=0;for(let i=0;i<t.length;i++){let a=t[i];(o?a instanceof o:typeof a.style?.setProperty=="function")&&(V(a),r+=1)}return r}var D="__hfPositionEditsSeekReapplyWrapped",$=new WeakSet,F=new WeakMap,L=new WeakMap;function M(e){let t=e,o=()=>{try{m(t.document)}catch{}},r=n=>typeof n=="function"&&($.has(n)||!!n[D]),i=n=>{$.add(n);try{Object.defineProperty(n,D,{value:!0})}catch{}},a=n=>{if(typeof n!="function"||r(n))return n;let s=function(...u){let d=n.apply(this,u);return o(),d};return i(s),s},c=(n,s)=>{let u=F.get(n);if(u?.has(s))return!0;let d=Object.getOwnPropertyDescriptor(n,s);if(d?.configurable===!1){let l=n[s];return typeof l=="function"&&(n[s]=a(l),o()),!1}let p=n[s],f=d?.set;return Object.defineProperty(n,s,{configurable:!0,enumerable:d?.enumerable??!0,get:()=>p,set:l=>{p=a(l),f?.call(n,l)}}),p=a(p),u??(u=new Set),u.add(s),F.set(n,u),o(),!0},k=(n,s)=>{let u=L.get(t),d=Object.getOwnPropertyDescriptor(t,n);if(!u?.has(n)){if(d?.configurable===!1){let l=t[n];return l?c(l,s):!1}let f=t[n];Object.defineProperty(t,n,{configurable:!0,enumerable:d?.enumerable??!0,get:()=>f,set:l=>{f=l,f&&c(f,s)}}),u??(u=new Set),u.add(n),L.set(t,u)}let p=t[n];return p?c(p,s):!1},E=()=>{let n=k("__hf","seek"),s=k("__player","renderSeek");return n&&s};if(E())return;let S=120,h=t.setInterval(()=>{if(E()){t.clearInterval(h);return}S-=1,S<=0&&t.clearInterval(h)},50)}function W(){document.querySelector(`[${w}], [${y}]`)&&(m(document),M(window))}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",W,{once:!0}):W();})();\n';
|
|
3
|
+
/** Returns the pre-built position-edits render IIFE as a string constant. */
|
|
4
|
+
export function getPositionEditsRenderScript() {
|
|
5
|
+
return POSITION_EDITS_RENDER_IIFE;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=position-edits-render-inline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"position-edits-render-inline.js","sourceRoot":"","sources":["../../src/generated/position-edits-render-inline.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,MAAM,0BAA0B,GAC9B,w3GAAw3G,CAAC;AAE33G,6EAA6E;AAC7E,MAAM,UAAU,4BAA4B;IAC1C,OAAO,0BAA0B,CAAC;AACpC,CAAC"}
|