@owp/core 2.5.8 → 2.5.10
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/_virtual/index16.js +4 -4
- package/dist/_virtual/index17.js +4 -4
- package/dist/_virtual/index18.js +4 -4
- package/dist/_virtual/index19.js +4 -4
- package/dist/components/OwpDialog/OwpDialog.js +67 -46
- package/dist/components/OwpDialog/OwpDialog.js.map +1 -1
- package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js +162 -153
- package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js.map +1 -1
- package/dist/components/OwpTable/OwpDataTable.js +297 -283
- package/dist/components/OwpTable/OwpDataTable.js.map +1 -1
- package/dist/components/OwpTable/OwpFieldTable.js +98 -86
- package/dist/components/OwpTable/OwpFieldTable.js.map +1 -1
- package/dist/components/OwpTable/OwpTable.js +145 -127
- package/dist/components/OwpTable/OwpTable.js.map +1 -1
- package/dist/components/OwpTable/internal/defaultTableStyle.js +21 -15
- package/dist/components/OwpTable/internal/defaultTableStyle.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +195 -147
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js.map +1 -1
- package/dist/constants/tableTheme.js.map +1 -1
- package/dist/features/themePreview/components/ThemePreviewCanvas.js +300 -263
- package/dist/features/themePreview/components/ThemePreviewCanvas.js.map +1 -1
- package/dist/features/themePreview/components/ThemePreviewCanvasSections.js +148 -141
- package/dist/features/themePreview/components/ThemePreviewCanvasSections.js.map +1 -1
- package/dist/features/themePreview/components/ThemePreviewColorField.js +168 -138
- package/dist/features/themePreview/components/ThemePreviewColorField.js.map +1 -1
- package/dist/features/themePreview/components/ThemePreviewControls.js +410 -218
- package/dist/features/themePreview/components/ThemePreviewControls.js.map +1 -1
- package/dist/features/themePreview/components/themePreviewCanvas.shared.js +145 -125
- package/dist/features/themePreview/components/themePreviewCanvas.shared.js.map +1 -1
- package/dist/features/themePreview/configs/table.js +4 -2
- package/dist/features/themePreview/configs/table.js.map +1 -1
- package/dist/features/themePreview/dialogs/ThemePreviewDialog.js +124 -118
- package/dist/features/themePreview/dialogs/ThemePreviewDialog.js.map +1 -1
- package/dist/features/themePreview/hooks/useThemePreview.js +275 -193
- package/dist/features/themePreview/hooks/useThemePreview.js.map +1 -1
- package/dist/features/themePreview/utils/themePreviewDefinitions.js +8 -0
- package/dist/features/themePreview/utils/themePreviewDefinitions.js.map +1 -1
- package/dist/features/themePreview/utils/themePreviewSettings.js +188 -151
- package/dist/features/themePreview/utils/themePreviewSettings.js.map +1 -1
- package/dist/features/themePreview.js +18 -17
- package/dist/layout/components/toggles/NavigationSearchToggle.js +3 -3
- package/dist/layout/components/toolbar/ToolbarLayout.js +36 -35
- package/dist/layout/components/toolbar/ToolbarLayout.js.map +1 -1
- package/dist/node_modules/.pnpm/@mui_icons-material@7.3.9_@mui_material@7.3.9_@emotion_react@11.14.0_@types_react@19.2._dc2be6bc014bebdac88a574e3e02c144/node_modules/@mui/icons-material/esm/RestartAltOutlined.js +9 -0
- package/dist/node_modules/.pnpm/@mui_icons-material@7.3.9_@mui_material@7.3.9_@emotion_react@11.14.0_@types_react@19.2._dc2be6bc014bebdac88a574e3e02c144/node_modules/@mui/icons-material/esm/RestartAltOutlined.js.map +1 -0
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/constants.js +1 -1
- package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
- package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
- package/dist/node_modules/.pnpm/react-overlays@5.2.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-overlays/esm/Portal.js +1 -1
- package/dist/owp-app.css +1 -1
- package/dist/types/components/OwpDialog/OwpDialog.d.ts +2 -0
- package/dist/types/components/OwpTable/OwpFieldTable.d.ts +3 -2
- package/dist/types/components/OwpTable/internal/defaultTableStyle.d.ts +2 -0
- package/dist/types/constants/tableTheme.d.ts +1 -0
- package/dist/types/features/themePreview/components/ThemePreviewColorField.d.ts +3 -1
- package/dist/types/features/themePreview/components/ThemePreviewControls.d.ts +4 -1
- package/dist/types/features/themePreview/configs/settings.d.ts +2 -0
- package/dist/types/features/themePreview/configs/table.d.ts +2 -0
- package/dist/types/features/themePreview/hooks/useThemePreview.d.ts +3 -0
- package/dist/types/features/themePreview/utils/index.d.ts +1 -1
- package/dist/types/features/themePreview/utils/themePreviewSettings.d.ts +11 -1
- package/dist/types/types/OwpTableThemeTypes.d.ts +8 -0
- package/package.json +1 -1
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
var
|
|
2
|
-
var l = (t, e) =>
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
1
|
+
var J = Object.defineProperty;
|
|
2
|
+
var l = (t, e) => J(t, "name", { value: e, configurable: !0 });
|
|
3
|
+
import { jsx as o, jsxs as c, Fragment as Q } from "../../../node_modules/.pnpm/@emotion_react@11.14.0_@types_react@19.2.14_react@19.2.4/node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js";
|
|
4
|
+
import { IconButton as X, Typography as v, InputAdornment as Z, MenuItem as ee, TextField as L, Box as h, Divider as re, Popover as te, Button as le } from "@mui/material";
|
|
5
|
+
import oe from "../../../node_modules/.pnpm/@mui_icons-material@7.3.9_@mui_material@7.3.9_@emotion_react@11.14.0_@types_react@19.2._dc2be6bc014bebdac88a574e3e02c144/node_modules/@mui/icons-material/esm/RestartAltOutlined.js";
|
|
6
|
+
import { blue as ne, lightBlue as ae, cyan as ie, teal as ue, green as ce, amber as se, orange as pe, deepOrange as de, red as me, pink as he, purple as fe, deepPurple as xe, indigo as ge, grey as be, blueGrey as Pe } from "@mui/material/colors";
|
|
7
|
+
import { useState as x, useRef as ve, useEffect as w } from "react";
|
|
8
|
+
import { getThemePreviewPaletteValue as we } from "../utils/themePreviewSettings.js";
|
|
9
|
+
import { getColorAlphaValue as ye, toColorPickerValue as z, applyColorPickerValue as N } from "../utils/color.js";
|
|
10
|
+
const ke = {
|
|
10
11
|
"px-number": "px",
|
|
11
12
|
"rem-number": "rem"
|
|
12
|
-
},
|
|
13
|
+
}, Ce = [
|
|
13
14
|
"50",
|
|
14
15
|
"100",
|
|
15
16
|
"200",
|
|
@@ -24,159 +25,206 @@ const be = {
|
|
|
24
25
|
"A200",
|
|
25
26
|
"A400",
|
|
26
27
|
"A700"
|
|
27
|
-
],
|
|
28
|
-
["Blue",
|
|
29
|
-
["Light Blue",
|
|
30
|
-
["Cyan",
|
|
31
|
-
["Teal",
|
|
32
|
-
["Green",
|
|
33
|
-
["Amber",
|
|
34
|
-
["Orange",
|
|
35
|
-
["Deep Orange",
|
|
36
|
-
["Red",
|
|
37
|
-
["Pink",
|
|
38
|
-
["Purple",
|
|
39
|
-
["Deep Purple",
|
|
40
|
-
["Indigo",
|
|
41
|
-
["Grey",
|
|
42
|
-
["Blue Grey",
|
|
43
|
-
],
|
|
28
|
+
], Te = [
|
|
29
|
+
["Blue", ne],
|
|
30
|
+
["Light Blue", ae],
|
|
31
|
+
["Cyan", ie],
|
|
32
|
+
["Teal", ue],
|
|
33
|
+
["Green", ce],
|
|
34
|
+
["Amber", se],
|
|
35
|
+
["Orange", pe],
|
|
36
|
+
["Deep Orange", de],
|
|
37
|
+
["Red", me],
|
|
38
|
+
["Pink", he],
|
|
39
|
+
["Purple", fe],
|
|
40
|
+
["Deep Purple", xe],
|
|
41
|
+
["Indigo", ge],
|
|
42
|
+
["Grey", be],
|
|
43
|
+
["Blue Grey", Pe]
|
|
44
|
+
], Ie = Te.map(([t, e]) => ({
|
|
44
45
|
label: t,
|
|
45
|
-
colors:
|
|
46
|
-
const
|
|
47
|
-
return
|
|
46
|
+
colors: Ce.reduce((n, s) => {
|
|
47
|
+
const m = e[s];
|
|
48
|
+
return m && n.push({
|
|
48
49
|
key: `${t}-${s}`,
|
|
49
50
|
shade: s,
|
|
50
|
-
value:
|
|
51
|
+
value: m
|
|
51
52
|
}), n;
|
|
52
53
|
}, [])
|
|
53
|
-
})),
|
|
54
|
-
function
|
|
54
|
+
})), Ee = 500, G = 32, j = 20;
|
|
55
|
+
function Ve(t, e) {
|
|
55
56
|
return t.replace(new RegExp(`${e}$`, "i"), "");
|
|
56
57
|
}
|
|
57
|
-
l(
|
|
58
|
-
function
|
|
58
|
+
l(Ve, "getUnitInputDisplayValue");
|
|
59
|
+
function K(t) {
|
|
59
60
|
const e = t.replace(/[^0-9.,]/g, "").replace(/,/g, "."), n = e.indexOf(".");
|
|
60
61
|
if (n < 0)
|
|
61
62
|
return e;
|
|
62
|
-
const s = e.slice(0, n),
|
|
63
|
-
return `${s}.${
|
|
63
|
+
const s = e.slice(0, n), m = e.slice(n + 1).replace(/\./g, "");
|
|
64
|
+
return `${s}.${m}`;
|
|
64
65
|
}
|
|
65
|
-
l(
|
|
66
|
-
function
|
|
67
|
-
const e =
|
|
66
|
+
l(K, "normalizeUnitInputDisplayValue");
|
|
67
|
+
function Ae(t) {
|
|
68
|
+
const e = K(t);
|
|
68
69
|
return !e || e === "." ? "" : e.startsWith(".") ? `0${e}` : e.endsWith(".") ? e.slice(0, -1) : e;
|
|
69
70
|
}
|
|
70
|
-
l(
|
|
71
|
-
function
|
|
72
|
-
const n =
|
|
71
|
+
l(Ae, "normalizeCommittedUnitInputDisplayValue");
|
|
72
|
+
function Be(t, e) {
|
|
73
|
+
const n = Ae(t);
|
|
73
74
|
return n ? `${n}${e}` : "";
|
|
74
75
|
}
|
|
75
|
-
l(
|
|
76
|
-
function
|
|
77
|
-
return (t ?
|
|
76
|
+
l(Be, "normalizeUnitInputValue");
|
|
77
|
+
function ze(t) {
|
|
78
|
+
return (t ? ke[t] : null) ?? null;
|
|
78
79
|
}
|
|
79
|
-
l(
|
|
80
|
-
function
|
|
80
|
+
l(ze, "getUnitValueFormat");
|
|
81
|
+
function $e({
|
|
81
82
|
disabled: t = !1,
|
|
82
83
|
definition: e,
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
resetVersion: n,
|
|
85
|
+
sectionKey: s,
|
|
86
|
+
settings: m,
|
|
87
|
+
onChange: g,
|
|
88
|
+
onReset: y
|
|
86
89
|
}) {
|
|
87
|
-
var
|
|
88
|
-
const [
|
|
89
|
-
e.allowAlpha &&
|
|
90
|
-
|
|
90
|
+
var F, U;
|
|
91
|
+
const [D, k] = x(null), i = we(m, s, e.path), u = ze(e.valueFormat), M = e.showColorPicker !== !1, R = e.allowAlpha ? ye(i) : null, _ = [e.description];
|
|
92
|
+
e.allowAlpha && _.push(
|
|
93
|
+
R ? `알파값은 ${R}로 고정되고 색상만 변경됩니다. Pick 또는 MUI로 색상만 변경할 수 있습니다.` : "알파값은 고정되고 색상만 변경됩니다. Pick 또는 MUI로 색상만 변경할 수 있습니다."
|
|
91
94
|
);
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
!p ||
|
|
95
|
-
}, [p,
|
|
96
|
-
|
|
97
|
-
}, [
|
|
98
|
-
|
|
99
|
-
}, [])
|
|
100
|
-
|
|
101
|
-
|
|
95
|
+
const Y = _.filter(Boolean).join(" "), C = !!((F = e.options) != null && F.length), T = !!(e.allowAlpha && M && !C && !u), f = u ? Ve(i, u) : i, q = M, p = !C && !T, [I, E] = x(f), [W, b] = x(!1), [O, V] = x(z(i)), [A, B] = x(!1), a = ve(null);
|
|
96
|
+
w(() => {
|
|
97
|
+
!p || W || E(f);
|
|
98
|
+
}, [p, f, W]), w(() => {
|
|
99
|
+
A || V(z(i));
|
|
100
|
+
}, [A, i]), w(() => () => {
|
|
101
|
+
a.current && window.clearTimeout(a.current);
|
|
102
|
+
}, []), w(() => {
|
|
103
|
+
typeof n > "u" || (a.current && (window.clearTimeout(a.current), a.current = null), E(f), b(!1), V(z(i)), B(!1));
|
|
104
|
+
}, [n]);
|
|
105
|
+
const H = /* @__PURE__ */ l((r) => {
|
|
106
|
+
g(
|
|
102
107
|
e.path,
|
|
103
|
-
u ?
|
|
108
|
+
u ? Be(r, u) : r
|
|
104
109
|
);
|
|
105
|
-
}, "commitBufferedTextValue"),
|
|
106
|
-
|
|
107
|
-
}, "commitBufferedPickerValue")
|
|
108
|
-
|
|
110
|
+
}, "commitBufferedTextValue"), S = /* @__PURE__ */ l((r) => {
|
|
111
|
+
a.current && (window.clearTimeout(a.current), a.current = null), B(!1), g(e.path, N(i, r));
|
|
112
|
+
}, "commitBufferedPickerValue"), $ = y || u ? /* @__PURE__ */ o(Z, { position: "end", children: /* @__PURE__ */ c("div", { className: "flex items-center gap-6 pr-2", children: [
|
|
113
|
+
y ? /* @__PURE__ */ o(
|
|
114
|
+
X,
|
|
115
|
+
{
|
|
116
|
+
size: "small",
|
|
117
|
+
"aria-label": `${e.label} reset`,
|
|
118
|
+
disabled: t,
|
|
119
|
+
onMouseDown: /* @__PURE__ */ l((r) => {
|
|
120
|
+
r.preventDefault();
|
|
121
|
+
}, "onMouseDown"),
|
|
122
|
+
onClick: /* @__PURE__ */ l(() => {
|
|
123
|
+
y(e.path);
|
|
124
|
+
}, "onClick"),
|
|
125
|
+
sx: {
|
|
126
|
+
border: "1px solid #cbd5e1",
|
|
127
|
+
borderRadius: 1,
|
|
128
|
+
color: "#6b7280",
|
|
129
|
+
p: 0.25
|
|
130
|
+
},
|
|
131
|
+
children: /* @__PURE__ */ o(oe, { sx: { fontSize: 16 } })
|
|
132
|
+
}
|
|
133
|
+
) : null,
|
|
134
|
+
u ? /* @__PURE__ */ o(v, { variant: "body2", sx: { whiteSpace: "nowrap" }, children: u }) : null
|
|
135
|
+
] }) }) : void 0;
|
|
136
|
+
return /* @__PURE__ */ c("div", { className: "grid grid-cols-[minmax(0,1fr)_144px] items-start gap-12", children: [
|
|
109
137
|
/* @__PURE__ */ o(
|
|
110
|
-
|
|
138
|
+
L,
|
|
111
139
|
{
|
|
112
|
-
select:
|
|
140
|
+
select: C,
|
|
113
141
|
label: e.label,
|
|
114
142
|
size: "small",
|
|
115
|
-
value: p ?
|
|
143
|
+
value: p ? I : f,
|
|
116
144
|
disabled: t,
|
|
117
145
|
onChange: /* @__PURE__ */ l((r) => {
|
|
118
|
-
if (
|
|
146
|
+
if (T)
|
|
119
147
|
return;
|
|
120
|
-
const d = u ?
|
|
148
|
+
const d = u ? K(r.target.value) : r.target.value;
|
|
121
149
|
if (p) {
|
|
122
|
-
|
|
150
|
+
E(d);
|
|
123
151
|
return;
|
|
124
152
|
}
|
|
125
|
-
|
|
153
|
+
g(e.path, d);
|
|
126
154
|
}, "onChange"),
|
|
127
155
|
onFocus: /* @__PURE__ */ l(() => {
|
|
128
|
-
p &&
|
|
156
|
+
p && b(!0);
|
|
129
157
|
}, "onFocus"),
|
|
130
158
|
onBlur: /* @__PURE__ */ l(() => {
|
|
131
|
-
p && (
|
|
159
|
+
p && (b(!1), H(I));
|
|
132
160
|
}, "onBlur"),
|
|
133
161
|
onKeyDown: /* @__PURE__ */ l((r) => {
|
|
134
|
-
!p || r.key !== "Enter" || (r.preventDefault(),
|
|
162
|
+
!p || r.key !== "Enter" || (r.preventDefault(), b(!1), H(I), r.currentTarget.blur());
|
|
135
163
|
}, "onKeyDown"),
|
|
136
|
-
helperText:
|
|
164
|
+
helperText: Y,
|
|
137
165
|
slotProps: {
|
|
138
166
|
htmlInput: {
|
|
139
167
|
...u ? {
|
|
140
168
|
inputMode: "decimal"
|
|
141
169
|
} : {},
|
|
142
|
-
...
|
|
170
|
+
...T ? {
|
|
143
171
|
readOnly: !0
|
|
144
172
|
} : {}
|
|
145
173
|
},
|
|
146
|
-
input:
|
|
147
|
-
|
|
148
|
-
|
|
174
|
+
input: {
|
|
175
|
+
...$ ? {
|
|
176
|
+
endAdornment: $
|
|
177
|
+
} : {}
|
|
178
|
+
}
|
|
149
179
|
},
|
|
150
|
-
children: (
|
|
180
|
+
children: (U = e.options) == null ? void 0 : U.map((r) => /* @__PURE__ */ o(ee, { value: r.value, children: r.label }, r.value))
|
|
151
181
|
}
|
|
152
182
|
),
|
|
153
|
-
|
|
154
|
-
/* @__PURE__ */
|
|
183
|
+
q ? /* @__PURE__ */ c("div", { className: "grid grid-cols-2 gap-6", children: [
|
|
184
|
+
/* @__PURE__ */ c(Q, { children: [
|
|
155
185
|
/* @__PURE__ */ o(
|
|
156
|
-
|
|
186
|
+
le,
|
|
157
187
|
{
|
|
158
|
-
|
|
188
|
+
size: "small",
|
|
189
|
+
fullWidth: !0,
|
|
190
|
+
variant: "outlined",
|
|
191
|
+
disabled: t,
|
|
192
|
+
sx: {
|
|
193
|
+
fontSize: "1.2rem",
|
|
194
|
+
height: G,
|
|
195
|
+
minWidth: 0
|
|
196
|
+
},
|
|
197
|
+
onClick: /* @__PURE__ */ l((r) => {
|
|
198
|
+
k(r.currentTarget);
|
|
199
|
+
}, "onClick"),
|
|
200
|
+
children: "MUI"
|
|
201
|
+
}
|
|
202
|
+
),
|
|
203
|
+
/* @__PURE__ */ o(
|
|
204
|
+
L,
|
|
205
|
+
{
|
|
206
|
+
hiddenLabel: !0,
|
|
159
207
|
type: "color",
|
|
160
208
|
size: "small",
|
|
161
|
-
value:
|
|
209
|
+
value: O,
|
|
162
210
|
disabled: t,
|
|
163
211
|
onChange: /* @__PURE__ */ l((r) => {
|
|
164
212
|
const d = r.target.value;
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
},
|
|
213
|
+
V(d), B(!0), a.current && window.clearTimeout(a.current), a.current = window.setTimeout(() => {
|
|
214
|
+
S(d);
|
|
215
|
+
}, Ee);
|
|
168
216
|
}, "onChange"),
|
|
169
217
|
onBlur: /* @__PURE__ */ l(() => {
|
|
170
|
-
|
|
218
|
+
A && S(O);
|
|
171
219
|
}, "onBlur"),
|
|
172
220
|
slotProps: {
|
|
173
|
-
|
|
174
|
-
|
|
221
|
+
htmlInput: {
|
|
222
|
+
"aria-label": "Pick color"
|
|
175
223
|
}
|
|
176
224
|
},
|
|
177
225
|
sx: {
|
|
178
226
|
"& .MuiOutlinedInput-root": {
|
|
179
|
-
height:
|
|
227
|
+
height: G,
|
|
180
228
|
px: 0.5
|
|
181
229
|
},
|
|
182
230
|
'& input[type="color"]': {
|
|
@@ -186,8 +234,8 @@ function _e({
|
|
|
186
234
|
border: 0,
|
|
187
235
|
borderRadius: 0,
|
|
188
236
|
display: "block",
|
|
189
|
-
height:
|
|
190
|
-
minHeight:
|
|
237
|
+
height: j,
|
|
238
|
+
minHeight: j,
|
|
191
239
|
overflow: "hidden",
|
|
192
240
|
padding: 0,
|
|
193
241
|
p: 0,
|
|
@@ -208,32 +256,14 @@ function _e({
|
|
|
208
256
|
}
|
|
209
257
|
}
|
|
210
258
|
),
|
|
211
|
-
/* @__PURE__ */ o(
|
|
212
|
-
|
|
213
|
-
{
|
|
214
|
-
size: "small",
|
|
215
|
-
fullWidth: !0,
|
|
216
|
-
variant: "outlined",
|
|
217
|
-
disabled: t,
|
|
218
|
-
sx: {
|
|
219
|
-
fontSize: "1.2rem",
|
|
220
|
-
height: U,
|
|
221
|
-
minWidth: 0
|
|
222
|
-
},
|
|
223
|
-
onClick: /* @__PURE__ */ l((r) => {
|
|
224
|
-
b(r.currentTarget);
|
|
225
|
-
}, "onClick"),
|
|
226
|
-
children: "MUI"
|
|
227
|
-
}
|
|
228
|
-
),
|
|
229
|
-
I ? /* @__PURE__ */ o(
|
|
230
|
-
Q,
|
|
259
|
+
D ? /* @__PURE__ */ o(
|
|
260
|
+
te,
|
|
231
261
|
{
|
|
232
262
|
open: !0,
|
|
233
|
-
anchorEl:
|
|
263
|
+
anchorEl: D,
|
|
234
264
|
transitionDuration: 0,
|
|
235
265
|
onClose: /* @__PURE__ */ l(() => {
|
|
236
|
-
|
|
266
|
+
k(null);
|
|
237
267
|
}, "onClose"),
|
|
238
268
|
anchorOrigin: {
|
|
239
269
|
vertical: "bottom",
|
|
@@ -255,9 +285,9 @@ function _e({
|
|
|
255
285
|
}
|
|
256
286
|
}
|
|
257
287
|
},
|
|
258
|
-
children: /* @__PURE__ */ o("div", { className: "flex min-w-0 flex-col gap-10", children:
|
|
259
|
-
d > 0 ? /* @__PURE__ */ o(
|
|
260
|
-
/* @__PURE__ */
|
|
288
|
+
children: /* @__PURE__ */ o("div", { className: "flex min-w-0 flex-col gap-10", children: Ie.map((r, d) => /* @__PURE__ */ c(h, { className: "flex flex-col gap-10", children: [
|
|
289
|
+
d > 0 ? /* @__PURE__ */ o(re, { flexItem: !0 }) : null,
|
|
290
|
+
/* @__PURE__ */ c(
|
|
261
291
|
h,
|
|
262
292
|
{
|
|
263
293
|
sx: {
|
|
@@ -269,7 +299,7 @@ function _e({
|
|
|
269
299
|
}
|
|
270
300
|
},
|
|
271
301
|
children: [
|
|
272
|
-
/* @__PURE__ */ o(
|
|
302
|
+
/* @__PURE__ */ o(v, { variant: "caption", color: "text.secondary", children: r.label }),
|
|
273
303
|
/* @__PURE__ */ o(
|
|
274
304
|
h,
|
|
275
305
|
{
|
|
@@ -279,16 +309,16 @@ function _e({
|
|
|
279
309
|
gridTemplateColumns: "repeat(auto-fit, minmax(68px, 1fr))",
|
|
280
310
|
minWidth: 0
|
|
281
311
|
},
|
|
282
|
-
children: r.colors.map((
|
|
312
|
+
children: r.colors.map((P) => /* @__PURE__ */ c(
|
|
283
313
|
h,
|
|
284
314
|
{
|
|
285
315
|
component: "button",
|
|
286
316
|
type: "button",
|
|
287
317
|
onClick: /* @__PURE__ */ l(() => {
|
|
288
|
-
|
|
318
|
+
g(
|
|
289
319
|
e.path,
|
|
290
|
-
|
|
291
|
-
),
|
|
320
|
+
N(i, P.value)
|
|
321
|
+
), k(null);
|
|
292
322
|
}, "onClick"),
|
|
293
323
|
sx: {
|
|
294
324
|
alignItems: "center",
|
|
@@ -319,7 +349,7 @@ function _e({
|
|
|
319
349
|
width: 30,
|
|
320
350
|
height: 30,
|
|
321
351
|
borderRadius: 1,
|
|
322
|
-
backgroundColor:
|
|
352
|
+
backgroundColor: P.value,
|
|
323
353
|
border: "1px solid",
|
|
324
354
|
borderColor: "divider"
|
|
325
355
|
}
|
|
@@ -334,12 +364,12 @@ function _e({
|
|
|
334
364
|
fontWeight: 600,
|
|
335
365
|
lineHeight: 1
|
|
336
366
|
},
|
|
337
|
-
children:
|
|
367
|
+
children: P.shade
|
|
338
368
|
}
|
|
339
369
|
)
|
|
340
370
|
]
|
|
341
371
|
},
|
|
342
|
-
|
|
372
|
+
P.key
|
|
343
373
|
))
|
|
344
374
|
}
|
|
345
375
|
)
|
|
@@ -350,10 +380,10 @@ function _e({
|
|
|
350
380
|
}
|
|
351
381
|
) : null
|
|
352
382
|
] }),
|
|
353
|
-
e.allowAlpha ? /* @__PURE__ */
|
|
354
|
-
/* @__PURE__ */ o(
|
|
383
|
+
e.allowAlpha ? /* @__PURE__ */ c("div", { className: "col-span-2 flex flex-col gap-2", children: [
|
|
384
|
+
/* @__PURE__ */ o(v, { variant: "caption", color: "text.secondary", children: "Current" }),
|
|
355
385
|
/* @__PURE__ */ o(
|
|
356
|
-
|
|
386
|
+
v,
|
|
357
387
|
{
|
|
358
388
|
variant: "caption",
|
|
359
389
|
color: "text.secondary",
|
|
@@ -365,8 +395,8 @@ function _e({
|
|
|
365
395
|
] }) : /* @__PURE__ */ o("div", {})
|
|
366
396
|
] });
|
|
367
397
|
}
|
|
368
|
-
l(
|
|
398
|
+
l($e, "ThemePreviewColorField");
|
|
369
399
|
export {
|
|
370
|
-
|
|
400
|
+
$e as ThemePreviewColorField
|
|
371
401
|
};
|
|
372
402
|
//# sourceMappingURL=ThemePreviewColorField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemePreviewColorField.js","sources":["../../../../src/features/themePreview/components/ThemePreviewColorField.tsx"],"sourcesContent":["import {\n Box,\n Button,\n Divider,\n InputAdornment,\n MenuItem,\n Popover,\n TextField,\n Typography,\n} from '@mui/material';\nimport {\n amber,\n blue,\n blueGrey,\n cyan,\n deepOrange,\n deepPurple,\n green,\n grey,\n indigo,\n lightBlue,\n orange,\n pink,\n purple,\n red,\n teal,\n} from '@mui/material/colors';\nimport type {\n ThemePreviewFieldDefinition,\n ThemePreviewSectionKey,\n ThemePreviewSettings,\n} from '../types';\nimport {\n applyColorPickerValue,\n getColorAlphaValue,\n getThemePreviewPaletteValue,\n toColorPickerValue,\n} from '../utils';\nimport { useEffect, useRef, useState } from 'react';\n\ninterface ThemePreviewColorFieldProps {\n disabled?: boolean;\n definition: ThemePreviewFieldDefinition;\n sectionKey: ThemePreviewSectionKey;\n settings: ThemePreviewSettings;\n onChange: (path: string, value: string) => void;\n}\n\nconst themePreviewInputUnits = {\n 'px-number': 'px',\n 'rem-number': 'rem',\n} as const;\n\ntype ThemePreviewInputUnit = (typeof themePreviewInputUnits)[keyof typeof themePreviewInputUnits];\n\nconst themePreviewMuiColorShades = [\n '50',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n 'A100',\n 'A200',\n 'A400',\n 'A700',\n] as const;\nconst themePreviewMuiColorPalettes = [\n ['Blue', blue],\n ['Light Blue', lightBlue],\n ['Cyan', cyan],\n ['Teal', teal],\n ['Green', green],\n ['Amber', amber],\n ['Orange', orange],\n ['Deep Orange', deepOrange],\n ['Red', red],\n ['Pink', pink],\n ['Purple', purple],\n ['Deep Purple', deepPurple],\n ['Indigo', indigo],\n ['Grey', grey],\n ['Blue Grey', blueGrey],\n] as const;\nconst themePreviewMuiPaletteColorRows = themePreviewMuiColorPalettes.map(([label, palette]) => ({\n label,\n colors: themePreviewMuiColorShades.reduce<Array<{\n key: string;\n shade: string;\n value: string;\n }>>((acc, shade) => {\n const paletteValue = (palette as Record<string, string>)[shade];\n\n if (!paletteValue) {\n return acc;\n }\n\n acc.push({\n key: `${label}-${shade}`,\n shade,\n value: paletteValue,\n });\n\n return acc;\n }, []),\n}));\nconst THEME_PREVIEW_COLOR_PICKER_APPLY_DELAY_MS = 500;\nconst THEME_PREVIEW_SMALL_FIELD_HEIGHT = 32;\nconst THEME_PREVIEW_PICKER_SWATCH_HEIGHT = 20;\n\nfunction getUnitInputDisplayValue(value: string, unit: ThemePreviewInputUnit) {\n return value.replace(new RegExp(`${unit}$`, 'i'), '');\n}\n\nfunction normalizeUnitInputDisplayValue(value: string) {\n const sanitizedValue = value.replace(/[^0-9.,]/g, '').replace(/,/g, '.');\n const decimalPointIndex = sanitizedValue.indexOf('.');\n\n if (decimalPointIndex < 0) {\n return sanitizedValue;\n }\n\n const integerPart = sanitizedValue.slice(0, decimalPointIndex);\n const decimalPart = sanitizedValue.slice(decimalPointIndex + 1).replace(/\\./g, '');\n\n return `${integerPart}.${decimalPart}`;\n}\n\nfunction normalizeCommittedUnitInputDisplayValue(value: string) {\n const normalizedValue = normalizeUnitInputDisplayValue(value);\n\n if (!normalizedValue || normalizedValue === '.') {\n return '';\n }\n\n if (normalizedValue.startsWith('.')) {\n return `0${normalizedValue}`;\n }\n\n if (normalizedValue.endsWith('.')) {\n return normalizedValue.slice(0, -1);\n }\n\n return normalizedValue;\n}\n\nfunction normalizeUnitInputValue(value: string, unit: ThemePreviewInputUnit) {\n const normalizedValue = normalizeCommittedUnitInputDisplayValue(value);\n\n return normalizedValue ? `${normalizedValue}${unit}` : '';\n}\n\nfunction getUnitValueFormat(valueFormat?: ThemePreviewFieldDefinition['valueFormat']) {\n return (valueFormat ? themePreviewInputUnits[valueFormat] : null) ?? null;\n}\n\nexport function ThemePreviewColorField({\n disabled = false,\n definition,\n sectionKey,\n settings,\n onChange,\n}: ThemePreviewColorFieldProps) {\n const [muiPaletteAnchorElement, setMuiPaletteAnchorElement] = useState<HTMLElement | null>(null);\n const value = getThemePreviewPaletteValue(settings, sectionKey, definition.path);\n const unitValueFormat = getUnitValueFormat(definition.valueFormat);\n const showColorPicker = definition.showColorPicker !== false;\n const alphaValue = definition.allowAlpha ? getColorAlphaValue(value) : null;\n const helperText = [definition.description];\n\n if (definition.allowAlpha) {\n helperText.push(\n alphaValue\n ? `알파값은 ${alphaValue}로 고정되고 색상만 변경됩니다. Pick 또는 MUI로 색상만 변경할 수 있습니다.`\n : '알파값은 고정되고 색상만 변경됩니다. Pick 또는 MUI로 색상만 변경할 수 있습니다.',\n );\n }\n\n const resolvedHelperText = helperText.filter(Boolean).join(' ');\n const hasOptions = Boolean(definition.options?.length);\n const isReadOnlyColorTextInput = Boolean(\n definition.allowAlpha && showColorPicker && !hasOptions && !unitValueFormat,\n );\n const displayValue =\n unitValueFormat ? getUnitInputDisplayValue(value, unitValueFormat) : value;\n const hasPickerControls = showColorPicker;\n const canBufferTextInput = !hasOptions && !isReadOnlyColorTextInput;\n const [bufferedTextValue, setBufferedTextValue] = useState(displayValue);\n const [isBufferedTextInputFocused, setIsBufferedTextInputFocused] = useState(false);\n const [bufferedPickerValue, setBufferedPickerValue] = useState(toColorPickerValue(value));\n const [isBufferedPickerDirty, setIsBufferedPickerDirty] = useState(false);\n const colorPickerApplyTimeoutRef = useRef<number | null>(null);\n\n useEffect(() => {\n if (!canBufferTextInput || isBufferedTextInputFocused) {\n return;\n }\n\n setBufferedTextValue(displayValue);\n }, [canBufferTextInput, displayValue, isBufferedTextInputFocused]);\n\n useEffect(() => {\n if (isBufferedPickerDirty) {\n return;\n }\n\n setBufferedPickerValue(toColorPickerValue(value));\n }, [isBufferedPickerDirty, value]);\n\n useEffect(() => {\n return () => {\n if (!colorPickerApplyTimeoutRef.current) {\n return;\n }\n\n window.clearTimeout(colorPickerApplyTimeoutRef.current);\n };\n }, []);\n\n const commitBufferedTextValue = (nextValue: string) => {\n onChange(\n definition.path,\n unitValueFormat ? normalizeUnitInputValue(nextValue, unitValueFormat) : nextValue,\n );\n };\n const commitBufferedPickerValue = (nextPickerValue: string) => {\n if (colorPickerApplyTimeoutRef.current) {\n window.clearTimeout(colorPickerApplyTimeoutRef.current);\n colorPickerApplyTimeoutRef.current = null;\n }\n\n setIsBufferedPickerDirty(false);\n onChange(definition.path, applyColorPickerValue(value, nextPickerValue));\n };\n\n return (\n <div className=\"grid grid-cols-[minmax(0,1fr)_144px] items-start gap-12\">\n <TextField\n select={hasOptions}\n label={definition.label}\n size=\"small\"\n value={canBufferTextInput ? bufferedTextValue : displayValue}\n disabled={disabled}\n onChange={(event) => {\n if (isReadOnlyColorTextInput) {\n return;\n }\n\n const nextValue = unitValueFormat\n ? normalizeUnitInputDisplayValue(event.target.value)\n : event.target.value;\n\n if (canBufferTextInput) {\n setBufferedTextValue(nextValue);\n return;\n }\n\n onChange(definition.path, nextValue);\n }}\n onFocus={() => {\n if (!canBufferTextInput) {\n return;\n }\n\n setIsBufferedTextInputFocused(true);\n }}\n onBlur={() => {\n if (!canBufferTextInput) {\n return;\n }\n\n setIsBufferedTextInputFocused(false);\n commitBufferedTextValue(bufferedTextValue);\n }}\n onKeyDown={(event) => {\n if (!canBufferTextInput || event.key !== 'Enter') {\n return;\n }\n\n event.preventDefault();\n setIsBufferedTextInputFocused(false);\n commitBufferedTextValue(bufferedTextValue);\n event.currentTarget.blur();\n }}\n helperText={resolvedHelperText}\n slotProps={{\n htmlInput:\n {\n ...(unitValueFormat\n ? {\n inputMode: 'decimal',\n }\n : {}),\n ...(isReadOnlyColorTextInput\n ? {\n readOnly: true,\n }\n : {}),\n },\n input:\n unitValueFormat\n ? {\n endAdornment: <InputAdornment position=\"end\">{unitValueFormat}</InputAdornment>,\n }\n : undefined,\n }}\n >\n {definition.options?.map((option) => (\n <MenuItem key={option.value} value={option.value}>\n {option.label}\n </MenuItem>\n ))}\n </TextField>\n\n {hasPickerControls ? (\n <div className=\"grid grid-cols-2 gap-6\">\n <>\n <TextField\n label=\"Pick\"\n type=\"color\"\n size=\"small\"\n value={bufferedPickerValue}\n disabled={disabled}\n onChange={(event) => {\n const nextPickerValue = event.target.value;\n\n setBufferedPickerValue(nextPickerValue);\n setIsBufferedPickerDirty(true);\n\n if (colorPickerApplyTimeoutRef.current) {\n window.clearTimeout(colorPickerApplyTimeoutRef.current);\n }\n\n colorPickerApplyTimeoutRef.current = window.setTimeout(() => {\n commitBufferedPickerValue(nextPickerValue);\n }, THEME_PREVIEW_COLOR_PICKER_APPLY_DELAY_MS);\n }}\n onBlur={() => {\n if (!isBufferedPickerDirty) {\n return;\n }\n\n commitBufferedPickerValue(bufferedPickerValue);\n }}\n slotProps={{\n inputLabel: {\n shrink: true,\n },\n }}\n sx={{\n '& .MuiOutlinedInput-root': {\n height: THEME_PREVIEW_SMALL_FIELD_HEIGHT,\n px: 0.5,\n },\n '& input[type=\"color\"]': {\n WebkitAppearance: 'none',\n alignSelf: 'center',\n boxSizing: 'border-box',\n border: 0,\n borderRadius: 0,\n display: 'block',\n height: THEME_PREVIEW_PICKER_SWATCH_HEIGHT,\n minHeight: THEME_PREVIEW_PICKER_SWATCH_HEIGHT,\n overflow: 'hidden',\n padding: 0,\n p: 0,\n width: '100%',\n },\n '& input[type=\"color\"]::-webkit-color-swatch-wrapper': {\n borderRadius: 0,\n p: 0,\n },\n '& input[type=\"color\"]::-webkit-color-swatch': {\n borderColor: '#94a3b8',\n borderRadius: 0,\n },\n '& input[type=\"color\"]::-moz-color-swatch': {\n borderColor: '#94a3b8',\n borderRadius: 0,\n },\n }}\n />\n <Button\n size=\"small\"\n fullWidth\n variant=\"outlined\"\n disabled={disabled}\n sx={{\n fontSize: '1.2rem',\n height: THEME_PREVIEW_SMALL_FIELD_HEIGHT,\n minWidth: 0,\n }}\n onClick={(event) => {\n setMuiPaletteAnchorElement(event.currentTarget);\n }}\n >\n MUI\n </Button>\n {muiPaletteAnchorElement ? (\n <Popover\n open\n anchorEl={muiPaletteAnchorElement}\n transitionDuration={0}\n onClose={() => {\n setMuiPaletteAnchorElement(null);\n }}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left',\n }}\n slotProps={{\n paper: {\n sx: {\n maxHeight: 'calc(100vh - 32px)',\n maxWidth: 'calc(100vw - 32px)',\n minWidth: 320,\n overflow: 'auto',\n p: 1.5,\n width: 'min(760px, calc(100vw - 32px))',\n },\n },\n }}\n >\n <div className=\"flex min-w-0 flex-col gap-10\">\n {themePreviewMuiPaletteColorRows.map((paletteRow, paletteRowIndex) => (\n <Box key={paletteRow.label} className=\"flex flex-col gap-10\">\n {paletteRowIndex > 0 ? <Divider flexItem /> : null}\n <Box\n sx={{\n display: 'grid',\n gap: 1,\n gridTemplateColumns: {\n xs: 'minmax(0, 1fr)',\n sm: '84px minmax(0, 1fr)',\n },\n }}\n >\n <Typography variant=\"caption\" color=\"text.secondary\">\n {paletteRow.label}\n </Typography>\n <Box\n sx={{\n display: 'grid',\n gap: 0.75,\n gridTemplateColumns: 'repeat(auto-fit, minmax(68px, 1fr))',\n minWidth: 0,\n }}\n >\n {paletteRow.colors.map((colorItem) => (\n <Box\n key={colorItem.key}\n component=\"button\"\n type=\"button\"\n onClick={() => {\n onChange(\n definition.path,\n applyColorPickerValue(value, colorItem.value),\n );\n setMuiPaletteAnchorElement(null);\n }}\n sx={{\n alignItems: 'center',\n backgroundColor: 'background.paper',\n border: '1px solid',\n borderColor: 'divider',\n borderRadius: 1,\n color: 'text.secondary',\n cursor: 'pointer',\n display: 'flex',\n flexDirection: 'column',\n gap: 0.5,\n justifyContent: 'center',\n minWidth: 0,\n p: 0.5,\n transition: 'background-color 120ms ease, border-color 120ms ease',\n width: '100%',\n '&:hover': {\n backgroundColor: 'action.hover',\n borderColor: 'text.secondary',\n },\n }}\n >\n <Box\n sx={{\n width: 30,\n height: 30,\n borderRadius: 1,\n backgroundColor: colorItem.value,\n border: '1px solid',\n borderColor: 'divider',\n }}\n />\n <Box\n component=\"span\"\n sx={{\n fontSize: '0.75rem',\n fontWeight: 600,\n lineHeight: 1,\n }}\n >\n {colorItem.shade}\n </Box>\n </Box>\n ))}\n </Box>\n </Box>\n </Box>\n ))}\n </div>\n </Popover>\n ) : null}\n </>\n {definition.allowAlpha ? (\n <div className=\"col-span-2 flex flex-col gap-2\">\n <Typography variant=\"caption\" color=\"text.secondary\">\n Current\n </Typography>\n <Typography\n variant=\"caption\"\n color=\"text.secondary\"\n className=\"truncate whitespace-nowrap\"\n >\n {value || '-'}\n </Typography>\n </div>\n ) : null}\n </div>\n ) : (\n <div />\n )}\n </div>\n );\n}\n"],"names":["themePreviewInputUnits","themePreviewMuiColorShades","themePreviewMuiColorPalettes","blue","lightBlue","cyan","teal","green","amber","orange","deepOrange","red","pink","purple","deepPurple","indigo","grey","blueGrey","themePreviewMuiPaletteColorRows","label","palette","acc","shade","paletteValue","THEME_PREVIEW_COLOR_PICKER_APPLY_DELAY_MS","THEME_PREVIEW_SMALL_FIELD_HEIGHT","THEME_PREVIEW_PICKER_SWATCH_HEIGHT","getUnitInputDisplayValue","value","unit","__name","normalizeUnitInputDisplayValue","sanitizedValue","decimalPointIndex","integerPart","decimalPart","normalizeCommittedUnitInputDisplayValue","normalizedValue","normalizeUnitInputValue","getUnitValueFormat","valueFormat","ThemePreviewColorField","disabled","definition","sectionKey","settings","onChange","muiPaletteAnchorElement","setMuiPaletteAnchorElement","useState","getThemePreviewPaletteValue","unitValueFormat","showColorPicker","alphaValue","getColorAlphaValue","helperText","resolvedHelperText","hasOptions","_a","isReadOnlyColorTextInput","displayValue","hasPickerControls","canBufferTextInput","bufferedTextValue","setBufferedTextValue","isBufferedTextInputFocused","setIsBufferedTextInputFocused","bufferedPickerValue","setBufferedPickerValue","toColorPickerValue","isBufferedPickerDirty","setIsBufferedPickerDirty","colorPickerApplyTimeoutRef","useRef","useEffect","commitBufferedTextValue","nextValue","commitBufferedPickerValue","nextPickerValue","applyColorPickerValue","jsxs","jsx","TextField","event","InputAdornment","_b","option","MenuItem","Fragment","Button","Popover","paletteRow","paletteRowIndex","Box","Divider","Typography","colorItem"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ThemePreviewColorField.js","sources":["../../../../src/features/themePreview/components/ThemePreviewColorField.tsx"],"sourcesContent":["import {\n Box,\n Button,\n Divider,\n IconButton,\n InputAdornment,\n MenuItem,\n Popover,\n TextField,\n Typography,\n} from '@mui/material';\nimport RestartAltOutlinedIcon from '@mui/icons-material/RestartAltOutlined';\nimport {\n amber,\n blue,\n blueGrey,\n cyan,\n deepOrange,\n deepPurple,\n green,\n grey,\n indigo,\n lightBlue,\n orange,\n pink,\n purple,\n red,\n teal,\n} from '@mui/material/colors';\nimport type {\n ThemePreviewFieldDefinition,\n ThemePreviewSectionKey,\n ThemePreviewSettings,\n} from '../types';\nimport {\n applyColorPickerValue,\n getColorAlphaValue,\n getThemePreviewPaletteValue,\n toColorPickerValue,\n} from '../utils';\nimport { useEffect, useRef, useState } from 'react';\n\ninterface ThemePreviewColorFieldProps {\n disabled?: boolean;\n definition: ThemePreviewFieldDefinition;\n resetVersion?: number;\n sectionKey: ThemePreviewSectionKey;\n settings: ThemePreviewSettings;\n onChange: (path: string, value: string) => void;\n onReset?: (path: string) => void;\n}\n\nconst themePreviewInputUnits = {\n 'px-number': 'px',\n 'rem-number': 'rem',\n} as const;\n\ntype ThemePreviewInputUnit = (typeof themePreviewInputUnits)[keyof typeof themePreviewInputUnits];\n\nconst themePreviewMuiColorShades = [\n '50',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n 'A100',\n 'A200',\n 'A400',\n 'A700',\n] as const;\nconst themePreviewMuiColorPalettes = [\n ['Blue', blue],\n ['Light Blue', lightBlue],\n ['Cyan', cyan],\n ['Teal', teal],\n ['Green', green],\n ['Amber', amber],\n ['Orange', orange],\n ['Deep Orange', deepOrange],\n ['Red', red],\n ['Pink', pink],\n ['Purple', purple],\n ['Deep Purple', deepPurple],\n ['Indigo', indigo],\n ['Grey', grey],\n ['Blue Grey', blueGrey],\n] as const;\nconst themePreviewMuiPaletteColorRows = themePreviewMuiColorPalettes.map(([label, palette]) => ({\n label,\n colors: themePreviewMuiColorShades.reduce<Array<{\n key: string;\n shade: string;\n value: string;\n }>>((acc, shade) => {\n const paletteValue = (palette as Record<string, string>)[shade];\n\n if (!paletteValue) {\n return acc;\n }\n\n acc.push({\n key: `${label}-${shade}`,\n shade,\n value: paletteValue,\n });\n\n return acc;\n }, []),\n}));\nconst THEME_PREVIEW_COLOR_PICKER_APPLY_DELAY_MS = 500;\nconst THEME_PREVIEW_SMALL_FIELD_HEIGHT = 32;\nconst THEME_PREVIEW_PICKER_SWATCH_HEIGHT = 20;\n\nfunction getUnitInputDisplayValue(value: string, unit: ThemePreviewInputUnit) {\n return value.replace(new RegExp(`${unit}$`, 'i'), '');\n}\n\nfunction normalizeUnitInputDisplayValue(value: string) {\n const sanitizedValue = value.replace(/[^0-9.,]/g, '').replace(/,/g, '.');\n const decimalPointIndex = sanitizedValue.indexOf('.');\n\n if (decimalPointIndex < 0) {\n return sanitizedValue;\n }\n\n const integerPart = sanitizedValue.slice(0, decimalPointIndex);\n const decimalPart = sanitizedValue.slice(decimalPointIndex + 1).replace(/\\./g, '');\n\n return `${integerPart}.${decimalPart}`;\n}\n\nfunction normalizeCommittedUnitInputDisplayValue(value: string) {\n const normalizedValue = normalizeUnitInputDisplayValue(value);\n\n if (!normalizedValue || normalizedValue === '.') {\n return '';\n }\n\n if (normalizedValue.startsWith('.')) {\n return `0${normalizedValue}`;\n }\n\n if (normalizedValue.endsWith('.')) {\n return normalizedValue.slice(0, -1);\n }\n\n return normalizedValue;\n}\n\nfunction normalizeUnitInputValue(value: string, unit: ThemePreviewInputUnit) {\n const normalizedValue = normalizeCommittedUnitInputDisplayValue(value);\n\n return normalizedValue ? `${normalizedValue}${unit}` : '';\n}\n\nfunction getUnitValueFormat(valueFormat?: ThemePreviewFieldDefinition['valueFormat']) {\n return (valueFormat ? themePreviewInputUnits[valueFormat] : null) ?? null;\n}\n\nexport function ThemePreviewColorField({\n disabled = false,\n definition,\n resetVersion,\n sectionKey,\n settings,\n onChange,\n onReset,\n}: ThemePreviewColorFieldProps) {\n const [muiPaletteAnchorElement, setMuiPaletteAnchorElement] = useState<HTMLElement | null>(null);\n const value = getThemePreviewPaletteValue(settings, sectionKey, definition.path);\n const unitValueFormat = getUnitValueFormat(definition.valueFormat);\n const showColorPicker = definition.showColorPicker !== false;\n const alphaValue = definition.allowAlpha ? getColorAlphaValue(value) : null;\n const helperText = [definition.description];\n\n if (definition.allowAlpha) {\n helperText.push(\n alphaValue\n ? `알파값은 ${alphaValue}로 고정되고 색상만 변경됩니다. Pick 또는 MUI로 색상만 변경할 수 있습니다.`\n : '알파값은 고정되고 색상만 변경됩니다. Pick 또는 MUI로 색상만 변경할 수 있습니다.',\n );\n }\n\n const resolvedHelperText = helperText.filter(Boolean).join(' ');\n const hasOptions = Boolean(definition.options?.length);\n const isReadOnlyColorTextInput = Boolean(\n definition.allowAlpha && showColorPicker && !hasOptions && !unitValueFormat,\n );\n const displayValue =\n unitValueFormat ? getUnitInputDisplayValue(value, unitValueFormat) : value;\n const hasPickerControls = showColorPicker;\n const canBufferTextInput = !hasOptions && !isReadOnlyColorTextInput;\n const [bufferedTextValue, setBufferedTextValue] = useState(displayValue);\n const [isBufferedTextInputFocused, setIsBufferedTextInputFocused] = useState(false);\n const [bufferedPickerValue, setBufferedPickerValue] = useState(toColorPickerValue(value));\n const [isBufferedPickerDirty, setIsBufferedPickerDirty] = useState(false);\n const colorPickerApplyTimeoutRef = useRef<number | null>(null);\n\n useEffect(() => {\n if (!canBufferTextInput || isBufferedTextInputFocused) {\n return;\n }\n\n setBufferedTextValue(displayValue);\n }, [canBufferTextInput, displayValue, isBufferedTextInputFocused]);\n\n useEffect(() => {\n if (isBufferedPickerDirty) {\n return;\n }\n\n setBufferedPickerValue(toColorPickerValue(value));\n }, [isBufferedPickerDirty, value]);\n\n useEffect(() => {\n return () => {\n if (!colorPickerApplyTimeoutRef.current) {\n return;\n }\n\n window.clearTimeout(colorPickerApplyTimeoutRef.current);\n };\n }, []);\n\n useEffect(() => {\n if (typeof resetVersion === 'undefined') {\n return;\n }\n\n if (colorPickerApplyTimeoutRef.current) {\n window.clearTimeout(colorPickerApplyTimeoutRef.current);\n colorPickerApplyTimeoutRef.current = null;\n }\n\n setBufferedTextValue(displayValue);\n setIsBufferedTextInputFocused(false);\n setBufferedPickerValue(toColorPickerValue(value));\n setIsBufferedPickerDirty(false);\n }, [resetVersion]);\n\n const commitBufferedTextValue = (nextValue: string) => {\n onChange(\n definition.path,\n unitValueFormat ? normalizeUnitInputValue(nextValue, unitValueFormat) : nextValue,\n );\n };\n const commitBufferedPickerValue = (nextPickerValue: string) => {\n if (colorPickerApplyTimeoutRef.current) {\n window.clearTimeout(colorPickerApplyTimeoutRef.current);\n colorPickerApplyTimeoutRef.current = null;\n }\n\n setIsBufferedPickerDirty(false);\n onChange(definition.path, applyColorPickerValue(value, nextPickerValue));\n };\n const inputEndAdornment = onReset || unitValueFormat ? (\n <InputAdornment position=\"end\">\n <div className=\"flex items-center gap-6 pr-2\">\n {onReset ? (\n <IconButton\n size=\"small\"\n aria-label={`${definition.label} reset`}\n disabled={disabled}\n onMouseDown={(event) => {\n event.preventDefault();\n }}\n onClick={() => {\n onReset(definition.path);\n }}\n sx={{\n border: '1px solid #cbd5e1',\n borderRadius: 1,\n color: '#6b7280',\n p: 0.25,\n }}\n >\n <RestartAltOutlinedIcon sx={{ fontSize: 16 }} />\n </IconButton>\n ) : null}\n {unitValueFormat ? (\n <Typography variant=\"body2\" sx={{ whiteSpace: 'nowrap' }}>\n {unitValueFormat}\n </Typography>\n ) : null}\n </div>\n </InputAdornment>\n ) : undefined;\n\n return (\n <div className=\"grid grid-cols-[minmax(0,1fr)_144px] items-start gap-12\">\n <TextField\n select={hasOptions}\n label={definition.label}\n size=\"small\"\n value={canBufferTextInput ? bufferedTextValue : displayValue}\n disabled={disabled}\n onChange={(event) => {\n if (isReadOnlyColorTextInput) {\n return;\n }\n\n const nextValue = unitValueFormat\n ? normalizeUnitInputDisplayValue(event.target.value)\n : event.target.value;\n\n if (canBufferTextInput) {\n setBufferedTextValue(nextValue);\n return;\n }\n\n onChange(definition.path, nextValue);\n }}\n onFocus={() => {\n if (!canBufferTextInput) {\n return;\n }\n\n setIsBufferedTextInputFocused(true);\n }}\n onBlur={() => {\n if (!canBufferTextInput) {\n return;\n }\n\n setIsBufferedTextInputFocused(false);\n commitBufferedTextValue(bufferedTextValue);\n }}\n onKeyDown={(event) => {\n if (!canBufferTextInput || event.key !== 'Enter') {\n return;\n }\n\n event.preventDefault();\n setIsBufferedTextInputFocused(false);\n commitBufferedTextValue(bufferedTextValue);\n event.currentTarget.blur();\n }}\n helperText={resolvedHelperText}\n slotProps={{\n htmlInput:\n {\n ...(unitValueFormat\n ? {\n inputMode: 'decimal',\n }\n : {}),\n ...(isReadOnlyColorTextInput\n ? {\n readOnly: true,\n }\n : {}),\n },\n input:\n {\n ...(inputEndAdornment\n ? {\n endAdornment: inputEndAdornment,\n }\n : {}),\n },\n }}\n >\n {definition.options?.map((option) => (\n <MenuItem key={option.value} value={option.value}>\n {option.label}\n </MenuItem>\n ))}\n </TextField>\n\n {hasPickerControls ? (\n <div className=\"grid grid-cols-2 gap-6\">\n <>\n <Button\n size=\"small\"\n fullWidth\n variant=\"outlined\"\n disabled={disabled}\n sx={{\n fontSize: '1.2rem',\n height: THEME_PREVIEW_SMALL_FIELD_HEIGHT,\n minWidth: 0,\n }}\n onClick={(event) => {\n setMuiPaletteAnchorElement(event.currentTarget);\n }}\n >\n MUI\n </Button>\n <TextField\n hiddenLabel\n type=\"color\"\n size=\"small\"\n value={bufferedPickerValue}\n disabled={disabled}\n onChange={(event) => {\n const nextPickerValue = event.target.value;\n\n setBufferedPickerValue(nextPickerValue);\n setIsBufferedPickerDirty(true);\n\n if (colorPickerApplyTimeoutRef.current) {\n window.clearTimeout(colorPickerApplyTimeoutRef.current);\n }\n\n colorPickerApplyTimeoutRef.current = window.setTimeout(() => {\n commitBufferedPickerValue(nextPickerValue);\n }, THEME_PREVIEW_COLOR_PICKER_APPLY_DELAY_MS);\n }}\n onBlur={() => {\n if (!isBufferedPickerDirty) {\n return;\n }\n\n commitBufferedPickerValue(bufferedPickerValue);\n }}\n slotProps={{\n htmlInput: {\n 'aria-label': 'Pick color',\n },\n }}\n sx={{\n '& .MuiOutlinedInput-root': {\n height: THEME_PREVIEW_SMALL_FIELD_HEIGHT,\n px: 0.5,\n },\n '& input[type=\"color\"]': {\n WebkitAppearance: 'none',\n alignSelf: 'center',\n boxSizing: 'border-box',\n border: 0,\n borderRadius: 0,\n display: 'block',\n height: THEME_PREVIEW_PICKER_SWATCH_HEIGHT,\n minHeight: THEME_PREVIEW_PICKER_SWATCH_HEIGHT,\n overflow: 'hidden',\n padding: 0,\n p: 0,\n width: '100%',\n },\n '& input[type=\"color\"]::-webkit-color-swatch-wrapper': {\n borderRadius: 0,\n p: 0,\n },\n '& input[type=\"color\"]::-webkit-color-swatch': {\n borderColor: '#94a3b8',\n borderRadius: 0,\n },\n '& input[type=\"color\"]::-moz-color-swatch': {\n borderColor: '#94a3b8',\n borderRadius: 0,\n },\n }}\n />\n {muiPaletteAnchorElement ? (\n <Popover\n open\n anchorEl={muiPaletteAnchorElement}\n transitionDuration={0}\n onClose={() => {\n setMuiPaletteAnchorElement(null);\n }}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left',\n }}\n slotProps={{\n paper: {\n sx: {\n maxHeight: 'calc(100vh - 32px)',\n maxWidth: 'calc(100vw - 32px)',\n minWidth: 320,\n overflow: 'auto',\n p: 1.5,\n width: 'min(760px, calc(100vw - 32px))',\n },\n },\n }}\n >\n <div className=\"flex min-w-0 flex-col gap-10\">\n {themePreviewMuiPaletteColorRows.map((paletteRow, paletteRowIndex) => (\n <Box key={paletteRow.label} className=\"flex flex-col gap-10\">\n {paletteRowIndex > 0 ? <Divider flexItem /> : null}\n <Box\n sx={{\n display: 'grid',\n gap: 1,\n gridTemplateColumns: {\n xs: 'minmax(0, 1fr)',\n sm: '84px minmax(0, 1fr)',\n },\n }}\n >\n <Typography variant=\"caption\" color=\"text.secondary\">\n {paletteRow.label}\n </Typography>\n <Box\n sx={{\n display: 'grid',\n gap: 0.75,\n gridTemplateColumns: 'repeat(auto-fit, minmax(68px, 1fr))',\n minWidth: 0,\n }}\n >\n {paletteRow.colors.map((colorItem) => (\n <Box\n key={colorItem.key}\n component=\"button\"\n type=\"button\"\n onClick={() => {\n onChange(\n definition.path,\n applyColorPickerValue(value, colorItem.value),\n );\n setMuiPaletteAnchorElement(null);\n }}\n sx={{\n alignItems: 'center',\n backgroundColor: 'background.paper',\n border: '1px solid',\n borderColor: 'divider',\n borderRadius: 1,\n color: 'text.secondary',\n cursor: 'pointer',\n display: 'flex',\n flexDirection: 'column',\n gap: 0.5,\n justifyContent: 'center',\n minWidth: 0,\n p: 0.5,\n transition: 'background-color 120ms ease, border-color 120ms ease',\n width: '100%',\n '&:hover': {\n backgroundColor: 'action.hover',\n borderColor: 'text.secondary',\n },\n }}\n >\n <Box\n sx={{\n width: 30,\n height: 30,\n borderRadius: 1,\n backgroundColor: colorItem.value,\n border: '1px solid',\n borderColor: 'divider',\n }}\n />\n <Box\n component=\"span\"\n sx={{\n fontSize: '0.75rem',\n fontWeight: 600,\n lineHeight: 1,\n }}\n >\n {colorItem.shade}\n </Box>\n </Box>\n ))}\n </Box>\n </Box>\n </Box>\n ))}\n </div>\n </Popover>\n ) : null}\n </>\n {definition.allowAlpha ? (\n <div className=\"col-span-2 flex flex-col gap-2\">\n <Typography variant=\"caption\" color=\"text.secondary\">\n Current\n </Typography>\n <Typography\n variant=\"caption\"\n color=\"text.secondary\"\n className=\"truncate whitespace-nowrap\"\n >\n {value || '-'}\n </Typography>\n </div>\n ) : null}\n </div>\n ) : (\n <div />\n )}\n </div>\n );\n}\n"],"names":["themePreviewInputUnits","themePreviewMuiColorShades","themePreviewMuiColorPalettes","blue","lightBlue","cyan","teal","green","amber","orange","deepOrange","red","pink","purple","deepPurple","indigo","grey","blueGrey","themePreviewMuiPaletteColorRows","label","palette","acc","shade","paletteValue","THEME_PREVIEW_COLOR_PICKER_APPLY_DELAY_MS","THEME_PREVIEW_SMALL_FIELD_HEIGHT","THEME_PREVIEW_PICKER_SWATCH_HEIGHT","getUnitInputDisplayValue","value","unit","__name","normalizeUnitInputDisplayValue","sanitizedValue","decimalPointIndex","integerPart","decimalPart","normalizeCommittedUnitInputDisplayValue","normalizedValue","normalizeUnitInputValue","getUnitValueFormat","valueFormat","ThemePreviewColorField","disabled","definition","resetVersion","sectionKey","settings","onChange","onReset","muiPaletteAnchorElement","setMuiPaletteAnchorElement","useState","getThemePreviewPaletteValue","unitValueFormat","showColorPicker","alphaValue","getColorAlphaValue","helperText","resolvedHelperText","hasOptions","_a","isReadOnlyColorTextInput","displayValue","hasPickerControls","canBufferTextInput","bufferedTextValue","setBufferedTextValue","isBufferedTextInputFocused","setIsBufferedTextInputFocused","bufferedPickerValue","setBufferedPickerValue","toColorPickerValue","isBufferedPickerDirty","setIsBufferedPickerDirty","colorPickerApplyTimeoutRef","useRef","useEffect","commitBufferedTextValue","nextValue","commitBufferedPickerValue","nextPickerValue","applyColorPickerValue","inputEndAdornment","jsx","InputAdornment","jsxs","IconButton","event","RestartAltOutlinedIcon","Typography","TextField","_b","option","MenuItem","Fragment","Button","Popover","paletteRow","paletteRowIndex","Box","Divider","colorItem"],"mappings":";;;;;;;;;AAoDA,MAAMA,KAAyB;AAAA,EAC7B,aAAa;AAAA,EACb,cAAc;AAChB,GAIMC,KAA6B;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GACMC,KAA+B;AAAA,EACnC,CAAC,QAAQC,EAAI;AAAA,EACb,CAAC,cAAcC,EAAS;AAAA,EACxB,CAAC,QAAQC,EAAI;AAAA,EACb,CAAC,QAAQC,EAAI;AAAA,EACb,CAAC,SAASC,EAAK;AAAA,EACf,CAAC,SAASC,EAAK;AAAA,EACf,CAAC,UAAUC,EAAM;AAAA,EACjB,CAAC,eAAeC,EAAU;AAAA,EAC1B,CAAC,OAAOC,EAAG;AAAA,EACX,CAAC,QAAQC,EAAI;AAAA,EACb,CAAC,UAAUC,EAAM;AAAA,EACjB,CAAC,eAAeC,EAAU;AAAA,EAC1B,CAAC,UAAUC,EAAM;AAAA,EACjB,CAAC,QAAQC,EAAI;AAAA,EACb,CAAC,aAAaC,EAAQ;AACxB,GACMC,KAAkChB,GAA6B,IAAI,CAAC,CAACiB,GAAOC,CAAO,OAAO;AAAA,EAC9F,OAAAD;AAAA,EACA,QAAQlB,GAA2B,OAI/B,CAACoB,GAAKC,MAAU;AAClB,UAAMC,IAAgBH,EAAmCE,CAAK;AAE9D,WAAKC,KAILF,EAAI,KAAK;AAAA,MACP,KAAK,GAAGF,CAAK,IAAIG,CAAK;AAAA,MACtB,OAAAA;AAAA,MACA,OAAOC;AAAA,IAAA,CACR,GAEMF;AAAA,EACT,GAAG,CAAA,CAAE;AACP,EAAE,GACIG,KAA4C,KAC5CC,IAAmC,IACnCC,IAAqC;AAE3C,SAASC,GAAyBC,GAAeC,GAA6B;AAC5E,SAAOD,EAAM,QAAQ,IAAI,OAAO,GAAGC,CAAI,KAAK,GAAG,GAAG,EAAE;AACtD;AAFSC,EAAAH,IAAA;AAIT,SAASI,EAA+BH,GAAe;AACrD,QAAMI,IAAiBJ,EAAM,QAAQ,aAAa,EAAE,EAAE,QAAQ,MAAM,GAAG,GACjEK,IAAoBD,EAAe,QAAQ,GAAG;AAEpD,MAAIC,IAAoB;AACtB,WAAOD;AAGT,QAAME,IAAcF,EAAe,MAAM,GAAGC,CAAiB,GACvDE,IAAcH,EAAe,MAAMC,IAAoB,CAAC,EAAE,QAAQ,OAAO,EAAE;AAEjF,SAAO,GAAGC,CAAW,IAAIC,CAAW;AACtC;AAZSL,EAAAC,GAAA;AAcT,SAASK,GAAwCR,GAAe;AAC9D,QAAMS,IAAkBN,EAA+BH,CAAK;AAE5D,SAAI,CAACS,KAAmBA,MAAoB,MACnC,KAGLA,EAAgB,WAAW,GAAG,IACzB,IAAIA,CAAe,KAGxBA,EAAgB,SAAS,GAAG,IACvBA,EAAgB,MAAM,GAAG,EAAE,IAG7BA;AACT;AAhBSP,EAAAM,IAAA;AAkBT,SAASE,GAAwBV,GAAeC,GAA6B;AAC3E,QAAMQ,IAAkBD,GAAwCR,CAAK;AAErE,SAAOS,IAAkB,GAAGA,CAAe,GAAGR,CAAI,KAAK;AACzD;AAJSC,EAAAQ,IAAA;AAMT,SAASC,GAAmBC,GAA0D;AACpF,UAAQA,IAAcxC,GAAuBwC,CAAW,IAAI,SAAS;AACvE;AAFSV,EAAAS,IAAA;AAIF,SAASE,GAAuB;AAAA,EACrC,UAAAC,IAAW;AAAA,EACX,YAAAC;AAAA,EACA,cAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AACF,GAAgC;;AAC9B,QAAM,CAACC,GAAyBC,CAA0B,IAAIC,EAA6B,IAAI,GACzFvB,IAAQwB,GAA4BN,GAAUD,GAAYF,EAAW,IAAI,GACzEU,IAAkBd,GAAmBI,EAAW,WAAW,GAC3DW,IAAkBX,EAAW,oBAAoB,IACjDY,IAAaZ,EAAW,aAAaa,GAAmB5B,CAAK,IAAI,MACjE6B,IAAa,CAACd,EAAW,WAAW;AAE1C,EAAIA,EAAW,cACbc,EAAW;AAAA,IACTF,IACI,QAAQA,CAAU,mDAClB;AAAA,EAAA;AAIR,QAAMG,IAAqBD,EAAW,OAAO,OAAO,EAAE,KAAK,GAAG,GACxDE,IAAa,IAAQC,IAAAjB,EAAW,YAAX,QAAAiB,EAAoB,SACzCC,IAA2B,GAC/BlB,EAAW,cAAcW,KAAmB,CAACK,KAAc,CAACN,IAExDS,IACJT,IAAkB1B,GAAyBC,GAAOyB,CAAe,IAAIzB,GACjEmC,IAAoBT,GACpBU,IAAqB,CAACL,KAAc,CAACE,GACrC,CAACI,GAAmBC,CAAoB,IAAIf,EAASW,CAAY,GACjE,CAACK,GAA4BC,CAA6B,IAAIjB,EAAS,EAAK,GAC5E,CAACkB,GAAqBC,CAAsB,IAAInB,EAASoB,EAAmB3C,CAAK,CAAC,GAClF,CAAC4C,GAAuBC,CAAwB,IAAItB,EAAS,EAAK,GAClEuB,IAA6BC,GAAsB,IAAI;AAE7D,EAAAC,EAAU,MAAM;AACd,IAAI,CAACZ,KAAsBG,KAI3BD,EAAqBJ,CAAY;AAAA,EACnC,GAAG,CAACE,GAAoBF,GAAcK,CAA0B,CAAC,GAEjES,EAAU,MAAM;AACd,IAAIJ,KAIJF,EAAuBC,EAAmB3C,CAAK,CAAC;AAAA,EAClD,GAAG,CAAC4C,GAAuB5C,CAAK,CAAC,GAEjCgD,EAAU,MACD,MAAM;AACX,IAAKF,EAA2B,WAIhC,OAAO,aAAaA,EAA2B,OAAO;AAAA,EACxD,GACC,CAAA,CAAE,GAELE,EAAU,MAAM;AACd,IAAI,OAAOhC,IAAiB,QAIxB8B,EAA2B,YAC7B,OAAO,aAAaA,EAA2B,OAAO,GACtDA,EAA2B,UAAU,OAGvCR,EAAqBJ,CAAY,GACjCM,EAA8B,EAAK,GACnCE,EAAuBC,EAAmB3C,CAAK,CAAC,GAChD6C,EAAyB,EAAK;AAAA,EAChC,GAAG,CAAC7B,CAAY,CAAC;AAEjB,QAAMiC,IAA0B,gBAAA/C,EAAA,CAACgD,MAAsB;AACrD,IAAA/B;AAAA,MACEJ,EAAW;AAAA,MACXU,IAAkBf,GAAwBwC,GAAWzB,CAAe,IAAIyB;AAAA,IAAA;AAAA,EAE5E,GALgC,4BAM1BC,IAA4B,gBAAAjD,EAAA,CAACkD,MAA4B;AAC7D,IAAIN,EAA2B,YAC7B,OAAO,aAAaA,EAA2B,OAAO,GACtDA,EAA2B,UAAU,OAGvCD,EAAyB,EAAK,GAC9B1B,EAASJ,EAAW,MAAMsC,EAAsBrD,GAAOoD,CAAe,CAAC;AAAA,EACzE,GARkC,8BAS5BE,IAAoBlC,KAAWK,IACnC,gBAAA8B,EAACC,GAAA,EAAe,UAAS,OACvB,UAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,gCACZ,UAAA;AAAA,IAAArC,IACC,gBAAAmC;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,cAAY,GAAG3C,EAAW,KAAK;AAAA,QAC/B,UAAAD;AAAA,QACA,aAAa,gBAAAZ,EAAA,CAACyD,MAAU;AACtB,UAAAA,EAAM,eAAA;AAAA,QACR,GAFa;AAAA,QAGb,SAAS,gBAAAzD,EAAA,MAAM;AACb,UAAAkB,EAAQL,EAAW,IAAI;AAAA,QACzB,GAFS;AAAA,QAGT,IAAI;AAAA,UACF,QAAQ;AAAA,UACR,cAAc;AAAA,UACd,OAAO;AAAA,UACP,GAAG;AAAA,QAAA;AAAA,QAGL,4BAAC6C,IAAA,EAAuB,IAAI,EAAE,UAAU,KAAG,CAAG;AAAA,MAAA;AAAA,IAAA,IAE9C;AAAA,IACHnC,IACC,gBAAA8B,EAACM,GAAA,EAAW,SAAQ,SAAQ,IAAI,EAAE,YAAY,SAAA,GAC3C,UAAApC,EAAA,CACH,IACE;AAAA,EAAA,EAAA,CACN,GACF,IACE;AAEJ,SACE,gBAAAgC,EAAC,OAAA,EAAI,WAAU,2DACb,UAAA;AAAA,IAAA,gBAAAF;AAAA,MAACO;AAAA,MAAA;AAAA,QACC,QAAQ/B;AAAA,QACR,OAAOhB,EAAW;AAAA,QAClB,MAAK;AAAA,QACL,OAAOqB,IAAqBC,IAAoBH;AAAA,QAChD,UAAApB;AAAA,QACA,UAAU,gBAAAZ,EAAA,CAACyD,MAAU;AACnB,cAAI1B;AACF;AAGF,gBAAMiB,IAAYzB,IACdtB,EAA+BwD,EAAM,OAAO,KAAK,IACjDA,EAAM,OAAO;AAEjB,cAAIvB,GAAoB;AACtB,YAAAE,EAAqBY,CAAS;AAC9B;AAAA,UACF;AAEA,UAAA/B,EAASJ,EAAW,MAAMmC,CAAS;AAAA,QACrC,GAfU;AAAA,QAgBV,SAAS,gBAAAhD,EAAA,MAAM;AACb,UAAKkC,KAILI,EAA8B,EAAI;AAAA,QACpC,GANS;AAAA,QAOT,QAAQ,gBAAAtC,EAAA,MAAM;AACZ,UAAKkC,MAILI,EAA8B,EAAK,GACnCS,EAAwBZ,CAAiB;AAAA,QAC3C,GAPQ;AAAA,QAQR,WAAW,gBAAAnC,EAAA,CAACyD,MAAU;AACpB,UAAI,CAACvB,KAAsBuB,EAAM,QAAQ,YAIzCA,EAAM,eAAA,GACNnB,EAA8B,EAAK,GACnCS,EAAwBZ,CAAiB,GACzCsB,EAAM,cAAc,KAAA;AAAA,QACtB,GATW;AAAA,QAUX,YAAY7B;AAAA,QACZ,WAAW;AAAA,UACT,WACE;AAAA,YACE,GAAIL,IACA;AAAA,cACE,WAAW;AAAA,YAAA,IAEb,CAAA;AAAA,YACJ,GAAIQ,IACA;AAAA,cACE,UAAU;AAAA,YAAA,IAEZ,CAAA;AAAA,UAAC;AAAA,UAET,OACE;AAAA,YACE,GAAIqB,IACA;AAAA,cACE,cAAcA;AAAA,YAAA,IAEhB,CAAA;AAAA,UAAC;AAAA,QACP;AAAA,QAGH,WAAAS,IAAAhD,EAAW,YAAX,gBAAAgD,EAAoB,IAAI,CAACC,MACxB,gBAAAT,EAACU,IAAA,EAA4B,OAAOD,EAAO,OACxC,UAAAA,EAAO,MAAA,GADKA,EAAO,KAEtB;AAAA,MACD;AAAA,IAAA;AAAA,IAGF7B,IACC,gBAAAsB,EAAC,OAAA,EAAI,WAAU,0BACb,UAAA;AAAA,MAAA,gBAAAA,EAAAS,GAAA,EACE,UAAA;AAAA,QAAA,gBAAAX;AAAA,UAACY;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAS;AAAA,YACT,SAAQ;AAAA,YACR,UAAArD;AAAA,YACA,IAAI;AAAA,cACF,UAAU;AAAA,cACV,QAAQjB;AAAA,cACR,UAAU;AAAA,YAAA;AAAA,YAEZ,SAAS,gBAAAK,EAAA,CAACyD,MAAU;AAClB,cAAArC,EAA2BqC,EAAM,aAAa;AAAA,YAChD,GAFS;AAAA,YAGV,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGD,gBAAAJ;AAAA,UAACO;AAAA,UAAA;AAAA,YACC,aAAW;AAAA,YACX,MAAK;AAAA,YACL,MAAK;AAAA,YACL,OAAOrB;AAAA,YACP,UAAA3B;AAAA,YACA,UAAU,gBAAAZ,EAAA,CAACyD,MAAU;AACnB,oBAAMP,IAAkBO,EAAM,OAAO;AAErC,cAAAjB,EAAuBU,CAAe,GACtCP,EAAyB,EAAI,GAEzBC,EAA2B,WAC7B,OAAO,aAAaA,EAA2B,OAAO,GAGxDA,EAA2B,UAAU,OAAO,WAAW,MAAM;AAC3D,gBAAAK,EAA0BC,CAAe;AAAA,cAC3C,GAAGxD,EAAyC;AAAA,YAC9C,GAbU;AAAA,YAcV,QAAQ,gBAAAM,EAAA,MAAM;AACZ,cAAK0C,KAILO,EAA0BV,CAAmB;AAAA,YAC/C,GANQ;AAAA,YAOR,WAAW;AAAA,cACT,WAAW;AAAA,gBACT,cAAc;AAAA,cAAA;AAAA,YAChB;AAAA,YAEF,IAAI;AAAA,cACF,4BAA4B;AAAA,gBAC1B,QAAQ5C;AAAA,gBACR,IAAI;AAAA,cAAA;AAAA,cAEN,yBAAyB;AAAA,gBACvB,kBAAkB;AAAA,gBAClB,WAAW;AAAA,gBACX,WAAW;AAAA,gBACX,QAAQ;AAAA,gBACR,cAAc;AAAA,gBACd,SAAS;AAAA,gBACT,QAAQC;AAAA,gBACR,WAAWA;AAAA,gBACX,UAAU;AAAA,gBACV,SAAS;AAAA,gBACT,GAAG;AAAA,gBACH,OAAO;AAAA,cAAA;AAAA,cAET,uDAAuD;AAAA,gBACrD,cAAc;AAAA,gBACd,GAAG;AAAA,cAAA;AAAA,cAEL,+CAA+C;AAAA,gBAC7C,aAAa;AAAA,gBACb,cAAc;AAAA,cAAA;AAAA,cAEhB,4CAA4C;AAAA,gBAC1C,aAAa;AAAA,gBACb,cAAc;AAAA,cAAA;AAAA,YAChB;AAAA,UACF;AAAA,QAAA;AAAA,QAEDuB,IACC,gBAAAkC;AAAA,UAACa;AAAA,UAAA;AAAA,YACC,MAAI;AAAA,YACJ,UAAU/C;AAAA,YACV,oBAAoB;AAAA,YACpB,SAAS,gBAAAnB,EAAA,MAAM;AACb,cAAAoB,EAA2B,IAAI;AAAA,YACjC,GAFS;AAAA,YAGT,cAAc;AAAA,cACZ,UAAU;AAAA,cACV,YAAY;AAAA,YAAA;AAAA,YAEd,iBAAiB;AAAA,cACf,UAAU;AAAA,cACV,YAAY;AAAA,YAAA;AAAA,YAEd,WAAW;AAAA,cACT,OAAO;AAAA,gBACL,IAAI;AAAA,kBACF,WAAW;AAAA,kBACX,UAAU;AAAA,kBACV,UAAU;AAAA,kBACV,UAAU;AAAA,kBACV,GAAG;AAAA,kBACH,OAAO;AAAA,gBAAA;AAAA,cACT;AAAA,YACF;AAAA,YAGF,UAAA,gBAAAiC,EAAC,OAAA,EAAI,WAAU,gCACZ,UAAAjE,GAAgC,IAAI,CAAC+E,GAAYC,MAChD,gBAAAb,EAACc,GAAA,EAA2B,WAAU,wBACnC,UAAA;AAAA,cAAAD,IAAkB,IAAI,gBAAAf,EAACiB,IAAA,EAAQ,UAAQ,IAAC,IAAK;AAAA,cAC9C,gBAAAf;AAAA,gBAACc;AAAA,gBAAA;AAAA,kBACC,IAAI;AAAA,oBACF,SAAS;AAAA,oBACT,KAAK;AAAA,oBACL,qBAAqB;AAAA,sBACnB,IAAI;AAAA,sBACJ,IAAI;AAAA,oBAAA;AAAA,kBACN;AAAA,kBAGF,UAAA;AAAA,oBAAA,gBAAAhB,EAACM,KAAW,SAAQ,WAAU,OAAM,kBACjC,YAAW,OACd;AAAA,oBACA,gBAAAN;AAAA,sBAACgB;AAAA,sBAAA;AAAA,wBACC,IAAI;AAAA,0BACF,SAAS;AAAA,0BACT,KAAK;AAAA,0BACL,qBAAqB;AAAA,0BACrB,UAAU;AAAA,wBAAA;AAAA,wBAGX,UAAAF,EAAW,OAAO,IAAI,CAACI,MACtB,gBAAAhB;AAAA,0BAACc;AAAA,0BAAA;AAAA,4BAEC,WAAU;AAAA,4BACV,MAAK;AAAA,4BACL,SAAS,gBAAArE,EAAA,MAAM;AACb,8BAAAiB;AAAA,gCACEJ,EAAW;AAAA,gCACXsC,EAAsBrD,GAAOyE,EAAU,KAAK;AAAA,8BAAA,GAE9CnD,EAA2B,IAAI;AAAA,4BACjC,GANS;AAAA,4BAOT,IAAI;AAAA,8BACF,YAAY;AAAA,8BACZ,iBAAiB;AAAA,8BACjB,QAAQ;AAAA,8BACR,aAAa;AAAA,8BACb,cAAc;AAAA,8BACd,OAAO;AAAA,8BACP,QAAQ;AAAA,8BACR,SAAS;AAAA,8BACT,eAAe;AAAA,8BACf,KAAK;AAAA,8BACL,gBAAgB;AAAA,8BAChB,UAAU;AAAA,8BACV,GAAG;AAAA,8BACH,YAAY;AAAA,8BACZ,OAAO;AAAA,8BACP,WAAW;AAAA,gCACT,iBAAiB;AAAA,gCACjB,aAAa;AAAA,8BAAA;AAAA,4BACf;AAAA,4BAGF,UAAA;AAAA,8BAAA,gBAAAiC;AAAA,gCAACgB;AAAA,gCAAA;AAAA,kCACC,IAAI;AAAA,oCACF,OAAO;AAAA,oCACP,QAAQ;AAAA,oCACR,cAAc;AAAA,oCACd,iBAAiBE,EAAU;AAAA,oCAC3B,QAAQ;AAAA,oCACR,aAAa;AAAA,kCAAA;AAAA,gCACf;AAAA,8BAAA;AAAA,8BAEF,gBAAAlB;AAAA,gCAACgB;AAAA,gCAAA;AAAA,kCACC,WAAU;AAAA,kCACV,IAAI;AAAA,oCACF,UAAU;AAAA,oCACV,YAAY;AAAA,oCACZ,YAAY;AAAA,kCAAA;AAAA,kCAGb,UAAAE,EAAU;AAAA,gCAAA;AAAA,8BAAA;AAAA,4BACb;AAAA,0BAAA;AAAA,0BAnDKA,EAAU;AAAA,wBAAA,CAqDlB;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBACH;AAAA,gBAAA;AAAA,cAAA;AAAA,YACF,KAhFQJ,EAAW,KAiFrB,CACD,EAAA,CACH;AAAA,UAAA;AAAA,QAAA,IAEA;AAAA,MAAA,GACN;AAAA,MACCtD,EAAW,aACV,gBAAA0C,EAAC,OAAA,EAAI,WAAU,kCACb,UAAA;AAAA,QAAA,gBAAAF,EAACM,GAAA,EAAW,SAAQ,WAAU,OAAM,kBAAiB,UAAA,WAErD;AAAA,QACA,gBAAAN;AAAA,UAACM;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,OAAM;AAAA,YACN,WAAU;AAAA,YAET,UAAA7D,KAAS;AAAA,UAAA;AAAA,QAAA;AAAA,MACZ,EAAA,CACF,IACE;AAAA,IAAA,GACN,sBAEC,OAAA,CAAA,CAAI;AAAA,EAAA,GAET;AAEJ;AAhbgBE,EAAAW,IAAA;"}
|