@pixerate/editor 0.145.0 → 0.147.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/README.md +4 -2
- package/THIRD_PARTY_NOTICES.md +1 -1
- package/dist/agent/index.cjs +36 -34
- package/dist/agent/index.js +7 -5
- package/dist/animation/index.cjs +5 -3
- package/dist/animation/index.js +4 -2
- package/dist/animation-editor/index.cjs +62 -60
- package/dist/animation-editor/index.js +6 -4
- package/dist/canvas/index.cjs +36 -34
- package/dist/canvas/index.js +19 -17
- package/dist/chart/index.cjs +88 -86
- package/dist/chart/index.js +7 -5
- package/dist/{chunk-WBJ6BG4R.js → chunk-2AQL4JHM.js} +6 -6
- package/dist/{chunk-HLMF3E53.cjs → chunk-2WDZI6QD.cjs} +15 -15
- package/dist/{chunk-ZNHB5RG6.js → chunk-37RLSNQ3.js} +2 -2
- package/dist/{chunk-5WOY52O6.cjs → chunk-4YQKRHMI.cjs} +8 -8
- package/dist/chunk-6ONMQ6WF.js +113 -0
- package/dist/{chunk-L434J57V.cjs → chunk-6QTON3VW.cjs} +16 -16
- package/dist/chunk-AA34BA7G.js +1913 -0
- package/dist/{chunk-QX25HWFL.js → chunk-AY65VQSU.js} +1 -1
- package/dist/{chunk-ONZJD2OD.cjs → chunk-BROJYMWU.cjs} +57 -153
- package/dist/{chunk-YM75DN54.js → chunk-DSZCDNTM.js} +1 -1
- package/dist/{chunk-PUR6BZFA.cjs → chunk-DVLMW3GB.cjs} +53 -53
- package/dist/{chunk-ALUWD3FG.js → chunk-EIUTJPEL.js} +1 -1
- package/dist/{chunk-X65C4DWV.js → chunk-EQ4SF4X4.js} +1 -1
- package/dist/{chunk-77SG47WT.js → chunk-FLOGD3QB.js} +1 -1
- package/dist/chunk-HRLT5BYO.js +133 -0
- package/dist/{chunk-AJSW5GMP.js → chunk-HVQVHUTV.js} +19 -115
- package/dist/{chunk-UR37VCIR.cjs → chunk-I4AHLP7F.cjs} +16 -35
- package/dist/chunk-IPJ3TEYR.cjs +113 -0
- package/dist/chunk-KC7HB5GF.cjs +133 -0
- package/dist/chunk-KY3FYKP3.js +52 -0
- package/dist/chunk-LEUZ4FRC.cjs +52 -0
- package/dist/{chunk-H6FX45CP.cjs → chunk-LIXLD433.cjs} +37 -37
- package/dist/{chunk-6GAYGQDC.js → chunk-O5ML2I6O.js} +3 -3
- package/dist/{chunk-KI2VBONS.js → chunk-OET45HIR.js} +2 -2
- package/dist/{chunk-XNZWATSB.cjs → chunk-QCEQIRJQ.cjs} +85 -85
- package/dist/{chunk-HRI3ZMDM.cjs → chunk-RHXW4TA5.cjs} +3 -3
- package/dist/{chunk-UUTTJK77.cjs → chunk-SUF6WRXR.cjs} +2 -2
- package/dist/{chunk-RN767PO6.js → chunk-SUVZJ2CP.js} +15 -34
- package/dist/{chunk-FLUTRPLY.cjs → chunk-TLMRGLQQ.cjs} +16 -16
- package/dist/{chunk-DAS7M4RY.js → chunk-UILRJQFD.js} +2 -2
- package/dist/chunk-UKCJ43YL.cjs +1913 -0
- package/dist/{chunk-XQ33O5BC.cjs → chunk-X35BV5YT.cjs} +44 -44
- package/dist/{chunk-6HMEHNWW.cjs → chunk-XTU6QO2W.cjs} +26 -26
- package/dist/{chunk-VM6JYWXQ.js → chunk-ZQUANEK4.js} +2 -2
- package/dist/cms/index.cjs +5 -3
- package/dist/cms/index.js +18 -16
- package/dist/color/contrast.d.cts +14 -0
- package/dist/color/contrast.d.ts +14 -0
- package/dist/color/convert.d.cts +30 -0
- package/dist/color/convert.d.ts +30 -0
- package/dist/color/dual.d.cts +98 -0
- package/dist/color/dual.d.ts +98 -0
- package/dist/color/format.d.cts +12 -0
- package/dist/color/format.d.ts +12 -0
- package/dist/color/gamut.d.cts +12 -0
- package/dist/color/gamut.d.ts +12 -0
- package/dist/color/harmony.d.cts +22 -0
- package/dist/color/harmony.d.ts +22 -0
- package/dist/color/index.cjs +115 -0
- package/dist/color/index.d.cts +18 -0
- package/dist/color/index.d.ts +18 -0
- package/dist/color/index.js +115 -0
- package/dist/color/mix.d.cts +11 -0
- package/dist/color/mix.d.ts +11 -0
- package/dist/color/named.d.cts +5 -0
- package/dist/color/named.d.ts +5 -0
- package/dist/color/parse.d.cts +11 -0
- package/dist/color/parse.d.ts +11 -0
- package/dist/color/picker.d.cts +52 -0
- package/dist/color/picker.d.ts +52 -0
- package/dist/color/recent.d.cts +8 -0
- package/dist/color/recent.d.ts +8 -0
- package/dist/color/tools.d.cts +15 -0
- package/dist/color/tools.d.ts +15 -0
- package/dist/color/types.d.cts +41 -0
- package/dist/color/types.d.ts +41 -0
- package/dist/color/vision.d.cts +36 -0
- package/dist/color/vision.d.ts +36 -0
- package/dist/diagram/editorDocument.d.cts +12 -0
- package/dist/diagram/editorDocument.d.ts +12 -0
- package/dist/diagram/index.cjs +35 -1
- package/dist/diagram/index.d.cts +1 -0
- package/dist/diagram/index.d.ts +1 -0
- package/dist/diagram/index.js +34 -0
- package/dist/export/index.cjs +6 -4
- package/dist/export/index.js +5 -3
- package/dist/extensions/index.cjs +10 -8
- package/dist/extensions/index.js +9 -7
- package/dist/gradient/controller.d.cts +109 -0
- package/dist/gradient/controller.d.ts +109 -0
- package/dist/gradient/editor.d.cts +38 -0
- package/dist/gradient/editor.d.ts +38 -0
- package/dist/gradient/index.cjs +1549 -0
- package/dist/gradient/index.d.cts +5 -0
- package/dist/gradient/index.d.ts +5 -0
- package/dist/gradient/index.js +1549 -0
- package/dist/gradient/model.d.cts +94 -0
- package/dist/gradient/model.d.ts +94 -0
- package/dist/gradient/tools.d.cts +11 -0
- package/dist/gradient/tools.d.ts +11 -0
- package/dist/gradient/types.d.cts +44 -0
- package/dist/gradient/types.d.ts +44 -0
- package/dist/image-editor/index.cjs +649 -647
- package/dist/image-editor/index.js +6 -4
- package/dist/index.cjs +19 -17
- package/dist/index.js +16 -14
- package/dist/paint-editor/color.d.cts +3 -13
- package/dist/paint-editor/color.d.ts +3 -13
- package/dist/paint-editor/index.cjs +23 -68
- package/dist/paint-editor/index.js +15 -60
- package/dist/persistence/documentStore.d.cts +51 -0
- package/dist/persistence/documentStore.d.ts +51 -0
- package/dist/persistence/documentTools.d.cts +35 -0
- package/dist/persistence/documentTools.d.ts +35 -0
- package/dist/persistence/editorAutosave.d.cts +33 -0
- package/dist/persistence/editorAutosave.d.ts +33 -0
- package/dist/persistence/editorDocument.d.cts +118 -0
- package/dist/persistence/editorDocument.d.ts +118 -0
- package/dist/persistence/index.cjs +294 -1
- package/dist/persistence/index.d.cts +4 -0
- package/dist/persistence/index.d.ts +4 -0
- package/dist/persistence/index.js +293 -0
- package/dist/vector/index.cjs +950 -948
- package/dist/vector/index.js +5 -3
- package/dist/video-editor/index.cjs +5 -3
- package/dist/video-editor/index.js +4 -2
- package/package.json +21 -1
- package/skills/README.md +1 -0
- package/skills/pixerate-agent-tools/SKILL.md +21 -0
- package/skills/pixerate-color/SKILL.md +69 -0
- package/skills/pixerate-diagram/SKILL.md +13 -0
- package/dist/chunk-45VRG4RB.js +0 -65
- package/dist/chunk-5FXOR7F2.cjs +0 -65
|
@@ -7,7 +7,7 @@ var _chunkVKF3PWKRcjs = require('../chunk-VKF3PWKR.cjs');
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _chunkQCEQIRJQcjs = require('../chunk-QCEQIRJQ.cjs');
|
|
11
11
|
require('../chunk-A2IS7EHE.cjs');
|
|
12
12
|
|
|
13
13
|
|
|
@@ -44,7 +44,7 @@ require('../chunk-QT26RHKK.cjs');
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
var _chunkGNK7SESQcjs = require('../chunk-GNK7SESQ.cjs');
|
|
47
|
-
require('../chunk-
|
|
47
|
+
require('../chunk-BROJYMWU.cjs');
|
|
48
48
|
|
|
49
49
|
|
|
50
50
|
var _chunkJLWLX52Lcjs = require('../chunk-JLWLX52L.cjs');
|
|
@@ -54,7 +54,7 @@ var _chunkJLWLX52Lcjs = require('../chunk-JLWLX52L.cjs');
|
|
|
54
54
|
|
|
55
55
|
|
|
56
56
|
var _chunkUJGAA6AKcjs = require('../chunk-UJGAA6AK.cjs');
|
|
57
|
-
require('../chunk-
|
|
57
|
+
require('../chunk-RHXW4TA5.cjs');
|
|
58
58
|
|
|
59
59
|
|
|
60
60
|
|
|
@@ -224,9 +224,16 @@ require('../chunk-XFM3OCHU.cjs');
|
|
|
224
224
|
require('../chunk-NIBFDFYW.cjs');
|
|
225
225
|
require('../chunk-ALNIFK5G.cjs');
|
|
226
226
|
require('../chunk-UWEQ55MY.cjs');
|
|
227
|
-
require('../chunk-
|
|
227
|
+
require('../chunk-LEUZ4FRC.cjs');
|
|
228
228
|
require('../chunk-A6QWKBJP.cjs');
|
|
229
229
|
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
var _chunkUKCJ43YLcjs = require('../chunk-UKCJ43YL.cjs');
|
|
235
|
+
require('../chunk-IPJ3TEYR.cjs');
|
|
236
|
+
|
|
230
237
|
// src/paint-editor/document.ts
|
|
231
238
|
var MIN_CANVAS_SIDE = 1;
|
|
232
239
|
var MAX_CANVAS_SIDE = 16384;
|
|
@@ -1627,11 +1634,11 @@ function header(state, options) {
|
|
|
1627
1634
|
return out;
|
|
1628
1635
|
}
|
|
1629
1636
|
function serializePaintDocument(state, options = {}) {
|
|
1630
|
-
const { layers, assets } =
|
|
1637
|
+
const { layers, assets } = _chunkQCEQIRJQcjs.serializeLayers.call(void 0, state.layers);
|
|
1631
1638
|
return { ...header(state, options), layers, assets };
|
|
1632
1639
|
}
|
|
1633
1640
|
async function serializePaintDocumentExternal(state, store, options = {}) {
|
|
1634
|
-
const { layers, assets } = await
|
|
1641
|
+
const { layers, assets } = await _chunkQCEQIRJQcjs.serializeLayersExternal.call(void 0, state.layers, store);
|
|
1635
1642
|
return { ...header(state, options), layers, assets };
|
|
1636
1643
|
}
|
|
1637
1644
|
function paintLayersOnly(layers, problems) {
|
|
@@ -1668,7 +1675,7 @@ function deserializePaintDocument(raw) {
|
|
|
1668
1675
|
const canvas = normalizeCanvas({ width: r.width, height: r.height, dpi: _nullishCoalesce(r.dpi, () => ( void 0)) });
|
|
1669
1676
|
const paper = _chunkBXMIBMVGcjs.normalizePaper.call(void 0, _nullishCoalesce(r.paper, () => ( {})));
|
|
1670
1677
|
const assets = r.assets && typeof r.assets === "object" ? r.assets : {};
|
|
1671
|
-
const layers = paintLayersOnly(
|
|
1678
|
+
const layers = paintLayersOnly(_chunkQCEQIRJQcjs.deserializeLayers.call(void 0, r.layers, { assets, problems }), problems);
|
|
1672
1679
|
const wanted = typeof r.activeLayerId === "string" ? r.activeLayerId : null;
|
|
1673
1680
|
const activeLayerId = wanted && _chunkHGTDMKNEcjs.findLayer.call(void 0, layers, wanted) ? wanted : _nullishCoalesce(_optionalChain([_chunkHGTDMKNEcjs.flattenLayers.call(void 0, layers), 'access', _70 => _70.filter, 'call', _71 => _71((l) => l.type === "pixel"), 'access', _72 => _72.pop, 'call', _73 => _73(), 'optionalAccess', _74 => _74.id]), () => ( null));
|
|
1674
1681
|
const wetEvents = Array.isArray(r.wetEvents) ? r.wetEvents.filter((e) => e && typeof e === "object" && Number.isInteger(e.clock) && typeof e.kind === "string") : [];
|
|
@@ -1682,7 +1689,7 @@ async function deserializePaintDocumentAsync(raw, store) {
|
|
|
1682
1689
|
if (!raw || typeof raw !== "object") throw new Error("Not a paint document: expected a JSON object.");
|
|
1683
1690
|
const r = raw;
|
|
1684
1691
|
const problems = [];
|
|
1685
|
-
const assets = await
|
|
1692
|
+
const assets = await _chunkQCEQIRJQcjs.resolveExternalAssets.call(void 0, _nullishCoalesce(r.assets, () => ( {})), store, problems);
|
|
1686
1693
|
const loaded = deserializePaintDocument({ ...r, assets });
|
|
1687
1694
|
return { ...loaded, problems: [...problems, ...loaded.problems] };
|
|
1688
1695
|
}
|
|
@@ -2767,60 +2774,8 @@ function hslToRgb(h, s, l) {
|
|
|
2767
2774
|
const v = l + c / 2;
|
|
2768
2775
|
return hsvToRgb(h, v === 0 ? 0 : c / v, v);
|
|
2769
2776
|
}
|
|
2770
|
-
|
|
2771
|
-
|
|
2772
|
-
[60, 30],
|
|
2773
|
-
[120, 60],
|
|
2774
|
-
[180, 120],
|
|
2775
|
-
[240, 240],
|
|
2776
|
-
[300, 280],
|
|
2777
|
-
[360, 360]
|
|
2778
|
-
];
|
|
2779
|
-
function piecewise(v, from) {
|
|
2780
|
-
const x = (v % 360 + 360) % 360;
|
|
2781
|
-
const to = from === 0 ? 1 : 0;
|
|
2782
|
-
for (let i = 1; i < RYB_STOPS.length; i++) {
|
|
2783
|
-
const a = RYB_STOPS[i - 1];
|
|
2784
|
-
const b = RYB_STOPS[i];
|
|
2785
|
-
if (x <= b[from]) return a[to] + (x - a[from]) / (b[from] - a[from]) * (b[to] - a[to]);
|
|
2786
|
-
}
|
|
2787
|
-
return x;
|
|
2788
|
-
}
|
|
2789
|
-
function wheelToHue(angle, wheel) {
|
|
2790
|
-
return wheel === "rgb" ? (angle % 360 + 360) % 360 : piecewise(angle, 0);
|
|
2791
|
-
}
|
|
2792
|
-
function hueToWheel(hue, wheel) {
|
|
2793
|
-
return wheel === "rgb" ? (hue % 360 + 360) % 360 : piecewise(hue, 1);
|
|
2794
|
-
}
|
|
2795
|
-
var HARMONY_KINDS = ["complementary", "split-complementary", "analogous", "triadic", "tetradic", "square", "monochromatic"];
|
|
2796
|
-
function colorHarmony(base, kind, options = {}) {
|
|
2797
|
-
const wheel = _nullishCoalesce(options.wheel, () => ( "ryb"));
|
|
2798
|
-
const [r, g, b] = parseHexColor(base, "base");
|
|
2799
|
-
const hsv = rgbToHsv(r, g, b);
|
|
2800
|
-
const start = hueToWheel(hsv.h, wheel);
|
|
2801
|
-
const at = (angle) => {
|
|
2802
|
-
const a = (angle % 360 + 360) % 360;
|
|
2803
|
-
const [rr, gg, bb] = hsvToRgb(wheelToHue(a, wheel), hsv.s, hsv.v);
|
|
2804
|
-
return { color: rgbToHexColor(rr, gg, bb), angle: Math.round(a * 10) / 10 };
|
|
2805
|
-
};
|
|
2806
|
-
const spread = _nullishCoalesce(options.spread, () => ( 30));
|
|
2807
|
-
const offsets = {
|
|
2808
|
-
complementary: [0, 180],
|
|
2809
|
-
"split-complementary": [0, 180 - spread, 180 + spread],
|
|
2810
|
-
analogous: [0, -spread, spread],
|
|
2811
|
-
triadic: [0, 120, 240],
|
|
2812
|
-
tetradic: [0, 60, 180, 240],
|
|
2813
|
-
square: [0, 90, 180, 270]
|
|
2814
|
-
};
|
|
2815
|
-
if (kind === "monochromatic") {
|
|
2816
|
-
const hsl = rgbToHsl(r, g, b);
|
|
2817
|
-
const steps = [0, -0.3, -0.15, 0.15, 0.3];
|
|
2818
|
-
return steps.map((d) => {
|
|
2819
|
-
const [rr, gg, bb] = d === 0 ? [r, g, b] : hslToRgb(hsl.h, hsl.s, Math.min(0.97, Math.max(0.03, hsl.l + d)));
|
|
2820
|
-
return { color: rgbToHexColor(rr, gg, bb), angle: Math.round(start * 10) / 10 };
|
|
2821
|
-
});
|
|
2822
|
-
}
|
|
2823
|
-
return offsets[kind].map((o, i) => i === 0 ? { color: rgbToHexColor(r, g, b), angle: Math.round(start * 10) / 10 } : at(start + o));
|
|
2777
|
+
function colorHarmony2(base, kind, options = {}) {
|
|
2778
|
+
return _chunkUKCJ43YLcjs.colorHarmony.call(void 0, base, kind, options);
|
|
2824
2779
|
}
|
|
2825
2780
|
function readSwatch(raw) {
|
|
2826
2781
|
if (!raw || typeof raw !== "object") return null;
|
|
@@ -5346,7 +5301,7 @@ var PaintEditorController = (_class10 = class _PaintEditorController {
|
|
|
5346
5301
|
return next.type === "group" ? { ...next, children: toStandard(next.children) } : next;
|
|
5347
5302
|
});
|
|
5348
5303
|
const layers = toStandard(dried);
|
|
5349
|
-
const result =
|
|
5304
|
+
const result = _chunkQCEQIRJQcjs.exportPsd.call(void 0, { width, height, layers: [paperLayer, ...layers], merged, resolution: dpi });
|
|
5350
5305
|
for (const [mode, names] of changed) {
|
|
5351
5306
|
const label = _nullishCoalesce(_optionalChain([_chunkCWM3CUUXcjs.BLEND_MODES, 'access', _268 => _268.find, 'call', _269 => _269((m) => m.id === mode), 'optionalAccess', _270 => _270.label]), () => ( mode));
|
|
5352
5307
|
const std = _nullishCoalesce(_optionalChain([_chunkCWM3CUUXcjs.BLEND_MODES, 'access', _271 => _271.find, 'call', _272 => _272((m) => m.id === _chunkCWM3CUUXcjs.standardBlendMode.call(void 0, mode)), 'optionalAccess', _273 => _273.label]), () => ( _chunkCWM3CUUXcjs.standardBlendMode.call(void 0, mode)));
|
|
@@ -5696,7 +5651,7 @@ var PaintEditorController = (_class10 = class _PaintEditorController {
|
|
|
5696
5651
|
/** Colour harmonies around a colour (default the paint colour) on the painter's RYB wheel or the RGB wheel. */
|
|
5697
5652
|
harmony(kind, options = {}) {
|
|
5698
5653
|
try {
|
|
5699
|
-
return
|
|
5654
|
+
return colorHarmony2(options.color === void 0 ? this.color : parseColor(options.color), kind, options);
|
|
5700
5655
|
} catch (e) {
|
|
5701
5656
|
throw new PaintEditorError(e.message);
|
|
5702
5657
|
}
|
|
@@ -6390,7 +6345,7 @@ function createPaintGuideTools(c) {
|
|
|
6390
6345
|
inputSchema: {
|
|
6391
6346
|
type: "object",
|
|
6392
6347
|
properties: {
|
|
6393
|
-
kind: { type: "string", enum: [...HARMONY_KINDS], description: "The harmony." },
|
|
6348
|
+
kind: { type: "string", enum: [..._chunkUKCJ43YLcjs.HARMONY_KINDS], description: "The harmony." },
|
|
6394
6349
|
color: { ...COLOR2, description: "Base colour #rrggbb (default the paint colour)." },
|
|
6395
6350
|
wheel: { type: "string", enum: ["ryb", "rgb"], description: "ryb (painter\u2019s wheel, default) or rgb." },
|
|
6396
6351
|
spread: { type: "number", minimum: 5, maximum: 90, description: "Analogous and split-complementary spread in degrees (default 30)." }
|
|
@@ -8149,7 +8104,7 @@ function renderColorWheel(size, wheel, inner = 0.64) {
|
|
|
8149
8104
|
const dy = y + 0.5 - r;
|
|
8150
8105
|
const d = Math.hypot(dx, dy) / r;
|
|
8151
8106
|
if (d > 1 || d < inner) continue;
|
|
8152
|
-
const [cr, cg, cb] = hsvToRgb(wheelToHue(wheelAngle(dx, dy), wheel), 1, 1);
|
|
8107
|
+
const [cr, cg, cb] = hsvToRgb(_chunkUKCJ43YLcjs.wheelToHue.call(void 0, wheelAngle(dx, dy), wheel), 1, 1);
|
|
8153
8108
|
const i = (y * size + x) * 4;
|
|
8154
8109
|
const edge = Math.min(1, (1 - d) * r, (d - inner) * r);
|
|
8155
8110
|
data[i] = cr;
|
|
@@ -8163,7 +8118,7 @@ function renderColorWheel(size, wheel, inner = 0.64) {
|
|
|
8163
8118
|
function wheelPick(dx, dy, wheel, color) {
|
|
8164
8119
|
const [r, g, b] = parseHexColor(color);
|
|
8165
8120
|
const { s, v } = rgbToHsv(r, g, b);
|
|
8166
|
-
const [nr, ng, nb] = hsvToRgb(wheelToHue(wheelAngle(dx, dy), wheel), s || 1, v || 1);
|
|
8121
|
+
const [nr, ng, nb] = hsvToRgb(_chunkUKCJ43YLcjs.wheelToHue.call(void 0, wheelAngle(dx, dy), wheel), s || 1, v || 1);
|
|
8167
8122
|
return rgbToHexColor(nr, ng, nb);
|
|
8168
8123
|
}
|
|
8169
8124
|
var BLEND_MENU_GROUPS = [
|
|
@@ -8905,4 +8860,4 @@ function createPaintEffectsToolProvider(controller, options = {}) {
|
|
|
8905
8860
|
|
|
8906
8861
|
|
|
8907
8862
|
|
|
8908
|
-
exports.BLEND_MENU_GROUPS = BLEND_MENU_GROUPS; exports.BLEND_MODES = _chunkCWM3CUUXcjs.BLEND_MODES; exports.BRUSH_ID = _chunkBXMIBMVGcjs.BRUSH_ID; exports.BRUSH_ROTATIONS = _chunkBXMIBMVGcjs.BRUSH_ROTATIONS; exports.BRUSH_SLIDERS = BRUSH_SLIDERS; exports.BUILTIN_BRUSHES = _chunkBXMIBMVGcjs.BUILTIN_BRUSHES; exports.BristleStroke = _chunkBXMIBMVGcjs.BristleStroke; exports.DEFAULT_BEHAVIOR = _chunkBXMIBMVGcjs.DEFAULT_BEHAVIOR; exports.DEFAULT_BRISTLE = _chunkBXMIBMVGcjs.DEFAULT_BRISTLE; exports.DEFAULT_BRUSH_ID = _chunkBXMIBMVGcjs.DEFAULT_BRUSH_ID; exports.DEFAULT_DPI = DEFAULT_DPI; exports.DEFAULT_DYNAMICS = _chunkBXMIBMVGcjs.DEFAULT_DYNAMICS; exports.DEFAULT_FLOW = _chunkGNK7SESQcjs.DEFAULT_FLOW; exports.DEFAULT_IMPASTO = _chunkBXMIBMVGcjs.DEFAULT_IMPASTO; exports.DEFAULT_LIGHTING = DEFAULT_LIGHTING; exports.DEFAULT_MULTI_COLOR = _chunkBXMIBMVGcjs.DEFAULT_MULTI_COLOR; exports.DEFAULT_PAINT_GRADIENT = _chunkLRRCMRSLcjs.DEFAULT_PAINT_GRADIENT; exports.DEFAULT_PAINT_GRADIENT_MAPPING = _chunkLRRCMRSLcjs.DEFAULT_PAINT_GRADIENT_MAPPING; exports.DEFAULT_PAPER = _chunkBXMIBMVGcjs.DEFAULT_PAPER; exports.DEFAULT_PARTICLE = _chunkBXMIBMVGcjs.DEFAULT_PARTICLE; exports.DEFAULT_STICKER = _chunkBXMIBMVGcjs.DEFAULT_STICKER; exports.DEFAULT_SWATCHES = DEFAULT_SWATCHES; exports.DEFAULT_VIEW = DEFAULT_VIEW; exports.DEFAULT_WET_BRUSH = _chunkBXMIBMVGcjs.DEFAULT_WET_BRUSH; exports.DEFAULT_WET_PARAMS = _chunkGNK7SESQcjs.DEFAULT_WET_PARAMS; exports.DryStroke = _chunkBXMIBMVGcjs.DryStroke; exports.GPU_LEAD = GPU_LEAD; exports.GRAIN_PATTERNS = _chunkLRRCMRSLcjs.GRAIN_PATTERNS; exports.GRAIN_TILE = _chunkLRRCMRSLcjs.GRAIN_TILE; exports.HARMONY_KINDS = HARMONY_KINDS; exports.IDENTITY_AFFINE = IDENTITY_AFFINE; exports.IDENTITY_COPY = _chunkBXMIBMVGcjs.IDENTITY_COPY; exports.IMPASTO_TOOLS = _chunkBXMIBMVGcjs.IMPASTO_TOOLS; exports.IMPASTO_TOOL_LABELS = IMPASTO_TOOL_LABELS; exports.LIGHT_SLIDERS = LIGHT_SLIDERS; exports.LitCache = LitCache; exports.MAX_BRUSH_SIZE = _chunkLRRCMRSLcjs.MAX_BRUSH_SIZE; exports.MAX_CANVAS_SIDE = MAX_CANVAS_SIDE; exports.MAX_COORDINATE = MAX_COORDINATE; exports.MAX_IMAGE_SIDE = MAX_IMAGE_SIDE; exports.MAX_ZOOM = MAX_ZOOM; exports.MIN_CANVAS_SIDE = MIN_CANVAS_SIDE; exports.MIN_ZOOM = MIN_ZOOM; exports.MIXING_PAD_HEIGHT = MIXING_PAD_HEIGHT; exports.MIXING_PAD_WIDTH = MIXING_PAD_WIDTH; exports.MULTI_COLOR_MODES = _chunkBXMIBMVGcjs.MULTI_COLOR_MODES; exports.MixingPad = MixingPad; exports.PAD_SAMPLE_SIZES = PAD_SAMPLE_SIZES; exports.PAINTERLY_BLEND_MODES = _chunkCWM3CUUXcjs.PAINTERLY_BLEND_MODES; exports.PAINT_BRUSH_CATEGORIES = _chunkBXMIBMVGcjs.PAINT_BRUSH_CATEGORIES; exports.PAINT_BRUSH_ENGINES = _chunkBXMIBMVGcjs.PAINT_BRUSH_ENGINES; exports.PAINT_COLOR_JSON_SCHEMA = _chunkLRRCMRSLcjs.PAINT_COLOR_JSON_SCHEMA; exports.PAINT_EFFECT_PLACES = PAINT_EFFECT_PLACES; exports.PAINT_FORMAT = PAINT_FORMAT; exports.PAINT_GRADIENT_FULL_SPEED = _chunkLRRCMRSLcjs.PAINT_GRADIENT_FULL_SPEED; exports.PAINT_GRADIENT_JSON_SCHEMA = _chunkLRRCMRSLcjs.PAINT_GRADIENT_JSON_SCHEMA; exports.PAINT_GRADIENT_KIT = _chunkLRRCMRSLcjs.PAINT_GRADIENT_KIT; exports.PAINT_GRADIENT_MAPPINGS = _chunkLRRCMRSLcjs.PAINT_GRADIENT_MAPPINGS; exports.PAINT_GRADIENT_MAPPING_LABELS = _chunkLRRCMRSLcjs.PAINT_GRADIENT_MAPPING_LABELS; exports.PAINT_GRADIENT_PRESETS = _chunkLRRCMRSLcjs.PAINT_GRADIENT_PRESETS; exports.PAINT_GRADIENT_REPEATS = _chunkLRRCMRSLcjs.PAINT_GRADIENT_REPEATS; exports.PAINT_GRADIENT_REPEAT_LABELS = _chunkLRRCMRSLcjs.PAINT_GRADIENT_REPEAT_LABELS; exports.PAINT_GRADIENT_SPACES = _chunkLRRCMRSLcjs.PAINT_GRADIENT_SPACES; exports.PAINT_GRADIENT_SPACE_LABELS = _chunkLRRCMRSLcjs.PAINT_GRADIENT_SPACE_LABELS; exports.PAINT_SCHEMA_VERSION = PAINT_SCHEMA_VERSION; exports.PAINT_SOURCE_JSON_SCHEMA = _chunkLRRCMRSLcjs.PAINT_SOURCE_JSON_SCHEMA; exports.PAINT_TOOLS = PAINT_TOOLS; exports.PAPER_EFFECT_BLENDS = PAPER_EFFECT_BLENDS; exports.PAPER_EFFECT_NODE_ID = PAPER_EFFECT_NODE_ID; exports.PAPER_FAMILIES = _chunkBXMIBMVGcjs.PAPER_FAMILIES; exports.PAPER_LIBRARY = _chunkBXMIBMVGcjs.PAPER_LIBRARY; exports.PAPER_NODE_ID = PAPER_NODE_ID; exports.PAPER_SLIDERS = PAPER_SLIDERS; exports.PAPER_TARGET = PAPER_TARGET; exports.PARTICLE_KINDS = _chunkBXMIBMVGcjs.PARTICLE_KINDS; exports.PARTICLE_KIND_LABELS = PARTICLE_KIND_LABELS; exports.PARTICLE_RENDERS = _chunkBXMIBMVGcjs.PARTICLE_RENDERS; exports.PARTICLE_RENDER_LABELS = PARTICLE_RENDER_LABELS; exports.PaintCanvasPresenter = PaintCanvasPresenter; exports.PaintDabStroke = PaintDabStroke; exports.PaintDirector = PaintDirector; exports.PaintDocumentError = PaintDocumentError; exports.PaintEditorController = PaintEditorController; exports.PaintEditorError = PaintEditorError; exports.PaintEffectsRenderer = PaintEffectsRenderer; exports.PaintGesture = PaintGesture; exports.PaintGradientSampler = _chunkLRRCMRSLcjs.PaintGradientSampler; exports.PaintPresence = PaintPresence; exports.PaintSourceError = _chunkLRRCMRSLcjs.PaintSourceError; exports.PaintStrokeSession = PaintStrokeSession; exports.PaintWetLayers = PaintWetLayers; exports.PaperGrain = _chunkLRRCMRSLcjs.PaperGrain; exports.ParticleStroke = _chunkBXMIBMVGcjs.ParticleStroke; exports.PenDabWalker = _chunkBXMIBMVGcjs.PenDabWalker; exports.PenSmoother = _chunkBXMIBMVGcjs.PenSmoother; exports.PerspectiveSnapper = PerspectiveSnapper; exports.SNAP_DECIDE_DISTANCE = SNAP_DECIDE_DISTANCE; exports.STAMP_KINDS = _chunkBXMIBMVGcjs.STAMP_KINDS; exports.STAMP_LABELS = STAMP_LABELS; exports.STENCIL_KINDS = STENCIL_KINDS; exports.STENCIL_SHAPES = STENCIL_SHAPES; exports.STICKER_SLIDERS = STICKER_SLIDERS; exports.SYMMETRY_MODES = SYMMETRY_MODES; exports.StencilSnapper = StencilSnapper; exports.StickerSpray = _chunkBXMIBMVGcjs.StickerSpray; exports.TRACING_NODE_ID = TRACING_NODE_ID; exports.ThickStrokeDriver = ThickStrokeDriver; exports.TileableNoise = _chunkLRRCMRSLcjs.TileableNoise; exports.WET_FLOW_KINDS = _chunkGNK7SESQcjs.WET_FLOW_KINDS; exports.WET_GPU_MODES = WET_GPU_MODES; exports.WET_GPU_OPTIONS = WET_GPU_OPTIONS; exports.WET_MEDIA = _chunkBXMIBMVGcjs.WET_MEDIA; exports.WET_MEDIUM_LABELS = WET_MEDIUM_LABELS; exports.WET_MEDIUM_PARAMS = WET_MEDIUM_PARAMS; exports.WET_PARAM_KEYS = _chunkGNK7SESQcjs.WET_PARAM_KEYS; exports.WET_PARAM_SCHEMA = WET_PARAM_SCHEMA; exports.WET_PARAM_SLIDERS = WET_PARAM_SLIDERS; exports.WET_SPEED_SLIDER = WET_SPEED_SLIDER; exports.WET_TILT_SLIDERS = WET_TILT_SLIDERS; exports.WET_TOOLS = _chunkBXMIBMVGcjs.WET_TOOLS; exports.WET_TOOL_LABELS = WET_TOOL_LABELS; exports.WetStrokeDriver = WetStrokeDriver; exports.addPaintGradientStop = _chunkLRRCMRSLcjs.addPaintGradientStop; exports.affineCopy = affineCopy; exports.applyAffine = applyAffine; exports.brushEngineControls = brushEngineControls; exports.brushLoadColor = brushLoadColor; exports.brushLoadForStroke = brushLoadForStroke; exports.brushTakesPaint = _chunkBXMIBMVGcjs.brushTakesPaint; exports.brushToJSON = _chunkBXMIBMVGcjs.brushToJSON; exports.buildTimeLapse = buildTimeLapse; exports.checkPaintEffectPlace = checkPaintEffectPlace; exports.clonePaper = _chunkBXMIBMVGcjs.clonePaper; exports.colorHarmony = colorHarmony; exports.composeAffine = composeAffine; exports.contactSheet = contactSheet; exports.createPaintCompositor = createPaintCompositor; exports.createPaintDocument = createPaintDocument; exports.createPaintEditorToolProvider = createPaintEditorToolProvider; exports.createPaintEffectsToolProvider = createPaintEffectsToolProvider; exports.createPaintLayer = createPaintLayer; exports.createPaintReplayTools = createPaintReplayTools; exports.createPaintStickerTools = createPaintStickerTools; exports.createPaintThickTools = createPaintThickTools; exports.createPaintWetTools = createPaintWetTools; exports.decodeImageBlob = decodeImageBlob; exports.defaultGuides = defaultGuides; exports.defaultImageEncoder = defaultImageEncoder; exports.deserializePaintDocument = deserializePaintDocument; exports.deserializePaintDocumentAsync = deserializePaintDocumentAsync; exports.documentExtensions = documentExtensions; exports.documentToScreen = documentToScreen; exports.downloadBytes = downloadBytes; exports.downsampleRgba = downsampleRgba; exports.drawSticker = _chunkBXMIBMVGcjs.drawSticker; exports.drawWaterOverlay = drawWaterOverlay; exports.effectLayersToJSON = effectLayersToJSON; exports.emptiedLayers = emptiedLayers; exports.emptyThickChannels = emptyThickChannels; exports.fitZoom = fitZoom; exports.grainCatch = _chunkLRRCMRSLcjs.grainCatch; exports.grainHeights = _chunkLRRCMRSLcjs.grainHeights; exports.guideOverlay = guideOverlay; exports.handlePaintShortcut = handlePaintShortcut; exports.hash2 = _chunkLRRCMRSLcjs.hash2; exports.hexToPaintRgb = _chunkLRRCMRSLcjs.hexToPaintRgb; exports.hexToRgb8 = _chunkBXMIBMVGcjs.hexToRgb8; exports.hslToRgb = hslToRgb; exports.hsvToRgb = hsvToRgb; exports.hueToWheel = hueToWheel; exports.invertAffine = invertAffine; exports.isBlendMode = _chunkCWM3CUUXcjs.isBlendMode; exports.isGradientPaint = _chunkLRRCMRSLcjs.isGradientPaint; exports.isPainterlyBlendMode = _chunkCWM3CUUXcjs.isPainterlyBlendMode; exports.isPalmTouch = isPalmTouch; exports.isWetBrush = _chunkBXMIBMVGcjs.isWetBrush; exports.isWetCapable = _chunkBXMIBMVGcjs.isWetCapable; exports.lightTile = lightTile; exports.lightingKey = lightingKey; exports.mapPenPoint = mapPenPoint; exports.mix32 = _chunkLRRCMRSLcjs.mix32; exports.mixPixels = mixPixels; exports.mixerLoadForStroke = mixerLoadForStroke; exports.mixerTip = _chunkBXMIBMVGcjs.mixerTip; exports.multiColorForDab = multiColorForDab; exports.multiColorGradient = multiColorGradient; exports.multiColorPalette = multiColorPalette; exports.multiColorSliders = multiColorSliders; exports.multiColorToPaint = _chunkBXMIBMVGcjs.multiColorToPaint; exports.newPaintLayerId = newPaintLayerId; exports.nextPaperEffectVersion = nextPaperEffectVersion; exports.normalizeBehavior = _chunkBXMIBMVGcjs.normalizeBehavior; exports.normalizeBristle = _chunkBXMIBMVGcjs.normalizeBristle; exports.normalizeBrushStroke = normalizeBrushStroke; exports.normalizeCanvas = normalizeCanvas; exports.normalizeDynamics = _chunkBXMIBMVGcjs.normalizeDynamics; exports.normalizeFlow = _chunkGNK7SESQcjs.normalizeFlow; exports.normalizeHexColor = _chunkLRRCMRSLcjs.normalizeHexColor; exports.normalizeImpasto = _chunkBXMIBMVGcjs.normalizeImpasto; exports.normalizeLighting = normalizeLighting; exports.normalizeMultiColor = _chunkBXMIBMVGcjs.normalizeMultiColor; exports.normalizePaintBrush = _chunkBXMIBMVGcjs.normalizePaintBrush; exports.normalizePaper = _chunkBXMIBMVGcjs.normalizePaper; exports.normalizeParticle = _chunkBXMIBMVGcjs.normalizeParticle; exports.normalizePerspective = normalizePerspective; exports.normalizeRotation = normalizeRotation; exports.normalizeStencil = normalizeStencil; exports.normalizeStickerSettings = _chunkBXMIBMVGcjs.normalizeStickerSettings; exports.normalizeStickerUpdate = _chunkBXMIBMVGcjs.normalizeStickerUpdate; exports.normalizeSymmetry = normalizeSymmetry; exports.normalizeView = normalizeView; exports.normalizeWetBrush = _chunkBXMIBMVGcjs.normalizeWetBrush; exports.normalizeWetParams = _chunkGNK7SESQcjs.normalizeWetParams; exports.overPixels = overPixels; exports.padSampleRadius = padSampleRadius; exports.paintGradientMappingFor = _chunkLRRCMRSLcjs.paintGradientMappingFor; exports.paintPlaybackPanel = paintPlaybackPanel; exports.paintSourceColor = _chunkLRRCMRSLcjs.paintSourceColor; exports.paintSourceCss = _chunkLRRCMRSLcjs.paintSourceCss; exports.paintToMultiColor = _chunkBXMIBMVGcjs.paintToMultiColor; exports.paperEffectFromJSON = paperEffectFromJSON; exports.paperEffectToJSON = paperEffectToJSON; exports.paperGrain = paperGrain; exports.paperKey = paperKey; exports.paperNode = paperNode; exports.paperPreset = _chunkBXMIBMVGcjs.paperPreset; exports.parseBrushLibrary = _chunkBXMIBMVGcjs.parseBrushLibrary; exports.parseHexColor = parseHexColor; exports.parsePaintSource = _chunkLRRCMRSLcjs.parsePaintSource; exports.patchBrushValue = patchBrushValue; exports.patchPath = patchPath; exports.penOrientation = _chunkBXMIBMVGcjs.penOrientation; exports.perspectiveDirections = perspectiveDirections; exports.perspectiveGuideLines = perspectiveGuideLines; exports.planPaintToolPlayback = planPaintToolPlayback; exports.pointerToPenPoint = pointerToPenPoint; exports.quickStencil = quickStencil; exports.rand01 = _chunkLRRCMRSLcjs.rand01; exports.randSigned = _chunkLRRCMRSLcjs.randSigned; exports.readPaintEffectSource = readPaintEffectSource; exports.readPaintSource = _chunkLRRCMRSLcjs.readPaintSource; exports.readPath = readPath; exports.readSwatch = readSwatch; exports.reliefInfo = reliefInfo; exports.removePaintGradientStop = _chunkLRRCMRSLcjs.removePaintGradientStop; exports.renderBrushThumbnail = renderBrushThumbnail; exports.renderColorWheel = renderColorWheel; exports.renderPaper = _chunkBXMIBMVGcjs.renderPaper; exports.renderStickers = _chunkBXMIBMVGcjs.renderStickers; exports.replayFrame = replayFrame; exports.replayItems = replayItems; exports.replayPainting = replayPainting; exports.resolvePaintGradient = _chunkLRRCMRSLcjs.resolvePaintGradient; exports.reversePaintGradient = _chunkLRRCMRSLcjs.reversePaintGradient; exports.rgbToHexColor = rgbToHexColor; exports.rgbToHsl = rgbToHsl; exports.rgbToHsv = rgbToHsv; exports.samplePressure = samplePressure; exports.scalePaintGradient = _chunkLRRCMRSLcjs.scalePaintGradient; exports.scaleStencil = scaleStencil; exports.screenToDocument = screenToDocument; exports.seedFromString = _chunkLRRCMRSLcjs.seedFromString; exports.serializePaintDocument = serializePaintDocument; exports.serializePaintDocumentExternal = serializePaintDocumentExternal; exports.solidPaint = _chunkLRRCMRSLcjs.solidPaint; exports.stampCoverage = _chunkBXMIBMVGcjs.stampCoverage; exports.standardBlendMode = _chunkCWM3CUUXcjs.standardBlendMode; exports.startWetClock = startWetClock; exports.stencilMask = stencilMask; exports.stencilOutline = stencilOutline; exports.stickerRect = _chunkBXMIBMVGcjs.stickerRect; exports.stickerSurface = _chunkBXMIBMVGcjs.stickerSurface; exports.strokeBounds = strokeBounds; exports.strokeDuration = strokeDuration; exports.strokeSchedule = strokeSchedule; exports.sweepPath = sweepPath; exports.symmetryAxisAngles = symmetryAxisAngles; exports.symmetryAxisSegments = symmetryAxisSegments; exports.symmetryCopies = symmetryCopies; exports.thickFromJSON = thickFromJSON; exports.thickToJSON = thickToJSON; exports.thumbnailStroke = thumbnailStroke; exports.tiltToOrientation = _chunkBXMIBMVGcjs.tiltToOrientation; exports.timeLapseVideo = timeLapseVideo; exports.timeLapseZip = timeLapseZip; exports.toStrokePoint = _chunkBXMIBMVGcjs.toStrokePoint; exports.toggleStamp = toggleStamp; exports.updatePaintGradientStop = _chunkLRRCMRSLcjs.updatePaintGradientStop; exports.usesPaintExchange = _chunkBXMIBMVGcjs.usesPaintExchange; exports.variationAffine = variationAffine; exports.varyStroke = varyStroke; exports.viewCssTransform = viewCssTransform; exports.viewMatrix = viewMatrix; exports.viewPenToDocument = viewPenToDocument; exports.wetEngineSummary = wetEngineSummary; exports.wetPaperInput = wetPaperInput; exports.wetPigmentOf = wetPigmentOf; exports.wetSupport = _chunkGNK7SESQcjs.wetSupport; exports.wheelAngle = wheelAngle; exports.wheelPick = wheelPick; exports.wheelPoint = wheelPoint; exports.wheelToHue = wheelToHue; exports.withPaintPlayback = withPaintPlayback;
|
|
8863
|
+
exports.BLEND_MENU_GROUPS = BLEND_MENU_GROUPS; exports.BLEND_MODES = _chunkCWM3CUUXcjs.BLEND_MODES; exports.BRUSH_ID = _chunkBXMIBMVGcjs.BRUSH_ID; exports.BRUSH_ROTATIONS = _chunkBXMIBMVGcjs.BRUSH_ROTATIONS; exports.BRUSH_SLIDERS = BRUSH_SLIDERS; exports.BUILTIN_BRUSHES = _chunkBXMIBMVGcjs.BUILTIN_BRUSHES; exports.BristleStroke = _chunkBXMIBMVGcjs.BristleStroke; exports.DEFAULT_BEHAVIOR = _chunkBXMIBMVGcjs.DEFAULT_BEHAVIOR; exports.DEFAULT_BRISTLE = _chunkBXMIBMVGcjs.DEFAULT_BRISTLE; exports.DEFAULT_BRUSH_ID = _chunkBXMIBMVGcjs.DEFAULT_BRUSH_ID; exports.DEFAULT_DPI = DEFAULT_DPI; exports.DEFAULT_DYNAMICS = _chunkBXMIBMVGcjs.DEFAULT_DYNAMICS; exports.DEFAULT_FLOW = _chunkGNK7SESQcjs.DEFAULT_FLOW; exports.DEFAULT_IMPASTO = _chunkBXMIBMVGcjs.DEFAULT_IMPASTO; exports.DEFAULT_LIGHTING = DEFAULT_LIGHTING; exports.DEFAULT_MULTI_COLOR = _chunkBXMIBMVGcjs.DEFAULT_MULTI_COLOR; exports.DEFAULT_PAINT_GRADIENT = _chunkLRRCMRSLcjs.DEFAULT_PAINT_GRADIENT; exports.DEFAULT_PAINT_GRADIENT_MAPPING = _chunkLRRCMRSLcjs.DEFAULT_PAINT_GRADIENT_MAPPING; exports.DEFAULT_PAPER = _chunkBXMIBMVGcjs.DEFAULT_PAPER; exports.DEFAULT_PARTICLE = _chunkBXMIBMVGcjs.DEFAULT_PARTICLE; exports.DEFAULT_STICKER = _chunkBXMIBMVGcjs.DEFAULT_STICKER; exports.DEFAULT_SWATCHES = DEFAULT_SWATCHES; exports.DEFAULT_VIEW = DEFAULT_VIEW; exports.DEFAULT_WET_BRUSH = _chunkBXMIBMVGcjs.DEFAULT_WET_BRUSH; exports.DEFAULT_WET_PARAMS = _chunkGNK7SESQcjs.DEFAULT_WET_PARAMS; exports.DryStroke = _chunkBXMIBMVGcjs.DryStroke; exports.GPU_LEAD = GPU_LEAD; exports.GRAIN_PATTERNS = _chunkLRRCMRSLcjs.GRAIN_PATTERNS; exports.GRAIN_TILE = _chunkLRRCMRSLcjs.GRAIN_TILE; exports.HARMONY_KINDS = _chunkUKCJ43YLcjs.HARMONY_KINDS; exports.IDENTITY_AFFINE = IDENTITY_AFFINE; exports.IDENTITY_COPY = _chunkBXMIBMVGcjs.IDENTITY_COPY; exports.IMPASTO_TOOLS = _chunkBXMIBMVGcjs.IMPASTO_TOOLS; exports.IMPASTO_TOOL_LABELS = IMPASTO_TOOL_LABELS; exports.LIGHT_SLIDERS = LIGHT_SLIDERS; exports.LitCache = LitCache; exports.MAX_BRUSH_SIZE = _chunkLRRCMRSLcjs.MAX_BRUSH_SIZE; exports.MAX_CANVAS_SIDE = MAX_CANVAS_SIDE; exports.MAX_COORDINATE = MAX_COORDINATE; exports.MAX_IMAGE_SIDE = MAX_IMAGE_SIDE; exports.MAX_ZOOM = MAX_ZOOM; exports.MIN_CANVAS_SIDE = MIN_CANVAS_SIDE; exports.MIN_ZOOM = MIN_ZOOM; exports.MIXING_PAD_HEIGHT = MIXING_PAD_HEIGHT; exports.MIXING_PAD_WIDTH = MIXING_PAD_WIDTH; exports.MULTI_COLOR_MODES = _chunkBXMIBMVGcjs.MULTI_COLOR_MODES; exports.MixingPad = MixingPad; exports.PAD_SAMPLE_SIZES = PAD_SAMPLE_SIZES; exports.PAINTERLY_BLEND_MODES = _chunkCWM3CUUXcjs.PAINTERLY_BLEND_MODES; exports.PAINT_BRUSH_CATEGORIES = _chunkBXMIBMVGcjs.PAINT_BRUSH_CATEGORIES; exports.PAINT_BRUSH_ENGINES = _chunkBXMIBMVGcjs.PAINT_BRUSH_ENGINES; exports.PAINT_COLOR_JSON_SCHEMA = _chunkLRRCMRSLcjs.PAINT_COLOR_JSON_SCHEMA; exports.PAINT_EFFECT_PLACES = PAINT_EFFECT_PLACES; exports.PAINT_FORMAT = PAINT_FORMAT; exports.PAINT_GRADIENT_FULL_SPEED = _chunkLRRCMRSLcjs.PAINT_GRADIENT_FULL_SPEED; exports.PAINT_GRADIENT_JSON_SCHEMA = _chunkLRRCMRSLcjs.PAINT_GRADIENT_JSON_SCHEMA; exports.PAINT_GRADIENT_KIT = _chunkLRRCMRSLcjs.PAINT_GRADIENT_KIT; exports.PAINT_GRADIENT_MAPPINGS = _chunkLRRCMRSLcjs.PAINT_GRADIENT_MAPPINGS; exports.PAINT_GRADIENT_MAPPING_LABELS = _chunkLRRCMRSLcjs.PAINT_GRADIENT_MAPPING_LABELS; exports.PAINT_GRADIENT_PRESETS = _chunkLRRCMRSLcjs.PAINT_GRADIENT_PRESETS; exports.PAINT_GRADIENT_REPEATS = _chunkLRRCMRSLcjs.PAINT_GRADIENT_REPEATS; exports.PAINT_GRADIENT_REPEAT_LABELS = _chunkLRRCMRSLcjs.PAINT_GRADIENT_REPEAT_LABELS; exports.PAINT_GRADIENT_SPACES = _chunkLRRCMRSLcjs.PAINT_GRADIENT_SPACES; exports.PAINT_GRADIENT_SPACE_LABELS = _chunkLRRCMRSLcjs.PAINT_GRADIENT_SPACE_LABELS; exports.PAINT_SCHEMA_VERSION = PAINT_SCHEMA_VERSION; exports.PAINT_SOURCE_JSON_SCHEMA = _chunkLRRCMRSLcjs.PAINT_SOURCE_JSON_SCHEMA; exports.PAINT_TOOLS = PAINT_TOOLS; exports.PAPER_EFFECT_BLENDS = PAPER_EFFECT_BLENDS; exports.PAPER_EFFECT_NODE_ID = PAPER_EFFECT_NODE_ID; exports.PAPER_FAMILIES = _chunkBXMIBMVGcjs.PAPER_FAMILIES; exports.PAPER_LIBRARY = _chunkBXMIBMVGcjs.PAPER_LIBRARY; exports.PAPER_NODE_ID = PAPER_NODE_ID; exports.PAPER_SLIDERS = PAPER_SLIDERS; exports.PAPER_TARGET = PAPER_TARGET; exports.PARTICLE_KINDS = _chunkBXMIBMVGcjs.PARTICLE_KINDS; exports.PARTICLE_KIND_LABELS = PARTICLE_KIND_LABELS; exports.PARTICLE_RENDERS = _chunkBXMIBMVGcjs.PARTICLE_RENDERS; exports.PARTICLE_RENDER_LABELS = PARTICLE_RENDER_LABELS; exports.PaintCanvasPresenter = PaintCanvasPresenter; exports.PaintDabStroke = PaintDabStroke; exports.PaintDirector = PaintDirector; exports.PaintDocumentError = PaintDocumentError; exports.PaintEditorController = PaintEditorController; exports.PaintEditorError = PaintEditorError; exports.PaintEffectsRenderer = PaintEffectsRenderer; exports.PaintGesture = PaintGesture; exports.PaintGradientSampler = _chunkLRRCMRSLcjs.PaintGradientSampler; exports.PaintPresence = PaintPresence; exports.PaintSourceError = _chunkLRRCMRSLcjs.PaintSourceError; exports.PaintStrokeSession = PaintStrokeSession; exports.PaintWetLayers = PaintWetLayers; exports.PaperGrain = _chunkLRRCMRSLcjs.PaperGrain; exports.ParticleStroke = _chunkBXMIBMVGcjs.ParticleStroke; exports.PenDabWalker = _chunkBXMIBMVGcjs.PenDabWalker; exports.PenSmoother = _chunkBXMIBMVGcjs.PenSmoother; exports.PerspectiveSnapper = PerspectiveSnapper; exports.SNAP_DECIDE_DISTANCE = SNAP_DECIDE_DISTANCE; exports.STAMP_KINDS = _chunkBXMIBMVGcjs.STAMP_KINDS; exports.STAMP_LABELS = STAMP_LABELS; exports.STENCIL_KINDS = STENCIL_KINDS; exports.STENCIL_SHAPES = STENCIL_SHAPES; exports.STICKER_SLIDERS = STICKER_SLIDERS; exports.SYMMETRY_MODES = SYMMETRY_MODES; exports.StencilSnapper = StencilSnapper; exports.StickerSpray = _chunkBXMIBMVGcjs.StickerSpray; exports.TRACING_NODE_ID = TRACING_NODE_ID; exports.ThickStrokeDriver = ThickStrokeDriver; exports.TileableNoise = _chunkLRRCMRSLcjs.TileableNoise; exports.WET_FLOW_KINDS = _chunkGNK7SESQcjs.WET_FLOW_KINDS; exports.WET_GPU_MODES = WET_GPU_MODES; exports.WET_GPU_OPTIONS = WET_GPU_OPTIONS; exports.WET_MEDIA = _chunkBXMIBMVGcjs.WET_MEDIA; exports.WET_MEDIUM_LABELS = WET_MEDIUM_LABELS; exports.WET_MEDIUM_PARAMS = WET_MEDIUM_PARAMS; exports.WET_PARAM_KEYS = _chunkGNK7SESQcjs.WET_PARAM_KEYS; exports.WET_PARAM_SCHEMA = WET_PARAM_SCHEMA; exports.WET_PARAM_SLIDERS = WET_PARAM_SLIDERS; exports.WET_SPEED_SLIDER = WET_SPEED_SLIDER; exports.WET_TILT_SLIDERS = WET_TILT_SLIDERS; exports.WET_TOOLS = _chunkBXMIBMVGcjs.WET_TOOLS; exports.WET_TOOL_LABELS = WET_TOOL_LABELS; exports.WetStrokeDriver = WetStrokeDriver; exports.addPaintGradientStop = _chunkLRRCMRSLcjs.addPaintGradientStop; exports.affineCopy = affineCopy; exports.applyAffine = applyAffine; exports.brushEngineControls = brushEngineControls; exports.brushLoadColor = brushLoadColor; exports.brushLoadForStroke = brushLoadForStroke; exports.brushTakesPaint = _chunkBXMIBMVGcjs.brushTakesPaint; exports.brushToJSON = _chunkBXMIBMVGcjs.brushToJSON; exports.buildTimeLapse = buildTimeLapse; exports.checkPaintEffectPlace = checkPaintEffectPlace; exports.clonePaper = _chunkBXMIBMVGcjs.clonePaper; exports.colorHarmony = colorHarmony2; exports.composeAffine = composeAffine; exports.contactSheet = contactSheet; exports.createPaintCompositor = createPaintCompositor; exports.createPaintDocument = createPaintDocument; exports.createPaintEditorToolProvider = createPaintEditorToolProvider; exports.createPaintEffectsToolProvider = createPaintEffectsToolProvider; exports.createPaintLayer = createPaintLayer; exports.createPaintReplayTools = createPaintReplayTools; exports.createPaintStickerTools = createPaintStickerTools; exports.createPaintThickTools = createPaintThickTools; exports.createPaintWetTools = createPaintWetTools; exports.decodeImageBlob = decodeImageBlob; exports.defaultGuides = defaultGuides; exports.defaultImageEncoder = defaultImageEncoder; exports.deserializePaintDocument = deserializePaintDocument; exports.deserializePaintDocumentAsync = deserializePaintDocumentAsync; exports.documentExtensions = documentExtensions; exports.documentToScreen = documentToScreen; exports.downloadBytes = downloadBytes; exports.downsampleRgba = downsampleRgba; exports.drawSticker = _chunkBXMIBMVGcjs.drawSticker; exports.drawWaterOverlay = drawWaterOverlay; exports.effectLayersToJSON = effectLayersToJSON; exports.emptiedLayers = emptiedLayers; exports.emptyThickChannels = emptyThickChannels; exports.fitZoom = fitZoom; exports.grainCatch = _chunkLRRCMRSLcjs.grainCatch; exports.grainHeights = _chunkLRRCMRSLcjs.grainHeights; exports.guideOverlay = guideOverlay; exports.handlePaintShortcut = handlePaintShortcut; exports.hash2 = _chunkLRRCMRSLcjs.hash2; exports.hexToPaintRgb = _chunkLRRCMRSLcjs.hexToPaintRgb; exports.hexToRgb8 = _chunkBXMIBMVGcjs.hexToRgb8; exports.hslToRgb = hslToRgb; exports.hsvToRgb = hsvToRgb; exports.hueToWheel = _chunkUKCJ43YLcjs.hueToWheel; exports.invertAffine = invertAffine; exports.isBlendMode = _chunkCWM3CUUXcjs.isBlendMode; exports.isGradientPaint = _chunkLRRCMRSLcjs.isGradientPaint; exports.isPainterlyBlendMode = _chunkCWM3CUUXcjs.isPainterlyBlendMode; exports.isPalmTouch = isPalmTouch; exports.isWetBrush = _chunkBXMIBMVGcjs.isWetBrush; exports.isWetCapable = _chunkBXMIBMVGcjs.isWetCapable; exports.lightTile = lightTile; exports.lightingKey = lightingKey; exports.mapPenPoint = mapPenPoint; exports.mix32 = _chunkLRRCMRSLcjs.mix32; exports.mixPixels = mixPixels; exports.mixerLoadForStroke = mixerLoadForStroke; exports.mixerTip = _chunkBXMIBMVGcjs.mixerTip; exports.multiColorForDab = multiColorForDab; exports.multiColorGradient = multiColorGradient; exports.multiColorPalette = multiColorPalette; exports.multiColorSliders = multiColorSliders; exports.multiColorToPaint = _chunkBXMIBMVGcjs.multiColorToPaint; exports.newPaintLayerId = newPaintLayerId; exports.nextPaperEffectVersion = nextPaperEffectVersion; exports.normalizeBehavior = _chunkBXMIBMVGcjs.normalizeBehavior; exports.normalizeBristle = _chunkBXMIBMVGcjs.normalizeBristle; exports.normalizeBrushStroke = normalizeBrushStroke; exports.normalizeCanvas = normalizeCanvas; exports.normalizeDynamics = _chunkBXMIBMVGcjs.normalizeDynamics; exports.normalizeFlow = _chunkGNK7SESQcjs.normalizeFlow; exports.normalizeHexColor = _chunkLRRCMRSLcjs.normalizeHexColor; exports.normalizeImpasto = _chunkBXMIBMVGcjs.normalizeImpasto; exports.normalizeLighting = normalizeLighting; exports.normalizeMultiColor = _chunkBXMIBMVGcjs.normalizeMultiColor; exports.normalizePaintBrush = _chunkBXMIBMVGcjs.normalizePaintBrush; exports.normalizePaper = _chunkBXMIBMVGcjs.normalizePaper; exports.normalizeParticle = _chunkBXMIBMVGcjs.normalizeParticle; exports.normalizePerspective = normalizePerspective; exports.normalizeRotation = normalizeRotation; exports.normalizeStencil = normalizeStencil; exports.normalizeStickerSettings = _chunkBXMIBMVGcjs.normalizeStickerSettings; exports.normalizeStickerUpdate = _chunkBXMIBMVGcjs.normalizeStickerUpdate; exports.normalizeSymmetry = normalizeSymmetry; exports.normalizeView = normalizeView; exports.normalizeWetBrush = _chunkBXMIBMVGcjs.normalizeWetBrush; exports.normalizeWetParams = _chunkGNK7SESQcjs.normalizeWetParams; exports.overPixels = overPixels; exports.padSampleRadius = padSampleRadius; exports.paintGradientMappingFor = _chunkLRRCMRSLcjs.paintGradientMappingFor; exports.paintPlaybackPanel = paintPlaybackPanel; exports.paintSourceColor = _chunkLRRCMRSLcjs.paintSourceColor; exports.paintSourceCss = _chunkLRRCMRSLcjs.paintSourceCss; exports.paintToMultiColor = _chunkBXMIBMVGcjs.paintToMultiColor; exports.paperEffectFromJSON = paperEffectFromJSON; exports.paperEffectToJSON = paperEffectToJSON; exports.paperGrain = paperGrain; exports.paperKey = paperKey; exports.paperNode = paperNode; exports.paperPreset = _chunkBXMIBMVGcjs.paperPreset; exports.parseBrushLibrary = _chunkBXMIBMVGcjs.parseBrushLibrary; exports.parseHexColor = parseHexColor; exports.parsePaintSource = _chunkLRRCMRSLcjs.parsePaintSource; exports.patchBrushValue = patchBrushValue; exports.patchPath = patchPath; exports.penOrientation = _chunkBXMIBMVGcjs.penOrientation; exports.perspectiveDirections = perspectiveDirections; exports.perspectiveGuideLines = perspectiveGuideLines; exports.planPaintToolPlayback = planPaintToolPlayback; exports.pointerToPenPoint = pointerToPenPoint; exports.quickStencil = quickStencil; exports.rand01 = _chunkLRRCMRSLcjs.rand01; exports.randSigned = _chunkLRRCMRSLcjs.randSigned; exports.readPaintEffectSource = readPaintEffectSource; exports.readPaintSource = _chunkLRRCMRSLcjs.readPaintSource; exports.readPath = readPath; exports.readSwatch = readSwatch; exports.reliefInfo = reliefInfo; exports.removePaintGradientStop = _chunkLRRCMRSLcjs.removePaintGradientStop; exports.renderBrushThumbnail = renderBrushThumbnail; exports.renderColorWheel = renderColorWheel; exports.renderPaper = _chunkBXMIBMVGcjs.renderPaper; exports.renderStickers = _chunkBXMIBMVGcjs.renderStickers; exports.replayFrame = replayFrame; exports.replayItems = replayItems; exports.replayPainting = replayPainting; exports.resolvePaintGradient = _chunkLRRCMRSLcjs.resolvePaintGradient; exports.reversePaintGradient = _chunkLRRCMRSLcjs.reversePaintGradient; exports.rgbToHexColor = rgbToHexColor; exports.rgbToHsl = rgbToHsl; exports.rgbToHsv = rgbToHsv; exports.samplePressure = samplePressure; exports.scalePaintGradient = _chunkLRRCMRSLcjs.scalePaintGradient; exports.scaleStencil = scaleStencil; exports.screenToDocument = screenToDocument; exports.seedFromString = _chunkLRRCMRSLcjs.seedFromString; exports.serializePaintDocument = serializePaintDocument; exports.serializePaintDocumentExternal = serializePaintDocumentExternal; exports.solidPaint = _chunkLRRCMRSLcjs.solidPaint; exports.stampCoverage = _chunkBXMIBMVGcjs.stampCoverage; exports.standardBlendMode = _chunkCWM3CUUXcjs.standardBlendMode; exports.startWetClock = startWetClock; exports.stencilMask = stencilMask; exports.stencilOutline = stencilOutline; exports.stickerRect = _chunkBXMIBMVGcjs.stickerRect; exports.stickerSurface = _chunkBXMIBMVGcjs.stickerSurface; exports.strokeBounds = strokeBounds; exports.strokeDuration = strokeDuration; exports.strokeSchedule = strokeSchedule; exports.sweepPath = sweepPath; exports.symmetryAxisAngles = symmetryAxisAngles; exports.symmetryAxisSegments = symmetryAxisSegments; exports.symmetryCopies = symmetryCopies; exports.thickFromJSON = thickFromJSON; exports.thickToJSON = thickToJSON; exports.thumbnailStroke = thumbnailStroke; exports.tiltToOrientation = _chunkBXMIBMVGcjs.tiltToOrientation; exports.timeLapseVideo = timeLapseVideo; exports.timeLapseZip = timeLapseZip; exports.toStrokePoint = _chunkBXMIBMVGcjs.toStrokePoint; exports.toggleStamp = toggleStamp; exports.updatePaintGradientStop = _chunkLRRCMRSLcjs.updatePaintGradientStop; exports.usesPaintExchange = _chunkBXMIBMVGcjs.usesPaintExchange; exports.variationAffine = variationAffine; exports.varyStroke = varyStroke; exports.viewCssTransform = viewCssTransform; exports.viewMatrix = viewMatrix; exports.viewPenToDocument = viewPenToDocument; exports.wetEngineSummary = wetEngineSummary; exports.wetPaperInput = wetPaperInput; exports.wetPigmentOf = wetPigmentOf; exports.wetSupport = _chunkGNK7SESQcjs.wetSupport; exports.wheelAngle = wheelAngle; exports.wheelPick = wheelPick; exports.wheelPoint = wheelPoint; exports.wheelToHue = _chunkUKCJ43YLcjs.wheelToHue; exports.withPaintPlayback = withPaintPlayback;
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
resolveExternalAssets,
|
|
8
8
|
serializeLayers,
|
|
9
9
|
serializeLayersExternal
|
|
10
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-ZQUANEK4.js";
|
|
11
11
|
import "../chunk-3CI7FRMK.js";
|
|
12
12
|
import {
|
|
13
13
|
EffectRendererPool
|
|
@@ -44,7 +44,7 @@ import {
|
|
|
44
44
|
pointerPressure,
|
|
45
45
|
wetSupport
|
|
46
46
|
} from "../chunk-LQLZHP6F.js";
|
|
47
|
-
import "../chunk-
|
|
47
|
+
import "../chunk-HVQVHUTV.js";
|
|
48
48
|
import {
|
|
49
49
|
writeZip
|
|
50
50
|
} from "../chunk-AZCODQO5.js";
|
|
@@ -54,7 +54,7 @@ import {
|
|
|
54
54
|
realPresenceClock,
|
|
55
55
|
tweenPresenceCursor
|
|
56
56
|
} from "../chunk-PEEP2YR7.js";
|
|
57
|
-
import "../chunk-
|
|
57
|
+
import "../chunk-FLOGD3QB.js";
|
|
58
58
|
import {
|
|
59
59
|
BRUSH_ID,
|
|
60
60
|
BRUSH_ROTATIONS,
|
|
@@ -224,8 +224,15 @@ import "../chunk-QGHEDC7B.js";
|
|
|
224
224
|
import "../chunk-SIFAIGB3.js";
|
|
225
225
|
import "../chunk-CIQIM2IP.js";
|
|
226
226
|
import "../chunk-VDGBHYC7.js";
|
|
227
|
-
import "../chunk-
|
|
227
|
+
import "../chunk-KY3FYKP3.js";
|
|
228
228
|
import "../chunk-2WPNAGHI.js";
|
|
229
|
+
import {
|
|
230
|
+
HARMONY_KINDS,
|
|
231
|
+
colorHarmony,
|
|
232
|
+
hueToWheel,
|
|
233
|
+
wheelToHue
|
|
234
|
+
} from "../chunk-AA34BA7G.js";
|
|
235
|
+
import "../chunk-6ONMQ6WF.js";
|
|
229
236
|
|
|
230
237
|
// src/paint-editor/document.ts
|
|
231
238
|
var MIN_CANVAS_SIDE = 1;
|
|
@@ -2767,60 +2774,8 @@ function hslToRgb(h, s, l) {
|
|
|
2767
2774
|
const v = l + c / 2;
|
|
2768
2775
|
return hsvToRgb(h, v === 0 ? 0 : c / v, v);
|
|
2769
2776
|
}
|
|
2770
|
-
|
|
2771
|
-
|
|
2772
|
-
[60, 30],
|
|
2773
|
-
[120, 60],
|
|
2774
|
-
[180, 120],
|
|
2775
|
-
[240, 240],
|
|
2776
|
-
[300, 280],
|
|
2777
|
-
[360, 360]
|
|
2778
|
-
];
|
|
2779
|
-
function piecewise(v, from) {
|
|
2780
|
-
const x = (v % 360 + 360) % 360;
|
|
2781
|
-
const to = from === 0 ? 1 : 0;
|
|
2782
|
-
for (let i = 1; i < RYB_STOPS.length; i++) {
|
|
2783
|
-
const a = RYB_STOPS[i - 1];
|
|
2784
|
-
const b = RYB_STOPS[i];
|
|
2785
|
-
if (x <= b[from]) return a[to] + (x - a[from]) / (b[from] - a[from]) * (b[to] - a[to]);
|
|
2786
|
-
}
|
|
2787
|
-
return x;
|
|
2788
|
-
}
|
|
2789
|
-
function wheelToHue(angle, wheel) {
|
|
2790
|
-
return wheel === "rgb" ? (angle % 360 + 360) % 360 : piecewise(angle, 0);
|
|
2791
|
-
}
|
|
2792
|
-
function hueToWheel(hue, wheel) {
|
|
2793
|
-
return wheel === "rgb" ? (hue % 360 + 360) % 360 : piecewise(hue, 1);
|
|
2794
|
-
}
|
|
2795
|
-
var HARMONY_KINDS = ["complementary", "split-complementary", "analogous", "triadic", "tetradic", "square", "monochromatic"];
|
|
2796
|
-
function colorHarmony(base, kind, options = {}) {
|
|
2797
|
-
const wheel = options.wheel ?? "ryb";
|
|
2798
|
-
const [r, g, b] = parseHexColor(base, "base");
|
|
2799
|
-
const hsv = rgbToHsv(r, g, b);
|
|
2800
|
-
const start = hueToWheel(hsv.h, wheel);
|
|
2801
|
-
const at = (angle) => {
|
|
2802
|
-
const a = (angle % 360 + 360) % 360;
|
|
2803
|
-
const [rr, gg, bb] = hsvToRgb(wheelToHue(a, wheel), hsv.s, hsv.v);
|
|
2804
|
-
return { color: rgbToHexColor(rr, gg, bb), angle: Math.round(a * 10) / 10 };
|
|
2805
|
-
};
|
|
2806
|
-
const spread = options.spread ?? 30;
|
|
2807
|
-
const offsets = {
|
|
2808
|
-
complementary: [0, 180],
|
|
2809
|
-
"split-complementary": [0, 180 - spread, 180 + spread],
|
|
2810
|
-
analogous: [0, -spread, spread],
|
|
2811
|
-
triadic: [0, 120, 240],
|
|
2812
|
-
tetradic: [0, 60, 180, 240],
|
|
2813
|
-
square: [0, 90, 180, 270]
|
|
2814
|
-
};
|
|
2815
|
-
if (kind === "monochromatic") {
|
|
2816
|
-
const hsl = rgbToHsl(r, g, b);
|
|
2817
|
-
const steps = [0, -0.3, -0.15, 0.15, 0.3];
|
|
2818
|
-
return steps.map((d) => {
|
|
2819
|
-
const [rr, gg, bb] = d === 0 ? [r, g, b] : hslToRgb(hsl.h, hsl.s, Math.min(0.97, Math.max(0.03, hsl.l + d)));
|
|
2820
|
-
return { color: rgbToHexColor(rr, gg, bb), angle: Math.round(start * 10) / 10 };
|
|
2821
|
-
});
|
|
2822
|
-
}
|
|
2823
|
-
return offsets[kind].map((o, i) => i === 0 ? { color: rgbToHexColor(r, g, b), angle: Math.round(start * 10) / 10 } : at(start + o));
|
|
2777
|
+
function colorHarmony2(base, kind, options = {}) {
|
|
2778
|
+
return colorHarmony(base, kind, options);
|
|
2824
2779
|
}
|
|
2825
2780
|
function readSwatch(raw) {
|
|
2826
2781
|
if (!raw || typeof raw !== "object") return null;
|
|
@@ -5696,7 +5651,7 @@ var PaintEditorController = class _PaintEditorController {
|
|
|
5696
5651
|
/** Colour harmonies around a colour (default the paint colour) on the painter's RYB wheel or the RGB wheel. */
|
|
5697
5652
|
harmony(kind, options = {}) {
|
|
5698
5653
|
try {
|
|
5699
|
-
return
|
|
5654
|
+
return colorHarmony2(options.color === void 0 ? this.color : parseColor(options.color), kind, options);
|
|
5700
5655
|
} catch (e) {
|
|
5701
5656
|
throw new PaintEditorError(e.message);
|
|
5702
5657
|
}
|
|
@@ -8735,7 +8690,7 @@ export {
|
|
|
8735
8690
|
buildTimeLapse,
|
|
8736
8691
|
checkPaintEffectPlace,
|
|
8737
8692
|
clonePaper,
|
|
8738
|
-
colorHarmony,
|
|
8693
|
+
colorHarmony2 as colorHarmony,
|
|
8739
8694
|
composeAffine,
|
|
8740
8695
|
contactSheet,
|
|
8741
8696
|
createPaintCompositor,
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type EditorDocument, type EditorDocumentFile } from "./editorDocument.cjs";
|
|
2
|
+
import type { LoadReport } from "./migrate.cjs";
|
|
3
|
+
import type { StorageAdapter } from "./storage.cjs";
|
|
4
|
+
/** One saved document as the index lists it (no document read needed). */
|
|
5
|
+
export interface SavedEditorDocument {
|
|
6
|
+
/** Storage key of the document, e.g. `"diagram/release-flow"`; pass it to `open`. */
|
|
7
|
+
key: string;
|
|
8
|
+
kind: string;
|
|
9
|
+
name: string;
|
|
10
|
+
formatVersion: number;
|
|
11
|
+
/** ISO time of the last save. */
|
|
12
|
+
savedAt: string;
|
|
13
|
+
}
|
|
14
|
+
export interface EditorDocumentStoreOptions {
|
|
15
|
+
storage: StorageAdapter;
|
|
16
|
+
/** Prefix of every key this store writes (default `pixerate.documents`). */
|
|
17
|
+
namespace?: string;
|
|
18
|
+
/** Wall clock for `savedAt` (default `Date.now`). */
|
|
19
|
+
now?: () => number;
|
|
20
|
+
}
|
|
21
|
+
export interface EditorDocumentStore {
|
|
22
|
+
/**
|
|
23
|
+
* Saves the current document under `name` (one document per kind and name:
|
|
24
|
+
* saving the same name again replaces it).
|
|
25
|
+
*/
|
|
26
|
+
save(doc: EditorDocument, name: string): Promise<SavedEditorDocument>;
|
|
27
|
+
/** Saved documents, newest first; only one kind's with `kind`. */
|
|
28
|
+
list(kind?: string): Promise<SavedEditorDocument[]>;
|
|
29
|
+
/** The saved file, or `null` when nothing is stored under `key`. */
|
|
30
|
+
read(key: string): Promise<EditorDocumentFile | null>;
|
|
31
|
+
/**
|
|
32
|
+
* Loads a saved document into `doc` (see `EditorDocument.loadDocument`) and
|
|
33
|
+
* returns its entry with the load report. Throws when `key` is unknown.
|
|
34
|
+
*/
|
|
35
|
+
open(doc: EditorDocument, key: string, options?: {
|
|
36
|
+
history?: "reset" | "record";
|
|
37
|
+
}): Promise<SavedEditorDocument & {
|
|
38
|
+
report: LoadReport;
|
|
39
|
+
}>;
|
|
40
|
+
/** Deletes a saved document; `false` when there was none. */
|
|
41
|
+
remove(key: string): Promise<boolean>;
|
|
42
|
+
}
|
|
43
|
+
/** `"Release flow v2"` → `"release-flow-v2"` (the key part of a saved name). */
|
|
44
|
+
export declare function slugifyDocumentName(name: string): string;
|
|
45
|
+
/**
|
|
46
|
+
* Named documents on a key/value `StorageAdapter`, for every editor kind:
|
|
47
|
+
* each file under its own key plus one index entry for listing. Operations
|
|
48
|
+
* run one at a time, so concurrent saves do not lose index entries. The index
|
|
49
|
+
* is cached after the first read: use one store per storage namespace.
|
|
50
|
+
*/
|
|
51
|
+
export declare function createEditorDocumentStore(options: EditorDocumentStoreOptions): EditorDocumentStore;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type EditorDocument, type EditorDocumentFile } from "./editorDocument.js";
|
|
2
|
+
import type { LoadReport } from "./migrate.js";
|
|
3
|
+
import type { StorageAdapter } from "./storage.js";
|
|
4
|
+
/** One saved document as the index lists it (no document read needed). */
|
|
5
|
+
export interface SavedEditorDocument {
|
|
6
|
+
/** Storage key of the document, e.g. `"diagram/release-flow"`; pass it to `open`. */
|
|
7
|
+
key: string;
|
|
8
|
+
kind: string;
|
|
9
|
+
name: string;
|
|
10
|
+
formatVersion: number;
|
|
11
|
+
/** ISO time of the last save. */
|
|
12
|
+
savedAt: string;
|
|
13
|
+
}
|
|
14
|
+
export interface EditorDocumentStoreOptions {
|
|
15
|
+
storage: StorageAdapter;
|
|
16
|
+
/** Prefix of every key this store writes (default `pixerate.documents`). */
|
|
17
|
+
namespace?: string;
|
|
18
|
+
/** Wall clock for `savedAt` (default `Date.now`). */
|
|
19
|
+
now?: () => number;
|
|
20
|
+
}
|
|
21
|
+
export interface EditorDocumentStore {
|
|
22
|
+
/**
|
|
23
|
+
* Saves the current document under `name` (one document per kind and name:
|
|
24
|
+
* saving the same name again replaces it).
|
|
25
|
+
*/
|
|
26
|
+
save(doc: EditorDocument, name: string): Promise<SavedEditorDocument>;
|
|
27
|
+
/** Saved documents, newest first; only one kind's with `kind`. */
|
|
28
|
+
list(kind?: string): Promise<SavedEditorDocument[]>;
|
|
29
|
+
/** The saved file, or `null` when nothing is stored under `key`. */
|
|
30
|
+
read(key: string): Promise<EditorDocumentFile | null>;
|
|
31
|
+
/**
|
|
32
|
+
* Loads a saved document into `doc` (see `EditorDocument.loadDocument`) and
|
|
33
|
+
* returns its entry with the load report. Throws when `key` is unknown.
|
|
34
|
+
*/
|
|
35
|
+
open(doc: EditorDocument, key: string, options?: {
|
|
36
|
+
history?: "reset" | "record";
|
|
37
|
+
}): Promise<SavedEditorDocument & {
|
|
38
|
+
report: LoadReport;
|
|
39
|
+
}>;
|
|
40
|
+
/** Deletes a saved document; `false` when there was none. */
|
|
41
|
+
remove(key: string): Promise<boolean>;
|
|
42
|
+
}
|
|
43
|
+
/** `"Release flow v2"` → `"release-flow-v2"` (the key part of a saved name). */
|
|
44
|
+
export declare function slugifyDocumentName(name: string): string;
|
|
45
|
+
/**
|
|
46
|
+
* Named documents on a key/value `StorageAdapter`, for every editor kind:
|
|
47
|
+
* each file under its own key plus one index entry for listing. Operations
|
|
48
|
+
* run one at a time, so concurrent saves do not lose index entries. The index
|
|
49
|
+
* is cached after the first read: use one store per storage namespace.
|
|
50
|
+
*/
|
|
51
|
+
export declare function createEditorDocumentStore(options: EditorDocumentStoreOptions): EditorDocumentStore;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { AgentToolProvider } from "../tools/registry.cjs";
|
|
2
|
+
import type { EditorDocumentStore } from "./documentStore.cjs";
|
|
3
|
+
import type { EditorDocument } from "./editorDocument.cjs";
|
|
4
|
+
export interface DocumentToolProviderOptions {
|
|
5
|
+
/** Provider id (default `<kind>-document`). */
|
|
6
|
+
id?: string;
|
|
7
|
+
/** Tool-name prefix (`<namespace>__<name>`); defaults to the id, `''` for bare names. */
|
|
8
|
+
namespace?: string;
|
|
9
|
+
/** Toolset title (default "<Noun> document"). */
|
|
10
|
+
title?: string;
|
|
11
|
+
/** The skill that documents the editor's tools, e.g. `pixerate-diagram`. */
|
|
12
|
+
skill?: string;
|
|
13
|
+
/** What the document is called in descriptions (default the kind with spaces, e.g. "video project"). */
|
|
14
|
+
noun?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Add `undo_<kind>` / `redo_<kind>` (default `true`). Pass `false` for editors
|
|
17
|
+
* whose own provider already has them.
|
|
18
|
+
*/
|
|
19
|
+
history?: boolean;
|
|
20
|
+
/** Saved documents: adds `save_<kind>_document`, `list_saved_<kind>_documents` and `open_saved_<kind>_document`. */
|
|
21
|
+
store?: EditorDocumentStore;
|
|
22
|
+
/** Name `save_<kind>_document` uses when none is given (default "Untitled <noun>"). */
|
|
23
|
+
name?: () => string | undefined;
|
|
24
|
+
/** `get_<kind>_document` refuses documents whose JSON is longer than this (default 200000 characters). */
|
|
25
|
+
maxChars?: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* The same document tools for every editor, named after `doc.kind`:
|
|
29
|
+
* `get_<kind>_document`, `load_<kind>_document`, `undo_<kind>`, `redo_<kind>`
|
|
30
|
+
* and, with a `store`, `save_<kind>_document`, `list_saved_<kind>_documents`
|
|
31
|
+
* and `open_saved_<kind>_document`. Loads are checked before anything changes
|
|
32
|
+
* and are one undo step where the editor supports it. A read-only document
|
|
33
|
+
* keeps its read tools; its write tools refuse with the reason.
|
|
34
|
+
*/
|
|
35
|
+
export declare function createDocumentToolProvider(doc: EditorDocument, options?: DocumentToolProviderOptions): AgentToolProvider;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { AgentToolProvider } from "../tools/registry.js";
|
|
2
|
+
import type { EditorDocumentStore } from "./documentStore.js";
|
|
3
|
+
import type { EditorDocument } from "./editorDocument.js";
|
|
4
|
+
export interface DocumentToolProviderOptions {
|
|
5
|
+
/** Provider id (default `<kind>-document`). */
|
|
6
|
+
id?: string;
|
|
7
|
+
/** Tool-name prefix (`<namespace>__<name>`); defaults to the id, `''` for bare names. */
|
|
8
|
+
namespace?: string;
|
|
9
|
+
/** Toolset title (default "<Noun> document"). */
|
|
10
|
+
title?: string;
|
|
11
|
+
/** The skill that documents the editor's tools, e.g. `pixerate-diagram`. */
|
|
12
|
+
skill?: string;
|
|
13
|
+
/** What the document is called in descriptions (default the kind with spaces, e.g. "video project"). */
|
|
14
|
+
noun?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Add `undo_<kind>` / `redo_<kind>` (default `true`). Pass `false` for editors
|
|
17
|
+
* whose own provider already has them.
|
|
18
|
+
*/
|
|
19
|
+
history?: boolean;
|
|
20
|
+
/** Saved documents: adds `save_<kind>_document`, `list_saved_<kind>_documents` and `open_saved_<kind>_document`. */
|
|
21
|
+
store?: EditorDocumentStore;
|
|
22
|
+
/** Name `save_<kind>_document` uses when none is given (default "Untitled <noun>"). */
|
|
23
|
+
name?: () => string | undefined;
|
|
24
|
+
/** `get_<kind>_document` refuses documents whose JSON is longer than this (default 200000 characters). */
|
|
25
|
+
maxChars?: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* The same document tools for every editor, named after `doc.kind`:
|
|
29
|
+
* `get_<kind>_document`, `load_<kind>_document`, `undo_<kind>`, `redo_<kind>`
|
|
30
|
+
* and, with a `store`, `save_<kind>_document`, `list_saved_<kind>_documents`
|
|
31
|
+
* and `open_saved_<kind>_document`. Loads are checked before anything changes
|
|
32
|
+
* and are one undo step where the editor supports it. A read-only document
|
|
33
|
+
* keeps its read tools; its write tools refuse with the reason.
|
|
34
|
+
*/
|
|
35
|
+
export declare function createDocumentToolProvider(doc: EditorDocument, options?: DocumentToolProviderOptions): AgentToolProvider;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type AutosaveController, type AutosaveControllerOptions, type AutosaveRecovery } from "./autosave.cjs";
|
|
2
|
+
import { type EditorDocument, type EditorDocumentFile } from "./editorDocument.cjs";
|
|
3
|
+
import type { LoadReport } from "./migrate.cjs";
|
|
4
|
+
import { type DirtyFlagSource, type RevisionTracker } from "./revisions.cjs";
|
|
5
|
+
export interface EditorAutosaveOptions extends Omit<AutosaveControllerOptions<EditorDocumentFile>, "getSnapshot" | "serialize" | "deserialize" | "revision" | "savedRevision" | "key"> {
|
|
6
|
+
/** Snapshot key (default the document's `kind`). */
|
|
7
|
+
key?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Saved-vs-current flag (e.g. `bindDirtyToHistory`), so undoing back to the
|
|
10
|
+
* saved state needs no snapshot. Without it, every change counts until `markClean()`.
|
|
11
|
+
*/
|
|
12
|
+
dirty?: DirtyFlagSource;
|
|
13
|
+
}
|
|
14
|
+
export interface EditorAutosave {
|
|
15
|
+
readonly controller: AutosaveController<EditorDocumentFile>;
|
|
16
|
+
readonly revisions: RevisionTracker;
|
|
17
|
+
/** An earlier session's unsaved snapshot of this document, or `null`. */
|
|
18
|
+
checkRecovery(): Promise<AutosaveRecovery<EditorDocumentFile> | null>;
|
|
19
|
+
/** Loads a recovered snapshot into the document and starts autosaving. */
|
|
20
|
+
restore(recovery: AutosaveRecovery<EditorDocumentFile>): LoadReport;
|
|
21
|
+
/** Deletes the earlier session's snapshot and starts autosaving. */
|
|
22
|
+
discard(): Promise<void>;
|
|
23
|
+
/** Call after an explicit save. */
|
|
24
|
+
markClean(): Promise<void>;
|
|
25
|
+
destroy(): void;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Crash-recovery autosave for any editor: snapshots `doc` as an
|
|
29
|
+
* `EditorDocumentFile` after each change. Like `createAutosaveController`,
|
|
30
|
+
* nothing is written until the recovery check is settled: call
|
|
31
|
+
* `controller.ready()` when nothing was found, or `restore` / `discard`.
|
|
32
|
+
*/
|
|
33
|
+
export declare function createEditorAutosave(doc: EditorDocument, options: EditorAutosaveOptions): EditorAutosave;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type AutosaveController, type AutosaveControllerOptions, type AutosaveRecovery } from "./autosave.js";
|
|
2
|
+
import { type EditorDocument, type EditorDocumentFile } from "./editorDocument.js";
|
|
3
|
+
import type { LoadReport } from "./migrate.js";
|
|
4
|
+
import { type DirtyFlagSource, type RevisionTracker } from "./revisions.js";
|
|
5
|
+
export interface EditorAutosaveOptions extends Omit<AutosaveControllerOptions<EditorDocumentFile>, "getSnapshot" | "serialize" | "deserialize" | "revision" | "savedRevision" | "key"> {
|
|
6
|
+
/** Snapshot key (default the document's `kind`). */
|
|
7
|
+
key?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Saved-vs-current flag (e.g. `bindDirtyToHistory`), so undoing back to the
|
|
10
|
+
* saved state needs no snapshot. Without it, every change counts until `markClean()`.
|
|
11
|
+
*/
|
|
12
|
+
dirty?: DirtyFlagSource;
|
|
13
|
+
}
|
|
14
|
+
export interface EditorAutosave {
|
|
15
|
+
readonly controller: AutosaveController<EditorDocumentFile>;
|
|
16
|
+
readonly revisions: RevisionTracker;
|
|
17
|
+
/** An earlier session's unsaved snapshot of this document, or `null`. */
|
|
18
|
+
checkRecovery(): Promise<AutosaveRecovery<EditorDocumentFile> | null>;
|
|
19
|
+
/** Loads a recovered snapshot into the document and starts autosaving. */
|
|
20
|
+
restore(recovery: AutosaveRecovery<EditorDocumentFile>): LoadReport;
|
|
21
|
+
/** Deletes the earlier session's snapshot and starts autosaving. */
|
|
22
|
+
discard(): Promise<void>;
|
|
23
|
+
/** Call after an explicit save. */
|
|
24
|
+
markClean(): Promise<void>;
|
|
25
|
+
destroy(): void;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Crash-recovery autosave for any editor: snapshots `doc` as an
|
|
29
|
+
* `EditorDocumentFile` after each change. Like `createAutosaveController`,
|
|
30
|
+
* nothing is written until the recovery check is settled: call
|
|
31
|
+
* `controller.ready()` when nothing was found, or `restore` / `discard`.
|
|
32
|
+
*/
|
|
33
|
+
export declare function createEditorAutosave(doc: EditorDocument, options: EditorAutosaveOptions): EditorAutosave;
|