@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.
Files changed (66) hide show
  1. package/dist/_virtual/index16.js +4 -4
  2. package/dist/_virtual/index17.js +4 -4
  3. package/dist/_virtual/index18.js +4 -4
  4. package/dist/_virtual/index19.js +4 -4
  5. package/dist/components/OwpDialog/OwpDialog.js +67 -46
  6. package/dist/components/OwpDialog/OwpDialog.js.map +1 -1
  7. package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js +162 -153
  8. package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js.map +1 -1
  9. package/dist/components/OwpTable/OwpDataTable.js +297 -283
  10. package/dist/components/OwpTable/OwpDataTable.js.map +1 -1
  11. package/dist/components/OwpTable/OwpFieldTable.js +98 -86
  12. package/dist/components/OwpTable/OwpFieldTable.js.map +1 -1
  13. package/dist/components/OwpTable/OwpTable.js +145 -127
  14. package/dist/components/OwpTable/OwpTable.js.map +1 -1
  15. package/dist/components/OwpTable/internal/defaultTableStyle.js +21 -15
  16. package/dist/components/OwpTable/internal/defaultTableStyle.js.map +1 -1
  17. package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +195 -147
  18. package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js.map +1 -1
  19. package/dist/constants/tableTheme.js.map +1 -1
  20. package/dist/features/themePreview/components/ThemePreviewCanvas.js +300 -263
  21. package/dist/features/themePreview/components/ThemePreviewCanvas.js.map +1 -1
  22. package/dist/features/themePreview/components/ThemePreviewCanvasSections.js +148 -141
  23. package/dist/features/themePreview/components/ThemePreviewCanvasSections.js.map +1 -1
  24. package/dist/features/themePreview/components/ThemePreviewColorField.js +168 -138
  25. package/dist/features/themePreview/components/ThemePreviewColorField.js.map +1 -1
  26. package/dist/features/themePreview/components/ThemePreviewControls.js +410 -218
  27. package/dist/features/themePreview/components/ThemePreviewControls.js.map +1 -1
  28. package/dist/features/themePreview/components/themePreviewCanvas.shared.js +145 -125
  29. package/dist/features/themePreview/components/themePreviewCanvas.shared.js.map +1 -1
  30. package/dist/features/themePreview/configs/table.js +4 -2
  31. package/dist/features/themePreview/configs/table.js.map +1 -1
  32. package/dist/features/themePreview/dialogs/ThemePreviewDialog.js +124 -118
  33. package/dist/features/themePreview/dialogs/ThemePreviewDialog.js.map +1 -1
  34. package/dist/features/themePreview/hooks/useThemePreview.js +275 -193
  35. package/dist/features/themePreview/hooks/useThemePreview.js.map +1 -1
  36. package/dist/features/themePreview/utils/themePreviewDefinitions.js +8 -0
  37. package/dist/features/themePreview/utils/themePreviewDefinitions.js.map +1 -1
  38. package/dist/features/themePreview/utils/themePreviewSettings.js +188 -151
  39. package/dist/features/themePreview/utils/themePreviewSettings.js.map +1 -1
  40. package/dist/features/themePreview.js +18 -17
  41. package/dist/layout/components/toggles/NavigationSearchToggle.js +3 -3
  42. package/dist/layout/components/toolbar/ToolbarLayout.js +36 -35
  43. package/dist/layout/components/toolbar/ToolbarLayout.js.map +1 -1
  44. 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
  45. 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
  46. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/constants.js +1 -1
  47. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/constants.js +1 -1
  48. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/constants.js +1 -1
  49. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/constants.js +1 -1
  50. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
  51. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
  52. 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
  53. package/dist/owp-app.css +1 -1
  54. package/dist/types/components/OwpDialog/OwpDialog.d.ts +2 -0
  55. package/dist/types/components/OwpTable/OwpFieldTable.d.ts +3 -2
  56. package/dist/types/components/OwpTable/internal/defaultTableStyle.d.ts +2 -0
  57. package/dist/types/constants/tableTheme.d.ts +1 -0
  58. package/dist/types/features/themePreview/components/ThemePreviewColorField.d.ts +3 -1
  59. package/dist/types/features/themePreview/components/ThemePreviewControls.d.ts +4 -1
  60. package/dist/types/features/themePreview/configs/settings.d.ts +2 -0
  61. package/dist/types/features/themePreview/configs/table.d.ts +2 -0
  62. package/dist/types/features/themePreview/hooks/useThemePreview.d.ts +3 -0
  63. package/dist/types/features/themePreview/utils/index.d.ts +1 -1
  64. package/dist/types/features/themePreview/utils/themePreviewSettings.d.ts +11 -1
  65. package/dist/types/types/OwpTableThemeTypes.d.ts +8 -0
  66. package/package.json +1 -1
