@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,232 +1,266 @@
1
- var ct = Object.defineProperty;
2
- var c = (t, u) => ct(t, "name", { value: u, configurable: !0 });
3
- import { jsx as ut } 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 { OwpSelectorBase as it } from "../OwpSelectorBase/OwpSelectorBase.js";
5
- import { splitSelectorValue as K, mergeSelectorOptions as at } from "../OwpSelectorBase/utils/querySelectorUtils.js";
6
- import { STORAGE_ACCESS_TOKEN_KEY as lt } from "../../constants/localStorageKeys.js";
7
- import { useOwpAppContext as ft } from "../../contexts/OwpAppProvider.js";
8
- import { useGetCurrentUser as dt } from "../../hooks/useCurrentUser.js";
9
- import { createJsonString as mt } from "../../utils/createJsonString.js";
10
- import { getApiLanguageCode as pt } from "../../utils/language.js";
11
- import { useQuery as C } from "@tanstack/react-query";
12
- import { useState as L, useMemo as j, useEffect as I } from "react";
13
- import { isFunction as gt } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isFunction.js";
14
- import { isArray as bt } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isArray.js";
15
- const Ot = "resultData", U = /* @__PURE__ */ c((t) => typeof t == "string" || typeof t == "number" ? `${t}` : "", "getQuerySelectorOptionLabelText"), wt = /* @__PURE__ */ c((t) => ({
16
- jsondata: mt(t)
17
- }), "defaultBuildRequestQuery"), St = /* @__PURE__ */ c((t, u, a, m) => {
18
- const b = new URL(t.endsWith("/") ? t : `${t}/`), r = new URL(u.startsWith("/") ? u.slice(1) : u, b);
19
- return Object.entries(a).forEach(([f, d]) => {
20
- d != null && r.searchParams.set(f, typeof d == "string" ? d : JSON.stringify(d));
21
- }), m && r.searchParams.set("TOKEN", m), r.searchParams.set("i18nextLng", pt()), r.toString();
22
- }, "createQuerySelectorRequestUrl"), Qt = /* @__PURE__ */ c((t, u) => {
1
+ var gt = Object.defineProperty;
2
+ var s = (t, e) => gt(t, "name", { value: e, configurable: !0 });
3
+ import { jsx as Ot } 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 { OwpSelectorBase as bt } from "../OwpSelectorBase/OwpSelectorBase.js";
5
+ import { splitSelectorValue as D, mergeSelectorOptions as St } from "../OwpSelectorBase/utils/querySelectorUtils.js";
6
+ import { STORAGE_ACCESS_TOKEN_KEY as Qt } from "../../constants/localStorageKeys.js";
7
+ import { useOwpAppContext as ht } from "../../contexts/OwpAppProvider.js";
8
+ import { useGetCurrentUser as wt } from "../../hooks/useCurrentUser.js";
9
+ import { createJsonString as Et } from "../../utils/createJsonString.js";
10
+ import { getApiLanguageCode as Lt } from "../../utils/language.js";
11
+ import { useQuery as J } from "@tanstack/react-query";
12
+ import { useState as C, useMemo as j, useEffect as T } from "react";
13
+ import { isArray as st } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isArray.js";
14
+ import { isPlainObject as It } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.js";
15
+ import { isFunction as ct } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isFunction.js";
16
+ const Bt = "resultData", P = /* @__PURE__ */ s((t) => typeof t == "string" || typeof t == "number" ? `${t}` : "", "getQuerySelectorOptionLabelText"), Ct = /* @__PURE__ */ s((t) => ({
17
+ jsondata: Et(t)
18
+ }), "defaultBuildRequestQuery"), rt = /* @__PURE__ */ s((t, e) => e != null && e.length ? [...t, e] : t, "appendQuerySelectorQueryKeyDeps"), z = /* @__PURE__ */ s((t) => {
19
+ if (t instanceof Date)
20
+ return t.toJSON();
21
+ if (typeof t == "bigint")
22
+ return t.toString();
23
+ if (st(t))
24
+ return t.map((e) => z(e));
25
+ if (It(t))
26
+ return Object.keys(t).sort().reduce((e, i) => {
27
+ const d = z(t[i]);
28
+ return d === void 0 || (e[i] = d), e;
29
+ }, {});
30
+ if (!(ct(t) || typeof t == "symbol"))
31
+ return t;
32
+ }, "normalizeQuerySelectorKeyValue"), jt = /* @__PURE__ */ s((t) => JSON.stringify(z(t)), "createQuerySelectorScopeKey"), Tt = /* @__PURE__ */ s((t, e, i, d) => {
33
+ const S = new URL(t.endsWith("/") ? t : `${t}/`), c = new URL(e.startsWith("/") ? e.slice(1) : e, S);
34
+ return Object.entries(i).forEach(([f, m]) => {
35
+ m != null && c.searchParams.set(f, typeof m == "string" ? m : JSON.stringify(m));
36
+ }), d && c.searchParams.set("TOKEN", d), c.searchParams.set("i18nextLng", Lt()), c.toString();
37
+ }, "createQuerySelectorRequestUrl"), $t = /* @__PURE__ */ s((t, e) => {
23
38
  if (!t || typeof t != "object")
24
39
  return [];
25
- const a = t[u];
26
- return bt(a) ? a : [];
27
- }, "getQuerySelectorResponseList"), ht = /* @__PURE__ */ c((t, u, a) => `${(a ? a(t) : `${(t == null ? void 0 : t[u ?? ""]) ?? ""}`) ?? ""}`.trim(), "resolveQuerySelectorValue"), Et = /* @__PURE__ */ c((t, u, a) => `${(a ? a(t) : `${(t == null ? void 0 : t[u ?? ""]) ?? ""}`) ?? ""}`.trim(), "resolveQuerySelectorLabel"), Lt = /* @__PURE__ */ c((t, u, a, m, b) => t.map((r) => {
28
- const f = ht(r, u, m);
40
+ const i = t[e];
41
+ return st(i) ? i : [];
42
+ }, "getQuerySelectorResponseList"), Vt = /* @__PURE__ */ s((t, e, i) => `${(i ? i(t) : `${(t == null ? void 0 : t[e ?? ""]) ?? ""}`) ?? ""}`.trim(), "resolveQuerySelectorValue"), Mt = /* @__PURE__ */ s((t, e, i) => `${(i ? i(t) : `${(t == null ? void 0 : t[e ?? ""]) ?? ""}`) ?? ""}`.trim(), "resolveQuerySelectorLabel"), _t = /* @__PURE__ */ s((t, e, i, d, S) => t.map((c) => {
43
+ const f = Vt(c, e, d);
29
44
  return f ? {
30
- label: Et(r, a, b),
31
- raw: r,
45
+ label: Mt(c, i, S),
46
+ raw: c,
32
47
  value: f
33
48
  } : null;
34
- }).filter((r) => r != null), "mapQuerySelectorOptions"), Nt = /* @__PURE__ */ c(({
49
+ }).filter((c) => c != null), "mapQuerySelectorOptions"), Zt = /* @__PURE__ */ s(({
35
50
  apiUrl: t,
36
- asyncSearch: u,
37
- buildRequestQuery: a = wt,
38
- disableAllValueItem: m,
39
- filterOptions: b,
40
- multiple: r,
51
+ asyncSearch: e,
52
+ buildRequestQuery: i = Ct,
53
+ disableAllValueItem: d,
54
+ filterOptions: S,
55
+ multiple: c,
41
56
  query: f,
42
- responseListKey: d = Ot,
43
- selectorType: z = "select",
44
- value: g,
45
- valueKey: Q,
46
- valueResolver: P,
47
- labelKey: h,
48
- labelResolver: v,
49
- onChange: M,
50
- defaultValue: y,
51
- textFieldProps: O,
52
- ...tt
57
+ queryKeyDeps: m,
58
+ responseListKey: Q = Bt,
59
+ selectorType: q = "select",
60
+ value: O,
61
+ valueKey: h,
62
+ valueResolver: it,
63
+ labelKey: w,
64
+ labelResolver: ut,
65
+ onChange: k,
66
+ defaultValue: $,
67
+ textFieldProps: E,
68
+ ...at
53
69
  }) => {
54
- const { env: _ } = ft(), V = dt(), E = `${(_ == null ? void 0 : _.apiBaseUrl) ?? ""}`.trim(), et = `${(V == null ? void 0 : V.token) ?? localStorage.getItem(lt) ?? ""}`.trim(), o = z === "autocomplete" ? u : void 0, s = o != null, H = s ? !0 : m, ot = (o == null ? void 0 : o.minLength) ?? 1, X = (o == null ? void 0 : o.debounceMs) ?? 300, [R, D] = L(g ?? y ?? ""), [nt, p] = L(""), [Z, B] = L(""), [N, q] = L(""), [A, rt] = L({}), w = j(() => K(R), [R]), k = s && N.trim().length >= ot;
55
- I(() => {
56
- g !== void 0 && D(g);
57
- }, [g]), I(() => {
58
- g === void 0 && D(y ?? "");
59
- }, [y, g]), I(() => {
60
- if (!s)
70
+ const { env: G } = ht(), W = wt(), B = `${(G == null ? void 0 : G.apiBaseUrl) ?? ""}`.trim(), ft = `${(W == null ? void 0 : W.token) ?? localStorage.getItem(Qt) ?? ""}`.trim(), n = q === "autocomplete" ? e : void 0, u = n != null, v = u ? !0 : d, lt = (n == null ? void 0 : n.minLength) ?? 1, tt = (n == null ? void 0 : n.debounceMs) ?? 300, [Y, x] = C(O ?? $ ?? ""), [dt, p] = C(""), [ot, V] = C(""), [F, M] = C(""), et = m != null && m.length ? z(m) : void 0, b = jt(
71
+ rt(
72
+ [t, f, Q, h, w],
73
+ et
74
+ )
75
+ ), [_, mt] = C(() => ({
76
+ options: {},
77
+ scopeKey: b
78
+ })), nt = j(
79
+ () => _.scopeKey === b ? _.options : {},
80
+ [_.options, _.scopeKey, b]
81
+ ), L = j(() => D(Y), [Y]), H = u && F.trim().length >= lt, N = /* @__PURE__ */ s((...o) => rt(["owp", "query-selector", ...o], et), "createSelectorQueryKey");
82
+ T(() => {
83
+ O !== void 0 && x(O);
84
+ }, [O]), T(() => {
85
+ O === void 0 && x($ ?? "");
86
+ }, [$, O]), T(() => {
87
+ if (!u)
61
88
  return;
62
- const e = window.setTimeout(() => {
63
- q(Z.trim());
64
- }, X);
89
+ const o = window.setTimeout(() => {
90
+ M(ot.trim());
91
+ }, tt);
65
92
  return () => {
66
- window.clearTimeout(e);
93
+ window.clearTimeout(o);
67
94
  };
68
- }, [X, s, Z]);
69
- const T = /* @__PURE__ */ c(async (e) => {
70
- const n = await fetch(
71
- St(E, t, a(e), et)
72
- ), i = await n.json();
73
- if (!n.ok || (i == null ? void 0 : i.resultCode) === "STATUS_0")
74
- throw new Error(`${(i == null ? void 0 : i.resultMessage) ?? "Failed to fetch selector options"}`);
75
- const l = Qt(i, d), F = gt(b) ? b(l) : l;
76
- return Lt(
77
- F,
78
- Q,
95
+ }, [tt, u, ot]);
96
+ const R = /* @__PURE__ */ s(async (o) => {
97
+ const r = await fetch(
98
+ Tt(B, t, i(o), ft)
99
+ ), a = await r.json();
100
+ if (!r.ok || (a == null ? void 0 : a.resultCode) === "STATUS_0")
101
+ throw new Error(`${(a == null ? void 0 : a.resultMessage) ?? "Failed to fetch selector options"}`);
102
+ const l = $t(a, Q), g = ct(S) ? S(l) : l;
103
+ return _t(
104
+ g,
79
105
  h,
80
- P,
81
- v
106
+ w,
107
+ it,
108
+ ut
82
109
  );
83
- }, "fetchOptions"), G = C({
84
- queryKey: ["owp", "query-selector", t, f, d, Q, h],
85
- enabled: !!E && !s,
86
- queryFn: /* @__PURE__ */ c(() => T(f), "queryFn")
87
- }), J = C({
88
- queryKey: [
89
- "owp",
90
- "query-selector",
110
+ }, "fetchOptions"), U = J({
111
+ queryKey: N(t, f, Q, h, w),
112
+ enabled: !!B && !u,
113
+ queryFn: /* @__PURE__ */ s(() => R(f), "queryFn")
114
+ }), X = J({
115
+ queryKey: N(
91
116
  "search",
92
117
  t,
93
118
  f,
94
- N,
95
- d,
119
+ F,
96
120
  Q,
97
- h
98
- ],
99
- enabled: !!E && s && k,
100
- queryFn: /* @__PURE__ */ c(() => T({
121
+ h,
122
+ w
123
+ ),
124
+ enabled: !!B && u && H,
125
+ queryFn: /* @__PURE__ */ s(() => R({
101
126
  ...f,
102
- ...(o == null ? void 0 : o.buildKeywordQuery(N)) ?? {}
127
+ ...(n == null ? void 0 : n.buildKeywordQuery(F)) ?? {}
103
128
  }), "queryFn")
104
- }), W = C({
105
- queryKey: ["owp", "query-selector", "all", t, f, d, Q, h],
106
- enabled: !!E && s && (!!w.length || !!r && !H),
107
- queryFn: /* @__PURE__ */ c(() => {
108
- var e;
109
- return T({
129
+ }), Z = J({
130
+ queryKey: N(
131
+ "all",
132
+ t,
133
+ f,
134
+ Q,
135
+ h,
136
+ w
137
+ ),
138
+ enabled: !!B && u && (!!L.length || !!c && !v),
139
+ queryFn: /* @__PURE__ */ s(() => {
140
+ var o;
141
+ return R({
110
142
  ...f,
111
- ...((e = o == null ? void 0 : o.buildAllQuery) == null ? void 0 : e.call(o)) ?? {}
143
+ ...((o = n == null ? void 0 : n.buildAllQuery) == null ? void 0 : o.call(n)) ?? {}
112
144
  });
113
145
  }, "queryFn")
114
- }), Y = C({
115
- queryKey: [
116
- "owp",
117
- "query-selector",
146
+ }), A = J({
147
+ queryKey: N(
118
148
  "selected",
119
149
  t,
120
- w,
121
- d,
150
+ f,
151
+ L,
122
152
  Q,
123
- h
124
- ],
125
- enabled: !!E && s && !!w.length && !!(o != null && o.buildSelectedQuery),
126
- queryFn: /* @__PURE__ */ c(() => {
127
- var e;
128
- return T({
153
+ h,
154
+ w
155
+ ),
156
+ enabled: !!B && u && !!L.length && !!(n != null && n.buildSelectedQuery),
157
+ queryFn: /* @__PURE__ */ s(() => {
158
+ var o;
159
+ return R({
129
160
  ...f,
130
- ...((e = o == null ? void 0 : o.buildSelectedQuery) == null ? void 0 : e.call(o, w)) ?? {}
161
+ ...((o = n == null ? void 0 : n.buildSelectedQuery) == null ? void 0 : o.call(n, L)) ?? {}
131
162
  });
132
163
  }, "queryFn")
133
- }), x = j(() => s ? k ? J.data ?? [] : [] : G.data ?? [], [
134
- G.data,
135
- s,
136
- J.data,
137
- k
138
- ]), S = j(
139
- () => at(
140
- x,
141
- W.data,
142
- Y.data,
143
- Object.values(A)
164
+ }), K = j(() => u ? H ? X.data ?? [] : [] : U.data ?? [], [
165
+ U.data,
166
+ u,
167
+ X.data,
168
+ H
169
+ ]), I = j(
170
+ () => St(
171
+ K,
172
+ Z.data,
173
+ A.data,
174
+ Object.values(nt)
144
175
  ),
145
- [W.data, A, x, Y.data]
146
- ), $ = j(
176
+ [Z.data, nt, K, A.data]
177
+ ), y = j(
147
178
  () => {
148
- const e = {};
149
- return S.forEach((n) => {
150
- e[n.value] = n;
151
- }), e;
179
+ const o = {};
180
+ return I.forEach((r) => {
181
+ o[r.value] = r;
182
+ }), o;
152
183
  },
153
- [S]
154
- ), st = G.isLoading || J.isLoading || W.isLoading || Y.isLoading;
155
- return I(() => {
156
- S.length && rt((e) => {
157
- const n = { ...e };
158
- let i = !1;
159
- return S.forEach((l) => {
160
- n[l.value] !== l && (n[l.value] = l, i = !0);
161
- }), i ? n : e;
184
+ [I]
185
+ ), pt = U.isLoading || X.isLoading || Z.isLoading || A.isLoading;
186
+ return T(() => {
187
+ I.length && mt((o) => {
188
+ const r = o.scopeKey === b ? o.options : {}, a = { ...r };
189
+ let l = !1;
190
+ return I.forEach((g) => {
191
+ a[g.value] !== g && (a[g.value] = g, l = !0);
192
+ }), !l && o.scopeKey === b ? o : {
193
+ options: l ? a : r,
194
+ scopeKey: b
195
+ };
162
196
  });
163
- }, [S]), I(() => {
164
- var n;
165
- if (!s)
197
+ }, [b, I]), T(() => {
198
+ var r;
199
+ if (!u)
166
200
  return;
167
- if (r) {
201
+ if (c) {
168
202
  p("");
169
203
  return;
170
204
  }
171
- const e = w[0];
172
- if (!e) {
205
+ const o = L[0];
206
+ if (!o) {
173
207
  p("");
174
208
  return;
175
209
  }
176
- p(U(((n = $[e]) == null ? void 0 : n.label) ?? ""));
177
- }, [s, r, $, w]), /* @__PURE__ */ ut(
178
- it,
210
+ p(P(((r = y[o]) == null ? void 0 : r.label) ?? ""));
211
+ }, [u, c, y, L]), /* @__PURE__ */ Ot(
212
+ bt,
179
213
  {
180
- ...tt,
181
- allOptions: S,
214
+ ...at,
215
+ allOptions: I,
182
216
  allValueMode: "joined",
183
- autocompleteInputValue: s ? nt : void 0,
184
- defaultValue: y,
185
- disableAllValueItem: H,
186
- disableClientFilter: s,
187
- loading: st,
188
- multiple: r,
189
- onAutocompleteInputChange: s ? (e, n) => {
190
- n !== "reset" && (r && n !== "input" || (p(e), B(e)));
217
+ autocompleteInputValue: u ? dt : void 0,
218
+ defaultValue: $,
219
+ disableAllValueItem: v,
220
+ disableClientFilter: u,
221
+ loading: pt,
222
+ multiple: c,
223
+ onAutocompleteInputChange: u ? (o, r) => {
224
+ r !== "reset" && (c && r !== "input" || (p(o), V(o)));
191
225
  } : void 0,
192
- onChange: /* @__PURE__ */ c((e) => {
193
- var n;
194
- if (D(e.target.value), s) {
195
- const i = K(e.target.value);
196
- if (r)
197
- p(""), B(""), q("");
226
+ onChange: /* @__PURE__ */ s((o) => {
227
+ var r;
228
+ if (x(o.target.value), u) {
229
+ const a = D(o.target.value);
230
+ if (c)
231
+ p(""), V(""), M("");
198
232
  else {
199
- const l = i[0], F = l ? U(((n = $[l]) == null ? void 0 : n.label) ?? "") : "";
200
- p(F), B(""), q("");
233
+ const l = a[0], g = l ? P(((r = y[l]) == null ? void 0 : r.label) ?? "") : "";
234
+ p(g), V(""), M("");
201
235
  }
202
236
  }
203
- M == null || M(e);
237
+ k == null || k(o);
204
238
  }, "onChange"),
205
- options: x,
206
- selectorType: z,
239
+ options: K,
240
+ selectorType: q,
207
241
  textFieldProps: {
208
- ...O,
209
- onBlur: /* @__PURE__ */ c((e) => {
210
- var n, i;
211
- if (s) {
212
- if (r)
242
+ ...E,
243
+ onBlur: /* @__PURE__ */ s((o) => {
244
+ var r, a;
245
+ if (u) {
246
+ if (c)
213
247
  p("");
214
248
  else {
215
- const l = K(R)[0];
249
+ const l = D(Y)[0];
216
250
  p(
217
- l ? U(((n = $[l]) == null ? void 0 : n.label) ?? "") : ""
251
+ l ? P(((r = y[l]) == null ? void 0 : r.label) ?? "") : ""
218
252
  );
219
253
  }
220
- B(""), q("");
254
+ V(""), M("");
221
255
  }
222
- (i = O == null ? void 0 : O.onBlur) == null || i.call(O, e);
256
+ (a = E == null ? void 0 : E.onBlur) == null || a.call(E, o);
223
257
  }, "onBlur")
224
258
  },
225
- value: g
259
+ value: O
226
260
  }
227
261
  );
228
262
  }, "OwpQuerySelector");
229
263
  export {
230
- Nt as OwpQuerySelector
264
+ Zt as OwpQuerySelector
231
265
  };
232
266
  //# sourceMappingURL=OwpQuerySelector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OwpQuerySelector.js","sources":["../../../src/components/OwpQuerySelector/OwpQuerySelector.tsx"],"sourcesContent":["import { OwpSelectorBase } from '@/components/OwpSelectorBase/OwpSelectorBase';\nimport type { OwpSelectorBaseOption } from '@/components/OwpSelectorBase/types';\nimport { mergeSelectorOptions, splitSelectorValue } from '@/components/OwpSelectorBase/utils';\nimport { STORAGE_ACCESS_TOKEN_KEY } from '@/constants/localStorageKeys';\nimport { useOwpAppContext } from '@/contexts/OwpAppProvider';\nimport { useGetCurrentUser } from '@/hooks/useCurrentUser';\nimport { createJsonString } from '@/utils/createJsonString';\nimport { getApiLanguageCode } from '@/utils/language';\nimport { useQuery } from '@tanstack/react-query';\nimport { isArray, isFunction } from 'es-toolkit/compat';\nimport { useEffect, useMemo, useState } from 'react';\nimport type { OwpQuerySelectorProps } from './types';\n\nconst DEFAULT_RESPONSE_LIST_KEY = 'resultData';\n\n/**\n * 선택 옵션 라벨 문자열 변환\n * @param label 선택 옵션 라벨\n */\nconst getQuerySelectorOptionLabelText = (label: OwpSelectorBaseOption['label']) => {\n return typeof label === 'string' || typeof label === 'number' ? `${label}` : '';\n};\n\n/**\n * 요청 query 객체 구성\n * @param query 원본 query\n */\nconst defaultBuildRequestQuery = (query: Record<string, unknown>) => {\n return {\n jsondata: createJsonString(query),\n };\n};\n\n/**\n * API 요청 URL 생성\n * @param apiBaseUrl API base URL\n * @param apiUrl API path\n * @param requestQuery 요청 query\n * @param accessToken 접근 토큰\n */\nconst createQuerySelectorRequestUrl = (\n apiBaseUrl: string,\n apiUrl: string,\n requestQuery: Record<string, unknown>,\n accessToken: string,\n) => {\n const baseUrl = new URL(apiBaseUrl.endsWith('/') ? apiBaseUrl : `${apiBaseUrl}/`);\n const requestUrl = new URL(apiUrl.startsWith('/') ? apiUrl.slice(1) : apiUrl, baseUrl);\n\n Object.entries(requestQuery).forEach(([key, value]) => {\n if (value == null) {\n return;\n }\n\n requestUrl.searchParams.set(key, typeof value === 'string' ? value : JSON.stringify(value));\n });\n\n if (accessToken) {\n requestUrl.searchParams.set('TOKEN', accessToken);\n }\n\n requestUrl.searchParams.set('i18nextLng', getApiLanguageCode());\n\n return requestUrl.toString();\n};\n\n/**\n * 원격 선택기 응답 목록 정규화\n * @param data 응답 데이터\n * @param responseListKey 목록 키\n */\nconst getQuerySelectorResponseList = (data: unknown, responseListKey: string) => {\n if (!data || typeof data !== 'object') {\n return [];\n }\n\n const responseList = (data as Record<string, unknown>)[responseListKey];\n\n return isArray(responseList) ? (responseList as Record<string, unknown>[]) : [];\n};\n\n/**\n * 원격 아이템 value 계산\n * @param item 응답 아이템\n * @param valueKey value key\n * @param valueResolver value resolver\n */\nconst resolveQuerySelectorValue = (\n item: Record<string, unknown>,\n valueKey?: string,\n valueResolver?: (item: Record<string, unknown>) => string,\n) => {\n const value = valueResolver ? valueResolver(item) : `${item?.[valueKey ?? ''] ?? ''}`;\n\n return `${value ?? ''}`.trim();\n};\n\n/**\n * 원격 아이템 label 계산\n * @param item 응답 아이템\n * @param labelKey label key\n * @param labelResolver label resolver\n */\nconst resolveQuerySelectorLabel = (\n item: Record<string, unknown>,\n labelKey?: string,\n labelResolver?: (item: Record<string, unknown>) => string,\n) => {\n const label = labelResolver ? labelResolver(item) : `${item?.[labelKey ?? ''] ?? ''}`;\n\n return `${label ?? ''}`.trim();\n};\n\n/**\n * 원격 응답 데이터를 선택 옵션으로 변환\n * @param items 응답 아이템 목록\n * @param valueKey value key\n * @param labelKey label key\n * @param valueResolver value resolver\n * @param labelResolver label resolver\n */\nconst mapQuerySelectorOptions = (\n items: Record<string, unknown>[],\n valueKey?: string,\n labelKey?: string,\n valueResolver?: (item: Record<string, unknown>) => string,\n labelResolver?: (item: Record<string, unknown>) => string,\n) => {\n return items\n .map((item) => {\n const value = resolveQuerySelectorValue(item, valueKey, valueResolver);\n\n if (!value) {\n return null;\n }\n\n return {\n label: resolveQuerySelectorLabel(item, labelKey, labelResolver),\n raw: item,\n value,\n } as OwpSelectorBaseOption<Record<string, unknown>>;\n })\n .filter((option): option is OwpSelectorBaseOption<Record<string, unknown>> => option != null);\n};\n\n/**\n * 원격 조회형 공통 선택기\n * @param props 원격 선택기 props\n */\nexport const OwpQuerySelector = ({\n apiUrl,\n asyncSearch,\n buildRequestQuery = defaultBuildRequestQuery,\n disableAllValueItem,\n filterOptions,\n multiple,\n query,\n responseListKey = DEFAULT_RESPONSE_LIST_KEY,\n selectorType = 'select',\n value,\n valueKey,\n valueResolver,\n labelKey,\n labelResolver,\n onChange,\n defaultValue,\n textFieldProps,\n ...selectorBaseProps\n}: OwpQuerySelectorProps) => {\n const { env } = useOwpAppContext();\n const currentUser = useGetCurrentUser();\n const apiBaseUrl = `${env?.apiBaseUrl ?? ''}`.trim();\n const accessToken = `${currentUser?.token ?? localStorage.getItem(STORAGE_ACCESS_TOKEN_KEY) ?? ''}`.trim();\n const resolvedAsyncSearch = selectorType === 'autocomplete' ? asyncSearch : undefined;\n const isAsyncSearchEnabled = resolvedAsyncSearch != null;\n const resolvedDisableAllValueItem = isAsyncSearchEnabled ? true : disableAllValueItem;\n const minLength = resolvedAsyncSearch?.minLength ?? 1;\n const debounceMs = resolvedAsyncSearch?.debounceMs ?? 300;\n const [currentSelectionValue, setCurrentSelectionValue] = useState(value ?? defaultValue ?? '');\n const [autocompleteInputValue, setAutocompleteInputValue] = useState('');\n const [searchKeyword, setSearchKeyword] = useState('');\n const [debouncedSearchKeyword, setDebouncedSearchKeyword] = useState('');\n const [cachedOptions, setCachedOptions] = useState<Record<string, OwpSelectorBaseOption<Record<string, unknown>>>>({});\n const selectedIds = useMemo(() => splitSelectorValue(currentSelectionValue), [currentSelectionValue]);\n const shouldFetchSearchOptions = isAsyncSearchEnabled && debouncedSearchKeyword.trim().length >= minLength;\n\n useEffect(() => {\n if (value === undefined) {\n return;\n }\n\n setCurrentSelectionValue(value);\n }, [value]);\n\n useEffect(() => {\n if (value !== undefined) {\n return;\n }\n\n setCurrentSelectionValue(defaultValue ?? '');\n }, [defaultValue, value]);\n\n useEffect(() => {\n if (!isAsyncSearchEnabled) {\n return;\n }\n\n const timer = window.setTimeout(() => {\n setDebouncedSearchKeyword(searchKeyword.trim());\n }, debounceMs);\n\n return () => {\n window.clearTimeout(timer);\n };\n }, [debounceMs, isAsyncSearchEnabled, searchKeyword]);\n\n const fetchOptions = async (nextQuery: Record<string, unknown>) => {\n const response = await fetch(\n createQuerySelectorRequestUrl(apiBaseUrl, apiUrl, buildRequestQuery(nextQuery), accessToken),\n );\n const data = (await response.json()) as Record<string, unknown>;\n\n if (!response.ok || data?.resultCode === 'STATUS_0') {\n throw new Error(`${data?.resultMessage ?? 'Failed to fetch selector options'}`);\n }\n\n const responseList = getQuerySelectorResponseList(data, responseListKey);\n const filteredItems = isFunction(filterOptions) ? filterOptions(responseList) : responseList;\n\n return mapQuerySelectorOptions(\n filteredItems,\n valueKey,\n labelKey,\n valueResolver,\n labelResolver,\n );\n };\n\n const baseOptionsQuery = useQuery({\n queryKey: ['owp', 'query-selector', apiUrl, query, responseListKey, valueKey, labelKey],\n enabled: Boolean(apiBaseUrl) && !isAsyncSearchEnabled,\n queryFn: () => fetchOptions(query),\n });\n const searchOptionsQuery = useQuery({\n queryKey: [\n 'owp',\n 'query-selector',\n 'search',\n apiUrl,\n query,\n debouncedSearchKeyword,\n responseListKey,\n valueKey,\n labelKey,\n ],\n enabled: Boolean(apiBaseUrl) && isAsyncSearchEnabled && shouldFetchSearchOptions,\n queryFn: () =>\n fetchOptions({\n ...query,\n ...(resolvedAsyncSearch?.buildKeywordQuery(debouncedSearchKeyword) ?? {}),\n }),\n });\n const allOptionsQuery = useQuery({\n queryKey: ['owp', 'query-selector', 'all', apiUrl, query, responseListKey, valueKey, labelKey],\n enabled:\n Boolean(apiBaseUrl) &&\n isAsyncSearchEnabled &&\n (Boolean(selectedIds.length) || (Boolean(multiple) && !resolvedDisableAllValueItem)),\n queryFn: () =>\n fetchOptions({\n ...query,\n ...(resolvedAsyncSearch?.buildAllQuery?.() ?? {}),\n }),\n });\n const selectedOptionsQuery = useQuery({\n queryKey: [\n 'owp',\n 'query-selector',\n 'selected',\n apiUrl,\n selectedIds,\n responseListKey,\n valueKey,\n labelKey,\n ],\n enabled: Boolean(apiBaseUrl) && isAsyncSearchEnabled && Boolean(selectedIds.length) && Boolean(resolvedAsyncSearch?.buildSelectedQuery),\n queryFn: () =>\n fetchOptions({\n ...query,\n ...(resolvedAsyncSearch?.buildSelectedQuery?.(selectedIds) ?? {}),\n }),\n });\n\n const currentOptions = useMemo(() => {\n if (isAsyncSearchEnabled) {\n return shouldFetchSearchOptions ? (searchOptionsQuery.data ?? []) : [];\n }\n\n return baseOptionsQuery.data ?? [];\n }, [\n baseOptionsQuery.data,\n isAsyncSearchEnabled,\n searchOptionsQuery.data,\n shouldFetchSearchOptions,\n ]);\n const resolvedAllOptions = useMemo(\n () =>\n mergeSelectorOptions(\n currentOptions,\n allOptionsQuery.data,\n selectedOptionsQuery.data,\n Object.values(cachedOptions),\n ),\n [allOptionsQuery.data, cachedOptions, currentOptions, selectedOptionsQuery.data],\n );\n const optionMap = useMemo(\n () => {\n const nextOptionMap: Record<string, OwpSelectorBaseOption<Record<string, unknown>>> = {};\n\n resolvedAllOptions.forEach((option) => {\n nextOptionMap[option.value] = option;\n });\n\n return nextOptionMap;\n },\n [resolvedAllOptions],\n );\n const isLoading =\n baseOptionsQuery.isLoading ||\n searchOptionsQuery.isLoading ||\n allOptionsQuery.isLoading ||\n selectedOptionsQuery.isLoading;\n\n useEffect(() => {\n if (!resolvedAllOptions.length) {\n return;\n }\n\n setCachedOptions((previousCachedOptions) => {\n const nextCachedOptions = { ...previousCachedOptions };\n let hasChanged = false;\n\n resolvedAllOptions.forEach((option) => {\n if (nextCachedOptions[option.value] === option) {\n return;\n }\n\n nextCachedOptions[option.value] = option;\n hasChanged = true;\n });\n\n return hasChanged ? nextCachedOptions : previousCachedOptions;\n });\n }, [resolvedAllOptions]);\n\n useEffect(() => {\n if (!isAsyncSearchEnabled) {\n return;\n }\n\n if (multiple) {\n setAutocompleteInputValue('');\n return;\n }\n\n const selectedId = selectedIds[0];\n\n if (!selectedId) {\n setAutocompleteInputValue('');\n return;\n }\n\n setAutocompleteInputValue(getQuerySelectorOptionLabelText(optionMap[selectedId]?.label ?? ''));\n }, [isAsyncSearchEnabled, multiple, optionMap, selectedIds]);\n\n return (\n <OwpSelectorBase\n {...selectorBaseProps}\n allOptions={resolvedAllOptions}\n allValueMode=\"joined\"\n autocompleteInputValue={isAsyncSearchEnabled ? autocompleteInputValue : undefined}\n defaultValue={defaultValue}\n disableAllValueItem={resolvedDisableAllValueItem}\n disableClientFilter={isAsyncSearchEnabled}\n loading={isLoading}\n multiple={multiple}\n onAutocompleteInputChange={\n isAsyncSearchEnabled\n ? (nextInputValue, reason) => {\n if (reason === 'reset') {\n return;\n }\n\n if (multiple && reason !== 'input') {\n return;\n }\n\n setAutocompleteInputValue(nextInputValue);\n setSearchKeyword(nextInputValue);\n }\n : undefined\n }\n onChange={(event) => {\n setCurrentSelectionValue(event.target.value);\n\n if (isAsyncSearchEnabled) {\n const nextSelectedIds = splitSelectorValue(event.target.value);\n\n if (multiple) {\n setAutocompleteInputValue('');\n setSearchKeyword('');\n setDebouncedSearchKeyword('');\n } else {\n const nextSelectedId = nextSelectedIds[0];\n const nextLabel = nextSelectedId\n ? getQuerySelectorOptionLabelText(optionMap[nextSelectedId]?.label ?? '')\n : '';\n\n setAutocompleteInputValue(nextLabel);\n setSearchKeyword('');\n setDebouncedSearchKeyword('');\n }\n }\n\n onChange?.(event);\n }}\n options={currentOptions}\n selectorType={selectorType}\n textFieldProps={{\n ...textFieldProps,\n onBlur: (event) => {\n if (isAsyncSearchEnabled) {\n if (multiple) {\n setAutocompleteInputValue('');\n } else {\n const selectedId = splitSelectorValue(currentSelectionValue)[0];\n\n setAutocompleteInputValue(\n selectedId ? getQuerySelectorOptionLabelText(optionMap[selectedId]?.label ?? '') : '',\n );\n }\n\n setSearchKeyword('');\n setDebouncedSearchKeyword('');\n }\n\n textFieldProps?.onBlur?.(event);\n },\n }}\n value={value}\n />\n );\n};\n"],"names":["DEFAULT_RESPONSE_LIST_KEY","getQuerySelectorOptionLabelText","__name","label","defaultBuildRequestQuery","query","createJsonString","createQuerySelectorRequestUrl","apiBaseUrl","apiUrl","requestQuery","accessToken","baseUrl","requestUrl","key","value","getApiLanguageCode","getQuerySelectorResponseList","data","responseListKey","responseList","isArray","resolveQuerySelectorValue","item","valueKey","valueResolver","resolveQuerySelectorLabel","labelKey","labelResolver","mapQuerySelectorOptions","items","option","OwpQuerySelector","asyncSearch","buildRequestQuery","disableAllValueItem","filterOptions","multiple","selectorType","onChange","defaultValue","textFieldProps","selectorBaseProps","env","useOwpAppContext","currentUser","useGetCurrentUser","STORAGE_ACCESS_TOKEN_KEY","resolvedAsyncSearch","isAsyncSearchEnabled","resolvedDisableAllValueItem","minLength","debounceMs","currentSelectionValue","setCurrentSelectionValue","useState","autocompleteInputValue","setAutocompleteInputValue","searchKeyword","setSearchKeyword","debouncedSearchKeyword","setDebouncedSearchKeyword","cachedOptions","setCachedOptions","selectedIds","useMemo","splitSelectorValue","shouldFetchSearchOptions","useEffect","timer","fetchOptions","nextQuery","response","filteredItems","isFunction","baseOptionsQuery","useQuery","searchOptionsQuery","allOptionsQuery","_a","selectedOptionsQuery","currentOptions","resolvedAllOptions","mergeSelectorOptions","optionMap","nextOptionMap","isLoading","previousCachedOptions","nextCachedOptions","hasChanged","selectedId","jsx","OwpSelectorBase","nextInputValue","reason","event","nextSelectedIds","nextSelectedId","nextLabel","_b"],"mappings":"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"}
1
+ {"version":3,"file":"OwpQuerySelector.js","sources":["../../../src/components/OwpQuerySelector/OwpQuerySelector.tsx"],"sourcesContent":["import { OwpSelectorBase } from '@/components/OwpSelectorBase/OwpSelectorBase';\nimport type { OwpSelectorBaseOption } from '@/components/OwpSelectorBase/types';\nimport { mergeSelectorOptions, splitSelectorValue } from '@/components/OwpSelectorBase/utils';\nimport { STORAGE_ACCESS_TOKEN_KEY } from '@/constants/localStorageKeys';\nimport { useOwpAppContext } from '@/contexts/OwpAppProvider';\nimport { useGetCurrentUser } from '@/hooks/useCurrentUser';\nimport { createJsonString } from '@/utils/createJsonString';\nimport { getApiLanguageCode } from '@/utils/language';\nimport { useQuery } from '@tanstack/react-query';\nimport { isArray, isFunction, isPlainObject } from 'es-toolkit/compat';\nimport { useEffect, useMemo, useState } from 'react';\nimport type { OwpQuerySelectorProps } from './types';\n\nconst DEFAULT_RESPONSE_LIST_KEY = 'resultData';\n\n/**\n * 선택 옵션 라벨 문자열 변환\n * @param label 선택 옵션 라벨\n */\nconst getQuerySelectorOptionLabelText = (label: OwpSelectorBaseOption['label']) => {\n return typeof label === 'string' || typeof label === 'number' ? `${label}` : '';\n};\n\n/**\n * 요청 query 객체 구성\n * @param query 원본 query\n */\nconst defaultBuildRequestQuery = (query: Record<string, unknown>) => {\n return {\n jsondata: createJsonString(query),\n };\n};\n\n/**\n * query key 추가 의존성 병합\n * @param queryKey 원본 query key\n * @param queryKeyDeps 추가 의존성\n */\nconst appendQuerySelectorQueryKeyDeps = (\n queryKey: unknown[],\n queryKeyDeps?: readonly unknown[],\n) => {\n return queryKeyDeps?.length ? [...queryKey, queryKeyDeps] : queryKey;\n};\n\n/**\n * query key 직렬화 값 정규화\n * @param value 원본 값\n */\nconst normalizeQuerySelectorKeyValue = (value: unknown): unknown => {\n if (value instanceof Date) {\n return value.toJSON();\n }\n\n if (typeof value === 'bigint') {\n return value.toString();\n }\n\n if (isArray(value)) {\n return value.map((item) => normalizeQuerySelectorKeyValue(item));\n }\n\n if (isPlainObject(value)) {\n return Object.keys(value as Record<string, unknown>)\n .sort()\n .reduce<Record<string, unknown>>((result, key) => {\n const normalizedValue = normalizeQuerySelectorKeyValue((value as Record<string, unknown>)[key]);\n\n if (normalizedValue === undefined) {\n return result;\n }\n\n result[key] = normalizedValue;\n\n return result;\n }, {});\n }\n\n if (isFunction(value) || typeof value === 'symbol') {\n return undefined;\n }\n\n return value;\n};\n\n/**\n * 요청 범위 key 문자열 생성\n * @param value 요청 범위 값\n */\nconst createQuerySelectorScopeKey = (value: unknown) => {\n return JSON.stringify(normalizeQuerySelectorKeyValue(value));\n};\n\n/**\n * API 요청 URL 생성\n * @param apiBaseUrl API base URL\n * @param apiUrl API path\n * @param requestQuery 요청 query\n * @param accessToken 접근 토큰\n */\nconst createQuerySelectorRequestUrl = (\n apiBaseUrl: string,\n apiUrl: string,\n requestQuery: Record<string, unknown>,\n accessToken: string,\n) => {\n const baseUrl = new URL(apiBaseUrl.endsWith('/') ? apiBaseUrl : `${apiBaseUrl}/`);\n const requestUrl = new URL(apiUrl.startsWith('/') ? apiUrl.slice(1) : apiUrl, baseUrl);\n\n Object.entries(requestQuery).forEach(([key, value]) => {\n if (value == null) {\n return;\n }\n\n requestUrl.searchParams.set(key, typeof value === 'string' ? value : JSON.stringify(value));\n });\n\n if (accessToken) {\n requestUrl.searchParams.set('TOKEN', accessToken);\n }\n\n requestUrl.searchParams.set('i18nextLng', getApiLanguageCode());\n\n return requestUrl.toString();\n};\n\n/**\n * 원격 선택기 응답 목록 정규화\n * @param data 응답 데이터\n * @param responseListKey 목록 키\n */\nconst getQuerySelectorResponseList = (data: unknown, responseListKey: string) => {\n if (!data || typeof data !== 'object') {\n return [];\n }\n\n const responseList = (data as Record<string, unknown>)[responseListKey];\n\n return isArray(responseList) ? (responseList as Record<string, unknown>[]) : [];\n};\n\n/**\n * 원격 아이템 value 계산\n * @param item 응답 아이템\n * @param valueKey value key\n * @param valueResolver value resolver\n */\nconst resolveQuerySelectorValue = (\n item: Record<string, unknown>,\n valueKey?: string,\n valueResolver?: (item: Record<string, unknown>) => string,\n) => {\n const value = valueResolver ? valueResolver(item) : `${item?.[valueKey ?? ''] ?? ''}`;\n\n return `${value ?? ''}`.trim();\n};\n\n/**\n * 원격 아이템 label 계산\n * @param item 응답 아이템\n * @param labelKey label key\n * @param labelResolver label resolver\n */\nconst resolveQuerySelectorLabel = (\n item: Record<string, unknown>,\n labelKey?: string,\n labelResolver?: (item: Record<string, unknown>) => string,\n) => {\n const label = labelResolver ? labelResolver(item) : `${item?.[labelKey ?? ''] ?? ''}`;\n\n return `${label ?? ''}`.trim();\n};\n\n/**\n * 원격 응답 데이터를 선택 옵션으로 변환\n * @param items 응답 아이템 목록\n * @param valueKey value key\n * @param labelKey label key\n * @param valueResolver value resolver\n * @param labelResolver label resolver\n */\nconst mapQuerySelectorOptions = (\n items: Record<string, unknown>[],\n valueKey?: string,\n labelKey?: string,\n valueResolver?: (item: Record<string, unknown>) => string,\n labelResolver?: (item: Record<string, unknown>) => string,\n) => {\n return items\n .map((item) => {\n const value = resolveQuerySelectorValue(item, valueKey, valueResolver);\n\n if (!value) {\n return null;\n }\n\n return {\n label: resolveQuerySelectorLabel(item, labelKey, labelResolver),\n raw: item,\n value,\n } as OwpSelectorBaseOption<Record<string, unknown>>;\n })\n .filter((option): option is OwpSelectorBaseOption<Record<string, unknown>> => option != null);\n};\n\n/**\n * 원격 조회형 공통 선택기\n * @param props 원격 선택기 props\n */\nexport const OwpQuerySelector = ({\n apiUrl,\n asyncSearch,\n buildRequestQuery = defaultBuildRequestQuery,\n disableAllValueItem,\n filterOptions,\n multiple,\n query,\n queryKeyDeps,\n responseListKey = DEFAULT_RESPONSE_LIST_KEY,\n selectorType = 'select',\n value,\n valueKey,\n valueResolver,\n labelKey,\n labelResolver,\n onChange,\n defaultValue,\n textFieldProps,\n ...selectorBaseProps\n}: OwpQuerySelectorProps) => {\n const { env } = useOwpAppContext();\n const currentUser = useGetCurrentUser();\n const apiBaseUrl = `${env?.apiBaseUrl ?? ''}`.trim();\n const accessToken = `${currentUser?.token ?? localStorage.getItem(STORAGE_ACCESS_TOKEN_KEY) ?? ''}`.trim();\n const resolvedAsyncSearch = selectorType === 'autocomplete' ? asyncSearch : undefined;\n const isAsyncSearchEnabled = resolvedAsyncSearch != null;\n const resolvedDisableAllValueItem = isAsyncSearchEnabled ? true : disableAllValueItem;\n const minLength = resolvedAsyncSearch?.minLength ?? 1;\n const debounceMs = resolvedAsyncSearch?.debounceMs ?? 300;\n const [currentSelectionValue, setCurrentSelectionValue] = useState(value ?? defaultValue ?? '');\n const [autocompleteInputValue, setAutocompleteInputValue] = useState('');\n const [searchKeyword, setSearchKeyword] = useState('');\n const [debouncedSearchKeyword, setDebouncedSearchKeyword] = useState('');\n const normalizedQueryKeyDeps =\n queryKeyDeps?.length ? (normalizeQuerySelectorKeyValue(queryKeyDeps) as readonly unknown[]) : undefined;\n const optionsCacheScopeKey = createQuerySelectorScopeKey(\n appendQuerySelectorQueryKeyDeps(\n [apiUrl, query, responseListKey, valueKey, labelKey],\n normalizedQueryKeyDeps,\n ),\n );\n const [cachedOptionsState, setCachedOptionsState] = useState(() => ({\n options: {} as Record<string, OwpSelectorBaseOption<Record<string, unknown>>>,\n scopeKey: optionsCacheScopeKey,\n }));\n const cachedOptions = useMemo(\n () => (cachedOptionsState.scopeKey === optionsCacheScopeKey ? cachedOptionsState.options : {}),\n [cachedOptionsState.options, cachedOptionsState.scopeKey, optionsCacheScopeKey],\n );\n const selectedIds = useMemo(() => splitSelectorValue(currentSelectionValue), [currentSelectionValue]);\n const shouldFetchSearchOptions = isAsyncSearchEnabled && debouncedSearchKeyword.trim().length >= minLength;\n const createSelectorQueryKey = (...segments: unknown[]) => {\n return appendQuerySelectorQueryKeyDeps(['owp', 'query-selector', ...segments], normalizedQueryKeyDeps);\n };\n\n useEffect(() => {\n if (value === undefined) {\n return;\n }\n\n setCurrentSelectionValue(value);\n }, [value]);\n\n useEffect(() => {\n if (value !== undefined) {\n return;\n }\n\n setCurrentSelectionValue(defaultValue ?? '');\n }, [defaultValue, value]);\n\n useEffect(() => {\n if (!isAsyncSearchEnabled) {\n return;\n }\n\n const timer = window.setTimeout(() => {\n setDebouncedSearchKeyword(searchKeyword.trim());\n }, debounceMs);\n\n return () => {\n window.clearTimeout(timer);\n };\n }, [debounceMs, isAsyncSearchEnabled, searchKeyword]);\n\n const fetchOptions = async (nextQuery: Record<string, unknown>) => {\n const response = await fetch(\n createQuerySelectorRequestUrl(apiBaseUrl, apiUrl, buildRequestQuery(nextQuery), accessToken),\n );\n const data = (await response.json()) as Record<string, unknown>;\n\n if (!response.ok || data?.resultCode === 'STATUS_0') {\n throw new Error(`${data?.resultMessage ?? 'Failed to fetch selector options'}`);\n }\n\n const responseList = getQuerySelectorResponseList(data, responseListKey);\n const filteredItems = isFunction(filterOptions) ? filterOptions(responseList) : responseList;\n\n return mapQuerySelectorOptions(\n filteredItems,\n valueKey,\n labelKey,\n valueResolver,\n labelResolver,\n );\n };\n\n const baseOptionsQuery = useQuery({\n queryKey: createSelectorQueryKey(apiUrl, query, responseListKey, valueKey, labelKey),\n enabled: Boolean(apiBaseUrl) && !isAsyncSearchEnabled,\n queryFn: () => fetchOptions(query),\n });\n const searchOptionsQuery = useQuery({\n queryKey: createSelectorQueryKey(\n 'search',\n apiUrl,\n query,\n debouncedSearchKeyword,\n responseListKey,\n valueKey,\n labelKey,\n ),\n enabled: Boolean(apiBaseUrl) && isAsyncSearchEnabled && shouldFetchSearchOptions,\n queryFn: () =>\n fetchOptions({\n ...query,\n ...(resolvedAsyncSearch?.buildKeywordQuery(debouncedSearchKeyword) ?? {}),\n }),\n });\n const allOptionsQuery = useQuery({\n queryKey: createSelectorQueryKey(\n 'all',\n apiUrl,\n query,\n responseListKey,\n valueKey,\n labelKey,\n ),\n enabled:\n Boolean(apiBaseUrl) &&\n isAsyncSearchEnabled &&\n (Boolean(selectedIds.length) || (Boolean(multiple) && !resolvedDisableAllValueItem)),\n queryFn: () =>\n fetchOptions({\n ...query,\n ...(resolvedAsyncSearch?.buildAllQuery?.() ?? {}),\n }),\n });\n const selectedOptionsQuery = useQuery({\n queryKey: createSelectorQueryKey(\n 'selected',\n apiUrl,\n query,\n selectedIds,\n responseListKey,\n valueKey,\n labelKey,\n ),\n enabled: Boolean(apiBaseUrl) && isAsyncSearchEnabled && Boolean(selectedIds.length) && Boolean(resolvedAsyncSearch?.buildSelectedQuery),\n queryFn: () =>\n fetchOptions({\n ...query,\n ...(resolvedAsyncSearch?.buildSelectedQuery?.(selectedIds) ?? {}),\n }),\n });\n\n const currentOptions = useMemo(() => {\n if (isAsyncSearchEnabled) {\n return shouldFetchSearchOptions ? (searchOptionsQuery.data ?? []) : [];\n }\n\n return baseOptionsQuery.data ?? [];\n }, [\n baseOptionsQuery.data,\n isAsyncSearchEnabled,\n searchOptionsQuery.data,\n shouldFetchSearchOptions,\n ]);\n const resolvedAllOptions = useMemo(\n () =>\n mergeSelectorOptions(\n currentOptions,\n allOptionsQuery.data,\n selectedOptionsQuery.data,\n Object.values(cachedOptions),\n ),\n [allOptionsQuery.data, cachedOptions, currentOptions, selectedOptionsQuery.data],\n );\n const optionMap = useMemo(\n () => {\n const nextOptionMap: Record<string, OwpSelectorBaseOption<Record<string, unknown>>> = {};\n\n resolvedAllOptions.forEach((option) => {\n nextOptionMap[option.value] = option;\n });\n\n return nextOptionMap;\n },\n [resolvedAllOptions],\n );\n const isLoading =\n baseOptionsQuery.isLoading ||\n searchOptionsQuery.isLoading ||\n allOptionsQuery.isLoading ||\n selectedOptionsQuery.isLoading;\n\n useEffect(() => {\n if (!resolvedAllOptions.length) {\n return;\n }\n\n setCachedOptionsState((previousState) => {\n const previousCachedOptions =\n previousState.scopeKey === optionsCacheScopeKey ? previousState.options : {};\n const nextCachedOptions = { ...previousCachedOptions };\n let hasChanged = false;\n\n resolvedAllOptions.forEach((option) => {\n if (nextCachedOptions[option.value] === option) {\n return;\n }\n\n nextCachedOptions[option.value] = option;\n hasChanged = true;\n });\n\n if (!hasChanged && previousState.scopeKey === optionsCacheScopeKey) {\n return previousState;\n }\n\n return {\n options: hasChanged ? nextCachedOptions : previousCachedOptions,\n scopeKey: optionsCacheScopeKey,\n };\n });\n }, [optionsCacheScopeKey, resolvedAllOptions]);\n\n useEffect(() => {\n if (!isAsyncSearchEnabled) {\n return;\n }\n\n if (multiple) {\n setAutocompleteInputValue('');\n return;\n }\n\n const selectedId = selectedIds[0];\n\n if (!selectedId) {\n setAutocompleteInputValue('');\n return;\n }\n\n setAutocompleteInputValue(getQuerySelectorOptionLabelText(optionMap[selectedId]?.label ?? ''));\n }, [isAsyncSearchEnabled, multiple, optionMap, selectedIds]);\n\n return (\n <OwpSelectorBase\n {...selectorBaseProps}\n allOptions={resolvedAllOptions}\n allValueMode=\"joined\"\n autocompleteInputValue={isAsyncSearchEnabled ? autocompleteInputValue : undefined}\n defaultValue={defaultValue}\n disableAllValueItem={resolvedDisableAllValueItem}\n disableClientFilter={isAsyncSearchEnabled}\n loading={isLoading}\n multiple={multiple}\n onAutocompleteInputChange={\n isAsyncSearchEnabled\n ? (nextInputValue, reason) => {\n if (reason === 'reset') {\n return;\n }\n\n if (multiple && reason !== 'input') {\n return;\n }\n\n setAutocompleteInputValue(nextInputValue);\n setSearchKeyword(nextInputValue);\n }\n : undefined\n }\n onChange={(event) => {\n setCurrentSelectionValue(event.target.value);\n\n if (isAsyncSearchEnabled) {\n const nextSelectedIds = splitSelectorValue(event.target.value);\n\n if (multiple) {\n setAutocompleteInputValue('');\n setSearchKeyword('');\n setDebouncedSearchKeyword('');\n } else {\n const nextSelectedId = nextSelectedIds[0];\n const nextLabel = nextSelectedId\n ? getQuerySelectorOptionLabelText(optionMap[nextSelectedId]?.label ?? '')\n : '';\n\n setAutocompleteInputValue(nextLabel);\n setSearchKeyword('');\n setDebouncedSearchKeyword('');\n }\n }\n\n onChange?.(event);\n }}\n options={currentOptions}\n selectorType={selectorType}\n textFieldProps={{\n ...textFieldProps,\n onBlur: (event) => {\n if (isAsyncSearchEnabled) {\n if (multiple) {\n setAutocompleteInputValue('');\n } else {\n const selectedId = splitSelectorValue(currentSelectionValue)[0];\n\n setAutocompleteInputValue(\n selectedId ? getQuerySelectorOptionLabelText(optionMap[selectedId]?.label ?? '') : '',\n );\n }\n\n setSearchKeyword('');\n setDebouncedSearchKeyword('');\n }\n\n textFieldProps?.onBlur?.(event);\n },\n }}\n value={value}\n />\n );\n};\n"],"names":["DEFAULT_RESPONSE_LIST_KEY","getQuerySelectorOptionLabelText","__name","label","defaultBuildRequestQuery","query","createJsonString","appendQuerySelectorQueryKeyDeps","queryKey","queryKeyDeps","normalizeQuerySelectorKeyValue","value","isArray","item","isPlainObject","result","key","normalizedValue","isFunction","createQuerySelectorScopeKey","createQuerySelectorRequestUrl","apiBaseUrl","apiUrl","requestQuery","accessToken","baseUrl","requestUrl","getApiLanguageCode","getQuerySelectorResponseList","data","responseListKey","responseList","resolveQuerySelectorValue","valueKey","valueResolver","resolveQuerySelectorLabel","labelKey","labelResolver","mapQuerySelectorOptions","items","option","OwpQuerySelector","asyncSearch","buildRequestQuery","disableAllValueItem","filterOptions","multiple","selectorType","onChange","defaultValue","textFieldProps","selectorBaseProps","env","useOwpAppContext","currentUser","useGetCurrentUser","STORAGE_ACCESS_TOKEN_KEY","resolvedAsyncSearch","isAsyncSearchEnabled","resolvedDisableAllValueItem","minLength","debounceMs","currentSelectionValue","setCurrentSelectionValue","useState","autocompleteInputValue","setAutocompleteInputValue","searchKeyword","setSearchKeyword","debouncedSearchKeyword","setDebouncedSearchKeyword","normalizedQueryKeyDeps","optionsCacheScopeKey","cachedOptionsState","setCachedOptionsState","cachedOptions","useMemo","selectedIds","splitSelectorValue","shouldFetchSearchOptions","createSelectorQueryKey","segments","useEffect","timer","fetchOptions","nextQuery","response","filteredItems","baseOptionsQuery","useQuery","searchOptionsQuery","allOptionsQuery","_a","selectedOptionsQuery","currentOptions","resolvedAllOptions","mergeSelectorOptions","optionMap","nextOptionMap","isLoading","previousState","previousCachedOptions","nextCachedOptions","hasChanged","selectedId","jsx","OwpSelectorBase","nextInputValue","reason","event","nextSelectedIds","nextSelectedId","nextLabel","_b"],"mappings":"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"}