@owp/core 2.2.5 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) 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 +5 -2
  6. package/dist/_virtual/index16.js.map +1 -1
  7. package/dist/_virtual/index17.js +2 -2
  8. package/dist/_virtual/index5.js +2 -5
  9. package/dist/_virtual/index5.js.map +1 -1
  10. package/dist/_virtual/index6.js +2 -2
  11. package/dist/_virtual/index7.js +2 -2
  12. package/dist/components/OwpDialog/OwpDialog.js +48 -46
  13. package/dist/components/OwpDialog/OwpDialog.js.map +1 -1
  14. package/dist/components/OwpErrorStatusPage/OwpErrorStatusPage.js +24 -24
  15. package/dist/components/OwpErrorStatusPage/OwpErrorStatusPage.js.map +1 -1
  16. package/dist/components/OwpLayout/OwpLayout.js +29 -30
  17. package/dist/components/OwpLayout/OwpLayout.js.map +1 -1
  18. package/dist/components/OwpMrtTable/OwpMrtTable.js +2 -2
  19. package/dist/components/OwpMrtTable/OwpMrtTable.js.map +1 -1
  20. package/dist/components/OwpMrtTable/{OwpMrtTableNoDataOverlay.js → internal/OwpMrtTableNoDataOverlay.js} +1 -1
  21. package/dist/components/OwpMrtTable/internal/OwpMrtTableNoDataOverlay.js.map +1 -0
  22. package/dist/components/OwpMrtTable/{OwpMrtTableTopToolbar.js → internal/OwpMrtTableTopToolbar.js} +3 -3
  23. package/dist/components/OwpMrtTable/internal/OwpMrtTableTopToolbar.js.map +1 -0
  24. package/dist/components/OwpPageCarded/OwpPageCarded.js +81 -77
  25. package/dist/components/OwpPageCarded/OwpPageCarded.js.map +1 -1
  26. package/dist/components/OwpPageCarded/{OwpPageCardedHeader.js → internal/OwpPageCardedHeader.js} +2 -2
  27. package/dist/components/OwpPageCarded/internal/OwpPageCardedHeader.js.map +1 -0
  28. package/dist/components/OwpPageCarded/{OwpPageCardedSidebar.js → internal/OwpPageCardedSidebar.js} +3 -3
  29. package/dist/components/OwpPageCarded/internal/OwpPageCardedSidebar.js.map +1 -0
  30. package/dist/components/OwpPageCarded/{OwpPageCardedSidebarContent.js → internal/OwpPageCardedSidebarContent.js} +2 -2
  31. package/dist/components/OwpPageCarded/internal/OwpPageCardedSidebarContent.js.map +1 -0
  32. package/dist/components/OwpPicker/OwpDatePicker.js +90 -83
  33. package/dist/components/OwpPicker/OwpDatePicker.js.map +1 -1
  34. package/dist/components/OwpPicker/OwpDateRangePicker.js +57 -50
  35. package/dist/components/OwpPicker/OwpDateRangePicker.js.map +1 -1
  36. package/dist/components/OwpPicker/OwpTimePicker.js +65 -61
  37. package/dist/components/OwpPicker/OwpTimePicker.js.map +1 -1
  38. package/dist/components/OwpPicker/OwpWeekDatePicker.js +58 -52
  39. package/dist/components/OwpPicker/OwpWeekDatePicker.js.map +1 -1
  40. package/dist/components/OwpPicker/OwpYearRangePicker.js +68 -62
  41. package/dist/components/OwpPicker/OwpYearRangePicker.js.map +1 -1
  42. package/dist/components/OwpPicker/{constants.js → constants/index.js} +1 -1
  43. package/dist/components/OwpPicker/constants/index.js.map +1 -0
  44. package/dist/components/OwpPicker/{AnimatedCalendarContainer.js → internal/AnimatedCalendarContainer.js} +2 -2
  45. package/dist/components/OwpPicker/internal/AnimatedCalendarContainer.js.map +1 -0
  46. package/dist/components/OwpPicker/{CalendarContainer.js → internal/CalendarContainer.js} +2 -2
  47. package/dist/components/OwpPicker/internal/CalendarContainer.js.map +1 -0
  48. package/dist/components/OwpPicker/{DatePickerInput.js → internal/DatePickerInput.js} +4 -4
  49. package/dist/components/OwpPicker/internal/DatePickerInput.js.map +1 -0
  50. package/dist/components/OwpQuerySelector/OwpQuerySelector.js +205 -171
  51. package/dist/components/OwpQuerySelector/OwpQuerySelector.js.map +1 -1
  52. package/dist/components/OwpScrollbars/OwpScrollbars.js +16 -17
  53. package/dist/components/OwpScrollbars/OwpScrollbars.js.map +1 -1
  54. package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js +112 -103
  55. package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js.map +1 -1
  56. package/dist/components/OwpStyleProvider/OwpStyleProvider.js +86 -39
  57. package/dist/components/OwpStyleProvider/OwpStyleProvider.js.map +1 -1
  58. package/dist/components/OwpSuspense/OwpSuspense.js.map +1 -1
  59. package/dist/components/OwpTable/OwpTable.js +50 -51
  60. package/dist/components/OwpTable/OwpTable.js.map +1 -1
  61. package/dist/components/OwpTreeGrid/OwpTreeGrid.js +163 -308
  62. package/dist/components/OwpTreeGrid/OwpTreeGrid.js.map +1 -1
  63. package/dist/components/OwpTreeGrid/hooks/useOwpTreeGridOverlayFrame.js +1 -1
  64. package/dist/components/OwpTreeGrid/hooks/useOwpTreeGridOverlayFrame.js.map +1 -1
  65. package/dist/components/OwpTreeGrid/{OwpTreeGridLoadingOverlay.js → internal/OwpTreeGridLoadingOverlay.js} +2 -2
  66. package/dist/components/OwpTreeGrid/internal/OwpTreeGridLoadingOverlay.js.map +1 -0
  67. package/dist/components/OwpTreeGrid/{OwpTreeGridNoDataOverlay.js → internal/OwpTreeGridNoDataOverlay.js} +2 -2
  68. package/dist/components/OwpTreeGrid/internal/OwpTreeGridNoDataOverlay.js.map +1 -0
  69. package/dist/components/OwpTreeGrid/{utils/index.js → internal/treeGridLayout.js} +1 -1
  70. package/dist/components/OwpTreeGrid/internal/treeGridLayout.js.map +1 -0
  71. package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +182 -0
  72. package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js.map +1 -0
  73. package/dist/components/OwpTreeGrid/utils/perf.js.map +1 -0
  74. package/dist/components/OwpZoomImageSlider/OwpZoomImageSlider.js +1 -1
  75. package/dist/components/OwpZoomImageSlider/OwpZoomImageSlider.js.map +1 -1
  76. package/dist/components/OwpZoomImageSlider/{ZoomImage.js → internal/ZoomImage.js} +1 -1
  77. package/dist/components/OwpZoomImageSlider/internal/ZoomImage.js.map +1 -0
  78. package/dist/contexts/OwpCoreProvider.js +22 -36
  79. package/dist/contexts/OwpCoreProvider.js.map +1 -1
  80. package/dist/contexts/OwpStoreProvider.js +9 -9
  81. package/dist/contexts/OwpStoreProvider.js.map +1 -1
  82. package/dist/hooks/useNavbar.js +24 -0
  83. package/dist/hooks/useNavbar.js.map +1 -0
  84. package/dist/hooks/useOwpSettings.js +21 -0
  85. package/dist/hooks/useOwpSettings.js.map +1 -0
  86. package/dist/hooks.js +75 -62
  87. package/dist/hooks.js.map +1 -1
  88. package/dist/index.js +98 -104
  89. package/dist/index.js.map +1 -1
  90. package/dist/layout/Layout.js +28 -29
  91. package/dist/layout/Layout.js.map +1 -1
  92. package/dist/layout/components/layouts/FooterLayout.js +15 -16
  93. package/dist/layout/components/layouts/FooterLayout.js.map +1 -1
  94. package/dist/layout/components/layouts/NavbarToggleFabLayout.js +21 -18
  95. package/dist/layout/components/layouts/NavbarToggleFabLayout.js.map +1 -1
  96. package/dist/layout/components/layouts/NavbarWrapperLayout.js +20 -21
  97. package/dist/layout/components/layouts/NavbarWrapperLayout.js.map +1 -1
  98. package/dist/layout/components/navbar/NavbarPinToggleButton.js +10 -11
  99. package/dist/layout/components/navbar/NavbarPinToggleButton.js.map +1 -1
  100. package/dist/layout/components/navbar/NavbarToggleButton.js +31 -32
  101. package/dist/layout/components/navbar/NavbarToggleButton.js.map +1 -1
  102. package/dist/layout/components/navbar/style/NavbarStyle.js +36 -37
  103. package/dist/layout/components/navbar/style/NavbarStyle.js.map +1 -1
  104. package/dist/layout/components/navbar/style/NavbarStyleContent.js +29 -30
  105. package/dist/layout/components/navbar/style/NavbarStyleContent.js.map +1 -1
  106. package/dist/layout/components/navigation/Navigation.js +18 -22
  107. package/dist/layout/components/navigation/Navigation.js.map +1 -1
  108. package/dist/layout/components/toggles/NavigationSearchToggle.js +55 -60
  109. package/dist/layout/components/toggles/NavigationSearchToggle.js.map +1 -1
  110. package/dist/layout/components/toggles/NavigationShortcutsToggle.js +44 -49
  111. package/dist/layout/components/toggles/NavigationShortcutsToggle.js.map +1 -1
  112. package/dist/layout/components/toolbar/ToolbarLayout.js +26 -27
  113. package/dist/layout/components/toolbar/ToolbarLayout.js.map +1 -1
  114. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/constants.js +1 -1
  115. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/index.js +1 -1
  116. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE39/index.js +1 -1
  117. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/constants.js +1 -1
  118. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/index.js +1 -1
  119. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/constants.js +1 -1
  120. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/index.js +1 -1
  121. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/GenericBarcode/index.js +1 -1
  122. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/constants.js +1 -1
  123. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/index.js +1 -1
  124. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/MSI/index.js +1 -1
  125. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/codabar/index.js +1 -1
  126. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/pharmacode/index.js +1 -1
  127. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/renderers/index.js +1 -1
  128. package/dist/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js +1 -1
  129. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
  130. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
  131. package/dist/node_modules/.pnpm/react-imask@7.6.1_react@19.2.4/node_modules/react-imask/esm/mixin.js +1 -1
  132. package/dist/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js +1 -1
  133. 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
  134. package/dist/owp-app.css +1 -1
  135. package/dist/store/atoms/navbarAtoms.js +84 -0
  136. package/dist/store/atoms/navbarAtoms.js.map +1 -0
  137. package/dist/store/atoms/owpSettingsAtoms.js +140 -0
  138. package/dist/store/atoms/owpSettingsAtoms.js.map +1 -0
  139. package/dist/store/atoms/owpStore.js +29 -0
  140. package/dist/store/atoms/owpStore.js.map +1 -0
  141. package/dist/store.js +44 -39
  142. package/dist/store.js.map +1 -1
  143. package/dist/types/components/OwpPageCarded/OwpPageCarded.d.ts +12 -41
  144. package/dist/types/components/OwpPageSkeleton/index.d.ts +1 -0
  145. package/dist/types/components/OwpPicker/OwpWeekDatePicker.d.ts +0 -1
  146. package/dist/types/components/OwpPicker/OwpYearRangePicker.d.ts +0 -1
  147. package/dist/types/components/OwpPicker/{DatePickerInput.d.ts → internal/DatePickerInput.d.ts} +1 -1
  148. package/dist/types/components/OwpQuerySelector/OwpQuerySelector.d.ts +1 -1
  149. package/dist/types/components/OwpQuerySelector/types/types.d.ts +2 -0
  150. package/dist/types/components/OwpTable/OwpTable.d.ts +1 -1
  151. package/dist/types/components/OwpTabs/OwpTab.d.ts +1 -1
  152. package/dist/types/components/OwpTabs/OwpTabs.d.ts +1 -1
  153. package/dist/types/components/OwpTreeGrid/OwpTreeGrid.d.ts +3 -1
  154. package/dist/types/components/OwpTreeGrid/{OwpTreeGridLoadingOverlay.d.ts → internal/OwpTreeGridLoadingOverlay.d.ts} +1 -1
  155. package/dist/types/components/OwpTreeGrid/{OwpTreeGridNoDataOverlay.d.ts → internal/OwpTreeGridNoDataOverlay.d.ts} +1 -1
  156. package/dist/types/components/OwpTreeGrid/{utils/index.d.ts → internal/treeGridLayout.d.ts} +0 -2
  157. package/dist/types/components/OwpTreeGrid/internal/treeGridRuntime.d.ts +75 -0
  158. package/dist/types/contexts/OwpCoreProvider.d.ts +2 -2
  159. package/dist/types/contexts/OwpStoreProvider.d.ts +4 -4
  160. package/dist/types/hooks/index.d.ts +2 -1
  161. package/dist/types/hooks/useNavbar.d.ts +19 -0
  162. package/dist/types/hooks/useOwpSettings.d.ts +79 -0
  163. package/dist/types/index.d.ts +1 -4
  164. package/dist/types/layout/components/navigation/Navigation.d.ts +6 -2
  165. package/dist/types/layout/components/toggles/NavigationSearchToggle.d.ts +5 -2
  166. package/dist/types/layout/components/toggles/NavigationShortcutsToggle.d.ts +5 -2
  167. package/dist/types/store/atoms/index.d.ts +3 -0
  168. package/dist/types/store/atoms/internal/types.d.ts +29 -0
  169. package/dist/types/store/atoms/navbarAtoms.d.ts +48 -0
  170. package/dist/types/store/atoms/owpSettingsAtoms.d.ts +89 -0
  171. package/dist/types/store/atoms/owpStore.d.ts +13 -0
  172. package/dist/types/store/index.d.ts +1 -3
  173. package/dist/types/types/OwpNavigationTypes.d.ts +14 -0
  174. package/dist/types/types/index.d.ts +1 -1
  175. package/dist/types/utils/index.d.ts +1 -0
  176. package/dist/types/utils/navigationUtils.d.ts +6 -2
  177. package/dist/types/utils/normalizeTimeToHourMinute.d.ts +11 -0
  178. package/dist/utils/navigationUtils.js.map +1 -1
  179. package/dist/utils/normalizeTimeToHourMinute.js +34 -0
  180. package/dist/utils/normalizeTimeToHourMinute.js.map +1 -0
  181. package/dist/utils/treeGridUtil.js +1 -1
  182. package/dist/utils/treeGridUtil.js.map +1 -1
  183. package/dist/utils.js +78 -75
  184. package/dist/utils.js.map +1 -1
  185. package/package.json +2 -6
  186. package/dist/components/OwpMrtTable/OwpMrtTableNoDataOverlay.js.map +0 -1
  187. package/dist/components/OwpMrtTable/OwpMrtTableTopToolbar.js.map +0 -1
  188. package/dist/components/OwpPageCarded/OwpPageCardedHeader.js.map +0 -1
  189. package/dist/components/OwpPageCarded/OwpPageCardedSidebar.js.map +0 -1
  190. package/dist/components/OwpPageCarded/OwpPageCardedSidebarContent.js.map +0 -1
  191. package/dist/components/OwpPicker/AnimatedCalendarContainer.js.map +0 -1
  192. package/dist/components/OwpPicker/CalendarContainer.js.map +0 -1
  193. package/dist/components/OwpPicker/DatePickerInput.js.map +0 -1
  194. package/dist/components/OwpPicker/constants.js.map +0 -1
  195. package/dist/components/OwpTreeGrid/OwpTreeGridLoadingOverlay.js.map +0 -1
  196. package/dist/components/OwpTreeGrid/OwpTreeGridNoDataOverlay.js.map +0 -1
  197. package/dist/components/OwpTreeGrid/perf.js.map +0 -1
  198. package/dist/components/OwpTreeGrid/utils/index.js.map +0 -1
  199. package/dist/components/OwpZoomImageSlider/ZoomImage.js.map +0 -1
  200. package/dist/hooks/useAppStore.js +0 -8
  201. package/dist/hooks/useAppStore.js.map +0 -1
  202. 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
  203. package/dist/store/generateReducersFromSlices.js +0 -18
  204. package/dist/store/generateReducersFromSlices.js.map +0 -1
  205. package/dist/store/lazyLoadedSlices.js +0 -16
  206. package/dist/store/lazyLoadedSlices.js.map +0 -1
  207. package/dist/store/middleware.js +0 -9
  208. package/dist/store/middleware.js.map +0 -1
  209. package/dist/store/navbarSlice.js +0 -71
  210. package/dist/store/navbarSlice.js.map +0 -1
  211. package/dist/store/navigationSlice.js +0 -46
  212. package/dist/store/navigationSlice.js.map +0 -1
  213. package/dist/store/owpSettingsSlice.js +0 -195
  214. package/dist/store/owpSettingsSlice.js.map +0 -1
  215. package/dist/store/store.js +0 -17
  216. package/dist/store/store.js.map +0 -1
  217. package/dist/store/withSlices.js +0 -27
  218. package/dist/store/withSlices.js.map +0 -1
  219. package/dist/types/hooks/useAppStore.d.ts +0 -7
  220. package/dist/types/store/generateReducersFromSlices.d.ts +0 -6
  221. package/dist/types/store/lazyLoadedSlices.d.ts +0 -9
  222. package/dist/types/store/middleware.d.ts +0 -17
  223. package/dist/types/store/navbarSlice.d.ts +0 -22
  224. package/dist/types/store/navigationSlice.d.ts +0 -92
  225. package/dist/types/store/owpSettingsSlice.d.ts +0 -112
  226. package/dist/types/store/store.d.ts +0 -13
  227. package/dist/types/store/withSlices.d.ts +0 -11
  228. /package/dist/components/OwpTreeGrid/{perf.js → utils/perf.js} +0 -0
  229. /package/dist/types/components/OwpMrtTable/{OwpMrtTableNoDataOverlay.d.ts → internal/OwpMrtTableNoDataOverlay.d.ts} +0 -0
  230. /package/dist/types/components/OwpMrtTable/{OwpMrtTableTopToolbar.d.ts → internal/OwpMrtTableTopToolbar.d.ts} +0 -0
  231. /package/dist/types/components/OwpPageCarded/{OwpPageCardedHeader.d.ts → internal/OwpPageCardedHeader.d.ts} +0 -0
  232. /package/dist/types/components/OwpPageCarded/{OwpPageCardedSidebar.d.ts → internal/OwpPageCardedSidebar.d.ts} +0 -0
  233. /package/dist/types/components/OwpPageCarded/{OwpPageCardedSidebarContent.d.ts → internal/OwpPageCardedSidebarContent.d.ts} +0 -0
  234. /package/dist/types/components/OwpPicker/{constants.d.ts → constants/index.d.ts} +0 -0
  235. /package/dist/types/components/OwpPicker/{AnimatedCalendarContainer.d.ts → internal/AnimatedCalendarContainer.d.ts} +0 -0
  236. /package/dist/types/components/OwpPicker/{CalendarContainer.d.ts → internal/CalendarContainer.d.ts} +0 -0
  237. /package/dist/types/components/OwpTreeGrid/{perf.d.ts → utils/perf.d.ts} +0 -0
  238. /package/dist/types/components/OwpZoomImageSlider/{ZoomImage.d.ts → internal/ZoomImage.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"OwpSelectorAutocomplete.js","sources":["../../../src/components/OwpSelectorBase/OwpSelectorAutocomplete.tsx"],"sourcesContent":["import { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport {\n Autocomplete,\n Box,\n Checkbox,\n Chip,\n CircularProgress,\n ClickAwayListener,\n Paper,\n Popper,\n TextField,\n} from '@mui/material';\nimport { alpha } from '@mui/material/styles';\nimport clsx from 'clsx';\nimport {\n type KeyboardEvent as ReactKeyboardEvent,\n type MouseEvent as ReactMouseEvent,\n type MutableRefObject,\n type SyntheticEvent,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { OwpSelectorBaseHookResult, OwpSelectorBaseOption, OwpSelectorBaseProps } from './types';\nimport { isSelectorAllOption } from './utils';\n\ninterface OwpSelectorAutocompleteProps {\n hookResult: OwpSelectorBaseHookResult;\n props: OwpSelectorBaseProps;\n}\n\nconst MULTIPLE_VISIBLE_CHIP_COUNT = 2;\nconst AUTOCOMPLETE_MIN_WIDTH = 152;\nconst MULTIPLE_AUTOCOMPLETE_INPUT_MIN_WIDTH = 72;\nconst SELECTOR_CLEAR_ICON_FONT_SIZE = 18.57;\n\ntype SelectorAutocompleteKeyDownEvent = ReactKeyboardEvent<HTMLDivElement> & {\n defaultMuiPrevented?: boolean;\n};\n\n/**\n * 현재 키 이벤트 기준 입력값 반환\n * @param event 키보드 이벤트\n * @param fallbackValue 제어 입력 fallback 값\n */\nconst getCurrentAutocompleteInputValue = (\n event: SelectorAutocompleteKeyDownEvent,\n fallbackValue?: string,\n) => {\n const eventTarget = event.target;\n\n if (eventTarget instanceof HTMLInputElement) {\n return eventTarget.value;\n }\n\n return fallbackValue ?? '';\n};\n\n/**\n * Autocomplete 옵션 라벨 문자열 변환\n * @param label 옵션 라벨\n */\nconst getAutocompleteOptionLabel = (label: OwpSelectorBaseOption['label']) => {\n return typeof label === 'string' || typeof label === 'number' ? `${label}` : '';\n};\n\n/**\n * Autocomplete 기반 공통 선택기\n * @param props Autocomplete 렌더링 props\n */\nexport const OwpSelectorAutocomplete = ({ hookResult, props }: OwpSelectorAutocompleteProps) => {\n const { t } = useOwpTranslation();\n const {\n autocompleteInputValue,\n className,\n disableAllValueItem,\n disableClientFilter,\n disabled,\n error,\n fullWidth,\n helperText,\n label,\n loading,\n loadingText,\n multiple,\n noOptionsText,\n onAutocompleteInputChange,\n placeholder,\n required,\n textFieldProps,\n } = props;\n const {\n allOption,\n clearSelection,\n isAllSelected,\n resolvedOptions,\n restoreAllSelection,\n selectAll,\n selectedOption,\n selectedOptions,\n selectMultipleValues,\n selectSingleValue,\n } = hookResult;\n const options = disableAllValueItem ? resolvedOptions : [allOption, ...resolvedOptions];\n const filteredSelectedOptions = useMemo(\n () => selectedOptions.filter((option) => !isSelectorAllOption(option)),\n [selectedOptions],\n );\n const hiddenSelectedOptions = useMemo(\n () =>\n isAllSelected\n ? []\n : filteredSelectedOptions.slice(MULTIPLE_VISIBLE_CHIP_COUNT),\n [filteredSelectedOptions, isAllSelected],\n );\n const hiddenSelectedOptionCount = hiddenSelectedOptions.length;\n const [hiddenChipAnchorEl, setHiddenChipAnchorEl] = useState<HTMLElement | null>(null);\n const autocompleteRootRef = useRef<HTMLDivElement | null>(null);\n const resolvedNoOptionsText = noOptionsText ?? t('Message.검색 결과 없음');\n const shouldRestoreAllOnClearRef = useRef(\n multiple &&\n !disableAllValueItem &&\n ((props.value ?? props.defaultValue) == null || (props.value ?? props.defaultValue) === ''),\n );\n const autocompleteSlotProps = {\n clearIndicator: {\n className: 'm-0 p-0',\n size: 'small',\n },\n paper: {\n sx: {\n '& .MuiAutocomplete-noOptions': {\n fontSize: 14,\n px: 1,\n py: 1.5,\n whiteSpace: 'nowrap',\n },\n },\n },\n popupIndicator: {\n className: 'm-0 p-0',\n size: 'small',\n },\n } as const;\n const autocompleteSx = {\n minWidth: AUTOCOMPLETE_MIN_WIDTH,\n '& .MuiAutocomplete-endAdornment': {\n '& .MuiAutocomplete-clearIndicator + .MuiAutocomplete-popupIndicator': {\n ml: 0,\n },\n '& .MuiIconButton-root': {\n m: 0,\n p: 0,\n },\n '& > :not(style) + :not(style)': {\n ml: 0,\n },\n alignItems: 'center',\n gap: 0,\n right: 0,\n },\n } as const;\n const multipleAutocompleteSx = {\n ...autocompleteSx,\n '& .MuiAutocomplete-inputRoot .MuiAutocomplete-input': {\n flexBasis: MULTIPLE_AUTOCOMPLETE_INPUT_MIN_WIDTH,\n minWidth: MULTIPLE_AUTOCOMPLETE_INPUT_MIN_WIDTH,\n },\n } as const;\n\n useEffect(() => {\n if (!hiddenSelectedOptionCount) {\n setHiddenChipAnchorEl(null);\n }\n }, [hiddenSelectedOptionCount]);\n\n useEffect(() => {\n if (!shouldRestoreAllOnClearRef.current) {\n return;\n }\n\n const formElement = autocompleteRootRef.current?.closest('form');\n\n if (!formElement) {\n return;\n }\n\n const handleFormReset = () => {\n window.setTimeout(() => {\n restoreAllSelection();\n }, 0);\n };\n\n formElement.addEventListener('reset', handleFormReset);\n\n return () => {\n formElement.removeEventListener('reset', handleFormReset);\n };\n }, [restoreAllSelection]);\n\n const handleHiddenChipPopperClose = () => {\n setHiddenChipAnchorEl(null);\n };\n\n const handleHiddenChipSummaryMouseDown = (event: ReactMouseEvent<HTMLElement>) => {\n event.preventDefault();\n };\n\n const handleHiddenChipSummaryClick = (event: ReactMouseEvent<HTMLElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n setHiddenChipAnchorEl((previousAnchorElement) =>\n previousAnchorElement === event.currentTarget ? null : event.currentTarget,\n );\n };\n\n const handleHiddenChipDelete = (optionValue: string) => {\n selectMultipleValues(\n filteredSelectedOptions\n .filter((option) => option.value !== optionValue)\n .map((option) => option.value),\n );\n };\n\n const handleMultipleRootKeyDown = (event: SelectorAutocompleteKeyDownEvent) => {\n const currentInputValue = getCurrentAutocompleteInputValue(event, autocompleteInputValue);\n\n if (\n (isAllSelected || hiddenSelectedOptionCount > 0) &&\n currentInputValue === '' &&\n (event.key === 'Backspace' || event.key === 'Delete')\n ) {\n event.defaultMuiPrevented = true;\n event.preventDefault();\n event.stopPropagation();\n }\n\n textFieldProps?.onKeyDown?.(event as Parameters<NonNullable<typeof textFieldProps.onKeyDown>>[0]);\n };\n\n if (multiple) {\n return (\n <>\n <Autocomplete\n ref={autocompleteRootRef as MutableRefObject<HTMLDivElement | null>}\n className={clsx('min-w-128', className)}\n disableCloseOnSelect\n disabled={disabled}\n filterOptions={disableClientFilter ? (nextOptions) => nextOptions : undefined}\n fullWidth={fullWidth}\n inputValue={autocompleteInputValue}\n loading={loading}\n multiple\n options={options}\n clearText=\"\"\n closeText=\"\"\n clearIcon={<ClearIcon sx={{ fontSize: SELECTOR_CLEAR_ICON_FONT_SIZE }} />}\n openText=\"\"\n popupIcon={<ArrowDropDownIcon />}\n sx={multipleAutocompleteSx}\n value={selectedOptions}\n getOptionLabel={(option) => getAutocompleteOptionLabel(option.label)}\n isOptionEqualToValue={(option, selected) => option.value === selected.value}\n loadingText={loadingText ?? t('Common.로딩 중...')}\n noOptionsText={resolvedNoOptionsText}\n onChange={(\n _event: SyntheticEvent,\n nextOptions: OwpSelectorBaseOption[],\n reason: string,\n details,\n ) => {\n const currentInputValue =\n _event.type === 'keydown'\n ? getCurrentAutocompleteInputValue(\n _event as SelectorAutocompleteKeyDownEvent,\n autocompleteInputValue,\n )\n : autocompleteInputValue ?? '';\n\n if (\n reason === 'removeOption' &&\n _event.type === 'keydown' &&\n currentInputValue === '' &&\n (isAllSelected || hiddenSelectedOptionCount > 0)\n ) {\n _event.preventDefault();\n _event.stopPropagation();\n return;\n }\n\n if (reason === 'clear') {\n if (shouldRestoreAllOnClearRef.current) {\n selectAll();\n return;\n }\n\n clearSelection();\n return;\n }\n\n if (!disableAllValueItem && details?.option && isSelectorAllOption(details.option)) {\n if (isAllSelected) {\n clearSelection();\n return;\n }\n\n selectAll();\n return;\n }\n\n selectMultipleValues(\n nextOptions.filter((option) => !isSelectorAllOption(option)).map((option) => option.value),\n );\n }}\n onInputChange={(_event, nextInputValue, reason) => {\n onAutocompleteInputChange?.(nextInputValue, reason);\n }}\n onKeyDown={handleMultipleRootKeyDown}\n slotProps={autocompleteSlotProps}\n renderInput={(params) => (\n <TextField\n {...params}\n {...textFieldProps}\n disabled={disabled}\n error={error}\n fullWidth={fullWidth}\n helperText={helperText}\n label={label}\n placeholder={placeholder ?? t('Common.검색')}\n required={required}\n slotProps={{\n ...textFieldProps?.slotProps,\n input: {\n ...params.InputProps,\n ...textFieldProps?.slotProps?.input,\n endAdornment: (\n <>\n {loading ? <CircularProgress color=\"inherit\" size={16} sx={{ mr: 0.5 }} /> : null}\n {params.InputProps.endAdornment}\n </>\n ),\n },\n }}\n variant={textFieldProps?.variant ?? 'standard'}\n />\n )}\n renderOption={(optionProps, option, state) => (\n <li {...optionProps}>\n <Checkbox checked={state.selected} className=\"!mr-8 !p-0\" size=\"small\" />\n {option.label}\n </li>\n )}\n renderValue={(nextSelectedOptions, getItemProps) => {\n if (!disableAllValueItem && isAllSelected) {\n return [\n <Box\n component=\"span\"\n key={allOption.value}\n sx={{ color: 'text.primary', fontWeight: 500, mr: 0.5 }}\n >\n {allOption.label}\n </Box>,\n ];\n }\n\n const visibleSelectedOptions = nextSelectedOptions\n .filter((option) => !isSelectorAllOption(option))\n .slice(0, MULTIPLE_VISIBLE_CHIP_COUNT);\n\n return [\n ...visibleSelectedOptions.map((option, index) => (\n <Chip\n {...getItemProps({ index })}\n key={option.value}\n label={option.label}\n size=\"small\"\n sx={{ borderRadius: 1, mr: 0.5 }}\n />\n )),\n ...(hiddenSelectedOptionCount > 0\n ? [\n <Chip\n key=\"owp-selector-hidden-chip-summary\"\n clickable\n label={`+${hiddenSelectedOptionCount}`}\n onClick={handleHiddenChipSummaryClick}\n onMouseDown={handleHiddenChipSummaryMouseDown}\n size=\"small\"\n sx={(theme) => ({\n backgroundColor: alpha(theme.palette.primary.main, 0.14),\n border: `1px solid ${alpha(theme.palette.primary.main, 0.22)}`,\n borderRadius: 1,\n color: theme.palette.primary.dark,\n fontWeight: 600,\n mr: 0.5,\n '&:hover': {\n backgroundColor: alpha(theme.palette.primary.main, 0.2),\n },\n })}\n />,\n ]\n : []),\n ];\n }}\n />\n <Popper\n anchorEl={hiddenChipAnchorEl}\n open={Boolean(hiddenChipAnchorEl) && hiddenSelectedOptionCount > 0}\n placement=\"bottom-start\"\n sx={{ zIndex: (theme) => theme.zIndex.modal }}\n >\n <ClickAwayListener onClickAway={handleHiddenChipPopperClose}>\n <Paper\n className=\"mt-4\"\n sx={{\n border: (theme) => `1px solid ${alpha(theme.palette.common.black, 0.12)}`,\n display: 'flex',\n flexWrap: 'wrap',\n gap: 0.75,\n maxWidth: 280,\n p: 1,\n }}\n >\n {hiddenSelectedOptions.map((option) => (\n <Chip\n key={option.value}\n label={option.label}\n onDelete={() => handleHiddenChipDelete(option.value)}\n size=\"small\"\n sx={{ borderRadius: 1 }}\n />\n ))}\n </Paper>\n </ClickAwayListener>\n </Popper>\n </>\n );\n }\n\n return (\n <Autocomplete\n className={clsx('min-w-128', className)}\n disabled={disabled}\n filterOptions={disableClientFilter ? (nextOptions) => nextOptions : undefined}\n fullWidth={fullWidth}\n inputValue={autocompleteInputValue}\n loading={loading}\n options={options}\n clearText=\"\"\n closeText=\"\"\n clearIcon={<ClearIcon sx={{ fontSize: SELECTOR_CLEAR_ICON_FONT_SIZE }} />}\n openText=\"\"\n popupIcon={<ArrowDropDownIcon />}\n sx={autocompleteSx}\n value={selectedOption}\n getOptionLabel={(option) => getAutocompleteOptionLabel(option.label)}\n isOptionEqualToValue={(option, selected) => option.value === selected.value}\n loadingText={loadingText ?? t('Common.로딩 중...')}\n noOptionsText={resolvedNoOptionsText}\n onChange={(_event: SyntheticEvent, nextOption) => {\n if (!nextOption || (!disableAllValueItem && isSelectorAllOption(nextOption))) {\n selectSingleValue('');\n return;\n }\n\n selectSingleValue(nextOption.value);\n }}\n onInputChange={(_event, nextInputValue, reason) => {\n onAutocompleteInputChange?.(nextInputValue, reason);\n }}\n slotProps={autocompleteSlotProps}\n renderInput={(params) => (\n <TextField\n {...params}\n {...textFieldProps}\n disabled={disabled}\n error={error}\n fullWidth={fullWidth}\n helperText={helperText}\n label={label}\n placeholder={placeholder}\n required={required}\n slotProps={{\n ...textFieldProps?.slotProps,\n input: {\n ...params.InputProps,\n ...textFieldProps?.slotProps?.input,\n sx: {\n '& .MuiAutocomplete-input, & .MuiInputBase-input': {\n paddingLeft: '11px !important',\n },\n ...((params.InputProps as { sx?: object }).sx ?? {}),\n ...((textFieldProps?.slotProps?.input as { sx?: object } | undefined)?.sx ?? {}),\n },\n endAdornment: (\n <>\n {loading ? <CircularProgress color=\"inherit\" size={16} sx={{ mr: 0.5 }} /> : null}\n {params.InputProps.endAdornment}\n </>\n ),\n },\n }}\n variant={textFieldProps?.variant ?? 'standard'}\n />\n )}\n selectOnFocus\n renderOption={(optionProps, option) => <li {...optionProps}>{option.label}</li>}\n />\n );\n};\n"],"names":["MULTIPLE_VISIBLE_CHIP_COUNT","AUTOCOMPLETE_MIN_WIDTH","MULTIPLE_AUTOCOMPLETE_INPUT_MIN_WIDTH","SELECTOR_CLEAR_ICON_FONT_SIZE","getCurrentAutocompleteInputValue","__name","event","fallbackValue","eventTarget","getAutocompleteOptionLabel","label","OwpSelectorAutocomplete","hookResult","props","t","useOwpTranslation","autocompleteInputValue","className","disableAllValueItem","disableClientFilter","disabled","error","fullWidth","helperText","loading","loadingText","multiple","noOptionsText","onAutocompleteInputChange","placeholder","required","textFieldProps","allOption","clearSelection","isAllSelected","resolvedOptions","restoreAllSelection","selectAll","selectedOption","selectedOptions","selectMultipleValues","selectSingleValue","options","filteredSelectedOptions","useMemo","option","isSelectorAllOption","hiddenSelectedOptions","hiddenSelectedOptionCount","hiddenChipAnchorEl","setHiddenChipAnchorEl","useState","autocompleteRootRef","useRef","resolvedNoOptionsText","shouldRestoreAllOnClearRef","autocompleteSlotProps","autocompleteSx","multipleAutocompleteSx","useEffect","formElement","_a","handleFormReset","handleHiddenChipPopperClose","handleHiddenChipSummaryMouseDown","handleHiddenChipSummaryClick","previousAnchorElement","handleHiddenChipDelete","optionValue","handleMultipleRootKeyDown","currentInputValue","jsxs","Fragment","jsx","Autocomplete","clsx","nextOptions","ClearIcon","ArrowDropDownIcon","selected","_event","reason","details","nextInputValue","params","TextField","CircularProgress","optionProps","state","Checkbox","nextSelectedOptions","getItemProps","Box","index","createElement","Chip","theme","alpha","Popper","ClickAwayListener","Paper","nextOption","_c","_b"],"mappings":"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"}