@@ -1,15 +1,16 @@
1
- var K = Object.defineProperty;
2
- var l = (t, e) => K(t, "name", { value: e, configurable: !0 });
3
- import { jsxs as m, jsx as o, Fragment as Y } 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 { MenuItem as q, TextField as $, Box as h, Divider as J, Typography as C, Popover as Q, InputAdornment as X, Button as Z } from "@mui/material";
5
- import { blue as ee, lightBlue as re, cyan as te, teal as le, green as oe, amber as ne, orange as ae, deepOrange as ie, red as ue, pink as ce, purple as se, deepPurple as pe, indigo as de, grey as me, blueGrey as he } from "@mui/material/colors";
6
- import { useState as f, useRef as fe, useEffect as T } from "react";
7
- import { getThemePreviewPaletteValue as xe } from "../utils/themePreviewSettings.js";
8
- import { getColorAlphaValue as ge, toColorPickerValue as F, applyColorPickerValue as S } from "../utils/color.js";
9
- const be = {
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
- }, Pe = [
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
- ], ve = [
28
- ["Blue", ee],
29
- ["Light Blue", re],
30
- ["Cyan", te],
31
- ["Teal", le],
32
- ["Green", oe],
33
- ["Amber", ne],
34
- ["Orange", ae],
35
- ["Deep Orange", ie],
36
- ["Red", ue],
37
- ["Pink", ce],
38
- ["Purple", se],
39
- ["Deep Purple", pe],
40
- ["Indigo", de],
41
- ["Grey", me],
42
- ["Blue Grey", he]
43
- ], we = ve.map(([t, e]) => ({
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: Pe.reduce((n, s) => {
46
- const a = e[s];
47
- return a && n.push({
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: a
51
+ value: m
51
52
  }), n;
52
53
  }, [])
53
- })), ye = 500, U = 32, L = 20;
54
- function ke(t, e) {
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(ke, "getUnitInputDisplayValue");
58
- function G(t) {
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), a = e.slice(n + 1).replace(/\./g, "");
63
- return `${s}.${a}`;
63
+ const s = e.slice(0, n), m = e.slice(n + 1).replace(/\./g, "");
64
+ return `${s}.${m}`;
64
65
  }
