@owp/core 2.5.23 → 2.5.25

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 (155) hide show
  1. package/dist/_virtual/index10.js +2 -2
  2. package/dist/_virtual/index12.js +2 -2
  3. package/dist/_virtual/index13.js +2 -2
  4. package/dist/_virtual/index14.js +2 -2
  5. package/dist/_virtual/index15.js +2 -2
  6. package/dist/_virtual/index5.js +2 -2
  7. package/dist/components/OwpCommonCode/OwpCommonCodeQuerySelector.js +15 -13
  8. package/dist/components/OwpCommonCode/OwpCommonCodeQuerySelector.js.map +1 -1
  9. package/dist/components/OwpCommonCode/OwpCommonCodeSelector.js +21 -19
  10. package/dist/components/OwpCommonCode/OwpCommonCodeSelector.js.map +1 -1
  11. package/dist/components/OwpExportExcelButton/OwpExportExcelButton.js +1 -1
  12. package/dist/components/OwpExportExcelButton/OwpExportExcelButton.js.map +1 -1
  13. package/dist/components/OwpLanguageSwitcherSelect/OwpLanguageSwitcherSelect.js +1 -1
  14. package/dist/components/OwpLanguageSwitcherSelect/OwpLanguageSwitcherSelect.js.map +1 -1
  15. package/dist/components/OwpLoading/OwpLoading.js +1 -1
  16. package/dist/components/OwpLoading/OwpLoading.js.map +1 -1
  17. package/dist/components/OwpMrtTable/OwpMrtTable.js +1 -1
  18. package/dist/components/OwpMrtTable/OwpMrtTable.js.map +1 -1
  19. package/dist/components/OwpOptionSelector/OwpOptionSelector.js +14 -12
  20. package/dist/components/OwpOptionSelector/OwpOptionSelector.js.map +1 -1
  21. package/dist/components/OwpPageTitle/OwpPageTitle.js +1 -1
  22. package/dist/components/OwpPageTitle/OwpPageTitle.js.map +1 -1
  23. package/dist/components/OwpPicker/OwpDatePicker.js +81 -82
  24. package/dist/components/OwpPicker/OwpDatePicker.js.map +1 -1
  25. package/dist/components/OwpPicker/OwpTimePicker.js +82 -83
  26. package/dist/components/OwpPicker/OwpTimePicker.js.map +1 -1
  27. package/dist/components/OwpPicker/OwpWeekDatePicker.js +24 -25
  28. package/dist/components/OwpPicker/OwpWeekDatePicker.js.map +1 -1
  29. package/dist/components/OwpSearchFilter/OwpSearchFilter.js +1 -1
  30. package/dist/components/OwpSearchFilter/OwpSearchFilter.js.map +1 -1
  31. package/dist/components/OwpSection/OwpSection.js +1 -1
  32. package/dist/components/OwpSection/OwpSection.js.map +1 -1
  33. package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js +155 -157
  34. package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js.map +1 -1
  35. package/dist/components/OwpSelectorBase/OwpSelectorSelect.js +95 -81
  36. package/dist/components/OwpSelectorBase/OwpSelectorSelect.js.map +1 -1
  37. package/dist/components/OwpSuspense/OwpSuspense.js +43 -43
  38. package/dist/components/OwpSuspense/OwpSuspense.js.map +1 -1
  39. package/dist/components/OwpTreeGrid/OwpTreeGrid.js +2 -2
  40. package/dist/components/OwpTreeGrid/OwpTreeGrid.js.map +1 -1
  41. package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridDatePickerEditor.js +55 -56
  42. package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridDatePickerEditor.js.map +1 -1
  43. package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +10 -10
  44. package/dist/contexts/OwpUiProvider.js +5 -5
  45. package/dist/contexts/OwpUiProvider.js.map +1 -1
  46. package/dist/hooks/{useAccessTokenGuard.js → internal/useAccessTokenGuard.js} +2 -2
  47. package/dist/hooks/internal/useAccessTokenGuard.js.map +1 -0
  48. package/dist/hooks/{useCurrentLanguage.js → internal/useCurrentLanguage.js} +2 -2
  49. package/dist/hooks/internal/useCurrentLanguage.js.map +1 -0
  50. package/dist/hooks/internal/useHeaderWrapState.js.map +1 -0
  51. package/dist/hooks/internal/useNavbar.js +24 -0
  52. package/dist/hooks/internal/useNavbar.js.map +1 -0
  53. package/dist/hooks/{useNavigationActiveRouteRemount.js → internal/useNavigationActiveRouteRemount.js} +1 -1
  54. package/dist/hooks/internal/useNavigationActiveRouteRemount.js.map +1 -0
  55. package/dist/hooks/{useShortcuts.js → internal/useShortcuts.js} +3 -3
  56. package/dist/hooks/internal/useShortcuts.js.map +1 -0
  57. package/dist/hooks/internal/useThemeMediaQuery.js.map +1 -0
  58. package/dist/hooks/internal/useTimeout.js.map +1 -0
  59. package/dist/hooks/useInitApp.js.map +1 -1
  60. package/dist/hooks.js +53 -81
  61. package/dist/hooks.js.map +1 -1
  62. package/dist/layout/Layout.js +1 -1
  63. package/dist/layout/Layout.js.map +1 -1
  64. package/dist/layout/components/layouts/NavbarToggleFabLayout.js +2 -2
  65. package/dist/layout/components/layouts/NavbarToggleFabLayout.js.map +1 -1
  66. package/dist/layout/components/layouts/NavbarWrapperLayout.js +2 -2
  67. package/dist/layout/components/layouts/NavbarWrapperLayout.js.map +1 -1
  68. package/dist/layout/components/navbar/NavbarToggleButton.js +2 -2
  69. package/dist/layout/components/navbar/NavbarToggleButton.js.map +1 -1
  70. package/dist/layout/components/navbar/style/NavbarStyle.js +1 -1
  71. package/dist/layout/components/navbar/style/NavbarStyle.js.map +1 -1
  72. package/dist/layout/components/navbar/style/NavbarStyleContent.js +1 -1
  73. package/dist/layout/components/navbar/style/NavbarStyleContent.js.map +1 -1
  74. package/dist/layout/components/navigation/Navigation.js +2 -2
  75. package/dist/layout/components/navigation/Navigation.js.map +1 -1
  76. package/dist/layout/components/navigation/vertical/types/NavVerticalCollapse.js +1 -1
  77. package/dist/layout/components/navigation/vertical/types/NavVerticalCollapse.js.map +1 -1
  78. package/dist/layout/components/navigation/vertical/types/NavVerticalGroup.js +1 -1
  79. package/dist/layout/components/navigation/vertical/types/NavVerticalGroup.js.map +1 -1
  80. package/dist/layout/components/navigation/vertical/types/NavVerticalItem.js +1 -1
  81. package/dist/layout/components/navigation/vertical/types/NavVerticalItem.js.map +1 -1
  82. package/dist/layout/components/toggles/LanguageSwitcherToggle.js +1 -1
  83. package/dist/layout/components/toggles/LanguageSwitcherToggle.js.map +1 -1
  84. package/dist/layout/components/toggles/NavigationShortcutsToggle.js +1 -1
  85. package/dist/layout/components/toggles/NavigationShortcutsToggle.js.map +1 -1
  86. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/constants.js +1 -1
  87. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/index.js +1 -1
  88. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE39/index.js +1 -1
  89. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/index.js +1 -1
  90. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/index.js +1 -1
  91. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/GenericBarcode/index.js +1 -1
  92. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/constants.js +1 -1
  93. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/index.js +1 -1
  94. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/MSI/index.js +1 -1
  95. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/codabar/index.js +1 -1
  96. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/pharmacode/index.js +1 -1
  97. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/renderers/index.js +1 -1
  98. package/dist/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js +1 -1
  99. package/dist/types/components/OwpCommonCode/OwpCommonCodeQuerySelector.d.ts +5 -3
  100. package/dist/types/components/OwpCommonCode/OwpCommonCodeSelector.d.ts +5 -3
  101. package/dist/types/components/OwpOptionSelector/OwpOptionSelector.d.ts +4 -1
  102. package/dist/types/components/OwpSelectorBase/types/index.d.ts +1 -1
  103. package/dist/types/components/OwpSelectorBase/types/types.d.ts +3 -0
  104. package/dist/types/hooks/index.d.ts +0 -10
  105. package/dist/types/hooks/{useNavbar.d.ts → internal/useNavbar.d.ts} +1 -1
  106. package/dist/types/utils/treeGridUtil.d.ts +0 -14
  107. package/dist/utils/{exceljsBrowser.js → internal/exceljsBrowser.js} +1 -1
  108. package/dist/utils/internal/exceljsBrowser.js.map +1 -0
  109. package/dist/utils/internal/jszipBrowser.js.map +1 -0
  110. package/dist/utils/internal/treeGridBodyRowsEvent.js.map +1 -0
  111. package/dist/utils/treeGridExportExcelUtil.js +1 -1
  112. package/dist/utils/treeGridExportExcelUtil.js.map +1 -1
  113. package/dist/utils/treeGridUtil.js +1 -6
  114. package/dist/utils/treeGridUtil.js.map +1 -1
  115. package/dist/utils/zipUtil.js +1 -1
  116. package/dist/utils/zipUtil.js.map +1 -1
  117. package/dist/utils.js +70 -75
  118. package/package.json +1 -1
  119. package/dist/hooks/useAccessTokenGuard.js.map +0 -1
  120. package/dist/hooks/useCurrentLanguage.js.map +0 -1
  121. package/dist/hooks/useDebounce.js +0 -24
  122. package/dist/hooks/useDebounce.js.map +0 -1
  123. package/dist/hooks/useDeepCompareEffect.js +0 -38
  124. package/dist/hooks/useDeepCompareEffect.js.map +0 -1
  125. package/dist/hooks/useHeaderWrapState.js.map +0 -1
  126. package/dist/hooks/useNavbar.js +0 -24
  127. package/dist/hooks/useNavbar.js.map +0 -1
  128. package/dist/hooks/useNavigationActiveRouteRemount.js.map +0 -1
  129. package/dist/hooks/usePrevious.js +0 -14
  130. package/dist/hooks/usePrevious.js.map +0 -1
  131. package/dist/hooks/useShortcuts.js.map +0 -1
  132. package/dist/hooks/useThemeMediaQuery.js.map +0 -1
  133. package/dist/hooks/useTimeout.js.map +0 -1
  134. package/dist/types/hooks/useDebounce.d.ts +0 -7
  135. package/dist/types/hooks/useDeepCompareEffect.d.ts +0 -22
  136. package/dist/types/hooks/usePrevious.d.ts +0 -5
  137. package/dist/types/utils/dayjsBrowser.d.ts +0 -1
  138. package/dist/utils/exceljsBrowser.js.map +0 -1
  139. package/dist/utils/jszipBrowser.js.map +0 -1
  140. package/dist/utils/treeGridBodyRowsEvent.js.map +0 -1
  141. /package/dist/hooks/{useHeaderWrapState.js → internal/useHeaderWrapState.js} +0 -0
  142. /package/dist/hooks/{useThemeMediaQuery.js → internal/useThemeMediaQuery.js} +0 -0
  143. /package/dist/hooks/{useTimeout.js → internal/useTimeout.js} +0 -0
  144. /package/dist/types/hooks/{useAccessTokenGuard.d.ts → internal/useAccessTokenGuard.d.ts} +0 -0
  145. /package/dist/types/hooks/{useCurrentLanguage.d.ts → internal/useCurrentLanguage.d.ts} +0 -0
  146. /package/dist/types/hooks/{useHeaderWrapState.d.ts → internal/useHeaderWrapState.d.ts} +0 -0
  147. /package/dist/types/hooks/{useNavigationActiveRouteRemount.d.ts → internal/useNavigationActiveRouteRemount.d.ts} +0 -0
  148. /package/dist/types/hooks/{useShortcuts.d.ts → internal/useShortcuts.d.ts} +0 -0
  149. /package/dist/types/hooks/{useThemeMediaQuery.d.ts → internal/useThemeMediaQuery.d.ts} +0 -0
  150. /package/dist/types/hooks/{useTimeout.d.ts → internal/useTimeout.d.ts} +0 -0
  151. /package/dist/types/utils/{exceljsBrowser.d.ts → internal/exceljsBrowser.d.ts} +0 -0
  152. /package/dist/types/utils/{jszipBrowser.d.ts → internal/jszipBrowser.d.ts} +0 -0
  153. /package/dist/types/utils/{treeGridBodyRowsEvent.d.ts → internal/treeGridBodyRowsEvent.d.ts} +0 -0
  154. /package/dist/utils/{jszipBrowser.js → internal/jszipBrowser.js} +0 -0
  155. /package/dist/utils/{treeGridBodyRowsEvent.js → internal/treeGridBodyRowsEvent.js} +0 -0
