@graffiticode/l0000-view 0.1.3 → 0.1.5

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.js CHANGED
@@ -1,808 +1,234 @@
1
- import { jsx as q, jsxs as bt } from "react/jsx-runtime";
2
- import ct, { createContext as ve, useEffect as et, useLayoutEffect as ye, useContext as Oe, useMemo as mt, useRef as U, useCallback as ht, useDebugValue as we, useState as at, useReducer as _e } from "react";
3
- var At = { exports: {} }, yt = {};
4
- /**
5
- * @license React
6
- * use-sync-external-store-shim.production.js
7
- *
8
- * Copyright (c) Meta Platforms, Inc. and affiliates.
9
- *
10
- * This source code is licensed under the MIT license found in the
11
- * LICENSE file in the root directory of this source tree.
12
- */
13
- var Kt;
14
- function Re() {
15
- if (Kt) return yt;
16
- Kt = 1;
17
- var t = ct;
18
- function e(u, l) {
19
- return u === l && (u !== 0 || 1 / u === 1 / l) || u !== u && l !== l;
20
- }
21
- var n = typeof Object.is == "function" ? Object.is : e, r = t.useState, o = t.useEffect, i = t.useLayoutEffect, s = t.useDebugValue;
22
- function d(u, l) {
23
- var c = l(), h = r({ inst: { value: c, getSnapshot: l } }), f = h[0].inst, E = h[1];
24
- return i(
25
- function() {
26
- f.value = c, f.getSnapshot = l, m(f) && E({ inst: f });
27
- },
28
- [u, c, l]
29
- ), o(
30
- function() {
31
- return m(f) && E({ inst: f }), u(function() {
32
- m(f) && E({ inst: f });
33
- });
34
- },
35
- [u]
36
- ), s(c), c;
37
- }
38
- function m(u) {
39
- var l = u.getSnapshot;
40
- u = u.value;
41
- try {
42
- var c = l();
43
- return !n(u, c);
44
- } catch {
45
- return !0;
46
- }
47
- }
48
- function D(u, l) {
49
- return l();
50
- }
51
- var v = typeof window > "u" || typeof window.document > "u" || typeof window.document.createElement > "u" ? D : d;
52
- return yt.useSyncExternalStore = t.useSyncExternalStore !== void 0 ? t.useSyncExternalStore : v, yt;
1
+ import { useCallback as e, useEffect as t, useMemo as n, useReducer as r, useRef as i, useState as a } from "react";
2
+ import o from "swr";
3
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
4
+ //#region src/lib/api.ts
5
+ function l() {
6
+ return window.document.location.host.indexOf("localhost") === 0 ? "http://localhost:3100" : "https://api.graffiticode.org";
53
7
  }
54
- var Ot = {};
55
- /**
56
- * @license React
57
- * use-sync-external-store-shim.development.js
58
- *
59
- * Copyright (c) Meta Platforms, Inc. and affiliates.
60
- *
61
- * This source code is licensed under the MIT license found in the
62
- * LICENSE file in the root directory of this source tree.
63
- */
64
- var Jt;
65
- function De() {
66
- return Jt || (Jt = 1, process.env.NODE_ENV !== "production" && function() {
67
- function t(c, h) {
68
- return c === h && (c !== 0 || 1 / c === 1 / h) || c !== c && h !== h;
69
- }
70
- function e(c, h) {
71
- v || o.startTransition === void 0 || (v = !0, console.error(
72
- "You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."
73
- ));
74
- var f = h();
75
- if (!u) {
76
- var E = h();
77
- i(f, E) || (console.error(
78
- "The result of getSnapshot should be cached to avoid an infinite loop"
79
- ), u = !0);
80
- }
81
- E = s({
82
- inst: { value: f, getSnapshot: h }
83
- });
84
- var T = E[0].inst, a = E[1];
85
- return m(
86
- function() {
87
- T.value = f, T.getSnapshot = h, n(T) && a({ inst: T });
88
- },
89
- [c, f, h]
90
- ), d(
91
- function() {
92
- return n(T) && a({ inst: T }), c(function() {
93
- n(T) && a({ inst: T });
94
- });
95
- },
96
- [c]
97
- ), D(f), f;
98
- }
99
- function n(c) {
100
- var h = c.getSnapshot;
101
- c = c.value;
102
- try {
103
- var f = h();
104
- return !i(c, f);
105
- } catch {
106
- return !0;
107
- }
108
- }
109
- function r(c, h) {
110
- return h();
111
- }
112
- typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ < "u" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart == "function" && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
113
- var o = ct, i = typeof Object.is == "function" ? Object.is : t, s = o.useState, d = o.useEffect, m = o.useLayoutEffect, D = o.useDebugValue, v = !1, u = !1, l = typeof window > "u" || typeof window.document > "u" || typeof window.document.createElement > "u" ? r : e;
114
- Ot.useSyncExternalStore = o.useSyncExternalStore !== void 0 ? o.useSyncExternalStore : l, typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ < "u" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop == "function" && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
115
- }()), Ot;
8
+ var u = async ({ accessToken: e, id: t }) => {
9
+ let { status: n, error: r, data: i } = await (await fetch(`${l()}/data?id=${t}`, { headers: { Authorization: e || "" } })).json();
10
+ if (n !== "success") throw Error(`failed to get data ${t}: ${r?.message}`);
11
+ return i;
12
+ }, d = async ({ accessToken: e, id: t, data: n }) => {
13
+ let r = await (await fetch(`${l()}/compile`, {
14
+ method: "POST",
15
+ headers: {
16
+ "Content-Type": "application/json",
17
+ authorization: e || "",
18
+ "x-graffiticode-storage-type": "persistent"
19
+ },
20
+ body: JSON.stringify({
21
+ id: t,
22
+ data: n
23
+ })
24
+ })).json();
25
+ if (r.status !== "success") throw Error(`failed to post compile ${t}: ${r.error?.message}`);
26
+ return r.data;
27
+ }, f = async ({ accessToken: e, id: t, data: n }) => {
28
+ let r = Object.keys(n).length > 0 ? 1 : 2;
29
+ return t = t.split("+").slice(0, r).join("+"), await d({
30
+ accessToken: e,
31
+ id: t,
32
+ data: n
33
+ });
34
+ }, p = async ({ accessToken: e, id: t }) => await u({
35
+ accessToken: e,
36
+ id: t
37
+ }), m = /* @__PURE__ */ new Set(["update", "response"]), h = /* @__PURE__ */ new Set(["init", "loaded"]);
38
+ function g(e) {
39
+ return e && typeof e == "object" && Array.isArray(e.errors) ? {
40
+ data: e.data ?? null,
41
+ errors: e.errors
42
+ } : {
43
+ data: e,
44
+ errors: []
45
+ };
116
46
  }
117
- process.env.NODE_ENV === "production" ? At.exports = Re() : At.exports = De();
118
- var zt = At.exports;
119
- const se = 0, ie = 1, ae = 2, Yt = 3;
120
- var Xt = Object.prototype.hasOwnProperty;
121
- function Ct(t, e) {
122
- var n, r;
123
- if (t === e) return !0;
124
- if (t && e && (n = t.constructor) === e.constructor) {
125
- if (n === Date) return t.getTime() === e.getTime();
126
- if (n === RegExp) return t.toString() === e.toString();
127
- if (n === Array) {
128
- if ((r = t.length) === e.length)
129
- for (; r-- && Ct(t[r], e[r]); ) ;
130
- return r === -1;
131
- }
132
- if (!n || typeof t == "object") {
133
- r = 0;
134
- for (n in t)
135
- if (Xt.call(t, n) && ++r && !Xt.call(e, n) || !(n in e) || !Ct(t[n], e[n])) return !1;
136
- return Object.keys(e).length === r;
137
- }
138
- }
139
- return t !== t && e !== e;
47
+ function _(e, t) {
48
+ return t.length > 0 || !(e == null || typeof e == "object" && !Array.isArray(e) && Object.keys(e).length === 0);
140
49
  }
141
- const $ = /* @__PURE__ */ new WeakMap(), H = () => {
142
- }, b = (
143
- /*#__NOINLINE__*/
144
- H()
145
- ), xt = Object, p = (t) => t === b, F = (t) => typeof t == "function", k = (t, e) => ({
146
- ...t,
147
- ...e
148
- }), ce = (t) => F(t.then), wt = {}, dt = {}, Wt = "undefined", ut = typeof window != Wt, It = typeof document != Wt, Te = ut && "Deno" in window, Le = () => ut && typeof window.requestAnimationFrame != Wt, ue = (t, e) => {
149
- const n = $.get(t);
150
- return [
151
- // Getter
152
- () => !p(e) && t.get(e) || wt,
153
- // Setter
154
- (r) => {
155
- if (!p(e)) {
156
- const o = t.get(e);
157
- e in dt || (dt[e] = o), n[5](e, k(o, r), o || wt);
158
- }
159
- },
160
- // Subscriber
161
- n[6],
162
- // Get server cache snapshot
163
- () => !p(e) && e in dt ? dt[e] : !p(e) && t.get(e) || wt
164
- ];
165
- };
166
- let Nt = !0;
167
- const be = () => Nt, [Vt, jt] = ut && window.addEventListener ? [
168
- window.addEventListener.bind(window),
169
- window.removeEventListener.bind(window)
170
- ] : [
171
- H,
172
- H
173
- ], Ae = () => {
174
- const t = It && document.visibilityState;
175
- return p(t) || t !== "hidden";
176
- }, Ce = (t) => (It && document.addEventListener("visibilitychange", t), Vt("focus", t), () => {
177
- It && document.removeEventListener("visibilitychange", t), jt("focus", t);
178
- }), xe = (t) => {
179
- const e = () => {
180
- Nt = !0, t();
181
- }, n = () => {
182
- Nt = !1;
183
- };
184
- return Vt("online", e), Vt("offline", n), () => {
185
- jt("online", e), jt("offline", n);
186
- };
187
- }, Ie = {
188
- isOnline: be,
189
- isVisible: Ae
190
- }, Ne = {
191
- initFocus: Ce,
192
- initReconnect: xe
193
- }, Qt = !ct.useId, nt = !ut || Te, Ve = (t) => Le() ? window.requestAnimationFrame(t) : setTimeout(t, 1), _t = nt ? et : ye, Rt = typeof navigator < "u" && navigator.connection, Zt = !nt && Rt && ([
194
- "slow-2g",
195
- "2g"
196
- ].includes(Rt.effectiveType) || Rt.saveData), pt = /* @__PURE__ */ new WeakMap(), je = (t) => xt.prototype.toString.call(t), Dt = (t, e) => t === `[object ${e}]`;
197
- let Fe = 0;
198
- const Ft = (t) => {
199
- const e = typeof t, n = je(t), r = Dt(n, "Date"), o = Dt(n, "RegExp"), i = Dt(n, "Object");
200
- let s, d;
201
- if (xt(t) === t && !r && !o) {
202
- if (s = pt.get(t), s) return s;
203
- if (s = ++Fe + "~", pt.set(t, s), Array.isArray(t)) {
204
- for (s = "@", d = 0; d < t.length; d++)
205
- s += Ft(t[d]) + ",";
206
- pt.set(t, s);
207
- }
208
- if (i) {
209
- s = "#";
210
- const m = xt.keys(t).sort();
211
- for (; !p(d = m.pop()); )
212
- p(t[d]) || (s += d + ":" + Ft(t[d]) + ",");
213
- pt.set(t, s);
214
- }
215
- } else
216
- s = r ? t.toJSON() : e == "symbol" ? t.toString() : e == "string" ? JSON.stringify(t) : "" + t;
217
- return s;
218
- }, Pt = (t) => {
219
- if (F(t))
220
- try {
221
- t = t();
222
- } catch {
223
- t = "";
224
- }
225
- const e = t;
226
- return t = typeof t == "string" ? t : (Array.isArray(t) ? t.length : t) ? Ft(t) : "", [
227
- t,
228
- e
229
- ];
230
- };
231
- let Me = 0;
232
- const Mt = () => ++Me;
233
- async function le(...t) {
234
- const [e, n, r, o] = t, i = k({
235
- populateCache: !0,
236
- throwOnError: !0
237
- }, typeof o == "boolean" ? {
238
- revalidate: o
239
- } : o || {});
240
- let s = i.populateCache;
241
- const d = i.rollbackOnError;
242
- let m = i.optimisticData;
243
- const D = (l) => typeof d == "function" ? d(l) : d !== !1, v = i.throwOnError;
244
- if (F(n)) {
245
- const l = n, c = [], h = e.keys();
246
- for (const f of h)
247
- // Skip the special useSWRInfinite and useSWRSubscription keys.
248
- !/^\$(inf|sub)\$/.test(f) && l(e.get(f)._k) && c.push(f);
249
- return Promise.all(c.map(u));
250
- }
251
- return u(n);
252
- async function u(l) {
253
- const [c] = Pt(l);
254
- if (!c) return;
255
- const [h, f] = ue(e, c), [E, T, a, J] = $.get(e), M = () => {
256
- const I = E[c];
257
- return (F(i.revalidate) ? i.revalidate(h().data, l) : i.revalidate !== !1) && (delete a[c], delete J[c], I && I[0]) ? I[0](ae).then(() => h().data) : h().data;
258
- };
259
- if (t.length < 3)
260
- return M();
261
- let S = r, A, L = !1;
262
- const W = Mt();
263
- T[c] = [
264
- W,
265
- 0
266
- ];
267
- const y = !p(m), z = h(), V = z.data, Y = z._c, G = p(Y) ? V : Y;
268
- if (y && (m = F(m) ? m(G, V) : m, f({
269
- data: m,
270
- _c: G
271
- })), F(S))
272
- try {
273
- S = S(G);
274
- } catch (I) {
275
- A = I, L = !0;
276
- }
277
- if (S && ce(S))
278
- if (S = await S.catch((I) => {
279
- A = I, L = !0;
280
- }), W !== T[c][0]) {
281
- if (L) throw A;
282
- return S;
283
- } else L && y && D(A) && (s = !0, f({
284
- data: G,
285
- _c: b
286
- }));
287
- if (s && !L)
288
- if (F(s)) {
289
- const I = s(S, G);
290
- f({
291
- data: I,
292
- error: b,
293
- _c: b
294
- });
295
- } else
296
- f({
297
- data: S,
298
- error: b,
299
- _c: b
300
- });
301
- if (T[c][1] = Mt(), Promise.resolve(M()).then(() => {
302
- f({
303
- _c: b
304
- });
305
- }), L) {
306
- if (v) throw A;
307
- return;
308
- }
309
- return S;
310
- }
311
- }
312
- const te = (t, e) => {
313
- for (const n in t)
314
- t[n][0] && t[n][0](e);
315
- }, We = (t, e) => {
316
- if (!$.has(t)) {
317
- const n = k(Ne, e), r = /* @__PURE__ */ Object.create(null), o = le.bind(b, t);
318
- let i = H;
319
- const s = /* @__PURE__ */ Object.create(null), d = (v, u) => {
320
- const l = s[v] || [];
321
- return s[v] = l, l.push(u), () => l.splice(l.indexOf(u), 1);
322
- }, m = (v, u, l) => {
323
- t.set(v, u);
324
- const c = s[v];
325
- if (c)
326
- for (const h of c)
327
- h(u, l);
328
- }, D = () => {
329
- if (!$.has(t) && ($.set(t, [
330
- r,
331
- /* @__PURE__ */ Object.create(null),
332
- /* @__PURE__ */ Object.create(null),
333
- /* @__PURE__ */ Object.create(null),
334
- o,
335
- m,
336
- d
337
- ]), !nt)) {
338
- const v = n.initFocus(setTimeout.bind(b, te.bind(b, r, se))), u = n.initReconnect(setTimeout.bind(b, te.bind(b, r, ie)));
339
- i = () => {
340
- v && v(), u && u(), $.delete(t);
341
- };
342
- }
343
- };
344
- return D(), [
345
- t,
346
- o,
347
- D,
348
- i
349
- ];
350
- }
351
- return [
352
- t,
353
- $.get(t)[4]
354
- ];
355
- }, Pe = (t, e, n, r, o) => {
356
- const i = n.errorRetryCount, s = o.retryCount, d = ~~((Math.random() + 0.5) * (1 << (s < 8 ? s : 8))) * n.errorRetryInterval;
357
- !p(i) && s > i || setTimeout(r, d, o);
358
- }, Ue = Ct, [fe, qe] = We(/* @__PURE__ */ new Map()), $e = k(
359
- {
360
- // events
361
- onLoadingSlow: H,
362
- onSuccess: H,
363
- onError: H,
364
- onErrorRetry: Pe,
365
- onDiscarded: H,
366
- // switches
367
- revalidateOnFocus: !0,
368
- revalidateOnReconnect: !0,
369
- revalidateIfStale: !0,
370
- shouldRetryOnError: !0,
371
- // timeouts
372
- errorRetryInterval: Zt ? 1e4 : 5e3,
373
- focusThrottleInterval: 5 * 1e3,
374
- dedupingInterval: 2 * 1e3,
375
- loadingTimeout: Zt ? 5e3 : 3e3,
376
- // providers
377
- compare: Ue,
378
- isPaused: () => !1,
379
- cache: fe,
380
- mutate: qe,
381
- fallback: {}
382
- },
383
- // use web preset by default
384
- Ie
385
- ), He = (t, e) => {
386
- const n = k(t, e);
387
- if (e) {
388
- const { use: r, fallback: o } = t, { use: i, fallback: s } = e;
389
- r && i && (n.use = r.concat(i)), o && s && (n.fallback = k(o, s));
390
- }
391
- return n;
392
- }, ke = ve({}), Ge = "$inf$", de = ut && window.__SWR_DEVTOOLS_USE__, Be = de ? window.__SWR_DEVTOOLS_USE__ : [], Ke = () => {
393
- de && (window.__SWR_DEVTOOLS_REACT__ = ct);
394
- }, Je = (t) => F(t[1]) ? [
395
- t[0],
396
- t[1],
397
- t[2] || {}
398
- ] : [
399
- t[0],
400
- null,
401
- (t[1] === null ? t[2] : t[1]) || {}
402
- ], ze = () => {
403
- const t = Oe(ke);
404
- return mt(() => k($e, t), [
405
- t
406
- ]);
407
- }, Ye = (t) => (e, n, r) => t(e, n && ((...i) => {
408
- const [s] = Pt(e), [, , , d] = $.get(fe);
409
- if (s.startsWith(Ge))
410
- return n(...i);
411
- const m = d[s];
412
- return p(m) ? n(...i) : (delete d[s], m);
413
- }), r), Xe = Be.concat(Ye), Qe = (t) => function(...n) {
414
- const r = ze(), [o, i, s] = Je(n), d = He(r, s);
415
- let m = t;
416
- const { use: D } = d, v = (D || []).concat(Xe);
417
- for (let u = v.length; u--; )
418
- m = v[u](m);
419
- return m(o, i || d.fetcher || null, d);
420
- }, Ze = (t, e, n) => {
421
- const r = e[t] || (e[t] = []);
422
- return r.push(n), () => {
423
- const o = r.indexOf(n);
424
- o >= 0 && (r[o] = r[r.length - 1], r.pop());
425
- };
426
- };
427
- Ke();
428
- const Tt = ct.use || // This extra generic is to avoid TypeScript mixing up the generic and JSX sytax
429
- // and emitting an error.
430
- // We assume that this is only for the `use(thenable)` case, not `use(context)`.
431
- // https://github.com/facebook/react/blob/aed00dacfb79d17c53218404c52b1c7aa59c4a89/packages/react-server/src/ReactFizzThenable.js#L45
432
- ((t) => {
433
- switch (t.status) {
434
- case "pending":
435
- throw t;
436
- case "fulfilled":
437
- return t.value;
438
- case "rejected":
439
- throw t.reason;
440
- default:
441
- throw t.status = "pending", t.then((e) => {
442
- t.status = "fulfilled", t.value = e;
443
- }, (e) => {
444
- t.status = "rejected", t.reason = e;
445
- }), t;
446
- }
447
- }), Lt = {
448
- dedupe: !0
449
- }, ee = Promise.resolve(b), tn = () => H, en = (t, e, n) => {
450
- const { cache: r, compare: o, suspense: i, fallbackData: s, revalidateOnMount: d, revalidateIfStale: m, refreshInterval: D, refreshWhenHidden: v, refreshWhenOffline: u, keepPreviousData: l, strictServerPrefetchWarning: c } = n, [h, f, E, T] = $.get(r), [a, J] = Pt(t), M = U(!1), S = U(!1), A = U(a), L = U(e), W = U(n), y = () => W.current, z = () => y().isVisible() && y().isOnline(), [V, Y, G, I] = ue(r, a), X = U({}).current, Q = p(s) ? p(n.fallback) ? b : n.fallback[a] : s, Ut = (g, O) => {
451
- for (const w in X) {
452
- const _ = w;
453
- if (_ === "data") {
454
- if (!o(g[_], O[_]) && (!p(g[_]) || !o(ft, O[_])))
455
- return !1;
456
- } else if (O[_] !== g[_])
457
- return !1;
458
- }
459
- return !0;
460
- }, St = !M.current, qt = mt(() => {
461
- const g = V(), O = I(), w = (R) => {
462
- const N = k(R);
463
- return delete N._k, (() => {
464
- if (!a || !e || y().isPaused()) return !1;
465
- if (St && !p(d)) return d;
466
- const it = p(Q) ? N.data : Q;
467
- return p(it) || m;
468
- })() ? {
469
- isValidating: !0,
470
- isLoading: !0,
471
- ...N
472
- } : N;
473
- }, _ = w(g), j = g === O ? _ : w(O);
474
- let C = _;
475
- return [
476
- () => {
477
- const R = w(V());
478
- return Ut(R, C) ? (C.data = R.data, C.isLoading = R.isLoading, C.isValidating = R.isValidating, C.error = R.error, C) : (C = R, R);
479
- },
480
- () => j
481
- ];
482
- }, [
483
- r,
484
- a
485
- ]), Z = zt.useSyncExternalStore(ht(
486
- (g) => G(a, (O, w) => {
487
- Ut(w, O) || g();
488
- }),
489
- // eslint-disable-next-line react-hooks/exhaustive-deps
490
- [
491
- r,
492
- a
493
- ]
494
- ), qt[0], qt[1]), he = h[a] && h[a].length > 0, tt = Z.data, B = p(tt) ? Q && ce(Q) ? Tt(Q) : Q : tt, lt = Z.error, gt = U(B), ft = l ? p(tt) ? p(gt.current) ? B : gt.current : tt : B, K = a && p(B), rt = U(null);
495
- !nt && // getServerSnapshot is only called during hydration
496
- // eslint-disable-next-line react-hooks/rules-of-hooks
497
- zt.useSyncExternalStore(tn, () => (rt.current = !1, rt), () => (rt.current = !0, rt));
498
- const me = rt.current;
499
- c && me && !i && K && console.warn(`Missing pre-initiated data for serialized key "${a}" during server-side rendering. Data fetching should be initiated on the server and provided to SWR via fallback data. You can set "strictServerPrefetchWarning: false" to disable this warning.`);
500
- const $t = !a || !e || y().isPaused() || he && !p(lt) ? !1 : St && !p(d) ? d : i ? p(B) ? !1 : m : p(B) || m, Ht = St && $t, Se = p(Z.isValidating) ? Ht : Z.isValidating, ge = p(Z.isLoading) ? Ht : Z.isLoading, ot = ht(
501
- async (g) => {
502
- const O = L.current;
503
- if (!a || !O || S.current || y().isPaused())
504
- return !1;
505
- let w, _, j = !0;
506
- const C = g || {}, R = !E[a] || !C.dedupe, N = () => Qt ? !S.current && a === A.current && M.current : a === A.current, st = {
507
- isValidating: !1,
508
- isLoading: !1
509
- }, it = () => {
510
- Y(st);
511
- }, Gt = () => {
512
- const x = E[a];
513
- x && x[1] === _ && delete E[a];
514
- }, Bt = {
515
- isValidating: !0
516
- };
517
- p(V().data) && (Bt.isLoading = !0);
518
- try {
519
- if (R && (Y(Bt), n.loadingTimeout && p(V().data) && setTimeout(() => {
520
- j && N() && y().onLoadingSlow(a, n);
521
- }, n.loadingTimeout), E[a] = [
522
- O(J),
523
- Mt()
524
- ]), [w, _] = E[a], w = await w, R && setTimeout(Gt, n.dedupingInterval), !E[a] || E[a][1] !== _)
525
- return R && N() && y().onDiscarded(a), !1;
526
- st.error = b;
527
- const x = f[a];
528
- if (!p(x) && // case 1
529
- (_ <= x[0] || // case 2
530
- _ <= x[1] || // case 3
531
- x[1] === 0))
532
- return it(), R && N() && y().onDiscarded(a), !1;
533
- const P = V().data;
534
- st.data = o(P, w) ? P : w, R && N() && y().onSuccess(w, a, n);
535
- } catch (x) {
536
- Gt();
537
- const P = y(), { shouldRetryOnError: Et } = P;
538
- P.isPaused() || (st.error = x, R && N() && (P.onError(x, a, P), (Et === !0 || F(Et) && Et(x)) && (!y().revalidateOnFocus || !y().revalidateOnReconnect || z()) && P.onErrorRetry(x, a, P, (Ee) => {
539
- const vt = h[a];
540
- vt && vt[0] && vt[0](Yt, Ee);
541
- }, {
542
- retryCount: (C.retryCount || 0) + 1,
543
- dedupe: !0
544
- })));
545
- }
546
- return j = !1, it(), !0;
547
- },
548
- // `setState` is immutable, and `eventsCallback`, `fnArg`, and
549
- // `keyValidating` are depending on `key`, so we can exclude them from
550
- // the deps array.
551
- //
552
- // FIXME:
553
- // `fn` and `config` might be changed during the lifecycle,
554
- // but they might be changed every render like this.
555
- // `useSWR('key', () => fetch('/api/'), { suspense: true })`
556
- // So we omit the values from the deps array
557
- // even though it might cause unexpected behaviors.
558
- // eslint-disable-next-line react-hooks/exhaustive-deps
559
- [
560
- a,
561
- r
562
- ]
563
- ), kt = ht(
564
- // Use callback to make sure `keyRef.current` returns latest result every time
565
- (...g) => le(r, A.current, ...g),
566
- // eslint-disable-next-line react-hooks/exhaustive-deps
567
- []
568
- );
569
- if (_t(() => {
570
- L.current = e, W.current = n, p(tt) || (gt.current = tt);
571
- }), _t(() => {
572
- if (!a) return;
573
- const g = ot.bind(b, Lt);
574
- let O = 0;
575
- y().revalidateOnFocus && (O = Date.now() + y().focusThrottleInterval);
576
- const _ = Ze(a, h, (j, C = {}) => {
577
- if (j == se) {
578
- const R = Date.now();
579
- y().revalidateOnFocus && R > O && z() && (O = R + y().focusThrottleInterval, g());
580
- } else if (j == ie)
581
- y().revalidateOnReconnect && z() && g();
582
- else {
583
- if (j == ae)
584
- return ot();
585
- if (j == Yt)
586
- return ot(C);
587
- }
588
- });
589
- return S.current = !1, A.current = a, M.current = !0, Y({
590
- _k: J
591
- }), $t && (E[a] || (p(B) || nt ? g() : Ve(g))), () => {
592
- S.current = !0, _();
593
- };
594
- }, [
595
- a
596
- ]), _t(() => {
597
- let g;
598
- function O() {
599
- const _ = F(D) ? D(V().data) : D;
600
- _ && g !== -1 && (g = setTimeout(w, _));
601
- }
602
- function w() {
603
- !V().error && (v || y().isVisible()) && (u || y().isOnline()) ? ot(Lt).then(O) : O();
604
- }
605
- return O(), () => {
606
- g && (clearTimeout(g), g = -1);
607
- };
608
- }, [
609
- D,
610
- v,
611
- u,
612
- a
613
- ]), we(ft), i) {
614
- if (!Qt && nt && K)
615
- throw new Error("Fallback data is required when using Suspense in SSR.");
616
- K && (L.current = e, W.current = n, S.current = !1);
617
- const g = T[a], O = !p(g) && K ? kt(g) : ee;
618
- if (Tt(O), !p(lt) && K)
619
- throw lt;
620
- const w = K ? ot(Lt) : ee;
621
- !p(ft) && K && (w.status = "fulfilled", w.value = !0), Tt(w);
622
- }
623
- return {
624
- mutate: kt,
625
- get data() {
626
- return X.data = !0, ft;
627
- },
628
- get error() {
629
- return X.error = !0, lt;
630
- },
631
- get isValidating() {
632
- return X.isValidating = !0, Se;
633
- },
634
- get isLoading() {
635
- return X.isLoading = !0, ge;
636
- }
637
- };
638
- }, nn = Qe(en);
639
- function pe() {
640
- return window.document.location.host.indexOf("localhost") === 0 ? "http://localhost:3100" : "https://api.graffiticode.org";
50
+ var v = (e) => typeof e == "object" && !!e && !Array.isArray(e), y = (e, t) => t == null ? e : v(e) && v(t) ? {
51
+ ...e,
52
+ ...t
53
+ } : t;
54
+ function b(e, { type: t, args: n }) {
55
+ switch (t) {
56
+ case "init": return v(n) ? { ...n } : n;
57
+ case "compiled":
58
+ case "loaded":
59
+ case "update":
60
+ case "response": return y(e, n);
61
+ case "focus": return {
62
+ ...e,
63
+ focus: n
64
+ };
65
+ default: return console.error(`Unimplemented action type: ${t}`), e;
66
+ }
641
67
  }
642
- const rn = async ({
643
- accessToken: t,
644
- id: e
645
- }) => {
646
- const n = await fetch(`${pe()}/data?id=${e}`, {
647
- headers: { Authorization: t || "" }
648
- }), { status: r, error: o, data: i } = await n.json();
649
- if (r !== "success")
650
- throw new Error(`failed to get data ${e}: ${o == null ? void 0 : o.message}`);
651
- return i;
652
- }, on = async ({
653
- accessToken: t,
654
- id: e,
655
- data: n
656
- }) => {
657
- var i;
658
- const o = await (await fetch(`${pe()}/compile`, {
659
- method: "POST",
660
- headers: {
661
- "Content-Type": "application/json",
662
- authorization: t || "",
663
- "x-graffiticode-storage-type": "persistent"
664
- },
665
- body: JSON.stringify({ id: e, data: n })
666
- })).json();
667
- if (o.status !== "success")
668
- throw new Error(`failed to post compile ${e}: ${(i = o.error) == null ? void 0 : i.message}`);
669
- return o.data;
670
- }, sn = async ({
671
- accessToken: t,
672
- id: e,
673
- data: n
674
- }) => {
675
- const r = Object.keys(n).length > 0 ? 1 : 2;
676
- return e = e.split("+").slice(0, r).join("+"), await on({ accessToken: t, id: e, data: n });
677
- }, an = async ({
678
- accessToken: t,
679
- id: e
680
- }) => await rn({ accessToken: t, id: e }), cn = /* @__PURE__ */ new Set(["update", "response"]), un = /* @__PURE__ */ new Set(["init", "loaded"]);
681
- function ne(t) {
682
- return t && typeof t == "object" && Array.isArray(t.errors) ? { data: t.data ?? null, errors: t.errors } : { data: t, errors: [] };
683
- }
684
- function re(t, e) {
685
- return e.length > 0 ? !0 : !(t == null || typeof t == "object" && !Array.isArray(t) && Object.keys(t).length === 0);
686
- }
687
- function ln(t, { type: e, args: n }) {
688
- switch (e) {
689
- case "init":
690
- return { ...n };
691
- case "compiled":
692
- case "loaded":
693
- case "update":
694
- case "response":
695
- return { ...t, ...n };
696
- case "focus":
697
- return { ...t, focus: n };
698
- default:
699
- return console.error(`Unimplemented action type: ${e}`), t;
700
- }
701
- }
702
- const fn = (t, e) => (n, r) => {
703
- const o = t ? t(n.data, r) : void 0, i = o !== void 0 ? o : ln(n.data, r);
704
- return i === n.data || JSON.stringify(i) === JSON.stringify(n.data) ? n : {
705
- data: i,
706
- renderData: e === "live" || un.has(r.type) ? i : n.renderData,
707
- compileSeq: n.compileSeq + (cn.has(r.type) ? 1 : 0)
708
- };
709
- }, gn = ({
710
- Form: t,
711
- reduce: e,
712
- formModel: n = "live"
713
- }) => {
714
- var M;
715
- const [r] = at(() => new URLSearchParams(window.location.search)), [o] = at(r.get("id") ?? void 0), [i] = at(r.get("access_token") ?? void 0), [s] = at(r.get("origin") ?? void 0), [d, m] = at([]), D = mt(() => fn(e, n), [e, n]), [v, u] = _e(D, void 0, () => ({
716
- data: {},
717
- renderData: {},
718
- compileSeq: 0
719
- })), { data: l, renderData: c, compileSeq: h } = v;
720
- et(() => {
721
- const S = r.get("data");
722
- S && u({ type: "init", args: JSON.parse(S) });
723
- }, []), et(() => {
724
- s && window.parent.postMessage({ type: "onload", data: l }, s);
725
- }, []), et(() => {
726
- s && window.parent.postMessage({ type: "data-updated", data: l }, s);
727
- }, [JSON.stringify(l)]);
728
- const f = nn(o ? { accessToken: i, id: o } : null, an, {
729
- revalidateOnFocus: !1,
730
- revalidateOnReconnect: !1,
731
- revalidateIfStale: !1
732
- });
733
- et(() => {
734
- if (f.data === void 0) return;
735
- const S = ne(f.data);
736
- u({ type: "loaded", args: S.data }), m(S.errors);
737
- }, [f.data]);
738
- const E = U(0);
739
- et(() => {
740
- if (h === 0 || !o) return;
741
- const S = ++E.current;
742
- s && window.parent.postMessage({ focus: { type: "update", value: l } }, s);
743
- let A = !1;
744
- return (async () => {
745
- try {
746
- const L = await sn({ accessToken: i, id: o, data: l });
747
- if (A || S !== E.current) return;
748
- const W = ne(L);
749
- u({ type: "compiled", args: W.data }), m(W.errors);
750
- } catch (L) {
751
- !A && S === E.current && m([{ message: String((L == null ? void 0 : L.message) ?? L) }]);
752
- }
753
- })(), () => {
754
- A = !0;
755
- };
756
- }, [h]);
757
- const T = re(c, []) ? c : l, a = mt(() => ({ data: T, errors: d, apply: u }), [T, d]), J = ht(() => f.mutate(), [f]);
758
- return re(l, d) ? /* @__PURE__ */ q(t, { state: a }) : f.error ? /* @__PURE__ */ bt("div", { role: "alert", style: oe, children: [
759
- /* @__PURE__ */ q("p", { style: { margin: 0, fontWeight: 600 }, children: "Couldn’t load this form." }),
760
- /* @__PURE__ */ q("p", { style: { margin: "4px 0 12px", color: "#555" }, children: String(((M = f.error) == null ? void 0 : M.message) ?? f.error) }),
761
- /* @__PURE__ */ q("button", { type: "button", style: dn, onClick: J, children: "Retry" })
762
- ] }) : f.isLoading ? /* @__PURE__ */ q("div", { role: "status", "aria-live": "polite", style: oe, children: "Loading…" }) : /* @__PURE__ */ q("div", {});
763
- }, oe = {
764
- display: "flex",
765
- flexDirection: "column",
766
- alignItems: "center",
767
- justifyContent: "center",
768
- height: "100%",
769
- padding: "24px",
770
- textAlign: "center",
771
- font: "14px/1.4 system-ui, sans-serif"
772
- }, dn = {
773
- padding: "6px 14px",
774
- border: "1px solid #888",
775
- borderRadius: "4px",
776
- background: "#fff",
777
- cursor: "pointer"
68
+ var x = (e, t) => {
69
+ if (e === t) return !0;
70
+ if (typeof e != typeof t || e === null || t === null || typeof e != "object" || Array.isArray(e) !== Array.isArray(t)) return !1;
71
+ if (Array.isArray(e)) return e.length === t.length && e.every((e, n) => x(e, t[n]));
72
+ let n = Object.keys(e);
73
+ return n.length === Object.keys(t).length && n.every((n) => Object.prototype.hasOwnProperty.call(t, n) && x(e[n], t[n]));
74
+ }, S = (e, t) => (n, r) => {
75
+ let i = e ? e(n.data, r) : void 0, a = i === void 0 ? b(n.data, r) : i;
76
+ return a === n.data || x(a, n.data) ? n : {
77
+ data: a,
78
+ renderData: t === "live" || h.has(r.type) ? a : n.renderData,
79
+ compileSeq: n.compileSeq + +!!m.has(r.type),
80
+ version: n.version + 1
81
+ };
82
+ }, C = ({ Form: l, reduce: u, formModel: d = "live" }) => {
83
+ let [m] = a(() => new URLSearchParams(window.location.search)), [h] = a(m.get("id") ?? void 0), [v] = a(m.get("access_token") ?? void 0), [y] = a(m.get("origin") ?? void 0), [b, x] = a([]), C = n(() => S(u, d), [u, d]), [E, D] = r(C, void 0, () => ({
84
+ data: {},
85
+ renderData: {},
86
+ compileSeq: 0,
87
+ version: 0
88
+ })), { data: O, renderData: k, compileSeq: A, version: j } = E;
89
+ t(() => {
90
+ let e = m.get("data");
91
+ e && D({
92
+ type: "init",
93
+ args: JSON.parse(e)
94
+ });
95
+ }, []), t(() => {
96
+ y && window.parent.postMessage({
97
+ type: "onload",
98
+ data: O
99
+ }, y);
100
+ }, []), t(() => {
101
+ y && window.parent.postMessage({
102
+ type: "data-updated",
103
+ data: O
104
+ }, y);
105
+ }, [j]);
106
+ let M = o(h ? {
107
+ accessToken: v,
108
+ id: h
109
+ } : null, p, {
110
+ revalidateOnFocus: !1,
111
+ revalidateOnReconnect: !1,
112
+ revalidateIfStale: !1
113
+ });
114
+ t(() => {
115
+ if (M.data === void 0) return;
116
+ let e = g(M.data);
117
+ D({
118
+ type: "loaded",
119
+ args: e.data
120
+ }), x(e.errors);
121
+ }, [M.data]);
122
+ let N = i(0);
123
+ t(() => {
124
+ if (A === 0 || !h) return;
125
+ let e = ++N.current;
126
+ y && window.parent.postMessage({ focus: {
127
+ type: "update",
128
+ value: O
129
+ } }, y);
130
+ let t = !1;
131
+ return (async () => {
132
+ try {
133
+ let n = await f({
134
+ accessToken: v,
135
+ id: h,
136
+ data: O
137
+ });
138
+ if (t || e !== N.current) return;
139
+ let r = g(n);
140
+ D({
141
+ type: "compiled",
142
+ args: r.data
143
+ }), x(r.errors);
144
+ } catch (n) {
145
+ !t && e === N.current && x([{ message: String(n?.message ?? n) }]);
146
+ }
147
+ })(), () => {
148
+ t = !0;
149
+ };
150
+ }, [A]);
151
+ let P = _(k, []) ? k : O, F = n(() => ({
152
+ data: P,
153
+ errors: b,
154
+ apply: D
155
+ }), [P, b]), I = e(() => M.mutate(), [M]);
156
+ return _(O, b) ? /* @__PURE__ */ s(l, { state: F }) : M.error ? /* @__PURE__ */ c("div", {
157
+ role: "alert",
158
+ style: w,
159
+ children: [
160
+ /* @__PURE__ */ s("p", {
161
+ style: {
162
+ margin: 0,
163
+ fontWeight: 600
164
+ },
165
+ children: "Couldn’t load this form."
166
+ }),
167
+ /* @__PURE__ */ s("p", {
168
+ style: {
169
+ margin: "4px 0 12px",
170
+ color: "#555"
171
+ },
172
+ children: String(M.error?.message ?? M.error)
173
+ }),
174
+ /* @__PURE__ */ s("button", {
175
+ type: "button",
176
+ style: T,
177
+ onClick: I,
178
+ children: "Retry"
179
+ })
180
+ ]
181
+ }) : M.isLoading ? /* @__PURE__ */ s("div", {
182
+ role: "status",
183
+ "aria-live": "polite",
184
+ style: w,
185
+ children: "Loading…"
186
+ }) : /* @__PURE__ */ s("div", {});
187
+ }, w = {
188
+ display: "flex",
189
+ flexDirection: "column",
190
+ alignItems: "center",
191
+ justifyContent: "center",
192
+ height: "100%",
193
+ padding: "24px",
194
+ textAlign: "center",
195
+ font: "14px/1.4 system-ui, sans-serif"
196
+ }, T = {
197
+ padding: "6px 14px",
198
+ border: "1px solid #888",
199
+ borderRadius: "4px",
200
+ background: "#fff",
201
+ cursor: "pointer"
778
202
  };
779
- function pn({ errors: t }) {
780
- return /* @__PURE__ */ q("div", { className: "flex flex-col gap-2 font-mono text-xs", children: t.map((e, n) => /* @__PURE__ */ bt(
781
- "div",
782
- {
783
- className: "rounded-md border border-red-200 bg-red-50 p-3 text-red-800",
784
- children: [
785
- e.message,
786
- typeof e.from == "number" && e.from >= 0 && /* @__PURE__ */ bt("span", { className: "ml-2 text-red-400", children: [
787
- "[",
788
- e.from,
789
- typeof e.to == "number" && e.to >= 0 ? `–${e.to}` : "",
790
- "]"
791
- ] })
792
- ]
793
- },
794
- n
795
- )) });
203
+ //#endregion
204
+ //#region src/components/form/Form.tsx
205
+ function E({ errors: e }) {
206
+ return /* @__PURE__ */ s("div", {
207
+ className: "flex flex-col gap-2 font-mono text-xs",
208
+ children: e.map((e, t) => /* @__PURE__ */ c("div", {
209
+ className: "rounded-md border border-red-200 bg-red-50 p-3 text-red-800",
210
+ children: [e.message, typeof e.from == "number" && e.from >= 0 && /* @__PURE__ */ c("span", {
211
+ className: "ml-2 text-red-400",
212
+ children: [
213
+ "[",
214
+ e.from,
215
+ typeof e.to == "number" && e.to >= 0 ? `–${e.to}` : "",
216
+ "]"
217
+ ]
218
+ })]
219
+ }, t))
220
+ });
796
221
  }
797
- const En = ({ state: t }) => {
798
- const e = t.errors ?? [];
799
- if (e.length > 0)
800
- return /* @__PURE__ */ q(pn, { errors: e });
801
- const n = t.data;
802
- return /* @__PURE__ */ q("pre", { className: "rounded-md bg-zinc-50 text-zinc-900 text-xs font-mono p-4 overflow-auto", children: JSON.stringify(n, null, 2) });
803
- };
804
- export {
805
- En as Form,
806
- gn as View
222
+ var D = ({ state: e }) => {
223
+ let t = e.errors ?? [];
224
+ if (t.length > 0) return /* @__PURE__ */ s(E, { errors: t });
225
+ let n = e.data;
226
+ return /* @__PURE__ */ s("pre", {
227
+ className: "rounded-md bg-zinc-50 text-zinc-900 text-xs font-mono p-4 overflow-auto",
228
+ children: JSON.stringify(n, null, 2)
229
+ });
807
230
  };
808
- //# sourceMappingURL=index.js.map
231
+ //#endregion
232
+ export { D as Form, C as View };
233
+
234
+ //# sourceMappingURL=index.js.map