@orangelogic/orange-dam-content-browser-sdk 2.1.54 → 2.1.57

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 (281) hide show
  1. package/build/ApiService.d.ts +15 -0
  2. package/build/App.d.ts +62 -0
  3. package/build/AppContext.d.ts +18 -0
  4. package/build/GlobalConfigContext.d.ts +33 -0
  5. package/build/OrangeDAMContentBrowserSDK.min.css +2 -0
  6. package/build/OrangeDAMContentBrowserSDK.min.css.map +1 -0
  7. package/build/OrangeDAMContentBrowserSDK.min.js +11481 -0
  8. package/build/OrangeDAMContentBrowserSDK.min.js.map +1 -0
  9. package/build/asset-manifest.json +13 -0
  10. package/build/components/ArrayClamp/ArrayClamp.d.ts +10 -0
  11. package/build/components/ArrayClamp/ArrayClamp.styled.d.ts +1 -0
  12. package/build/components/ArrayClamp/index.d.ts +1 -0
  13. package/build/components/Browser/Browser.constants.d.ts +3 -0
  14. package/build/components/Browser/Browser.d.ts +22 -0
  15. package/build/components/Browser/Browser.styled.d.ts +2 -0
  16. package/build/components/Browser/BrowserItem.d.ts +13 -0
  17. package/build/components/Browser/LoadMoreButton.d.ts +9 -0
  18. package/build/components/ControlBar/ControlBar.constants.d.ts +10 -0
  19. package/build/components/ControlBar/ControlBar.d.ts +23 -0
  20. package/build/components/ControlBar/ControlBar.styled.d.ts +1 -0
  21. package/build/components/ControlBar/Facet/Facet.d.ts +14 -0
  22. package/build/components/ControlBar/Facet/index.d.ts +1 -0
  23. package/build/components/FormatDialog/CropPreviewer/CropPreviewer.d.ts +41 -0
  24. package/{src/components/FormatDialog/CropPreviewer/index.ts → build/components/FormatDialog/CropPreviewer/index.d.ts} +1 -1
  25. package/build/components/FormatDialog/CustomRendition/CustomRendition.constants.d.ts +5 -0
  26. package/build/components/FormatDialog/CustomRendition/CustomRendition.d.ts +56 -0
  27. package/build/components/FormatDialog/CustomRendition/CustomRendition.styled.d.ts +1 -0
  28. package/build/components/FormatDialog/CustomRendition/index.d.ts +1 -0
  29. package/build/components/FormatDialog/CustomRendition/transformations/Crop.d.ts +26 -0
  30. package/build/components/FormatDialog/CustomRendition/transformations/Extension.d.ts +11 -0
  31. package/build/components/FormatDialog/CustomRendition/transformations/Format.d.ts +10 -0
  32. package/build/components/FormatDialog/CustomRendition/transformations/Metadata.d.ts +7 -0
  33. package/build/components/FormatDialog/CustomRendition/transformations/Quality.d.ts +7 -0
  34. package/build/components/FormatDialog/CustomRendition/transformations/Resize.d.ts +18 -0
  35. package/build/components/FormatDialog/CustomRendition/transformations/Rotate.d.ts +8 -0
  36. package/{src/components/FormatDialog/CustomRendition/transformations/index.ts → build/components/FormatDialog/CustomRendition/transformations/index.d.ts} +3 -1
  37. package/build/components/FormatDialog/FormatDialog.d.ts +49 -0
  38. package/build/components/FormatDialog/FormatDialog.styled.d.ts +3 -0
  39. package/build/components/FormatDialog/Previewer/Previewer.d.ts +17 -0
  40. package/build/components/FormatDialog/Previewer/Previewer.styled.d.ts +1 -0
  41. package/build/components/FormatDialog/Previewer/index.d.ts +1 -0
  42. package/build/components/FormatDialog/ProxyMenu/ProxyMenu.d.ts +20 -0
  43. package/build/components/FormatDialog/ProxyMenu/ProxyMenu.styled.d.ts +2 -0
  44. package/build/components/FormatDialog/ProxyMenu/index.d.ts +1 -0
  45. package/build/components/FormatDialog/TrackingParameters/TrackingParameters.d.ts +13 -0
  46. package/build/components/FormatDialog/TrackingParameters/index.d.ts +1 -0
  47. package/build/components/FormatDialog/VersionHistory/VersionHistory.d.ts +6 -0
  48. package/build/components/FormatDialog/VersionHistory/VersionHistory.styled.d.ts +1 -0
  49. package/build/components/FormatDialog/VersionHistory/index.d.ts +1 -0
  50. package/build/components/FormatDialog/index.d.ts +1 -0
  51. package/build/components/Header/Header.d.ts +15 -0
  52. package/build/components/Header/Header.styled.d.ts +5 -0
  53. package/build/components/Loader/Loader.d.ts +7 -0
  54. package/build/components/Loader/index.d.ts +1 -0
  55. package/build/components/NoResult/NoResult.d.ts +7 -0
  56. package/build/components/NoResult/index.d.ts +1 -0
  57. package/build/components/Result/AssetCard/AssetCard.d.ts +15 -0
  58. package/build/components/Result/AssetCard/AssetCard.styled.d.ts +2 -0
  59. package/build/components/Result/AssetCard/AssetCardWrapper.d.ts +18 -0
  60. package/build/components/Result/AssetCard/AssetCardWrapper.styled.d.ts +1 -0
  61. package/build/components/Result/AssetCard/index.d.ts +1 -0
  62. package/build/components/Result/AssetPreview/AssetPreview.d.ts +11 -0
  63. package/build/components/Result/AssetPreview/AssetPreview.styled.d.ts +1 -0
  64. package/build/components/Result/AssetPreview/ImagePreview/ImagePreview.d.ts +11 -0
  65. package/build/components/Result/AssetPreview/ImagePreview/index.d.ts +1 -0
  66. package/build/components/Result/AssetPreview/OtherPreview/OtherPreview.d.ts +9 -0
  67. package/build/components/Result/AssetPreview/OtherPreview/OtherPreview.styled.d.ts +1 -0
  68. package/build/components/Result/AssetPreview/OtherPreview/index.d.ts +1 -0
  69. package/build/components/Result/AssetPreview/VideoPreview/VideoPreview.d.ts +11 -0
  70. package/build/components/Result/AssetPreview/VideoPreview/index.d.ts +1 -0
  71. package/build/components/Result/AssetPreview/index.d.ts +1 -0
  72. package/build/consts/asset.d.ts +14 -0
  73. package/build/consts/auth.d.ts +4 -0
  74. package/build/consts/data.d.ts +21 -0
  75. package/build/index.d.ts +229 -0
  76. package/build/index.html +1 -0
  77. package/build/page/Authenticate/Authenticate.d.ts +2 -0
  78. package/build/page/Authenticate/ConnectingBackground.d.ts +8 -0
  79. package/build/page/Authenticate/index.d.ts +2 -0
  80. package/build/page/Home/Home.d.ts +6 -0
  81. package/build/page/Home/Home.styled.d.ts +2 -0
  82. package/build/setupTests.d.ts +1 -0
  83. package/build/store/assets/assets.api.d.ts +66 -0
  84. package/build/store/assets/assets.service.d.ts +23 -0
  85. package/build/store/assets/assets.slice.d.ts +65 -0
  86. package/build/store/auth/auth.service.d.ts +10 -0
  87. package/build/store/auth/auth.slice.d.ts +76 -0
  88. package/build/store/index.d.ts +368 -0
  89. package/build/store/search/search.api.d.ts +39 -0
  90. package/build/store/search/search.slice.d.ts +12 -0
  91. package/build/store/user/user.api.d.ts +5 -0
  92. package/build/types/assets.d.ts +68 -0
  93. package/build/types/auth.d.ts +35 -0
  94. package/build/types/common.d.ts +11 -0
  95. package/build/types/download.d.ts +8 -0
  96. package/build/types/navigation.d.ts +3 -0
  97. package/build/types/search.d.ts +148 -0
  98. package/{src/types/storage.ts → build/types/storage.d.ts} +1 -1
  99. package/build/types/user.d.ts +7 -0
  100. package/build/utils/api.d.ts +27 -0
  101. package/build/utils/array.d.ts +13 -0
  102. package/build/utils/constants.d.ts +11 -0
  103. package/build/utils/function.d.ts +1 -0
  104. package/build/utils/getRequestUrl.d.ts +1 -0
  105. package/build/utils/hooks.d.ts +1 -0
  106. package/build/utils/icon.d.ts +3 -0
  107. package/build/utils/image.d.ts +24 -0
  108. package/build/utils/number.d.ts +4 -0
  109. package/build/utils/rotate.d.ts +4 -0
  110. package/build/utils/storage.d.ts +23 -0
  111. package/build/utils/string.d.ts +12 -0
  112. package/build/view/AssetsPicker.d.ts +6 -0
  113. package/package.json +49 -8
  114. package/.env +0 -1
  115. package/.eslintignore +0 -2
  116. package/.eslintrc.json +0 -82
  117. package/.releaserc +0 -17
  118. package/.travis.yml +0 -20
  119. package/CBSDKdemo.html +0 -315
  120. package/GitVersion.yml +0 -18
  121. package/azure-pipeline.yaml +0 -93
  122. package/clientlib.config.js +0 -36
  123. package/config/env.js +0 -105
  124. package/config/getHttpsConfig.js +0 -67
  125. package/config/jest/babelTransform.js +0 -30
  126. package/config/jest/cssTransform.js +0 -14
  127. package/config/jest/fileTransform.js +0 -41
  128. package/config/modules.js +0 -135
  129. package/config/paths.js +0 -79
  130. package/config/webpack/persistentCache/createEnvironmentHash.js +0 -10
  131. package/config/webpack.config.js +0 -762
  132. package/config/webpackDevServer.config.js +0 -128
  133. package/config-overrides.js +0 -8
  134. package/gab_extension/GAB.html +0 -85
  135. package/gab_extension/GoogleChrome/manifest.json +0 -28
  136. package/gab_extension/GoogleChrome/src/assets/icon48.png +0 -0
  137. package/gab_extension/GoogleChrome/src/background/index.js +0 -6
  138. package/gab_extension/GoogleChrome/src/scripts/index.js +0 -347
  139. package/gab_extension/MozillaFirefox/manifest.json +0 -20
  140. package/gab_extension/MozillaFirefox/src/assets/icon.png +0 -0
  141. package/gab_extension/MozillaFirefox/src/background/index.js +0 -5
  142. package/gab_extension/MozillaFirefox/src/scripts/index.js +0 -347
  143. package/gab_extension/README.md +0 -11
  144. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Orange DAM Asset Browser Extension.xcodeproj/project.pbxproj +0 -927
  145. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Orange DAM Asset Browser Extension.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  146. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Orange DAM Asset Browser Extension.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  147. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Orange DAM Asset Browser Extension.xcodeproj/project.xcworkspace/xcuserdata/oldevmac01.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  148. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Orange DAM Asset Browser Extension.xcodeproj/xcuserdata/oldevmac01.xcuserdatad/xcschemes/xcschememanagement.plist +0 -19
  149. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Shared (App)/Assets.xcassets/AccentColor.colorset/Contents.json +0 -11
  150. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Shared (App)/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -63
  151. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Shared (App)/Assets.xcassets/Contents.json +0 -6
  152. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Shared (App)/Assets.xcassets/LargeIcon.imageset/Contents.json +0 -20
  153. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Shared (App)/Base.lproj/Main.html +0 -23
  154. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Shared (App)/Resources/Icon.png +0 -0
  155. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Shared (App)/Resources/Script.js +0 -24
  156. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Shared (App)/Resources/Style.css +0 -61
  157. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Shared (App)/ViewController.swift +0 -81
  158. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Shared (Extension)/SafariWebExtensionHandler.swift +0 -26
  159. package/gab_extension/Safari/Orange DAM Asset Browser Extension/iOS (App)/AppDelegate.swift +0 -24
  160. package/gab_extension/Safari/Orange DAM Asset Browser Extension/iOS (App)/Base.lproj/LaunchScreen.storyboard +0 -36
  161. package/gab_extension/Safari/Orange DAM Asset Browser Extension/iOS (App)/Base.lproj/Main.storyboard +0 -38
  162. package/gab_extension/Safari/Orange DAM Asset Browser Extension/iOS (App)/Info.plist +0 -27
  163. package/gab_extension/Safari/Orange DAM Asset Browser Extension/iOS (App)/SceneDelegate.swift +0 -18
  164. package/gab_extension/Safari/Orange DAM Asset Browser Extension/iOS (Extension)/Info.plist +0 -13
  165. package/gab_extension/Safari/Orange DAM Asset Browser Extension/macOS (App)/AppDelegate.swift +0 -21
  166. package/gab_extension/Safari/Orange DAM Asset Browser Extension/macOS (App)/Base.lproj/Main.storyboard +0 -125
  167. package/gab_extension/Safari/Orange DAM Asset Browser Extension/macOS (App)/Info.plist +0 -8
  168. package/gab_extension/Safari/Orange DAM Asset Browser Extension/macOS (App)/Orange DAM Asset Browser Extension.entitlements +0 -12
  169. package/gab_extension/Safari/Orange DAM Asset Browser Extension/macOS (Extension)/Info.plist +0 -13
  170. package/gab_extension/Safari/Orange DAM Asset Browser Extension/macOS (Extension)/Orange DAM Asset Browser Extension.entitlements +0 -10
  171. package/public/index.html +0 -92
  172. package/scripts/build.js +0 -218
  173. package/scripts/start.js +0 -154
  174. package/scripts/test.js +0 -53
  175. package/src/App.tsx +0 -98
  176. package/src/AppContext.ts +0 -18
  177. package/src/GlobalConfigContext.ts +0 -46
  178. package/src/components/ArrayClamp/ArrayClamp.styled.ts +0 -42
  179. package/src/components/ArrayClamp/ArrayClamp.tsx +0 -167
  180. package/src/components/ArrayClamp/index.ts +0 -1
  181. package/src/components/Browser/Browser.styled.ts +0 -82
  182. package/src/components/Browser/Browser.tsx +0 -284
  183. package/src/components/Browser/BrowserItem.tsx +0 -98
  184. package/src/components/ControlBar/ControlBar.constants.tsx +0 -66
  185. package/src/components/ControlBar/ControlBar.styled.ts +0 -82
  186. package/src/components/ControlBar/ControlBar.tsx +0 -528
  187. package/src/components/ControlBar/Facet/Facet.tsx +0 -113
  188. package/src/components/ControlBar/Facet/index.ts +0 -1
  189. package/src/components/FormatDialog/CropPreviewer/CropPreviewer.tsx +0 -224
  190. package/src/components/FormatDialog/CustomRendition/CustomRendition.constants.ts +0 -24
  191. package/src/components/FormatDialog/CustomRendition/CustomRendition.styled.ts +0 -57
  192. package/src/components/FormatDialog/CustomRendition/CustomRendition.tsx +0 -178
  193. package/src/components/FormatDialog/CustomRendition/index.ts +0 -1
  194. package/src/components/FormatDialog/CustomRendition/transformations/Crop.tsx +0 -249
  195. package/src/components/FormatDialog/CustomRendition/transformations/Extension.tsx +0 -54
  196. package/src/components/FormatDialog/CustomRendition/transformations/Format.tsx +0 -86
  197. package/src/components/FormatDialog/CustomRendition/transformations/Resize.tsx +0 -176
  198. package/src/components/FormatDialog/CustomRendition/transformations/Rotate.tsx +0 -101
  199. package/src/components/FormatDialog/FormatDialog.styled.ts +0 -137
  200. package/src/components/FormatDialog/FormatDialog.tsx +0 -1533
  201. package/src/components/FormatDialog/Previewer/Previewer.styled.ts +0 -31
  202. package/src/components/FormatDialog/Previewer/Previewer.tsx +0 -143
  203. package/src/components/FormatDialog/Previewer/index.ts +0 -1
  204. package/src/components/FormatDialog/ProxyMenu/ProxyMenu.styled.ts +0 -88
  205. package/src/components/FormatDialog/ProxyMenu/ProxyMenu.tsx +0 -74
  206. package/src/components/FormatDialog/ProxyMenu/index.ts +0 -1
  207. package/src/components/FormatDialog/TrackingParameters/TrackingParameters.tsx +0 -59
  208. package/src/components/FormatDialog/TrackingParameters/index.ts +0 -1
  209. package/src/components/FormatDialog/index.ts +0 -1
  210. package/src/components/Header/Header.styled.ts +0 -51
  211. package/src/components/Header/Header.tsx +0 -118
  212. package/src/components/Loader/Loader.tsx +0 -37
  213. package/src/components/Loader/index.ts +0 -1
  214. package/src/components/NoResult/NoResult.tsx +0 -37
  215. package/src/components/NoResult/index.tsx +0 -1
  216. package/src/components/Result/AssetCard/AssetCard.styled.ts +0 -120
  217. package/src/components/Result/AssetCard/AssetCard.tsx +0 -192
  218. package/src/components/Result/AssetCard/AssetCardWrapper.styled.ts +0 -35
  219. package/src/components/Result/AssetCard/AssetCardWrapper.tsx +0 -165
  220. package/src/components/Result/AssetCard/index.ts +0 -1
  221. package/src/components/Result/AssetPreview/AssetPreview.styled.ts +0 -108
  222. package/src/components/Result/AssetPreview/AssetPreview.tsx +0 -78
  223. package/src/components/Result/AssetPreview/ImagePreview/ImagePreview.tsx +0 -42
  224. package/src/components/Result/AssetPreview/ImagePreview/index.ts +0 -1
  225. package/src/components/Result/AssetPreview/OtherPreview/OtherPreview.styled.ts +0 -23
  226. package/src/components/Result/AssetPreview/OtherPreview/OtherPreview.tsx +0 -28
  227. package/src/components/Result/AssetPreview/OtherPreview/index.ts +0 -1
  228. package/src/components/Result/AssetPreview/VideoPreview/VideoPreview.tsx +0 -132
  229. package/src/components/Result/AssetPreview/VideoPreview/index.ts +0 -1
  230. package/src/components/Result/AssetPreview/index.ts +0 -1
  231. package/src/consts/asset.ts +0 -16
  232. package/src/consts/data.ts +0 -17
  233. package/src/index.tsx +0 -305
  234. package/src/page/Authenticate/Authenticate.tsx +0 -232
  235. package/src/page/Authenticate/ConnectingBackground.tsx +0 -44
  236. package/src/page/Authenticate/index.tsx +0 -94
  237. package/src/page/Home/Home.styled.ts +0 -46
  238. package/src/page/Home/Home.tsx +0 -941
  239. package/src/react-web-component.d.ts +0 -4617
  240. package/src/store/assets/assets.api.ts +0 -167
  241. package/src/store/assets/assets.service.ts +0 -223
  242. package/src/store/assets/assets.slice.ts +0 -104
  243. package/src/store/auth/auth.service.ts +0 -71
  244. package/src/store/auth/auth.slice.ts +0 -295
  245. package/src/store/index.ts +0 -27
  246. package/src/store/search/search.api.ts +0 -319
  247. package/src/store/search/search.slice.ts +0 -28
  248. package/src/store/user/user.api.ts +0 -29
  249. package/src/styles.css +0 -42
  250. package/src/types/assets.ts +0 -71
  251. package/src/types/auth.ts +0 -42
  252. package/src/types/common.ts +0 -11
  253. package/src/types/download.ts +0 -8
  254. package/src/types/navigation.ts +0 -3
  255. package/src/types/search.ts +0 -116
  256. package/src/types/user.ts +0 -6
  257. package/src/utils/api.ts +0 -186
  258. package/src/utils/array.ts +0 -25
  259. package/src/utils/constants.ts +0 -12
  260. package/src/utils/fetch.ts +0 -116
  261. package/src/utils/getRequestUrl.ts +0 -15
  262. package/src/utils/hooks.ts +0 -36
  263. package/src/utils/icon.ts +0 -22
  264. package/src/utils/image.ts +0 -157
  265. package/src/utils/number.ts +0 -11
  266. package/src/utils/rotate.ts +0 -23
  267. package/src/utils/storage.ts +0 -184
  268. package/src/utils/string.ts +0 -24
  269. package/src/view/AssetsPicker.tsx +0 -24
  270. package/src/web-component.d.ts +0 -8151
  271. package/tsconfig.eslint.json +0 -10
  272. package/tsconfig.json +0 -37
  273. /package/{src/components/Browser/index.ts → build/components/Browser/index.d.ts} +0 -0
  274. /package/{src/components/ControlBar/index.ts → build/components/ControlBar/index.d.ts} +0 -0
  275. /package/{src/components/Header/index.ts → build/components/Header/index.d.ts} +0 -0
  276. /package/{public → build}/favicon.ico +0 -0
  277. /package/{public → build}/logo192.png +0 -0
  278. /package/{public → build}/logo512.png +0 -0
  279. /package/{public → build}/manifest.json +0 -0
  280. /package/{src/page/Home/index.ts → build/page/Home/index.d.ts} +0 -0
  281. /package/{public → build}/robots.txt +0 -0