@@ -1,19 +1,18 @@
1
1
  var Jn = Object.defineProperty;
2
2
  var c = (r, I) => Jn(r, "name", { value: I, configurable: !0 });
3
- import { jsx as D, jsxs as F } 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";
3
+ import { jsx as E, jsxs as F } 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
4
  import { useOwpTranslation as Qn } from "../../hooks/useOwpTranslation.js";
5
- import { owpDayjs as g, ensureDayjsBrowserSetup as Zn } from "../../dayjs.js";
6
5
  import bn 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/Clear.js";
7
- import { Popper as xn, Paper as Fn, InputAdornment as pn, IconButton as Mn } from "@mui/material";
8
- import { TimePicker as Pn, MultiSectionDigitalClock as ne, LocalizationProvider as ee } from "@mui/x-date-pickers";
9
- import { AdapterDayjs as te } from "@mui/x-date-pickers/AdapterDayjs";
10
- import { clsx as re } from "../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js";
6
+ import { Popper as Zn, Paper as xn, InputAdornment as pn, IconButton as Mn } from "@mui/material";
7
+ import { TimePicker as Fn, MultiSectionDigitalClock as Pn, LocalizationProvider as ne } from "@mui/x-date-pickers";
8
+ import { AdapterDayjs as ee } from "@mui/x-date-pickers/AdapterDayjs";
9
+ import { clsx as te } from "../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js";
10
+ import { owpDayjs as g } from "../../dayjs.js";
11
11
  import { useMemo as P, useState as q, useRef as k, useCallback as o, useEffect as nn } from "react";
