@object-ui/plugin-aggrid 3.0.3 → 3.1.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/.turbo/turbo-build.log +25 -25
- package/dist/{AddressField-CUHm7scl.js → AddressField-Ca6aSbFW.js} +1 -1
- package/dist/{AgGridImpl-DVyHqLJi.js → AgGridImpl-Brsm5CmH.js} +1 -1
- package/dist/{AutoNumberField-twP63aM8.js → AutoNumberField-DrGjmfKt.js} +1 -1
- package/dist/FileField-CMfNMmvO.js +144 -0
- package/dist/{FormulaField-CsRwvjVZ.js → FormulaField-Cpf8sXXM.js} +1 -1
- package/dist/{GeolocationField-DQ_J9TGl.js → GeolocationField-D-EW8C92.js} +2 -2
- package/dist/GridField--t291OLT.js +29 -0
- package/dist/{LocationField-C4zcjds3.js → LocationField-C5pdO0VY.js} +1 -1
- package/dist/{MasterDetailField-DybIeqDQ.js → MasterDetailField--lQGMhKf.js} +2 -2
- package/dist/{ObjectAgGridImpl-CotBxBL9.js → ObjectAgGridImpl-Cy851etj.js} +4787 -4707
- package/dist/{ObjectField-CVXoKqAF.js → ObjectField-CwbQIROw.js} +1 -1
- package/dist/{QRCodeField-lmARTFQy.js → QRCodeField-BksI6bwG.js} +2 -2
- package/dist/{RichTextField-5ce8qKzb.js → RichTextField-DSkfYMMR.js} +1 -1
- package/dist/{SignatureField-VES1Umvd.js → SignatureField-sBd3qsYZ.js} +2 -2
- package/dist/{SummaryField-CQsFucuH.js → SummaryField-fM-E9oD5.js} +1 -1
- package/dist/{UserField-Dxq9ZQ9l.js → UserField-lwxkNoSY.js} +2 -2
- package/dist/{VectorField-BJoHEqgv.js → VectorField-B5I-CcgP.js} +1 -1
- package/dist/{index-DSI77JcG.js → index-Dipgpv5R.js} +1 -1
- package/dist/index.css +1 -1
- package/dist/index.js +1 -1
- package/dist/index.umd.cjs +86 -81
- package/package.json +10 -10
- package/src/AgGridImpl.tsx +4 -4
- package/src/ObjectAgGridImpl.tsx +11 -3
- package/dist/FileField-Cxql0zFQ.js +0 -101
- package/dist/GridField-BrF4x9mD.js +0 -29
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
|
|
2
|
-
> @object-ui/plugin-aggrid@3.0
|
|
2
|
+
> @object-ui/plugin-aggrid@3.1.0 build /home/runner/work/objectui/objectui/packages/plugin-aggrid
|
|
3
3
|
> vite build
|
|
4
4
|
|
|
5
5
|
[36mvite v7.3.1 [32mbuilding client environment for production...[36m[39m
|
|
6
6
|
transforming...
|
|
7
|
-
[32m✓[39m
|
|
7
|
+
[32m✓[39m 1783 modules transformed.
|
|
8
8
|
rendering chunks...
|
|
9
9
|
[33m[plugin vite:reporter]
|
|
10
10
|
(!) /home/runner/work/objectui/objectui/packages/fields/src/widgets/TextField.tsx is dynamically imported by /home/runner/work/objectui/objectui/packages/fields/src/index.tsx but also statically imported by /home/runner/work/objectui/objectui/packages/fields/src/index.tsx, dynamic import will not move module into another chunk.
|
|
@@ -72,28 +72,28 @@ rendering chunks...
|
|
|
72
72
|
[32m
|
|
73
73
|
[36m[vite:dts][32m Start generate declaration files...[39m
|
|
74
74
|
computing gzip size...
|
|
75
|
-
[32m[36m[vite:dts][32m Declaration files built in
|
|
75
|
+
[32m[36m[vite:dts][32m Declaration files built in 20710ms.
|
|
76
76
|
[39m
|
|
77
|
-
[2mdist/[22m[35mindex.css [39m[1m[
|
|
77
|
+
[2mdist/[22m[35mindex.css [39m[1m[2m370.94 kB[22m[1m[22m[2m │ gzip: 72.89 kB[22m
|
|
78
78
|
[2mdist/[22m[36mindex.js [39m[1m[2m 0.22 kB[22m[1m[22m[2m │ gzip: 0.16 kB[22m
|
|
79
|
-
[2mdist/[22m[36mAutoNumberField-
|
|
80
|
-
[2mdist/[22m[36mSummaryField-
|
|
81
|
-
[2mdist/[22m[36mFormulaField-
|
|
82
|
-
[2mdist/[22m[36mVectorField-
|
|
83
|
-
[2mdist/[22m[36mLocationField-
|
|
84
|
-
[2mdist/[22m[36mRichTextField-
|
|
85
|
-
[2mdist/[22m[36mObjectField-
|
|
86
|
-
[2mdist/[22m[36mGridField
|
|
87
|
-
[2mdist/[22m[36mUserField-
|
|
88
|
-
[2mdist/[22m[36mAddressField-
|
|
89
|
-
[2mdist/[22m[36mSignatureField-
|
|
90
|
-
[2mdist/[22m[36mQRCodeField-
|
|
91
|
-
[2mdist/[22m[
|
|
92
|
-
[2mdist/[22m[
|
|
93
|
-
[2mdist/[22m[
|
|
94
|
-
[2mdist/[22m[36mAgGridImpl-
|
|
95
|
-
[2mdist/[22m[36mindex-
|
|
96
|
-
[2mdist/[22m[36mObjectAgGridImpl-
|
|
97
|
-
[2mdist/[22m[35mindex.css [39m[1m[
|
|
98
|
-
[2mdist/[22m[36mindex.umd.cjs [39m[1m[
|
|
99
|
-
[32m✓ built in
|
|
79
|
+
[2mdist/[22m[36mAutoNumberField-DrGjmfKt.js [39m[1m[2m 0.29 kB[22m[1m[22m[2m │ gzip: 0.25 kB[22m
|
|
80
|
+
[2mdist/[22m[36mSummaryField-fM-E9oD5.js [39m[1m[2m 0.49 kB[22m[1m[22m[2m │ gzip: 0.35 kB[22m
|
|
81
|
+
[2mdist/[22m[36mFormulaField-Cpf8sXXM.js [39m[1m[2m 0.53 kB[22m[1m[22m[2m │ gzip: 0.37 kB[22m
|
|
82
|
+
[2mdist/[22m[36mVectorField-B5I-CcgP.js [39m[1m[2m 0.81 kB[22m[1m[22m[2m │ gzip: 0.43 kB[22m
|
|
83
|
+
[2mdist/[22m[36mLocationField-C5pdO0VY.js [39m[1m[2m 0.95 kB[22m[1m[22m[2m │ gzip: 0.53 kB[22m
|
|
84
|
+
[2mdist/[22m[36mRichTextField-DSkfYMMR.js [39m[1m[2m 1.19 kB[22m[1m[22m[2m │ gzip: 0.58 kB[22m
|
|
85
|
+
[2mdist/[22m[36mObjectField-CwbQIROw.js [39m[1m[2m 1.65 kB[22m[1m[22m[2m │ gzip: 0.76 kB[22m
|
|
86
|
+
[2mdist/[22m[36mGridField--t291OLT.js [39m[1m[2m 1.78 kB[22m[1m[22m[2m │ gzip: 0.67 kB[22m
|
|
87
|
+
[2mdist/[22m[36mUserField-lwxkNoSY.js [39m[1m[2m 2.50 kB[22m[1m[22m[2m │ gzip: 0.93 kB[22m
|
|
88
|
+
[2mdist/[22m[36mAddressField-Ca6aSbFW.js [39m[1m[2m 3.12 kB[22m[1m[22m[2m │ gzip: 0.75 kB[22m
|
|
89
|
+
[2mdist/[22m[36mSignatureField-sBd3qsYZ.js [39m[1m[2m 3.41 kB[22m[1m[22m[2m │ gzip: 1.29 kB[22m
|
|
90
|
+
[2mdist/[22m[36mQRCodeField-BksI6bwG.js [39m[1m[2m 3.46 kB[22m[1m[22m[2m │ gzip: 1.24 kB[22m
|
|
91
|
+
[2mdist/[22m[36mMasterDetailField--lQGMhKf.js [39m[1m[2m 3.96 kB[22m[1m[22m[2m │ gzip: 1.17 kB[22m
|
|
92
|
+
[2mdist/[22m[36mGeolocationField-D-EW8C92.js [39m[1m[2m 4.57 kB[22m[1m[22m[2m │ gzip: 1.51 kB[22m
|
|
93
|
+
[2mdist/[22m[36mFileField-CMfNMmvO.js [39m[1m[2m 6.05 kB[22m[1m[22m[2m │ gzip: 2.12 kB[22m
|
|
94
|
+
[2mdist/[22m[36mAgGridImpl-Brsm5CmH.js [39m[1m[2m 7.21 kB[22m[1m[22m[2m │ gzip: 2.37 kB[22m
|
|
95
|
+
[2mdist/[22m[36mindex-Dipgpv5R.js [39m[1m[2m 20.43 kB[22m[1m[22m[2m │ gzip: 5.11 kB[22m
|
|
96
|
+
[2mdist/[22m[36mObjectAgGridImpl-Cy851etj.js [39m[1m[33m944.88 kB[39m[22m[2m │ gzip: 208.56 kB[22m
|
|
97
|
+
[2mdist/[22m[35mindex.css [39m[1m[2m370.94 kB[22m[1m[22m[2m │ gzip: 72.89 kB[22m
|
|
98
|
+
[2mdist/[22m[36mindex.umd.cjs [39m[1m[33m616.38 kB[39m[22m[2m │ gzip: 184.17 kB[22m
|
|
99
|
+
[32m✓ built in 34.79s[39m
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { j as n } from "./index-
|
|
1
|
+
import { j as n } from "./index-Dipgpv5R.js";
|
|
2
2
|
function a({ value: t, field: o, ...s }) {
|
|
3
3
|
const e = t != null ? String(t) : "-";
|
|
4
4
|
return /* @__PURE__ */ n.jsx("span", { className: `text-sm font-mono text-gray-700 ${s.className || ""}`, children: e });
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { j as s } from "./index-Dipgpv5R.js";
|
|
2
|
+
import { useRef as R, useState as D, useCallback as h } from "react";
|
|
3
|
+
import { Button as B } from "@object-ui/components";
|
|
4
|
+
import { c as E, U as M, I as P, X as U } from "./ObjectAgGridImpl-Cy851etj.js";
|
|
5
|
+
const $ = [
|
|
6
|
+
[
|
|
7
|
+
"path",
|
|
8
|
+
{
|
|
9
|
+
d: "M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",
|
|
10
|
+
key: "1oefj6"
|
|
11
|
+
}
|
|
12
|
+
],
|
|
13
|
+
["path", { d: "M14 2v5a1 1 0 0 0 1 1h5", key: "wfsgrz" }]
|
|
14
|
+
], C = E("file", $);
|
|
15
|
+
function V({ value: n, onChange: i, field: k, readonly: F, ...N }) {
|
|
16
|
+
const g = R(null), l = k || N.schema, m = l?.multiple || !1, d = l?.accept ? l.accept.join(",") : void 0, p = l?.maxSize, [j, y] = D(!1), [v, w] = D([]), c = n ? Array.isArray(n) ? n : [n] : [], x = h((e) => {
|
|
17
|
+
if (e.length === 0) return;
|
|
18
|
+
const t = [], a = e.filter((r) => {
|
|
19
|
+
if (p && r.size > p) {
|
|
20
|
+
const u = (p / 1048576).toFixed(1);
|
|
21
|
+
return t.push(`"${r.name}" exceeds max size (${u} MB)`), !1;
|
|
22
|
+
}
|
|
23
|
+
return !0;
|
|
24
|
+
});
|
|
25
|
+
if (w(t), a.length === 0) return;
|
|
26
|
+
const o = a.map((r) => ({
|
|
27
|
+
name: r.name,
|
|
28
|
+
original_name: r.name,
|
|
29
|
+
size: r.size,
|
|
30
|
+
mime_type: r.type,
|
|
31
|
+
// In a real implementation, this would upload the file and return a URL
|
|
32
|
+
url: URL.createObjectURL(r)
|
|
33
|
+
}));
|
|
34
|
+
i(m ? [...c, ...o] : o[0]);
|
|
35
|
+
}, [c, m, i, p]), _ = h((e) => {
|
|
36
|
+
e.preventDefault(), e.stopPropagation(), y(!0);
|
|
37
|
+
}, []), A = h((e) => {
|
|
38
|
+
e.preventDefault(), e.stopPropagation(), y(!1);
|
|
39
|
+
}, []), L = h((e) => {
|
|
40
|
+
e.preventDefault(), e.stopPropagation(), y(!1);
|
|
41
|
+
const t = Array.from(e.dataTransfer.files);
|
|
42
|
+
if (d) {
|
|
43
|
+
const a = d.split(",").map((r) => r.trim().toLowerCase()), o = t.filter((r) => {
|
|
44
|
+
const u = r.name.split("."), z = u.length > 1 ? "." + u.pop()?.toLowerCase() : "";
|
|
45
|
+
return a.some(
|
|
46
|
+
(f) => f === r.type || z && f === z || f.endsWith("/*") && r.type.startsWith(f.replace("/*", "/"))
|
|
47
|
+
);
|
|
48
|
+
});
|
|
49
|
+
x(o);
|
|
50
|
+
} else
|
|
51
|
+
x(t);
|
|
52
|
+
}, [d, x]);
|
|
53
|
+
if (F) {
|
|
54
|
+
if (!n) return /* @__PURE__ */ s.jsx("span", { className: "text-sm", children: "-" });
|
|
55
|
+
const e = Array.isArray(n) ? n : [n];
|
|
56
|
+
return /* @__PURE__ */ s.jsx("div", { className: "flex flex-wrap gap-2", children: e.map((t, a) => /* @__PURE__ */ s.jsx("span", { className: "text-sm truncate max-w-xs", children: t.name || t.original_name || "File" }, a)) });
|
|
57
|
+
}
|
|
58
|
+
const I = (e) => {
|
|
59
|
+
x(Array.from(e.target.files || []));
|
|
60
|
+
}, O = (e) => {
|
|
61
|
+
if (m) {
|
|
62
|
+
const t = c.filter((a, o) => o !== e);
|
|
63
|
+
i(t.length > 0 ? t : null);
|
|
64
|
+
} else
|
|
65
|
+
i(null);
|
|
66
|
+
}, b = (e) => (e.mime_type || "").startsWith("image/");
|
|
67
|
+
return /* @__PURE__ */ s.jsxs("div", { className: N.className, children: [
|
|
68
|
+
/* @__PURE__ */ s.jsx(
|
|
69
|
+
"input",
|
|
70
|
+
{
|
|
71
|
+
ref: g,
|
|
72
|
+
type: "file",
|
|
73
|
+
multiple: m,
|
|
74
|
+
accept: d,
|
|
75
|
+
onChange: I,
|
|
76
|
+
className: "hidden"
|
|
77
|
+
}
|
|
78
|
+
),
|
|
79
|
+
/* @__PURE__ */ s.jsxs("div", { className: "space-y-2", children: [
|
|
80
|
+
/* @__PURE__ */ s.jsxs(
|
|
81
|
+
"div",
|
|
82
|
+
{
|
|
83
|
+
onDragOver: _,
|
|
84
|
+
onDragLeave: A,
|
|
85
|
+
onDrop: L,
|
|
86
|
+
onClick: () => g.current?.click(),
|
|
87
|
+
className: `
|
|
88
|
+
flex flex-col items-center justify-center gap-2 p-6
|
|
89
|
+
border-2 border-dashed rounded-lg cursor-pointer
|
|
90
|
+
transition-colors duration-200
|
|
91
|
+
${j ? "border-primary bg-primary/5 text-primary" : "border-muted-foreground/25 hover:border-primary/50 text-muted-foreground hover:text-foreground"}
|
|
92
|
+
`,
|
|
93
|
+
role: "button",
|
|
94
|
+
tabIndex: 0,
|
|
95
|
+
onKeyDown: (e) => {
|
|
96
|
+
(e.key === "Enter" || e.key === " ") && (e.preventDefault(), g.current?.click());
|
|
97
|
+
},
|
|
98
|
+
children: [
|
|
99
|
+
/* @__PURE__ */ s.jsx(M, { className: `size-8 ${j ? "text-primary" : "text-muted-foreground"}` }),
|
|
100
|
+
/* @__PURE__ */ s.jsxs("div", { className: "text-center", children: [
|
|
101
|
+
/* @__PURE__ */ s.jsx("p", { className: "text-sm font-medium", children: j ? "Drop files here" : "Drag & drop files here" }),
|
|
102
|
+
/* @__PURE__ */ s.jsx("p", { className: "text-xs text-muted-foreground mt-1", children: "or click to browse" })
|
|
103
|
+
] })
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
),
|
|
107
|
+
v.length > 0 && /* @__PURE__ */ s.jsx("div", { className: "space-y-0.5", children: v.map((e, t) => /* @__PURE__ */ s.jsx("p", { className: "text-xs text-destructive", children: e }, t)) }),
|
|
108
|
+
c.length > 0 && /* @__PURE__ */ s.jsx("div", { className: "space-y-1", children: c.map((e, t) => /* @__PURE__ */ s.jsxs(
|
|
109
|
+
"div",
|
|
110
|
+
{
|
|
111
|
+
className: "flex items-center justify-between gap-2 p-2 bg-muted/50 rounded-md border",
|
|
112
|
+
children: [
|
|
113
|
+
/* @__PURE__ */ s.jsxs("div", { className: "flex items-center gap-2 flex-1 min-w-0", children: [
|
|
114
|
+
b(e) && e.url ? /* @__PURE__ */ s.jsx("img", { src: e.url, alt: e.name, className: "size-8 object-cover rounded flex-shrink-0" }) : b(e) ? /* @__PURE__ */ s.jsx(P, { className: "size-4 text-muted-foreground flex-shrink-0" }) : /* @__PURE__ */ s.jsx(C, { className: "size-4 text-muted-foreground flex-shrink-0" }),
|
|
115
|
+
/* @__PURE__ */ s.jsx("span", { className: "text-sm truncate", children: e.name || e.original_name || "File" }),
|
|
116
|
+
e.size && /* @__PURE__ */ s.jsxs("span", { className: "text-xs text-muted-foreground", children: [
|
|
117
|
+
"(",
|
|
118
|
+
(e.size / 1024).toFixed(1),
|
|
119
|
+
" KB)"
|
|
120
|
+
] })
|
|
121
|
+
] }),
|
|
122
|
+
/* @__PURE__ */ s.jsx(
|
|
123
|
+
B,
|
|
124
|
+
{
|
|
125
|
+
type: "button",
|
|
126
|
+
variant: "ghost",
|
|
127
|
+
size: "sm",
|
|
128
|
+
onClick: (a) => {
|
|
129
|
+
a.stopPropagation(), O(t);
|
|
130
|
+
},
|
|
131
|
+
className: "h-6 w-6 p-0",
|
|
132
|
+
children: /* @__PURE__ */ s.jsx(U, { className: "size-3" })
|
|
133
|
+
}
|
|
134
|
+
)
|
|
135
|
+
]
|
|
136
|
+
},
|
|
137
|
+
t
|
|
138
|
+
)) })
|
|
139
|
+
] })
|
|
140
|
+
] });
|
|
141
|
+
}
|
|
142
|
+
export {
|
|
143
|
+
V as FileField
|
|
144
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { j as t } from "./index-
|
|
1
|
+
import { j as t } from "./index-Dipgpv5R.js";
|
|
2
2
|
import f from "react";
|
|
3
3
|
import { Button as n, Label as m, Input as x } from "@object-ui/components";
|
|
4
|
-
import { c as h } from "./ObjectAgGridImpl-
|
|
4
|
+
import { c as h } from "./ObjectAgGridImpl-Cy851etj.js";
|
|
5
5
|
const b = [
|
|
6
6
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
7
7
|
["line", { x1: "22", x2: "18", y1: "12", y2: "12", key: "l9bcsi" }],
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { j as e } from "./index-Dipgpv5R.js";
|
|
2
|
+
import { cn as a } from "@object-ui/components";
|
|
3
|
+
function u({ value: r, field: i, readonly: l, ...d }) {
|
|
4
|
+
const n = (i || d.schema)?.columns || [];
|
|
5
|
+
return !r || !Array.isArray(r) ? /* @__PURE__ */ e.jsx("span", { className: "text-sm text-muted-foreground", children: "-" }) : l ? /* @__PURE__ */ e.jsx("div", { className: a("text-sm", d.className), children: /* @__PURE__ */ e.jsxs("span", { className: "text-foreground", children: [
|
|
6
|
+
r.length,
|
|
7
|
+
" rows"
|
|
8
|
+
] }) }) : /* @__PURE__ */ e.jsxs("div", { className: a("border border-border rounded-lg overflow-hidden", d.className), children: [
|
|
9
|
+
/* @__PURE__ */ e.jsx("div", { className: "overflow-auto max-h-60", children: /* @__PURE__ */ e.jsxs("table", { className: "w-full text-sm", children: [
|
|
10
|
+
/* @__PURE__ */ e.jsx("thead", { className: "bg-muted border-b border-border", children: /* @__PURE__ */ e.jsx("tr", { children: n.map((s, t) => /* @__PURE__ */ e.jsx(
|
|
11
|
+
"th",
|
|
12
|
+
{
|
|
13
|
+
className: "px-3 py-2 text-left text-xs font-medium text-muted-foreground",
|
|
14
|
+
children: s.label || s.name
|
|
15
|
+
},
|
|
16
|
+
t
|
|
17
|
+
)) }) }),
|
|
18
|
+
/* @__PURE__ */ e.jsx("tbody", { className: "divide-y divide-border", children: r.slice(0, 5).map((s, t) => /* @__PURE__ */ e.jsx("tr", { className: "hover:bg-muted/50 transition-colors", children: n.map((o, m) => /* @__PURE__ */ e.jsx("td", { className: "px-3 py-2 text-foreground", children: s[o.name] != null ? String(s[o.name]) : "-" }, m)) }, t)) })
|
|
19
|
+
] }) }),
|
|
20
|
+
r.length > 5 && /* @__PURE__ */ e.jsxs("div", { className: "bg-muted px-3 py-2 text-xs text-muted-foreground border-t border-border", children: [
|
|
21
|
+
"Showing 5 of ",
|
|
22
|
+
r.length,
|
|
23
|
+
" rows"
|
|
24
|
+
] })
|
|
25
|
+
] });
|
|
26
|
+
}
|
|
27
|
+
export {
|
|
28
|
+
u as GridField
|
|
29
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { j as r } from "./index-
|
|
1
|
+
import { j as r } from "./index-Dipgpv5R.js";
|
|
2
2
|
import { Input as f } from "@object-ui/components";
|
|
3
3
|
function x({ value: t, onChange: l, field: d, readonly: i, ...a }) {
|
|
4
4
|
const m = d || a.schema, n = t && typeof t == "object" ? `${t.latitude || 0}, ${t.longitude || 0}` : "";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { j as e } from "./index-
|
|
1
|
+
import { j as e } from "./index-Dipgpv5R.js";
|
|
2
2
|
import { Button as a, cn as c, Badge as N } from "@object-ui/components";
|
|
3
|
-
import { c as o, X as f } from "./ObjectAgGridImpl-
|
|
3
|
+
import { c as o, X as f } from "./ObjectAgGridImpl-Cy851etj.js";
|
|
4
4
|
const g = [
|
|
5
5
|
["path", { d: "M15 3h6v6", key: "1q9fwt" }],
|
|
6
6
|
["path", { d: "M10 14 21 3", key: "gplh6r" }],
|