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