12
- import { TIME_PICKER_EDITOR_SECTION_WIDTH as en, VALUE_TIME_SECOND_FORMATTER as X, VALUE_TIME_FORMATTER as $, PICKER_INVALID_INPUT_MESSAGE_KEY as ie, TIME_PICKER_EDITOR_SECTION_ITEM_WIDTH as gn, TIME_PICKER_SELECTED_ITEM_SX as ae } from "./constants/index.js";
13
- import { getAdjacentFocusableElement as ce, getPickerInputMask as ue } from "./utils/index.js";
14
- import { OwpTextMaskField as oe } from "../OwpTextField/OwpTextMaskField.js";
15
- Zn();
16
- const tn = "––", le = {
12
+ import { TIME_PICKER_EDITOR_SECTION_WIDTH as en, VALUE_TIME_SECOND_FORMATTER as X, VALUE_TIME_FORMATTER as $, PICKER_INVALID_INPUT_MESSAGE_KEY as re, TIME_PICKER_EDITOR_SECTION_ITEM_WIDTH as gn, TIME_PICKER_SELECTED_ITEM_SX as ie } from "./constants/index.js";
13
+ import { getAdjacentFocusableElement as ae, getPickerInputMask as ce } from "./utils/index.js";
14
+ import { OwpTextMaskField as ue } from "../OwpTextField/OwpTextMaskField.js";
15
+ const tn = "––", oe = {
17
16
  "& .MuiInputBase-root": {
18
17
  alignItems: "center"
19
18
  },
@@ -39,8 +38,8 @@ const tn = "––", le = {
39
38
  visibility: "visible"
40
39
  }
41
40
  }
42
- }, fe = /* @__PURE__ */ c((r) => r.ctrlKey || r.altKey || r.metaKey ? !1 : r.key.length === 1 || r.key === "Backspace" || r.key === "Delete", "isValueEditingKey"), se = /* @__PURE__ */ c((r) => r.ctrlKey || r.altKey || r.metaKey || r.key === "Escape" || r.key === "Enter" || r.key === "Tab" ? !1 : r.key.length === 1 || r.key.startsWith("Arrow"), "isTimePickerOpenKey"), rn = /* @__PURE__ */ c((r, I) => {
43
- const Y = r.trim(), s = I ? "(\\d{2}):(\\d{2}):(\\d{2})" : "(\\d{2}):(\\d{2})", w = Y.match(new RegExp(`^${s}$`));
41
+ }, le = /* @__PURE__ */ c((r) => r.ctrlKey || r.altKey || r.metaKey ? !1 : r.key.length === 1 || r.key === "Backspace" || r.key === "Delete", "isValueEditingKey"), fe = /* @__PURE__ */ c((r) => r.ctrlKey || r.altKey || r.metaKey || r.key === "Escape" || r.key === "Enter" || r.key === "Tab" ? !1 : r.key.length === 1 || r.key.startsWith("Arrow"), "isTimePickerOpenKey"), rn = /* @__PURE__ */ c((r, I) => {
42
+ const Y = r.trim(), d = I ? "(\\d{2}):(\\d{2}):(\\d{2})" : "(\\d{2}):(\\d{2})", w = Y.match(new RegExp(`^${d}$`));
44
43
  if (!w)
45
44
  return null;
46
45
  const S = Number(w[1]), B = Number(w[2]), h = I ? Number(w[3]) : 0;
@@ -59,11 +58,11 @@ const tn = "––", le = {
59
58
  }
60
59
  r.current = I;
61
60
  }
62
- }, "assignInputRef"), Re = /* @__PURE__ */ c(({
61
+ }, "assignInputRef"), Ae = /* @__PURE__ */ c(({
63
62
  label: r,
64
63
  variant: I = "standard",
65
64
  sx: Y,
66
- value: s,
65
+ value: d,
67
66
  format: w = $,
68
67
  useAmPm: S,
69
68
  placeholder: B,
@@ -87,41 +86,41 @@ const tn = "––", le = {
87
86
  }, R = P(
88
87
  () => m ? ["hours", "minutes", "seconds"] : ["hours", "minutes"],
89
88
  [m]
90
- ), on = R.length - 1, G = en * (R.length + (A ? 1 : 0)), [_n, ln] = q(!1), [_, On] = q(""), [fn, sn] = q(!1), [Kn, O] = q(null), C = k(null), dn = k(null), mn = k(null), J = k(null), H = k(!1), U = k(!1), b = k(0), Q = k(!1), { t: Z, i18n: In } = Qn(), Bn = (In.resolvedLanguage ?? In.language ?? "kr") === "kr" ? "ko" : "en", x = {
89
+ ), on = R.length - 1, G = en * (R.length + (A ? 1 : 0)), [_n, ln] = q(!1), [_, On] = q(""), [fn, dn] = q(!1), [Kn, O] = q(null), C = k(null), sn = k(null), mn = k(null), J = k(null), H = k(!1), U = k(!1), b = k(0), Q = k(!1), { t: Z, i18n: In } = Qn(), Bn = (In.resolvedLanguage ?? In.language ?? "kr") === "kr" ? "ko" : "en", x = {
91
90
  okButtonLabel: Z("Button.확인"),
92
91
  clearButtonLabel: Z("Button.초기화"),
93
92
  fieldHoursPlaceholder: /* @__PURE__ */ c(() => tn, "fieldHoursPlaceholder"),
94
93
  fieldMinutesPlaceholder: /* @__PURE__ */ c(() => tn, "fieldMinutesPlaceholder"),
95
94
  fieldMeridiemPlaceholder: /* @__PURE__ */ c(() => tn, "fieldMeridiemPlaceholder"),
96
95
  ...Sn
97
- }, Ln = B ?? (A ? "–– ––:––" : "––:––"), Vn = [le, Y, t == null ? void 0 : t.sx].filter(
96
+ }, Ln = B ?? (A ? "–– ––:––" : "––:––"), Vn = [oe, Y, t == null ? void 0 : t.sx].filter(
98
97
  Boolean
99
- ), zn = !!(h || l.disabled || l.readOnly), Nn = !!a && !h, V = cn !== void 0, d = V ? cn : _n, f = o((n) => {
100
- On(n), sn(!1);
98
+ ), zn = !!(h || l.disabled || l.readOnly), Nn = !!a && !h, V = cn !== void 0, s = V ? cn : _n, f = o((n) => {
99
+ On(n), dn(!1);
101
100
  }, []), p = P(() => {
102
- if (!s)
101
+ if (!d)
103
102
  return null;
104
- if (g.isDayjs(s))
105
- return s;
106
- if (typeof s == "string") {
107
- const e = rn(s, m);
103
+ if (g.isDayjs(d))
104
+ return d;
105
+ if (typeof d == "string") {
106
+ const e = rn(d, m);
108
107
  if (e != null && e.dateValue.isValid())
109
108
  return e.dateValue;
110
- const u = g(s, y, !0);
109
+ const u = g(d, y, !0);
111
110
  return u.isValid() ? u : null;
112
111
  }
113
- const n = g(s);
112
+ const n = g(d);
114
113
  return n.isValid() ? n : null;
115
- }, [m, y, s]), K = P(() => {
116
- if (!s)
114
+ }, [m, y, d]), K = P(() => {
115
+ if (!d)
117
116
  return "";
118
- if (typeof s == "string") {
119
- const e = g(s, y, !0);
120
- return e.isValid() ? an(e, m) : s;
117
+ if (typeof d == "string") {
118
+ const e = g(d, y, !0);
119
+ return e.isValid() ? an(e, m) : d;
121
120
  }
122
- const n = g(s);
121
+ const n = g(d);
123
122
  return n.isValid() ? an(n, m) : "";
124
- }, [m, y, s]), jn = /* @__PURE__ */ c((n) => {
123
+ }, [m, y, d]), jn = /* @__PURE__ */ c((n) => {
125
124
  const e = n != null && n.isValid() ? n.format(y) : void 0;
126
125
  f(
127
126
  n != null && n.isValid() ? an(n, m) : ""
@@ -131,10 +130,10 @@ const tn = "––", le = {
131
130
  if (!_)
132
131
  return f(""), a == null || a(""), !0;
133
132
  const e = rn(_, m);
134
- return e != null && e.dateValue.isValid() ? (f(e.valueText), a == null || a(e.valueText), !0) : (n && _ && sn(!0), !1);
133
+ return e != null && e.dateValue.isValid() ? (f(e.valueText), a == null || a(e.valueText), !0) : (n && _ && dn(!0), !1);
135
134
  },
136
135
  [m, _, a, f]
137
- ), E = o(() => {
136
+ ), D = o(() => {
138
137
  if (U.current || Date.now() < b.current) {
139
138
  U.current = !1;
140
139
  return;
@@ -146,13 +145,13 @@ const tn = "––", le = {
146
145
  z(), T();
147
146
  }, [T, z]), yn = o(() => {
148
147
  b.current = Date.now() + 200, M();
149
- }, [M]), Dn = o(() => {
148
+ }, [M]), En = o(() => {
150
149
  b.current = Date.now() + 200, T();
151
- }, [T]), En = o((n) => {
150
+ }, [T]), Dn = o((n) => {
152
151
  const e = C.current;
153
152
  e && window.requestAnimationFrame(() => {
154
153
  var u;
155
- (u = ce(e, n)) == null || u.focus();
154
+ (u = ae(e, n)) == null || u.focus();
156
155
  });
157
156
  }, []), N = o(() => {
158
157
  window.requestAnimationFrame(() => {
@@ -186,7 +185,7 @@ const tn = "––", le = {
186
185
  if (n.key === "Tab") {
187
186
  if (n.preventDefault(), !z(!0))
188
187
  return;
189
- b.current = Date.now() + 200, T(), En(n.shiftKey);
188
+ b.current = Date.now() + 200, T(), Dn(n.shiftKey);
190
189
  return;
191
190
  }
192
191
  n.key === "Enter" && (n.preventDefault(), z(!0) && (b.current = Date.now() + 200, T(), N()));
@@ -194,7 +193,7 @@ const tn = "––", le = {
194
193
  [
195
194
  T,
196
195
  z,
197
- En,
196
+ Dn,
198
197
  N,
199
198
  K,
200
199
  p,
@@ -212,11 +211,11 @@ const tn = "––", le = {
212
211
  if (!(n != null && n.isValid()))
213
212
  return;
214
213
  const u = n.format(y);
215
- O(n), f(u), e === R[on] && (b.current = Date.now() + 200, a == null || a(u), Dn(), N());
214
+ O(n), f(u), e === R[on] && (b.current = Date.now() + 200, a == null || a(u), En(), N());
216
215
  },
217
216
  [
218
217
  on,
219
- Dn,
218
+ En,
220
219
  N,
221
220
  y,
222
221
  a,
@@ -232,9 +231,9 @@ const tn = "––", le = {
232
231
  ), $n = o(
233
232
  (n) => {
234
233
  var e;
235
- (e = t == null ? void 0 : t.onFocus) == null || e.call(t, n), !(n.defaultPrevented || l.disabled || l.readOnly || d) && (Q.current = H.current, E());
234
+ (e = t == null ? void 0 : t.onFocus) == null || e.call(t, n), !(n.defaultPrevented || l.disabled || l.readOnly || s) && (Q.current = H.current, D());
236
235
  },
237
- [E, d, t, l.disabled, l.readOnly]
236
+ [D, s, t, l.disabled, l.readOnly]
238
237
  ), Yn = o(
239
238
  (n) => {
240
239
  var e;
@@ -243,19 +242,19 @@ const tn = "––", le = {
243
242
  Q.current = !1, H.current = !1;
244
243
  return;
245
244
  }
246
- if (H.current = !1, d) {
245
+ if (H.current = !1, s) {
247
246
  U.current = !0, M(), queueMicrotask(() => {
248
247
  U.current = !1;
249
248
  });
250
249
  return;
251
250
  }
252
- E();
251
+ D();
253
252
  }
254
253
  },
255
254
  [
256
255
  M,
257
- E,
258
- d,
256
+ D,
257
+ s,
259
258
  t,
260
259
  l.disabled,
261
260
  l.readOnly
@@ -264,26 +263,26 @@ const tn = "––", le = {
264
263
  (n) => {
265
264
  var e;
266
265
  if ((e = t == null ? void 0 : t.onKeyDown) == null || e.call(t, n), !(n.defaultPrevented || l.disabled || l.readOnly)) {
267
- if (!d && se(n)) {
268
- n.preventDefault(), E();
266
+ if (!s && fe(n)) {
267
+ n.preventDefault(), D();
269
268
  return;
270
269
  }
271
- !d || !fe(n) || M();
270
+ !s || !le(n) || M();
272
271
  }
273
272
  },
274
273
  [
275
274
  M,
276
- E,
277
- d,
275
+ D,
276
+ s,
278
277
  t,
279
278
  l.disabled,
280
279
  l.readOnly
281
280
  ]
282
281
  );
283
282
  return nn(() => {
284
- d && (f(K), O(p));
285
- }, [d, K, p, f]), nn(() => {
286
- if (!d)
283
+ s && (f(K), O(p));
284
+ }, [s, K, p, f]), nn(() => {
285
+ if (!s)
287
286
  return;
288
287
  const n = window.requestAnimationFrame(() => {
289
288
  var e;
@@ -292,20 +291,20 @@ const tn = "––", le = {
292
291
  return () => {
293
292
  window.cancelAnimationFrame(n);
294
293
  };
295
- }, [d]), nn(() => {
296
- if (!d)
294
+ }, [s]), nn(() => {
295
+ if (!s)
297
296
  return;
298
297
  const n = /* @__PURE__ */ c((e) => {
299
298
  var j, wn;
300
299
  const u = e.target;
301
- u instanceof Node && ((j = C.current) != null && j.contains(u) || (wn = dn.current) != null && wn.contains(u) || yn());
300
+ u instanceof Node && ((j = C.current) != null && j.contains(u) || (wn = sn.current) != null && wn.contains(u) || yn());
302
301
  }, "handleDocumentMouseDown");
303
302
  return document.addEventListener("mousedown", n, !0), () => {
304
303
  document.removeEventListener("mousedown", n, !0);
305
304
  };
306
- }, [yn, d]), /* @__PURE__ */ D(ee, { dateAdapter: te, adapterLocale: Bn, children: /* @__PURE__ */ F("div", { ref: C, children: [
307
- /* @__PURE__ */ D(
308
- Pn,
305
+ }, [yn, s]), /* @__PURE__ */ E(ne, { dateAdapter: ee, adapterLocale: Bn, children: /* @__PURE__ */ F("div", { ref: C, children: [
306
+ /* @__PURE__ */ E(
307
+ Fn,
309
308
  {
310
309
  ...l,
311
310
  enableAccessibleFieldDOMStructure: !1,
@@ -319,12 +318,12 @@ const tn = "––", le = {
319
318
  format: An,
320
319
  localeText: x,
321
320
  onChange: jn,
322
- onOpen: E,
321
+ onOpen: D,
323
322
  onClose: M,
324
323
  slots: {
325
324
  ...hn,
326
325
  inputAdornment: /* @__PURE__ */ c(({ position: n, children: e, ...u }) => /* @__PURE__ */ F(pn, { position: n, ...u, children: [
327
- n === "end" && Nn && /* @__PURE__ */ D(
326
+ n === "end" && Nn && /* @__PURE__ */ E(
328
327
  Mn,
329
328
  {
330
329
  className: "clearButton",
@@ -335,7 +334,7 @@ const tn = "––", le = {
335
334
  onClick: /* @__PURE__ */ c((j) => {
336
335
  j.preventDefault(), j.stopPropagation(), Wn();
337
336
  }, "onClick"),
338
- children: /* @__PURE__ */ D(bn, { fontSize: "small" })
337
+ children: /* @__PURE__ */ E(bn, { fontSize: "small" })
339
338
  }
340
339
  ),
341
340
  e
@@ -348,7 +347,7 @@ const tn = "––", le = {
348
347
  size: "small",
349
348
  tabIndex: -1,
350
349
  onClick: /* @__PURE__ */ c((n) => {
351
- n.preventDefault(), n.stopPropagation(), d || E();
350
+ n.preventDefault(), n.stopPropagation(), s || D();
352
351
  }, "onClick"),
353
352
  sx: {
354
353
  margin: 0,
@@ -372,7 +371,7 @@ const tn = "––", le = {
372
371
  variant: I,
373
372
  fullWidth: L,
374
373
  ...t,
375
- className: re(
374
+ className: te(
376
375
  !L && (A ? "w-[160px]" : "w-[140px]"),
377
376
  t == null ? void 0 : t.className
378
377
  ),
@@ -387,13 +386,13 @@ const tn = "––", le = {
387
386
  }
388
387
  }
389
388
  ),
390
- /* @__PURE__ */ D(
391
- xn,
389
+ /* @__PURE__ */ E(
390
+ Zn,
392
391
  {
393
- open: d,
392
+ open: s,
394
393
  anchorEl: C.current,
395
394
  placement: "bottom-end",
396
- ref: dn,
395
+ ref: sn,
397
396
  modifiers: [
398
397
  {
399
398
  name: "offset",
@@ -404,7 +403,7 @@ const tn = "––", le = {
404
403
  ],
405
404
  sx: { zIndex: /* @__PURE__ */ c((n) => n.zIndex.modal, "zIndex") },
406
405
  children: /* @__PURE__ */ F(
407
- Fn,
406
+ xn,
408
407
  {
409
408
  elevation: 8,
410
409
  onClick: /* @__PURE__ */ c((n) => {
@@ -426,8 +425,8 @@ const tn = "––", le = {
426
425
  width: G
427
426
  },
428
427
  children: [
429
- /* @__PURE__ */ D(
430
- oe,
428
+ /* @__PURE__ */ E(
429
+ ue,
431
430
  {
432
431
  autoFocus: !0,
433
432
  inputRef: J,
@@ -436,8 +435,8 @@ const tn = "––", le = {
436
435
  variant: "outlined",
437
436
  value: _,
438
437
  error: fn,
439
- helperText: fn ? Z(ie) : void 0,
440
- mask: ue(y),
438
+ helperText: fn ? Z(re) : void 0,
439
+ mask: ce(y),
441
440
  placeholder: y,
442
441
  onChange: Cn,
443
442
  onKeyDown: Hn,
@@ -445,14 +444,14 @@ const tn = "––", le = {
445
444
  inputMode: "numeric",
446
445
  "aria-label": y
447
446
  },
448
- endAdornment: /* @__PURE__ */ D(
447
+ endAdornment: /* @__PURE__ */ E(
449
448
  pn,
450
449
  {
451
450
  position: "end",
452
451
  sx: {
453
452
  marginLeft: 0
454
453
  },
455
- children: /* @__PURE__ */ D(
454
+ children: /* @__PURE__ */ E(
456
455
  Mn,
457
456
  {
458
457
  size: "small",
@@ -467,7 +466,7 @@ const tn = "––", le = {
467
466
  margin: 0,
468
467
  padding: 0.25
469
468
  },
470
- children: /* @__PURE__ */ D(bn, { fontSize: "small" })
469
+ children: /* @__PURE__ */ E(bn, { fontSize: "small" })
471
470
  }
472
471
  )
473
472
  }
@@ -485,8 +484,8 @@ const tn = "––", le = {
485
484
  }
486
485
  }
487
486
  ),
488
- /* @__PURE__ */ D(
489
- ne,
487
+ /* @__PURE__ */ E(
488
+ Pn,
490
489
  {
491
490
  ampm: A,
492
491
  value: Kn,
@@ -495,7 +494,7 @@ const tn = "––", le = {
495
494
  timeSteps: un,
496
495
  slotProps: {
497
496
  digitalClockSectionItem: {
498
- sx: ae
497
+ sx: ie
499
498
  }
500
499
  },
501
500
  sx: {
@@ -530,6 +529,6 @@ const tn = "––", le = {
530
529
  ] }) });
531
530
  }, "OwpTimePicker");
532
531
  export {
533
- Re as OwpTimePicker
532
+ Ae as OwpTimePicker
534
533
  };
535
534
  //# sourceMappingURL=OwpTimePicker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OwpTimePicker.js","sources":["../../../src/components/OwpPicker/OwpTimePicker.tsx"],"sourcesContent":["import { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport { ensureDayjsBrowserSetup } from '@/utils/dayjsBrowser';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport {\n IconButton,\n InputAdornment,\n type InputAdornmentProps,\n Paper,\n Popper,\n type TextFieldProps,\n} from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\nimport {\n LocalizationProvider,\n MultiSectionDigitalClock,\n TimePicker,\n type TimePickerProps,\n} from '@mui/x-date-pickers';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport clsx from 'clsx';\nimport dayjs, { type Dayjs } from '@/dayjs';\nimport {\n type KeyboardEvent as ReactKeyboardEvent,\n type MouseEvent as ReactMouseEvent,\n type Ref,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n PICKER_INVALID_INPUT_MESSAGE_KEY,\n TIME_PICKER_EDITOR_SECTION_ITEM_WIDTH,\n TIME_PICKER_EDITOR_SECTION_WIDTH,\n TIME_PICKER_SELECTED_ITEM_SX,\n VALUE_TIME_FORMATTER,\n VALUE_TIME_SECOND_FORMATTER,\n} from './constants';\nimport { OwpTextMaskField, type OwpTextMaskFieldChangeEvent } from '../OwpTextField';\nimport { getAdjacentFocusableElement, getPickerInputMask } from './utils';\n\nensureDayjsBrowserSetup();\n\nconst EMPTY_TIME_SECTION = '––';\n\nconst TIME_PICKER_TEXT_FIELD_SX = {\n '& .MuiInputBase-root': {\n alignItems: 'center',\n },\n '& .MuiInputAdornment-positionEnd': {\n marginBottom: 0,\n marginLeft: 0,\n gap: 0,\n },\n '& .MuiInputAdornment-positionEnd > :not(style) + :not(style)': {\n marginLeft: 0,\n },\n '& .MuiInputAdornment-positionEnd .MuiIconButton-root': {\n margin: 0,\n padding: 0,\n },\n '& .clearButton': {\n opacity: 1,\n visibility: 'visible',\n },\n '@media (pointer: fine)': {\n '& .clearButton': {\n opacity: 1,\n visibility: 'visible',\n },\n },\n};\n\nexport type OwpTimePickerValue = string | Date | Dayjs;\ntype OwpTimePickerTextFieldClickEvent = Parameters<NonNullable<TextFieldProps['onClick']>>[0];\ntype OwpTimePickerTextFieldFocusEvent = Parameters<NonNullable<TextFieldProps['onFocus']>>[0];\ntype OwpTimePickerTextFieldKeyDownEvent = Parameters<NonNullable<TextFieldProps['onKeyDown']>>[0];\ntype OwpTimePickerTextFieldMouseDownEvent = Parameters<\n NonNullable<TextFieldProps['onMouseDown']>\n>[0];\n\nconst isValueEditingKey = (event: OwpTimePickerTextFieldKeyDownEvent) => {\n if (event.ctrlKey || event.altKey || event.metaKey) {\n return false;\n }\n\n return event.key.length === 1 || event.key === 'Backspace' || event.key === 'Delete';\n};\n\nconst isTimePickerOpenKey = (event: OwpTimePickerTextFieldKeyDownEvent) => {\n if (\n event.ctrlKey ||\n event.altKey ||\n event.metaKey ||\n event.key === 'Escape' ||\n event.key === 'Enter' ||\n event.key === 'Tab'\n ) {\n return false;\n }\n\n return event.key.length === 1 || event.key.startsWith('Arrow');\n};\n\n/** TimePicker 입력 값 파싱 */\nconst parseTimePickerInput = (value: string, hasSeconds: boolean) => {\n const normalizedValue = value.trim();\n const timePattern = hasSeconds ? '(\\\\d{2}):(\\\\d{2}):(\\\\d{2})' : '(\\\\d{2}):(\\\\d{2})';\n const match = normalizedValue.match(new RegExp(`^${timePattern}$`));\n\n if (!match) {\n return null;\n }\n\n const hour = Number(match[1]);\n const minute = Number(match[2]);\n const second = hasSeconds ? Number(match[3]) : 0;\n\n if (minute > 59 || second > 59) {\n return null;\n }\n\n if (hour > 24 || (hour === 24 && (minute > 0 || second > 0))) {\n return null;\n }\n\n const valueText = [hour, minute, ...(hasSeconds ? [second] : [])]\n .map((part) => String(part).padStart(2, '0'))\n .join(':');\n\n return {\n dateValue:\n hour === 24\n ? dayjs('00:00:00', VALUE_TIME_SECOND_FORMATTER, true).add(1, 'day')\n : dayjs(valueText, hasSeconds ? VALUE_TIME_SECOND_FORMATTER : VALUE_TIME_FORMATTER, true),\n valueText,\n };\n};\n\n/** TimePicker 상단 입력 표시 값 */\nconst formatTimePickerDisplayInput = (value: Dayjs, hasSeconds: boolean) =>\n value.format(hasSeconds ? VALUE_TIME_SECOND_FORMATTER : VALUE_TIME_FORMATTER);\n\n/** input ref 값 할당 */\nconst assignInputRef = (\n inputRef: Ref<HTMLInputElement> | undefined,\n value: HTMLInputElement | null,\n) => {\n if (!inputRef) {\n return;\n }\n\n if (typeof inputRef === 'function') {\n inputRef(value);\n return;\n }\n\n (inputRef as { current: HTMLInputElement | null }).current = value;\n};\n\ninterface OwnProps {\n label?: string;\n variant?: TextFieldProps['variant'];\n sx?: TextFieldProps['sx'];\n value?: OwpTimePickerValue;\n format?: string;\n useAmPm?: boolean;\n placeholder?: string;\n disabledClearButton?: boolean;\n fullWidth?: boolean;\n onChange?: (value?: string) => void;\n slotProps?: TimePickerProps<false>['slotProps'];\n textFieldProps?: Omit<TextFieldProps, 'value' | 'defaultValue' | 'onChange'>;\n}\n\ntype OwpTimePickerProps = OwnProps &\n Omit<\n TimePickerProps<false>,\n | 'value'\n | 'onChange'\n | 'label'\n | 'format'\n | 'ampm'\n | 'slotProps'\n | 'enableAccessibleFieldDOMStructure'\n >;\n\n/**\n * OwpTimePicker 컴포넌트\n * @param label 입력 라벨\n * @param variant variant 값\n * @param sx sx 값\n * @param value 현재 값, clear 버튼 동작 대상 값\n * @param format 시간 포맷\n * @param useAmPm 오전/오후 포맷 사용 여부\n * @param disabledClearButton clear 버튼 비활성화 여부\n * @param fullWidth 전체 너비 사용 여부\n * @param onChange onChange 핸들러, clear 버튼 활성화 조건\n * @param slotProps TimePicker slot props\n * @param textFieldProps TextField props\n */\nconst OwpTimePicker = ({\n label,\n variant = 'standard',\n sx,\n value,\n format = VALUE_TIME_FORMATTER,\n useAmPm,\n placeholder,\n disabledClearButton,\n fullWidth,\n onChange,\n textFieldProps,\n localeText,\n open: openProp,\n onOpen,\n onClose,\n slots,\n slotProps,\n ...timePickerProps\n}: OwpTimePickerProps) => {\n const hasSeconds = /s/i.test(format);\n const normalizedValueFormat = hasSeconds ? VALUE_TIME_SECOND_FORMATTER : VALUE_TIME_FORMATTER;\n const useMeridiem = useAmPm ?? /a/i.test(format);\n const displayFormat = useMeridiem\n ? hasSeconds\n ? 'A hh:mm:ss'\n : 'A hh:mm'\n : normalizedValueFormat;\n const resolvedCloseOnSelect = timePickerProps.closeOnSelect ?? false;\n const resolvedTimeSteps = {\n minutes: 1,\n seconds: 1,\n ...timePickerProps.timeSteps,\n };\n const timePickerViews = useMemo(\n () =>\n hasSeconds ? (['hours', 'minutes', 'seconds'] as const) : (['hours', 'minutes'] as const),\n [hasSeconds],\n );\n const closeTimePickerSectionIndex = timePickerViews.length - 1;\n const timePickerEditorWidth =\n TIME_PICKER_EDITOR_SECTION_WIDTH * (timePickerViews.length + (useMeridiem ? 1 : 0));\n const [internalOpen, setInternalOpen] = useState(false);\n const [inputDraftValue, setInputDraftValue] = useState('');\n const [hasPickerInputCommitError, setHasPickerInputCommitError] = useState(false);\n const [pickerDraftValue, setPickerDraftValue] = useState<Dayjs | null>(null);\n const rootRef = useRef<HTMLDivElement | null>(null);\n const popperRef = useRef<HTMLDivElement | null>(null);\n const externalInputRef = useRef<HTMLInputElement | null>(null);\n const pickerInputRef = useRef<HTMLInputElement | null>(null);\n const isTextFieldMouseDownRef = useRef(false);\n const skipNextOpenRef = useRef(false);\n const suppressOpenUntilRef = useRef(0);\n const skipNextTextFieldClickRef = useRef(false);\n const { t, i18n } = useOwpTranslation();\n const languageId = i18n.resolvedLanguage ?? i18n.language ?? 'kr';\n const adapterLocale = languageId === 'kr' ? 'ko' : 'en';\n const resolvedLocaleText = {\n okButtonLabel: t('Button.확인'),\n clearButtonLabel: t('Button.초기화'),\n fieldHoursPlaceholder: () => EMPTY_TIME_SECTION,\n fieldMinutesPlaceholder: () => EMPTY_TIME_SECTION,\n fieldMeridiemPlaceholder: () => EMPTY_TIME_SECTION,\n ...localeText,\n };\n const resolvedPlaceholder = placeholder ?? (useMeridiem ? '–– ––:––' : '––:––');\n const resolvedTextFieldSx = [TIME_PICKER_TEXT_FIELD_SX, sx, textFieldProps?.sx].filter(\n Boolean,\n ) as SxProps<Theme>;\n const isClearDisabled = Boolean(\n disabledClearButton || timePickerProps.disabled || timePickerProps.readOnly,\n );\n const canClear = Boolean(onChange) && !disabledClearButton;\n const isControlledOpen = openProp !== undefined;\n const isOpen = isControlledOpen ? openProp : internalOpen;\n const setPickerInputDraftValue = useCallback((nextValue: string) => {\n setInputDraftValue(nextValue);\n setHasPickerInputCommitError(false);\n }, []);\n\n const selectedValue = useMemo(() => {\n if (!value) {\n return null;\n }\n\n if (dayjs.isDayjs(value)) {\n return value;\n }\n\n if (typeof value === 'string') {\n const parsedInputValue = parseTimePickerInput(value, hasSeconds);\n\n if (parsedInputValue?.dateValue.isValid()) {\n return parsedInputValue.dateValue;\n }\n\n const parsedValue = dayjs(value, normalizedValueFormat, true);\n return parsedValue.isValid() ? parsedValue : null;\n }\n\n const parsedValue = dayjs(value);\n return parsedValue.isValid() ? parsedValue : null;\n }, [hasSeconds, normalizedValueFormat, value]);\n\n const selectedInputValue = useMemo(() => {\n if (!value) {\n return '';\n }\n\n if (typeof value === 'string') {\n const parsedValue = dayjs(value, normalizedValueFormat, true);\n\n if (parsedValue.isValid()) {\n return formatTimePickerDisplayInput(parsedValue, hasSeconds);\n }\n\n return value;\n }\n\n const parsedValue = dayjs(value);\n return parsedValue.isValid() ? formatTimePickerDisplayInput(parsedValue, hasSeconds) : '';\n }, [hasSeconds, normalizedValueFormat, value]);\n\n const handleChange = (nextValue: Dayjs | null) => {\n const nextValueText = nextValue?.isValid()\n ? nextValue.format(normalizedValueFormat)\n : undefined;\n setPickerInputDraftValue(\n nextValue?.isValid() ? formatTimePickerDisplayInput(nextValue, hasSeconds) : '',\n );\n onChange?.(nextValueText);\n };\n\n const commitInputDraftValue = useCallback(\n (showError?: boolean) => {\n if (!inputDraftValue) {\n setPickerInputDraftValue('');\n onChange?.('');\n\n return true;\n }\n\n const parsedInput = parseTimePickerInput(inputDraftValue, hasSeconds);\n\n if (!parsedInput?.dateValue.isValid()) {\n if (showError && inputDraftValue) {\n setHasPickerInputCommitError(true);\n }\n\n return false;\n }\n\n setPickerInputDraftValue(parsedInput.valueText);\n onChange?.(parsedInput.valueText);\n\n return true;\n },\n [hasSeconds, inputDraftValue, onChange, setPickerInputDraftValue],\n );\n\n const handleOpen = useCallback(() => {\n if (skipNextOpenRef.current || Date.now() < suppressOpenUntilRef.current) {\n skipNextOpenRef.current = false;\n return;\n }\n\n if (!isControlledOpen) {\n setInternalOpen(true);\n }\n\n setPickerInputDraftValue(selectedInputValue);\n setPickerDraftValue(selectedValue);\n onOpen?.();\n }, [isControlledOpen, onOpen, selectedInputValue, selectedValue, setPickerInputDraftValue]);\n\n const closePicker = useCallback(() => {\n if (!isControlledOpen) {\n setInternalOpen(false);\n }\n\n onClose?.();\n }, [isControlledOpen, onClose]);\n\n const handleClose = useCallback(() => {\n commitInputDraftValue();\n closePicker();\n }, [closePicker, commitInputDraftValue]);\n\n const handleClickAwayClose = useCallback(() => {\n suppressOpenUntilRef.current = Date.now() + 200;\n handleClose();\n }, [handleClose]);\n\n const closePickerWithoutReopen = useCallback(() => {\n suppressOpenUntilRef.current = Date.now() + 200;\n closePicker();\n }, [closePicker]);\n\n const focusAdjacentElement = useCallback((isBackward?: boolean) => {\n const rootElement = rootRef.current;\n\n if (!rootElement) {\n return;\n }\n\n window.requestAnimationFrame(() => {\n getAdjacentFocusableElement(rootElement, isBackward)?.focus();\n });\n }, []);\n\n const focusExternalInput = useCallback(() => {\n window.requestAnimationFrame(() => {\n externalInputRef.current?.focus();\n });\n }, []);\n\n const handleTextFieldInputRef = useCallback(\n (input: HTMLInputElement | null) => {\n externalInputRef.current = input;\n assignInputRef(textFieldProps?.inputRef as Ref<HTMLInputElement> | undefined, input);\n },\n [textFieldProps?.inputRef],\n );\n\n const handleClear = () => {\n onChange?.('');\n setPickerInputDraftValue('');\n };\n\n const handlePickerInputChange = useCallback(\n (event: OwpTextMaskFieldChangeEvent) => {\n const nextInputValue = event.target.value;\n const parsedInput = parseTimePickerInput(nextInputValue, hasSeconds);\n\n setPickerInputDraftValue(nextInputValue);\n\n if (parsedInput?.dateValue.isValid()) {\n setPickerDraftValue(parsedInput.dateValue);\n }\n },\n [hasSeconds, setPickerInputDraftValue],\n );\n\n const stopPickerInputKeyboardEvent = useCallback(\n (event: ReactKeyboardEvent<HTMLInputElement>) => {\n event.stopPropagation();\n event.nativeEvent.stopImmediatePropagation();\n },\n [],\n );\n\n const handlePickerInputKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLInputElement>) => {\n stopPickerInputKeyboardEvent(event);\n\n if (event.key === 'Escape') {\n event.preventDefault();\n suppressOpenUntilRef.current = Date.now() + 200;\n setPickerInputDraftValue(selectedInputValue);\n setPickerDraftValue(selectedValue);\n closePicker();\n focusExternalInput();\n return;\n }\n\n if (event.key === 'Tab') {\n event.preventDefault();\n\n if (!commitInputDraftValue(true)) {\n return;\n }\n\n suppressOpenUntilRef.current = Date.now() + 200;\n closePicker();\n focusAdjacentElement(event.shiftKey);\n return;\n }\n\n if (event.key !== 'Enter') {\n return;\n }\n\n event.preventDefault();\n if (commitInputDraftValue(true)) {\n suppressOpenUntilRef.current = Date.now() + 200;\n closePicker();\n focusExternalInput();\n }\n },\n [\n closePicker,\n commitInputDraftValue,\n focusAdjacentElement,\n focusExternalInput,\n selectedInputValue,\n selectedValue,\n setPickerInputDraftValue,\n stopPickerInputKeyboardEvent,\n ],\n );\n\n const handlePickerInputClear = useCallback(\n (event: ReactMouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n onChange?.('');\n setPickerInputDraftValue('');\n setPickerDraftValue(null);\n pickerInputRef.current?.focus();\n },\n [onChange, setPickerInputDraftValue],\n );\n\n const handlePickerClockChange = useCallback(\n (nextValue: Dayjs | null, selectedView?: string) => {\n if (!nextValue?.isValid()) {\n return;\n }\n\n const nextValueText = nextValue.format(normalizedValueFormat);\n\n setPickerDraftValue(nextValue);\n setPickerInputDraftValue(nextValueText);\n\n if (selectedView !== timePickerViews[closeTimePickerSectionIndex]) {\n return;\n }\n\n suppressOpenUntilRef.current = Date.now() + 200;\n onChange?.(nextValueText);\n closePickerWithoutReopen();\n focusExternalInput();\n },\n [\n closeTimePickerSectionIndex,\n closePickerWithoutReopen,\n focusExternalInput,\n normalizedValueFormat,\n onChange,\n setPickerInputDraftValue,\n timePickerViews,\n ],\n );\n\n const handleTextFieldMouseDown = useCallback(\n (event: OwpTimePickerTextFieldMouseDownEvent) => {\n textFieldProps?.onMouseDown?.(event);\n isTextFieldMouseDownRef.current = true;\n },\n [textFieldProps],\n );\n\n const handleTextFieldFocus = useCallback(\n (event: OwpTimePickerTextFieldFocusEvent) => {\n textFieldProps?.onFocus?.(event);\n\n if (\n event.defaultPrevented ||\n timePickerProps.disabled ||\n timePickerProps.readOnly ||\n isOpen\n ) {\n return;\n }\n\n skipNextTextFieldClickRef.current = isTextFieldMouseDownRef.current;\n handleOpen();\n },\n [handleOpen, isOpen, textFieldProps, timePickerProps.disabled, timePickerProps.readOnly],\n );\n\n const handleTextFieldClick = useCallback(\n (event: OwpTimePickerTextFieldClickEvent) => {\n textFieldProps?.onClick?.(event);\n\n if (event.defaultPrevented || timePickerProps.disabled || timePickerProps.readOnly) {\n return;\n }\n\n if (skipNextTextFieldClickRef.current) {\n skipNextTextFieldClickRef.current = false;\n isTextFieldMouseDownRef.current = false;\n return;\n }\n\n isTextFieldMouseDownRef.current = false;\n\n if (isOpen) {\n skipNextOpenRef.current = true;\n handleClose();\n queueMicrotask(() => {\n skipNextOpenRef.current = false;\n });\n return;\n }\n\n handleOpen();\n },\n [\n handleClose,\n handleOpen,\n isOpen,\n textFieldProps,\n timePickerProps.disabled,\n timePickerProps.readOnly,\n ],\n );\n\n const handleTextFieldKeyDown = useCallback(\n (event: OwpTimePickerTextFieldKeyDownEvent) => {\n textFieldProps?.onKeyDown?.(event);\n\n if (event.defaultPrevented || timePickerProps.disabled || timePickerProps.readOnly) {\n return;\n }\n\n if (!isOpen && isTimePickerOpenKey(event)) {\n event.preventDefault();\n handleOpen();\n return;\n }\n\n if (!isOpen || !isValueEditingKey(event)) {\n return;\n }\n\n handleClose();\n },\n [\n handleClose,\n handleOpen,\n isOpen,\n textFieldProps,\n timePickerProps.disabled,\n timePickerProps.readOnly,\n ],\n );\n\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n setPickerInputDraftValue(selectedInputValue);\n setPickerDraftValue(selectedValue);\n }, [isOpen, selectedInputValue, selectedValue, setPickerInputDraftValue]);\n\n useEffect(() => {\n if (!isOpen) {\n return undefined;\n }\n\n const animationFrameId = window.requestAnimationFrame(() => {\n pickerInputRef.current?.focus();\n });\n\n return () => {\n window.cancelAnimationFrame(animationFrameId);\n };\n }, [isOpen]);\n\n useEffect(() => {\n if (!isOpen) {\n return undefined;\n }\n\n const handleDocumentMouseDown = (event: MouseEvent) => {\n const target = event.target;\n\n if (!(target instanceof Node)) {\n return;\n }\n\n if (rootRef.current?.contains(target) || popperRef.current?.contains(target)) {\n return;\n }\n\n handleClickAwayClose();\n };\n\n document.addEventListener('mousedown', handleDocumentMouseDown, true);\n\n return () => {\n document.removeEventListener('mousedown', handleDocumentMouseDown, true);\n };\n }, [handleClickAwayClose, isOpen]);\n\n const TimePickerInputAdornment = ({ position, children, ...restProps }: InputAdornmentProps) => (\n <InputAdornment position={position} {...restProps}>\n {position === 'end' && canClear && (\n <IconButton\n className=\"clearButton\"\n size=\"small\"\n tabIndex={-1}\n aria-label={resolvedLocaleText.clearButtonLabel}\n disabled={isClearDisabled}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n handleClear();\n }}\n >\n <ClearIcon fontSize=\"small\" />\n </IconButton>\n )}\n {children}\n </InputAdornment>\n );\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs} adapterLocale={adapterLocale}>\n <div ref={rootRef}>\n <TimePicker\n {...timePickerProps}\n enableAccessibleFieldDOMStructure={false}\n ampm={useMeridiem}\n open={false}\n closeOnSelect={resolvedCloseOnSelect}\n timeSteps={resolvedTimeSteps}\n label={label}\n value={selectedValue}\n views={timePickerViews}\n format={displayFormat}\n localeText={resolvedLocaleText}\n onChange={handleChange}\n onOpen={handleOpen}\n onClose={handleClose}\n slots={{\n ...slots,\n inputAdornment: TimePickerInputAdornment,\n }}\n slotProps={{\n ...slotProps,\n openPickerButton: {\n ...(typeof slotProps?.openPickerButton === 'function'\n ? undefined\n : slotProps?.openPickerButton),\n size: 'small',\n tabIndex: -1,\n onClick: (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (!isOpen) {\n handleOpen();\n }\n },\n sx: {\n margin: 0,\n padding: 0,\n },\n },\n openPickerIcon: {\n ...(typeof slotProps?.openPickerIcon === 'function'\n ? undefined\n : slotProps?.openPickerIcon),\n fontSize: 'small',\n },\n inputAdornment: {\n ...(typeof slotProps?.inputAdornment === 'function'\n ? undefined\n : slotProps?.inputAdornment),\n sx: {\n marginBottom: 0,\n marginLeft: 0,\n gap: 0,\n ...(typeof slotProps?.inputAdornment === 'function'\n ? undefined\n : slotProps?.inputAdornment?.sx),\n },\n },\n textField: {\n variant,\n fullWidth,\n ...textFieldProps,\n className: clsx(\n !fullWidth && (useMeridiem ? 'w-[160px]' : 'w-[140px]'),\n textFieldProps?.className,\n ),\n onMouseDown: handleTextFieldMouseDown,\n onFocus: handleTextFieldFocus,\n onClick: handleTextFieldClick,\n onKeyDown: handleTextFieldKeyDown,\n inputRef: handleTextFieldInputRef,\n placeholder: resolvedPlaceholder,\n sx: resolvedTextFieldSx,\n },\n }}\n />\n <Popper\n open={isOpen}\n anchorEl={rootRef.current}\n placement=\"bottom-end\"\n ref={popperRef}\n modifiers={[\n {\n name: 'offset',\n options: {\n offset: [0, 7],\n },\n },\n ]}\n sx={{ zIndex: (theme) => theme.zIndex.modal }}\n >\n <Paper\n elevation={8}\n onClick={(event) => {\n event.stopPropagation();\n }}\n onKeyDown={(event) => {\n event.stopPropagation();\n }}\n onKeyUp={(event) => {\n event.stopPropagation();\n }}\n onMouseDown={(event) => {\n event.stopPropagation();\n }}\n sx={{\n borderRadius: 1,\n lineHeight: 0,\n overflow: 'hidden',\n width: timePickerEditorWidth,\n }}\n >\n <OwpTextMaskField\n autoFocus\n inputRef={pickerInputRef}\n fullWidth\n size=\"small\"\n variant=\"outlined\"\n value={inputDraftValue}\n error={hasPickerInputCommitError}\n helperText={\n hasPickerInputCommitError ? t(PICKER_INVALID_INPUT_MESSAGE_KEY) : undefined\n }\n mask={getPickerInputMask(normalizedValueFormat)}\n placeholder={normalizedValueFormat}\n onChange={handlePickerInputChange}\n onKeyDown={handlePickerInputKeyDown}\n inputProps={{\n inputMode: 'numeric',\n 'aria-label': normalizedValueFormat,\n }}\n endAdornment={\n <InputAdornment\n position=\"end\"\n sx={{\n marginLeft: 0,\n }}\n >\n <IconButton\n size=\"small\"\n tabIndex={-1}\n aria-label={resolvedLocaleText.clearButtonLabel}\n disabled={!inputDraftValue}\n onClick={handlePickerInputClear}\n onMouseDown={(event) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n sx={{\n margin: 0,\n padding: 0.25,\n }}\n >\n <ClearIcon fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n }\n sx={{\n boxSizing: 'border-box',\n width: timePickerEditorWidth,\n px: 1,\n py: 1,\n '& .MuiOutlinedInput-root': {\n borderRadius: 0.75,\n fontSize: 13,\n paddingRight: 0.5,\n },\n }}\n />\n <MultiSectionDigitalClock\n ampm={useMeridiem}\n value={pickerDraftValue}\n views={timePickerViews}\n onChange={(nextValue, _selectionState, selectedView) =>\n handlePickerClockChange(nextValue, selectedView)\n }\n timeSteps={resolvedTimeSteps}\n slotProps={{\n digitalClockSectionItem: {\n sx: TIME_PICKER_SELECTED_ITEM_SX,\n },\n }}\n sx={{\n border: 0,\n width: timePickerEditorWidth,\n '& .MuiMultiSectionDigitalClockSection-root': {\n border: 0,\n boxSizing: 'border-box',\n width: TIME_PICKER_EDITOR_SECTION_WIDTH,\n flex: `0 0 ${TIME_PICKER_EDITOR_SECTION_WIDTH}px`,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n },\n '& .MuiMultiSectionDigitalClockSection-item': {\n alignSelf: 'stretch',\n boxSizing: 'border-box',\n width: TIME_PICKER_EDITOR_SECTION_ITEM_WIDTH,\n minWidth: TIME_PICKER_EDITOR_SECTION_ITEM_WIDTH,\n justifyContent: 'center',\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n }}\n />\n </Paper>\n </Popper>\n </div>\n </LocalizationProvider>\n );\n};\n\nexport { OwpTimePicker };\n"],"names":["ensureDayjsBrowserSetup","EMPTY_TIME_SECTION","TIME_PICKER_TEXT_FIELD_SX","isValueEditingKey","__name","event","isTimePickerOpenKey","parseTimePickerInput","value","hasSeconds","normalizedValue","timePattern","match","hour","minute","second","valueText","part","dayjs","VALUE_TIME_SECOND_FORMATTER","VALUE_TIME_FORMATTER","formatTimePickerDisplayInput","assignInputRef","inputRef","OwpTimePicker","label","variant","sx","format","useAmPm","placeholder","disabledClearButton","fullWidth","onChange","textFieldProps","localeText","openProp","onOpen","onClose","slots","slotProps","timePickerProps","normalizedValueFormat","useMeridiem","displayFormat","resolvedCloseOnSelect","resolvedTimeSteps","timePickerViews","useMemo","closeTimePickerSectionIndex","timePickerEditorWidth","TIME_PICKER_EDITOR_SECTION_WIDTH","internalOpen","setInternalOpen","useState","inputDraftValue","setInputDraftValue","hasPickerInputCommitError","setHasPickerInputCommitError","pickerDraftValue","setPickerDraftValue","rootRef","useRef","popperRef","externalInputRef","pickerInputRef","isTextFieldMouseDownRef","skipNextOpenRef","suppressOpenUntilRef","skipNextTextFieldClickRef","t","i18n","useOwpTranslation","adapterLocale","resolvedLocaleText","resolvedPlaceholder","resolvedTextFieldSx","isClearDisabled","canClear","isControlledOpen","isOpen","setPickerInputDraftValue","useCallback","nextValue","selectedValue","parsedInputValue","parsedValue","selectedInputValue","handleChange","nextValueText","commitInputDraftValue","showError","parsedInput","handleOpen","closePicker","handleClose","handleClickAwayClose","closePickerWithoutReopen","focusAdjacentElement","isBackward","rootElement","_a","getAdjacentFocusableElement","focusExternalInput","handleTextFieldInputRef","input","handleClear","handlePickerInputChange","nextInputValue","stopPickerInputKeyboardEvent","handlePickerInputKeyDown","handlePickerInputClear","handlePickerClockChange","selectedView","handleTextFieldMouseDown","handleTextFieldFocus","handleTextFieldClick","handleTextFieldKeyDown","useEffect","animationFrameId","handleDocumentMouseDown","target","_b","jsx","LocalizationProvider","AdapterDayjs","jsxs","TimePicker","position","children","restProps","InputAdornment","IconButton","ClearIcon","clsx","Popper","theme","Paper","OwpTextMaskField","PICKER_INVALID_INPUT_MESSAGE_KEY","getPickerInputMask","MultiSectionDigitalClock","_selectionState","TIME_PICKER_SELECTED_ITEM_SX","TIME_PICKER_EDITOR_SECTION_ITEM_WIDTH"],"mappings":"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"}
1
+ {"version":3,"file":"OwpTimePicker.js","sources":["../../../src/components/OwpPicker/OwpTimePicker.tsx"],"sourcesContent":["import { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport {\n IconButton,\n InputAdornment,\n type InputAdornmentProps,\n Paper,\n Popper,\n type TextFieldProps,\n} from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\nimport {\n LocalizationProvider,\n MultiSectionDigitalClock,\n TimePicker,\n type TimePickerProps,\n} from '@mui/x-date-pickers';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport clsx from 'clsx';\nimport dayjs, { type Dayjs } from '@/dayjs';\nimport {\n type KeyboardEvent as ReactKeyboardEvent,\n type MouseEvent as ReactMouseEvent,\n type Ref,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n PICKER_INVALID_INPUT_MESSAGE_KEY,\n TIME_PICKER_EDITOR_SECTION_ITEM_WIDTH,\n TIME_PICKER_EDITOR_SECTION_WIDTH,\n TIME_PICKER_SELECTED_ITEM_SX,\n VALUE_TIME_FORMATTER,\n VALUE_TIME_SECOND_FORMATTER,\n} from './constants';\nimport { OwpTextMaskField, type OwpTextMaskFieldChangeEvent } from '../OwpTextField';\nimport { getAdjacentFocusableElement, getPickerInputMask } from './utils';\n\nconst EMPTY_TIME_SECTION = '––';\n\nconst TIME_PICKER_TEXT_FIELD_SX = {\n '& .MuiInputBase-root': {\n alignItems: 'center',\n },\n '& .MuiInputAdornment-positionEnd': {\n marginBottom: 0,\n marginLeft: 0,\n gap: 0,\n },\n '& .MuiInputAdornment-positionEnd > :not(style) + :not(style)': {\n marginLeft: 0,\n },\n '& .MuiInputAdornment-positionEnd .MuiIconButton-root': {\n margin: 0,\n padding: 0,\n },\n '& .clearButton': {\n opacity: 1,\n visibility: 'visible',\n },\n '@media (pointer: fine)': {\n '& .clearButton': {\n opacity: 1,\n visibility: 'visible',\n },\n },\n};\n\nexport type OwpTimePickerValue = string | Date | Dayjs;\ntype OwpTimePickerTextFieldClickEvent = Parameters<NonNullable<TextFieldProps['onClick']>>[0];\ntype OwpTimePickerTextFieldFocusEvent = Parameters<NonNullable<TextFieldProps['onFocus']>>[0];\ntype OwpTimePickerTextFieldKeyDownEvent = Parameters<NonNullable<TextFieldProps['onKeyDown']>>[0];\ntype OwpTimePickerTextFieldMouseDownEvent = Parameters<\n NonNullable<TextFieldProps['onMouseDown']>\n>[0];\n\nconst isValueEditingKey = (event: OwpTimePickerTextFieldKeyDownEvent) => {\n if (event.ctrlKey || event.altKey || event.metaKey) {\n return false;\n }\n\n return event.key.length === 1 || event.key === 'Backspace' || event.key === 'Delete';\n};\n\nconst isTimePickerOpenKey = (event: OwpTimePickerTextFieldKeyDownEvent) => {\n if (\n event.ctrlKey ||\n event.altKey ||\n event.metaKey ||\n event.key === 'Escape' ||\n event.key === 'Enter' ||\n event.key === 'Tab'\n ) {\n return false;\n }\n\n return event.key.length === 1 || event.key.startsWith('Arrow');\n};\n\n/** TimePicker 입력 값 파싱 */\nconst parseTimePickerInput = (value: string, hasSeconds: boolean) => {\n const normalizedValue = value.trim();\n const timePattern = hasSeconds ? '(\\\\d{2}):(\\\\d{2}):(\\\\d{2})' : '(\\\\d{2}):(\\\\d{2})';\n const match = normalizedValue.match(new RegExp(`^${timePattern}$`));\n\n if (!match) {\n return null;\n }\n\n const hour = Number(match[1]);\n const minute = Number(match[2]);\n const second = hasSeconds ? Number(match[3]) : 0;\n\n if (minute > 59 || second > 59) {\n return null;\n }\n\n if (hour > 24 || (hour === 24 && (minute > 0 || second > 0))) {\n return null;\n }\n\n const valueText = [hour, minute, ...(hasSeconds ? [second] : [])]\n .map((part) => String(part).padStart(2, '0'))\n .join(':');\n\n return {\n dateValue:\n hour === 24\n ? dayjs('00:00:00', VALUE_TIME_SECOND_FORMATTER, true).add(1, 'day')\n : dayjs(valueText, hasSeconds ? VALUE_TIME_SECOND_FORMATTER : VALUE_TIME_FORMATTER, true),\n valueText,\n };\n};\n\n/** TimePicker 상단 입력 표시 값 */\nconst formatTimePickerDisplayInput = (value: Dayjs, hasSeconds: boolean) =>\n value.format(hasSeconds ? VALUE_TIME_SECOND_FORMATTER : VALUE_TIME_FORMATTER);\n\n/** input ref 값 할당 */\nconst assignInputRef = (\n inputRef: Ref<HTMLInputElement> | undefined,\n value: HTMLInputElement | null,\n) => {\n if (!inputRef) {\n return;\n }\n\n if (typeof inputRef === 'function') {\n inputRef(value);\n return;\n }\n\n (inputRef as { current: HTMLInputElement | null }).current = value;\n};\n\ninterface OwnProps {\n label?: string;\n variant?: TextFieldProps['variant'];\n sx?: TextFieldProps['sx'];\n value?: OwpTimePickerValue;\n format?: string;\n useAmPm?: boolean;\n placeholder?: string;\n disabledClearButton?: boolean;\n fullWidth?: boolean;\n onChange?: (value?: string) => void;\n slotProps?: TimePickerProps<false>['slotProps'];\n textFieldProps?: Omit<TextFieldProps, 'value' | 'defaultValue' | 'onChange'>;\n}\n\ntype OwpTimePickerProps = OwnProps &\n Omit<\n TimePickerProps<false>,\n | 'value'\n | 'onChange'\n | 'label'\n | 'format'\n | 'ampm'\n | 'slotProps'\n | 'enableAccessibleFieldDOMStructure'\n >;\n\n/**\n * OwpTimePicker 컴포넌트\n * @param label 입력 라벨\n * @param variant variant 값\n * @param sx sx 값\n * @param value 현재 값, clear 버튼 동작 대상 값\n * @param format 시간 포맷\n * @param useAmPm 오전/오후 포맷 사용 여부\n * @param disabledClearButton clear 버튼 비활성화 여부\n * @param fullWidth 전체 너비 사용 여부\n * @param onChange onChange 핸들러, clear 버튼 활성화 조건\n * @param slotProps TimePicker slot props\n * @param textFieldProps TextField props\n */\nconst OwpTimePicker = ({\n label,\n variant = 'standard',\n sx,\n value,\n format = VALUE_TIME_FORMATTER,\n useAmPm,\n placeholder,\n disabledClearButton,\n fullWidth,\n onChange,\n textFieldProps,\n localeText,\n open: openProp,\n onOpen,\n onClose,\n slots,\n slotProps,\n ...timePickerProps\n}: OwpTimePickerProps) => {\n const hasSeconds = /s/i.test(format);\n const normalizedValueFormat = hasSeconds ? VALUE_TIME_SECOND_FORMATTER : VALUE_TIME_FORMATTER;\n const useMeridiem = useAmPm ?? /a/i.test(format);\n const displayFormat = useMeridiem\n ? hasSeconds\n ? 'A hh:mm:ss'\n : 'A hh:mm'\n : normalizedValueFormat;\n const resolvedCloseOnSelect = timePickerProps.closeOnSelect ?? false;\n const resolvedTimeSteps = {\n minutes: 1,\n seconds: 1,\n ...timePickerProps.timeSteps,\n };\n const timePickerViews = useMemo(\n () =>\n hasSeconds ? (['hours', 'minutes', 'seconds'] as const) : (['hours', 'minutes'] as const),\n [hasSeconds],\n );\n const closeTimePickerSectionIndex = timePickerViews.length - 1;\n const timePickerEditorWidth =\n TIME_PICKER_EDITOR_SECTION_WIDTH * (timePickerViews.length + (useMeridiem ? 1 : 0));\n const [internalOpen, setInternalOpen] = useState(false);\n const [inputDraftValue, setInputDraftValue] = useState('');\n const [hasPickerInputCommitError, setHasPickerInputCommitError] = useState(false);\n const [pickerDraftValue, setPickerDraftValue] = useState<Dayjs | null>(null);\n const rootRef = useRef<HTMLDivElement | null>(null);\n const popperRef = useRef<HTMLDivElement | null>(null);\n const externalInputRef = useRef<HTMLInputElement | null>(null);\n const pickerInputRef = useRef<HTMLInputElement | null>(null);\n const isTextFieldMouseDownRef = useRef(false);\n const skipNextOpenRef = useRef(false);\n const suppressOpenUntilRef = useRef(0);\n const skipNextTextFieldClickRef = useRef(false);\n const { t, i18n } = useOwpTranslation();\n const languageId = i18n.resolvedLanguage ?? i18n.language ?? 'kr';\n const adapterLocale = languageId === 'kr' ? 'ko' : 'en';\n const resolvedLocaleText = {\n okButtonLabel: t('Button.확인'),\n clearButtonLabel: t('Button.초기화'),\n fieldHoursPlaceholder: () => EMPTY_TIME_SECTION,\n fieldMinutesPlaceholder: () => EMPTY_TIME_SECTION,\n fieldMeridiemPlaceholder: () => EMPTY_TIME_SECTION,\n ...localeText,\n };\n const resolvedPlaceholder = placeholder ?? (useMeridiem ? '–– ––:––' : '––:––');\n const resolvedTextFieldSx = [TIME_PICKER_TEXT_FIELD_SX, sx, textFieldProps?.sx].filter(\n Boolean,\n ) as SxProps<Theme>;\n const isClearDisabled = Boolean(\n disabledClearButton || timePickerProps.disabled || timePickerProps.readOnly,\n );\n const canClear = Boolean(onChange) && !disabledClearButton;\n const isControlledOpen = openProp !== undefined;\n const isOpen = isControlledOpen ? openProp : internalOpen;\n const setPickerInputDraftValue = useCallback((nextValue: string) => {\n setInputDraftValue(nextValue);\n setHasPickerInputCommitError(false);\n }, []);\n\n const selectedValue = useMemo(() => {\n if (!value) {\n return null;\n }\n\n if (dayjs.isDayjs(value)) {\n return value;\n }\n\n if (typeof value === 'string') {\n const parsedInputValue = parseTimePickerInput(value, hasSeconds);\n\n if (parsedInputValue?.dateValue.isValid()) {\n return parsedInputValue.dateValue;\n }\n\n const parsedValue = dayjs(value, normalizedValueFormat, true);\n return parsedValue.isValid() ? parsedValue : null;\n }\n\n const parsedValue = dayjs(value);\n return parsedValue.isValid() ? parsedValue : null;\n }, [hasSeconds, normalizedValueFormat, value]);\n\n const selectedInputValue = useMemo(() => {\n if (!value) {\n return '';\n }\n\n if (typeof value === 'string') {\n const parsedValue = dayjs(value, normalizedValueFormat, true);\n\n if (parsedValue.isValid()) {\n return formatTimePickerDisplayInput(parsedValue, hasSeconds);\n }\n\n return value;\n }\n\n const parsedValue = dayjs(value);\n return parsedValue.isValid() ? formatTimePickerDisplayInput(parsedValue, hasSeconds) : '';\n }, [hasSeconds, normalizedValueFormat, value]);\n\n const handleChange = (nextValue: Dayjs | null) => {\n const nextValueText = nextValue?.isValid()\n ? nextValue.format(normalizedValueFormat)\n : undefined;\n setPickerInputDraftValue(\n nextValue?.isValid() ? formatTimePickerDisplayInput(nextValue, hasSeconds) : '',\n );\n onChange?.(nextValueText);\n };\n\n const commitInputDraftValue = useCallback(\n (showError?: boolean) => {\n if (!inputDraftValue) {\n setPickerInputDraftValue('');\n onChange?.('');\n\n return true;\n }\n\n const parsedInput = parseTimePickerInput(inputDraftValue, hasSeconds);\n\n if (!parsedInput?.dateValue.isValid()) {\n if (showError && inputDraftValue) {\n setHasPickerInputCommitError(true);\n }\n\n return false;\n }\n\n setPickerInputDraftValue(parsedInput.valueText);\n onChange?.(parsedInput.valueText);\n\n return true;\n },\n [hasSeconds, inputDraftValue, onChange, setPickerInputDraftValue],\n );\n\n const handleOpen = useCallback(() => {\n if (skipNextOpenRef.current || Date.now() < suppressOpenUntilRef.current) {\n skipNextOpenRef.current = false;\n return;\n }\n\n if (!isControlledOpen) {\n setInternalOpen(true);\n }\n\n setPickerInputDraftValue(selectedInputValue);\n setPickerDraftValue(selectedValue);\n onOpen?.();\n }, [isControlledOpen, onOpen, selectedInputValue, selectedValue, setPickerInputDraftValue]);\n\n const closePicker = useCallback(() => {\n if (!isControlledOpen) {\n setInternalOpen(false);\n }\n\n onClose?.();\n }, [isControlledOpen, onClose]);\n\n const handleClose = useCallback(() => {\n commitInputDraftValue();\n closePicker();\n }, [closePicker, commitInputDraftValue]);\n\n const handleClickAwayClose = useCallback(() => {\n suppressOpenUntilRef.current = Date.now() + 200;\n handleClose();\n }, [handleClose]);\n\n const closePickerWithoutReopen = useCallback(() => {\n suppressOpenUntilRef.current = Date.now() + 200;\n closePicker();\n }, [closePicker]);\n\n const focusAdjacentElement = useCallback((isBackward?: boolean) => {\n const rootElement = rootRef.current;\n\n if (!rootElement) {\n return;\n }\n\n window.requestAnimationFrame(() => {\n getAdjacentFocusableElement(rootElement, isBackward)?.focus();\n });\n }, []);\n\n const focusExternalInput = useCallback(() => {\n window.requestAnimationFrame(() => {\n externalInputRef.current?.focus();\n });\n }, []);\n\n const handleTextFieldInputRef = useCallback(\n (input: HTMLInputElement | null) => {\n externalInputRef.current = input;\n assignInputRef(textFieldProps?.inputRef as Ref<HTMLInputElement> | undefined, input);\n },\n [textFieldProps?.inputRef],\n );\n\n const handleClear = () => {\n onChange?.('');\n setPickerInputDraftValue('');\n };\n\n const handlePickerInputChange = useCallback(\n (event: OwpTextMaskFieldChangeEvent) => {\n const nextInputValue = event.target.value;\n const parsedInput = parseTimePickerInput(nextInputValue, hasSeconds);\n\n setPickerInputDraftValue(nextInputValue);\n\n if (parsedInput?.dateValue.isValid()) {\n setPickerDraftValue(parsedInput.dateValue);\n }\n },\n [hasSeconds, setPickerInputDraftValue],\n );\n\n const stopPickerInputKeyboardEvent = useCallback(\n (event: ReactKeyboardEvent<HTMLInputElement>) => {\n event.stopPropagation();\n event.nativeEvent.stopImmediatePropagation();\n },\n [],\n );\n\n const handlePickerInputKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLInputElement>) => {\n stopPickerInputKeyboardEvent(event);\n\n if (event.key === 'Escape') {\n event.preventDefault();\n suppressOpenUntilRef.current = Date.now() + 200;\n setPickerInputDraftValue(selectedInputValue);\n setPickerDraftValue(selectedValue);\n closePicker();\n focusExternalInput();\n return;\n }\n\n if (event.key === 'Tab') {\n event.preventDefault();\n\n if (!commitInputDraftValue(true)) {\n return;\n }\n\n suppressOpenUntilRef.current = Date.now() + 200;\n closePicker();\n focusAdjacentElement(event.shiftKey);\n return;\n }\n\n if (event.key !== 'Enter') {\n return;\n }\n\n event.preventDefault();\n if (commitInputDraftValue(true)) {\n suppressOpenUntilRef.current = Date.now() + 200;\n closePicker();\n focusExternalInput();\n }\n },\n [\n closePicker,\n commitInputDraftValue,\n focusAdjacentElement,\n focusExternalInput,\n selectedInputValue,\n selectedValue,\n setPickerInputDraftValue,\n stopPickerInputKeyboardEvent,\n ],\n );\n\n const handlePickerInputClear = useCallback(\n (event: ReactMouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n onChange?.('');\n setPickerInputDraftValue('');\n setPickerDraftValue(null);\n pickerInputRef.current?.focus();\n },\n [onChange, setPickerInputDraftValue],\n );\n\n const handlePickerClockChange = useCallback(\n (nextValue: Dayjs | null, selectedView?: string) => {\n if (!nextValue?.isValid()) {\n return;\n }\n\n const nextValueText = nextValue.format(normalizedValueFormat);\n\n setPickerDraftValue(nextValue);\n setPickerInputDraftValue(nextValueText);\n\n if (selectedView !== timePickerViews[closeTimePickerSectionIndex]) {\n return;\n }\n\n suppressOpenUntilRef.current = Date.now() + 200;\n onChange?.(nextValueText);\n closePickerWithoutReopen();\n focusExternalInput();\n },\n [\n closeTimePickerSectionIndex,\n closePickerWithoutReopen,\n focusExternalInput,\n normalizedValueFormat,\n onChange,\n setPickerInputDraftValue,\n timePickerViews,\n ],\n );\n\n const handleTextFieldMouseDown = useCallback(\n (event: OwpTimePickerTextFieldMouseDownEvent) => {\n textFieldProps?.onMouseDown?.(event);\n isTextFieldMouseDownRef.current = true;\n },\n [textFieldProps],\n );\n\n const handleTextFieldFocus = useCallback(\n (event: OwpTimePickerTextFieldFocusEvent) => {\n textFieldProps?.onFocus?.(event);\n\n if (\n event.defaultPrevented ||\n timePickerProps.disabled ||\n timePickerProps.readOnly ||\n isOpen\n ) {\n return;\n }\n\n skipNextTextFieldClickRef.current = isTextFieldMouseDownRef.current;\n handleOpen();\n },\n [handleOpen, isOpen, textFieldProps, timePickerProps.disabled, timePickerProps.readOnly],\n );\n\n const handleTextFieldClick = useCallback(\n (event: OwpTimePickerTextFieldClickEvent) => {\n textFieldProps?.onClick?.(event);\n\n if (event.defaultPrevented || timePickerProps.disabled || timePickerProps.readOnly) {\n return;\n }\n\n if (skipNextTextFieldClickRef.current) {\n skipNextTextFieldClickRef.current = false;\n isTextFieldMouseDownRef.current = false;\n return;\n }\n\n isTextFieldMouseDownRef.current = false;\n\n if (isOpen) {\n skipNextOpenRef.current = true;\n handleClose();\n queueMicrotask(() => {\n skipNextOpenRef.current = false;\n });\n return;\n }\n\n handleOpen();\n },\n [\n handleClose,\n handleOpen,\n isOpen,\n textFieldProps,\n timePickerProps.disabled,\n timePickerProps.readOnly,\n ],\n );\n\n const handleTextFieldKeyDown = useCallback(\n (event: OwpTimePickerTextFieldKeyDownEvent) => {\n textFieldProps?.onKeyDown?.(event);\n\n if (event.defaultPrevented || timePickerProps.disabled || timePickerProps.readOnly) {\n return;\n }\n\n if (!isOpen && isTimePickerOpenKey(event)) {\n event.preventDefault();\n handleOpen();\n return;\n }\n\n if (!isOpen || !isValueEditingKey(event)) {\n return;\n }\n\n handleClose();\n },\n [\n handleClose,\n handleOpen,\n isOpen,\n textFieldProps,\n timePickerProps.disabled,\n timePickerProps.readOnly,\n ],\n );\n\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n setPickerInputDraftValue(selectedInputValue);\n setPickerDraftValue(selectedValue);\n }, [isOpen, selectedInputValue, selectedValue, setPickerInputDraftValue]);\n\n useEffect(() => {\n if (!isOpen) {\n return undefined;\n }\n\n const animationFrameId = window.requestAnimationFrame(() => {\n pickerInputRef.current?.focus();\n });\n\n return () => {\n window.cancelAnimationFrame(animationFrameId);\n };\n }, [isOpen]);\n\n useEffect(() => {\n if (!isOpen) {\n return undefined;\n }\n\n const handleDocumentMouseDown = (event: MouseEvent) => {\n const target = event.target;\n\n if (!(target instanceof Node)) {\n return;\n }\n\n if (rootRef.current?.contains(target) || popperRef.current?.contains(target)) {\n return;\n }\n\n handleClickAwayClose();\n };\n\n document.addEventListener('mousedown', handleDocumentMouseDown, true);\n\n return () => {\n document.removeEventListener('mousedown', handleDocumentMouseDown, true);\n };\n }, [handleClickAwayClose, isOpen]);\n\n const TimePickerInputAdornment = ({ position, children, ...restProps }: InputAdornmentProps) => (\n <InputAdornment position={position} {...restProps}>\n {position === 'end' && canClear && (\n <IconButton\n className=\"clearButton\"\n size=\"small\"\n tabIndex={-1}\n aria-label={resolvedLocaleText.clearButtonLabel}\n disabled={isClearDisabled}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n handleClear();\n }}\n >\n <ClearIcon fontSize=\"small\" />\n </IconButton>\n )}\n {children}\n </InputAdornment>\n );\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs} adapterLocale={adapterLocale}>\n <div ref={rootRef}>\n <TimePicker\n {...timePickerProps}\n enableAccessibleFieldDOMStructure={false}\n ampm={useMeridiem}\n open={false}\n closeOnSelect={resolvedCloseOnSelect}\n timeSteps={resolvedTimeSteps}\n label={label}\n value={selectedValue}\n views={timePickerViews}\n format={displayFormat}\n localeText={resolvedLocaleText}\n onChange={handleChange}\n onOpen={handleOpen}\n onClose={handleClose}\n slots={{\n ...slots,\n inputAdornment: TimePickerInputAdornment,\n }}\n slotProps={{\n ...slotProps,\n openPickerButton: {\n ...(typeof slotProps?.openPickerButton === 'function'\n ? undefined\n : slotProps?.openPickerButton),\n size: 'small',\n tabIndex: -1,\n onClick: (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (!isOpen) {\n handleOpen();\n }\n },\n sx: {\n margin: 0,\n padding: 0,\n },\n },\n openPickerIcon: {\n ...(typeof slotProps?.openPickerIcon === 'function'\n ? undefined\n : slotProps?.openPickerIcon),\n fontSize: 'small',\n },\n inputAdornment: {\n ...(typeof slotProps?.inputAdornment === 'function'\n ? undefined\n : slotProps?.inputAdornment),\n sx: {\n marginBottom: 0,\n marginLeft: 0,\n gap: 0,\n ...(typeof slotProps?.inputAdornment === 'function'\n ? undefined\n : slotProps?.inputAdornment?.sx),\n },\n },\n textField: {\n variant,\n fullWidth,\n ...textFieldProps,\n className: clsx(\n !fullWidth && (useMeridiem ? 'w-[160px]' : 'w-[140px]'),\n textFieldProps?.className,\n ),\n onMouseDown: handleTextFieldMouseDown,\n onFocus: handleTextFieldFocus,\n onClick: handleTextFieldClick,\n onKeyDown: handleTextFieldKeyDown,\n inputRef: handleTextFieldInputRef,\n placeholder: resolvedPlaceholder,\n sx: resolvedTextFieldSx,\n },\n }}\n />\n <Popper\n open={isOpen}\n anchorEl={rootRef.current}\n placement=\"bottom-end\"\n ref={popperRef}\n modifiers={[\n {\n name: 'offset',\n options: {\n offset: [0, 7],\n },\n },\n ]}\n sx={{ zIndex: (theme) => theme.zIndex.modal }}\n >\n <Paper\n elevation={8}\n onClick={(event) => {\n event.stopPropagation();\n }}\n onKeyDown={(event) => {\n event.stopPropagation();\n }}\n onKeyUp={(event) => {\n event.stopPropagation();\n }}\n onMouseDown={(event) => {\n event.stopPropagation();\n }}\n sx={{\n borderRadius: 1,\n lineHeight: 0,\n overflow: 'hidden',\n width: timePickerEditorWidth,\n }}\n >\n <OwpTextMaskField\n autoFocus\n inputRef={pickerInputRef}\n fullWidth\n size=\"small\"\n variant=\"outlined\"\n value={inputDraftValue}\n error={hasPickerInputCommitError}\n helperText={\n hasPickerInputCommitError ? t(PICKER_INVALID_INPUT_MESSAGE_KEY) : undefined\n }\n mask={getPickerInputMask(normalizedValueFormat)}\n placeholder={normalizedValueFormat}\n onChange={handlePickerInputChange}\n onKeyDown={handlePickerInputKeyDown}\n inputProps={{\n inputMode: 'numeric',\n 'aria-label': normalizedValueFormat,\n }}\n endAdornment={\n <InputAdornment\n position=\"end\"\n sx={{\n marginLeft: 0,\n }}\n >\n <IconButton\n size=\"small\"\n tabIndex={-1}\n aria-label={resolvedLocaleText.clearButtonLabel}\n disabled={!inputDraftValue}\n onClick={handlePickerInputClear}\n onMouseDown={(event) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n sx={{\n margin: 0,\n padding: 0.25,\n }}\n >\n <ClearIcon fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n }\n sx={{\n boxSizing: 'border-box',\n width: timePickerEditorWidth,\n px: 1,\n py: 1,\n '& .MuiOutlinedInput-root': {\n borderRadius: 0.75,\n fontSize: 13,\n paddingRight: 0.5,\n },\n }}\n />\n <MultiSectionDigitalClock\n ampm={useMeridiem}\n value={pickerDraftValue}\n views={timePickerViews}\n onChange={(nextValue, _selectionState, selectedView) =>\n handlePickerClockChange(nextValue, selectedView)\n }\n timeSteps={resolvedTimeSteps}\n slotProps={{\n digitalClockSectionItem: {\n sx: TIME_PICKER_SELECTED_ITEM_SX,\n },\n }}\n sx={{\n border: 0,\n width: timePickerEditorWidth,\n '& .MuiMultiSectionDigitalClockSection-root': {\n border: 0,\n boxSizing: 'border-box',\n width: TIME_PICKER_EDITOR_SECTION_WIDTH,\n flex: `0 0 ${TIME_PICKER_EDITOR_SECTION_WIDTH}px`,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n },\n '& .MuiMultiSectionDigitalClockSection-item': {\n alignSelf: 'stretch',\n boxSizing: 'border-box',\n width: TIME_PICKER_EDITOR_SECTION_ITEM_WIDTH,\n minWidth: TIME_PICKER_EDITOR_SECTION_ITEM_WIDTH,\n justifyContent: 'center',\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n }}\n />\n </Paper>\n </Popper>\n </div>\n </LocalizationProvider>\n );\n};\n\nexport { OwpTimePicker };\n"],"names":["EMPTY_TIME_SECTION","TIME_PICKER_TEXT_FIELD_SX","isValueEditingKey","__name","event","isTimePickerOpenKey","parseTimePickerInput","value","hasSeconds","normalizedValue","timePattern","match","hour","minute","second","valueText","part","dayjs","VALUE_TIME_SECOND_FORMATTER","VALUE_TIME_FORMATTER","formatTimePickerDisplayInput","assignInputRef","inputRef","OwpTimePicker","label","variant","sx","format","useAmPm","placeholder","disabledClearButton","fullWidth","onChange","textFieldProps","localeText","openProp","onOpen","onClose","slots","slotProps","timePickerProps","normalizedValueFormat","useMeridiem","displayFormat","resolvedCloseOnSelect","resolvedTimeSteps","timePickerViews","useMemo","closeTimePickerSectionIndex","timePickerEditorWidth","TIME_PICKER_EDITOR_SECTION_WIDTH","internalOpen","setInternalOpen","useState","inputDraftValue","setInputDraftValue","hasPickerInputCommitError","setHasPickerInputCommitError","pickerDraftValue","setPickerDraftValue","rootRef","useRef","popperRef","externalInputRef","pickerInputRef","isTextFieldMouseDownRef","skipNextOpenRef","suppressOpenUntilRef","skipNextTextFieldClickRef","t","i18n","useOwpTranslation","adapterLocale","resolvedLocaleText","resolvedPlaceholder","resolvedTextFieldSx","isClearDisabled","canClear","isControlledOpen","isOpen","setPickerInputDraftValue","useCallback","nextValue","selectedValue","parsedInputValue","parsedValue","selectedInputValue","handleChange","nextValueText","commitInputDraftValue","showError","parsedInput","handleOpen","closePicker","handleClose","handleClickAwayClose","closePickerWithoutReopen","focusAdjacentElement","isBackward","rootElement","_a","getAdjacentFocusableElement","focusExternalInput","handleTextFieldInputRef","input","handleClear","handlePickerInputChange","nextInputValue","stopPickerInputKeyboardEvent","handlePickerInputKeyDown","handlePickerInputClear","handlePickerClockChange","selectedView","handleTextFieldMouseDown","handleTextFieldFocus","handleTextFieldClick","handleTextFieldKeyDown","useEffect","animationFrameId","handleDocumentMouseDown","target","_b","jsx","LocalizationProvider","AdapterDayjs","jsxs","TimePicker","position","children","restProps","InputAdornment","IconButton","ClearIcon","clsx","Popper","theme","Paper","OwpTextMaskField","PICKER_INVALID_INPUT_MESSAGE_KEY","getPickerInputMask","MultiSectionDigitalClock","_selectionState","TIME_PICKER_SELECTED_ITEM_SX","TIME_PICKER_EDITOR_SECTION_ITEM_WIDTH"],"mappings":"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"}