@pixerate/editor 0.119.0 → 0.121.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.
- package/dist/animation-editor/index.cjs +54 -54
- package/dist/animation-editor/index.d.cts +3 -3
- package/dist/animation-editor/index.d.ts +3 -3
- package/dist/animation-editor/index.js +2 -2
- package/dist/{chunk-UMVW2Q66.js → chunk-4I54JSJ6.js} +2 -2
- package/dist/{chunk-N3467VD6.js → chunk-7QN76ESJ.js} +1 -179
- package/dist/chunk-7QN76ESJ.js.map +1 -0
- package/dist/{chunk-EJVDBITD.cjs → chunk-DCLJNVZS.cjs} +2 -180
- package/dist/chunk-DCLJNVZS.cjs.map +1 -0
- package/dist/{chunk-KGNUFO4T.cjs → chunk-DFLJHLKA.cjs} +36 -36
- package/dist/{chunk-KGNUFO4T.cjs.map → chunk-DFLJHLKA.cjs.map} +1 -1
- package/dist/{chunk-KZLQY4CD.js → chunk-E6N5KLMA.js} +12 -10
- package/dist/{chunk-KZLQY4CD.js.map → chunk-E6N5KLMA.js.map} +1 -1
- package/dist/{chunk-4S2AXNQF.cjs → chunk-GLOOH65Y.cjs} +236 -234
- package/dist/chunk-GLOOH65Y.cjs.map +1 -0
- package/dist/chunk-GX332W2C.js +181 -0
- package/dist/chunk-GX332W2C.js.map +1 -0
- package/dist/{chunk-TS5IEUW6.cjs → chunk-K7V27T72.cjs} +178 -3
- package/dist/chunk-K7V27T72.cjs.map +1 -0
- package/dist/{chunk-WMRIG4XQ.cjs → chunk-LL3RAN55.cjs} +17 -17
- package/dist/{chunk-WMRIG4XQ.cjs.map → chunk-LL3RAN55.cjs.map} +1 -1
- package/dist/chunk-MUUXNRU4.cjs +181 -0
- package/dist/chunk-MUUXNRU4.cjs.map +1 -0
- package/dist/{chunk-LI3KTY7K.cjs → chunk-VYW7JBTM.cjs} +72 -5
- package/dist/chunk-VYW7JBTM.cjs.map +1 -0
- package/dist/{chunk-TDQDMBUR.js → chunk-WAI6ATHC.js} +2 -2
- package/dist/{chunk-CSHEI3YT.js → chunk-WORWH5K5.js} +71 -4
- package/dist/chunk-WORWH5K5.js.map +1 -0
- package/dist/{chunk-YHW26LS2.js → chunk-ZZPGTNXJ.js} +177 -2
- package/dist/chunk-ZZPGTNXJ.js.map +1 -0
- package/dist/{export-Ds8Ccw0K.d.ts → export-D2D8hb_u.d.ts} +1 -1
- package/dist/{export-B_jO2PrH.d.cts → export-fP2hZYjm.d.cts} +1 -1
- package/dist/image-editor/index.cjs +789 -769
- package/dist/image-editor/index.cjs.map +1 -1
- package/dist/image-editor/index.d.cts +4 -4
- package/dist/image-editor/index.d.ts +4 -4
- package/dist/image-editor/index.js +32 -12
- package/dist/image-editor/index.js.map +1 -1
- package/dist/paint/index.cjs +22 -2
- package/dist/paint/index.cjs.map +1 -1
- package/dist/paint/index.d.cts +159 -1
- package/dist/paint/index.d.ts +159 -1
- package/dist/paint/index.js +21 -1
- package/dist/paint-editor/index.cjs +96 -95
- package/dist/paint-editor/index.cjs.map +1 -1
- package/dist/paint-editor/index.d.cts +2 -2
- package/dist/paint-editor/index.d.ts +2 -2
- package/dist/paint-editor/index.js +13 -12
- package/dist/paint-editor/index.js.map +1 -1
- package/dist/raster/index.cjs +5 -4
- package/dist/raster/index.cjs.map +1 -1
- package/dist/raster/index.js +11 -10
- package/dist/{svg-hK0WQc7-.d.cts → svg-S9zzvqaZ.d.cts} +1 -1
- package/dist/{svg-CTxrB5xO.d.ts → svg-leZpRsJB.d.ts} +1 -1
- package/dist/{types-TrSSh_RB.d.ts → types-BgwxFWvn.d.ts} +23 -9
- package/dist/{types-Dq-8qgoo.d.cts → types-DdRTDnza.d.cts} +23 -9
- package/dist/vector/index.cjs +887 -883
- package/dist/vector/index.cjs.map +1 -1
- package/dist/vector/index.d.cts +12 -5
- package/dist/vector/index.d.ts +12 -5
- package/dist/vector/index.js +14 -10
- package/dist/vector/index.js.map +1 -1
- package/package.json +1 -1
- package/skills/pixerate-vector/SKILL.md +1 -1
- package/skills/pixerate-vector/references/commands.md +1 -0
- package/dist/chunk-4S2AXNQF.cjs.map +0 -1
- package/dist/chunk-CSHEI3YT.js.map +0 -1
- package/dist/chunk-EJVDBITD.cjs.map +0 -1
- package/dist/chunk-LI3KTY7K.cjs.map +0 -1
- package/dist/chunk-N3467VD6.js.map +0 -1
- package/dist/chunk-TS5IEUW6.cjs.map +0 -1
- package/dist/chunk-YHW26LS2.js.map +0 -1
- /package/dist/{chunk-UMVW2Q66.js.map → chunk-4I54JSJ6.js.map} +0 -0
- /package/dist/{chunk-TDQDMBUR.js.map → chunk-WAI6ATHC.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/editor/editor/packages/core/dist/chunk-EJVDBITD.cjs","../src/geom/homography.ts","../src/raster/png.ts"],"names":["c","out"],"mappings":"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","file":"/home/runner/work/editor/editor/packages/core/dist/chunk-EJVDBITD.cjs","sourcesContent":[null,"/**\n * Perspective (projective) maps between quadrilaterals: Free Distort and Perspective in both the\n * vector and the image editor. Pure maths; degenerate or non-finite input gives `null` instead of\n * NaNs.\n *\n * Ported from ArtCraft (MIT OR Apache-2.0, © ArtCraft Team and contributors; see\n * THIRD_PARTY_NOTICES.md): pdfcraft `crates/geom/src/perspective.rs` (`Homography::from_points`,\n * `Homography::apply`, `solve8`, `order_quad`) and photocraft `crates/algo/src/transform.rs`\n * (`Homography::square_to_quad`, `rect_to_quad`, `inverse`, `mul`, `local_scale`, `front_side`,\n * `warp_output_bounds`, `convex_quad`).\n */\nimport type { AffineMatrix, Box, Homography, Quad, Vec2 } from './types';\n\nexport type { Homography };\n\nexport const IDENTITY_HOMOGRAPHY: Homography = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n\n/**\n * Gaussian elimination with partial pivoting on an 8×8 system (the 9th column of each row is the\n * right-hand side). Null when the system is singular.\n */\nexport function solve8(rows: readonly (readonly number[])[]): number[] | null {\n const m = rows.map((r) => r.slice());\n for (let col = 0; col < 8; col++) {\n let pivot = col;\n for (let r = col + 1; r < 8; r++) if (Math.abs(m[r][col]) > Math.abs(m[pivot][col])) pivot = r;\n if (!(Math.abs(m[pivot][col]) >= 1e-12)) return null;\n [m[col], m[pivot]] = [m[pivot], m[col]];\n const p = m[col];\n for (let r = 0; r < 8; r++) {\n if (r === col) continue;\n const f = m[r][col] / p[col];\n if (f !== 0) for (let k = 0; k < 9; k++) m[r][k] -= f * p[k];\n }\n }\n const out: number[] = [];\n for (let i = 0; i < 8; i++) {\n const v = m[i][8] / m[i][i];\n if (!Number.isFinite(v)) return null;\n out.push(v);\n }\n return out;\n}\n\n/** The image of `p`, or null where the map sends it to infinity. */\nexport function applyHomography(h: Homography, p: Vec2): Vec2 | null {\n const w = h[6] * p.x + h[7] * p.y + h[8];\n if (!Number.isFinite(w) || Math.abs(w) < 1e-12) return null;\n const x = (h[0] * p.x + h[1] * p.y + h[2]) / w;\n const y = (h[3] * p.x + h[4] * p.y + h[5]) / w;\n return Number.isFinite(x) && Number.isFinite(y) ? { x, y } : null;\n}\n\n/** The homogeneous `w` of `p`: its sign is the side of the horizon `p` maps to (0 on it). */\nexport function homographyW(h: Homography, p: Vec2): number {\n return h[6] * p.x + h[7] * p.y + h[8];\n}\n\nconst finite = (p: Vec2) => Number.isFinite(p.x) && Number.isFinite(p.y);\n\n/**\n * The projective map that takes each of `from` to the point at the same index of `to`. Null when\n * three of either set are collinear or a coordinate is not finite.\n */\nexport function homographyFromPoints(from: readonly Vec2[], to: readonly Vec2[]): Homography | null {\n if (from.length !== 4 || to.length !== 4 || ![...from, ...to].every(finite)) return null;\n // x' = (h0 x + h1 y + h2) / (h6 x + h7 y + 1), y' likewise with h3..h5: eight unknowns, two\n // equations per point pair.\n const rows: number[][] = [];\n for (let i = 0; i < 4; i++) {\n const { x, y } = from[i];\n const { x: u, y: v } = to[i];\n rows.push([x, y, 1, 0, 0, 0, -u * x, -u * y, u]);\n rows.push([0, 0, 0, x, y, 1, -v * x, -v * y, v]);\n }\n const h = solve8(rows);\n if (!h) return null;\n const out: Homography = [h[0], h[1], h[2], h[3], h[4], h[5], h[6], h[7], 1];\n // Collinear points can leave a solvable but singular system: check the map really takes the\n // four points where they should go.\n for (let i = 0; i < 4; i++) {\n const r = applyHomography(out, from[i]);\n const q = to[i];\n const scale = 1 + Math.max(Math.abs(q.x), Math.abs(q.y));\n if (!r || Math.abs(r.x - q.x) > 1e-6 * scale || Math.abs(r.y - q.y) > 1e-6 * scale) return null;\n }\n return out;\n}\n\n/**\n * Whether `h` maps the whole convex quad `quad` without sending any of it through infinity (the\n * denominator keeps one sign over it): what a usable distortion needs.\n */\nexport function homographyKeepsQuad(h: Homography, quad: readonly Vec2[]): boolean {\n const ws = quad.map((p) => h[6] * p.x + h[7] * p.y + h[8]);\n return ws.every((w) => w > 1e-9) || ws.every((w) => w < -1e-9);\n}\n\n/**\n * The four corners in reading order for a y-down space: top-left, top-right, bottom-right,\n * bottom-left, whatever order they come in. Null unless they form a convex quadrilateral with a\n * non-negligible area.\n */\nexport function orderQuad(points: readonly Vec2[]): Vec2[] | null {\n if (points.length !== 4 || !points.every(finite)) return null;\n const cx = points.reduce((s, p) => s + p.x, 0) / 4;\n const cy = points.reduce((s, p) => s + p.y, 0) / 4;\n // Ascending angle about the centre is clockwise on screen (y down).\n const q = points.slice().sort((a, b) => Math.atan2(a.y - cy, a.x - cx) - Math.atan2(b.y - cy, b.x - cx));\n let first = 0;\n for (let i = 1; i < 4; i++) if (q[i].x + q[i].y < q[first].x + q[first].y) first = i;\n const ordered = [...q.slice(first), ...q.slice(0, first)];\n const cross = (o: Vec2, a: Vec2, b: Vec2) => (a.x - o.x) * (b.y - o.y) - (a.y - o.y) * (b.x - o.x);\n const turns = ordered.map((_, i) => cross(ordered[i], ordered[(i + 1) % 4], ordered[(i + 2) % 4]));\n const area = turns.reduce((s, t) => s + t, 0) / 2;\n const xs = ordered.map((p) => p.x);\n const ys = ordered.map((p) => p.y);\n const size = Math.max(Math.max(...xs) - Math.min(...xs), Math.max(...ys) - Math.min(...ys));\n const convex = turns.every((t) => t > 1e-9 * size * size);\n return convex && area > 1e-6 * size * size ? ordered : null;\n}\n\n/** `a` then `b` (apply `a` first). */\nexport function multiplyHomographies(a: Homography, b: Homography): Homography {\n // Row-major column-vector maps: (b ∘ a) = B · A.\n const r = new Array<number>(9);\n for (let i = 0; i < 3; i++) for (let j = 0; j < 3; j++) r[i * 3 + j] = b[i * 3] * a[j] + b[i * 3 + 1] * a[3 + j] + b[i * 3 + 2] * a[6 + j];\n return r as unknown as Homography;\n}\n\n/** The inverse map, or null for a singular one. */\nexport function invertHomography(m: Homography): Homography | null {\n const c = [\n m[4] * m[8] - m[5] * m[7],\n m[2] * m[7] - m[1] * m[8],\n m[1] * m[5] - m[2] * m[4],\n m[5] * m[6] - m[3] * m[8],\n m[0] * m[8] - m[2] * m[6],\n m[2] * m[3] - m[0] * m[5],\n m[3] * m[7] - m[4] * m[6],\n m[1] * m[6] - m[0] * m[7],\n m[0] * m[4] - m[1] * m[3],\n ];\n const det = m[0] * c[0] + m[1] * c[3] + m[2] * c[6];\n if (!(Math.abs(det) >= 1e-12) || !Number.isFinite(det)) return null;\n return c.map((v) => v / det) as unknown as Homography;\n}\n\n/** An affine matrix (SVG order) as a homography. */\nexport function homographyFromAffine(m: AffineMatrix): Homography {\n return [m[0], m[2], m[4], m[1], m[3], m[5], 0, 0, 1];\n}\n\n/** The affine matrix of `h` when it is affine (no perspective part), else null. */\nexport function affineFromHomography(h: Homography, eps = 1e-12): AffineMatrix | null {\n if (Math.abs(h[6]) > eps * Math.abs(h[8]) || Math.abs(h[7]) > eps * Math.abs(h[8]) || !h[8]) return null;\n const w = h[8];\n return [h[0] / w, h[3] / w, h[1] / w, h[4] / w, h[2] / w, h[5] / w];\n}\n\nexport function isIdentityHomography(h: Homography, eps = 1e-9): boolean {\n const w = h[8];\n if (Math.abs(w) < 1e-12) return false;\n const id = IDENTITY_HOMOGRAPHY;\n for (let i = 0; i < 8; i++) if (Math.abs(h[i] / w - id[i]) > eps) return false;\n return true;\n}\n\n/** Unit square → quad (corners (0,0), (1,0), (1,1), (0,1) to TL, TR, BR, BL); null when degenerate. */\nfunction squareToQuad(q: readonly Vec2[]): Homography | null {\n const [p0, p1, p2, p3] = q;\n const sx = p0.x - p1.x + p2.x - p3.x;\n const sy = p0.y - p1.y + p2.y - p3.y;\n if (Math.abs(sx) < 1e-12 && Math.abs(sy) < 1e-12) {\n return [p1.x - p0.x, p3.x - p0.x, p0.x, p1.y - p0.y, p3.y - p0.y, p0.y, 0, 0, 1];\n }\n const dx1 = p1.x - p2.x;\n const dx2 = p3.x - p2.x;\n const dy1 = p1.y - p2.y;\n const dy2 = p3.y - p2.y;\n const den = dx1 * dy2 - dx2 * dy1;\n if (Math.abs(den) < 1e-12) return null;\n const g = (sx * dy2 - dx2 * sy) / den;\n const h = (dx1 * sy - sx * dy1) / den;\n return [p1.x - p0.x + g * p1.x, p3.x - p0.x + h * p3.x, p0.x, p1.y - p0.y + g * p1.y, p3.y - p0.y + h * p3.y, p0.y, g, h, 1];\n}\n\n/**\n * The map taking box `r`'s corners onto `quad` (TL, TR, BR, BL), exact for parallelograms (then\n * affine). Null for an empty box, a non-finite or degenerate quad, or a singular result.\n */\nexport function rectToQuad(r: Box, quad: readonly Vec2[]): Homography | null {\n if (!(r.width > 0 && r.height > 0) || quad.length !== 4 || !quad.every(finite)) return null;\n const toUnit: Homography = [1 / r.width, 0, -r.x / r.width, 0, 1 / r.height, -r.y / r.height, 0, 0, 1];\n const sq = squareToQuad(quad);\n if (!sq) return null;\n const h = multiplyHomographies(toUnit, sq);\n return invertHomography(h) ? h : null;\n}\n\n/** Box `r`'s corners as a quad (TL, TR, BR, BL). */\nexport function boxQuad(r: Box): Quad {\n return [\n { x: r.x, y: r.y },\n { x: r.x + r.width, y: r.y },\n { x: r.x + r.width, y: r.y + r.height },\n { x: r.x, y: r.y + r.height },\n ];\n}\n\n/** Approximate linear scale of the map near `p` (square root of the Jacobian determinant). */\nexport function homographyLocalScale(h: Homography, p: Vec2): number {\n const e = 0.5;\n const a = applyHomography(h, { x: p.x - e, y: p.y });\n const b = applyHomography(h, { x: p.x + e, y: p.y });\n const c = applyHomography(h, { x: p.x, y: p.y - e });\n const d = applyHomography(h, { x: p.x, y: p.y + e });\n if (!a || !b || !c || !d) return 0;\n const jx = { x: b.x - a.x, y: b.y - a.y };\n const jy = { x: d.x - c.x, y: d.y - c.y };\n return Math.sqrt(Math.abs(jx.x * jy.y - jx.y * jy.x));\n}\n\n/**\n * The side of the horizon (+1 or −1) most of box `r`'s corners map to (the centre's on a tie). A\n * Distort dragged past the horizon maps the rest of the source to the far side, where it would\n * show as a mirrored copy wrapped round infinity; resampling keeps to this side, as Photoshop does.\n */\nexport function homographyFrontSide(h: Homography, r: Box): 1 | -1 {\n const ahead = boxQuad(r).filter((p) => homographyW(h, p) > 0).length;\n if (ahead >= 3) return 1;\n if (ahead <= 1) return -1;\n return homographyW(h, { x: r.x + r.width / 2, y: r.y + r.height / 2 }) >= 0 ? 1 : -1;\n}\n\n/** Most pixels a side of a warped result may span (±2²⁰), as photocraft clamps. */\nconst OUTPUT_LIMIT = 1 << 20;\n\n/**\n * The integer box a warp of box `r` through `h` fills: the warped corners plus a pixel for filter\n * support, each side clamped to ±2²⁰. Null when a corner maps to infinity or `h` is singular.\n */\nexport function warpOutputBounds(r: Box, h: Homography): Box | null {\n if (!(r.width > 0 && r.height > 0) || !invertHomography(h)) return null;\n const corners = boxQuad(r).map((p) => applyHomography(h, p));\n if (corners.some((c) => !c)) return null;\n return cornerBounds(corners as Vec2[]);\n}\n\n/** The integer box around `corners`, grown by a pixel and clamped to ±2²⁰. */\nexport function cornerBounds(corners: readonly Vec2[]): Box {\n const lim = OUTPUT_LIMIT;\n const xs = corners.map((c) => c.x);\n const ys = corners.map((c) => c.y);\n const x0 = Math.floor(Math.max(-lim, Math.min(...xs))) - 1;\n const y0 = Math.floor(Math.max(-lim, Math.min(...ys))) - 1;\n const x1 = Math.ceil(Math.min(lim, Math.max(...xs))) + 1;\n const y1 = Math.ceil(Math.min(lim, Math.max(...ys))) + 1;\n return { x: x0, y: y0, width: x1 - x0, height: y1 - y0 };\n}\n\n/**\n * Whether `q` (TL, TR, BR, BL) is strictly convex with every corner turn above ~0.06°, wound\n * clockwise on screen (y down), finite and at least 1 px² in area.\n */\nexport function isConvexQuad(q: readonly Vec2[]): boolean {\n if (q.length !== 4 || !q.every(finite)) return false;\n let area2 = 0;\n for (let i = 0; i < 4; i++) {\n const a = q[i];\n const b = q[(i + 1) % 4];\n const c = q[(i + 2) % 4];\n const e1 = { x: b.x - a.x, y: b.y - a.y };\n const e2 = { x: c.x - b.x, y: c.y - b.y };\n const cross = e1.x * e2.y - e1.y * e2.x;\n if (!(cross > 1e-3 * Math.hypot(e1.x, e1.y) * Math.hypot(e2.x, e2.y))) return false;\n area2 += a.x * b.y - b.x * a.y;\n }\n return Number.isFinite(area2) && area2 >= 2;\n}\n","/**\n * Dependency-free, synchronous PNG encode / decode for layer pixels and masks, plus base64 and\n * data-URL helpers. Canvas `toDataURL` is lossy for partly transparent pixels (it goes through\n * premultiplied alpha), so layer assets use this codec and round-trip exactly.\n *\n * Encodes 8-bit greyscale (masks) or RGBA (layers). Decodes non-interlaced 1/2/4/8/16-bit\n * greyscale, RGB, palette, grey + alpha and RGBA, always to 8-bit RGBA or grey.\n */\n\nimport { deflate, inflate } from './zlib';\n\nconst SIGNATURE = [137, 80, 78, 71, 13, 10, 26, 10];\n\nlet crcTable: Uint32Array | null = null;\nfunction crc32(bytes: Uint8Array, start: number, end: number): number {\n if (!crcTable) {\n crcTable = new Uint32Array(256);\n for (let n = 0; n < 256; n++) {\n let c = n;\n for (let k = 0; k < 8; k++) c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1;\n crcTable[n] = c >>> 0;\n }\n }\n let c = 0xffffffff;\n for (let i = start; i < end; i++) c = crcTable[(c ^ bytes[i]) & 255] ^ (c >>> 8);\n return (c ^ 0xffffffff) >>> 0;\n}\n\nexport interface DecodedPng {\n width: number;\n height: number;\n /** 4 for RGBA output, 1 for greyscale without alpha when `keepGray` was asked for. */\n channels: 1 | 4;\n data: Uint8ClampedArray;\n}\n\nfunction paeth(a: number, b: number, c: number): number {\n const p = a + b - c;\n const pa = Math.abs(p - a);\n const pb = Math.abs(p - b);\n const pc = Math.abs(p - c);\n return pa <= pb && pa <= pc ? a : pb <= pc ? b : c;\n}\n\n/** PNG bytes for `width × height` pixels of 1 (grey) or 4 (RGBA) bytes each. */\nexport function encodePng(width: number, height: number, data: ArrayLike<number>, channels: 1 | 4 = 4): Uint8Array {\n const stride = width * channels;\n const raw = new Uint8Array((stride + 1) * height);\n const bpp = channels;\n const cand = [new Uint8Array(stride), new Uint8Array(stride), new Uint8Array(stride), new Uint8Array(stride), new Uint8Array(stride)];\n for (let y = 0; y < height; y++) {\n const row = y * stride;\n const prevRow = (y - 1) * stride;\n // Try each filter and keep the one with the smallest sum of signed residues.\n let best = 0;\n let bestScore = Infinity;\n for (let f = 0; f < 5; f++) {\n const out = cand[f];\n let score = 0;\n for (let x = 0; x < stride; x++) {\n const v = data[row + x];\n const a = x >= bpp ? data[row + x - bpp] : 0;\n const b = y > 0 ? data[prevRow + x] : 0;\n const c = x >= bpp && y > 0 ? data[prevRow + x - bpp] : 0;\n let r: number;\n switch (f) {\n case 0: r = v; break;\n case 1: r = v - a; break;\n case 2: r = v - b; break;\n case 3: r = v - ((a + b) >> 1); break;\n default: r = v - paeth(a, b, c);\n }\n r &= 255;\n out[x] = r;\n score += r < 128 ? r : 256 - r;\n if (score >= bestScore) break;\n }\n if (score < bestScore) {\n bestScore = score;\n best = f;\n }\n }\n const o = y * (stride + 1);\n raw[o] = best;\n // Only a filter whose scoring loop ran to the end can win, so its row is complete.\n raw.set(cand[best], o + 1);\n }\n const idat = deflate(raw);\n const chunks: Array<[string, Uint8Array]> = [];\n const ihdr = new Uint8Array(13);\n writeU32(ihdr, 0, width);\n writeU32(ihdr, 4, height);\n ihdr[8] = 8;\n ihdr[9] = channels === 1 ? 0 : 6;\n chunks.push(['IHDR', ihdr], ['IDAT', idat], ['IEND', new Uint8Array(0)]);\n let size = 8;\n for (const [, d] of chunks) size += 12 + d.length;\n const out = new Uint8Array(size);\n out.set(SIGNATURE, 0);\n let p = 8;\n for (const [type, d] of chunks) {\n writeU32(out, p, d.length);\n for (let i = 0; i < 4; i++) out[p + 4 + i] = type.charCodeAt(i);\n out.set(d, p + 8);\n writeU32(out, p + 8 + d.length, crc32(out, p + 4, p + 8 + d.length));\n p += 12 + d.length;\n }\n return out;\n}\n\nfunction writeU32(b: Uint8Array, o: number, v: number): void {\n b[o] = v >>> 24;\n b[o + 1] = (v >>> 16) & 255;\n b[o + 2] = (v >>> 8) & 255;\n b[o + 3] = v & 255;\n}\n\nfunction readU32(b: Uint8Array, o: number): number {\n return ((b[o] << 24) | (b[o + 1] << 16) | (b[o + 2] << 8) | b[o + 3]) >>> 0;\n}\n\nexport function isPng(bytes: Uint8Array): boolean {\n return bytes.length > 8 && SIGNATURE.every((v, i) => bytes[i] === v);\n}\n\n/**\n * Decodes a PNG. Output is RGBA (4 channels) unless `keepGray` is set and the image is\n * greyscale without alpha, in which case it is one byte per pixel.\n */\nexport function decodePng(bytes: Uint8Array, options: { keepGray?: boolean; maxPixels?: number } = {}): DecodedPng {\n if (!isPng(bytes)) throw new Error('Not a PNG image.');\n let p = 8;\n let width = 0;\n let height = 0;\n let depth = 0;\n let type = 0;\n let interlace = 0;\n let palette: Uint8Array | null = null;\n let trns: Uint8Array | null = null;\n const idat: Uint8Array[] = [];\n while (p + 8 <= bytes.length) {\n const len = readU32(bytes, p);\n const t = String.fromCharCode(bytes[p + 4], bytes[p + 5], bytes[p + 6], bytes[p + 7]);\n const body = bytes.subarray(p + 8, p + 8 + len);\n if (p + 12 + len > bytes.length) throw new Error('Truncated PNG.');\n if (t === 'IHDR') {\n width = readU32(body, 0);\n height = readU32(body, 4);\n depth = body[8];\n type = body[9];\n interlace = body[12];\n } else if (t === 'PLTE') palette = body;\n else if (t === 'tRNS') trns = body;\n else if (t === 'IDAT') idat.push(body);\n else if (t === 'IEND') break;\n p += 12 + len;\n }\n if (!width || !height) throw new Error('PNG has no image header.');\n if (interlace) throw new Error('Interlaced PNGs are not supported here; decode them with a canvas.');\n const maxPixels = options.maxPixels ?? 1 << 28;\n if (width * height > maxPixels) throw new Error(`PNG is too large (${width}×${height}).`);\n const samples = type === 0 ? 1 : type === 2 ? 3 : type === 3 ? 1 : type === 4 ? 2 : type === 6 ? 4 : 0;\n if (!samples || ![1, 2, 4, 8, 16].includes(depth)) throw new Error(`Unsupported PNG format (type ${type}, depth ${depth}).`);\n let total = 0;\n for (const c of idat) total += c.length;\n const z = new Uint8Array(total);\n let o = 0;\n for (const c of idat) {\n z.set(c, o);\n o += c.length;\n }\n const bitsPerPixel = samples * depth;\n const stride = Math.ceil((width * bitsPerPixel) / 8);\n const raw = inflate(z, { maxOutput: (stride + 1) * height, sizeHint: (stride + 1) * height });\n if (raw.length < (stride + 1) * height) throw new Error('PNG image data is truncated.');\n const bpp = Math.max(1, bitsPerPixel >> 3);\n const lines = new Uint8Array(stride * height);\n for (let y = 0; y < height; y++) {\n const f = raw[y * (stride + 1)];\n const src = y * (stride + 1) + 1;\n const dst = y * stride;\n const up = dst - stride;\n for (let x = 0; x < stride; x++) {\n const v = raw[src + x];\n const a = x >= bpp ? lines[dst + x - bpp] : 0;\n const b = y > 0 ? lines[up + x] : 0;\n const c = x >= bpp && y > 0 ? lines[up + x - bpp] : 0;\n let r: number;\n switch (f) {\n case 0: r = v; break;\n case 1: r = v + a; break;\n case 2: r = v + b; break;\n case 3: r = v + ((a + b) >> 1); break;\n case 4: r = v + paeth(a, b, c); break;\n default: throw new Error(`Invalid PNG filter ${f}.`);\n }\n lines[dst + x] = r & 255;\n }\n }\n const sample = (y: number, i: number): number => {\n // The i-th sample of row y, scaled to 8 bits.\n const row = y * stride;\n if (depth === 8) return lines[row + i];\n if (depth === 16) return lines[row + i * 2];\n const perByte = 8 / depth;\n const byte = lines[row + Math.floor(i / perByte)];\n const shift = 8 - depth * ((i % perByte) + 1);\n const v = (byte >> shift) & ((1 << depth) - 1);\n return type === 3 ? v : Math.round((v * 255) / ((1 << depth) - 1));\n };\n const gray = options.keepGray && type === 0 && !trns;\n const channels: 1 | 4 = gray ? 1 : 4;\n const out = new Uint8ClampedArray(width * height * channels);\n const trnsGray = trns && type === 0 ? (depth === 16 ? trns[0] : sample16(trns, 0, depth)) : -1;\n const trnsRgb = trns && type === 2 ? [0, 1, 2].map((k) => (depth === 16 ? trns![k * 2] : sample16(trns!, k, depth))) : null;\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n const d = (y * width + x) * channels;\n if (type === 0) {\n const v = sample(y, x);\n if (gray) out[d] = v;\n else {\n out[d] = out[d + 1] = out[d + 2] = v;\n out[d + 3] = v === trnsGray && trns ? 0 : 255;\n }\n } else if (type === 2) {\n const r = sample(y, x * 3);\n const g = sample(y, x * 3 + 1);\n const b = sample(y, x * 3 + 2);\n out[d] = r;\n out[d + 1] = g;\n out[d + 2] = b;\n out[d + 3] = trnsRgb && r === trnsRgb[0] && g === trnsRgb[1] && b === trnsRgb[2] ? 0 : 255;\n } else if (type === 3) {\n const i = sample(y, x);\n if (!palette || i * 3 + 2 >= palette.length) throw new Error('PNG palette index out of range.');\n out[d] = palette[i * 3];\n out[d + 1] = palette[i * 3 + 1];\n out[d + 2] = palette[i * 3 + 2];\n out[d + 3] = trns && i < trns.length ? trns[i] : 255;\n } else if (type === 4) {\n const v = sample(y, x * 2);\n out[d] = out[d + 1] = out[d + 2] = v;\n out[d + 3] = sample(y, x * 2 + 1);\n } else {\n out[d] = sample(y, x * 4);\n out[d + 1] = sample(y, x * 4 + 1);\n out[d + 2] = sample(y, x * 4 + 2);\n out[d + 3] = sample(y, x * 4 + 3);\n }\n }\n }\n return { width, height, channels, data: out };\n}\n\n/** A tRNS sample (stored as 16-bit big endian) scaled like the image samples. */\nfunction sample16(trns: Uint8Array, k: number, depth: number): number {\n const v = (trns[k * 2] << 8) | trns[k * 2 + 1];\n if (depth === 8) return v & 255;\n return Math.round(((v & ((1 << depth) - 1)) * 255) / ((1 << depth) - 1));\n}\n\n// ---------------------------------------------------------------------------\n// Base64 / data URLs\n// ---------------------------------------------------------------------------\n\nconst B64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nlet B64_INV: Int16Array | null = null;\n\nexport function bytesToBase64(bytes: Uint8Array): string {\n const parts: string[] = [];\n const CHUNK = 3 * 4096;\n for (let start = 0; start < bytes.length; start += CHUNK) {\n const end = Math.min(bytes.length, start + CHUNK);\n let s = '';\n let i = start;\n for (; i + 2 < end; i += 3) {\n const n = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n s += B64[n >> 18] + B64[(n >> 12) & 63] + B64[(n >> 6) & 63] + B64[n & 63];\n }\n if (i < end) {\n const n = (bytes[i] << 16) | (i + 1 < end ? bytes[i + 1] << 8 : 0);\n s += B64[n >> 18] + B64[(n >> 12) & 63] + (i + 1 < end ? B64[(n >> 6) & 63] : '=') + '=';\n }\n parts.push(s);\n }\n return parts.join('');\n}\n\nexport function base64ToBytes(text: string): Uint8Array {\n if (!B64_INV) {\n B64_INV = new Int16Array(128).fill(-1);\n for (let i = 0; i < 64; i++) B64_INV[B64.charCodeAt(i)] = i;\n B64_INV['-'.charCodeAt(0)] = 62;\n B64_INV['_'.charCodeAt(0)] = 63;\n }\n const inv = B64_INV;\n const clean = text.replace(/[\\s=]/g, '');\n const out = new Uint8Array(Math.floor((clean.length * 3) / 4));\n let bits = 0;\n let acc = 0;\n let o = 0;\n for (let i = 0; i < clean.length; i++) {\n const c = clean.charCodeAt(i);\n const v = c < 128 ? inv[c] : -1;\n if (v < 0) throw new Error('Invalid base64 data.');\n acc = (acc << 6) | v;\n bits += 6;\n if (bits >= 8) {\n bits -= 8;\n out[o++] = (acc >> bits) & 255;\n }\n }\n return out.subarray(0, o);\n}\n\n/** The bytes and MIME type of a `data:` URL (base64 or percent-encoded). */\nexport function parseDataUrl(url: string): { mime: string; bytes: Uint8Array } | null {\n const m = /^data:([^;,]*)((?:;[^;,]*)*?),/i.exec(url);\n if (!m) return null;\n const body = url.slice(m[0].length);\n const isBase64 = /;base64/i.test(m[2]);\n if (isBase64) return { mime: m[1] || 'text/plain', bytes: base64ToBytes(body) };\n const text = decodeURIComponent(body);\n const bytes = new Uint8Array(text.length);\n for (let i = 0; i < text.length; i++) bytes[i] = text.charCodeAt(i) & 255;\n return { mime: m[1] || 'text/plain', bytes };\n}\n\nexport function pngDataUrl(width: number, height: number, data: ArrayLike<number>, channels: 1 | 4 = 4): string {\n return `data:image/png;base64,${bytesToBase64(encodePng(width, height, data, channels))}`;\n}\n"]}
|