@snowcone-app/canvas 0.29.0 → 0.31.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/ERROR_CONTRACT.md +13 -0
- package/STYLING_CONTRACT.md +2 -2
- package/dist/{CanvasRenderer-_lFoIoz5.js → CanvasRenderer-hpJ05JGO.js} +4 -4
- package/dist/{CanvasRenderer-_lFoIoz5.js.map → CanvasRenderer-hpJ05JGO.js.map} +1 -1
- package/dist/{CanvasStateV1-BMxr6xb8.js → CanvasStateV1-jLOibojY.js} +876 -844
- package/dist/{CanvasStateV1-BMxr6xb8.js.map → CanvasStateV1-jLOibojY.js.map} +1 -1
- package/dist/ContextualToolbars-DRbuUE7W.js +6061 -0
- package/dist/ContextualToolbars-DRbuUE7W.js.map +1 -0
- package/dist/{EditorCanvasImpl-BNz8TPFs.js → EditorCanvasImpl-P2GHPNA3.js} +19 -20
- package/dist/{EditorCanvasImpl-BNz8TPFs.js.map → EditorCanvasImpl-P2GHPNA3.js.map} +1 -1
- package/dist/{ExportManager-B8Td7uR5.js → ExportManager-Bkzzyxgw.js} +973 -576
- package/dist/ExportManager-Bkzzyxgw.js.map +1 -0
- package/dist/{FontAnalyzer-D4Sg-P6_.js → FontAnalyzer-BYhwxDhe.js} +542 -477
- package/dist/FontAnalyzer-BYhwxDhe.js.map +1 -0
- package/dist/{ImagePanel-CN2Bu3hf.js → ImagePanel-CEr0_FYy.js} +38 -38
- package/dist/{ImagePanel-CN2Bu3hf.js.map → ImagePanel-CEr0_FYy.js.map} +1 -1
- package/dist/SnowconeCanvas-Fa0isFpO.js +1192 -0
- package/dist/SnowconeCanvas-Fa0isFpO.js.map +1 -0
- package/dist/advanced.mjs +14 -14
- package/dist/api/embed.d.ts +2 -0
- package/dist/api/stable.d.ts +2 -0
- package/dist/components/CanvasContextMenu.d.ts +15 -0
- package/dist/components/CanvasEditor/hooks/useCanvasInteraction.d.ts +27 -0
- package/dist/components/CanvasEditor.d.ts +8 -0
- package/dist/components/ImageToolbar.d.ts +4 -0
- package/dist/components/embed/SnowconeCanvas.d.ts +13 -0
- package/dist/components/embed/kernel.d.ts +8 -0
- package/dist/components/toolbars/EmbeddedToolbarLayout.d.ts +2 -0
- package/dist/components/toolbars/SecondaryPanels.d.ts +17 -1
- package/dist/components/toolbars/index.d.ts +2 -2
- package/dist/components/ui/SliderRow.d.ts +6 -0
- package/dist/components/ui/icons.d.ts +2 -0
- package/dist/components/ui/toolbar-button.d.ts +2 -2
- package/dist/contexts/CanvasServicesContext.d.ts +17 -0
- package/dist/contexts/EditorContext.d.ts +7 -0
- package/dist/core/image-adjustments.d.ts +32 -0
- package/dist/{custom-icons-B5TRC1Ed.js → custom-icons-Co4rcW0S.js} +7 -7
- package/dist/{custom-icons-B5TRC1Ed.js.map → custom-icons-Co4rcW0S.js.map} +1 -1
- package/dist/design-builder-CBG2hKc8.js +1672 -0
- package/dist/design-builder-CBG2hKc8.js.map +1 -0
- package/dist/{embed-BTRtoktw.js → embed-D4TIzO7g.js} +20 -20
- package/dist/{embed-BTRtoktw.js.map → embed-D4TIzO7g.js.map} +1 -1
- package/dist/embed.mjs +51 -46
- package/dist/embed.mjs.map +1 -1
- package/dist/errors/editorError.d.ts +8 -0
- package/dist/{guards-uQtEQJbs.js → guards-DgZuwVgu.js} +2 -2
- package/dist/{guards-uQtEQJbs.js.map → guards-DgZuwVgu.js.map} +1 -1
- package/dist/hooks/elementPatch.d.ts +7 -2
- package/dist/hooks/useKeyboardShortcuts.d.ts +15 -2
- package/dist/hooks/useLayers.d.ts +2 -0
- package/dist/index.mjs +57 -52
- package/dist/index.mjs.map +1 -1
- package/dist/internals.mjs +201 -132
- package/dist/internals.mjs.map +1 -1
- package/dist/rendering/element-painters.d.ts +0 -13
- package/dist/rendering/element-serializer.d.ts +3 -1
- package/dist/rendering/image-adjustments.d.ts +24 -0
- package/dist/rendering/renderer-types.d.ts +8 -1
- package/dist/state/CanvasStateV1.d.ts +36 -3
- package/dist/state/index.d.ts +2 -2
- package/dist/template-fields-CvFcr5zy.js +505 -0
- package/dist/template-fields-CvFcr5zy.js.map +1 -0
- package/dist/testing.mjs +46 -47
- package/dist/testing.mjs.map +1 -1
- package/dist/types/index.d.ts +21 -0
- package/dist/{UnifiedFontService-CgYnYTj7.js → useCommands-bPXY9rCh.js} +2429 -2145
- package/dist/useCommands-bPXY9rCh.js.map +1 -0
- package/dist/{usePieceGuideBundle-CTQszfKA.js → usePieceGuideBundle-Bj98nPk0.js} +2 -2
- package/dist/{usePieceGuideBundle-CTQszfKA.js.map → usePieceGuideBundle-Bj98nPk0.js.map} +1 -1
- package/dist/utils/custom-fonts.d.ts +99 -0
- package/dist/utils/featureApplied.d.ts +2 -0
- package/dist/validation-CsTlSvJJ.js +8686 -0
- package/dist/validation-CsTlSvJJ.js.map +1 -0
- package/dist/workers/export-protocol.d.ts +13 -0
- package/dist/workers/export-worker.bundle.string.d.ts +1 -1
- package/example/package.json +1 -1
- package/package.json +1 -1
- package/dist/ContextualToolbars-0jWvnQgp.js +0 -5833
- package/dist/ContextualToolbars-0jWvnQgp.js.map +0 -1
- package/dist/ExportManager-B8Td7uR5.js.map +0 -1
- package/dist/FontAnalyzer-D4Sg-P6_.js.map +0 -1
- package/dist/SnowconeCanvas-CR_LdRFP.js +0 -1173
- package/dist/SnowconeCanvas-CR_LdRFP.js.map +0 -1
- package/dist/UnifiedFontService-CgYnYTj7.js.map +0 -1
- package/dist/design-builder-COj0zkxu.js +0 -470
- package/dist/design-builder-COj0zkxu.js.map +0 -1
- package/dist/editorErrors-CCvoKj_P.js +0 -1219
- package/dist/editorErrors-CCvoKj_P.js.map +0 -1
- package/dist/template-fields-BLRp84Ny.js +0 -716
- package/dist/template-fields-BLRp84Ny.js.map +0 -1
- package/dist/validation-eCebhplp.js +0 -8402
- package/dist/validation-eCebhplp.js.map +0 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { jsx as e, jsxs as c, Fragment as K } from "react/jsx-runtime";
|
|
2
|
-
import * as
|
|
3
|
-
import Be, { useMemo as
|
|
4
|
-
import { u as Ke,
|
|
5
|
-
import {
|
|
6
|
-
import { c as ns, I as os } from "./FontAnalyzer-
|
|
7
|
-
import { T as k, S as Te, a as xe, I as ye, L as be } from "./custom-icons-
|
|
8
|
-
import { a as ls } from "./guards-
|
|
9
|
-
const De =
|
|
2
|
+
import * as Ze from "react";
|
|
3
|
+
import Be, { useMemo as Je, useState as r, useRef as U, useEffect as J, useCallback as ae } from "react";
|
|
4
|
+
import { u as Ke, g as Oe } from "./design-builder-CBG2hKc8.js";
|
|
5
|
+
import { o as es, N as ss, d as cs, W as ts, I as v, O as re, B as _, u as rs, C as as } from "./useCommands-bPXY9rCh.js";
|
|
6
|
+
import { c as ns, I as os } from "./FontAnalyzer-BYhwxDhe.js";
|
|
7
|
+
import { T as k, S as Te, a as xe, I as ye, L as be } from "./custom-icons-Co4rcW0S.js";
|
|
8
|
+
import { a as ls } from "./guards-DgZuwVgu.js";
|
|
9
|
+
const De = Ze.forwardRef(
|
|
10
10
|
({ className: d, isInvalid: t, disabled: N, readOnly: E, required: u, variant: n, ...x }, l) => {
|
|
11
11
|
const i = es(), m = n ?? (i.variant === "default" ? "filled" : "default");
|
|
12
12
|
return /* @__PURE__ */ e(
|
|
@@ -45,7 +45,7 @@ function us(d, t) {
|
|
|
45
45
|
const ms = "1px", Ie = "1px", Pe = Be.memo(function({ image: t, onImageSelect: N, fixedHeight: E = !1 }) {
|
|
46
46
|
const [u, n] = r(!1), [x, l] = r(!1), [i, m] = r("top"), h = U(null), C = U(null), w = U(null), V = U(!0), [S, R] = r(!1), f = U(null), Y = () => {
|
|
47
47
|
x || N(t);
|
|
48
|
-
},
|
|
48
|
+
}, W = (g) => {
|
|
49
49
|
if (!w.current) return "top";
|
|
50
50
|
const y = w.current.getBoundingClientRect(), L = g.clientX - y.left, M = g.clientY - y.top, A = y.width, se = y.height, T = {
|
|
51
51
|
top: M,
|
|
@@ -54,8 +54,8 @@ const ms = "1px", Ie = "1px", Pe = Be.memo(function({ image: t, onImageSelect: N
|
|
|
54
54
|
right: A - L
|
|
55
55
|
}, $ = Math.min(T.top, T.bottom, T.left, T.right);
|
|
56
56
|
return $ === T.top ? "top" : $ === T.bottom ? "bottom" : $ === T.left ? "left" : "right";
|
|
57
|
-
},
|
|
58
|
-
const y =
|
|
57
|
+
}, Q = (g) => {
|
|
58
|
+
const y = W(g);
|
|
59
59
|
f.current && (cancelAnimationFrame(f.current), f.current = null), y !== i ? (R(!0), m(y), f.current = requestAnimationFrame(() => {
|
|
60
60
|
f.current = requestAnimationFrame(() => {
|
|
61
61
|
R(!1), n(!0), f.current = null;
|
|
@@ -63,7 +63,7 @@ const ms = "1px", Ie = "1px", Pe = Be.memo(function({ image: t, onImageSelect: N
|
|
|
63
63
|
})) : (m(y), n(!0)), V.current = !1;
|
|
64
64
|
}, b = (g) => {
|
|
65
65
|
f.current && (cancelAnimationFrame(f.current), f.current = null);
|
|
66
|
-
const y =
|
|
66
|
+
const y = W(g);
|
|
67
67
|
m(y), R(!1), n(!1);
|
|
68
68
|
}, B = () => {
|
|
69
69
|
C.current && (clearTimeout(C.current), C.current = null), h.current = setTimeout(() => {
|
|
@@ -95,7 +95,7 @@ const ms = "1px", Ie = "1px", Pe = Be.memo(function({ image: t, onImageSelect: N
|
|
|
95
95
|
{
|
|
96
96
|
ref: w,
|
|
97
97
|
onClick: Y,
|
|
98
|
-
onMouseEnter:
|
|
98
|
+
onMouseEnter: Q,
|
|
99
99
|
onMouseLeave: b,
|
|
100
100
|
className: `sc:group sc:relative sc:cursor-pointer sc:overflow-hidden ${E ? "sc:h-full sc:rounded-xs" : "sc:break-inside-avoid sc:rounded-lg"}`,
|
|
101
101
|
children: [
|
|
@@ -260,7 +260,7 @@ const ms = "1px", Ie = "1px", Pe = Be.memo(function({ image: t, onImageSelect: N
|
|
|
260
260
|
currentImageUrl: E,
|
|
261
261
|
placement: u = "bottom"
|
|
262
262
|
}) => {
|
|
263
|
-
const { imageSearch: n, generate: x, vectors: l, removeBackground: i } = cs(), m =
|
|
263
|
+
const { imageSearch: n, generate: x, vectors: l, removeBackground: i } = cs(), m = Je(
|
|
264
264
|
() => [
|
|
265
265
|
...n ? ["search"] : [],
|
|
266
266
|
"url",
|
|
@@ -268,23 +268,23 @@ const ms = "1px", Ie = "1px", Pe = Be.memo(function({ image: t, onImageSelect: N
|
|
|
268
268
|
...x ? ["ai"] : []
|
|
269
269
|
],
|
|
270
270
|
[n, l, x]
|
|
271
|
-
), [h, C] = r(""), [w, V] = r(""), [S, R] = r([]), [f, Y] = r(!1), [
|
|
272
|
-
|
|
271
|
+
), [h, C] = r(""), [w, V] = r(""), [S, R] = r([]), [f, Y] = r(!1), [W, Q] = r(null), [b, B] = r(m[0]), [O, ee] = r(1), [D, F] = r(!0), [j, P] = r("masonry"), [g, y] = r(""), [L, M] = r([]), [A, se] = r(!1), [T, $] = r(null), [ce, ne] = r(null), [z, G] = r(!0), [o, q] = r("grid"), [X, de] = r(""), [oe, le] = r(!1), [Ee, ve] = r(null), [Z, Ne] = r(null), [ue, me] = r(!1), [fe, he] = r(null), ke = U(null), Ce = U(null), Re = U(null);
|
|
272
|
+
J(() => {
|
|
273
273
|
m.includes(b) || B(m[0]);
|
|
274
|
-
}, [m, b]),
|
|
274
|
+
}, [m, b]), J(() => {
|
|
275
275
|
d && E && (V(E), B("url"));
|
|
276
|
-
}, [d, E]),
|
|
277
|
-
d || (C(""), V(""), R([]),
|
|
276
|
+
}, [d, E]), J(() => {
|
|
277
|
+
d || (C(""), V(""), R([]), Q(null), ee(1), F(!0), y(""), M([]), $(null), ne(null), G(!0));
|
|
278
278
|
}, [d]);
|
|
279
279
|
const ge = ae(
|
|
280
280
|
async (s, a, p) => {
|
|
281
281
|
if (n) {
|
|
282
|
-
Y(!0),
|
|
282
|
+
Y(!0), Q(null);
|
|
283
283
|
try {
|
|
284
284
|
const I = await n.search({ query: s, page: a, perPage: 30 });
|
|
285
285
|
R((H) => p ? [...H, ...I.results] : I.results), ee(I.page), F(I.hasMore);
|
|
286
286
|
} catch (I) {
|
|
287
|
-
|
|
287
|
+
Q(is), ie.error("Error searching images:", I);
|
|
288
288
|
} finally {
|
|
289
289
|
Y(!1);
|
|
290
290
|
}
|
|
@@ -292,7 +292,7 @@ const ms = "1px", Ie = "1px", Pe = Be.memo(function({ image: t, onImageSelect: N
|
|
|
292
292
|
},
|
|
293
293
|
[n]
|
|
294
294
|
);
|
|
295
|
-
|
|
295
|
+
J(() => {
|
|
296
296
|
d && !h && b === "search" && S.length === 0 && n && ge("", 1, !1);
|
|
297
297
|
}, [d, b, n]);
|
|
298
298
|
const je = (s) => {
|
|
@@ -300,7 +300,7 @@ const ms = "1px", Ie = "1px", Pe = Be.memo(function({ image: t, onImageSelect: N
|
|
|
300
300
|
}, Se = ae(() => {
|
|
301
301
|
f || !D || ge(h, O + 1, !0);
|
|
302
302
|
}, [f, D, h, O, ge]);
|
|
303
|
-
|
|
303
|
+
J(() => {
|
|
304
304
|
const s = ke.current;
|
|
305
305
|
if (!s || !d || b !== "search") return;
|
|
306
306
|
const a = new IntersectionObserver(
|
|
@@ -338,7 +338,7 @@ const ms = "1px", Ie = "1px", Pe = Be.memo(function({ image: t, onImageSelect: N
|
|
|
338
338
|
},
|
|
339
339
|
[l]
|
|
340
340
|
);
|
|
341
|
-
|
|
341
|
+
J(() => {
|
|
342
342
|
d && !g && b === "vector" && L.length === 0 && l && pe("");
|
|
343
343
|
}, [d, b, l]);
|
|
344
344
|
const Ge = (s) => {
|
|
@@ -346,7 +346,7 @@ const ms = "1px", Ie = "1px", Pe = Be.memo(function({ image: t, onImageSelect: N
|
|
|
346
346
|
}, Le = ae(() => {
|
|
347
347
|
A || !z || !ce || pe(g, ce);
|
|
348
348
|
}, [A, z, ce, g, pe]);
|
|
349
|
-
|
|
349
|
+
J(() => {
|
|
350
350
|
const s = Ce.current;
|
|
351
351
|
if (!s || !d || b !== "vector") return;
|
|
352
352
|
const a = new IntersectionObserver(
|
|
@@ -426,13 +426,13 @@ const ms = "1px", Ie = "1px", Pe = Be.memo(function({ image: t, onImageSelect: N
|
|
|
426
426
|
le(!1);
|
|
427
427
|
}
|
|
428
428
|
}
|
|
429
|
-
},
|
|
430
|
-
|
|
431
|
-
},
|
|
432
|
-
if (!(!i || !
|
|
429
|
+
}, We = () => {
|
|
430
|
+
Z && (N(Z), t(!1));
|
|
431
|
+
}, Qe = async () => {
|
|
432
|
+
if (!(!i || !Z)) {
|
|
433
433
|
me(!0), he(null);
|
|
434
434
|
try {
|
|
435
|
-
const s = await i(
|
|
435
|
+
const s = await i(Z);
|
|
436
436
|
Ne(s);
|
|
437
437
|
} catch (s) {
|
|
438
438
|
he(Ve), ie.error("Error removing background:", s);
|
|
@@ -548,7 +548,7 @@ const ms = "1px", Ie = "1px", Pe = Be.memo(function({ image: t, onImageSelect: N
|
|
|
548
548
|
}
|
|
549
549
|
)
|
|
550
550
|
] }),
|
|
551
|
-
|
|
551
|
+
W && /* @__PURE__ */ e("div", { className: "sc:border-danger sc:bg-danger/10 sc:text-danger sc:mx-6 sc:mb-3 sc:rounded-2xl sc:border-2 sc:px-4 sc:py-3 sc:text-sm", children: W }),
|
|
552
552
|
f && S.length === 0 && /* @__PURE__ */ e("div", { className: "sc:text-muted sc:px-6 sc:py-8 sc:text-center sc:text-sm", children: "Loading images..." }),
|
|
553
553
|
S.length > 0 && /* @__PURE__ */ c("div", { className: "sc:mx-6 sc:overflow-hidden sc:rounded-t-2xl", children: [
|
|
554
554
|
j === "masonry" ? (
|
|
@@ -812,12 +812,12 @@ const ms = "1px", Ie = "1px", Pe = Be.memo(function({ image: t, onImageSelect: N
|
|
|
812
812
|
)
|
|
813
813
|
] }),
|
|
814
814
|
Ee && /* @__PURE__ */ e("div", { className: "sc:border-danger sc:bg-danger/10 sc:text-danger sc:rounded-2xl sc:border-2 sc:px-4 sc:py-3 sc:text-sm", children: Ee }),
|
|
815
|
-
|
|
815
|
+
Z && /* @__PURE__ */ c("div", { className: "sc:flex sc:flex-col sc:gap-4 sc:rounded-2xl sc:border sc:border-divider sc:bg-muted/40 sc:p-6", children: [
|
|
816
816
|
/* @__PURE__ */ e("div", { className: "sc:flex sc:items-center sc:justify-between", children: /* @__PURE__ */ e(be, { className: "sc:text-muted sc:text-xs sc:uppercase sc:tracking-wide", children: "Generated Image" }) }),
|
|
817
817
|
/* @__PURE__ */ e("div", { className: "sc:flex sc:w-fit sc:items-center sc:justify-center sc:overflow-hidden sc:rounded-lg sc:bg-white/50 sc:dark:bg-black/50", style: { maxHeight: "500px", maxWidth: "100%" }, children: /* @__PURE__ */ e(
|
|
818
818
|
"img",
|
|
819
819
|
{
|
|
820
|
-
src:
|
|
820
|
+
src: Z,
|
|
821
821
|
alt: X,
|
|
822
822
|
className: "sc:max-h-full sc:max-w-full sc:object-contain"
|
|
823
823
|
}
|
|
@@ -830,8 +830,8 @@ const ms = "1px", Ie = "1px", Pe = Be.memo(function({ image: t, onImageSelect: N
|
|
|
830
830
|
i && /* @__PURE__ */ e(
|
|
831
831
|
_,
|
|
832
832
|
{
|
|
833
|
-
onClick:
|
|
834
|
-
disabled: ue || !
|
|
833
|
+
onClick: Qe,
|
|
834
|
+
disabled: ue || !Z,
|
|
835
835
|
variant: "secondary",
|
|
836
836
|
size: "sm",
|
|
837
837
|
className: "sc:w-full sc:gap-2",
|
|
@@ -849,7 +849,7 @@ const ms = "1px", Ie = "1px", Pe = Be.memo(function({ image: t, onImageSelect: N
|
|
|
849
849
|
/* @__PURE__ */ e(
|
|
850
850
|
_,
|
|
851
851
|
{
|
|
852
|
-
onClick:
|
|
852
|
+
onClick: We,
|
|
853
853
|
variant: "default",
|
|
854
854
|
className: "sc:w-full",
|
|
855
855
|
"data-testid": "ai-use-image-btn",
|
|
@@ -878,7 +878,7 @@ const ms = "1px", Ie = "1px", Pe = Be.memo(function({ image: t, onImageSelect: N
|
|
|
878
878
|
f.current = l;
|
|
879
879
|
const Y = U(V);
|
|
880
880
|
Y.current = V;
|
|
881
|
-
const [
|
|
881
|
+
const [W, Q] = r(null), b = u ?? W, B = n ?? Q, O = ae(
|
|
882
882
|
(P) => {
|
|
883
883
|
var ce, ne;
|
|
884
884
|
const g = f.current, y = Y.current;
|
|
@@ -948,4 +948,4 @@ const ms = "1px", Ie = "1px", Pe = Be.memo(function({ image: t, onImageSelect: N
|
|
|
948
948
|
export {
|
|
949
949
|
ws as ImagePanel
|
|
950
950
|
};
|
|
951
|
-
//# sourceMappingURL=ImagePanel-
|
|
951
|
+
//# sourceMappingURL=ImagePanel-CEr0_FYy.js.map
|