@dfosco/tiny-canvas 1.1.1 → 1.2.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/tiny-canvas.js +230 -199
- package/package.json +1 -1
package/dist/tiny-canvas.js
CHANGED
|
@@ -1,289 +1,320 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import
|
|
3
|
-
var
|
|
4
|
-
function
|
|
5
|
-
let n, o, { bounds: a, axis:
|
|
6
|
-
|
|
7
|
-
let
|
|
8
|
-
|
|
1
|
+
import { jsx as Z } from "react/jsx-runtime";
|
|
2
|
+
import vt, { useRef as W, useState as B, useEffect as ft, Children as Mt, useCallback as Rt } from "react";
|
|
3
|
+
var it = { dragStart: !0 }, ct = { delay: 0, distance: 3 };
|
|
4
|
+
function It(t, e = {}) {
|
|
5
|
+
let n, o, { bounds: a, axis: s = "both", gpuAcceleration: f = !0, legacyTranslate: d = !1, transform: v, applyUserSelectHack: w = !0, disabled: D = !1, ignoreMultitouch: N = !1, recomputeBounds: x = it, grid: I, threshold: y = ct, position: S, cancel: u, handle: m, defaultClass: i = "neodrag", defaultClassDragging: b = "neodrag-dragging", defaultClassDragged: A = "neodrag-dragged", defaultPosition: Et = { x: 0, y: 0 }, onDragStart: xt, onDrag: Nt, onDragEnd: At } = e, L = !1, $ = !1, gt = 0, Y = !1, _ = !1, T = 0, O = 0, q = 0, X = 0, G = 0, K = 0, { x: U, y: J } = S ? { x: (S == null ? void 0 : S.x) ?? 0, y: (S == null ? void 0 : S.y) ?? 0 } : Et;
|
|
6
|
+
nt(U, J);
|
|
7
|
+
let C, P, k, tt, et, pt = "", Ct = !!S;
|
|
8
|
+
x = { ...it, ...x }, y = { ...ct, ...y ?? {} };
|
|
9
9
|
let j = /* @__PURE__ */ new Set();
|
|
10
|
-
function
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
})(r),
|
|
10
|
+
function ht(r) {
|
|
11
|
+
L && !$ && _ && Y && et && ($ = !0, (function(c) {
|
|
12
|
+
ot("neodrag:start", xt, c);
|
|
13
|
+
})(r), R.add(b), w && (pt = rt.userSelect, rt.userSelect = "none"));
|
|
14
14
|
}
|
|
15
|
-
const
|
|
16
|
-
function
|
|
17
|
-
if (!
|
|
18
|
-
if (
|
|
19
|
-
let
|
|
20
|
-
return
|
|
15
|
+
const rt = document.body.style, R = t.classList;
|
|
16
|
+
function nt(r = T, c = O) {
|
|
17
|
+
if (!v) {
|
|
18
|
+
if (d) {
|
|
19
|
+
let p = `${+r}px, ${+c}px`;
|
|
20
|
+
return Q(t, "transform", f ? `translate3d(${p}, 0)` : `translate(${p})`);
|
|
21
21
|
}
|
|
22
|
-
return
|
|
22
|
+
return Q(t, "translate", `${+r}px ${+c}px`);
|
|
23
23
|
}
|
|
24
|
-
const
|
|
25
|
-
|
|
24
|
+
const g = v({ offsetX: r, offsetY: c, rootNode: t });
|
|
25
|
+
lt(g) && Q(t, "transform", g);
|
|
26
26
|
}
|
|
27
|
-
function
|
|
28
|
-
const
|
|
29
|
-
return { offsetX:
|
|
30
|
-
})(
|
|
31
|
-
|
|
27
|
+
function ot(r, c, g) {
|
|
28
|
+
const p = /* @__PURE__ */ (function(h) {
|
|
29
|
+
return { offsetX: T, offsetY: O, rootNode: t, currentNode: et, event: h };
|
|
30
|
+
})(g);
|
|
31
|
+
t.dispatchEvent(new CustomEvent(r, { detail: p })), c == null || c(p);
|
|
32
32
|
}
|
|
33
|
-
const
|
|
34
|
-
function
|
|
35
|
-
let r =
|
|
33
|
+
const F = addEventListener, at = new AbortController(), st = { signal: at.signal, capture: !1 };
|
|
34
|
+
function yt() {
|
|
35
|
+
let r = t.offsetWidth / P.width;
|
|
36
36
|
return isNaN(r) && (r = 1), r;
|
|
37
37
|
}
|
|
38
|
-
return
|
|
39
|
-
if (
|
|
40
|
-
if (j.add(r.pointerId),
|
|
41
|
-
if (
|
|
42
|
-
if (
|
|
43
|
-
if (!
|
|
44
|
-
if (
|
|
45
|
-
if (Array.isArray(
|
|
46
|
-
const
|
|
47
|
-
if (
|
|
48
|
-
return Array.from(
|
|
49
|
-
})(
|
|
50
|
-
if (!
|
|
51
|
-
if (
|
|
52
|
-
if (Array.isArray(
|
|
53
|
-
const
|
|
54
|
-
if (
|
|
55
|
-
return Array.from(
|
|
56
|
-
})(
|
|
57
|
-
const
|
|
58
|
-
if (!
|
|
59
|
-
var
|
|
60
|
-
return
|
|
61
|
-
})) ||
|
|
62
|
-
|
|
63
|
-
const { clientX:
|
|
64
|
-
n && (
|
|
65
|
-
}),
|
|
66
|
-
if (!
|
|
67
|
-
if (
|
|
68
|
-
if (
|
|
69
|
-
const h = r.clientX -
|
|
70
|
-
Math.sqrt(h ** 2 +
|
|
38
|
+
return Q(t, "touch-action", "none"), F("pointerdown", ((r) => {
|
|
39
|
+
if (D || r.button === 2) return;
|
|
40
|
+
if (j.add(r.pointerId), N && j.size > 1) return r.preventDefault();
|
|
41
|
+
if (x.dragStart && (C = ut(a, t)), lt(m) && lt(u) && m === u) throw new Error("`handle` selector can't be same as `cancel` selector");
|
|
42
|
+
if (R.add(i), k = (function(l, E) {
|
|
43
|
+
if (!l) return [E];
|
|
44
|
+
if (dt(l)) return [l];
|
|
45
|
+
if (Array.isArray(l)) return l;
|
|
46
|
+
const M = E.querySelectorAll(l);
|
|
47
|
+
if (M === null) throw new Error("Selector passed for `handle` option should be child of the element on which the action is applied");
|
|
48
|
+
return Array.from(M.values());
|
|
49
|
+
})(m, t), tt = (function(l, E) {
|
|
50
|
+
if (!l) return [];
|
|
51
|
+
if (dt(l)) return [l];
|
|
52
|
+
if (Array.isArray(l)) return l;
|
|
53
|
+
const M = E.querySelectorAll(l);
|
|
54
|
+
if (M === null) throw new Error("Selector passed for `cancel` option should be child of the element on which the action is applied");
|
|
55
|
+
return Array.from(M.values());
|
|
56
|
+
})(u, t), n = /(both|x)/.test(s), o = /(both|y)/.test(s), St(tt, k)) throw new Error("Element being dragged can't be a child of the element on which `cancel` is applied");
|
|
57
|
+
const c = r.composedPath()[0];
|
|
58
|
+
if (!k.some(((l) => {
|
|
59
|
+
var E;
|
|
60
|
+
return l.contains(c) || ((E = l.shadowRoot) == null ? void 0 : E.contains(c));
|
|
61
|
+
})) || St(tt, [c])) return;
|
|
62
|
+
et = k.length === 1 ? t : k.find(((l) => l.contains(c))), L = !0, gt = Date.now(), y.delay || (Y = !0), P = t.getBoundingClientRect();
|
|
63
|
+
const { clientX: g, clientY: p } = r, h = yt();
|
|
64
|
+
n && (q = g - U / h), o && (X = p - J / h), C && (G = g - P.left, K = p - P.top);
|
|
65
|
+
}), st), F("pointermove", ((r) => {
|
|
66
|
+
if (!L || N && j.size > 1) return;
|
|
67
|
+
if (!$) {
|
|
68
|
+
if (Y || Date.now() - gt >= y.delay && (Y = !0, ht(r)), !_) {
|
|
69
|
+
const h = r.clientX - q, l = r.clientY - X;
|
|
70
|
+
Math.sqrt(h ** 2 + l ** 2) >= y.distance && (_ = !0, ht(r));
|
|
71
71
|
}
|
|
72
|
-
if (
|
|
72
|
+
if (!$) return;
|
|
73
73
|
}
|
|
74
|
-
|
|
75
|
-
let
|
|
76
|
-
const
|
|
77
|
-
if (
|
|
78
|
-
const h = { left:
|
|
79
|
-
|
|
74
|
+
x.drag && (C = ut(a, t)), r.preventDefault(), P = t.getBoundingClientRect();
|
|
75
|
+
let c = r.clientX, g = r.clientY;
|
|
76
|
+
const p = yt();
|
|
77
|
+
if (C) {
|
|
78
|
+
const h = { left: C.left + G, top: C.top + K, right: C.right + G - P.width, bottom: C.bottom + K - P.height };
|
|
79
|
+
c = mt(c, h.left, h.right), g = mt(g, h.top, h.bottom);
|
|
80
80
|
}
|
|
81
|
-
if (Array.isArray(
|
|
82
|
-
let [h,
|
|
81
|
+
if (Array.isArray(I)) {
|
|
82
|
+
let [h, l] = I;
|
|
83
83
|
if (isNaN(+h) || h < 0) throw new Error("1st argument of `grid` must be a valid positive number");
|
|
84
|
-
if (isNaN(+
|
|
85
|
-
let
|
|
86
|
-
[
|
|
84
|
+
if (isNaN(+l) || l < 0) throw new Error("2nd argument of `grid` must be a valid positive number");
|
|
85
|
+
let E = c - q, M = g - X;
|
|
86
|
+
[E, M] = Tt([h / p, l / p], E, M), c = q + E, g = X + M;
|
|
87
87
|
}
|
|
88
|
-
n && (
|
|
89
|
-
}),
|
|
90
|
-
j.delete(r.pointerId),
|
|
91
|
-
}),
|
|
92
|
-
var
|
|
93
|
-
|
|
94
|
-
const
|
|
95
|
-
|
|
88
|
+
n && (T = Math.round((c - q) * p)), o && (O = Math.round((g - X) * p)), U = T, J = O, ot("neodrag", Nt, r), nt();
|
|
89
|
+
}), st), F("pointerup", ((r) => {
|
|
90
|
+
j.delete(r.pointerId), L && ($ && (F("click", ((c) => c.stopPropagation()), { once: !0, signal: at.signal, capture: !0 }), x.dragEnd && (C = ut(a, t)), R.remove(b), R.add(A), w && (rt.userSelect = pt), ot("neodrag:end", At, r), n && (q = T), o && (X = O)), L = !1, $ = !1, Y = !1, _ = !1);
|
|
91
|
+
}), st), { destroy: () => at.abort(), update: (r) => {
|
|
92
|
+
var g, p;
|
|
93
|
+
s = r.axis || "both", D = r.disabled ?? !1, N = r.ignoreMultitouch ?? !1, m = r.handle, a = r.bounds, x = r.recomputeBounds ?? it, u = r.cancel, w = r.applyUserSelectHack ?? !0, I = r.grid, f = r.gpuAcceleration ?? !0, d = r.legacyTranslate ?? !1, v = r.transform, y = { ...ct, ...r.threshold ?? {} };
|
|
94
|
+
const c = R.contains(A);
|
|
95
|
+
R.remove(i, A), i = r.defaultClass ?? "neodrag", b = r.defaultClassDragging ?? "neodrag-dragging", A = r.defaultClassDragged ?? "neodrag-dragged", R.add(i), c && R.add(A), Ct && (U = T = ((g = r.position) == null ? void 0 : g.x) ?? T, J = O = ((p = r.position) == null ? void 0 : p.y) ?? O, nt());
|
|
96
96
|
} };
|
|
97
97
|
}
|
|
98
|
-
var
|
|
99
|
-
const a = (
|
|
100
|
-
return [a(n,
|
|
101
|
-
},
|
|
102
|
-
function
|
|
103
|
-
if (
|
|
104
|
-
if (
|
|
105
|
-
if (typeof
|
|
106
|
-
const { top: o = 0, left: a = 0, right:
|
|
107
|
-
return { top: o, right: window.innerWidth -
|
|
98
|
+
var mt = (t, e, n) => Math.min(Math.max(t, e), n), lt = (t) => typeof t == "string", Tt = ([t, e], n, o) => {
|
|
99
|
+
const a = (s, f) => f === 0 ? 0 : Math.ceil(s / f) * f;
|
|
100
|
+
return [a(n, t), a(o, e)];
|
|
101
|
+
}, St = (t, e) => t.some(((n) => e.some(((o) => n.contains(o)))));
|
|
102
|
+
function ut(t, e) {
|
|
103
|
+
if (t === void 0) return;
|
|
104
|
+
if (dt(t)) return t.getBoundingClientRect();
|
|
105
|
+
if (typeof t == "object") {
|
|
106
|
+
const { top: o = 0, left: a = 0, right: s = 0, bottom: f = 0 } = t;
|
|
107
|
+
return { top: o, right: window.innerWidth - s, bottom: window.innerHeight - f, left: a };
|
|
108
108
|
}
|
|
109
|
-
if (
|
|
110
|
-
const n = document.querySelector(
|
|
109
|
+
if (t === "parent") return e.parentNode.getBoundingClientRect();
|
|
110
|
+
const n = document.querySelector(t);
|
|
111
111
|
if (n === null) throw new Error("The selector provided for bound doesn't exists in the document.");
|
|
112
112
|
return n.getBoundingClientRect();
|
|
113
113
|
}
|
|
114
|
-
var
|
|
115
|
-
function
|
|
116
|
-
return
|
|
114
|
+
var Q = (t, e, n) => t.style.setProperty(e, n), dt = (t) => t instanceof HTMLElement;
|
|
115
|
+
function z(t) {
|
|
116
|
+
return t == null || typeof t == "string" || t instanceof HTMLElement ? t : "current" in t ? t.current : Array.isArray(t) ? t.map(((e) => e instanceof HTMLElement ? e : e.current)) : void 0;
|
|
117
117
|
}
|
|
118
|
-
function
|
|
119
|
-
const n =
|
|
120
|
-
let { onDragStart:
|
|
121
|
-
function
|
|
122
|
-
|
|
118
|
+
function Ot(t, e = {}) {
|
|
119
|
+
const n = W(), [o, a] = B(!1), [s, f] = B();
|
|
120
|
+
let { onDragStart: d, onDrag: v, onDragEnd: w, handle: D, cancel: N } = e, x = z(D), I = z(N);
|
|
121
|
+
function y(i, b) {
|
|
122
|
+
f(i), b == null || b(i);
|
|
123
123
|
}
|
|
124
|
-
function
|
|
125
|
-
a(!0),
|
|
124
|
+
function S(i) {
|
|
125
|
+
a(!0), y(i, d);
|
|
126
126
|
}
|
|
127
|
-
function
|
|
128
|
-
|
|
127
|
+
function u(i) {
|
|
128
|
+
y(i, v);
|
|
129
129
|
}
|
|
130
|
-
function
|
|
131
|
-
a(!1),
|
|
130
|
+
function m(i) {
|
|
131
|
+
a(!1), y(i, w);
|
|
132
132
|
}
|
|
133
|
-
return
|
|
133
|
+
return ft((() => {
|
|
134
134
|
if (typeof window > "u") return;
|
|
135
|
-
const
|
|
136
|
-
if (!
|
|
137
|
-
({ onDragStart:
|
|
138
|
-
const { update:
|
|
139
|
-
return n.current =
|
|
140
|
-
}), []),
|
|
141
|
-
var
|
|
142
|
-
(
|
|
143
|
-
}), [
|
|
135
|
+
const i = t.current;
|
|
136
|
+
if (!i) return;
|
|
137
|
+
({ onDragStart: d, onDrag: v, onDragEnd: w } = e);
|
|
138
|
+
const { update: b, destroy: A } = It(i, { ...e, handle: x, cancel: I, onDragStart: S, onDrag: u, onDragEnd: m });
|
|
139
|
+
return n.current = b, A;
|
|
140
|
+
}), []), ft((() => {
|
|
141
|
+
var i;
|
|
142
|
+
(i = n.current) == null || i.call(n, { ...e, handle: z(D), cancel: z(N), onDragStart: S, onDrag: u, onDragEnd: m });
|
|
143
|
+
}), [e]), { isDragging: o, dragState: s };
|
|
144
144
|
}
|
|
145
|
-
const
|
|
146
|
-
|
|
147
|
-
|
|
145
|
+
const H = "tiny-canvas-queue";
|
|
146
|
+
function wt() {
|
|
147
|
+
const t = localStorage.getItem(H);
|
|
148
|
+
if (!t) return [];
|
|
149
|
+
try {
|
|
150
|
+
const e = JSON.parse(t);
|
|
151
|
+
return Array.isArray(e) ? e : [];
|
|
152
|
+
} catch {
|
|
153
|
+
return localStorage.setItem(H, JSON.stringify([])), [];
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
const Pt = (t) => {
|
|
157
|
+
if (!t) return null;
|
|
158
|
+
let e = null;
|
|
148
159
|
const n = (o) => {
|
|
149
160
|
if (o.props && o.props.id) {
|
|
150
|
-
|
|
161
|
+
e = o.props.id;
|
|
151
162
|
return;
|
|
152
163
|
}
|
|
153
|
-
o.props && o.props.children &&
|
|
164
|
+
o.props && o.props.children && vt.Children.forEach(o.props.children, n);
|
|
154
165
|
};
|
|
155
|
-
return n(
|
|
166
|
+
return n(t), e;
|
|
156
167
|
};
|
|
157
|
-
function
|
|
158
|
-
let
|
|
159
|
-
for (let n = 0; n <
|
|
160
|
-
|
|
161
|
-
return
|
|
168
|
+
function $t(t) {
|
|
169
|
+
let e = 5381;
|
|
170
|
+
for (let n = 0; n < t.length; n++)
|
|
171
|
+
e = (e << 5) + e + t.charCodeAt(n) >>> 0;
|
|
172
|
+
return e.toString(16).padStart(8, "0");
|
|
162
173
|
}
|
|
163
|
-
function
|
|
164
|
-
var
|
|
165
|
-
if (
|
|
166
|
-
if (typeof
|
|
167
|
-
const
|
|
174
|
+
function Dt(t) {
|
|
175
|
+
var s;
|
|
176
|
+
if (t == null || typeof t == "boolean") return "";
|
|
177
|
+
if (typeof t == "string" || typeof t == "number") return "#text";
|
|
178
|
+
const e = t.type, n = typeof e == "function" ? e.displayName || e.name || "Anonymous" : typeof e == "string" ? e : "Fragment", o = (s = t.props) == null ? void 0 : s.children;
|
|
168
179
|
if (o == null) return n;
|
|
169
180
|
const a = [];
|
|
170
|
-
return
|
|
171
|
-
const
|
|
172
|
-
|
|
181
|
+
return vt.Children.forEach(o, (f) => {
|
|
182
|
+
const d = Dt(f);
|
|
183
|
+
d && a.push(d);
|
|
173
184
|
}), a.length ? `${n}(${a.join(",")})` : n;
|
|
174
185
|
}
|
|
175
|
-
const
|
|
176
|
-
const n =
|
|
177
|
-
return `tc-${
|
|
178
|
-
},
|
|
186
|
+
const qt = (t, e) => {
|
|
187
|
+
const n = Dt(t);
|
|
188
|
+
return `tc-${$t(n)}-${e}`;
|
|
189
|
+
}, Ut = (t) => {
|
|
179
190
|
try {
|
|
180
|
-
return (
|
|
181
|
-
} catch (
|
|
182
|
-
return console.error("Error getting saved coordinates:",
|
|
191
|
+
return wt().reduce((o, a) => (o[a.id] = { id: a.id, x: a.x, y: a.y }, o), {})[t] || { x: 0, y: 0 };
|
|
192
|
+
} catch (e) {
|
|
193
|
+
return console.error("Error getting saved coordinates:", e), { x: 0, y: 0 };
|
|
183
194
|
}
|
|
184
|
-
},
|
|
195
|
+
}, Jt = () => {
|
|
185
196
|
try {
|
|
186
|
-
localStorage.getItem(
|
|
187
|
-
} catch (
|
|
188
|
-
console.error("LocalStorage is not available:",
|
|
197
|
+
localStorage.getItem(H) || localStorage.setItem(H, JSON.stringify([]));
|
|
198
|
+
} catch (t) {
|
|
199
|
+
console.error("LocalStorage is not available:", t);
|
|
189
200
|
}
|
|
190
|
-
},
|
|
201
|
+
}, Xt = (t, e, n) => {
|
|
191
202
|
try {
|
|
192
|
-
const o =
|
|
193
|
-
|
|
203
|
+
const o = wt(), a = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-"), s = { id: t, x: e, y: n, time: a }, f = o.findIndex((d) => d.id === t);
|
|
204
|
+
f >= 0 ? o[f] = s : o.push(s), localStorage.setItem(H, JSON.stringify(o));
|
|
194
205
|
} catch (o) {
|
|
195
206
|
console.error("Error saving drag position:", o);
|
|
196
207
|
}
|
|
197
|
-
},
|
|
198
|
-
function
|
|
199
|
-
const
|
|
200
|
-
() => Math.random() < 0.5 ? -
|
|
208
|
+
}, Lt = 250, bt = 4, Yt = 10, V = 1.5;
|
|
209
|
+
function kt({ children: t, dragId: e, initialPosition: n, onDragEnd: o }) {
|
|
210
|
+
const a = W(null), s = n || { x: 0, y: 0 }, f = W(s), d = W(!1), [v, w] = B(!1), [D, N] = B(s), [x, I] = B(
|
|
211
|
+
() => Math.random() < 0.5 ? -V : V
|
|
201
212
|
);
|
|
202
|
-
|
|
203
|
-
const u =
|
|
204
|
-
if (u &&
|
|
213
|
+
ft(() => {
|
|
214
|
+
const u = a.current;
|
|
215
|
+
if (u && e && (s.x !== 0 || s.y !== 0)) {
|
|
205
216
|
u.classList.add("tc-on-translation");
|
|
206
|
-
const
|
|
217
|
+
const m = setTimeout(() => {
|
|
207
218
|
u.classList.remove("tc-on-translation");
|
|
208
|
-
},
|
|
219
|
+
}, Lt * 4);
|
|
209
220
|
return () => {
|
|
210
|
-
clearTimeout(
|
|
221
|
+
clearTimeout(m);
|
|
211
222
|
};
|
|
212
223
|
}
|
|
213
|
-
}, [
|
|
214
|
-
|
|
215
|
-
const u = o.current;
|
|
216
|
-
n.current && u && l({ x: u.x, y: u.y });
|
|
217
|
-
}, []);
|
|
218
|
-
const { isDragging: y } = qe(n, {
|
|
224
|
+
}, [e, s.x, s.y]);
|
|
225
|
+
const { isDragging: y } = Ot(a, {
|
|
219
226
|
axis: "both",
|
|
220
227
|
threshold: { delay: 50, distance: 30 },
|
|
221
228
|
defaultClass: "tc-drag",
|
|
222
229
|
defaultClassDragging: "tc-on",
|
|
223
230
|
defaultClassDragged: "tc-off",
|
|
224
231
|
applyUserSelectHack: !0,
|
|
225
|
-
position: { x:
|
|
226
|
-
|
|
232
|
+
position: { x: D.x, y: D.y },
|
|
233
|
+
onDragStart: () => {
|
|
234
|
+
f.current = D, d.current = !1, w(!1);
|
|
235
|
+
},
|
|
236
|
+
onDrag: ({ offsetX: u, offsetY: m }) => {
|
|
237
|
+
const i = u - f.current.x, b = m - f.current.y, A = Math.hypot(i, b);
|
|
238
|
+
!d.current && Math.hypot(i, b) >= bt && (d.current = !0), !v && A >= Yt && w(!0), N({ x: u, y: m });
|
|
239
|
+
},
|
|
227
240
|
onDragEnd: (u) => {
|
|
228
|
-
|
|
241
|
+
N({ x: u.offsetX, y: u.offsetY }), I(Math.random() < 0.5 ? -V : V), w(!1);
|
|
242
|
+
const m = u.offsetX - f.current.x, i = u.offsetY - f.current.y;
|
|
243
|
+
(d.current || Math.hypot(m, i) >= bt) && (e && Xt(e, u.offsetX, u.offsetY), o == null || o(e, { x: u.offsetX, y: u.offsetY }));
|
|
229
244
|
}
|
|
230
|
-
}),
|
|
231
|
-
return /* @__PURE__ */
|
|
245
|
+
}), S = y && v ? `${x}deg` : "0deg";
|
|
246
|
+
return /* @__PURE__ */ Z(
|
|
232
247
|
"article",
|
|
233
248
|
{
|
|
234
|
-
ref:
|
|
249
|
+
ref: a,
|
|
235
250
|
style: { cursor: y ? "grabbing" : "grab" },
|
|
236
|
-
children: /* @__PURE__ */
|
|
251
|
+
children: /* @__PURE__ */ Z(
|
|
237
252
|
"div",
|
|
238
253
|
{
|
|
239
254
|
className: "tc-draggable-inner",
|
|
240
255
|
style: {
|
|
241
|
-
transform: y ? `rotate(${
|
|
256
|
+
transform: y ? `rotate(${S})` : void 0,
|
|
242
257
|
transition: "transform ease-in-out 150ms"
|
|
243
258
|
},
|
|
244
|
-
children:
|
|
259
|
+
children: t
|
|
245
260
|
}
|
|
246
261
|
)
|
|
247
262
|
}
|
|
248
263
|
);
|
|
249
264
|
}
|
|
250
|
-
function
|
|
251
|
-
|
|
252
|
-
|
|
265
|
+
function Bt(t) {
|
|
266
|
+
var o, a;
|
|
267
|
+
const e = Number((o = t == null ? void 0 : t.props) == null ? void 0 : o["data-tc-x"]), n = Number((a = t == null ? void 0 : t.props) == null ? void 0 : a["data-tc-y"]);
|
|
268
|
+
return Number.isFinite(e) && Number.isFinite(n) ? { x: e, y: n } : null;
|
|
269
|
+
}
|
|
270
|
+
function jt({
|
|
271
|
+
children: t,
|
|
272
|
+
dotted: e = !1,
|
|
253
273
|
grid: n = !1,
|
|
254
274
|
gridSize: o,
|
|
255
|
-
colorMode: a = "auto"
|
|
275
|
+
colorMode: a = "auto",
|
|
276
|
+
onDragEnd: s
|
|
256
277
|
}) {
|
|
257
|
-
return /* @__PURE__ */
|
|
278
|
+
return /* @__PURE__ */ Z(
|
|
258
279
|
"main",
|
|
259
280
|
{
|
|
260
281
|
className: "tc-canvas",
|
|
261
|
-
"data-dotted":
|
|
282
|
+
"data-dotted": e || n || void 0,
|
|
262
283
|
"data-color-mode": a !== "auto" ? a : void 0,
|
|
263
|
-
children:
|
|
264
|
-
const
|
|
265
|
-
return /* @__PURE__ */
|
|
284
|
+
children: Mt.map(t, (d, v) => {
|
|
285
|
+
const w = Pt(d) ?? qt(d, v), D = Bt(d);
|
|
286
|
+
return /* @__PURE__ */ Z(
|
|
287
|
+
kt,
|
|
288
|
+
{
|
|
289
|
+
gridSize: o,
|
|
290
|
+
dragId: w,
|
|
291
|
+
initialPosition: D,
|
|
292
|
+
onDragEnd: s,
|
|
293
|
+
children: d
|
|
294
|
+
},
|
|
295
|
+
v
|
|
296
|
+
);
|
|
266
297
|
})
|
|
267
298
|
}
|
|
268
299
|
);
|
|
269
300
|
}
|
|
270
|
-
function
|
|
271
|
-
return
|
|
301
|
+
function Ft({ reload: t = !1 } = {}) {
|
|
302
|
+
return Rt(() => {
|
|
272
303
|
try {
|
|
273
304
|
localStorage.removeItem("tiny-canvas-queue");
|
|
274
|
-
} catch (
|
|
275
|
-
console.error("Error clearing canvas state:",
|
|
305
|
+
} catch (e) {
|
|
306
|
+
console.error("Error clearing canvas state:", e);
|
|
276
307
|
}
|
|
277
|
-
|
|
278
|
-
}, [
|
|
308
|
+
t && window.location.reload();
|
|
309
|
+
}, [t]);
|
|
279
310
|
}
|
|
280
311
|
export {
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
312
|
+
jt as Canvas,
|
|
313
|
+
kt as Draggable,
|
|
314
|
+
Pt as findDragId,
|
|
315
|
+
qt as generateDragId,
|
|
316
|
+
Ut as getQueue,
|
|
317
|
+
Jt as refreshStorage,
|
|
318
|
+
Xt as saveDrag,
|
|
319
|
+
Ft as useResetCanvas
|
|
289
320
|
};
|