1
+ {"version":3,"file":"OwpSelectorAutocomplete.js","sources":["../../../src/components/OwpSelectorBase/OwpSelectorAutocomplete.tsx"],"sourcesContent":["import { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport {\n Autocomplete,\n Box,\n Checkbox,\n Chip,\n CircularProgress,\n ClickAwayListener,\n Paper,\n Popper,\n TextField,\n} from '@mui/material';\nimport { alpha } from '@mui/material/styles';\nimport clsx from 'clsx';\nimport {\n type KeyboardEvent as ReactKeyboardEvent,\n type MouseEvent as ReactMouseEvent,\n type MutableRefObject,\n type SyntheticEvent,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { OwpSelectorBaseHookResult, OwpSelectorBaseOption, OwpSelectorBaseProps } from './types';\nimport { isSelectorAllOption } from './utils';\n\ninterface OwpSelectorAutocompleteProps {\n hookResult: OwpSelectorBaseHookResult;\n props: OwpSelectorBaseProps;\n}\n\nconst MULTIPLE_VISIBLE_CHIP_COUNT = 2;\nconst AUTOCOMPLETE_MIN_WIDTH = 152;\nconst MULTIPLE_AUTOCOMPLETE_INPUT_MIN_WIDTH = 72;\nconst SELECTOR_CLEAR_ICON_FONT_SIZE = 18.57;\n\ntype SelectorAutocompleteKeyDownEvent = ReactKeyboardEvent<HTMLDivElement> & {\n defaultMuiPrevented?: boolean;\n};\n\n/**\n * 현재 키 이벤트 기준 입력값 반환\n * @param event 키보드 이벤트\n * @param fallbackValue 제어 입력 fallback 값\n */\nconst getCurrentAutocompleteInputValue = (\n event: SelectorAutocompleteKeyDownEvent,\n fallbackValue?: string,\n) => {\n const eventTarget = event.target;\n\n if (eventTarget instanceof HTMLInputElement) {\n return eventTarget.value;\n }\n\n return fallbackValue ?? '';\n};\n\n/**\n * Autocomplete 옵션 라벨 문자열 변환\n * @param label 옵션 라벨\n */\nconst getAutocompleteOptionLabel = (label: OwpSelectorBaseOption['label']) => {\n return typeof label === 'string' || typeof label === 'number' ? `${label}` : '';\n};\n\n/**\n * Autocomplete 기반 공통 선택기\n * @param props Autocomplete 렌더링 props\n */\nexport const OwpSelectorAutocomplete = ({ hookResult, props }: OwpSelectorAutocompleteProps) => {\n const { t } = useOwpTranslation();\n const {\n autocompleteInputValue,\n className,\n disableAllValueItem,\n disableClientFilter,\n disabled,\n error,\n fullWidth,\n helperText,\n label,\n loading,\n loadingText,\n multiple,\n noOptionsText,\n onAutocompleteInputChange,\n placeholder,\n required,\n textFieldProps,\n } = props;\n const {\n allOption,\n clearSelection,\n isAllSelected,\n resolvedOptions,\n restoreAllSelection,\n selectAll,\n selectedOption,\n selectedOptions,\n selectMultipleValues,\n selectSingleValue,\n } = hookResult;\n const options = disableAllValueItem ? resolvedOptions : [allOption, ...resolvedOptions];\n const filteredSelectedOptions = useMemo(\n () => selectedOptions.filter((option) => !isSelectorAllOption(option)),\n [selectedOptions],\n );\n const hiddenSelectedOptions = useMemo(\n () =>\n isAllSelected\n ? []\n : filteredSelectedOptions.slice(MULTIPLE_VISIBLE_CHIP_COUNT),\n [filteredSelectedOptions, isAllSelected],\n );\n const hiddenSelectedOptionCount = hiddenSelectedOptions.length;\n const [hiddenChipAnchorEl, setHiddenChipAnchorEl] = useState<HTMLElement | null>(null);\n const autocompleteRootRef = useRef<HTMLDivElement | null>(null);\n const resolvedNoOptionsText = noOptionsText ?? t('Message.검색 결과 없음');\n const shouldRestoreAllOnClearRef = useRef(\n multiple &&\n !disableAllValueItem &&\n ((props.value ?? props.defaultValue) == null || (props.value ?? props.defaultValue) === ''),\n );\n const autocompleteSlotProps = {\n clearIndicator: {\n className: 'm-0 p-0',\n size: 'small',\n },\n paper: {\n sx: {\n '& .MuiAutocomplete-noOptions': {\n fontSize: 14,\n px: 1,\n py: 1.5,\n whiteSpace: 'nowrap',\n },\n },\n },\n popupIndicator: {\n className: 'm-0 p-0',\n size: 'small',\n },\n } as const;\n const autocompleteSx = {\n minWidth: AUTOCOMPLETE_MIN_WIDTH,\n '& .MuiAutocomplete-endAdornment': {\n '& .MuiAutocomplete-clearIndicator + .MuiAutocomplete-popupIndicator': {\n ml: 0,\n },\n '& .MuiIconButton-root': {\n m: 0,\n p: 0,\n },\n '& > :not(style) + :not(style)': {\n ml: 0,\n },\n alignItems: 'center',\n gap: 0,\n right: 0,\n },\n } as const;\n const multipleAutocompleteSx = {\n ...autocompleteSx,\n '& .MuiAutocomplete-inputRoot .MuiAutocomplete-input': {\n flexBasis: MULTIPLE_AUTOCOMPLETE_INPUT_MIN_WIDTH,\n minWidth: MULTIPLE_AUTOCOMPLETE_INPUT_MIN_WIDTH,\n },\n } as const;\n\n useEffect(() => {\n if (!hiddenSelectedOptionCount) {\n setHiddenChipAnchorEl(null);\n }\n }, [hiddenSelectedOptionCount]);\n\n useEffect(() => {\n if (!shouldRestoreAllOnClearRef.current) {\n return;\n }\n\n const formElement = autocompleteRootRef.current?.closest('form');\n\n if (!formElement) {\n return;\n }\n\n const handleFormReset = () => {\n window.setTimeout(() => {\n restoreAllSelection();\n }, 0);\n };\n\n formElement.addEventListener('reset', handleFormReset);\n\n return () => {\n formElement.removeEventListener('reset', handleFormReset);\n };\n }, [restoreAllSelection]);\n\n const handleHiddenChipPopperClose = () => {\n setHiddenChipAnchorEl(null);\n };\n\n const handleHiddenChipSummaryMouseDown = (event: ReactMouseEvent<HTMLElement>) => {\n event.preventDefault();\n };\n\n const handleHiddenChipSummaryClick = (event: ReactMouseEvent<HTMLElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n setHiddenChipAnchorEl((previousAnchorElement) =>\n previousAnchorElement === event.currentTarget ? null : event.currentTarget,\n );\n };\n\n const handleHiddenChipDelete = (optionValue: string) => {\n selectMultipleValues(\n filteredSelectedOptions\n .filter((option) => option.value !== optionValue)\n .map((option) => option.value),\n );\n };\n\n const handleMultipleRootKeyDown = (event: SelectorAutocompleteKeyDownEvent) => {\n const currentInputValue = getCurrentAutocompleteInputValue(event, autocompleteInputValue);\n\n if (\n (isAllSelected || hiddenSelectedOptionCount > 0) &&\n currentInputValue === '' &&\n (event.key === 'Backspace' || event.key === 'Delete')\n ) {\n event.defaultMuiPrevented = true;\n event.preventDefault();\n event.stopPropagation();\n }\n\n textFieldProps?.onKeyDown?.(event as Parameters<NonNullable<typeof textFieldProps.onKeyDown>>[0]);\n };\n\n if (multiple) {\n return (\n <>\n <Autocomplete\n ref={autocompleteRootRef as MutableRefObject<HTMLDivElement | null>}\n className={clsx('min-w-128', className)}\n disableCloseOnSelect\n disabled={disabled}\n filterOptions={disableClientFilter ? (nextOptions) => nextOptions : undefined}\n fullWidth={fullWidth}\n inputValue={autocompleteInputValue}\n loading={loading}\n multiple\n options={options}\n clearText=\"\"\n closeText=\"\"\n clearIcon={<ClearIcon sx={{ fontSize: SELECTOR_CLEAR_ICON_FONT_SIZE }} />}\n openText=\"\"\n popupIcon={<ArrowDropDownIcon />}\n sx={multipleAutocompleteSx}\n value={selectedOptions}\n getOptionLabel={(option) => getAutocompleteOptionLabel(option.label)}\n isOptionEqualToValue={(option, selected) => option.value === selected.value}\n loadingText={loadingText ?? t('Common.로딩 중...')}\n noOptionsText={resolvedNoOptionsText}\n onChange={(\n _event: SyntheticEvent,\n nextOptions: OwpSelectorBaseOption[],\n reason: string,\n details,\n ) => {\n const currentInputValue =\n _event.type === 'keydown'\n ? getCurrentAutocompleteInputValue(\n _event as SelectorAutocompleteKeyDownEvent,\n autocompleteInputValue,\n )\n : autocompleteInputValue ?? '';\n\n if (\n reason === 'removeOption' &&\n _event.type === 'keydown' &&\n currentInputValue === '' &&\n (isAllSelected || hiddenSelectedOptionCount > 0)\n ) {\n _event.preventDefault();\n _event.stopPropagation();\n return;\n }\n\n if (reason === 'clear') {\n if (shouldRestoreAllOnClearRef.current) {\n selectAll();\n return;\n }\n\n clearSelection();\n return;\n }\n\n if (!disableAllValueItem && details?.option && isSelectorAllOption(details.option)) {\n if (isAllSelected) {\n clearSelection();\n return;\n }\n\n selectAll();\n return;\n }\n\n selectMultipleValues(\n nextOptions.filter((option) => !isSelectorAllOption(option)).map((option) => option.value),\n );\n }}\n onInputChange={(_event, nextInputValue, reason) => {\n onAutocompleteInputChange?.(nextInputValue, reason);\n }}\n onKeyDown={handleMultipleRootKeyDown}\n slotProps={autocompleteSlotProps}\n renderInput={(params) => (\n <TextField\n {...params}\n {...textFieldProps}\n disabled={disabled}\n error={error}\n fullWidth={fullWidth}\n helperText={helperText}\n label={label}\n placeholder={placeholder ?? t('Common.검색')}\n required={required}\n slotProps={{\n ...textFieldProps?.slotProps,\n input: {\n ...params.InputProps,\n ...textFieldProps?.slotProps?.input,\n endAdornment: (\n <>\n {loading ? <CircularProgress color=\"inherit\" size={16} sx={{ mr: 0.5 }} /> : null}\n {params.InputProps.endAdornment}\n </>\n ),\n },\n }}\n variant={textFieldProps?.variant ?? 'standard'}\n />\n )}\n renderOption={(optionProps, option, state) => {\n const { key, ...restOptionProps } = optionProps;\n\n return (\n <li key={key} {...restOptionProps}>\n <Checkbox checked={state.selected} className=\"!mr-8 !p-0\" size=\"small\" />\n {option.label}\n </li>\n );\n }}\n renderValue={(nextSelectedOptions, getItemProps) => {\n if (!disableAllValueItem && isAllSelected) {\n return [\n <Box\n component=\"span\"\n key={allOption.value}\n sx={{ color: 'text.primary', fontWeight: 500, mr: 0.5 }}\n >\n {allOption.label}\n </Box>,\n ];\n }\n\n const visibleSelectedOptions = nextSelectedOptions\n .filter((option) => !isSelectorAllOption(option))\n .slice(0, MULTIPLE_VISIBLE_CHIP_COUNT);\n\n return [\n ...visibleSelectedOptions.map((option, index) => {\n const { key, ...itemProps } = getItemProps({ index });\n\n return (\n <Chip\n {...itemProps}\n key={key}\n label={option.label}\n size=\"small\"\n sx={{ borderRadius: 1, mr: 0.5 }}\n />\n );\n }),\n ...(hiddenSelectedOptionCount > 0\n ? [\n <Chip\n key=\"owp-selector-hidden-chip-summary\"\n clickable\n label={`+${hiddenSelectedOptionCount}`}\n onClick={handleHiddenChipSummaryClick}\n onMouseDown={handleHiddenChipSummaryMouseDown}\n size=\"small\"\n sx={(theme) => ({\n backgroundColor: alpha(theme.palette.primary.main, 0.14),\n border: `1px solid ${alpha(theme.palette.primary.main, 0.22)}`,\n borderRadius: 1,\n color: theme.palette.primary.dark,\n fontWeight: 600,\n mr: 0.5,\n '&:hover': {\n backgroundColor: alpha(theme.palette.primary.main, 0.2),\n },\n })}\n />,\n ]\n : []),\n ];\n }}\n />\n <Popper\n anchorEl={hiddenChipAnchorEl}\n open={Boolean(hiddenChipAnchorEl) && hiddenSelectedOptionCount > 0}\n placement=\"bottom-start\"\n sx={{ zIndex: (theme) => theme.zIndex.modal }}\n >\n <ClickAwayListener onClickAway={handleHiddenChipPopperClose}>\n <Paper\n className=\"mt-4\"\n sx={{\n border: (theme) => `1px solid ${alpha(theme.palette.common.black, 0.12)}`,\n display: 'flex',\n flexWrap: 'wrap',\n gap: 0.75,\n maxWidth: 280,\n p: 1,\n }}\n >\n {hiddenSelectedOptions.map((option) => (\n <Chip\n key={option.value}\n label={option.label}\n onDelete={() => handleHiddenChipDelete(option.value)}\n size=\"small\"\n sx={{ borderRadius: 1 }}\n />\n ))}\n </Paper>\n </ClickAwayListener>\n </Popper>\n </>\n );\n }\n\n return (\n <Autocomplete\n className={clsx('min-w-128', className)}\n disabled={disabled}\n filterOptions={disableClientFilter ? (nextOptions) => nextOptions : undefined}\n fullWidth={fullWidth}\n inputValue={autocompleteInputValue}\n loading={loading}\n options={options}\n clearText=\"\"\n closeText=\"\"\n clearIcon={<ClearIcon sx={{ fontSize: SELECTOR_CLEAR_ICON_FONT_SIZE }} />}\n openText=\"\"\n popupIcon={<ArrowDropDownIcon />}\n sx={autocompleteSx}\n value={selectedOption}\n getOptionLabel={(option) => getAutocompleteOptionLabel(option.label)}\n isOptionEqualToValue={(option, selected) => option.value === selected.value}\n loadingText={loadingText ?? t('Common.로딩 중...')}\n noOptionsText={resolvedNoOptionsText}\n onChange={(_event: SyntheticEvent, nextOption) => {\n if (!nextOption || (!disableAllValueItem && isSelectorAllOption(nextOption))) {\n selectSingleValue('');\n return;\n }\n\n selectSingleValue(nextOption.value);\n }}\n onInputChange={(_event, nextInputValue, reason) => {\n onAutocompleteInputChange?.(nextInputValue, reason);\n }}\n slotProps={autocompleteSlotProps}\n renderInput={(params) => (\n <TextField\n {...params}\n {...textFieldProps}\n disabled={disabled}\n error={error}\n fullWidth={fullWidth}\n helperText={helperText}\n label={label}\n placeholder={placeholder}\n required={required}\n slotProps={{\n ...textFieldProps?.slotProps,\n input: {\n ...params.InputProps,\n ...textFieldProps?.slotProps?.input,\n sx: {\n '& .MuiAutocomplete-input, & .MuiInputBase-input': {\n paddingLeft: '11px !important',\n },\n ...((params.InputProps as { sx?: object }).sx ?? {}),\n ...((textFieldProps?.slotProps?.input as { sx?: object } | undefined)?.sx ?? {}),\n },\n endAdornment: (\n <>\n {loading ? <CircularProgress color=\"inherit\" size={16} sx={{ mr: 0.5 }} /> : null}\n {params.InputProps.endAdornment}\n </>\n ),\n },\n }}\n variant={textFieldProps?.variant ?? 'standard'}\n />\n )}\n selectOnFocus\n renderOption={(optionProps, option) => {\n const { key, ...restOptionProps } = optionProps;\n\n return (\n <li key={key} {...restOptionProps}>\n {option.label}\n </li>\n );\n }}\n />\n );\n};\n"],"names":["MULTIPLE_VISIBLE_CHIP_COUNT","AUTOCOMPLETE_MIN_WIDTH","MULTIPLE_AUTOCOMPLETE_INPUT_MIN_WIDTH","SELECTOR_CLEAR_ICON_FONT_SIZE","getCurrentAutocompleteInputValue","__name","event","fallbackValue","eventTarget","getAutocompleteOptionLabel","label","OwpSelectorAutocomplete","hookResult","props","t","useOwpTranslation","autocompleteInputValue","className","disableAllValueItem","disableClientFilter","disabled","error","fullWidth","helperText","loading","loadingText","multiple","noOptionsText","onAutocompleteInputChange","placeholder","required","textFieldProps","allOption","clearSelection","isAllSelected","resolvedOptions","restoreAllSelection","selectAll","selectedOption","selectedOptions","selectMultipleValues","selectSingleValue","options","filteredSelectedOptions","useMemo","option","isSelectorAllOption","hiddenSelectedOptions","hiddenSelectedOptionCount","hiddenChipAnchorEl","setHiddenChipAnchorEl","useState","autocompleteRootRef","useRef","resolvedNoOptionsText","shouldRestoreAllOnClearRef","autocompleteSlotProps","autocompleteSx","multipleAutocompleteSx","useEffect","formElement","_a","handleFormReset","handleHiddenChipPopperClose","handleHiddenChipSummaryMouseDown","handleHiddenChipSummaryClick","previousAnchorElement","handleHiddenChipDelete","optionValue","handleMultipleRootKeyDown","currentInputValue","jsxs","Fragment","jsx","Autocomplete","clsx","nextOptions","ClearIcon","ArrowDropDownIcon","selected","_event","reason","details","nextInputValue","params","TextField","CircularProgress","optionProps","state","key","restOptionProps","Checkbox","nextSelectedOptions","getItemProps","Box","index","itemProps","createElement","Chip","theme","alpha","Popper","ClickAwayListener","Paper","nextOption","_c","_b"],"mappings":";;;;;;;;;;;;AAkCA,MAAMA,KAA8B,GAC9BC,KAAyB,KACzBC,KAAwC,IACxCC,KAAgC,OAWhCC,KAAmC,gBAAAC,EAAA,CACvCC,GACAC,MACG;AACH,QAAMC,IAAcF,EAAM;AAE1B,SAAIE,aAAuB,mBAClBA,EAAY,QAGdD,KAAiB;AAC1B,GAXyC,qCAiBnCE,KAA6B,gBAAAJ,EAAA,CAACK,MAC3B,OAAOA,KAAU,YAAY,OAAOA,KAAU,WAAW,GAAGA,CAAK,KAAK,IAD5C,+BAQtBC,KAA0B,gBAAAN,EAAA,CAAC,EAAE,YAAAO,GAAY,OAAAC,QAA0C;AAC9F,QAAM,EAAE,GAAAC,EAAA,IAAMC,GAAA,GACR;AAAA,IACJ,wBAAAC;AAAA,IACA,WAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,OAAAC;AAAA,IACA,WAAAC;AAAA,IACA,YAAAC;AAAA,IACA,OAAAb;AAAA,IACA,SAAAc;AAAA,IACA,aAAAC;AAAA,IACA,UAAAC;AAAA,IACA,eAAAC;AAAA,IACA,2BAAAC;AAAA,IACA,aAAAC;AAAA,IACA,UAAAC;AAAA,IACA,gBAAAC;AAAA,EAAA,IACElB,GACE;AAAA,IACJ,WAAAmB;AAAA,IACA,gBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,WAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,mBAAAC;AAAA,EAAA,IACE7B,GACE8B,IAAUxB,IAAsBiB,IAAkB,CAACH,GAAW,GAAGG,CAAe,GAChFQ,IAA0BC;AAAA,IAC9B,MAAML,EAAgB,OAAO,CAACM,MAAW,CAACC,EAAoBD,CAAM,CAAC;AAAA,IACrE,CAACN,CAAe;AAAA,EAAA,GAEZQ,IAAwBH;AAAA,IAC5B,MACEV,IACI,CAAA,IACAS,EAAwB,MAAM3C,EAA2B;AAAA,IAC/D,CAAC2C,GAAyBT,CAAa;AAAA,EAAA,GAEnCc,IAA4BD,EAAsB,QAClD,CAACE,GAAoBC,CAAqB,IAAIC,GAA6B,IAAI,GAC/EC,IAAsBC,GAA8B,IAAI,GACxDC,IAAwB3B,MAAiBb,EAAE,kBAAkB,GAC7DyC,IAA6BF;AAAA,IACjC3B,KACE,CAACR,OACCL,EAAM,SAASA,EAAM,iBAAiB,SAASA,EAAM,SAASA,EAAM,kBAAkB;AAAA,EAAA,GAEtF2C,IAAwB;AAAA,IAC5B,gBAAgB;AAAA,MACd,WAAW;AAAA,MACX,MAAM;AAAA,IAAA;AAAA,IAER,OAAO;AAAA,MACL,IAAI;AAAA,QACF,gCAAgC;AAAA,UAC9B,UAAU;AAAA,UACV,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,YAAY;AAAA,QAAA;AAAA,MACd;AAAA,IACF;AAAA,IAEF,gBAAgB;AAAA,MACd,WAAW;AAAA,MACX,MAAM;AAAA,IAAA;AAAA,EACR,GAEIC,IAAiB;AAAA,IACrB,UAAUxD;AAAA,IACV,mCAAmC;AAAA,MACjC,uEAAuE;AAAA,QACrE,IAAI;AAAA,MAAA;AAAA,MAEN,yBAAyB;AAAA,QACvB,GAAG;AAAA,QACH,GAAG;AAAA,MAAA;AAAA,MAEL,iCAAiC;AAAA,QAC/B,IAAI;AAAA,MAAA;AAAA,MAEN,YAAY;AAAA,MACZ,KAAK;AAAA,MACL,OAAO;AAAA,IAAA;AAAA,EACT,GAEIyD,KAAyB;AAAA,IAC7B,GAAGD;AAAA,IACH,uDAAuD;AAAA,MACrD,WAAWvD;AAAA,MACX,UAAUA;AAAA,IAAA;AAAA,EACZ;AAGF,EAAAyD,GAAU,MAAM;AACd,IAAKX,KACHE,EAAsB,IAAI;AAAA,EAE9B,GAAG,CAACF,CAAyB,CAAC,GAE9BW,GAAU,MAAM;;AACd,QAAI,CAACJ,EAA2B;AAC9B;AAGF,UAAMK,KAAcC,IAAAT,EAAoB,YAApB,gBAAAS,EAA6B,QAAQ;AAEzD,QAAI,CAACD;AACH;AAGF,UAAME,IAAkB,gBAAAzD,EAAA,MAAM;AAC5B,aAAO,WAAW,MAAM;AACtB,QAAA+B,EAAA;AAAA,MACF,GAAG,CAAC;AAAA,IACN,GAJwB;AAMxB,WAAAwB,EAAY,iBAAiB,SAASE,CAAe,GAE9C,MAAM;AACX,MAAAF,EAAY,oBAAoB,SAASE,CAAe;AAAA,IAC1D;AAAA,EACF,GAAG,CAAC1B,CAAmB,CAAC;AAExB,QAAM2B,KAA8B,gBAAA1D,EAAA,MAAM;AACxC,IAAA6C,EAAsB,IAAI;AAAA,EAC5B,GAFoC,gCAI9Bc,KAAmC,gBAAA3D,EAAA,CAACC,MAAwC;AAChF,IAAAA,EAAM,eAAA;AAAA,EACR,GAFyC,qCAInC2D,KAA+B,gBAAA5D,EAAA,CAACC,MAAwC;AAC5E,IAAAA,EAAM,eAAA,GACNA,EAAM,gBAAA,GAEN4C;AAAA,MAAsB,CAACgB,MACrBA,MAA0B5D,EAAM,gBAAgB,OAAOA,EAAM;AAAA,IAAA;AAAA,EAEjE,GAPqC,iCAS/B6D,KAAyB,gBAAA9D,EAAA,CAAC+D,MAAwB;AACtD,IAAA5B;AAAA,MACEG,EACG,OAAO,CAACE,MAAWA,EAAO,UAAUuB,CAAW,EAC/C,IAAI,CAACvB,MAAWA,EAAO,KAAK;AAAA,IAAA;AAAA,EAEnC,GAN+B,2BAQzBwB,KAA4B,gBAAAhE,EAAA,CAACC,MAA4C;;AAC7E,UAAMgE,IAAoBlE,GAAiCE,GAAOU,CAAsB;AAExF,KACGkB,KAAiBc,IAA4B,MAC9CsB,MAAsB,OACrBhE,EAAM,QAAQ,eAAeA,EAAM,QAAQ,cAE5CA,EAAM,sBAAsB,IAC5BA,EAAM,eAAA,GACNA,EAAM,gBAAA,KAGRuD,IAAA9B,KAAA,gBAAAA,EAAgB,cAAhB,QAAA8B,EAAA,KAAA9B,GAA4BzB;AAAA,EAC9B,GAdkC;AAgBlC,SAAIoB,IAEA,gBAAA6C,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,KAAKtB;AAAA,QACL,WAAWuB,GAAK,aAAa1D,CAAS;AAAA,QACtC,sBAAoB;AAAA,QACpB,UAAAG;AAAA,QACA,eAAeD,IAAsB,CAACyD,MAAgBA,IAAc;AAAA,QACpE,WAAAtD;AAAA,QACA,YAAYN;AAAA,QACZ,SAAAQ;AAAA,QACA,UAAQ;AAAA,QACR,SAAAkB;AAAA,QACA,WAAU;AAAA,QACV,WAAU;AAAA,QACV,WAAW,gBAAA+B,EAACI,GAAA,EAAU,IAAI,EAAE,UAAU1E,MAAiC;AAAA,QACvE,UAAS;AAAA,QACT,6BAAY2E,GAAA,EAAkB;AAAA,QAC9B,IAAIpB;AAAA,QACJ,OAAOnB;AAAA,QACP,gBAAgB,gBAAAlC,EAAA,CAACwC,MAAWpC,GAA2BoC,EAAO,KAAK,GAAnD;AAAA,QAChB,sBAAsB,gBAAAxC,EAAA,CAACwC,GAAQkC,MAAalC,EAAO,UAAUkC,EAAS,OAAhD;AAAA,QACtB,aAAatD,KAAeX,EAAE,gBAAgB;AAAA,QAC9C,eAAewC;AAAA,QACf,UAAU,gBAAAjD,EAAA,CACR2E,GACAJ,GACAK,GACAC,MACG;AACH,gBAAMZ,IACJU,EAAO,SAAS,YACZ5E;AAAA,YACE4E;AAAA,YACAhE;AAAA,UAAA,IAEFA,KAA0B;AAEhC,cACEiE,MAAW,kBACXD,EAAO,SAAS,aAChBV,MAAsB,OACrBpC,KAAiBc,IAA4B,IAC9C;AACA,YAAAgC,EAAO,eAAA,GACPA,EAAO,gBAAA;AACP;AAAA,UACF;AAEA,cAAIC,MAAW,SAAS;AACtB,gBAAI1B,EAA2B,SAAS;AACtC,cAAAlB,EAAA;AACA;AAAA,YACF;AAEA,YAAAJ,EAAA;AACA;AAAA,UACF;AAEA,cAAI,CAACf,MAAuBgE,KAAA,QAAAA,EAAS,WAAUpC,EAAoBoC,EAAQ,MAAM,GAAG;AAClF,gBAAIhD,GAAe;AACjB,cAAAD,EAAA;AACA;AAAA,YACF;AAEA,YAAAI,EAAA;AACA;AAAA,UACF;AAEA,UAAAG;AAAA,YACEoC,EAAY,OAAO,CAAC/B,MAAW,CAACC,EAAoBD,CAAM,CAAC,EAAE,IAAI,CAACA,MAAWA,EAAO,KAAK;AAAA,UAAA;AAAA,QAE7F,GAhDU;AAAA,QAiDV,eAAe,gBAAAxC,EAAA,CAAC2E,GAAQG,GAAgBF,MAAW;AACjD,UAAArD,KAAA,QAAAA,EAA4BuD,GAAgBF;AAAA,QAC9C,GAFe;AAAA,QAGf,WAAWZ;AAAA,QACX,WAAWb;AAAA,QACX,aAAa,gBAAAnD,EAAA,CAAC+E;;AACZ,iCAAAX;AAAA,YAACY;AAAA,YAAA;AAAA,cACE,GAAGD;AAAA,cACH,GAAGrD;AAAA,cACJ,UAAAX;AAAA,cACA,OAAAC;AAAA,cACA,WAAAC;AAAA,cACA,YAAAC;AAAA,cACA,OAAAb;AAAA,cACA,aAAamB,KAAef,EAAE,WAAW;AAAA,cACzC,UAAAgB;AAAA,cACA,WAAW;AAAA,gBACT,GAAGC,KAAA,gBAAAA,EAAgB;AAAA,gBACnB,OAAO;AAAA,kBACL,GAAGqD,EAAO;AAAA,kBACV,IAAGvB,IAAA9B,KAAA,gBAAAA,EAAgB,cAAhB,gBAAA8B,EAA2B;AAAA,kBAC9B,cACE,gBAAAU,EAAAC,GAAA,EACG,UAAA;AAAA,oBAAAhD,IAAU,gBAAAiD,EAACa,IAAA,EAAiB,OAAM,WAAU,MAAM,IAAI,IAAI,EAAE,IAAI,IAAA,EAAI,CAAG,IAAK;AAAA,oBAC5EF,EAAO,WAAW;AAAA,kBAAA,EAAA,CACrB;AAAA,gBAAA;AAAA,cAEJ;AAAA,cAEF,UAASrD,KAAA,gBAAAA,EAAgB,YAAW;AAAA,YAAA;AAAA,UAAA;AAAA,WAxB3B;AAAA,QA2Bb,cAAc,gBAAA1B,EAAA,CAACkF,GAAa1C,GAAQ2C,MAAU;AAC5C,gBAAM,EAAE,KAAAC,GAAK,GAAGC,EAAA,IAAoBH;AAEpC,iBACE,gBAAAhB,EAAC,MAAA,EAAc,GAAGmB,GAChB,UAAA;AAAA,YAAA,gBAAAjB,EAACkB,MAAS,SAASH,EAAM,UAAU,WAAU,cAAa,MAAK,SAAQ;AAAA,YACtE3C,EAAO;AAAA,UAAA,EAAA,GAFD4C,CAGT;AAAA,QAEJ,GATc;AAAA,QAUd,aAAa,gBAAApF,EAAA,CAACuF,GAAqBC,MAC7B,CAAC3E,KAAuBgB,IACnB;AAAA,UACL,gBAAAuC;AAAA,YAACqB;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cAEV,IAAI,EAAE,OAAO,gBAAgB,YAAY,KAAK,IAAI,IAAA;AAAA,cAEjD,UAAA9D,EAAU;AAAA,YAAA;AAAA,YAHNA,EAAU;AAAA,UAAA;AAAA,QAIjB,IAQG;AAAA,UACL,GAL6B4D,EAC5B,OAAO,CAAC/C,MAAW,CAACC,EAAoBD,CAAM,CAAC,EAC/C,MAAM,GAAG7C,EAA2B,EAGX,IAAI,CAAC6C,GAAQkD,MAAU;AAC/C,kBAAM,EAAE,KAAAN,GAAK,GAAGO,GAAA,IAAcH,EAAa,EAAE,OAAAE,GAAO;AAEpD,mBACE,gBAAAE;AAAA,cAACC;AAAA,cAAA;AAAA,gBACE,GAAGF;AAAA,gBACJ,KAAAP;AAAA,gBACA,OAAO5C,EAAO;AAAA,gBACd,MAAK;AAAA,gBACL,IAAI,EAAE,cAAc,GAAG,IAAI,IAAA;AAAA,cAAI;AAAA,YAAA;AAAA,UAGrC,CAAC;AAAA,UACD,GAAIG,IAA4B,IAC5B;AAAA,YACE,gBAAAyB;AAAA,cAACyB;AAAA,cAAA;AAAA,gBAEC,WAAS;AAAA,gBACT,OAAO,IAAIlD,CAAyB;AAAA,gBACpC,SAASiB;AAAA,gBACT,aAAaD;AAAA,gBACb,MAAK;AAAA,gBACL,IAAI,gBAAA3D,EAAA,CAAC8F,OAAW;AAAA,kBACd,iBAAiBC,EAAMD,EAAM,QAAQ,QAAQ,MAAM,IAAI;AAAA,kBACvD,QAAQ,aAAaC,EAAMD,EAAM,QAAQ,QAAQ,MAAM,IAAI,CAAC;AAAA,kBAC5D,cAAc;AAAA,kBACd,OAAOA,EAAM,QAAQ,QAAQ;AAAA,kBAC7B,YAAY;AAAA,kBACZ,IAAI;AAAA,kBACJ,WAAW;AAAA,oBACT,iBAAiBC,EAAMD,EAAM,QAAQ,QAAQ,MAAM,GAAG;AAAA,kBAAA;AAAA,gBACxD,IATE;AAAA,cAUJ;AAAA,cAhBI;AAAA,YAAA;AAAA,UAiBN,IAEF,CAAA;AAAA,QAAC,GArDI;AAAA,MAuDb;AAAA,IAAA;AAAA,IAEF,gBAAA1B;AAAA,MAAC4B;AAAA,MAAA;AAAA,QACC,UAAUpD;AAAA,QACV,MAAM,EAAQA,KAAuBD,IAA4B;AAAA,QACjE,WAAU;AAAA,QACV,IAAI,EAAE,QAAQ,gBAAA3C,EAAA,CAAC8F,MAAUA,EAAM,OAAO,OAAxB,UAAwB;AAAA,QAEtC,UAAA,gBAAA1B,EAAC6B,IAAA,EAAkB,aAAavC,IAC9B,UAAA,gBAAAU;AAAA,UAAC8B;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,IAAI;AAAA,cACF,QAAQ,gBAAAlG,EAAA,CAAC8F,MAAU,aAAaC,EAAMD,EAAM,QAAQ,OAAO,OAAO,IAAI,CAAC,IAA/D;AAAA,cACR,SAAS;AAAA,cACT,UAAU;AAAA,cACV,KAAK;AAAA,cACL,UAAU;AAAA,cACV,GAAG;AAAA,YAAA;AAAA,YAGJ,UAAApD,EAAsB,IAAI,CAACF,MAC1B,gBAAA4B;AAAA,cAACyB;AAAA,cAAA;AAAA,gBAEC,OAAOrD,EAAO;AAAA,gBACd,UAAU,gBAAAxC,EAAA,MAAM8D,GAAuBtB,EAAO,KAAK,GAAzC;AAAA,gBACV,MAAK;AAAA,gBACL,IAAI,EAAE,cAAc,EAAA;AAAA,cAAE;AAAA,cAJjBA,EAAO;AAAA,YAAA,CAMf;AAAA,UAAA;AAAA,QAAA,EACH,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,GACF,IAKF,gBAAA4B;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAWC,GAAK,aAAa1D,CAAS;AAAA,MACtC,UAAAG;AAAA,MACA,eAAeD,IAAsB,CAACyD,MAAgBA,IAAc;AAAA,MACpE,WAAAtD;AAAA,MACA,YAAYN;AAAA,MACZ,SAAAQ;AAAA,MACA,SAAAkB;AAAA,MACA,WAAU;AAAA,MACV,WAAU;AAAA,MACV,WAAW,gBAAA+B,EAACI,GAAA,EAAU,IAAI,EAAE,UAAU1E,MAAiC;AAAA,MACvE,UAAS;AAAA,MACT,6BAAY2E,GAAA,EAAkB;AAAA,MAC9B,IAAIrB;AAAA,MACJ,OAAOnB;AAAA,MACP,gBAAgB,gBAAAjC,EAAA,CAACwC,MAAWpC,GAA2BoC,EAAO,KAAK,GAAnD;AAAA,MAChB,sBAAsB,gBAAAxC,EAAA,CAACwC,GAAQkC,MAAalC,EAAO,UAAUkC,EAAS,OAAhD;AAAA,MACtB,aAAatD,KAAeX,EAAE,gBAAgB;AAAA,MAC9C,eAAewC;AAAA,MACf,UAAU,gBAAAjD,EAAA,CAAC2E,GAAwBwB,MAAe;AAChD,YAAI,CAACA,KAAe,CAACtF,KAAuB4B,EAAoB0D,CAAU,GAAI;AAC5E,UAAA/D,EAAkB,EAAE;AACpB;AAAA,QACF;AAEA,QAAAA,EAAkB+D,EAAW,KAAK;AAAA,MACpC,GAPU;AAAA,MAQV,eAAe,gBAAAnG,EAAA,CAAC2E,GAAQG,GAAgBF,MAAW;AACjD,QAAArD,KAAA,QAAAA,EAA4BuD,GAAgBF;AAAA,MAC9C,GAFe;AAAA,MAGf,WAAWzB;AAAA,MACX,aAAa,gBAAAnD,EAAA,CAAC+E;;AACZ,+BAAAX;AAAA,UAACY;AAAA,UAAA;AAAA,YACE,GAAGD;AAAA,YACH,GAAGrD;AAAA,YACJ,UAAAX;AAAA,YACA,OAAAC;AAAA,YACA,WAAAC;AAAA,YACA,YAAAC;AAAA,YACA,OAAAb;AAAA,YACA,aAAAmB;AAAA,YACA,UAAAC;AAAA,YACA,WAAW;AAAA,cACT,GAAGC,KAAA,gBAAAA,EAAgB;AAAA,cACnB,OAAO;AAAA,gBACL,GAAGqD,EAAO;AAAA,gBACV,IAAGvB,IAAA9B,KAAA,gBAAAA,EAAgB,cAAhB,gBAAA8B,EAA2B;AAAA,gBAC9B,IAAI;AAAA,kBACF,mDAAmD;AAAA,oBACjD,aAAa;AAAA,kBAAA;AAAA,kBAEf,GAAKuB,EAAO,WAA+B,MAAM,CAAA;AAAA,kBACjD,KAAKqB,KAAAC,IAAA3E,KAAA,gBAAAA,EAAgB,cAAhB,gBAAA2E,EAA2B,UAA3B,gBAAAD,EAAkE,OAAM,CAAA;AAAA,gBAAC;AAAA,gBAEhF,cACE,gBAAAlC,EAAAC,GAAA,EACG,UAAA;AAAA,kBAAAhD,IAAU,gBAAAiD,EAACa,IAAA,EAAiB,OAAM,WAAU,MAAM,IAAI,IAAI,EAAE,IAAI,IAAA,EAAI,CAAG,IAAK;AAAA,kBAC5EF,EAAO,WAAW;AAAA,gBAAA,EAAA,CACrB;AAAA,cAAA;AAAA,YAEJ;AAAA,YAEF,UAASrD,KAAA,gBAAAA,EAAgB,YAAW;AAAA,UAAA;AAAA,QAAA;AAAA,SA/B3B;AAAA,MAkCb,eAAa;AAAA,MACb,cAAc,gBAAA1B,EAAA,CAACkF,GAAa1C,MAAW;AACrC,cAAM,EAAE,KAAA4C,GAAK,GAAGC,EAAA,IAAoBH;AAEpC,iCACG,MAAA,EAAc,GAAGG,GACf,UAAA7C,EAAO,SADD4C,CAET;AAAA,MAEJ,GARc;AAAA,IAQd;AAAA,EAAA;AAGN,GAxcuC;"}
@@ -1,14 +1,13 @@
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 u = Object.defineProperty;
2
+ var l = (t, e) => u(t, "name", { value: e, configurable: !0 });
3
+ import { jsx as i, jsxs as m } 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 g } from "@emotion/react";
5
+ import { useGetMainTheme as y, useGetToolbarTheme as k } from "../../hooks/useOwpSettings.js";
6
+ import s from "@mui/material/GlobalStyles";
7
+ import { ThemeProvider as v, alpha as n, emphasize as f } from "@mui/material/styles";
8
+ import { useEffect as w } from "react";
9
+ const x = /* @__PURE__ */ i(
10
+ s,
12
11
  {
13
12
  styles: /* @__PURE__ */ l((t) => ({
14
13
  html: {
@@ -37,12 +36,12 @@ const v = typeof window > "u" ? d : y, k = /* @__PURE__ */ n(
37
36
  "&:hover": {}
38
37
  },
39
38
  "a.link, a:not([role=button])[target=_blank]": {
40
- background: i(t.palette.secondary.main, 0.2),
39
+ background: n(t.palette.secondary.main, 0.2),
41
40
  color: "inherit",
42
41
  borderBottom: `1px solid ${t.palette.divider}`,
43
42
  textDecoration: "none",
44
43
  "&:hover": {
45
- background: i(t.palette.secondary.main, 0.3),
44
+ background: n(t.palette.secondary.main, 0.3),
46
45
  textDecoration: "none"
47
46
  }
48
47
  },
@@ -66,44 +65,92 @@ const v = typeof window > "u" ? d : y, k = /* @__PURE__ */ n(
66
65
  }
67
66
  }), "styles")
68
67
  }
69
- );
70
- function x({
68
+ ), C = /* @__PURE__ */ l((t, e, o) => /* @__PURE__ */ i(
69
+ s,
70
+ {
71
+ styles: {
72
+ ":root": {
73
+ "--owp-datepicker-selected-bg": t,
74
+ "--owp-datepicker-selected-color": e,
75
+ "--owp-datepicker-selected-hover-bg": f(t, 0.16),
76
+ "--owp-datepicker-hover-color": o,
77
+ "--owp-datepicker-hover-bg": n(t, 0.14),
78
+ "--owp-datepicker-keyboard-selected-bg": n(t, 0.28),
79
+ "--owp-datepicker-keyboard-selected-hover-bg": n(t, 0.36),
80
+ "--owp-datepicker-keyboard-selected-color": o,
81
+ "--owp-datepicker-range-preview-bg": n(t, 0.48)
82
+ }
83
+ }
84
+ }
85
+ ), "getThemeGlobalStyles");
86
+ function h({
71
87
  children: t,
72
- theme: r,
73
- root: e = !1
88
+ theme: e,
89
+ root: o = !1,
90
+ datePickerSelectedBg: r,
91
+ datePickerSelectedColor: a,
92
+ datePickerHoverColor: d
74
93
  }) {
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: [
94
+ const { mode: p } = e.palette;
95
+ return w(() => {
96
+ o && (document.body.classList.add(p === "light" ? "light" : "dark"), document.body.classList.remove(p === "light" ? "dark" : "light"));
97
+ }, [p, o]), /* @__PURE__ */ m(v, { theme: e, children: [
80
98
  t,
81
- e && k
99
+ C(
100
+ r ?? e.palette.primary.main,
101
+ a ?? e.palette.getContrastText(r ?? e.palette.primary.main),
102
+ d ?? e.palette.text.primary
103
+ ),
104
+ o && x
82
105
  ] });
83
106
  }
84
- l(x, "OwpStyleTheme");
85
- function p({
107
+ l(h, "OwpStyleTheme");
108
+ function c({
86
109
  children: t,
87
- theme: r,
88
- root: e,
89
- cacheProviderProps: o
110
+ theme: e,
111
+ root: o,
112
+ cacheProviderProps: r,
113
+ datePickerSelectedBg: a,
114
+ datePickerSelectedColor: d,
115
+ datePickerHoverColor: p
90
116
  }) {
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;
117
+ const b = /* @__PURE__ */ i(
118
+ h,
119
+ {
120
+ theme: e,
121
+ root: o,
122
+ datePickerSelectedBg: a,
123
+ datePickerSelectedColor: d,
124
+ datePickerHoverColor: p,
125
+ children: t
126
+ }
127
+ );
128
+ return r != null && r.value ? /* @__PURE__ */ i(g, { ...r, children: b }) : b;
93
129
  }
94
- l(p, "OwpStyleProviderContent");
95
- function C({
130
+ l(c, "OwpStyleProviderContent");
131
+ function T({
96
132
  children: t,
97
- root: r,
98
- cacheProviderProps: e
133
+ root: e,
134
+ cacheProviderProps: o
99
135
  }) {
100
- const o = s(f);
101
- return /* @__PURE__ */ n(p, { theme: o, root: r, cacheProviderProps: e, children: t });
136
+ const r = y(), a = k(), d = a.palette.background.default;
137
+ return /* @__PURE__ */ i(
138
+ c,
139
+ {
140
+ theme: r,
141
+ root: e,
142
+ cacheProviderProps: o,
143
+ datePickerSelectedBg: d,
144
+ datePickerSelectedColor: a.palette.getContrastText(d),
145
+ datePickerHoverColor: r.palette.text.primary,
146
+ children: t
147
+ }
148
+ );
102
149
  }
103
- l(C, "OwpStyleProviderFallback");
150
+ l(T, "OwpStyleProviderFallback");
104
151
  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 });
152
+ const { children: e, theme: o, root: r, cacheProviderProps: a } = t;
153
+ return o ? /* @__PURE__ */ i(c, { theme: o, root: r, cacheProviderProps: a, children: e }) : /* @__PURE__ */ i(T, { root: r, cacheProviderProps: a, children: e });
107
154
  }
108
155
  l(L, "OwpStyleProvider");
109
156
  export {
@@ -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":"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"}
1
+ {"version":3,"file":"OwpStyleProvider.js","sources":["../../../src/components/OwpStyleProvider/OwpStyleProvider.tsx"],"sourcesContent":["import { CacheProvider } from '@emotion/react';\nimport { useGetMainTheme, useGetToolbarTheme } from '@/hooks/useOwpSettings';\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 = useGetMainTheme() as Theme;\n const toolbarTheme = useGetToolbarTheme() as 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","useGetMainTheme","toolbarTheme","useGetToolbarTheme","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":";;;;;;;;;AAgCA,SAASA,EAAYC,GAAyB;AAC5C,QAAM,EAAE,UAAAC,GAAU,cAAAC,EAAA,IAAiBF,GAC7B,EAAE,UAAAG,EAAA,IAAaC,EAAA,GACf,EAAE,OAAAC,GAAO,WAAAC,EAAA,IAAcC,EAAA,GACvBC,IAAmBH,KAAA,gBAAAA,EAAO,cAC1B,EAAE,iBAAAI,GAAiB,gBAAAC,IAAiB,IAAO,GAAGC,OAClDL,KAAA,gBAAAA,EAAW,iBAAgB,CAAA,GACvBM,IAAeH,KAAA,gBAAAA,EAAkBN,IACjCU,IAA8BC,EAAO,EAAK,GAC1C,CAACC,GAAcC,CAAe,IAAIC,EAAwB,IAAI,GAC9DC,IAA0BR,MAAmB;AAEnD,EAAAS,EAAU,MAAM;AACd,IAAAN,EAA4B,UAAU;AAAA,EACxC,GAAG,CAAA,CAAE;AAEL,QAAMO,IAAoBP,EAA4B,WAAW,CAAC,CAACD;AAEnE,SACE,gBAAAS;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,UACE,gBAAAD;AAAA,QAACE;AAAA,QAAA;AAAA,UACC,UAAApB;AAAA,UACA,cAAAD;AAAA,UACA,uBAAuBS;AAAA,UACvB,kBAAAH;AAAA,UACA,cAAAI;AAAA,UACA,mBAAAQ;AAAA,UACA,qBAAqB,CAACZ,KAAoBY,KAAqBF;AAAA,UAC/D,oBAAoB,gBAAAM,EAAA,MAAM;AACxB,YAAAR,EAAgBb,CAAQ;AAAA,UAC1B,GAFoB;AAAA,QAEpB;AAAA,MAAA;AAAA,MAIJ,UAAA,gBAAAkB;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,cAAAb;AAAA,UACA,WAAWG,MAAiBZ;AAAA,UAC5B,WAAW,gBAAAqB,EAAA,MAAM;AACf,YAAAR,EAAgB,IAAI;AAAA,UACtB,GAFW;AAAA,UAIV,UAAAf;AAAA,QAAA;AAAA,MAAA;AAAA,IACH;AAAA,EAAA;AAGN;AA9CSuB,EAAAzB,GAAA;AAiET,SAASwB,EAAqB;AAAA,EAC5B,UAAApB;AAAA,EACA,cAAAD;AAAA,EACA,uBAAAwB;AAAA,EACA,kBAAAlB;AAAA,EACA,cAAAI;AAAA,EACA,mBAAAQ;AAAA,EACA,qBAAAO;AAAA,EACA,oBAAAC;AACF,GAA8B;AAO5B,SANAT,EAAU,MAAM;AACd,IAAIQ,KACFC,EAAA;AAAA,EAEJ,GAAG,CAACA,GAAoBD,CAAmB,CAAC,GAExCnB,IAEA,gBAAAa;AAAA,IAACb;AAAA,IAAA;AAAA,MACE,GAAGkB;AAAA,MACH,GAAGxB;AAAA,MACJ,UAAAC;AAAA,MACA,qBAAqB;AAAA,IAAA;AAAA,EAAA,IAKvBiB,KAAqBR,IAChB,gBAAAS,EAACQ,GAAA,EAAgB,MAAMjB,EAAA,CAAc,IAI5C,gBAAAS;AAAA,IAACS;AAAA,IAAA;AAAA,MACE,GAAGJ;AAAA,MACH,GAAGxB;AAAA,MACJ,WAAW6B,EAAKL,KAAA,gBAAAA,EAAuB,WAAWxB,KAAA,gBAAAA,EAAc,SAAS;AAAA,IAAA;AAAA,EAAA;AAG/E;AAtCSsB,EAAAD,GAAA;AA+CT,SAASE,EAAiB;AAAA,EACxB,cAAAb;AAAA,EACA,WAAAoB;AAAA,EACA,WAAAC;AAAA,EACA,UAAAhC;AACF,GAA0B;AACxB,SAAI,CAAC+B,KAAa,CAACpB,IACVX,IAIP,gBAAAoB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,cAAW;AAAA,MACX,WAAU;AAAA,MACV,SAASY;AAAA,MACT,WAAW,gBAAAT,EAAA,CAACU,MAAU;AACpB,QAAIA,EAAM,QAAQ,WAAWA,EAAM,QAAQ,QAI3CA,EAAM,eAAA,GACND,EAAA;AAAA,MACF,GAPW;AAAA,MAQX,MAAK;AAAA,MACL,UAAU;AAAA,MAEV,UAAA,gBAAAZ,EAACQ,GAAA,EAAgB,MAAMjB,EAAA,CAAc;AAAA,IAAA;AAAA,EAAA;AAG3C;AA7BSY,EAAAC,GAAA;"}
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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"}
@@ -1,8 +1,8 @@
1
- var C = Object.defineProperty;
2
- var l = (t, o) => C(t, "name", { value: o, configurable: !0 });
3
- import { jsxs as f, jsx as e, Fragment as R } 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 { Typography as F, styled as T, Divider as L } from "@mui/material";
5
- import { clsx as v } from "../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js";
1
+ var F = Object.defineProperty;
2
+ var l = (t, o) => F(t, "name", { value: o, configurable: !0 });
3
+ import { jsxs as f, jsx as e, Fragment as y } from "../../node_modules/.pnpm/@emotion_react@11.14.0_@types_react@19.2.14_react@19.2.4/node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js";
4
+ import { Typography as v, styled as R, Divider as L } from "@mui/material";
5
+ import { clsx as C } from "../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js";
6
6
  import $ from "@mui/material/GlobalStyles";
7
7
  import M from "@mui/material/Paper";
8
8
  import D from "@mui/material/Table";
@@ -11,11 +11,11 @@ import h from "@mui/material/TableCell";
11
11
  import O from "@mui/material/TableContainer";
12
12
  import j from "@mui/material/TableHead";
13
13
  import z from "@mui/material/TableRow";
14
- import { useMemo as x } from "react";
14
+ import { useMemo as u } from "react";
15
15
  import { isNumber as B } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isNumber.js";
16
16
  import { isArray as c } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isArray.js";
17
17
  import { isEmpty as W } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isEmpty.js";
18
- const g = /* @__PURE__ */ l((t) => t ? Object.keys(t).filter((o) => !o.includes("Span")) : [], "getTableColumnKeys"), u = /* @__PURE__ */ l((t, o) => t[`${o}Sx`] ?? {}, "getTableCellSx"), w = /* @__PURE__ */ l((t, o, r) => t[`${o}${r}`] ?? void 0, "getTableCellSpan"), A = /* @__PURE__ */ l((...t) => t.reduce((o, r) => r ? [...o, ...c(r) ? r : [r]] : o, []), "mergeSx"), H = {
18
+ const x = /* @__PURE__ */ l((t) => t ? Object.keys(t).filter((o) => !o.includes("Span")) : [], "getTableColumnKeys"), g = /* @__PURE__ */ l((t, o) => t[`${o}Sx`] ?? {}, "getTableCellSx"), w = /* @__PURE__ */ l((t, o, r) => t[`${o}${r}`] ?? void 0, "getTableCellSpan"), A = /* @__PURE__ */ l((...t) => t.reduce((o, r) => r ? [...o, ...c(r) ? r : [r]] : o, []), "mergeSx"), H = {
19
19
  border: 0,
20
20
  borderRadius: 0,
21
21
  overflow: "visible"
@@ -32,27 +32,27 @@ const g = /* @__PURE__ */ l((t) => t ? Object.keys(t).filter((o) => !o.includes(
32
32
  fontWeight: "normal",
33
33
  lineHeight: "16px"
34
34
  };
35
- function G({ totalCount: t }) {
36
- return /* @__PURE__ */ f(R, { children: [
35
+ function I({ totalCount: t }) {
36
+ return /* @__PURE__ */ f(y, { children: [
37
37
  /* @__PURE__ */ e(L, {}),
38
- /* @__PURE__ */ f(F, { className: "h-[30px] w-full pr-12 my-8", align: "right", children: [
38
+ /* @__PURE__ */ f(v, { className: "h-[30px] w-full pr-12 my-8", align: "right", children: [
39
39
  "전체: ",
40
40
  B(t) ? t.toLocaleString() : 0,
41
41
  " 건"
42
42
  ] })
43
43
  ] });
44
44
  }
45
- l(G, "OwpTableTotalCount");
46
- const I = /* @__PURE__ */ l(({
45
+ l(I, "OwpTableTotalCount");
46
+ const N = /* @__PURE__ */ l(({
47
47
  canBodyFullHeight: t,
48
48
  canUseTreeGridStyle: o,
49
49
  children: r,
50
50
  className: a,
51
51
  containerProps: n,
52
- footerSlot: b,
53
- tableLayout: s,
52
+ footerSlot: s,
53
+ tableLayout: b,
54
54
  ...i
55
- }) => /* @__PURE__ */ f(R, { children: [
55
+ }) => /* @__PURE__ */ f(y, { children: [
56
56
  o && /* @__PURE__ */ e($, { styles: K }),
57
57
  /* @__PURE__ */ f(
58
58
  O,
@@ -67,24 +67,24 @@ const I = /* @__PURE__ */ l(({
67
67
  ),
68
68
  children: [
69
69
  /* @__PURE__ */ e(
70
- N,
70
+ q,
71
71
  {
72
72
  ...i,
73
73
  canBodyFullHeight: t,
74
74
  canUseTreeGridStyle: o,
75
- className: v(
75
+ className: C(
76
76
  t && "h-full",
77
- s === "fixed" ? "table-fixed" : s === "auto" ? "table-auto" : "",
77
+ b === "fixed" ? "table-fixed" : b === "auto" ? "table-auto" : "",
78
78
  a
79
79
  ),
80
80
  children: r
81
81
  }
82
82
  ),
83
- b
83
+ s
84
84
  ]
85
85
  }
86
86
  )
87
- ] }), "StyledTable"), N = T(D, {
87
+ ] }), "StyledTable"), q = R(D, {
88
88
  shouldForwardProp: /* @__PURE__ */ l((t) => t !== "canBodyFullHeight" && t !== "canUseTreeGridStyle", "shouldForwardProp")
89
89
  })(({ theme: t, canBodyFullHeight: o, canUseTreeGridStyle: r }) => ({
90
90
  ...o && {
@@ -108,13 +108,12 @@ const I = /* @__PURE__ */ l(({
108
108
  } : {
109
109
  fontSize: "1.7rem",
110
110
  padding: "7px 10px",
111
- borderLeft: `1px solid ${t.palette.divider}`,
112
- borderRight: `1px solid ${t.palette.divider}`,
113
- "&:first-child": {
114
- borderLeft: "none"
115
- },
116
- "&:last-child": {
117
- borderRight: "none"
111
+ borderLeft: "none",
112
+ borderRight: "none"
113
+ },
114
+ ...!r && {
115
+ "& .MuiTableRow-root > .MuiTableCell-root + .MuiTableCell-root": {
116
+ borderLeft: `1px solid ${t.palette.divider}`
118
117
  }
119
118
  },
120
119
  "& th": r ? {
@@ -153,7 +152,7 @@ const I = /* @__PURE__ */ l(({
153
152
  borderTopRightRadius: "inherit"
154
153
  }
155
154
  }
156
- })), y = T(z)`
155
+ })), T = R(z)`
157
156
  /* &:last-child th,
158
157
  &:last-child td {
159
158
  border-bottom: 0;
@@ -166,44 +165,44 @@ function lo({
166
165
  totalCount: a,
167
166
  ...n
168
167
  }) {
169
- const b = x(
168
+ const s = u(
170
169
  () => c(o) ? o : W(o) ? [] : [o],
171
170
  [o]
172
- ), s = x(
173
- () => g(c(o) ? o[0] : o),
171
+ ), b = u(
172
+ () => x(c(o) ? o[0] : o),
174
173
  [o]
175
174
  );
176
175
  return /* @__PURE__ */ f(
177
- I,
176
+ N,
178
177
  {
179
178
  ...n,
180
- footerSlot: t ? /* @__PURE__ */ e(G, { totalCount: typeof a > "u" ? r.length : a }) : void 0,
181
- className: v(n.tableLayout && "w-full", n.className),
179
+ footerSlot: t ? /* @__PURE__ */ e(I, { totalCount: typeof a > "u" ? r.length : a }) : void 0,
180
+ className: C(n.tableLayout && "w-full", n.className),
182
181
  children: [
183
- /* @__PURE__ */ e(j, { children: b.map((i, p) => /* @__PURE__ */ e(y, { children: g(i).map((d) => /* @__PURE__ */ e(
182
+ /* @__PURE__ */ e(j, { children: s.map((i, d) => /* @__PURE__ */ e(T, { children: x(i).map((p) => /* @__PURE__ */ e(
184
183
  h,
185
184
  {
186
185
  className: "whitespace-pre-wrap",
187
- sx: u(i, d),
188
- colSpan: w(i, d, "ColSpan"),
189
- rowSpan: w(i, d, "RowSpan"),
186
+ sx: g(i, p),
187
+ colSpan: w(i, p, "ColSpan"),
188
+ rowSpan: w(i, p, "RowSpan"),
190
189
  align: "center",
191
- children: i[d]
190
+ children: i[p]
192
191
  },
193
- `table-header-${p}-${d}`
194
- )) }, `table-header-${p}`)) }),
195
- /* @__PURE__ */ e(E, { children: r.map((i, p) => {
196
- const d = i;
197
- return /* @__PURE__ */ e(y, { children: s.map((m) => /* @__PURE__ */ e(
192
+ `table-header-${d}-${p}`
193
+ )) }, `table-header-${d}`)) }),
194
+ /* @__PURE__ */ e(E, { children: r.map((i, d) => {
195
+ const p = i;
196
+ return /* @__PURE__ */ e(T, { children: b.map((m) => /* @__PURE__ */ e(
198
197
  h,
199
198
  {
200
199
  className: "whitespace-pre-wrap h-64",
201
- sx: u(d, m),
200
+ sx: g(p, m),
202
201
  align: "center",
203
- children: d[m]
202
+ children: p[m]
204
203
  },
205
- `table-row-cell-${p}-${m}`
206
- )) }, `table-row-${p}`);
204
+ `table-row-cell-${d}-${m}`
205
+ )) }, `table-row-${d}`);
207
206
  }) })
208
207
  ]
209
208
  }
@@ -212,8 +211,8 @@ function lo({
212
211
  l(lo, "OwpTable");
213
212
  export {
214
213
  lo as OwpTable,
215
- G as OwpTableTotalCount,
216
- I as StyledTable,
217
- y as StyledTableRow
214
+ I as OwpTableTotalCount,
215
+ N as StyledTable,
216
+ T as StyledTableRow
218
217
  };
219
218
  //# sourceMappingURL=OwpTable.js.map