@pixerate/editor 0.113.0 → 0.114.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 (124) hide show
  1. package/THIRD_PARTY_NOTICES.md +5 -0
  2. package/dist/animation-editor/index.cjs +60 -54
  3. package/dist/animation-editor/index.cjs.map +1 -1
  4. package/dist/animation-editor/index.d.cts +3 -3
  5. package/dist/animation-editor/index.d.ts +3 -3
  6. package/dist/animation-editor/index.js +14 -8
  7. package/dist/animation-editor/index.js.map +1 -1
  8. package/dist/builtin-CY97ppKM.d.cts +354 -0
  9. package/dist/builtin-CY97ppKM.d.ts +354 -0
  10. package/dist/canvas/index.cjs +3 -3
  11. package/dist/canvas/index.cjs.map +1 -1
  12. package/dist/canvas/index.js +9 -9
  13. package/dist/chunk-26PGXHY7.cjs +753 -0
  14. package/dist/chunk-26PGXHY7.cjs.map +1 -0
  15. package/dist/chunk-2OJACTPR.cjs +929 -0
  16. package/dist/chunk-2OJACTPR.cjs.map +1 -0
  17. package/dist/chunk-3UFGNHSP.js +929 -0
  18. package/dist/chunk-3UFGNHSP.js.map +1 -0
  19. package/dist/{chunk-YGIMK4NX.cjs → chunk-5OVJHMZQ.cjs} +757 -825
  20. package/dist/chunk-5OVJHMZQ.cjs.map +1 -0
  21. package/dist/chunk-643B2HKC.cjs +534 -0
  22. package/dist/chunk-643B2HKC.cjs.map +1 -0
  23. package/dist/chunk-6FCKOS2B.js +534 -0
  24. package/dist/chunk-6FCKOS2B.js.map +1 -0
  25. package/dist/chunk-BRLYOPLT.js +2574 -0
  26. package/dist/chunk-BRLYOPLT.js.map +1 -0
  27. package/dist/{chunk-LQEEDHOP.js → chunk-C6C5PDKU.js} +759 -761
  28. package/dist/chunk-C6C5PDKU.js.map +1 -0
  29. package/dist/{chunk-4KLT7ZYS.cjs → chunk-DFQEX3AM.cjs} +29 -29
  30. package/dist/{chunk-4KLT7ZYS.cjs.map → chunk-DFQEX3AM.cjs.map} +1 -1
  31. package/dist/{chunk-CZOXTEMN.js → chunk-EUVSQ25B.js} +336 -404
  32. package/dist/chunk-EUVSQ25B.js.map +1 -0
  33. package/dist/chunk-G5NMLUVF.cjs +2574 -0
  34. package/dist/chunk-G5NMLUVF.cjs.map +1 -0
  35. package/dist/{chunk-LPYOIVLA.js → chunk-LKCYANMW.js} +3 -3
  36. package/dist/{chunk-W3GXSUSQ.cjs → chunk-LPLCWZTM.cjs} +5087 -1283
  37. package/dist/chunk-LPLCWZTM.cjs.map +1 -0
  38. package/dist/chunk-MMVHBKMM.js +753 -0
  39. package/dist/chunk-MMVHBKMM.js.map +1 -0
  40. package/dist/{chunk-POGBUYWE.cjs → chunk-ST7E3NEE.cjs} +857 -859
  41. package/dist/chunk-ST7E3NEE.cjs.map +1 -0
  42. package/dist/{chunk-7VOHOPLW.cjs → chunk-TCKIXI46.cjs} +59 -59
  43. package/dist/{chunk-7VOHOPLW.cjs.map → chunk-TCKIXI46.cjs.map} +1 -1
  44. package/dist/{chunk-XIOMMGPD.cjs → chunk-TFOPHZ3U.cjs} +1 -1
  45. package/dist/chunk-TFOPHZ3U.cjs.map +1 -0
  46. package/dist/{chunk-Z4BC6M74.js → chunk-UBIXVXPR.js} +2 -2
  47. package/dist/{chunk-BLWCAQCW.js → chunk-VXR7XWMF.js} +4574 -770
  48. package/dist/chunk-VXR7XWMF.js.map +1 -0
  49. package/dist/{chunk-HNS7UHCM.js → chunk-XK5LZKBD.js} +1 -1
  50. package/dist/chunk-XK5LZKBD.js.map +1 -0
  51. package/dist/cms/index.cjs +146 -0
  52. package/dist/cms/index.cjs.map +1 -0
  53. package/dist/cms/index.d.cts +51 -0
  54. package/dist/cms/index.d.ts +51 -0
  55. package/dist/cms/index.js +146 -0
  56. package/dist/cms/index.js.map +1 -0
  57. package/dist/{export-DIkoK8-r.d.ts → export-_1dUKwpF.d.ts} +217 -191
  58. package/dist/{export-CEXEzqBf.d.cts → export-b6NjCZ5-.d.cts} +217 -191
  59. package/dist/image-editor/index.cjs +1779 -1280
  60. package/dist/image-editor/index.cjs.map +1 -1
  61. package/dist/image-editor/index.d.cts +77 -93
  62. package/dist/image-editor/index.d.ts +77 -93
  63. package/dist/image-editor/index.js +740 -241
  64. package/dist/image-editor/index.js.map +1 -1
  65. package/dist/opentype-BZEOSOX3.d.ts +188 -0
  66. package/dist/opentype-Dpe75vL5.d.cts +188 -0
  67. package/dist/paint/index.cjs +4 -4
  68. package/dist/paint/index.d.cts +2 -2
  69. package/dist/paint/index.d.ts +2 -2
  70. package/dist/paint/index.js +3 -3
  71. package/dist/paint-editor/index.cjs +146 -145
  72. package/dist/paint-editor/index.cjs.map +1 -1
  73. package/dist/paint-editor/index.d.cts +9 -8
  74. package/dist/paint-editor/index.d.ts +9 -8
  75. package/dist/paint-editor/index.js +6 -5
  76. package/dist/paint-editor/index.js.map +1 -1
  77. package/dist/raster/index.cjs +53 -3
  78. package/dist/raster/index.cjs.map +1 -1
  79. package/dist/raster/index.d.cts +62 -91
  80. package/dist/raster/index.d.ts +62 -91
  81. package/dist/raster/index.js +59 -9
  82. package/dist/{render-BEriFuqK.d.cts → render-B1K_OoLy.d.cts} +87 -2
  83. package/dist/{render-tjzKaik-.d.ts → render-CrmHOgpo.d.ts} +87 -2
  84. package/dist/{retouch-CEIKR22W.d.cts → retouch-Bxkuc0KH.d.cts} +1 -1
  85. package/dist/{retouch-BXmeSCaB.d.ts → retouch-Do6tBs2H.d.ts} +1 -1
  86. package/dist/{surface-C8RRg_Bh.d.cts → surface-Cn30xIV6.d.cts} +6 -1
  87. package/dist/{surface-C8RRg_Bh.d.ts → surface-Cn30xIV6.d.ts} +6 -1
  88. package/dist/{svg-D_cfkhlB.d.cts → svg-BnRj0q8i.d.cts} +16 -4
  89. package/dist/{svg-wIaKLrU0.d.ts → svg-CmmBFfGT.d.ts} +16 -4
  90. package/dist/{types-DtL_qLFz.d.ts → types-1SUQKDAw.d.ts} +273 -4
  91. package/dist/{types-DyQq-WPY.d.cts → types-yINF17Ta.d.cts} +273 -4
  92. package/dist/vector/index.cjs +12170 -7343
  93. package/dist/vector/index.cjs.map +1 -1
  94. package/dist/vector/index.d.cts +1579 -16
  95. package/dist/vector/index.d.ts +1579 -16
  96. package/dist/vector/index.js +6303 -1476
  97. package/dist/vector/index.js.map +1 -1
  98. package/dist/warp-B39VsOtd.d.cts +348 -0
  99. package/dist/warp-DMN30aY6.d.ts +348 -0
  100. package/dist/zlib-dxQdgHyN.d.cts +95 -0
  101. package/dist/zlib-dxQdgHyN.d.ts +95 -0
  102. package/package.json +6 -1
  103. package/skills/pixerate-image-editor/SKILL.md +12 -36
  104. package/skills/pixerate-image-editor/references/color-management.md +37 -0
  105. package/skills/pixerate-image-editor/references/photoshop-files.md +39 -0
  106. package/skills/pixerate-vector/SKILL.md +54 -2
  107. package/dist/chunk-BLWCAQCW.js.map +0 -1
  108. package/dist/chunk-CZOXTEMN.js.map +0 -1
  109. package/dist/chunk-HNS7UHCM.js.map +0 -1
  110. package/dist/chunk-JLYX4V57.cjs +0 -2001
  111. package/dist/chunk-JLYX4V57.cjs.map +0 -1
  112. package/dist/chunk-KB2YBCVS.js +0 -2001
  113. package/dist/chunk-KB2YBCVS.js.map +0 -1
  114. package/dist/chunk-LQEEDHOP.js.map +0 -1
  115. package/dist/chunk-POGBUYWE.cjs.map +0 -1
  116. package/dist/chunk-W3GXSUSQ.cjs.map +0 -1
  117. package/dist/chunk-XIOMMGPD.cjs.map +0 -1
  118. package/dist/chunk-YGIMK4NX.cjs.map +0 -1
  119. package/dist/homography-CZ-tFjay.d.cts +0 -50
  120. package/dist/homography-Ctfjoc1b.d.ts +0 -50
  121. package/dist/warp-CWHZzE3x.d.ts +0 -118
  122. package/dist/warp-D5jz_tN7.d.cts +0 -118
  123. /package/dist/{chunk-LPYOIVLA.js.map → chunk-LKCYANMW.js.map} +0 -0
  124. /package/dist/{chunk-Z4BC6M74.js.map → chunk-UBIXVXPR.js.map} +0 -0
