@pooder/vue 4.4.5 → 4.5.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/index.es.js +121 -112
- package/dist/index.umd.js +1 -1
- package/dist/vue/src/PooderEditor.vue.d.ts +19 -97
- package/dist/vue/src/index.d.ts +1 -0
- package/dist/vue/src/model.d.ts +145 -0
- package/dist/vue.css +1 -1
- package/package.json +3 -3
package/dist/index.es.js
CHANGED
|
@@ -1,89 +1,95 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { Pooder as
|
|
1
|
+
import { defineComponent as F, ref as T, onMounted as q, onUnmounted as O, createElementBlock as P, openBlock as N, createElementVNode as G, provide as J, createVNode as K } from "vue";
|
|
2
|
+
import { Pooder as Q } from "@pooder/core";
|
|
3
3
|
export * from "@pooder/core";
|
|
4
|
-
import { CanvasService as
|
|
4
|
+
import { CanvasService as Z, SceneLayoutService as ee, BackgroundTool as te, SizeTool as ne, ImageTool as re, WhiteInkTool as ae, DielineTool as oe, RulerTool as ie, FeatureTool as ce } from "@pooder/kit";
|
|
5
5
|
export * from "@pooder/kit";
|
|
6
|
-
const
|
|
6
|
+
const se = /* @__PURE__ */ F({
|
|
7
7
|
__name: "CanvasArea",
|
|
8
8
|
emits: ["canvas-ready", "resize"],
|
|
9
9
|
setup(h, { emit: l }) {
|
|
10
|
-
const m = l, r = T(null),
|
|
11
|
-
let
|
|
12
|
-
return
|
|
13
|
-
if (r.value &&
|
|
10
|
+
const m = l, r = T(null), a = T(null);
|
|
11
|
+
let c = null;
|
|
12
|
+
return q(() => {
|
|
13
|
+
if (r.value && a.value) {
|
|
14
14
|
const { clientWidth: u, clientHeight: f } = r.value;
|
|
15
|
-
|
|
16
|
-
for (const
|
|
17
|
-
const { width: w, height: y } =
|
|
15
|
+
a.value.width = u, a.value.height = f, m("canvas-ready", a.value), c = new ResizeObserver((p) => {
|
|
16
|
+
for (const v of p) {
|
|
17
|
+
const { width: w, height: y } = v.contentRect;
|
|
18
18
|
m("resize", w, y);
|
|
19
19
|
}
|
|
20
|
-
}),
|
|
20
|
+
}), c.observe(r.value);
|
|
21
21
|
}
|
|
22
22
|
}), O(() => {
|
|
23
|
-
|
|
24
|
-
}), (u, f) => (
|
|
23
|
+
c && c.disconnect();
|
|
24
|
+
}), (u, f) => (N(), P("div", {
|
|
25
25
|
ref_key: "container",
|
|
26
26
|
ref: r,
|
|
27
27
|
class: "pooder-canvas-area"
|
|
28
28
|
}, [
|
|
29
|
-
|
|
29
|
+
G("canvas", {
|
|
30
30
|
ref_key: "canvas",
|
|
31
|
-
ref:
|
|
31
|
+
ref: a
|
|
32
32
|
}, null, 512)
|
|
33
33
|
], 512));
|
|
34
34
|
}
|
|
35
|
-
}),
|
|
35
|
+
}), k = (h, l) => {
|
|
36
36
|
const m = h.__vccOpts || h;
|
|
37
|
-
for (const [r,
|
|
38
|
-
m[r] =
|
|
37
|
+
for (const [r, a] of l)
|
|
38
|
+
m[r] = a;
|
|
39
39
|
return m;
|
|
40
|
-
},
|
|
40
|
+
}, de = /* @__PURE__ */ k(se, [["__scopeId", "data-v-203ff8d9"]]), me = { class: "pooder-editor" }, B = "SceneLayoutService", ue = /* @__PURE__ */ F({
|
|
41
41
|
__name: "PooderEditor",
|
|
42
|
-
emits: ["image-change"],
|
|
42
|
+
emits: ["image-state-change"],
|
|
43
43
|
setup(h, { expose: l, emit: m }) {
|
|
44
|
-
const r = new
|
|
45
|
-
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
|
|
44
|
+
const r = new Q();
|
|
45
|
+
J("pooder", r);
|
|
46
|
+
const a = r.getService("CommandService"), c = r.getService("ConfigurationService"), u = r.getService("WorkbenchService"), f = m, p = (e) => {
|
|
47
|
+
f("image-state-change", e);
|
|
48
|
+
};
|
|
49
|
+
r.eventBus.on("image:state:change", p);
|
|
50
|
+
const v = (e) => {
|
|
51
|
+
c.import(e);
|
|
52
|
+
}, w = () => c.export(), y = async (e) => {
|
|
51
53
|
try {
|
|
52
|
-
const t = await
|
|
54
|
+
const t = await a.executeCommand(
|
|
53
55
|
"exportCutImage",
|
|
54
56
|
e
|
|
55
57
|
);
|
|
56
58
|
return t || console.warn("[PooderEditor] generateCutImage returned null", {
|
|
57
59
|
options: e,
|
|
58
|
-
imageCount: (
|
|
60
|
+
imageCount: (c.get("image.items") || []).length,
|
|
59
61
|
hasCanvasService: !!r.getService("CanvasService")
|
|
60
62
|
}), t;
|
|
61
63
|
} catch (t) {
|
|
62
64
|
throw console.error("[PooderEditor] generateCutImage failed", t), t;
|
|
63
65
|
}
|
|
64
|
-
},
|
|
66
|
+
}, _ = async (e, t) => await a.executeCommand("upsertImage", e, {
|
|
65
67
|
id: t?.id,
|
|
66
68
|
mode: t?.mode,
|
|
67
69
|
addOptions: t?.addOptions,
|
|
68
|
-
|
|
69
|
-
}),
|
|
70
|
+
operation: t?.operation
|
|
71
|
+
}), D = async (e, t) => (await _(e, {
|
|
70
72
|
mode: "add",
|
|
71
|
-
addOptions: t
|
|
72
|
-
|
|
73
|
-
|
|
73
|
+
addOptions: t
|
|
74
|
+
})).id, R = async (e, t, n) => await a.executeCommand(
|
|
75
|
+
"applyImageOperation",
|
|
76
|
+
e,
|
|
77
|
+
t,
|
|
78
|
+
n
|
|
79
|
+
), U = async () => await a.executeCommand("getImageViewState"), z = async (e, t, n) => await a.executeCommand("setImageTransform", e, t, n), M = (e) => (r.eventBus.on("image:state:change", e), () => r.eventBus.off("image:state:change", e)), W = async (e, t) => await a.executeCommand("updateImage", e, t), L = async () => await a.executeCommand("clearImages"), C = async (e) => await a.executeCommand(
|
|
74
80
|
"exportUserCroppedImage",
|
|
75
81
|
e
|
|
76
|
-
),
|
|
77
|
-
|
|
78
|
-
const n = Number(e.imageWidth ?? t?.width ?? 0),
|
|
79
|
-
|
|
82
|
+
), Y = async (e, t) => await a.executeCommand("focusImage", e, t), x = (e, t) => {
|
|
83
|
+
c.update("dieline.shape", "custom"), c.update("dieline.pathData", e.pathData);
|
|
84
|
+
const n = Number(e.imageWidth ?? t?.width ?? 0), o = Number(e.imageHeight ?? t?.height ?? 0);
|
|
85
|
+
c.update(
|
|
80
86
|
"dieline.customSourceWidthPx",
|
|
81
87
|
Number.isFinite(n) && n > 0 ? n : void 0
|
|
82
|
-
),
|
|
88
|
+
), c.update(
|
|
83
89
|
"dieline.customSourceHeightPx",
|
|
84
|
-
Number.isFinite(
|
|
85
|
-
),
|
|
86
|
-
}, b = (e) => !!e && Number.isFinite(e.x) && Number.isFinite(e.y) && Number.isFinite(e.width) && Number.isFinite(e.height) && e.width > 0 && e.height > 0,
|
|
90
|
+
Number.isFinite(o) && o > 0 ? o : void 0
|
|
91
|
+
), c.update("size.cutMode", "trim"), c.update("size.cutMarginMm", 0);
|
|
92
|
+
}, b = (e) => !!e && Number.isFinite(e.x) && Number.isFinite(e.y) && Number.isFinite(e.width) && Number.isFinite(e.height) && e.width > 0 && e.height > 0, I = (e, t) => {
|
|
87
93
|
const n = e.rawBounds || e.baseBounds || null;
|
|
88
94
|
if (!n)
|
|
89
95
|
return {
|
|
@@ -95,17 +101,17 @@ const ie = /* @__PURE__ */ B({
|
|
|
95
101
|
coverageX: 0,
|
|
96
102
|
coverageY: 0
|
|
97
103
|
};
|
|
98
|
-
const
|
|
104
|
+
const o = t.width / 2, i = t.height / 2, s = n.x + n.width / 2, d = n.y + n.height / 2;
|
|
99
105
|
return {
|
|
100
106
|
sourceWidth: t.width,
|
|
101
107
|
sourceHeight: t.height,
|
|
102
108
|
detectedBounds: n,
|
|
103
|
-
centerOffsetX: s -
|
|
104
|
-
centerOffsetY: d -
|
|
109
|
+
centerOffsetX: s - o,
|
|
110
|
+
centerOffsetY: d - i,
|
|
105
111
|
coverageX: t.width > 0 ? n.width / t.width : 0,
|
|
106
112
|
coverageY: t.height > 0 ? n.height / t.height : 0
|
|
107
113
|
};
|
|
108
|
-
},
|
|
114
|
+
}, A = (e) => {
|
|
109
115
|
if (!b(e.rawBounds) || !b(e.baseBounds))
|
|
110
116
|
return null;
|
|
111
117
|
const t = e.rawBounds, n = e.baseBounds;
|
|
@@ -115,61 +121,64 @@ const ie = /* @__PURE__ */ B({
|
|
|
115
121
|
right: t.x + t.width - (n.x + n.width),
|
|
116
122
|
bottom: t.y + t.height - (n.y + n.height)
|
|
117
123
|
};
|
|
118
|
-
},
|
|
119
|
-
const
|
|
120
|
-
left:
|
|
121
|
-
top:
|
|
122
|
-
right:
|
|
123
|
-
bottom:
|
|
124
|
-
} : null, d =
|
|
125
|
-
x:
|
|
126
|
-
y:
|
|
124
|
+
}, H = (e, t, n) => {
|
|
125
|
+
const o = I(e, t), i = A(e), s = i ? {
|
|
126
|
+
left: i.left - n,
|
|
127
|
+
top: i.top - n,
|
|
128
|
+
right: i.right - n,
|
|
129
|
+
bottom: i.bottom - n
|
|
130
|
+
} : null, d = i ? {
|
|
131
|
+
x: i.right - i.left,
|
|
132
|
+
y: i.bottom - i.top
|
|
127
133
|
} : null;
|
|
128
134
|
return {
|
|
129
|
-
frame:
|
|
130
|
-
margin:
|
|
135
|
+
frame: o,
|
|
136
|
+
margin: i,
|
|
131
137
|
expectedExpand: n,
|
|
132
138
|
marginDeltaFromExpected: s,
|
|
133
139
|
marginAsymmetry: d
|
|
134
140
|
};
|
|
135
|
-
},
|
|
141
|
+
}, X = async (e, t, n) => {
|
|
136
142
|
if (!e.length) return null;
|
|
137
|
-
const
|
|
143
|
+
const o = await C({
|
|
138
144
|
multiplier: n?.multiplier ?? 2,
|
|
139
145
|
format: n?.format ?? "png",
|
|
140
146
|
imageIds: e
|
|
141
|
-
}),
|
|
142
|
-
if (!
|
|
147
|
+
}), i = o?.url;
|
|
148
|
+
if (!i) return null;
|
|
143
149
|
try {
|
|
144
|
-
const s = await
|
|
150
|
+
const s = await a.executeCommand("detectEdge", i, {
|
|
145
151
|
expand: n?.detect?.expand ?? 0,
|
|
146
152
|
smoothing: n?.detect?.smoothing ?? !0,
|
|
147
153
|
simplifyTolerance: n?.detect?.simplifyTolerance ?? 2,
|
|
148
154
|
threshold: n?.detect?.threshold,
|
|
149
155
|
debug: !1
|
|
150
156
|
});
|
|
151
|
-
return s ?
|
|
157
|
+
return s ? H(
|
|
152
158
|
s,
|
|
153
|
-
|
|
159
|
+
o,
|
|
154
160
|
t
|
|
155
161
|
) : null;
|
|
156
162
|
} finally {
|
|
157
|
-
URL.revokeObjectURL(
|
|
163
|
+
URL.revokeObjectURL(i);
|
|
158
164
|
}
|
|
159
165
|
};
|
|
160
166
|
l({
|
|
161
|
-
importConfig:
|
|
167
|
+
importConfig: v,
|
|
162
168
|
exportConfig: w,
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
+
generateCutImage: y,
|
|
170
|
+
addImage: D,
|
|
171
|
+
upsertImage: _,
|
|
172
|
+
getImageState: U,
|
|
173
|
+
onImageStateChange: M,
|
|
174
|
+
applyImageOperation: R,
|
|
175
|
+
setImageTransform: z,
|
|
176
|
+
updateImage: W,
|
|
177
|
+
clearImages: L,
|
|
169
178
|
exportUserCroppedImage: C,
|
|
170
|
-
focusImage:
|
|
179
|
+
focusImage: Y,
|
|
171
180
|
detectDieline: async (e) => {
|
|
172
|
-
const t = await
|
|
181
|
+
const t = await a.executeCommand("detectEdge", e, {
|
|
173
182
|
expand: 10,
|
|
174
183
|
// 安全距离(像素)
|
|
175
184
|
smoothing: !0,
|
|
@@ -179,8 +188,8 @@ const ie = /* @__PURE__ */ B({
|
|
|
179
188
|
});
|
|
180
189
|
return t ? (x(t), t.pathData) : null;
|
|
181
190
|
},
|
|
182
|
-
detectDielineFromFrame: async (e) => {
|
|
183
|
-
const t = e?.detect?.debug === !0, n = e?.inspect?.includeCroppedImage === !0,
|
|
191
|
+
detectDielineFromFrame: async (e = {}) => {
|
|
192
|
+
const t = e?.detect?.debug === !0, n = e?.inspect?.includeCroppedImage === !0, o = e?.inspect?.includeDiagnostics === !0, i = Math.max(0, Number(e?.detect?.expand ?? 0)), s = await C({
|
|
184
193
|
multiplier: e?.export?.multiplier ?? 2,
|
|
185
194
|
format: e?.export?.format ?? "png",
|
|
186
195
|
imageIds: e?.export?.imageIds
|
|
@@ -188,7 +197,7 @@ const ie = /* @__PURE__ */ B({
|
|
|
188
197
|
if (!d)
|
|
189
198
|
return console.warn("[PooderEditor] detectDielineFromFrame no source image"), null;
|
|
190
199
|
try {
|
|
191
|
-
const g = await
|
|
200
|
+
const g = await a.executeCommand("detectEdge", d, {
|
|
192
201
|
expand: e?.detect?.expand ?? 0,
|
|
193
202
|
smoothing: e?.detect?.smoothing ?? !0,
|
|
194
203
|
simplifyTolerance: e?.detect?.simplifyTolerance ?? 2,
|
|
@@ -199,15 +208,15 @@ const ie = /* @__PURE__ */ B({
|
|
|
199
208
|
return console.warn(
|
|
200
209
|
"[PooderEditor] detectDielineFromFrame detectEdge returned null"
|
|
201
210
|
), null;
|
|
202
|
-
const
|
|
211
|
+
const E = I(g, s);
|
|
203
212
|
if (e?.commit === !1)
|
|
204
213
|
return {
|
|
205
214
|
...g,
|
|
206
215
|
...n ? { sourceImage: s } : {},
|
|
207
|
-
...
|
|
216
|
+
...o ? { diagnostics: E } : {}
|
|
208
217
|
};
|
|
209
218
|
x(g, s);
|
|
210
|
-
const
|
|
219
|
+
const $ = {
|
|
211
220
|
multiplier: e?.export?.multiplier ?? 2,
|
|
212
221
|
format: e?.export?.format ?? "png",
|
|
213
222
|
detect: {
|
|
@@ -217,10 +226,10 @@ const ie = /* @__PURE__ */ B({
|
|
|
217
226
|
threshold: e?.detect?.threshold
|
|
218
227
|
}
|
|
219
228
|
};
|
|
220
|
-
let S = await
|
|
229
|
+
let S = await X(
|
|
221
230
|
s.imageIds,
|
|
222
|
-
|
|
223
|
-
|
|
231
|
+
i,
|
|
232
|
+
$
|
|
224
233
|
);
|
|
225
234
|
return S ? console.info(
|
|
226
235
|
"[PooderEditor] detectDielineFromFrame post-commit diagnostics",
|
|
@@ -230,65 +239,65 @@ const ie = /* @__PURE__ */ B({
|
|
|
230
239
|
), {
|
|
231
240
|
...g,
|
|
232
241
|
...n ? { sourceImage: s } : {},
|
|
233
|
-
...
|
|
242
|
+
...o ? { diagnostics: E, postCommitDiagnostics: S } : {}
|
|
234
243
|
};
|
|
235
244
|
} finally {
|
|
236
245
|
d && !n && URL.revokeObjectURL(d);
|
|
237
246
|
}
|
|
238
247
|
},
|
|
239
248
|
uploadAndDetectEdge: async (e, t) => {
|
|
240
|
-
const n = await
|
|
249
|
+
const n = await D(e), o = await a.executeCommand("detectEdge", e, {
|
|
241
250
|
expand: t?.expand ?? 10,
|
|
242
251
|
smoothing: t?.smoothing ?? !0,
|
|
243
252
|
simplifyTolerance: t?.simplifyTolerance ?? 2
|
|
244
253
|
});
|
|
245
|
-
return
|
|
254
|
+
return o ? (x(o), { imageId: n, url: e, pathData: o.pathData }) : null;
|
|
246
255
|
},
|
|
247
256
|
activateTool: async (e) => await u.switchTool(e),
|
|
248
257
|
deactivateTool: async () => await u.deactivate(),
|
|
249
258
|
on: (e, t) => r.eventBus.on(e, t),
|
|
250
259
|
off: (e, t) => r.eventBus.off(e, t),
|
|
251
260
|
emit: (e, t) => r.eventBus.emit(e, t),
|
|
252
|
-
executeCommand: (e, ...t) =>
|
|
253
|
-
getConfig: (e) =>
|
|
254
|
-
updateConfig: (e, t) =>
|
|
261
|
+
executeCommand: (e, ...t) => a.executeCommand(e, ...t),
|
|
262
|
+
getConfig: (e) => c.get(e),
|
|
263
|
+
updateConfig: (e, t) => c.update(e, t),
|
|
255
264
|
services: {
|
|
256
265
|
workbench: u,
|
|
257
|
-
command:
|
|
258
|
-
config:
|
|
266
|
+
command: a,
|
|
267
|
+
config: c
|
|
259
268
|
}
|
|
260
269
|
});
|
|
261
|
-
const
|
|
262
|
-
const t = new
|
|
270
|
+
const V = (e) => {
|
|
271
|
+
const t = new Z(e, {
|
|
263
272
|
eventBus: r.eventBus
|
|
264
273
|
});
|
|
265
|
-
r.registerService(t, "CanvasService"), r.registerService(new
|
|
266
|
-
new Q(),
|
|
267
|
-
new Z(),
|
|
268
|
-
new ee(),
|
|
269
|
-
// new FilmTool(),
|
|
274
|
+
r.registerService(t, "CanvasService"), r.registerService(new ee(), B), [
|
|
270
275
|
new te(),
|
|
271
|
-
// new MirrorTool(),
|
|
272
276
|
new ne(),
|
|
273
277
|
new re(),
|
|
274
|
-
new
|
|
275
|
-
|
|
276
|
-
|
|
278
|
+
// new FilmTool(),
|
|
279
|
+
new ae(),
|
|
280
|
+
// new MirrorTool(),
|
|
281
|
+
new oe(),
|
|
282
|
+
new ie(),
|
|
283
|
+
new ce()
|
|
284
|
+
].forEach((o) => {
|
|
285
|
+
r.extensionManager.register(o);
|
|
277
286
|
});
|
|
278
|
-
},
|
|
287
|
+
}, j = (e, t) => {
|
|
279
288
|
const n = r.getService("CanvasService");
|
|
280
289
|
n && n.resize(e, t);
|
|
281
290
|
};
|
|
282
291
|
return O(() => {
|
|
283
|
-
|
|
284
|
-
}), (e, t) => (
|
|
285
|
-
|
|
286
|
-
onCanvasReady:
|
|
287
|
-
onResize:
|
|
292
|
+
r.eventBus.off("image:state:change", p), r.extensionManager.destroy(), r.unregisterService(B), r.unregisterService("CanvasService");
|
|
293
|
+
}), (e, t) => (N(), P("div", me, [
|
|
294
|
+
K(de, {
|
|
295
|
+
onCanvasReady: V,
|
|
296
|
+
onResize: j
|
|
288
297
|
})
|
|
289
298
|
]));
|
|
290
299
|
}
|
|
291
|
-
}),
|
|
300
|
+
}), ye = /* @__PURE__ */ k(ue, [["__scopeId", "data-v-0f508bf4"]]);
|
|
292
301
|
export {
|
|
293
|
-
|
|
302
|
+
ye as PooderEditor
|
|
294
303
|
};
|
package/dist/index.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(u,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("vue"),require("@pooder/core"),require("@pooder/kit")):typeof define=="function"&&define.amd?define(["exports","vue","@pooder/core","@pooder/kit"],c):(u=typeof globalThis<"u"?globalThis:u||self,c(u.PooderVue={},u.Vue,u.PooderCore,u.PooderKit))})(this,(function(u,c,C,l){"use strict";const R=c.defineComponent({__name:"CanvasArea",emits:["canvas-ready","resize"],setup(d,{emit:p}){const f=p,o=c.ref(null),r=c.ref(null);let s=null;return c.onMounted(()=>{if(o.value&&r.value){const{clientWidth:h,clientHeight:y}=o.value;r.value.width=h,r.value.height=y,f("canvas-ready",r.value),s=new ResizeObserver(w=>{for(const x of w){const{width:S,height:b}=x.contentRect;f("resize",S,b)}}),s.observe(o.value)}}),c.onUnmounted(()=>{s&&s.disconnect()}),(h,y)=>(c.openBlock(),c.createElementBlock("div",{ref_key:"container",ref:o,class:"pooder-canvas-area"},[c.createElementVNode("canvas",{ref_key:"canvas",ref:r},null,512)],512))}}),I=(d,p)=>{const f=d.__vccOpts||d;for(const[o,r]of p)f[o]=r;return f},U=I(R,[["__scopeId","data-v-203ff8d9"]]),j={class:"pooder-editor"},O="SceneLayoutService",z=I(c.defineComponent({__name:"PooderEditor",emits:["image-state-change"],setup(d,{expose:p,emit:f}){const o=new C.Pooder;c.provide("pooder",o);const r=o.getService("CommandService"),s=o.getService("ConfigurationService"),h=o.getService("WorkbenchService"),y=f,w=e=>{y("image-state-change",e)};o.eventBus.on("image:state:change",w);const x=e=>{s.import(e)},S=()=>s.export(),b=async e=>{try{const t=await r.executeCommand("exportCutImage",e);return t||console.warn("[PooderEditor] generateCutImage returned null",{options:e,imageCount:(s.get("image.items")||[]).length,hasCanvasService:!!o.getService("CanvasService")}),t}catch(t){throw console.error("[PooderEditor] generateCutImage failed",t),t}},T=async(e,t)=>await r.executeCommand("upsertImage",e,{id:t?.id,mode:t?.mode,addOptions:t?.addOptions,operation:t?.operation}),B=async(e,t)=>(await T(e,{mode:"add",addOptions:t})).id,M=async(e,t,n)=>await r.executeCommand("applyImageOperation",e,t,n),W=async()=>await r.executeCommand("getImageViewState"),L=async(e,t,n)=>await r.executeCommand("setImageTransform",e,t,n),V=e=>(o.eventBus.on("image:state:change",e),()=>o.eventBus.off("image:state:change",e)),Y=async(e,t)=>await r.executeCommand("updateImage",e,t),A=async()=>await r.executeCommand("clearImages"),_=async e=>await r.executeCommand("exportUserCroppedImage",e),H=async(e,t)=>await r.executeCommand("focusImage",e,t),D=(e,t)=>{s.update("dieline.shape","custom"),s.update("dieline.pathData",e.pathData);const n=Number(e.imageWidth??t?.width??0),a=Number(e.imageHeight??t?.height??0);s.update("dieline.customSourceWidthPx",Number.isFinite(n)&&n>0?n:void 0),s.update("dieline.customSourceHeightPx",Number.isFinite(a)&&a>0?a:void 0),s.update("size.cutMode","trim"),s.update("size.cutMarginMm",0)},P=e=>!!e&&Number.isFinite(e.x)&&Number.isFinite(e.y)&&Number.isFinite(e.width)&&Number.isFinite(e.height)&&e.width>0&&e.height>0,F=(e,t)=>{const n=e.rawBounds||e.baseBounds||null;if(!n)return{sourceWidth:t.width,sourceHeight:t.height,detectedBounds:null,centerOffsetX:0,centerOffsetY:0,coverageX:0,coverageY:0};const a=t.width/2,i=t.height/2,m=n.x+n.width/2,g=n.y+n.height/2;return{sourceWidth:t.width,sourceHeight:t.height,detectedBounds:n,centerOffsetX:m-a,centerOffsetY:g-i,coverageX:t.width>0?n.width/t.width:0,coverageY:t.height>0?n.height/t.height:0}},X=e=>{if(!P(e.rawBounds)||!P(e.baseBounds))return null;const t=e.rawBounds,n=e.baseBounds;return{left:n.x-t.x,top:n.y-t.y,right:t.x+t.width-(n.x+n.width),bottom:t.y+t.height-(n.y+n.height)}},q=(e,t,n)=>{const a=F(e,t),i=X(e),m=i?{left:i.left-n,top:i.top-n,right:i.right-n,bottom:i.bottom-n}:null,g=i?{x:i.right-i.left,y:i.bottom-i.top}:null;return{frame:a,margin:i,expectedExpand:n,marginDeltaFromExpected:m,marginAsymmetry:g}},k=async(e,t,n)=>{if(!e.length)return null;const a=await _({multiplier:n?.multiplier??2,format:n?.format??"png",imageIds:e}),i=a?.url;if(!i)return null;try{const m=await r.executeCommand("detectEdge",i,{expand:n?.detect?.expand??0,smoothing:n?.detect?.smoothing??!0,simplifyTolerance:n?.detect?.simplifyTolerance??2,threshold:n?.detect?.threshold,debug:!1});return m?q(m,a,t):null}finally{URL.revokeObjectURL(i)}};p({importConfig:x,exportConfig:S,generateCutImage:b,addImage:B,upsertImage:T,getImageState:W,onImageStateChange:V,applyImageOperation:M,setImageTransform:L,updateImage:Y,clearImages:A,exportUserCroppedImage:_,focusImage:H,detectDieline:async e=>{const t=await r.executeCommand("detectEdge",e,{expand:10,smoothing:!0,simplifyTolerance:2});return t?(D(t),t.pathData):null},detectDielineFromFrame:async(e={})=>{const t=e?.detect?.debug===!0,n=e?.inspect?.includeCroppedImage===!0,a=e?.inspect?.includeDiagnostics===!0,i=Math.max(0,Number(e?.detect?.expand??0)),m=await _({multiplier:e?.export?.multiplier??2,format:e?.export?.format??"png",imageIds:e?.export?.imageIds}),g=m?.url;if(!g)return console.warn("[PooderEditor] detectDielineFromFrame no source image"),null;try{const v=await r.executeCommand("detectEdge",g,{expand:e?.detect?.expand??0,smoothing:e?.detect?.smoothing??!0,simplifyTolerance:e?.detect?.simplifyTolerance??2,threshold:e?.detect?.threshold,debug:t});if(!v)return console.warn("[PooderEditor] detectDielineFromFrame detectEdge returned null"),null;const N=F(v,m);if(e?.commit===!1)return{...v,...n?{sourceImage:m}:{},...a?{diagnostics:N}:{}};D(v,m);const G={multiplier:e?.export?.multiplier??2,format:e?.export?.format??"png",detect:{expand:e?.detect?.expand??0,smoothing:e?.detect?.smoothing??!0,simplifyTolerance:e?.detect?.simplifyTolerance??2,threshold:e?.detect?.threshold}};let E=await k(m.imageIds,i,G);return E?console.info("[PooderEditor] detectDielineFromFrame post-commit diagnostics",E):m.imageIds.length>0&&console.warn("[PooderEditor] detectDielineFromFrame post-commit detectEdge returned null"),{...v,...n?{sourceImage:m}:{},...a?{diagnostics:N,postCommitDiagnostics:E}:{}}}finally{g&&!n&&URL.revokeObjectURL(g)}},uploadAndDetectEdge:async(e,t)=>{const n=await B(e),a=await r.executeCommand("detectEdge",e,{expand:t?.expand??10,smoothing:t?.smoothing??!0,simplifyTolerance:t?.simplifyTolerance??2});return a?(D(a),{imageId:n,url:e,pathData:a.pathData}):null},activateTool:async e=>await h.switchTool(e),deactivateTool:async()=>await h.deactivate(),on:(e,t)=>o.eventBus.on(e,t),off:(e,t)=>o.eventBus.off(e,t),emit:(e,t)=>o.eventBus.emit(e,t),executeCommand:(e,...t)=>r.executeCommand(e,...t),getConfig:e=>s.get(e),updateConfig:(e,t)=>s.update(e,t),services:{workbench:h,command:r,config:s}});const K=e=>{const t=new l.CanvasService(e,{eventBus:o.eventBus});o.registerService(t,"CanvasService"),o.registerService(new l.SceneLayoutService,O),[new l.BackgroundTool,new l.SizeTool,new l.ImageTool,new l.WhiteInkTool,new l.DielineTool,new l.RulerTool,new l.FeatureTool].forEach(a=>{o.extensionManager.register(a)})},$=(e,t)=>{const n=o.getService("CanvasService");n&&n.resize(e,t)};return c.onUnmounted(()=>{o.eventBus.off("image:state:change",w),o.extensionManager.destroy(),o.unregisterService(O),o.unregisterService("CanvasService")}),(e,t)=>(c.openBlock(),c.createElementBlock("div",j,[c.createVNode(U,{onCanvasReady:K,onResize:$})]))}}),[["__scopeId","data-v-0f508bf4"]]);u.PooderEditor=z,Object.keys(C).forEach(d=>{d!=="default"&&!Object.prototype.hasOwnProperty.call(u,d)&&Object.defineProperty(u,d,{enumerable:!0,get:()=>C[d]})}),Object.keys(l).forEach(d=>{d!=="default"&&!Object.prototype.hasOwnProperty.call(u,d)&&Object.defineProperty(u,d,{enumerable:!0,get:()=>l[d]})}),Object.defineProperty(u,Symbol.toStringTag,{value:"Module"})}));
|
|
@@ -1,112 +1,34 @@
|
|
|
1
1
|
import { CommandService, ConfigurationService, WorkbenchService } from '../../core/src/index.ts';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
y: number;
|
|
5
|
-
width: number;
|
|
6
|
-
height: number;
|
|
7
|
-
}
|
|
8
|
-
interface DetectFrameDiagnostics {
|
|
9
|
-
sourceWidth: number;
|
|
10
|
-
sourceHeight: number;
|
|
11
|
-
detectedBounds: DetectBounds | null;
|
|
12
|
-
centerOffsetX: number;
|
|
13
|
-
centerOffsetY: number;
|
|
14
|
-
coverageX: number;
|
|
15
|
-
coverageY: number;
|
|
16
|
-
}
|
|
17
|
-
interface DetectMarginDiagnostics {
|
|
18
|
-
left: number;
|
|
19
|
-
top: number;
|
|
20
|
-
right: number;
|
|
21
|
-
bottom: number;
|
|
22
|
-
}
|
|
23
|
-
interface DetectPostCommitDiagnostics {
|
|
24
|
-
frame: DetectFrameDiagnostics;
|
|
25
|
-
margin: DetectMarginDiagnostics | null;
|
|
26
|
-
expectedExpand: number;
|
|
27
|
-
marginDeltaFromExpected: DetectMarginDiagnostics | null;
|
|
28
|
-
marginAsymmetry: {
|
|
29
|
-
x: number;
|
|
30
|
-
y: number;
|
|
31
|
-
} | null;
|
|
32
|
-
}
|
|
33
|
-
interface ExportUserCroppedImageResult {
|
|
34
|
-
url: string;
|
|
35
|
-
width: number;
|
|
36
|
-
height: number;
|
|
37
|
-
multiplier: number;
|
|
38
|
-
format: "png" | "jpeg";
|
|
39
|
-
imageIds: string[];
|
|
40
|
-
}
|
|
2
|
+
import { ImageOperation, ImageTransformUpdates, ImageViewState } from '../../kit/src/index.ts';
|
|
3
|
+
import { PooderDetectDielineFromFrameOptions, PooderDetectDielineFromFrameResult, PooderEditorImageStateChangeHandler, PooderExportUserCroppedImageOptions, PooderExportUserCroppedImageResult as ExportUserCroppedImageResult, PooderFocusImageOptions, PooderGenerateCutImageOptions, PooderImageTarget, PooderUpsertImageOptions, PooderUploadAndDetectEdgeOptions, PooderUploadAndDetectEdgeResult } from './model';
|
|
41
4
|
declare const _default: import('vue').DefineComponent<{}, {
|
|
42
5
|
importConfig: (config: Record<string, any>) => void;
|
|
43
6
|
exportConfig: () => Record<string, any>;
|
|
44
|
-
|
|
45
|
-
generateCutImage: (options?: {
|
|
46
|
-
debug?: boolean;
|
|
47
|
-
}) => Promise<string | null>;
|
|
7
|
+
generateCutImage: (options?: PooderGenerateCutImageOptions) => Promise<string | null>;
|
|
48
8
|
addImage: (url: string, options?: any) => Promise<any>;
|
|
49
|
-
upsertImage: (url: string, options?:
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
9
|
+
upsertImage: (url: string, options?: PooderUpsertImageOptions) => Promise<any>;
|
|
10
|
+
getImageState: () => Promise<ImageViewState>;
|
|
11
|
+
onImageStateChange: (handler: PooderEditorImageStateChangeHandler) => () => void;
|
|
12
|
+
applyImageOperation: (id: string, operation: ImageOperation, options?: {
|
|
13
|
+
target?: PooderImageTarget;
|
|
14
|
+
}) => Promise<any>;
|
|
15
|
+
setImageTransform: (id: string, updates: ImageTransformUpdates, options?: {
|
|
16
|
+
target?: PooderImageTarget;
|
|
54
17
|
}) => Promise<any>;
|
|
55
18
|
updateImage: (id: string, options?: any) => Promise<any>;
|
|
56
19
|
clearImages: () => Promise<any>;
|
|
57
|
-
exportUserCroppedImage: (options?:
|
|
58
|
-
|
|
59
|
-
format?: "png" | "jpeg";
|
|
60
|
-
imageIds?: string[];
|
|
61
|
-
}) => Promise<ExportUserCroppedImageResult>;
|
|
62
|
-
focusImage: (id: string | null, options?: {
|
|
63
|
-
syncCanvasSelection?: boolean;
|
|
64
|
-
}) => Promise<any>;
|
|
20
|
+
exportUserCroppedImage: (options?: PooderExportUserCroppedImageOptions) => Promise<ExportUserCroppedImageResult>;
|
|
21
|
+
focusImage: (id: string | null, options?: PooderFocusImageOptions) => Promise<any>;
|
|
65
22
|
detectDieline: (url: string) => Promise<string | null>;
|
|
66
|
-
detectDielineFromFrame: (options?:
|
|
67
|
-
|
|
68
|
-
expand?: number;
|
|
69
|
-
smoothing?: boolean;
|
|
70
|
-
simplifyTolerance?: number;
|
|
71
|
-
threshold?: number;
|
|
72
|
-
debug?: boolean;
|
|
73
|
-
};
|
|
74
|
-
export?: {
|
|
75
|
-
multiplier?: number;
|
|
76
|
-
format?: "png" | "jpeg";
|
|
77
|
-
imageIds?: string[];
|
|
78
|
-
};
|
|
79
|
-
inspect?: {
|
|
80
|
-
includeCroppedImage?: boolean;
|
|
81
|
-
includeDiagnostics?: boolean;
|
|
82
|
-
};
|
|
83
|
-
commit?: boolean;
|
|
84
|
-
}) => Promise<{
|
|
85
|
-
diagnostics?: DetectFrameDiagnostics | undefined;
|
|
86
|
-
postCommitDiagnostics?: DetectPostCommitDiagnostics | null | undefined;
|
|
87
|
-
sourceImage?: ExportUserCroppedImageResult | undefined;
|
|
88
|
-
pathData: string;
|
|
89
|
-
rawBounds?: DetectBounds;
|
|
90
|
-
baseBounds?: DetectBounds;
|
|
91
|
-
imageWidth?: number;
|
|
92
|
-
imageHeight?: number;
|
|
93
|
-
} | null>;
|
|
94
|
-
uploadAndDetectEdge: (url: string, options?: {
|
|
95
|
-
expand?: number;
|
|
96
|
-
smoothing?: boolean;
|
|
97
|
-
simplifyTolerance?: number;
|
|
98
|
-
}) => Promise<{
|
|
99
|
-
imageId: any;
|
|
100
|
-
url: string;
|
|
101
|
-
pathData: string;
|
|
102
|
-
} | null>;
|
|
23
|
+
detectDielineFromFrame: (options?: PooderDetectDielineFromFrameOptions) => Promise<PooderDetectDielineFromFrameResult | null>;
|
|
24
|
+
uploadAndDetectEdge: (url: string, options?: PooderUploadAndDetectEdgeOptions) => Promise<PooderUploadAndDetectEdgeResult | null>;
|
|
103
25
|
activateTool: (id: string | null) => Promise<import('../../core/src/services/WorkbenchService').ToolSwitchResult>;
|
|
104
26
|
deactivateTool: () => Promise<import('../../core/src/services/WorkbenchService').ToolSwitchResult>;
|
|
105
27
|
on: (event: string, handler: any) => void;
|
|
106
28
|
off: (event: string, handler: any) => void;
|
|
107
29
|
emit: (event: string, data: any) => void;
|
|
108
|
-
executeCommand: (id: string, ...args: any[]) => Promise<
|
|
109
|
-
getConfig: (key: string) =>
|
|
30
|
+
executeCommand: <T = unknown>(id: string, ...args: any[]) => Promise<T>;
|
|
31
|
+
getConfig: <T = unknown>(key: string) => T;
|
|
110
32
|
updateConfig: (key: string, val: any) => void;
|
|
111
33
|
services: {
|
|
112
34
|
workbench: WorkbenchService;
|
|
@@ -114,8 +36,8 @@ declare const _default: import('vue').DefineComponent<{}, {
|
|
|
114
36
|
config: ConfigurationService;
|
|
115
37
|
};
|
|
116
38
|
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
|
|
117
|
-
"image-change": (
|
|
39
|
+
"image-state-change": (state: ImageViewState) => any;
|
|
118
40
|
}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{
|
|
119
|
-
"onImage-change"?: ((
|
|
41
|
+
"onImage-state-change"?: ((state: ImageViewState) => any) | undefined;
|
|
120
42
|
}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
|
|
121
43
|
export default _default;
|
package/dist/vue/src/index.d.ts
CHANGED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { CommandService, ConfigurationService, WorkbenchService } from '../../core/src/index.ts';
|
|
2
|
+
import { ImageOperation, ImageTransformUpdates, ImageViewState } from '../../kit/src/index.ts';
|
|
3
|
+
export type PooderImageTarget = "auto" | "config" | "working";
|
|
4
|
+
export type PooderEditorEventHandler = (data: any) => void;
|
|
5
|
+
export type PooderEditorImageStateChangeHandler = (state: ImageViewState) => void;
|
|
6
|
+
export interface PooderGenerateCutImageOptions {
|
|
7
|
+
debug?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface PooderUpsertImageOptions {
|
|
10
|
+
id?: string;
|
|
11
|
+
mode?: "replace" | "add";
|
|
12
|
+
addOptions?: any;
|
|
13
|
+
operation?: ImageOperation;
|
|
14
|
+
}
|
|
15
|
+
export interface PooderExportUserCroppedImageOptions {
|
|
16
|
+
multiplier?: number;
|
|
17
|
+
format?: "png" | "jpeg";
|
|
18
|
+
imageIds?: string[];
|
|
19
|
+
}
|
|
20
|
+
export interface PooderExportUserCroppedImageResult {
|
|
21
|
+
url: string;
|
|
22
|
+
width: number;
|
|
23
|
+
height: number;
|
|
24
|
+
multiplier: number;
|
|
25
|
+
format: "png" | "jpeg";
|
|
26
|
+
imageIds: string[];
|
|
27
|
+
}
|
|
28
|
+
export interface PooderDetectBounds {
|
|
29
|
+
x: number;
|
|
30
|
+
y: number;
|
|
31
|
+
width: number;
|
|
32
|
+
height: number;
|
|
33
|
+
}
|
|
34
|
+
export interface PooderDetectEdgeResult {
|
|
35
|
+
pathData: string;
|
|
36
|
+
rawBounds?: PooderDetectBounds;
|
|
37
|
+
baseBounds?: PooderDetectBounds;
|
|
38
|
+
imageWidth?: number;
|
|
39
|
+
imageHeight?: number;
|
|
40
|
+
}
|
|
41
|
+
export interface PooderDetectFrameDiagnostics {
|
|
42
|
+
sourceWidth: number;
|
|
43
|
+
sourceHeight: number;
|
|
44
|
+
detectedBounds: PooderDetectBounds | null;
|
|
45
|
+
centerOffsetX: number;
|
|
46
|
+
centerOffsetY: number;
|
|
47
|
+
coverageX: number;
|
|
48
|
+
coverageY: number;
|
|
49
|
+
}
|
|
50
|
+
export interface PooderDetectMarginDiagnostics {
|
|
51
|
+
left: number;
|
|
52
|
+
top: number;
|
|
53
|
+
right: number;
|
|
54
|
+
bottom: number;
|
|
55
|
+
}
|
|
56
|
+
export interface PooderDetectPostCommitDiagnostics {
|
|
57
|
+
frame: PooderDetectFrameDiagnostics;
|
|
58
|
+
margin: PooderDetectMarginDiagnostics | null;
|
|
59
|
+
expectedExpand: number;
|
|
60
|
+
marginDeltaFromExpected: PooderDetectMarginDiagnostics | null;
|
|
61
|
+
marginAsymmetry: {
|
|
62
|
+
x: number;
|
|
63
|
+
y: number;
|
|
64
|
+
} | null;
|
|
65
|
+
}
|
|
66
|
+
export interface PooderDetectDielineOptions {
|
|
67
|
+
expand?: number;
|
|
68
|
+
smoothing?: boolean;
|
|
69
|
+
simplifyTolerance?: number;
|
|
70
|
+
threshold?: number;
|
|
71
|
+
debug?: boolean;
|
|
72
|
+
}
|
|
73
|
+
export interface PooderDetectDielineFromFrameOptions {
|
|
74
|
+
detect?: PooderDetectDielineOptions;
|
|
75
|
+
export?: PooderExportUserCroppedImageOptions;
|
|
76
|
+
inspect?: {
|
|
77
|
+
includeCroppedImage?: boolean;
|
|
78
|
+
includeDiagnostics?: boolean;
|
|
79
|
+
};
|
|
80
|
+
commit?: boolean;
|
|
81
|
+
}
|
|
82
|
+
export interface PooderDetectDielineFromFrameResult extends PooderDetectEdgeResult {
|
|
83
|
+
sourceImage?: PooderExportUserCroppedImageResult;
|
|
84
|
+
diagnostics?: PooderDetectFrameDiagnostics;
|
|
85
|
+
postCommitDiagnostics?: PooderDetectPostCommitDiagnostics | null;
|
|
86
|
+
}
|
|
87
|
+
export interface PooderUploadAndDetectEdgeOptions {
|
|
88
|
+
expand?: number;
|
|
89
|
+
smoothing?: boolean;
|
|
90
|
+
simplifyTolerance?: number;
|
|
91
|
+
}
|
|
92
|
+
export interface PooderUploadAndDetectEdgeResult {
|
|
93
|
+
imageId: string;
|
|
94
|
+
url: string;
|
|
95
|
+
pathData: string;
|
|
96
|
+
}
|
|
97
|
+
export interface PooderFocusImageOptions {
|
|
98
|
+
syncCanvasSelection?: boolean;
|
|
99
|
+
}
|
|
100
|
+
export interface PooderEditorServices {
|
|
101
|
+
workbench: WorkbenchService;
|
|
102
|
+
command: CommandService;
|
|
103
|
+
config: ConfigurationService;
|
|
104
|
+
}
|
|
105
|
+
export interface PooderToolSwitchResult {
|
|
106
|
+
ok: boolean;
|
|
107
|
+
from: string | null;
|
|
108
|
+
to: string | null;
|
|
109
|
+
reason?: string;
|
|
110
|
+
}
|
|
111
|
+
export interface PooderEditorExposed {
|
|
112
|
+
importConfig(config: Record<string, any>): void;
|
|
113
|
+
exportConfig(): Record<string, any>;
|
|
114
|
+
generateCutImage(options?: PooderGenerateCutImageOptions): Promise<string | null>;
|
|
115
|
+
addImage(url: string, options?: any): Promise<string>;
|
|
116
|
+
upsertImage(url: string, options?: PooderUpsertImageOptions): Promise<{
|
|
117
|
+
id: string;
|
|
118
|
+
mode: "replace" | "add";
|
|
119
|
+
}>;
|
|
120
|
+
getImageState(): Promise<ImageViewState>;
|
|
121
|
+
onImageStateChange(handler: PooderEditorImageStateChangeHandler): () => void;
|
|
122
|
+
applyImageOperation(id: string, operation: ImageOperation, options?: {
|
|
123
|
+
target?: PooderImageTarget;
|
|
124
|
+
}): Promise<void>;
|
|
125
|
+
setImageTransform(id: string, updates: ImageTransformUpdates, options?: {
|
|
126
|
+
target?: PooderImageTarget;
|
|
127
|
+
}): Promise<void>;
|
|
128
|
+
updateImage(id: string, options?: any): Promise<void>;
|
|
129
|
+
clearImages(): Promise<void>;
|
|
130
|
+
exportUserCroppedImage(options?: PooderExportUserCroppedImageOptions): Promise<PooderExportUserCroppedImageResult>;
|
|
131
|
+
focusImage(id: string | null, options?: PooderFocusImageOptions): Promise<any>;
|
|
132
|
+
detectDieline(url: string): Promise<string | null>;
|
|
133
|
+
detectDielineFromFrame(options?: PooderDetectDielineFromFrameOptions): Promise<PooderDetectDielineFromFrameResult | null>;
|
|
134
|
+
uploadAndDetectEdge(url: string, options?: PooderUploadAndDetectEdgeOptions): Promise<PooderUploadAndDetectEdgeResult | null>;
|
|
135
|
+
activateTool(id: string | null): Promise<PooderToolSwitchResult>;
|
|
136
|
+
deactivateTool(): Promise<PooderToolSwitchResult>;
|
|
137
|
+
on(event: string, handler: PooderEditorEventHandler): void;
|
|
138
|
+
off(event: string, handler: PooderEditorEventHandler): void;
|
|
139
|
+
emit(event: string, data: any): void;
|
|
140
|
+
executeCommand<T = unknown>(id: string, ...args: any[]): Promise<T>;
|
|
141
|
+
getConfig<T = unknown>(key: string): T;
|
|
142
|
+
updateConfig(key: string, val: any): void;
|
|
143
|
+
services: PooderEditorServices;
|
|
144
|
+
}
|
|
145
|
+
export type PooderEditorImageApi = Pick<PooderEditorExposed, "addImage" | "upsertImage" | "getImageState" | "onImageStateChange" | "applyImageOperation" | "setImageTransform" | "updateImage" | "clearImages" | "focusImage">;
|
package/dist/vue.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.pooder-canvas-area[data-v-203ff8d9]{flex:1;width:100%;height:100%;min-height:650px;min-width:650px;overflow:hidden;background:#ececec;position:relative}canvas[data-v-203ff8d9]{display:block}.pooder-editor[data-v-
|
|
1
|
+
.pooder-canvas-area[data-v-203ff8d9]{flex:1;width:100%;height:100%;min-height:650px;min-width:650px;overflow:hidden;background:#ececec;position:relative}canvas[data-v-203ff8d9]{display:block}.pooder-editor[data-v-0f508bf4]{display:flex;width:100%;height:100%;overflow:hidden}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pooder/vue",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.5.0",
|
|
4
4
|
"main": "./dist/index.umd.js",
|
|
5
5
|
"module": "./dist/index.es.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
"access": "public"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@pooder/
|
|
23
|
-
"@pooder/
|
|
22
|
+
"@pooder/kit": "6.3.0",
|
|
23
|
+
"@pooder/core": "2.2.1"
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|
|
26
26
|
"vue": "^3.0.0"
|