@owp/core 2.2.6 → 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 (121) 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/index6.js +2 -5
  9. package/dist/_virtual/index6.js.map +1 -1
  10. package/dist/_virtual/index7.js +2 -2
  11. package/dist/components/OwpLayout/OwpLayout.js +29 -30
  12. package/dist/components/OwpLayout/OwpLayout.js.map +1 -1
  13. package/dist/components/OwpScrollbars/OwpScrollbars.js +16 -17
  14. package/dist/components/OwpScrollbars/OwpScrollbars.js.map +1 -1
  15. package/dist/components/OwpStyleProvider/OwpStyleProvider.js +28 -29
  16. package/dist/components/OwpStyleProvider/OwpStyleProvider.js.map +1 -1
  17. package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +80 -74
  18. package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js.map +1 -1
  19. package/dist/contexts/OwpCoreProvider.js +22 -36
  20. package/dist/contexts/OwpCoreProvider.js.map +1 -1
  21. package/dist/contexts/OwpStoreProvider.js +9 -9
  22. package/dist/contexts/OwpStoreProvider.js.map +1 -1
  23. package/dist/hooks/useNavbar.js +24 -0
  24. package/dist/hooks/useNavbar.js.map +1 -0
  25. package/dist/hooks/useOwpSettings.js +21 -0
  26. package/dist/hooks/useOwpSettings.js.map +1 -0
  27. package/dist/hooks.js +75 -62
  28. package/dist/hooks.js.map +1 -1
  29. package/dist/layout/Layout.js +28 -29
  30. package/dist/layout/Layout.js.map +1 -1
  31. package/dist/layout/components/layouts/FooterLayout.js +15 -16
  32. package/dist/layout/components/layouts/FooterLayout.js.map +1 -1
  33. package/dist/layout/components/layouts/NavbarToggleFabLayout.js +21 -18
  34. package/dist/layout/components/layouts/NavbarToggleFabLayout.js.map +1 -1
  35. package/dist/layout/components/layouts/NavbarWrapperLayout.js +20 -21
  36. package/dist/layout/components/layouts/NavbarWrapperLayout.js.map +1 -1
  37. package/dist/layout/components/navbar/NavbarPinToggleButton.js +10 -11
  38. package/dist/layout/components/navbar/NavbarPinToggleButton.js.map +1 -1
  39. package/dist/layout/components/navbar/NavbarToggleButton.js +31 -32
  40. package/dist/layout/components/navbar/NavbarToggleButton.js.map +1 -1
  41. package/dist/layout/components/navbar/style/NavbarStyle.js +36 -37
  42. package/dist/layout/components/navbar/style/NavbarStyle.js.map +1 -1
  43. package/dist/layout/components/navbar/style/NavbarStyleContent.js +29 -30
  44. package/dist/layout/components/navbar/style/NavbarStyleContent.js.map +1 -1
  45. package/dist/layout/components/navigation/Navigation.js +18 -22
  46. package/dist/layout/components/navigation/Navigation.js.map +1 -1
  47. package/dist/layout/components/toggles/NavigationSearchToggle.js +55 -60
  48. package/dist/layout/components/toggles/NavigationSearchToggle.js.map +1 -1
  49. package/dist/layout/components/toggles/NavigationShortcutsToggle.js +44 -49
  50. package/dist/layout/components/toggles/NavigationShortcutsToggle.js.map +1 -1
  51. package/dist/layout/components/toolbar/ToolbarLayout.js +26 -27
  52. package/dist/layout/components/toolbar/ToolbarLayout.js.map +1 -1
  53. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/constants.js +1 -1
  54. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/index.js +1 -1
  55. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE39/index.js +1 -1
  56. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/index.js +1 -1
  57. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/constants.js +1 -1
  58. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/index.js +1 -1
  59. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/GenericBarcode/index.js +1 -1
  60. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/index.js +1 -1
  61. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/MSI/index.js +1 -1
  62. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/codabar/index.js +1 -1
  63. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/pharmacode/index.js +1 -1
  64. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/renderers/index.js +1 -1
  65. package/dist/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js +1 -1
  66. package/dist/node_modules/.pnpm/react-imask@7.6.1_react@19.2.4/node_modules/react-imask/esm/mixin.js +1 -1
  67. 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
  68. package/dist/store/atoms/navbarAtoms.js +84 -0
  69. package/dist/store/atoms/navbarAtoms.js.map +1 -0
  70. package/dist/store/atoms/owpSettingsAtoms.js +140 -0
  71. package/dist/store/atoms/owpSettingsAtoms.js.map +1 -0
  72. package/dist/store/atoms/owpStore.js +29 -0
  73. package/dist/store/atoms/owpStore.js.map +1 -0
  74. package/dist/store.js +44 -39
  75. package/dist/store.js.map +1 -1
  76. package/dist/types/components/OwpPicker/internal/DatePickerInput.d.ts +1 -1
  77. package/dist/types/components/OwpTable/OwpTable.d.ts +1 -1
  78. package/dist/types/components/OwpTabs/OwpTab.d.ts +1 -1
  79. package/dist/types/components/OwpTabs/OwpTabs.d.ts +1 -1
  80. package/dist/types/contexts/OwpCoreProvider.d.ts +2 -2
  81. package/dist/types/contexts/OwpStoreProvider.d.ts +4 -4
  82. package/dist/types/hooks/index.d.ts +2 -1
  83. package/dist/types/hooks/useNavbar.d.ts +19 -0
  84. package/dist/types/hooks/useOwpSettings.d.ts +79 -0
  85. package/dist/types/layout/components/navigation/Navigation.d.ts +6 -2
  86. package/dist/types/layout/components/toggles/NavigationSearchToggle.d.ts +5 -2
  87. package/dist/types/layout/components/toggles/NavigationShortcutsToggle.d.ts +5 -2
  88. package/dist/types/store/atoms/index.d.ts +3 -0
  89. package/dist/types/store/atoms/internal/types.d.ts +29 -0
  90. package/dist/types/store/atoms/navbarAtoms.d.ts +48 -0
  91. package/dist/types/store/atoms/owpSettingsAtoms.d.ts +89 -0
  92. package/dist/types/store/atoms/owpStore.d.ts +13 -0
  93. package/dist/types/store/index.d.ts +1 -3
  94. package/package.json +2 -6
  95. package/dist/hooks/useAppStore.js +0 -8
  96. package/dist/hooks/useAppStore.js.map +0 -1
  97. package/dist/store/generateReducersFromSlices.js +0 -18
  98. package/dist/store/generateReducersFromSlices.js.map +0 -1
  99. package/dist/store/lazyLoadedSlices.js +0 -16
  100. package/dist/store/lazyLoadedSlices.js.map +0 -1
  101. package/dist/store/middleware.js +0 -9
  102. package/dist/store/middleware.js.map +0 -1
  103. package/dist/store/navbarSlice.js +0 -71
  104. package/dist/store/navbarSlice.js.map +0 -1
  105. package/dist/store/navigationSlice.js +0 -46
  106. package/dist/store/navigationSlice.js.map +0 -1
  107. package/dist/store/owpSettingsSlice.js +0 -195
  108. package/dist/store/owpSettingsSlice.js.map +0 -1
  109. package/dist/store/store.js +0 -17
  110. package/dist/store/store.js.map +0 -1
  111. package/dist/store/withSlices.js +0 -27
  112. package/dist/store/withSlices.js.map +0 -1
  113. package/dist/types/hooks/useAppStore.d.ts +0 -7
  114. package/dist/types/store/generateReducersFromSlices.d.ts +0 -6
  115. package/dist/types/store/lazyLoadedSlices.d.ts +0 -9
  116. package/dist/types/store/middleware.d.ts +0 -17
  117. package/dist/types/store/navbarSlice.d.ts +0 -22
  118. package/dist/types/store/navigationSlice.d.ts +0 -93
  119. package/dist/types/store/owpSettingsSlice.d.ts +0 -112
  120. package/dist/types/store/store.d.ts +0 -13
  121. package/dist/types/store/withSlices.d.ts +0 -11