@@ -0,0 +1,188 @@
1
+ import { H as Homography, V as Vec2, B as Box, Q as Quad, A as AffineMatrix } from './types-CwMPoRMU.js';
2
+ import { T as TextShaper, a as TextFont } from './warp-DMN30aY6.js';
3
+
4
+ /**
5
+ * Perspective (projective) maps between quadrilaterals: Free Distort and Perspective in both the
6
+ * vector and the image editor. Pure maths; degenerate or non-finite input gives `null` instead of
7
+ * NaNs.
8
+ *
9
+ * Ported from ArtCraft (MIT OR Apache-2.0, © ArtCraft Team and contributors; see
10
+ * THIRD_PARTY_NOTICES.md): pdfcraft `crates/geom/src/perspective.rs` (`Homography::from_points`,
11
+ * `Homography::apply`, `solve8`, `order_quad`) and photocraft `crates/algo/src/transform.rs`
12
+ * (`Homography::square_to_quad`, `rect_to_quad`, `inverse`, `mul`, `local_scale`, `front_side`,
13
+ * `warp_output_bounds`, `convex_quad`).
14
+ */
15
+
16
+ /**
17
+ * Gaussian elimination with partial pivoting on an 8×8 system (the 9th column of each row is the
18
+ * right-hand side). Null when the system is singular.
19
+ */
20
+ declare function solve8(rows: readonly (readonly number[])[]): number[] | null;
21
+ /** The image of `p`, or null where the map sends it to infinity. */
22
+ declare function applyHomography(h: Homography, p: Vec2): Vec2 | null;
23
+ /**
24
+ * The projective map that takes each of `from` to the point at the same index of `to`. Null when
25
+ * three of either set are collinear or a coordinate is not finite.
26
+ */
27
+ declare function homographyFromPoints(from: readonly Vec2[], to: readonly Vec2[]): Homography | null;
28
+ /**
29
+ * Whether `h` maps the whole convex quad `quad` without sending any of it through infinity (the
30
+ * denominator keeps one sign over it): what a usable distortion needs.
31
+ */
32
+ declare function homographyKeepsQuad(h: Homography, quad: readonly Vec2[]): boolean;
33
+ /**
34
+ * The four corners in reading order for a y-down space: top-left, top-right, bottom-right,
35
+ * bottom-left, whatever order they come in. Null unless they form a convex quadrilateral with a
36
+ * non-negligible area.
37
+ */
38
+ declare function orderQuad(points: readonly Vec2[]): Vec2[] | null;
39
+ /** The inverse map, or null for a singular one. */
40
+ declare function invertHomography(m: Homography): Homography | null;
41
+ /** An affine matrix (SVG order) as a homography. */
42
+ declare function homographyFromAffine(m: AffineMatrix): Homography;
43
+ /**
44
+ * The map taking box `r`'s corners onto `quad` (TL, TR, BR, BL), exact for parallelograms (then
45
+ * affine). Null for an empty box, a non-finite or degenerate quad, or a singular result.
46
+ */
47
+ declare function rectToQuad(r: Box, quad: readonly Vec2[]): Homography | null;
48
+ /** Box `r`'s corners as a quad (TL, TR, BR, BL). */
49
+ declare function boxQuad(r: Box): Quad;
50
+
51
+ /**
52
+ * Text shapers for type layers (see `TextShaper` in `text.ts`):
53
+ *
54
+ * - `createCanvasTextShaper`: the browser's own fonts and text drawing through Canvas 2D
55
+ * (`measureText`, `fillText`). The default in browsers. It cannot give outlines.
56
+ * - `createOutlineTextShaper`: glyph outlines from font objects the host loads, typed after
57
+ * opentype.js's `Font` (`getPath`, `getAdvanceWidth`, `unitsPerEm`, …) without depending on it.
58
+ * Pure: it renders anywhere (servers, workers, tests) and makes Convert to Shape possible.
59
+ */
60
+
61
+ /** A family as it goes into a CSS `font` value: generics and lists as written, other names quoted when needed. */
62
+ declare function cssFontFamily(family: string): string;
63
+ /** The CSS `font` shorthand for a font (`italic 700 24px Inter`). */
64
+ declare function cssFont(font: TextFont, family?: string): string;
65
+ interface CanvasTextShaperOptions {
66
+ /** A 1 × 1 canvas for measuring (default an `OffscreenCanvas`, else a DOM canvas). */
67
+ createCanvas?(width: number, height: number): HTMLCanvasElement | OffscreenCanvas;
68
+ /** Family used when one is missing (default `sans-serif`). */
69
+ fallbackFamily?: string;
70
+ }
71
+ /**
72
+ * A shaper over Canvas 2D. A family is missing when text set in it measures the same as in
73
+ * both `monospace` and `serif` (the browser fell back), so web fonts must be loaded before use.
74
+ * Returns `null` where there is no 2D canvas.
75
+ */
76
+ declare function createCanvasTextShaper(options?: CanvasTextShaperOptions): TextShaper | null;
77
+ /** A path command as opentype.js returns it. */
78
+ interface OutlinePathCommand {
79
+ type: 'M' | 'L' | 'C' | 'Q' | 'Z';
80
+ x?: number;
81
+ y?: number;
82
+ x1?: number;
83
+ y1?: number;
84
+ x2?: number;
85
+ y2?: number;
86
+ }
87
+ /** The parts of an opentype.js `Font` the outline shaper uses. */
88
+ interface OutlineFontFace {
89
+ unitsPerEm: number;
90
+ ascender: number;
91
+ descender: number;
92
+ getAdvanceWidth(text: string, fontSize: number, options?: {
93
+ kerning?: boolean;
94
+ }): number;
95
+ getPath(text: string, x: number, y: number, fontSize: number, options?: {
96
+ kerning?: boolean;
97
+ }): {
98
+ commands: OutlinePathCommand[];
99
+ };
100
+ names?: {
101
+ fontFamily?: Record<string, string>;
102
+ postScriptName?: Record<string, string>;
103
+ };
104
+ tables?: {
105
+ os2?: {
106
+ usWeightClass?: number;
107
+ fsSelection?: number;
108
+ };
109
+ };
110
+ }
111
+ /** A face with its family, weight and style (read from the font's names when not given). */
112
+ interface OutlineFontEntry {
113
+ face: OutlineFontFace;
114
+ family?: string;
115
+ weight?: number;
116
+ italic?: boolean;
117
+ }
118
+ /**
119
+ * A shaper over outline fonts the host loads (opentype.js `Font` objects or anything with the same
120
+ * methods). Fonts are matched by family (case-insensitive), then the nearest weight and the
121
+ * italic flag; a missing family uses `fallback` (default the first font) and is reported missing.
122
+ */
123
+ declare function createOutlineTextShaper(fonts: ReadonlyArray<OutlineFontFace | OutlineFontEntry>, options?: {
124
+ fallback?: string;
125
+ id?: string;
126
+ }): TextShaper;
127
+ /**
128
+ * A shaper that needs no fonts: advances estimated per character class (narrow, wide, CJK), an
129
+ * ascent of 0.8 em and a descent of 0.2 em. It cannot draw or outline. Layout then runs in any
130
+ * host (servers, tests, agents without fonts) and gives stable, approximate lines; plug in a real
131
+ * shaper to match the fonts. Every family counts as available, since it cannot tell.
132
+ */
133
+ declare function createMetricTextShaper(options?: {
134
+ id?: string;
135
+ }): TextShaper;
136
+
137
+ /**
138
+ * A small OpenType reader: enough of a font file to set Latin, Cyrillic, Greek and CJK text as
139
+ * outlines without a third-party library. It reads TrueType (`glyf`) and CFF (`CFF `, CID-keyed
140
+ * included) outlines, `cmap` (formats 4 and 12), horizontal metrics, `kern` (format 0) and `GPOS`
141
+ * pair kerning (lookup type 2, formats 1 and 2, the `kern` feature), and the family, PostScript
142
+ * name, weight and style. It does not apply `GSUB` (ligatures, contextual forms) or complex-script
143
+ * shaping, so Arabic, Indic and similar scripts set as isolated glyphs.
144
+ *
145
+ * The result has the shape of opentype.js's `Font` that `createOutlineTextShaper` takes, so hosts
146
+ * can pass either. Written from the OpenType specification (TrueType glyph outlines, the CFF
147
+ * specification and the Type 2 charstring format), not ported.
148
+ */
149
+
150
+ /** A parsed font, usable as an `OutlineFontFace`. */
151
+ interface OpenTypeFont extends OutlineFontFace {
152
+ /** The family name (typographic family when the font has one). */
153
+ readonly family: string;
154
+ /** The subfamily ("Bold Italic"). */
155
+ readonly style: string;
156
+ readonly postScriptName: string;
157
+ readonly weight: number;
158
+ readonly italic: boolean;
159
+ readonly numGlyphs: number;
160
+ /** `glyf` (TrueType quadratic outlines) or `cff` (cubic). */
161
+ readonly outlines: 'glyf' | 'cff';
162
+ /** The glyph for a code point (0, `.notdef`, when the font lacks it). */
163
+ glyphIndex(codePoint: number): number;
164
+ /** A glyph's advance in font units. */
165
+ advance(glyph: number): number;
166
+ /** Kerning between two glyphs in font units (negative pulls them together). */
167
+ kerning(left: number, right: number): number;
168
+ /** A glyph's outline in font units, y up, origin on the baseline. */
169
+ glyphPath(glyph: number): OutlinePathCommand[];
170
+ }
171
+ /**
172
+ * Reads a TrueType or OpenType font (`.ttf`, `.otf`, or face `index` of a `.ttc` collection).
173
+ * Throws with the reason when the file is not one, or lacks the tables layout needs. For WOFF files
174
+ * use `loadOpenTypeFont`.
175
+ */
176
+ declare function parseOpenTypeFont(data: ArrayBuffer | ArrayBufferView, options?: {
177
+ index?: number;
178
+ }): OpenTypeFont;
179
+ /**
180
+ * Reads a font file: TrueType, OpenType, a collection (`index`) or WOFF 1.0 (decompressed with the
181
+ * platform's `DecompressionStream`). WOFF2 needs Brotli, which browsers do not expose, so it is
182
+ * refused with a hint.
183
+ */
184
+ declare function loadOpenTypeFont(data: ArrayBuffer | ArrayBufferView | Blob, options?: {
185
+ index?: number;
186
+ }): Promise<OpenTypeFont>;
187
+
188
+ export { type CanvasTextShaperOptions as C, type OpenTypeFont as O, type OutlineFontEntry as a, type OutlineFontFace as b, type OutlinePathCommand as c, applyHomography as d, createCanvasTextShaper as e, createMetricTextShaper as f, createOutlineTextShaper as g, cssFontFamily as h, homographyFromPoints as i, homographyKeepsQuad as j, boxQuad as k, loadOpenTypeFont as l, cssFont as m, homographyFromAffine as n, orderQuad as o, parseOpenTypeFont as p, invertHomography as q, rectToQuad as r, solve8 as s };
@@ -0,0 +1,188 @@
1
+ import { H as Homography, V as Vec2, B as Box, Q as Quad, A as AffineMatrix } from './types-CwMPoRMU.cjs';
2
+ import { T as TextShaper, a as TextFont } from './warp-B39VsOtd.cjs';
3
+
4
+ /**
5
+ * Perspective (projective) maps between quadrilaterals: Free Distort and Perspective in both the
6
+ * vector and the image editor. Pure maths; degenerate or non-finite input gives `null` instead of
7
+ * NaNs.
8
+ *
9
+ * Ported from ArtCraft (MIT OR Apache-2.0, © ArtCraft Team and contributors; see
10
+ * THIRD_PARTY_NOTICES.md): pdfcraft `crates/geom/src/perspective.rs` (`Homography::from_points`,
11
+ * `Homography::apply`, `solve8`, `order_quad`) and photocraft `crates/algo/src/transform.rs`
12
+ * (`Homography::square_to_quad`, `rect_to_quad`, `inverse`, `mul`, `local_scale`, `front_side`,
13
+ * `warp_output_bounds`, `convex_quad`).
14
+ */
15
+
16
+ /**
17
+ * Gaussian elimination with partial pivoting on an 8×8 system (the 9th column of each row is the
18
+ * right-hand side). Null when the system is singular.
19
+ */
20
+ declare function solve8(rows: readonly (readonly number[])[]): number[] | null;
21
+ /** The image of `p`, or null where the map sends it to infinity. */
22
+ declare function applyHomography(h: Homography, p: Vec2): Vec2 | null;
23
+ /**
24
+ * The projective map that takes each of `from` to the point at the same index of `to`. Null when
25
+ * three of either set are collinear or a coordinate is not finite.
26
+ */
27
+ declare function homographyFromPoints(from: readonly Vec2[], to: readonly Vec2[]): Homography | null;
28
+ /**
29
+ * Whether `h` maps the whole convex quad `quad` without sending any of it through infinity (the
30
+ * denominator keeps one sign over it): what a usable distortion needs.
31
+ */
32
+ declare function homographyKeepsQuad(h: Homography, quad: readonly Vec2[]): boolean;
33
+ /**
34
+ * The four corners in reading order for a y-down space: top-left, top-right, bottom-right,
35
+ * bottom-left, whatever order they come in. Null unless they form a convex quadrilateral with a
36
+ * non-negligible area.
37
+ */
38
+ declare function orderQuad(points: readonly Vec2[]): Vec2[] | null;
39
+ /** The inverse map, or null for a singular one. */
40
+ declare function invertHomography(m: Homography): Homography | null;
41
+ /** An affine matrix (SVG order) as a homography. */
42
+ declare function homographyFromAffine(m: AffineMatrix): Homography;
43
+ /**
44
+ * The map taking box `r`'s corners onto `quad` (TL, TR, BR, BL), exact for parallelograms (then
45
+ * affine). Null for an empty box, a non-finite or degenerate quad, or a singular result.
46
+ */
47
+ declare function rectToQuad(r: Box, quad: readonly Vec2[]): Homography | null;
48
+ /** Box `r`'s corners as a quad (TL, TR, BR, BL). */
49
+ declare function boxQuad(r: Box): Quad;
50
+
51
+ /**
52
+ * Text shapers for type layers (see `TextShaper` in `text.ts`):
53
+ *
54
+ * - `createCanvasTextShaper`: the browser's own fonts and text drawing through Canvas 2D
55
+ * (`measureText`, `fillText`). The default in browsers. It cannot give outlines.
56
+ * - `createOutlineTextShaper`: glyph outlines from font objects the host loads, typed after
57
+ * opentype.js's `Font` (`getPath`, `getAdvanceWidth`, `unitsPerEm`, …) without depending on it.
58
+ * Pure: it renders anywhere (servers, workers, tests) and makes Convert to Shape possible.
59
+ */
60
+
61
+ /** A family as it goes into a CSS `font` value: generics and lists as written, other names quoted when needed. */
62
+ declare function cssFontFamily(family: string): string;
63
+ /** The CSS `font` shorthand for a font (`italic 700 24px Inter`). */
64
+ declare function cssFont(font: TextFont, family?: string): string;
65
+ interface CanvasTextShaperOptions {
66
+ /** A 1 × 1 canvas for measuring (default an `OffscreenCanvas`, else a DOM canvas). */
67
+ createCanvas?(width: number, height: number): HTMLCanvasElement | OffscreenCanvas;
68
+ /** Family used when one is missing (default `sans-serif`). */
69
+ fallbackFamily?: string;
70
+ }
71
+ /**
72
+ * A shaper over Canvas 2D. A family is missing when text set in it measures the same as in
73
+ * both `monospace` and `serif` (the browser fell back), so web fonts must be loaded before use.
74
+ * Returns `null` where there is no 2D canvas.
75
+ */
76
+ declare function createCanvasTextShaper(options?: CanvasTextShaperOptions): TextShaper | null;
77
+ /** A path command as opentype.js returns it. */
78
+ interface OutlinePathCommand {
79
+ type: 'M' | 'L' | 'C' | 'Q' | 'Z';
80
+ x?: number;
81
+ y?: number;
82
+ x1?: number;
83
+ y1?: number;
84
+ x2?: number;
85
+ y2?: number;
86
+ }
87
+ /** The parts of an opentype.js `Font` the outline shaper uses. */
88
+ interface OutlineFontFace {
89
+ unitsPerEm: number;
90
+ ascender: number;
91
+ descender: number;
92
+ getAdvanceWidth(text: string, fontSize: number, options?: {
93
+ kerning?: boolean;
94
+ }): number;
95
+ getPath(text: string, x: number, y: number, fontSize: number, options?: {
96
+ kerning?: boolean;
97
+ }): {
98
+ commands: OutlinePathCommand[];
99
+ };
100
+ names?: {
101
+ fontFamily?: Record<string, string>;
102
+ postScriptName?: Record<string, string>;
103
+ };
104
+ tables?: {
105
+ os2?: {
106
+ usWeightClass?: number;
107
+ fsSelection?: number;
108
+ };
109
+ };
110
+ }
111
+ /** A face with its family, weight and style (read from the font's names when not given). */
112
+ interface OutlineFontEntry {
113
+ face: OutlineFontFace;
114
+ family?: string;
115
+ weight?: number;
116
+ italic?: boolean;
117
+ }
118
+ /**
119
+ * A shaper over outline fonts the host loads (opentype.js `Font` objects or anything with the same
120
+ * methods). Fonts are matched by family (case-insensitive), then the nearest weight and the
121
+ * italic flag; a missing family uses `fallback` (default the first font) and is reported missing.
122
+ */
123
+ declare function createOutlineTextShaper(fonts: ReadonlyArray<OutlineFontFace | OutlineFontEntry>, options?: {
124
+ fallback?: string;
125
+ id?: string;
126
+ }): TextShaper;
127
+ /**
128
+ * A shaper that needs no fonts: advances estimated per character class (narrow, wide, CJK), an
129
+ * ascent of 0.8 em and a descent of 0.2 em. It cannot draw or outline. Layout then runs in any
130
+ * host (servers, tests, agents without fonts) and gives stable, approximate lines; plug in a real
131
+ * shaper to match the fonts. Every family counts as available, since it cannot tell.
132
+ */
133
+ declare function createMetricTextShaper(options?: {
134
+ id?: string;
135
+ }): TextShaper;
136
+
137
+ /**
138
+ * A small OpenType reader: enough of a font file to set Latin, Cyrillic, Greek and CJK text as
139
+ * outlines without a third-party library. It reads TrueType (`glyf`) and CFF (`CFF `, CID-keyed
140
+ * included) outlines, `cmap` (formats 4 and 12), horizontal metrics, `kern` (format 0) and `GPOS`
141
+ * pair kerning (lookup type 2, formats 1 and 2, the `kern` feature), and the family, PostScript
142
+ * name, weight and style. It does not apply `GSUB` (ligatures, contextual forms) or complex-script
143
+ * shaping, so Arabic, Indic and similar scripts set as isolated glyphs.
144
+ *
145
+ * The result has the shape of opentype.js's `Font` that `createOutlineTextShaper` takes, so hosts
146
+ * can pass either. Written from the OpenType specification (TrueType glyph outlines, the CFF
147
+ * specification and the Type 2 charstring format), not ported.
148
+ */
149
+
150
+ /** A parsed font, usable as an `OutlineFontFace`. */
151
+ interface OpenTypeFont extends OutlineFontFace {
152
+ /** The family name (typographic family when the font has one). */
153
+ readonly family: string;
154
+ /** The subfamily ("Bold Italic"). */
155
+ readonly style: string;
156
+ readonly postScriptName: string;
157
+ readonly weight: number;
158
+ readonly italic: boolean;
159
+ readonly numGlyphs: number;
160
+ /** `glyf` (TrueType quadratic outlines) or `cff` (cubic). */
161
+ readonly outlines: 'glyf' | 'cff';
162
+ /** The glyph for a code point (0, `.notdef`, when the font lacks it). */
163
+ glyphIndex(codePoint: number): number;
164
+ /** A glyph's advance in font units. */
165
+ advance(glyph: number): number;
166
+ /** Kerning between two glyphs in font units (negative pulls them together). */
167
+ kerning(left: number, right: number): number;
168
+ /** A glyph's outline in font units, y up, origin on the baseline. */
169
+ glyphPath(glyph: number): OutlinePathCommand[];
170
+ }
171
+ /**
172
+ * Reads a TrueType or OpenType font (`.ttf`, `.otf`, or face `index` of a `.ttc` collection).
173
+ * Throws with the reason when the file is not one, or lacks the tables layout needs. For WOFF files
174
+ * use `loadOpenTypeFont`.
175
+ */
176
+ declare function parseOpenTypeFont(data: ArrayBuffer | ArrayBufferView, options?: {
177
+ index?: number;
178
+ }): OpenTypeFont;
179
+ /**
180
+ * Reads a font file: TrueType, OpenType, a collection (`index`) or WOFF 1.0 (decompressed with the
181
+ * platform's `DecompressionStream`). WOFF2 needs Brotli, which browsers do not expose, so it is
182
+ * refused with a hint.
183
+ */
184
+ declare function loadOpenTypeFont(data: ArrayBuffer | ArrayBufferView | Blob, options?: {
185
+ index?: number;
186
+ }): Promise<OpenTypeFont>;
187
+
188
+ export { type CanvasTextShaperOptions as C, type OpenTypeFont as O, type OutlineFontEntry as a, type OutlineFontFace as b, type OutlinePathCommand as c, applyHomography as d, createCanvasTextShaper as e, createMetricTextShaper as f, createOutlineTextShaper as g, cssFontFamily as h, homographyFromPoints as i, homographyKeepsQuad as j, boxQuad as k, loadOpenTypeFont as l, cssFont as m, homographyFromAffine as n, orderQuad as o, parseOpenTypeFont as p, invertHomography as q, rectToQuad as r, solve8 as s };
@@ -28,7 +28,7 @@
28
28
 