@@ -1,284 +0,0 @@
1
- import _debounce from 'lodash-es/debounce';
2
- import { FC, useCallback, useEffect, useRef, useState } from 'react';
3
-
4
- import { LIBRARY_NAME } from '@/consts/data';
5
- import { useGetCollectionsQuery, useGetFoldersQuery } from '@/store/search/search.api';
6
- import { RootFolder } from '@/store/search/search.slice';
7
- import { Folder } from '@/types/search';
8
- import { getData } from '@/utils/storage';
9
- import {
10
- CxChangeEvent, CxDrawer, CxInput, CxMenu, CxSelectEvent, CxSelectionChangeEvent, CxTree,
11
- } from '@/web-component';
12
- import { skipToken } from '@reduxjs/toolkit/query';
13
-
14
- import { Drawer } from './Browser.styled';
15
- import BrowserItem from './BrowserItem';
16
-
17
- type Props = {
18
- collectionPath?: string;
19
- currentFolder: Folder;
20
- focusInput?: boolean;
21
- lastLocationMode?: boolean;
22
- open: boolean;
23
- showCollections?: boolean;
24
- useSession?: string;
25
- onFolderSelect: (selectedFolder: Folder) => void;
26
- onClose: () => void;
27
- };
28
-
29
- const Browser: FC<Props> = ({
30
- collectionPath,
31
- currentFolder,
32
- focusInput,
33
- lastLocationMode,
34
- open,
35
- showCollections,
36
- useSession,
37
- onFolderSelect,
38
- onClose,
39
- }) => {
40
- const [searchText, setSearchText] = useState('');
41
- const [isDefined, setIsDefined] = useState(false);
42
-
43
- const collectionRef = useRef<CxMenu>(null);
44
- const drawerRef = useRef<CxDrawer>(null);
45
- const searchRef = useRef<CxInput>(null);
46
- const treeRef = useRef<CxTree>(null);
47
- const firstRender = useRef(true);
48
-
49
- useEffect(() => {
50
- Promise.all([
51
- customElements.whenDefined('cx-drawer'),
52
- customElements.whenDefined('cx-input'),
53
- customElements.whenDefined('cx-tree'),
54
- ]).then(() => {
55
- setIsDefined(true);
56
- });
57
- }, []);
58
-
59
- useEffect(() => {
60
- const searchInput = searchRef.current;
61
- if (!searchInput) return;
62
- const onSearchInput = _debounce((e: CxChangeEvent) => {
63
- const value = (e.target as CxInput).value;
64
- if (searchText !== value && (value.length > 2 || value.length === 0)) {
65
- setSearchText(value);
66
- }
67
- }, 500);
68
- searchInput.addEventListener('cx-input', onSearchInput);
69
-
70
- return () => {
71
- searchInput.removeEventListener('cx-input', onSearchInput);
72
- };
73
- }, [isDefined, searchText]);
74
-
75
- useEffect(() => {
76
- const drawer = drawerRef.current;
77
- if (!drawer) return;
78
- const onDrawerClose = () => {
79
- onClose();
80
- };
81
- drawer.addEventListener('cx-request-close', onDrawerClose);
82
-
83
- return () => {
84
- drawer.removeEventListener('cx-request-close', onDrawerClose);
85
- };
86
- }, [isDefined, onClose]);
87
-
88
- const {
89
- data: folders,
90
- isLoading: isLoadingFolders,
91
- isFetching: isFetchingFolders,
92
- isError: isErrorFolders,
93
- } = useGetFoldersQuery({ folder: RootFolder, searchText, useSession });
94
-
95
- useEffect(() => {
96
- const handleDefaultFolder = () => {
97
- if (!folders) return;
98
- const libraryFolder = folders.find((folder) => folder.title === LIBRARY_NAME);
99
-
100
- if (libraryFolder) {
101
- onFolderSelect(libraryFolder);
102
- } else {
103
- onFolderSelect(RootFolder);
104
- }
105
- };
106
-
107
- if (firstRender.current && folders) {
108
- firstRender.current = false;
109
- if (lastLocationMode) {
110
- getData('lastLocation').then((lastLocation) => {
111
- if (typeof lastLocation === 'string') {
112
- try {
113
- const folder = JSON.parse(lastLocation) as Folder;
114
- onFolderSelect(folder);
115
- } catch (error) {
116
- handleDefaultFolder();
117
- }
118
- } else {
119
- handleDefaultFolder();
120
- }
121
- }).catch(() => {
122
- handleDefaultFolder();
123
- });
124
- } else {
125
- handleDefaultFolder();
126
- }
127
- }
128
- }, [folders, lastLocationMode, onFolderSelect]);
129
-
130
- const {
131
- data: collections,
132
- isLoading: isLoadingCollections,
133
- isFetching: isFetchingCollections,
134
- isError: isErrorCollections,
135
- } = useGetCollectionsQuery(
136
- collectionPath
137
- ? {
138
- folder: collectionPath,
139
- useSession,
140
- }
141
- : skipToken,
142
- );
143
-
144
- useEffect(() => {
145
- const tree = treeRef.current;
146
- if (!tree) return;
147
- const onTreeSelect = (e: CxSelectionChangeEvent) => {
148
- const folder = JSON.parse(
149
- e.detail.selection[0].dataset.value ?? '{}',
150
- ) as Folder;
151
- onFolderSelect?.(folder);
152
- };
153
- tree.addEventListener('cx-selection-change', onTreeSelect);
154
- }, [isDefined, onFolderSelect]);
155
-
156
- useEffect(() => {
157
- const collection = collectionRef.current;
158
- if (!collection) return;
159
- const onCollectionSelect = (e: CxSelectEvent) => {
160
- const folder = JSON.parse(e.detail.item.value ?? '{}') as Folder;
161
- onFolderSelect?.(folder);
162
- };
163
- collection.addEventListener('cx-select', onCollectionSelect);
164
-
165
- return () => {
166
- collection.removeEventListener('cx-select', onCollectionSelect);
167
- };
168
- }, [isDefined, collections, onFolderSelect]);
169
-
170
- const renderFolders = useCallback(() => {
171
- if (isLoadingFolders || isFetchingFolders) {
172
- return Array.from({ length: 5 }).map((_, index) => (
173
- <cx-skeleton key={index}></cx-skeleton>
174
- ));
175
- } else if (folders && folders.length > 0) {
176
- return folders?.map((folder) => (
177
- <BrowserItem
178
- key={folder.id}
179
- folder={folder}
180
- currentFolderID={currentFolder.id}
181
- searchText={searchText}
182
- useSession={useSession}
183
- />
184
- ));
185
- } else if (isErrorFolders) {
186
- return (
187
- <cx-typography variant="body3">Failed to load folders</cx-typography>
188
- );
189
- }
190
-
191
- return <cx-typography variant="body3">No folders found</cx-typography>;
192
- }, [
193
- isLoadingFolders,
194
- isFetchingFolders,
195
- isErrorFolders,
196
- folders,
197
- currentFolder.id,
198
- searchText,
199
- useSession,
200
- ]);
201
-
202
- const renderCollections = useCallback(() => {
203
- if (isLoadingCollections || isFetchingCollections) {
204
- return Array.from({ length: 5 }).map((_, index) => (
205
- <cx-skeleton key={index}></cx-skeleton>
206
- ));
207
- } else if (collections && collections.length > 0) {
208
- return collections?.map((collection) => {
209
- const isSelected = currentFolder.id === collection.id;
210
-
211
- return (
212
- <cx-menu-item
213
- key={collection.id}
214
- value={JSON.stringify(collection)}
215
- className={`${isSelected ? 'selected' : ''}`}
216
- >
217
- <cx-icon slot="prefix" name="collections"></cx-icon>
218
- {collection.title}
219
- </cx-menu-item>
220
- );
221
- });
222
- } else if (isErrorCollections) {
223
- return (
224
- <cx-typography variant="body3">
225
- Failed to load collections
226
- </cx-typography>
227
- );
228
- }
229
-
230
- return <cx-typography variant="body3">No collections found</cx-typography>;
231
- }, [isLoadingCollections, isFetchingCollections, collections, isErrorCollections, currentFolder.id]);
232
-
233
- return (
234
- <Drawer
235
- ref={drawerRef}
236
- label="Browser"
237
- placement="start"
238
- contained
239
- open={open}
240
- >
241
- <cx-space direction="vertical" spacing="small" wrap="nowrap">
242
- <cx-space
243
- direction="vertical"
244
- spacing="small"
245
- style={{
246
- padding: 'var(--body-spacing) var(--body-spacing) 0',
247
- }}
248
- >
249
- <cx-typography variant="body3">Folders</cx-typography>
250
- <cx-input
251
- ref={searchRef}
252
- value={searchText}
253
- placeholder="Search..."
254
- clearable
255
- autoFocus={focusInput}
256
- className='search-input'
257
- >
258
- <cx-icon name="search" slot="prefix" className="icon--large"></cx-icon>
259
- </cx-input>
260
- <div className="browser__folders">
261
- <cx-tree ref={treeRef}>{renderFolders()}</cx-tree>
262
- </div>
263
- </cx-space>
264
- {showCollections && collections && collections.length > 0 && (
265
- <div className="browser__collections">
266
- <cx-details>
267
- <cx-typography slot="summary" variant="body3">
268
- Collections
269
- </cx-typography>
270
- <cx-menu
271
- ref={collectionRef}
272
- className="browser__collections__menu"
273
- >
274
- {renderCollections()}
275
- </cx-menu>
276
- </cx-details>
277
- </div>
278
- )}
279
- </cx-space>
280
- </Drawer>
281
- );
282
- };
283
-
284
- export default Browser;
@@ -1,98 +0,0 @@
1
- import { FC, useEffect, useMemo, useRef, useState } from 'react';
2
-
3
- import { useGetFoldersQuery } from '@/store/search/search.api';
4
- import { Folder } from '@/types/search';
5
-
6
- import { CxCollapseEvent, CxTreeItem } from '@/web-component';
7
-
8
- type Props = {
9
- folder: Folder;
10
- currentFolderID: string;
11
- searchText?: string;
12
- useSession?: string;
13
- };
14
-
15
- export const BrowserItem: FC<Props> = ({
16
- folder,
17
- currentFolderID,
18
- searchText,
19
- useSession,
20
- }) => {
21
- const [isDefined, setIsDefined] = useState(false);
22
- const [isExpanded, setIsExpanded] = useState(false);
23
- const treeItemRef = useRef<CxTreeItem>(null);
24
- const isSelected = currentFolderID === folder.id;
25
-
26
- const {
27
- data: folders,
28
- isFetching,
29
- } = useGetFoldersQuery({ folder, searchText: '', useSession }, { skip: !isExpanded });
30
-
31
- const highlightedTitle = useMemo(() => {
32
- if (!searchText) return folder.title;
33
- const searchWords = searchText.toLowerCase().split(' ').filter(Boolean);
34
- const regex = new RegExp(`(${searchWords.join('|')})`, 'gi');
35
- const parts = folder.title.split(regex);
36
-
37
- return parts.map((part, index) =>
38
- searchWords.includes(part.toLowerCase()) ? <strong key={index}>{part}</strong> : part,
39
- );
40
- }, [folder.title, searchText]);
41
-
42
- useEffect(() => {
43
- Promise.all([
44
- customElements.whenDefined('cx-tree-item'),
45
- ]).then(() => {
46
- setIsDefined(true);
47
- });
48
- }, [isDefined]);
49
-
50
- useEffect(() => {
51
- const treeItem = treeItemRef.current;
52
- if (!treeItem) return;
53
- const onExpand = () => {
54
- setIsExpanded(true);
55
- };
56
- const onCollapse = (e: CxCollapseEvent) => {
57
- if (e.detail.target === treeItemRef.current) {
58
- setIsExpanded(false);
59
- }
60
- };
61
- treeItem.addEventListener('cx-lazy-load', onExpand);
62
- treeItem.addEventListener('cx-expand', onExpand);
63
- treeItem.addEventListener('cx-collapse', onCollapse);
64
-
65
- return () => {
66
- treeItem.removeEventListener('cx-lazy-load', onExpand);
67
- treeItem.removeEventListener('cx-expand', onExpand);
68
- treeItem.removeEventListener('cx-collapse', onCollapse);
69
- };
70
- }, [isDefined]);
71
-
72
- // Lazy load if folder has children
73
- // and (folders are not fetched yet or are fetching)
74
- const isLazy = folder.hasChildren && (folders === undefined || isFetching);
75
-
76
- return (
77
- <cx-tree-item
78
- ref={treeItemRef}
79
- data-value={JSON.stringify(folder)}
80
- expanded={isExpanded}
81
- selected={isSelected}
82
- lazy={isLazy}
83
- >
84
- <cx-icon name="folder"></cx-icon>
85
- <cx-line-clamp lines={1}>{highlightedTitle}</cx-line-clamp>
86
- {folders?.map((item) => (
87
- <BrowserItem
88
- key={item.id}
89
- folder={item}
90
- searchText={searchText}
91
- currentFolderID={currentFolderID}
92
- />
93
- ))}
94
- </cx-tree-item>
95
- );
96
- };
97
-
98
- export default BrowserItem;
@@ -1,66 +0,0 @@
1
- import { GridView } from '@/types/search';
2
-
3
- const AscendingIcon = () => (
4
- <svg
5
- // @ts-expect-error
6
- slot="prefix"
7
- width="20"
8
- height="20"
9
- viewBox="0 0 20 20"
10
- fill="none"
11
- xmlns="http://www.w3.org/2000/svg"
12
- >
13
- <path
14
- d="M3.33333 4.7619L4.25984 5.68841L6.60714 3.33929V11.3095H7.61905V3.33929L9.96627 5.68841L10.8929 4.7619L6.96429 0.833333L3.33333 4.7619Z"
15
- fill="currentColor"
16
- />
17
- <path
18
- opacity="0.3"
19
- d="M17.0833 15.2381L16.1568 14.3116L13.8095 16.6607V8.69048H12.7976V16.6607L10.4504 14.3116L9.52381 15.2381L13.4524 19.1667L17.0833 15.2381Z"
20
- fill="currentColor"
21
- />
22
- </svg>
23
- );
24
-
25
- const DescendingIcon = () => (
26
- <svg
27
- // @ts-expect-error
28
- slot="prefix"
29
- width="20"
30
- height="20"
31
- viewBox="0 0 20 20"
32
- fill="none"
33
- xmlns="http://www.w3.org/2000/svg"
34
- >
35
- <path
36
- opacity="0.3"
37
- d="M3.33333 4.7619L4.25984 5.68841L6.60714 3.33929V11.3095H7.61905V3.33929L9.96627 5.68841L10.8929 4.7619L6.96429 0.833333L3.33333 4.7619Z"
38
- fill="currentColor"
39
- />
40
- <path
41
- d="M17.0833 15.2381L16.1568 14.3116L13.8095 16.6607V8.69048H12.7976V16.6607L10.4504 14.3116L9.52381 15.2381L13.4524 19.1667L17.0833 15.2381Z"
42
- fill="currentColor"
43
- />
44
- </svg>
45
- );
46
-
47
- export const sortDirections = [{
48
- label: 'Ascending',
49
- value: 'ascending',
50
- icon: AscendingIcon,
51
- }, {
52
- label: 'Descending',
53
- value: 'descending',
54
- icon: DescendingIcon,
55
- }];
56
-
57
- export const views = [{
58
- value: GridView.Small,
59
- label: 'Small labeled',
60
- }, {
61
- value: GridView.Medium,
62
- label: 'Medium labeled',
63
- }, {
64
- value: GridView.Large,
65
- label: 'Large labeled',
66
- }];
@@ -1,82 +0,0 @@
1
- import styled from 'styled-components';
2
-
3
- export const Container = styled.div`
4
- display: flex;
5
- justify-content: space-between;
6
- flex-wrap: wrap;
7
- gap: var(--cx-spacing-small);
8
- width: 100%;
9
-
10
- --menu-item-width: 278px;
11
- --details-width: 354px;
12
-
13
- cx-input {
14
- min-width: 160px;
15
- max-width: 300px;
16
- flex: 1;
17
- }
18
-
19
- cx-menu-item.selected::part(label),
20
- cx-menu-item.selected::part(prefix),
21
- cx-menu-item.selected::part(suffix) {
22
- color: var(--cx-color-primary);
23
- font-weight: var(--cx-font-weight-medium);
24
- }
25
-
26
- cx-menu-item::part(base) {
27
- width: var(--menu-item-width);
28
- max-width: 100%;
29
- padding: var(--cx-spacing-2x-small) var(--cx-spacing-small);
30
- }
31
-
32
- cx-menu-item::part(checked-icon) {
33
- display: none;
34
- }
35
-
36
- .filter-details {
37
- width: var(--details-width);
38
- max-width: 100%;
39
-
40
- cx-space {
41
- flex-wrap: wrap;
42
- }
43
-
44
- cx-tree {
45
- width: 100%;
46
- }
47
-
48
- cx-tree-item {
49
- &::part(item) {
50
- padding: var(--cx-spacing-2x-small) 0;
51
- }
52
-
53
- &::part(item--selected) {
54
- background-color: transparent;
55
- color: var(--cx-color-neutral-700);
56
- }
57
- }
58
- }
59
-
60
- .filter-details--empty {
61
- &::part(content) {
62
- padding: 0;
63
- }
64
- }
65
-
66
- .filter-details .clear-all-button {
67
- margin-top: var(--cx-spacing-small);
68
- }
69
-
70
- .menu-item--switch {
71
- &::part(label) {
72
- display: flex;
73
- align-items: center;
74
- justify-content: space-between;
75
- width: 100%;
76
- }
77
-
78
- &::part(submenu-icon) {
79
- display: none;
80
- }
81
- }
82
- `;