@owp/core 2.2.4 → 2.2.6

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 (169) hide show
  1. package/dist/_virtual/index11.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/index16.js +2 -5
  6. package/dist/_virtual/index16.js.map +1 -1
  7. package/dist/_virtual/index17.js +2 -2
  8. package/dist/_virtual/index6.js +5 -2
  9. package/dist/_virtual/index6.js.map +1 -1
  10. package/dist/_virtual/index7.js +2 -2
  11. package/dist/components/OwpCommonCode/OwpCommonCodeSelector.js +68 -149
  12. package/dist/components/OwpCommonCode/OwpCommonCodeSelector.js.map +1 -1
  13. package/dist/components/OwpDialog/OwpDialog.js +48 -46
  14. package/dist/components/OwpDialog/OwpDialog.js.map +1 -1
  15. package/dist/components/OwpErrorStatusPage/OwpErrorStatusPage.js +24 -24
  16. package/dist/components/OwpErrorStatusPage/OwpErrorStatusPage.js.map +1 -1
  17. package/dist/components/OwpMrtTable/OwpMrtTable.js +2 -2
  18. package/dist/components/OwpMrtTable/OwpMrtTable.js.map +1 -1
  19. package/dist/components/OwpMrtTable/{OwpMrtTableNoDataOverlay.js → internal/OwpMrtTableNoDataOverlay.js} +1 -1
  20. package/dist/components/OwpMrtTable/internal/OwpMrtTableNoDataOverlay.js.map +1 -0
  21. package/dist/components/OwpMrtTable/{OwpMrtTableTopToolbar.js → internal/OwpMrtTableTopToolbar.js} +3 -3
  22. package/dist/components/OwpMrtTable/internal/OwpMrtTableTopToolbar.js.map +1 -0
  23. package/dist/components/OwpOptionSelector/OwpOptionSelector.js +52 -38
  24. package/dist/components/OwpOptionSelector/OwpOptionSelector.js.map +1 -1
  25. package/dist/components/OwpPageCarded/OwpPageCarded.js +81 -77
  26. package/dist/components/OwpPageCarded/OwpPageCarded.js.map +1 -1
  27. package/dist/components/OwpPageCarded/{OwpPageCardedHeader.js → internal/OwpPageCardedHeader.js} +2 -2
  28. package/dist/components/OwpPageCarded/internal/OwpPageCardedHeader.js.map +1 -0
  29. package/dist/components/OwpPageCarded/{OwpPageCardedSidebar.js → internal/OwpPageCardedSidebar.js} +3 -3
  30. package/dist/components/OwpPageCarded/internal/OwpPageCardedSidebar.js.map +1 -0
  31. package/dist/components/OwpPageCarded/{OwpPageCardedSidebarContent.js → internal/OwpPageCardedSidebarContent.js} +2 -2
  32. package/dist/components/OwpPageCarded/internal/OwpPageCardedSidebarContent.js.map +1 -0
  33. package/dist/components/OwpPicker/OwpDatePicker.js +90 -83
  34. package/dist/components/OwpPicker/OwpDatePicker.js.map +1 -1
  35. package/dist/components/OwpPicker/OwpDateRangePicker.js +57 -50
  36. package/dist/components/OwpPicker/OwpDateRangePicker.js.map +1 -1
  37. package/dist/components/OwpPicker/OwpTimePicker.js +65 -61
  38. package/dist/components/OwpPicker/OwpTimePicker.js.map +1 -1
  39. package/dist/components/OwpPicker/OwpWeekDatePicker.js +58 -52
  40. package/dist/components/OwpPicker/OwpWeekDatePicker.js.map +1 -1
  41. package/dist/components/OwpPicker/OwpYearRangePicker.js +68 -62
  42. package/dist/components/OwpPicker/OwpYearRangePicker.js.map +1 -1
  43. package/dist/components/OwpPicker/{constants.js → constants/index.js} +1 -1
  44. package/dist/components/OwpPicker/constants/index.js.map +1 -0
  45. package/dist/components/OwpPicker/{AnimatedCalendarContainer.js → internal/AnimatedCalendarContainer.js} +2 -2
  46. package/dist/components/OwpPicker/internal/AnimatedCalendarContainer.js.map +1 -0
  47. package/dist/components/OwpPicker/{CalendarContainer.js → internal/CalendarContainer.js} +2 -2
  48. package/dist/components/OwpPicker/internal/CalendarContainer.js.map +1 -0
  49. package/dist/components/OwpPicker/{DatePickerInput.js → internal/DatePickerInput.js} +4 -4
  50. package/dist/components/OwpPicker/internal/DatePickerInput.js.map +1 -0
  51. package/dist/components/OwpQuerySelector/OwpQuerySelector.js +266 -0
  52. package/dist/components/OwpQuerySelector/OwpQuerySelector.js.map +1 -0
  53. package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js +390 -0
  54. package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js.map +1 -0
  55. package/dist/components/OwpSelectorBase/OwpSelectorBase.js +14 -0
  56. package/dist/components/OwpSelectorBase/OwpSelectorBase.js.map +1 -0
  57. package/dist/components/OwpSelectorBase/OwpSelectorSelect.js +152 -0
  58. package/dist/components/OwpSelectorBase/OwpSelectorSelect.js.map +1 -0
  59. package/dist/components/OwpSelectorBase/hooks/useOwpSelectorBase.js +120 -0
  60. package/dist/components/OwpSelectorBase/hooks/useOwpSelectorBase.js.map +1 -0
  61. package/dist/components/OwpSelectorBase/utils/querySelectorUtils.js +24 -0
  62. package/dist/components/OwpSelectorBase/utils/querySelectorUtils.js.map +1 -0
  63. package/dist/components/OwpStyleProvider/OwpStyleProvider.js +90 -42
  64. package/dist/components/OwpStyleProvider/OwpStyleProvider.js.map +1 -1
  65. package/dist/components/OwpSuspense/OwpSuspense.js.map +1 -1
  66. package/dist/components/OwpTable/OwpTable.js +50 -51
  67. package/dist/components/OwpTable/OwpTable.js.map +1 -1
  68. package/dist/components/OwpTreeGrid/OwpTreeGrid.js +163 -308
  69. package/dist/components/OwpTreeGrid/OwpTreeGrid.js.map +1 -1
  70. package/dist/components/OwpTreeGrid/hooks/useOwpTreeGridOverlayFrame.js +1 -1
  71. package/dist/components/OwpTreeGrid/hooks/useOwpTreeGridOverlayFrame.js.map +1 -1
  72. package/dist/components/OwpTreeGrid/{OwpTreeGridLoadingOverlay.js → internal/OwpTreeGridLoadingOverlay.js} +2 -2
  73. package/dist/components/OwpTreeGrid/internal/OwpTreeGridLoadingOverlay.js.map +1 -0
  74. package/dist/components/OwpTreeGrid/{OwpTreeGridNoDataOverlay.js → internal/OwpTreeGridNoDataOverlay.js} +2 -2
  75. package/dist/components/OwpTreeGrid/internal/OwpTreeGridNoDataOverlay.js.map +1 -0
  76. package/dist/components/OwpTreeGrid/{utils/index.js → internal/treeGridLayout.js} +1 -1
  77. package/dist/components/OwpTreeGrid/internal/treeGridLayout.js.map +1 -0
  78. package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +176 -0
  79. package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js.map +1 -0
  80. package/dist/components/OwpTreeGrid/utils/perf.js.map +1 -0
  81. package/dist/components/OwpZoomImageSlider/OwpZoomImageSlider.js +1 -1
  82. package/dist/components/OwpZoomImageSlider/OwpZoomImageSlider.js.map +1 -1
  83. package/dist/components/OwpZoomImageSlider/{ZoomImage.js → internal/ZoomImage.js} +1 -1
  84. package/dist/components/OwpZoomImageSlider/internal/ZoomImage.js.map +1 -0
  85. package/dist/index.js +100 -104
  86. package/dist/index.js.map +1 -1
  87. 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/ArrowDropDown.js +9 -0
  88. 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/ArrowDropDown.js.map +1 -0
  89. package/dist/node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isFunction.js +10 -0
  90. package/dist/node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isFunction.js.map +1 -0
  91. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/index.js +1 -1
  92. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE39/index.js +1 -1
  93. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/index.js +1 -1
  94. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/index.js +1 -1
  95. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/GenericBarcode/index.js +1 -1
  96. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/index.js +1 -1
  97. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/MSI/index.js +1 -1
  98. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/codabar/index.js +1 -1
  99. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/pharmacode/index.js +1 -1
  100. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/renderers/index.js +1 -1
  101. package/dist/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js +1 -1
  102. package/dist/node_modules/.pnpm/react-imask@7.6.1_react@19.2.4/node_modules/react-imask/esm/mixin.js +1 -1
  103. 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
  104. package/dist/owp-app.css +1 -1
  105. package/dist/types/components/OwpCommonCode/OwpCommonCodeSelector.d.ts +16 -6
  106. package/dist/types/components/OwpOptionSelector/OwpOptionSelector.d.ts +9 -8
  107. package/dist/types/components/OwpPageCarded/OwpPageCarded.d.ts +12 -41
  108. package/dist/types/components/OwpPageSkeleton/index.d.ts +1 -0
  109. package/dist/types/components/OwpPicker/OwpWeekDatePicker.d.ts +0 -1
  110. package/dist/types/components/OwpPicker/OwpYearRangePicker.d.ts +0 -1
  111. package/dist/types/components/OwpQuerySelector/OwpQuerySelector.d.ts +6 -0
  112. package/dist/types/components/OwpQuerySelector/index.d.ts +2 -0
  113. package/dist/types/components/OwpQuerySelector/types/index.d.ts +1 -0
  114. package/dist/types/components/OwpQuerySelector/types/types.d.ts +44 -0
  115. package/dist/types/components/OwpSelectorBase/OwpSelectorAutocomplete.d.ts +11 -0
  116. package/dist/types/components/OwpSelectorBase/OwpSelectorBase.d.ts +6 -0
  117. package/dist/types/components/OwpSelectorBase/OwpSelectorSelect.d.ts +11 -0
  118. package/dist/types/components/OwpSelectorBase/hooks/useOwpSelectorBase.d.ts +6 -0
  119. package/dist/types/components/OwpSelectorBase/types/index.d.ts +1 -0
  120. package/dist/types/components/OwpSelectorBase/types/types.d.ts +59 -0
  121. package/dist/types/components/OwpSelectorBase/utils/index.d.ts +1 -0
  122. package/dist/types/components/OwpSelectorBase/utils/querySelectorUtils.d.ts +31 -0
  123. package/dist/types/components/OwpTreeGrid/OwpTreeGrid.d.ts +3 -1
  124. package/dist/types/components/OwpTreeGrid/{OwpTreeGridLoadingOverlay.d.ts → internal/OwpTreeGridLoadingOverlay.d.ts} +1 -1
  125. package/dist/types/components/OwpTreeGrid/{OwpTreeGridNoDataOverlay.d.ts → internal/OwpTreeGridNoDataOverlay.d.ts} +1 -1
  126. package/dist/types/components/OwpTreeGrid/{utils/index.d.ts → internal/treeGridLayout.d.ts} +0 -2
  127. package/dist/types/components/OwpTreeGrid/internal/treeGridRuntime.d.ts +75 -0
  128. package/dist/types/index.d.ts +2 -4
  129. package/dist/types/store/navigationSlice.d.ts +1 -0
  130. package/dist/types/types/OwpNavigationTypes.d.ts +14 -0
  131. package/dist/types/types/index.d.ts +1 -1
  132. package/dist/types/utils/index.d.ts +1 -0
  133. package/dist/types/utils/navigationUtils.d.ts +6 -2
  134. package/dist/types/utils/normalizeTimeToHourMinute.d.ts +11 -0
  135. package/dist/utils/navigationUtils.js.map +1 -1
  136. package/dist/utils/normalizeTimeToHourMinute.js +34 -0
  137. package/dist/utils/normalizeTimeToHourMinute.js.map +1 -0
  138. package/dist/utils/treeGridUtil.js +1 -1
  139. package/dist/utils/treeGridUtil.js.map +1 -1
  140. package/dist/utils.js +78 -75
  141. package/dist/utils.js.map +1 -1
  142. package/package.json +1 -1
  143. package/dist/components/OwpMrtTable/OwpMrtTableNoDataOverlay.js.map +0 -1
  144. package/dist/components/OwpMrtTable/OwpMrtTableTopToolbar.js.map +0 -1
  145. package/dist/components/OwpPageCarded/OwpPageCardedHeader.js.map +0 -1
  146. package/dist/components/OwpPageCarded/OwpPageCardedSidebar.js.map +0 -1
  147. package/dist/components/OwpPageCarded/OwpPageCardedSidebarContent.js.map +0 -1
  148. package/dist/components/OwpPicker/AnimatedCalendarContainer.js.map +0 -1
  149. package/dist/components/OwpPicker/CalendarContainer.js.map +0 -1
  150. package/dist/components/OwpPicker/DatePickerInput.js.map +0 -1
  151. package/dist/components/OwpPicker/constants.js.map +0 -1
  152. package/dist/components/OwpTreeGrid/OwpTreeGridLoadingOverlay.js.map +0 -1
  153. package/dist/components/OwpTreeGrid/OwpTreeGridNoDataOverlay.js.map +0 -1
  154. package/dist/components/OwpTreeGrid/perf.js.map +0 -1
  155. package/dist/components/OwpTreeGrid/utils/index.js.map +0 -1
  156. package/dist/components/OwpZoomImageSlider/ZoomImage.js.map +0 -1
  157. package/dist/node_modules/.pnpm/react-datepicker@8.7.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-datepicker/dist/react-datepicker.css +0 -1
  158. /package/dist/components/OwpTreeGrid/{perf.js → utils/perf.js} +0 -0
  159. /package/dist/types/components/OwpMrtTable/{OwpMrtTableNoDataOverlay.d.ts → internal/OwpMrtTableNoDataOverlay.d.ts} +0 -0
  160. /package/dist/types/components/OwpMrtTable/{OwpMrtTableTopToolbar.d.ts → internal/OwpMrtTableTopToolbar.d.ts} +0 -0
  161. /package/dist/types/components/OwpPageCarded/{OwpPageCardedHeader.d.ts → internal/OwpPageCardedHeader.d.ts} +0 -0
  162. /package/dist/types/components/OwpPageCarded/{OwpPageCardedSidebar.d.ts → internal/OwpPageCardedSidebar.d.ts} +0 -0
  163. /package/dist/types/components/OwpPageCarded/{OwpPageCardedSidebarContent.d.ts → internal/OwpPageCardedSidebarContent.d.ts} +0 -0
  164. /package/dist/types/components/OwpPicker/{constants.d.ts → constants/index.d.ts} +0 -0
  165. /package/dist/types/components/OwpPicker/{AnimatedCalendarContainer.d.ts → internal/AnimatedCalendarContainer.d.ts} +0 -0
  166. /package/dist/types/components/OwpPicker/{CalendarContainer.d.ts → internal/CalendarContainer.d.ts} +0 -0
  167. /package/dist/types/components/OwpPicker/{DatePickerInput.d.ts → internal/DatePickerInput.d.ts} +0 -0
  168. /package/dist/types/components/OwpTreeGrid/{perf.d.ts → utils/perf.d.ts} +0 -0
  169. /package/dist/types/components/OwpZoomImageSlider/{ZoomImage.d.ts → internal/ZoomImage.d.ts} +0 -0
