ode-explorer 1.3.2-dev.202401091605 → 1.3.2-dev.202401091744

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/dist/version.txt +1 -1
  2. package/explorer.d.ts +1 -0
  3. package/lib/ActionBarContainer.js +375 -0
  4. package/lib/AppAction.js +47 -0
  5. package/lib/DeleteModal.js +60 -0
  6. package/lib/DisableModal.js +20 -0
  7. package/lib/EmptyScreenApp.js +53 -0
  8. package/lib/EmptyScreenError.js +13 -0
  9. package/lib/EmptyScreenNoContentInFolder.js +20 -0
  10. package/lib/EmptyScreenSearch.js +20 -0
  11. package/lib/EmptyScreenTrash.js +18 -0
  12. package/lib/FolderModal.js +138 -0
  13. package/lib/FoldersList.js +77 -0
  14. package/lib/Library.js +19 -0
  15. package/lib/MoveModal.js +94 -0
  16. package/lib/ResourcesList.js +261 -0
  17. package/lib/TrashModal.js +20 -0
  18. package/lib/app/root/index.d.ts +2 -0
  19. package/lib/components/AppAction/AppAction.d.ts +1 -0
  20. package/lib/components/EmptyScreens/EmptyScreenApp.d.ts +2 -0
  21. package/lib/components/EmptyScreens/EmptyScreenError.d.ts +2 -0
  22. package/lib/components/EmptyScreens/EmptyScreenNoContentInFolder.d.ts +2 -0
  23. package/lib/components/EmptyScreens/EmptyScreenSearch.d.ts +2 -0
  24. package/lib/components/EmptyScreens/EmptyScreenTrash.d.ts +1 -0
  25. package/lib/components/Explorer.d.ts +5 -0
  26. package/lib/components/ExplorerBreadcrumb.d.ts +1 -0
  27. package/lib/components/LoadMore.d.ts +3 -0
  28. package/lib/config/getExplorerConfig.d.ts +11 -0
  29. package/lib/config/index.d.ts +3 -0
  30. package/lib/features/AccessControl/AccessControl.d.ts +12 -0
  31. package/lib/features/AccessControl/useAccessControl.d.ts +14 -0
  32. package/lib/features/ActionBar/ActionBarContainer.d.ts +1 -0
  33. package/lib/features/ActionBar/Delete/DeleteModal.d.ts +8 -0
  34. package/lib/features/ActionBar/Delete/useDeleteModal.d.ts +8 -0
  35. package/lib/features/ActionBar/Disable/DisableModal.d.ts +5 -0
  36. package/lib/features/ActionBar/Disable/useDisableModal.d.ts +4 -0
  37. package/lib/features/ActionBar/Folder/FolderModal.d.ts +9 -0
  38. package/lib/features/ActionBar/Folder/useFolderModal.d.ts +22 -0
  39. package/lib/features/ActionBar/Move/MoveModal.d.ts +8 -0
  40. package/lib/features/ActionBar/Move/useMoveModal.d.ts +12 -0
  41. package/lib/features/ActionBar/Trash/TrashModal.d.ts +5 -0
  42. package/lib/features/ActionBar/Trash/useTrashModal.d.ts +4 -0
  43. package/lib/features/ActionBar/useActionBar.d.ts +30 -0
  44. package/lib/features/List/FolderCard.d.ts +17 -0
  45. package/lib/features/List/FoldersList.d.ts +7 -0
  46. package/lib/features/List/List.d.ts +1 -0
  47. package/lib/features/List/ResourceCard.d.ts +22 -0
  48. package/lib/features/List/ResourcesList.d.ts +8 -0
  49. package/lib/features/SearchForm/SearchForm.d.ts +1 -0
  50. package/lib/features/SearchForm/useSearchForm.d.ts +8 -0
  51. package/lib/features/SearchForm/useSelectedFilters.d.ts +8 -0
  52. package/lib/features/SideBar/Library/Library.d.ts +2 -0
  53. package/lib/features/SideBar/TrashButton.d.ts +7 -0
  54. package/lib/features/SideBar/TreeViewContainer.d.ts +1 -0
  55. package/lib/i18n.d.ts +2 -0
  56. package/lib/index.d.ts +1 -0
  57. package/lib/index.js +13 -0
  58. package/lib/index2.js +1867 -0
  59. package/lib/main.d.ts +0 -0
  60. package/lib/services/api/index.d.ts +129 -0
  61. package/lib/store/index.d.ts +98 -0
  62. package/lib/style.css +410 -0
  63. package/lib/utils/TreeNodeFolderWrapper.d.ts +12 -0
  64. package/lib/utils/addNode.d.ts +6 -0
  65. package/lib/utils/arrayUnique.d.ts +1 -0
  66. package/lib/utils/capitalizeFirstLetter.d.ts +1 -0
  67. package/lib/utils/deleteNode.d.ts +4 -0
  68. package/lib/utils/findNodeById.d.ts +2 -0
  69. package/lib/utils/fullTextSearch.d.ts +1 -0
  70. package/lib/utils/getAncestors.d.ts +2 -0
  71. package/lib/utils/getAppParams.d.ts +10 -0
  72. package/lib/utils/hasChildren.d.ts +2 -0
  73. package/lib/utils/isResourceShared.d.ts +2 -0
  74. package/lib/utils/modifyNode.d.ts +2 -0
  75. package/lib/utils/moveNode.d.ts +5 -0
  76. package/lib/utils/scrollToTop.d.ts +1 -0
  77. package/lib/utils/updateNode.d.ts +6 -0
  78. package/lib/utils/wrapTreeNode.d.ts +3 -0
  79. package/package.json +33 -3