29
29
 
30
30
 
31
- var _chunk4KLT7ZYScjs = require('../chunk-4KLT7ZYS.cjs');
31
+ var _chunkDFQEX3AMcjs = require('../chunk-DFQEX3AM.cjs');
32
32
 
33
33
 
34
34
 
@@ -68,7 +68,7 @@ var _chunk4KLT7ZYScjs = require('../chunk-4KLT7ZYS.cjs');
68
68
 
69
69
 
70
70
 
71
- var _chunk7VOHOPLWcjs = require('../chunk-7VOHOPLW.cjs');
71
+ var _chunkTCKIXI46cjs = require('../chunk-TCKIXI46.cjs');
72
72
 
73
73
 
74
74
 
@@ -81,7 +81,7 @@ var _chunk7VOHOPLWcjs = require('../chunk-7VOHOPLW.cjs');
81
81
 
82
82
 
83
83
 
84
- var _chunkXIOMMGPDcjs = require('../chunk-XIOMMGPD.cjs');
84
+ var _chunkTFOPHZ3Ucjs = require('../chunk-TFOPHZ3U.cjs');
85
85
 
86
86
 
87
87
 
@@ -161,5 +161,5 @@ var _chunkXIOMMGPDcjs = require('../chunk-XIOMMGPD.cjs');
161
161
 