@@ -0,0 +1,120 @@
1
+ var b = Object.defineProperty;
2
+ var U = (a, c) => b(a, "name", { value: c, configurable: !0 });
3
+ import { useOwpTranslation as m } from "../../../hooks/useOwpTranslation.js";
4
+ import { mergeSelectorOptions as I, joinSelectorValue as W, splitSelectorValue as X, getSelectorAllToken as nn, createSelectorChangeEvent as en } from "../utils/querySelectorUtils.js";
5
+ import { useState as Y, useRef as k, useMemo as i, useCallback as d, useEffect as q } from "react";
6
+ const sn = /* @__PURE__ */ U(({
7
+ allOptions: a,
8
+ allValueMode: c = "joined",
9
+ defaultValue: L,
10
+ disableAllValueItem: r,
11
+ multiple: n,
12
+ name: F,
13
+ onChange: G,
14
+ options: H,
15
+ value: j
16
+ }) => {
17
+ const { t: J } = m(), f = j !== void 0, K = L ?? "", [w, x] = Y(L), [h, v] = Y(
18
+ () => n && !r && (j ?? K) === "" ? "all" : "none"
19
+ ), Q = k(!1), O = k(j ?? K), g = k(null), B = k(G);
20
+ B.current = G;
21
+ const y = i(
22
+ () => I(H, a),
23
+ [a, H]
24
+ ), t = i(
25
+ () => y.filter((e) => !e.disabled).map((e) => e.value),
26
+ [y]
27
+ ), Z = i(() => W(t), [t]), o = f ? j : w, R = i(() => X(o), [o]), T = i(() => n && !r && (o == null || o === "") && h === "all" ? t : R, [t, r, h, n, o, R]), E = i(() => new Set(T), [T]), p = i(
28
+ () => ({
29
+ label: J("Common.전체"),
30
+ raw: null,
31
+ value: nn()
32
+ }),
33
+ [J]
34
+ ), D = i(
35
+ () => y.filter((e) => E.has(e.value)),
36
+ [y, E]
37
+ ), C = i(() => r ? !1 : n ? (o == null || o === "") && h === "all" ? !0 : c === "empty" ? h === "all" : !!t.length && t.every((e) => E.has(e)) : o == null || o === "", [
38
+ t,
39
+ c,
40
+ r,
41
+ h,
42
+ n,
43
+ o,
44
+ E
45
+ ]), _ = i(() => !n && C && !r ? p : D[0] ?? null, [p, r, C, n, D]), z = n && c === "joined" ? Z : "", s = d(
46
+ (e, S) => {
47
+ var u;
48
+ n && !r && (e === "" ? (g.current = S ?? "none", v(S ?? "none")) : (g.current = null, v("none"))), f || x(e), (u = B.current) == null || u.call(B, en(F, e));
49
+ },
50
+ [r, f, n, F]
51
+ ), P = d(() => {
52
+ s(z, n && c === "empty" ? "all" : void 0);
53
+ }, [z, c, s, n]), $ = d(() => {
54
+ !n || r || (g.current = "all", O.current = "", v("all"), f || x(""));
55
+ }, [r, f, n]), l = d(() => {
56
+ s("", n ? "none" : void 0);
57
+ }, [s, n]), M = d(
58
+ (e) => {
59
+ s(e);
60
+ },
61
+ [s]
62
+ ), V = d(
63
+ (e) => {
64
+ const S = e.filter((u) => u !== "");
65
+ if (!r && t.length && t.every((u) => S.includes(u))) {
66
+ P();
67
+ return;
68
+ }
69
+ s(
70
+ W(S),
71
+ c === "empty" ? "none" : void 0
72
+ );
73
+ },
74
+ [t, c, r, s, P]
75
+ );
76
+ return q(() => {
77
+ f || x(L);
78
+ }, [L, f]), q(() => {
79
+ if (n && !r) {
80
+ const e = o ?? "", S = O.current;
81
+ if (e === "") {
82
+ const N = g.current;
83
+ N ? (v(N), g.current = null) : S !== e && v("all"), O.current = e;
84
+ return;
85
+ }
86
+ const u = X(e), A = !!t.length && t.every((N) => u.includes(N));
87
+ v(A ? "all" : "none"), g.current = null, O.current = e;
88
+ return;
89
+ }
90
+ O.current = o ?? "";
91
+ }, [t, r, n, o]), q(() => {
92
+ !n || r || Q.current || f || w !== void 0 && w !== "" || !t.length || (Q.current = !0, s(z, n && c === "empty" ? "all" : void 0));
93
+ }, [
94
+ z,
95
+ t.length,
96
+ c,
97
+ r,
98
+ s,
99
+ w,
100
+ f,
101
+ n
102
+ ]), {
103
+ allOption: p,
104
+ allValue: z,
105
+ clearSelection: l,
106
+ isAllSelected: C,
107
+ resolvedOptions: y,
108
+ restoreAllSelection: $,
109
+ selectAll: P,
110
+ selectedOption: _,
111
+ selectedOptions: C && n && !r ? [p, ...y] : D,
112
+ selectedValueList: T,
113
+ selectMultipleValues: V,
114
+ selectSingleValue: M
115
+ };
116
+ }, "useOwpSelectorBase");
117
+ export {
118
+ sn as useOwpSelectorBase
119
+ };
120
+ //# sourceMappingURL=useOwpSelectorBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOwpSelectorBase.js","sources":["../../../../src/components/OwpSelectorBase/hooks/useOwpSelectorBase.ts"],"sourcesContent":["import { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport {\n type OwpSelectorBaseHookResult,\n type OwpSelectorBaseOption,\n type OwpSelectorBaseProps,\n type OwpSelectorEmptyValueMode,\n} from '../types';\nimport {\n createSelectorChangeEvent,\n getSelectorAllToken,\n joinSelectorValue,\n mergeSelectorOptions,\n splitSelectorValue,\n} from '../utils';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\n/**\n * 공통 선택기 상태 훅\n * @param props 공통 선택기 props\n */\nexport const useOwpSelectorBase = ({\n allOptions,\n allValueMode = 'joined',\n defaultValue,\n disableAllValueItem,\n multiple,\n name,\n onChange,\n options,\n value,\n}: OwpSelectorBaseProps): OwpSelectorBaseHookResult => {\n const { t } = useOwpTranslation();\n const isControlled = value !== undefined;\n const normalizedDefaultValue = defaultValue ?? '';\n const [internalValue, setInternalValue] = useState(defaultValue);\n const [emptyValueMode, setEmptyValueMode] = useState<OwpSelectorEmptyValueMode>(() =>\n multiple && !disableAllValueItem && (value ?? normalizedDefaultValue) === ''\n ? 'all'\n : 'none',\n );\n const didInitializeAllValue = useRef(false);\n const previousNormalizedValue = useRef(value ?? normalizedDefaultValue);\n const pendingEmptyValueMode = useRef<OwpSelectorEmptyValueMode | null>(null);\n const onChangeRef = useRef(onChange);\n\n onChangeRef.current = onChange;\n\n const resolvedOptions = useMemo(\n () => mergeSelectorOptions(options, allOptions),\n [allOptions, options],\n );\n const allValueList = useMemo(\n () => resolvedOptions.filter((option) => !option.disabled).map((option) => option.value),\n [resolvedOptions],\n );\n const joinedAllValue = useMemo(() => joinSelectorValue(allValueList), [allValueList]);\n const normalizedValue = isControlled ? value : internalValue;\n const splitValueList = useMemo(() => splitSelectorValue(normalizedValue), [normalizedValue]);\n const selectedValueList = useMemo(() => {\n if (\n multiple &&\n !disableAllValueItem &&\n (normalizedValue == null || normalizedValue === '') &&\n emptyValueMode === 'all'\n ) {\n return allValueList;\n }\n\n return splitValueList;\n }, [allValueList, disableAllValueItem, emptyValueMode, multiple, normalizedValue, splitValueList]);\n const selectedValueSet = useMemo(() => new Set(selectedValueList), [selectedValueList]);\n const allOption = useMemo<OwpSelectorBaseOption<null>>(\n () => ({\n label: t('Common.전체'),\n raw: null,\n value: getSelectorAllToken(),\n }),\n [t],\n );\n const selectedOptions = useMemo(\n () => resolvedOptions.filter((option) => selectedValueSet.has(option.value)),\n [resolvedOptions, selectedValueSet],\n );\n const isAllSelected = useMemo(() => {\n if (disableAllValueItem) {\n return false;\n }\n\n if (!multiple) {\n return normalizedValue == null || normalizedValue === '';\n }\n\n if ((normalizedValue == null || normalizedValue === '') && emptyValueMode === 'all') {\n return true;\n }\n\n if (allValueMode === 'empty') {\n return emptyValueMode === 'all';\n }\n\n return Boolean(allValueList.length) && allValueList.every((item) => selectedValueSet.has(item));\n }, [\n allValueList,\n allValueMode,\n disableAllValueItem,\n emptyValueMode,\n multiple,\n normalizedValue,\n selectedValueSet,\n ]);\n const selectedOption = useMemo(() => {\n if (!multiple && isAllSelected && !disableAllValueItem) {\n return allOption;\n }\n\n return selectedOptions[0] ?? null;\n }, [allOption, disableAllValueItem, isAllSelected, multiple, selectedOptions]);\n const allValue = multiple\n ? allValueMode === 'joined'\n ? joinedAllValue\n : ''\n : '';\n\n const emitChange = useCallback(\n (nextValue: string, nextEmptyMode?: OwpSelectorEmptyValueMode) => {\n if (multiple && !disableAllValueItem) {\n if (nextValue === '') {\n pendingEmptyValueMode.current = nextEmptyMode ?? 'none';\n setEmptyValueMode(nextEmptyMode ?? 'none');\n } else {\n pendingEmptyValueMode.current = null;\n setEmptyValueMode('none');\n }\n }\n\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n\n onChangeRef.current?.(createSelectorChangeEvent(name, nextValue));\n },\n [disableAllValueItem, isControlled, multiple, name],\n );\n\n const selectAll = useCallback(() => {\n emitChange(allValue, multiple && allValueMode === 'empty' ? 'all' : undefined);\n }, [allValue, allValueMode, emitChange, multiple]);\n\n const restoreAllSelection = useCallback(() => {\n if (!multiple || disableAllValueItem) {\n return;\n }\n\n pendingEmptyValueMode.current = 'all';\n previousNormalizedValue.current = '';\n setEmptyValueMode('all');\n\n if (!isControlled) {\n setInternalValue('');\n }\n }, [disableAllValueItem, isControlled, multiple]);\n\n const clearSelection = useCallback(() => {\n emitChange('', multiple ? 'none' : undefined);\n }, [emitChange, multiple]);\n\n const selectSingleValue = useCallback(\n (nextValue: string) => {\n emitChange(nextValue);\n },\n [emitChange],\n );\n\n const selectMultipleValues = useCallback(\n (nextSelectedValueList: string[]) => {\n const normalizedSelectedValueList = nextSelectedValueList.filter((item) => item !== '');\n\n if (\n !disableAllValueItem &&\n Boolean(allValueList.length) &&\n allValueList.every((item) => normalizedSelectedValueList.includes(item))\n ) {\n selectAll();\n return;\n }\n\n emitChange(\n joinSelectorValue(normalizedSelectedValueList),\n allValueMode === 'empty' ? 'none' : undefined,\n );\n },\n [allValueList, allValueMode, disableAllValueItem, emitChange, selectAll],\n );\n\n useEffect(() => {\n if (isControlled) {\n return;\n }\n\n setInternalValue(defaultValue);\n }, [defaultValue, isControlled]);\n\n useEffect(() => {\n if (multiple && !disableAllValueItem) {\n const nextNormalizedValue = normalizedValue ?? '';\n const previousValue = previousNormalizedValue.current;\n\n if (nextNormalizedValue === '') {\n const nextPendingEmptyValueMode = pendingEmptyValueMode.current;\n\n if (nextPendingEmptyValueMode) {\n setEmptyValueMode(nextPendingEmptyValueMode);\n pendingEmptyValueMode.current = null;\n } else if (previousValue !== nextNormalizedValue) {\n setEmptyValueMode('all');\n }\n\n previousNormalizedValue.current = nextNormalizedValue;\n\n return;\n }\n\n const nextSelectedValueList = splitSelectorValue(nextNormalizedValue);\n const isNextAllSelected =\n Boolean(allValueList.length) &&\n allValueList.every((item) => nextSelectedValueList.includes(item));\n\n setEmptyValueMode(isNextAllSelected ? 'all' : 'none');\n pendingEmptyValueMode.current = null;\n previousNormalizedValue.current = nextNormalizedValue;\n\n return;\n }\n\n previousNormalizedValue.current = normalizedValue ?? '';\n }, [allValueList, disableAllValueItem, multiple, normalizedValue]);\n\n useEffect(() => {\n if (\n !multiple ||\n disableAllValueItem ||\n didInitializeAllValue.current ||\n isControlled ||\n (internalValue !== undefined && internalValue !== '') ||\n !allValueList.length\n ) {\n return;\n }\n\n didInitializeAllValue.current = true;\n emitChange(allValue, multiple && allValueMode === 'empty' ? 'all' : undefined);\n }, [\n allValue,\n allValueList.length,\n allValueMode,\n disableAllValueItem,\n emitChange,\n internalValue,\n isControlled,\n multiple,\n ]);\n\n return {\n allOption,\n allValue,\n clearSelection,\n isAllSelected,\n resolvedOptions,\n restoreAllSelection,\n selectAll,\n selectedOption,\n selectedOptions: isAllSelected && multiple && !disableAllValueItem ? [allOption, ...resolvedOptions] : selectedOptions,\n selectedValueList,\n selectMultipleValues,\n selectSingleValue,\n };\n};\n"],"names":["useOwpSelectorBase","__name","allOptions","allValueMode","defaultValue","disableAllValueItem","multiple","name","onChange","options","value","t","useOwpTranslation","isControlled","normalizedDefaultValue","internalValue","setInternalValue","useState","emptyValueMode","setEmptyValueMode","didInitializeAllValue","useRef","previousNormalizedValue","pendingEmptyValueMode","onChangeRef","resolvedOptions","useMemo","mergeSelectorOptions","allValueList","option","joinedAllValue","joinSelectorValue","normalizedValue","splitValueList","splitSelectorValue","selectedValueList","selectedValueSet","allOption","getSelectorAllToken","selectedOptions","isAllSelected","item","selectedOption","allValue","emitChange","useCallback","nextValue","nextEmptyMode","_a","createSelectorChangeEvent","selectAll","restoreAllSelection","clearSelection","selectSingleValue","selectMultipleValues","nextSelectedValueList","normalizedSelectedValueList","useEffect","nextNormalizedValue","previousValue","nextPendingEmptyValueMode","isNextAllSelected"],"mappings":";;;;;AAoBO,MAAMA,KAAqB,gBAAAC,EAAA,CAAC;AAAA,EACjC,YAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,cAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AACF,MAAuD;AACrD,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA,GACRC,IAAeH,MAAU,QACzBI,IAAyBV,KAAgB,IACzC,CAACW,GAAeC,CAAgB,IAAIC,EAASb,CAAY,GACzD,CAACc,GAAgBC,CAAiB,IAAIF;AAAA,IAAoC,MAC9EX,KAAY,CAACD,MAAwBK,KAASI,OAA4B,KACtE,QACA;AAAA,EAAA,GAEAM,IAAwBC,EAAO,EAAK,GACpCC,IAA0BD,EAAOX,KAASI,CAAsB,GAChES,IAAwBF,EAAyC,IAAI,GACrEG,IAAcH,EAAOb,CAAQ;AAEnC,EAAAgB,EAAY,UAAUhB;AAEtB,QAAMiB,IAAkBC;AAAA,IACtB,MAAMC,EAAqBlB,GAASP,CAAU;AAAA,IAC9C,CAACA,GAAYO,CAAO;AAAA,EAAA,GAEhBmB,IAAeF;AAAA,IACnB,MAAMD,EAAgB,OAAO,CAACI,MAAW,CAACA,EAAO,QAAQ,EAAE,IAAI,CAACA,MAAWA,EAAO,KAAK;AAAA,IACvF,CAACJ,CAAe;AAAA,EAAA,GAEZK,IAAiBJ,EAAQ,MAAMK,EAAkBH,CAAY,GAAG,CAACA,CAAY,CAAC,GAC9EI,IAAkBnB,IAAeH,IAAQK,GACzCkB,IAAiBP,EAAQ,MAAMQ,EAAmBF,CAAe,GAAG,CAACA,CAAe,CAAC,GACrFG,IAAoBT,EAAQ,MAE9BpB,KACA,CAACD,MACA2B,KAAmB,QAAQA,MAAoB,OAChDd,MAAmB,QAEZU,IAGFK,GACN,CAACL,GAAcvB,GAAqBa,GAAgBZ,GAAU0B,GAAiBC,CAAc,CAAC,GAC3FG,IAAmBV,EAAQ,MAAM,IAAI,IAAIS,CAAiB,GAAG,CAACA,CAAiB,CAAC,GAChFE,IAAYX;AAAA,IAChB,OAAO;AAAA,MACL,OAAOf,EAAE,WAAW;AAAA,MACpB,KAAK;AAAA,MACL,OAAO2B,GAAA;AAAA,IAAoB;AAAA,IAE7B,CAAC3B,CAAC;AAAA,EAAA,GAEE4B,IAAkBb;AAAA,IACtB,MAAMD,EAAgB,OAAO,CAACI,MAAWO,EAAiB,IAAIP,EAAO,KAAK,CAAC;AAAA,IAC3E,CAACJ,GAAiBW,CAAgB;AAAA,EAAA,GAE9BI,IAAgBd,EAAQ,MACxBrB,IACK,KAGJC,KAIA0B,KAAmB,QAAQA,MAAoB,OAAOd,MAAmB,QACrE,KAGLf,MAAiB,UACZe,MAAmB,QAGrB,EAAQU,EAAa,UAAWA,EAAa,MAAM,CAACa,MAASL,EAAiB,IAAIK,CAAI,CAAC,IAXrFT,KAAmB,QAAQA,MAAoB,IAYvD;AAAA,IACDJ;AAAA,IACAzB;AAAA,IACAE;AAAA,IACAa;AAAA,IACAZ;AAAA,IACA0B;AAAA,IACAI;AAAA,EAAA,CACD,GACKM,IAAiBhB,EAAQ,MACzB,CAACpB,KAAYkC,KAAiB,CAACnC,IAC1BgC,IAGFE,EAAgB,CAAC,KAAK,MAC5B,CAACF,GAAWhC,GAAqBmC,GAAelC,GAAUiC,CAAe,CAAC,GACvEI,IAAWrC,KACbH,MAAiB,WACf2B,IAEF,IAEEc,IAAaC;AAAA,IACjB,CAACC,GAAmBC,MAA8C;;AAChE,MAAIzC,KAAY,CAACD,MACXyC,MAAc,MAChBvB,EAAsB,UAAUwB,KAAiB,QACjD5B,EAAkB4B,KAAiB,MAAM,MAEzCxB,EAAsB,UAAU,MAChCJ,EAAkB,MAAM,KAIvBN,KACHG,EAAiB8B,CAAS,IAG5BE,IAAAxB,EAAY,YAAZ,QAAAwB,EAAA,KAAAxB,GAAsByB,GAA0B1C,GAAMuC,CAAS;AAAA,IACjE;AAAA,IACA,CAACzC,GAAqBQ,GAAcP,GAAUC,CAAI;AAAA,EAAA,GAG9C2C,IAAYL,EAAY,MAAM;AAClC,IAAAD,EAAWD,GAAUrC,KAAYH,MAAiB,UAAU,QAAQ,MAAS;AAAA,EAC/E,GAAG,CAACwC,GAAUxC,GAAcyC,GAAYtC,CAAQ,CAAC,GAE3C6C,IAAsBN,EAAY,MAAM;AAC5C,IAAI,CAACvC,KAAYD,MAIjBkB,EAAsB,UAAU,OAChCD,EAAwB,UAAU,IAClCH,EAAkB,KAAK,GAElBN,KACHG,EAAiB,EAAE;AAAA,EAEvB,GAAG,CAACX,GAAqBQ,GAAcP,CAAQ,CAAC,GAE1C8C,IAAiBP,EAAY,MAAM;AACvC,IAAAD,EAAW,IAAItC,IAAW,SAAS,MAAS;AAAA,EAC9C,GAAG,CAACsC,GAAYtC,CAAQ,CAAC,GAEnB+C,IAAoBR;AAAA,IACxB,CAACC,MAAsB;AACrB,MAAAF,EAAWE,CAAS;AAAA,IACtB;AAAA,IACA,CAACF,CAAU;AAAA,EAAA,GAGPU,IAAuBT;AAAA,IAC3B,CAACU,MAAoC;AACnC,YAAMC,IAA8BD,EAAsB,OAAO,CAACd,MAASA,MAAS,EAAE;AAEtF,UACE,CAACpC,KACOuB,EAAa,UACrBA,EAAa,MAAM,CAACa,MAASe,EAA4B,SAASf,CAAI,CAAC,GACvE;AACA,QAAAS,EAAA;AACA;AAAA,MACF;AAEA,MAAAN;AAAA,QACEb,EAAkByB,CAA2B;AAAA,QAC7CrD,MAAiB,UAAU,SAAS;AAAA,MAAA;AAAA,IAExC;AAAA,IACA,CAACyB,GAAczB,GAAcE,GAAqBuC,GAAYM,CAAS;AAAA,EAAA;AAGzE,SAAAO,EAAU,MAAM;AACd,IAAI5C,KAIJG,EAAiBZ,CAAY;AAAA,EAC/B,GAAG,CAACA,GAAcS,CAAY,CAAC,GAE/B4C,EAAU,MAAM;AACd,QAAInD,KAAY,CAACD,GAAqB;AACpC,YAAMqD,IAAsB1B,KAAmB,IACzC2B,IAAgBrC,EAAwB;AAE9C,UAAIoC,MAAwB,IAAI;AAC9B,cAAME,IAA4BrC,EAAsB;AAExD,QAAIqC,KACFzC,EAAkByC,CAAyB,GAC3CrC,EAAsB,UAAU,QACvBoC,MAAkBD,KAC3BvC,EAAkB,KAAK,GAGzBG,EAAwB,UAAUoC;AAElC;AAAA,MACF;AAEA,YAAMH,IAAwBrB,EAAmBwB,CAAmB,GAC9DG,IACJ,EAAQjC,EAAa,UACrBA,EAAa,MAAM,CAACa,MAASc,EAAsB,SAASd,CAAI,CAAC;AAEnE,MAAAtB,EAAkB0C,IAAoB,QAAQ,MAAM,GACpDtC,EAAsB,UAAU,MAChCD,EAAwB,UAAUoC;AAElC;AAAA,IACF;AAEA,IAAApC,EAAwB,UAAUU,KAAmB;AAAA,EACvD,GAAG,CAACJ,GAAcvB,GAAqBC,GAAU0B,CAAe,CAAC,GAEjEyB,EAAU,MAAM;AACd,IACE,CAACnD,KACDD,KACAe,EAAsB,WACtBP,KACCE,MAAkB,UAAaA,MAAkB,MAClD,CAACa,EAAa,WAKhBR,EAAsB,UAAU,IAChCwB,EAAWD,GAAUrC,KAAYH,MAAiB,UAAU,QAAQ,MAAS;AAAA,EAC/E,GAAG;AAAA,IACDwC;AAAA,IACAf,EAAa;AAAA,IACbzB;AAAA,IACAE;AAAA,IACAuC;AAAA,IACA7B;AAAA,IACAF;AAAA,IACAP;AAAA,EAAA,CACD,GAEM;AAAA,IACL,WAAA+B;AAAA,IACA,UAAAM;AAAA,IACA,gBAAAS;AAAA,IACA,eAAAZ;AAAA,IACA,iBAAAf;AAAA,IACA,qBAAA0B;AAAA,IACA,WAAAD;AAAA,IACA,gBAAAR;AAAA,IACA,iBAAiBF,KAAiBlC,KAAY,CAACD,IAAsB,CAACgC,GAAW,GAAGZ,CAAe,IAAIc;AAAA,IACvG,mBAAAJ;AAAA,IACA,sBAAAmB;AAAA,IACA,mBAAAD;AAAA,EAAA;AAEJ,GAhQkC;"}
@@ -0,0 +1,24 @@
1
+ var c = Object.defineProperty;
2
+ var r = (e, t) => c(e, "name", { value: t, configurable: !0 });
3
+ const a = "__OWP_SELECTOR_ALL__", o = /* @__PURE__ */ r(() => a, "getSelectorAllToken"), i = /* @__PURE__ */ r((e) => e ? e.split(",").map((t) => t.trim()).filter(Boolean) : [], "splitSelectorValue"), u = /* @__PURE__ */ r((e) => e.map((t) => t.trim()).filter(Boolean).join(","), "joinSelectorValue"), E = /* @__PURE__ */ r((e, t) => ({
4
+ target: {
5
+ name: e ?? "",
6
+ value: t
7
+ }
8
+ }), "createSelectorChangeEvent"), S = /* @__PURE__ */ r((...e) => {
9
+ const t = /* @__PURE__ */ new Map();
10
+ return e.forEach((l) => {
11
+ l == null || l.forEach((n) => {
12
+ t.has(n.value) || t.set(n.value, n);
13
+ });
14
+ }), Array.from(t.values());
15
+ }, "mergeSelectorOptions"), _ = /* @__PURE__ */ r((e) => e.value === a, "isSelectorAllOption");
16
+ export {
17
+ E as createSelectorChangeEvent,
18
+ o as getSelectorAllToken,
19
+ _ as isSelectorAllOption,
20
+ u as joinSelectorValue,
21
+ S as mergeSelectorOptions,
22
+ i as splitSelectorValue
23
+ };
24
+ //# sourceMappingURL=querySelectorUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"querySelectorUtils.js","sources":["../../../../src/components/OwpSelectorBase/utils/querySelectorUtils.ts"],"sourcesContent":["import type { OwpSelectorBaseChangeEvent, OwpSelectorBaseOption } from '../types';\n\nconst SELECTOR_ALL_TOKEN = '__OWP_SELECTOR_ALL__';\n\n/**\n * 전체 선택 토큰 반환\n */\nexport const getSelectorAllToken = () => {\n return SELECTOR_ALL_TOKEN;\n};\n\n/**\n * 선택 값 문자열 분리\n * @param value 원본 선택 값\n */\nexport const splitSelectorValue = (value?: string) => {\n if (!value) {\n return [];\n }\n\n return value\n .split(',')\n .map((item) => item.trim())\n .filter(Boolean);\n};\n\n/**\n * 선택 값 문자열 결합\n * @param valueList 선택 값 목록\n */\nexport const joinSelectorValue = (valueList: string[]) => {\n return valueList\n .map((item) => item.trim())\n .filter(Boolean)\n .join(',');\n};\n\n/**\n * 선택 변경 이벤트 생성\n * @param name 필드 이름\n * @param value 선택 값\n */\nexport const createSelectorChangeEvent = (name: string | undefined, value: string) => {\n return {\n target: {\n name: name ?? '',\n value,\n },\n } as OwpSelectorBaseChangeEvent;\n};\n\n/**\n * 선택 옵션 목록 병합\n * @param optionGroups 옵션 그룹 목록\n */\nexport const mergeSelectorOptions = <T = unknown>(\n ...optionGroups: Array<OwpSelectorBaseOption<T>[] | undefined>\n) => {\n const optionMap = new Map<string, OwpSelectorBaseOption<T>>();\n\n optionGroups.forEach((optionGroup) => {\n optionGroup?.forEach((option) => {\n if (!optionMap.has(option.value)) {\n optionMap.set(option.value, option);\n }\n });\n });\n\n return Array.from(optionMap.values());\n};\n\n/**\n * 선택 옵션 값 포함 여부 확인\n * @param option 선택 옵션\n */\nexport const isSelectorAllOption = (option: OwpSelectorBaseOption) => {\n return option.value === SELECTOR_ALL_TOKEN;\n};\n"],"names":["SELECTOR_ALL_TOKEN","getSelectorAllToken","__name","splitSelectorValue","value","item","joinSelectorValue","valueList","createSelectorChangeEvent","name","mergeSelectorOptions","optionGroups","optionMap","optionGroup","option","isSelectorAllOption"],"mappings":";;AAEA,MAAMA,IAAqB,wBAKdC,IAAsB,gBAAAC,EAAA,MAC1BF,GAD0B,wBAQtBG,IAAqB,gBAAAD,EAAA,CAACE,MAC5BA,IAIEA,EACJ,MAAM,GAAG,EACT,IAAI,CAACC,MAASA,EAAK,KAAA,CAAM,EACzB,OAAO,OAAO,IANR,CAAA,GAFuB,uBAerBC,IAAoB,gBAAAJ,EAAA,CAACK,MACzBA,EACJ,IAAI,CAACF,MAASA,EAAK,MAAM,EACzB,OAAO,OAAO,EACd,KAAK,GAAG,GAJoB,sBAYpBG,IAA4B,gBAAAN,EAAA,CAACO,GAA0BL,OAC3D;AAAA,EACL,QAAQ;AAAA,IACN,MAAMK,KAAQ;AAAA,IACd,OAAAL;AAAA,EAAA;AACF,IALqC,8BAa5BM,IAAuB,gBAAAR,EAAA,IAC/BS,MACA;AACH,QAAMC,wBAAgB,IAAA;AAEtB,SAAAD,EAAa,QAAQ,CAACE,MAAgB;AACpC,IAAAA,KAAA,QAAAA,EAAa,QAAQ,CAACC,MAAW;AAC/B,MAAKF,EAAU,IAAIE,EAAO,KAAK,KAC7BF,EAAU,IAAIE,EAAO,OAAOA,CAAM;AAAA,IAEtC;AAAA,EACF,CAAC,GAEM,MAAM,KAAKF,EAAU,OAAA,CAAQ;AACtC,GAdoC,yBAoBvBG,IAAsB,gBAAAb,EAAA,CAACY,MAC3BA,EAAO,UAAUd,GADS;"}
@@ -1,14 +1,14 @@
1
- var b = Object.defineProperty;
2
- var l = (t, r) => b(t, "name", { value: r, configurable: !0 });
3
- import { jsx as n, jsxs as c } 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 { CacheProvider as u } from "@emotion/react";
5
- import { useAppSelector as s } from "../../hooks/useAppStore.js";
6
- import { selectMainTheme as f } from "../../store/owpSettingsSlice.js";
7
- import m from "@mui/material/GlobalStyles";
8
- import { ThemeProvider as g, alpha as i } from "@mui/material/styles";
9
- import { useEffect as d, useLayoutEffect as y } from "react";
10
- const v = typeof window > "u" ? d : y, k = /* @__PURE__ */ n(
11
- m,
1
+ var m = Object.defineProperty;
2
+ var l = (t, e) => m(t, "name", { value: e, configurable: !0 });
3
+ import { jsx as i, jsxs as g } 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 { CacheProvider as y } from "@emotion/react";
5
+ import { useAppSelector as c } from "../../hooks/useAppStore.js";
6
+ import { selectMainTheme as k, selectToolbarTheme as v } from "../../store/owpSettingsSlice.js";
7
+ import s from "@mui/material/GlobalStyles";
8
+ import { ThemeProvider as f, alpha as n, emphasize as w } from "@mui/material/styles";
9
+ import { useEffect as x } from "react";
10
+ const C = /* @__PURE__ */ i(
11
+ s,
12
12
  {
13
13
  styles: /* @__PURE__ */ l((t) => ({
14
14
  html: {
@@ -37,12 +37,12 @@ const v = typeof window > "u" ? d : y, k = /* @__PURE__ */ n(
37
37
  "&:hover": {}
38
38
  },
39
39
  "a.link, a:not([role=button])[target=_blank]": {
40
- background: i(t.palette.secondary.main, 0.2),
40
+ background: n(t.palette.secondary.main, 0.2),
41
41
  color: "inherit",
42
42
  borderBottom: `1px solid ${t.palette.divider}`,
43
43
  textDecoration: "none",
44
44
  "&:hover": {
45
- background: i(t.palette.secondary.main, 0.3),
45
+ background: n(t.palette.secondary.main, 0.3),
46
46
  textDecoration: "none"
47
47
  }
48
48
  },
@@ -66,47 +66,95 @@ const v = typeof window > "u" ? d : y, k = /* @__PURE__ */ n(
66
66
  }
67
67
  }), "styles")
68
68
  }
69
- );
70
- function x({
69
+ ), h = /* @__PURE__ */ l((t, e, o) => /* @__PURE__ */ i(
70
+ s,
71
+ {
72
+ styles: {
73
+ ":root": {
74
+ "--owp-datepicker-selected-bg": t,
75
+ "--owp-datepicker-selected-color": e,
76
+ "--owp-datepicker-selected-hover-bg": w(t, 0.16),
77
+ "--owp-datepicker-hover-color": o,
78
+ "--owp-datepicker-hover-bg": n(t, 0.14),
79
+ "--owp-datepicker-keyboard-selected-bg": n(t, 0.28),
80
+ "--owp-datepicker-keyboard-selected-hover-bg": n(t, 0.36),
81
+ "--owp-datepicker-keyboard-selected-color": o,
82
+ "--owp-datepicker-range-preview-bg": n(t, 0.48)
83
+ }
84
+ }
85
+ }
86
+ ), "getThemeGlobalStyles");
87
+ function T({
71
88
  children: t,
72
- theme: r,
73
- root: e = !1
89
+ theme: e,
90
+ root: o = !1,
91
+ datePickerSelectedBg: r,
92
+ datePickerSelectedColor: a,
93
+ datePickerHoverColor: d
74
94
  }) {
75
- const { mode: o } = r.palette;
76
- return v(() => {
77
- }, [e]), d(() => {
78
- e && (document.body.classList.add(o === "light" ? "light" : "dark"), document.body.classList.remove(o === "light" ? "dark" : "light"));
79
- }, [o, e]), /* @__PURE__ */ c(g, { theme: r, children: [
95
+ const { mode: p } = e.palette;
96
+ return x(() => {
97
+ o && (document.body.classList.add(p === "light" ? "light" : "dark"), document.body.classList.remove(p === "light" ? "dark" : "light"));
98
+ }, [p, o]), /* @__PURE__ */ g(f, { theme: e, children: [
80
99
  t,
81
- e && k
100
+ h(
101
+ r ?? e.palette.primary.main,
102
+ a ?? e.palette.getContrastText(r ?? e.palette.primary.main),
103
+ d ?? e.palette.text.primary
104
+ ),
105
+ o && C
82
106
  ] });
83
107
  }
84
- l(x, "OwpStyleTheme");
85
- function p({
108
+ l(T, "OwpStyleTheme");
109
+ function u({
86
110
  children: t,
87
- theme: r,
88
- root: e,
89
- cacheProviderProps: o
111
+ theme: e,
112
+ root: o,
113
+ cacheProviderProps: r,
114
+ datePickerSelectedBg: a,
115
+ datePickerSelectedColor: d,
116
+ datePickerHoverColor: p
90
117
  }) {
91
- const a = /* @__PURE__ */ n(x, { theme: r, root: e, children: t });
92
- return o != null && o.value ? /* @__PURE__ */ n(u, { ...o, children: a }) : a;
118
+ const b = /* @__PURE__ */ i(
119
+ T,
120
+ {
121
+ theme: e,
122
+ root: o,
123
+ datePickerSelectedBg: a,
124
+ datePickerSelectedColor: d,
125
+ datePickerHoverColor: p,
126
+ children: t
127
+ }
128
+ );
129
+ return r != null && r.value ? /* @__PURE__ */ i(y, { ...r, children: b }) : b;
93
130
  }
94
- l(p, "OwpStyleProviderContent");
95
- function C({
131
+ l(u, "OwpStyleProviderContent");
132
+ function S({
96
133
  children: t,
97
- root: r,
98
- cacheProviderProps: e
134
+ root: e,
135
+ cacheProviderProps: o
99
136
  }) {
100
- const o = s(f);
101
- return /* @__PURE__ */ n(p, { theme: o, root: r, cacheProviderProps: e, children: t });
137
+ const r = c(k), a = c(v), d = a.palette.background.default;
138
+ return /* @__PURE__ */ i(
139
+ u,
140
+ {
141
+ theme: r,
142
+ root: e,
143
+ cacheProviderProps: o,
144
+ datePickerSelectedBg: d,
145
+ datePickerSelectedColor: a.palette.getContrastText(d),
146
+ datePickerHoverColor: r.palette.text.primary,
147
+ children: t
148
+ }
149
+ );
102
150
  }
103
- l(C, "OwpStyleProviderFallback");
104
- function L(t) {
105
- const { children: r, theme: e, root: o, cacheProviderProps: a } = t;
106
- return e ? /* @__PURE__ */ n(p, { theme: e, root: o, cacheProviderProps: a, children: r }) : /* @__PURE__ */ n(C, { root: o, cacheProviderProps: a, children: r });
151
+ l(S, "OwpStyleProviderFallback");
152
+ function A(t) {
153
+ const { children: e, theme: o, root: r, cacheProviderProps: a } = t;
154
+ return o ? /* @__PURE__ */ i(u, { theme: o, root: r, cacheProviderProps: a, children: e }) : /* @__PURE__ */ i(S, { root: r, cacheProviderProps: a, children: e });
107
155
  }
108
- l(L, "OwpStyleProvider");
156
+ l(A, "OwpStyleProvider");
109
157
  export {
110
- L as OwpStyleProvider
158
+ A as OwpStyleProvider
111
159
  };
112
160
  //# sourceMappingURL=OwpStyleProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OwpStyleProvider.js","sources":["../../../src/components/OwpStyleProvider/OwpStyleProvider.tsx"],"sourcesContent":["import { CacheProvider } from '@emotion/react';\nimport { useAppSelector } from '@/hooks/useAppStore';\nimport { selectMainTheme } from '@/store/owpSettingsSlice';\nimport type { RootState } from '@/store/store';\nimport GlobalStyles from '@mui/material/GlobalStyles';\nimport { alpha, ThemeProvider, type Theme } from '@mui/material/styles';\nimport { ComponentProps, ReactNode, useEffect, useLayoutEffect } from 'react';\n\ntype OwpCacheProviderProps = Omit<ComponentProps<typeof CacheProvider>, 'children'>;\ntype OwpStyleProviderContentProps = Omit<OwpStyleProviderProps, 'theme'> & { theme: Theme };\n\n/**\n * Layout effect fallback for SSR environments.\n */\nconst useEnhancedEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect;\n\nconst inputGlobalStyles = (\n <GlobalStyles\n styles={(theme) => ({\n html: {\n backgroundColor: `${theme.palette.background.default}!important`,\n color: `${theme.palette.text.primary}!important`,\n },\n body: {\n backgroundColor: theme.palette.background.default,\n color: theme.palette.text.primary,\n },\n '& .MuiOutlinedInput-root': {\n backgroundColor: theme.palette.background.paper,\n },\n '& .border-divider ': {\n borderColor: `${theme.palette.divider}!important`,\n },\n 'table.simple tbody tr th': {\n borderColor: theme.palette.divider,\n },\n 'table.simple thead tr th': {\n borderColor: theme.palette.divider,\n },\n 'a:not([role=button]):not(.MuiButtonBase-root)': {\n color: theme.palette.secondary.main,\n textDecoration: 'underline',\n '&:hover': {},\n },\n 'a.link, a:not([role=button])[target=_blank]': {\n background: alpha(theme.palette.secondary.main, 0.2),\n color: 'inherit',\n borderBottom: `1px solid ${theme.palette.divider}`,\n textDecoration: 'none',\n '&:hover': {\n background: alpha(theme.palette.secondary.main, 0.3),\n textDecoration: 'none',\n },\n },\n '[class^=\"border\"]': {\n borderColor: theme.palette.divider,\n },\n '[class*=\"border\"]': {\n borderColor: theme.palette.divider,\n },\n '[class*=\"divide-\"] > :not([hidden]) ~ :not([hidden])': {\n borderColor: theme.palette.divider,\n },\n hr: {\n borderColor: theme.palette.divider,\n },\n '::-webkit-scrollbar-thumb': {\n boxShadow: `inset 0 0 0 20px ${\n theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.24)' : 'rgba(255, 255, 255, 0.24)'\n }`,\n },\n '::-webkit-scrollbar-thumb:active': {\n boxShadow: `inset 0 0 0 20px ${\n theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.37)' : 'rgba(255, 255, 255, 0.37)'\n }`,\n },\n })}\n />\n);\n\nexport interface OwpStyleProviderProps {\n children?: ReactNode;\n theme?: Theme;\n root?: boolean;\n cacheProviderProps?: OwpCacheProviderProps;\n}\n\n/**\n * MUI theme boundary and global style layer.\n * @param theme MUI theme 객체\n * @param root 글로벌 스타일 적용 여부\n * @param children 렌더링 자식\n */\nfunction OwpStyleTheme({\n children,\n theme,\n root = false,\n}: Pick<OwpStyleProviderProps, 'children' | 'root'> & { theme: Theme }) {\n const { mode } = theme.palette;\n\n useEnhancedEffect(() => {\n if (root) {\n \n }\n }, [root]);\n\n useEffect(() => {\n if (root) {\n document.body.classList.add(mode === 'light' ? 'light' : 'dark');\n document.body.classList.remove(mode === 'light' ? 'dark' : 'light');\n }\n }, [mode, root]);\n\n return (\n <ThemeProvider theme={theme}>\n {children}\n {root && inputGlobalStyles}\n </ThemeProvider>\n );\n}\n\n/**\n * CacheProvider, theme composition\n * @param theme MUI theme 객체\n * @param root 글로벌 스타일 적용 여부\n * @param cacheProviderProps CacheProvider 옵션\n */\nfunction OwpStyleProviderContent({\n children,\n theme,\n root,\n cacheProviderProps,\n}: OwpStyleProviderContentProps) {\n const themeContent = (\n <OwpStyleTheme theme={theme} root={root}>\n {children}\n </OwpStyleTheme>\n );\n\n if (!cacheProviderProps?.value) {\n return themeContent;\n }\n\n return <CacheProvider {...cacheProviderProps}>{themeContent}</CacheProvider>;\n}\n\n/**\n * Store main theme fallback provider\n * @param root 글로벌 스타일 적용 여부\n * @param cacheProviderProps CacheProvider 옵션\n */\nfunction OwpStyleProviderFallback({\n children,\n root,\n cacheProviderProps,\n}: Omit<OwpStyleProviderProps, 'theme'>) {\n const theme = useAppSelector(selectMainTheme as (state: RootState) => Theme);\n\n return (\n <OwpStyleProviderContent theme={theme} root={root} cacheProviderProps={cacheProviderProps}>\n {children}\n </OwpStyleProviderContent>\n );\n}\n\n/**\n * CacheProvider, theme composition\n * @param theme MUI theme 객체. 미지정 시 store main theme 사용\n * @param root 글로벌 스타일 적용 여부\n * @param cacheProviderProps CacheProvider 옵션\n */\nexport function OwpStyleProvider(props: OwpStyleProviderProps) {\n const { children, theme, root, cacheProviderProps } = props;\n\n if (theme) {\n return (\n <OwpStyleProviderContent theme={theme} root={root} cacheProviderProps={cacheProviderProps}>\n {children}\n </OwpStyleProviderContent>\n );\n }\n\n return (\n <OwpStyleProviderFallback root={root} cacheProviderProps={cacheProviderProps}>\n {children}\n </OwpStyleProviderFallback>\n );\n}\n"],"names":["useEnhancedEffect","useEffect","useLayoutEffect","inputGlobalStyles","jsx","GlobalStyles","__name","theme","alpha","OwpStyleTheme","children","root","mode","jsxs","ThemeProvider","OwpStyleProviderContent","cacheProviderProps","themeContent","CacheProvider","OwpStyleProviderFallback","useAppSelector","selectMainTheme","OwpStyleProvider","props"],"mappings":";;;;;;;;;AAcA,MAAMA,IAAoB,OAAO,SAAW,MAAcC,IAAYC,GAEhEC,IACJ,gBAAAC;AAAA,EAACC;AAAA,EAAA;AAAA,IACC,QAAQ,gBAAAC,EAAA,CAACC,OAAW;AAAA,MAClB,MAAM;AAAA,QACJ,iBAAiB,GAAGA,EAAM,QAAQ,WAAW,OAAO;AAAA,QACpD,OAAO,GAAGA,EAAM,QAAQ,KAAK,OAAO;AAAA,MAAA;AAAA,MAEtC,MAAM;AAAA,QACJ,iBAAiBA,EAAM,QAAQ,WAAW;AAAA,QAC1C,OAAOA,EAAM,QAAQ,KAAK;AAAA,MAAA;AAAA,MAE5B,4BAA4B;AAAA,QAC1B,iBAAiBA,EAAM,QAAQ,WAAW;AAAA,MAAA;AAAA,MAE5C,sBAAsB;AAAA,QACpB,aAAa,GAAGA,EAAM,QAAQ,OAAO;AAAA,MAAA;AAAA,MAEvC,4BAA4B;AAAA,QAC1B,aAAaA,EAAM,QAAQ;AAAA,MAAA;AAAA,MAE7B,4BAA4B;AAAA,QAC1B,aAAaA,EAAM,QAAQ;AAAA,MAAA;AAAA,MAE7B,iDAAiD;AAAA,QAC/C,OAAOA,EAAM,QAAQ,UAAU;AAAA,QAC/B,gBAAgB;AAAA,QAChB,WAAW,CAAA;AAAA,MAAC;AAAA,MAEd,+CAA+C;AAAA,QAC7C,YAAYC,EAAMD,EAAM,QAAQ,UAAU,MAAM,GAAG;AAAA,QACnD,OAAO;AAAA,QACP,cAAc,aAAaA,EAAM,QAAQ,OAAO;AAAA,QAChD,gBAAgB;AAAA,QAChB,WAAW;AAAA,UACT,YAAYC,EAAMD,EAAM,QAAQ,UAAU,MAAM,GAAG;AAAA,UACnD,gBAAgB;AAAA,QAAA;AAAA,MAClB;AAAA,MAEF,qBAAqB;AAAA,QACnB,aAAaA,EAAM,QAAQ;AAAA,MAAA;AAAA,MAE7B,qBAAqB;AAAA,QACnB,aAAaA,EAAM,QAAQ;AAAA,MAAA;AAAA,MAE7B,wDAAwD;AAAA,QACtD,aAAaA,EAAM,QAAQ;AAAA,MAAA;AAAA,MAE7B,IAAI;AAAA,QACF,aAAaA,EAAM,QAAQ;AAAA,MAAA;AAAA,MAE7B,6BAA6B;AAAA,QAC3B,WAAW,oBACTA,EAAM,QAAQ,SAAS,UAAU,wBAAwB,2BAC3D;AAAA,MAAA;AAAA,MAEF,oCAAoC;AAAA,QAClC,WAAW,oBACTA,EAAM,QAAQ,SAAS,UAAU,wBAAwB,2BAC3D;AAAA,MAAA;AAAA,IACF,IAzDM;AAAA,EA0DR;AACF;AAgBF,SAASE,EAAc;AAAA,EACrB,UAAAC;AAAA,EACA,OAAAH;AAAA,EACA,MAAAI,IAAO;AACT,GAAwE;AACtE,QAAM,EAAE,MAAAC,MAASL,EAAM;AAEvB,SAAAP,EAAkB,MAAM;AAAA,EAIxB,GAAG,CAACW,CAAI,CAAC,GAETV,EAAU,MAAM;AACd,IAAIU,MACF,SAAS,KAAK,UAAU,IAAIC,MAAS,UAAU,UAAU,MAAM,GAC/D,SAAS,KAAK,UAAU,OAAOA,MAAS,UAAU,SAAS,OAAO;AAAA,EAEtE,GAAG,CAACA,GAAMD,CAAI,CAAC,GAGb,gBAAAE,EAACC,KAAc,OAAAP,GACZ,UAAA;AAAA,IAAAG;AAAA,IACAC,KAAQR;AAAA,EAAA,GACX;AAEJ;AA1BSG,EAAAG,GAAA;AAkCT,SAASM,EAAwB;AAAA,EAC/B,UAAAL;AAAA,EACA,OAAAH;AAAA,EACA,MAAAI;AAAA,EACA,oBAAAK;AACF,GAAiC;AAC/B,QAAMC,IACJ,gBAAAb,EAACK,GAAA,EAAc,OAAAF,GAAc,MAAAI,GAC1B,UAAAD,GACH;AAGF,SAAKM,KAAA,QAAAA,EAAoB,QAIlB,gBAAAZ,EAACc,GAAA,EAAe,GAAGF,GAAqB,UAAAC,GAAa,IAHnDA;AAIX;AAjBSX,EAAAS,GAAA;AAwBT,SAASI,EAAyB;AAAA,EAChC,UAAAT;AAAA,EACA,MAAAC;AAAA,EACA,oBAAAK;AACF,GAAyC;AACvC,QAAMT,IAAQa,EAAeC,CAA8C;AAE3E,SACE,gBAAAjB,EAACW,GAAA,EAAwB,OAAAR,GAAc,MAAAI,GAAY,oBAAAK,GAChD,UAAAN,GACH;AAEJ;AAZSJ,EAAAa,GAAA;AAoBF,SAASG,EAAiBC,GAA8B;AAC7D,QAAM,EAAE,UAAAb,GAAU,OAAAH,GAAO,MAAAI,GAAM,oBAAAK,MAAuBO;AAEtD,SAAIhB,IAEA,gBAAAH,EAACW,GAAA,EAAwB,OAAAR,GAAc,MAAAI,GAAY,oBAAAK,GAChD,UAAAN,GACH,IAKF,gBAAAN,EAACe,GAAA,EAAyB,MAAAR,GAAY,oBAAAK,GACnC,UAAAN,EAAA,CACH;AAEJ;AAhBgBJ,EAAAgB,GAAA;"}
1
+ {"version":3,"file":"OwpStyleProvider.js","sources":["../../../src/components/OwpStyleProvider/OwpStyleProvider.tsx"],"sourcesContent":["import { CacheProvider } from '@emotion/react';\nimport { useAppSelector } from '@/hooks/useAppStore';\nimport { selectMainTheme, selectToolbarTheme } from '@/store/owpSettingsSlice';\nimport type { RootState } from '@/store/store';\nimport GlobalStyles from '@mui/material/GlobalStyles';\nimport { alpha, emphasize, ThemeProvider, type Theme } from '@mui/material/styles';\nimport { ComponentProps, ReactNode, useEffect } from 'react';\n\ntype OwpCacheProviderProps = Omit<ComponentProps<typeof CacheProvider>, 'children'>;\ntype OwpStyleProviderContentProps = Omit<OwpStyleProviderProps, 'theme'> & {\n theme: Theme;\n datePickerSelectedBg?: string;\n datePickerSelectedColor?: string;\n datePickerHoverColor?: string;\n};\n\nconst inputGlobalStyles = (\n <GlobalStyles\n styles={(theme) => ({\n html: {\n backgroundColor: `${theme.palette.background.default}!important`,\n color: `${theme.palette.text.primary}!important`,\n },\n body: {\n backgroundColor: theme.palette.background.default,\n color: theme.palette.text.primary,\n },\n '& .MuiOutlinedInput-root': {\n backgroundColor: theme.palette.background.paper,\n },\n '& .border-divider ': {\n borderColor: `${theme.palette.divider}!important`,\n },\n 'table.simple tbody tr th': {\n borderColor: theme.palette.divider,\n },\n 'table.simple thead tr th': {\n borderColor: theme.palette.divider,\n },\n 'a:not([role=button]):not(.MuiButtonBase-root)': {\n color: theme.palette.secondary.main,\n textDecoration: 'underline',\n '&:hover': {},\n },\n 'a.link, a:not([role=button])[target=_blank]': {\n background: alpha(theme.palette.secondary.main, 0.2),\n color: 'inherit',\n borderBottom: `1px solid ${theme.palette.divider}`,\n textDecoration: 'none',\n '&:hover': {\n background: alpha(theme.palette.secondary.main, 0.3),\n textDecoration: 'none',\n },\n },\n '[class^=\"border\"]': {\n borderColor: theme.palette.divider,\n },\n '[class*=\"border\"]': {\n borderColor: theme.palette.divider,\n },\n '[class*=\"divide-\"] > :not([hidden]) ~ :not([hidden])': {\n borderColor: theme.palette.divider,\n },\n hr: {\n borderColor: theme.palette.divider,\n },\n '::-webkit-scrollbar-thumb': {\n boxShadow: `inset 0 0 0 20px ${\n theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.24)' : 'rgba(255, 255, 255, 0.24)'\n }`,\n },\n '::-webkit-scrollbar-thumb:active': {\n boxShadow: `inset 0 0 0 20px ${\n theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.37)' : 'rgba(255, 255, 255, 0.37)'\n }`,\n },\n })}\n />\n);\n\nconst getThemeGlobalStyles = (\n datePickerSelectedBg: string,\n datePickerSelectedColor: string,\n datePickerHoverColor: string,\n) => (\n <GlobalStyles\n styles={{\n ':root': {\n '--owp-datepicker-selected-bg': datePickerSelectedBg,\n '--owp-datepicker-selected-color': datePickerSelectedColor,\n '--owp-datepicker-selected-hover-bg': emphasize(datePickerSelectedBg, 0.16),\n '--owp-datepicker-hover-color': datePickerHoverColor,\n '--owp-datepicker-hover-bg': alpha(datePickerSelectedBg, 0.14),\n '--owp-datepicker-keyboard-selected-bg': alpha(datePickerSelectedBg, 0.28),\n '--owp-datepicker-keyboard-selected-hover-bg': alpha(datePickerSelectedBg, 0.36),\n '--owp-datepicker-keyboard-selected-color': datePickerHoverColor,\n '--owp-datepicker-range-preview-bg': alpha(datePickerSelectedBg, 0.48),\n },\n }}\n />\n);\n\nexport interface OwpStyleProviderProps {\n children?: ReactNode;\n theme?: Theme;\n root?: boolean;\n cacheProviderProps?: OwpCacheProviderProps;\n}\n\n/**\n * MUI theme boundary and global style layer.\n * @param theme MUI theme 객체\n * @param root 글로벌 스타일 적용 여부\n * @param children 렌더링 자식\n */\nfunction OwpStyleTheme({\n children,\n theme,\n root = false,\n datePickerSelectedBg,\n datePickerSelectedColor,\n datePickerHoverColor,\n}: Pick<OwpStyleProviderProps, 'children' | 'root'> & {\n theme: Theme;\n datePickerSelectedBg?: string;\n datePickerSelectedColor?: string;\n datePickerHoverColor?: string;\n}) {\n const { mode } = theme.palette;\n\n useEffect(() => {\n if (root) {\n document.body.classList.add(mode === 'light' ? 'light' : 'dark');\n document.body.classList.remove(mode === 'light' ? 'dark' : 'light');\n }\n }, [mode, root]);\n\n return (\n <ThemeProvider theme={theme}>\n {children}\n {getThemeGlobalStyles(\n datePickerSelectedBg ?? theme.palette.primary.main,\n datePickerSelectedColor ??\n theme.palette.getContrastText(datePickerSelectedBg ?? theme.palette.primary.main),\n datePickerHoverColor ?? theme.palette.text.primary,\n )}\n {root && inputGlobalStyles}\n </ThemeProvider>\n );\n}\n\n/**\n * CacheProvider, theme composition\n * @param theme MUI theme 객체\n * @param root 글로벌 스타일 적용 여부\n * @param cacheProviderProps CacheProvider 옵션\n */\nfunction OwpStyleProviderContent({\n children,\n theme,\n root,\n cacheProviderProps,\n datePickerSelectedBg,\n datePickerSelectedColor,\n datePickerHoverColor,\n}: OwpStyleProviderContentProps) {\n const themeContent = (\n <OwpStyleTheme\n theme={theme}\n root={root}\n datePickerSelectedBg={datePickerSelectedBg}\n datePickerSelectedColor={datePickerSelectedColor}\n datePickerHoverColor={datePickerHoverColor}\n >\n {children}\n </OwpStyleTheme>\n );\n\n if (!cacheProviderProps?.value) {\n return themeContent;\n }\n\n return <CacheProvider {...cacheProviderProps}>{themeContent}</CacheProvider>;\n}\n\n/**\n * Store main theme fallback provider\n * @param root 글로벌 스타일 적용 여부\n * @param cacheProviderProps CacheProvider 옵션\n */\nfunction OwpStyleProviderFallback({\n children,\n root,\n cacheProviderProps,\n}: Omit<OwpStyleProviderProps, 'theme'>) {\n const theme = useAppSelector(selectMainTheme as (state: RootState) => Theme);\n const toolbarTheme = useAppSelector(selectToolbarTheme as (state: RootState) => Theme);\n const datePickerSelectedBg = toolbarTheme.palette.background.default;\n\n return (\n <OwpStyleProviderContent\n theme={theme}\n root={root}\n cacheProviderProps={cacheProviderProps}\n datePickerSelectedBg={datePickerSelectedBg}\n datePickerSelectedColor={toolbarTheme.palette.getContrastText(datePickerSelectedBg)}\n datePickerHoverColor={theme.palette.text.primary}\n >\n {children}\n </OwpStyleProviderContent>\n );\n}\n\n/**\n * CacheProvider, theme composition\n * @param theme MUI theme 객체. 미지정 시 store main theme 사용\n * @param root 글로벌 스타일 적용 여부\n * @param cacheProviderProps CacheProvider 옵션\n */\nexport function OwpStyleProvider(props: OwpStyleProviderProps) {\n const { children, theme, root, cacheProviderProps } = props;\n\n if (theme) {\n return (\n <OwpStyleProviderContent theme={theme} root={root} cacheProviderProps={cacheProviderProps}>\n {children}\n </OwpStyleProviderContent>\n );\n }\n\n return (\n <OwpStyleProviderFallback root={root} cacheProviderProps={cacheProviderProps}>\n {children}\n </OwpStyleProviderFallback>\n );\n}\n"],"names":["inputGlobalStyles","jsx","GlobalStyles","__name","theme","alpha","getThemeGlobalStyles","datePickerSelectedBg","datePickerSelectedColor","datePickerHoverColor","emphasize","OwpStyleTheme","children","root","mode","useEffect","jsxs","ThemeProvider","OwpStyleProviderContent","cacheProviderProps","themeContent","CacheProvider","OwpStyleProviderFallback","useAppSelector","selectMainTheme","toolbarTheme","selectToolbarTheme","OwpStyleProvider","props"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"OwpSuspense.js","sources":["../../../src/components/OwpSuspense/OwpSuspense.tsx"],"sourcesContent":["import { OwpPageSkeleton } from '@/components/OwpPageSkeleton/OwpPageSkeleton';\nimport { OwpLoading } from '@/components/OwpLoading';\nimport type { OwpLoadingProps } from '@/components/OwpLoading/OwpLoading';\nimport { useOwpAppContext } from '@/contexts/OwpAppProvider';\nimport clsx from 'clsx';\nimport type {\n OwpPageSkeletonSpec,\n OwpRouteLoadingConfig,\n OwpRouteLoadingSlotProps,\n} from '@/contexts/OwpAppProvider';\nimport {\n ComponentType,\n ReactNode,\n Suspense,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { useLocation } from 'react-router-dom';\n\ntype OwpSuspenseProps = {\n loadingProps?: OwpLoadingProps;\n children: ReactNode;\n};\n\n/**\n * The OwpSuspense component is a wrapper around the React Suspense component.\n * It is used to display a loading spinner while the wrapped components are being loaded.\n * The component is memoized to prevent unnecessary re-renders.\n * React Suspense defaults\n * For to Avoid Repetition\n */\nfunction OwpSuspense(props: OwpSuspenseProps) {\n const { children, loadingProps } = props;\n const { pathname } = useLocation();\n const { slots, slotProps } = useOwpAppContext();\n const RouteLoadingSlot = slots?.routeLoading;\n const { getSkeletonSpec, releaseOnClick = false, ...routeLoadingProps } =\n slotProps?.routeLoading ?? {};\n const skeletonSpec = getSkeletonSpec?.(pathname);\n const hasCompletedInitialMountRef = useRef(false);\n const [holdPathname, setHoldPathname] = useState<string | null>(null);\n const isReleaseOnClickEnabled = releaseOnClick === true;\n\n useEffect(() => {\n hasCompletedInitialMountRef.current = true;\n }, []);\n\n const shouldUseSkeleton = hasCompletedInitialMountRef.current && !!skeletonSpec;\n\n return (\n <Suspense\n fallback={\n <RouteLoadingFallback\n pathname={pathname}\n loadingProps={loadingProps}\n routeLoadingSlotProps={routeLoadingProps}\n RouteLoadingSlot={RouteLoadingSlot}\n skeletonSpec={skeletonSpec}\n shouldUseSkeleton={shouldUseSkeleton}\n shouldHoldOnResolve={!RouteLoadingSlot && shouldUseSkeleton && isReleaseOnClickEnabled}\n onFallbackRendered={() => {\n setHoldPathname(pathname);\n }}\n />\n }\n >\n <RouteLoadingHold\n skeletonSpec={skeletonSpec}\n isVisible={holdPathname === pathname}\n onRelease={() => {\n setHoldPathname(null);\n }}\n >\n {children}\n </RouteLoadingHold>\n </Suspense>\n );\n}\n\nexport { OwpSuspense };\n\ntype RouteLoadingFallbackProps = {\n pathname: string;\n loadingProps?: OwpLoadingProps;\n routeLoadingSlotProps?: Omit<\n Partial<OwpRouteLoadingSlotProps>,\n 'pathname' | 'isFirstRouteLoading'\n > &\n OwpRouteLoadingConfig;\n RouteLoadingSlot?: ComponentType<OwpRouteLoadingSlotProps>;\n skeletonSpec?: OwpPageSkeletonSpec;\n shouldUseSkeleton: boolean;\n shouldHoldOnResolve: boolean;\n onFallbackRendered: () => void;\n};\n\nfunction RouteLoadingFallback({\n pathname,\n loadingProps,\n routeLoadingSlotProps,\n RouteLoadingSlot,\n skeletonSpec,\n shouldUseSkeleton,\n shouldHoldOnResolve,\n onFallbackRendered,\n}: RouteLoadingFallbackProps) {\n useEffect(() => {\n if (shouldHoldOnResolve) {\n onFallbackRendered();\n }\n }, [onFallbackRendered, shouldHoldOnResolve]);\n\n if (RouteLoadingSlot) {\n return (\n <RouteLoadingSlot\n {...routeLoadingSlotProps}\n {...loadingProps}\n pathname={pathname}\n isFirstRouteLoading={true}\n />\n );\n }\n\n if (shouldUseSkeleton && skeletonSpec) {\n return <OwpPageSkeleton spec={skeletonSpec} />;\n }\n\n return (\n <OwpLoading\n {...routeLoadingSlotProps}\n {...loadingProps}\n className={clsx(routeLoadingSlotProps?.className, loadingProps?.className)}\n />\n );\n}\n\ntype RouteLoadingHoldProps = {\n skeletonSpec?: OwpPageSkeletonSpec;\n isVisible: boolean;\n onRelease: () => void;\n children: ReactNode;\n};\n\nfunction RouteLoadingHold({\n skeletonSpec,\n isVisible,\n onRelease,\n children,\n}: RouteLoadingHoldProps) {\n if (!isVisible || !skeletonSpec) {\n return children;\n }\n\n return (\n <div\n aria-label=\"Release route loading skeleton\"\n className=\"flex min-h-0 w-full flex-1 cursor-pointer flex-col overflow-hidden\"\n onClick={onRelease}\n onKeyDown={(event) => {\n if (event.key !== 'Enter' && event.key !== ' ') {\n return;\n }\n\n event.preventDefault();\n onRelease();\n }}\n role=\"button\"\n tabIndex={0}\n >\n <OwpPageSkeleton spec={skeletonSpec} />\n </div>\n );\n}\n"],"names":["OwpSuspense","props","children","loadingProps","pathname","useLocation","slots","slotProps","useOwpAppContext","RouteLoadingSlot","getSkeletonSpec","releaseOnClick","routeLoadingProps","skeletonSpec","hasCompletedInitialMountRef","useRef","holdPathname","setHoldPathname","useState","isReleaseOnClickEnabled","useEffect","shouldUseSkeleton","jsx","Suspense","RouteLoadingFallback","__name","RouteLoadingHold","routeLoadingSlotProps","shouldHoldOnResolve","onFallbackRendered","OwpPageSkeleton","OwpLoading","clsx","isVisible","onRelease","event"],"mappings":"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"}
1
+ {"version":3,"file":"OwpSuspense.js","sources":["../../../src/components/OwpSuspense/OwpSuspense.tsx"],"sourcesContent":["import { OwpPageSkeleton } from '@/components/OwpPageSkeleton';\nimport { OwpLoading } from '@/components/OwpLoading';\nimport type { OwpLoadingProps } from '@/components/OwpLoading/OwpLoading';\nimport { useOwpAppContext } from '@/contexts/OwpAppProvider';\nimport clsx from 'clsx';\nimport type {\n OwpPageSkeletonSpec,\n OwpRouteLoadingConfig,\n OwpRouteLoadingSlotProps,\n} from '@/contexts/OwpAppProvider';\nimport {\n ComponentType,\n ReactNode,\n Suspense,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { useLocation } from 'react-router-dom';\n\ntype OwpSuspenseProps = {\n loadingProps?: OwpLoadingProps;\n children: ReactNode;\n};\n\n/**\n * The OwpSuspense component is a wrapper around the React Suspense component.\n * It is used to display a loading spinner while the wrapped components are being loaded.\n * The component is memoized to prevent unnecessary re-renders.\n * React Suspense defaults\n * For to Avoid Repetition\n */\nfunction OwpSuspense(props: OwpSuspenseProps) {\n const { children, loadingProps } = props;\n const { pathname } = useLocation();\n const { slots, slotProps } = useOwpAppContext();\n const RouteLoadingSlot = slots?.routeLoading;\n const { getSkeletonSpec, releaseOnClick = false, ...routeLoadingProps } =\n slotProps?.routeLoading ?? {};\n const skeletonSpec = getSkeletonSpec?.(pathname);\n const hasCompletedInitialMountRef = useRef(false);\n const [holdPathname, setHoldPathname] = useState<string | null>(null);\n const isReleaseOnClickEnabled = releaseOnClick === true;\n\n useEffect(() => {\n hasCompletedInitialMountRef.current = true;\n }, []);\n\n const shouldUseSkeleton = hasCompletedInitialMountRef.current && !!skeletonSpec;\n\n return (\n <Suspense\n fallback={\n <RouteLoadingFallback\n pathname={pathname}\n loadingProps={loadingProps}\n routeLoadingSlotProps={routeLoadingProps}\n RouteLoadingSlot={RouteLoadingSlot}\n skeletonSpec={skeletonSpec}\n shouldUseSkeleton={shouldUseSkeleton}\n shouldHoldOnResolve={!RouteLoadingSlot && shouldUseSkeleton && isReleaseOnClickEnabled}\n onFallbackRendered={() => {\n setHoldPathname(pathname);\n }}\n />\n }\n >\n <RouteLoadingHold\n skeletonSpec={skeletonSpec}\n isVisible={holdPathname === pathname}\n onRelease={() => {\n setHoldPathname(null);\n }}\n >\n {children}\n </RouteLoadingHold>\n </Suspense>\n );\n}\n\nexport { OwpSuspense };\n\ntype RouteLoadingFallbackProps = {\n pathname: string;\n loadingProps?: OwpLoadingProps;\n routeLoadingSlotProps?: Omit<\n Partial<OwpRouteLoadingSlotProps>,\n 'pathname' | 'isFirstRouteLoading'\n > &\n OwpRouteLoadingConfig;\n RouteLoadingSlot?: ComponentType<OwpRouteLoadingSlotProps>;\n skeletonSpec?: OwpPageSkeletonSpec;\n shouldUseSkeleton: boolean;\n shouldHoldOnResolve: boolean;\n onFallbackRendered: () => void;\n};\n\nfunction RouteLoadingFallback({\n pathname,\n loadingProps,\n routeLoadingSlotProps,\n RouteLoadingSlot,\n skeletonSpec,\n shouldUseSkeleton,\n shouldHoldOnResolve,\n onFallbackRendered,\n}: RouteLoadingFallbackProps) {\n useEffect(() => {\n if (shouldHoldOnResolve) {\n onFallbackRendered();\n }\n }, [onFallbackRendered, shouldHoldOnResolve]);\n\n if (RouteLoadingSlot) {\n return (\n <RouteLoadingSlot\n {...routeLoadingSlotProps}\n {...loadingProps}\n pathname={pathname}\n isFirstRouteLoading={true}\n />\n );\n }\n\n if (shouldUseSkeleton && skeletonSpec) {\n return <OwpPageSkeleton spec={skeletonSpec} />;\n }\n\n return (\n <OwpLoading\n {...routeLoadingSlotProps}\n {...loadingProps}\n className={clsx(routeLoadingSlotProps?.className, loadingProps?.className)}\n />\n );\n}\n\ntype RouteLoadingHoldProps = {\n skeletonSpec?: OwpPageSkeletonSpec;\n isVisible: boolean;\n onRelease: () => void;\n children: ReactNode;\n};\n\nfunction RouteLoadingHold({\n skeletonSpec,\n isVisible,\n onRelease,\n children,\n}: RouteLoadingHoldProps) {\n if (!isVisible || !skeletonSpec) {\n return children;\n }\n\n return (\n <div\n aria-label=\"Release route loading skeleton\"\n className=\"flex min-h-0 w-full flex-1 cursor-pointer flex-col overflow-hidden\"\n onClick={onRelease}\n onKeyDown={(event) => {\n if (event.key !== 'Enter' && event.key !== ' ') {\n return;\n }\n\n event.preventDefault();\n onRelease();\n }}\n role=\"button\"\n tabIndex={0}\n >\n <OwpPageSkeleton spec={skeletonSpec} />\n </div>\n );\n}\n"],"names":["OwpSuspense","props","children","loadingProps","pathname","useLocation","slots","slotProps","useOwpAppContext","RouteLoadingSlot","getSkeletonSpec","releaseOnClick","routeLoadingProps","skeletonSpec","hasCompletedInitialMountRef","useRef","holdPathname","setHoldPathname","useState","isReleaseOnClickEnabled","useEffect","shouldUseSkeleton","jsx","Suspense","RouteLoadingFallback","__name","RouteLoadingHold","routeLoadingSlotProps","shouldHoldOnResolve","onFallbackRendered","OwpPageSkeleton","OwpLoading","clsx","isVisible","onRelease","event"],"mappings":"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"}