@@ -1,5 +1,5 @@
1
- var r = {};
1
+ var a = {};
2
2
  export {
3
- r as __exports
3
+ a as __exports
4
4
  };
5
5
  //# sourceMappingURL=index11.js.map
@@ -1,5 +1,5 @@
1
- var r = {};
1
+ var a = {};
2
2
  export {
3
- r as __exports
3
+ a as __exports
4
4
  };
5
5
  //# sourceMappingURL=index12.js.map
@@ -1,5 +1,5 @@
1
- var a = {};
1
+ var r = {};
2
2
  export {
3
- a as __exports
3
+ r as __exports
4
4
  };
5
5
  //# sourceMappingURL=index13.js.map
@@ -1,5 +1,5 @@
1
- var a = {};
1
+ var e = {};
2
2
  export {
3
- a as __exports
3
+ e as __exports
4
4
  };
5
5
  //# sourceMappingURL=index14.js.map
@@ -1,5 +1,8 @@
1
- var e = {};
1
+ import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.js";
2
+ import { __require as o } from "../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js";
3
+ var p = /* @__PURE__ */ o();
4
+ const s = /* @__PURE__ */ r(p);
2
5
  export {
3
- e as __exports
6
+ s as default
4
7
  };
5
8
  //# sourceMappingURL=index16.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index16.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index16.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,5 +1,5 @@
1
- var r = {};
1
+ var p = { exports: {} };
2
2
  export {
3
- r as __exports
3
+ p as __module
4
4
  };
5
5
  //# sourceMappingURL=index17.js.map
@@ -1,8 +1,5 @@
1
- import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.js";
2
- import { __require as o } from "../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js";
3
- var p = /* @__PURE__ */ o();
4
- const s = /* @__PURE__ */ r(p);
1
+ var r = {};
5
2
  export {
6
- s as default
3
+ r as __exports
7
4
  };
8
5
  //# sourceMappingURL=index6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index6.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"index6.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,5 +1,5 @@
1
- var p = { exports: {} };
1
+ var r = {};
2
2
  export {
3
- p as __module
3
+ r as __exports
4
4
  };
5
5
  //# sourceMappingURL=index7.js.map
@@ -1,48 +1,47 @@
1
- var v = Object.defineProperty;
2
- var g = (s, o) => v(s, "name", { value: o, configurable: !0 });
3
- import { jsx as I } 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";
1
+ var w = Object.defineProperty;
2
+ var g = (s, o) => w(s, "name", { value: o, configurable: !0 });
3
+ import { jsx as L } from "../../node_modules/.pnpm/@emotion_react@11.14.0_@types_react@19.2.14_react@19.2.4/node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js";
4
4
  import { themeLayouts as R } from "../../layout/themeLayouts.js";
5
5
  import { useOwpAppContext as z } from "../../contexts/OwpAppProvider.js";
6
- import { generateSettings as C } from "../../configs/defaultConfig.js";
7
- import { useOwpTranslation as P } from "../../hooks/useOwpTranslation.js";
8
- import { useAppDispatch as x, useAppSelector as L } from "../../hooks/useAppStore.js";
9
- import { selectOwpCurrentSettings as A, selectOwpDefaultSettings as j, setSettings as B } from "../../store/owpSettingsSlice.js";
10
- import { useRef as D, useMemo as f, useEffect as h } from "react";
6
+ import { generateSettings as O } from "../../configs/defaultConfig.js";
7
+ import { useOwpTranslation as C } from "../../hooks/useOwpTranslation.js";
8
+ import { useSetSettings as P, useGetCurrentSettings as x, useGetDefaultSettings as j } from "../../hooks/useOwpSettings.js";
9
+ import { useRef as B, useMemo as f, useEffect as S } from "react";
11
10
  import { useLocation as E, matchRoutes as F } from "react-router-dom";
