@pixerate/editor 0.108.0 → 0.110.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 (105) hide show
  1. package/dist/animation/index.cjs +5 -5
  2. package/dist/animation/index.cjs.map +1 -1
  3. package/dist/animation/index.js +9 -9
  4. package/dist/animation-editor/index.cjs +59 -59
  5. package/dist/animation-editor/index.cjs.map +1 -1
  6. package/dist/animation-editor/index.d.cts +2 -1
  7. package/dist/animation-editor/index.d.ts +2 -1
  8. package/dist/animation-editor/index.js +29 -29
  9. package/dist/blending-DXl06NSx.d.ts +486 -0
  10. package/dist/blending-aOE6Y3UE.d.cts +486 -0
  11. package/dist/canvas/index.cjs +27 -27
  12. package/dist/canvas/index.cjs.map +1 -1
  13. package/dist/canvas/index.js +11 -11
  14. package/dist/{chunk-2FGRTYJN.cjs → chunk-477UVMNR.cjs} +3 -3
  15. package/dist/{chunk-2FGRTYJN.cjs.map → chunk-477UVMNR.cjs.map} +1 -1
  16. package/dist/chunk-7VOHOPLW.cjs +1136 -0
  17. package/dist/chunk-7VOHOPLW.cjs.map +1 -0
  18. package/dist/{chunk-HUQ7EHVI.js → chunk-BLWCAQCW.js} +723 -1975
  19. package/dist/chunk-BLWCAQCW.js.map +1 -0
  20. package/dist/{chunk-SOROZ2BF.js → chunk-DMRSJBJF.js} +1939 -318
  21. package/dist/chunk-DMRSJBJF.js.map +1 -0
  22. package/dist/chunk-FTBZPI77.cjs +1 -0
  23. package/dist/chunk-FTBZPI77.cjs.map +1 -0
  24. package/dist/{chunk-WMBIJCHA.js → chunk-HNS7UHCM.js} +5 -1
  25. package/dist/{chunk-WMBIJCHA.js.map → chunk-HNS7UHCM.js.map} +1 -1
  26. package/dist/chunk-JLYX4V57.cjs +2001 -0
  27. package/dist/chunk-JLYX4V57.cjs.map +1 -0
  28. package/dist/chunk-KB2YBCVS.js +2001 -0
  29. package/dist/chunk-KB2YBCVS.js.map +1 -0
  30. package/dist/{chunk-G4BIYE6R.js → chunk-LQEEDHOP.js} +40 -2
  31. package/dist/chunk-LQEEDHOP.js.map +1 -0
  32. package/dist/{chunk-FRD3FUXI.cjs → chunk-MGL4U5WA.cjs} +2144 -523
  33. package/dist/chunk-MGL4U5WA.cjs.map +1 -0
  34. package/dist/{chunk-T3QZ6S47.cjs → chunk-POGBUYWE.cjs} +131 -93
  35. package/dist/chunk-POGBUYWE.cjs.map +1 -0
  36. package/dist/chunk-VKK5VS2T.js +1 -0
  37. package/dist/{chunk-UTEVPQTS.cjs → chunk-W3GXSUSQ.cjs} +746 -1998
  38. package/dist/chunk-W3GXSUSQ.cjs.map +1 -0
  39. package/dist/{chunk-SZ6KMZNM.cjs → chunk-XIOMMGPD.cjs} +6 -2
  40. package/dist/chunk-XIOMMGPD.cjs.map +1 -0
  41. package/dist/{chunk-JK6M6V7G.js → chunk-Z3YWVUWT.js} +4 -4
  42. package/dist/{chunk-3PHA3UKI.js → chunk-Z4BC6M74.js} +523 -121
  43. package/dist/chunk-Z4BC6M74.js.map +1 -0
  44. package/dist/{export-a9bnF7Cl.d.ts → export-CO2ryu3I.d.ts} +419 -18
  45. package/dist/{export-JGWQEPJn.d.cts → export-DRiLzP_j.d.cts} +419 -18
  46. package/dist/image-editor/index.cjs +1665 -1113
  47. package/dist/image-editor/index.cjs.map +1 -1
  48. package/dist/image-editor/index.d.cts +78 -14
  49. package/dist/image-editor/index.d.ts +78 -14
  50. package/dist/image-editor/index.js +843 -291
  51. package/dist/image-editor/index.js.map +1 -1
  52. package/dist/paint/index.cjs +28 -4
  53. package/dist/paint/index.cjs.map +1 -1
  54. package/dist/paint/index.d.cts +3 -89
  55. package/dist/paint/index.d.ts +3 -89
  56. package/dist/paint/index.js +27 -3
  57. package/dist/paint-editor/index.cjs +1056 -287
  58. package/dist/paint-editor/index.cjs.map +1 -1
  59. package/dist/paint-editor/index.d.cts +304 -22
  60. package/dist/paint-editor/index.d.ts +304 -22
  61. package/dist/paint-editor/index.js +852 -83
  62. package/dist/paint-editor/index.js.map +1 -1
  63. package/dist/raster/index.cjs +7 -3
  64. package/dist/raster/index.cjs.map +1 -1
  65. package/dist/raster/index.d.cts +3 -129
  66. package/dist/raster/index.d.ts +3 -129
  67. package/dist/raster/index.js +6 -2
  68. package/dist/{compositor-D92URMlm.d.cts → render-BEriFuqK.d.cts} +136 -2
  69. package/dist/{compositor-Kt_M4ruo.d.ts → render-tjzKaik-.d.ts} +136 -2
  70. package/dist/{surface-CkKOHGPm.d.cts → surface-C8RRg_Bh.d.cts} +109 -1
  71. package/dist/{surface-CkKOHGPm.d.ts → surface-C8RRg_Bh.d.ts} +109 -1
  72. package/dist/{svg-SseJTIrA.d.ts → svg-D_cfkhlB.d.cts} +3 -629
  73. package/dist/{svg-ClVIG4T7.d.cts → svg-wIaKLrU0.d.ts} +3 -629
  74. package/dist/types-DtL_qLFz.d.ts +630 -0
  75. package/dist/types-DyQq-WPY.d.cts +630 -0
  76. package/dist/vector/index.cjs +563 -563
  77. package/dist/vector/index.cjs.map +1 -1
  78. package/dist/vector/index.d.cts +4 -2
  79. package/dist/vector/index.d.ts +4 -2
  80. package/dist/vector/index.js +69 -69
  81. package/dist/video-editor/index.cjs +3 -3
  82. package/dist/video-editor/index.js +2 -2
  83. package/package.json +1 -1
  84. package/skills/pixerate-paint-editor/SKILL.md +49 -13
  85. package/dist/chunk-3PHA3UKI.js.map +0 -1
  86. package/dist/chunk-6BU5WU4R.cjs +0 -1
  87. package/dist/chunk-6BU5WU4R.cjs.map +0 -1
  88. package/dist/chunk-DWGZUSES.cjs +0 -694
  89. package/dist/chunk-DWGZUSES.cjs.map +0 -1
  90. package/dist/chunk-FRD3FUXI.cjs.map +0 -1
  91. package/dist/chunk-G4BIYE6R.js.map +0 -1
  92. package/dist/chunk-HUFQD4CB.cjs +0 -734
  93. package/dist/chunk-HUFQD4CB.cjs.map +0 -1
  94. package/dist/chunk-HUQ7EHVI.js.map +0 -1
  95. package/dist/chunk-KKREERP2.js +0 -694
  96. package/dist/chunk-KKREERP2.js.map +0 -1
  97. package/dist/chunk-SOROZ2BF.js.map +0 -1
  98. package/dist/chunk-SZ6KMZNM.cjs.map +0 -1
  99. package/dist/chunk-T3QZ6S47.cjs.map +0 -1
  100. package/dist/chunk-UTEVPQTS.cjs.map +0 -1
  101. package/dist/chunk-XYBJKUAU.js +0 -1
  102. package/dist/mixer-5ziHU8OS.d.cts +0 -282
  103. package/dist/mixer-DNqiYXYQ.d.ts +0 -282
  104. /package/dist/{chunk-XYBJKUAU.js.map → chunk-VKK5VS2T.js.map} +0 -0
  105. /package/dist/{chunk-JK6M6V7G.js.map → chunk-Z3YWVUWT.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/editor/editor/packages/core/dist/chunk-DWGZUSES.cjs","../src/geom/affine.ts","../src/geom/warp.ts"],"names":["q"],"mappings":"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","file":"/home/runner/work/editor/editor/packages/core/dist/chunk-DWGZUSES.cjs","sourcesContent":[null,"/**\n * Affine matrices in SVG order (`[a, b, c, d, e, f]`), shared by the vector and image editors.\n * Angles are degrees, clockwise on screen (y points down).\n */\nimport type { AffineMatrix, Vec2 } from './types';\n\nexport type { AffineMatrix };\n\nexport const IDENTITY_MATRIX: AffineMatrix = [1, 0, 0, 1, 0, 0];\n\n/** `a` then `b` (apply `a` first). */\nexport function multiplyMatrices(a: AffineMatrix, b: AffineMatrix): AffineMatrix {\n const [a0, a1, a2, a3, a4, a5] = a;\n const [b0, b1, b2, b3, b4, b5] = b;\n return [b0 * a0 + b2 * a1, b1 * a0 + b3 * a1, b0 * a2 + b2 * a3, b1 * a2 + b3 * a3, b0 * a4 + b2 * a5 + b4, b1 * a4 + b3 * a5 + b5];\n}\n\nexport const translateMatrix = (dx: number, dy: number): AffineMatrix => [1, 0, 0, 1, dx, dy];\n\nexport function scaleMatrix(sx: number, sy: number, origin: Vec2 = { x: 0, y: 0 }): AffineMatrix {\n return [sx, 0, 0, sy, origin.x - sx * origin.x, origin.y - sy * origin.y];\n}\n\n/** Rotation by `degrees` clockwise (y points down) around `origin`. */\nexport function rotateMatrix(degrees: number, origin: Vec2 = { x: 0, y: 0 }): AffineMatrix {\n const r = (degrees * Math.PI) / 180;\n const cos = Math.cos(r);\n const sin = Math.sin(r);\n return [cos, sin, -sin, cos, origin.x - cos * origin.x + sin * origin.y, origin.y - sin * origin.x - cos * origin.y];\n}\n\n/** `m` applied about `origin` instead of the coordinate origin. */\nexport function matrixAbout(m: AffineMatrix, origin: Vec2): AffineMatrix {\n return multiplyMatrices(multiplyMatrices(translateMatrix(-origin.x, -origin.y), m), translateMatrix(origin.x, origin.y));\n}\n\n/**\n * A skew by `ax` degrees horizontally (vertical lines lean right for positive angles:\n * x' = x + tan(ax)·y) and `ay` degrees vertically (y' = y + tan(ay)·x), about `origin`.\n */\nexport function skewMatrix(ax: number, ay: number, origin: Vec2 = { x: 0, y: 0 }): AffineMatrix {\n const tx = Math.tan((ax * Math.PI) / 180);\n const ty = Math.tan((ay * Math.PI) / 180);\n return matrixAbout([1, ty, tx, 1, 0, 0], origin);\n}\n\nexport function applyMatrix(m: AffineMatrix, p: Vec2): Vec2 {\n return { x: m[0] * p.x + m[2] * p.y + m[4], y: m[1] * p.x + m[3] * p.y + m[5] };\n}\n\nexport function isIdentityMatrix(m: AffineMatrix, eps = 1e-12): boolean {\n return Math.abs(m[0] - 1) < eps && Math.abs(m[1]) < eps && Math.abs(m[2]) < eps && Math.abs(m[3] - 1) < eps && Math.abs(m[4]) < eps && Math.abs(m[5]) < eps;\n}\n\n/** The inverse matrix (the identity for a singular one). */\nexport function invertMatrix(m: AffineMatrix): AffineMatrix {\n const [a, b, c, d, e, f] = m;\n const det = a * d - b * c;\n if (!det || !Number.isFinite(det)) return IDENTITY_MATRIX;\n return [d / det, -b / det, -c / det, a / det, (c * f - d * e) / det, (b * e - a * f) / det];\n}\n\n/** Applies only the linear part (for directions and offsets). */\nexport function applyMatrixLinear(m: AffineMatrix, v: Vec2): Vec2 {\n return { x: m[0] * v.x + m[2] * v.y, y: m[1] * v.x + m[3] * v.y };\n}\n\n/**\n * The rotation of a matrix in degrees, clockwise (y down), in (−180, 180]. For a mirrored\n * matrix it is the rotation left after undoing a horizontal flip, so a flipped rotated shape\n * keeps its angle.\n */\nexport function matrixRotation(m: AffineMatrix): number {\n const [a, b, c, d] = m;\n const mirrored = a * d - b * c < 0;\n const deg = ((mirrored ? Math.atan2(-b - c, d - a) : Math.atan2(b - c, a + d)) * 180) / Math.PI;\n return Math.abs(deg) < 1e-9 ? 0 : deg;\n}\n\n/**\n * Splits `m` into `residual` then `rigid` (`m = residual × rigid` in apply order): `rigid` is\n * the nearest rotation plus the translation, `residual` the linear rest (scale, skew,\n * reflection). An unrotated `m` gives an identity `rigid` and everything in `residual`.\n */\nexport function decomposeRigid(m: AffineMatrix): { rigid: AffineMatrix; residual: AffineMatrix } {\n const [a, b, c, d, e, f] = m;\n const deg = matrixRotation(m);\n if (deg === 0) return { rigid: IDENTITY_MATRIX, residual: m };\n const r = (deg * Math.PI) / 180;\n const cos = Math.cos(r);\n const sin = Math.sin(r);\n return {\n rigid: [cos, sin, -sin, cos, e, f],\n residual: [cos * a + sin * b, -sin * a + cos * b, cos * c + sin * d, -sin * c + cos * d, 0, 0],\n };\n}\n","/**\n * Warp geometry shared by the vector editor's envelopes and the image editor's Free Transform\n * warp: preset warp styles and editable Bézier meshes, both forward maps from a source box onto\n * the plane.\n *\n * - **Presets** (`WarpStyle`, Photoshop's fifteen with bend and horizontal / vertical distortion\n * in percent): each is one bicubic Bézier patch whose 4 × 4 control grid follows the bend\n * (`warpPresetGrid`). Every preset is the identity at bend 0 and continuous in it.\n * - **Meshes** (`WarpMesh`): a grid of bicubic patches. Splitting a mesh (`splitWarpMeshU` / `V`)\n * is an exact de Casteljau subdivision, so it never changes the shape, and a preset turns into\n * an editable mesh of any size exactly.\n *\n * Ported from ArtCraft (MIT OR Apache-2.0, © ArtCraft Team and contributors; see\n * THIRD_PARTY_NOTICES.md): photocraft `crates/geom/src/warp.rs` (`WarpStyle`, `StyleWarp`,\n * `rest_grid`, `edge_arc`, `arc_grid`, `blend_rows`, `preset_grid`, `bernstein`, `split_cubic`,\n * `BERN_INV`, and `BezierMesh`: `identity`, `fit`, `eval`, `split_u`, `split_v`, `remove_split_u`,\n * `transpose`, `map_points`, `param_at`, `pull`, `smooth_lines`, `drag_point`, `control_bounds`;\n * `Warp::map` and `Warp::to_mesh`).\n */\nimport type { Box, Vec2, WarpMesh, WarpStyle } from './types';\n\nexport type { WarpMesh, WarpStyle };\n\ntype P = [number, number];\n/** A single patch's control grid, `[row][column]`, in box units (0–1, y down). */\ntype Grid = P[][];\n\n/** The fifteen presets in Photoshop's menu order. */\nexport const WARP_STYLES: readonly WarpStyle[] = [\n 'arc',\n 'arcLower',\n 'arcUpper',\n 'arch',\n 'bulge',\n 'shellLower',\n 'shellUpper',\n 'flag',\n 'wave',\n 'fish',\n 'rise',\n 'fisheye',\n 'inflate',\n 'squeeze',\n 'twist'\n];\n\nexport const WARP_STYLE_LABELS: Readonly<Record<WarpStyle, string>> = {\n arc: 'Arc',\n arcLower: 'Arc Lower',\n arcUpper: 'Arc Upper',\n arch: 'Arch',\n bulge: 'Bulge',\n shellLower: 'Shell Lower',\n shellUpper: 'Shell Upper',\n flag: 'Flag',\n wave: 'Wave',\n fish: 'Fish',\n rise: 'Rise',\n fisheye: 'Fisheye',\n inflate: 'Inflate',\n squeeze: 'Squeeze',\n twist: 'Twist'\n};\n\n/** The rest grid (no warp). */\nfunction restGrid(): Grid {\n return [0, 1, 2, 3].map((j) => [0, 1, 2, 3].map((i): P => [i / 3, j / 3]));\n}\n\n/**\n * A horizontal edge at height `y` (box units, 0–1 across) bent into a circular arc of `|b|·π`\n * that keeps its chord, bowing up when `up === (b > 0)`. `h` is the box's height over its width,\n * so the arc is circular in pixels.\n */\nfunction edgeArc(y: number, b: number, up: boolean, h: number): P[] {\n if (Math.abs(b) < 1e-9) return [0, 1, 2, 3].map((i): P => [i / 3, y]);\n const th = Math.abs(b) * Math.PI;\n const k = (((4 / 3) * Math.tan(th / 4)) * 0.5) / Math.sin(th / 2);\n const s = b > 0 === up ? -1 : 1;\n const c = Math.cos(th / 2);\n const n = Math.sin(th / 2);\n const dy = (s * k * n) / h;\n return [\n [0, y],\n [k * c, y + dy],\n [1 - k * c, y + dy],\n [1, y]\n ];\n}\n\n/**\n * Arc: every row is a circular arc of `|b|·π` around one centre; the edge on the inside of the\n * bend keeps its chord and the rows' radii grow by the box height towards the other edge. Worked\n * in units of the box width (`h` = height / width) so the arcs are circular in pixels.\n */\nfunction arcGrid(b: number, h: number): Grid {\n if (Math.abs(b) < 1e-9) return restGrid();\n const up = b > 0;\n const th = Math.abs(b) * Math.PI;\n const r = 0.5 / Math.sin(th / 2);\n const k = (4 / 3) * Math.tan(th / 4);\n const s = up ? -1 : 1;\n const cy = up ? h + r * Math.cos(th / 2) : -r * Math.cos(th / 2);\n return [0, 1, 2, 3].map((j) => {\n const v = j / 3;\n const big = r + h * (up ? 1 - v : v);\n const at = (a: number): P => [0.5 + big * Math.sin(a), cy + s * big * Math.cos(a)];\n const tangent = (a: number): P => [Math.cos(a), -s * Math.sin(a)];\n const p0 = at(-th / 2);\n const p3 = at(th / 2);\n const t0 = tangent(-th / 2);\n const t1 = tangent(th / 2);\n const l = k * big;\n const pts: P[] = [p0, [p0[0] + l * t0[0], p0[1] + l * t0[1]], [p3[0] - l * t1[0], p3[1] - l * t1[1]], p3];\n return pts.map((p): P => [p[0], p[1] / h]);\n });\n}\n\n/** Rows blended from `top` to `bottom`. */\nfunction blendRows(top: P[], bottom: P[]): Grid {\n return [0, 1, 2, 3].map((j) => {\n const t = j / 3;\n return [0, 1, 2, 3].map((i): P => [top[i][0] + (bottom[i][0] - top[i][0]) * t, top[i][1] + (bottom[i][1] - top[i][1]) * t]);\n });\n}\n\nconst INNER: [number, number, number, number][] = [\n [1, 1, -1, -1],\n [1, 2, 1, -1],\n [2, 1, -1, 1],\n [2, 2, 1, 1]\n];\n\n/**\n * A preset as a Bézier control grid (rows of `[x, y]` in box units, y down). `b`, `hd`, `vd` are\n * the bend and the horizontal / vertical distortion as fractions (−1…1); `aspect` is the box's\n * height over its width. The arc family stays circular in pixels, the other offsets scale with the\n * box, and a vertical warp is the horizontal one with the axes (and distortions) swapped.\n */\nexport function warpPresetGrid(style: WarpStyle, b: number, hd: number, vd: number, vertical: boolean, aspect: number): [number, number][][] {\n // Height over width of the box the bend runs along (the transposed box when vertical); in that\n // frame the two distortions trade places too.\n const h = vertical ? 1 / aspect : aspect;\n if (vertical) [hd, vd] = [vd, hd];\n let g = restGrid();\n switch (style) {\n case 'arc':\n g = arcGrid(b, h);\n break;\n case 'arch':\n g = [0, 1, 2, 3].map((j) => edgeArc(j / 3, b, true, h));\n break;\n case 'bulge':\n g = blendRows(edgeArc(0, b, true, h), edgeArc(1, b, false, h));\n break;\n case 'arcLower':\n g = blendRows(g[0], edgeArc(1, b, false, h));\n break;\n case 'arcUpper':\n g = blendRows(edgeArc(0, b, true, h), g[3]);\n break;\n // The bulging edge and the outer points of the row next to it come from Arc (bent the other\n // way for Shell Lower); the rest stays put.\n case 'shellLower': {\n const a = arcGrid(-b, h);\n g[3] = a[3];\n g[2][0] = a[2][0];\n g[2][3] = a[2][3];\n break;\n }\n case 'shellUpper': {\n const a = arcGrid(b, h);\n g[0] = a[0];\n g[1][0] = a[1][0];\n g[1][3] = a[1][3];\n break;\n }\n case 'flag':\n for (const row of g) {\n row[1][1] -= 2 * b;\n row[2][1] += 2 * b;\n }\n break;\n case 'wave':\n for (const row of g.slice(1, 3)) {\n row[1][1] += (4 / 3) * b;\n row[2][1] -= (4 / 3) * b;\n }\n break;\n case 'fish':\n [-2, -2 / 3, 2 / 3, 2].forEach((f, j) => {\n g[j][1][1] += f * b;\n g[j][2][1] -= f * b;\n });\n break;\n case 'rise':\n for (const row of g) {\n row[0][1] += 2 * b;\n row[1][1] += 2 * b;\n }\n break;\n case 'fisheye':\n for (const [j, i, dx, dy] of INNER) {\n g[j][i][0] += (dx * 2 * b) / 3;\n g[j][i][1] += (dy * 2 * b) / 3;\n }\n break;\n // Edge midpoints move out (Inflate) or the sides in (Squeeze) by b/3, the inner points by b/9.\n case 'inflate':\n case 'squeeze': {\n const s = style === 'inflate' ? 1 : -1;\n for (const p of g[0].slice(1, 3)) p[1] -= b / 3;\n for (const p of g[3].slice(1, 3)) p[1] += b / 3;\n for (const row of g.slice(1, 3)) {\n row[0][0] -= (s * b) / 3;\n row[3][0] += (s * b) / 3;\n }\n for (const [j, i, dx, dy] of INNER) {\n g[j][i][0] += (s * dx * b) / 9;\n g[j][i][1] += (dy * b) / 9;\n }\n break;\n }\n // The inner points turn round the centre (the other way for a negative bend).\n case 'twist': {\n const a = Math.abs(b);\n if (b >= 0) {\n g[1][1][0] += a;\n g[1][2][1] += a;\n g[2][1][1] -= a;\n g[2][2][0] -= a;\n } else {\n g[1][1][1] += a;\n g[1][2][0] -= a;\n g[2][1][0] += a;\n g[2][2][1] -= a;\n }\n break;\n }\n }\n // Vertical distortion: the top and bottom rows scale about their end points' midpoint (by\n // 1 ∓ vd) and the middle rows follow by the blend of those two moves.\n if (vd !== 0) {\n const moved = (row: P[], s: number): P[] => {\n const m: P = [(row[0][0] + row[3][0]) / 2, (row[0][1] + row[3][1]) / 2];\n return row.map((p): P => [m[0] + (p[0] - m[0]) * s - p[0], m[1] + (p[1] - m[1]) * s - p[1]]);\n };\n const d0 = moved(g[0], 1 - vd);\n const d3 = moved(g[3], 1 + vd);\n g.forEach((row, j) => {\n const t = j / 3;\n row.forEach((p, i) => {\n p[0] += d0[i][0] + (d3[i][0] - d0[i][0]) * t;\n p[1] += d0[i][1] + (d3[i][1] - d0[i][1]) * t;\n });\n });\n }\n // Horizontal distortion: each column scales about its end points' midpoint by 1 + hd·(2i/3 − 1).\n if (hd !== 0) {\n for (let i = 0; i < 4; i++) {\n const s = 1 + hd * ((2 * i) / 3 - 1);\n const m: P = [(g[0][i][0] + g[3][i][0]) / 2, (g[0][i][1] + g[3][i][1]) / 2];\n for (const row of g) row[i] = [m[0] + (row[i][0] - m[0]) * s, m[1] + (row[i][1] - m[1]) * s];\n }\n }\n // Vertical orientation: the same grid with the axes swapped.\n if (vertical) g = [0, 1, 2, 3].map((j) => [0, 1, 2, 3].map((i): P => [g[i][j][1], g[i][j][0]]));\n return g;\n}\n\nfunction bernstein(t: number): [number, number, number, number] {\n const s = 1 - t;\n return [s * s * s, 3 * s * s * t, 3 * s * t * t, t * t * t];\n}\n\nexport const lerpVec2 = (a: Vec2, b: Vec2, t: number): Vec2 => ({ x: a.x + (b.x - a.x) * t, y: a.y + (b.y - a.y) * t });\n\n/** De Casteljau split of a cubic at `t`: 7 points (left 0..3, right 3..6). */\nfunction splitCubic(p: readonly Vec2[], t: number): Vec2[] {\n const a = lerpVec2(p[0], p[1], t);\n const b = lerpVec2(p[1], p[2], t);\n const c = lerpVec2(p[2], p[3], t);\n const d = lerpVec2(a, b, t);\n const e = lerpVec2(b, c, t);\n return [p[0], a, d, lerpVec2(d, e, t), e, c, p[3]];\n}\n\n/** Inverse of the Bernstein interpolation matrix at t = 0, ⅓, ⅔, 1 (rows: control point, columns: sample). */\nconst BERN_INV = [\n [1, 0, 0, 0],\n [-5 / 6, 3, -1.5, 1 / 3],\n [1 / 3, -1.5, 3, -5 / 6],\n [0, 0, 0, 1]\n];\n\n// ---------------------------------------------------------------------------\n// Presets\n// ---------------------------------------------------------------------------\n\n/** A preset warp's settings (bend and distortions in percent, −100…100). */\nexport interface WarpPreset {\n style: WarpStyle;\n bend: number;\n horizontal?: number;\n vertical?: number;\n /** Bend along the vertical axis. */\n orientation?: 'horizontal' | 'vertical';\n}\n\nconst pct = (v: number | undefined) => (typeof v === 'number' && Number.isFinite(v) ? Math.min(1, Math.max(-1, v / 100)) : 0);\n\n/**\n * A preset as one Bézier patch over `bounds` (points in the bounds' space), or null when it\n * changes nothing (an unknown style, all-zero amounts, or an empty box).\n */\nexport function warpPresetMesh(preset: WarpPreset, bounds: Box): WarpMesh | null {\n if (!WARP_STYLES.includes(preset.style)) return null;\n const { x, y, width: w, height: h } = bounds;\n if (!(w > 0 && h > 0)) return null;\n const b = pct(preset.bend);\n const hd = pct(preset.horizontal);\n const vd = pct(preset.vertical);\n if (b === 0 && hd === 0 && vd === 0) return null;\n const grid = warpPresetGrid(preset.style, b, hd, vd, preset.orientation === 'vertical', h / w);\n return { us: [0, 1], vs: [0, 1], points: grid.flat().map((p) => ({ x: x + p[0] * w, y: y + p[1] * h })) };\n}\n\n// ---------------------------------------------------------------------------\n// Meshes\n// ---------------------------------------------------------------------------\n\n/** Control points per row. */\nexport const warpMeshColumns = (m: WarpMesh) => 3 * (m.us.length - 1) + 1;\n/** Control point rows. */\nexport const warpMeshRows = (m: WarpMesh) => 3 * (m.vs.length - 1) + 1;\n\n/** Whether a mesh is well formed: knots from 0 to 1 increasing, the right number of finite points. */\nexport function isValidWarpMesh(m: unknown): m is WarpMesh {\n if (!m || typeof m !== 'object') return false;\n const { us, vs, points } = m as WarpMesh;\n const knots = (k: unknown): k is number[] =>\n Array.isArray(k) && k.length >= 2 && k.length <= 65 && k[0] === 0 && k[k.length - 1] === 1 && k.every((v, i) => typeof v === 'number' && (i === 0 || v > k[i - 1]));\n if (!knots(us) || !knots(vs) || !Array.isArray(points)) return false;\n return points.length === (3 * (us.length - 1) + 1) * (3 * (vs.length - 1) + 1) && points.every((p) => !!p && Number.isFinite(p.x) && Number.isFinite(p.y));\n}\n\n/** Fits a mesh with patch boundaries `us` / `vs` to the map `f` (box fractions → output) by interpolating it at each patch's thirds. Exact for bicubic maps (affine maps included). */\nexport function fitWarpMesh(f: (s: number, t: number) => Vec2, us: readonly number[], vs: readonly number[]): WarpMesh {\n const pc = us.length - 1;\n const pr = vs.length - 1;\n const nx = 3 * pc + 1;\n const points: Vec2[] = new Array((3 * pr + 1) * nx);\n for (let pj = 0; pj < pr; pj++) {\n for (let pi = 0; pi < pc; pi++) {\n const s: Vec2[][] = [0, 1, 2, 3].map((j) =>\n [0, 1, 2, 3].map((i) => f(us[pi] + ((us[pi + 1] - us[pi]) * i) / 3, vs[pj] + ((vs[pj + 1] - vs[pj]) * j) / 3))\n );\n for (let j = 0; j < 4; j++) {\n for (let i = 0; i < 4; i++) {\n let x = 0;\n let y = 0;\n for (let a = 0; a < 4; a++) {\n for (let b = 0; b < 4; b++) {\n const k = BERN_INV[j][a] * BERN_INV[i][b];\n x += k * s[a][b].x;\n y += k * s[a][b].y;\n }\n }\n points[(3 * pj + j) * nx + 3 * pi + i] = { x, y };\n }\n }\n }\n }\n return { us: us.slice(), vs: vs.slice(), points };\n}\n\n/** `n + 1` evenly spaced knots from 0 to 1. */\nexport const evenKnots = (n: number) => Array.from({ length: n + 1 }, (_, i) => i / n);\n/** A patch count rounded and clamped to 1–64. */\nexport const clampMeshCount = (n: number) => Math.min(64, Math.max(1, Math.round(Number.isFinite(n) ? n : 1)));\n\n/** The identity mesh over `bounds` with `columns × rows` patches. */\nexport function identityWarpMesh(bounds: Box, columns = 1, rows = 1): WarpMesh {\n return fitWarpMesh((s, t) => ({ x: bounds.x + s * bounds.width, y: bounds.y + t * bounds.height }), evenKnots(clampMeshCount(columns)), evenKnots(clampMeshCount(rows)));\n}\n\n/**\n * The patch holding box fraction `s` and the parameter inside it. Outside 0–1 the end patches\n * extrapolate (their polynomials continue), so handles past the box map smoothly.\n */\nfunction locate(knots: readonly number[], s: number): [number, number] {\n const n = knots.length - 1;\n let i = 0;\n while (i + 1 < n && s > knots[i + 1]) i++;\n const w = knots[i + 1] - knots[i];\n return [i, w > 0 ? (s - knots[i]) / w : 0];\n}\n\n/** The surface at box fractions `(s, t)`. */\nexport function evalWarpMesh(m: WarpMesh, s: number, t: number): Vec2 {\n const [pi, a] = locate(m.us, s);\n const [pj, b] = locate(m.vs, t);\n const ba = bernstein(a);\n const bb = bernstein(b);\n const nx = warpMeshColumns(m);\n let x = 0;\n let y = 0;\n for (let j = 0; j < 4; j++) {\n for (let i = 0; i < 4; i++) {\n const p = m.points[(3 * pj + j) * nx + 3 * pi + i];\n const k = ba[i] * bb[j];\n x += p.x * k;\n y += p.y * k;\n }\n }\n return { x, y };\n}\n\nfunction transposeMesh(m: WarpMesh): WarpMesh {\n const nx = warpMeshColumns(m);\n const ny = warpMeshRows(m);\n const points: Vec2[] = new Array(nx * ny);\n for (let j = 0; j < ny; j++) for (let i = 0; i < nx; i++) points[i * ny + j] = m.points[j * nx + i];\n return { us: m.vs.slice(), vs: m.us.slice(), points };\n}\n\n/** The mesh with the patch column holding `s` split at `s` (exact). Null when `s` is on or too close to a boundary. */\nexport function splitWarpMeshU(m: WarpMesh, s: number): WarpMesh | null {\n const [pi, a] = locate(m.us, s);\n if (!(a >= 0.01 && a <= 0.99)) return null;\n const nx = warpMeshColumns(m);\n const ny = warpMeshRows(m);\n const points: Vec2[] = [];\n for (let j = 0; j < ny; j++) {\n const row = m.points.slice(j * nx, (j + 1) * nx);\n points.push(...row.slice(0, 3 * pi), ...splitCubic(row.slice(3 * pi, 3 * pi + 4), a), ...row.slice(3 * pi + 4));\n }\n const us = m.us.slice();\n us.splice(pi + 1, 0, Math.min(1, Math.max(0, s)));\n return { us, vs: m.vs.slice(), points };\n}\n\n/** The mesh with the patch row holding `t` split at `t` (exact). */\nexport function splitWarpMeshV(m: WarpMesh, t: number): WarpMesh | null {\n const out = splitWarpMeshU(transposeMesh(m), t);\n return out && transposeMesh(out);\n}\n\n/**\n * The mesh without interior vertical boundary `k` (1 … us.length − 2), its two patch columns\n * merged: exact when they came from an unedited split; otherwise the outer control points stay and\n * the inner handles are extrapolated.\n */\nexport function removeWarpMeshSplitU(m: WarpMesh, k: number): WarpMesh | null {\n if (k <= 0 || k + 1 >= m.us.length) return null;\n const a = (m.us[k] - m.us[k - 1]) / (m.us[k + 1] - m.us[k - 1]);\n const nx = warpMeshColumns(m);\n const ny = warpMeshRows(m);\n const c0 = 3 * (k - 1);\n const points: Vec2[] = [];\n for (let j = 0; j < ny; j++) {\n const row = m.points.slice(j * nx, (j + 1) * nx);\n const [p0, q1, r2, p3] = [row[c0], row[c0 + 1], row[c0 + 5], row[c0 + 6]];\n // De Casteljau inverse: q1 = lerpVec2(p0, p1, a), r2 = lerpVec2(p2, p3, a).\n const p1 = { x: (q1.x - (1 - a) * p0.x) / a, y: (q1.y - (1 - a) * p0.y) / a };\n const p2 = { x: (r2.x - a * p3.x) / (1 - a), y: (r2.y - a * p3.y) / (1 - a) };\n points.push(...row.slice(0, c0), p0, p1, p2, p3, ...row.slice(c0 + 7));\n }\n const us = m.us.slice();\n us.splice(k, 1);\n return { us, vs: m.vs.slice(), points };\n}\n\n/** Removes interior horizontal boundary `k`. */\nexport function removeWarpMeshSplitV(m: WarpMesh, k: number): WarpMesh | null {\n const out = removeWarpMeshSplitU(transposeMesh(m), k);\n return out && transposeMesh(out);\n}\n\n/** Every control point through `f` (exact for affine maps). */\nexport function mapWarpMeshPoints(m: WarpMesh, f: (p: Vec2) => Vec2): WarpMesh {\n return { us: m.us.slice(), vs: m.vs.slice(), points: m.points.map((p) => f(p)) };\n}\n\n/**\n * The mesh with `columns × rows` patches over the same surface: split exactly when its knots are\n * a subset of the new even ones (a one-patch mesh always is), otherwise refitted.\n */\nexport function resizeWarpMesh(m: WarpMesh, columns: number, rows: number): WarpMesh {\n const cols = clampMeshCount(columns);\n const rws = clampMeshCount(rows);\n if (m.us.length - 1 === cols && m.vs.length - 1 === rws) return m;\n const us = evenKnots(cols);\n const vs = evenKnots(rws);\n const has = (list: number[], v: number) => list.some((k) => Math.abs(k - v) < 1e-12);\n if (m.us.every((u) => has(us, u)) && m.vs.every((v) => has(vs, v))) {\n let out: WarpMesh | null = m;\n for (const u of us) if (!has(out.us, u)) out = splitWarpMeshU(out, u) ?? out;\n for (const v of vs) if (!has(out.vs, v)) out = splitWarpMeshV(out, v) ?? out;\n return out;\n }\n return fitWarpMesh((s, t) => evalWarpMesh(m, s, t), us, vs);\n}\n\n/** Bounding box of the control points (the surface lies inside it). */\nexport function warpMeshControlBounds(m: WarpMesh): Box {\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n for (const p of m.points) {\n minX = Math.min(minX, p.x);\n minY = Math.min(minY, p.y);\n maxX = Math.max(maxX, p.x);\n maxY = Math.max(maxY, p.y);\n }\n return { x: minX, y: minY, width: maxX - minX, height: maxY - minY };\n}\n\n/** Box fractions `(s, t)` whose surface point is nearest `p` (a coarse search, then Newton steps). */\nexport function warpMeshParamAt(m: WarpMesh, p: Vec2): { s: number; t: number; distance: number } {\n const n = 48;\n let best = { s: 0.5, t: 0.5, d: Infinity };\n for (let j = 0; j <= n; j++) {\n for (let i = 0; i <= n; i++) {\n const q = evalWarpMesh(m, i / n, j / n);\n const d = (q.x - p.x) ** 2 + (q.y - p.y) ** 2;\n if (d < best.d) best = { s: i / n, t: j / n, d };\n }\n }\n let { s, t } = best;\n for (let k = 0; k < 12; k++) {\n const h = 1e-5;\n const q = evalWarpMesh(m, s, t);\n const qs = evalWarpMesh(m, s + h, t);\n const qt = evalWarpMesh(m, s, t + h);\n const a = (qs.x - q.x) / h;\n const b = (qt.x - q.x) / h;\n const c = (qs.y - q.y) / h;\n const d = (qt.y - q.y) / h;\n const det = a * d - b * c;\n if (Math.abs(det) < 1e-12) break;\n const ex = p.x - q.x;\n const ey = p.y - q.y;\n s = Math.min(1, Math.max(0, s + (d * ex - b * ey) / det));\n t = Math.min(1, Math.max(0, t + (a * ey - c * ex) / det));\n }\n const q = evalWarpMesh(m, s, t);\n return { s, t, distance: Math.hypot(q.x - p.x, q.y - p.y) };\n}\n\n/**\n * Makes the tangent equal on both sides of every interior grid line for the control points in\n * columns `i0..i1` and rows `j0..j1` (exclusive ends): each pair of handles takes the average of\n * the two tangents it had. In place.\n */\nfunction smoothLines(m: WarpMesh, i0: number, i1: number, j0: number, j1: number) {\n const nx = warpMeshColumns(m);\n i1 = Math.min(i1, nx);\n j1 = Math.min(j1, warpMeshRows(m));\n const triples: [number, number, number, number, number][] = [];\n for (let a = 1; a < m.us.length - 1; a++) {\n if (3 * a >= i0 && 3 * a < i1)\n for (let j = j0; j < j1; j++) triples.push([j * nx + 3 * a - 1, j * nx + 3 * a, j * nx + 3 * a + 1, m.us[a] - m.us[a - 1], m.us[a + 1] - m.us[a]]);\n }\n for (let b = 1; b < m.vs.length - 1; b++) {\n if (3 * b >= j0 && 3 * b < j1)\n for (let i = i0; i < i1; i++) triples.push([(3 * b - 1) * nx + i, 3 * b * nx + i, (3 * b + 1) * nx + i, m.vs[b] - m.vs[b - 1], m.vs[b + 1] - m.vs[b]]);\n }\n for (const [l, c, r, hl, hr] of triples) {\n const pl = m.points[l];\n const pc = m.points[c];\n const pr = m.points[r];\n const tx = ((pc.x - pl.x) / hl + (pr.x - pc.x) / hr) / 2;\n const ty = ((pc.y - pl.y) / hl + (pr.y - pc.y) / hr) / 2;\n m.points[l] = { x: pc.x - tx * hl, y: pc.y - ty * hl };\n m.points[r] = { x: pc.x + tx * hr, y: pc.y + ty * hr };\n }\n}\n\n/**\n * `base` with control point `index` dragged by `d`, keeping the surface smooth across the grid\n * lines: an anchor moves with the eight points around it as one block; a handle moves with the two\n * points beside it across its line, and the handle opposite it on the same anchor turns the other\n * way (with its two neighbours), so the line keeps passing straight through the anchor. An inner\n * point of a patch moves alone.\n */\nexport function dragWarpMeshPoint(base: WarpMesh, index: number, d: Vec2): WarpMesh {\n if (index < 0 || index >= base.points.length || !Number.isFinite(d.x) || !Number.isFinite(d.y)) return base;\n const out: WarpMesh = { us: base.us.slice(), vs: base.vs.slice(), points: base.points.slice() };\n const nx = warpMeshColumns(base);\n const ny = warpMeshRows(base);\n const i = index % nx;\n const j = Math.floor(index / nx);\n const shift = (ii: number, jj: number, v: Vec2) => {\n if (ii < 0 || jj < 0 || ii >= nx || jj >= ny) return;\n const p = out.points[jj * nx + ii];\n out.points[jj * nx + ii] = { x: p.x + v.x, y: p.y + v.y };\n };\n // Spans either side of interior knot `k`.\n const span = (knots: number[], k: number): [number, number] | null => (k > 0 && k + 1 < knots.length ? [knots[k] - knots[k - 1], knots[k + 1] - knots[k]] : null);\n const ri = i % 3;\n const rj = j % 3;\n if (ri === 0 && rj === 0) {\n for (let dj = -1; dj <= 1; dj++) for (let di = -1; di <= 1; di++) shift(i + di, j + dj, d);\n } else if (ri === 0) {\n // A handle along a vertical line: it takes the two points beside it across the line.\n for (let di = -1; di <= 1; di++) shift(i + di, j, d);\n // The opposite handle of the same anchor turns the other way.\n const sp = span(base.vs, Math.floor(j / 3) + (rj === 2 ? 1 : 0));\n if (sp) {\n const [other, k] = rj === 1 ? [j - 2, sp[0] / sp[1]] : [j + 2, sp[1] / sp[0]];\n for (let di = -1; di <= 1; di++) shift(i + di, other, { x: -d.x * k, y: -d.y * k });\n }\n } else if (rj === 0) {\n // A handle along a horizontal line, likewise.\n for (let dj = -1; dj <= 1; dj++) shift(i, j + dj, d);\n const sp = span(base.us, Math.floor(i / 3) + (ri === 2 ? 1 : 0));\n if (sp) {\n const [other, k] = ri === 1 ? [i - 2, sp[0] / sp[1]] : [i + 2, sp[1] / sp[0]];\n for (let dj = -1; dj <= 1; dj++) shift(other, j + dj, { x: -d.x * k, y: -d.y * k });\n }\n } else shift(i, j, d);\n return out;\n}\n\n/**\n * `base` with its surface point at box fractions `(s, t)` pulled by `d`, the way dragging inside a\n * patch works: interior anchors within about two cells follow by a share of `d` that fades with\n * distance (each with its block of handles, so grid lines stay smooth); the outer border stays\n * pinned unless the grab is near it, and then it bows; the four corners never move. The grabbed\n * patch's inner points (and, near the border, the border's handles) make up the rest, so the\n * grabbed point lands exactly at its start + `d`.\n */\nexport function pullWarpMesh(base: WarpMesh, s: number, t: number, d: Vec2): WarpMesh {\n /** Within this distance of the border (box fractions) a grab starts to drag the border with it. */\n const BORDER_ZONE = 0.12;\n /** Falloff radius, in the grabbed patch's size. */\n const REACH = 1.8;\n if (!Number.isFinite(d.x) || !Number.isFinite(d.y)) return base;\n const m: WarpMesh = { us: base.us.slice(), vs: base.vs.slice(), points: base.points.slice() };\n const cols = m.us.length - 1;\n const rows = m.vs.length - 1;\n const [pi, a] = locate(m.us, s);\n const [pj, b] = locate(m.vs, t);\n const ba = bernstein(a);\n const bb = bernstein(b);\n const nx = warpMeshColumns(m);\n const ny = warpMeshRows(m);\n const anchor = (ai: number, aj: number) => base.points[3 * aj * nx + 3 * ai] ?? { x: 0, y: 0 };\n const at0 = evalWarpMesh(base, s, t);\n const target = { x: at0.x + d.x, y: at0.y + d.y };\n // The grabbed patch's size and how far inside it the grab is (1 in the middle, 0 on its edges).\n let size = 1;\n for (const k of ['x', 'y'] as const) {\n const vals = [anchor(pi, pj)[k], anchor(pi + 1, pj)[k], anchor(pi, pj + 1)[k], anchor(pi + 1, pj + 1)[k]];\n size = Math.max(size, Math.max(...vals) - Math.min(...vals));\n }\n const radius = REACH * size;\n const innerW = (ba[1] + ba[2]) * (bb[1] + bb[2]);\n const interior = Math.min(1, Math.max(0, innerW / 0.5625));\n const toBorder = Math.min(s, 1 - s, t, 1 - t);\n const nearBorder = Math.min(1, Math.max(0, 1 - toBorder / BORDER_ZONE));\n const meshCorner = (ai: number, aj: number) => (ai === 0 || ai === cols) && (aj === 0 || aj === rows);\n const onBorder = (ai: number, aj: number) => ai === 0 || ai === cols || aj === 0 || aj === rows;\n const reach = (ai: number, aj: number, wa: number, wb: number) => (meshCorner(ai, aj) ? 0 : wa * wb * (onBorder(ai, aj) ? nearBorder : 1));\n const corner: [number, number, number][] = [\n [pi, pj, reach(pi, pj, ba[0] + ba[1], bb[0] + bb[1])],\n [pi + 1, pj, reach(pi + 1, pj, ba[2] + ba[3], bb[0] + bb[1])],\n [pi, pj + 1, reach(pi, pj + 1, ba[0] + ba[1], bb[2] + bb[3])],\n [pi + 1, pj + 1, reach(pi + 1, pj + 1, ba[2] + ba[3], bb[2] + bb[3])]\n ];\n // Share of `d` for each anchor.\n const share = new Array((cols + 1) * (rows + 1)).fill(0);\n for (let aj = 0; aj <= rows; aj++) {\n for (let ai = 0; ai <= cols; ai++) {\n const p = anchor(ai, aj);\n const x = Math.min(1, Math.max(0, Math.hypot(p.x - at0.x, p.y - at0.y) / radius));\n const fall = 0.5 * (1 + Math.cos(Math.PI * x));\n const edge = meshCorner(ai, aj) ? 0 : onBorder(ai, aj) ? nearBorder : 1;\n share[aj * (cols + 1) + ai] = fall * edge;\n }\n }\n // The grabbed patch's own corners: near one, that corner follows the pointer.\n for (const [ai, aj, w] of corner) share[aj * (cols + 1) + ai] = Math.max(share[aj * (cols + 1) + ai], (1 - interior) * w);\n const move = (idx: number, k: number, v: Vec2) => {\n const p = m.points[idx];\n m.points[idx] = { x: p.x + v.x * k, y: p.y + v.y * k };\n };\n // Every control point moves with the anchor it is closest to.\n for (let j = 0; j < ny; j++) {\n for (let i = 0; i < nx; i++) {\n const ai = Math.min(cols, Math.floor((i + 1) / 3));\n const aj = Math.min(rows, Math.floor((j + 1) / 3));\n move(j * nx + i, share[aj * (cols + 1) + ai], d);\n }\n }\n // Close the gap exactly with three groups that share the work: the grabbed patch's four inner\n // points, the corner blocks, and (near the border) the border's own handles. Closing nudges the\n // tangents across the grid lines, so they are evened out again and the gap re-closed.\n let norm = 0;\n for (const j of [1, 2]) for (const i of [1, 2]) norm += (ba[i] * bb[j]) ** 2;\n const cornerNorm = corner.reduce((acc, c) => acc + c[2] * c[2], 0);\n // With no free corner to help (a one-patch grid grabbed away from its border) the inner points do all of it.\n const innerPart = cornerNorm > 1e-12 ? Math.min(1, innerW / 0.15) : 1;\n const edgeHandles: [number, number][] = [];\n for (const k of [1, 2]) {\n if (pi === 0) edgeHandles.push([(3 * pj + k) * nx + 3 * pi, ba[0] * bb[k]]);\n if (pi + 1 === cols) edgeHandles.push([(3 * pj + k) * nx + 3 * pi + 3, ba[3] * bb[k]]);\n if (pj === 0) edgeHandles.push([3 * pj * nx + 3 * pi + k, ba[k] * bb[0]]);\n if (pj + 1 === rows) edgeHandles.push([(3 * pj + 3) * nx + 3 * pi + k, ba[k] * bb[3]]);\n }\n const edgeNorm = edgeHandles.reduce((acc, e) => acc + e[1] * e[1], 0);\n const edgePart = edgeNorm > 1e-12 ? nearBorder : 0;\n const innerShare = (1 - edgePart) * innerPart;\n const cornerShare = (1 - edgePart) * (1 - innerPart);\n for (let iter = 0; iter < 60; iter++) {\n const now = evalWarpMesh(m, s, t);\n const rem = { x: target.x - now.x, y: target.y - now.y };\n if (Math.hypot(rem.x, rem.y) < 1e-9) break;\n if (innerShare > 0 && norm > 0) for (const j of [1, 2]) for (const i of [1, 2]) move((3 * pj + j) * nx + 3 * pi + i, ((ba[i] * bb[j]) / norm) * innerShare, rem);\n if (edgePart > 0) for (const [idx, w] of edgeHandles) move(idx, (w / edgeNorm) * edgePart, rem);\n if (cornerShare > 0 && cornerNorm > 0) {\n for (const [ai, aj, w] of corner) {\n const k = (w / cornerNorm) * cornerShare;\n for (let dj = -1; dj <= 1; dj++) {\n for (let di = -1; di <= 1; di++) {\n const i = 3 * ai + di;\n const j = 3 * aj + dj;\n if (i >= 0 && j >= 0 && i < nx && j < ny) move(j * nx + i, k, rem);\n }\n }\n }\n }\n for (let k = 0; k < 3; k++) smoothLines(m, Math.max(0, 3 * pi - 3), 3 * pi + 7, Math.max(0, 3 * pj - 3), 3 * pj + 7);\n }\n return m;\n}\n\n/**\n * The control points an editor shows: the anchors (where grid lines cross) and the handles along\n * the grid lines, each with the anchor it belongs to. Points inside a patch are left out (drag\n * inside a patch to pull the surface instead).\n */\nexport function warpMeshEditPoints(m: WarpMesh): { anchors: number[]; handles: { index: number; anchor: number }[] } {\n const nx = warpMeshColumns(m);\n const ny = warpMeshRows(m);\n const anchors: number[] = [];\n const handles: { index: number; anchor: number }[] = [];\n for (let j = 0; j < ny; j++) {\n for (let i = 0; i < nx; i++) {\n const ri = i % 3;\n const rj = j % 3;\n if (ri === 0 && rj === 0) anchors.push(j * nx + i);\n else if (ri === 0) handles.push({ index: j * nx + i, anchor: (rj === 1 ? j - 1 : j + 1) * nx + i });\n else if (rj === 0) handles.push({ index: j * nx + i, anchor: j * nx + (ri === 1 ? i - 1 : i + 1) });\n }\n }\n return { anchors, handles };\n}\n\n/** The mesh's grid lines (patch borders) as cubics `[p0, p1, p2, p3]`. */\nexport function warpMeshGridCurves(m: WarpMesh): Vec2[][] {\n const nx = warpMeshColumns(m);\n const ny = warpMeshRows(m);\n const pt = (i: number, j: number) => m.points[j * nx + i];\n const out: Vec2[][] = [];\n for (let j = 0; j < ny; j += 3) for (let i = 0; i + 3 < nx; i += 3) out.push([pt(i, j), pt(i + 1, j), pt(i + 2, j), pt(i + 3, j)]);\n for (let i = 0; i < nx; i += 3) for (let j = 0; j + 3 < ny; j += 3) out.push([pt(i, j), pt(i, j + 1), pt(i, j + 2), pt(i, j + 3)]);\n return out;\n}\n"]}