65
- l(G, "normalizeUnitInputDisplayValue");
66
- function Ce(t) {
67
- const e = G(t);
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(Ce, "normalizeCommittedUnitInputDisplayValue");
71
- function Te(t, e) {
72
- const n = Ce(t);
71
+ l(Ae, "normalizeCommittedUnitInputDisplayValue");
72
+ function Be(t, e) {
73
+ const n = Ae(t);
73
74
  return n ? `${n}${e}` : "";
74
75
  }
75
- l(Te, "normalizeUnitInputValue");
76
- function Ie(t) {
77
- return (t ? be[t] : null) ?? null;
76
+ l(Be, "normalizeUnitInputValue");
77
+ function ze(t) {
78
+ return (t ? ke[t] : null) ?? null;
78
79
  }
79
- l(Ie, "getUnitValueFormat");
80
- function _e({
80
+ l(ze, "getUnitValueFormat");
81
+ function $e({
81
82
  disabled: t = !1,
82
83
  definition: e,
83
- sectionKey: n,
84
- settings: s,
85
- onChange: a
84
+ resetVersion: n,
85
+ sectionKey: s,
86
+ settings: m,
87
+ onChange: g,
88
+ onReset: y
86
89
  }) {
87
- var H, O;
88
- const [I, b] = f(null), i = xe(s, n, e.path), u = Ie(e.valueFormat), V = e.showColorPicker !== !1, E = e.allowAlpha ? ge(i) : null, A = [e.description];
89
- e.allowAlpha && A.push(
90
- E ? `알파값은 ${E}로 고정되고 색상만 변경됩니다. Pick 또는 MUI로 색상만 변경할 수 있습니다.` : "알파값은 고정되고 색상만 변경됩니다. Pick 또는 MUI로 색상만 변경할 수 있습니다."
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 N = A.filter(Boolean).join(" "), P = !!((H = e.options) != null && H.length), v = !!(e.allowAlpha && V && !P && !u), x = u ? ke(i, u) : i, j = V, p = !P && !v, [w, B] = f(x), [R, y] = f(!1), [z, M] = f(F(i)), [k, _] = f(!1), c = fe(null);
93
- T(() => {
94
- !p || R || B(x);
95
- }, [p, x, R]), T(() => {
96
- k || M(F(i));
97
- }, [k, i]), T(() => () => {
98
- c.current && window.clearTimeout(c.current);
99
- }, []);
100
- const D = /* @__PURE__ */ l((r) => {
101
- a(
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 ? Te(r, u) : r
108
+ u ? Be(r, u) : r
104
109
  );
105
- }, "commitBufferedTextValue"), W = /* @__PURE__ */ l((r) => {
106
- c.current && (window.clearTimeout(c.current), c.current = null), _(!1), a(e.path, S(i, r));
107
- }, "commitBufferedPickerValue");
108
- return /* @__PURE__ */ m("div", { className: "grid grid-cols-[minmax(0,1fr)_144px] items-start gap-12", children: [
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: P,
140
+ select: C,
113
141
  label: e.label,
114
142
  size: "small",
115
- value: p ? w : x,
143
+ value: p ? I : f,
116
144
  disabled: t,
117
145
  onChange: /* @__PURE__ */ l((r) => {
118
- if (v)
146
+ if (T)
119
147
  return;
120
- const d = u ? G(r.target.value) : r.target.value;
148
+ const d = u ? K(r.target.value) : r.target.value;
121
149
  if (p) {
122
- B(d);
150
+ E(d);
123
151
  return;
124
152
  }
125
- a(e.path, d);
153
+ g(e.path, d);
126
154
  }, "onChange"),
127
155
  onFocus: /* @__PURE__ */ l(() => {
128
- p && y(!0);
156
+ p && b(!0);
129
157
  }, "onFocus"),
130
158
  onBlur: /* @__PURE__ */ l(() => {
131
- p && (y(!1), D(w));
159
+ p && (b(!1), H(I));
132
160
  }, "onBlur"),
133
161
  onKeyDown: /* @__PURE__ */ l((r) => {
134
- !p || r.key !== "Enter" || (r.preventDefault(), y(!1), D(w), r.currentTarget.blur());
162
+ !p || r.key !== "Enter" || (r.preventDefault(), b(!1), H(I), r.currentTarget.blur());
135
163
  }, "onKeyDown"),
136
- helperText: N,
164
+ helperText: Y,
137
165
  slotProps: {
138
166
  htmlInput: {
139
167
  ...u ? {
140
168
  inputMode: "decimal"
141
169
  } : {},
142
- ...v ? {
170
+ ...T ? {
143
171
  readOnly: !0
144
172
  } : {}
145
173
  },
146
- input: u ? {
147
- endAdornment: /* @__PURE__ */ o(X, { position: "end", children: u })
148
- } : void 0
174
+ input: {
175
+ ...$ ? {
176
+ endAdornment: $
177
+ } : {}
178
+ }
149
179
  },
150
- children: (O = e.options) == null ? void 0 : O.map((r) => /* @__PURE__ */ o(q, { value: r.value, children: r.label }, r.value))
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
- j ? /* @__PURE__ */ m("div", { className: "grid grid-cols-2 gap-6", children: [
154
- /* @__PURE__ */ m(Y, { children: [
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
- label: "Pick",
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: z,
209
+ value: O,
162
210
  disabled: t,
163
211
  onChange: /* @__PURE__ */ l((r) => {
164
212
  const d = r.target.value;
165
- M(d), _(!0), c.current && window.clearTimeout(c.current), c.current = window.setTimeout(() => {
166
- W(d);
167
- }, ye);
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
- k && W(z);
218
+ A && S(O);
171
219
  }, "onBlur"),
172
220
  slotProps: {
173
- inputLabel: {
174
- shrink: !0
221
+ htmlInput: {
222
+ "aria-label": "Pick color"
175
223
  }
176
224
  },
177
225
  sx: {
178
226
  "& .MuiOutlinedInput-root": {
179
- height: U,
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: L,
190
- minHeight: L,
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
- Z,
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: I,
263
+ anchorEl: D,
234
264
  transitionDuration: 0,
235
265
  onClose: /* @__PURE__ */ l(() => {
236
- b(null);
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: we.map((r, d) => /* @__PURE__ */ m(h, { className: "flex flex-col gap-10", children: [
259
- d > 0 ? /* @__PURE__ */ o(J, { flexItem: !0 }) : null,
260
- /* @__PURE__ */ m(
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(C, { variant: "caption", color: "text.secondary", children: r.label }),
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((g) => /* @__PURE__ */ m(
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
- a(
318
+ g(
289
319
  e.path,
290
- S(i, g.value)
291
- ), b(null);
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: g.value,
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: g.shade
367
+ children: P.shade
338
368
  }
339
369
  )
340
370
  ]
341
371
  },
342
- g.key
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__ */ m("div", { className: "col-span-2 flex flex-col gap-2", children: [
354
- /* @__PURE__ */ o(C, { variant: "caption", color: "text.secondary", children: "Current" }),
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
- C,
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(_e, "ThemePreviewColorField");
398
+ l($e, "ThemePreviewColorField");
369
399
  export {
370
- _e as ThemePreviewColorField
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":"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"}