@elizaos/capacitor-canvas 2.0.0-beta.1 → 2.0.3-beta.2
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/LICENSE +21 -0
- package/README.md +140 -0
- package/android/build.gradle +16 -2
- package/dist/esm/web.d.ts.map +1 -1
- package/dist/esm/web.js +96 -26
- package/dist/esm/web.test.d.ts +2 -0
- package/dist/esm/web.test.d.ts.map +1 -0
- package/dist/esm/web.test.js +123 -0
- package/dist/plugin.cjs.js +96 -26
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +96 -26
- package/dist/plugin.js.map +1 -1
- package/package.json +13 -9
package/dist/plugin.cjs.js
CHANGED
|
@@ -7,6 +7,62 @@ const Canvas = core.registerPlugin("ElizaCanvas", {
|
|
|
7
7
|
web: loadWeb,
|
|
8
8
|
});
|
|
9
9
|
|
|
10
|
+
const MAX_CANVAS_DIMENSION = 16384;
|
|
11
|
+
function assertFiniteNumber(value, label) {
|
|
12
|
+
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
13
|
+
throw new Error(`${label} must be a finite number`);
|
|
14
|
+
}
|
|
15
|
+
return value;
|
|
16
|
+
}
|
|
17
|
+
function assertCanvasSize(size, label = "size") {
|
|
18
|
+
if (!size || typeof size !== "object") {
|
|
19
|
+
throw new Error(`${label} must include finite width and height`);
|
|
20
|
+
}
|
|
21
|
+
const width = assertFiniteNumber(size.width, `${label}.width`);
|
|
22
|
+
const height = assertFiniteNumber(size.height, `${label}.height`);
|
|
23
|
+
if (width <= 0 ||
|
|
24
|
+
height <= 0 ||
|
|
25
|
+
width > MAX_CANVAS_DIMENSION ||
|
|
26
|
+
height > MAX_CANVAS_DIMENSION) {
|
|
27
|
+
throw new Error(`${label}.width and ${label}.height must be between 1 and ${MAX_CANVAS_DIMENSION}`);
|
|
28
|
+
}
|
|
29
|
+
return { width, height };
|
|
30
|
+
}
|
|
31
|
+
function assertUnitInterval(value, label) {
|
|
32
|
+
const numberValue = assertFiniteNumber(value, label);
|
|
33
|
+
if (numberValue < 0 || numberValue > 1) {
|
|
34
|
+
throw new Error(`${label} must be between 0 and 1`);
|
|
35
|
+
}
|
|
36
|
+
return numberValue;
|
|
37
|
+
}
|
|
38
|
+
function assertQuality(value, label, fallback) {
|
|
39
|
+
if (value === undefined)
|
|
40
|
+
return fallback;
|
|
41
|
+
const numberValue = assertFiniteNumber(value, label);
|
|
42
|
+
if (numberValue < 0 || numberValue > 100) {
|
|
43
|
+
throw new Error(`${label} must be between 0 and 100`);
|
|
44
|
+
}
|
|
45
|
+
return numberValue / 100;
|
|
46
|
+
}
|
|
47
|
+
function assertLayerInput(layer) {
|
|
48
|
+
if (!layer || typeof layer !== "object") {
|
|
49
|
+
throw new Error("layer must be an object");
|
|
50
|
+
}
|
|
51
|
+
if (typeof layer.visible !== "boolean") {
|
|
52
|
+
throw new Error("layer.visible must be a boolean");
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
...layer,
|
|
56
|
+
opacity: assertUnitInterval(layer.opacity, "layer.opacity"),
|
|
57
|
+
zIndex: assertFiniteNumber(layer.zIndex, "layer.zIndex"),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function assertAttachElement(element) {
|
|
61
|
+
if (!element || typeof element.appendChild !== "function") {
|
|
62
|
+
throw new Error("element must be an HTMLElement-like append target");
|
|
63
|
+
}
|
|
64
|
+
return element;
|
|
65
|
+
}
|
|
10
66
|
class CanvasWeb extends core.WebPlugin {
|
|
11
67
|
constructor() {
|
|
12
68
|
super(...arguments);
|
|
@@ -19,10 +75,11 @@ class CanvasWeb extends core.WebPlugin {
|
|
|
19
75
|
this.messageListenerBound = false;
|
|
20
76
|
}
|
|
21
77
|
async create(options) {
|
|
78
|
+
const size = assertCanvasSize(options.size);
|
|
22
79
|
const canvasId = `canvas_${this.nextCanvasId++}`;
|
|
23
80
|
const canvas = document.createElement("canvas");
|
|
24
|
-
canvas.width =
|
|
25
|
-
canvas.height =
|
|
81
|
+
canvas.width = size.width;
|
|
82
|
+
canvas.height = size.height;
|
|
26
83
|
canvas.style.width = "100%";
|
|
27
84
|
canvas.style.height = "100%";
|
|
28
85
|
const ctx = canvas.getContext("2d");
|
|
@@ -31,14 +88,14 @@ class CanvasWeb extends core.WebPlugin {
|
|
|
31
88
|
}
|
|
32
89
|
if (options.backgroundColor) {
|
|
33
90
|
ctx.fillStyle = this.colorToString(options.backgroundColor);
|
|
34
|
-
ctx.fillRect(0, 0,
|
|
91
|
+
ctx.fillRect(0, 0, size.width, size.height);
|
|
35
92
|
}
|
|
36
93
|
const managedCanvas = {
|
|
37
94
|
id: canvasId,
|
|
38
95
|
canvas,
|
|
39
96
|
ctx,
|
|
40
97
|
layers: new Map(),
|
|
41
|
-
size
|
|
98
|
+
size,
|
|
42
99
|
transform: {},
|
|
43
100
|
touchEnabled: false,
|
|
44
101
|
};
|
|
@@ -59,7 +116,7 @@ class CanvasWeb extends core.WebPlugin {
|
|
|
59
116
|
const managed = this.canvases.get(options.canvasId);
|
|
60
117
|
if (!managed)
|
|
61
118
|
throw new Error("Canvas not found");
|
|
62
|
-
options.element.appendChild(managed.canvas);
|
|
119
|
+
assertAttachElement(options.element).appendChild(managed.canvas);
|
|
63
120
|
this.setupTouchHandlers(managed);
|
|
64
121
|
}
|
|
65
122
|
async detach(options) {
|
|
@@ -72,15 +129,16 @@ class CanvasWeb extends core.WebPlugin {
|
|
|
72
129
|
const managed = this.canvases.get(options.canvasId);
|
|
73
130
|
if (!managed)
|
|
74
131
|
throw new Error("Canvas not found");
|
|
132
|
+
const size = assertCanvasSize(options.size);
|
|
75
133
|
const imageData = managed.ctx.getImageData(0, 0, managed.canvas.width, managed.canvas.height);
|
|
76
|
-
managed.canvas.width =
|
|
77
|
-
managed.canvas.height =
|
|
78
|
-
managed.size =
|
|
134
|
+
managed.canvas.width = size.width;
|
|
135
|
+
managed.canvas.height = size.height;
|
|
136
|
+
managed.size = size;
|
|
79
137
|
managed.ctx.putImageData(imageData, 0, 0);
|
|
80
138
|
for (const layer of managed.layers.values()) {
|
|
81
139
|
const layerImageData = layer.ctx.getImageData(0, 0, layer.canvas.width, layer.canvas.height);
|
|
82
|
-
layer.canvas.width =
|
|
83
|
-
layer.canvas.height =
|
|
140
|
+
layer.canvas.width = size.width;
|
|
141
|
+
layer.canvas.height = size.height;
|
|
84
142
|
layer.ctx.putImageData(layerImageData, 0, 0);
|
|
85
143
|
}
|
|
86
144
|
}
|
|
@@ -104,25 +162,26 @@ class CanvasWeb extends core.WebPlugin {
|
|
|
104
162
|
const managed = this.canvases.get(options.canvasId);
|
|
105
163
|
if (!managed)
|
|
106
164
|
throw new Error("Canvas not found");
|
|
165
|
+
const inputLayer = assertLayerInput(options.layer);
|
|
107
166
|
const layerId = `layer_${this.nextLayerId++}`;
|
|
108
167
|
const layerCanvas = document.createElement("canvas");
|
|
109
168
|
layerCanvas.width = managed.size.width;
|
|
110
169
|
layerCanvas.height = managed.size.height;
|
|
111
170
|
layerCanvas.style.position = "absolute";
|
|
112
171
|
layerCanvas.style.pointerEvents = "none";
|
|
113
|
-
layerCanvas.style.display =
|
|
114
|
-
layerCanvas.style.opacity = String(
|
|
115
|
-
layerCanvas.style.zIndex = String(
|
|
172
|
+
layerCanvas.style.display = inputLayer.visible ? "block" : "none";
|
|
173
|
+
layerCanvas.style.opacity = String(inputLayer.opacity);
|
|
174
|
+
layerCanvas.style.zIndex = String(inputLayer.zIndex);
|
|
116
175
|
const layerCtx = layerCanvas.getContext("2d");
|
|
117
176
|
if (!layerCtx)
|
|
118
177
|
throw new Error("Failed to get layer context");
|
|
119
178
|
const managedLayer = {
|
|
120
179
|
id: layerId,
|
|
121
|
-
name:
|
|
122
|
-
visible:
|
|
123
|
-
opacity:
|
|
124
|
-
zIndex:
|
|
125
|
-
transform:
|
|
180
|
+
name: inputLayer.name,
|
|
181
|
+
visible: inputLayer.visible,
|
|
182
|
+
opacity: inputLayer.opacity,
|
|
183
|
+
zIndex: inputLayer.zIndex,
|
|
184
|
+
transform: inputLayer.transform,
|
|
126
185
|
canvas: layerCanvas,
|
|
127
186
|
ctx: layerCtx,
|
|
128
187
|
};
|
|
@@ -141,16 +200,21 @@ class CanvasWeb extends core.WebPlugin {
|
|
|
141
200
|
if (!layer)
|
|
142
201
|
throw new Error("Layer not found");
|
|
143
202
|
if (options.layer.visible !== undefined) {
|
|
203
|
+
if (typeof options.layer.visible !== "boolean") {
|
|
204
|
+
throw new Error("layer.visible must be a boolean");
|
|
205
|
+
}
|
|
144
206
|
layer.visible = options.layer.visible;
|
|
145
207
|
layer.canvas.style.display = options.layer.visible ? "block" : "none";
|
|
146
208
|
}
|
|
147
209
|
if (options.layer.opacity !== undefined) {
|
|
148
|
-
|
|
149
|
-
layer.
|
|
210
|
+
const opacity = assertUnitInterval(options.layer.opacity, "layer.opacity");
|
|
211
|
+
layer.opacity = opacity;
|
|
212
|
+
layer.canvas.style.opacity = String(opacity);
|
|
150
213
|
}
|
|
151
214
|
if (options.layer.zIndex !== undefined) {
|
|
152
|
-
|
|
153
|
-
layer.
|
|
215
|
+
const zIndex = assertFiniteNumber(options.layer.zIndex, "layer.zIndex");
|
|
216
|
+
layer.zIndex = zIndex;
|
|
217
|
+
layer.canvas.style.zIndex = String(zIndex);
|
|
154
218
|
}
|
|
155
219
|
if (options.layer.name !== undefined) {
|
|
156
220
|
layer.name = options.layer.name;
|
|
@@ -372,7 +436,7 @@ class CanvasWeb extends core.WebPlugin {
|
|
|
372
436
|
if (!managed)
|
|
373
437
|
throw new Error("Canvas not found");
|
|
374
438
|
const format = options.format || "png";
|
|
375
|
-
const quality = (options.quality
|
|
439
|
+
const quality = assertQuality(options.quality, "quality", 1);
|
|
376
440
|
let sourceCanvas = managed.canvas;
|
|
377
441
|
if (options.layerIds && options.layerIds.length > 0) {
|
|
378
442
|
const tempCanvas = document.createElement("canvas");
|
|
@@ -527,10 +591,16 @@ class CanvasWeb extends core.WebPlugin {
|
|
|
527
591
|
throw new Error("No web view active or web view opened as popup (snapshot requires inline/fullscreen placement)");
|
|
528
592
|
}
|
|
529
593
|
const format = options?.format || "png";
|
|
530
|
-
const quality = (options?.quality
|
|
594
|
+
const quality = assertQuality(options?.quality, "quality", 0.85);
|
|
531
595
|
const iframeRect = this.webViewIframe.getBoundingClientRect();
|
|
532
596
|
let width = Math.round(iframeRect.width) || 800;
|
|
533
597
|
let height = Math.round(iframeRect.height) || 600;
|
|
598
|
+
if (options?.maxWidth !== undefined) {
|
|
599
|
+
assertFiniteNumber(options.maxWidth, "maxWidth");
|
|
600
|
+
if (options.maxWidth <= 0) {
|
|
601
|
+
throw new Error("maxWidth must be a positive finite number");
|
|
602
|
+
}
|
|
603
|
+
}
|
|
534
604
|
if (options?.maxWidth && width > options.maxWidth) {
|
|
535
605
|
const scale = options.maxWidth / width;
|
|
536
606
|
height = Math.round(height * scale);
|
|
@@ -576,10 +646,10 @@ class CanvasWeb extends core.WebPlugin {
|
|
|
576
646
|
}
|
|
577
647
|
}
|
|
578
648
|
catch {
|
|
579
|
-
// Cross-origin or serialization failed — fall through to
|
|
649
|
+
// Cross-origin or serialization failed — fall through to an unavailable frame.
|
|
580
650
|
}
|
|
581
651
|
if (!captured) {
|
|
582
|
-
// Render
|
|
652
|
+
// Render an unavailable frame indicating the cross-origin limitation.
|
|
583
653
|
ctx.fillStyle = "#f5f5f5";
|
|
584
654
|
ctx.fillRect(0, 0, width, height);
|
|
585
655
|
ctx.strokeStyle = "#ccc";
|
package/dist/plugin.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.cjs.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from \"@capacitor/core\";\nexport * from \"./definitions\";\nconst loadWeb = () => import(\"./web\").then((m) => new m.CanvasWeb());\nexport const Canvas = registerPlugin(\"ElizaCanvas\", {\n web: loadWeb,\n});\n","import { WebPlugin } from \"@capacitor/core\";\nexport class CanvasWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.canvases = new Map();\n this.nextCanvasId = 1;\n this.nextLayerId = 1;\n this.pluginListeners = [];\n this.webViewIframe = null;\n this.webViewPopup = null;\n this.messageListenerBound = false;\n }\n async create(options) {\n const canvasId = `canvas_${this.nextCanvasId++}`;\n const canvas = document.createElement(\"canvas\");\n canvas.width = options.size.width;\n canvas.height = options.size.height;\n canvas.style.width = \"100%\";\n canvas.style.height = \"100%\";\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"Failed to get 2D context\");\n }\n if (options.backgroundColor) {\n ctx.fillStyle = this.colorToString(options.backgroundColor);\n ctx.fillRect(0, 0, options.size.width, options.size.height);\n }\n const managedCanvas = {\n id: canvasId,\n canvas,\n ctx,\n layers: new Map(),\n size: options.size,\n transform: {},\n touchEnabled: false,\n };\n this.canvases.set(canvasId, managedCanvas);\n return { canvasId };\n }\n async destroy(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n return;\n managed.layers.forEach((layer) => {\n layer.canvas.remove();\n });\n managed.canvas.remove();\n this.canvases.delete(options.canvasId);\n }\n async attach(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n options.element.appendChild(managed.canvas);\n this.setupTouchHandlers(managed);\n }\n async detach(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n managed.canvas.remove();\n }\n async resize(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n const imageData = managed.ctx.getImageData(0, 0, managed.canvas.width, managed.canvas.height);\n managed.canvas.width = options.size.width;\n managed.canvas.height = options.size.height;\n managed.size = options.size;\n managed.ctx.putImageData(imageData, 0, 0);\n for (const layer of managed.layers.values()) {\n const layerImageData = layer.ctx.getImageData(0, 0, layer.canvas.width, layer.canvas.height);\n layer.canvas.width = options.size.width;\n layer.canvas.height = options.size.height;\n layer.ctx.putImageData(layerImageData, 0, 0);\n }\n }\n async clear(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n const ctx = options.layerId\n ? managed.layers.get(options.layerId)?.ctx\n : managed.ctx;\n if (!ctx)\n throw new Error(\"Context not found\");\n if (options.rect) {\n ctx.clearRect(options.rect.x, options.rect.y, options.rect.width, options.rect.height);\n }\n else {\n ctx.clearRect(0, 0, managed.size.width, managed.size.height);\n }\n }\n async createLayer(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n const layerId = `layer_${this.nextLayerId++}`;\n const layerCanvas = document.createElement(\"canvas\");\n layerCanvas.width = managed.size.width;\n layerCanvas.height = managed.size.height;\n layerCanvas.style.position = \"absolute\";\n layerCanvas.style.pointerEvents = \"none\";\n layerCanvas.style.display = options.layer.visible ? \"block\" : \"none\";\n layerCanvas.style.opacity = String(options.layer.opacity);\n layerCanvas.style.zIndex = String(options.layer.zIndex);\n const layerCtx = layerCanvas.getContext(\"2d\");\n if (!layerCtx)\n throw new Error(\"Failed to get layer context\");\n const managedLayer = {\n id: layerId,\n name: options.layer.name,\n visible: options.layer.visible,\n opacity: options.layer.opacity,\n zIndex: options.layer.zIndex,\n transform: options.layer.transform,\n canvas: layerCanvas,\n ctx: layerCtx,\n };\n managed.layers.set(layerId, managedLayer);\n const parent = managed.canvas.parentElement;\n if (parent) {\n parent.appendChild(layerCanvas);\n }\n return { layerId };\n }\n async updateLayer(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n const layer = managed.layers.get(options.layerId);\n if (!layer)\n throw new Error(\"Layer not found\");\n if (options.layer.visible !== undefined) {\n layer.visible = options.layer.visible;\n layer.canvas.style.display = options.layer.visible ? \"block\" : \"none\";\n }\n if (options.layer.opacity !== undefined) {\n layer.opacity = options.layer.opacity;\n layer.canvas.style.opacity = String(options.layer.opacity);\n }\n if (options.layer.zIndex !== undefined) {\n layer.zIndex = options.layer.zIndex;\n layer.canvas.style.zIndex = String(options.layer.zIndex);\n }\n if (options.layer.name !== undefined) {\n layer.name = options.layer.name;\n }\n if (options.layer.transform !== undefined) {\n layer.transform = options.layer.transform;\n }\n }\n async deleteLayer(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n const layer = managed.layers.get(options.layerId);\n if (!layer)\n throw new Error(\"Layer not found\");\n layer.canvas.remove();\n managed.layers.delete(options.layerId);\n }\n async getLayers(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n const layers = Array.from(managed.layers.values()).map((layer) => ({\n id: layer.id,\n name: layer.name,\n visible: layer.visible,\n opacity: layer.opacity,\n zIndex: layer.zIndex,\n transform: layer.transform,\n }));\n return { layers };\n }\n async drawRect(options) {\n const ctx = this.getContext(options.canvasId, options.drawOptions?.layerId);\n this.applyDrawOptions(ctx, options.canvasId, options.drawOptions);\n ctx.beginPath();\n if (options.cornerRadius && options.cornerRadius > 0) {\n const r = options.cornerRadius;\n const { x, y, width, height } = options.rect;\n ctx.moveTo(x + r, y);\n ctx.lineTo(x + width - r, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + r);\n ctx.lineTo(x + width, y + height - r);\n ctx.quadraticCurveTo(x + width, y + height, x + width - r, y + height);\n ctx.lineTo(x + r, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - r);\n ctx.lineTo(x, y + r);\n ctx.quadraticCurveTo(x, y, x + r, y);\n ctx.closePath();\n }\n else {\n ctx.rect(options.rect.x, options.rect.y, options.rect.width, options.rect.height);\n }\n if (options.fill) {\n ctx.fillStyle = this.createFillStyle(ctx, options.fill);\n ctx.fill();\n }\n if (options.stroke) {\n this.applyStrokeStyle(ctx, options.stroke);\n ctx.stroke();\n }\n ctx.restore();\n }\n async drawEllipse(options) {\n const ctx = this.getContext(options.canvasId, options.drawOptions?.layerId);\n this.applyDrawOptions(ctx, options.canvasId, options.drawOptions);\n ctx.beginPath();\n ctx.ellipse(options.center.x, options.center.y, options.radiusX, options.radiusY, 0, 0, Math.PI * 2);\n if (options.fill) {\n ctx.fillStyle = this.createFillStyle(ctx, options.fill);\n ctx.fill();\n }\n if (options.stroke) {\n this.applyStrokeStyle(ctx, options.stroke);\n ctx.stroke();\n }\n ctx.restore();\n }\n async drawLine(options) {\n const ctx = this.getContext(options.canvasId, options.drawOptions?.layerId);\n this.applyDrawOptions(ctx, options.canvasId, options.drawOptions);\n this.applyStrokeStyle(ctx, options.stroke);\n ctx.beginPath();\n ctx.moveTo(options.from.x, options.from.y);\n ctx.lineTo(options.to.x, options.to.y);\n ctx.stroke();\n ctx.restore();\n }\n async drawPath(options) {\n const ctx = this.getContext(options.canvasId, options.drawOptions?.layerId);\n this.applyDrawOptions(ctx, options.canvasId, options.drawOptions);\n ctx.beginPath();\n for (const cmd of options.path.commands) {\n switch (cmd.type) {\n case \"moveTo\":\n ctx.moveTo(cmd.args[0], cmd.args[1]);\n break;\n case \"lineTo\":\n ctx.lineTo(cmd.args[0], cmd.args[1]);\n break;\n case \"quadraticCurveTo\":\n ctx.quadraticCurveTo(cmd.args[0], cmd.args[1], cmd.args[2], cmd.args[3]);\n break;\n case \"bezierCurveTo\":\n ctx.bezierCurveTo(cmd.args[0], cmd.args[1], cmd.args[2], cmd.args[3], cmd.args[4], cmd.args[5]);\n break;\n case \"arcTo\":\n ctx.arcTo(cmd.args[0], cmd.args[1], cmd.args[2], cmd.args[3], cmd.args[4]);\n break;\n case \"arc\":\n ctx.arc(cmd.args[0], cmd.args[1], cmd.args[2], cmd.args[3], cmd.args[4], cmd.args[5] === 1);\n break;\n case \"ellipse\":\n ctx.ellipse(cmd.args[0], cmd.args[1], cmd.args[2], cmd.args[3], cmd.args[4], cmd.args[5], cmd.args[6], cmd.args[7] === 1);\n break;\n case \"rect\":\n ctx.rect(cmd.args[0], cmd.args[1], cmd.args[2], cmd.args[3]);\n break;\n case \"closePath\":\n ctx.closePath();\n break;\n }\n }\n if (options.fill) {\n ctx.fillStyle = this.createFillStyle(ctx, options.fill);\n ctx.fill();\n }\n if (options.stroke) {\n this.applyStrokeStyle(ctx, options.stroke);\n ctx.stroke();\n }\n ctx.restore();\n }\n async drawText(options) {\n const ctx = this.getContext(options.canvasId, options.drawOptions?.layerId);\n this.applyDrawOptions(ctx, options.canvasId, options.drawOptions);\n ctx.font = `${options.style.size}px ${options.style.font}`;\n ctx.fillStyle = this.colorToString(options.style.color);\n ctx.textAlign = options.style.align || \"left\";\n ctx.textBaseline = (options.style.baseline ||\n \"alphabetic\");\n if (options.style.maxWidth) {\n ctx.fillText(options.text, options.position.x, options.position.y, options.style.maxWidth);\n }\n else {\n ctx.fillText(options.text, options.position.x, options.position.y);\n }\n ctx.restore();\n }\n async drawImage(options) {\n const ctx = this.getContext(options.canvasId, options.drawOptions?.layerId);\n this.applyDrawOptions(ctx, options.canvasId, options.drawOptions);\n const img = new Image();\n if (typeof options.image === \"string\") {\n img.src = options.image;\n }\n else {\n img.src = `data:image/${options.image.format};base64,${options.image.base64}`;\n }\n await new Promise((resolve, reject) => {\n img.onload = () => resolve();\n img.onerror = () => reject(new Error(\"Failed to load image\"));\n });\n if (options.srcRect) {\n ctx.drawImage(img, options.srcRect.x, options.srcRect.y, options.srcRect.width, options.srcRect.height, options.destRect.x, options.destRect.y, options.destRect.width, options.destRect.height);\n }\n else {\n ctx.drawImage(img, options.destRect.x, options.destRect.y, options.destRect.width, options.destRect.height);\n }\n ctx.restore();\n }\n async drawBatch(options) {\n const base = { canvasId: options.canvasId };\n for (const cmd of options.commands) {\n switch (cmd.type) {\n case \"rect\":\n await this.drawRect({ ...base, ...cmd.args });\n break;\n case \"ellipse\":\n await this.drawEllipse({ ...base, ...cmd.args });\n break;\n case \"line\":\n await this.drawLine({ ...base, ...cmd.args });\n break;\n case \"path\":\n await this.drawPath({ ...base, ...cmd.args });\n break;\n case \"text\":\n await this.drawText({ ...base, ...cmd.args });\n break;\n case \"image\":\n await this.drawImage({ ...base, ...cmd.args });\n break;\n case \"clear\":\n await this.clear({ ...base, ...cmd.args });\n break;\n }\n }\n }\n async getPixelData(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n const rect = options.rect || {\n x: 0,\n y: 0,\n width: managed.size.width,\n height: managed.size.height,\n };\n const imageData = managed.ctx.getImageData(rect.x, rect.y, rect.width, rect.height);\n return {\n data: imageData.data,\n width: imageData.width,\n height: imageData.height,\n };\n }\n async toImage(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n const format = options.format || \"png\";\n const quality = (options.quality || 100) / 100;\n let sourceCanvas = managed.canvas;\n if (options.layerIds && options.layerIds.length > 0) {\n const tempCanvas = document.createElement(\"canvas\");\n tempCanvas.width = managed.size.width;\n tempCanvas.height = managed.size.height;\n const tempCtx = tempCanvas.getContext(\"2d\");\n if (!tempCtx)\n throw new Error(\"Failed to create temp canvas\");\n for (const layerId of options.layerIds) {\n const layer = managed.layers.get(layerId);\n if (layer?.visible) {\n tempCtx.globalAlpha = layer.opacity;\n tempCtx.drawImage(layer.canvas, 0, 0);\n }\n }\n sourceCanvas = tempCanvas;\n }\n const mimeType = format === \"png\"\n ? \"image/png\"\n : format === \"webp\"\n ? \"image/webp\"\n : \"image/jpeg\";\n const dataUrl = sourceCanvas.toDataURL(mimeType, quality);\n const base64 = dataUrl.split(\",\")[1];\n return {\n base64,\n format,\n width: managed.size.width,\n height: managed.size.height,\n };\n }\n async setTransform(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n managed.transform = options.transform;\n }\n async resetTransform(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n managed.transform = {};\n managed.ctx.setTransform(1, 0, 0, 1, 0, 0);\n }\n async setTouchEnabled(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n managed.touchEnabled = options.enabled;\n }\n // ---- Web View Methods ----\n async navigate(options) {\n const placement = options.placement || \"inline\";\n // Clean up any existing web view\n this.destroyWebView();\n // Intercept eliza:// deep links immediately\n if (options.url.startsWith(\"eliza://\")) {\n const parsed = new URL(options.url);\n const params = {};\n parsed.searchParams.forEach((value, key) => {\n params[key] = value;\n });\n this.notifyListeners(\"deepLink\", {\n url: options.url,\n path: parsed.pathname,\n params,\n });\n return;\n }\n if (placement === \"popup\") {\n const popup = window.open(options.url, \"_blank\", \"width=800,height=600,menubar=no,toolbar=no\");\n if (!popup) {\n this.notifyListeners(\"navigationError\", {\n url: options.url,\n code: -1,\n message: \"Popup blocked by browser\",\n });\n return;\n }\n this.webViewPopup = popup;\n // Poll to detect when popup loads (cross-origin limits apply)\n const checkReady = setInterval(() => {\n try {\n if (popup.closed) {\n clearInterval(checkReady);\n return;\n }\n // Same-origin: can read title\n const title = popup.document?.title || \"\";\n clearInterval(checkReady);\n this.notifyListeners(\"webViewReady\", { url: options.url, title });\n }\n catch {\n // Cross-origin: fire ready without title\n clearInterval(checkReady);\n this.notifyListeners(\"webViewReady\", { url: options.url, title: \"\" });\n }\n }, 200);\n return;\n }\n // Inline or fullscreen: use an iframe\n const iframe = document.createElement(\"iframe\");\n iframe.style.border = \"none\";\n iframe.setAttribute(\"sandbox\", \"allow-scripts allow-same-origin allow-forms allow-popups\");\n if (placement === \"fullscreen\") {\n iframe.style.position = \"fixed\";\n iframe.style.top = \"0\";\n iframe.style.left = \"0\";\n iframe.style.width = \"100vw\";\n iframe.style.height = \"100vh\";\n iframe.style.zIndex = \"999999\";\n iframe.style.backgroundColor = \"#fff\";\n }\n else {\n iframe.style.width = \"100%\";\n iframe.style.height = \"100%\";\n }\n iframe.addEventListener(\"load\", () => {\n let title = \"\";\n try {\n title = iframe.contentDocument?.title || \"\";\n }\n catch {\n // Cross-origin: title inaccessible\n }\n this.notifyListeners(\"webViewReady\", { url: options.url, title });\n });\n iframe.addEventListener(\"error\", () => {\n this.notifyListeners(\"navigationError\", {\n url: options.url,\n code: -1,\n message: \"Failed to load URL in iframe\",\n });\n });\n iframe.src = options.url;\n document.body.appendChild(iframe);\n this.webViewIframe = iframe;\n this.ensureMessageListener();\n }\n async eval(options) {\n const target = this.webViewIframe?.contentWindow ??\n (this.webViewPopup && !this.webViewPopup.closed\n ? this.webViewPopup\n : null);\n if (!target) {\n throw new Error(\"No web view active. Call navigate() first.\");\n }\n return this.evalViaPostMessage(target, options.script);\n }\n async snapshot(options) {\n if (!this.webViewIframe) {\n throw new Error(\"No web view active or web view opened as popup (snapshot requires inline/fullscreen placement)\");\n }\n const format = options?.format || \"png\";\n const quality = (options?.quality || 85) / 100;\n const iframeRect = this.webViewIframe.getBoundingClientRect();\n let width = Math.round(iframeRect.width) || 800;\n let height = Math.round(iframeRect.height) || 600;\n if (options?.maxWidth && width > options.maxWidth) {\n const scale = options.maxWidth / width;\n height = Math.round(height * scale);\n width = options.maxWidth;\n }\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx)\n throw new Error(\"Failed to create snapshot canvas context\");\n // Attempt same-origin capture via DOM serialization + SVG foreignObject\n let captured = false;\n try {\n const iframeDoc = this.webViewIframe.contentDocument;\n if (iframeDoc) {\n const serializer = new XMLSerializer();\n const htmlString = serializer.serializeToString(iframeDoc);\n const svgParts = [\n `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${width}\" height=\"${height}\">`,\n `<foreignObject width=\"100%\" height=\"100%\">`,\n htmlString,\n `</foreignObject>`,\n `</svg>`,\n ];\n const img = new Image();\n const blob = new Blob([svgParts.join(\"\")], {\n type: \"image/svg+xml;charset=utf-8\",\n });\n const blobUrl = URL.createObjectURL(blob);\n try {\n await new Promise((resolve, reject) => {\n img.onload = () => resolve();\n img.onerror = () => reject(new Error(\"SVG render failed\"));\n img.src = blobUrl;\n });\n ctx.drawImage(img, 0, 0, width, height);\n captured = true;\n }\n finally {\n URL.revokeObjectURL(blobUrl);\n }\n }\n }\n catch {\n // Cross-origin or serialization failed — fall through to placeholder\n }\n if (!captured) {\n // Render a placeholder indicating cross-origin limitation\n ctx.fillStyle = \"#f5f5f5\";\n ctx.fillRect(0, 0, width, height);\n ctx.strokeStyle = \"#ccc\";\n ctx.strokeRect(0, 0, width, height);\n ctx.fillStyle = \"#888\";\n ctx.font = \"14px -apple-system, BlinkMacSystemFont, sans-serif\";\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n ctx.fillText(\"Snapshot unavailable (cross-origin content)\", width / 2, height / 2);\n }\n const mimeType = format === \"jpeg\"\n ? \"image/jpeg\"\n : format === \"webp\"\n ? \"image/webp\"\n : \"image/png\";\n const dataUrl = canvas.toDataURL(mimeType, quality);\n const base64 = dataUrl.split(\",\")[1];\n return { base64, width, height, format };\n }\n async a2uiPush(options) {\n // Try window.elizaA2UI bridge first (set up by the A2UI runtime)\n const bridge = window\n .elizaA2UI;\n if (bridge?.push) {\n bridge.push(options.messages || [], options.jsonl || \"\", options.payload || null);\n return;\n }\n // Fall back to postMessage into the web view\n const target = this.webViewIframe?.contentWindow ||\n (this.webViewPopup && !this.webViewPopup.closed\n ? this.webViewPopup\n : null);\n if (target) {\n target.postMessage({\n type: \"eliza:a2uiPush\",\n messages: options.messages || [],\n jsonl: options.jsonl || \"\",\n payload: options.payload || null,\n }, \"*\");\n return;\n }\n throw new Error(\"No A2UI bridge or web view available\");\n }\n async a2uiReset() {\n // Try window.elizaA2UI bridge first\n const bridge = window\n .elizaA2UI;\n if (bridge?.reset) {\n bridge.reset();\n return;\n }\n // Fall back to postMessage into the web view\n const target = this.webViewIframe?.contentWindow ||\n (this.webViewPopup && !this.webViewPopup.closed\n ? this.webViewPopup\n : null);\n if (target) {\n target.postMessage({ type: \"eliza:a2uiReset\" }, \"*\");\n return;\n }\n throw new Error(\"No A2UI bridge or web view available\");\n }\n // ---- Web View Helpers ----\n destroyWebView() {\n if (this.webViewIframe) {\n this.webViewIframe.remove();\n this.webViewIframe = null;\n }\n if (this.webViewPopup && !this.webViewPopup.closed) {\n this.webViewPopup.close();\n }\n this.webViewPopup = null;\n }\n evalViaPostMessage(target, script) {\n return new Promise((resolve, reject) => {\n const timeoutMs = 5000;\n const timeout = setTimeout(() => {\n window.removeEventListener(\"message\", handler);\n reject(new Error(\"eval timed out waiting for response from web view\"));\n }, timeoutMs);\n const handler = (event) => {\n const msg = event.data;\n if (msg?.type === \"eliza:evalResult\" && msg.result !== undefined) {\n clearTimeout(timeout);\n window.removeEventListener(\"message\", handler);\n resolve({ result: String(msg.result) });\n }\n };\n window.addEventListener(\"message\", handler);\n target.postMessage({ type: \"eliza:eval\", script }, \"*\");\n });\n }\n ensureMessageListener() {\n if (this.messageListenerBound)\n return;\n this.messageListenerBound = true;\n window.addEventListener(\"message\", (event) => {\n // Only accept messages from our web view\n const iframeSrc = this.webViewIframe?.contentWindow;\n const popupSrc = this.webViewPopup;\n if (event.source !== iframeSrc && event.source !== popupSrc)\n return;\n const msg = event.data;\n if (!msg || typeof msg.type !== \"string\")\n return;\n if (msg.type === \"eliza:deepLink\" && msg.url && msg.path) {\n this.notifyListeners(\"deepLink\", {\n url: msg.url,\n path: msg.path,\n params: msg.params || {},\n });\n }\n if (msg.type === \"eliza:a2uiAction\" && msg.action) {\n this.notifyListeners(\"a2uiAction\", {\n action: msg.action,\n data: msg.data || {},\n messageId: msg.messageId,\n });\n }\n });\n }\n // ---- Drawing Helpers ----\n getContext(canvasId, layerId) {\n const managed = this.canvases.get(canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n if (layerId) {\n const layer = managed.layers.get(layerId);\n if (!layer)\n throw new Error(\"Layer not found\");\n return layer.ctx;\n }\n return managed.ctx;\n }\n colorToString(color) {\n if (typeof color === \"string\")\n return color;\n const a = color.a !== undefined ? color.a : 1;\n return `rgba(${color.r}, ${color.g}, ${color.b}, ${a})`;\n }\n createFillStyle(ctx, fill) {\n if (\"type\" in fill) {\n return this.createGradient(ctx, fill);\n }\n return this.colorToString(fill.color);\n }\n createGradient(ctx, gradient) {\n let grad;\n if (gradient.type === \"linear\") {\n grad = ctx.createLinearGradient(gradient.x0, gradient.y0, gradient.x1, gradient.y1);\n }\n else {\n grad = ctx.createRadialGradient(gradient.x0, gradient.y0, gradient.r0, gradient.x1, gradient.y1, gradient.r1);\n }\n for (const stop of gradient.stops) {\n grad.addColorStop(stop.offset, this.colorToString(stop.color));\n }\n return grad;\n }\n applyStrokeStyle(ctx, stroke) {\n ctx.strokeStyle = this.colorToString(stroke.color);\n ctx.lineWidth = stroke.width;\n ctx.lineCap = stroke.lineCap || \"butt\";\n ctx.lineJoin = stroke.lineJoin || \"miter\";\n if (stroke.dashPattern) {\n ctx.setLineDash(stroke.dashPattern);\n }\n else {\n ctx.setLineDash([]);\n }\n }\n applyDrawOptions(ctx, canvasId, options) {\n ctx.save();\n // Apply canvas-level transform first (from setTransform)\n const managed = this.canvases.get(canvasId);\n if (managed && Object.keys(managed.transform).length > 0) {\n this.applyTransform(ctx, managed.transform);\n }\n if (options?.opacity !== undefined) {\n ctx.globalAlpha = options.opacity;\n }\n if (options?.blendMode) {\n const blendMap = {\n normal: \"source-over\",\n multiply: \"multiply\",\n screen: \"screen\",\n overlay: \"overlay\",\n darken: \"darken\",\n lighten: \"lighten\",\n \"color-dodge\": \"color-dodge\",\n \"color-burn\": \"color-burn\",\n };\n ctx.globalCompositeOperation =\n blendMap[options.blendMode] ?? \"source-over\";\n }\n if (options?.shadow) {\n ctx.shadowColor = this.colorToString(options.shadow.color);\n ctx.shadowBlur = options.shadow.blur;\n ctx.shadowOffsetX = options.shadow.offsetX;\n ctx.shadowOffsetY = options.shadow.offsetY;\n }\n // Apply draw-specific transform on top of canvas transform\n if (options?.transform) {\n this.applyTransform(ctx, options.transform);\n }\n }\n applyTransform(ctx, transform) {\n if (transform.translateX || transform.translateY) {\n ctx.translate(transform.translateX || 0, transform.translateY || 0);\n }\n if (transform.rotation) {\n ctx.rotate(transform.rotation);\n }\n if (transform.scaleX !== undefined || transform.scaleY !== undefined) {\n ctx.scale(transform.scaleX ?? 1, transform.scaleY ?? 1);\n }\n if (transform.skewX || transform.skewY) {\n ctx.transform(1, transform.skewY || 0, transform.skewX || 0, 1, 0, 0);\n }\n }\n setupTouchHandlers(managed) {\n const getScaledCoords = (clientX, clientY) => {\n const rect = managed.canvas.getBoundingClientRect();\n return {\n x: (clientX - rect.left) * (managed.size.width / rect.width),\n y: (clientY - rect.top) * (managed.size.height / rect.height),\n };\n };\n const emitTouch = (type, touches) => {\n this.notifyListeners(\"touch\", { type, touches, timestamp: Date.now() });\n };\n const handleTouchEvent = (e, type) => {\n if (!managed.touchEnabled)\n return;\n const touches = Array.from(e.touches).map((t) => ({\n id: t.identifier,\n ...getScaledCoords(t.clientX, t.clientY),\n force: t.force || undefined,\n }));\n emitTouch(type, touches);\n };\n managed.canvas.addEventListener(\"touchstart\", (e) => handleTouchEvent(e, \"start\"));\n managed.canvas.addEventListener(\"touchmove\", (e) => handleTouchEvent(e, \"move\"));\n managed.canvas.addEventListener(\"touchend\", (e) => handleTouchEvent(e, \"end\"));\n managed.canvas.addEventListener(\"touchcancel\", (e) => handleTouchEvent(e, \"cancel\"));\n managed.canvas.addEventListener(\"mousedown\", (e) => {\n if (!managed.touchEnabled)\n return;\n emitTouch(\"start\", [{ id: 0, ...getScaledCoords(e.clientX, e.clientY) }]);\n });\n managed.canvas.addEventListener(\"mousemove\", (e) => {\n if (!managed.touchEnabled || e.buttons !== 1)\n return;\n emitTouch(\"move\", [{ id: 0, ...getScaledCoords(e.clientX, e.clientY) }]);\n });\n managed.canvas.addEventListener(\"mouseup\", () => {\n if (!managed.touchEnabled)\n return;\n emitTouch(\"end\", []);\n });\n }\n async addListener(eventName, listenerFunc) {\n const entry = { eventName, callback: listenerFunc };\n this.pluginListeners.push(entry);\n return {\n remove: async () => {\n const i = this.pluginListeners.indexOf(entry);\n if (i >= 0)\n this.pluginListeners.splice(i, 1);\n },\n };\n }\n async removeAllListeners() {\n this.pluginListeners = [];\n }\n notifyListeners(eventName, data) {\n this.pluginListeners\n .filter((l) => l.eventName === eventName)\n .forEach((l) => {\n l.callback(data);\n });\n }\n}\n"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.cjs.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from \"@capacitor/core\";\nexport * from \"./definitions\";\nconst loadWeb = () => import(\"./web\").then((m) => new m.CanvasWeb());\nexport const Canvas = registerPlugin(\"ElizaCanvas\", {\n web: loadWeb,\n});\n","import { WebPlugin } from \"@capacitor/core\";\nconst MAX_CANVAS_DIMENSION = 16384;\nfunction assertFiniteNumber(value, label) {\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n throw new Error(`${label} must be a finite number`);\n }\n return value;\n}\nfunction assertCanvasSize(size, label = \"size\") {\n if (!size || typeof size !== \"object\") {\n throw new Error(`${label} must include finite width and height`);\n }\n const width = assertFiniteNumber(size.width, `${label}.width`);\n const height = assertFiniteNumber(size.height, `${label}.height`);\n if (width <= 0 ||\n height <= 0 ||\n width > MAX_CANVAS_DIMENSION ||\n height > MAX_CANVAS_DIMENSION) {\n throw new Error(`${label}.width and ${label}.height must be between 1 and ${MAX_CANVAS_DIMENSION}`);\n }\n return { width, height };\n}\nfunction assertUnitInterval(value, label) {\n const numberValue = assertFiniteNumber(value, label);\n if (numberValue < 0 || numberValue > 1) {\n throw new Error(`${label} must be between 0 and 1`);\n }\n return numberValue;\n}\nfunction assertQuality(value, label, fallback) {\n if (value === undefined)\n return fallback;\n const numberValue = assertFiniteNumber(value, label);\n if (numberValue < 0 || numberValue > 100) {\n throw new Error(`${label} must be between 0 and 100`);\n }\n return numberValue / 100;\n}\nfunction assertLayerInput(layer) {\n if (!layer || typeof layer !== \"object\") {\n throw new Error(\"layer must be an object\");\n }\n if (typeof layer.visible !== \"boolean\") {\n throw new Error(\"layer.visible must be a boolean\");\n }\n return {\n ...layer,\n opacity: assertUnitInterval(layer.opacity, \"layer.opacity\"),\n zIndex: assertFiniteNumber(layer.zIndex, \"layer.zIndex\"),\n };\n}\nfunction assertAttachElement(element) {\n if (!element || typeof element.appendChild !== \"function\") {\n throw new Error(\"element must be an HTMLElement-like append target\");\n }\n return element;\n}\nexport class CanvasWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.canvases = new Map();\n this.nextCanvasId = 1;\n this.nextLayerId = 1;\n this.pluginListeners = [];\n this.webViewIframe = null;\n this.webViewPopup = null;\n this.messageListenerBound = false;\n }\n async create(options) {\n const size = assertCanvasSize(options.size);\n const canvasId = `canvas_${this.nextCanvasId++}`;\n const canvas = document.createElement(\"canvas\");\n canvas.width = size.width;\n canvas.height = size.height;\n canvas.style.width = \"100%\";\n canvas.style.height = \"100%\";\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n throw new Error(\"Failed to get 2D context\");\n }\n if (options.backgroundColor) {\n ctx.fillStyle = this.colorToString(options.backgroundColor);\n ctx.fillRect(0, 0, size.width, size.height);\n }\n const managedCanvas = {\n id: canvasId,\n canvas,\n ctx,\n layers: new Map(),\n size,\n transform: {},\n touchEnabled: false,\n };\n this.canvases.set(canvasId, managedCanvas);\n return { canvasId };\n }\n async destroy(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n return;\n managed.layers.forEach((layer) => {\n layer.canvas.remove();\n });\n managed.canvas.remove();\n this.canvases.delete(options.canvasId);\n }\n async attach(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n assertAttachElement(options.element).appendChild(managed.canvas);\n this.setupTouchHandlers(managed);\n }\n async detach(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n managed.canvas.remove();\n }\n async resize(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n const size = assertCanvasSize(options.size);\n const imageData = managed.ctx.getImageData(0, 0, managed.canvas.width, managed.canvas.height);\n managed.canvas.width = size.width;\n managed.canvas.height = size.height;\n managed.size = size;\n managed.ctx.putImageData(imageData, 0, 0);\n for (const layer of managed.layers.values()) {\n const layerImageData = layer.ctx.getImageData(0, 0, layer.canvas.width, layer.canvas.height);\n layer.canvas.width = size.width;\n layer.canvas.height = size.height;\n layer.ctx.putImageData(layerImageData, 0, 0);\n }\n }\n async clear(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n const ctx = options.layerId\n ? managed.layers.get(options.layerId)?.ctx\n : managed.ctx;\n if (!ctx)\n throw new Error(\"Context not found\");\n if (options.rect) {\n ctx.clearRect(options.rect.x, options.rect.y, options.rect.width, options.rect.height);\n }\n else {\n ctx.clearRect(0, 0, managed.size.width, managed.size.height);\n }\n }\n async createLayer(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n const inputLayer = assertLayerInput(options.layer);\n const layerId = `layer_${this.nextLayerId++}`;\n const layerCanvas = document.createElement(\"canvas\");\n layerCanvas.width = managed.size.width;\n layerCanvas.height = managed.size.height;\n layerCanvas.style.position = \"absolute\";\n layerCanvas.style.pointerEvents = \"none\";\n layerCanvas.style.display = inputLayer.visible ? \"block\" : \"none\";\n layerCanvas.style.opacity = String(inputLayer.opacity);\n layerCanvas.style.zIndex = String(inputLayer.zIndex);\n const layerCtx = layerCanvas.getContext(\"2d\");\n if (!layerCtx)\n throw new Error(\"Failed to get layer context\");\n const managedLayer = {\n id: layerId,\n name: inputLayer.name,\n visible: inputLayer.visible,\n opacity: inputLayer.opacity,\n zIndex: inputLayer.zIndex,\n transform: inputLayer.transform,\n canvas: layerCanvas,\n ctx: layerCtx,\n };\n managed.layers.set(layerId, managedLayer);\n const parent = managed.canvas.parentElement;\n if (parent) {\n parent.appendChild(layerCanvas);\n }\n return { layerId };\n }\n async updateLayer(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n const layer = managed.layers.get(options.layerId);\n if (!layer)\n throw new Error(\"Layer not found\");\n if (options.layer.visible !== undefined) {\n if (typeof options.layer.visible !== \"boolean\") {\n throw new Error(\"layer.visible must be a boolean\");\n }\n layer.visible = options.layer.visible;\n layer.canvas.style.display = options.layer.visible ? \"block\" : \"none\";\n }\n if (options.layer.opacity !== undefined) {\n const opacity = assertUnitInterval(options.layer.opacity, \"layer.opacity\");\n layer.opacity = opacity;\n layer.canvas.style.opacity = String(opacity);\n }\n if (options.layer.zIndex !== undefined) {\n const zIndex = assertFiniteNumber(options.layer.zIndex, \"layer.zIndex\");\n layer.zIndex = zIndex;\n layer.canvas.style.zIndex = String(zIndex);\n }\n if (options.layer.name !== undefined) {\n layer.name = options.layer.name;\n }\n if (options.layer.transform !== undefined) {\n layer.transform = options.layer.transform;\n }\n }\n async deleteLayer(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n const layer = managed.layers.get(options.layerId);\n if (!layer)\n throw new Error(\"Layer not found\");\n layer.canvas.remove();\n managed.layers.delete(options.layerId);\n }\n async getLayers(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n const layers = Array.from(managed.layers.values()).map((layer) => ({\n id: layer.id,\n name: layer.name,\n visible: layer.visible,\n opacity: layer.opacity,\n zIndex: layer.zIndex,\n transform: layer.transform,\n }));\n return { layers };\n }\n async drawRect(options) {\n const ctx = this.getContext(options.canvasId, options.drawOptions?.layerId);\n this.applyDrawOptions(ctx, options.canvasId, options.drawOptions);\n ctx.beginPath();\n if (options.cornerRadius && options.cornerRadius > 0) {\n const r = options.cornerRadius;\n const { x, y, width, height } = options.rect;\n ctx.moveTo(x + r, y);\n ctx.lineTo(x + width - r, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + r);\n ctx.lineTo(x + width, y + height - r);\n ctx.quadraticCurveTo(x + width, y + height, x + width - r, y + height);\n ctx.lineTo(x + r, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - r);\n ctx.lineTo(x, y + r);\n ctx.quadraticCurveTo(x, y, x + r, y);\n ctx.closePath();\n }\n else {\n ctx.rect(options.rect.x, options.rect.y, options.rect.width, options.rect.height);\n }\n if (options.fill) {\n ctx.fillStyle = this.createFillStyle(ctx, options.fill);\n ctx.fill();\n }\n if (options.stroke) {\n this.applyStrokeStyle(ctx, options.stroke);\n ctx.stroke();\n }\n ctx.restore();\n }\n async drawEllipse(options) {\n const ctx = this.getContext(options.canvasId, options.drawOptions?.layerId);\n this.applyDrawOptions(ctx, options.canvasId, options.drawOptions);\n ctx.beginPath();\n ctx.ellipse(options.center.x, options.center.y, options.radiusX, options.radiusY, 0, 0, Math.PI * 2);\n if (options.fill) {\n ctx.fillStyle = this.createFillStyle(ctx, options.fill);\n ctx.fill();\n }\n if (options.stroke) {\n this.applyStrokeStyle(ctx, options.stroke);\n ctx.stroke();\n }\n ctx.restore();\n }\n async drawLine(options) {\n const ctx = this.getContext(options.canvasId, options.drawOptions?.layerId);\n this.applyDrawOptions(ctx, options.canvasId, options.drawOptions);\n this.applyStrokeStyle(ctx, options.stroke);\n ctx.beginPath();\n ctx.moveTo(options.from.x, options.from.y);\n ctx.lineTo(options.to.x, options.to.y);\n ctx.stroke();\n ctx.restore();\n }\n async drawPath(options) {\n const ctx = this.getContext(options.canvasId, options.drawOptions?.layerId);\n this.applyDrawOptions(ctx, options.canvasId, options.drawOptions);\n ctx.beginPath();\n for (const cmd of options.path.commands) {\n switch (cmd.type) {\n case \"moveTo\":\n ctx.moveTo(cmd.args[0], cmd.args[1]);\n break;\n case \"lineTo\":\n ctx.lineTo(cmd.args[0], cmd.args[1]);\n break;\n case \"quadraticCurveTo\":\n ctx.quadraticCurveTo(cmd.args[0], cmd.args[1], cmd.args[2], cmd.args[3]);\n break;\n case \"bezierCurveTo\":\n ctx.bezierCurveTo(cmd.args[0], cmd.args[1], cmd.args[2], cmd.args[3], cmd.args[4], cmd.args[5]);\n break;\n case \"arcTo\":\n ctx.arcTo(cmd.args[0], cmd.args[1], cmd.args[2], cmd.args[3], cmd.args[4]);\n break;\n case \"arc\":\n ctx.arc(cmd.args[0], cmd.args[1], cmd.args[2], cmd.args[3], cmd.args[4], cmd.args[5] === 1);\n break;\n case \"ellipse\":\n ctx.ellipse(cmd.args[0], cmd.args[1], cmd.args[2], cmd.args[3], cmd.args[4], cmd.args[5], cmd.args[6], cmd.args[7] === 1);\n break;\n case \"rect\":\n ctx.rect(cmd.args[0], cmd.args[1], cmd.args[2], cmd.args[3]);\n break;\n case \"closePath\":\n ctx.closePath();\n break;\n }\n }\n if (options.fill) {\n ctx.fillStyle = this.createFillStyle(ctx, options.fill);\n ctx.fill();\n }\n if (options.stroke) {\n this.applyStrokeStyle(ctx, options.stroke);\n ctx.stroke();\n }\n ctx.restore();\n }\n async drawText(options) {\n const ctx = this.getContext(options.canvasId, options.drawOptions?.layerId);\n this.applyDrawOptions(ctx, options.canvasId, options.drawOptions);\n ctx.font = `${options.style.size}px ${options.style.font}`;\n ctx.fillStyle = this.colorToString(options.style.color);\n ctx.textAlign = options.style.align || \"left\";\n ctx.textBaseline = (options.style.baseline ||\n \"alphabetic\");\n if (options.style.maxWidth) {\n ctx.fillText(options.text, options.position.x, options.position.y, options.style.maxWidth);\n }\n else {\n ctx.fillText(options.text, options.position.x, options.position.y);\n }\n ctx.restore();\n }\n async drawImage(options) {\n const ctx = this.getContext(options.canvasId, options.drawOptions?.layerId);\n this.applyDrawOptions(ctx, options.canvasId, options.drawOptions);\n const img = new Image();\n if (typeof options.image === \"string\") {\n img.src = options.image;\n }\n else {\n img.src = `data:image/${options.image.format};base64,${options.image.base64}`;\n }\n await new Promise((resolve, reject) => {\n img.onload = () => resolve();\n img.onerror = () => reject(new Error(\"Failed to load image\"));\n });\n if (options.srcRect) {\n ctx.drawImage(img, options.srcRect.x, options.srcRect.y, options.srcRect.width, options.srcRect.height, options.destRect.x, options.destRect.y, options.destRect.width, options.destRect.height);\n }\n else {\n ctx.drawImage(img, options.destRect.x, options.destRect.y, options.destRect.width, options.destRect.height);\n }\n ctx.restore();\n }\n async drawBatch(options) {\n const base = { canvasId: options.canvasId };\n for (const cmd of options.commands) {\n switch (cmd.type) {\n case \"rect\":\n await this.drawRect({ ...base, ...cmd.args });\n break;\n case \"ellipse\":\n await this.drawEllipse({ ...base, ...cmd.args });\n break;\n case \"line\":\n await this.drawLine({ ...base, ...cmd.args });\n break;\n case \"path\":\n await this.drawPath({ ...base, ...cmd.args });\n break;\n case \"text\":\n await this.drawText({ ...base, ...cmd.args });\n break;\n case \"image\":\n await this.drawImage({ ...base, ...cmd.args });\n break;\n case \"clear\":\n await this.clear({ ...base, ...cmd.args });\n break;\n }\n }\n }\n async getPixelData(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n const rect = options.rect || {\n x: 0,\n y: 0,\n width: managed.size.width,\n height: managed.size.height,\n };\n const imageData = managed.ctx.getImageData(rect.x, rect.y, rect.width, rect.height);\n return {\n data: imageData.data,\n width: imageData.width,\n height: imageData.height,\n };\n }\n async toImage(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n const format = options.format || \"png\";\n const quality = assertQuality(options.quality, \"quality\", 1);\n let sourceCanvas = managed.canvas;\n if (options.layerIds && options.layerIds.length > 0) {\n const tempCanvas = document.createElement(\"canvas\");\n tempCanvas.width = managed.size.width;\n tempCanvas.height = managed.size.height;\n const tempCtx = tempCanvas.getContext(\"2d\");\n if (!tempCtx)\n throw new Error(\"Failed to create temp canvas\");\n for (const layerId of options.layerIds) {\n const layer = managed.layers.get(layerId);\n if (layer?.visible) {\n tempCtx.globalAlpha = layer.opacity;\n tempCtx.drawImage(layer.canvas, 0, 0);\n }\n }\n sourceCanvas = tempCanvas;\n }\n const mimeType = format === \"png\"\n ? \"image/png\"\n : format === \"webp\"\n ? \"image/webp\"\n : \"image/jpeg\";\n const dataUrl = sourceCanvas.toDataURL(mimeType, quality);\n const base64 = dataUrl.split(\",\")[1];\n return {\n base64,\n format,\n width: managed.size.width,\n height: managed.size.height,\n };\n }\n async setTransform(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n managed.transform = options.transform;\n }\n async resetTransform(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n managed.transform = {};\n managed.ctx.setTransform(1, 0, 0, 1, 0, 0);\n }\n async setTouchEnabled(options) {\n const managed = this.canvases.get(options.canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n managed.touchEnabled = options.enabled;\n }\n // ---- Web View Methods ----\n async navigate(options) {\n const placement = options.placement || \"inline\";\n // Clean up any existing web view\n this.destroyWebView();\n // Intercept eliza:// deep links immediately\n if (options.url.startsWith(\"eliza://\")) {\n const parsed = new URL(options.url);\n const params = {};\n parsed.searchParams.forEach((value, key) => {\n params[key] = value;\n });\n this.notifyListeners(\"deepLink\", {\n url: options.url,\n path: parsed.pathname,\n params,\n });\n return;\n }\n if (placement === \"popup\") {\n const popup = window.open(options.url, \"_blank\", \"width=800,height=600,menubar=no,toolbar=no\");\n if (!popup) {\n this.notifyListeners(\"navigationError\", {\n url: options.url,\n code: -1,\n message: \"Popup blocked by browser\",\n });\n return;\n }\n this.webViewPopup = popup;\n // Poll to detect when popup loads (cross-origin limits apply)\n const checkReady = setInterval(() => {\n try {\n if (popup.closed) {\n clearInterval(checkReady);\n return;\n }\n // Same-origin: can read title\n const title = popup.document?.title || \"\";\n clearInterval(checkReady);\n this.notifyListeners(\"webViewReady\", { url: options.url, title });\n }\n catch {\n // Cross-origin: fire ready without title\n clearInterval(checkReady);\n this.notifyListeners(\"webViewReady\", { url: options.url, title: \"\" });\n }\n }, 200);\n return;\n }\n // Inline or fullscreen: use an iframe\n const iframe = document.createElement(\"iframe\");\n iframe.style.border = \"none\";\n iframe.setAttribute(\"sandbox\", \"allow-scripts allow-same-origin allow-forms allow-popups\");\n if (placement === \"fullscreen\") {\n iframe.style.position = \"fixed\";\n iframe.style.top = \"0\";\n iframe.style.left = \"0\";\n iframe.style.width = \"100vw\";\n iframe.style.height = \"100vh\";\n iframe.style.zIndex = \"999999\";\n iframe.style.backgroundColor = \"#fff\";\n }\n else {\n iframe.style.width = \"100%\";\n iframe.style.height = \"100%\";\n }\n iframe.addEventListener(\"load\", () => {\n let title = \"\";\n try {\n title = iframe.contentDocument?.title || \"\";\n }\n catch {\n // Cross-origin: title inaccessible\n }\n this.notifyListeners(\"webViewReady\", { url: options.url, title });\n });\n iframe.addEventListener(\"error\", () => {\n this.notifyListeners(\"navigationError\", {\n url: options.url,\n code: -1,\n message: \"Failed to load URL in iframe\",\n });\n });\n iframe.src = options.url;\n document.body.appendChild(iframe);\n this.webViewIframe = iframe;\n this.ensureMessageListener();\n }\n async eval(options) {\n const target = this.webViewIframe?.contentWindow ??\n (this.webViewPopup && !this.webViewPopup.closed\n ? this.webViewPopup\n : null);\n if (!target) {\n throw new Error(\"No web view active. Call navigate() first.\");\n }\n return this.evalViaPostMessage(target, options.script);\n }\n async snapshot(options) {\n if (!this.webViewIframe) {\n throw new Error(\"No web view active or web view opened as popup (snapshot requires inline/fullscreen placement)\");\n }\n const format = options?.format || \"png\";\n const quality = assertQuality(options?.quality, \"quality\", 0.85);\n const iframeRect = this.webViewIframe.getBoundingClientRect();\n let width = Math.round(iframeRect.width) || 800;\n let height = Math.round(iframeRect.height) || 600;\n if (options?.maxWidth !== undefined) {\n assertFiniteNumber(options.maxWidth, \"maxWidth\");\n if (options.maxWidth <= 0) {\n throw new Error(\"maxWidth must be a positive finite number\");\n }\n }\n if (options?.maxWidth && width > options.maxWidth) {\n const scale = options.maxWidth / width;\n height = Math.round(height * scale);\n width = options.maxWidth;\n }\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx)\n throw new Error(\"Failed to create snapshot canvas context\");\n // Attempt same-origin capture via DOM serialization + SVG foreignObject\n let captured = false;\n try {\n const iframeDoc = this.webViewIframe.contentDocument;\n if (iframeDoc) {\n const serializer = new XMLSerializer();\n const htmlString = serializer.serializeToString(iframeDoc);\n const svgParts = [\n `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${width}\" height=\"${height}\">`,\n `<foreignObject width=\"100%\" height=\"100%\">`,\n htmlString,\n `</foreignObject>`,\n `</svg>`,\n ];\n const img = new Image();\n const blob = new Blob([svgParts.join(\"\")], {\n type: \"image/svg+xml;charset=utf-8\",\n });\n const blobUrl = URL.createObjectURL(blob);\n try {\n await new Promise((resolve, reject) => {\n img.onload = () => resolve();\n img.onerror = () => reject(new Error(\"SVG render failed\"));\n img.src = blobUrl;\n });\n ctx.drawImage(img, 0, 0, width, height);\n captured = true;\n }\n finally {\n URL.revokeObjectURL(blobUrl);\n }\n }\n }\n catch {\n // Cross-origin or serialization failed — fall through to an unavailable frame.\n }\n if (!captured) {\n // Render an unavailable frame indicating the cross-origin limitation.\n ctx.fillStyle = \"#f5f5f5\";\n ctx.fillRect(0, 0, width, height);\n ctx.strokeStyle = \"#ccc\";\n ctx.strokeRect(0, 0, width, height);\n ctx.fillStyle = \"#888\";\n ctx.font = \"14px -apple-system, BlinkMacSystemFont, sans-serif\";\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n ctx.fillText(\"Snapshot unavailable (cross-origin content)\", width / 2, height / 2);\n }\n const mimeType = format === \"jpeg\"\n ? \"image/jpeg\"\n : format === \"webp\"\n ? \"image/webp\"\n : \"image/png\";\n const dataUrl = canvas.toDataURL(mimeType, quality);\n const base64 = dataUrl.split(\",\")[1];\n return { base64, width, height, format };\n }\n async a2uiPush(options) {\n // Try window.elizaA2UI bridge first (set up by the A2UI runtime)\n const bridge = window\n .elizaA2UI;\n if (bridge?.push) {\n bridge.push(options.messages || [], options.jsonl || \"\", options.payload || null);\n return;\n }\n // Fall back to postMessage into the web view\n const target = this.webViewIframe?.contentWindow ||\n (this.webViewPopup && !this.webViewPopup.closed\n ? this.webViewPopup\n : null);\n if (target) {\n target.postMessage({\n type: \"eliza:a2uiPush\",\n messages: options.messages || [],\n jsonl: options.jsonl || \"\",\n payload: options.payload || null,\n }, \"*\");\n return;\n }\n throw new Error(\"No A2UI bridge or web view available\");\n }\n async a2uiReset() {\n // Try window.elizaA2UI bridge first\n const bridge = window\n .elizaA2UI;\n if (bridge?.reset) {\n bridge.reset();\n return;\n }\n // Fall back to postMessage into the web view\n const target = this.webViewIframe?.contentWindow ||\n (this.webViewPopup && !this.webViewPopup.closed\n ? this.webViewPopup\n : null);\n if (target) {\n target.postMessage({ type: \"eliza:a2uiReset\" }, \"*\");\n return;\n }\n throw new Error(\"No A2UI bridge or web view available\");\n }\n // ---- Web View Helpers ----\n destroyWebView() {\n if (this.webViewIframe) {\n this.webViewIframe.remove();\n this.webViewIframe = null;\n }\n if (this.webViewPopup && !this.webViewPopup.closed) {\n this.webViewPopup.close();\n }\n this.webViewPopup = null;\n }\n evalViaPostMessage(target, script) {\n return new Promise((resolve, reject) => {\n const timeoutMs = 5000;\n const timeout = setTimeout(() => {\n window.removeEventListener(\"message\", handler);\n reject(new Error(\"eval timed out waiting for response from web view\"));\n }, timeoutMs);\n const handler = (event) => {\n const msg = event.data;\n if (msg?.type === \"eliza:evalResult\" && msg.result !== undefined) {\n clearTimeout(timeout);\n window.removeEventListener(\"message\", handler);\n resolve({ result: String(msg.result) });\n }\n };\n window.addEventListener(\"message\", handler);\n target.postMessage({ type: \"eliza:eval\", script }, \"*\");\n });\n }\n ensureMessageListener() {\n if (this.messageListenerBound)\n return;\n this.messageListenerBound = true;\n window.addEventListener(\"message\", (event) => {\n // Only accept messages from our web view\n const iframeSrc = this.webViewIframe?.contentWindow;\n const popupSrc = this.webViewPopup;\n if (event.source !== iframeSrc && event.source !== popupSrc)\n return;\n const msg = event.data;\n if (!msg || typeof msg.type !== \"string\")\n return;\n if (msg.type === \"eliza:deepLink\" && msg.url && msg.path) {\n this.notifyListeners(\"deepLink\", {\n url: msg.url,\n path: msg.path,\n params: msg.params || {},\n });\n }\n if (msg.type === \"eliza:a2uiAction\" && msg.action) {\n this.notifyListeners(\"a2uiAction\", {\n action: msg.action,\n data: msg.data || {},\n messageId: msg.messageId,\n });\n }\n });\n }\n // ---- Drawing Helpers ----\n getContext(canvasId, layerId) {\n const managed = this.canvases.get(canvasId);\n if (!managed)\n throw new Error(\"Canvas not found\");\n if (layerId) {\n const layer = managed.layers.get(layerId);\n if (!layer)\n throw new Error(\"Layer not found\");\n return layer.ctx;\n }\n return managed.ctx;\n }\n colorToString(color) {\n if (typeof color === \"string\")\n return color;\n const a = color.a !== undefined ? color.a : 1;\n return `rgba(${color.r}, ${color.g}, ${color.b}, ${a})`;\n }\n createFillStyle(ctx, fill) {\n if (\"type\" in fill) {\n return this.createGradient(ctx, fill);\n }\n return this.colorToString(fill.color);\n }\n createGradient(ctx, gradient) {\n let grad;\n if (gradient.type === \"linear\") {\n grad = ctx.createLinearGradient(gradient.x0, gradient.y0, gradient.x1, gradient.y1);\n }\n else {\n grad = ctx.createRadialGradient(gradient.x0, gradient.y0, gradient.r0, gradient.x1, gradient.y1, gradient.r1);\n }\n for (const stop of gradient.stops) {\n grad.addColorStop(stop.offset, this.colorToString(stop.color));\n }\n return grad;\n }\n applyStrokeStyle(ctx, stroke) {\n ctx.strokeStyle = this.colorToString(stroke.color);\n ctx.lineWidth = stroke.width;\n ctx.lineCap = stroke.lineCap || \"butt\";\n ctx.lineJoin = stroke.lineJoin || \"miter\";\n if (stroke.dashPattern) {\n ctx.setLineDash(stroke.dashPattern);\n }\n else {\n ctx.setLineDash([]);\n }\n }\n applyDrawOptions(ctx, canvasId, options) {\n ctx.save();\n // Apply canvas-level transform first (from setTransform)\n const managed = this.canvases.get(canvasId);\n if (managed && Object.keys(managed.transform).length > 0) {\n this.applyTransform(ctx, managed.transform);\n }\n if (options?.opacity !== undefined) {\n ctx.globalAlpha = options.opacity;\n }\n if (options?.blendMode) {\n const blendMap = {\n normal: \"source-over\",\n multiply: \"multiply\",\n screen: \"screen\",\n overlay: \"overlay\",\n darken: \"darken\",\n lighten: \"lighten\",\n \"color-dodge\": \"color-dodge\",\n \"color-burn\": \"color-burn\",\n };\n ctx.globalCompositeOperation =\n blendMap[options.blendMode] ?? \"source-over\";\n }\n if (options?.shadow) {\n ctx.shadowColor = this.colorToString(options.shadow.color);\n ctx.shadowBlur = options.shadow.blur;\n ctx.shadowOffsetX = options.shadow.offsetX;\n ctx.shadowOffsetY = options.shadow.offsetY;\n }\n // Apply draw-specific transform on top of canvas transform\n if (options?.transform) {\n this.applyTransform(ctx, options.transform);\n }\n }\n applyTransform(ctx, transform) {\n if (transform.translateX || transform.translateY) {\n ctx.translate(transform.translateX || 0, transform.translateY || 0);\n }\n if (transform.rotation) {\n ctx.rotate(transform.rotation);\n }\n if (transform.scaleX !== undefined || transform.scaleY !== undefined) {\n ctx.scale(transform.scaleX ?? 1, transform.scaleY ?? 1);\n }\n if (transform.skewX || transform.skewY) {\n ctx.transform(1, transform.skewY || 0, transform.skewX || 0, 1, 0, 0);\n }\n }\n setupTouchHandlers(managed) {\n const getScaledCoords = (clientX, clientY) => {\n const rect = managed.canvas.getBoundingClientRect();\n return {\n x: (clientX - rect.left) * (managed.size.width / rect.width),\n y: (clientY - rect.top) * (managed.size.height / rect.height),\n };\n };\n const emitTouch = (type, touches) => {\n this.notifyListeners(\"touch\", { type, touches, timestamp: Date.now() });\n };\n const handleTouchEvent = (e, type) => {\n if (!managed.touchEnabled)\n return;\n const touches = Array.from(e.touches).map((t) => ({\n id: t.identifier,\n ...getScaledCoords(t.clientX, t.clientY),\n force: t.force || undefined,\n }));\n emitTouch(type, touches);\n };\n managed.canvas.addEventListener(\"touchstart\", (e) => handleTouchEvent(e, \"start\"));\n managed.canvas.addEventListener(\"touchmove\", (e) => handleTouchEvent(e, \"move\"));\n managed.canvas.addEventListener(\"touchend\", (e) => handleTouchEvent(e, \"end\"));\n managed.canvas.addEventListener(\"touchcancel\", (e) => handleTouchEvent(e, \"cancel\"));\n managed.canvas.addEventListener(\"mousedown\", (e) => {\n if (!managed.touchEnabled)\n return;\n emitTouch(\"start\", [{ id: 0, ...getScaledCoords(e.clientX, e.clientY) }]);\n });\n managed.canvas.addEventListener(\"mousemove\", (e) => {\n if (!managed.touchEnabled || e.buttons !== 1)\n return;\n emitTouch(\"move\", [{ id: 0, ...getScaledCoords(e.clientX, e.clientY) }]);\n });\n managed.canvas.addEventListener(\"mouseup\", () => {\n if (!managed.touchEnabled)\n return;\n emitTouch(\"end\", []);\n });\n }\n async addListener(eventName, listenerFunc) {\n const entry = { eventName, callback: listenerFunc };\n this.pluginListeners.push(entry);\n return {\n remove: async () => {\n const i = this.pluginListeners.indexOf(entry);\n if (i >= 0)\n this.pluginListeners.splice(i, 1);\n },\n };\n }\n async removeAllListeners() {\n this.pluginListeners = [];\n }\n notifyListeners(eventName, data) {\n this.pluginListeners\n .filter((l) => l.eventName === eventName)\n .forEach((l) => {\n l.callback(data);\n });\n }\n}\n"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
|