162
162
 
163
163
 
164
- exports.CoverageMap = _chunk7VOHOPLWcjs.CoverageMap; exports.DEFAULT_BLENDER = _chunk7VOHOPLWcjs.DEFAULT_BLENDER; exports.DEFAULT_BRUSH = _chunk7VOHOPLWcjs.DEFAULT_BRUSH; exports.DEFAULT_MIXER = _chunk7VOHOPLWcjs.DEFAULT_MIXER; exports.DEFAULT_RETOUCH = _chunk4KLT7ZYScjs.DEFAULT_RETOUCH; exports.DEFAULT_SMUDGE = _chunk7VOHOPLWcjs.DEFAULT_SMUDGE; exports.DabWalker = _chunk7VOHOPLWcjs.DabWalker; exports.EMPTY_MIXER_LOAD = _chunk7VOHOPLWcjs.EMPTY_MIXER_LOAD; exports.MAX_BRUSH_SIZE = _chunk7VOHOPLWcjs.MAX_BRUSH_SIZE; exports.MIXER_DRAIN = _chunk7VOHOPLWcjs.MIXER_DRAIN; exports.MIXER_PICKUP_RATE = _chunk7VOHOPLWcjs.MIXER_PICKUP_RATE; exports.MIXING_MODELS = _chunk7VOHOPLWcjs.MIXING_MODELS; exports.MixerStroke = _chunk7VOHOPLWcjs.MixerStroke; exports.PIGMENT_BANDS = _chunkXIOMMGPDcjs.PIGMENT_BANDS; exports.PIGMENT_LAMBDA_MIN = _chunkXIOMMGPDcjs.PIGMENT_LAMBDA_MIN; exports.PIGMENT_LAMBDA_STEP = _chunkXIOMMGPDcjs.PIGMENT_LAMBDA_STEP; exports.PIGMENT_WAVELENGTHS = _chunkXIOMMGPDcjs.PIGMENT_WAVELENGTHS; exports.PaintExchange = _chunk7VOHOPLWcjs.PaintExchange; exports.RETOUCH_SAMPLES = _chunk4KLT7ZYScjs.RETOUCH_SAMPLES; exports.RegionPixelSource = _chunk4KLT7ZYScjs.RegionPixelSource; exports.RetouchDabStroke = _chunk4KLT7ZYScjs.RetouchDabStroke; exports.SPOT_HEAL_TYPES = _chunk4KLT7ZYScjs.SPOT_HEAL_TYPES; exports.SmudgeTip = _chunk7VOHOPLWcjs.SmudgeTip; exports.StrokeCoverage = _chunk7VOHOPLWcjs.StrokeCoverage; exports.TONE_RANGES = _chunk4KLT7ZYScjs.TONE_RANGES; exports.TileMedium = _chunk7VOHOPLWcjs.TileMedium; exports.TilePixelSource = _chunk4KLT7ZYScjs.TilePixelSource; exports.applyRetouchToTile = _chunk4KLT7ZYScjs.applyRetouchToTile; exports.applyStrokeToTile = _chunk7VOHOPLWcjs.applyStrokeToTile; exports.bestOffset = _chunk4KLT7ZYScjs.bestOffset; exports.blendRadius = _chunk7VOHOPLWcjs.blendRadius; exports.blenderDab = _chunk7VOHOPLWcjs.blenderDab; exports.cleanMixer = _chunk7VOHOPLWcjs.cleanMixer; exports.coverageTileCoord = _chunk7VOHOPLWcjs.coverageTileCoord; exports.createBlenderScratch = _chunk7VOHOPLWcjs.createBlenderScratch; exports.createPigment = _chunkXIOMMGPDcjs.createPigment; exports.createPigmentTools = _chunk7VOHOPLWcjs.createPigmentTools; exports.dabCoverage = _chunk7VOHOPLWcjs.dabCoverage; exports.dabRect = _chunk7VOHOPLWcjs.dabRect; exports.dilateMask = _chunk4KLT7ZYScjs.dilateMask; exports.dodgeBurn = _chunk4KLT7ZYScjs.dodgeBurn; exports.dodgeBurnCurve = _chunk4KLT7ZYScjs.dodgeBurnCurve; exports.exchangeRates = _chunk7VOHOPLWcjs.exchangeRates; exports.healPixels = _chunk4KLT7ZYScjs.healPixels; exports.lerpPigment = _chunkXIOMMGPDcjs.lerpPigment; exports.lerpPigmentInto = _chunkXIOMMGPDcjs.lerpPigmentInto; exports.loadMixer = _chunk7VOHOPLWcjs.loadMixer; exports.luma = _chunk4KLT7ZYScjs.luma; exports.maskBounds = _chunk4KLT7ZYScjs.maskBounds; exports.membraneFill = _chunk4KLT7ZYScjs.membraneFill; exports.mixPigments = _chunkXIOMMGPDcjs.mixPigments; exports.mixerRates = _chunk7VOHOPLWcjs.mixerRates; exports.normalizeBlender = _chunk7VOHOPLWcjs.normalizeBlender; exports.normalizeBrush = _chunk7VOHOPLWcjs.normalizeBrush; exports.normalizeMixer = _chunk7VOHOPLWcjs.normalizeMixer; exports.normalizeRetouch = _chunk4KLT7ZYScjs.normalizeRetouch; exports.normalizeSmudge = _chunk7VOHOPLWcjs.normalizeSmudge; exports.perDabStrength = _chunk4KLT7ZYScjs.perDabStrength; exports.rasterizeDab = _chunk7VOHOPLWcjs.rasterizeDab; exports.readSourceRegion = _chunk4KLT7ZYScjs.readSourceRegion; exports.reflectanceToRgb = _chunkXIOMMGPDcjs.reflectanceToRgb; exports.rgbToReflectance = _chunkXIOMMGPDcjs.rgbToReflectance; exports.rgbaViewOfGrey = _chunk4KLT7ZYScjs.rgbaViewOfGrey; exports.saturationOf = _chunk4KLT7ZYScjs.saturationOf; exports.seamlessClone = _chunk4KLT7ZYScjs.seamlessClone; exports.setPigmentColor = _chunkXIOMMGPDcjs.setPigmentColor; exports.smoothPoints = _chunk7VOHOPLWcjs.smoothPoints; exports.smudgeEffect = _chunk4KLT7ZYScjs.smudgeEffect; exports.solveMembrane = _chunk4KLT7ZYScjs.solveMembrane; exports.sponge = _chunk4KLT7ZYScjs.sponge; exports.spongeEffect = _chunk4KLT7ZYScjs.spongeEffect; exports.spotHealPixels = _chunk4KLT7ZYScjs.spotHealPixels; exports.spotHealWindow = _chunk4KLT7ZYScjs.spotHealWindow; exports.tipFalloff = _chunk7VOHOPLWcjs.tipFalloff; exports.tipReach = _chunk7VOHOPLWcjs.tipReach; exports.tipShape = _chunk7VOHOPLWcjs.tipShape; exports.toneOf = _chunk4KLT7ZYScjs.toneOf; exports.walkDabs = _chunk7VOHOPLWcjs.walkDabs;
164
+ exports.CoverageMap = _chunkTCKIXI46cjs.CoverageMap; exports.DEFAULT_BLENDER = _chunkTCKIXI46cjs.DEFAULT_BLENDER; exports.DEFAULT_BRUSH = _chunkTCKIXI46cjs.DEFAULT_BRUSH; exports.DEFAULT_MIXER = _chunkTCKIXI46cjs.DEFAULT_MIXER; exports.DEFAULT_RETOUCH = _chunkDFQEX3AMcjs.DEFAULT_RETOUCH; exports.DEFAULT_SMUDGE = _chunkTCKIXI46cjs.DEFAULT_SMUDGE; exports.DabWalker = _chunkTCKIXI46cjs.DabWalker; exports.EMPTY_MIXER_LOAD = _chunkTCKIXI46cjs.EMPTY_MIXER_LOAD; exports.MAX_BRUSH_SIZE = _chunkTCKIXI46cjs.MAX_BRUSH_SIZE; exports.MIXER_DRAIN = _chunkTCKIXI46cjs.MIXER_DRAIN; exports.MIXER_PICKUP_RATE = _chunkTCKIXI46cjs.MIXER_PICKUP_RATE; exports.MIXING_MODELS = _chunkTCKIXI46cjs.MIXING_MODELS; exports.MixerStroke = _chunkTCKIXI46cjs.MixerStroke; exports.PIGMENT_BANDS = _chunkTFOPHZ3Ucjs.PIGMENT_BANDS; exports.PIGMENT_LAMBDA_MIN = _chunkTFOPHZ3Ucjs.PIGMENT_LAMBDA_MIN; exports.PIGMENT_LAMBDA_STEP = _chunkTFOPHZ3Ucjs.PIGMENT_LAMBDA_STEP; exports.PIGMENT_WAVELENGTHS = _chunkTFOPHZ3Ucjs.PIGMENT_WAVELENGTHS; exports.PaintExchange = _chunkTCKIXI46cjs.PaintExchange; exports.RETOUCH_SAMPLES = _chunkDFQEX3AMcjs.RETOUCH_SAMPLES; exports.RegionPixelSource = _chunkDFQEX3AMcjs.RegionPixelSource; exports.RetouchDabStroke = _chunkDFQEX3AMcjs.RetouchDabStroke; exports.SPOT_HEAL_TYPES = _chunkDFQEX3AMcjs.SPOT_HEAL_TYPES; exports.SmudgeTip = _chunkTCKIXI46cjs.SmudgeTip; exports.StrokeCoverage = _chunkTCKIXI46cjs.StrokeCoverage; exports.TONE_RANGES = _chunkDFQEX3AMcjs.TONE_RANGES; exports.TileMedium = _chunkTCKIXI46cjs.TileMedium; exports.TilePixelSource = _chunkDFQEX3AMcjs.TilePixelSource; exports.applyRetouchToTile = _chunkDFQEX3AMcjs.applyRetouchToTile; exports.applyStrokeToTile = _chunkTCKIXI46cjs.applyStrokeToTile; exports.bestOffset = _chunkDFQEX3AMcjs.bestOffset; exports.blendRadius = _chunkTCKIXI46cjs.blendRadius; exports.blenderDab = _chunkTCKIXI46cjs.blenderDab; exports.cleanMixer = _chunkTCKIXI46cjs.cleanMixer; exports.coverageTileCoord = _chunkTCKIXI46cjs.coverageTileCoord; exports.createBlenderScratch = _chunkTCKIXI46cjs.createBlenderScratch; exports.createPigment = _chunkTFOPHZ3Ucjs.createPigment; exports.createPigmentTools = _chunkTCKIXI46cjs.createPigmentTools; exports.dabCoverage = _chunkTCKIXI46cjs.dabCoverage; exports.dabRect = _chunkTCKIXI46cjs.dabRect; exports.dilateMask = _chunkDFQEX3AMcjs.dilateMask; exports.dodgeBurn = _chunkDFQEX3AMcjs.dodgeBurn; exports.dodgeBurnCurve = _chunkDFQEX3AMcjs.dodgeBurnCurve; exports.exchangeRates = _chunkTCKIXI46cjs.exchangeRates; exports.healPixels = _chunkDFQEX3AMcjs.healPixels; exports.lerpPigment = _chunkTFOPHZ3Ucjs.lerpPigment; exports.lerpPigmentInto = _chunkTFOPHZ3Ucjs.lerpPigmentInto; exports.loadMixer = _chunkTCKIXI46cjs.loadMixer; exports.luma = _chunkDFQEX3AMcjs.luma; exports.maskBounds = _chunkDFQEX3AMcjs.maskBounds; exports.membraneFill = _chunkDFQEX3AMcjs.membraneFill; exports.mixPigments = _chunkTFOPHZ3Ucjs.mixPigments; exports.mixerRates = _chunkTCKIXI46cjs.mixerRates; exports.normalizeBlender = _chunkTCKIXI46cjs.normalizeBlender; exports.normalizeBrush = _chunkTCKIXI46cjs.normalizeBrush; exports.normalizeMixer = _chunkTCKIXI46cjs.normalizeMixer; exports.normalizeRetouch = _chunkDFQEX3AMcjs.normalizeRetouch; exports.normalizeSmudge = _chunkTCKIXI46cjs.normalizeSmudge; exports.perDabStrength = _chunkDFQEX3AMcjs.perDabStrength; exports.rasterizeDab = _chunkTCKIXI46cjs.rasterizeDab; exports.readSourceRegion = _chunkDFQEX3AMcjs.readSourceRegion; exports.reflectanceToRgb = _chunkTFOPHZ3Ucjs.reflectanceToRgb; exports.rgbToReflectance = _chunkTFOPHZ3Ucjs.rgbToReflectance; exports.rgbaViewOfGrey = _chunkDFQEX3AMcjs.rgbaViewOfGrey; exports.saturationOf = _chunkDFQEX3AMcjs.saturationOf; exports.seamlessClone = _chunkDFQEX3AMcjs.seamlessClone; exports.setPigmentColor = _chunkTFOPHZ3Ucjs.setPigmentColor; exports.smoothPoints = _chunkTCKIXI46cjs.smoothPoints; exports.smudgeEffect = _chunkDFQEX3AMcjs.smudgeEffect; exports.solveMembrane = _chunkDFQEX3AMcjs.solveMembrane; exports.sponge = _chunkDFQEX3AMcjs.sponge; exports.spongeEffect = _chunkDFQEX3AMcjs.spongeEffect; exports.spotHealPixels = _chunkDFQEX3AMcjs.spotHealPixels; exports.spotHealWindow = _chunkDFQEX3AMcjs.spotHealWindow; exports.tipFalloff = _chunkTCKIXI46cjs.tipFalloff; exports.tipReach = _chunkTCKIXI46cjs.tipReach; exports.tipShape = _chunkTCKIXI46cjs.tipShape; exports.toneOf = _chunkDFQEX3AMcjs.toneOf; exports.walkDabs = _chunkTCKIXI46cjs.walkDabs;
165
165
  //# sourceMappingURL=index.cjs.map
