@pixerate/editor 0.93.0 → 0.95.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/THIRD_PARTY_NOTICES.md +3 -0
- package/dist/{chunk-ZOOEX3WT.cjs → chunk-CRMAXIUV.cjs} +369 -7
- package/dist/chunk-CRMAXIUV.cjs.map +1 -0
- package/dist/chunk-E2ILRYTJ.js +3695 -0
- package/dist/chunk-E2ILRYTJ.js.map +1 -0
- package/dist/{chunk-D4ZCU72J.js → chunk-HEW6KDNI.js} +366 -4
- package/dist/chunk-HEW6KDNI.js.map +1 -0
- package/dist/{chunk-ISDCJHTO.js → chunk-IB53LVGV.js} +238 -285
- package/dist/chunk-IB53LVGV.js.map +1 -0
- package/dist/chunk-T6H3JDGA.cjs +3695 -0
- package/dist/chunk-T6H3JDGA.cjs.map +1 -0
- package/dist/{chunk-4F3YDIWW.cjs → chunk-ZZOTHJ4K.cjs} +264 -311
- package/dist/chunk-ZZOTHJ4K.cjs.map +1 -0
- package/dist/image-editor/index.cjs +1252 -588
- package/dist/image-editor/index.cjs.map +1 -1
- package/dist/image-editor/index.d.cts +164 -34
- package/dist/image-editor/index.d.ts +164 -34
- package/dist/image-editor/index.js +913 -249
- package/dist/image-editor/index.js.map +1 -1
- package/dist/paint/index.cjs +22 -3
- package/dist/paint/index.cjs.map +1 -1
- package/dist/paint/index.d.cts +117 -2
- package/dist/paint/index.d.ts +117 -2
- package/dist/paint/index.js +32 -13
- package/dist/raster/index.cjs +83 -3
- package/dist/raster/index.cjs.map +1 -1
- package/dist/raster/index.d.cts +99 -348
- package/dist/raster/index.d.ts +99 -348
- package/dist/raster/index.js +83 -3
- package/dist/{surface-fJhkmNQn.d.cts → surface-CgAiXVI3.d.cts} +23 -11
- package/dist/{surface-fJhkmNQn.d.ts → surface-CgAiXVI3.d.ts} +23 -11
- package/dist/zlib-B3LIoxF-.d.cts +796 -0
- package/dist/zlib-eiTEEj1z.d.ts +796 -0
- package/package.json +1 -1
- package/skills/pixerate-image-editor/SKILL.md +82 -7
- package/dist/chunk-4F3YDIWW.cjs.map +0 -1
- package/dist/chunk-D4ZCU72J.js.map +0 -1
- package/dist/chunk-H543GD6T.cjs +0 -1696
- package/dist/chunk-H543GD6T.cjs.map +0 -1
- package/dist/chunk-ISDCJHTO.js.map +0 -1
- package/dist/chunk-P5TPUNBZ.js +0 -1696
- package/dist/chunk-P5TPUNBZ.js.map +0 -1
- package/dist/chunk-ZOOEX3WT.cjs.map +0 -1
package/dist/paint/index.cjs
CHANGED
|
@@ -25,10 +25,9 @@
|
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
|
|
28
|
+
var _chunkZZOTHJ4Kcjs = require('../chunk-ZZOTHJ4K.cjs');
|
|
28
29
|
|
|
29
30
|
|
|
30
|
-
var _chunk4F3YDIWWcjs = require('../chunk-4F3YDIWW.cjs');
|
|
31
|
-
require('../chunk-ZOOEX3WT.cjs');
|
|
32
31
|
|
|
33
32
|
|
|
34
33
|
|
|
@@ -39,6 +38,7 @@ require('../chunk-ZOOEX3WT.cjs');
|
|
|
39
38
|
|
|
40
39
|
|
|
41
40
|
|
|
41
|
+
var _chunkCRMAXIUVcjs = require('../chunk-CRMAXIUV.cjs');
|
|
42
42
|
|
|
43
43
|
|
|
44
44
|
|
|
@@ -58,5 +58,24 @@ require('../chunk-ZOOEX3WT.cjs');
|
|
|
58
58
|
|
|
59
59
|
|
|
60
60
|
|
|
61
|
-
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
exports.CoverageMap = _chunkZZOTHJ4Kcjs.CoverageMap; exports.DEFAULT_BRUSH = _chunkZZOTHJ4Kcjs.DEFAULT_BRUSH; exports.DEFAULT_MIXER = _chunkZZOTHJ4Kcjs.DEFAULT_MIXER; exports.DabWalker = _chunkZZOTHJ4Kcjs.DabWalker; exports.EMPTY_MIXER_LOAD = _chunkZZOTHJ4Kcjs.EMPTY_MIXER_LOAD; exports.MAX_BRUSH_SIZE = _chunkZZOTHJ4Kcjs.MAX_BRUSH_SIZE; exports.MIXER_DRAIN = _chunkZZOTHJ4Kcjs.MIXER_DRAIN; exports.MIXER_PICKUP_RATE = _chunkZZOTHJ4Kcjs.MIXER_PICKUP_RATE; exports.MIXING_MODELS = _chunkZZOTHJ4Kcjs.MIXING_MODELS; exports.MixerStroke = _chunkZZOTHJ4Kcjs.MixerStroke; exports.PIGMENT_BANDS = _chunkCRMAXIUVcjs.PIGMENT_BANDS; exports.PIGMENT_LAMBDA_MIN = _chunkCRMAXIUVcjs.PIGMENT_LAMBDA_MIN; exports.PIGMENT_LAMBDA_STEP = _chunkCRMAXIUVcjs.PIGMENT_LAMBDA_STEP; exports.PIGMENT_WAVELENGTHS = _chunkCRMAXIUVcjs.PIGMENT_WAVELENGTHS; exports.StrokeCoverage = _chunkZZOTHJ4Kcjs.StrokeCoverage; exports.applyStrokeToTile = _chunkZZOTHJ4Kcjs.applyStrokeToTile; exports.cleanMixer = _chunkZZOTHJ4Kcjs.cleanMixer; exports.coverageTileCoord = _chunkZZOTHJ4Kcjs.coverageTileCoord; exports.createPigment = _chunkCRMAXIUVcjs.createPigment; exports.createPigmentTools = _chunkZZOTHJ4Kcjs.createPigmentTools; exports.dabCoverage = _chunkZZOTHJ4Kcjs.dabCoverage; exports.dabRect = _chunkZZOTHJ4Kcjs.dabRect; exports.lerpPigment = _chunkCRMAXIUVcjs.lerpPigment; exports.lerpPigmentInto = _chunkCRMAXIUVcjs.lerpPigmentInto; exports.loadMixer = _chunkZZOTHJ4Kcjs.loadMixer; exports.mixPigments = _chunkCRMAXIUVcjs.mixPigments; exports.normalizeBrush = _chunkZZOTHJ4Kcjs.normalizeBrush; exports.normalizeMixer = _chunkZZOTHJ4Kcjs.normalizeMixer; exports.rasterizeDab = _chunkZZOTHJ4Kcjs.rasterizeDab; exports.reflectanceToRgb = _chunkCRMAXIUVcjs.reflectanceToRgb; exports.rgbToReflectance = _chunkCRMAXIUVcjs.rgbToReflectance; exports.setPigmentColor = _chunkCRMAXIUVcjs.setPigmentColor; exports.smoothPoints = _chunkZZOTHJ4Kcjs.smoothPoints; exports.tipFalloff = _chunkZZOTHJ4Kcjs.tipFalloff; exports.tipReach = _chunkZZOTHJ4Kcjs.tipReach; exports.tipShape = _chunkZZOTHJ4Kcjs.tipShape; exports.walkDabs = _chunkZZOTHJ4Kcjs.walkDabs;
|
|
62
81
|
//# sourceMappingURL=index.cjs.map
|
package/dist/paint/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/editor/editor/packages/core/dist/paint/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,yDAA8B;AAC9B
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/editor/editor/packages/core/dist/paint/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,gkEAAC","file":"/home/runner/work/editor/editor/packages/core/dist/paint/index.cjs"}
|
package/dist/paint/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as BlendMode, R as RasterRect,
|
|
1
|
+
import { B as BlendMode, R as RasterRect, g as TileKey } from '../surface-CgAiXVI3.cjs';
|
|
2
2
|
import { A as AgentTool } from '../registry-BqA1AZt0.cjs';
|
|
3
3
|
import '../schema-Di0CS6Pe.cjs';
|
|
4
4
|
|
|
@@ -166,6 +166,121 @@ declare function coverageTileCoord(key: TileKey): {
|
|
|
166
166
|
ty: number;
|
|
167
167
|
};
|
|
168
168
|
|
|
169
|
+
/**
|
|
170
|
+
* The Mixer Brush: a reservoir of loaded paint plus a pickup well that takes up colour from the
|
|
171
|
+
* canvas under each dab (photocraft's behavioural model):
|
|
172
|
+
*
|
|
173
|
+
* - Each dab samples the canvas under its footprint (coverage- and alpha-weighted). The pickup
|
|
174
|
+
* colour `P` moves towards that sample by `PICKUP_RATE × wet` (scaled by the sample's coverage).
|
|
175
|
+
* - The dab's paint mixes the reservoir `R` (weight `amount × (1 − mix·wet)`) with the pickup
|
|
176
|
+
* (weight `mix·wet`) and lands at `flow × opacity` times the total weight, over the pixels as
|
|
177
|
+
* they are now, so earlier dabs of the same stroke are picked up again (smearing).
|
|
178
|
+
* - The reservoir drains per dab unless `load` is 1, so low-load strokes run dry. A dry brush
|
|
179
|
+
* (`wet` 0) paints only reservoir colour; an empty, wet brush smears canvas colour.
|
|
180
|
+
*
|
|
181
|
+
* `mixing: 'pigment'` does all three mixes (pickup, paint and deposit) with the Kubelka-Munk model
|
|
182
|
+
* of `./pigment`, so a blue brush dragged through yellow makes green instead of grey. Everything
|
|
183
|
+
* is data in, pixels out: the same canvas, points, settings and load replay identically.
|
|
184
|
+
*/
|
|
185
|
+
|
|
186
|
+
/** How the Mixer Brush mixes colours: straight sRGB averages, or like paint (Kubelka-Munk). */
|
|
187
|
+
type MixingModel = 'rgb' | 'pigment';
|
|
188
|
+
declare const MIXING_MODELS: readonly MixingModel[];
|
|
189
|
+
/** Mixer Brush options. */
|
|
190
|
+
interface MixerSettings {
|
|
191
|
+
/** How much colour the brush picks up from the canvas, 0 (dry) .. 1 (default 0.5). */
|
|
192
|
+
wet: number;
|
|
193
|
+
/** How much paint the reservoir holds, 0 .. 1 (default 0.5): below 1 it drains per dab and the stroke runs dry. */
|
|
194
|
+
load: number;
|
|
195
|
+
/** How far each dab's paint moves from the reservoir towards the picked-up colour, 0 .. 1 (default 0.5). */
|
|
196
|
+
mix: number;
|
|
197
|
+
/** Refill the reservoir with the paint colour at the start of each stroke (default true). */
|
|
198
|
+
loadEachStroke: boolean;
|
|
199
|
+
/** Empty the pickup well after each stroke (default true); off keeps the brush dirty for the next stroke. */
|
|
200
|
+
cleanEachStroke: boolean;
|
|
201
|
+
/** `rgb` (default) or `pigment` (blue and yellow make green). */
|
|
202
|
+
mixing: MixingModel;
|
|
203
|
+
}
|
|
204
|
+
declare const DEFAULT_MIXER: Readonly<MixerSettings>;
|
|
205
|
+
/** Fraction of the way the pickup colour moves towards the canvas per dab at 100 % wet. */
|
|
206
|
+
declare const MIXER_PICKUP_RATE = 0.25;
|
|
207
|
+
/** Fraction of the reservoir that drains per dab at 0 % load. */
|
|
208
|
+
declare const MIXER_DRAIN = 0.08;
|
|
209
|
+
/** Mixer settings with every field in range (missing fields from `DEFAULT_MIXER`). */
|
|
210
|
+
declare function normalizeMixer(raw?: Partial<MixerSettings>): MixerSettings;
|
|
211
|
+
/** What the brush carries between strokes. Colours are straight sRGB, 0..1. */
|
|
212
|
+
interface MixerLoad {
|
|
213
|
+
/** Loaded paint, or `null` when the brush is unloaded. */
|
|
214
|
+
readonly reservoir: readonly [number, number, number] | null;
|
|
215
|
+
/** Reservoir left, 0..1. */
|
|
216
|
+
readonly amount: number;
|
|
217
|
+
/** Colour picked up from the canvas, or `null` when the brush is clean. */
|
|
218
|
+
readonly pickup: readonly [number, number, number] | null;
|
|
219
|
+
}
|
|
220
|
+
declare const EMPTY_MIXER_LOAD: MixerLoad;
|
|
221
|
+
/** The brush loaded full with `color` (sRGB 0..1); the pickup well is kept. */
|
|
222
|
+
declare function loadMixer(load: MixerLoad, color: readonly [number, number, number]): MixerLoad;
|
|
223
|
+
/** The brush with its pickup well emptied; the reservoir is kept. */
|
|
224
|
+
declare function cleanMixer(load: MixerLoad): MixerLoad;
|
|
225
|
+
/** The pixels a mixer stroke reads and writes (RGBA tiles in layer space). */
|
|
226
|
+
interface MixerTarget {
|
|
227
|
+
/** The tile (TILE × TILE × 4) at (tx, ty) as it is now, or `null` when it is fully transparent. */
|
|
228
|
+
readTile(tx: number, ty: number): Uint8ClampedArray | null;
|
|
229
|
+
/** A writable tile at (tx, ty), returned by `readTile` from then on. */
|
|
230
|
+
writeTile(tx: number, ty: number): Uint8ClampedArray;
|
|
231
|
+
/** Layer offset: layer pixel = document pixel − offset. */
|
|
232
|
+
offset: {
|
|
233
|
+
x: number;
|
|
234
|
+
y: number;
|
|
235
|
+
};
|
|
236
|
+
/** Keep alpha and paint only where the layer has pixels. */
|
|
237
|
+
lockTransparency: boolean;
|
|
238
|
+
/** Selection coverage (document space, canvas-sized), or `null`. */
|
|
239
|
+
selection: {
|
|
240
|
+
width: number;
|
|
241
|
+
height: number;
|
|
242
|
+
data: ArrayLike<number>;
|
|
243
|
+
} | null;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* One Mixer Brush stroke. Feed points with `push` (any chunks give the same dabs), end with
|
|
247
|
+
* `finish`; `load` is the brush load after the dabs so far. Each call returns the document
|
|
248
|
+
* rectangles it touched.
|
|
249
|
+
*/
|
|
250
|
+
declare class MixerStroke {
|
|
251
|
+
readonly brush: BrushSettings;
|
|
252
|
+
private readonly target;
|
|
253
|
+
dabCount: number;
|
|
254
|
+
bounds: RasterRect | null;
|
|
255
|
+
private walker;
|
|
256
|
+
private smoothPos;
|
|
257
|
+
private buf;
|
|
258
|
+
private readonly settings;
|
|
259
|
+
private readonly reservoir;
|
|
260
|
+
private amount;
|
|
261
|
+
private pickup;
|
|
262
|
+
private readonly pig;
|
|
263
|
+
private readonly out;
|
|
264
|
+
constructor(brush: BrushSettings, settings: Partial<MixerSettings>, load: MixerLoad, target: MixerTarget);
|
|
265
|
+
/** The brush load after the dabs so far. */
|
|
266
|
+
get load(): MixerLoad;
|
|
267
|
+
push(points: readonly StrokePoint[]): RasterRect[];
|
|
268
|
+
finish(last?: StrokePoint): RasterRect[];
|
|
269
|
+
private smooth;
|
|
270
|
+
/** `a` mixed `t` of the way to `b` into `this.out`, by the mixing model. */
|
|
271
|
+
private mix;
|
|
272
|
+
private paint;
|
|
273
|
+
private tx;
|
|
274
|
+
private ty;
|
|
275
|
+
private tile;
|
|
276
|
+
private writable;
|
|
277
|
+
/** Index of document pixel (dx, dy) in `this.tile`, or -1 when reading an empty tile. */
|
|
278
|
+
private locate;
|
|
279
|
+
private dab;
|
|
280
|
+
/** Lays `paint` over the pixels under the dab at `dep` × coverage (× selection). */
|
|
281
|
+
private deposit;
|
|
282
|
+
}
|
|
283
|
+
|
|
169
284
|
/**
|
|
170
285
|
* Pigment-like colour mixing: blue and yellow make green, red and white make pink, as paint does.
|
|
171
286
|
*
|
|
@@ -258,4 +373,4 @@ declare function lerpPigmentInto(a: Pigment, b: Pigment, t: number, out: {
|
|
|
258
373
|
*/
|
|
259
374
|
declare function createPigmentTools(): AgentTool[];
|
|
260
375
|
|
|
261
|
-
export { type BrushSettings, CoverageMap, DEFAULT_BRUSH, type Dab, DabWalker, MAX_BRUSH_SIZE, PIGMENT_BANDS, PIGMENT_LAMBDA_MIN, PIGMENT_LAMBDA_STEP, PIGMENT_WAVELENGTHS, type Pigment, type PigmentOptions, type PigmentRgb, type StrokeApply, StrokeCoverage, type StrokePoint, applyStrokeToTile, coverageTileCoord, createPigment, createPigmentTools, dabCoverage, dabRect, lerpPigment, lerpPigmentInto, mixPigments, normalizeBrush, rasterizeDab, reflectanceToRgb, rgbToReflectance, setPigmentColor, smoothPoints, tipFalloff, tipReach, tipShape, walkDabs };
|
|
376
|
+
export { type BrushSettings, CoverageMap, DEFAULT_BRUSH, DEFAULT_MIXER, type Dab, DabWalker, EMPTY_MIXER_LOAD, MAX_BRUSH_SIZE, MIXER_DRAIN, MIXER_PICKUP_RATE, MIXING_MODELS, type MixerLoad, type MixerSettings, MixerStroke, type MixerTarget, type MixingModel, PIGMENT_BANDS, PIGMENT_LAMBDA_MIN, PIGMENT_LAMBDA_STEP, PIGMENT_WAVELENGTHS, type Pigment, type PigmentOptions, type PigmentRgb, type StrokeApply, StrokeCoverage, type StrokePoint, applyStrokeToTile, cleanMixer, coverageTileCoord, createPigment, createPigmentTools, dabCoverage, dabRect, lerpPigment, lerpPigmentInto, loadMixer, mixPigments, normalizeBrush, normalizeMixer, rasterizeDab, reflectanceToRgb, rgbToReflectance, setPigmentColor, smoothPoints, tipFalloff, tipReach, tipShape, walkDabs };
|
package/dist/paint/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as BlendMode, R as RasterRect,
|
|
1
|
+
import { B as BlendMode, R as RasterRect, g as TileKey } from '../surface-CgAiXVI3.js';
|
|
2
2
|
import { A as AgentTool } from '../registry-D-4fit9C.js';
|
|
3
3
|
import '../schema-Di0CS6Pe.js';
|
|
4
4
|
|
|
@@ -166,6 +166,121 @@ declare function coverageTileCoord(key: TileKey): {
|
|
|
166
166
|
ty: number;
|
|
167
167
|
};
|
|
168
168
|
|
|
169
|
+
/**
|
|
170
|
+
* The Mixer Brush: a reservoir of loaded paint plus a pickup well that takes up colour from the
|
|
171
|
+
* canvas under each dab (photocraft's behavioural model):
|
|
172
|
+
*
|
|
173
|
+
* - Each dab samples the canvas under its footprint (coverage- and alpha-weighted). The pickup
|
|
174
|
+
* colour `P` moves towards that sample by `PICKUP_RATE × wet` (scaled by the sample's coverage).
|
|
175
|
+
* - The dab's paint mixes the reservoir `R` (weight `amount × (1 − mix·wet)`) with the pickup
|
|
176
|
+
* (weight `mix·wet`) and lands at `flow × opacity` times the total weight, over the pixels as
|
|
177
|
+
* they are now, so earlier dabs of the same stroke are picked up again (smearing).
|
|
178
|
+
* - The reservoir drains per dab unless `load` is 1, so low-load strokes run dry. A dry brush
|
|
179
|
+
* (`wet` 0) paints only reservoir colour; an empty, wet brush smears canvas colour.
|
|
180
|
+
*
|
|
181
|
+
* `mixing: 'pigment'` does all three mixes (pickup, paint and deposit) with the Kubelka-Munk model
|
|
182
|
+
* of `./pigment`, so a blue brush dragged through yellow makes green instead of grey. Everything
|
|
183
|
+
* is data in, pixels out: the same canvas, points, settings and load replay identically.
|
|
184
|
+
*/
|
|
185
|
+
|
|
186
|
+
/** How the Mixer Brush mixes colours: straight sRGB averages, or like paint (Kubelka-Munk). */
|
|
187
|
+
type MixingModel = 'rgb' | 'pigment';
|
|
188
|
+
declare const MIXING_MODELS: readonly MixingModel[];
|
|
189
|
+
/** Mixer Brush options. */
|
|
190
|
+
interface MixerSettings {
|
|
191
|
+
/** How much colour the brush picks up from the canvas, 0 (dry) .. 1 (default 0.5). */
|
|
192
|
+
wet: number;
|
|
193
|
+
/** How much paint the reservoir holds, 0 .. 1 (default 0.5): below 1 it drains per dab and the stroke runs dry. */
|
|
194
|
+
load: number;
|
|
195
|
+
/** How far each dab's paint moves from the reservoir towards the picked-up colour, 0 .. 1 (default 0.5). */
|
|
196
|
+
mix: number;
|
|
197
|
+
/** Refill the reservoir with the paint colour at the start of each stroke (default true). */
|
|
198
|
+
loadEachStroke: boolean;
|
|
199
|
+
/** Empty the pickup well after each stroke (default true); off keeps the brush dirty for the next stroke. */
|
|
200
|
+
cleanEachStroke: boolean;
|
|
201
|
+
/** `rgb` (default) or `pigment` (blue and yellow make green). */
|
|
202
|
+
mixing: MixingModel;
|
|
203
|
+
}
|
|
204
|
+
declare const DEFAULT_MIXER: Readonly<MixerSettings>;
|
|
205
|
+
/** Fraction of the way the pickup colour moves towards the canvas per dab at 100 % wet. */
|
|
206
|
+
declare const MIXER_PICKUP_RATE = 0.25;
|
|
207
|
+
/** Fraction of the reservoir that drains per dab at 0 % load. */
|
|
208
|
+
declare const MIXER_DRAIN = 0.08;
|
|
209
|
+
/** Mixer settings with every field in range (missing fields from `DEFAULT_MIXER`). */
|
|
210
|
+
declare function normalizeMixer(raw?: Partial<MixerSettings>): MixerSettings;
|
|
211
|
+
/** What the brush carries between strokes. Colours are straight sRGB, 0..1. */
|
|
212
|
+
interface MixerLoad {
|
|
213
|
+
/** Loaded paint, or `null` when the brush is unloaded. */
|
|
214
|
+
readonly reservoir: readonly [number, number, number] | null;
|
|
215
|
+
/** Reservoir left, 0..1. */
|
|
216
|
+
readonly amount: number;
|
|
217
|
+
/** Colour picked up from the canvas, or `null` when the brush is clean. */
|
|
218
|
+
readonly pickup: readonly [number, number, number] | null;
|
|
219
|
+
}
|
|
220
|
+
declare const EMPTY_MIXER_LOAD: MixerLoad;
|
|
221
|
+
/** The brush loaded full with `color` (sRGB 0..1); the pickup well is kept. */
|
|
222
|
+
declare function loadMixer(load: MixerLoad, color: readonly [number, number, number]): MixerLoad;
|
|
223
|
+
/** The brush with its pickup well emptied; the reservoir is kept. */
|
|
224
|
+
declare function cleanMixer(load: MixerLoad): MixerLoad;
|
|
225
|
+
/** The pixels a mixer stroke reads and writes (RGBA tiles in layer space). */
|
|
226
|
+
interface MixerTarget {
|
|
227
|
+
/** The tile (TILE × TILE × 4) at (tx, ty) as it is now, or `null` when it is fully transparent. */
|
|
228
|
+
readTile(tx: number, ty: number): Uint8ClampedArray | null;
|
|
229
|
+
/** A writable tile at (tx, ty), returned by `readTile` from then on. */
|
|
230
|
+
writeTile(tx: number, ty: number): Uint8ClampedArray;
|
|
231
|
+
/** Layer offset: layer pixel = document pixel − offset. */
|
|
232
|
+
offset: {
|
|
233
|
+
x: number;
|
|
234
|
+
y: number;
|
|
235
|
+
};
|
|
236
|
+
/** Keep alpha and paint only where the layer has pixels. */
|
|
237
|
+
lockTransparency: boolean;
|
|
238
|
+
/** Selection coverage (document space, canvas-sized), or `null`. */
|
|
239
|
+
selection: {
|
|
240
|
+
width: number;
|
|
241
|
+
height: number;
|
|
242
|
+
data: ArrayLike<number>;
|
|
243
|
+
} | null;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* One Mixer Brush stroke. Feed points with `push` (any chunks give the same dabs), end with
|
|
247
|
+
* `finish`; `load` is the brush load after the dabs so far. Each call returns the document
|
|
248
|
+
* rectangles it touched.
|
|
249
|
+
*/
|
|
250
|
+
declare class MixerStroke {
|
|
251
|
+
readonly brush: BrushSettings;
|
|
252
|
+
private readonly target;
|
|
253
|
+
dabCount: number;
|
|
254
|
+
bounds: RasterRect | null;
|
|
255
|
+
private walker;
|
|
256
|
+
private smoothPos;
|
|
257
|
+
private buf;
|
|
258
|
+
private readonly settings;
|
|
259
|
+
private readonly reservoir;
|
|
260
|
+
private amount;
|
|
261
|
+
private pickup;
|
|
262
|
+
private readonly pig;
|
|
263
|
+
private readonly out;
|
|
264
|
+
constructor(brush: BrushSettings, settings: Partial<MixerSettings>, load: MixerLoad, target: MixerTarget);
|
|
265
|
+
/** The brush load after the dabs so far. */
|
|
266
|
+
get load(): MixerLoad;
|
|
267
|
+
push(points: readonly StrokePoint[]): RasterRect[];
|
|
268
|
+
finish(last?: StrokePoint): RasterRect[];
|
|
269
|
+
private smooth;
|
|
270
|
+
/** `a` mixed `t` of the way to `b` into `this.out`, by the mixing model. */
|
|
271
|
+
private mix;
|
|
272
|
+
private paint;
|
|
273
|
+
private tx;
|
|
274
|
+
private ty;
|
|
275
|
+
private tile;
|
|
276
|
+
private writable;
|
|
277
|
+
/** Index of document pixel (dx, dy) in `this.tile`, or -1 when reading an empty tile. */
|
|
278
|
+
private locate;
|
|
279
|
+
private dab;
|
|
280
|
+
/** Lays `paint` over the pixels under the dab at `dep` × coverage (× selection). */
|
|
281
|
+
private deposit;
|
|
282
|
+
}
|
|
283
|
+
|
|
169
284
|
/**
|
|
170
285
|
* Pigment-like colour mixing: blue and yellow make green, red and white make pink, as paint does.
|
|
171
286
|
*
|
|
@@ -258,4 +373,4 @@ declare function lerpPigmentInto(a: Pigment, b: Pigment, t: number, out: {
|
|
|
258
373
|
*/
|
|
259
374
|
declare function createPigmentTools(): AgentTool[];
|
|
260
375
|
|
|
261
|
-
export { type BrushSettings, CoverageMap, DEFAULT_BRUSH, type Dab, DabWalker, MAX_BRUSH_SIZE, PIGMENT_BANDS, PIGMENT_LAMBDA_MIN, PIGMENT_LAMBDA_STEP, PIGMENT_WAVELENGTHS, type Pigment, type PigmentOptions, type PigmentRgb, type StrokeApply, StrokeCoverage, type StrokePoint, applyStrokeToTile, coverageTileCoord, createPigment, createPigmentTools, dabCoverage, dabRect, lerpPigment, lerpPigmentInto, mixPigments, normalizeBrush, rasterizeDab, reflectanceToRgb, rgbToReflectance, setPigmentColor, smoothPoints, tipFalloff, tipReach, tipShape, walkDabs };
|
|
376
|
+
export { type BrushSettings, CoverageMap, DEFAULT_BRUSH, DEFAULT_MIXER, type Dab, DabWalker, EMPTY_MIXER_LOAD, MAX_BRUSH_SIZE, MIXER_DRAIN, MIXER_PICKUP_RATE, MIXING_MODELS, type MixerLoad, type MixerSettings, MixerStroke, type MixerTarget, type MixingModel, PIGMENT_BANDS, PIGMENT_LAMBDA_MIN, PIGMENT_LAMBDA_STEP, PIGMENT_WAVELENGTHS, type Pigment, type PigmentOptions, type PigmentRgb, type StrokeApply, StrokeCoverage, type StrokePoint, applyStrokeToTile, cleanMixer, coverageTileCoord, createPigment, createPigmentTools, dabCoverage, dabRect, lerpPigment, lerpPigmentInto, loadMixer, mixPigments, normalizeBrush, normalizeMixer, rasterizeDab, reflectanceToRgb, rgbToReflectance, setPigmentColor, smoothPoints, tipFalloff, tipReach, tipShape, walkDabs };
|
package/dist/paint/index.js
CHANGED
|
@@ -1,45 +1,62 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CoverageMap,
|
|
3
3
|
DEFAULT_BRUSH,
|
|
4
|
+
DEFAULT_MIXER,
|
|
4
5
|
DabWalker,
|
|
6
|
+
EMPTY_MIXER_LOAD,
|
|
5
7
|
MAX_BRUSH_SIZE,
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
MIXER_DRAIN,
|
|
9
|
+
MIXER_PICKUP_RATE,
|
|
10
|
+
MIXING_MODELS,
|
|
11
|
+
MixerStroke,
|
|
10
12
|
StrokeCoverage,
|
|
11
13
|
applyStrokeToTile,
|
|
14
|
+
cleanMixer,
|
|
12
15
|
coverageTileCoord,
|
|
13
|
-
createPigment,
|
|
14
16
|
createPigmentTools,
|
|
15
17
|
dabCoverage,
|
|
16
18
|
dabRect,
|
|
17
|
-
|
|
18
|
-
lerpPigmentInto,
|
|
19
|
-
mixPigments,
|
|
19
|
+
loadMixer,
|
|
20
20
|
normalizeBrush,
|
|
21
|
+
normalizeMixer,
|
|
21
22
|
rasterizeDab,
|
|
22
|
-
reflectanceToRgb,
|
|
23
|
-
rgbToReflectance,
|
|
24
|
-
setPigmentColor,
|
|
25
23
|
smoothPoints,
|
|
26
24
|
tipFalloff,
|
|
27
25
|
tipReach,
|
|
28
26
|
tipShape,
|
|
29
27
|
walkDabs
|
|
30
|
-
} from "../chunk-
|
|
31
|
-
import
|
|
28
|
+
} from "../chunk-IB53LVGV.js";
|
|
29
|
+
import {
|
|
30
|
+
PIGMENT_BANDS,
|
|
31
|
+
PIGMENT_LAMBDA_MIN,
|
|
32
|
+
PIGMENT_LAMBDA_STEP,
|
|
33
|
+
PIGMENT_WAVELENGTHS,
|
|
34
|
+
createPigment,
|
|
35
|
+
lerpPigment,
|
|
36
|
+
lerpPigmentInto,
|
|
37
|
+
mixPigments,
|
|
38
|
+
reflectanceToRgb,
|
|
39
|
+
rgbToReflectance,
|
|
40
|
+
setPigmentColor
|
|
41
|
+
} from "../chunk-HEW6KDNI.js";
|
|
32
42
|
export {
|
|
33
43
|
CoverageMap,
|
|
34
44
|
DEFAULT_BRUSH,
|
|
45
|
+
DEFAULT_MIXER,
|
|
35
46
|
DabWalker,
|
|
47
|
+
EMPTY_MIXER_LOAD,
|
|
36
48
|
MAX_BRUSH_SIZE,
|
|
49
|
+
MIXER_DRAIN,
|
|
50
|
+
MIXER_PICKUP_RATE,
|
|
51
|
+
MIXING_MODELS,
|
|
52
|
+
MixerStroke,
|
|
37
53
|
PIGMENT_BANDS,
|
|
38
54
|
PIGMENT_LAMBDA_MIN,
|
|
39
55
|
PIGMENT_LAMBDA_STEP,
|
|
40
56
|
PIGMENT_WAVELENGTHS,
|
|
41
57
|
StrokeCoverage,
|
|
42
58
|
applyStrokeToTile,
|
|
59
|
+
cleanMixer,
|
|
43
60
|
coverageTileCoord,
|
|
44
61
|
createPigment,
|
|
45
62
|
createPigmentTools,
|
|
@@ -47,8 +64,10 @@ export {
|
|
|
47
64
|
dabRect,
|
|
48
65
|
lerpPigment,
|
|
49
66
|
lerpPigmentInto,
|
|
67
|
+
loadMixer,
|
|
50
68
|
mixPigments,
|
|
51
69
|
normalizeBrush,
|
|
70
|
+
normalizeMixer,
|
|
52
71
|
rasterizeDab,
|
|
53
72
|
reflectanceToRgb,
|
|
54
73
|
rgbToReflectance,
|
package/dist/raster/index.cjs
CHANGED
|
@@ -22,7 +22,6 @@
|
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
|
|
25
|
-
var _chunkH543GD6Tcjs = require('../chunk-H543GD6T.cjs');
|
|
26
25
|
|
|
27
26
|
|
|
28
27
|
|
|
@@ -58,10 +57,10 @@ var _chunkH543GD6Tcjs = require('../chunk-H543GD6T.cjs');
|
|
|
58
57
|
|
|
59
58
|
|
|
60
59
|
|
|
61
|
-
var _chunkZOOEX3WTcjs = require('../chunk-ZOOEX3WT.cjs');
|
|
62
60
|
|
|
63
61
|
|
|
64
62
|
|
|
63
|
+
var _chunkT6H3JDGAcjs = require('../chunk-T6H3JDGA.cjs');
|
|
65
64
|
|
|
66
65
|
|
|
67
66
|
|
|
@@ -99,6 +98,7 @@ var _chunkZOOEX3WTcjs = require('../chunk-ZOOEX3WT.cjs');
|
|
|
99
98
|
|
|
100
99
|
|
|
101
100
|
|
|
101
|
+
var _chunkCRMAXIUVcjs = require('../chunk-CRMAXIUV.cjs');
|
|
102
102
|
|
|
103
103
|
|
|
104
104
|
|
|
@@ -117,5 +117,85 @@ var _chunkZOOEX3WTcjs = require('../chunk-ZOOEX3WT.cjs');
|
|
|
117
117
|
|
|
118
118
|
|
|
119
119
|
|
|
120
|
-
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
exports.BLEND_MODES = _chunkCRMAXIUVcjs.BLEND_MODES; exports.CURVE_LUT_SIZE = _chunkT6H3JDGAcjs.CURVE_LUT_SIZE; exports.DEFAULT_GLOBAL_LIGHT = _chunkT6H3JDGAcjs.DEFAULT_GLOBAL_LIGHT; exports.DIRECT_GAUSSIAN_MAX_SIGMA = _chunkT6H3JDGAcjs.DIRECT_GAUSSIAN_MAX_SIGMA; exports.LAYER_EFFECT_KINDS = _chunkT6H3JDGAcjs.LAYER_EFFECT_KINDS; exports.LayerEffectError = _chunkT6H3JDGAcjs.LayerEffectError; exports.MAX_EFFECT_REACH = _chunkT6H3JDGAcjs.MAX_EFFECT_REACH; exports.PatternPlacement = _chunkT6H3JDGAcjs.PatternPlacement; exports.PatternTile = _chunkT6H3JDGAcjs.PatternTile; exports.RasterCompositor = _chunkT6H3JDGAcjs.RasterCompositor; exports.STROKE_CHAMFER_MAX = _chunkT6H3JDGAcjs.STROKE_CHAMFER_MAX; exports.SurfaceDraft = _chunkCRMAXIUVcjs.SurfaceDraft; exports.TILE = _chunkCRMAXIUVcjs.TILE; exports.TILE_SHIFT = _chunkCRMAXIUVcjs.TILE_SHIFT; exports.TiledSurface = _chunkCRMAXIUVcjs.TiledSurface; exports.ZlibError = _chunkT6H3JDGAcjs.ZlibError; exports.activeEffectItems = _chunkT6H3JDGAcjs.activeEffectItems; exports.adler32 = _chunkT6H3JDGAcjs.adler32; exports.base64ToBytes = _chunkT6H3JDGAcjs.base64ToBytes; exports.blendChannel = _chunkCRMAXIUVcjs.blendChannel; exports.blendImageData = _chunkCRMAXIUVcjs.blendImageData; exports.blendLum = _chunkCRMAXIUVcjs.blendLum; exports.blendPixel = _chunkCRMAXIUVcjs.blendPixel; exports.blendRgb = _chunkCRMAXIUVcjs.blendRgb; exports.blendTile = _chunkT6H3JDGAcjs.blendTile; exports.buildEffectMaps = _chunkT6H3JDGAcjs.buildEffectMaps; exports.builtinPattern = _chunkT6H3JDGAcjs.builtinPattern; exports.builtinPatternIds = _chunkT6H3JDGAcjs.builtinPatternIds; exports.bytesToBase64 = _chunkT6H3JDGAcjs.bytesToBase64; exports.canvasCompositeOperation = _chunkCRMAXIUVcjs.canvasCompositeOperation; exports.changedTiles = _chunkT6H3JDGAcjs.changedTiles; exports.collectTiles = _chunkCRMAXIUVcjs.collectTiles; exports.compositeLayerEffects = _chunkT6H3JDGAcjs.compositeLayerEffects; exports.contentBounds = _chunkCRMAXIUVcjs.contentBounds; exports.contourLut = _chunkT6H3JDGAcjs.contourLut; exports.curveLut = _chunkT6H3JDGAcjs.curveLut; exports.decodePng = _chunkT6H3JDGAcjs.decodePng; exports.defaultEffectGradient = _chunkT6H3JDGAcjs.defaultEffectGradient; exports.defaultLayerEffect = _chunkT6H3JDGAcjs.defaultLayerEffect; exports.deflate = _chunkT6H3JDGAcjs.deflate; exports.deflateRaw = _chunkT6H3JDGAcjs.deflateRaw; exports.effectColorHex = _chunkT6H3JDGAcjs.effectColorHex; exports.effectReach = _chunkT6H3JDGAcjs.effectReach; exports.effectsAreLocal = _chunkT6H3JDGAcjs.effectsAreLocal; exports.effectsFingerprint = _chunkT6H3JDGAcjs.effectsFingerprint; exports.effectsMargin = _chunkT6H3JDGAcjs.effectsMargin; exports.effectsScale = _chunkT6H3JDGAcjs.effectsScale; exports.emptySurface = _chunkCRMAXIUVcjs.emptySurface; exports.encodePng = _chunkT6H3JDGAcjs.encodePng; exports.fillRect = _chunkCRMAXIUVcjs.fillRect; exports.findLayer = _chunkT6H3JDGAcjs.findLayer; exports.finishTile = _chunkCRMAXIUVcjs.finishTile; exports.flattenLayers = _chunkT6H3JDGAcjs.flattenLayers; exports.gaussianBlur = _chunkT6H3JDGAcjs.gaussianBlur; exports.gradientT = _chunkT6H3JDGAcjs.gradientT; exports.hasActiveEffects = _chunkT6H3JDGAcjs.hasActiveEffects; exports.hashNoise = _chunkT6H3JDGAcjs.hashNoise; exports.inflate = _chunkT6H3JDGAcjs.inflate; exports.inflateRaw = _chunkT6H3JDGAcjs.inflateRaw; exports.insertLayer = _chunkT6H3JDGAcjs.insertLayer; exports.isBlendMode = _chunkCRMAXIUVcjs.isBlendMode; exports.isLayerEffectKind = _chunkT6H3JDGAcjs.isLayerEffectKind; exports.isLayerLocked = _chunkT6H3JDGAcjs.isLayerLocked; exports.isPng = _chunkT6H3JDGAcjs.isPng; exports.isSeparableBlendMode = _chunkCRMAXIUVcjs.isSeparableBlendMode; exports.layerEffectFields = _chunkT6H3JDGAcjs.layerEffectFields; exports.layerEffectLabel = _chunkT6H3JDGAcjs.layerEffectLabel; exports.mapLayer = _chunkT6H3JDGAcjs.mapLayer; exports.mergeLayerEffect = _chunkT6H3JDGAcjs.mergeLayerEffect; exports.mixPigment8 = _chunkCRMAXIUVcjs.mixPigment8; exports.mixPigmentRgb = _chunkCRMAXIUVcjs.mixPigmentRgb; exports.newEffectId = _chunkT6H3JDGAcjs.newEffectId; exports.normalizeBlendMode = _chunkCRMAXIUVcjs.normalizeBlendMode; exports.normalizeLayerEffects = _chunkT6H3JDGAcjs.normalizeLayerEffects; exports.packRgba = _chunkCRMAXIUVcjs.packRgba; exports.parseDataUrl = _chunkT6H3JDGAcjs.parseDataUrl; exports.parseEffectColor = _chunkT6H3JDGAcjs.parseEffectColor; exports.pngDataUrl = _chunkT6H3JDGAcjs.pngDataUrl; exports.readPixel = _chunkCRMAXIUVcjs.readPixel; exports.readRegion = _chunkCRMAXIUVcjs.readRegion; exports.renderLayerEffects = _chunkT6H3JDGAcjs.renderLayerEffects; exports.scaleLayerEffect = _chunkT6H3JDGAcjs.scaleLayerEffect; exports.setLum = _chunkCRMAXIUVcjs.setLum; exports.solidSurface = _chunkCRMAXIUVcjs.solidSurface; exports.surfaceBytes = _chunkCRMAXIUVcjs.surfaceBytes; exports.surfaceFromPixels = _chunkCRMAXIUVcjs.surfaceFromPixels; exports.surfacesEqual = _chunkCRMAXIUVcjs.surfacesEqual; exports.tileCoord = _chunkCRMAXIUVcjs.tileCoord; exports.tileKey = _chunkCRMAXIUVcjs.tileKey; exports.tileRect = _chunkCRMAXIUVcjs.tileRect; exports.tilesInRect = _chunkCRMAXIUVcjs.tilesInRect; exports.translateSurface = _chunkCRMAXIUVcjs.translateSurface; exports.uniformTile = _chunkCRMAXIUVcjs.uniformTile; exports.validateEffectGradient = _chunkT6H3JDGAcjs.validateEffectGradient; exports.validateLayerEffect = _chunkT6H3JDGAcjs.validateLayerEffect; exports.validateLayerEffects = _chunkT6H3JDGAcjs.validateLayerEffects; exports.writeRegion = _chunkCRMAXIUVcjs.writeRegion;
|
|
121
201
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/editor/editor/packages/core/dist/raster/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/editor/editor/packages/core/dist/raster/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,yDAA8B;AAC9B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,k5KAAC","file":"/home/runner/work/editor/editor/packages/core/dist/raster/index.cjs"}
|