@pixerate/editor 0.246.0 → 0.249.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 +1 -0
- package/dist/animation-editor/index.cjs +64 -61
- package/dist/animation-editor/index.js +8 -5
- package/dist/{brushstrokeRender-ZDHMXJAE.cjs → brushstrokeRender-GCKK7V2I.cjs} +14 -11
- package/dist/{brushstrokeRender-AKUI3SEJ.js → brushstrokeRender-T3JZST44.js} +7 -4
- package/dist/canvas/index.cjs +8 -8
- package/dist/canvas/index.js +1 -1
- package/dist/{chunk-UVPD55UZ.cjs → chunk-2SMMZDMG.cjs} +35 -35
- package/dist/chunk-2VJAVXLI.js +192 -0
- package/dist/{chunk-OLNIPTB3.cjs → chunk-2VX55NFM.cjs} +1 -320
- package/dist/chunk-3K6HWEXZ.cjs +92 -0
- package/dist/{chunk-UOOK7HTX.js → chunk-3PPJRMIG.js} +1 -1
- package/dist/chunk-4D6KP5BV.js +92 -0
- package/dist/chunk-5RH3VXAK.js +269 -0
- package/dist/{chunk-LDPLEZ5T.js → chunk-6BIDVPED.js} +1 -1
- package/dist/{chunk-2ONK3ERD.cjs → chunk-75K3W4D6.cjs} +20 -20
- package/dist/chunk-BOHDJJ2O.cjs +192 -0
- package/dist/{chunk-2PBZBRP5.js → chunk-D5KGAO4Z.js} +10 -92
- package/dist/{chunk-DQWPMGH2.js → chunk-DOIU7VJG.js} +1 -1
- package/dist/{chunk-HB4ICNNA.cjs → chunk-DPYAO5U6.cjs} +42 -42
- package/dist/chunk-EJLRBS5Q.js +301 -0
- package/dist/{chunk-Q2UYUWAZ.cjs → chunk-H4AOUUBE.cjs} +679 -164
- package/dist/{chunk-PQ3H2AAN.cjs → chunk-I7NJPHWV.cjs} +122 -204
- package/dist/{chunk-FK5LTDOO.cjs → chunk-IOFVM3L3.cjs} +7 -7
- package/dist/{chunk-42TWUPNJ.js → chunk-IRSTHLQQ.js} +1 -320
- package/dist/{chunk-VDAWA546.js → chunk-J7T5QZ45.js} +614 -99
- package/dist/{chunk-VMROIWLL.cjs → chunk-KBYB7OWB.cjs} +3 -3
- package/dist/{chunk-5MFDD7SP.cjs → chunk-KYX7NZ5V.cjs} +1 -1
- package/dist/chunk-LJRCU3BJ.cjs +301 -0
- package/dist/{chunk-XTWXBQD4.cjs → chunk-LP2MCSBE.cjs} +593 -236
- package/dist/{chunk-A23PSOBB.js → chunk-O75V4ZS3.js} +1 -1
- package/dist/chunk-OTTT5N3K.js +322 -0
- package/dist/{chunk-N6WUB3Y5.js → chunk-PZP2SZIZ.js} +2 -2
- package/dist/{chunk-4PMCMWQS.js → chunk-UBRJOIR5.js} +367 -10
- package/dist/chunk-W5M3J7PV.cjs +322 -0
- package/dist/{chunk-4P6H35HU.js → chunk-WA44NKPF.js} +2 -2
- package/dist/{chunk-CEPKXLBS.cjs → chunk-WLJZZHUZ.cjs} +23 -23
- package/dist/{chunk-P3NIPIKS.js → chunk-WQCNC4DK.js} +1 -1
- package/dist/chunk-ZEYMKDYS.cjs +269 -0
- package/dist/image-editor/effect-tools.d.cts +37 -4
- package/dist/image-editor/effect-tools.d.ts +37 -4
- package/dist/image-editor/index.cjs +1340 -1828
- package/dist/image-editor/index.d.cts +1 -1
- package/dist/image-editor/index.d.ts +1 -1
- package/dist/image-editor/index.js +298 -786
- package/dist/paint/index.cjs +8 -5
- package/dist/paint/index.js +13 -10
- package/dist/paint-editor/controller.d.cts +71 -2
- package/dist/paint-editor/controller.d.ts +71 -2
- package/dist/paint-editor/index.cjs +901 -589
- package/dist/paint-editor/index.d.cts +3 -0
- package/dist/paint-editor/index.d.ts +3 -0
- package/dist/paint-editor/index.js +365 -53
- package/dist/paint-editor/procedural.d.cts +82 -5
- package/dist/paint-editor/procedural.d.ts +82 -5
- package/dist/paint-editor/sticker-art.d.cts +55 -0
- package/dist/paint-editor/sticker-art.d.ts +55 -0
- package/dist/paint-editor/stickers.d.cts +30 -17
- package/dist/paint-editor/stickers.d.ts +30 -17
- package/dist/paint-editor/stroke.d.cts +4 -0
- package/dist/paint-editor/stroke.d.ts +4 -0
- package/dist/paint-editor/tools.d.cts +1 -1
- package/dist/paint-editor/tools.d.ts +1 -1
- package/dist/paint-editor/ui.d.cts +25 -4
- package/dist/paint-editor/ui.d.ts +25 -4
- package/dist/{image-editor/layers/effects-ui.d.cts → raster/effects/ui.d.cts} +32 -5
- package/dist/{image-editor/layers/effects-ui.d.ts → raster/effects/ui.d.ts} +32 -5
- package/dist/raster/index.cjs +17 -3
- package/dist/raster/index.d.cts +1 -0
- package/dist/raster/index.d.ts +1 -0
- package/dist/raster/index.js +23 -9
- package/dist/stickers/browser.d.cts +48 -0
- package/dist/stickers/browser.d.ts +48 -0
- package/dist/stickers/combine.d.cts +10 -0
- package/dist/stickers/combine.d.ts +10 -0
- package/dist/stickers/conformance.d.cts +18 -0
- package/dist/stickers/conformance.d.ts +18 -0
- package/dist/stickers/editor.d.cts +14 -0
- package/dist/stickers/editor.d.ts +14 -0
- package/dist/stickers/errors.d.cts +6 -0
- package/dist/stickers/errors.d.ts +6 -0
- package/dist/stickers/fake.d.cts +16 -0
- package/dist/stickers/fake.d.ts +16 -0
- package/dist/stickers/helpers.d.cts +51 -0
- package/dist/stickers/helpers.d.ts +51 -0
- package/dist/stickers/index.cjs +331 -0
- package/dist/stickers/index.d.cts +16 -0
- package/dist/stickers/index.d.ts +16 -0
- package/dist/stickers/index.js +331 -0
- package/dist/stickers/stamps.d.cts +13 -0
- package/dist/stickers/stamps.d.ts +13 -0
- package/dist/stickers/tools.d.cts +25 -0
- package/dist/stickers/tools.d.ts +25 -0
- package/dist/stickers/types.d.cts +123 -0
- package/dist/stickers/types.d.ts +123 -0
- package/dist/vector/index.cjs +978 -975
- package/dist/vector/index.js +9 -6
- package/package.json +11 -1
- package/skills/README.md +1 -0
- package/skills/pixerate-paint-editor/SKILL.md +26 -32
- package/skills/pixerate-paint-editor/references/gradient-paint.md +23 -0
- package/skills/pixerate-paint-editor/references/layer-effects.md +28 -0
- package/skills/pixerate-paint-editor/references/light-paint.md +10 -2
- package/skills/pixerate-paint-editor/references/particle-brushes.md +66 -0
- package/skills/pixerate-stickers/SKILL.md +45 -0
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { AgentToolProvider } from '../tools/registry.js';
|
|
8
8
|
import { type PaintOrigin } from './hosted.js';
|
|
9
|
-
import type
|
|
9
|
+
import { type PaintEditorController } from './controller.js';
|
|
10
10
|
import type { PaintDirector } from './presence.js';
|
|
11
11
|
import type { PresenceActorInfo } from '../animation/presence.js';
|
|
12
12
|
export interface PaintEditorToolProviderOptions {
|
|
@@ -15,8 +15,9 @@ import type { PaintEditorController } from './controller.cjs';
|
|
|
15
15
|
import type { PenPoint } from './engine.cjs';
|
|
16
16
|
import { type Point2 } from './guides.cjs';
|
|
17
17
|
import { type StencilInput } from './stencils.cjs';
|
|
18
|
-
import type
|
|
19
|
-
import type
|
|
18
|
+
import { type DotRotation, type DotTextureOrder, type ParticleKind, type ParticleRender, type RibbonPairs } from './procedural.cjs';
|
|
19
|
+
import { type StampKind } from './stickers.cjs';
|
|
20
|
+
import type { StickerRef } from '../stickers/types.cjs';
|
|
20
21
|
import type { WetEngineInfo, WetGpuMode } from './wet.cjs';
|
|
21
22
|
import { type PointerSample } from './input.cjs';
|
|
22
23
|
import { type ColorWheel } from './color.cjs';
|
|
@@ -189,9 +190,13 @@ export interface BrushEngineControls {
|
|
|
189
190
|
wetTool?: boolean;
|
|
190
191
|
/** The impasto tool menu (`impasto.tool`, `IMPASTO_TOOLS`). */
|
|
191
192
|
impastoTool?: boolean;
|
|
192
|
-
/**
|
|
193
|
+
/**
|
|
194
|
+
* The particle menus: kind and render (`particle.kind`, `particle.render`), ribbon pairs
|
|
195
|
+
* (`particle.ribbonPairs`), and the textured-dot stamps, order and rotation
|
|
196
|
+
* (`particle.dotTextures` up to `MAX_DOT_TEXTURES` of `STAMP_KINDS`, `dotTextureOrder`, `dotRotation`).
|
|
197
|
+
*/
|
|
193
198
|
particleMenus?: boolean;
|
|
194
|
-
/** The sticker
|
|
199
|
+
/** The sticker picker for the brush's stickers (`sticker.stamps`, refs from the sticker library; `toggleStickerRef`). */
|
|
195
200
|
stickerStamps?: boolean;
|
|
196
201
|
/** Light paint: the "light follows pressure" toggle (`light.pressure`); the Light slider is in `sliders`. */
|
|
197
202
|
light?: boolean;
|
|
@@ -253,10 +258,26 @@ export declare const LIGHT_SLIDERS: readonly SliderControl[];
|
|
|
253
258
|
/** Labels of the particle kinds and renders. */
|
|
254
259
|
export declare const PARTICLE_KIND_LABELS: Readonly<Record<ParticleKind, string>>;
|
|
255
260
|
export declare const PARTICLE_RENDER_LABELS: Readonly<Record<ParticleRender, string>>;
|
|
261
|
+
/** Labels of the ribbon pairings, textured-dot orders and textured-dot rotations. */
|
|
262
|
+
export declare const RIBBON_PAIR_LABELS: Readonly<Record<RibbonPairs, string>>;
|
|
263
|
+
export declare const DOT_TEXTURE_ORDER_LABELS: Readonly<Record<DotTextureOrder, string>>;
|
|
264
|
+
export declare const DOT_ROTATION_LABELS: Readonly<Record<DotRotation, string>>;
|
|
256
265
|
/** Labels of the sticker stamps. */
|
|
257
266
|
export declare const STAMP_LABELS: Readonly<Record<StampKind, string>>;
|
|
258
267
|
/** Toggles one stamp in a sticker brush's set (never leaving it empty). */
|
|
268
|
+
/**
|
|
269
|
+
* Toggles a sticker ref in a sticker brush's list (`sticker.stamps`): removes it when present (a
|
|
270
|
+
* brush keeps at least one), else adds it while there are fewer than `MAX_STICKER_STAMPS`.
|
|
271
|
+
*/
|
|
272
|
+
export declare function toggleStickerRef(refs: readonly StickerRef[], ref: StickerRef): StickerRef[];
|
|
273
|
+
/** A short label for a sticker ref: the editor stamp's name, else the id after the provider. */
|
|
274
|
+
export declare function stickerRefLabel(ref: StickerRef): string;
|
|
259
275
|
export declare function toggleStamp(stamps: readonly StampKind[], stamp: StampKind): StampKind[];
|
|
276
|
+
/**
|
|
277
|
+
* Toggles a textured-dot stamp (`particle.dotTextures`): removes it (every copy) when present,
|
|
278
|
+
* else adds it while there are fewer than `MAX_DOT_TEXTURES`. Empty means round dots.
|
|
279
|
+
*/
|
|
280
|
+
export declare function toggleDotTexture(textures: readonly StampKind[], stamp: StampKind): StampKind[];
|
|
260
281
|
/** The sticker panel's sliders for the selected sticker. */
|
|
261
282
|
/** The brush sliders of a picked stroke on a stroke layer (paths into its brush; see `updateStroke`). */
|
|
262
283
|
export declare const STROKE_SLIDERS: readonly SliderControl[];
|
|
@@ -15,8 +15,9 @@ import type { PaintEditorController } from './controller.js';
|
|
|
15
15
|
import type { PenPoint } from './engine.js';
|
|
16
16
|
import { type Point2 } from './guides.js';
|
|
17
17
|
import { type StencilInput } from './stencils.js';
|
|
18
|
-
import type
|
|
19
|
-
import type
|
|
18
|
+
import { type DotRotation, type DotTextureOrder, type ParticleKind, type ParticleRender, type RibbonPairs } from './procedural.js';
|
|
19
|
+
import { type StampKind } from './stickers.js';
|
|
20
|
+
import type { StickerRef } from '../stickers/types.js';
|
|
20
21
|
import type { WetEngineInfo, WetGpuMode } from './wet.js';
|
|
21
22
|
import { type PointerSample } from './input.js';
|
|
22
23
|
import { type ColorWheel } from './color.js';
|
|
@@ -189,9 +190,13 @@ export interface BrushEngineControls {
|
|
|
189
190
|
wetTool?: boolean;
|
|
190
191
|
/** The impasto tool menu (`impasto.tool`, `IMPASTO_TOOLS`). */
|
|
191
192
|
impastoTool?: boolean;
|
|
192
|
-
/**
|
|
193
|
+
/**
|
|
194
|
+
* The particle menus: kind and render (`particle.kind`, `particle.render`), ribbon pairs
|
|
195
|
+
* (`particle.ribbonPairs`), and the textured-dot stamps, order and rotation
|
|
196
|
+
* (`particle.dotTextures` up to `MAX_DOT_TEXTURES` of `STAMP_KINDS`, `dotTextureOrder`, `dotRotation`).
|
|
197
|
+
*/
|
|
193
198
|
particleMenus?: boolean;
|
|
194
|
-
/** The sticker
|
|
199
|
+
/** The sticker picker for the brush's stickers (`sticker.stamps`, refs from the sticker library; `toggleStickerRef`). */
|
|
195
200
|
stickerStamps?: boolean;
|
|
196
201
|
/** Light paint: the "light follows pressure" toggle (`light.pressure`); the Light slider is in `sliders`. */
|
|
197
202
|
light?: boolean;
|
|
@@ -253,10 +258,26 @@ export declare const LIGHT_SLIDERS: readonly SliderControl[];
|
|
|
253
258
|
/** Labels of the particle kinds and renders. */
|
|
254
259
|
export declare const PARTICLE_KIND_LABELS: Readonly<Record<ParticleKind, string>>;
|
|
255
260
|
export declare const PARTICLE_RENDER_LABELS: Readonly<Record<ParticleRender, string>>;
|
|
261
|
+
/** Labels of the ribbon pairings, textured-dot orders and textured-dot rotations. */
|
|
262
|
+
export declare const RIBBON_PAIR_LABELS: Readonly<Record<RibbonPairs, string>>;
|
|
263
|
+
export declare const DOT_TEXTURE_ORDER_LABELS: Readonly<Record<DotTextureOrder, string>>;
|
|
264
|
+
export declare const DOT_ROTATION_LABELS: Readonly<Record<DotRotation, string>>;
|
|
256
265
|
/** Labels of the sticker stamps. */
|
|
257
266
|
export declare const STAMP_LABELS: Readonly<Record<StampKind, string>>;
|
|
258
267
|
/** Toggles one stamp in a sticker brush's set (never leaving it empty). */
|
|
268
|
+
/**
|
|
269
|
+
* Toggles a sticker ref in a sticker brush's list (`sticker.stamps`): removes it when present (a
|
|
270
|
+
* brush keeps at least one), else adds it while there are fewer than `MAX_STICKER_STAMPS`.
|
|
271
|
+
*/
|
|
272
|
+
export declare function toggleStickerRef(refs: readonly StickerRef[], ref: StickerRef): StickerRef[];
|
|
273
|
+
/** A short label for a sticker ref: the editor stamp's name, else the id after the provider. */
|
|
274
|
+
export declare function stickerRefLabel(ref: StickerRef): string;
|
|
259
275
|
export declare function toggleStamp(stamps: readonly StampKind[], stamp: StampKind): StampKind[];
|
|
276
|
+
/**
|
|
277
|
+
* Toggles a textured-dot stamp (`particle.dotTextures`): removes it (every copy) when present,
|
|
278
|
+
* else adds it while there are fewer than `MAX_DOT_TEXTURES`. Empty means round dots.
|
|
279
|
+
*/
|
|
280
|
+
export declare function toggleDotTexture(textures: readonly StampKind[], stamp: StampKind): StampKind[];
|
|
260
281
|
/** The sticker panel's sliders for the selected sticker. */
|
|
261
282
|
/** The brush sliders of a picked stroke on a stroke layer (paths into its brush; see `updateStroke`). */
|
|
262
283
|
export declare const STROKE_SLIDERS: readonly SliderControl[];
|
|
@@ -3,9 +3,36 @@
|
|
|
3
3
|
* can take effects, its effect rows, the menu of kinds to add, and per effect a flat list of
|
|
4
4
|
* controls (sliders, colours, toggles, choices) with how a change maps to `updateLayerEffect`.
|
|
5
5
|
*/
|
|
6
|
-
import { type LayerEffect, type LayerEffectKind } from '
|
|
7
|
-
import { type EffectPattern } from '
|
|
8
|
-
|
|
6
|
+
import { type LayerEffect, type LayerEffectKind, type LayerEffects } from './model.cjs';
|
|
7
|
+
import { type EffectPattern } from './patterns.cjs';
|
|
8
|
+
/** What the effects section reads of a layer (image and paint layers both fit). */
|
|
9
|
+
export interface LayerEffectsTarget {
|
|
10
|
+
id: string;
|
|
11
|
+
type: string;
|
|
12
|
+
effects?: LayerEffects;
|
|
13
|
+
locks?: {
|
|
14
|
+
all?: boolean;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* What the layer effects panels need of an editor: the image and paint editor controllers both
|
|
19
|
+
* provide it, so both show the same panel.
|
|
20
|
+
*/
|
|
21
|
+
export interface LayerEffectsController {
|
|
22
|
+
subscribe(listener: () => void): () => void;
|
|
23
|
+
getLayer(id: string): LayerEffectsTarget | null | undefined;
|
|
24
|
+
getActiveLayer(): LayerEffectsTarget | null | undefined;
|
|
25
|
+
getLayerEffects(id: string): LayerEffects;
|
|
26
|
+
getDocumentPatterns(): readonly EffectPattern[];
|
|
27
|
+
addLayerEffect(id: string, kind: LayerEffectKind, settings?: Record<string, unknown>, index?: number): {
|
|
28
|
+
effect: {
|
|
29
|
+
id: string;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
updateLayerEffect(id: string, effectId: string, changes: Record<string, unknown>, commitToHistory?: boolean): unknown;
|
|
33
|
+
removeLayerEffect(id: string, effectId: string): unknown;
|
|
34
|
+
setLayerEffectsEnabled(id: string, enabled: boolean, scale?: number, commitToHistory?: boolean): unknown;
|
|
35
|
+
}
|
|
9
36
|
export interface LayerEffectRow {
|
|
10
37
|
id: string;
|
|
11
38
|
kind: LayerEffectKind;
|
|
@@ -24,9 +51,9 @@ export interface LayerEffectsPanelModel {
|
|
|
24
51
|
rows: LayerEffectRow[];
|
|
25
52
|
}
|
|
26
53
|
/** The effects section for `layer`. */
|
|
27
|
-
export declare function layerEffectsPanel(layer:
|
|
54
|
+
export declare function layerEffectsPanel(layer: LayerEffectsTarget | null | undefined): LayerEffectsPanelModel;
|
|
28
55
|
/** The fx badge of a layer row: `on` (effects render), `off` (effects but switched off), or `null`. */
|
|
29
|
-
export declare function layerEffectsBadge(layer:
|
|
56
|
+
export declare function layerEffectsBadge(layer: Pick<LayerEffectsTarget, 'effects'>): 'on' | 'off' | null;
|
|
30
57
|
/** The kinds the "Add effect" menu offers, in the Layer Style dialog's order. */
|
|
31
58
|
export declare const LAYER_EFFECT_MENU: ReadonlyArray<{
|
|
32
59
|
kind: LayerEffectKind;
|
|
@@ -3,9 +3,36 @@
|
|
|
3
3
|
* can take effects, its effect rows, the menu of kinds to add, and per effect a flat list of
|
|
4
4
|
* controls (sliders, colours, toggles, choices) with how a change maps to `updateLayerEffect`.
|
|
5
5
|
*/
|
|
6
|
-
import { type LayerEffect, type LayerEffectKind } from '
|
|
7
|
-
import { type EffectPattern } from '
|
|
8
|
-
|
|
6
|
+
import { type LayerEffect, type LayerEffectKind, type LayerEffects } from './model.js';
|
|
7
|
+
import { type EffectPattern } from './patterns.js';
|
|
8
|
+
/** What the effects section reads of a layer (image and paint layers both fit). */
|
|
9
|
+
export interface LayerEffectsTarget {
|
|
10
|
+
id: string;
|
|
11
|
+
type: string;
|
|
12
|
+
effects?: LayerEffects;
|
|
13
|
+
locks?: {
|
|
14
|
+
all?: boolean;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* What the layer effects panels need of an editor: the image and paint editor controllers both
|
|
19
|
+
* provide it, so both show the same panel.
|
|
20
|
+
*/
|
|
21
|
+
export interface LayerEffectsController {
|
|
22
|
+
subscribe(listener: () => void): () => void;
|
|
23
|
+
getLayer(id: string): LayerEffectsTarget | null | undefined;
|
|
24
|
+
getActiveLayer(): LayerEffectsTarget | null | undefined;
|
|
25
|
+
getLayerEffects(id: string): LayerEffects;
|
|
26
|
+
getDocumentPatterns(): readonly EffectPattern[];
|
|
27
|
+
addLayerEffect(id: string, kind: LayerEffectKind, settings?: Record<string, unknown>, index?: number): {
|
|
28
|
+
effect: {
|
|
29
|
+
id: string;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
updateLayerEffect(id: string, effectId: string, changes: Record<string, unknown>, commitToHistory?: boolean): unknown;
|
|
33
|
+
removeLayerEffect(id: string, effectId: string): unknown;
|
|
34
|
+
setLayerEffectsEnabled(id: string, enabled: boolean, scale?: number, commitToHistory?: boolean): unknown;
|
|
35
|
+
}
|
|
9
36
|
export interface LayerEffectRow {
|
|
10
37
|
id: string;
|
|
11
38
|
kind: LayerEffectKind;
|
|
@@ -24,9 +51,9 @@ export interface LayerEffectsPanelModel {
|
|
|
24
51
|
rows: LayerEffectRow[];
|
|
25
52
|
}
|
|
26
53
|
/** The effects section for `layer`. */
|
|
27
|
-
export declare function layerEffectsPanel(layer:
|
|
54
|
+
export declare function layerEffectsPanel(layer: LayerEffectsTarget | null | undefined): LayerEffectsPanelModel;
|
|
28
55
|
/** The fx badge of a layer row: `on` (effects render), `off` (effects but switched off), or `null`. */
|
|
29
|
-
export declare function layerEffectsBadge(layer:
|
|
56
|
+
export declare function layerEffectsBadge(layer: Pick<LayerEffectsTarget, 'effects'>): 'on' | 'off' | null;
|
|
30
57
|
/** The kinds the "Add effect" menu offers, in the Layer Style dialog's order. */
|
|
31
58
|
export declare const LAYER_EFFECT_MENU: ReadonlyArray<{
|
|
32
59
|
kind: LayerEffectKind;
|
package/dist/raster/index.cjs
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
+
var _chunkBOHDJJ2Ocjs = require('../chunk-BOHDJJ2O.cjs');
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
|
|
@@ -60,7 +61,13 @@
|
|
|
60
61
|
|
|
61
62
|
|
|
62
63
|
|
|
63
|
-
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
var _chunkDPYAO5U6cjs = require('../chunk-DPYAO5U6.cjs');
|
|
64
71
|
require('../chunk-QT26RHKK.cjs');
|
|
65
72
|
|
|
66
73
|
|
|
@@ -108,6 +115,7 @@ var _chunkK6PXS6DOcjs = require('../chunk-K6PXS6DO.cjs');
|
|
|
108
115
|
|
|
109
116
|
|
|
110
117
|
|
|
118
|
+
var _chunk2VX55NFMcjs = require('../chunk-2VX55NFM.cjs');
|
|
111
119
|
|
|
112
120
|
|
|
113
121
|
|
|
@@ -115,7 +123,8 @@ var _chunkK6PXS6DOcjs = require('../chunk-K6PXS6DO.cjs');
|
|
|
115
123
|
|
|
116
124
|
|
|
117
125
|
|
|
118
|
-
|
|
126
|
+
|
|
127
|
+
var _chunkW5M3J7PVcjs = require('../chunk-W5M3J7PV.cjs');
|
|
119
128
|
|
|
120
129
|
|
|
121
130
|
|
|
@@ -516,4 +525,9 @@ function drawSurfaceToViewport(ctx, surface, mapping, view, options) {
|
|
|
516
525
|
|
|
517
526
|
|
|
518
527
|
|
|
519
|
-
|
|
528
|
+
|
|
529
|
+
|
|
530
|
+
|
|
531
|
+
|
|
532
|
+
|
|
533
|
+
exports.BIT_DEPTHS = _chunk2VX55NFMcjs.BIT_DEPTHS; exports.BLEND_MODES = _chunk2VX55NFMcjs.BLEND_MODES; exports.CURVE_LUT_SIZE = _chunkDPYAO5U6cjs.CURVE_LUT_SIZE; exports.DEFAULT_GLOBAL_LIGHT = _chunkDPYAO5U6cjs.DEFAULT_GLOBAL_LIGHT; exports.DIRECT_GAUSSIAN_MAX_SIGMA = _chunkK6PXS6DOcjs.DIRECT_GAUSSIAN_MAX_SIGMA; exports.DeepCompositor = _chunkDPYAO5U6cjs.DeepCompositor; exports.INTERPOLATIONS = _chunkDPYAO5U6cjs.INTERPOLATIONS; exports.LAYER_EFFECT_KINDS = _chunkDPYAO5U6cjs.LAYER_EFFECT_KINDS; exports.LAYER_EFFECT_MENU = _chunkBOHDJJ2Ocjs.LAYER_EFFECT_MENU; exports.LayerEffectError = _chunkDPYAO5U6cjs.LayerEffectError; exports.MAX_EFFECT_REACH = _chunkDPYAO5U6cjs.MAX_EFFECT_REACH; exports.MAX_TRANSFORM_PIXELS = _chunkDPYAO5U6cjs.MAX_TRANSFORM_PIXELS; exports.PAINTERLY_BLEND_MODES = _chunk2VX55NFMcjs.PAINTERLY_BLEND_MODES; exports.PatternPlacement = _chunkDPYAO5U6cjs.PatternPlacement; exports.PatternTile = _chunkDPYAO5U6cjs.PatternTile; exports.RasterCompositor = _chunkDPYAO5U6cjs.RasterCompositor; exports.SHADOW_AMBIENT = _chunk2VX55NFMcjs.SHADOW_AMBIENT; exports.STROKE_CHAMFER_MAX = _chunkDPYAO5U6cjs.STROKE_CHAMFER_MAX; exports.SurfaceDraft = _chunk474IQG74cjs.SurfaceDraft; exports.SurfaceViewportRenderer = SurfaceViewportRenderer; exports.TILE = _chunk474IQG74cjs.TILE; exports.TILE_SHIFT = _chunk474IQG74cjs.TILE_SHIFT; exports.TiledSurface = _chunk474IQG74cjs.TiledSurface; exports.TransformTooLargeError = _chunkDPYAO5U6cjs.TransformTooLargeError; exports.ZlibError = _chunkXFM3OCHUcjs.ZlibError; exports.activeEffectItems = _chunkDPYAO5U6cjs.activeEffectItems; exports.adler32 = _chunkXFM3OCHUcjs.adler32; exports.applyEdgeAmbient = _chunkDPYAO5U6cjs.applyEdgeAmbient; exports.base64ToBytes = _chunkW5M3J7PVcjs.base64ToBytes; exports.blendChannel = _chunk2VX55NFMcjs.blendChannel; exports.blendImageData = _chunk2VX55NFMcjs.blendImageData; exports.blendLum = _chunk2VX55NFMcjs.blendLum; exports.blendPixel = _chunk2VX55NFMcjs.blendPixel; exports.blendRgb = _chunk2VX55NFMcjs.blendRgb; exports.blendTile = _chunkDPYAO5U6cjs.blendTile; exports.buildEffectMaps = _chunkDPYAO5U6cjs.buildEffectMaps; exports.builtinPattern = _chunkDPYAO5U6cjs.builtinPattern; exports.builtinPatternIds = _chunkDPYAO5U6cjs.builtinPatternIds; exports.bytesToBase64 = _chunkW5M3J7PVcjs.bytesToBase64; exports.canvasCompositeOperation = _chunk2VX55NFMcjs.canvasCompositeOperation; exports.changedTiles = _chunkDPYAO5U6cjs.changedTiles; exports.collectTiles = _chunk474IQG74cjs.collectTiles; exports.compositeLayerEffects = _chunkDPYAO5U6cjs.compositeLayerEffects; exports.compositeSurfaceOver = _chunkDPYAO5U6cjs.compositeSurfaceOver; exports.contentBounds = _chunk474IQG74cjs.contentBounds; exports.contourLut = _chunkDPYAO5U6cjs.contourLut; exports.convertSurfaceDepth = _chunk2VX55NFMcjs.convertSurfaceDepth; exports.curveLut = _chunkDPYAO5U6cjs.curveLut; exports.decodePng = _chunkW5M3J7PVcjs.decodePng; exports.deepBytes = _chunk2VX55NFMcjs.deepBytes; exports.deepTile = _chunk2VX55NFMcjs.deepTile; exports.defaultEffectGradient = _chunkDPYAO5U6cjs.defaultEffectGradient; exports.defaultLayerEffect = _chunkDPYAO5U6cjs.defaultLayerEffect; exports.deflate = _chunkXFM3OCHUcjs.deflate; exports.deflateRaw = _chunkXFM3OCHUcjs.deflateRaw; exports.depthOf = _chunk2VX55NFMcjs.depthOf; exports.drawSurfaceToViewport = drawSurfaceToViewport; exports.effectColorHex = _chunkDPYAO5U6cjs.effectColorHex; exports.effectControlChange = _chunkBOHDJJ2Ocjs.effectControlChange; exports.effectFillColors = _chunkDPYAO5U6cjs.effectFillColors; exports.effectReach = _chunkDPYAO5U6cjs.effectReach; exports.effectsAreLocal = _chunkDPYAO5U6cjs.effectsAreLocal; exports.effectsFingerprint = _chunkDPYAO5U6cjs.effectsFingerprint; exports.effectsMargin = _chunkDPYAO5U6cjs.effectsMargin; exports.effectsScale = _chunkDPYAO5U6cjs.effectsScale; exports.emptySurface = _chunk474IQG74cjs.emptySurface; exports.encodePng = _chunkW5M3J7PVcjs.encodePng; exports.fillRect = _chunk474IQG74cjs.fillRect; exports.findLayer = _chunkDPYAO5U6cjs.findLayer; exports.finishTile = _chunk474IQG74cjs.finishTile; exports.flattenLayers = _chunkDPYAO5U6cjs.flattenLayers; exports.gaussianBlur = _chunkK6PXS6DOcjs.gaussianBlur; exports.gradientT = _chunkDPYAO5U6cjs.gradientT; exports.hasActiveEffects = _chunkDPYAO5U6cjs.hasActiveEffects; exports.hashNoise = _chunkDPYAO5U6cjs.hashNoise; exports.inflate = _chunkXFM3OCHUcjs.inflate; exports.inflateRaw = _chunkXFM3OCHUcjs.inflateRaw; exports.insertLayer = _chunkDPYAO5U6cjs.insertLayer; exports.isBitDepth = _chunk2VX55NFMcjs.isBitDepth; exports.isBlendMode = _chunk2VX55NFMcjs.isBlendMode; exports.isInterpolation = _chunkDPYAO5U6cjs.isInterpolation; exports.isLayerEffectKind = _chunkDPYAO5U6cjs.isLayerEffectKind; exports.isLayerLocked = _chunkDPYAO5U6cjs.isLayerLocked; exports.isPainterlyBlendMode = _chunk2VX55NFMcjs.isPainterlyBlendMode; exports.isPng = _chunkW5M3J7PVcjs.isPng; exports.isSeparableBlendMode = _chunk2VX55NFMcjs.isSeparableBlendMode; exports.keepDeepSamples = _chunk2VX55NFMcjs.keepDeepSamples; exports.keysWeight = _chunkDPYAO5U6cjs.keysWeight; exports.layerEffectControls = _chunkBOHDJJ2Ocjs.layerEffectControls; exports.layerEffectFields = _chunkDPYAO5U6cjs.layerEffectFields; exports.layerEffectLabel = _chunkDPYAO5U6cjs.layerEffectLabel; exports.layerEffectsBadge = _chunkBOHDJJ2Ocjs.layerEffectsBadge; exports.layerEffectsPanel = _chunkBOHDJJ2Ocjs.layerEffectsPanel; exports.mapLayer = _chunkDPYAO5U6cjs.mapLayer; exports.mergeLayerEffect = _chunkDPYAO5U6cjs.mergeLayerEffect; exports.mixPigment8 = _chunk2VX55NFMcjs.mixPigment8; exports.mixPigmentRgb = _chunk2VX55NFMcjs.mixPigmentRgb; exports.newEffectId = _chunkDPYAO5U6cjs.newEffectId; exports.normalizeBlendMode = _chunk2VX55NFMcjs.normalizeBlendMode; exports.normalizeLayerEffects = _chunkDPYAO5U6cjs.normalizeLayerEffects; exports.packRgba = _chunk474IQG74cjs.packRgba; exports.parseDataUrl = _chunkW5M3J7PVcjs.parseDataUrl; exports.parseEffectColor = _chunkDPYAO5U6cjs.parseEffectColor; exports.patchEffectMaps = _chunkDPYAO5U6cjs.patchEffectMaps; exports.pigment8 = _chunk2VX55NFMcjs.pigment8; exports.pngDataUrl = _chunkW5M3J7PVcjs.pngDataUrl; exports.proxyOf = _chunk2VX55NFMcjs.proxyOf; exports.readDeepRegion = _chunk2VX55NFMcjs.readDeepRegion; exports.readPixel = _chunk474IQG74cjs.readPixel; exports.readRegion = _chunk474IQG74cjs.readRegion; exports.reduceSurface = _chunkDPYAO5U6cjs.reduceSurface; exports.renderLayerEffects = _chunkDPYAO5U6cjs.renderLayerEffects; exports.scaleLayerEffect = _chunkDPYAO5U6cjs.scaleLayerEffect; exports.screenToWorld = screenToWorld; exports.setLum = _chunk2VX55NFMcjs.setLum; exports.solidSurface = _chunk474IQG74cjs.solidSurface; exports.srgbDecode = _chunk2VX55NFMcjs.srgbDecode; exports.srgbEncode = _chunk2VX55NFMcjs.srgbEncode; exports.standardBlendMode = _chunk2VX55NFMcjs.standardBlendMode; exports.surfaceBytes = _chunk474IQG74cjs.surfaceBytes; exports.surfaceDepth = _chunk2VX55NFMcjs.surfaceDepth; exports.surfaceFromDeepPixels = _chunk2VX55NFMcjs.surfaceFromDeepPixels; exports.surfaceFromPixels = _chunk474IQG74cjs.surfaceFromPixels; exports.surfaceMipLevel = surfaceMipLevel; exports.surfaceResolutionForZoom = surfaceResolutionForZoom; exports.surfaceToWorld = surfaceToWorld; exports.surfacesEqual = _chunk474IQG74cjs.surfacesEqual; exports.tileCoord = _chunk474IQG74cjs.tileCoord; exports.tileKey = _chunk474IQG74cjs.tileKey; exports.tileRect = _chunk474IQG74cjs.tileRect; exports.tileSamples = _chunk2VX55NFMcjs.tileSamples; exports.tileSamples16 = _chunk2VX55NFMcjs.tileSamples16; exports.tileSamples32 = _chunk2VX55NFMcjs.tileSamples32; exports.tilesInRect = _chunk474IQG74cjs.tilesInRect; exports.to16From32 = _chunk2VX55NFMcjs.to16From32; exports.to16From8 = _chunk2VX55NFMcjs.to16From8; exports.to32From16 = _chunk2VX55NFMcjs.to32From16; exports.to32From8 = _chunk2VX55NFMcjs.to32From8; exports.to8From16 = _chunk2VX55NFMcjs.to8From16; exports.to8From32 = _chunk2VX55NFMcjs.to8From32; exports.transformSurface = _chunkDPYAO5U6cjs.transformSurface; exports.transformedBounds = _chunkDPYAO5U6cjs.transformedBounds; exports.translateSurface = _chunk474IQG74cjs.translateSurface; exports.uniformTile = _chunk474IQG74cjs.uniformTile; exports.validateEffectGradient = _chunkDPYAO5U6cjs.validateEffectGradient; exports.validateLayerEffect = _chunkDPYAO5U6cjs.validateLayerEffect; exports.validateLayerEffects = _chunkDPYAO5U6cjs.validateLayerEffects; exports.visibleSurfaceRect = visibleSurfaceRect; exports.visibleWorldRect = visibleWorldRect; exports.warpSurface = _chunkDPYAO5U6cjs.warpSurface; exports.workingToSamples = _chunkDPYAO5U6cjs.workingToSamples; exports.worldRectToSurface = worldRectToSurface; exports.worldToSurface = worldToSurface; exports.writeDeepRegion = _chunk2VX55NFMcjs.writeDeepRegion; exports.writeRegion = _chunk474IQG74cjs.writeRegion;
|
package/dist/raster/index.d.cts
CHANGED
|
@@ -18,6 +18,7 @@ export * from './curve.cjs';
|
|
|
18
18
|
export * from './transform.cjs';
|
|
19
19
|
export * from './effects/model.cjs';
|
|
20
20
|
export * from './effects/patterns.cjs';
|
|
21
|
+
export * from './effects/ui.cjs';
|
|
21
22
|
export { activeEffectItems, buildEffectMaps, compositeLayerEffects, contourLut, effectFillColors, effectsAreLocal, gradientT, patchEffectMaps, renderLayerEffects, STROKE_CHAMFER_MAX, type EffectCompositeInput, type EffectContext, type EffectMaps, type EffectRect, } from './effects/render.cjs';
|
|
22
23
|
export { encodePng, decodePng, isPng, bytesToBase64, base64ToBytes, parseDataUrl, pngDataUrl, type DecodedPng } from './png.cjs';
|
|
23
24
|
export { inflate, inflateRaw, deflate, deflateRaw, adler32, ZlibError } from './zlib.cjs';
|
package/dist/raster/index.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export * from './curve.js';
|
|
|
18
18
|
export * from './transform.js';
|
|
19
19
|
export * from './effects/model.js';
|
|
20
20
|
export * from './effects/patterns.js';
|
|
21
|
+
export * from './effects/ui.js';
|
|
21
22
|
export { activeEffectItems, buildEffectMaps, compositeLayerEffects, contourLut, effectFillColors, effectsAreLocal, gradientT, patchEffectMaps, renderLayerEffects, STROKE_CHAMFER_MAX, type EffectCompositeInput, type EffectContext, type EffectMaps, type EffectRect, } from './effects/render.js';
|
|
22
23
|
export { encodePng, decodePng, isPng, bytesToBase64, base64ToBytes, parseDataUrl, pngDataUrl, type DecodedPng } from './png.js';
|
|
23
24
|
export { inflate, inflateRaw, deflate, deflateRaw, adler32, ZlibError } from './zlib.js';
|
package/dist/raster/index.js
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
import {
|
|
2
|
+
LAYER_EFFECT_MENU,
|
|
3
|
+
effectControlChange,
|
|
4
|
+
layerEffectControls,
|
|
5
|
+
layerEffectsBadge,
|
|
6
|
+
layerEffectsPanel
|
|
7
|
+
} from "../chunk-2VJAVXLI.js";
|
|
1
8
|
import {
|
|
2
9
|
CURVE_LUT_SIZE,
|
|
3
10
|
DEFAULT_GLOBAL_LIGHT,
|
|
@@ -60,7 +67,7 @@ import {
|
|
|
60
67
|
validateLayerEffects,
|
|
61
68
|
warpSurface,
|
|
62
69
|
workingToSamples
|
|
63
|
-
} from "../chunk-
|
|
70
|
+
} from "../chunk-3PPJRMIG.js";
|
|
64
71
|
import "../chunk-OHKOFKBY.js";
|
|
65
72
|
import {
|
|
66
73
|
DIRECT_GAUSSIAN_MAX_SIGMA,
|
|
@@ -71,32 +78,25 @@ import {
|
|
|
71
78
|
BLEND_MODES,
|
|
72
79
|
PAINTERLY_BLEND_MODES,
|
|
73
80
|
SHADOW_AMBIENT,
|
|
74
|
-
base64ToBytes,
|
|
75
81
|
blendChannel,
|
|
76
82
|
blendImageData,
|
|
77
83
|
blendLum,
|
|
78
84
|
blendPixel,
|
|
79
85
|
blendRgb,
|
|
80
|
-
bytesToBase64,
|
|
81
86
|
canvasCompositeOperation,
|
|
82
87
|
convertSurfaceDepth,
|
|
83
|
-
decodePng,
|
|
84
88
|
deepBytes,
|
|
85
89
|
deepTile,
|
|
86
90
|
depthOf,
|
|
87
|
-
encodePng,
|
|
88
91
|
isBitDepth,
|
|
89
92
|
isBlendMode,
|
|
90
93
|
isPainterlyBlendMode,
|
|
91
|
-
isPng,
|
|
92
94
|
isSeparableBlendMode,
|
|
93
95
|
keepDeepSamples,
|
|
94
96
|
mixPigment8,
|
|
95
97
|
mixPigmentRgb,
|
|
96
98
|
normalizeBlendMode,
|
|
97
|
-
parseDataUrl,
|
|
98
99
|
pigment8,
|
|
99
|
-
pngDataUrl,
|
|
100
100
|
proxyOf,
|
|
101
101
|
readDeepRegion,
|
|
102
102
|
setLum,
|
|
@@ -115,7 +115,16 @@ import {
|
|
|
115
115
|
to8From16,
|
|
116
116
|
to8From32,
|
|
117
117
|
writeDeepRegion
|
|
118
|
-
} from "../chunk-
|
|
118
|
+
} from "../chunk-IRSTHLQQ.js";
|
|
119
|
+
import {
|
|
120
|
+
base64ToBytes,
|
|
121
|
+
bytesToBase64,
|
|
122
|
+
decodePng,
|
|
123
|
+
encodePng,
|
|
124
|
+
isPng,
|
|
125
|
+
parseDataUrl,
|
|
126
|
+
pngDataUrl
|
|
127
|
+
} from "../chunk-OTTT5N3K.js";
|
|
119
128
|
import {
|
|
120
129
|
SurfaceDraft,
|
|
121
130
|
TILE,
|
|
@@ -374,6 +383,7 @@ export {
|
|
|
374
383
|
DeepCompositor,
|
|
375
384
|
INTERPOLATIONS,
|
|
376
385
|
LAYER_EFFECT_KINDS,
|
|
386
|
+
LAYER_EFFECT_MENU,
|
|
377
387
|
LayerEffectError,
|
|
378
388
|
MAX_EFFECT_REACH,
|
|
379
389
|
MAX_TRANSFORM_PIXELS,
|
|
@@ -423,6 +433,7 @@ export {
|
|
|
423
433
|
depthOf,
|
|
424
434
|
drawSurfaceToViewport,
|
|
425
435
|
effectColorHex,
|
|
436
|
+
effectControlChange,
|
|
426
437
|
effectFillColors,
|
|
427
438
|
effectReach,
|
|
428
439
|
effectsAreLocal,
|
|
@@ -452,8 +463,11 @@ export {
|
|
|
452
463
|
isSeparableBlendMode,
|
|
453
464
|
keepDeepSamples,
|
|
454
465
|
keysWeight,
|
|
466
|
+
layerEffectControls,
|
|
455
467
|
layerEffectFields,
|
|
456
468
|
layerEffectLabel,
|
|
469
|
+
layerEffectsBadge,
|
|
470
|
+
layerEffectsPanel,
|
|
457
471
|
mapLayer,
|
|
458
472
|
mergeLayerEffect,
|
|
459
473
|
mixPigment8,
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `StickerBrowser`: the state behind a sticker picker, shared by the React and Svelte pickers. It
|
|
3
|
+
* searches or lists the provider a page at a time (search words, category), keeps the pages it
|
|
4
|
+
* has loaded and its categories, and tells listeners when anything changes. UI-agnostic.
|
|
5
|
+
*/
|
|
6
|
+
import type { StickerProvider, StickerRef, StickerSummary } from './types.cjs';
|
|
7
|
+
export interface StickerBrowserItem extends StickerSummary {
|
|
8
|
+
ref: StickerRef;
|
|
9
|
+
}
|
|
10
|
+
export interface StickerBrowserState {
|
|
11
|
+
query: string;
|
|
12
|
+
/** `''` for every category. */
|
|
13
|
+
category: string;
|
|
14
|
+
items: StickerBrowserItem[];
|
|
15
|
+
total: number;
|
|
16
|
+
/** More pages to load (`more()`). */
|
|
17
|
+
hasMore: boolean;
|
|
18
|
+
loading: boolean;
|
|
19
|
+
error: string | null;
|
|
20
|
+
categories: Array<{
|
|
21
|
+
id: string;
|
|
22
|
+
name: string;
|
|
23
|
+
count: number;
|
|
24
|
+
}>;
|
|
25
|
+
/** The provider's name. */
|
|
26
|
+
provider: string;
|
|
27
|
+
}
|
|
28
|
+
export declare class StickerBrowser {
|
|
29
|
+
private readonly provider;
|
|
30
|
+
private readonly pageSize;
|
|
31
|
+
private s;
|
|
32
|
+
private next;
|
|
33
|
+
private run;
|
|
34
|
+
private readonly listeners;
|
|
35
|
+
constructor(provider: () => StickerProvider, pageSize?: number);
|
|
36
|
+
get state(): StickerBrowserState;
|
|
37
|
+
subscribe(listener: () => void): () => void;
|
|
38
|
+
private set;
|
|
39
|
+
/** Loads the first page (and the categories) again, for the current provider. */
|
|
40
|
+
refresh(): Promise<void>;
|
|
41
|
+
/** Searches for `query` (words; `''` lists everything) from the first page. */
|
|
42
|
+
setQuery(query: string): Promise<void>;
|
|
43
|
+
/** Shows one category (`''` for all) from the first page. */
|
|
44
|
+
setCategory(category: string): Promise<void>;
|
|
45
|
+
/** Loads the next page onto the list. */
|
|
46
|
+
more(): Promise<void>;
|
|
47
|
+
private page;
|
|
48
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `StickerBrowser`: the state behind a sticker picker, shared by the React and Svelte pickers. It
|
|
3
|
+
* searches or lists the provider a page at a time (search words, category), keeps the pages it
|
|
4
|
+
* has loaded and its categories, and tells listeners when anything changes. UI-agnostic.
|
|
5
|
+
*/
|
|
6
|
+
import type { StickerProvider, StickerRef, StickerSummary } from './types.js';
|
|
7
|
+
export interface StickerBrowserItem extends StickerSummary {
|
|
8
|
+
ref: StickerRef;
|
|
9
|
+
}
|
|
10
|
+
export interface StickerBrowserState {
|
|
11
|
+
query: string;
|
|
12
|
+
/** `''` for every category. */
|
|
13
|
+
category: string;
|
|
14
|
+
items: StickerBrowserItem[];
|
|
15
|
+
total: number;
|
|
16
|
+
/** More pages to load (`more()`). */
|
|
17
|
+
hasMore: boolean;
|
|
18
|
+
loading: boolean;
|
|
19
|
+
error: string | null;
|
|
20
|
+
categories: Array<{
|
|
21
|
+
id: string;
|
|
22
|
+
name: string;
|
|
23
|
+
count: number;
|
|
24
|
+
}>;
|
|
25
|
+
/** The provider's name. */
|
|
26
|
+
provider: string;
|
|
27
|
+
}
|
|
28
|
+
export declare class StickerBrowser {
|
|
29
|
+
private readonly provider;
|
|
30
|
+
private readonly pageSize;
|
|
31
|
+
private s;
|
|
32
|
+
private next;
|
|
33
|
+
private run;
|
|
34
|
+
private readonly listeners;
|
|
35
|
+
constructor(provider: () => StickerProvider, pageSize?: number);
|
|
36
|
+
get state(): StickerBrowserState;
|
|
37
|
+
subscribe(listener: () => void): () => void;
|
|
38
|
+
private set;
|
|
39
|
+
/** Loads the first page (and the categories) again, for the current provider. */
|
|
40
|
+
refresh(): Promise<void>;
|
|
41
|
+
/** Searches for `query` (words; `''` lists everything) from the first page. */
|
|
42
|
+
setQuery(query: string): Promise<void>;
|
|
43
|
+
/** Shows one category (`''` for all) from the first page. */
|
|
44
|
+
setCategory(category: string): Promise<void>;
|
|
45
|
+
/** Loads the next page onto the list. */
|
|
46
|
+
more(): Promise<void>;
|
|
47
|
+
private page;
|
|
48
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { StickerProvider } from './types.cjs';
|
|
2
|
+
/**
|
|
3
|
+
* One provider over several, in order. Its ids are refs (`provider:id`, `namespaced`), so the
|
|
4
|
+
* same id from two libraries stays two stickers. Pages run through the providers in turn; the
|
|
5
|
+
* cursor is `<provider index>|<that provider's cursor>`. Capabilities are what any of them offers.
|
|
6
|
+
*/
|
|
7
|
+
export declare function combineStickerProviders(providers: readonly StickerProvider[], options?: {
|
|
8
|
+
id?: string;
|
|
9
|
+
name?: string;
|
|
10
|
+
}): StickerProvider;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { StickerProvider } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* One provider over several, in order. Its ids are refs (`provider:id`, `namespaced`), so the
|
|
4
|
+
* same id from two libraries stays two stickers. Pages run through the providers in turn; the
|
|
5
|
+
* cursor is `<provider index>|<that provider's cursor>`. Capabilities are what any of them offers.
|
|
6
|
+
*/
|
|
7
|
+
export declare function combineStickerProviders(providers: readonly StickerProvider[], options?: {
|
|
8
|
+
id?: string;
|
|
9
|
+
name?: string;
|
|
10
|
+
}): StickerProvider;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { StickerProvider } from './types.cjs';
|
|
2
|
+
export interface StickerConformanceIssue {
|
|
3
|
+
/** The sticker it is about, when it is about one. */
|
|
4
|
+
stickerId?: string;
|
|
5
|
+
message: string;
|
|
6
|
+
}
|
|
7
|
+
export interface StickerConformanceOptions {
|
|
8
|
+
/** Stop walking pages after this many (default 50). */
|
|
9
|
+
maxPages?: number;
|
|
10
|
+
/** Load at most this many stickers in each format (default 3). */
|
|
11
|
+
loads?: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Checks a sticker provider against the contract: capabilities, every listed sticker (walking the
|
|
15
|
+
* pages), search and list agreeing, paging limits, describe and load for known and unknown ids,
|
|
16
|
+
* and tinting. Returns the problems found (empty when it conforms).
|
|
17
|
+
*/
|
|
18
|
+
export declare function checkStickerProvider(provider: StickerProvider, options?: StickerConformanceOptions): Promise<StickerConformanceIssue[]>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { StickerProvider } from './types.js';
|
|
2
|
+
export interface StickerConformanceIssue {
|
|
3
|
+
/** The sticker it is about, when it is about one. */
|
|
4
|
+
stickerId?: string;
|
|
5
|
+
message: string;
|
|
6
|
+
}
|
|
7
|
+
export interface StickerConformanceOptions {
|
|
8
|
+
/** Stop walking pages after this many (default 50). */
|
|
9
|
+
maxPages?: number;
|
|
10
|
+
/** Load at most this many stickers in each format (default 3). */
|
|
11
|
+
loads?: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Checks a sticker provider against the contract: capabilities, every listed sticker (walking the
|
|
15
|
+
* pages), search and list agreeing, paging limits, describe and load for known and unknown ids,
|
|
16
|
+
* and tinting. Returns the problems found (empty when it conforms).
|
|
17
|
+
*/
|
|
18
|
+
export declare function checkStickerProvider(provider: StickerProvider, options?: StickerConformanceOptions): Promise<StickerConformanceIssue[]>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `editorStickers()`: the editor's own stamps as a sticker provider (id `editor`), the default in
|
|
3
|
+
* every `StickersSlot`, so stickers work with no setup. Each stamp is MIT-licensed and tintable.
|
|
4
|
+
* Its SVG is the stamp's outline, contoured from the coverage function the paint editor draws, so
|
|
5
|
+
* the vector art and the painted stamp have the same shape; its PNG is drawn from the function.
|
|
6
|
+
*/
|
|
7
|
+
import { type StampKind } from './stamps.cjs';
|
|
8
|
+
import type { StickerProvider } from './types.cjs';
|
|
9
|
+
/** The stamp's outline as SVG path data in a `BOX` px square (marching squares on the 0.5 level, simplified). */
|
|
10
|
+
export declare function stampOutline(kind: StampKind): string;
|
|
11
|
+
/** The stamp drawn flat in `colour` as RGBA, `size` px square (supersampled). */
|
|
12
|
+
export declare function stampPixels(kind: StampKind, size: number, colour: string): Uint8ClampedArray;
|
|
13
|
+
/** The editor's own stamps as a `StickerProvider` (id `editor`): tintable, MIT, SVG and PNG. */
|
|
14
|
+
export declare function editorStickers(): StickerProvider;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `editorStickers()`: the editor's own stamps as a sticker provider (id `editor`), the default in
|
|
3
|
+
* every `StickersSlot`, so stickers work with no setup. Each stamp is MIT-licensed and tintable.
|
|
4
|
+
* Its SVG is the stamp's outline, contoured from the coverage function the paint editor draws, so
|
|
5
|
+
* the vector art and the painted stamp have the same shape; its PNG is drawn from the function.
|
|
6
|
+
*/
|
|
7
|
+
import { type StampKind } from './stamps.js';
|
|
8
|
+
import type { StickerProvider } from './types.js';
|
|
9
|
+
/** The stamp's outline as SVG path data in a `BOX` px square (marching squares on the 0.5 level, simplified). */
|
|
10
|
+
export declare function stampOutline(kind: StampKind): string;
|
|
11
|
+
/** The stamp drawn flat in `colour` as RGBA, `size` px square (supersampled). */
|
|
12
|
+
export declare function stampPixels(kind: StampKind, size: number, colour: string): Uint8ClampedArray;
|
|
13
|
+
/** The editor's own stamps as a `StickerProvider` (id `editor`): tintable, MIT, SVG and PNG. */
|
|
14
|
+
export declare function editorStickers(): StickerProvider;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type StickerErrorCode = 'unknown_sticker' | 'unknown_provider' | 'unsupported_format' | 'no_provider' | 'load_failed' | 'invalid_argument';
|
|
2
|
+
/** A refusal from a sticker provider or the sticker tools. The message says what to do instead. */
|
|
3
|
+
export declare class StickerError extends Error {
|
|
4
|
+
readonly code: StickerErrorCode;
|
|
5
|
+
constructor(code: StickerErrorCode, message: string);
|
|
6
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type StickerErrorCode = 'unknown_sticker' | 'unknown_provider' | 'unsupported_format' | 'no_provider' | 'load_failed' | 'invalid_argument';
|
|
2
|
+
/** A refusal from a sticker provider or the sticker tools. The message says what to do instead. */
|
|
3
|
+
export declare class StickerError extends Error {
|
|
4
|
+
readonly code: StickerErrorCode;
|
|
5
|
+
constructor(code: StickerErrorCode, message: string);
|
|
6
|
+
}
|