@@ -1,5 +1,5 @@
1
- export { m as BlenderScratch, b as BlenderSettings, B as BrushSettings, C as CoverageMap, n as DEFAULT_BLENDER, o as DEFAULT_BRUSH, p as DEFAULT_MIXER, q as DEFAULT_RETOUCH, r as DEFAULT_SMUDGE, D as Dab, s as DabWalker, E as EMPTY_MIXER_LOAD, t as ExchangeRates, e as MAX_BRUSH_SIZE, u as MIXER_DRAIN, v as MIXER_PICKUP_RATE, w as MIXING_MODELS, d as MixerLoad, M as MixerSettings, i as MixerStroke, h as MixerTarget, a as MixingModel, x as PaintExchange, y as PaintMedium, z as PaintSample, P as PaintTileTarget, A as PixelSource, F as RETOUCH_SAMPLES, G as RegionPixelSource, j as RetouchApply, H as RetouchDabEffect, I as RetouchDabStroke, k as RetouchPaint, J as RetouchSample, f as RetouchSettings, R as RgbTriple, K as SPOT_HEAL_TYPES, L as SmudgeDab, S as SmudgeSettings, N as SmudgeTip, O as SpotHealType, l as StrokeApply, g as StrokeCoverage, c as StrokePoint, T as TONE_RANGES, Q as TileMedium, U as TileMediumOptions, V as TilePixelSource, W as ToneRange, X as applyRetouchToTile, Y as applyStrokeToTile, Z as blendRadius, _ as blenderDab, $ as cleanMixer, a0 as coverageTileCoord, a1 as createBlenderScratch, a2 as dabCoverage, a3 as dabRect, a4 as dodgeBurn, a5 as dodgeBurnCurve, a6 as exchangeRates, a7 as healPixels, a8 as loadMixer, a9 as luma, aa as mixerRates, ab as normalizeBlender, ac as normalizeBrush, ad as normalizeMixer, ae as normalizeRetouch, af as normalizeSmudge, ag as perDabStrength, ah as rasterizeDab, ai as readSourceRegion, aj as rgbaViewOfGrey, ak as saturationOf, al as smoothPoints, am as smudgeEffect, an as sponge, ao as spongeEffect, ap as spotHealPixels, aq as spotHealWindow, ar as tipFalloff, as as tipReach, at as tipShape, au as toneOf, av as walkDabs } from '../retouch-CEIKR22W.cjs';
2
- export { h as PIGMENT_BANDS, j as PIGMENT_LAMBDA_MIN, k as PIGMENT_LAMBDA_STEP, l as PIGMENT_WAVELENGTHS, P as Pigment, m as PigmentOptions, n as PigmentRgb, D as createPigment, I as lerpPigment, J as lerpPigmentInto, N as mixPigments, X as reflectanceToRgb, Y as rgbToReflectance, _ as setPigmentColor } from '../surface-C8RRg_Bh.cjs';
1
+ export { m as BlenderScratch, b as BlenderSettings, B as BrushSettings, C as CoverageMap, n as DEFAULT_BLENDER, o as DEFAULT_BRUSH, p as DEFAULT_MIXER, q as DEFAULT_RETOUCH, r as DEFAULT_SMUDGE, D as Dab, s as DabWalker, E as EMPTY_MIXER_LOAD, t as ExchangeRates, e as MAX_BRUSH_SIZE, u as MIXER_DRAIN, v as MIXER_PICKUP_RATE, w as MIXING_MODELS, d as MixerLoad, M as MixerSettings, i as MixerStroke, h as MixerTarget, a as MixingModel, x as PaintExchange, y as PaintMedium, z as PaintSample, P as PaintTileTarget, A as PixelSource, F as RETOUCH_SAMPLES, G as RegionPixelSource, j as RetouchApply, H as RetouchDabEffect, I as RetouchDabStroke, k as RetouchPaint, J as RetouchSample, f as RetouchSettings, R as RgbTriple, K as SPOT_HEAL_TYPES, L as SmudgeDab, S as SmudgeSettings, N as SmudgeTip, O as SpotHealType, l as StrokeApply, g as StrokeCoverage, c as StrokePoint, T as TONE_RANGES, Q as TileMedium, U as TileMediumOptions, V as TilePixelSource, W as ToneRange, X as applyRetouchToTile, Y as applyStrokeToTile, Z as blendRadius, _ as blenderDab, $ as cleanMixer, a0 as coverageTileCoord, a1 as createBlenderScratch, a2 as dabCoverage, a3 as dabRect, a4 as dodgeBurn, a5 as dodgeBurnCurve, a6 as exchangeRates, a7 as healPixels, a8 as loadMixer, a9 as luma, aa as mixerRates, ab as normalizeBlender, ac as normalizeBrush, ad as normalizeMixer, ae as normalizeRetouch, af as normalizeSmudge, ag as perDabStrength, ah as rasterizeDab, ai as readSourceRegion, aj as rgbaViewOfGrey, ak as saturationOf, al as smoothPoints, am as smudgeEffect, an as sponge, ao as spongeEffect, ap as spotHealPixels, aq as spotHealWindow, ar as tipFalloff, as as tipReach, at as tipShape, au as toneOf, av as walkDabs } from '../retouch-Bxkuc0KH.cjs';
2
+ export { Z as PIGMENT_BANDS, _ as PIGMENT_LAMBDA_MIN, $ as PIGMENT_LAMBDA_STEP, a0 as PIGMENT_WAVELENGTHS, Y as Pigment, a1 as PigmentOptions, a2 as PigmentRgb, a3 as createPigment, a4 as lerpPigment, a5 as lerpPigmentInto, a6 as mixPigments, a7 as reflectanceToRgb, a8 as rgbToReflectance, a9 as setPigmentColor } from '../surface-Cn30xIV6.cjs';
3
3
  import { A as AgentTool } from '../registry-BqA1AZt0.cjs';
