@pixerate/editor-svelte 0.89.0 → 0.91.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/dist/canvas/CanvasEffectControls.svelte +36 -0
- package/dist/canvas/CanvasEffectControls.svelte.d.ts +11 -0
- package/dist/canvas/CanvasEffectControls.svelte.d.ts.map +1 -0
- package/dist/canvas/CanvasEffectsPanel.svelte +96 -0
- package/dist/canvas/CanvasEffectsPanel.svelte.d.ts +15 -0
- package/dist/canvas/CanvasEffectsPanel.svelte.d.ts.map +1 -0
- package/dist/canvas/CanvasNodeEffectLayer.svelte +53 -0
- package/dist/canvas/CanvasNodeEffectLayer.svelte.d.ts +15 -0
- package/dist/canvas/CanvasNodeEffectLayer.svelte.d.ts.map +1 -0
- package/dist/canvas/ShapeNode.svelte +6 -0
- package/dist/canvas/ShapeNode.svelte.d.ts.map +1 -1
- package/dist/canvas/canvasEffects.svelte.d.ts +21 -0
- package/dist/canvas/canvasEffects.svelte.d.ts.map +1 -0
- package/dist/canvas/canvasEffects.svelte.js +39 -0
- package/dist/canvas/createCanvasAnimation.svelte.d.ts.map +1 -1
- package/dist/canvas/createCanvasArrange.svelte.d.ts.map +1 -1
- package/dist/canvas/createCanvasAutoLayout.svelte.d.ts.map +1 -1
- package/dist/canvas/createCanvasComponents.svelte.d.ts.map +1 -1
- package/dist/canvas/createCanvasScenes.svelte.d.ts +10 -0
- package/dist/canvas/createCanvasScenes.svelte.d.ts.map +1 -1
- package/dist/canvas/createCanvasScenes.svelte.js +9 -2
- package/dist/canvas/index.d.ts +3 -0
- package/dist/canvas/index.d.ts.map +1 -1
- package/dist/canvas/index.js +3 -0
- package/dist/paint-editor/PaintEditor.svelte +8 -4
- package/dist/paint-editor/PaintEditor.svelte.d.ts.map +1 -1
- package/dist/paint-editor/PaintEffectsPanel.svelte +127 -0
- package/dist/paint-editor/PaintEffectsPanel.svelte.d.ts +9 -0
- package/dist/paint-editor/PaintEffectsPanel.svelte.d.ts.map +1 -0
- package/dist/paint-editor/index.d.ts +4 -1
- package/dist/paint-editor/index.d.ts.map +1 -1
- package/dist/paint-editor/index.js +2 -1
- package/dist/paint-editor/paintEditorRune.svelte.d.ts +13 -1
- package/dist/paint-editor/paintEditorRune.svelte.d.ts.map +1 -1
- package/dist/paint-editor/paintEditorRune.svelte.js +32 -1
- package/package.json +2 -2
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { CanvasEffectsController, CanvasShapeEffect } from '@pixerate/editor/canvas';
|
|
3
|
+
import EffectParameters from '../effects/EffectParameters.svelte';
|
|
4
|
+
import { effectDescriptionOf } from '../effects/effects.svelte.js';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
controller: CanvasEffectsController;
|
|
8
|
+
nodeId: string;
|
|
9
|
+
effect: CanvasShapeEffect;
|
|
10
|
+
onchanged?: () => void;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
let { controller, nodeId, effect, onchanged }: Props = $props();
|
|
14
|
+
const loaded = effectDescriptionOf(() => controller.effectsProvider, () => effect.effect);
|
|
15
|
+
let message = $state<string | null>(null);
|
|
16
|
+
const run = (work: Promise<unknown>) =>
|
|
17
|
+
void work.then(
|
|
18
|
+
() => ((message = null), onchanged?.()),
|
|
19
|
+
(e: unknown) => (message = e instanceof Error ? e.message : String(e)),
|
|
20
|
+
);
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
{#if loaded.error}
|
|
24
|
+
<p class="text-[11px] text-amber-500">{loaded.error}</p>
|
|
25
|
+
{:else if !loaded.description}
|
|
26
|
+
<p class="text-[11px] text-muted-foreground">Loading…</p>
|
|
27
|
+
{:else}
|
|
28
|
+
<EffectParameters
|
|
29
|
+
description={loaded.description}
|
|
30
|
+
values={effect.values}
|
|
31
|
+
onchange={(k, v) => run(controller.updateNodeEffect(nodeId, { values: { [k]: v as never } }))}
|
|
32
|
+
onreset={(k) => run(controller.updateNodeEffect(nodeId, { values: { [k]: null } }))}
|
|
33
|
+
onpreset={(v) => run(controller.updateNodeEffect(nodeId, { values: v as never }))}
|
|
34
|
+
/>
|
|
35
|
+
{#if message}<p role="alert" class="text-[11px] text-destructive">{message}</p>{/if}
|
|
36
|
+
{/if}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CanvasEffectsController, CanvasShapeEffect } from '@pixerate/editor/canvas';
|
|
2
|
+
interface Props {
|
|
3
|
+
controller: CanvasEffectsController;
|
|
4
|
+
nodeId: string;
|
|
5
|
+
effect: CanvasShapeEffect;
|
|
6
|
+
onchanged?: () => void;
|
|
7
|
+
}
|
|
8
|
+
declare const CanvasEffectControls: import("svelte").Component<Props, {}, "">;
|
|
9
|
+
type CanvasEffectControls = ReturnType<typeof CanvasEffectControls>;
|
|
10
|
+
export default CanvasEffectControls;
|
|
11
|
+
//# sourceMappingURL=CanvasEffectControls.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CanvasEffectControls.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/CanvasEffectControls.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAKzF,UAAU,KAAK;IACd,UAAU,EAAE,uBAAuB,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AA4BF,QAAA,MAAM,oBAAoB,2CAAwC,CAAC;AACnE,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACpE,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { untrack } from 'svelte';
|
|
3
|
+
import { isShapeDescription, type CanvasEffectsController, type ShapeDescription } from '@pixerate/editor/canvas';
|
|
4
|
+
import type { EffectProvider } from '@pixerate/editor/effects';
|
|
5
|
+
import EffectsBrowser from '../effects/EffectsBrowser.svelte';
|
|
6
|
+
import CanvasEffectControls from './CanvasEffectControls.svelte';
|
|
7
|
+
|
|
8
|
+
interface Props {
|
|
9
|
+
controller: CanvasEffectsController;
|
|
10
|
+
/** The node to edit (e.g. the selected shape). */
|
|
11
|
+
nodeId?: string | null;
|
|
12
|
+
/** The node's shape, to show its effect. */
|
|
13
|
+
shape?: ShapeDescription | null;
|
|
14
|
+
/** The scene to set a transition into (e.g. the current one). */
|
|
15
|
+
sceneId?: string | null;
|
|
16
|
+
class?: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
let { controller, nodeId = null, shape = null, sceneId = null, class: className = '' }: Props = $props();
|
|
20
|
+
let provider = $state.raw<EffectProvider | null>(untrack(() => controller.effectsProvider));
|
|
21
|
+
let tick = $state(0);
|
|
22
|
+
$effect(() => {
|
|
23
|
+
const c = controller;
|
|
24
|
+
provider = c.effectsProvider;
|
|
25
|
+
return untrack(() => c.effects.subscribe((p) => (provider = p)));
|
|
26
|
+
});
|
|
27
|
+
let browse = $state<null | 'fill' | 'overlay' | 'transition'>(null);
|
|
28
|
+
let message = $state<string | null>(null);
|
|
29
|
+
const nodeEffect = $derived(isShapeDescription(shape) ? shape.effect : undefined);
|
|
30
|
+
const transition = $derived.by(() => {
|
|
31
|
+
void tick;
|
|
32
|
+
return sceneId ? controller.sceneTransition(sceneId) : undefined;
|
|
33
|
+
});
|
|
34
|
+
const btn = 'rounded border border-border px-1.5 py-0.5 text-[11px] disabled:opacity-40';
|
|
35
|
+
function run(work: () => unknown) {
|
|
36
|
+
message = null;
|
|
37
|
+
Promise.resolve()
|
|
38
|
+
.then(work)
|
|
39
|
+
.then(
|
|
40
|
+
() => tick++,
|
|
41
|
+
(e: unknown) => (message = e instanceof Error ? e.message : String(e)),
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
</script>
|
|
45
|
+
|
|
46
|
+
<!-- Effects for a shape node (fill, overlay, controls, play / hold, remove) and the transition into a scene. -->
|
|
47
|
+
<section class="flex flex-col gap-2 text-xs {className}" aria-label="Canvas effects" data-canvas-effects="">
|
|
48
|
+
<div class="flex flex-wrap items-center gap-1">
|
|
49
|
+
<span class="flex-1 font-semibold">Effects</span>
|
|
50
|
+
<button type="button" class={btn} disabled={!provider || !nodeId || !shape} aria-pressed={browse === 'fill'} onclick={() => (browse = browse === 'fill' ? null : 'fill')}>Fill…</button>
|
|
51
|
+
<button type="button" class={btn} disabled={!provider || !nodeId || !shape} aria-pressed={browse === 'overlay'} onclick={() => (browse = browse === 'overlay' ? null : 'overlay')}>Overlay…</button>
|
|
52
|
+
<button type="button" class={btn} disabled={!provider || !sceneId} aria-pressed={browse === 'transition'} onclick={() => (browse = browse === 'transition' ? null : 'transition')}>Scene transition…</button>
|
|
53
|
+
</div>
|
|
54
|
+
{#if !provider}<p class="text-[11px] text-muted-foreground">No effects provider is registered. Effects on the canvas are kept.</p>{/if}
|
|
55
|
+
{#if browse === 'fill' && nodeId}
|
|
56
|
+
{@const id = nodeId}
|
|
57
|
+
<EffectsBrowser {provider} uses={['generator', 'interactive']} title="Fills" onpick={(e) => ((browse = null), run(() => controller.applyNodeEffect(id, e.id, { mode: 'fill' })))} />
|
|
58
|
+
{/if}
|
|
59
|
+
{#if browse === 'overlay' && nodeId}
|
|
60
|
+
{@const id = nodeId}
|
|
61
|
+
<EffectsBrowser {provider} uses={['overlay', 'title', 'interactive', 'generator']} title="Overlays" onpick={(e) => ((browse = null), run(() => controller.applyNodeEffect(id, e.id, { mode: 'overlay' })))} />
|
|
62
|
+
{/if}
|
|
63
|
+
{#if browse === 'transition' && sceneId}
|
|
64
|
+
{@const id = sceneId}
|
|
65
|
+
<EffectsBrowser {provider} uses={['transition']} title="Transitions" onpick={(e) => ((browse = null), run(() => controller.setSceneTransition(id, e.id)))} />
|
|
66
|
+
{/if}
|
|
67
|
+
{#if nodeEffect && nodeId}
|
|
68
|
+
{@const id = nodeId}
|
|
69
|
+
<div class="space-y-1 rounded border border-border p-1" data-canvas-node-effect={id}>
|
|
70
|
+
<div class="flex items-center gap-1">
|
|
71
|
+
<span class="min-w-0 flex-1 truncate font-medium">{nodeEffect.name ?? nodeEffect.effect} <span class="text-muted-foreground">· {nodeEffect.mode}</span></span>
|
|
72
|
+
<label class="flex items-center gap-1">
|
|
73
|
+
<input
|
|
74
|
+
type="checkbox"
|
|
75
|
+
checked={nodeEffect.playing !== false}
|
|
76
|
+
aria-label="Play"
|
|
77
|
+
onchange={(e) => {
|
|
78
|
+
const playing = e.currentTarget.checked;
|
|
79
|
+
run(() => controller.updateNodeEffect(id, { playing }));
|
|
80
|
+
}}
|
|
81
|
+
/> Play
|
|
82
|
+
</label>
|
|
83
|
+
<button type="button" class={btn} aria-label="Remove effect" onclick={() => run(() => controller.removeNodeEffect(id))}>✕</button>
|
|
84
|
+
</div>
|
|
85
|
+
{#if provider}<CanvasEffectControls {controller} nodeId={id} effect={nodeEffect} />{/if}
|
|
86
|
+
</div>
|
|
87
|
+
{/if}
|
|
88
|
+
{#if sceneId && transition}
|
|
89
|
+
{@const id = sceneId}
|
|
90
|
+
<div class="flex items-center gap-1" data-canvas-scene-transition={id}>
|
|
91
|
+
<span class="min-w-0 flex-1 truncate">Into scene: {transition.name ?? transition.effect} ({transition.duration ?? 600} ms)</span>
|
|
92
|
+
<button type="button" class={btn} aria-label="Remove transition" onclick={() => run(() => controller.setSceneTransition(id, null))}>✕</button>
|
|
93
|
+
</div>
|
|
94
|
+
{/if}
|
|
95
|
+
{#if message}<p role="alert" class="text-[11px] text-destructive">{message}</p>{/if}
|
|
96
|
+
</section>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type CanvasEffectsController, type ShapeDescription } from '@pixerate/editor/canvas';
|
|
2
|
+
interface Props {
|
|
3
|
+
controller: CanvasEffectsController;
|
|
4
|
+
/** The node to edit (e.g. the selected shape). */
|
|
5
|
+
nodeId?: string | null;
|
|
6
|
+
/** The node's shape, to show its effect. */
|
|
7
|
+
shape?: ShapeDescription | null;
|
|
8
|
+
/** The scene to set a transition into (e.g. the current one). */
|
|
9
|
+
sceneId?: string | null;
|
|
10
|
+
class?: string;
|
|
11
|
+
}
|
|
12
|
+
declare const CanvasEffectsPanel: import("svelte").Component<Props, {}, "">;
|
|
13
|
+
type CanvasEffectsPanel = ReturnType<typeof CanvasEffectsPanel>;
|
|
14
|
+
export default CanvasEffectsPanel;
|
|
15
|
+
//# sourceMappingURL=CanvasEffectsPanel.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CanvasEffectsPanel.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/CanvasEffectsPanel.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,EAAsB,KAAK,uBAAuB,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAMjH,UAAU,KAAK;IACd,UAAU,EAAE,uBAAuB,CAAC;IACpC,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChC,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAqFF,QAAA,MAAM,kBAAkB,2CAAwC,CAAC;AACjE,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAChE,eAAe,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { untrack } from 'svelte';
|
|
3
|
+
import { runCanvasNodeEffect, type CanvasShapeEffect } from '@pixerate/editor/canvas';
|
|
4
|
+
import type { EffectProvider } from '@pixerate/editor/effects';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
provider: EffectProvider;
|
|
8
|
+
effect: CanvasShapeEffect;
|
|
9
|
+
width: number;
|
|
10
|
+
height: number;
|
|
11
|
+
/** An SVG path (the node's own pixels) the fill is clipped to. */
|
|
12
|
+
clipPath?: string;
|
|
13
|
+
clipTransform?: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
let { provider, effect: fx, width, height, clipPath, clipTransform }: Props = $props();
|
|
17
|
+
let canvas = $state<HTMLCanvasElement | null>(null);
|
|
18
|
+
let failed = $state(false);
|
|
19
|
+
const dpr = typeof window !== 'undefined' ? Math.min(2, window.devicePixelRatio || 1) : 1;
|
|
20
|
+
const pw = $derived(Math.max(1, Math.round(width * dpr)));
|
|
21
|
+
const ph = $derived(Math.max(1, Math.round(height * dpr)));
|
|
22
|
+
const clipId = `pixerate-effect-clip-${Math.random().toString(36).slice(2)}`;
|
|
23
|
+
|
|
24
|
+
$effect(() => {
|
|
25
|
+
const target = canvas;
|
|
26
|
+
const p = provider;
|
|
27
|
+
const e = $state.snapshot(fx) as CanvasShapeEffect;
|
|
28
|
+
void pw;
|
|
29
|
+
void ph;
|
|
30
|
+
if (!target) return;
|
|
31
|
+
failed = false;
|
|
32
|
+
const run = untrack(() => runCanvasNodeEffect({ provider: p, effect: e, target, onError: () => (failed = true) }));
|
|
33
|
+
return () => run.stop();
|
|
34
|
+
});
|
|
35
|
+
</script>
|
|
36
|
+
|
|
37
|
+
<!-- Draws a shape node's effect: `fill` inside the shape, `overlay` over the whole node. -->
|
|
38
|
+
{#if !failed && width > 0 && height > 0}
|
|
39
|
+
{#if fx.mode === 'overlay' || !clipPath}
|
|
40
|
+
<div style="position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:{fx.opacity ?? 1}">
|
|
41
|
+
<canvas bind:this={canvas} width={pw} height={ph} style="width:100%;height:100%;display:block" data-canvas-effect={fx.effect}></canvas>
|
|
42
|
+
</div>
|
|
43
|
+
{:else}
|
|
44
|
+
<svg style="position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:{fx.opacity ?? 1}" viewBox="0 0 {width} {height}" preserveAspectRatio="none" aria-hidden="true">
|
|
45
|
+
<defs>
|
|
46
|
+
<clipPath id={clipId}><path d={clipPath} transform={clipTransform} /></clipPath>
|
|
47
|
+
</defs>
|
|
48
|
+
<foreignObject x="0" y="0" {width} {height} clip-path="url(#{clipId})">
|
|
49
|
+
<canvas bind:this={canvas} width={pw} height={ph} style="width:100%;height:100%;display:block" data-canvas-effect={fx.effect}></canvas>
|
|
50
|
+
</foreignObject>
|
|
51
|
+
</svg>
|
|
52
|
+
{/if}
|
|
53
|
+
{/if}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type CanvasShapeEffect } from '@pixerate/editor/canvas';
|
|
2
|
+
import type { EffectProvider } from '@pixerate/editor/effects';
|
|
3
|
+
interface Props {
|
|
4
|
+
provider: EffectProvider;
|
|
5
|
+
effect: CanvasShapeEffect;
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
/** An SVG path (the node's own pixels) the fill is clipped to. */
|
|
9
|
+
clipPath?: string;
|
|
10
|
+
clipTransform?: string;
|
|
11
|
+
}
|
|
12
|
+
declare const CanvasNodeEffectLayer: import("svelte").Component<Props, {}, "">;
|
|
13
|
+
type CanvasNodeEffectLayer = ReturnType<typeof CanvasNodeEffectLayer>;
|
|
14
|
+
export default CanvasNodeEffectLayer;
|
|
15
|
+
//# sourceMappingURL=CanvasNodeEffectLayer.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CanvasNodeEffectLayer.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/CanvasNodeEffectLayer.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG9D,UAAU,KAAK;IACd,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAgDF,QAAA,MAAM,qBAAqB,2CAAwC,CAAC;AACpE,KAAK,qBAAqB,GAAG,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACtE,eAAe,qBAAqB,CAAC"}
|
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
type ShapeDescription
|
|
11
11
|
} from '@pixerate/editor/canvas';
|
|
12
12
|
import { getShapeNodeZoom } from './shapeBrushstroke.svelte.js';
|
|
13
|
+
import { getCanvasEffectsProvider } from './canvasEffects.svelte.js';
|
|
14
|
+
import CanvasNodeEffectLayer from './CanvasNodeEffectLayer.svelte';
|
|
13
15
|
|
|
14
16
|
interface Props {
|
|
15
17
|
/** Unique node id (passed by SvelteFlow or user). */
|
|
@@ -29,6 +31,7 @@
|
|
|
29
31
|
let { id, data, width, height, selected = false, class: className = '', children }: Props = $props();
|
|
30
32
|
|
|
31
33
|
const shape = $derived(isShapeDescription(data?.shape) ? data.shape : null);
|
|
34
|
+
const effectsProvider = getCanvasEffectsProvider();
|
|
32
35
|
const render = $derived(shape ? getShapeRenderData(shape, { width, height }, { id: id || data?.id }) : null);
|
|
33
36
|
|
|
34
37
|
// Brushed strokes: the paint-engine image at the bucketed zoom (the plain path until it is ready).
|
|
@@ -144,6 +147,9 @@
|
|
|
144
147
|
/>
|
|
145
148
|
{/if}
|
|
146
149
|
</svg>
|
|
150
|
+
{#if shape?.effect && effectsProvider && render && width && height}
|
|
151
|
+
<CanvasNodeEffectLayer provider={effectsProvider} effect={shape.effect} {width} {height} clipPath={render.d} clipTransform={render.transform} />
|
|
152
|
+
{/if}
|
|
147
153
|
{@render children?.()}
|
|
148
154
|
</div>
|
|
149
155
|
{/if}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShapeNode.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/ShapeNode.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAOL,KAAK,gBAAgB,EACrB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"ShapeNode.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/ShapeNode.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAOL,KAAK,gBAAgB,EACrB,MAAM,yBAAyB,CAAC;AAMjC,UAAU,KAAK;IACd,qDAAqD;IACrD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,2DAA2D;IAC3D,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,gBAAgB,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACvD,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACnB;AAqGF,QAAA,MAAM,SAAS,2CAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type CanvasEffectsController, type CanvasEffectsControllerOptions, type CanvasEffectsToolProviderOptions, type CanvasNode } from "@pixerate/editor/canvas";
|
|
2
|
+
import type { EffectProvider } from "@pixerate/editor/effects";
|
|
3
|
+
import type { ToolRegistry } from "@pixerate/editor/tools";
|
|
4
|
+
/**
|
|
5
|
+
* Gives the shape nodes below the calling component an effects provider (see
|
|
6
|
+
* `@pixerate/editor/effects`), so their `shape.effect` is drawn. Call during initialisation; pass
|
|
7
|
+
* a getter to follow a changing provider. Without one effects are kept and not drawn.
|
|
8
|
+
*/
|
|
9
|
+
export declare function setCanvasEffectsProvider(provider: EffectProvider | null | undefined | (() => EffectProvider | null | undefined)): void;
|
|
10
|
+
/** The effects provider set by an ancestor with `setCanvasEffectsProvider`, or `null`. */
|
|
11
|
+
export declare function getCanvasEffectsProvider(): EffectProvider | null;
|
|
12
|
+
/**
|
|
13
|
+
* A canvas effects controller (apply, change and remove node effects, scene transitions) for the
|
|
14
|
+
* calling component, with `effects` (a getter follows changes) registered while given.
|
|
15
|
+
*/
|
|
16
|
+
export declare function createCanvasEffects<TNode extends CanvasNode = CanvasNode>(options: Omit<CanvasEffectsControllerOptions<TNode>, "effects"> & {
|
|
17
|
+
effects?: EffectProvider | null | (() => EffectProvider | null | undefined);
|
|
18
|
+
}): CanvasEffectsController<TNode>;
|
|
19
|
+
/** Registers the canvas effect tools for the lifetime of the calling component. */
|
|
20
|
+
export declare function useCanvasEffectsTools(registry: ToolRegistry | null | undefined | (() => ToolRegistry | null | undefined), controller: CanvasEffectsController, options?: CanvasEffectsToolProviderOptions): void;
|
|
21
|
+
//# sourceMappingURL=canvasEffects.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvasEffects.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/canvasEffects.svelte.ts"],"names":[],"mappings":"AACA,OAAO,EAGN,KAAK,uBAAuB,EAC5B,KAAK,8BAA8B,EACnC,KAAK,gCAAgC,EACrC,KAAK,UAAU,EACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAI3D;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,IAAI,CAEtI;AAED,0FAA0F;AAC1F,wBAAgB,wBAAwB,IAAI,cAAc,GAAG,IAAI,CAGhE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,EACxE,OAAO,EAAE,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,GAAG,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC,CAAA;CAAE,GAC/I,uBAAuB,CAAC,KAAK,CAAC,CAQhC;AAED,mFAAmF;AACnF,wBAAgB,qBAAqB,CACpC,QAAQ,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,GAAG,CAAC,MAAM,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC,EACnF,UAAU,EAAE,uBAAuB,EACnC,OAAO,GAAE,gCAAqC,GAC5C,IAAI,CAMN"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { getContext, setContext, untrack } from "svelte";
|
|
2
|
+
import { createCanvasEffectsController, createCanvasEffectsToolProvider, } from "@pixerate/editor/canvas";
|
|
3
|
+
const KEY = Symbol("pixerate-canvas-effects");
|
|
4
|
+
/**
|
|
5
|
+
* Gives the shape nodes below the calling component an effects provider (see
|
|
6
|
+
* `@pixerate/editor/effects`), so their `shape.effect` is drawn. Call during initialisation; pass
|
|
7
|
+
* a getter to follow a changing provider. Without one effects are kept and not drawn.
|
|
8
|
+
*/
|
|
9
|
+
export function setCanvasEffectsProvider(provider) {
|
|
10
|
+
setContext(KEY, typeof provider === "function" ? provider : () => provider);
|
|
11
|
+
}
|
|
12
|
+
/** The effects provider set by an ancestor with `setCanvasEffectsProvider`, or `null`. */
|
|
13
|
+
export function getCanvasEffectsProvider() {
|
|
14
|
+
const get = getContext(KEY);
|
|
15
|
+
return get?.() ?? null;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* A canvas effects controller (apply, change and remove node effects, scene transitions) for the
|
|
19
|
+
* calling component, with `effects` (a getter follows changes) registered while given.
|
|
20
|
+
*/
|
|
21
|
+
export function createCanvasEffects(options) {
|
|
22
|
+
const controller = createCanvasEffectsController({ getNodes: options.getNodes, setNodes: options.setNodes, history: options.history, scenes: options.scenes });
|
|
23
|
+
$effect(() => {
|
|
24
|
+
const p = typeof options.effects === "function" ? options.effects() : options.effects;
|
|
25
|
+
if (!p)
|
|
26
|
+
return;
|
|
27
|
+
return untrack(() => controller.useEffects(p));
|
|
28
|
+
});
|
|
29
|
+
return controller;
|
|
30
|
+
}
|
|
31
|
+
/** Registers the canvas effect tools for the lifetime of the calling component. */
|
|
32
|
+
export function useCanvasEffectsTools(registry, controller, options = {}) {
|
|
33
|
+
$effect(() => {
|
|
34
|
+
const target = typeof registry === "function" ? registry() : registry;
|
|
35
|
+
if (!target)
|
|
36
|
+
return;
|
|
37
|
+
return target.register(createCanvasEffectsToolProvider(controller, options));
|
|
38
|
+
});
|
|
39
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createCanvasAnimation.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/createCanvasAnimation.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,KAAK,EACV,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,4BAA4B,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU;IAClF,QAAQ,EAAE,MAAM,KAAK,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IACnC,mDAAmD;IACnD,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;IAChC,+FAA+F;IAC/F,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC3C,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,EAAE,4BAA4B,CAAC,KAAK,CAAC;;;;;;;;;;kBA2DnG,KAAK,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"createCanvasAnimation.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/createCanvasAnimation.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,KAAK,EACV,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,4BAA4B,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU;IAClF,QAAQ,EAAE,MAAM,KAAK,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IACnC,mDAAmD;IACnD,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;IAChC,+FAA+F;IAC/F,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC3C,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,EAAE,4BAA4B,CAAC,KAAK,CAAC;;;;;;;;;;kBA2DnG,KAAK,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAao93G,CAAC;;;;;;;;;;;YAAg/C,CAAC;mBAA8B,CAAC;;;;;;;YAAmjB,CAAC;gBAA0B,CAAC;;;EAHhl8G;AAED,MAAM,MAAM,qBAAqB,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,IAAI,UAAU,CAAC,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createCanvasArrange.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/createCanvasArrange.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,8BAA8B,EACnC,KAAK,SAAS,EACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,KAAK,WAAW,GAAG,8BAA8B,CAAC,GAAG,CAAC,CAAC;AAEvD,MAAM,WAAW,0BAA0B,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,CAChF,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,UAAU,GAAG,gBAAgB,CAAC;IACrE,QAAQ,EAAE,MAAM,KAAK,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IACnC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;CAC/C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,EACxE,OAAO,EAAE,0BAA0B,CAAC,KAAK,CAAC;;IAkBzC;;;;;OAKG;wBACiB,MAAM;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"createCanvasArrange.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/createCanvasArrange.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,8BAA8B,EACnC,KAAK,SAAS,EACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,KAAK,WAAW,GAAG,8BAA8B,CAAC,GAAG,CAAC,CAAC;AAEvD,MAAM,WAAW,0BAA0B,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,CAChF,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,UAAU,GAAG,gBAAgB,CAAC;IACrE,QAAQ,EAAE,MAAM,KAAK,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IACnC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;CAC/C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,EACxE,OAAO,EAAE,0BAA0B,CAAC,KAAK,CAAC;;IAkBzC;;;;;OAKG;wBACiB,MAAM;;;;;;;;;;sBAoD47yD,CAAC;sBAAiE,CAAC;sBAAiE,CAAC;oBAA+D,CAAC;cAAyD,CAAC;gBAAiD,CAAC;;;;;;;;;0BAA8tC,CAAC;;yBAA6kB,CAAC;;0BAAgf,CAAC;;;;;;;;;;EAxCti4D;AAED,MAAM,MAAM,aAAa,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,IAAI,UAAU,CAAC,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;AAEjH,MAAM,WAAW,6BAA6B;IAC7C,OAAO,EAAE;QAAE,SAAS,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,OAAO,CAAA;KAAE,CAAC;IACjE,uEAAuE;IACvE,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,OAAO,CAAA;KAAE,CAAC;IAC1D,aAAa,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IACrC,QAAQ,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;CAC7C;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,6BAA6B,GAAG,MAAM,IAAI,CAqB/F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createCanvasAutoLayout.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/createCanvasAutoLayout.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,iCAAiC,EACtC,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,KAAK,WAAW,GAAG,iCAAiC,CAAC,GAAG,CAAC,CAAC;AAE1D,MAAM,WAAW,6BAA6B,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,CACnF,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,UAAU,GAAG,gBAAgB,CAAC;IACrE,QAAQ,EAAE,MAAM,KAAK,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IACnC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;CAC/C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,EAAE,6BAA6B,CAAC,KAAK,CAAC;;;IA+BzH,2FAA2F;kBAC7E,OAAO,SAAS,kBAAkB,WAAW,OAAO,EAAE,GAAG,OAAO,EAAE;IAKhF,gFAAgF;0BAC1D,QAAQ,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAIjE,4EAA4E;iBAC/D,MAAM;IAInB;;;OAGG;wBACiB,MAAM;;;;;;;;
|
|
1
|
+
{"version":3,"file":"createCanvasAutoLayout.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/createCanvasAutoLayout.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,iCAAiC,EACtC,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,KAAK,WAAW,GAAG,iCAAiC,CAAC,GAAG,CAAC,CAAC;AAE1D,MAAM,WAAW,6BAA6B,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,CACnF,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,UAAU,GAAG,gBAAgB,CAAC;IACrE,QAAQ,EAAE,MAAM,KAAK,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IACnC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;CAC/C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,EAAE,6BAA6B,CAAC,KAAK,CAAC;;;IA+BzH,2FAA2F;kBAC7E,OAAO,SAAS,kBAAkB,WAAW,OAAO,EAAE,GAAG,OAAO,EAAE;IAKhF,gFAAgF;0BAC1D,QAAQ,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAIjE,4EAA4E;iBAC/D,MAAM;IAInB;;;OAGG;wBACiB,MAAM;;;;;;;;aAiB8gxE,CAAC;;;;aAAiX,CAAC;cAAwB,CAAC;;;;;;;;;;gBAAqrD,CAAC;;;;EAH3m1E;AAED,MAAM,MAAM,gBAAgB,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,IAAI,UAAU,CAAC,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createCanvasComponents.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/createCanvasComponents.svelte.ts"],"names":[],"mappings":"AACA,OAAO,EAEN,KAAK,iCAAiC,EACtC,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,KAAK,WAAW,GAAG,iCAAiC,CAAC,GAAG,CAAC,CAAC;AAE1D,MAAM,WAAW,6BAA6B,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,CACnF,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;IAC/D,QAAQ,EAAE,MAAM,KAAK,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IACnC,oFAAoF;IACpF,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,EAAE,6BAA6B,CAAC,KAAK,CAAC;IAazH,gCAAgC;;;;;
|
|
1
|
+
{"version":3,"file":"createCanvasComponents.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/createCanvasComponents.svelte.ts"],"names":[],"mappings":"AACA,OAAO,EAEN,KAAK,iCAAiC,EACtC,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,KAAK,WAAW,GAAG,iCAAiC,CAAC,GAAG,CAAC,CAAC;AAE1D,MAAM,WAAW,6BAA6B,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,CACnF,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;IAC/D,QAAQ,EAAE,MAAM,KAAK,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IACnC,oFAAoF;IACpF,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,EAAE,6BAA6B,CAAC,KAAK,CAAC;IAazH,gCAAgC;;;;;4BAS0kuI,CAAC;;UAAmM,CAAC;YAAsB,CAAC;eAAyB,CAAC;;8BAA8E,CAAC;;;;;;;;;;6BAA4nC,CAAC;;;;;;;;eAA6yB,CAAC;;;;;;;oBAAi7B,CAAC;;;;;;;;;;;;;;gBAA07C,CAAC;;EAHxs3I;AAED,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CanvasScenesStore, type CanvasScene, type CanvasScenesOptions, type CanvasViewport, type FitViewportOptions } from '@pixerate/editor/canvas';
|
|
2
|
+
import type { EffectProvider } from '@pixerate/editor/effects';
|
|
2
3
|
import type { CanvasNode } from './types.js';
|
|
3
4
|
export interface CreateCanvasScenesOptions extends CanvasScenesOptions {
|
|
4
5
|
/** Reads the live viewport, used by `capture` / `recapture` (e.g. `useSvelteFlow().getViewport`). */
|
|
@@ -9,6 +10,15 @@ export interface CreateCanvasScenesOptions extends CanvasScenesOptions {
|
|
|
9
10
|
}) => void;
|
|
10
11
|
/** Transition duration passed to `setViewport` when showing a scene (default 300ms). */
|
|
11
12
|
duration?: number;
|
|
13
|
+
/**
|
|
14
|
+
* Plays a scene's provider transition (`scene.transition`) when showing it: `element` is the
|
|
15
|
+
* canvas view to capture and cover (e.g. the SvelteFlow wrapper). Without a provider or an
|
|
16
|
+
* element, scenes are shown with the plain viewport move.
|
|
17
|
+
*/
|
|
18
|
+
transitions?: {
|
|
19
|
+
provider: () => EffectProvider | null | undefined;
|
|
20
|
+
element: () => HTMLElement | null;
|
|
21
|
+
};
|
|
12
22
|
}
|
|
13
23
|
/**
|
|
14
24
|
* Headless Svelte 5 rune for Freeform-style Scenes: named saved viewports with
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createCanvasScenes.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/createCanvasScenes.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EAEjB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAExB,KAAK,cAAc,EACnB,KAAK,kBAAkB,
|
|
1
|
+
{"version":3,"file":"createCanvasScenes.svelte.d.ts","sourceRoot":"","sources":["../../src/canvas/createCanvasScenes.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EAEjB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAExB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EAEvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB;IACrE,qGAAqG;IACrG,WAAW,CAAC,EAAE,MAAM,cAAc,CAAC;IACnC,wEAAwE;IACxE,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAClF,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,WAAW,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,WAAW,GAAG,IAAI,CAAA;KAAE,CAAC;CACvG;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,yBAA8B;;;;;;IA+BxE,iEAAiE;mBAClD,MAAM,UAAS;QAAE,QAAQ,CAAC,EAAE,cAAc,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAK/F,sEAAsE;wBAE9D,UAAU,EAAE,OACd,MAAM,EAAE,QACP;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,SAChC,MAAM,QACP,kBAAkB;IAKzB,qDAAqD;kBACvC,MAAM;iBAIP,MAAM,SAAS,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;iBAC/C,MAAM,QAAQ,MAAM;eACtB,MAAM,WAAW,MAAM;mBACnB,MAAM,EAAE;iBACV,MAAM;;eAER,MAAM;;;;;kBAKH,MAAM,GAAG,OAAO;EAE/B;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CanvasScenesStore, fitViewportToNodes } from '@pixerate/editor/canvas';
|
|
1
|
+
import { CanvasScenesStore, fitViewportToNodes, transitionCanvasView } from '@pixerate/editor/canvas';
|
|
2
2
|
/**
|
|
3
3
|
* Headless Svelte 5 rune for Freeform-style Scenes: named saved viewports with
|
|
4
4
|
* show next / previous, reorder, rename and JSON persistence. Wraps the framework-agnostic
|
|
@@ -11,7 +11,14 @@ export function createCanvasScenes(options = {}) {
|
|
|
11
11
|
state = next;
|
|
12
12
|
});
|
|
13
13
|
const show = (scene) => {
|
|
14
|
-
if (scene)
|
|
14
|
+
if (!scene)
|
|
15
|
+
return scene;
|
|
16
|
+
const provider = options.transitions?.provider();
|
|
17
|
+
const element = options.transitions?.element();
|
|
18
|
+
if (scene.transition && provider && element) {
|
|
19
|
+
void transitionCanvasView({ provider, transition: scene.transition, element, jump: () => options.setViewport?.(scene.viewport, { duration: 0 }) });
|
|
20
|
+
}
|
|
21
|
+
else
|
|
15
22
|
options.setViewport?.(scene.viewport, { duration: options.duration ?? 300 });
|
|
16
23
|
return scene;
|
|
17
24
|
};
|
package/dist/canvas/index.d.ts
CHANGED
|
@@ -25,6 +25,9 @@ export { createCanvasMeasure, type CanvasMeasure, type CreateCanvasMeasureOption
|
|
|
25
25
|
export { measureBetween, measureToLine, measureSelection, measureLabel, isMeasureModifierHeld, snapToGrid, snapResize, snapNodeResize, inferResizeHandle, resizeHandleAxes, getResizingNodeRect, RESIZE_HANDLES, fitCubics, fitCubicRun, fitPathData, fitFreehandPath, cubicsToPathData, cubicPointAt, isStraightCubic, type MeasureGuide, type MeasureSelectionResult, type MeasureSelectionOptions, type ResizeHandle, type SnapResizeOptions, type SnapResizeResult, type SnapNodeResizeOptions, type SnapNodeResizeResult, type CubicSegment, type FitCubicsOptions, type FitPathDataOptions } from '@pixerate/editor/canvas';
|
|
26
26
|
export { alignNodes, distributeNodes, matchSize, reorderNodes, applyNodeUpdates, invertNodeUpdates, lockNodes, unlockNodes, toggleLockNodes, isLocked, getNodeSize, getNodeRect, getAbsolutePosition, readStyleSize, withStyleSize, computeSnapGuides, createGuideIndex, createNodeGuideIndex, snapNodeDrag, findConnectorSnap, nearestHandlePositions, handlePoint, positionToSide, sideToPosition, oppositePosition, CONNECTION_LINE_TYPES, CanvasScenesStore, createCanvasScenesStore, parseCanvasScenes, fitViewportToRect, fitViewportToNodes, matchArrangeShortcut, DEFAULT_ARRANGE_SHORTCUTS, type AlignEdge, type DistributeAxis, type DistributeMode, type SizeDimension, type ZOrderOperation, type CanvasNodeUpdate, type GuideLine, type GuideIndex, type SnapGuidesOptions, type SnapResult, type ConnectorSnap, type ConnectorSnapTarget, type CanvasConnectionLineType, type CanvasScene, type CanvasScenesState, type CanvasViewport, type CanvasArrangeAction, type ArrangeShortcutBinding } from '@pixerate/editor/canvas';
|
|
27
27
|
export { default as ShapeNode } from './ShapeNode.svelte';
|
|
28
|
+
export { default as CanvasNodeEffectLayer } from './CanvasNodeEffectLayer.svelte';
|
|
29
|
+
export { default as CanvasEffectsPanel } from './CanvasEffectsPanel.svelte';
|
|
30
|
+
export * from './canvasEffects.svelte.js';
|
|
28
31
|
export { setShapeNodeZoom, getShapeNodeZoom, createCanvasBrushes } from './shapeBrushstroke.svelte.js';
|
|
29
32
|
export { combineShapeNodes, canCombineShapeNodes, applyShapeCombination, revertShapeCombination, shapeNodeToPolygon, isShapeNode, getNodeShape, SHAPE_DATA_KEY, SHAPE_NODE_TYPE, SHAPE_OPERATIONS, SHAPE_KINDS, isShapeDescription, shapeToPolygon, getShapeSvg, getShapeRenderData, parseSvgPath, flattenSvgPath, polygonToSvgPath, simplifyRing, polygonBoolean, unionPolygons, intersectPolygons, subtractPolygons, xorPolygons, dividePolygons, polygonArea, multiPolygonArea, multiPolygonBounds, ringSignedArea, pointInRings, pointInMultiPolygon, type ShapeOperation, type ShapeDescription, type ShapeKind, type ShapePaint, type ShapeSize, type ShapeRenderData, type RectShape, type EllipseShape, type RegularPolygonShape, type StarShape, type PathShape, type PathCommand, type FlattenOptions, type PolygonToPathOptions, type CombineShapeNodesOptions, type CombineShapeNodesResult, type CombineShapeNodesRefusal, type ShapeNodePolygonOptions, type MultiPolygon, type PolygonWithHoles, type PolygonRing, type PolygonFillRule, type PolygonOperand, type PolygonInput, type PolygonPiece, type PolygonBooleanOperation, type PolygonBooleanOptions } from '@pixerate/editor/canvas';
|
|
30
33
|
export { offsetShapeNodes, outlineShapeNodeStrokes, canOffsetShapeNodes, canOutlineShapeNodeStrokes, applyShapeReplacement, hasVisibleStroke, shapeToBezierPath, shapeNodeToBezierPath, pathBoolean, unitePaths, intersectPaths, subtractPaths, excludePaths, dividePaths, normalizeBezierPath, bezierPathArea, offsetPath, outlineStroke, strokeOutlineRings, dashContours, toBezierPath, bezierPathToSvg, transformBezierPath, bezierPathBounds, bezierPathSignedArea, bezierPathLength, bezierPathPointAtLength, pointInBezierPath, distanceToBezierPath, countPathSegments, type BezierCommand, type BezierPath, type BezierPathInput, type PathOperand, type PathOperandInput, type PathOpsOptions, type PathBooleanResult, type DividePathsResult, type StrokeJoin, type StrokeCap, type OutlineStrokeOptions, type OffsetPathOptions, type OffsetShapeNodesOptions, type OutlineShapeStrokesOptions, type ShapePathEditResult, type ShapePathEditRefusal, type ShapePathEditOperation } from '@pixerate/editor/canvas';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/canvas/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/canvas/index.ts"],"names":[],"mappings":"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"}
|
package/dist/canvas/index.js
CHANGED
|
@@ -44,6 +44,9 @@ export { createCanvasMeasure } from './createCanvasMeasure.svelte.js';
|
|
|
44
44
|
export { measureBetween, measureToLine, measureSelection, measureLabel, isMeasureModifierHeld, snapToGrid, snapResize, snapNodeResize, inferResizeHandle, resizeHandleAxes, getResizingNodeRect, RESIZE_HANDLES, fitCubics, fitCubicRun, fitPathData, fitFreehandPath, cubicsToPathData, cubicPointAt, isStraightCubic } from '@pixerate/editor/canvas';
|
|
45
45
|
export { alignNodes, distributeNodes, matchSize, reorderNodes, applyNodeUpdates, invertNodeUpdates, lockNodes, unlockNodes, toggleLockNodes, isLocked, getNodeSize, getNodeRect, getAbsolutePosition, readStyleSize, withStyleSize, computeSnapGuides, createGuideIndex, createNodeGuideIndex, snapNodeDrag, findConnectorSnap, nearestHandlePositions, handlePoint, positionToSide, sideToPosition, oppositePosition, CONNECTION_LINE_TYPES, CanvasScenesStore, createCanvasScenesStore, parseCanvasScenes, fitViewportToRect, fitViewportToNodes, matchArrangeShortcut, DEFAULT_ARRANGE_SHORTCUTS } from '@pixerate/editor/canvas';
|
|
46
46
|
export { default as ShapeNode } from './ShapeNode.svelte';
|
|
47
|
+
export { default as CanvasNodeEffectLayer } from './CanvasNodeEffectLayer.svelte';
|
|
48
|
+
export { default as CanvasEffectsPanel } from './CanvasEffectsPanel.svelte';
|
|
49
|
+
export * from './canvasEffects.svelte.js';
|
|
47
50
|
export { setShapeNodeZoom, getShapeNodeZoom, createCanvasBrushes } from './shapeBrushstroke.svelte.js';
|
|
48
51
|
// Shape nodes and boolean operations (Unite / Intersect / Subtract / Exclude / Divide)
|
|
49
52
|
export { combineShapeNodes, canCombineShapeNodes, applyShapeCombination, revertShapeCombination, shapeNodeToPolygon, isShapeNode, getNodeShape, SHAPE_DATA_KEY, SHAPE_NODE_TYPE, SHAPE_OPERATIONS, SHAPE_KINDS, isShapeDescription, shapeToPolygon, getShapeSvg, getShapeRenderData, parseSvgPath, flattenSvgPath, polygonToSvgPath, simplifyRing, polygonBoolean, unionPolygons, intersectPolygons, subtractPolygons, xorPolygons, dividePolygons, polygonArea, multiPolygonArea, multiPolygonBounds, ringSignedArea, pointInRings, pointInMultiPolygon } from '@pixerate/editor/canvas';
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
import PaperPanel from './PaperPanel.svelte';
|
|
9
9
|
import WetPanel from './WetPanel.svelte';
|
|
10
10
|
import StickerPanel from './StickerPanel.svelte';
|
|
11
|
-
import
|
|
11
|
+
import PaintEffectsPanel from './PaintEffectsPanel.svelte';
|
|
12
|
+
import { chip, paintEffectsProvider } from './paintEditorRune.svelte.js';
|
|
12
13
|
|
|
13
14
|
interface Props {
|
|
14
15
|
controller: PaintEditorController;
|
|
@@ -22,7 +23,9 @@
|
|
|
22
23
|
}
|
|
23
24
|
let { controller, fileName, height = 720, presence, class: className = '' }: Props = $props();
|
|
24
25
|
let tool = $state<PaintTool>('brush');
|
|
25
|
-
let tab = $state<'color' | 'wet' | 'paper' | 'layers'>('color');
|
|
26
|
+
let tab = $state<'color' | 'wet' | 'paper' | 'layers' | 'effects'>('color');
|
|
27
|
+
const effects = paintEffectsProvider(() => controller);
|
|
28
|
+
const tabs = $derived(effects.current ? (['color', 'wet', 'paper', 'layers', 'effects'] as const) : (['color', 'wet', 'paper', 'layers'] as const));
|
|
26
29
|
let error = $state<string | null>(null);
|
|
27
30
|
</script>
|
|
28
31
|
|
|
@@ -37,14 +40,15 @@
|
|
|
37
40
|
</div>
|
|
38
41
|
<div class="flex w-64 shrink-0 flex-col gap-2 overflow-y-auto pr-1">
|
|
39
42
|
<div class="flex gap-1" role="tablist" aria-label="Paint panels">
|
|
40
|
-
{#each
|
|
41
|
-
<button type="button" role="tab" aria-selected={tab === t} class={chip(tab === t)} onclick={() => (tab = t)}>{t === 'color' ? 'Colour' : t === 'wet' ? 'Wet' : t === 'paper' ? 'Paper' : 'Layers'}</button>
|
|
43
|
+
{#each tabs as t (t)}
|
|
44
|
+
<button type="button" role="tab" aria-selected={tab === t} class={chip(tab === t)} onclick={() => (tab = t)}>{t === 'color' ? 'Colour' : t === 'wet' ? 'Wet' : t === 'paper' ? 'Paper' : t === 'layers' ? 'Layers' : 'Effects'}</button>
|
|
42
45
|
{/each}
|
|
43
46
|
</div>
|
|
44
47
|
{#if tab === 'color'}<ColorPanel {controller} />{/if}
|
|
45
48
|
{#if tab === 'wet'}<WetPanel {controller} />{/if}
|
|
46
49
|
{#if tab === 'paper'}<PaperPanel {controller} />{/if}
|
|
47
50
|
{#if tab === 'layers'}<PaintLayersPanel {controller} /><StickerPanel {controller} />{/if}
|
|
51
|
+
{#if tab === 'effects' && effects.current}<PaintEffectsPanel {controller} />{/if}
|
|
48
52
|
</div>
|
|
49
53
|
</div>
|
|
50
54
|
</div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaintEditor.svelte.d.ts","sourceRoot":"","sources":["../../src/paint-editor/PaintEditor.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAa,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"PaintEditor.svelte.d.ts","sourceRoot":"","sources":["../../src/paint-editor/PaintEditor.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAa,MAAM,+BAA+B,CAAC;AAanG,UAAU,KAAK;IACb,UAAU,EAAE,qBAAqB,CAAC;IAClC,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAgDH,QAAA,MAAM,WAAW,2CAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { PAPER_EFFECT_BLENDS, type PaintEditorController, type PaperEffectBlend } from '@pixerate/editor/paint-editor';
|
|
3
|
+
import type { EffectUse } from '@pixerate/editor/effects';
|
|
4
|
+
import EffectsBrowser from '../effects/EffectsBrowser.svelte';
|
|
5
|
+
import ImageEffectControls from '../image-editor/ImageEffectControls.svelte';
|
|
6
|
+
import { attempt, button, paintEditorState, paintEffectsProvider, panel } from './paintEditorRune.svelte.js';
|
|
7
|
+
|
|
8
|
+
interface Props {
|
|
9
|
+
controller: PaintEditorController;
|
|
10
|
+
class?: string;
|
|
11
|
+
}
|
|
12
|
+
let { controller, class: className = '' }: Props = $props();
|
|
13
|
+
const editor = paintEditorState(() => controller);
|
|
14
|
+
const effects = paintEffectsProvider(() => controller);
|
|
15
|
+
const provider = $derived(effects.current);
|
|
16
|
+
const view = $derived.by(() => {
|
|
17
|
+
const doc = editor.current.document;
|
|
18
|
+
const activeId = doc.activeLayerId;
|
|
19
|
+
return {
|
|
20
|
+
activeId,
|
|
21
|
+
paper: controller.getPaperEffect(),
|
|
22
|
+
layerEffect: activeId ? controller.getEffectLayer(activeId) : undefined,
|
|
23
|
+
pixel: activeId ? controller.getLayer(activeId)?.type === 'pixel' : false,
|
|
24
|
+
};
|
|
25
|
+
});
|
|
26
|
+
type Browse = null | 'paper' | 'layer' | 'fill' | 'light';
|
|
27
|
+
const BROWSERS: Record<Exclude<Browse, null>, { uses: EffectUse[]; title: string }> = {
|
|
28
|
+
paper: { uses: ['generator'], title: 'Effect paper' },
|
|
29
|
+
layer: { uses: ['generator', 'overlay', 'title'], title: 'Effect layer' },
|
|
30
|
+
fill: { uses: ['generator', 'overlay', 'title'], title: 'Fill the layer' },
|
|
31
|
+
light: { uses: ['filter'], title: 'Light on the paint' },
|
|
32
|
+
};
|
|
33
|
+
let browse = $state<Browse>(null);
|
|
34
|
+
let error = $state<string | null>(null);
|
|
35
|
+
let busy = $state(false);
|
|
36
|
+
const run = (work: () => unknown) =>
|
|
37
|
+
attempt(() => {
|
|
38
|
+
busy = true;
|
|
39
|
+
return Promise.resolve().then(work).finally(() => (busy = false));
|
|
40
|
+
}, (m) => (error = m));
|
|
41
|
+
const drags = new Set<string>();
|
|
42
|
+
/** The first change of a drag records the undo step; later ones join it. */
|
|
43
|
+
function commit(gesture: string | null) {
|
|
44
|
+
if (!gesture) return true;
|
|
45
|
+
if (drags.has(gesture)) return false;
|
|
46
|
+
drags.add(gesture);
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
function toggle(b: Exclude<Browse, null>) {
|
|
50
|
+
browse = browse === b ? null : b;
|
|
51
|
+
}
|
|
52
|
+
function pick(id: string) {
|
|
53
|
+
const kind = browse;
|
|
54
|
+
const layerId = view.activeId;
|
|
55
|
+
browse = null;
|
|
56
|
+
if (kind === 'paper') run(() => controller.setPaperEffect(id));
|
|
57
|
+
else if (kind === 'layer') run(() => controller.addEffectLayer(id));
|
|
58
|
+
else if (kind === 'fill') run(() => controller.fillLayerWithEffect(id));
|
|
59
|
+
else if (kind === 'light' && layerId) run(() => controller.applyLightEffect(layerId, id));
|
|
60
|
+
}
|
|
61
|
+
</script>
|
|
62
|
+
|
|
63
|
+
<!--
|
|
64
|
+
Provider effects in the paint editor: effect paper (a generator over the sheet, multiplied so the
|
|
65
|
+
grain shows), effect layers, effect fills and light baked onto the active layer's dried paint;
|
|
66
|
+
plus the controls of the effect paper and of an active effect layer. Each change is one undo
|
|
67
|
+
step (a slider drag is one). Without a provider it says why nothing can be added.
|
|
68
|
+
-->
|
|
69
|
+
<div class={`${panel} ${className}`} data-testid="paint-effects-panel" aria-busy={busy}>
|
|
70
|
+
<div class="flex flex-wrap items-center gap-1">
|
|
71
|
+
<span class="flex-1 font-medium text-slate-300">Effects</span>
|
|
72
|
+
<button type="button" class={button} disabled={!provider} aria-pressed={browse === 'paper'} onclick={() => toggle('paper')}>Paper…</button>
|
|
73
|
+
<button type="button" class={button} disabled={!provider} aria-pressed={browse === 'layer'} onclick={() => toggle('layer')}>Layer…</button>
|
|
74
|
+
<button type="button" class={button} disabled={!provider || !view.pixel} aria-pressed={browse === 'fill'} onclick={() => toggle('fill')}>Fill…</button>
|
|
75
|
+
<button type="button" class={button} disabled={!provider || !view.pixel} aria-pressed={browse === 'light'} onclick={() => toggle('light')} title="Bake a light, glow or grade into the active layer's dried paint">Light…</button>
|
|
76
|
+
</div>
|
|
77
|
+
{#if !provider}<p class="text-[11px] text-slate-400">No effects provider is registered. Effects in the painting are kept.</p>{/if}
|
|
78
|
+
{#if browse}
|
|
79
|
+
<EffectsBrowser {provider} uses={BROWSERS[browse].uses} title={BROWSERS[browse].title} onpick={(e) => pick(e.id)} />
|
|
80
|
+
{/if}
|
|
81
|
+
{#if view.paper}
|
|
82
|
+
{@const paper = view.paper}
|
|
83
|
+
<div class="flex flex-col gap-1 rounded border border-slate-700 p-1" data-effect-part="paper">
|
|
84
|
+
<div class="flex items-center gap-1">
|
|
85
|
+
<span class="flex-1 truncate">Paper: {paper.name ?? paper.effect}</span>
|
|
86
|
+
<button type="button" class={button} aria-label="Remove the effect paper" onclick={() => run(() => controller.setPaperEffect(null))}>✕</button>
|
|
87
|
+
</div>
|
|
88
|
+
<label class="flex items-center gap-1">
|
|
89
|
+
<span class="w-14 text-[11px] text-slate-400">Opacity</span>
|
|
90
|
+
<input type="range" min="0" max="1" step="0.01" class="flex-1" aria-label="Effect paper opacity" value={paper.opacity} onchange={(e) => { const opacity = Number(e.currentTarget.value); run(() => controller.updatePaperEffect({ opacity })); }} />
|
|
91
|
+
</label>
|
|
92
|
+
<label class="flex items-center gap-1">
|
|
93
|
+
<span class="w-14 text-[11px] text-slate-400">Blend</span>
|
|
94
|
+
<select class="flex-1 rounded bg-slate-800 px-1 py-0.5 text-[11px]" aria-label="Effect paper blend" value={paper.blend} onchange={(e) => { const blend = e.currentTarget.value as PaperEffectBlend; run(() => controller.updatePaperEffect({ blend })); }}>
|
|
95
|
+
{#each PAPER_EFFECT_BLENDS as b (b)}<option value={b}>{b}</option>{/each}
|
|
96
|
+
</select>
|
|
97
|
+
</label>
|
|
98
|
+
<ImageEffectControls
|
|
99
|
+
{provider}
|
|
100
|
+
effect={paper.effect}
|
|
101
|
+
name={paper.name}
|
|
102
|
+
values={paper.values}
|
|
103
|
+
onchange={(k, v, gesture) => run(() => controller.updatePaperEffect({ values: { [k]: v as never } }, commit(gesture)))}
|
|
104
|
+
onpreset={(values) => run(() => controller.updatePaperEffect({ values: { ...values } as never }))}
|
|
105
|
+
/>
|
|
106
|
+
</div>
|
|
107
|
+
{/if}
|
|
108
|
+
{#if view.layerEffect && view.activeId}
|
|
109
|
+
{@const fx = view.layerEffect}
|
|
110
|
+
{@const layerId = view.activeId}
|
|
111
|
+
<div class="flex flex-col gap-1 rounded border border-slate-700 p-1" data-effect-part="layer">
|
|
112
|
+
<div class="flex items-center gap-1">
|
|
113
|
+
<span class="flex-1 truncate">Layer: {fx.name ?? fx.effect}</span>
|
|
114
|
+
<button type="button" class={button} title="Keep the pixels as a plain layer" onclick={() => run(() => controller.rasterizeEffectLayer(layerId))}>Rasterize</button>
|
|
115
|
+
</div>
|
|
116
|
+
<ImageEffectControls
|
|
117
|
+
{provider}
|
|
118
|
+
effect={fx.effect}
|
|
119
|
+
name={fx.name}
|
|
120
|
+
values={fx.values}
|
|
121
|
+
onchange={(k, v, gesture) => run(() => controller.updateEffectLayer(layerId, { values: { [k]: v as never } }, commit(gesture)))}
|
|
122
|
+
onpreset={(values) => run(() => controller.updateEffectLayer(layerId, { values: { ...values } as never }))}
|
|
123
|
+
/>
|
|
124
|
+
</div>
|
|
125
|
+
{/if}
|
|
126
|
+
{#if error}<p role="alert" class="text-[11px] text-rose-400">{error}</p>{/if}
|
|
127
|
+
</div>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type PaintEditorController } from '@pixerate/editor/paint-editor';
|
|
2
|
+
interface Props {
|
|
3
|
+
controller: PaintEditorController;
|
|
4
|
+
class?: string;
|
|
5
|
+
}
|
|
6
|
+
declare const PaintEffectsPanel: import("svelte").Component<Props, {}, "">;
|
|
7
|
+
type PaintEffectsPanel = ReturnType<typeof PaintEffectsPanel>;
|
|
8
|
+
export default PaintEffectsPanel;
|
|
9
|
+
//# sourceMappingURL=PaintEffectsPanel.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PaintEffectsPanel.svelte.d.ts","sourceRoot":"","sources":["../../src/paint-editor/PaintEffectsPanel.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuB,KAAK,qBAAqB,EAAyB,MAAM,+BAA+B,CAAC;AAOrH,UAAU,KAAK;IACb,UAAU,EAAE,qBAAqB,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA6GH,QAAA,MAAM,iBAAiB,2CAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}
|
|
@@ -8,6 +8,7 @@ import type ColorPanelComponent from './ColorPanel.svelte';
|
|
|
8
8
|
import type PaintLayersPanelComponent from './PaintLayersPanel.svelte';
|
|
9
9
|
import type WetPanelComponent from './WetPanel.svelte';
|
|
10
10
|
import type StickerPanelComponent from './StickerPanel.svelte';
|
|
11
|
+
import type PaintEffectsPanelComponent from './PaintEffectsPanel.svelte';
|
|
11
12
|
import type PaintGradientEditorComponent from './PaintGradientEditor.svelte';
|
|
12
13
|
export { default as PaintEditor } from './PaintEditor.svelte';
|
|
13
14
|
export { default as PaintCanvas } from './PaintCanvas.svelte';
|
|
@@ -18,10 +19,11 @@ export { default as ColorPanel } from './ColorPanel.svelte';
|
|
|
18
19
|
export { default as PaintLayersPanel } from './PaintLayersPanel.svelte';
|
|
19
20
|
export { default as WetPanel } from './WetPanel.svelte';
|
|
20
21
|
export { default as StickerPanel } from './StickerPanel.svelte';
|
|
22
|
+
export { default as PaintEffectsPanel } from './PaintEffectsPanel.svelte';
|
|
21
23
|
export { default as PaintGradientEditor } from './PaintGradientEditor.svelte';
|
|
22
24
|
export { default as PaintSlider } from './PaintSlider.svelte';
|
|
23
25
|
export { default as PaintPresenceLayer } from './PaintPresenceLayer.svelte';
|
|
24
|
-
export { createPaintDirector, createReactivePaintEditor, paintEditorState } from './paintEditorRune.svelte.js';
|
|
26
|
+
export { createPaintDirector, createReactivePaintEditor, paintEditorState, paintEffectsProvider, usePaintEffectsTools } from './paintEditorRune.svelte.js';
|
|
25
27
|
export type PaintEditorProps = ComponentProps<typeof PaintEditorComponent>;
|
|
26
28
|
export type PaintCanvasProps = ComponentProps<typeof PaintCanvasComponent>;
|
|
27
29
|
export type PaintToolbarProps = ComponentProps<typeof PaintToolbarComponent>;
|
|
@@ -31,5 +33,6 @@ export type ColorPanelProps = ComponentProps<typeof ColorPanelComponent>;
|
|
|
31
33
|
export type PaintLayersPanelProps = ComponentProps<typeof PaintLayersPanelComponent>;
|
|
32
34
|
export type WetPanelProps = ComponentProps<typeof WetPanelComponent>;
|
|
33
35
|
export type StickerPanelProps = ComponentProps<typeof StickerPanelComponent>;
|
|
36
|
+
export type PaintEffectsPanelProps = ComponentProps<typeof PaintEffectsPanelComponent>;
|
|
34
37
|
export type PaintGradientEditorProps = ComponentProps<typeof PaintGradientEditorComponent>;
|
|
35
38
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/paint-editor/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,oBAAoB,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,oBAAoB,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,qBAAqB,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,mBAAmB,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,mBAAmB,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,mBAAmB,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,yBAAyB,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,iBAAiB,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,qBAAqB,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,4BAA4B,MAAM,8BAA8B,CAAC;AAE7E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/paint-editor/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,oBAAoB,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,oBAAoB,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,qBAAqB,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,mBAAmB,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,mBAAmB,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,mBAAmB,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,yBAAyB,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,iBAAiB,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,qBAAqB,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,0BAA0B,MAAM,4BAA4B,CAAC;AACzE,OAAO,KAAK,4BAA4B,MAAM,8BAA8B,CAAC;AAE7E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAE3J,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAC3E,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAC3E,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAC7E,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACzE,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACzE,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACzE,MAAM,MAAM,qBAAqB,GAAG,cAAc,CAAC,OAAO,yBAAyB,CAAC,CAAC;AACrF,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACrE,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAC7E,MAAM,MAAM,sBAAsB,GAAG,cAAc,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEvF,MAAM,MAAM,wBAAwB,GAAG,cAAc,CAAC,OAAO,4BAA4B,CAAC,CAAC"}
|
|
@@ -7,7 +7,8 @@ export { default as ColorPanel } from './ColorPanel.svelte';
|
|
|
7
7
|
export { default as PaintLayersPanel } from './PaintLayersPanel.svelte';
|
|
8
8
|
export { default as WetPanel } from './WetPanel.svelte';
|
|
9
9
|
export { default as StickerPanel } from './StickerPanel.svelte';
|
|
10
|
+
export { default as PaintEffectsPanel } from './PaintEffectsPanel.svelte';
|
|
10
11
|
export { default as PaintGradientEditor } from './PaintGradientEditor.svelte';
|
|
11
12
|
export { default as PaintSlider } from './PaintSlider.svelte';
|
|
12
13
|
export { default as PaintPresenceLayer } from './PaintPresenceLayer.svelte';
|
|
13
|
-
export { createPaintDirector, createReactivePaintEditor, paintEditorState } from './paintEditorRune.svelte.js';
|
|
14
|
+
export { createPaintDirector, createReactivePaintEditor, paintEditorState, paintEffectsProvider, usePaintEffectsTools } from './paintEditorRune.svelte.js';
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { PaintDirector, PaintEditorController, PaintPresence, type PaintDirectorOptions, type PaintEditorOptions, type PaintEditorState } from '@pixerate/editor/paint-editor';
|
|
1
|
+
import { PaintDirector, PaintEditorController, PaintPresence, type PaintDirectorOptions, type PaintEditorOptions, type PaintEditorState, type PaintEffectsToolProviderOptions } from '@pixerate/editor/paint-editor';
|
|
2
|
+
import type { EffectProvider } from '@pixerate/editor/effects';
|
|
3
|
+
import type { ToolRegistry } from '@pixerate/editor/tools';
|
|
2
4
|
/**
|
|
3
5
|
* A `PaintEditorController` (created from `options`, or the one given) with its state as a
|
|
4
6
|
* rune: `editor.state` updates after every change. Call `destroy()` to unsubscribe.
|
|
@@ -26,4 +28,14 @@ export declare const button = "px-2 py-1 rounded text-[11px] bg-slate-800 text-s
|
|
|
26
28
|
export declare const panel = "flex flex-col gap-2 text-xs text-slate-200";
|
|
27
29
|
/** Runs `fn` and returns the error message it threw (or a rejected promise's, through `onAsync`). */
|
|
28
30
|
export declare function attempt(fn: () => unknown, onError: (msg: string | null) => void): void;
|
|
31
|
+
/** The controller's effects provider as a rune, following `setEffectsProvider`. */
|
|
32
|
+
export declare function paintEffectsProvider(controller: () => PaintEditorController): {
|
|
33
|
+
readonly current: EffectProvider | null;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Registers the paint editor's provider-effect tools (`set_paper_effect`, `add_effect_layer`,
|
|
37
|
+
* `fill_layer_with_effect`, `apply_effect`, …) for the lifetime of the calling component. Before
|
|
38
|
+
* an effects provider is registered the read tools say so and the write tools refuse.
|
|
39
|
+
*/
|
|
40
|
+
export declare function usePaintEffectsTools(registry: ToolRegistry | null | undefined | (() => ToolRegistry | null | undefined), controller: PaintEditorController, options?: PaintEffectsToolProviderOptions): void;
|
|
29
41
|
//# sourceMappingURL=paintEditorRune.svelte.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paintEditorRune.svelte.d.ts","sourceRoot":"","sources":["../../src/paint-editor/paintEditorRune.svelte.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"paintEditorRune.svelte.d.ts","sourceRoot":"","sources":["../../src/paint-editor/paintEditorRune.svelte.ts"],"names":[],"mappings":"AACA,OAAO,EAAkC,aAAa,EAAE,qBAAqB,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,KAAK,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AACrP,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,kBAAkB,GAAG,qBAA0B;;;;EAiBjG;AAED,8FAA8F;AAC9F,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,qBAAqB,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,CAoBhH;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,qBAAqB,EAAE,OAAO,GAAE,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAM,GAAG;IAAE,QAAQ,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,aAAa,CAAA;CAAE,CAG9K;AAED,eAAO,MAAM,IAAI,GAAI,IAAI,OAAO,WAAwH,CAAC;AACzJ,eAAO,MAAM,MAAM,qGAAqG,CAAC;AACzH,eAAO,MAAM,KAAK,+CAA+C,CAAC;AAElE,qGAAqG;AACrG,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAQtF;AAED,mFAAmF;AACnF,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,qBAAqB,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAA;CAAE,CAgBzH;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,GAAG,CAAC,MAAM,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC,EACnF,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE,+BAAoC,GAC5C,IAAI,CAMN"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { untrack } from 'svelte';
|
|
2
|
-
import { PaintDirector, PaintEditorController, PaintPresence } from '@pixerate/editor/paint-editor';
|
|
2
|
+
import { createPaintEffectsToolProvider, PaintDirector, PaintEditorController, PaintPresence } from '@pixerate/editor/paint-editor';
|
|
3
3
|
/**
|
|
4
4
|
* A `PaintEditorController` (created from `options`, or the one given) with its state as a
|
|
5
5
|
* rune: `editor.state` updates after every change. Call `destroy()` to unsubscribe.
|
|
@@ -68,3 +68,34 @@ export function attempt(fn, onError) {
|
|
|
68
68
|
onError(e instanceof Error ? e.message : String(e));
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
|
+
/** The controller's effects provider as a rune, following `setEffectsProvider`. */
|
|
72
|
+
export function paintEffectsProvider(controller) {
|
|
73
|
+
let provider = $state.raw(controller().effectsProvider);
|
|
74
|
+
$effect(() => {
|
|
75
|
+
const c = controller();
|
|
76
|
+
return untrack(() => {
|
|
77
|
+
provider = c.effectsProvider;
|
|
78
|
+
return c.effects.subscribe((p) => {
|
|
79
|
+
provider = p;
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
return {
|
|
84
|
+
get current() {
|
|
85
|
+
return provider;
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Registers the paint editor's provider-effect tools (`set_paper_effect`, `add_effect_layer`,
|
|
91
|
+
* `fill_layer_with_effect`, `apply_effect`, …) for the lifetime of the calling component. Before
|
|
92
|
+
* an effects provider is registered the read tools say so and the write tools refuse.
|
|
93
|
+
*/
|
|
94
|
+
export function usePaintEffectsTools(registry, controller, options = {}) {
|
|
95
|
+
$effect(() => {
|
|
96
|
+
const target = typeof registry === 'function' ? registry() : registry;
|
|
97
|
+
if (!target)
|
|
98
|
+
return;
|
|
99
|
+
return target.register(createPaintEffectsToolProvider(controller, options));
|
|
100
|
+
});
|
|
101
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pixerate/editor-svelte",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.91.0",
|
|
4
4
|
"description": "Svelte bindings and prompt/rich-text components for @pixerate/editor",
|
|
5
5
|
"author": "Pixerate",
|
|
6
6
|
"license": "MIT",
|
|
@@ -144,7 +144,7 @@
|
|
|
144
144
|
"@tiptap/extension-bubble-menu": "^2.11.5",
|
|
145
145
|
"@tiptap/extension-placeholder": "^2.11.5",
|
|
146
146
|
"@tiptap/starter-kit": "^2.11.5",
|
|
147
|
-
"@pixerate/editor": "0.
|
|
147
|
+
"@pixerate/editor": "0.127.0"
|
|
148
148
|
},
|
|
149
149
|
"peerDependencies": {
|
|
150
150
|
"@dagrejs/dagre": "^1.1.4",
|