@owp/core 2.5.50 → 2.5.52
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/components/OwpLoading/OwpLoading.js +7 -6
- package/dist/components/OwpLoading/OwpLoading.js.map +1 -1
- package/dist/components/OwpNavLinkAdapter/OwpNavLinkAdapter.js +100 -28
- package/dist/components/OwpNavLinkAdapter/OwpNavLinkAdapter.js.map +1 -1
- package/dist/components/OwpQuerySelector/OwpQuerySelector.js +80 -74
- package/dist/components/OwpQuerySelector/OwpQuerySelector.js.map +1 -1
- package/dist/components/OwpSuspense/OwpSuspense.js +66 -60
- package/dist/components/OwpSuspense/OwpSuspense.js.map +1 -1
- package/dist/components/OwpTable/OwpFieldTable.js.map +1 -1
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js +351 -295
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +396 -392
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/treeGridTheme.js +37 -43
- package/dist/components/OwpTreeGrid/internal/treeGridTheme.js.map +1 -1
- package/dist/contexts/OwpAppContext.js.map +1 -1
- package/dist/hooks/internal/useNavigationActiveRouteRemount.js +19 -16
- package/dist/hooks/internal/useNavigationActiveRouteRemount.js.map +1 -1
- package/dist/hooks/internal/useRouteTransitionLoading.js +49 -0
- package/dist/hooks/internal/useRouteTransitionLoading.js.map +1 -0
- package/dist/hooks/useCurrentUser.js.map +1 -1
- package/dist/hooks/useFormDataUploadMutation.js.map +1 -1
- package/dist/layout/Layout.js +107 -34
- package/dist/layout/Layout.js.map +1 -1
- package/dist/layout/components/navigation/NavBadge.js +8 -8
- package/dist/layout/components/navigation/NavBadge.js.map +1 -1
- package/dist/layout/components/navigation/NavItem.js +19 -15
- package/dist/layout/components/navigation/NavItem.js.map +1 -1
- package/dist/layout/components/navigation/Navigation.js +25 -22
- package/dist/layout/components/navigation/Navigation.js.map +1 -1
- package/dist/layout/components/navigation/NavigationMenu.js +25 -18
- package/dist/layout/components/navigation/NavigationMenu.js.map +1 -1
- package/dist/layout/components/navigation/vertical/NavVerticalLayout.js +69 -44
- package/dist/layout/components/navigation/vertical/NavVerticalLayout.js.map +1 -1
- package/dist/layout/components/navigation/vertical/types/NavVerticalCollapse.js +71 -64
- package/dist/layout/components/navigation/vertical/types/NavVerticalCollapse.js.map +1 -1
- package/dist/layout/components/navigation/vertical/types/NavVerticalGroup.js +15 -14
- package/dist/layout/components/navigation/vertical/types/NavVerticalGroup.js.map +1 -1
- package/dist/layout/components/navigation/vertical/types/NavVerticalItem.js +16 -14
- package/dist/layout/components/navigation/vertical/types/NavVerticalItem.js.map +1 -1
- package/dist/layout/components/navigation/vertical/types/NavVerticalLink.js +17 -12
- package/dist/layout/components/navigation/vertical/types/NavVerticalLink.js.map +1 -1
- package/dist/layout/components/toggles/NavigationSearchToggle.js +163 -164
- package/dist/layout/components/toggles/NavigationSearchToggle.js.map +1 -1
- package/dist/layout/components/toggles/NavigationShortcutsToggle.js +88 -95
- package/dist/layout/components/toggles/NavigationShortcutsToggle.js.map +1 -1
- package/dist/types/components/OwpNumberField/OwpNumberField.d.ts +1 -1
- package/dist/types/components/OwpPicker/internal/DatePickerInput.d.ts +1 -1
- package/dist/types/components/OwpQuerySelector/OwpQuerySelector.d.ts +2 -2
- package/dist/types/components/OwpQuerySelector/types/index.d.ts +1 -1
- package/dist/types/components/OwpQuerySelector/types/types.d.ts +14 -13
- package/dist/types/components/OwpSuspense/OwpSuspense.d.ts +1 -0
- package/dist/types/components/OwpTable/OwpFieldTable.d.ts +6 -7
- package/dist/types/components/OwpTable/internal/OwpTableBase.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/components/OwpTreeGrid/internal/treeGridRuntime.d.ts +5 -1
- package/dist/types/contexts/OwpAppContext.d.ts +10 -0
- package/dist/types/features/themePreview/utils/themePreviewSettings.d.ts +1 -1
- package/dist/types/hooks/internal/useRouteTransitionLoading.d.ts +27 -0
- package/dist/types/hooks/useCurrentUser.d.ts +5 -2
- package/dist/types/hooks/useFormDataUploadMutation.d.ts +9 -3
- package/dist/types/hooks/useNavigation.d.ts +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/layout/components/navigation/NavItem.d.ts +2 -3
- package/dist/types/layout/components/navigation/NavigationMenu.d.ts +5 -5
- package/dist/types/layout/components/navigation/vertical/NavVerticalLayout.d.ts +1 -1
- package/dist/types/layout/components/navigation/vertical/types/NavVerticalCollapse.d.ts +1 -1
- package/dist/types/layout/components/navigation/vertical/types/NavVerticalGroup.d.ts +1 -1
- package/dist/types/layout/components/navigation/vertical/types/NavVerticalItem.d.ts +1 -1
- package/dist/types/layout/components/navigation/vertical/types/NavVerticalLink.d.ts +1 -1
- package/dist/types/store/atoms/owpSettingsAtoms.d.ts +1 -1
- package/dist/types/types/OwpApiTypes.d.ts +27 -0
- package/dist/types/types/OwpDialogTypes.d.ts +16 -0
- package/dist/types/types/OwpRouteTypes.d.ts +10 -0
- package/dist/types/types/index.d.ts +7 -2
- package/dist/types/utils/internal/navigationSearchUtils.d.ts +22 -0
- package/dist/types/utils/internal/navigationUtils.d.ts +22 -27
- package/dist/types/utils/treeGridUtil.d.ts +21 -7
- package/dist/utils/internal/navigationSearchUtils.js +44 -0
- package/dist/utils/internal/navigationSearchUtils.js.map +1 -0
- package/dist/utils/internal/navigationUtils.js +38 -123
- package/dist/utils/internal/navigationUtils.js.map +1 -1
- package/dist/utils/treeGridUtil.js +103 -85
- package/dist/utils/treeGridUtil.js.map +1 -1
- package/dist/utils.js +51 -49
- package/package.json +1 -1
- package/dist/node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/_internal/isIterateeCall.js +0 -14
- package/dist/node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/_internal/isIterateeCall.js.map +0 -1
- package/dist/node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/object/defaults.js +0 -24
- package/dist/node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/object/defaults.js.map +0 -1
- package/dist/node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/string/trim.js +0 -10
- package/dist/node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/string/trim.js.map +0 -1
|
@@ -1,13 +1,16 @@
|
|
|
1
|
+
import type { StartPageUser } from '@/utils/getStartPagePath';
|
|
1
2
|
/**
|
|
2
3
|
* storage에 보관되는 현재 사용자 정보
|
|
3
4
|
*/
|
|
4
|
-
export interface CurrentUser {
|
|
5
|
+
export interface CurrentUser extends StartPageUser {
|
|
6
|
+
/** API access token */
|
|
7
|
+
token?: string;
|
|
5
8
|
[key: string]: any;
|
|
6
9
|
}
|
|
7
10
|
/**
|
|
8
11
|
* storage-backed 현재 사용자 정보 조회 Hook
|
|
9
12
|
*/
|
|
10
|
-
export declare const useGetCurrentUser: () =>
|
|
13
|
+
export declare const useGetCurrentUser: <TUser extends CurrentUser = CurrentUser>() => TUser | undefined;
|
|
11
14
|
/**
|
|
12
15
|
* storage-backed 현재 사용자 정보 setter Hook
|
|
13
16
|
*/
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import { createFormDataBody, type FormDataUploadBody, type FormDataUploadParams, type TAdditionalFields } from '@/utils/createFormDataBody';
|
|
2
2
|
export type { FormDataFieldValue, FormDataUploadBody, FormDataUploadParams, TAdditionalFields, } from '@/utils/createFormDataBody';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
/**
|
|
4
|
+
* FormData upload adapter가 호출할 수 있는 mutation 객체
|
|
5
|
+
*/
|
|
6
|
+
export interface FormDataUploadMutationLike<TVariables = never, TMutateOptions = never> {
|
|
7
|
+
/** mutation variables를 받아 mutate 실행 */
|
|
8
|
+
mutate: (variables: TVariables, options?: TMutateOptions) => void;
|
|
9
|
+
/** mutation 진행 상태 */
|
|
10
|
+
isPending?: boolean;
|
|
11
|
+
}
|
|
6
12
|
type FormDataUploadMutationMutateParameters<TMutation extends FormDataUploadMutationLike> = Parameters<TMutation['mutate']>;
|
|
7
13
|
type FormDataUploadMutationVariables<TMutation extends FormDataUploadMutationLike> = FormDataUploadMutationMutateParameters<TMutation>[0];
|
|
8
14
|
type FormDataUploadMutateOptions<TMutation extends FormDataUploadMutationLike> = FormDataUploadMutationMutateParameters<TMutation>[1];
|
|
@@ -2,7 +2,7 @@ import type { OwpNavItemType } from '@/types/OwpNavigationTypes';
|
|
|
2
2
|
/**
|
|
3
3
|
* storage-backed navigation 목록 조회 Hook
|
|
4
4
|
*/
|
|
5
|
-
export declare const useGetNavigationList: () => OwpNavItemType[];
|
|
5
|
+
export declare const useGetNavigationList: () => OwpNavItemType[] | undefined;
|
|
6
6
|
/**
|
|
7
7
|
* storage-backed navigation 목록 setter Hook
|
|
8
8
|
*/
|
package/dist/types/index.d.ts
CHANGED
|
@@ -45,4 +45,5 @@ export * from './components/OwpTreeGrid';
|
|
|
45
45
|
export * from './components/OwpTreeGrid/OwpTreeGridToolbar';
|
|
46
46
|
export * from './components/OwpZoomImageSlider/OwpZoomImageSlider';
|
|
47
47
|
export * from './components/OwpYesNoSelector';
|
|
48
|
+
export type { OwpSelectorBaseChangeEvent, OwpSelectorBaseOption, } from './components/OwpSelectorBase/types';
|
|
48
49
|
export type { OwpFlatNavItemType, OwpNavBadgeType, OwpNavPermission, OwpNavItemType, OwpPermissionFlag, } from './types/OwpNavigationTypes';
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import type { OwpNavItemType as NavItemType } from '@/types/OwpNavigationTypes';
|
|
2
|
+
import type { NavigationItemClickContext } from './NavigationMenu';
|
|
2
3
|
/** Navigation item renderer에 전달되는 공통 속성 */
|
|
3
4
|
export type NavItemComponentProps = {
|
|
4
|
-
/** render할 navigation item type */
|
|
5
|
-
type: string;
|
|
6
5
|
/** navigation item 원본 설정 */
|
|
7
6
|
item: NavItemType;
|
|
8
7
|
/** vertical item density 축소 여부 */
|
|
@@ -10,7 +9,7 @@ export type NavItemComponentProps = {
|
|
|
10
9
|
/** 중첩 collapse depth */
|
|
11
10
|
nestedLevel?: number;
|
|
12
11
|
/** leaf/collapse item click callback */
|
|
13
|
-
onItemClick?: (item: NavItemType) => void;
|
|
12
|
+
onItemClick?: (item: NavItemType, context?: NavigationItemClickContext) => void;
|
|
14
13
|
/** permission rule 적용 여부 */
|
|
15
14
|
checkPermission?: boolean;
|
|
16
15
|
/** 현재 route 기준으로 펼쳐 둘 collapse ID 집합 */
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import type { OwpNavItemType as NavItemType } from '@/types/OwpNavigationTypes';
|
|
2
|
+
export type NavigationItemClickContext = {
|
|
3
|
+
/** mobile navigation close 여부 */
|
|
4
|
+
shouldCloseNavigation?: boolean;
|
|
5
|
+
};
|
|
2
6
|
/** Vertical navigation menu rendering과 route 기반 collapse open 상태 속성 */
|
|
3
7
|
export type NavigationMenuProps = {
|
|
4
8
|
/** root className */
|
|
@@ -8,15 +12,11 @@ export type NavigationMenuProps = {
|
|
|
8
12
|
/** 상위 navigation 영역 활성 여부 */
|
|
9
13
|
active?: boolean;
|
|
10
14
|
/** item click callback */
|
|
11
|
-
onItemClick?: (item: NavItemType) => void;
|
|
15
|
+
onItemClick?: (item: NavItemType, context?: NavigationItemClickContext) => void;
|
|
12
16
|
/** render할 navigation tree */
|
|
13
17
|
navigation?: NavItemType[];
|
|
14
18
|
/** navigation layout 종류 */
|
|
15
19
|
layout?: 'vertical';
|
|
16
|
-
/** 최상위 level 여부 */
|
|
17
|
-
firstLevel?: boolean;
|
|
18
|
-
/** 외부에서 지정한 선택 item ID */
|
|
19
|
-
selectedId?: string;
|
|
20
20
|
/** permission rule 적용 여부 */
|
|
21
21
|
checkPermission?: boolean;
|
|
22
22
|
/** 외부에서 제어하는 collapse open ID 집합 */
|
|
@@ -70,7 +70,7 @@ export declare const customScrollbarsEnabledAtom: import("jotai").Atom<boolean>;
|
|
|
70
70
|
/**
|
|
71
71
|
* current direction 조회 atom
|
|
72
72
|
*/
|
|
73
|
-
export declare const directionAtom: import("jotai").Atom<"
|
|
73
|
+
export declare const directionAtom: import("jotai").Atom<"ltr" | "rtl">;
|
|
74
74
|
/**
|
|
75
75
|
* main theme 설정 조회 atom
|
|
76
76
|
*/
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OWP API 공통 응답 envelope
|
|
3
|
+
*/
|
|
4
|
+
export interface OwpApiResponse<TData = unknown> {
|
|
5
|
+
/** 서버 처리 결과 코드 */
|
|
6
|
+
resultCode?: string;
|
|
7
|
+
/** 서버 처리 결과 메시지 */
|
|
8
|
+
resultMessage?: string;
|
|
9
|
+
/** 단일 데이터 또는 목록 데이터 */
|
|
10
|
+
resultData?: TData;
|
|
11
|
+
/** 일부 legacy API의 목록 데이터 */
|
|
12
|
+
resultDataList?: unknown[];
|
|
13
|
+
/** API별 부가 응답 필드 */
|
|
14
|
+
[key: string]: unknown;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* resultData에 row 목록을 담는 OWP API 응답
|
|
18
|
+
*/
|
|
19
|
+
export type OwpApiListResponse<TRow = unknown> = OwpApiResponse<TRow[]>;
|
|
20
|
+
/**
|
|
21
|
+
* resultData에 단일 객체를 담는 OWP API 응답
|
|
22
|
+
*/
|
|
23
|
+
export type OwpApiSingleResponse<TData = unknown> = OwpApiResponse<TData>;
|
|
24
|
+
/**
|
|
25
|
+
* mutation 결과로 반환되는 OWP API 응답
|
|
26
|
+
*/
|
|
27
|
+
export type OwpApiMutationResponse<TData = unknown> = OwpApiResponse<TData>;
|
|
@@ -54,6 +54,22 @@ export interface DialogProps<TPayload = void, TResult = void> {
|
|
|
54
54
|
* `useOwpDialogs.open`으로 render할 dialog component 타입
|
|
55
55
|
*/
|
|
56
56
|
export type DialogComponent<TPayload = void, TResult = void> = ComponentType<DialogProps<TPayload, TResult>>;
|
|
57
|
+
/**
|
|
58
|
+
* Dialog component에서 payload 타입 추출
|
|
59
|
+
*/
|
|
60
|
+
export type DialogPayloadOf<TComponent> = TComponent extends ComponentType<infer TProps> ? TProps extends {
|
|
61
|
+
payload: infer TPayload;
|
|
62
|
+
} ? TPayload : never : never;
|
|
63
|
+
/**
|
|
64
|
+
* Dialog component에서 close result 타입 추출
|
|
65
|
+
*/
|
|
66
|
+
export type DialogResultOf<TComponent> = TComponent extends ComponentType<infer TProps> ? TProps extends {
|
|
67
|
+
onClose: (result?: infer TResult) => Promise<void>;
|
|
68
|
+
} ? TResult : never : never;
|
|
69
|
+
/**
|
|
70
|
+
* Dialog open promise result 타입 추출
|
|
71
|
+
*/
|
|
72
|
+
export type DialogOpenResultOf<TComponent> = DialogResultOf<TComponent> | undefined;
|
|
57
73
|
/**
|
|
58
74
|
* alert dialog open 함수 타입
|
|
59
75
|
*/
|
|
@@ -30,3 +30,13 @@ export type OwpRouteConfigType = {
|
|
|
30
30
|
/** route group base path */
|
|
31
31
|
path?: string;
|
|
32
32
|
};
|
|
33
|
+
/**
|
|
34
|
+
* `import.meta.glob`으로 읽은 route config module shape
|
|
35
|
+
*/
|
|
36
|
+
export interface OwpRouteConfigModule {
|
|
37
|
+
default: OwpRouteConfigType | OwpRouteConfigType[];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* route config module map
|
|
41
|
+
*/
|
|
42
|
+
export type OwpRouteConfigModuleMap = Record<string, OwpRouteConfigModule>;
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import './OwpMuiThemeTypes';
|
|
2
|
-
export type {
|
|
2
|
+
export type { OwpApiListResponse, OwpApiMutationResponse, OwpApiResponse, OwpApiSingleResponse, } from './OwpApiTypes';
|
|
3
|
+
export type { AlertDialogPayload, AlertDialogProps, AlertOptions, CloseDialog, ConfirmDialogPayload, ConfirmDialogProps, ConfirmOptions, DialogComponent, DialogHook, DialogOpenResultOf, DialogPayloadOf, DialogProviderProps, DialogProps, DialogResultOf, OpenAlertDialog, OpenConfirmDialog, OpenDialog, OpenDialogOptions, OpenPromptDialog, PromptDialogPayload, PromptDialogProps, PromptOptions, } from './OwpDialogTypes';
|
|
3
4
|
export type { OwpExcelJSBrowserModule } from './OwpExcelTypes';
|
|
4
5
|
export type { OwpGridBodyThemeConfigType, OwpGridCellThemeConfigType, OwpGridChangedThemeConfigType, OwpGridEditableThemeConfigType, OwpGridHeaderThemeConfigType, OwpGridRowThemeConfigType, OwpGridStateThemeConfigType, OwpGridThemeConfigType, } from './OwpGridThemeTypes';
|
|
5
6
|
export type { OwpTableCellThemeConfigType, OwpTableHeaderThemeConfigType, OwpTableThemeConfigType, OwpTableVariantThemeConfigType, } from './OwpTableThemeTypes';
|
|
6
7
|
export type { OwpSnackbarThemeConfigType, OwpSnackbarVariantThemeConfigType, OwpSnackbarVariantType, OwpThemeType, OwpThemesType, OwpSettingsConfigType, } from './OwpSettingsTypes';
|
|
7
8
|
export type { OwpFlatNavItemType, OwpNavBadgeType, OwpNavPermission, OwpNavItemType, OwpPermissionFlag, } from './OwpNavigationTypes';
|
|
8
|
-
export type { OwpRouteConfigType, OwpRouteItemType, OwpRoutesType } from './OwpRouteTypes';
|
|
9
|
+
export type { OwpRouteConfigModule, OwpRouteConfigModuleMap, OwpRouteConfigType, OwpRouteItemType, OwpRoutesType, } from './OwpRouteTypes';
|
|
9
10
|
export type { AnyFormFieldType, ThemeFormConfigTypes } from './ThemeFormConfigTypes';
|
|
11
|
+
export type { CurrentUser } from '../hooks/useCurrentUser';
|
|
12
|
+
export type { CurrentUserSeq } from '../hooks/useCurrentUserSeq';
|
|
13
|
+
export type { OwpAppConfigs, OwpAppEnv, OwpAppSlotProps, OwpAppSlots, OwpLogoSlotProps, OwpPageSkeletonItem, OwpPageSkeletonItemType, OwpPageSkeletonSpec, OwpPageSkeletonSpecMap, OwpPageSkeletonSpecModule, OwpRouteLoadingConfig, OwpRouteLoadingSlotProps, } from '../contexts/OwpAppContext';
|
|
14
|
+
export type { OwpSelectorBaseChangeEvent, OwpSelectorBaseOption, } from '../components/OwpSelectorBase/types';
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* navigation search 비교용 문자열 정규화
|
|
3
|
+
* @param value 검색 입력 또는 navigation title
|
|
4
|
+
*/
|
|
5
|
+
export declare const normalizeNavigationSearchText: (value?: string) => string;
|
|
6
|
+
/**
|
|
7
|
+
* 한글 음절을 초성 검색 문자열로 변환
|
|
8
|
+
* @param value navigation title
|
|
9
|
+
*/
|
|
10
|
+
export declare const getNavigationHangulInitialSearchText: (value?: string) => string;
|
|
11
|
+
/**
|
|
12
|
+
* navigation title과 검색 입력 match 여부
|
|
13
|
+
* @param title navigation title
|
|
14
|
+
* @param query 검색 입력
|
|
15
|
+
*/
|
|
16
|
+
export declare const isNavigationSearchTextMatch: (title?: string, query?: string) => boolean;
|
|
17
|
+
/**
|
|
18
|
+
* 직접 highlight가 어려운 fuzzy match의 fallback range
|
|
19
|
+
* @param title navigation title
|
|
20
|
+
* @param query 검색 입력
|
|
21
|
+
*/
|
|
22
|
+
export declare const getNavigationSearchFallbackHighlightRanges: (title?: string, query?: string) => [number, number][];
|
|
@@ -1,39 +1,34 @@
|
|
|
1
|
-
import type { OwpFlatNavItemType, OwpNavItemType
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
permission?: OwpNavPermission;
|
|
1
|
+
import type { OwpFlatNavItemType, OwpNavItemType } from '@/types/OwpNavigationTypes';
|
|
2
|
+
export type NavigationPathMatchOptions = {
|
|
3
|
+
/** exact path match 여부 */
|
|
4
|
+
end?: boolean;
|
|
6
5
|
};
|
|
7
6
|
/**
|
|
8
|
-
*
|
|
7
|
+
* route 비교용 pathname 정규화
|
|
8
|
+
* @param path URL 또는 pathname
|
|
9
9
|
*/
|
|
10
|
-
export declare
|
|
10
|
+
export declare const normalizeNavigationPathname: (path?: string) => string;
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
12
|
+
* navigation URL과 현재 pathname segment match 여부
|
|
13
|
+
* @param pathname 현재 route pathname
|
|
14
|
+
* @param navigationUrl navigation item URL
|
|
15
|
+
* @param options match 옵션
|
|
13
16
|
*/
|
|
14
|
-
export declare
|
|
17
|
+
export declare const isNavigationPathMatch: (pathname?: string, navigationUrl?: string, options?: NavigationPathMatchOptions) => boolean;
|
|
18
|
+
/**
|
|
19
|
+
* navigation item type fallback
|
|
20
|
+
* @param item navigation item
|
|
21
|
+
*/
|
|
22
|
+
export declare const resolveNavigationItemType: (item: Pick<OwpNavItemType, "children" | "type">) => string;
|
|
15
23
|
/**
|
|
16
24
|
* Navigation structure helper
|
|
17
25
|
*/
|
|
18
26
|
export declare class OwpNavigationHelper {
|
|
19
|
-
static selectById(nav: OwpNavItemType[], id: string): OwpNavItemType | undefined;
|
|
20
|
-
static appendNavItem(nav: OwpNavItemType[], item: OwpNavItemType, parentId?: string | null): OwpNavItemType[];
|
|
21
|
-
static prependNavItem(nav: OwpNavItemType[], item: OwpNavItemType, parentId?: string | null): OwpNavItemType[];
|
|
22
|
-
static filterNavigationByPermission(nav: OwpNavItemType[], userRole: User['role']): OwpNavItemType[];
|
|
23
|
-
/**
|
|
24
|
-
* Navigation item removal
|
|
25
|
-
*/
|
|
26
|
-
static removeNavItem(nav: OwpNavItemType[], id: string): OwpNavItemType[];
|
|
27
|
-
/**
|
|
28
|
-
* Navigation item update
|
|
29
|
-
*/
|
|
30
|
-
static updateNavItem(nav: OwpNavItemType[], id: string, item: PartialDeep<OwpNavItemType>): OwpNavItemType[];
|
|
31
27
|
/**
|
|
32
|
-
*
|
|
28
|
+
* 검색과 shortcut 후보 navigation list 추출
|
|
29
|
+
* @param navigationItems navigation tree
|
|
30
|
+
* @param flatNavigation 누적 flat list
|
|
31
|
+
* @param parentOrder 상위 order path
|
|
33
32
|
*/
|
|
34
|
-
static getFlatNavigation(navigationItems?: OwpNavItemType[], flatNavigation?:
|
|
35
|
-
static hasPermission(authArr: string[] | string | undefined, userRole: User['role']): boolean;
|
|
36
|
-
static flattenNavigation(navigation: OwpNavItemType[], parentOrder?: string): OwpFlatNavItemType[];
|
|
37
|
-
static unflattenNavigation(navigation: OwpFlatNavItemType[]): OwpNavItemType[];
|
|
33
|
+
static getFlatNavigation(navigationItems?: OwpNavItemType[], flatNavigation?: OwpFlatNavItemType[], parentOrder?: string): OwpFlatNavItemType[];
|
|
38
34
|
}
|
|
39
|
-
export {};
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { TREEGRID_CELL_CHANGED_CLASS, TREEGRID_CELL_HIGHLIGHT_COLOR, TREEGRID_INPUT_CELL_COLOR, TREEGRID_WARNING_CELL_COLOR } from '@/constants/treeGrid';
|
|
2
2
|
import { type OwpTreeGridSelectedRowsResolveOptions, type OwpTreeGridSelectionScope } from '@/components/OwpTreeGrid/internal/treeGridSelection';
|
|
3
3
|
export { TREEGRID_CELL_CHANGED_CLASS, TREEGRID_CELL_HIGHLIGHT_COLOR, TREEGRID_INPUT_CELL_COLOR, TREEGRID_WARNING_CELL_COLOR, };
|
|
4
|
-
type TreeGridInsertPosition = 'above' | 'below' | 'top' | 'last';
|
|
5
|
-
type
|
|
4
|
+
export type TreeGridInsertPosition = 'above' | 'below' | 'top' | 'last';
|
|
5
|
+
export type TreeGridRowInitialValues<T> = Partial<T> | (Partial<T> & Record<string, unknown>);
|
|
6
|
+
export type TreeGridAddRowOptions<T extends object = Record<string, unknown>> = {
|
|
6
7
|
canSelect?: boolean;
|
|
7
8
|
insertPosition?: TreeGridInsertPosition;
|
|
8
9
|
parent?: TRow & T;
|
|
9
10
|
anchorRow?: TRow & T;
|
|
10
|
-
initialValues?: T
|
|
11
|
+
initialValues?: TreeGridRowInitialValues<T>;
|
|
11
12
|
editableColumns?: readonly string[];
|
|
12
13
|
};
|
|
13
|
-
type TreeGridColumnVisibilityOptions = {
|
|
14
|
+
export type TreeGridColumnVisibilityOptions = {
|
|
14
15
|
targetKey: string;
|
|
15
16
|
canVisible: boolean;
|
|
16
17
|
};
|
|
@@ -151,7 +152,19 @@ export declare const getTreeGridById: (gridId: string) => TTGrid;
|
|
|
151
152
|
* TreeGrid 데이터 행 목록 조회
|
|
152
153
|
* @param gridId TreeGrid 인스턴스 ID
|
|
153
154
|
*/
|
|
154
|
-
export declare
|
|
155
|
+
export declare function getTreeGridDataRowsById<T extends readonly unknown[]>(gridId: string): T;
|
|
156
|
+
export declare function getTreeGridDataRowsById<T extends object = Record<string, unknown>>(gridId: string): Array<TRow & T>;
|
|
157
|
+
/**
|
|
158
|
+
* TreeGrid 현재 row map 조회
|
|
159
|
+
* @param gridId TreeGrid 인스턴스 ID
|
|
160
|
+
*/
|
|
161
|
+
export declare const getTreeGridRowsById: <T extends object = Record<string, unknown>>(gridId: string) => Record<string, (TRow & T) | undefined>;
|
|
162
|
+
/**
|
|
163
|
+
* TreeGrid 현재 row 조회
|
|
164
|
+
* @param gridId TreeGrid 인스턴스 ID
|
|
165
|
+
* @param rowId 조회할 row id
|
|
166
|
+
*/
|
|
167
|
+
export declare const getTreeGridRowById: <T extends object = Record<string, unknown>>(gridId: string, rowId: string | number | null | undefined) => TRow & T;
|
|
155
168
|
/**
|
|
156
169
|
* TreeGrid Body 데이터 교체 후 재로드
|
|
157
170
|
* @param gridId TreeGrid 인스턴스 ID
|
|
@@ -168,7 +181,7 @@ export declare const reloadTreeGridBodyById: (gridId: string, rows: unknown) =>
|
|
|
168
181
|
* @param options.initialValues 신규 행 초기값
|
|
169
182
|
* @param options.editableColumns 신규 행 셀 단위 편집 가능 컬럼
|
|
170
183
|
*/
|
|
171
|
-
export declare const addTreeGridRowById: <T
|
|
184
|
+
export declare const addTreeGridRowById: <T extends object = Record<string, unknown>>(gridId: string, options?: TreeGridAddRowOptions<T>) => void;
|
|
172
185
|
/**
|
|
173
186
|
* TreeGrid 필수 셀 Error 검증
|
|
174
187
|
* @param gridId TreeGrid 인스턴스 ID
|
|
@@ -194,7 +207,8 @@ export declare const exportTreeGridToExcelById: (gridId: string, title?: string)
|
|
|
194
207
|
* @param gridId TreeGrid 인스턴스 ID
|
|
195
208
|
* @param options 선택 행 반환 옵션
|
|
196
209
|
*/
|
|
197
|
-
export declare
|
|
210
|
+
export declare function getTreeGridSelectedRowsById<T extends readonly unknown[]>(gridId: string, options?: TreeGridSelectedRowsOptions): T;
|
|
211
|
+
export declare function getTreeGridSelectedRowsById<T extends object = Record<string, unknown>>(gridId: string, options?: TreeGridSelectedRowsOptions): Array<TRow & T>;
|
|
198
212
|
/**
|
|
199
213
|
* TreeGrid 컬럼 표시 여부 변경
|
|
200
214
|
* @param gridId TreeGrid 인스턴스 ID
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
var u = Object.defineProperty;
|
|
2
|
+
var r = (n, a) => u(n, "name", { value: a, configurable: !0 });
|
|
3
|
+
const c = /\s+/g, o = [
|
|
4
|
+
"ㄱ",
|
|
5
|
+
"ㄲ",
|
|
6
|
+
"ㄴ",
|
|
7
|
+
"ㄷ",
|
|
8
|
+
"ㄸ",
|
|
9
|
+
"ㄹ",
|
|
10
|
+
"ㅁ",
|
|
11
|
+
"ㅂ",
|
|
12
|
+
"ㅃ",
|
|
13
|
+
"ㅅ",
|
|
14
|
+
"ㅆ",
|
|
15
|
+
"ㅇ",
|
|
16
|
+
"ㅈ",
|
|
17
|
+
"ㅉ",
|
|
18
|
+
"ㅊ",
|
|
19
|
+
"ㅋ",
|
|
20
|
+
"ㅌ",
|
|
21
|
+
"ㅍ",
|
|
22
|
+
"ㅎ"
|
|
23
|
+
], g = /* @__PURE__ */ r((n) => Array.from(n).reduce((a, t) => {
|
|
24
|
+
const e = t.charCodeAt(0);
|
|
25
|
+
return e < 4352 || e > 4370 ? `${a}${t}` : `${a}${o[e - 4352]}`;
|
|
26
|
+
}, ""), "normalizeHangulInitialJamo"), l = /* @__PURE__ */ r((n) => g((n ?? "").normalize("NFKC")).toLocaleLowerCase().replace(c, ""), "normalizeNavigationSearchText"), s = /* @__PURE__ */ r((n) => Array.from(l(n)).reduce((a, t) => {
|
|
27
|
+
const e = t.charCodeAt(0);
|
|
28
|
+
if (e < 44032 || e > 55203)
|
|
29
|
+
return `${a}${t}`;
|
|
30
|
+
const i = Math.floor(
|
|
31
|
+
(e - 44032) / 588
|
|
32
|
+
);
|
|
33
|
+
return `${a}${o[i]}`;
|
|
34
|
+
}, ""), "getNavigationHangulInitialSearchText"), d = /* @__PURE__ */ r((n, a) => {
|
|
35
|
+
const t = l(a);
|
|
36
|
+
return t ? l(n).includes(t) ? !0 : s(n).includes(t) : !1;
|
|
37
|
+
}, "isNavigationSearchTextMatch"), C = /* @__PURE__ */ r((n, a) => !n || !d(n, a) ? [] : [[0, n.length]], "getNavigationSearchFallbackHighlightRanges");
|
|
38
|
+
export {
|
|
39
|
+
s as getNavigationHangulInitialSearchText,
|
|
40
|
+
C as getNavigationSearchFallbackHighlightRanges,
|
|
41
|
+
d as isNavigationSearchTextMatch,
|
|
42
|
+
l as normalizeNavigationSearchText
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=navigationSearchUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigationSearchUtils.js","sources":["../../../src/utils/internal/navigationSearchUtils.ts"],"sourcesContent":null,"names":["whitespacePattern","hangulInitials","normalizeHangulInitialJamo","__name","value","normalizedText","character","characterCode","normalizeNavigationSearchText","getNavigationHangulInitialSearchText","initialText","initialIndex","isNavigationSearchTextMatch","title","query","normalizedQuery","getNavigationSearchFallbackHighlightRanges"],"mappings":";;AAKA,MAAMA,IAAoB,QACpBC,IAAiB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEMC,IAA6B,gBAAAC,EAAA,CAACC,MAC3B,MAAM,KAAKA,CAAK,EAAE,OAAO,CAACC,GAAgBC,MAAc;AAC7D,QAAMC,IAAgBD,EAAU,WAAW,CAAC;AAE5C,SACEC,IAAgB,QAChBA,IAAgB,OAET,GAAGF,CAAc,GAAGC,CAAS,KAG/B,GAAGD,CAAc,GAAGJ,EAAeM,IAAgB,IAA0B,CAAC;AACvF,GAAG,EAAE,GAZ4B,+BAmBtBC,IAAgC,gBAAAL,EAAA,CAACC,MACrCF,GAA4BE,KAAS,IAAI,UAAU,MAAM,CAAC,EAC9D,kBAAA,EACA,QAAQJ,GAAmB,EAAE,GAHW,kCAUhCS,IAAuC,gBAAAN,EAAA,CAACC,MAC5C,MAAM,KAAKI,EAA8BJ,CAAK,CAAC,EAAE,OAAO,CAACM,GAAaJ,MAAc;AACzF,QAAMC,IAAgBD,EAAU,WAAW,CAAC;AAE5C,MACEC,IAAgB,SAChBA,IAAgB;AAEhB,WAAO,GAAGG,CAAW,GAAGJ,CAAS;AAGnC,QAAMK,IAAe,KAAK;AAAA,KACvBJ,IAAgB,SAA2B;AAAA,EAAA;AAG9C,SAAO,GAAGG,CAAW,GAAGT,EAAeU,CAAY,CAAC;AACtD,GAAG,EAAE,GAhB6C,yCAwBvCC,IAA8B,gBAAAT,EAAA,CAACU,GAAgBC,MAAmB;AAC7E,QAAMC,IAAkBP,EAA8BM,CAAK;AAE3D,SAAKC,IAImBP,EAA8BK,CAAK,EAEvC,SAASE,CAAe,IACnC,KAGFN,EAAqCI,CAAK,EAAE,SAASE,CAAe,IATlE;AAUX,GAd2C,gCAqB9BC,IAA6C,gBAAAb,EAAA,CACxDU,GACAC,MAEI,CAACD,KAAS,CAACD,EAA4BC,GAAOC,CAAK,IAC9C,CAAA,IAGF,CAAC,CAAC,GAAGD,EAAM,MAAM,CAAC,GAR+B;"}
|
|
@@ -1,132 +1,47 @@
|
|
|
1
1
|
var f = Object.defineProperty;
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
return
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
children: []
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
h(N, "OwpNavItemModel");
|
|
28
|
-
const a = class a {
|
|
29
|
-
static selectById(i, t) {
|
|
30
|
-
for (let e = 0; e < i.length; e += 1) {
|
|
31
|
-
const r = i[e];
|
|
32
|
-
if (r.id === t)
|
|
33
|
-
return r;
|
|
34
|
-
if (r.children) {
|
|
35
|
-
const n = this.selectById(r.children, t);
|
|
36
|
-
if (n)
|
|
37
|
-
return n;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
static appendNavItem(i, t, e = null) {
|
|
42
|
-
return e ? i.map((r) => {
|
|
43
|
-
if (r.id === e) {
|
|
44
|
-
const n = { ...r };
|
|
45
|
-
return n.children = [...r.children || [], t], n;
|
|
46
|
-
}
|
|
47
|
-
return r.children ? { ...r, children: this.appendNavItem(r.children, t, e) } : { ...r };
|
|
48
|
-
}) : [...i, t];
|
|
49
|
-
}
|
|
50
|
-
static prependNavItem(i, t, e = null) {
|
|
51
|
-
return e ? i.map((r) => {
|
|
52
|
-
if (r.id === e) {
|
|
53
|
-
const n = { ...r };
|
|
54
|
-
return n.children = [t, ...r.children || []], n;
|
|
55
|
-
}
|
|
56
|
-
return r.children ? { ...r, children: this.prependNavItem(r.children, t, e) } : { ...r };
|
|
57
|
-
}) : [t, ...i];
|
|
58
|
-
}
|
|
59
|
-
static filterNavigationByPermission(i, t) {
|
|
60
|
-
return i.reduce((e, r) => {
|
|
61
|
-
const n = r.children ? this.filterNavigationByPermission(r.children, t) : [];
|
|
62
|
-
if (this.hasPermission(r.auth, t) || n.length) {
|
|
63
|
-
const l = { ...r };
|
|
64
|
-
l.children = n.length ? n : void 0, e.push(l);
|
|
65
|
-
}
|
|
66
|
-
return e;
|
|
67
|
-
}, []);
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Navigation item removal
|
|
71
|
-
*/
|
|
72
|
-
static removeNavItem(i, t) {
|
|
73
|
-
return i.reduce((e, r) => (r.id !== t && (r.children ? e.push({
|
|
74
|
-
...r,
|
|
75
|
-
children: this.removeNavItem(r.children, t)
|
|
76
|
-
}) : e.push(r)), e), []);
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Navigation item update
|
|
80
|
-
*/
|
|
81
|
-
static updateNavItem(i, t, e) {
|
|
82
|
-
return i.map((r) => r.id === t ? p({}, r, e) : r.children ? {
|
|
83
|
-
...r,
|
|
84
|
-
children: this.updateNavItem(r.children, t, e)
|
|
85
|
-
} : r);
|
|
86
|
-
}
|
|
2
|
+
var s = (e, t) => f(e, "name", { value: t, configurable: !0 });
|
|
3
|
+
const g = /[?#]/, p = /\/+$/, u = /* @__PURE__ */ s((e) => {
|
|
4
|
+
if (!e)
|
|
5
|
+
return "";
|
|
6
|
+
const [t = ""] = e.split(g), n = t.startsWith("/") ? t : `/${t}`;
|
|
7
|
+
return n.length > 1 ? n.replace(p, "") : n;
|
|
8
|
+
}, "normalizeNavigationPathname"), y = /* @__PURE__ */ s((e, t, n = {}) => {
|
|
9
|
+
const r = u(e), a = u(t);
|
|
10
|
+
return !r || !a ? !1 : r === a ? !0 : n.end || a === "/" ? !1 : r.startsWith(`${a}/`);
|
|
11
|
+
}, "isNavigationPathMatch"), m = /* @__PURE__ */ s((e) => {
|
|
12
|
+
var t;
|
|
13
|
+
return e.type ?? ((t = e.children) != null && t.length ? "collapse" : "item");
|
|
14
|
+
}, "resolveNavigationItemType"), P = /* @__PURE__ */ s((e, t) => {
|
|
15
|
+
var r;
|
|
16
|
+
const n = { ...e };
|
|
17
|
+
return delete n.children, delete n.sx, {
|
|
18
|
+
...n,
|
|
19
|
+
type: m(e),
|
|
20
|
+
children: (r = e.children) == null ? void 0 : r.map((a) => a.id),
|
|
21
|
+
order: t
|
|
22
|
+
};
|
|
23
|
+
}, "createFlatNavigationItem"), o = class o {
|
|
87
24
|
/**
|
|
88
|
-
*
|
|
25
|
+
* 검색과 shortcut 후보 navigation list 추출
|
|
26
|
+
* @param navigationItems navigation tree
|
|
27
|
+
* @param flatNavigation 누적 flat list
|
|
28
|
+
* @param parentOrder 상위 order path
|
|
89
29
|
*/
|
|
90
|
-
static getFlatNavigation(
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
30
|
+
static getFlatNavigation(t = [], n = [], r = "") {
|
|
31
|
+
var a;
|
|
32
|
+
for (let c = 0; c < t.length; c += 1) {
|
|
33
|
+
const i = t[c], l = m(i), h = r ? `${r}.${c + 1}` : `${c + 1}`;
|
|
34
|
+
l === "item" && n.push(P(i, h)), (l === "collapse" || l === "group") && ((a = i.children) != null && a.length) && this.getFlatNavigation(i.children, n, h);
|
|
94
35
|
}
|
|
95
|
-
return
|
|
96
|
-
}
|
|
97
|
-
// @ts-expect-error legacy user role contract
|
|
98
|
-
static hasPermission(i, t) {
|
|
99
|
-
return i == null ? !0 : i.length === 0 ? !t || t.length === 0 : t && Array.isArray(i) && Array.isArray(t) ? i.some((e) => t.indexOf(e) >= 0) : i.includes(t);
|
|
100
|
-
}
|
|
101
|
-
static flattenNavigation(i, t = "") {
|
|
102
|
-
return i.flatMap((e, r) => {
|
|
103
|
-
var s;
|
|
104
|
-
const n = t ? `${t}.${r + 1}` : `${r + 1}`;
|
|
105
|
-
let l = [
|
|
106
|
-
{ ...e, order: n, children: (s = e.children) == null ? void 0 : s.map((d) => d.id) }
|
|
107
|
-
];
|
|
108
|
-
return e.children && (l = l.concat(this.flattenNavigation(e.children, n))), l;
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
static unflattenNavigation(i) {
|
|
112
|
-
const t = {};
|
|
113
|
-
i.forEach((r) => {
|
|
114
|
-
t[r.id] = { ...r, children: [] };
|
|
115
|
-
});
|
|
116
|
-
const e = [];
|
|
117
|
-
return i.forEach((r) => {
|
|
118
|
-
if (r.order.includes(".")) {
|
|
119
|
-
const n = r.order.substring(0, r.order.lastIndexOf(".")), l = i.find((s) => s.order === n);
|
|
120
|
-
l && t[l.id].children.push(t[r.id]);
|
|
121
|
-
} else
|
|
122
|
-
e.push(t[r.id]);
|
|
123
|
-
}), e.map((r) => ({ ...r }));
|
|
36
|
+
return n;
|
|
124
37
|
}
|
|
125
38
|
};
|
|
126
|
-
|
|
127
|
-
let
|
|
39
|
+
s(o, "OwpNavigationHelper");
|
|
40
|
+
let d = o;
|
|
128
41
|
export {
|
|
129
|
-
|
|
130
|
-
|
|
42
|
+
d as OwpNavigationHelper,
|
|
43
|
+
y as isNavigationPathMatch,
|
|
44
|
+
u as normalizeNavigationPathname,
|
|
45
|
+
m as resolveNavigationItemType
|
|
131
46
|
};
|
|
132
47
|
//# sourceMappingURL=navigationUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigationUtils.js","sources":["../../../src/utils/internal/navigationUtils.ts"],"sourcesContent":null,"names":["
|
|
1
|
+
{"version":3,"file":"navigationUtils.js","sources":["../../../src/utils/internal/navigationUtils.ts"],"sourcesContent":null,"names":["pathSuffixPattern","trailingSlashPattern","normalizeNavigationPathname","__name","path","pathname","normalizedPathname","isNavigationPathMatch","navigationUrl","options","currentPathname","targetPathname","resolveNavigationItemType","item","_a","createFlatNavigationItem","order","flatItem","child","_OwpNavigationHelper","navigationItems","flatNavigation","parentOrder","i","navItem","itemType","OwpNavigationHelper"],"mappings":";;AAOA,MAAMA,IAAoB,QACpBC,IAAuB,QAMhBC,IAA8B,gBAAAC,EAAA,CAACC,MAAkB;AAC5D,MAAI,CAACA;AACH,WAAO;AAGT,QAAM,CAACC,IAAW,EAAE,IAAID,EAAK,MAAMJ,CAAiB,GAC9CM,IAAqBD,EAAS,WAAW,GAAG,IAAIA,IAAW,IAAIA,CAAQ;AAE7E,SAAOC,EAAmB,SAAS,IAC/BA,EAAmB,QAAQL,GAAsB,EAAE,IACnDK;AACN,GAX2C,gCAmB9BC,IAAwB,gBAAAJ,EAAA,CACnCE,GACAG,GACAC,IAAsC,CAAA,MACnC;AACH,QAAMC,IAAkBR,EAA4BG,CAAQ,GACtDM,IAAiBT,EAA4BM,CAAa;AAEhE,SAAI,CAACE,KAAmB,CAACC,IAChB,KAGLD,MAAoBC,IACf,KAGLF,EAAQ,OAAOE,MAAmB,MAC7B,KAGFD,EAAgB,WAAW,GAAGC,CAAc,GAAG;AACxD,GArBqC,0BA2BxBC,IAA4B,gBAAAT,EAAA,CACvCU,MAAA;AAtDF,MAAAC;AAuDK,SAAAD,EAAK,UAASC,IAAAD,EAAK,aAAL,QAAAC,EAAe,SAAS,aAAa;AAAA,GAFf,8BAInCC,IAA2B,gBAAAZ,EAAA,CAC/BU,GACAG,MACuB;AA5DzB,MAAAF;AA6DE,QAAMG,IAAW,EAAE,GAAGJ,EAAA;AAEtB,gBAAOI,EAAS,UAChB,OAAOA,EAAS,IAET;AAAA,IACL,GAAGA;AAAA,IACH,MAAML,EAA0BC,CAAI;AAAA,IACpC,WAAUC,IAAAD,EAAK,aAAL,gBAAAC,EAAe,IAAI,CAACI,MAAUA,EAAM;AAAA,IAC9C,OAAAF;AAAA,EAAA;AAEJ,GAfiC,6BAoBpBG,IAAN,MAAMA,EAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO/B,OAAO,kBACLC,IAAoC,CAAA,GACpCC,IAAuC,CAAA,GACvCC,IAAsB,IACA;AAxF1B,QAAAR;AAyFI,aAASS,IAAI,GAAGA,IAAIH,EAAgB,QAAQG,KAAK,GAAG;AAClD,YAAMC,IAAUJ,EAAgBG,CAAC,GAC3BE,IAAWb,EAA0BY,CAAO,GAC5CR,IAAQM,IAAc,GAAGA,CAAW,IAAIC,IAAI,CAAC,KAAK,GAAGA,IAAI,CAAC;AAEhE,MAAIE,MAAa,UACfJ,EAAe,KAAKN,EAAyBS,GAASR,CAAK,CAAC,IAGzDS,MAAa,cAAcA,MAAa,cAAYX,IAAAU,EAAQ,aAAR,QAAAV,EAAkB,WACzE,KAAK,kBAAkBU,EAAQ,UAAUH,GAAgBL,CAAK;AAAA,IAElE;AAEA,WAAOK;AAAA,EACT;AACF;AA5BiClB,EAAAgB,GAAA;AAA1B,IAAMO,IAANP;"}
|