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