package/lib/main.d.ts ADDED
File without changes
@@ -0,0 +1,129 @@
1
+ import { type ISearchParameters, type ID, type ShareRight, type UpdateParameters, type IFolder, CreateParameters, App } from "edifice-ts-client";
2
+ /**
3
+ * searchContext API
4
+ * @param searchParams
5
+ * @returns resources, no trashed folders and pagination
6
+ */
7
+ export declare const searchContext: (searchParams: ISearchParameters) => Promise<{
8
+ folders: IFolder[];
9
+ pagination: import("edifice-ts-client").IPagination;
10
+ resources: import("edifice-ts-client").IResource[];
11
+ searchConfig?: {
12
+ minLength: number;
13
+ } | undefined;
14
+ }>;
15
+ /**
16
+ * createFolder API
17
+ * @param searchParams, name, parentId
18
+ * @returns a new folder
19
+ */
20
+ export declare const createFolder: ({ searchParams, name, parentId, }: {
21
+ searchParams: ISearchParameters;
22
+ name: string;
23
+ parentId: ID;
24
+ }) => Promise<import("edifice-ts-client").CreateFolderResult>;
25
+ /**
26
+ * updateFolder API
27
+ * @param searchParams, folderId, parentId, name
28
+ * @returns updated folder
29
+ */
30
+ export declare const updateFolder: ({ folderId, searchParams, parentId, name, }: {
31
+ folderId: ID;
32
+ searchParams: ISearchParameters;
33
+ parentId: ID;
34
+ name: string;
35
+ }) => Promise<import("edifice-ts-client").CreateFolderResult>;
36
+ /**
37
+ * trashAll API
38
+ * @param searchParams, resourceIds, folderIds
39
+ * @move resources and folders to bin
40
+ */
41
+ export declare const trashAll: ({ searchParams, resourceIds, useAssetIds, folderIds, }: {
42
+ searchParams: ISearchParameters;
43
+ resourceIds: ID[];
44
+ useAssetIds: boolean;
45
+ folderIds: ID[];
46
+ }) => Promise<import("edifice-ts-client").IActionResult>;
47
+ /**
48
+ * deleteAll API
49
+ * @param searchParams, resourceIds, folderIds
50
+ * @delete folders and resources
51
+ */
52
+ export declare const deleteAll: ({ searchParams, resourceIds, useAssetIds, folderIds, }: {
53
+ searchParams: ISearchParameters;
54
+ resourceIds: ID[];
55
+ useAssetIds: boolean;
56
+ folderIds: ID[];
57
+ }) => Promise<import("edifice-ts-client").IActionResult>;
58
+ /**
59
+ * restoreAll API
60
+ * @param searchParams, resourceIds, folderIds
61
+ * @restore trashed folders and resources
62
+ */
63
+ export declare const restoreAll: ({ searchParams, resourceIds, folderIds, useAssetIds, }: {
64
+ searchParams: ISearchParameters;
65
+ resourceIds: ID[];
66
+ useAssetIds: boolean;
67
+ folderIds: ID[];
68
+ }) => Promise<import("edifice-ts-client").IActionResult>;
69
+ /**
70
+ * moveToFolder API
71
+ * @param searchParams, resourceIds, folderIds, folderId
72
+ * @returns folders and resources to new folderId location
73
+ */
74
+ export declare const moveToFolder: ({ searchParams, resourceIds, folderId, folderIds, useAssetIds, }: {
75
+ searchParams: ISearchParameters;
76
+ folderId: ID;
77
+ resourceIds: ID[];
78
+ useAssetIds: boolean;
79
+ folderIds: ID[];
80
+ }) => Promise<import("edifice-ts-client").IActionResult>;
81
+ /**
82
+ * shareResource API
83
+ * @param searchParams, entId, shares
84
+ * @returns shared resource
85
+ */
86
+ export declare const shareResource: ({ app, resourceId, rights, }: {
87
+ app: string;
88
+ resourceId: string;
89
+ rights: ShareRight[];
90
+ }) => Promise<import("edifice-ts-client").PutShareResponse>;
91
+ /**
92
+ * updateResource API
93
+ * @param searchParams, params
94
+ * @returns updated resource
95
+ */
96
+ export declare const updateResource: ({ app, params, }: {
97
+ app: App;
98
+ params: UpdateParameters;
99
+ }) => Promise<import("edifice-ts-client").UpdateResult>;
100
+ /**
101
+ * sessionHasWorkflowRights API
102
+ * @param actionRights
103
+ * @returns check if user has rights
104
+ */
105
+ export declare const sessionHasWorkflowRights: (actionRights: string[]) => Promise<Record<string, boolean>>;
106
+ export declare const goToResource: ({ searchParams, assetId, }: {
107
+ searchParams: ISearchParameters;
108
+ assetId: ID;
109
+ }) => void;
110
+ export declare const createResource: ({ searchParams, params, }: {
111
+ searchParams: ISearchParameters;
112
+ params: CreateParameters;
113
+ }) => Promise<import("edifice-ts-client").CreateResult>;
114
+ export declare const printResource: ({ searchParams, assetId, }: {
115
+ searchParams: ISearchParameters;
116
+ assetId: ID;
117
+ }) => void;
118
+ /**
119
+ * getPreference API
120
+ * @returns check onboarding trash param
121
+ */
122
+ export declare const getOnboardingTrash: (key: string) => Promise<{
123
+ showOnboardingTrash: boolean;
124
+ }>;
125
+ /**
126
+ * savePreference API
127
+ * @returns set onboarding trash param
128
+ */
129
+ export declare const saveOnboardingTrash: (key: string) => Promise<void>;
@@ -0,0 +1,98 @@
1
+ import { type TreeNode } from "@edifice-ui/react";
2
+ import { type QueryClient } from "@tanstack/react-query";
3
+ import { type ISearchParameters, type IFolder, type IResource, type ID } from "edifice-ts-client";
4
+ import { AppParams } from '../config/getExplorerConfig';
5
+ interface State {
6
+ config: AppParams | null;
7
+ searchParams: ISearchParameters;
8
+ treeData: TreeNode;
9
+ selectedNodesIds: string[];
10
+ currentFolder: Partial<IFolder>;
11
+ selectedFolders: IFolder[];
12
+ selectedResources: IResource[];
13
+ folderIds: ID[];
14
+ resourceIds: ID[];
15
+ resourceIsTrash: boolean;
16
+ resourceActionDisable: boolean;
17
+ searchConfig: {
18
+ minLength: number;
19
+ };
20
+ status: string | undefined;
21
+ updaters: {
22
+ setConfig: (config: AppParams) => void;
23
+ setSearchConfig: (config: {
24
+ minLength: number;
25
+ }) => void;
26
+ setTreeData: (treeData: TreeNode) => void;
27
+ setSearchParams: (searchParams: Partial<ISearchParameters>) => void;
28
+ setCurrentFolder: (folder: Partial<IFolder>) => void;
29
+ setSelectedFolders: (selectedFolders: IFolder[]) => void;
30
+ setSelectedResources: (selectedResources: IResource[]) => void;
31
+ setFolderIds: (folderIds: ID[]) => void;
32
+ setResourceIds: (resourceIds: ID[]) => void;
33
+ setResourceIsTrash: (resourceIsTrash: boolean) => void;
34
+ setResourceActionDisable: (resourceActionDisable: boolean) => void;
35
+ clearSelectedItems: () => void;
36
+ clearSelectedIds: () => void;
37
+ openResource: (resource: IResource) => void;
38
+ printSelectedResource: () => void;
39
+ openFolder: ({ folderId, folder, }: {
40
+ folderId: ID;
41
+ folder?: IFolder;
42
+ }) => void;
43
+ foldTreeItem: (folderId: string) => void;
44
+ selectTreeItem: (folderId: string) => void;
45
+ unfoldTreeItem: (folderId: string, queryClient: QueryClient) => Promise<void>;
46
+ gotoPreviousFolder: () => void;
47
+ goToTrash: () => void;
48
+ };
49
+ }
50
+ export declare const useStoreContext: import("zustand").UseBoundStore<import("zustand").StoreApi<State>>;
51
+ export declare const useSearchParams: () => ISearchParameters;
52
+ export declare const useSelectedNodesIds: () => string[];
53
+ export declare const useTreeData: () => TreeNode;
54
+ export declare const useSelectedFolders: () => IFolder[];
55
+ export declare const useSelectedResources: () => IResource[];
56
+ export declare const useSearchConfig: () => {
57
+ minLength: number;
58
+ };
59
+ export declare const useFolderIds: () => string[];
60
+ export declare const useResourceIds: () => string[];
61
+ export declare const useResourceAssetIds: () => string[];
62
+ export declare const useResourceWithoutIds: () => IResource[];
63
+ export declare const useCurrentFolder: () => Partial<IFolder>;
64
+ export declare const useStoreActions: () => {
65
+ setConfig: (config: AppParams) => void;
66
+ setSearchConfig: (config: {
67
+ minLength: number;
68
+ }) => void;
69
+ setTreeData: (treeData: TreeNode) => void;
70
+ setSearchParams: (searchParams: Partial<ISearchParameters>) => void;
71
+ setCurrentFolder: (folder: Partial<IFolder>) => void;
72
+ setSelectedFolders: (selectedFolders: IFolder[]) => void;
73
+ setSelectedResources: (selectedResources: IResource[]) => void;
74
+ setFolderIds: (folderIds: ID[]) => void;
75
+ setResourceIds: (resourceIds: ID[]) => void;
76
+ setResourceIsTrash: (resourceIsTrash: boolean) => void;
77
+ setResourceActionDisable: (resourceActionDisable: boolean) => void;
78
+ clearSelectedItems: () => void;
79
+ clearSelectedIds: () => void;
80
+ openResource: (resource: IResource) => void;
81
+ printSelectedResource: () => void;
82
+ openFolder: ({ folderId, folder, }: {
83
+ folderId: ID;
84
+ folder?: IFolder | undefined;
85
+ }) => void;
86
+ foldTreeItem: (folderId: string) => void;
87
+ selectTreeItem: (folderId: string) => void;
88
+ unfoldTreeItem: (folderId: string, queryClient: QueryClient) => Promise<void>;
89
+ gotoPreviousFolder: () => void;
90
+ goToTrash: () => void;
91
+ };
92
+ export declare const useIsTrash: () => boolean;
93
+ export declare const useResourceIsTrash: () => boolean;
94
+ export declare const useResourceActionDisable: () => boolean;
95
+ export declare const useIsRoot: () => boolean;
96
+ export declare const useHasSelectedNodes: () => boolean;
97
+ export declare const useTreeStatus: () => string | undefined;
98
+ export {};
package/lib/style.css ADDED
@@ -0,0 +1,410 @@
1
+ /**
2
+ * Swiper 10.0.3
3
+ * Most modern mobile touch slider and framework with hardware accelerated transitions
4
+ * https://swiperjs.com
5
+ *
6
+ * Copyright 2014-2023 Vladimir Kharlampidi
7
+ *
8
+ * Released under the MIT License
9
+ *
10
+ * Released on: July 3, 2023
11
+ */
12
+
13
+ /* FONT_START */
14
+ @font-face {
15
+ font-family: 'swiper-icons';
16
+ src: url('data:application/font-woff;charset=utf-8;base64, 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');
17
+ font-weight: 400;
18
+ font-style: normal;
19
+ }
20
+ /* FONT_END */
21
+ :root {
22
+ --swiper-theme-color: #007aff;
23
+ /*
24
+ --swiper-preloader-color: var(--swiper-theme-color);
25
+ --swiper-wrapper-transition-timing-function: initial;
26
+ */
27
+ }
28
+ :host {
29
+ position: relative;
30
+ display: block;
31
+ margin-left: auto;
32
+ margin-right: auto;
33
+ z-index: 1;
34
+ }
35
+ .swiper {
36
+ margin-left: auto;
37
+ margin-right: auto;
38
+ position: relative;
39
+ overflow: hidden;
40
+ overflow: clip;
41
+ list-style: none;
42
+ padding: 0;
43
+ /* Fix of Webkit flickering */
44
+ z-index: 1;
45
+ display: block;
46
+ }
47
+ .swiper-vertical > .swiper-wrapper {
48
+ flex-direction: column;
49
+ }
50
+ .swiper-wrapper {
51
+ position: relative;
52
+ width: 100%;
53
+ height: 100%;
54
+ z-index: 1;
55
+ display: flex;
56
+ transition-property: transform;
57
+ transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial);
58
+ box-sizing: content-box;
59
+ }
60
+ .swiper-android .swiper-slide,
61
+ .swiper-ios .swiper-slide,
62
+ .swiper-wrapper {
63
+ transform: translate3d(0px, 0, 0);
64
+ }
65
+ .swiper-horizontal {
66
+ touch-action: pan-y;
67
+ }
68
+ .swiper-vertical {
69
+ touch-action: pan-x;
70
+ }
71
+ .swiper-slide {
72
+ flex-shrink: 0;
73
+ width: 100%;
74
+ height: 100%;
75
+ position: relative;
76
+ transition-property: transform;
77
+ display: block;
78
+ }
79
+ .swiper-slide-invisible-blank {
80
+ visibility: hidden;
81
+ }
82
+ /* Auto Height */
83
+ .swiper-autoheight,
84
+ .swiper-autoheight .swiper-slide {
85
+ height: auto;
86
+ }
87
+ .swiper-autoheight .swiper-wrapper {
88
+ align-items: flex-start;
89
+ transition-property: transform, height;
90
+ }
91
+ .swiper-backface-hidden .swiper-slide {
92
+ transform: translateZ(0);
93
+ -webkit-backface-visibility: hidden;
94
+ backface-visibility: hidden;
95
+ }
96
+ /* 3D Effects */
97
+ .swiper-3d.swiper-css-mode .swiper-wrapper {
98
+ perspective: 1200px;
99
+ }
100
+ .swiper-3d .swiper-wrapper {
101
+ transform-style: preserve-3d;
102
+ }
103
+ .swiper-3d {
104
+ perspective: 1200px;
105
+ }
106
+ .swiper-3d .swiper-slide,
107
+ .swiper-3d .swiper-cube-shadow {
108
+ transform-style: preserve-3d;
109
+ }
110
+ /* CSS Mode */
111
+ .swiper-css-mode > .swiper-wrapper {
112
+ overflow: auto;
113
+ scrollbar-width: none;
114
+ /* For Firefox */
115
+ -ms-overflow-style: none;
116
+ /* For Internet Explorer and Edge */
117
+ }
118
+ .swiper-css-mode > .swiper-wrapper::-webkit-scrollbar {
119
+ display: none;
120
+ }
121
+ .swiper-css-mode > .swiper-wrapper > .swiper-slide {
122
+ scroll-snap-align: start start;
123
+ }
124
+ .swiper-css-mode.swiper-horizontal > .swiper-wrapper {
125
+ scroll-snap-type: x mandatory;
126
+ }
127
+ .swiper-css-mode.swiper-vertical > .swiper-wrapper {
128
+ scroll-snap-type: y mandatory;
129
+ }
130
+ .swiper-css-mode.swiper-free-mode > .swiper-wrapper {
131
+ scroll-snap-type: none;
132
+ }
133
+ .swiper-css-mode.swiper-free-mode > .swiper-wrapper > .swiper-slide {
134
+ scroll-snap-align: none;
135
+ }
136
+ .swiper-css-mode.swiper-centered > .swiper-wrapper::before {
137
+ content: '';
138
+ flex-shrink: 0;
139
+ order: 9999;
140
+ }
141
+ .swiper-css-mode.swiper-centered > .swiper-wrapper > .swiper-slide {
142
+ scroll-snap-align: center center;
143
+ scroll-snap-stop: always;
144
+ }
145
+ .swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child {
146
+ margin-inline-start: var(--swiper-centered-offset-before);
147
+ }
148
+ .swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper::before {
149
+ height: 100%;
150
+ min-height: 1px;
151
+ width: var(--swiper-centered-offset-after);
152
+ }
153
+ .swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child {
154
+ margin-block-start: var(--swiper-centered-offset-before);
155
+ }
156
+ .swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper::before {
157
+ width: 100%;
158
+ min-width: 1px;
159
+ height: var(--swiper-centered-offset-after);
160
+ }
161
+ /* Slide styles start */
162
+ /* 3D Shadows */
163
+ .swiper-3d .swiper-slide-shadow,
164
+ .swiper-3d .swiper-slide-shadow-left,
165
+ .swiper-3d .swiper-slide-shadow-right,
166
+ .swiper-3d .swiper-slide-shadow-top,
167
+ .swiper-3d .swiper-slide-shadow-bottom,
168
+ .swiper-3d .swiper-slide-shadow,
169
+ .swiper-3d .swiper-slide-shadow-left,
170
+ .swiper-3d .swiper-slide-shadow-right,
171
+ .swiper-3d .swiper-slide-shadow-top,
172
+ .swiper-3d .swiper-slide-shadow-bottom {
173
+ position: absolute;
174
+ left: 0;
175
+ top: 0;
176
+ width: 100%;
177
+ height: 100%;
178
+ pointer-events: none;
179
+ z-index: 10;
180
+ }
181
+ .swiper-3d .swiper-slide-shadow {
182
+ background: rgba(0, 0, 0, 0.15);
183
+ }
184
+ .swiper-3d .swiper-slide-shadow-left {
185
+ background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
186
+ }
187
+ .swiper-3d .swiper-slide-shadow-right {
188
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
189
+ }
190
+ .swiper-3d .swiper-slide-shadow-top {
191
+ background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
192
+ }
193
+ .swiper-3d .swiper-slide-shadow-bottom {
194
+ background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
195
+ }
196
+ .swiper-lazy-preloader {
197
+ width: 42px;
198
+ height: 42px;
199
+ position: absolute;
200
+ left: 50%;
201
+ top: 50%;
202
+ margin-left: -21px;
203
+ margin-top: -21px;
204
+ z-index: 10;
205
+ transform-origin: 50%;
206
+ box-sizing: border-box;
207
+ border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));
208
+ border-radius: 50%;
209
+ border-top-color: transparent;
210
+ }
211
+ .swiper:not(.swiper-watch-progress) .swiper-lazy-preloader,
212
+ .swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader {
213
+ animation: swiper-preloader-spin 1s infinite linear;
214
+ }
215
+ .swiper-lazy-preloader-white {
216
+ --swiper-preloader-color: #fff;
217
+ }
218
+ .swiper-lazy-preloader-black {
219
+ --swiper-preloader-color: #000;
220
+ }
221
+ @keyframes swiper-preloader-spin {
222
+ 0% {
223
+ transform: rotate(0deg);
224
+ }
225
+ 100% {
226
+ transform: rotate(360deg);
227
+ }
228
+ }
229
+ /* Slide styles end */
230
+ :root {
231
+ /*
232
+ --swiper-pagination-color: var(--swiper-theme-color);
233
+ --swiper-pagination-left: auto;
234
+ --swiper-pagination-right: 8px;
235
+ --swiper-pagination-bottom: 8px;
236
+ --swiper-pagination-top: auto;
237
+ --swiper-pagination-fraction-color: inherit;
238
+ --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25);
239
+ --swiper-pagination-progressbar-size: 4px;
240
+ --swiper-pagination-bullet-size: 8px;
241
+ --swiper-pagination-bullet-width: 8px;
242
+ --swiper-pagination-bullet-height: 8px;
243
+ --swiper-pagination-bullet-border-radius: 50%;
244
+ --swiper-pagination-bullet-inactive-color: #000;
245
+ --swiper-pagination-bullet-inactive-opacity: 0.2;
246
+ --swiper-pagination-bullet-opacity: 1;
247
+ --swiper-pagination-bullet-horizontal-gap: 4px;
248
+ --swiper-pagination-bullet-vertical-gap: 6px;
249
+ */
250
+ }
251
+ .swiper-pagination {
252
+ position: absolute;
253
+ text-align: center;
254
+ transition: 300ms opacity;
255
+ transform: translate3d(0, 0, 0);
256
+ z-index: 10;
257
+ }
258
+ .swiper-pagination.swiper-pagination-hidden {
259
+ opacity: 0;
260
+ }
261
+ .swiper-pagination-disabled > .swiper-pagination,
262
+ .swiper-pagination.swiper-pagination-disabled {
263
+ display: none !important;
264
+ }
265
+ /* Common Styles */
266
+ .swiper-pagination-fraction,
267
+ .swiper-pagination-custom,
268
+ .swiper-horizontal > .swiper-pagination-bullets,
269
+ .swiper-pagination-bullets.swiper-pagination-horizontal {
270
+ bottom: var(--swiper-pagination-bottom, 8px);
271
+ top: var(--swiper-pagination-top, auto);
272
+ left: 0;
273
+ width: 100%;
274
+ }
275
+ /* Bullets */
276
+ .swiper-pagination-bullets-dynamic {
277
+ overflow: hidden;
278
+ font-size: 0;
279
+ }
280
+ .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
281
+ transform: scale(0.33);
282
+ position: relative;
283
+ }
284
+ .swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active {
285
+ transform: scale(1);
286
+ }
287
+ .swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main {
288
+ transform: scale(1);
289
+ }
290
+ .swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev {
291
+ transform: scale(0.66);
292
+ }
293
+ .swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev {
294
+ transform: scale(0.33);
295
+ }
296
+ .swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next {
297
+ transform: scale(0.66);
298
+ }
299
+ .swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next {
300
+ transform: scale(0.33);
301
+ }
302
+ .swiper-pagination-bullet {
303
+ width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px));
304
+ height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px));
305
+ display: inline-block;
306
+ border-radius: var(--swiper-pagination-bullet-border-radius, 50%);
307
+ background: var(--swiper-pagination-bullet-inactive-color, #000);
308
+ opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2);
309
+ }
310
+ button.swiper-pagination-bullet {
311
+ border: none;
312
+ margin: 0;
313
+ padding: 0;
314
+ box-shadow: none;
315
+ -webkit-appearance: none;
316
+ appearance: none;
317
+ }
318
+ .swiper-pagination-clickable .swiper-pagination-bullet {
319
+ cursor: pointer;
320
+ }
321
+ .swiper-pagination-bullet:only-child {
322
+ display: none !important;
323
+ }
324
+ .swiper-pagination-bullet-active {
325
+ opacity: var(--swiper-pagination-bullet-opacity, 1);
326
+ background: var(--swiper-pagination-color, var(--swiper-theme-color));
327
+ }
328
+ .swiper-vertical > .swiper-pagination-bullets,
329
+ .swiper-pagination-vertical.swiper-pagination-bullets {
330
+ right: var(--swiper-pagination-right, 8px);
331
+ left: var(--swiper-pagination-left, auto);
332
+ top: 50%;
333
+ transform: translate3d(0px, -50%, 0);
334
+ }
335
+ .swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet,
336
+ .swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet {
337
+ margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0;
338
+ display: block;
339
+ }
340
+ .swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,
341
+ .swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {
342
+ top: 50%;
343
+ transform: translateY(-50%);
344
+ width: 8px;
345
+ }
346
+ .swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,
347
+ .swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
348
+ display: inline-block;
349
+ transition: 200ms transform, 200ms top;
350
+ }
351
+ .swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet,
352
+ .swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet {
353
+ margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px);
354
+ }
355
+ .swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic,
356
+ .swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {
357
+ left: 50%;
358
+ transform: translateX(-50%);
359
+ white-space: nowrap;
360
+ }
361
+ .swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,
362
+ .swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
363
+ transition: 200ms transform, 200ms left;
364
+ }
365
+ .swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
366
+ transition: 200ms transform, 200ms right;
367
+ }
368
+ /* Fraction */
369
+ .swiper-pagination-fraction {
370
+ color: var(--swiper-pagination-fraction-color, inherit);
371
+ }
372
+ /* Progress */
373
+ .swiper-pagination-progressbar {
374
+ background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25));
375
+ position: absolute;
376
+ }
377
+ .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {
378
+ background: var(--swiper-pagination-color, var(--swiper-theme-color));
379
+ position: absolute;
380
+ left: 0;
381
+ top: 0;
382
+ width: 100%;
383
+ height: 100%;
384
+ transform: scale(0);
385
+ transform-origin: left top;
386
+ }
387
+ .swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {
388
+ transform-origin: right top;
389
+ }
390
+ .swiper-horizontal > .swiper-pagination-progressbar,
391
+ .swiper-pagination-progressbar.swiper-pagination-horizontal,
392
+ .swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,
393
+ .swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite {
394
+ width: 100%;
395
+ height: var(--swiper-pagination-progressbar-size, 4px);
396
+ left: 0;
397
+ top: 0;
398
+ }
399
+ .swiper-vertical > .swiper-pagination-progressbar,
400
+ .swiper-pagination-progressbar.swiper-pagination-vertical,
401
+ .swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,
402
+ .swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite {
403
+ width: var(--swiper-pagination-progressbar-size, 4px);
404
+ height: 100%;
405
+ left: 0;
406
+ top: 0;
407
+ }
408
+ .swiper-pagination-lock {
409
+ display: none;
410
+ }
@@ -0,0 +1,12 @@
1
+ import { TreeNode } from "@edifice-ui/react";
2
+ import { type IFolder } from "edifice-ts-client";
3
+ /** Utility inner class that wraps an IFolder into a TreeNode. */
4
+ export default class TreeNodeFolderWrapper implements TreeNode {
5
+ readonly folder: IFolder;
6
+ constructor(folder: IFolder);
7
+ readonly id: string;
8
+ readonly name: string;
9
+ readonly childNumber: number;
10
+ section: boolean;
11
+ readonly children: TreeNode[];
12
+ }
@@ -0,0 +1,6 @@
1
+ import { type TreeNode } from "@edifice-ui/react";
2
+ import { type IFolder } from "edifice-ts-client";
3
+ export declare function addNode(treeData: TreeNode, { parentId, newFolder }: {
4
+ parentId: string;
5
+ newFolder: IFolder;
6
+ }): TreeNode;
@@ -0,0 +1 @@
1
+ export declare function arrayUnique<T>(array: T[]): T[];
@@ -0,0 +1 @@
1
+ export declare function capitalizeFirstLetter(string: string): string;
@@ -0,0 +1,4 @@
1
+ import { type TreeNode } from "@edifice-ui/react";
2
+ export declare function deleteNode(treeData: TreeNode, { folders }: {
3
+ folders: string[];
4
+ }): TreeNode;
@@ -0,0 +1,2 @@
1
+ import { type TreeNode } from "@edifice-ui/react";
2
+ export declare function findNodeById(id: string, data: TreeNode): TreeNode | undefined;
@@ -0,0 +1 @@
1
+ export declare function fullTextSearch(text: string, search: string): boolean;
@@ -0,0 +1,2 @@
1
+ import { type TreeNode } from "@edifice-ui/react";
2
+ export declare function getAncestors(folderId: string, treeData: TreeNode): string[];
@@ -0,0 +1,10 @@
1
+ import { type App, type ResourceType, type IAction, type IFilter, type IOrder } from "edifice-ts-client";
2
+ export interface AppParams {
3
+ app: App;
4
+ types: ResourceType[];
5
+ filters: IFilter[];
6
+ orders: IOrder[];
7
+ actions: IAction[];
8
+ trashActions: IAction[];
9
+ libraryAppFilter?: string;
10
+ }