12
- import { isEqual as M } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/predicate/isEqual.js";
13
- import { merge as T } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/object/merge.js";
14
- import { OwpLoading as b } from "../OwpLoading/OwpLoading.js";
15
- function $(s) {
11
+ import { isEqual as G } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/predicate/isEqual.js";
12
+ import { merge as M } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/object/merge.js";
13
+ import { OwpLoading as T } from "../OwpLoading/OwpLoading.js";
14
+ function Y(s) {
16
15
  var y;
17
- const { routesConfig: o } = z(), { i18n: r } = P(), { layouts: l = R, children: u } = s, a = x(), t = L(A), i = L(j), m = (y = t == null ? void 0 : t.layout) == null ? void 0 : y.style, e = E(), { pathname: p } = e, S = D(!1), d = f(
18
- () => k(o, p, "settings", !0),
19
- [p, o]
20
- ), c = f(() => d === void 0 ? i : C(i, d), [i, d]), n = f(
21
- () => t === c || M(c, t),
16
+ const { routesConfig: o } = z(), { i18n: r } = C(), { layouts: m = R, children: u } = s, a = P(), t = x(), n = j(), l = (y = t == null ? void 0 : t.layout) == null ? void 0 : y.style, e = E(), { pathname: d } = e, h = B(!1), p = f(
17
+ () => b(o, d, "settings", !0),
18
+ [d, o]
19
+ ), c = f(() => p === void 0 ? n : O(n, p), [n, p]), i = f(
20
+ () => t === c || G(c, t),
22
21
  [c, t]
23
22
  );
24
- return h(() => {
25
- n || a(B(c));
26
- }, [c, a, n]), h(() => {
23
+ return S(() => {
24
+ i || a(c);
25
+ }, [c, i, a]), S(() => {
27
26
  window.scrollTo(0, 0);
28
- }, [p]), h(() => {
29
- n && r.isInitialized && (S.current = !0);
30
- }, [r.isInitialized, n]), f(() => !r.isInitialized || !n && !S.current ? /* @__PURE__ */ I(b, {}) : Object.entries(l).map(([w, O]) => w === m ? /* @__PURE__ */ I(O, { children: u }, w) : null), [u, r.isInitialized, n, m, l]);
27
+ }, [d]), S(() => {
28
+ i && r.isInitialized && (h.current = !0);
29
+ }, [r.isInitialized, i]), f(() => !r.isInitialized || !i && !h.current ? /* @__PURE__ */ L(T, {}) : Object.entries(m).map(([I, v]) => I === l ? /* @__PURE__ */ L(v, { children: u }, I) : null), [u, r.isInitialized, i, l, m]);
31
30
  }
32
- g($, "OwpLayout");
33
- function k(s, o, r, l = !0) {
31
+ g(Y, "OwpLayout");
32
+ function b(s, o, r, m = !0) {
34
33
  const u = F(s, o);
35
34
  if (!u)
36
35
  return;
37
36
  let a = !1;
38
- const t = u.reduce((i, m) => {
39
- const e = m.route[r];
40
- return e === void 0 ? i : (a = !0, !l || e === null ? e : T(i ?? {}, e));
37
+ const t = u.reduce((n, l) => {
38
+ const e = l.route[r];
39
+ return e === void 0 ? n : (a = !0, !m || e === null ? e : M(n ?? {}, e));
41
40
  }, void 0);
42
41
  return a ? t : void 0;
43
42
  }
44
- g(k, "getRouteParamUtil");
43
+ g(b, "getRouteParamUtil");
45
44
  export {
46
- $ as OwpLayout
45
+ Y as OwpLayout
47
46
  };
48
47
  //# sourceMappingURL=OwpLayout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OwpLayout.js","sources":["../../../src/components/OwpLayout/OwpLayout.tsx"],"sourcesContent":["import { themeLayouts, themeLayoutsType } from '@/layout/themeLayouts';\nimport { useOwpAppContext } from '@/contexts/OwpAppProvider';\nimport { generateSettings } from '@/configs/defaultConfig';\nimport { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport { useAppDispatch, useAppSelector } from '@/hooks/useAppStore';\nimport {\n selectOwpCurrentSettings,\n selectOwpDefaultSettings,\n setSettings,\n} from '@/store/owpSettingsSlice';\nimport type { OwpSettingsConfigType } from '@/types/OwpSettingsTypes';\nimport { OwpRoutesType } from '@/utils/common/OwpUtils';\nimport { isEqual, merge } from 'es-toolkit/compat';\nimport { type ReactNode, useEffect, useMemo, useRef } from 'react';\nimport { matchRoutes, RouteMatch, RouteObject, useLocation } from 'react-router-dom';\nimport { OwpLoading } from '../OwpLoading';\n\nexport type OwpRouteObjectType = RouteObject & {\n settings?: OwpSettingsConfigType;\n auth?: string[] | [] | null | undefined;\n};\n\nexport type OwpRouteMatchType = RouteMatch & {\n route: OwpRouteObjectType;\n};\n\ntype OwpLayoutProps = {\n layouts?: themeLayoutsType;\n children?: ReactNode;\n};\n\n/**\n * OwpLayout\n * React frontend component in a React project that is used for layouting the user interface. The component\n * handles generating user interface settings related to current routes, merged with default settings, and uses\n * the new settings to generate layouts.\n */\nfunction OwpLayout(props: OwpLayoutProps) {\n const { routesConfig } = useOwpAppContext();\n const { i18n } = useOwpTranslation();\n\n const { layouts = themeLayouts, children } = props;\n const dispatch = useAppDispatch();\n const settings = useAppSelector(selectOwpCurrentSettings);\n const defaultSettings = useAppSelector(selectOwpDefaultSettings);\n\n const layoutStyle = settings?.layout?.style;\n const location = useLocation();\n const { pathname } = location;\n const hasCompletedInitialLayoutSyncRef = useRef(false);\n\n const matchedSettings = useMemo(\n () => getRouteParamUtil(routesConfig, pathname, 'settings', true),\n [pathname, routesConfig],\n );\n const currentSettings = useMemo(() => {\n if (matchedSettings === undefined) {\n return defaultSettings;\n }\n\n return generateSettings(defaultSettings, matchedSettings);\n }, [defaultSettings, matchedSettings]);\n const isSettingsSynchronized = useMemo(\n () => settings === currentSettings || isEqual(currentSettings, settings),\n [currentSettings, settings],\n );\n\n useEffect(() => {\n if (isSettingsSynchronized) {\n return;\n }\n\n dispatch(setSettings(currentSettings));\n }, [currentSettings, dispatch, isSettingsSynchronized]);\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [pathname]);\n\n useEffect(() => {\n if (isSettingsSynchronized && i18n.isInitialized) {\n hasCompletedInitialLayoutSyncRef.current = true;\n }\n }, [i18n.isInitialized, isSettingsSynchronized]);\n\n return useMemo(() => {\n const shouldBlockForInitialLoading =\n !i18n.isInitialized ||\n (!isSettingsSynchronized && !hasCompletedInitialLayoutSyncRef.current);\n\n if (shouldBlockForInitialLoading) {\n return <OwpLoading />;\n }\n\n return Object.entries(layouts).map(([key, Layout]) => {\n if (key === layoutStyle) {\n return <Layout key={key}>{children}</Layout>;\n }\n\n return null;\n });\n }, [children, i18n.isInitialized, isSettingsSynchronized, layoutStyle, layouts]);\n}\n\nexport { OwpLayout };\n\n/**\n * Utility function to retrieve and merge or replace a specific route parameter from matched routes.\n *\n * @param pathname The current pathname\n * @param key The key of the parameter to merge or replace (e.g., 'settings', 'auth')\n * @param useMerge Whether to merge the parameter (using es-toolkit merge) or replace it\n * @returns The merged or replaced parameter data of type T\n */\nfunction getRouteParamUtil<T>(\n routes: OwpRoutesType,\n pathname: string,\n key: keyof OwpRouteObjectType,\n useMerge: boolean = true,\n): T | undefined {\n const matchedRoutes = matchRoutes(routes, pathname) as OwpRouteMatchType[] | null;\n\n if (!matchedRoutes) {\n return undefined;\n }\n\n let hasMatchedParam = false;\n\n const resolvedRouteParam = matchedRoutes.reduce<T | undefined>((acc, match) => {\n const routeParam = match.route[key] as T | undefined;\n\n if (routeParam === undefined) {\n return acc;\n }\n\n hasMatchedParam = true;\n\n if (!useMerge) {\n return routeParam;\n }\n\n if (routeParam === null) {\n return routeParam;\n }\n\n return merge(acc ?? {}, routeParam);\n }, undefined);\n\n return hasMatchedParam ? resolvedRouteParam : undefined;\n}\n"],"names":["OwpLayout","props","routesConfig","useOwpAppContext","i18n","useOwpTranslation","layouts","themeLayouts","children","dispatch","useAppDispatch","settings","useAppSelector","selectOwpCurrentSettings","defaultSettings","selectOwpDefaultSettings","layoutStyle","_a","location","useLocation","pathname","hasCompletedInitialLayoutSyncRef","useRef","matchedSettings","useMemo","getRouteParamUtil","currentSettings","generateSettings","isSettingsSynchronized","isEqual","useEffect","setSettings","OwpLoading","key","Layout","jsx","__name","routes","useMerge","matchedRoutes","matchRoutes","hasMatchedParam","resolvedRouteParam","acc","match","routeParam","merge"],"mappings":";;;;;;;;;;;;;;AAqCA,SAASA,EAAUC,GAAuB;;AACxC,QAAM,EAAE,cAAAC,EAAA,IAAiBC,EAAA,GACnB,EAAE,MAAAC,EAAA,IAASC,EAAA,GAEX,EAAE,SAAAC,IAAUC,GAAc,UAAAC,EAAA,IAAaP,GACvCQ,IAAWC,EAAA,GACXC,IAAWC,EAAeC,CAAwB,GAClDC,IAAkBF,EAAeG,CAAwB,GAEzDC,KAAcC,IAAAN,KAAA,gBAAAA,EAAU,WAAV,gBAAAM,EAAkB,OAChCC,IAAWC,EAAA,GACX,EAAE,UAAAC,MAAaF,GACfG,IAAmCC,EAAO,EAAK,GAE/CC,IAAkBC;AAAA,IACtB,MAAMC,EAAkBvB,GAAckB,GAAU,YAAY,EAAI;AAAA,IAChE,CAACA,GAAUlB,CAAY;AAAA,EAAA,GAEnBwB,IAAkBF,EAAQ,MAC1BD,MAAoB,SACfT,IAGFa,EAAiBb,GAAiBS,CAAe,GACvD,CAACT,GAAiBS,CAAe,CAAC,GAC/BK,IAAyBJ;AAAA,IAC7B,MAAMb,MAAae,KAAmBG,EAAQH,GAAiBf,CAAQ;AAAA,IACvE,CAACe,GAAiBf,CAAQ;AAAA,EAAA;AAG5B,SAAAmB,EAAU,MAAM;AACd,IAAIF,KAIJnB,EAASsB,EAAYL,CAAe,CAAC;AAAA,EACvC,GAAG,CAACA,GAAiBjB,GAAUmB,CAAsB,CAAC,GAEtDE,EAAU,MAAM;AACd,WAAO,SAAS,GAAG,CAAC;AAAA,EACtB,GAAG,CAACV,CAAQ,CAAC,GAEbU,EAAU,MAAM;AACd,IAAIF,KAA0BxB,EAAK,kBACjCiB,EAAiC,UAAU;AAAA,EAE/C,GAAG,CAACjB,EAAK,eAAewB,CAAsB,CAAC,GAExCJ,EAAQ,MAEX,CAACpB,EAAK,iBACL,CAACwB,KAA0B,CAACP,EAAiC,4BAGtDW,GAAA,EAAW,IAGd,OAAO,QAAQ1B,CAAO,EAAE,IAAI,CAAC,CAAC2B,GAAKC,CAAM,MAC1CD,MAAQjB,IACH,gBAAAmB,EAACD,GAAA,EAAkB,UAAA1B,EAAA,GAANyB,CAAe,IAG9B,IACR,GACA,CAACzB,GAAUJ,EAAK,eAAewB,GAAwBZ,GAAaV,CAAO,CAAC;AACjF;AAjES8B,EAAApC,GAAA;AA6ET,SAASyB,EACPY,GACAjB,GACAa,GACAK,IAAoB,IACL;AACf,QAAMC,IAAgBC,EAAYH,GAAQjB,CAAQ;AAElD,MAAI,CAACmB;AACH;AAGF,MAAIE,IAAkB;AAEtB,QAAMC,IAAqBH,EAAc,OAAsB,CAACI,GAAKC,MAAU;AAC7E,UAAMC,IAAaD,EAAM,MAAMX,CAAG;AAElC,WAAIY,MAAe,SACVF,KAGTF,IAAkB,IAEd,CAACH,KAIDO,MAAe,OACVA,IAGFC,EAAMH,KAAO,CAAA,GAAIE,CAAU;AAAA,EACpC,GAAG,MAAS;AAEZ,SAAOJ,IAAkBC,IAAqB;AAChD;AAnCSN,EAAAX,GAAA;"}
1
+ {"version":3,"file":"OwpLayout.js","sources":["../../../src/components/OwpLayout/OwpLayout.tsx"],"sourcesContent":["import { themeLayouts, themeLayoutsType } from '@/layout/themeLayouts';\nimport { useOwpAppContext } from '@/contexts/OwpAppProvider';\nimport { generateSettings } from '@/configs/defaultConfig';\nimport { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport {\n useGetCurrentSettings,\n useGetDefaultSettings,\n useSetSettings,\n} from '@/hooks/useOwpSettings';\nimport type { OwpSettingsConfigType } from '@/types/OwpSettingsTypes';\nimport { OwpRoutesType } from '@/utils/common/OwpUtils';\nimport { isEqual, merge } from 'es-toolkit/compat';\nimport { type ReactNode, useEffect, useMemo, useRef } from 'react';\nimport { matchRoutes, RouteMatch, RouteObject, useLocation } from 'react-router-dom';\nimport { OwpLoading } from '../OwpLoading';\n\nexport type OwpRouteObjectType = RouteObject & {\n settings?: OwpSettingsConfigType;\n auth?: string[] | [] | null | undefined;\n};\n\nexport type OwpRouteMatchType = RouteMatch & {\n route: OwpRouteObjectType;\n};\n\ntype OwpLayoutProps = {\n layouts?: themeLayoutsType;\n children?: ReactNode;\n};\n\n/**\n * OwpLayout\n * React frontend component in a React project that is used for layouting the user interface. The component\n * handles generating user interface settings related to current routes, merged with default settings, and uses\n * the new settings to generate layouts.\n */\nfunction OwpLayout(props: OwpLayoutProps) {\n const { routesConfig } = useOwpAppContext();\n const { i18n } = useOwpTranslation();\n\n const { layouts = themeLayouts, children } = props;\n const setSettings = useSetSettings();\n const settings = useGetCurrentSettings();\n const defaultSettings = useGetDefaultSettings();\n\n const layoutStyle = settings?.layout?.style;\n const location = useLocation();\n const { pathname } = location;\n const hasCompletedInitialLayoutSyncRef = useRef(false);\n\n const matchedSettings = useMemo(\n () => getRouteParamUtil(routesConfig, pathname, 'settings', true),\n [pathname, routesConfig],\n );\n const currentSettings = useMemo(() => {\n if (matchedSettings === undefined) {\n return defaultSettings;\n }\n\n return generateSettings(defaultSettings, matchedSettings);\n }, [defaultSettings, matchedSettings]);\n const isSettingsSynchronized = useMemo(\n () => settings === currentSettings || isEqual(currentSettings, settings),\n [currentSettings, settings],\n );\n\n useEffect(() => {\n if (isSettingsSynchronized) {\n return;\n }\n\n setSettings(currentSettings);\n }, [currentSettings, isSettingsSynchronized, setSettings]);\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [pathname]);\n\n useEffect(() => {\n if (isSettingsSynchronized && i18n.isInitialized) {\n hasCompletedInitialLayoutSyncRef.current = true;\n }\n }, [i18n.isInitialized, isSettingsSynchronized]);\n\n return useMemo(() => {\n const shouldBlockForInitialLoading =\n !i18n.isInitialized ||\n (!isSettingsSynchronized && !hasCompletedInitialLayoutSyncRef.current);\n\n if (shouldBlockForInitialLoading) {\n return <OwpLoading />;\n }\n\n return Object.entries(layouts).map(([key, Layout]) => {\n if (key === layoutStyle) {\n return <Layout key={key}>{children}</Layout>;\n }\n\n return null;\n });\n }, [children, i18n.isInitialized, isSettingsSynchronized, layoutStyle, layouts]);\n}\n\nexport { OwpLayout };\n\n/**\n * Utility function to retrieve and merge or replace a specific route parameter from matched routes.\n *\n * @param pathname The current pathname\n * @param key The key of the parameter to merge or replace (e.g., 'settings', 'auth')\n * @param useMerge Whether to merge the parameter (using es-toolkit merge) or replace it\n * @returns The merged or replaced parameter data of type T\n */\nfunction getRouteParamUtil<T>(\n routes: OwpRoutesType,\n pathname: string,\n key: keyof OwpRouteObjectType,\n useMerge: boolean = true,\n): T | undefined {\n const matchedRoutes = matchRoutes(routes, pathname) as OwpRouteMatchType[] | null;\n\n if (!matchedRoutes) {\n return undefined;\n }\n\n let hasMatchedParam = false;\n\n const resolvedRouteParam = matchedRoutes.reduce<T | undefined>((acc, match) => {\n const routeParam = match.route[key] as T | undefined;\n\n if (routeParam === undefined) {\n return acc;\n }\n\n hasMatchedParam = true;\n\n if (!useMerge) {\n return routeParam;\n }\n\n if (routeParam === null) {\n return routeParam;\n }\n\n return merge(acc ?? {}, routeParam);\n }, undefined);\n\n return hasMatchedParam ? resolvedRouteParam : undefined;\n}\n"],"names":["OwpLayout","props","routesConfig","useOwpAppContext","i18n","useOwpTranslation","layouts","themeLayouts","children","setSettings","useSetSettings","settings","useGetCurrentSettings","defaultSettings","useGetDefaultSettings","layoutStyle","_a","location","useLocation","pathname","hasCompletedInitialLayoutSyncRef","useRef","matchedSettings","useMemo","getRouteParamUtil","currentSettings","generateSettings","isSettingsSynchronized","isEqual","useEffect","OwpLoading","key","Layout","jsx","__name","routes","useMerge","matchedRoutes","matchRoutes","hasMatchedParam","resolvedRouteParam","acc","match","routeParam","merge"],"mappings":";;;;;;;;;;;;;AAoCA,SAASA,EAAUC,GAAuB;;AACxC,QAAM,EAAE,cAAAC,EAAA,IAAiBC,EAAA,GACnB,EAAE,MAAAC,EAAA,IAASC,EAAA,GAEX,EAAE,SAAAC,IAAUC,GAAc,UAAAC,EAAA,IAAaP,GACvCQ,IAAcC,EAAA,GACdC,IAAWC,EAAA,GACXC,IAAkBC,EAAA,GAElBC,KAAcC,IAAAL,KAAA,gBAAAA,EAAU,WAAV,gBAAAK,EAAkB,OAChCC,IAAWC,EAAA,GACX,EAAE,UAAAC,MAAaF,GACfG,IAAmCC,EAAO,EAAK,GAE/CC,IAAkBC;AAAA,IACtB,MAAMC,EAAkBtB,GAAciB,GAAU,YAAY,EAAI;AAAA,IAChE,CAACA,GAAUjB,CAAY;AAAA,EAAA,GAEnBuB,IAAkBF,EAAQ,MAC1BD,MAAoB,SACfT,IAGFa,EAAiBb,GAAiBS,CAAe,GACvD,CAACT,GAAiBS,CAAe,CAAC,GAC/BK,IAAyBJ;AAAA,IAC7B,MAAMZ,MAAac,KAAmBG,EAAQH,GAAiBd,CAAQ;AAAA,IACvE,CAACc,GAAiBd,CAAQ;AAAA,EAAA;AAG5B,SAAAkB,EAAU,MAAM;AACd,IAAIF,KAIJlB,EAAYgB,CAAe;AAAA,EAC7B,GAAG,CAACA,GAAiBE,GAAwBlB,CAAW,CAAC,GAEzDoB,EAAU,MAAM;AACd,WAAO,SAAS,GAAG,CAAC;AAAA,EACtB,GAAG,CAACV,CAAQ,CAAC,GAEbU,EAAU,MAAM;AACd,IAAIF,KAA0BvB,EAAK,kBACjCgB,EAAiC,UAAU;AAAA,EAE/C,GAAG,CAAChB,EAAK,eAAeuB,CAAsB,CAAC,GAExCJ,EAAQ,MAEX,CAACnB,EAAK,iBACL,CAACuB,KAA0B,CAACP,EAAiC,4BAGtDU,GAAA,EAAW,IAGd,OAAO,QAAQxB,CAAO,EAAE,IAAI,CAAC,CAACyB,GAAKC,CAAM,MAC1CD,MAAQhB,IACH,gBAAAkB,EAACD,GAAA,EAAkB,UAAAxB,EAAA,GAANuB,CAAe,IAG9B,IACR,GACA,CAACvB,GAAUJ,EAAK,eAAeuB,GAAwBZ,GAAaT,CAAO,CAAC;AACjF;AAjES4B,EAAAlC,GAAA;AA6ET,SAASwB,EACPW,GACAhB,GACAY,GACAK,IAAoB,IACL;AACf,QAAMC,IAAgBC,EAAYH,GAAQhB,CAAQ;AAElD,MAAI,CAACkB;AACH;AAGF,MAAIE,IAAkB;AAEtB,QAAMC,IAAqBH,EAAc,OAAsB,CAACI,GAAKC,MAAU;AAC7E,UAAMC,IAAaD,EAAM,MAAMX,CAAG;AAElC,WAAIY,MAAe,SACVF,KAGTF,IAAkB,IAEd,CAACH,KAIDO,MAAe,OACVA,IAGFC,EAAMH,KAAO,CAAA,GAAIE,CAAU;AAAA,EACpC,GAAG,MAAS;AAEZ,SAAOJ,IAAkBC,IAAqB;AAChD;AAnCSN,EAAAV,GAAA;"}
@@ -1,18 +1,17 @@
1
1
  var j = Object.defineProperty;
2
2
  var u = (t, o) => j(t, "name", { value: o, configurable: !0 });
3
3
  import { jsx as k } 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 { selectCustomScrollbarsEnabled as B } from "../../store/owpSettingsSlice.js";
5
- import { useAppSelector as M } from "../../hooks/useAppStore.js";
6
- import { styled as U } from "@mui/material/styles";
7
- import X from "../../_virtual/mobile-detect.js";
8
- import Y from "../../node_modules/.pnpm/perfect-scrollbar@1.5.6/node_modules/perfect-scrollbar/dist/perfect-scrollbar.esm.js";
4
+ import { useGetCustomScrollbarsEnabled as B } from "../../hooks/useOwpSettings.js";
5
+ import { styled as M } from "@mui/material/styles";
6
+ import U from "../../_virtual/mobile-detect.js";
7
+ import X from "../../node_modules/.pnpm/perfect-scrollbar@1.5.6/node_modules/perfect-scrollbar/dist/perfect-scrollbar.esm.js";
9
8
  /* empty css */
10
- import { forwardRef as A, useRef as f, useState as D, useCallback as p, useEffect as a } from "react";
9
+ import { forwardRef as Y, useRef as f, useState as D, useCallback as p, useEffect as a } from "react";
11
10
  import { useLocation as H } from "react-router-dom";
12
- const N = U("div")(() => ({
11
+ const N = M("div")(() => ({
13
12
  overscrollBehavior: "contain",
14
13
  minHeight: "100%"
15
- })), P = new X(window.navigator.userAgent), y = P.mobile(), g = Object.freeze({
14
+ })), P = new U(window.navigator.userAgent), y = P.mobile(), g = Object.freeze({
16
15
  "ps-scroll-y": "onScrollY",
17
16
  "ps-scroll-x": "onScrollX",
18
17
  "ps-scroll-up": "onScrollUp",
@@ -23,18 +22,18 @@ const N = U("div")(() => ({
23
22
  "ps-y-reach-end": "onYReachEnd",
24
23
  "ps-x-reach-start": "onXReachStart",
25
24
  "ps-x-reach-end": "onXReachEnd"
26
- }), Z = A((t, o) => {
25
+ }), V = Y((t, o) => {
27
26
  const {
28
27
  className: T = "",
29
- children: m,
28
+ children: h,
30
29
  id: x = "",
31
- scrollToTopOnChildChange: h = !0,
30
+ scrollToTopOnChildChange: m = !0,
32
31
  scrollToTopOnRouteChange: d = !1,
33
32
  enable: S = !0,
34
33
  option: b = {
35
34
  wheelPropagation: !0
36
35
  }
37
- } = t, r = f(null), n = f(null), i = f(/* @__PURE__ */ new Map()), [C, v] = D({}), c = M(B), O = H(), { pathname: L } = O, E = p(() => {
36
+ } = t, r = f(null), n = f(null), i = f(/* @__PURE__ */ new Map()), [C, v] = D({}), c = B(), O = H(), { pathname: L } = O, E = p(() => {
38
37
  Object.keys(g).forEach((e) => {
39
38
  const s = t[g[e]];
40
39
  if (s) {
@@ -47,15 +46,15 @@ const N = U("div")(() => ({
47
46
  r.current && r.current.removeEventListener(s, e, !1);
48
47
  }), i.current.clear();
49
48
  }, []);
50
- a(() => (c && r.current && !y && (n.current = new Y(r.current, b), E()), () => {
49
+ a(() => (c && r.current && !y && (n.current = new X(r.current, b), E()), () => {
51
50
  n.current && (n.current.destroy(), n.current = null, w());
52
51
  }), [c, E, b, w]);
53
52
  const l = p(() => {
54
53
  r.current && (r.current.scrollTop = 0);
55
54
  }, []);
56
55
  return a(() => {
57
- h && l();
58
- }, [l, m, h]), a(() => {
56
+ m && l();
57
+ }, [l, h, m]), a(() => {
59
58
  d && l();
60
59
  }, [L, l, d]), a(() => {
61
60
  v(c && S && !y ? {
@@ -71,11 +70,11 @@ const N = U("div")(() => ({
71
70
  ref: /* @__PURE__ */ u((e) => {
72
71
  r.current = e, typeof o == "function" ? o(e) : o && (o.current = e);
73
72
  }, "ref"),
74
- children: m
73
+ children: h
75
74
  }
76
75
  );
77
76
  });
78
77
  export {
79
- Z as OwpScrollbars
78
+ V as OwpScrollbars
80
79
  };
81
80
  //# sourceMappingURL=OwpScrollbars.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OwpScrollbars.js","sources":["../../../src/components/OwpScrollbars/OwpScrollbars.tsx"],"sourcesContent":["import { selectCustomScrollbarsEnabled } from '@/store/owpSettingsSlice';\nimport { useAppSelector } from '@/hooks/useAppStore';\nimport { styled } from '@mui/material/styles';\nimport MobileDetect from 'mobile-detect';\nimport PerfectScrollbar from 'perfect-scrollbar';\nimport 'perfect-scrollbar/css/perfect-scrollbar.css';\nimport { forwardRef, ReactNode, useCallback, useEffect, useRef, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nconst Root = styled('div')(() => ({\n overscrollBehavior: 'contain',\n minHeight: '100%',\n}));\n\nconst md = new MobileDetect(window.navigator.userAgent);\nconst isMobile = md.mobile();\n\nconst handlerNameByEvent = Object.freeze({\n 'ps-scroll-y': 'onScrollY',\n 'ps-scroll-x': 'onScrollX',\n 'ps-scroll-up': 'onScrollUp',\n 'ps-scroll-down': 'onScrollDown',\n 'ps-scroll-left': 'onScrollLeft',\n 'ps-scroll-right': 'onScrollRight',\n 'ps-y-reach-start': 'onYReachStart',\n 'ps-y-reach-end': 'onYReachEnd',\n 'ps-x-reach-start': 'onXReachStart',\n 'ps-x-reach-end': 'onXReachEnd',\n});\n\ntype OwpScrollbarsProps = {\n id?: string;\n className?: string;\n children: ReactNode;\n enable?: boolean;\n scrollToTopOnChildChange?: boolean;\n scrollToTopOnRouteChange?: boolean;\n option?: {\n wheelPropagation?: boolean;\n suppressScrollX?: boolean;\n };\n};\n\n/**\n * OwpScrollbars 컴포넌트\n * @param props 컴포넌트 props\n * @param ref forwardRef 참조\n */\nconst OwpScrollbars = forwardRef<HTMLDivElement, OwpScrollbarsProps>((props, ref) => {\n const {\n className = '',\n children,\n id = '',\n scrollToTopOnChildChange = true,\n scrollToTopOnRouteChange = false,\n enable = true,\n option = {\n wheelPropagation: true,\n },\n } = props;\n\n const containerRef = useRef<HTMLDivElement>(null);\n const psRef = useRef<PerfectScrollbar | null>(null);\n const handlerByEvent = useRef<Map<string, EventListener>>(new Map());\n const [style, setStyle] = useState({});\n const customScrollbars = useAppSelector(selectCustomScrollbarsEnabled);\n const location = useLocation();\n const { pathname } = location;\n\n const hookUpEvents = useCallback(() => {\n Object.keys(handlerNameByEvent).forEach((key) => {\n const callback = props[handlerNameByEvent[key] as keyof OwpScrollbarsProps] as (\n T: HTMLDivElement,\n ) => void;\n\n if (callback) {\n const handler: EventListener = () => callback(containerRef.current);\n handlerByEvent.current.set(key, handler);\n\n if (containerRef.current) {\n containerRef.current.addEventListener(key, handler, false);\n }\n }\n });\n }, [props]);\n\n const unHookUpEvents = useCallback(() => {\n handlerByEvent.current.forEach((value, key) => {\n if (containerRef.current) {\n containerRef.current.removeEventListener(key, value, false);\n }\n });\n handlerByEvent.current.clear();\n }, []);\n\n useEffect(() => {\n if (customScrollbars && containerRef.current && !isMobile) {\n psRef.current = new PerfectScrollbar(containerRef.current, option);\n hookUpEvents();\n }\n\n return () => {\n if (psRef.current) {\n psRef.current.destroy();\n psRef.current = null;\n unHookUpEvents();\n }\n };\n }, [customScrollbars, hookUpEvents, option, unHookUpEvents]);\n\n const scrollToTop = useCallback(() => {\n if (containerRef.current) {\n containerRef.current.scrollTop = 0;\n }\n }, []);\n\n useEffect(() => {\n if (scrollToTopOnChildChange) {\n scrollToTop();\n }\n }, [scrollToTop, children, scrollToTopOnChildChange]);\n\n useEffect(() => {\n if (scrollToTopOnRouteChange) {\n scrollToTop();\n }\n }, [pathname, scrollToTop, scrollToTopOnRouteChange]);\n\n useEffect(() => {\n if (customScrollbars && enable && !isMobile) {\n setStyle({\n position: 'relative',\n overflow: 'hidden!important',\n });\n } else {\n setStyle({});\n }\n }, [customScrollbars, enable]);\n\n return (\n <Root\n id={id}\n className={className}\n style={style}\n ref={(el) => {\n containerRef.current = el;\n\n if (typeof ref === 'function') {\n ref(el);\n } else if (ref) {\n ref.current = el;\n }\n }}\n >\n {children}\n </Root>\n );\n});\n\nexport { OwpScrollbars };\n"],"names":["Root","styled","md","MobileDetect","isMobile","handlerNameByEvent","OwpScrollbars","forwardRef","props","ref","className","children","id","scrollToTopOnChildChange","scrollToTopOnRouteChange","enable","option","containerRef","useRef","psRef","handlerByEvent","style","setStyle","useState","customScrollbars","useAppSelector","selectCustomScrollbarsEnabled","location","useLocation","pathname","hookUpEvents","useCallback","key","callback","handler","__name","unHookUpEvents","value","useEffect","PerfectScrollbar","scrollToTop","jsx","el"],"mappings":"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"}
1
+ {"version":3,"file":"OwpScrollbars.js","sources":["../../../src/components/OwpScrollbars/OwpScrollbars.tsx"],"sourcesContent":["import { useGetCustomScrollbarsEnabled } from '@/hooks/useOwpSettings';\nimport { styled } from '@mui/material/styles';\nimport MobileDetect from 'mobile-detect';\nimport PerfectScrollbar from 'perfect-scrollbar';\nimport 'perfect-scrollbar/css/perfect-scrollbar.css';\nimport { forwardRef, ReactNode, useCallback, useEffect, useRef, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nconst Root = styled('div')(() => ({\n overscrollBehavior: 'contain',\n minHeight: '100%',\n}));\n\nconst md = new MobileDetect(window.navigator.userAgent);\nconst isMobile = md.mobile();\n\nconst handlerNameByEvent = Object.freeze({\n 'ps-scroll-y': 'onScrollY',\n 'ps-scroll-x': 'onScrollX',\n 'ps-scroll-up': 'onScrollUp',\n 'ps-scroll-down': 'onScrollDown',\n 'ps-scroll-left': 'onScrollLeft',\n 'ps-scroll-right': 'onScrollRight',\n 'ps-y-reach-start': 'onYReachStart',\n 'ps-y-reach-end': 'onYReachEnd',\n 'ps-x-reach-start': 'onXReachStart',\n 'ps-x-reach-end': 'onXReachEnd',\n});\n\ntype OwpScrollbarsProps = {\n id?: string;\n className?: string;\n children: ReactNode;\n enable?: boolean;\n scrollToTopOnChildChange?: boolean;\n scrollToTopOnRouteChange?: boolean;\n option?: {\n wheelPropagation?: boolean;\n suppressScrollX?: boolean;\n };\n};\n\n/**\n * OwpScrollbars 컴포넌트\n * @param props 컴포넌트 props\n * @param ref forwardRef 참조\n */\nconst OwpScrollbars = forwardRef<HTMLDivElement, OwpScrollbarsProps>((props, ref) => {\n const {\n className = '',\n children,\n id = '',\n scrollToTopOnChildChange = true,\n scrollToTopOnRouteChange = false,\n enable = true,\n option = {\n wheelPropagation: true,\n },\n } = props;\n\n const containerRef = useRef<HTMLDivElement>(null);\n const psRef = useRef<PerfectScrollbar | null>(null);\n const handlerByEvent = useRef<Map<string, EventListener>>(new Map());\n const [style, setStyle] = useState({});\n const customScrollbars = useGetCustomScrollbarsEnabled();\n const location = useLocation();\n const { pathname } = location;\n\n const hookUpEvents = useCallback(() => {\n Object.keys(handlerNameByEvent).forEach((key) => {\n const callback = props[handlerNameByEvent[key] as keyof OwpScrollbarsProps] as (\n T: HTMLDivElement,\n ) => void;\n\n if (callback) {\n const handler: EventListener = () => callback(containerRef.current);\n handlerByEvent.current.set(key, handler);\n\n if (containerRef.current) {\n containerRef.current.addEventListener(key, handler, false);\n }\n }\n });\n }, [props]);\n\n const unHookUpEvents = useCallback(() => {\n handlerByEvent.current.forEach((value, key) => {\n if (containerRef.current) {\n containerRef.current.removeEventListener(key, value, false);\n }\n });\n handlerByEvent.current.clear();\n }, []);\n\n useEffect(() => {\n if (customScrollbars && containerRef.current && !isMobile) {\n psRef.current = new PerfectScrollbar(containerRef.current, option);\n hookUpEvents();\n }\n\n return () => {\n if (psRef.current) {\n psRef.current.destroy();\n psRef.current = null;\n unHookUpEvents();\n }\n };\n }, [customScrollbars, hookUpEvents, option, unHookUpEvents]);\n\n const scrollToTop = useCallback(() => {\n if (containerRef.current) {\n containerRef.current.scrollTop = 0;\n }\n }, []);\n\n useEffect(() => {\n if (scrollToTopOnChildChange) {\n scrollToTop();\n }\n }, [scrollToTop, children, scrollToTopOnChildChange]);\n\n useEffect(() => {\n if (scrollToTopOnRouteChange) {\n scrollToTop();\n }\n }, [pathname, scrollToTop, scrollToTopOnRouteChange]);\n\n useEffect(() => {\n if (customScrollbars && enable && !isMobile) {\n setStyle({\n position: 'relative',\n overflow: 'hidden!important',\n });\n } else {\n setStyle({});\n }\n }, [customScrollbars, enable]);\n\n return (\n <Root\n id={id}\n className={className}\n style={style}\n ref={(el) => {\n containerRef.current = el;\n\n if (typeof ref === 'function') {\n ref(el);\n } else if (ref) {\n ref.current = el;\n }\n }}\n >\n {children}\n </Root>\n );\n});\n\nexport { OwpScrollbars };\n"],"names":["Root","styled","md","MobileDetect","isMobile","handlerNameByEvent","OwpScrollbars","forwardRef","props","ref","className","children","id","scrollToTopOnChildChange","scrollToTopOnRouteChange","enable","option","containerRef","useRef","psRef","handlerByEvent","style","setStyle","useState","customScrollbars","useGetCustomScrollbarsEnabled","location","useLocation","pathname","hookUpEvents","useCallback","key","callback","handler","__name","unHookUpEvents","value","useEffect","PerfectScrollbar","scrollToTop","jsx","el"],"mappings":"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"}
@@ -1,13 +1,12 @@
1
- var m = Object.defineProperty;
2
- var l = (t, e) => m(t, "name", { value: e, configurable: !0 });
3
- import { jsx as i, jsxs as g } from "../../node_modules/.pnpm/@emotion_react@11.14.0_@types_react@19.2.14_react@19.2.4/node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js";
4
- import { CacheProvider as y } from "@emotion/react";
5
- import { useAppSelector as c } from "../../hooks/useAppStore.js";
6
- import { selectMainTheme as k, selectToolbarTheme as v } from "../../store/owpSettingsSlice.js";
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";
7
6
  import s from "@mui/material/GlobalStyles";
8
- import { ThemeProvider as f, alpha as n, emphasize as w } from "@mui/material/styles";
9
- import { useEffect as x } from "react";
10
- const C = /* @__PURE__ */ i(
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(
11
10
  s,
12
11
  {
13
12
  styles: /* @__PURE__ */ l((t) => ({
@@ -66,14 +65,14 @@ const C = /* @__PURE__ */ i(
66
65
  }
67
66
  }), "styles")
68
67
  }
69
- ), h = /* @__PURE__ */ l((t, e, o) => /* @__PURE__ */ i(
68
+ ), C = /* @__PURE__ */ l((t, e, o) => /* @__PURE__ */ i(
70
69
  s,
71
70
  {
72
71
  styles: {
73
72
  ":root": {
74
73
  "--owp-datepicker-selected-bg": t,
75
74
  "--owp-datepicker-selected-color": e,
76
- "--owp-datepicker-selected-hover-bg": w(t, 0.16),
75
+ "--owp-datepicker-selected-hover-bg": f(t, 0.16),
77
76
  "--owp-datepicker-hover-color": o,
78
77
  "--owp-datepicker-hover-bg": n(t, 0.14),
79
78
  "--owp-datepicker-keyboard-selected-bg": n(t, 0.28),
@@ -84,7 +83,7 @@ const C = /* @__PURE__ */ i(
84
83
  }
85
84
  }
86
85
  ), "getThemeGlobalStyles");
87
- function T({
86
+ function h({
88
87
  children: t,
89
88
  theme: e,
90
89
  root: o = !1,
@@ -93,20 +92,20 @@ function T({
93
92
  datePickerHoverColor: d
94
93
  }) {
95
94
  const { mode: p } = e.palette;
96
- return x(() => {
95
+ return w(() => {
97
96
  o && (document.body.classList.add(p === "light" ? "light" : "dark"), document.body.classList.remove(p === "light" ? "dark" : "light"));
98
- }, [p, o]), /* @__PURE__ */ g(f, { theme: e, children: [
97
+ }, [p, o]), /* @__PURE__ */ m(v, { theme: e, children: [
99
98
  t,
100
- h(
99
+ C(
101
100
  r ?? e.palette.primary.main,
102
101
  a ?? e.palette.getContrastText(r ?? e.palette.primary.main),
103
102
  d ?? e.palette.text.primary
104
103
  ),
105
- o && C
104
+ o && x
106
105
  ] });
107
106
  }
108
- l(T, "OwpStyleTheme");
109
- function u({
107
+ l(h, "OwpStyleTheme");
108
+ function c({
110
109
  children: t,
111
110
  theme: e,
112
111
  root: o,
@@ -116,7 +115,7 @@ function u({
116
115
  datePickerHoverColor: p
117
116
  }) {
118
117
  const b = /* @__PURE__ */ i(
119
- T,
118
+ h,
120
119
  {
121
120
  theme: e,
122
121
  root: o,
@@ -126,17 +125,17 @@ function u({
126
125
  children: t
127
126
  }
128
127
  );
129
- return r != null && r.value ? /* @__PURE__ */ i(y, { ...r, children: b }) : b;
128
+ return r != null && r.value ? /* @__PURE__ */ i(g, { ...r, children: b }) : b;
130
129
  }
131
- l(u, "OwpStyleProviderContent");
132
- function S({
130
+ l(c, "OwpStyleProviderContent");
131
+ function T({
133
132
  children: t,
134
133
  root: e,
135
134
  cacheProviderProps: o
136
135
  }) {
137
- const r = c(k), a = c(v), d = a.palette.background.default;
136
+ const r = y(), a = k(), d = a.palette.background.default;
138
137
  return /* @__PURE__ */ i(
139
- u,
138
+ c,
140
139
  {
141
140
  theme: r,
142
141
  root: e,
@@ -148,13 +147,13 @@ function S({
148
147
  }
149
148
  );
150
149
  }
151
- l(S, "OwpStyleProviderFallback");
152
- function A(t) {
150
+ l(T, "OwpStyleProviderFallback");
151
+ function L(t) {
153
152
  const { children: e, theme: o, root: r, cacheProviderProps: a } = t;
154
- return o ? /* @__PURE__ */ i(u, { theme: o, root: r, cacheProviderProps: a, children: e }) : /* @__PURE__ */ i(S, { root: r, cacheProviderProps: a, children: e });
153
+ return o ? /* @__PURE__ */ i(c, { theme: o, root: r, cacheProviderProps: a, children: e }) : /* @__PURE__ */ i(T, { root: r, cacheProviderProps: a, children: e });
155
154
  }
156
- l(A, "OwpStyleProvider");
155
+ l(L, "OwpStyleProvider");
157
156
  export {
158
- A as OwpStyleProvider
157
+ L as OwpStyleProvider
159
158
  };
160
159
  //# sourceMappingURL=OwpStyleProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OwpStyleProvider.js","sources":["../../../src/components/OwpStyleProvider/OwpStyleProvider.tsx"],"sourcesContent":["import { CacheProvider } from '@emotion/react';\nimport { useAppSelector } from '@/hooks/useAppStore';\nimport { selectMainTheme, selectToolbarTheme } from '@/store/owpSettingsSlice';\nimport type { RootState } from '@/store/store';\nimport GlobalStyles from '@mui/material/GlobalStyles';\nimport { alpha, emphasize, ThemeProvider, type Theme } from '@mui/material/styles';\nimport { ComponentProps, ReactNode, useEffect } from 'react';\n\ntype OwpCacheProviderProps = Omit<ComponentProps<typeof CacheProvider>, 'children'>;\ntype OwpStyleProviderContentProps = Omit<OwpStyleProviderProps, 'theme'> & {\n theme: Theme;\n datePickerSelectedBg?: string;\n datePickerSelectedColor?: string;\n datePickerHoverColor?: string;\n};\n\nconst inputGlobalStyles = (\n <GlobalStyles\n styles={(theme) => ({\n html: {\n backgroundColor: `${theme.palette.background.default}!important`,\n color: `${theme.palette.text.primary}!important`,\n },\n body: {\n backgroundColor: theme.palette.background.default,\n color: theme.palette.text.primary,\n },\n '& .MuiOutlinedInput-root': {\n backgroundColor: theme.palette.background.paper,\n },\n '& .border-divider ': {\n borderColor: `${theme.palette.divider}!important`,\n },\n 'table.simple tbody tr th': {\n borderColor: theme.palette.divider,\n },\n 'table.simple thead tr th': {\n borderColor: theme.palette.divider,\n },\n 'a:not([role=button]):not(.MuiButtonBase-root)': {\n color: theme.palette.secondary.main,\n textDecoration: 'underline',\n '&:hover': {},\n },\n 'a.link, a:not([role=button])[target=_blank]': {\n background: alpha(theme.palette.secondary.main, 0.2),\n color: 'inherit',\n borderBottom: `1px solid ${theme.palette.divider}`,\n textDecoration: 'none',\n '&:hover': {\n background: alpha(theme.palette.secondary.main, 0.3),\n textDecoration: 'none',\n },\n },\n '[class^=\"border\"]': {\n borderColor: theme.palette.divider,\n },\n '[class*=\"border\"]': {\n borderColor: theme.palette.divider,\n },\n '[class*=\"divide-\"] > :not([hidden]) ~ :not([hidden])': {\n borderColor: theme.palette.divider,\n },\n hr: {\n borderColor: theme.palette.divider,\n },\n '::-webkit-scrollbar-thumb': {\n boxShadow: `inset 0 0 0 20px ${\n theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.24)' : 'rgba(255, 255, 255, 0.24)'\n }`,\n },\n '::-webkit-scrollbar-thumb:active': {\n boxShadow: `inset 0 0 0 20px ${\n theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.37)' : 'rgba(255, 255, 255, 0.37)'\n }`,\n },\n })}\n />\n);\n\nconst getThemeGlobalStyles = (\n datePickerSelectedBg: string,\n datePickerSelectedColor: string,\n datePickerHoverColor: string,\n) => (\n <GlobalStyles\n styles={{\n ':root': {\n '--owp-datepicker-selected-bg': datePickerSelectedBg,\n '--owp-datepicker-selected-color': datePickerSelectedColor,\n '--owp-datepicker-selected-hover-bg': emphasize(datePickerSelectedBg, 0.16),\n '--owp-datepicker-hover-color': datePickerHoverColor,\n '--owp-datepicker-hover-bg': alpha(datePickerSelectedBg, 0.14),\n '--owp-datepicker-keyboard-selected-bg': alpha(datePickerSelectedBg, 0.28),\n '--owp-datepicker-keyboard-selected-hover-bg': alpha(datePickerSelectedBg, 0.36),\n '--owp-datepicker-keyboard-selected-color': datePickerHoverColor,\n '--owp-datepicker-range-preview-bg': alpha(datePickerSelectedBg, 0.48),\n },\n }}\n />\n);\n\nexport interface OwpStyleProviderProps {\n children?: ReactNode;\n theme?: Theme;\n root?: boolean;\n cacheProviderProps?: OwpCacheProviderProps;\n}\n\n/**\n * MUI theme boundary and global style layer.\n * @param theme MUI theme 객체\n * @param root 글로벌 스타일 적용 여부\n * @param children 렌더링 자식\n */\nfunction OwpStyleTheme({\n children,\n theme,\n root = false,\n datePickerSelectedBg,\n datePickerSelectedColor,\n datePickerHoverColor,\n}: Pick<OwpStyleProviderProps, 'children' | 'root'> & {\n theme: Theme;\n datePickerSelectedBg?: string;\n datePickerSelectedColor?: string;\n datePickerHoverColor?: string;\n}) {\n const { mode } = theme.palette;\n\n useEffect(() => {\n if (root) {\n document.body.classList.add(mode === 'light' ? 'light' : 'dark');\n document.body.classList.remove(mode === 'light' ? 'dark' : 'light');\n }\n }, [mode, root]);\n\n return (\n <ThemeProvider theme={theme}>\n {children}\n {getThemeGlobalStyles(\n datePickerSelectedBg ?? theme.palette.primary.main,\n datePickerSelectedColor ??\n theme.palette.getContrastText(datePickerSelectedBg ?? theme.palette.primary.main),\n datePickerHoverColor ?? theme.palette.text.primary,\n )}\n {root && inputGlobalStyles}\n </ThemeProvider>\n );\n}\n\n/**\n * CacheProvider, theme composition\n * @param theme MUI theme 객체\n * @param root 글로벌 스타일 적용 여부\n * @param cacheProviderProps CacheProvider 옵션\n */\nfunction OwpStyleProviderContent({\n children,\n theme,\n root,\n cacheProviderProps,\n datePickerSelectedBg,\n datePickerSelectedColor,\n datePickerHoverColor,\n}: OwpStyleProviderContentProps) {\n const themeContent = (\n <OwpStyleTheme\n theme={theme}\n root={root}\n datePickerSelectedBg={datePickerSelectedBg}\n datePickerSelectedColor={datePickerSelectedColor}\n datePickerHoverColor={datePickerHoverColor}\n >\n {children}\n </OwpStyleTheme>\n );\n\n if (!cacheProviderProps?.value) {\n return themeContent;\n }\n\n return <CacheProvider {...cacheProviderProps}>{themeContent}</CacheProvider>;\n}\n\n/**\n * Store main theme fallback provider\n * @param root 글로벌 스타일 적용 여부\n * @param cacheProviderProps CacheProvider 옵션\n */\nfunction OwpStyleProviderFallback({\n children,\n root,\n cacheProviderProps,\n}: Omit<OwpStyleProviderProps, 'theme'>) {\n const theme = useAppSelector(selectMainTheme as (state: RootState) => Theme);\n const toolbarTheme = useAppSelector(selectToolbarTheme as (state: RootState) => Theme);\n const datePickerSelectedBg = toolbarTheme.palette.background.default;\n\n return (\n <OwpStyleProviderContent\n theme={theme}\n root={root}\n cacheProviderProps={cacheProviderProps}\n datePickerSelectedBg={datePickerSelectedBg}\n datePickerSelectedColor={toolbarTheme.palette.getContrastText(datePickerSelectedBg)}\n datePickerHoverColor={theme.palette.text.primary}\n >\n {children}\n </OwpStyleProviderContent>\n );\n}\n\n/**\n * CacheProvider, theme composition\n * @param theme MUI theme 객체. 미지정 시 store main theme 사용\n * @param root 글로벌 스타일 적용 여부\n * @param cacheProviderProps CacheProvider 옵션\n */\nexport function OwpStyleProvider(props: OwpStyleProviderProps) {\n const { children, theme, root, cacheProviderProps } = props;\n\n if (theme) {\n return (\n <OwpStyleProviderContent theme={theme} root={root} cacheProviderProps={cacheProviderProps}>\n {children}\n </OwpStyleProviderContent>\n );\n }\n\n return (\n <OwpStyleProviderFallback root={root} cacheProviderProps={cacheProviderProps}>\n {children}\n </OwpStyleProviderFallback>\n );\n}\n"],"names":["inputGlobalStyles","jsx","GlobalStyles","__name","theme","alpha","getThemeGlobalStyles","datePickerSelectedBg","datePickerSelectedColor","datePickerHoverColor","emphasize","OwpStyleTheme","children","root","mode","useEffect","jsxs","ThemeProvider","OwpStyleProviderContent","cacheProviderProps","themeContent","CacheProvider","OwpStyleProviderFallback","useAppSelector","selectMainTheme","toolbarTheme","selectToolbarTheme","OwpStyleProvider","props"],"mappings":"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"}
1
+ {"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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"}