@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.
- package/dist/_virtual/index11.js +2 -2
- package/dist/_virtual/index12.js +2 -2
- package/dist/_virtual/index13.js +2 -2
- package/dist/_virtual/index14.js +2 -2
- package/dist/_virtual/index16.js +5 -2
- package/dist/_virtual/index16.js.map +1 -1
- package/dist/_virtual/index17.js +2 -2
- package/dist/_virtual/index6.js +2 -5
- package/dist/_virtual/index6.js.map +1 -1
- package/dist/_virtual/index7.js +2 -2
- package/dist/components/OwpLayout/OwpLayout.js +29 -30
- package/dist/components/OwpLayout/OwpLayout.js.map +1 -1
- package/dist/components/OwpScrollbars/OwpScrollbars.js +16 -17
- package/dist/components/OwpScrollbars/OwpScrollbars.js.map +1 -1
- package/dist/components/OwpStyleProvider/OwpStyleProvider.js +28 -29
- package/dist/components/OwpStyleProvider/OwpStyleProvider.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +80 -74
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js.map +1 -1
- package/dist/contexts/OwpCoreProvider.js +22 -36
- package/dist/contexts/OwpCoreProvider.js.map +1 -1
- package/dist/contexts/OwpStoreProvider.js +9 -9
- package/dist/contexts/OwpStoreProvider.js.map +1 -1
- package/dist/hooks/useNavbar.js +24 -0
- package/dist/hooks/useNavbar.js.map +1 -0
- package/dist/hooks/useOwpSettings.js +21 -0
- package/dist/hooks/useOwpSettings.js.map +1 -0
- package/dist/hooks.js +75 -62
- package/dist/hooks.js.map +1 -1
- package/dist/layout/Layout.js +28 -29
- package/dist/layout/Layout.js.map +1 -1
- package/dist/layout/components/layouts/FooterLayout.js +15 -16
- package/dist/layout/components/layouts/FooterLayout.js.map +1 -1
- package/dist/layout/components/layouts/NavbarToggleFabLayout.js +21 -18
- package/dist/layout/components/layouts/NavbarToggleFabLayout.js.map +1 -1
- package/dist/layout/components/layouts/NavbarWrapperLayout.js +20 -21
- package/dist/layout/components/layouts/NavbarWrapperLayout.js.map +1 -1
- package/dist/layout/components/navbar/NavbarPinToggleButton.js +10 -11
- package/dist/layout/components/navbar/NavbarPinToggleButton.js.map +1 -1
- package/dist/layout/components/navbar/NavbarToggleButton.js +31 -32
- package/dist/layout/components/navbar/NavbarToggleButton.js.map +1 -1
- package/dist/layout/components/navbar/style/NavbarStyle.js +36 -37
- package/dist/layout/components/navbar/style/NavbarStyle.js.map +1 -1
- package/dist/layout/components/navbar/style/NavbarStyleContent.js +29 -30
- package/dist/layout/components/navbar/style/NavbarStyleContent.js.map +1 -1
- package/dist/layout/components/navigation/Navigation.js +18 -22
- package/dist/layout/components/navigation/Navigation.js.map +1 -1
- package/dist/layout/components/toggles/NavigationSearchToggle.js +55 -60
- package/dist/layout/components/toggles/NavigationSearchToggle.js.map +1 -1
- package/dist/layout/components/toggles/NavigationShortcutsToggle.js +44 -49
- package/dist/layout/components/toggles/NavigationShortcutsToggle.js.map +1 -1
- package/dist/layout/components/toolbar/ToolbarLayout.js +26 -27
- package/dist/layout/components/toolbar/ToolbarLayout.js.map +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE39/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/GenericBarcode/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/MSI/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/codabar/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/pharmacode/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/renderers/index.js +1 -1
- package/dist/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js +1 -1
- package/dist/node_modules/.pnpm/react-imask@7.6.1_react@19.2.4/node_modules/react-imask/esm/mixin.js +1 -1
- 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
- package/dist/store/atoms/navbarAtoms.js +84 -0
- package/dist/store/atoms/navbarAtoms.js.map +1 -0
- package/dist/store/atoms/owpSettingsAtoms.js +140 -0
- package/dist/store/atoms/owpSettingsAtoms.js.map +1 -0
- package/dist/store/atoms/owpStore.js +29 -0
- package/dist/store/atoms/owpStore.js.map +1 -0
- package/dist/store.js +44 -39
- package/dist/store.js.map +1 -1
- package/dist/types/components/OwpPicker/internal/DatePickerInput.d.ts +1 -1
- package/dist/types/components/OwpTable/OwpTable.d.ts +1 -1
- package/dist/types/components/OwpTabs/OwpTab.d.ts +1 -1
- package/dist/types/components/OwpTabs/OwpTabs.d.ts +1 -1
- package/dist/types/contexts/OwpCoreProvider.d.ts +2 -2
- package/dist/types/contexts/OwpStoreProvider.d.ts +4 -4
- package/dist/types/hooks/index.d.ts +2 -1
- package/dist/types/hooks/useNavbar.d.ts +19 -0
- package/dist/types/hooks/useOwpSettings.d.ts +79 -0
- package/dist/types/layout/components/navigation/Navigation.d.ts +6 -2
- package/dist/types/layout/components/toggles/NavigationSearchToggle.d.ts +5 -2
- package/dist/types/layout/components/toggles/NavigationShortcutsToggle.d.ts +5 -2
- package/dist/types/store/atoms/index.d.ts +3 -0
- package/dist/types/store/atoms/internal/types.d.ts +29 -0
- package/dist/types/store/atoms/navbarAtoms.d.ts +48 -0
- package/dist/types/store/atoms/owpSettingsAtoms.d.ts +89 -0
- package/dist/types/store/atoms/owpStore.d.ts +13 -0
- package/dist/types/store/index.d.ts +1 -3
- package/package.json +2 -6
- package/dist/hooks/useAppStore.js +0 -8
- package/dist/hooks/useAppStore.js.map +0 -1
- package/dist/store/generateReducersFromSlices.js +0 -18
- package/dist/store/generateReducersFromSlices.js.map +0 -1
- package/dist/store/lazyLoadedSlices.js +0 -16
- package/dist/store/lazyLoadedSlices.js.map +0 -1
- package/dist/store/middleware.js +0 -9
- package/dist/store/middleware.js.map +0 -1
- package/dist/store/navbarSlice.js +0 -71
- package/dist/store/navbarSlice.js.map +0 -1
- package/dist/store/navigationSlice.js +0 -46
- package/dist/store/navigationSlice.js.map +0 -1
- package/dist/store/owpSettingsSlice.js +0 -195
- package/dist/store/owpSettingsSlice.js.map +0 -1
- package/dist/store/store.js +0 -17
- package/dist/store/store.js.map +0 -1
- package/dist/store/withSlices.js +0 -27
- package/dist/store/withSlices.js.map +0 -1
- package/dist/types/hooks/useAppStore.d.ts +0 -7
- package/dist/types/store/generateReducersFromSlices.d.ts +0 -6
- package/dist/types/store/lazyLoadedSlices.d.ts +0 -9
- package/dist/types/store/middleware.d.ts +0 -17
- package/dist/types/store/navbarSlice.d.ts +0 -22
- package/dist/types/store/navigationSlice.d.ts +0 -93
- package/dist/types/store/owpSettingsSlice.d.ts +0 -112
- package/dist/types/store/store.d.ts +0 -13
- package/dist/types/store/withSlices.d.ts +0 -11
|
@@ -1,35 +1,33 @@
|
|
|
1
1
|
var G = Object.defineProperty;
|
|
2
2
|
var r = (e, o) => G(e, "name", { value: o, configurable: !0 });
|
|
3
|
-
import { jsx as t, jsxs as
|
|
3
|
+
import { jsx as t, jsxs as f, Fragment as H } 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 { useGetNavigationList as K } from "../../../hooks/useNavigation.js";
|
|
5
5
|
import { useOwpTranslation as _ } from "../../../hooks/useOwpTranslation.js";
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
import Y from "
|
|
10
|
-
import { Stack as Z } from "@mui/material";
|
|
11
|
-
import $ from "@mui/material/ClickAwayListener";
|
|
6
|
+
import { OwpNavigationHelper as J } from "../../../utils/navigationUtils.js";
|
|
7
|
+
import Q from "../../../node_modules/.pnpm/@mui_icons-material@7.3.9_@mui_material@7.3.9_@emotion_react@11.14.0_@types_react@19.2._dc2be6bc014bebdac88a574e3e02c144/node_modules/@mui/icons-material/esm/UnfoldLess.js";
|
|
8
|
+
import { Stack as X } from "@mui/material";
|
|
9
|
+
import Y from "@mui/material/ClickAwayListener";
|
|
12
10
|
import { grey as F } from "@mui/material/colors";
|
|
13
11
|
import k from "@mui/material/IconButton";
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
import
|
|
12
|
+
import Z from "@mui/material/ListItemIcon";
|
|
13
|
+
import $ from "@mui/material/ListItemText";
|
|
14
|
+
import ee from "@mui/material/MenuItem";
|
|
17
15
|
import C from "@mui/material/Paper";
|
|
18
16
|
import q from "@mui/material/Popper";
|
|
19
|
-
import { styled as
|
|
17
|
+
import { styled as te } from "@mui/material/styles";
|
|
20
18
|
import z from "@mui/material/TextField";
|
|
21
|
-
import
|
|
19
|
+
import ne from "@mui/material/Tooltip";
|
|
22
20
|
import E from "@mui/material/Typography";
|
|
23
21
|
import D from "../../../_virtual/index18.js";
|
|
24
|
-
import
|
|
25
|
-
import { clsx as
|
|
26
|
-
import { useMemo as
|
|
27
|
-
import
|
|
28
|
-
import { useNavigate as
|
|
29
|
-
import { toolbarToggleSx as
|
|
30
|
-
import { OwpSvgIcon as
|
|
31
|
-
import { trim as
|
|
32
|
-
const
|
|
22
|
+
import re from "../../../_virtual/index19.js";
|
|
23
|
+
import { clsx as B } from "../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js";
|
|
24
|
+
import { useMemo as oe, useReducer as ie, useRef as T, useEffect as se } from "react";
|
|
25
|
+
import W from "../../../_virtual/index20.js";
|
|
26
|
+
import { useNavigate as ae } from "react-router-dom";
|
|
27
|
+
import { toolbarToggleSx as le } from "./toggleStyles.js";
|
|
28
|
+
import { OwpSvgIcon as w } from "../../../components/OwpSvgIcon/OwpSvgIcon.js";
|
|
29
|
+
import { trim as ce } from "../../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/string/trim.js";
|
|
30
|
+
const ue = te("div")(({ theme: e }) => ({
|
|
33
31
|
"& .OwpSearch-container": {
|
|
34
32
|
position: "relative"
|
|
35
33
|
},
|
|
@@ -61,7 +59,7 @@ const he = re("div")(({ theme: e }) => ({
|
|
|
61
59
|
function A(e) {
|
|
62
60
|
const { variant: o, ref: i, inputRef: c = /* @__PURE__ */ r(() => {
|
|
63
61
|
}, "inputRef"), key: l, ...s } = e;
|
|
64
|
-
return /* @__PURE__ */ t("div", { className: "relative w-full", children: o === "basic" ? /* @__PURE__ */
|
|
62
|
+
return /* @__PURE__ */ t("div", { className: "relative w-full", children: o === "basic" ? /* @__PURE__ */ f(H, { children: [
|
|
65
63
|
/* @__PURE__ */ t(
|
|
66
64
|
z,
|
|
67
65
|
{
|
|
@@ -85,7 +83,7 @@ function A(e) {
|
|
|
85
83
|
}
|
|
86
84
|
),
|
|
87
85
|
/* @__PURE__ */ t(
|
|
88
|
-
|
|
86
|
+
w,
|
|
89
87
|
{
|
|
90
88
|
className: "pointer-events-none absolute top-0 h-36 w-36 p-8 ltr:right-0 rtl:left-0",
|
|
91
89
|
color: "action",
|
|
@@ -116,11 +114,11 @@ function A(e) {
|
|
|
116
114
|
r(A, "renderInputComponent");
|
|
117
115
|
function M(e, { query: o, isHighlighted: i }) {
|
|
118
116
|
var s;
|
|
119
|
-
const c = D((e == null ? void 0 : e.title) ?? "", o), l =
|
|
120
|
-
return /* @__PURE__ */
|
|
121
|
-
/* @__PURE__ */ t(
|
|
117
|
+
const c = D((e == null ? void 0 : e.title) ?? "", o), l = re((e == null ? void 0 : e.title) ?? "", c);
|
|
118
|
+
return /* @__PURE__ */ f(ee, { selected: !!i, component: "div", children: [
|
|
119
|
+
/* @__PURE__ */ t(Z, { className: "min-w-36", children: e.icon ? /* @__PURE__ */ t(w, { children: e.icon }) : /* @__PURE__ */ t("span", { className: "w-24 text-center text-2xl font-semibold uppercase", children: (s = e == null ? void 0 : e.title) == null ? void 0 : s[0] }) }),
|
|
122
120
|
/* @__PURE__ */ t(
|
|
123
|
-
|
|
121
|
+
$,
|
|
124
122
|
{
|
|
125
123
|
primary: l == null ? void 0 : l.map(
|
|
126
124
|
(a, p) => a.highlight ? /* @__PURE__ */ t("span", { style: { fontWeight: 600 }, children: a.text }, p) : /* @__PURE__ */ t("strong", { style: { fontWeight: 300 }, children: a.text }, p)
|
|
@@ -130,8 +128,8 @@ function M(e, { query: o, isHighlighted: i }) {
|
|
|
130
128
|
] });
|
|
131
129
|
}
|
|
132
130
|
r(M, "renderSuggestion");
|
|
133
|
-
function
|
|
134
|
-
const i =
|
|
131
|
+
function pe(e, o) {
|
|
132
|
+
const i = ce(e).toLowerCase(), c = i.length;
|
|
135
133
|
let l = 0;
|
|
136
134
|
return c === 0 ? [] : o.filter((s) => {
|
|
137
135
|
var p;
|
|
@@ -139,19 +137,19 @@ function de(e, o) {
|
|
|
139
137
|
return a && (l += 1), a;
|
|
140
138
|
});
|
|
141
139
|
}
|
|
142
|
-
r(
|
|
140
|
+
r(pe, "getSuggestions");
|
|
143
141
|
function j(e) {
|
|
144
142
|
return e.title;
|
|
145
143
|
}
|
|
146
144
|
r(j, "getSuggestionValue");
|
|
147
|
-
const
|
|
145
|
+
const he = {
|
|
148
146
|
searchText: "",
|
|
149
147
|
navigation: [],
|
|
150
148
|
suggestions: [],
|
|
151
149
|
noSuggestions: !1,
|
|
152
150
|
opened: !1
|
|
153
151
|
};
|
|
154
|
-
function
|
|
152
|
+
function de(e, o) {
|
|
155
153
|
switch (o.type) {
|
|
156
154
|
case "open":
|
|
157
155
|
return {
|
|
@@ -175,7 +173,7 @@ function me(e, o) {
|
|
|
175
173
|
navigation: o.data
|
|
176
174
|
};
|
|
177
175
|
case "updateSuggestions": {
|
|
178
|
-
const i =
|
|
176
|
+
const i = pe(o.value, e.navigation), l = !(typeof o.value == "string" && o.value.trim() === "") && i.length === 0;
|
|
179
177
|
return {
|
|
180
178
|
...e,
|
|
181
179
|
suggestions: i,
|
|
@@ -192,17 +190,17 @@ function me(e, o) {
|
|
|
192
190
|
throw new Error();
|
|
193
191
|
}
|
|
194
192
|
}
|
|
195
|
-
r(
|
|
196
|
-
function
|
|
193
|
+
r(de, "reducer");
|
|
194
|
+
function Ue(e) {
|
|
197
195
|
const o = K(), {
|
|
198
196
|
className: i,
|
|
199
197
|
variant: c = "full",
|
|
200
|
-
trigger: l = /* @__PURE__ */ t(k, { sx:
|
|
201
|
-
} = e, { t: s } = _(), a =
|
|
202
|
-
() =>
|
|
198
|
+
trigger: l = /* @__PURE__ */ t(k, { sx: le, children: /* @__PURE__ */ t(w, { size: 20, children: "heroicons-outline:magnifying-glass" }) })
|
|
199
|
+
} = e, { t: s } = _(), a = oe(
|
|
200
|
+
() => J.getFlatNavigation(o),
|
|
203
201
|
[o]
|
|
204
|
-
), p = (e == null ? void 0 : e.placeholder) ?? s("Common.검색"), b = e.noResults ?? s("Message.검색된 결과가 없습니다..."), [u, g] =
|
|
205
|
-
|
|
202
|
+
), p = (e == null ? void 0 : e.placeholder) ?? s("Common.검색"), b = e.noResults ?? s("Message.검색된 결과가 없습니다..."), [u, g] = ie(de, he), U = ae(), v = T(null), m = T(null), h = T(null);
|
|
203
|
+
se(() => {
|
|
206
204
|
g({
|
|
207
205
|
type: "setNavigation",
|
|
208
206
|
data: a
|
|
@@ -245,12 +243,12 @@ function fe(e) {
|
|
|
245
243
|
}
|
|
246
244
|
r(P, "handleChange");
|
|
247
245
|
function V(n) {
|
|
248
|
-
u.opened && (!
|
|
246
|
+
u.opened && (!m.current || !(n.target instanceof Node && m.current.contains(n.target))) && S();
|
|
249
247
|
}
|
|
250
248
|
switch (r(V, "handleClickAway"), c) {
|
|
251
249
|
case "basic":
|
|
252
|
-
return /* @__PURE__ */ t("div", { className:
|
|
253
|
-
|
|
250
|
+
return /* @__PURE__ */ t("div", { className: B("flex w-full items-center", i), ref: h, children: /* @__PURE__ */ t(
|
|
251
|
+
W,
|
|
254
252
|
{
|
|
255
253
|
renderInputComponent: A,
|
|
256
254
|
highlightFirstSuggestion: !0,
|
|
@@ -263,7 +261,7 @@ function fe(e) {
|
|
|
263
261
|
inputProps: {
|
|
264
262
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
265
263
|
// @ts-ignore
|
|
266
|
-
inputRef: /* @__PURE__ */ r((n) =>
|
|
264
|
+
inputRef: /* @__PURE__ */ r((n) => v.current = n, "inputRef"),
|
|
267
265
|
variant: c,
|
|
268
266
|
placeholder: p,
|
|
269
267
|
role: "search",
|
|
@@ -288,7 +286,7 @@ function fe(e) {
|
|
|
288
286
|
anchorEl: h.current,
|
|
289
287
|
open: !!n.children || u.noSuggestions,
|
|
290
288
|
className: "z-9999",
|
|
291
|
-
children: /* @__PURE__ */ t("div", { ref:
|
|
289
|
+
children: /* @__PURE__ */ t("div", { ref: m, children: /* @__PURE__ */ f(
|
|
292
290
|
C,
|
|
293
291
|
{
|
|
294
292
|
...N,
|
|
@@ -309,8 +307,8 @@ function fe(e) {
|
|
|
309
307
|
}
|
|
310
308
|
) });
|
|
311
309
|
case "full":
|
|
312
|
-
return /* @__PURE__ */
|
|
313
|
-
/* @__PURE__ */ t(
|
|
310
|
+
return /* @__PURE__ */ f(ue, { className: B("flex", i), children: [
|
|
311
|
+
/* @__PURE__ */ t(ne, { title: s("Title.메뉴 검색"), placement: "bottom", children: /* @__PURE__ */ t(
|
|
314
312
|
"div",
|
|
315
313
|
{
|
|
316
314
|
onClick: x,
|
|
@@ -320,9 +318,9 @@ function fe(e) {
|
|
|
320
318
|
children: l
|
|
321
319
|
}
|
|
322
320
|
) }),
|
|
323
|
-
u.opened && /* @__PURE__ */ t(
|
|
321
|
+
u.opened && /* @__PURE__ */ t(Y, { onClickAway: V, children: /* @__PURE__ */ t(C, { className: "absolute inset-x-0 top-0 z-9999 h-full shadow-0", square: !0, children: /* @__PURE__ */ f("div", { className: "flex h-full w-full items-center", ref: h, children: [
|
|
324
322
|
/* @__PURE__ */ t(
|
|
325
|
-
|
|
323
|
+
W,
|
|
326
324
|
{
|
|
327
325
|
renderInputComponent: A,
|
|
328
326
|
highlightFirstSuggestion: !0,
|
|
@@ -338,7 +336,7 @@ function fe(e) {
|
|
|
338
336
|
onChange: P,
|
|
339
337
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
340
338
|
// @ts-ignore
|
|
341
|
-
inputRef: /* @__PURE__ */ r((n) =>
|
|
339
|
+
inputRef: /* @__PURE__ */ r((n) => v.current = n, "inputRef"),
|
|
342
340
|
InputLabelProps: {
|
|
343
341
|
shrink: !0
|
|
344
342
|
},
|
|
@@ -357,7 +355,7 @@ function fe(e) {
|
|
|
357
355
|
anchorEl: h.current,
|
|
358
356
|
open: !!n.children || u.noSuggestions,
|
|
359
357
|
className: "z-9999",
|
|
360
|
-
children: /* @__PURE__ */ t("div", { ref:
|
|
358
|
+
children: /* @__PURE__ */ t("div", { ref: m, children: /* @__PURE__ */ f(
|
|
361
359
|
C,
|
|
362
360
|
{
|
|
363
361
|
square: !0,
|
|
@@ -378,7 +376,7 @@ function fe(e) {
|
|
|
378
376
|
}, "renderSuggestionsContainer")
|
|
379
377
|
}
|
|
380
378
|
),
|
|
381
|
-
/* @__PURE__ */
|
|
379
|
+
/* @__PURE__ */ f(X, { className: "mx-12", direction: "row", spacing: 1, children: [
|
|
382
380
|
/* @__PURE__ */ t(
|
|
383
381
|
k,
|
|
384
382
|
{
|
|
@@ -389,12 +387,12 @@ function fe(e) {
|
|
|
389
387
|
g({
|
|
390
388
|
type: "setSearchText",
|
|
391
389
|
value: ""
|
|
392
|
-
}), (n =
|
|
390
|
+
}), (n = v.current) == null || n.focus();
|
|
393
391
|
}, "onClick"),
|
|
394
|
-
children: /* @__PURE__ */ t(
|
|
392
|
+
children: /* @__PURE__ */ t(w, { children: "heroicons-outline:x-mark" })
|
|
395
393
|
}
|
|
396
394
|
),
|
|
397
|
-
/* @__PURE__ */ t(k, { sx: { color: F[600] }, size: "large", onClick: S, children: /* @__PURE__ */ t(
|
|
395
|
+
/* @__PURE__ */ t(k, { sx: { color: F[600] }, size: "large", onClick: S, children: /* @__PURE__ */ t(Q, {}) })
|
|
398
396
|
] })
|
|
399
397
|
] }) }) })
|
|
400
398
|
] });
|
|
@@ -402,11 +400,8 @@ function fe(e) {
|
|
|
402
400
|
return null;
|
|
403
401
|
}
|
|
404
402
|
}
|
|
405
|
-
r(
|
|
406
|
-
const _e = Q([J])(
|
|
407
|
-
fe
|
|
408
|
-
);
|
|
403
|
+
r(Ue, "NavigationSearchToggle");
|
|
409
404
|
export {
|
|
410
|
-
|
|
405
|
+
Ue as default
|
|
411
406
|
};
|
|
412
407
|
//# sourceMappingURL=NavigationSearchToggle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationSearchToggle.js","sources":["../../../../src/layout/components/toggles/NavigationSearchToggle.tsx"],"sourcesContent":["import { OwpSvgIcon } from '@/components/OwpSvgIcon';\nimport { useGetNavigationList } from '@/hooks/useNavigation';\nimport { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport { navigationSlice } from '@/store/navigationSlice';\nimport { withSlices } from '@/store/withSlices';\nimport type { OwpFlatNavItemType as FlatNavItemType } from '@/types/OwpNavigationTypes';\nimport { OwpNavigationHelper as NavigationHelper } from '@/utils/navigationUtils';\nimport UnfoldLessIcon from '@mui/icons-material/UnfoldLess';\nimport { Stack } from '@mui/material';\nimport ClickAwayListener from '@mui/material/ClickAwayListener';\nimport { grey } from '@mui/material/colors';\nimport IconButton from '@mui/material/IconButton';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport MenuItem from '@mui/material/MenuItem';\nimport Paper from '@mui/material/Paper';\nimport Popper from '@mui/material/Popper';\nimport { styled } from '@mui/material/styles';\nimport TextField from '@mui/material/TextField';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\nimport match from 'autosuggest-highlight/match';\nimport parse from 'autosuggest-highlight/parse';\nimport clsx from 'clsx';\nimport { trim } from 'es-toolkit/compat';\nimport { type FormEvent, type ReactNode, useEffect, useMemo, useReducer, useRef } from 'react';\nimport Autosuggest, {\n ChangeEvent,\n RenderInputComponentProps,\n RenderSuggestionParams,\n} from 'react-autosuggest';\nimport { useNavigate } from 'react-router-dom';\nimport { toolbarToggleSx } from './toggleStyles';\n\nconst Root = styled('div')(({ theme }) => ({\n '& .OwpSearch-container': {\n position: 'relative',\n },\n '& .OwpSearch-suggestionsContainerOpen': {\n position: 'absolute',\n zIndex: 1,\n marginTop: theme.spacing(),\n left: 0,\n right: 0,\n },\n '& .OwpSearch-suggestion': {\n display: 'block',\n },\n '& .OwpSearch-suggestionsList': {\n margin: 0,\n padding: 0,\n listStyleType: 'none',\n },\n '& .OwpSearch-input': {\n transition: theme.transitions.create(['background-color'], {\n easing: theme.transitions.easing.easeInOut,\n duration: theme.transitions.duration.short,\n }),\n '&:focus': {\n backgroundColor: theme.palette.background.paper,\n },\n },\n}));\n\ntype RenderInputComponentType = {\n variant?: 'basic' | 'standard';\n inputRef?: (node: HTMLInputElement) => void;\n ref?: (node: HTMLInputElement) => void;\n key?: string;\n};\n\nfunction renderInputComponent(props: RenderInputComponentProps) {\n const { variant, ref, inputRef = () => {}, key, ...other } = props as RenderInputComponentType;\n return (\n <div className=\"relative w-full\" key={key}>\n {variant === 'basic' ? (\n \n <>\n <TextField\n fullWidth\n autoComplete=\"off\"\n variant=\"outlined\"\n {...other}\n slotProps={{\n input: {\n name: 'auto-complete-search',\n role: 'search',\n inputRef: (node: HTMLInputElement) => {\n ref?.(node);\n inputRef(node);\n },\n classes: {\n input: 'OwpSearch-input py-0 px-16 h-36 md:h-36 ltr:pr-36 rtl:pl-36',\n notchedOutline: 'rounded-lg',\n },\n },\n }}\n />\n <OwpSvgIcon\n className=\"pointer-events-none absolute top-0 h-36 w-36 p-8 ltr:right-0 rtl:left-0\"\n color=\"action\"\n size={20}\n >\n heroicons-outline:magnifying-glass\n </OwpSvgIcon>\n </>\n ) : (\n \n <TextField\n fullWidth\n variant=\"standard\"\n {...other}\n slotProps={{\n input: {\n disableUnderline: true,\n inputRef: (node: HTMLInputElement) => {\n ref?.(node);\n inputRef(node);\n },\n classes: {\n input: 'OwpSearch-input py-0 px-16 h-36',\n },\n },\n }}\n />\n )}\n </div>\n );\n}\n\nfunction renderSuggestion(\n suggestion: FlatNavItemType,\n { query, isHighlighted }: RenderSuggestionParams,\n) {\n const matches = match(suggestion?.title ?? '', query);\n const parts = parse(suggestion?.title ?? '', matches);\n\n return (\n <MenuItem selected={Boolean(isHighlighted)} component=\"div\">\n <ListItemIcon className=\"min-w-36\">\n {suggestion.icon ? (\n <OwpSvgIcon>{suggestion.icon}</OwpSvgIcon>\n ) : (\n <span className=\"w-24 text-center text-2xl font-semibold uppercase\">\n {suggestion?.title?.[0]}\n </span>\n )}\n </ListItemIcon>\n <ListItemText\n primary={parts?.map((part: { text: string; highlight?: boolean }, index: number) =>\n part.highlight ? (\n <span key={index} style={{ fontWeight: 600 }}>\n {part.text}\n </span>\n ) : (\n <strong key={index} style={{ fontWeight: 300 }}>\n {part.text}\n </strong>\n ),\n )}\n />\n </MenuItem>\n );\n}\n\nfunction getSuggestions(value: string, data: FlatNavItemType[]): FlatNavItemType[] {\n const inputValue = trim(value).toLowerCase();\n const inputLength = inputValue.length;\n let count = 0;\n\n if (inputLength === 0) {\n return [];\n }\n\n return data.filter((suggestion) => {\n const keep =\n count < 10 &&\n suggestion?.title &&\n match(suggestion?.title ?? '', inputValue, { requireMatchAll: true })?.length > 0;\n\n if (keep) {\n count += 1;\n }\n\n return keep;\n });\n}\n\nfunction getSuggestionValue(suggestion: FlatNavItemType) {\n return suggestion.title;\n}\n\ntype StateType = {\n searchText: string;\n navigation: FlatNavItemType[];\n suggestions: FlatNavItemType[];\n noSuggestions: boolean;\n opened: boolean;\n};\n\nconst initialState: StateType = {\n searchText: '',\n navigation: [],\n suggestions: [],\n noSuggestions: false,\n opened: false,\n};\n\ntype ActionType =\n | { type: 'setSearchText'; value: string }\n | { type: 'setNavigation'; data: FlatNavItemType[] }\n | { type: 'updateSuggestions'; value: string }\n | { type: 'clearSuggestions' }\n | { type: 'open' }\n | { type: 'close' };\n\nfunction reducer(state: StateType, action: ActionType): StateType {\n switch (action.type) {\n case 'open': {\n return {\n ...state,\n opened: true,\n };\n }\n case 'close': {\n return {\n ...state,\n opened: false,\n searchText: '',\n };\n }\n case 'setSearchText': {\n return {\n ...state,\n searchText: action.value,\n };\n }\n case 'setNavigation': {\n return {\n ...state,\n navigation: action.data,\n };\n }\n case 'updateSuggestions': {\n const suggestions = getSuggestions(action.value, state.navigation);\n const isInputBlank = typeof action.value === 'string' && action.value.trim() === '';\n const noSuggestions = !isInputBlank && suggestions.length === 0;\n\n return {\n ...state,\n suggestions,\n noSuggestions,\n };\n }\n case 'clearSuggestions': {\n return {\n ...state,\n suggestions: [],\n noSuggestions: false,\n };\n }\n default: {\n throw new Error();\n }\n }\n}\n\n/**\n * Props for navigation search toggle.\n */\ntype NavigationSearchToggleProps = {\n className?: string;\n variant?: 'basic' | 'full';\n trigger?: ReactNode;\n placeholder?: string;\n noResults?: string;\n};\n\n/**\n * Navigation search toggle.\n */\nfunction NavigationSearchToggle(props: NavigationSearchToggleProps) {\n const navigation = useGetNavigationList();\n const {\n className,\n variant = 'full',\n trigger = (\n <IconButton sx={toolbarToggleSx}>\n <OwpSvgIcon size={20}>heroicons-outline:magnifying-glass</OwpSvgIcon>\n </IconButton>\n ),\n } = props;\n const { t } = useOwpTranslation();\n const flatNavigation = useMemo(\n () => NavigationHelper.getFlatNavigation(navigation) as FlatNavItemType[],\n [navigation],\n );\n const placeholder = props?.placeholder ?? t('Common.검색');\n const noResults = props.noResults ?? t('Message.검색된 결과가 없습니다...');\n\n const [state, dispatch] = useReducer(reducer, initialState);\n const navigate = useNavigate();\n\n const inputRef = useRef<HTMLInputElement>(null);\n const suggestionsNode = useRef<HTMLDivElement>(null);\n const popperNode = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n dispatch({\n type: 'setNavigation',\n data: flatNavigation,\n });\n }, [flatNavigation]);\n\n function showSearch() {\n dispatch({ type: 'open' });\n document.addEventListener('keydown', escFunction, false);\n }\n\n function hideSearch() {\n dispatch({ type: 'close' });\n document.removeEventListener('keydown', escFunction, false);\n }\n\n function escFunction(event: KeyboardEvent) {\n if (event.key === 'Esc' || event.key === 'Escape') {\n hideSearch();\n }\n }\n\n function handleSuggestionsFetchRequested({ value }: { value: string }) {\n dispatch({\n type: 'updateSuggestions',\n value,\n });\n }\n\n function handleSuggestionSelected(\n event: FormEvent<unknown>,\n { suggestion }: { suggestion: FlatNavItemType },\n ) {\n event.preventDefault();\n event.stopPropagation();\n\n if (!suggestion.url) {\n return;\n }\n\n navigate(suggestion.url);\n hideSearch();\n }\n\n function handleSuggestionsClearRequested() {\n dispatch({\n type: 'clearSuggestions',\n });\n }\n\n function handleChange(_event: FormEvent<HTMLElement>, { newValue }: ChangeEvent) {\n dispatch({\n type: 'setSearchText',\n value: newValue,\n });\n }\n\n function handleClickAway(event: MouseEvent | TouchEvent) {\n if (\n state.opened &&\n (!suggestionsNode.current ||\n !(event.target instanceof Node && suggestionsNode.current.contains(event.target)))\n ) {\n hideSearch();\n }\n }\n\n switch (variant) {\n case 'basic': {\n return (\n <div className={clsx('flex w-full items-center', className)} ref={popperNode}>\n <Autosuggest\n renderInputComponent={renderInputComponent}\n highlightFirstSuggestion\n suggestions={state.suggestions}\n onSuggestionsFetchRequested={handleSuggestionsFetchRequested}\n onSuggestionsClearRequested={handleSuggestionsClearRequested}\n onSuggestionSelected={handleSuggestionSelected}\n getSuggestionValue={getSuggestionValue}\n renderSuggestion={renderSuggestion}\n inputProps={{\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n inputRef: (node) => (inputRef.current = node),\n variant,\n placeholder,\n role: 'search',\n value: state.searchText,\n onChange: handleChange,\n onFocus: showSearch,\n InputLabelProps: {\n shrink: true,\n },\n autoFocus: false,\n }}\n theme={{\n container: 'flex flex-1 w-full',\n suggestionsList: 'OwpSearch-suggestionsList',\n suggestion: 'OwpSearch-suggestion',\n }}\n renderSuggestionsContainer={(options) => {\n const { containerProps } = options;\n const { key, ...restContainerProps } = containerProps;\n\n return (\n <Popper\n anchorEl={popperNode.current}\n open={Boolean(options.children) || state.noSuggestions}\n className=\"z-9999\"\n >\n <div ref={suggestionsNode}>\n <Paper\n key={key}\n {...restContainerProps}\n style={{\n width: popperNode.current ? popperNode.current.clientWidth : '',\n }}\n className=\"overflow-hidden rounded-lg shadow-lg\"\n >\n {options.children}\n {state.noSuggestions && (\n <Typography className=\"px-16 py-12\">{noResults}</Typography>\n )}\n </Paper>\n </div>\n </Popper>\n );\n }}\n />\n </div>\n );\n }\n case 'full': {\n return (\n <Root className={clsx('flex', className)}>\n <Tooltip title={t('Title.메뉴 검색')} placement=\"bottom\">\n <div\n onClick={showSearch}\n onKeyDown={showSearch}\n role=\"button\"\n tabIndex={0}\n >\n {trigger}\n </div>\n </Tooltip>\n\n {state.opened && (\n <ClickAwayListener onClickAway={handleClickAway}>\n <Paper className=\"absolute inset-x-0 top-0 z-9999 h-full shadow-0\" square>\n <div className=\"flex h-full w-full items-center\" ref={popperNode}>\n <Autosuggest\n renderInputComponent={renderInputComponent}\n highlightFirstSuggestion\n suggestions={state.suggestions}\n onSuggestionsFetchRequested={handleSuggestionsFetchRequested}\n onSuggestionsClearRequested={handleSuggestionsClearRequested}\n onSuggestionSelected={handleSuggestionSelected}\n getSuggestionValue={getSuggestionValue}\n renderSuggestion={renderSuggestion}\n inputProps={{\n placeholder,\n value: state.searchText,\n onChange: handleChange,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n inputRef: (node) => (inputRef.current = node),\n InputLabelProps: {\n shrink: true,\n },\n autoFocus: true,\n }}\n theme={{\n container: 'flex flex-1 w-full',\n suggestionsList: 'OwpSearch-suggestionsList',\n suggestion: 'OwpSearch-suggestion',\n }}\n renderSuggestionsContainer={(options) => {\n const { containerProps } = options;\n const { key, ...restContainerProps } = containerProps;\n\n return (\n <Popper\n anchorEl={popperNode.current}\n open={Boolean(options.children) || state.noSuggestions}\n className=\"z-9999\"\n >\n <div ref={suggestionsNode}>\n <Paper\n square\n key={key}\n {...restContainerProps}\n className=\"shadow-lg\"\n style={{\n width: popperNode.current ? popperNode.current.clientWidth : 'auto',\n }}\n >\n {options.children}\n {state.noSuggestions && (\n <Typography className=\"px-16 py-12\">{noResults}</Typography>\n )}\n </Paper>\n </div>\n </Popper>\n );\n }}\n />\n <Stack className=\"mx-12\" direction=\"row\" spacing={1}>\n <IconButton\n size=\"large\"\n sx={{ color: grey[600] }}\n onClick={() => {\n dispatch({\n type: 'setSearchText',\n value: '',\n });\n inputRef.current?.focus();\n }}\n >\n <OwpSvgIcon>heroicons-outline:x-mark</OwpSvgIcon>\n </IconButton>\n <IconButton sx={{ color: grey[600] }} size=\"large\" onClick={hideSearch}>\n <UnfoldLessIcon />\n </IconButton>\n </Stack>\n </div>\n </Paper>\n </ClickAwayListener>\n )}\n </Root>\n );\n }\n default: {\n return null;\n }\n }\n}\n\n/**\n * Memoized navigation search toggle.\n */\nconst NavigationSearchToggleWithSlices = withSlices<NavigationSearchToggleProps>([navigationSlice])(\n NavigationSearchToggle,\n);\n\nexport default NavigationSearchToggleWithSlices;\n"],"names":["Root","styled","theme","renderInputComponent","props","variant","ref","inputRef","__name","key","other","jsxs","Fragment","jsx","TextField","node","OwpSvgIcon","renderSuggestion","suggestion","query","isHighlighted","matches","match","parts","parse","MenuItem","ListItemIcon","ListItemText","part","index","getSuggestions","value","data","inputValue","trim","inputLength","count","keep","_a","getSuggestionValue","initialState","reducer","state","action","suggestions","noSuggestions","NavigationSearchToggle","navigation","useGetNavigationList","className","trigger","IconButton","toolbarToggleSx","t","useOwpTranslation","flatNavigation","useMemo","NavigationHelper","placeholder","noResults","dispatch","useReducer","navigate","useNavigate","useRef","suggestionsNode","popperNode","useEffect","showSearch","escFunction","hideSearch","event","handleSuggestionsFetchRequested","handleSuggestionSelected","handleSuggestionsClearRequested","handleChange","_event","newValue","handleClickAway","clsx","Autosuggest","options","containerProps","restContainerProps","Popper","Paper","Typography","Tooltip","ClickAwayListener","Stack","grey","UnfoldLessIcon","NavigationSearchToggleWithSlices","withSlices","navigationSlice"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NavigationSearchToggle.js","sources":["../../../../src/layout/components/toggles/NavigationSearchToggle.tsx"],"sourcesContent":["import { OwpSvgIcon } from '@/components/OwpSvgIcon';\nimport { useGetNavigationList } from '@/hooks/useNavigation';\nimport { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport type { OwpFlatNavItemType as FlatNavItemType } from '@/types/OwpNavigationTypes';\nimport { OwpNavigationHelper as NavigationHelper } from '@/utils/navigationUtils';\nimport UnfoldLessIcon from '@mui/icons-material/UnfoldLess';\nimport { Stack } from '@mui/material';\nimport ClickAwayListener from '@mui/material/ClickAwayListener';\nimport { grey } from '@mui/material/colors';\nimport IconButton from '@mui/material/IconButton';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport MenuItem from '@mui/material/MenuItem';\nimport Paper from '@mui/material/Paper';\nimport Popper from '@mui/material/Popper';\nimport { styled } from '@mui/material/styles';\nimport TextField from '@mui/material/TextField';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\nimport match from 'autosuggest-highlight/match';\nimport parse from 'autosuggest-highlight/parse';\nimport clsx from 'clsx';\nimport { trim } from 'es-toolkit/compat';\nimport { type FormEvent, type ReactNode, useEffect, useMemo, useReducer, useRef } from 'react';\nimport Autosuggest, {\n ChangeEvent,\n RenderInputComponentProps,\n RenderSuggestionParams,\n} from 'react-autosuggest';\nimport { useNavigate } from 'react-router-dom';\nimport { toolbarToggleSx } from './toggleStyles';\n\nconst Root = styled('div')(({ theme }) => ({\n '& .OwpSearch-container': {\n position: 'relative',\n },\n '& .OwpSearch-suggestionsContainerOpen': {\n position: 'absolute',\n zIndex: 1,\n marginTop: theme.spacing(),\n left: 0,\n right: 0,\n },\n '& .OwpSearch-suggestion': {\n display: 'block',\n },\n '& .OwpSearch-suggestionsList': {\n margin: 0,\n padding: 0,\n listStyleType: 'none',\n },\n '& .OwpSearch-input': {\n transition: theme.transitions.create(['background-color'], {\n easing: theme.transitions.easing.easeInOut,\n duration: theme.transitions.duration.short,\n }),\n '&:focus': {\n backgroundColor: theme.palette.background.paper,\n },\n },\n}));\n\ntype RenderInputComponentType = {\n variant?: 'basic' | 'standard';\n inputRef?: (node: HTMLInputElement) => void;\n ref?: (node: HTMLInputElement) => void;\n key?: string;\n};\n\nfunction renderInputComponent(props: RenderInputComponentProps) {\n const { variant, ref, inputRef = () => {}, key, ...other } = props as RenderInputComponentType;\n return (\n <div className=\"relative w-full\" key={key}>\n {variant === 'basic' ? (\n \n <>\n <TextField\n fullWidth\n autoComplete=\"off\"\n variant=\"outlined\"\n {...other}\n slotProps={{\n input: {\n name: 'auto-complete-search',\n role: 'search',\n inputRef: (node: HTMLInputElement) => {\n ref?.(node);\n inputRef(node);\n },\n classes: {\n input: 'OwpSearch-input py-0 px-16 h-36 md:h-36 ltr:pr-36 rtl:pl-36',\n notchedOutline: 'rounded-lg',\n },\n },\n }}\n />\n <OwpSvgIcon\n className=\"pointer-events-none absolute top-0 h-36 w-36 p-8 ltr:right-0 rtl:left-0\"\n color=\"action\"\n size={20}\n >\n heroicons-outline:magnifying-glass\n </OwpSvgIcon>\n </>\n ) : (\n \n <TextField\n fullWidth\n variant=\"standard\"\n {...other}\n slotProps={{\n input: {\n disableUnderline: true,\n inputRef: (node: HTMLInputElement) => {\n ref?.(node);\n inputRef(node);\n },\n classes: {\n input: 'OwpSearch-input py-0 px-16 h-36',\n },\n },\n }}\n />\n )}\n </div>\n );\n}\n\nfunction renderSuggestion(\n suggestion: FlatNavItemType,\n { query, isHighlighted }: RenderSuggestionParams,\n) {\n const matches = match(suggestion?.title ?? '', query);\n const parts = parse(suggestion?.title ?? '', matches);\n\n return (\n <MenuItem selected={Boolean(isHighlighted)} component=\"div\">\n <ListItemIcon className=\"min-w-36\">\n {suggestion.icon ? (\n <OwpSvgIcon>{suggestion.icon}</OwpSvgIcon>\n ) : (\n <span className=\"w-24 text-center text-2xl font-semibold uppercase\">\n {suggestion?.title?.[0]}\n </span>\n )}\n </ListItemIcon>\n <ListItemText\n primary={parts?.map((part: { text: string; highlight?: boolean }, index: number) =>\n part.highlight ? (\n <span key={index} style={{ fontWeight: 600 }}>\n {part.text}\n </span>\n ) : (\n <strong key={index} style={{ fontWeight: 300 }}>\n {part.text}\n </strong>\n ),\n )}\n />\n </MenuItem>\n );\n}\n\nfunction getSuggestions(value: string, data: FlatNavItemType[]): FlatNavItemType[] {\n const inputValue = trim(value).toLowerCase();\n const inputLength = inputValue.length;\n let count = 0;\n\n if (inputLength === 0) {\n return [];\n }\n\n return data.filter((suggestion) => {\n const keep =\n count < 10 &&\n suggestion?.title &&\n match(suggestion?.title ?? '', inputValue, { requireMatchAll: true })?.length > 0;\n\n if (keep) {\n count += 1;\n }\n\n return keep;\n });\n}\n\nfunction getSuggestionValue(suggestion: FlatNavItemType) {\n return suggestion.title;\n}\n\ntype StateType = {\n searchText: string;\n navigation: FlatNavItemType[];\n suggestions: FlatNavItemType[];\n noSuggestions: boolean;\n opened: boolean;\n};\n\nconst initialState: StateType = {\n searchText: '',\n navigation: [],\n suggestions: [],\n noSuggestions: false,\n opened: false,\n};\n\ntype ActionType =\n | { type: 'setSearchText'; value: string }\n | { type: 'setNavigation'; data: FlatNavItemType[] }\n | { type: 'updateSuggestions'; value: string }\n | { type: 'clearSuggestions' }\n | { type: 'open' }\n | { type: 'close' };\n\nfunction reducer(state: StateType, action: ActionType): StateType {\n switch (action.type) {\n case 'open': {\n return {\n ...state,\n opened: true,\n };\n }\n case 'close': {\n return {\n ...state,\n opened: false,\n searchText: '',\n };\n }\n case 'setSearchText': {\n return {\n ...state,\n searchText: action.value,\n };\n }\n case 'setNavigation': {\n return {\n ...state,\n navigation: action.data,\n };\n }\n case 'updateSuggestions': {\n const suggestions = getSuggestions(action.value, state.navigation);\n const isInputBlank = typeof action.value === 'string' && action.value.trim() === '';\n const noSuggestions = !isInputBlank && suggestions.length === 0;\n\n return {\n ...state,\n suggestions,\n noSuggestions,\n };\n }\n case 'clearSuggestions': {\n return {\n ...state,\n suggestions: [],\n noSuggestions: false,\n };\n }\n default: {\n throw new Error();\n }\n }\n}\n\n/**\n * Props for navigation search toggle.\n */\ntype NavigationSearchToggleProps = {\n className?: string;\n variant?: 'basic' | 'full';\n trigger?: ReactNode;\n placeholder?: string;\n noResults?: string;\n};\n\n/**\n * Navigation search toggle.\n */\nfunction NavigationSearchToggle(props: NavigationSearchToggleProps) {\n const navigation = useGetNavigationList();\n const {\n className,\n variant = 'full',\n trigger = (\n <IconButton sx={toolbarToggleSx}>\n <OwpSvgIcon size={20}>heroicons-outline:magnifying-glass</OwpSvgIcon>\n </IconButton>\n ),\n } = props;\n const { t } = useOwpTranslation();\n const flatNavigation = useMemo(\n () => NavigationHelper.getFlatNavigation(navigation) as FlatNavItemType[],\n [navigation],\n );\n const placeholder = props?.placeholder ?? t('Common.검색');\n const noResults = props.noResults ?? t('Message.검색된 결과가 없습니다...');\n\n const [state, dispatch] = useReducer(reducer, initialState);\n const navigate = useNavigate();\n\n const inputRef = useRef<HTMLInputElement>(null);\n const suggestionsNode = useRef<HTMLDivElement>(null);\n const popperNode = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n dispatch({\n type: 'setNavigation',\n data: flatNavigation,\n });\n }, [flatNavigation]);\n\n function showSearch() {\n dispatch({ type: 'open' });\n document.addEventListener('keydown', escFunction, false);\n }\n\n function hideSearch() {\n dispatch({ type: 'close' });\n document.removeEventListener('keydown', escFunction, false);\n }\n\n function escFunction(event: KeyboardEvent) {\n if (event.key === 'Esc' || event.key === 'Escape') {\n hideSearch();\n }\n }\n\n function handleSuggestionsFetchRequested({ value }: { value: string }) {\n dispatch({\n type: 'updateSuggestions',\n value,\n });\n }\n\n function handleSuggestionSelected(\n event: FormEvent<unknown>,\n { suggestion }: { suggestion: FlatNavItemType },\n ) {\n event.preventDefault();\n event.stopPropagation();\n\n if (!suggestion.url) {\n return;\n }\n\n navigate(suggestion.url);\n hideSearch();\n }\n\n function handleSuggestionsClearRequested() {\n dispatch({\n type: 'clearSuggestions',\n });\n }\n\n function handleChange(_event: FormEvent<HTMLElement>, { newValue }: ChangeEvent) {\n dispatch({\n type: 'setSearchText',\n value: newValue,\n });\n }\n\n function handleClickAway(event: MouseEvent | TouchEvent) {\n if (\n state.opened &&\n (!suggestionsNode.current ||\n !(event.target instanceof Node && suggestionsNode.current.contains(event.target)))\n ) {\n hideSearch();\n }\n }\n\n switch (variant) {\n case 'basic': {\n return (\n <div className={clsx('flex w-full items-center', className)} ref={popperNode}>\n <Autosuggest\n renderInputComponent={renderInputComponent}\n highlightFirstSuggestion\n suggestions={state.suggestions}\n onSuggestionsFetchRequested={handleSuggestionsFetchRequested}\n onSuggestionsClearRequested={handleSuggestionsClearRequested}\n onSuggestionSelected={handleSuggestionSelected}\n getSuggestionValue={getSuggestionValue}\n renderSuggestion={renderSuggestion}\n inputProps={{\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n inputRef: (node) => (inputRef.current = node),\n variant,\n placeholder,\n role: 'search',\n value: state.searchText,\n onChange: handleChange,\n onFocus: showSearch,\n InputLabelProps: {\n shrink: true,\n },\n autoFocus: false,\n }}\n theme={{\n container: 'flex flex-1 w-full',\n suggestionsList: 'OwpSearch-suggestionsList',\n suggestion: 'OwpSearch-suggestion',\n }}\n renderSuggestionsContainer={(options) => {\n const { containerProps } = options;\n const { key, ...restContainerProps } = containerProps;\n\n return (\n <Popper\n anchorEl={popperNode.current}\n open={Boolean(options.children) || state.noSuggestions}\n className=\"z-9999\"\n >\n <div ref={suggestionsNode}>\n <Paper\n key={key}\n {...restContainerProps}\n style={{\n width: popperNode.current ? popperNode.current.clientWidth : '',\n }}\n className=\"overflow-hidden rounded-lg shadow-lg\"\n >\n {options.children}\n {state.noSuggestions && (\n <Typography className=\"px-16 py-12\">{noResults}</Typography>\n )}\n </Paper>\n </div>\n </Popper>\n );\n }}\n />\n </div>\n );\n }\n case 'full': {\n return (\n <Root className={clsx('flex', className)}>\n <Tooltip title={t('Title.메뉴 검색')} placement=\"bottom\">\n <div\n onClick={showSearch}\n onKeyDown={showSearch}\n role=\"button\"\n tabIndex={0}\n >\n {trigger}\n </div>\n </Tooltip>\n\n {state.opened && (\n <ClickAwayListener onClickAway={handleClickAway}>\n <Paper className=\"absolute inset-x-0 top-0 z-9999 h-full shadow-0\" square>\n <div className=\"flex h-full w-full items-center\" ref={popperNode}>\n <Autosuggest\n renderInputComponent={renderInputComponent}\n highlightFirstSuggestion\n suggestions={state.suggestions}\n onSuggestionsFetchRequested={handleSuggestionsFetchRequested}\n onSuggestionsClearRequested={handleSuggestionsClearRequested}\n onSuggestionSelected={handleSuggestionSelected}\n getSuggestionValue={getSuggestionValue}\n renderSuggestion={renderSuggestion}\n inputProps={{\n placeholder,\n value: state.searchText,\n onChange: handleChange,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n inputRef: (node) => (inputRef.current = node),\n InputLabelProps: {\n shrink: true,\n },\n autoFocus: true,\n }}\n theme={{\n container: 'flex flex-1 w-full',\n suggestionsList: 'OwpSearch-suggestionsList',\n suggestion: 'OwpSearch-suggestion',\n }}\n renderSuggestionsContainer={(options) => {\n const { containerProps } = options;\n const { key, ...restContainerProps } = containerProps;\n\n return (\n <Popper\n anchorEl={popperNode.current}\n open={Boolean(options.children) || state.noSuggestions}\n className=\"z-9999\"\n >\n <div ref={suggestionsNode}>\n <Paper\n square\n key={key}\n {...restContainerProps}\n className=\"shadow-lg\"\n style={{\n width: popperNode.current ? popperNode.current.clientWidth : 'auto',\n }}\n >\n {options.children}\n {state.noSuggestions && (\n <Typography className=\"px-16 py-12\">{noResults}</Typography>\n )}\n </Paper>\n </div>\n </Popper>\n );\n }}\n />\n <Stack className=\"mx-12\" direction=\"row\" spacing={1}>\n <IconButton\n size=\"large\"\n sx={{ color: grey[600] }}\n onClick={() => {\n dispatch({\n type: 'setSearchText',\n value: '',\n });\n inputRef.current?.focus();\n }}\n >\n <OwpSvgIcon>heroicons-outline:x-mark</OwpSvgIcon>\n </IconButton>\n <IconButton sx={{ color: grey[600] }} size=\"large\" onClick={hideSearch}>\n <UnfoldLessIcon />\n </IconButton>\n </Stack>\n </div>\n </Paper>\n </ClickAwayListener>\n )}\n </Root>\n );\n }\n default: {\n return null;\n }\n }\n}\n\n/**\n * Memoized navigation search toggle.\n */\nexport default NavigationSearchToggle;\n"],"names":["Root","styled","theme","renderInputComponent","props","variant","ref","inputRef","__name","key","other","jsxs","Fragment","jsx","TextField","node","OwpSvgIcon","renderSuggestion","suggestion","query","isHighlighted","matches","match","parts","parse","MenuItem","ListItemIcon","ListItemText","part","index","getSuggestions","value","data","inputValue","trim","inputLength","count","keep","_a","getSuggestionValue","initialState","reducer","state","action","suggestions","noSuggestions","NavigationSearchToggle","navigation","useGetNavigationList","className","trigger","IconButton","toolbarToggleSx","t","useOwpTranslation","flatNavigation","useMemo","NavigationHelper","placeholder","noResults","dispatch","useReducer","navigate","useNavigate","useRef","suggestionsNode","popperNode","useEffect","showSearch","escFunction","hideSearch","event","handleSuggestionsFetchRequested","handleSuggestionSelected","handleSuggestionsClearRequested","handleChange","_event","newValue","handleClickAway","clsx","Autosuggest","options","containerProps","restContainerProps","Popper","Paper","Typography","Tooltip","ClickAwayListener","Stack","grey","UnfoldLessIcon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,MAAMA,KAAOC,GAAO,KAAK,EAAE,CAAC,EAAE,OAAAC,SAAa;AAAA,EACzC,0BAA0B;AAAA,IACxB,UAAU;AAAA,EAAA;AAAA,EAEZ,yCAAyC;AAAA,IACvC,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,WAAWA,EAAM,QAAA;AAAA,IACjB,MAAM;AAAA,IACN,OAAO;AAAA,EAAA;AAAA,EAET,2BAA2B;AAAA,IACzB,SAAS;AAAA,EAAA;AAAA,EAEX,gCAAgC;AAAA,IAC9B,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,eAAe;AAAA,EAAA;AAAA,EAEjB,sBAAsB;AAAA,IACpB,YAAYA,EAAM,YAAY,OAAO,CAAC,kBAAkB,GAAG;AAAA,MACzD,QAAQA,EAAM,YAAY,OAAO;AAAA,MACjC,UAAUA,EAAM,YAAY,SAAS;AAAA,IAAA,CACtC;AAAA,IACD,WAAW;AAAA,MACT,iBAAiBA,EAAM,QAAQ,WAAW;AAAA,IAAA;AAAA,EAC5C;AAEJ,EAAE;AASF,SAASC,EAAqBC,GAAkC;AAC9D,QAAM,EAAE,SAAAC,GAAS,KAAAC,GAAK,UAAAC,IAAW,gBAAAC,EAAA,MAAM;AAAA,EAAC,GAAP,aAAU,KAAAC,GAAK,GAAGC,EAAA,IAAUN;AAC7D,2BACG,OAAA,EAAI,WAAU,mBACZ,UAAAC,MAAY,UAEX,gBAAAM,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,WAAS;AAAA,QACT,cAAa;AAAA,QACb,SAAQ;AAAA,QACP,GAAGJ;AAAA,QACJ,WAAW;AAAA,UACT,OAAO;AAAA,YACL,MAAM;AAAA,YACN,MAAM;AAAA,YACN,UAAU,gBAAAF,EAAA,CAACO,MAA2B;AACpC,cAAAT,KAAA,QAAAA,EAAMS,IACNR,EAASQ,CAAI;AAAA,YACf,GAHU;AAAA,YAIV,SAAS;AAAA,cACP,OAAO;AAAA,cACP,gBAAgB;AAAA,YAAA;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,IAAA;AAAA,IAEF,gBAAAF;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAM;AAAA,QACN,MAAM;AAAA,QACP,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAED,EAAA,CACF,IAGA,gBAAAH;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAS;AAAA,MACT,SAAQ;AAAA,MACP,GAAGJ;AAAA,MACJ,WAAW;AAAA,QACT,OAAO;AAAA,UACL,kBAAkB;AAAA,UAClB,UAAU,gBAAAF,EAAA,CAACO,MAA2B;AACpC,YAAAT,KAAA,QAAAA,EAAMS,IACNR,EAASQ,CAAI;AAAA,UACf,GAHU;AAAA,UAIV,SAAS;AAAA,YACP,OAAO;AAAA,UAAA;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EAAA,KAjDgCN,CAoDtC;AAEJ;AAzDSD,EAAAL,GAAA;AA2DT,SAASc,EACPC,GACA,EAAE,OAAAC,GAAO,eAAAC,KACT;;AACA,QAAMC,IAAUC,GAAMJ,KAAA,gBAAAA,EAAY,UAAS,IAAIC,CAAK,GAC9CI,IAAQC,IAAMN,KAAA,gBAAAA,EAAY,UAAS,IAAIG,CAAO;AAEpD,2BACGI,IAAA,EAAS,UAAU,EAAQL,GAAgB,WAAU,OACpD,UAAA;AAAA,IAAA,gBAAAP,EAACa,KAAa,WAAU,YACrB,YAAW,OACV,gBAAAb,EAACG,KAAY,UAAAE,EAAW,KAAA,CAAK,IAE7B,gBAAAL,EAAC,UAAK,WAAU,qDACb,sCAAY,4BAAQ,IACvB,EAAA,CAEJ;AAAA,IACA,gBAAAA;AAAA,MAACc;AAAA,MAAA;AAAA,QACC,SAASJ,KAAA,gBAAAA,EAAO;AAAA,UAAI,CAACK,GAA6CC,MAChED,EAAK,8BACF,QAAA,EAAiB,OAAO,EAAE,YAAY,IAAA,GACpC,YAAK,KAAA,GADGC,CAEX,IAEA,gBAAAhB,EAAC,UAAA,EAAmB,OAAO,EAAE,YAAY,IAAA,GACtC,UAAAe,EAAK,KAAA,GADKC,CAEb;AAAA;AAAA,MAEJ;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;AAjCSrB,EAAAS,GAAA;AAmCT,SAASa,GAAeC,GAAeC,GAA4C;AACjF,QAAMC,IAAaC,GAAKH,CAAK,EAAE,YAAA,GACzBI,IAAcF,EAAW;AAC/B,MAAIG,IAAQ;AAEZ,SAAID,MAAgB,IACX,CAAA,IAGFH,EAAK,OAAO,CAACd,MAAe;;AACjC,UAAMmB,IACJD,IAAQ,OACRlB,KAAA,gBAAAA,EAAY,YACZoB,IAAAhB,GAAMJ,KAAA,gBAAAA,EAAY,UAAS,IAAIe,GAAY,EAAE,iBAAiB,GAAA,CAAM,MAApE,gBAAAK,EAAuE,UAAS;AAElF,WAAID,MACFD,KAAS,IAGJC;AAAA,EACT,CAAC;AACH;AArBS7B,EAAAsB,IAAA;AAuBT,SAASS,EAAmBrB,GAA6B;AACvD,SAAOA,EAAW;AACpB;AAFSV,EAAA+B,GAAA;AAYT,MAAMC,KAA0B;AAAA,EAC9B,YAAY;AAAA,EACZ,YAAY,CAAA;AAAA,EACZ,aAAa,CAAA;AAAA,EACb,eAAe;AAAA,EACf,QAAQ;AACV;AAUA,SAASC,GAAQC,GAAkBC,GAA+B;AAChE,UAAQA,EAAO,MAAA;AAAA,IACb,KAAK;AACH,aAAO;AAAA,QACL,GAAGD;AAAA,QACH,QAAQ;AAAA,MAAA;AAAA,IAGZ,KAAK;AACH,aAAO;AAAA,QACL,GAAGA;AAAA,QACH,QAAQ;AAAA,QACR,YAAY;AAAA,MAAA;AAAA,IAGhB,KAAK;AACH,aAAO;AAAA,QACL,GAAGA;AAAA,QACH,YAAYC,EAAO;AAAA,MAAA;AAAA,IAGvB,KAAK;AACH,aAAO;AAAA,QACL,GAAGD;AAAA,QACH,YAAYC,EAAO;AAAA,MAAA;AAAA,IAGvB,KAAK,qBAAqB;AACxB,YAAMC,IAAcd,GAAea,EAAO,OAAOD,EAAM,UAAU,GAE3DG,IAAgB,EADD,OAAOF,EAAO,SAAU,YAAYA,EAAO,MAAM,WAAW,OAC1CC,EAAY,WAAW;AAE9D,aAAO;AAAA,QACL,GAAGF;AAAA,QACH,aAAAE;AAAA,QACA,eAAAC;AAAA,MAAA;AAAA,IAEJ;AAAA,IACA,KAAK;AACH,aAAO;AAAA,QACL,GAAGH;AAAA,QACH,aAAa,CAAA;AAAA,QACb,eAAe;AAAA,MAAA;AAAA,IAGnB;AACE,YAAM,IAAI,MAAA;AAAA,EACZ;AAEJ;AAjDSlC,EAAAiC,IAAA;AAiET,SAASK,GAAuB1C,GAAoC;AAClE,QAAM2C,IAAaC,EAAA,GACb;AAAA,IACJ,WAAAC;AAAA,IACA,SAAA5C,IAAU;AAAA,IACV,SAAA6C,IACE,gBAAArC,EAACsC,GAAA,EAAW,IAAIC,IACd,4BAACpC,GAAA,EAAW,MAAM,IAAI,UAAA,qCAAA,CAAkC,EAAA,CAC1D;AAAA,EAAA,IAEAZ,GACE,EAAE,GAAAiD,EAAA,IAAMC,EAAA,GACRC,IAAiBC;AAAA,IACrB,MAAMC,EAAiB,kBAAkBV,CAAU;AAAA,IACnD,CAACA,CAAU;AAAA,EAAA,GAEPW,KAActD,KAAA,gBAAAA,EAAO,gBAAeiD,EAAE,WAAW,GACjDM,IAAYvD,EAAM,aAAaiD,EAAE,yBAAyB,GAE1D,CAACX,GAAOkB,CAAQ,IAAIC,GAAWpB,IAASD,EAAY,GACpDsB,IAAWC,GAAA,GAEXxD,IAAWyD,EAAyB,IAAI,GACxCC,IAAkBD,EAAuB,IAAI,GAC7CE,IAAaF,EAAuB,IAAI;AAE9C,EAAAG,GAAU,MAAM;AACd,IAAAP,EAAS;AAAA,MACP,MAAM;AAAA,MACN,MAAML;AAAA,IAAA,CACP;AAAA,EACH,GAAG,CAACA,CAAc,CAAC;AAEnB,WAASa,IAAa;AACpB,IAAAR,EAAS,EAAE,MAAM,QAAQ,GACzB,SAAS,iBAAiB,WAAWS,GAAa,EAAK;AAAA,EACzD;AAHS,EAAA7D,EAAA4D,GAAA;AAKT,WAASE,IAAa;AACpB,IAAAV,EAAS,EAAE,MAAM,SAAS,GAC1B,SAAS,oBAAoB,WAAWS,GAAa,EAAK;AAAA,EAC5D;AAHS,EAAA7D,EAAA8D,GAAA;AAKT,WAASD,EAAYE,GAAsB;AACzC,KAAIA,EAAM,QAAQ,SAASA,EAAM,QAAQ,aACvCD,EAAA;AAAA,EAEJ;AAJS,EAAA9D,EAAA6D,GAAA;AAMT,WAASG,EAAgC,EAAE,OAAAzC,KAA4B;AACrE,IAAA6B,EAAS;AAAA,MACP,MAAM;AAAA,MACN,OAAA7B;AAAA,IAAA,CACD;AAAA,EACH;AALS,EAAAvB,EAAAgE,GAAA;AAOT,WAASC,EACPF,GACA,EAAE,YAAArD,KACF;AAIA,IAHAqD,EAAM,eAAA,GACNA,EAAM,gBAAA,GAEDrD,EAAW,QAIhB4C,EAAS5C,EAAW,GAAG,GACvBoD,EAAA;AAAA,EACF;AAbS,EAAA9D,EAAAiE,GAAA;AAeT,WAASC,IAAkC;AACzC,IAAAd,EAAS;AAAA,MACP,MAAM;AAAA,IAAA,CACP;AAAA,EACH;AAJS,EAAApD,EAAAkE,GAAA;AAMT,WAASC,EAAaC,GAAgC,EAAE,UAAAC,KAAyB;AAC/E,IAAAjB,EAAS;AAAA,MACP,MAAM;AAAA,MACN,OAAOiB;AAAA,IAAA,CACR;AAAA,EACH;AALS,EAAArE,EAAAmE,GAAA;AAOT,WAASG,EAAgBP,GAAgC;AACvD,IACE7B,EAAM,WACL,CAACuB,EAAgB,WAChB,EAAEM,EAAM,kBAAkB,QAAQN,EAAgB,QAAQ,SAASM,EAAM,MAAM,OAEjFD,EAAA;AAAA,EAEJ;AAEA,UAVS9D,EAAAsE,GAAA,oBAUDzE,GAAA;AAAA,IACN,KAAK;AACH,aACE,gBAAAQ,EAAC,SAAI,WAAWkE,EAAK,4BAA4B9B,CAAS,GAAG,KAAKiB,GAChE,UAAA,gBAAArD;AAAA,QAACmE;AAAA,QAAA;AAAA,UACC,sBAAA7E;AAAA,UACA,0BAAwB;AAAA,UACxB,aAAauC,EAAM;AAAA,UACnB,6BAA6B8B;AAAA,UAC7B,6BAA6BE;AAAA,UAC7B,sBAAsBD;AAAA,UACtB,oBAAAlC;AAAA,UACA,kBAAAtB;AAAA,UACA,YAAY;AAAA;AAAA;AAAA,YAGV,UAAU,gBAAAT,EAAA,CAACO,MAAUR,EAAS,UAAUQ,GAA9B;AAAA,YACV,SAAAV;AAAA,YACA,aAAAqD;AAAA,YACA,MAAM;AAAA,YACN,OAAOhB,EAAM;AAAA,YACb,UAAUiC;AAAA,YACV,SAASP;AAAA,YACT,iBAAiB;AAAA,cACf,QAAQ;AAAA,YAAA;AAAA,YAEV,WAAW;AAAA,UAAA;AAAA,UAEb,OAAO;AAAA,YACL,WAAW;AAAA,YACX,iBAAiB;AAAA,YACjB,YAAY;AAAA,UAAA;AAAA,UAEd,4BAA4B,gBAAA5D,EAAA,CAACyE,MAAY;AACvC,kBAAM,EAAE,gBAAAC,MAAmBD,GACrB,EAAE,KAAAxE,GAAK,GAAG0E,EAAA,IAAuBD;AAEvC,mBACE,gBAAArE;AAAA,cAACuE;AAAA,cAAA;AAAA,gBACC,UAAUlB,EAAW;AAAA,gBACrB,MAAM,EAAQe,EAAQ,YAAavC,EAAM;AAAA,gBACzC,WAAU;AAAA,gBAEV,UAAA,gBAAA7B,EAAC,OAAA,EAAI,KAAKoD,GACR,UAAA,gBAAAtD;AAAA,kBAAC0E;AAAA,kBAAA;AAAA,oBAEE,GAAGF;AAAA,oBACJ,OAAO;AAAA,sBACL,OAAOjB,EAAW,UAAUA,EAAW,QAAQ,cAAc;AAAA,oBAAA;AAAA,oBAE/D,WAAU;AAAA,oBAET,UAAA;AAAA,sBAAAe,EAAQ;AAAA,sBACRvC,EAAM,iBACL,gBAAA7B,EAACyE,GAAA,EAAW,WAAU,eAAe,UAAA3B,EAAA,CAAU;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAT5ClD;AAAA,gBAAA,EAWP,CACF;AAAA,cAAA;AAAA,YAAA;AAAA,UAGN,GA3B4B;AAAA,QA2B5B;AAAA,MAAA,GAEJ;AAAA,IAGJ,KAAK;AACH,+BACGT,IAAA,EAAK,WAAW+E,EAAK,QAAQ9B,CAAS,GACrC,UAAA;AAAA,QAAA,gBAAApC,EAAC0E,MAAQ,OAAOlC,EAAE,aAAa,GAAG,WAAU,UAC1C,UAAA,gBAAAxC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAASuD;AAAA,YACT,WAAWA;AAAA,YACX,MAAK;AAAA,YACL,UAAU;AAAA,YAET,UAAAlB;AAAA,UAAA;AAAA,QAAA,GAEL;AAAA,QAECR,EAAM,UACL,gBAAA7B,EAAC2E,GAAA,EAAkB,aAAaV,GAC9B,UAAA,gBAAAjE,EAACwE,GAAA,EAAM,WAAU,mDAAkD,QAAM,IACvE,UAAA,gBAAA1E,EAAC,SAAI,WAAU,mCAAkC,KAAKuD,GACpD,UAAA;AAAA,UAAA,gBAAArD;AAAA,YAACmE;AAAA,YAAA;AAAA,cACC,sBAAA7E;AAAA,cACA,0BAAwB;AAAA,cACxB,aAAauC,EAAM;AAAA,cACnB,6BAA6B8B;AAAA,cAC7B,6BAA6BE;AAAA,cAC7B,sBAAsBD;AAAA,cACtB,oBAAAlC;AAAA,cACA,kBAAAtB;AAAA,cACA,YAAY;AAAA,gBACV,aAAAyC;AAAA,gBACA,OAAOhB,EAAM;AAAA,gBACb,UAAUiC;AAAA;AAAA;AAAA,gBAGV,UAAU,gBAAAnE,EAAA,CAACO,MAAUR,EAAS,UAAUQ,GAA9B;AAAA,gBACV,iBAAiB;AAAA,kBACf,QAAQ;AAAA,gBAAA;AAAA,gBAEV,WAAW;AAAA,cAAA;AAAA,cAEb,OAAO;AAAA,gBACL,WAAW;AAAA,gBACX,iBAAiB;AAAA,gBACjB,YAAY;AAAA,cAAA;AAAA,cAEd,4BAA4B,gBAAAP,EAAA,CAACyE,MAAY;AACvC,sBAAM,EAAE,gBAAAC,MAAmBD,GACrB,EAAE,KAAAxE,GAAK,GAAG0E,EAAA,IAAuBD;AAEvC,uBACE,gBAAArE;AAAA,kBAACuE;AAAA,kBAAA;AAAA,oBACC,UAAUlB,EAAW;AAAA,oBACrB,MAAM,EAAQe,EAAQ,YAAavC,EAAM;AAAA,oBACzC,WAAU;AAAA,oBAEV,UAAA,gBAAA7B,EAAC,OAAA,EAAI,KAAKoD,GACR,UAAA,gBAAAtD;AAAA,sBAAC0E;AAAA,sBAAA;AAAA,wBACC,QAAM;AAAA,wBAEL,GAAGF;AAAA,wBACJ,WAAU;AAAA,wBACV,OAAO;AAAA,0BACL,OAAOjB,EAAW,UAAUA,EAAW,QAAQ,cAAc;AAAA,wBAAA;AAAA,wBAG9D,UAAA;AAAA,0BAAAe,EAAQ;AAAA,0BACRvC,EAAM,iBACL,gBAAA7B,EAACyE,GAAA,EAAW,WAAU,eAAe,UAAA3B,EAAA,CAAU;AAAA,wBAAA;AAAA,sBAAA;AAAA,sBAT5ClD;AAAA,oBAAA,EAWP,CACF;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAGN,GA5B4B;AAAA,YA4B5B;AAAA,UAAA;AAAA,4BAEDgF,GAAA,EAAM,WAAU,SAAQ,WAAU,OAAM,SAAS,GAChD,UAAA;AAAA,YAAA,gBAAA5E;AAAA,cAACsC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,IAAI,EAAE,OAAOuC,EAAK,GAAG,EAAA;AAAA,gBACrB,SAAS,gBAAAlF,EAAA,MAAM;;AACb,kBAAAoD,EAAS;AAAA,oBACP,MAAM;AAAA,oBACN,OAAO;AAAA,kBAAA,CACR,IACDtB,IAAA/B,EAAS,YAAT,QAAA+B,EAAkB;AAAA,gBACpB,GANS;AAAA,gBAQT,UAAA,gBAAAzB,EAACG,KAAW,UAAA,2BAAA,CAAwB;AAAA,cAAA;AAAA,YAAA;AAAA,YAEtC,gBAAAH,EAACsC,GAAA,EAAW,IAAI,EAAE,OAAOuC,EAAK,GAAG,EAAA,GAAK,MAAK,SAAQ,SAASpB,GAC1D,UAAA,gBAAAzD,EAAC8E,KAAe,EAAA,CAClB;AAAA,UAAA,EAAA,CACF;AAAA,QAAA,EAAA,CACF,GACF,EAAA,CACF;AAAA,MAAA,GAEJ;AAAA,IAGJ;AACE,aAAO;AAAA,EACT;AAEJ;AAtQSnF,EAAAsC,IAAA;"}
|
|
@@ -3,37 +3,35 @@ var r = (s, e) => P(s, "name", { value: e, configurable: !0 });
|
|
|
3
3
|
import { jsxs as p, jsx as t } 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 { useGetNavigationList as D } from "../../../hooks/useNavigation.js";
|
|
5
5
|
import { useOwpTranslation as G } from "../../../hooks/useOwpTranslation.js";
|
|
6
|
-
import { useSetShortcuts as
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
9
|
-
import { OwpNavigationHelper as U } from "../../../utils/navigationUtils.js";
|
|
10
|
-
import q from "../../../node_modules/.pnpm/@mui_icons-material@7.3.9_@mui_material@7.3.9_@emotion_react@11.14.0_@types_react@19.2._dc2be6bc014bebdac88a574e3e02c144/node_modules/@mui/icons-material/esm/Clear.js";
|
|
6
|
+
import { useSetShortcuts as A, useGetShortcuts as F } from "../../../hooks/useShortcuts.js";
|
|
7
|
+
import { OwpNavigationHelper as H } from "../../../utils/navigationUtils.js";
|
|
8
|
+
import U from "../../../node_modules/.pnpm/@mui_icons-material@7.3.9_@mui_material@7.3.9_@emotion_react@11.14.0_@types_react@19.2._dc2be6bc014bebdac88a574e3e02c144/node_modules/@mui/icons-material/esm/Clear.js";
|
|
11
9
|
import M from "@mui/material/Box";
|
|
12
10
|
import { amber as L, grey as k } from "@mui/material/colors";
|
|
13
|
-
import
|
|
11
|
+
import W from "@mui/material/Divider";
|
|
14
12
|
import x from "@mui/material/IconButton";
|
|
15
|
-
import
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import
|
|
20
|
-
import
|
|
21
|
-
import
|
|
13
|
+
import q from "@mui/material/Input";
|
|
14
|
+
import J from "@mui/material/ListItemIcon";
|
|
15
|
+
import K from "@mui/material/ListItemText";
|
|
16
|
+
import Q from "@mui/material/Menu";
|
|
17
|
+
import R from "@mui/material/MenuItem";
|
|
18
|
+
import V from "@mui/material/Tooltip";
|
|
19
|
+
import X from "@mui/material/Typography";
|
|
22
20
|
import { clsx as y } from "../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js";
|
|
23
|
-
import { useRef as
|
|
24
|
-
import { Link as
|
|
25
|
-
import { toolbarToggleSx as
|
|
26
|
-
import { find as
|
|
27
|
-
import { OwpSvgIcon as
|
|
28
|
-
import { xor as
|
|
29
|
-
function
|
|
30
|
-
const { variant: e = "horizontal", className: d = "" } = s, i =
|
|
31
|
-
() =>
|
|
21
|
+
import { useRef as Y, useState as z, useMemo as g } from "react";
|
|
22
|
+
import { Link as Z } from "react-router-dom";
|
|
23
|
+
import { toolbarToggleSx as $ } from "./toggleStyles.js";
|
|
24
|
+
import { find as _ } from "../../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/array/find.js";
|
|
25
|
+
import { OwpSvgIcon as v } from "../../../components/OwpSvgIcon/OwpSvgIcon.js";
|
|
26
|
+
import { xor as oo } from "../../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/array/xor.js";
|
|
27
|
+
function yo(s) {
|
|
28
|
+
const { variant: e = "horizontal", className: d = "" } = s, i = Y(null), [c, S] = z(null), [n, f] = z(""), T = D(), B = A(), a = F(), { t: h } = G(), m = g(
|
|
29
|
+
() => H.getFlatNavigation(T),
|
|
32
30
|
[T]
|
|
33
31
|
), u = g(
|
|
34
|
-
() => a.map((o) =>
|
|
32
|
+
() => a.map((o) => _(m, { id: o })).filter((o) => !!o),
|
|
35
33
|
[m, a]
|
|
36
|
-
),
|
|
34
|
+
), C = g(() => {
|
|
37
35
|
if (!n || !m)
|
|
38
36
|
return [];
|
|
39
37
|
const o = n.toLowerCase();
|
|
@@ -45,22 +43,22 @@ function ro(s) {
|
|
|
45
43
|
);
|
|
46
44
|
}, [m, n]);
|
|
47
45
|
function j(o) {
|
|
48
|
-
|
|
46
|
+
S(o.currentTarget);
|
|
49
47
|
}
|
|
50
48
|
r(j, "addMenuClick");
|
|
51
49
|
function E() {
|
|
52
|
-
|
|
50
|
+
S(null);
|
|
53
51
|
}
|
|
54
52
|
r(E, "addMenuClose");
|
|
55
53
|
function O(o) {
|
|
56
54
|
f(o.target.value);
|
|
57
55
|
}
|
|
58
56
|
r(O, "search");
|
|
59
|
-
function
|
|
57
|
+
function N(o) {
|
|
60
58
|
let l = [...a];
|
|
61
|
-
l =
|
|
59
|
+
l = oo(l, [o]), B(l);
|
|
62
60
|
}
|
|
63
|
-
return r(
|
|
61
|
+
return r(N, "toggleInShortcuts"), /* @__PURE__ */ p(
|
|
64
62
|
M,
|
|
65
63
|
{
|
|
66
64
|
className: y(
|
|
@@ -77,17 +75,17 @@ function ro(s) {
|
|
|
77
75
|
e === "vertical" ? "flex-col" : "max-h-36"
|
|
78
76
|
),
|
|
79
77
|
children: /* @__PURE__ */ t(
|
|
80
|
-
|
|
78
|
+
V,
|
|
81
79
|
{
|
|
82
80
|
title: h("Title.즐겨찾기 등록/삭제"),
|
|
83
81
|
placement: e === "horizontal" ? "bottom" : "left",
|
|
84
82
|
children: /* @__PURE__ */ t(
|
|
85
83
|
x,
|
|
86
84
|
{
|
|
87
|
-
sx:
|
|
85
|
+
sx: $,
|
|
88
86
|
"aria-haspopup": "true",
|
|
89
87
|
onClick: j,
|
|
90
|
-
children: /* @__PURE__ */ t(
|
|
88
|
+
children: /* @__PURE__ */ t(v, { size: 20, sx: { color: L[600] }, children: "heroicons-solid:star" })
|
|
91
89
|
}
|
|
92
90
|
)
|
|
93
91
|
}
|
|
@@ -95,7 +93,7 @@ function ro(s) {
|
|
|
95
93
|
}
|
|
96
94
|
),
|
|
97
95
|
/* @__PURE__ */ p(
|
|
98
|
-
|
|
96
|
+
Q,
|
|
99
97
|
{
|
|
100
98
|
id: "add-menu",
|
|
101
99
|
anchorEl: c,
|
|
@@ -116,7 +114,7 @@ function ro(s) {
|
|
|
116
114
|
children: [
|
|
117
115
|
/* @__PURE__ */ p("div", { className: "flex justify-between items-center p-16 pt-8", children: [
|
|
118
116
|
/* @__PURE__ */ t(
|
|
119
|
-
|
|
117
|
+
q,
|
|
120
118
|
{
|
|
121
119
|
inputRef: i,
|
|
122
120
|
value: n,
|
|
@@ -137,27 +135,27 @@ function ro(s) {
|
|
|
137
135
|
var o;
|
|
138
136
|
f(""), (o = i == null ? void 0 : i.current) == null || o.focus();
|
|
139
137
|
}, "onClick"),
|
|
140
|
-
children: /* @__PURE__ */ t(
|
|
138
|
+
children: /* @__PURE__ */ t(U, {})
|
|
141
139
|
}
|
|
142
140
|
)
|
|
143
141
|
] }),
|
|
144
|
-
((n == null ? void 0 : n.length) > 0 || (u == null ? void 0 : u.length) > 0) && /* @__PURE__ */ t(
|
|
145
|
-
n.length > 0 &&
|
|
142
|
+
((n == null ? void 0 : n.length) > 0 || (u == null ? void 0 : u.length) > 0) && /* @__PURE__ */ t(W, { sx: { backgroundColor: k[500] } }),
|
|
143
|
+
n.length > 0 && C.map((o) => /* @__PURE__ */ t(
|
|
146
144
|
I,
|
|
147
145
|
{
|
|
148
146
|
shortcuts: a,
|
|
149
147
|
item: o,
|
|
150
|
-
onToggle: /* @__PURE__ */ r(() =>
|
|
148
|
+
onToggle: /* @__PURE__ */ r(() => N(o.id), "onToggle")
|
|
151
149
|
},
|
|
152
150
|
o.id
|
|
153
151
|
)),
|
|
154
|
-
n.length !== 0 &&
|
|
152
|
+
n.length !== 0 && C.length === 0 && /* @__PURE__ */ t(X, { color: "text.secondary", className: "p-16 pb-8", children: h("Message.검색된 결과가 없습니다...") }),
|
|
155
153
|
n.length === 0 && u.map((o) => /* @__PURE__ */ t(
|
|
156
154
|
I,
|
|
157
155
|
{
|
|
158
156
|
shortcuts: a,
|
|
159
157
|
item: o,
|
|
160
|
-
onToggle: /* @__PURE__ */ r(() =>
|
|
158
|
+
onToggle: /* @__PURE__ */ r(() => N(o.id), "onToggle")
|
|
161
159
|
},
|
|
162
160
|
o.id
|
|
163
161
|
))
|
|
@@ -168,12 +166,12 @@ function ro(s) {
|
|
|
168
166
|
}
|
|
169
167
|
);
|
|
170
168
|
}
|
|
171
|
-
r(
|
|
169
|
+
r(yo, "NavigationShortcutsToggle");
|
|
172
170
|
function I(s) {
|
|
173
171
|
const { item: e, onToggle: d, shortcuts: i = [] } = s;
|
|
174
|
-
return !e || !e.id ? null : /* @__PURE__ */ t(
|
|
175
|
-
/* @__PURE__ */ t(
|
|
176
|
-
/* @__PURE__ */ t(
|
|
172
|
+
return !e || !e.id ? null : /* @__PURE__ */ t(Z, { to: e.url || "", role: "button", children: /* @__PURE__ */ p(R, { children: [
|
|
173
|
+
/* @__PURE__ */ t(J, { className: "min-w-36", children: e.icon ? /* @__PURE__ */ t(v, { children: e.icon }) : /* @__PURE__ */ t("span", { className: "text-center text-2xl font-semibold uppercase", children: e.title[0] }) }),
|
|
174
|
+
/* @__PURE__ */ t(K, { primary: e.title }),
|
|
177
175
|
/* @__PURE__ */ t(
|
|
178
176
|
x,
|
|
179
177
|
{
|
|
@@ -181,16 +179,13 @@ function I(s) {
|
|
|
181
179
|
c.preventDefault(), c.stopPropagation(), d();
|
|
182
180
|
}, "onClick"),
|
|
183
181
|
size: "large",
|
|
184
|
-
children: /* @__PURE__ */ t(
|
|
182
|
+
children: /* @__PURE__ */ t(v, { size: 20, sx: { color: L[600] }, children: i.includes(e.id) ? "heroicons-solid:star" : "heroicons-outline:star" })
|
|
185
183
|
}
|
|
186
184
|
)
|
|
187
185
|
] }, e.id) });
|
|
188
186
|
}
|
|
189
187
|
r(I, "ShortcutMenuItem");
|
|
190
|
-
const jo = H([
|
|
191
|
-
F
|
|
192
|
-
])(ro);
|
|
193
188
|
export {
|
|
194
|
-
|
|
189
|
+
yo as default
|
|
195
190
|
};
|
|
196
191
|
//# sourceMappingURL=NavigationShortcutsToggle.js.map
|