4
4
  import '../schema-Di0CS6Pe.cjs';
5
5
 
@@ -1,5 +1,5 @@
1
- export { m as BlenderScratch, b as BlenderSettings, B as BrushSettings, C as CoverageMap, n as DEFAULT_BLENDER, o as DEFAULT_BRUSH, p as DEFAULT_MIXER, q as DEFAULT_RETOUCH, r as DEFAULT_SMUDGE, D as Dab, s as DabWalker, E as EMPTY_MIXER_LOAD, t as ExchangeRates, e as MAX_BRUSH_SIZE, u as MIXER_DRAIN, v as MIXER_PICKUP_RATE, w as MIXING_MODELS, d as MixerLoad, M as MixerSettings, i as MixerStroke, h as MixerTarget, a as MixingModel, x as PaintExchange, y as PaintMedium, z as PaintSample, P as PaintTileTarget, A as PixelSource, F as RETOUCH_SAMPLES, G as RegionPixelSource, j as RetouchApply, H as RetouchDabEffect, I as RetouchDabStroke, k as RetouchPaint, J as RetouchSample, f as RetouchSettings, R as RgbTriple, K as SPOT_HEAL_TYPES, L as SmudgeDab, S as SmudgeSettings, N as SmudgeTip, O as SpotHealType, l as StrokeApply, g as StrokeCoverage, c as StrokePoint, T as TONE_RANGES, Q as TileMedium, U as TileMediumOptions, V as TilePixelSource, W as ToneRange, X as applyRetouchToTile, Y as applyStrokeToTile, Z as blendRadius, _ as blenderDab, $ as cleanMixer, a0 as coverageTileCoord, a1 as createBlenderScratch, a2 as dabCoverage, a3 as dabRect, a4 as dodgeBurn, a5 as dodgeBurnCurve, a6 as exchangeRates, a7 as healPixels, a8 as loadMixer, a9 as luma, aa as mixerRates, ab as normalizeBlender, ac as normalizeBrush, ad as normalizeMixer, ae as normalizeRetouch, af as normalizeSmudge, ag as perDabStrength, ah as rasterizeDab, ai as readSourceRegion, aj as rgbaViewOfGrey, ak as saturationOf, al as smoothPoints, am as smudgeEffect, an as sponge, ao as spongeEffect, ap as spotHealPixels, aq as spotHealWindow, ar as tipFalloff, as as tipReach, at as tipShape, au as toneOf, av as walkDabs } from '../retouch-BXmeSCaB.js';
2
- export { h as PIGMENT_BANDS, j as PIGMENT_LAMBDA_MIN, k as PIGMENT_LAMBDA_STEP, l as PIGMENT_WAVELENGTHS, P as Pigment, m as PigmentOptions, n as PigmentRgb, D as createPigment, I as lerpPigment, J as lerpPigmentInto, N as mixPigments, X as reflectanceToRgb, Y as rgbToReflectance, _ as setPigmentColor } from '../surface-C8RRg_Bh.js';
1
+ export { m as BlenderScratch, b as BlenderSettings, B as BrushSettings, C as CoverageMap, n as DEFAULT_BLENDER, o as DEFAULT_BRUSH, p as DEFAULT_MIXER, q as DEFAULT_RETOUCH, r as DEFAULT_SMUDGE, D as Dab, s as DabWalker, E as EMPTY_MIXER_LOAD, t as ExchangeRates, e as MAX_BRUSH_SIZE, u as MIXER_DRAIN, v as MIXER_PICKUP_RATE, w as MIXING_MODELS, d as MixerLoad, M as MixerSettings, i as MixerStroke, h as MixerTarget, a as MixingModel, x as PaintExchange, y as PaintMedium, z as PaintSample, P as PaintTileTarget, A as PixelSource, F as RETOUCH_SAMPLES, G as RegionPixelSource, j as RetouchApply, H as RetouchDabEffect, I as RetouchDabStroke, k as RetouchPaint, J as RetouchSample, f as RetouchSettings, R as RgbTriple, K as SPOT_HEAL_TYPES, L as SmudgeDab, S as SmudgeSettings, N as SmudgeTip, O as SpotHealType, l as StrokeApply, g as StrokeCoverage, c as StrokePoint, T as TONE_RANGES, Q as TileMedium, U as TileMediumOptions, V as TilePixelSource, W as ToneRange, X as applyRetouchToTile, Y as applyStrokeToTile, Z as blendRadius, _ as blenderDab, $ as cleanMixer, a0 as coverageTileCoord, a1 as createBlenderScratch, a2 as dabCoverage, a3 as dabRect, a4 as dodgeBurn, a5 as dodgeBurnCurve, a6 as exchangeRates, a7 as healPixels, a8 as loadMixer, a9 as luma, aa as mixerRates, ab as normalizeBlender, ac as normalizeBrush, ad as normalizeMixer, ae as normalizeRetouch, af as normalizeSmudge, ag as perDabStrength, ah as rasterizeDab, ai as readSourceRegion, aj as rgbaViewOfGrey, ak as saturationOf, al as smoothPoints, am as smudgeEffect, an as sponge, ao as spongeEffect, ap as spotHealPixels, aq as spotHealWindow, ar as tipFalloff, as as tipReach, at as tipShape, au as toneOf, av as walkDabs } from '../retouch-Do6tBs2H.js';
2
+ export { Z as PIGMENT_BANDS, _ as PIGMENT_LAMBDA_MIN, $ as PIGMENT_LAMBDA_STEP, a0 as PIGMENT_WAVELENGTHS, Y as Pigment, a1 as PigmentOptions, a2 as PigmentRgb, a3 as createPigment, a4 as lerpPigment, a5 as lerpPigmentInto, a6 as mixPigments, a7 as reflectanceToRgb, a8 as rgbToReflectance, a9 as setPigmentColor } from '../surface-Cn30xIV6.js';
3
3
  import { A as AgentTool } from '../registry-D-4fit9C.js';
4
4
  import '../schema-Di0CS6Pe.js';
5
5
 
@@ -28,7 +28,7 @@ import {
28
28
  spotHealPixels,
29
29
  spotHealWindow,
30
30
  toneOf
31
- } from "../chunk-LPYOIVLA.js";
31
+ } from "../chunk-LKCYANMW.js";
32
32
  import {
33
33
  CoverageMap,
34
34
  DEFAULT_BLENDER,
@@ -68,7 +68,7 @@ import {
68
68
  tipReach,
69
69
  tipShape,
70
70
  walkDabs
71
- } from "../chunk-Z4BC6M74.js";
71
+ } from "../chunk-UBIXVXPR.js";
72
72
  import {
73
73
  PIGMENT_BANDS,
74
74
  PIGMENT_LAMBDA_MIN,
@@ -81,7 +81,7 @@ import {
81
81
  reflectanceToRgb,
82
82
  rgbToReflectance,
83
83
  setPigmentColor
84
- } from "../chunk-HNS7UHCM.js";
84
+ } from "../chunk-XK5LZKBD.js";
85
85
  export {
86
86
  CoverageMap,
87
87
  DEFAULT_BLENDER,