@bynder/compact-view 5.1.3 → 5.1.4

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 (376) hide show
  1. package/ActiveFilter.js +33 -0
  2. package/ActiveFilter.js.map +1 -0
  3. package/ActiveFilters.js +81 -0
  4. package/ActiveFilters.js.map +1 -0
  5. package/AddMedia.js +90 -0
  6. package/AddMedia.js.map +1 -0
  7. package/Advanced.js +66 -0
  8. package/Advanced.js.map +1 -0
  9. package/App.d.ts +1 -1
  10. package/App.js +89 -0
  11. package/App.js.map +1 -0
  12. package/AssetCard.js +172 -0
  13. package/AssetCard.js.map +1 -0
  14. package/AssetCardMetaproperties.js +47 -0
  15. package/AssetCardMetaproperties.js.map +1 -0
  16. package/AssetFilter.js +158 -0
  17. package/AssetFilter.js.map +1 -0
  18. package/AssetFilterContext.js +162 -0
  19. package/AssetFilterContext.js.map +1 -0
  20. package/AssetItem.js +40 -0
  21. package/AssetItem.js.map +1 -0
  22. package/AssetList.js +158 -0
  23. package/AssetList.js.map +1 -0
  24. package/AssetTypeItem.js +34 -0
  25. package/AssetTypeItem.js.map +1 -0
  26. package/AssetsView.js +61 -0
  27. package/AssetsView.js.map +1 -0
  28. package/Autocomplete.js +148 -0
  29. package/Autocomplete.js.map +1 -0
  30. package/ButtonAction.js +14 -0
  31. package/ButtonAction.js.map +1 -0
  32. package/CardSkeleton.js +31 -0
  33. package/CardSkeleton.js.map +1 -0
  34. package/Checkbox.styles.js +38 -0
  35. package/Checkbox.styles.js.map +1 -0
  36. package/Chip.js +43 -0
  37. package/Chip.js.map +1 -0
  38. package/CollectionCard.js +56 -0
  39. package/CollectionCard.js.map +1 -0
  40. package/CollectionItem.js +41 -0
  41. package/CollectionItem.js.map +1 -0
  42. package/CollectionList.js +53 -0
  43. package/CollectionList.js.map +1 -0
  44. package/CollectionView.js +73 -0
  45. package/CollectionView.js.map +1 -0
  46. package/CollectionsView.js +58 -0
  47. package/CollectionsView.js.map +1 -0
  48. package/ConfigContext.js +18 -0
  49. package/ConfigContext.js.map +1 -0
  50. package/ConnectButton.js +20 -0
  51. package/ConnectButton.js.map +1 -0
  52. package/Container.js +52 -0
  53. package/Container.js.map +1 -0
  54. package/ContextAction.js +42 -0
  55. package/ContextAction.js.map +1 -0
  56. package/Dat/Dat.d.ts +2 -12
  57. package/Dat/DatDropdownItem.d.ts +1 -1
  58. package/Dat/index.d.ts +0 -1
  59. package/Dat.js +90 -0
  60. package/Dat.js.map +1 -0
  61. package/DatDropdownItem.js +47 -0
  62. package/DatDropdownItem.js.map +1 -0
  63. package/DesignSystemContext.js +12 -0
  64. package/DesignSystemContext.js.map +1 -0
  65. package/DirectionSelect.js +43 -0
  66. package/DirectionSelect.js.map +1 -0
  67. package/DocumentIcon.js +69 -0
  68. package/DocumentIcon.js.map +1 -0
  69. package/DomainInput.js +39 -0
  70. package/DomainInput.js.map +1 -0
  71. package/DragSelect.js +144 -0
  72. package/DragSelect.js.map +1 -0
  73. package/Dropdown.js +72 -0
  74. package/Dropdown.js.map +1 -0
  75. package/DropdownContent.js +59 -0
  76. package/DropdownContent.js.map +1 -0
  77. package/DropdownListItem.js +52 -0
  78. package/DropdownListItem.js.map +1 -0
  79. package/ErrorIcon.js +48 -0
  80. package/ErrorIcon.js.map +1 -0
  81. package/ErrorMessage.js +40 -0
  82. package/ErrorMessage.js.map +1 -0
  83. package/FieldSelect.js +74 -0
  84. package/FieldSelect.js.map +1 -0
  85. package/FileSelector.js +239 -0
  86. package/FileSelector.js.map +1 -0
  87. package/Header.js +42 -0
  88. package/Header.js.map +1 -0
  89. package/HorizontalScroll.js +51 -0
  90. package/HorizontalScroll.js.map +1 -0
  91. package/InfiniteScroll.js +26 -0
  92. package/InfiniteScroll.js.map +1 -0
  93. package/LeftArrow.js +31 -0
  94. package/LeftArrow.js.map +1 -0
  95. package/LoginComponent.js +32 -0
  96. package/LoginComponent.js.map +1 -0
  97. package/LoginContext.js +85 -0
  98. package/LoginContext.js.map +1 -0
  99. package/MetapropertyFilterContent.js +25 -0
  100. package/MetapropertyFilterContent.js.map +1 -0
  101. package/MetapropertyOption.js +24 -0
  102. package/MetapropertyOption.js.map +1 -0
  103. package/Modal.js +48 -0
  104. package/Modal.js.map +1 -0
  105. package/NoResults.js +51 -0
  106. package/NoResults.js.map +1 -0
  107. package/Oops.js +54 -0
  108. package/Oops.js.map +1 -0
  109. package/Option.js +50 -0
  110. package/Option.js.map +1 -0
  111. package/RefreshingSpinner.js +22 -0
  112. package/RefreshingSpinner.js.map +1 -0
  113. package/ReportModal.js +51 -0
  114. package/ReportModal.js.map +1 -0
  115. package/RightArrow.js +31 -0
  116. package/RightArrow.js.map +1 -0
  117. package/RootElementContext.js +12 -0
  118. package/RootElementContext.js.map +1 -0
  119. package/SearchInput.js +76 -0
  120. package/SearchInput.js.map +1 -0
  121. package/SelectedItemContainer.js +44 -0
  122. package/SelectedItemContainer.js.map +1 -0
  123. package/SelectedItems.js +27 -0
  124. package/SelectedItems.js.map +1 -0
  125. package/SelectionContext.js +144 -0
  126. package/SelectionContext.js.map +1 -0
  127. package/SelectionFooter.js +65 -0
  128. package/SelectionFooter.js.map +1 -0
  129. package/ShadowRoot.js +11 -0
  130. package/ShadowRoot.js.map +1 -0
  131. package/ShadowRootInternal.js +78 -0
  132. package/ShadowRootInternal.js.map +1 -0
  133. package/Shield.js +25 -0
  134. package/Shield.js.map +1 -0
  135. package/Skeleton.js +43 -0
  136. package/Skeleton.js.map +1 -0
  137. package/SmartFilterContent.js +11 -0
  138. package/SmartFilterContent.js.map +1 -0
  139. package/SmartFilterSelect.js +91 -0
  140. package/SmartFilterSelect.js.map +1 -0
  141. package/Smartfilters.js +186 -0
  142. package/Smartfilters.js.map +1 -0
  143. package/Spinner.js +32 -0
  144. package/Spinner.js.map +1 -0
  145. package/StatefulAssetList.js +100 -0
  146. package/StatefulAssetList.js.map +1 -0
  147. package/Styles.css.js +5 -0
  148. package/Styles.css.js.map +1 -0
  149. package/SwitchNLS.js +80 -0
  150. package/SwitchNLS.js.map +1 -0
  151. package/TagItem.js +38 -0
  152. package/TagItem.js.map +1 -0
  153. package/Tags.js +48 -0
  154. package/Tags.js.map +1 -0
  155. package/Theming.js +30 -0
  156. package/Theming.js.map +1 -0
  157. package/Toolbar.js +53 -0
  158. package/Toolbar.js.map +1 -0
  159. package/Tooltip.js +81 -0
  160. package/Tooltip.js.map +1 -0
  161. package/ViewSwitch.js +45 -0
  162. package/ViewSwitch.js.map +1 -0
  163. package/api/filterAssets.d.ts +1 -1
  164. package/api/getCollections.d.ts +1 -1
  165. package/api/getFilters.d.ts +1 -1
  166. package/api/getSimilarityAssets.d.ts +1 -1
  167. package/api/index.d.ts +2 -2
  168. package/api/rest/autocomplete.d.ts +1 -1
  169. package/api/rest/getAssetCounts.d.ts +2 -2
  170. package/api/rest/getInitialFilters.d.ts +2 -2
  171. package/api/rest/getMetapropertiesOptions.d.ts +1 -1
  172. package/app-config/ConfigContext.d.ts +3 -4
  173. package/app-config/appConfig.type.guard.d.ts +1 -1
  174. package/asset.type.js +31 -0
  175. package/asset.type.js.map +1 -0
  176. package/asyncDebounce.js +14 -0
  177. package/asyncDebounce.js.map +1 -0
  178. package/auth.js +35 -0
  179. package/auth.js.map +1 -0
  180. package/autocomplete2.js +25 -0
  181. package/autocomplete2.js.map +1 -0
  182. package/base64Converter.js +15 -0
  183. package/base64Converter.js.map +1 -0
  184. package/chunk.js +10 -0
  185. package/chunk.js.map +1 -0
  186. package/class.js +7 -0
  187. package/class.js.map +1 -0
  188. package/combineFilters.js +9 -0
  189. package/combineFilters.js.map +1 -0
  190. package/combineMetaproperties.js +25 -0
  191. package/combineMetaproperties.js.map +1 -0
  192. package/common/components/CardSkeleton.d.ts +1 -1
  193. package/common/components/Checkbox.styles.d.ts +4 -4
  194. package/common/components/Chip.d.ts +1 -1
  195. package/common/components/DocumentIcon.d.ts +1 -1
  196. package/common/components/DragSelect.d.ts +1 -1
  197. package/common/components/HorizontalScroll.d.ts +1 -1
  198. package/common/components/InfiniteScroll.d.ts +1 -1
  199. package/common/components/LeftArrow.d.ts +1 -1
  200. package/common/components/Modal.d.ts +1 -1
  201. package/common/components/NoResults.d.ts +1 -1
  202. package/common/components/RightArrow.d.ts +1 -1
  203. package/common/components/Skeleton.d.ts +1 -1
  204. package/common/components/Spinner.d.ts +1 -1
  205. package/common/components/Tooltip.d.ts +1 -1
  206. package/common/components/dropdown/Dropdown.d.ts +1 -1
  207. package/common/components/dropdown/DropdownContent.d.ts +1 -1
  208. package/common/components/dropdown/DropdownListItem.d.ts +1 -1
  209. package/common/hooks/useClickOutside.d.ts +1 -1
  210. package/constants.js +15 -0
  211. package/constants.js.map +1 -0
  212. package/createSelectors.js +11 -0
  213. package/createSelectors.js.map +1 -0
  214. package/crypto.js +21 -0
  215. package/crypto.js.map +1 -0
  216. package/error-handling/ErrorIcon.d.ts +1 -1
  217. package/error-handling/ErrorMessage.d.ts +1 -1
  218. package/error-handling/Oops.d.ts +1 -1
  219. package/error-handling/ReportModal.d.ts +1 -1
  220. package/error-handling/Shield.d.ts +1 -1
  221. package/filter/AssetFilter.d.ts +1 -1
  222. package/filter/AssetFilterContext.d.ts +3 -3
  223. package/filter/active-filters/ActiveFilter.d.ts +1 -1
  224. package/filter/active-filters/ActiveFilters.d.ts +1 -1
  225. package/filter/filters/advanced/Advanced.d.ts +1 -1
  226. package/filter/filters/advanced/AssetTypeItem.d.ts +1 -1
  227. package/filter/filters/metaproperty/Metaproperty.d.ts +1 -1
  228. package/filter/filters/metaproperty/MetapropertyFilterContent.d.ts +1 -1
  229. package/filter/filters/metaproperty/MetapropertyOption.d.ts +1 -1
  230. package/filter/filters/metaproperty/SmartFilterContent.d.ts +1 -1
  231. package/filter/filters/smartfilters/Metaproperties/Autocomplete.d.ts +3 -3
  232. package/filter/filters/smartfilters/Metaproperties/Option.d.ts +2 -2
  233. package/filter/filters/smartfilters/Metaproperties/SmartFilterSelect.d.ts +2 -2
  234. package/filter/filters/smartfilters/Smartfilters.d.ts +2 -2
  235. package/filter/filters/tags/TagItem.d.ts +1 -1
  236. package/filter/filters/tags/Tags.d.ts +1 -1
  237. package/filterAssets.js +175 -0
  238. package/filterAssets.js.map +1 -0
  239. package/filterEmptyMetaproperties.js +11 -0
  240. package/filterEmptyMetaproperties.js.map +1 -0
  241. package/getAsset.js +70 -0
  242. package/getAsset.js.map +1 -0
  243. package/getAssetCounts.js +27 -0
  244. package/getAssetCounts.js.map +1 -0
  245. package/getAssets.js +137 -0
  246. package/getAssets.js.map +1 -0
  247. package/getCollections.js +78 -0
  248. package/getCollections.js.map +1 -0
  249. package/getFilters.js +84 -0
  250. package/getFilters.js.map +1 -0
  251. package/getInitialFilters.js +51 -0
  252. package/getInitialFilters.js.map +1 -0
  253. package/getMetapropertiesOptions.js +31 -0
  254. package/getMetapropertiesOptions.js.map +1 -0
  255. package/getSimilarityAssets.js +141 -0
  256. package/getSimilarityAssets.js.map +1 -0
  257. package/handlers.js +11 -0
  258. package/handlers.js.map +1 -0
  259. package/helpers.js +7 -0
  260. package/helpers.js.map +1 -0
  261. package/index.js +9 -1162
  262. package/index.js.map +1 -0
  263. package/index2.js +18 -0
  264. package/index2.js.map +1 -0
  265. package/index3.js +36 -0
  266. package/index3.js.map +1 -0
  267. package/index4.js +20 -0
  268. package/index4.js.map +1 -0
  269. package/logger.js +7 -0
  270. package/logger.js.map +1 -0
  271. package/login/LoginComponent.d.ts +1 -1
  272. package/login/LoginContext.d.ts +1 -1
  273. package/login/components/ConnectButton.d.ts +1 -1
  274. package/login/components/Container.d.ts +1 -1
  275. package/login/components/DomainInput.d.ts +1 -1
  276. package/login/components/Header.d.ts +1 -1
  277. package/login/components/RefreshingSpinner.d.ts +1 -1
  278. package/loginwindow.js +84 -0
  279. package/loginwindow.js.map +1 -0
  280. package/normalizeResponse.js +31 -0
  281. package/normalizeResponse.js.map +1 -0
  282. package/oauth2.js +87 -0
  283. package/oauth2.js.map +1 -0
  284. package/order/DirectionSelect.d.ts +1 -1
  285. package/order/FieldSelect.d.ts +2 -2
  286. package/package.json +2 -9
  287. package/result.type.js +25 -0
  288. package/result.type.js.map +1 -0
  289. package/router/RouterContext.d.ts +1 -1
  290. package/search/SearchInput.d.ts +1 -1
  291. package/search/SwitchNLS.d.ts +1 -1
  292. package/search/index.d.ts +0 -2
  293. package/select/FileSelector.d.ts +1 -1
  294. package/select/SelectionContext.d.ts +1 -1
  295. package/select/SelectionFooter.d.ts +1 -1
  296. package/select/add-media/AddMedia.d.ts +1 -1
  297. package/select/add-media/ButtonAction.d.ts +1 -1
  298. package/select/current-selection/AssetItem.d.ts +1 -1
  299. package/select/current-selection/CollectionItem.d.ts +1 -1
  300. package/select/current-selection/SelectedItemContainer.d.ts +1 -1
  301. package/select/current-selection/SelectedItems.d.ts +1 -1
  302. package/store/useDatStore.d.ts +73 -0
  303. package/store/useOrderingStore.d.ts +2 -2
  304. package/store/useRouterStore.d.ts +4 -4
  305. package/store/useSearchStore.d.ts +69 -0
  306. package/store/useSimilaritySearchStore.d.ts +67 -0
  307. package/style/DesignSystemContext.d.ts +1 -1
  308. package/style/RootElementContext.d.ts +1 -1
  309. package/style/Theming.d.ts +1 -1
  310. package/style/shadowroot/ShadowRoot.d.ts +1 -1
  311. package/style/shadowroot/ShadowRootInternal.d.ts +1 -1
  312. package/text.js +9 -0
  313. package/text.js.map +1 -0
  314. package/toolbar/Toolbar.d.ts +1 -1
  315. package/toolbar/ViewSwitch.d.ts +1 -1
  316. package/trimMetapropertyValue.js +6 -0
  317. package/trimMetapropertyValue.js.map +1 -0
  318. package/url.js +7 -0
  319. package/url.js.map +1 -0
  320. package/useAccountDomain.js +33 -0
  321. package/useAccountDomain.js.map +1 -0
  322. package/useAuthInformation.js +42 -0
  323. package/useAuthInformation.js.map +1 -0
  324. package/useClickOutside.js +16 -0
  325. package/useClickOutside.js.map +1 -0
  326. package/useDatStore.js +62 -0
  327. package/useDatStore.js.map +1 -0
  328. package/useDimensions.js +31 -0
  329. package/useDimensions.js.map +1 -0
  330. package/useOrderingStore.js +27 -0
  331. package/useOrderingStore.js.map +1 -0
  332. package/useRouterStore.js +21 -0
  333. package/useRouterStore.js.map +1 -0
  334. package/useSearchStore.js +49 -0
  335. package/useSearchStore.js.map +1 -0
  336. package/useSimilaritySearchStore.js +28 -0
  337. package/useSimilaritySearchStore.js.map +1 -0
  338. package/utils/base64Converter.d.ts +1 -1
  339. package/utils/combineFilters.d.ts +1 -1
  340. package/utils/combineMetaproperties.d.ts +2 -2
  341. package/utils/filterEmptyMetaproperties.d.ts +1 -1
  342. package/utils/getMetaPropertiesForFilter.d.ts +1 -1
  343. package/utils/normalizeResponse.d.ts +1 -1
  344. package/utils.js +49 -0
  345. package/utils.js.map +1 -0
  346. package/utils2.js +51 -0
  347. package/utils2.js.map +1 -0
  348. package/views/asset/AssetList.d.ts +5 -3
  349. package/views/asset/AssetsView.d.ts +1 -1
  350. package/views/asset/StatefulAssetList.d.ts +2 -2
  351. package/views/asset/asset-card/AssetCard.d.ts +1 -1
  352. package/views/asset/asset-card/AssetCardMetaproperties.d.ts +3 -3
  353. package/views/asset/asset-card/ContextAction.d.ts +1 -1
  354. package/views/collection/CollectionView.d.ts +1 -1
  355. package/views/collections/CollectionCard.d.ts +1 -1
  356. package/views/collections/CollectionList.d.ts +1 -1
  357. package/views/collections/CollectionsView.d.ts +1 -1
  358. package/Dat/DatContext.d.ts +0 -12
  359. package/__tests__/utils/index.d.ts +0 -116
  360. package/api/__tests__/testMocks/mocks.d.ts +0 -14
  361. package/api/__tests__/utils.d.ts +0 -10
  362. package/common/components/__mocks__/Tooltip.d.ts +0 -6
  363. package/common/components/__tests__/utils.d.ts +0 -34
  364. package/error-handling/__tests__/utils.d.ts +0 -56
  365. package/filter/__tests__/utils.d.ts +0 -13
  366. package/index.mjs +0 -1163
  367. package/login/__tests__/mocks.d.ts +0 -1
  368. package/login/__tests__/utils.d.ts +0 -41
  369. package/search/SearchContext.d.ts +0 -25
  370. package/search/SimilaritySearchContext.d.ts +0 -21
  371. package/search/__mocks__/SimilaritySearchContext.d.ts +0 -5
  372. package/select/__tests__/utils.d.ts +0 -11
  373. package/style/shadowroot/__mocks__/ShadowRoot.d.ts +0 -4
  374. package/utils/__mocks__/logger.d.ts +0 -4
  375. package/views/asset/__tests__/utils.d.ts +0 -7
  376. package/views/collections/__tests__/utils.d.ts +0 -5
@@ -0,0 +1,53 @@
1
+ import { jsxs as h, jsx as t } from "react/jsx-runtime";
2
+ import { useState as S } from "react";
3
+ import { styled as v } from "styled-components";
4
+ import { token as r } from "@bynder/design-system";
5
+ import { CardSkeleton as C } from "./CardSkeleton.js";
6
+ import { CollectionCard as L } from "./CollectionCard.js";
7
+ import { useDimensions as x } from "./useDimensions.js";
8
+ import { InfiniteScroll as I } from "./InfiniteScroll.js";
9
+ import { NoResults as N } from "./NoResults.js";
10
+ import { useSelectedCollectionIds as k } from "./SelectionContext.js";
11
+ import { nbsp as w } from "./text.js";
12
+ import { useSearchStore as M } from "./useSearchStore.js";
13
+ function E(l) {
14
+ const [d, a] = S(null), { dimensions: i } = x(d), c = k(), { setSearch: m } = M(), { data: o, isLoading: f, loadMore: u, hasNextPage: p } = l.connection, n = i !== void 0 ? Math.ceil(i.height / 184) : 0, s = i !== void 0 ? Math.round((i.width - 32) / 204) : 0;
15
+ return /* @__PURE__ */ h(
16
+ "div",
17
+ {
18
+ role: "listbox",
19
+ className: "card-list",
20
+ ref: (e) => {
21
+ a(e);
22
+ },
23
+ children: [
24
+ (o.tag === "Failure" || o.tag === "Loading" && !o.value) && /* @__PURE__ */ t(
25
+ C,
26
+ {
27
+ rows: n,
28
+ columns: s,
29
+ title: /* @__PURE__ */ t(R, { children: w })
30
+ }
31
+ ),
32
+ o.tag === "Loaded" && o.value?.collections.nodes.length === 0 && /* @__PURE__ */ t(N, { onReset: () => m("collections", "") }),
33
+ (o.tag === "Loading" && !!o.value || o.tag === "Loaded" && o.value.collections.nodes.length > 0) && /* @__PURE__ */ t(I, { hasNextPage: p, isLoading: f, loadMore: u, children: o.value?.collections.nodes.map((e, g) => /* @__PURE__ */ t(
34
+ L,
35
+ {
36
+ isSelected: c.includes(e.id),
37
+ collection: e,
38
+ fadeIn: g >= n * s
39
+ },
40
+ e.id
41
+ )) })
42
+ ]
43
+ }
44
+ );
45
+ }
46
+ const R = v.div`
47
+ margin-top: ${r.spacing3};
48
+ font-size: ${r.fontSize75};
49
+ `;
50
+ export {
51
+ E as CollectionList
52
+ };
53
+ //# sourceMappingURL=CollectionList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollectionList.js","sources":["../../src/views/collections/CollectionList.tsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport { styled } from 'styled-components';\nimport { token } from '@bynder/design-system';\nimport { CardSkeleton } from '../../common/components/CardSkeleton';\nimport { CollectionCard } from './CollectionCard';\nimport { useDimensions } from '../../common/hooks/useDimensions';\nimport { InfiniteScroll } from '../../common/components/InfiniteScroll';\nimport { NoResults } from '../../common/components/NoResults';\nimport { useSelectedCollectionIds } from '../../select/SelectionContext';\nimport { nbsp } from '../../utils/text';\nimport { Connection } from '../../api/graphql.types';\nimport { GraphqlResponse as GraphqlCollections } from '../../api/getCollections';\nimport { useSearchStore } from '@src/store/useSearchStore';\n\ninterface Props {\n\tconnection: Connection<GraphqlCollections>;\n}\n\nexport function CollectionList(props: Props) {\n\tconst [node, setNode] = useState<HTMLDivElement | null>(null);\n\tconst { dimensions } = useDimensions(node);\n\tconst selectedIds = useSelectedCollectionIds();\n\tconst { setSearch } = useSearchStore();\n\n\tconst { data, isLoading, loadMore, hasNextPage } = props.connection;\n\n\tconst count = dimensions !== undefined ? Math.ceil(dimensions.height / 184) : 0;\n\tconst collectionsPerRow =\n\t\tdimensions !== undefined ? Math.round((dimensions.width - 32) / 204) : 0;\n\n\treturn (\n\t\t<div\n\t\t\trole=\"listbox\"\n\t\t\tclassName=\"card-list\"\n\t\t\tref={(el) => {\n\t\t\t\tsetNode(el);\n\t\t\t}}\n\t\t>\n\t\t\t{(data.tag === 'Failure' || (data.tag === 'Loading' && !data.value)) && (\n\t\t\t\t<CardSkeleton\n\t\t\t\t\trows={count}\n\t\t\t\t\tcolumns={collectionsPerRow}\n\t\t\t\t\t// Empty row to match height with \"[n] files\"\n\t\t\t\t\ttitle={<CardSkeletonTitle>{nbsp}</CardSkeletonTitle>}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{data.tag === 'Loaded' && data.value?.collections.nodes.length === 0 && (\n\t\t\t\t<NoResults onReset={() => setSearch('collections', '')} />\n\t\t\t)}\n\n\t\t\t{((data.tag === 'Loading' && !!data.value) ||\n\t\t\t\t(data.tag === 'Loaded' && data.value.collections.nodes.length > 0)) && (\n\t\t\t\t<InfiniteScroll hasNextPage={hasNextPage} isLoading={isLoading} loadMore={loadMore}>\n\t\t\t\t\t{data.value?.collections.nodes.map((collection, index) => (\n\t\t\t\t\t\t<CollectionCard\n\t\t\t\t\t\t\tkey={collection.id}\n\t\t\t\t\t\t\tisSelected={selectedIds.includes(collection.id)}\n\t\t\t\t\t\t\tcollection={collection}\n\t\t\t\t\t\t\tfadeIn={index >= count * collectionsPerRow}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</InfiniteScroll>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nconst CardSkeletonTitle = styled.div`\n\tmargin-top: ${token.spacing3};\n\tfont-size: ${token.fontSize75};\n`;\n"],"names":["CollectionList","props","node","setNode","useState","dimensions","useDimensions","selectedIds","useSelectedCollectionIds","setSearch","useSearchStore","data","isLoading","loadMore","hasNextPage","count","collectionsPerRow","jsxs","el","jsx","CardSkeleton","CardSkeletonTitle","nbsp","NoResults","InfiniteScroll","collection","index","CollectionCard","styled","token"],"mappings":";;;;;;;;;;;;AAmBO,SAASA,EAAeC,GAAc;AAC5C,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAgC,IAAI,GACtD,EAAE,YAAAC,EAAA,IAAeC,EAAcJ,CAAI,GACnCK,IAAcC,EAAA,GACd,EAAE,WAAAC,EAAA,IAAcC,EAAA,GAEhB,EAAE,MAAAC,GAAM,WAAAC,GAAW,UAAAC,GAAU,aAAAC,EAAA,IAAgBb,EAAM,YAEnDc,IAAQV,MAAe,SAAY,KAAK,KAAKA,EAAW,SAAS,GAAG,IAAI,GACxEW,IACLX,MAAe,SAAY,KAAK,OAAOA,EAAW,QAAQ,MAAM,GAAG,IAAI;AAExE,SACC,gBAAAY;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,MAAK;AAAA,MACL,WAAU;AAAA,MACV,KAAK,CAACC,MAAO;AACZ,QAAAf,EAAQe,CAAE;AAAA,MACX;AAAA,MAEE,UAAA;AAAA,SAAAP,EAAK,QAAQ,aAAcA,EAAK,QAAQ,aAAa,CAACA,EAAK,UAC5D,gBAAAQ;AAAA,UAACC;AAAA,UAAA;AAAA,YACA,MAAML;AAAA,YACN,SAASC;AAAA,YAET,OAAO,gBAAAG,EAACE,GAAA,EAAmB,UAAAC,EAAA,CAAK;AAAA,UAAA;AAAA,QAAA;AAAA,QAIjCX,EAAK,QAAQ,YAAYA,EAAK,OAAO,YAAY,MAAM,WAAW,KAClE,gBAAAQ,EAACI,KAAU,SAAS,MAAMd,EAAU,eAAe,EAAE,GAAG;AAAA,SAGtDE,EAAK,QAAQ,aAAa,CAAC,CAACA,EAAK,SAClCA,EAAK,QAAQ,YAAYA,EAAK,MAAM,YAAY,MAAM,SAAS,MAChE,gBAAAQ,EAACK,GAAA,EAAe,aAAAV,GAA0B,WAAAF,GAAsB,UAAAC,GAC9D,UAAAF,EAAK,OAAO,YAAY,MAAM,IAAI,CAACc,GAAYC,MAC/C,gBAAAP;AAAA,UAACQ;AAAA,UAAA;AAAA,YAEA,YAAYpB,EAAY,SAASkB,EAAW,EAAE;AAAA,YAC9C,YAAAA;AAAA,YACA,QAAQC,KAASX,IAAQC;AAAA,UAAA;AAAA,UAHpBS,EAAW;AAAA,QAAA,CAKjB,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIJ;AAEA,MAAMJ,IAAoBO,EAAO;AAAA,eAClBC,EAAM,QAAQ;AAAA,cACfA,EAAM,UAAU;AAAA;"}
@@ -0,0 +1,73 @@
1
+ import { jsxs as e, Fragment as b, jsx as y } from "react/jsx-runtime";
2
+ import { styled as i } from "styled-components";
3
+ import { token as t } from "@bynder/design-system";
4
+ import { useConfig as A } from "./ConfigContext.js";
5
+ import { useOrderingSelectors as k } from "./useOrderingStore.js";
6
+ import { useRouter as v } from "./useRouterStore.js";
7
+ import { useFilterAssets as w } from "./filterAssets.js";
8
+ import { __ as x } from "./index2.js";
9
+ import { StatefulAssetList as F } from "./StatefulAssetList.js";
10
+ import { useAssetFilter as L } from "./AssetFilterContext.js";
11
+ import { useSearchStateByPage as V } from "./useSearchStore.js";
12
+ import { useSimilaritySearchStore as B } from "./useSimilaritySearchStore.js";
13
+ import { useSimilarityAssets as N } from "./getSimilarityAssets.js";
14
+ function K(o) {
15
+ const { value: n } = V("collection"), [, r] = v(), c = k.use.collection(), { language: s, noCache: l } = A(), { assetTypes: a, tags: m, isLimited: u, selectedSmartfilterOptions: d } = L(), {
16
+ isSelected: p,
17
+ isNLSSelected: f,
18
+ NLSSearchText: g
19
+ } = B(), { connection: S } = N(), h = w(
20
+ {
21
+ collection: o.collection,
22
+ filter: { assetTypes: a, selectedSmartfilterOptions: d, tags: m, isLimited: u },
23
+ searchTerm: n,
24
+ orderBy: c,
25
+ language: s
26
+ },
27
+ l
28
+ ), C = p || f && g;
29
+ return /* @__PURE__ */ e(b, { children: [
30
+ /* @__PURE__ */ e(T, { "data-testid": "collection-toolbar", children: [
31
+ /* @__PURE__ */ e(
32
+ $,
33
+ {
34
+ onClick: () => r({ page: "collections" }),
35
+ type: "button",
36
+ children: [
37
+ x("Collections"),
38
+ " / "
39
+ ]
40
+ }
41
+ ),
42
+ /* @__PURE__ */ e("span", { children: [
43
+ " ",
44
+ o.collection.name,
45
+ " "
46
+ ] })
47
+ ] }),
48
+ /* @__PURE__ */ y(
49
+ F,
50
+ {
51
+ connection: C ? S : h,
52
+ totalCount: o.collection.assetCount,
53
+ showActiveFilters: !0
54
+ }
55
+ )
56
+ ] });
57
+ }
58
+ const T = i.nav`
59
+ padding: ${t.spacing5} ${t.spacing5};
60
+ `, $ = i.button`
61
+ cursor: pointer;
62
+ user-select: none;
63
+ color: rgba(0, 34, 51, 0.5);
64
+ background-color: transparent;
65
+ background-image: none;
66
+ border: 0 solid rgba(0, 34, 51, 0.1);
67
+ font-size: ${t.fontSize100};
68
+ padding: 0;
69
+ `;
70
+ export {
71
+ K as CollectionView
72
+ };
73
+ //# sourceMappingURL=CollectionView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollectionView.js","sources":["../../src/views/collection/CollectionView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { styled } from 'styled-components';\nimport { token } from '@bynder/design-system';\nimport { useConfig } from '@src/app-config/ConfigContext';\nimport { useOrderingSelectors } from '@src/store/useOrderingStore';\nimport { useRouter } from '@src/store/useRouterStore';\nimport { Collection } from './collection.types';\nimport { useFilterAssets } from '@src/api/filterAssets';\nimport { __ } from '@src/localization';\nimport { StatefulAssetList } from '../asset/StatefulAssetList';\nimport { useAssetFilter } from '@src/filter/AssetFilterContext';\nimport { useSearchStateByPage } from '@src/store/useSearchStore';\nimport { useSimilaritySearchStore } from '@src/store/useSimilaritySearchStore';\nimport { useSimilarityAssets } from '@src/api/getSimilarityAssets';\n\ninterface Props {\n\tcollection: Collection;\n}\n\nexport function CollectionView(props: Props) {\n\tconst { value: searchValue } = useSearchStateByPage('collection');\n\tconst [, setPage] = useRouter();\n\tconst ordering = useOrderingSelectors.use.collection();\n\tconst { language, noCache } = useConfig();\n\tconst { assetTypes, tags, isLimited, selectedSmartfilterOptions } = useAssetFilter();\n\n\tconst {\n\t\tisSelected: isSimilaritySearchSelected,\n\t\tisNLSSelected,\n\t\tNLSSearchText,\n\t} = useSimilaritySearchStore();\n\tconst { connection: similarityConnection } = useSimilarityAssets();\n\n\tconst connection = useFilterAssets(\n\t\t{\n\t\t\tcollection: props.collection,\n\t\t\tfilter: { assetTypes, selectedSmartfilterOptions, tags, isLimited },\n\t\t\tsearchTerm: searchValue,\n\t\t\torderBy: ordering,\n\t\t\tlanguage,\n\t\t},\n\t\tnoCache,\n\t);\n\n\tconst isAISearchEnabled = isSimilaritySearchSelected || (isNLSSelected && NLSSearchText);\n\n\treturn (\n\t\t<>\n\t\t\t<CollectionViewNav data-testid=\"collection-toolbar\">\n\t\t\t\t<CollectionViewButton\n\t\t\t\t\tonClick={() => setPage({ page: 'collections' })}\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t>\n\t\t\t\t\t{__('Collections')}\n\t\t\t\t\t{' / '}\n\t\t\t\t</CollectionViewButton>\n\t\t\t\t<span> {props.collection.name} </span>\n\t\t\t</CollectionViewNav>\n\n\t\t\t<StatefulAssetList\n\t\t\t\tconnection={isAISearchEnabled ? similarityConnection : connection}\n\t\t\t\ttotalCount={props.collection.assetCount}\n\t\t\t\tshowActiveFilters\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nconst CollectionViewNav = styled.nav`\n\tpadding: ${token.spacing5} ${token.spacing5};\n`;\n\nconst CollectionViewButton = styled.button`\n\tcursor: pointer;\n\tuser-select: none;\n\tcolor: rgba(0, 34, 51, 0.5);\n\tbackground-color: transparent;\n\tbackground-image: none;\n\tborder: 0 solid rgba(0, 34, 51, 0.1);\n\tfont-size: ${token.fontSize100};\n\tpadding: 0;\n`;\n"],"names":["CollectionView","props","searchValue","useSearchStateByPage","setPage","useRouter","ordering","useOrderingSelectors","language","noCache","useConfig","assetTypes","tags","isLimited","selectedSmartfilterOptions","useAssetFilter","isSimilaritySearchSelected","isNLSSelected","NLSSearchText","useSimilaritySearchStore","similarityConnection","useSimilarityAssets","connection","useFilterAssets","isAISearchEnabled","jsxs","Fragment","CollectionViewNav","CollectionViewButton","__","jsx","StatefulAssetList","styled","token"],"mappings":";;;;;;;;;;;;;AAoBO,SAASA,EAAeC,GAAc;AAC5C,QAAM,EAAE,OAAOC,MAAgBC,EAAqB,YAAY,GAC1D,CAAA,EAAGC,CAAO,IAAIC,EAAA,GACdC,IAAWC,EAAqB,IAAI,WAAA,GACpC,EAAE,UAAAC,GAAU,SAAAC,EAAA,IAAYC,EAAA,GACxB,EAAE,YAAAC,GAAY,MAAAC,GAAM,WAAAC,GAAW,4BAAAC,EAAA,IAA+BC,EAAA,GAE9D;AAAA,IACL,YAAYC;AAAA,IACZ,eAAAC;AAAA,IACA,eAAAC;AAAA,EAAA,IACGC,EAAA,GACE,EAAE,YAAYC,EAAA,IAAyBC,EAAA,GAEvCC,IAAaC;AAAA,IAClB;AAAA,MACC,YAAYtB,EAAM;AAAA,MAClB,QAAQ,EAAE,YAAAU,GAAY,4BAAAG,GAA4B,MAAAF,GAAM,WAAAC,EAAA;AAAA,MACxD,YAAYX;AAAA,MACZ,SAASI;AAAA,MACT,UAAAE;AAAA,IAAA;AAAA,IAEDC;AAAA,EAAA,GAGKe,IAAoBR,KAA+BC,KAAiBC;AAE1E,SACC,gBAAAO,EAAAC,GAAA,EACC,UAAA;AAAA,IAAA,gBAAAD,EAACE,GAAA,EAAkB,eAAY,sBAC9B,UAAA;AAAA,MAAA,gBAAAF;AAAA,QAACG;AAAA,QAAA;AAAA,UACA,SAAS,MAAMxB,EAAQ,EAAE,MAAM,eAAe;AAAA,UAC9C,MAAK;AAAA,UAEJ,UAAA;AAAA,YAAAyB,EAAG,aAAa;AAAA,YAChB;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,wBAED,QAAA,EAAK,UAAA;AAAA,QAAA;AAAA,QAAE5B,EAAM,WAAW;AAAA,QAAK;AAAA,MAAA,EAAA,CAAC;AAAA,IAAA,GAChC;AAAA,IAEA,gBAAA6B;AAAA,MAACC;AAAA,MAAA;AAAA,QACA,YAAYP,IAAoBJ,IAAuBE;AAAA,QACvD,YAAYrB,EAAM,WAAW;AAAA,QAC7B,mBAAiB;AAAA,MAAA;AAAA,IAAA;AAAA,EAClB,GACD;AAEF;AAEA,MAAM0B,IAAoBK,EAAO;AAAA,YACrBC,EAAM,QAAQ,IAAIA,EAAM,QAAQ;AAAA,GAGtCL,IAAuBI,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAOtBC,EAAM,WAAW;AAAA;AAAA;"}
@@ -0,0 +1,58 @@
1
+ import { jsx as e, jsxs as r } from "react/jsx-runtime";
2
+ import { useEffect as m } from "react";
3
+ import { styled as i } from "styled-components";
4
+ import { token as t } from "@bynder/design-system";
5
+ import { useConfig as f } from "./ConfigContext.js";
6
+ import { useOrderingSelectors as d } from "./useOrderingStore.js";
7
+ import { Oops as p } from "./Oops.js";
8
+ import { DirectionSelect as u } from "./DirectionSelect.js";
9
+ import { FieldSelect as g } from "./FieldSelect.js";
10
+ import { pluralize as C } from "./text.js";
11
+ import { __ as n } from "./index2.js";
12
+ import { CollectionList as x } from "./CollectionList.js";
13
+ import { useGetCollections as w } from "./getCollections.js";
14
+ import { useSearchStateByPage as v } from "./useSearchStore.js";
15
+ function O() {
16
+ const { value: l, setIsLoading: s } = v("collections"), a = d.use.collections(), { noCache: c } = f(), o = w(
17
+ {
18
+ searchTerm: l,
19
+ orderBy: a
20
+ },
21
+ c
22
+ );
23
+ return m(() => {
24
+ o.isLoading || s(!1);
25
+ }, [o.isLoading]), o.data.tag === "Failure" ? /* @__PURE__ */ e(p, { error: new Error(o.data.value), onRetry: o.executeQuery }) : /* @__PURE__ */ r(y, { "data-testid": "collections-view-container", children: [
26
+ /* @__PURE__ */ r(h, { children: [
27
+ o.data.value && /* @__PURE__ */ e(E, { children: C(
28
+ o.data.value.collections.totalCount,
29
+ n("{} collection"),
30
+ n("{} collections")
31
+ ) }),
32
+ !o.data.value && /* @__PURE__ */ e("span", { className: "flex-grow" }),
33
+ /* @__PURE__ */ e(g, { options: ["CREATED_AT", "NAME"] }),
34
+ /* @__PURE__ */ e(u, {})
35
+ ] }),
36
+ /* @__PURE__ */ e(x, { connection: o })
37
+ ] });
38
+ }
39
+ const y = i.div`
40
+ display: flex;
41
+ flex-direction: column;
42
+ flex-grow: 1;
43
+ overflow-y: auto;
44
+ `, h = i.div`
45
+ display: flex;
46
+ align-items: center;
47
+ padding: ${t.spacing5} ${t.spacing5} ${t.spacing3} ${t.spacing5};
48
+ z-index: 10;
49
+ `, E = i.span`
50
+ color: rgba(0, 34, 51, 0.5);
51
+ flex-shrink: 0;
52
+ flex-grow: 1;
53
+ animation: fade-in-down 0.15s ease-out;
54
+ `;
55
+ export {
56
+ O as CollectionsView
57
+ };
58
+ //# sourceMappingURL=CollectionsView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollectionsView.js","sources":["../../src/views/collections/CollectionsView.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\n\nimport { styled } from 'styled-components';\nimport { token } from '@bynder/design-system';\nimport { useConfig } from '@src/app-config/ConfigContext';\nimport { useOrderingSelectors } from '@src/store/useOrderingStore';\nimport { Oops } from '../../error-handling/Oops';\nimport { DirectionSelect } from '../../order/DirectionSelect';\nimport { FieldSelect } from '../../order/FieldSelect';\nimport { pluralize } from '../../utils/text';\nimport { __ } from '../../localization';\nimport { CollectionList } from './CollectionList';\nimport { useGetCollections } from '../../api/getCollections';\nimport { useSearchStateByPage } from '@src/store/useSearchStore';\n\nexport function CollectionsView() {\n\tconst { value: searchTerm, setIsLoading } = useSearchStateByPage('collections');\n\tconst ordering = useOrderingSelectors.use.collections();\n\tconst { noCache } = useConfig();\n\n\tconst connection = useGetCollections(\n\t\t{\n\t\t\tsearchTerm,\n\t\t\torderBy: ordering,\n\t\t},\n\t\tnoCache,\n\t);\n\n\tuseEffect(() => {\n\t\tif (!connection.isLoading) {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}, [connection.isLoading]); // eslint-disable-line\n\n\tif (connection.data.tag === 'Failure') {\n\t\treturn <Oops error={new Error(connection.data.value)} onRetry={connection.executeQuery} />;\n\t}\n\n\treturn (\n\t\t<CollectionsViewContainer data-testid=\"collections-view-container\">\n\t\t\t<CollectionsViewContent>\n\t\t\t\t{connection.data.value && (\n\t\t\t\t\t<CollectionsViewCount>\n\t\t\t\t\t\t{pluralize(\n\t\t\t\t\t\t\tconnection.data.value.collections.totalCount,\n\t\t\t\t\t\t\t__('{} collection'),\n\t\t\t\t\t\t\t__('{} collections'),\n\t\t\t\t\t\t)}\n\t\t\t\t\t</CollectionsViewCount>\n\t\t\t\t)}\n\n\t\t\t\t{!connection.data.value && <span className=\"flex-grow\" />}\n\n\t\t\t\t<FieldSelect options={['CREATED_AT', 'NAME']} />\n\t\t\t\t<DirectionSelect />\n\t\t\t</CollectionsViewContent>\n\n\t\t\t<CollectionList connection={connection} />\n\t\t</CollectionsViewContainer>\n\t);\n}\n\nconst CollectionsViewContainer = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex-grow: 1;\n\toverflow-y: auto;\n`;\n\nconst CollectionsViewContent = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tpadding: ${token.spacing5} ${token.spacing5} ${token.spacing3} ${token.spacing5};\n\tz-index: 10;\n`;\n\nconst CollectionsViewCount = styled.span`\n\tcolor: rgba(0, 34, 51, 0.5);\n\tflex-shrink: 0;\n\tflex-grow: 1;\n\tanimation: fade-in-down 0.15s ease-out;\n`;\n"],"names":["CollectionsView","searchTerm","setIsLoading","useSearchStateByPage","ordering","useOrderingSelectors","noCache","useConfig","connection","useGetCollections","useEffect","jsx","Oops","jsxs","CollectionsViewContainer","CollectionsViewContent","CollectionsViewCount","pluralize","__","FieldSelect","DirectionSelect","CollectionList","styled","token"],"mappings":";;;;;;;;;;;;;;AAeO,SAASA,IAAkB;AACjC,QAAM,EAAE,OAAOC,GAAY,cAAAC,EAAA,IAAiBC,EAAqB,aAAa,GACxEC,IAAWC,EAAqB,IAAI,YAAA,GACpC,EAAE,SAAAC,EAAA,IAAYC,EAAA,GAEdC,IAAaC;AAAA,IAClB;AAAA,MACC,YAAAR;AAAA,MACA,SAASG;AAAA,IAAA;AAAA,IAEVE;AAAA,EAAA;AASD,SANAI,EAAU,MAAM;AACf,IAAKF,EAAW,aACfN,EAAa,EAAK;AAAA,EAEpB,GAAG,CAACM,EAAW,SAAS,CAAC,GAErBA,EAAW,KAAK,QAAQ,YACpB,gBAAAG,EAACC,GAAA,EAAK,OAAO,IAAI,MAAMJ,EAAW,KAAK,KAAK,GAAG,SAASA,EAAW,aAAA,CAAc,IAIxF,gBAAAK,EAACC,GAAA,EAAyB,eAAY,8BACrC,UAAA;AAAA,IAAA,gBAAAD,EAACE,GAAA,EACC,UAAA;AAAA,MAAAP,EAAW,KAAK,SAChB,gBAAAG,EAACK,GAAA,EACC,UAAAC;AAAA,QACAT,EAAW,KAAK,MAAM,YAAY;AAAA,QAClCU,EAAG,eAAe;AAAA,QAClBA,EAAG,gBAAgB;AAAA,MAAA,GAErB;AAAA,MAGA,CAACV,EAAW,KAAK,SAAS,gBAAAG,EAAC,QAAA,EAAK,WAAU,aAAY;AAAA,wBAEtDQ,GAAA,EAAY,SAAS,CAAC,cAAc,MAAM,GAAG;AAAA,wBAC7CC,GAAA,CAAA,CAAgB;AAAA,IAAA,GAClB;AAAA,IAEA,gBAAAT,EAACU,KAAe,YAAAb,EAAA,CAAwB;AAAA,EAAA,GACzC;AAEF;AAEA,MAAMM,IAA2BQ,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,GAOlCP,IAAyBO,EAAO;AAAA;AAAA;AAAA,YAG1BC,EAAM,QAAQ,IAAIA,EAAM,QAAQ,IAAIA,EAAM,QAAQ,IAAIA,EAAM,QAAQ;AAAA;AAAA,GAI1EP,IAAuBM,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -0,0 +1,18 @@
1
+ import { createContext as n, useContext as c } from "react";
2
+ const i = {
3
+ assetTypes: [],
4
+ language: "en_US",
5
+ onSuccess: (o, { selectedFile: s }) => console.log(o, s),
6
+ // eslint-disable-line no-console
7
+ selectionMode: "MultiSelect",
8
+ hideExternalAccess: !1
9
+ }, t = n(i), r = t.Provider, e = () => c(t), d = () => e().assetFilter, u = () => e().selectionMode, a = () => e().hideSwitch;
10
+ export {
11
+ r as ConfigProvider,
12
+ i as defaultConfig,
13
+ d as useAssetFilter,
14
+ e as useConfig,
15
+ a as useHideSwitch,
16
+ u as useSelectionMode
17
+ };
18
+ //# sourceMappingURL=ConfigContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigContext.js","sources":["../../src/app-config/ConfigContext.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nimport { File } from '../select/file.type';\nimport { Config as ProvidedConfig, SelectionMode } from './appConfig.type';\n\ntype Config =\n\t// Required config options\n\tRequired<Pick<ProvidedConfig, 'language' | 'onSuccess' | 'assetTypes'>> &\n\t\t// Non-required options\n\t\tPick<\n\t\t\tProvidedConfig,\n\t\t\t| 'assetFieldSelection'\n\t\t\t| 'assetFilter'\n\t\t\t| 'hideExternalAccess'\n\t\t\t| 'theme'\n\t\t\t| 'mode'\n\t\t\t| 'hideSwitch'\n\t\t\t| '__shouldAddOriginal__'\n\t\t\t| 'noCache'\n\t\t\t| 'selectAllOption'\n\t\t> & {\n\t\t\t// renamed option\n\t\t\tselectionMode: SelectionMode;\n\t\t};\n\nexport const defaultConfig: Config = {\n\tassetTypes: [],\n\tlanguage: 'en_US',\n\tonSuccess: (assets: unknown[], { selectedFile }: { selectedFile?: File }) =>\n\t\tconsole.log(assets, selectedFile), // eslint-disable-line no-console\n\tselectionMode: 'MultiSelect',\n\thideExternalAccess: false,\n};\n\nconst ConfigContext = createContext(defaultConfig);\n\nexport const ConfigProvider = ConfigContext.Provider;\nexport const useConfig = () => useContext(ConfigContext);\nexport const useTheme = () => useConfig().theme;\nexport const useAssetFilter = () => useConfig().assetFilter;\nexport const useSelectionMode = () => useConfig().selectionMode;\nexport const useHideSwitch = () => useConfig().hideSwitch;\n"],"names":["defaultConfig","assets","selectedFile","ConfigContext","createContext","ConfigProvider","useConfig","useContext","useAssetFilter","useSelectionMode","useHideSwitch"],"mappings":";AAyBO,MAAMA,IAAwB;AAAA,EACpC,YAAY,CAAA;AAAA,EACZ,UAAU;AAAA,EACV,WAAW,CAACC,GAAmB,EAAE,cAAAC,QAChC,QAAQ,IAAID,GAAQC,CAAY;AAAA;AAAA,EACjC,eAAe;AAAA,EACf,oBAAoB;AACrB,GAEMC,IAAgBC,EAAcJ,CAAa,GAEpCK,IAAiBF,EAAc,UAC/BG,IAAY,MAAMC,EAAWJ,CAAa,GAE1CK,IAAiB,MAAMF,IAAY,aACnCG,IAAmB,MAAMH,IAAY,eACrCI,IAAgB,MAAMJ,IAAY;"}
@@ -0,0 +1,20 @@
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ import { Button as n } from "@bynder/design-system";
3
+ import { __ as o } from "./index2.js";
4
+ function e(i) {
5
+ return /* @__PURE__ */ t(
6
+ n,
7
+ {
8
+ variant: "primary",
9
+ isDisabled: !i.isValidDomain || i.isSubmitting,
10
+ onClick: i.onClick,
11
+ isLoading: i.isSubmitting,
12
+ "data-testid": "login-button",
13
+ children: o("Connect")
14
+ }
15
+ );
16
+ }
17
+ export {
18
+ e as ConnectButton
19
+ };
20
+ //# sourceMappingURL=ConnectButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectButton.js","sources":["../../src/login/components/ConnectButton.tsx"],"sourcesContent":["import React from 'react';\nimport { Button } from '@bynder/design-system';\n\nimport { __ } from '../../localization';\n\nexport function ConnectButton(props: {\n\tisValidDomain: boolean;\n\tisSubmitting: boolean;\n\tonClick: () => void;\n}) {\n\treturn (\n\t\t<Button\n\t\t\tvariant=\"primary\"\n\t\t\tisDisabled={!props.isValidDomain || props.isSubmitting}\n\t\t\tonClick={props.onClick}\n\t\t\tisLoading={props.isSubmitting}\n\t\t\tdata-testid=\"login-button\"\n\t\t>\n\t\t\t{__('Connect')}\n\t\t</Button>\n\t);\n}\n"],"names":["ConnectButton","props","jsx","Button"],"mappings":";;;AAKO,SAASA,EAAcC,GAI3B;AACF,SACC,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACA,SAAQ;AAAA,MACR,YAAY,CAACF,EAAM,iBAAiBA,EAAM;AAAA,MAC1C,SAASA,EAAM;AAAA,MACf,WAAWA,EAAM;AAAA,MACjB,eAAY;AAAA,MAEX,YAAG,SAAS;AAAA,IAAA;AAAA,EAAA;AAGhB;"}
package/Container.js ADDED
@@ -0,0 +1,52 @@
1
+ import { jsxs as r, jsx as o } from "react/jsx-runtime";
2
+ import n from "styled-components";
3
+ import { IconCancel as l } from "@bynder/icons";
4
+ import { token as t, Button as c } from "@bynder/design-system";
5
+ import { useModalContext as s } from "./Modal.js";
6
+ import { __ as a } from "./index2.js";
7
+ function C(i) {
8
+ const e = s();
9
+ return /* @__PURE__ */ r(
10
+ d,
11
+ {
12
+ className: "cv-root",
13
+ style: {
14
+ minHeight: 320
15
+ },
16
+ children: [
17
+ e !== null && /* @__PURE__ */ o(m, { children: /* @__PURE__ */ o(
18
+ c,
19
+ {
20
+ variant: "clean",
21
+ onClick: e.onClose,
22
+ title: a("Close"),
23
+ icon: /* @__PURE__ */ o(l, {})
24
+ }
25
+ ) }),
26
+ /* @__PURE__ */ o(p, { children: i.children })
27
+ ]
28
+ }
29
+ );
30
+ }
31
+ const d = n.div`
32
+ width: 100%;
33
+ height: 100%;
34
+ display: flex;
35
+ flex-direction: column;
36
+ align-items: center;
37
+ justify-content: center;
38
+ position: relative;
39
+ background-color: ${t.gray10};
40
+ `, m = n.div`
41
+ position: absolute;
42
+ top: ${t.spacing4};
43
+ right: ${t.spacing5};
44
+ `, p = n.div`
45
+ display: flex;
46
+ flex-direction: column;
47
+ font-size: ${t.fontSize300};
48
+ `;
49
+ export {
50
+ C as Container
51
+ };
52
+ //# sourceMappingURL=Container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Container.js","sources":["../../src/login/components/Container.tsx"],"sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\nimport { IconCancel } from '@bynder/icons';\nimport { Button, token } from '@bynder/design-system';\n\nimport { useModalContext } from '../../common/components/Modal';\nimport { __ } from '../../localization';\n\nexport function Container(props: { children: React.ReactNode }) {\n\tconst modal = useModalContext();\n\n\treturn (\n\t\t<StyledContainer\n\t\t\tclassName=\"cv-root\"\n\t\t\tstyle={{\n\t\t\t\tminHeight: 320,\n\t\t\t}}\n\t\t>\n\t\t\t{modal !== null && (\n\t\t\t\t<StyledButtonWrapper>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"clean\"\n\t\t\t\t\t\tonClick={modal.onClose}\n\t\t\t\t\t\ttitle={__('Close')}\n\t\t\t\t\t\ticon={<IconCancel />}\n\t\t\t\t\t/>\n\t\t\t\t</StyledButtonWrapper>\n\t\t\t)}\n\n\t\t\t<StyledWrapper>{props.children}</StyledWrapper>\n\t\t</StyledContainer>\n\t);\n}\n\nconst StyledContainer = styled.div`\n\twidth: 100%;\n\theight: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tjustify-content: center;\n\tposition: relative;\n\tbackground-color: ${token.gray10};\n`;\n\nconst StyledButtonWrapper = styled.div`\n\tposition: absolute;\n\ttop: ${token.spacing4};\n\tright: ${token.spacing5};\n`;\n\nconst StyledWrapper = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tfont-size: ${token.fontSize300};\n`;\n"],"names":["Container","props","modal","useModalContext","jsxs","StyledContainer","StyledButtonWrapper","jsx","Button","__","IconCancel","StyledWrapper","styled","token"],"mappings":";;;;;;AAQO,SAASA,EAAUC,GAAsC;AAC/D,QAAMC,IAAQC,EAAA;AAEd,SACC,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACA,WAAU;AAAA,MACV,OAAO;AAAA,QACN,WAAW;AAAA,MAAA;AAAA,MAGX,UAAA;AAAA,QAAAH,MAAU,0BACTI,GAAA,EACA,UAAA,gBAAAC;AAAA,UAACC;AAAA,UAAA;AAAA,YACA,SAAQ;AAAA,YACR,SAASN,EAAM;AAAA,YACf,OAAOO,EAAG,OAAO;AAAA,YACjB,wBAAOC,GAAA,CAAA,CAAW;AAAA,UAAA;AAAA,QAAA,GAEpB;AAAA,QAGD,gBAAAH,EAACI,GAAA,EAAe,UAAAV,EAAM,SAAA,CAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGlC;AAEA,MAAMI,IAAkBO,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAQVC,EAAM,MAAM;AAAA,GAG3BP,IAAsBM,EAAO;AAAA;AAAA,QAE3BC,EAAM,QAAQ;AAAA,UACZA,EAAM,QAAQ;AAAA,GAGlBF,IAAgBC,EAAO;AAAA;AAAA;AAAA,cAGfC,EAAM,WAAW;AAAA;"}
@@ -0,0 +1,42 @@
1
+ import { jsx as n, jsxs as u } from "react/jsx-runtime";
2
+ import { IconOpenInNew as l, IconCrop as a, IconMore as C } from "@bynder/icons";
3
+ import { Card as i, Dropdown as o } from "@bynder/design-system";
4
+ import { useConfig as p } from "./ConfigContext.js";
5
+ import { __ as w } from "./index2.js";
6
+ function g({ transformBaseUrl: s, portalUrl: r, onOpenDAT: c }) {
7
+ const { hideExternalAccess: e, selectionMode: d } = p(), t = d === "SingleSelectFile" && s;
8
+ return !t && e ? null : !t && !e ? /* @__PURE__ */ n(
9
+ i.ContextActionButton,
10
+ {
11
+ "aria-label": w("Open in new tab"),
12
+ onClick: () => {
13
+ window.open(r, "_blank");
14
+ },
15
+ children: /* @__PURE__ */ n(l, {})
16
+ }
17
+ ) : t && e ? /* @__PURE__ */ n(i.ContextActionButton, { "aria-label": "New transformation", onClick: c, children: /* @__PURE__ */ n(a, {}) }) : /* @__PURE__ */ u(
18
+ o,
19
+ {
20
+ trigger: ({ isOpen: m, ...f }) => /* @__PURE__ */ n(i.ContextActionButton, { "aria-label": "Menu", isPressed: m, ...f, children: /* @__PURE__ */ n(C, {}) }),
21
+ isClosedOnScroll: !0,
22
+ children: [
23
+ /* @__PURE__ */ n(
24
+ o.Item,
25
+ {
26
+ icon: /* @__PURE__ */ n(l, {}),
27
+ onClick: () => {
28
+ window.open(r, "_blank");
29
+ },
30
+ children: "Open asset"
31
+ }
32
+ ),
33
+ /* @__PURE__ */ n(o.Divider, {}),
34
+ /* @__PURE__ */ n(o.Item, { icon: /* @__PURE__ */ n(a, {}), onClick: c, children: "New transformation" })
35
+ ]
36
+ }
37
+ );
38
+ }
39
+ export {
40
+ g as ContextAction
41
+ };
42
+ //# sourceMappingURL=ContextAction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextAction.js","sources":["../../src/views/asset/asset-card/ContextAction.tsx"],"sourcesContent":["import React from 'react';\nimport { IconCrop, IconMore, IconOpenInNew } from '@bynder/icons';\nimport { Card, Dropdown } from '@bynder/design-system';\nimport { useConfig } from '../../../app-config/ConfigContext';\nimport { __ } from '../../../localization';\n\ninterface Props {\n\ttransformBaseUrl?: string;\n\tportalUrl: string;\n\tonOpenDAT: () => void;\n}\n\nexport function ContextAction({ transformBaseUrl, portalUrl, onOpenDAT }: Props) {\n\tconst { hideExternalAccess, selectionMode } = useConfig();\n\tconst showDat = selectionMode === 'SingleSelectFile' && transformBaseUrl;\n\n\tif (!showDat && hideExternalAccess) return null;\n\n\tif (!showDat && !hideExternalAccess)\n\t\treturn (\n\t\t\t<Card.ContextActionButton\n\t\t\t\taria-label={__('Open in new tab')}\n\t\t\t\tonClick={() => {\n\t\t\t\t\twindow.open(portalUrl, '_blank');\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<IconOpenInNew />\n\t\t\t</Card.ContextActionButton>\n\t\t);\n\n\tif (showDat && hideExternalAccess)\n\t\treturn (\n\t\t\t<Card.ContextActionButton aria-label=\"New transformation\" onClick={onOpenDAT}>\n\t\t\t\t<IconCrop />\n\t\t\t</Card.ContextActionButton>\n\t\t);\n\n\treturn (\n\t\t<Dropdown\n\t\t\ttrigger={({ isOpen, ...triggerProps }) => (\n\t\t\t\t<Card.ContextActionButton aria-label=\"Menu\" isPressed={isOpen} {...triggerProps}>\n\t\t\t\t\t<IconMore />\n\t\t\t\t</Card.ContextActionButton>\n\t\t\t)}\n\t\t\tisClosedOnScroll\n\t\t>\n\t\t\t<Dropdown.Item\n\t\t\t\ticon={<IconOpenInNew />}\n\t\t\t\tonClick={() => {\n\t\t\t\t\twindow.open(portalUrl, '_blank');\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\tOpen asset\n\t\t\t</Dropdown.Item>\n\n\t\t\t<Dropdown.Divider />\n\t\t\t<Dropdown.Item icon={<IconCrop />} onClick={onOpenDAT}>\n\t\t\t\tNew transformation\n\t\t\t</Dropdown.Item>\n\t\t</Dropdown>\n\t);\n}\n"],"names":["ContextAction","transformBaseUrl","portalUrl","onOpenDAT","hideExternalAccess","selectionMode","useConfig","showDat","jsx","Card","__","IconOpenInNew","IconCrop","jsxs","Dropdown","isOpen","triggerProps","IconMore"],"mappings":";;;;;AAYO,SAASA,EAAc,EAAE,kBAAAC,GAAkB,WAAAC,GAAW,WAAAC,KAAoB;AAChF,QAAM,EAAE,oBAAAC,GAAoB,eAAAC,EAAA,IAAkBC,EAAA,GACxCC,IAAUF,MAAkB,sBAAsBJ;AAExD,SAAI,CAACM,KAAWH,IAA2B,OAEvC,CAACG,KAAW,CAACH,IAEf,gBAAAI;AAAA,IAACC,EAAK;AAAA,IAAL;AAAA,MACA,cAAYC,EAAG,iBAAiB;AAAA,MAChC,SAAS,MAAM;AACd,eAAO,KAAKR,GAAW,QAAQ;AAAA,MAChC;AAAA,MAEA,4BAACS,GAAA,CAAA,CAAc;AAAA,IAAA;AAAA,EAAA,IAIdJ,KAAWH,IAEb,gBAAAI,EAACC,EAAK,qBAAL,EAAyB,cAAW,sBAAqB,SAASN,GAClE,UAAA,gBAAAK,EAACI,GAAA,CAAA,CAAS,EAAA,CACX,IAID,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACA,SAAS,CAAC,EAAE,QAAAC,GAAQ,GAAGC,EAAA,MACtB,gBAAAR,EAACC,EAAK,qBAAL,EAAyB,cAAW,QAAO,WAAWM,GAAS,GAAGC,GAClE,UAAA,gBAAAR,EAACS,KAAS,GACX;AAAA,MAED,kBAAgB;AAAA,MAEhB,UAAA;AAAA,QAAA,gBAAAT;AAAA,UAACM,EAAS;AAAA,UAAT;AAAA,YACA,wBAAOH,GAAA,EAAc;AAAA,YACrB,SAAS,MAAM;AACd,qBAAO,KAAKT,GAAW,QAAQ;AAAA,YAChC;AAAA,YACA,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAID,gBAAAM,EAACM,EAAS,SAAT,EAAiB;AAAA,QAClB,gBAAAN,EAACM,EAAS,MAAT,EAAc,wBAAOF,GAAA,CAAA,CAAS,GAAI,SAAST,GAAW,UAAA,qBAAA,CAEvD;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGH;"}
package/Dat/Dat.d.ts CHANGED
@@ -1,12 +1,2 @@
1
- import React from 'react';
2
- import { Transformation } from './types';
3
- interface Props {
4
- transformBaseUrl: string;
5
- assetName: string;
6
- extension: string;
7
- transformation?: Transformation;
8
- setTransformation: (transformation?: Transformation) => void;
9
- closeDat: () => void;
10
- }
11
- export declare function Dat({ transformBaseUrl, assetName, extension, transformation, setTransformation, closeDat, }: Props): React.ReactPortal | null;
12
- export {};
1
+ import { default as React } from 'react';
2
+ export declare function Dat(): React.ReactPortal | null;
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import { default as React } from 'react';
2
2
  import { Asset } from '../views/asset/asset.type';
3
3
  interface Props {
4
4
  transformBaseUrl?: string;
package/Dat/index.d.ts CHANGED
@@ -1,3 +1,2 @@
1
1
  export { Dat } from './Dat';
2
2
  export { DatDropdownItem } from './DatDropdownItem';
3
- export { DatProvider, useTransformations } from './DatContext';
package/Dat.js ADDED
@@ -0,0 +1,90 @@
1
+ import { jsxs as b, jsx as a } from "react/jsx-runtime";
2
+ import { useState as h, useEffect as C } from "react";
3
+ import { createPortal as T } from "react-dom";
4
+ import y from "styled-components";
5
+ import { token as u, Modal as M, Button as c } from "@bynder/design-system";
6
+ import { DATBuilder as A } from "@bynder/dat-frontend";
7
+ import { useRootElement as P } from "./RootElementContext.js";
8
+ import { useDat as S } from "./useDatStore.js";
9
+ function L() {
10
+ const l = P(), [r, v] = h(), [i, d] = h(), {
11
+ datUrl: x,
12
+ assetName: g,
13
+ datExtension: k,
14
+ transformation: t,
15
+ closeDat: m,
16
+ setTransformation: f
17
+ } = S();
18
+ C(() => {
19
+ const o = l.querySelector(".cv-root");
20
+ o && v(o);
21
+ }, [l]);
22
+ const s = (o, n) => {
23
+ o && t && f({ url: o, preset: n, asset: t.asset }), m();
24
+ }, p = (o, n) => {
25
+ w(n) && t ? d({ url: o, preset: n, asset: t.asset }) : s(o, n);
26
+ }, e = () => d(void 0), B = () => {
27
+ s(i?.url, i?.preset), e();
28
+ }, D = () => {
29
+ f(void 0), e(), m();
30
+ }, w = (o) => o.content.io.length > 0;
31
+ return r ? T(
32
+ /* @__PURE__ */ b(U, { children: [
33
+ /* @__PURE__ */ a(
34
+ E,
35
+ {
36
+ mediaInfo: {
37
+ extension: k,
38
+ baseURL: x,
39
+ name: g,
40
+ width: 1,
41
+ height: 1
42
+ },
43
+ canViewPresets: !1,
44
+ canViewTransformations: !0,
45
+ hideBottomBar: !0,
46
+ onApply: s,
47
+ onDone: p,
48
+ onBack: p,
49
+ initialTransformations: t?.preset?.content.io
50
+ }
51
+ ),
52
+ /* @__PURE__ */ a(
53
+ M,
54
+ {
55
+ isOpen: !!i,
56
+ title: "Transformations not yet applied",
57
+ container: r,
58
+ onClose: e,
59
+ actionPrimary: /* @__PURE__ */ a(c, { variant: "primary", onClick: B, children: "Apply transformations" }),
60
+ actionSecondary: /* @__PURE__ */ a(c, { variant: "secondary", onClick: e, children: "Cancel" }),
61
+ actionTertiary: /* @__PURE__ */ a(c, { variant: "secondary", onClick: D, children: "Discard changes" }),
62
+ children: "Transformations not yet applied. Do you want to apply transformations now, or discard changes?"
63
+ }
64
+ )
65
+ ] }),
66
+ r
67
+ ) : null;
68
+ }
69
+ const U = y.div`
70
+ background-color: ${u.white};
71
+ z-index: 999999;
72
+ overflow: hidden;
73
+ border-radius: ${u.radiusBase};
74
+ display: flex;
75
+ flex-direction: column;
76
+ align-items: stretch;
77
+ box-shadow: 0 2px 12px 0 rgba(0, 34, 51, 0.1);
78
+ position: absolute;
79
+ top: 0;
80
+ bottom: 0;
81
+ left: 0;
82
+ right: 0;
83
+ `, E = y(A)`
84
+ height: 100%;
85
+ width: 100%;
86
+ `;
87
+ export {
88
+ L as Dat
89
+ };
90
+ //# sourceMappingURL=Dat.js.map
package/Dat.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dat.js","sources":["../../src/Dat/Dat.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport styled from 'styled-components';\nimport { Button, Modal, token } from '@bynder/design-system';\nimport { DATBuilder, Preset } from '@bynder/dat-frontend';\n\nimport { useRootElement } from '../style/RootElementContext';\nimport { Transformation } from './types';\nimport { useDat } from '@src/store/useDatStore';\n\nexport function Dat() {\n\tconst root = useRootElement();\n\tconst [portalDiv, setPortalDiv] = useState<Element>();\n\tconst [backModal, setBackModal] = useState<Transformation | undefined>();\n\n\tconst {\n\t\tdatUrl: transformBaseUrl,\n\t\tassetName,\n\t\tdatExtension: extension,\n\t\ttransformation,\n\t\tcloseDat,\n\t\tsetTransformation,\n\t} = useDat();\n\n\tuseEffect(() => {\n\t\tconst div = root.querySelector('.cv-root');\n\n\t\tif (div) {\n\t\t\tsetPortalDiv(div);\n\t\t}\n\t}, [root]);\n\n\tconst onApply = (url?: string, preset?: Preset) => {\n\t\tif (url && transformation) {\n\t\t\tsetTransformation({ url, preset, asset: transformation.asset });\n\t\t}\n\n\t\tcloseDat();\n\t};\n\n\tconst onDone = (url: string, preset: Preset) => {\n\t\tif (hasActiveChanges(preset) && transformation) {\n\t\t\tsetBackModal({ url, preset, asset: transformation.asset });\n\t\t} else {\n\t\t\tonApply(url, preset);\n\t\t}\n\t};\n\n\tconst closeBackModal = () => setBackModal(undefined);\n\n\tconst applyFromBackModal = () => {\n\t\tonApply(backModal?.url, backModal?.preset);\n\t\tcloseBackModal();\n\t};\n\n\tconst discard = () => {\n\t\tsetTransformation(undefined);\n\t\tcloseBackModal();\n\t\tcloseDat();\n\t};\n\n\tconst hasActiveChanges = (preset: Preset) => preset.content.io.length > 0;\n\n\tif (!portalDiv) return null;\n\n\treturn createPortal(\n\t\t<Container>\n\t\t\t<StyledDatUi\n\t\t\t\tmediaInfo={{\n\t\t\t\t\textension,\n\t\t\t\t\tbaseURL: transformBaseUrl,\n\t\t\t\t\tname: assetName,\n\t\t\t\t\twidth: 1,\n\t\t\t\t\theight: 1,\n\t\t\t\t}}\n\t\t\t\tcanViewPresets={false}\n\t\t\t\tcanViewTransformations\n\t\t\t\thideBottomBar\n\t\t\t\tonApply={onApply}\n\t\t\t\tonDone={onDone}\n\t\t\t\tonBack={onDone}\n\t\t\t\tinitialTransformations={transformation?.preset?.content.io}\n\t\t\t/>\n\n\t\t\t<Modal\n\t\t\t\tisOpen={!!backModal}\n\t\t\t\ttitle=\"Transformations not yet applied\"\n\t\t\t\tcontainer={portalDiv}\n\t\t\t\tonClose={closeBackModal}\n\t\t\t\tactionPrimary={\n\t\t\t\t\t<Button variant=\"primary\" onClick={applyFromBackModal}>\n\t\t\t\t\t\tApply transformations\n\t\t\t\t\t</Button>\n\t\t\t\t}\n\t\t\t\tactionSecondary={\n\t\t\t\t\t<Button variant=\"secondary\" onClick={closeBackModal}>\n\t\t\t\t\t\tCancel\n\t\t\t\t\t</Button>\n\t\t\t\t}\n\t\t\t\tactionTertiary={\n\t\t\t\t\t<Button variant=\"secondary\" onClick={discard}>\n\t\t\t\t\t\tDiscard changes\n\t\t\t\t\t</Button>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\tTransformations not yet applied. Do you want to apply transformations now, or\n\t\t\t\tdiscard changes?\n\t\t\t</Modal>\n\t\t</Container>,\n\t\tportalDiv,\n\t);\n}\n\nconst Container = styled.div`\n\tbackground-color: ${token.white};\n\tz-index: 999999;\n\toverflow: hidden;\n\tborder-radius: ${token.radiusBase};\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: stretch;\n\tbox-shadow: 0 2px 12px 0 rgba(0, 34, 51, 0.1);\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n`;\n\nconst StyledDatUi = styled(DATBuilder)`\n\theight: 100%;\n\twidth: 100%;\n`;\n"],"names":["Dat","root","useRootElement","portalDiv","setPortalDiv","useState","backModal","setBackModal","transformBaseUrl","assetName","extension","transformation","closeDat","setTransformation","useDat","useEffect","div","onApply","url","preset","onDone","hasActiveChanges","closeBackModal","applyFromBackModal","discard","createPortal","Container","jsx","StyledDatUi","Modal","Button","styled","token","DATBuilder"],"mappings":";;;;;;;;AAUO,SAASA,IAAM;AACrB,QAAMC,IAAOC,EAAA,GACP,CAACC,GAAWC,CAAY,IAAIC,EAAA,GAC5B,CAACC,GAAWC,CAAY,IAAIF,EAAA,GAE5B;AAAA,IACL,QAAQG;AAAA,IACR,WAAAC;AAAA,IACA,cAAcC;AAAA,IACd,gBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,mBAAAC;AAAA,EAAA,IACGC,EAAA;AAEJ,EAAAC,EAAU,MAAM;AACf,UAAMC,IAAMf,EAAK,cAAc,UAAU;AAEzC,IAAIe,KACHZ,EAAaY,CAAG;AAAA,EAElB,GAAG,CAACf,CAAI,CAAC;AAET,QAAMgB,IAAU,CAACC,GAAcC,MAAoB;AAClD,IAAID,KAAOP,KACVE,EAAkB,EAAE,KAAAK,GAAK,QAAAC,GAAQ,OAAOR,EAAe,OAAO,GAG/DC,EAAA;AAAA,EACD,GAEMQ,IAAS,CAACF,GAAaC,MAAmB;AAC/C,IAAIE,EAAiBF,CAAM,KAAKR,IAC/BJ,EAAa,EAAE,KAAAW,GAAK,QAAAC,GAAQ,OAAOR,EAAe,OAAO,IAEzDM,EAAQC,GAAKC,CAAM;AAAA,EAErB,GAEMG,IAAiB,MAAMf,EAAa,MAAS,GAE7CgB,IAAqB,MAAM;AAChC,IAAAN,EAAQX,GAAW,KAAKA,GAAW,MAAM,GACzCgB,EAAA;AAAA,EACD,GAEME,IAAU,MAAM;AACrB,IAAAX,EAAkB,MAAS,GAC3BS,EAAA,GACAV,EAAA;AAAA,EACD,GAEMS,IAAmB,CAACF,MAAmBA,EAAO,QAAQ,GAAG,SAAS;AAExE,SAAKhB,IAEEsB;AAAA,sBACLC,GAAA,EACA,UAAA;AAAA,MAAA,gBAAAC;AAAA,QAACC;AAAA,QAAA;AAAA,UACA,WAAW;AAAA,YACV,WAAAlB;AAAA,YACA,SAASF;AAAA,YACT,MAAMC;AAAA,YACN,OAAO;AAAA,YACP,QAAQ;AAAA,UAAA;AAAA,UAET,gBAAgB;AAAA,UAChB,wBAAsB;AAAA,UACtB,eAAa;AAAA,UACb,SAAAQ;AAAA,UACA,QAAAG;AAAA,UACA,QAAQA;AAAA,UACR,wBAAwBT,GAAgB,QAAQ,QAAQ;AAAA,QAAA;AAAA,MAAA;AAAA,MAGzD,gBAAAgB;AAAA,QAACE;AAAA,QAAA;AAAA,UACA,QAAQ,CAAC,CAACvB;AAAA,UACV,OAAM;AAAA,UACN,WAAWH;AAAA,UACX,SAASmB;AAAA,UACT,eACC,gBAAAK,EAACG,GAAA,EAAO,SAAQ,WAAU,SAASP,GAAoB,UAAA,yBAEvD;AAAA,UAED,iBACC,gBAAAI,EAACG,GAAA,EAAO,SAAQ,aAAY,SAASR,GAAgB,UAAA,UAErD;AAAA,UAED,gBACC,gBAAAK,EAACG,GAAA,EAAO,SAAQ,aAAY,SAASN,GAAS,UAAA,mBAE9C;AAAA,UAED,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAGD,GACD;AAAA,IACArB;AAAA,EAAA,IA9CsB;AAgDxB;AAEA,MAAMuB,IAAYK,EAAO;AAAA,qBACJC,EAAM,KAAK;AAAA;AAAA;AAAA,kBAGdA,EAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAY5BJ,IAAcG,EAAOE,CAAU;AAAA;AAAA;AAAA;"}
@@ -0,0 +1,47 @@
1
+ import { jsxs as u, Fragment as d, jsx as i } from "react/jsx-runtime";
2
+ import { useState as p, useEffect as g } from "react";
3
+ import b from "styled-components";
4
+ import { IconArrowRight as w, IconCrop as x } from "@bynder/icons";
5
+ import { List as s, Thumbnail as l } from "@bynder/design-system";
6
+ import { useDat as D } from "./useDatStore.js";
7
+ function L({ transformBaseUrl: r, asset: e, toggleDropdown: f }) {
8
+ const { transformation: t, openDat: c } = D(), [h, m] = p(), n = t?.preset?.content?.io?.length ?? 0;
9
+ return g(() => {
10
+ if (t?.url) {
11
+ const { url: o } = t, a = "io=transform:fill,width:40,height:40";
12
+ o.includes("io=transform:fill") && m(
13
+ o.replace(/io=transform:fill,width:[0-9]+,height:[0-9]+/, a)
14
+ ), m(`${o}&${a}`);
15
+ }
16
+ }, [t]), r ? /* @__PURE__ */ u(d, { children: [
17
+ /* @__PURE__ */ i(s.Divider, {}),
18
+ /* @__PURE__ */ i(
19
+ I,
20
+ {
21
+ thumbnail: !t || n === 0 ? /* @__PURE__ */ i(l, { icon: /* @__PURE__ */ i(x, {}), "data-testid": "crop-icon" }) : /* @__PURE__ */ i(
22
+ l,
23
+ {
24
+ variant: "content",
25
+ imageUrl: h,
26
+ "data-testid": "thumbnail-image"
27
+ }
28
+ ),
29
+ rightElements: /* @__PURE__ */ i(w, {}),
30
+ onClick: () => {
31
+ f(), c(r, e, e.name);
32
+ },
33
+ subtext: t && n > 0 ? `${n} transformation${n === 1 ? "" : "s"}` : "",
34
+ children: "New transformation"
35
+ }
36
+ )
37
+ ] }) : null;
38
+ }
39
+ const I = b(s.Item)`
40
+ max-width: 100%;
41
+ width: 340px;
42
+ margin-left: 0;
43
+ `;
44
+ export {
45
+ L as DatDropdownItem
46
+ };
47
+ //# sourceMappingURL=DatDropdownItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatDropdownItem.js","sources":["../../src/Dat/DatDropdownItem.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { IconCrop, IconArrowRight } from '@bynder/icons';\nimport { List, Thumbnail } from '@bynder/design-system';\nimport { Asset } from '../views/asset/asset.type';\nimport { useDat } from '@src/store/useDatStore';\n\ninterface Props {\n\ttransformBaseUrl?: string;\n\tasset: Asset;\n\ttoggleDropdown: () => void;\n}\n\nexport function DatDropdownItem({ transformBaseUrl, asset, toggleDropdown }: Props) {\n\tconst { transformation, openDat } = useDat();\n\n\tconst [thumbnailUrl, setThumbnailUrl] = useState<string>();\n\tconst transformationAmount = transformation?.preset?.content?.io?.length ?? 0;\n\n\tuseEffect(() => {\n\t\t// Resize url to thumbnail size\n\t\tif (transformation?.url) {\n\t\t\tconst { url } = transformation;\n\t\t\tconst thumbnailSizeParam = 'io=transform:fill,width:40,height:40';\n\n\t\t\tif (url.includes('io=transform:fill')) {\n\t\t\t\tsetThumbnailUrl(\n\t\t\t\t\turl.replace(/io=transform:fill,width:[0-9]+,height:[0-9]+/, thumbnailSizeParam),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tsetThumbnailUrl(`${url}&${thumbnailSizeParam}`);\n\t\t}\n\t}, [transformation]);\n\n\tif (!transformBaseUrl) return null;\n\n\treturn (\n\t\t<>\n\t\t\t<List.Divider />\n\t\t\t<ListItem\n\t\t\t\tthumbnail={\n\t\t\t\t\t!transformation || transformationAmount === 0 ? (\n\t\t\t\t\t\t<Thumbnail icon={<IconCrop />} data-testid=\"crop-icon\" />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Thumbnail\n\t\t\t\t\t\t\tvariant=\"content\"\n\t\t\t\t\t\t\timageUrl={thumbnailUrl}\n\t\t\t\t\t\t\tdata-testid=\"thumbnail-image\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\trightElements={<IconArrowRight />}\n\t\t\t\tonClick={() => {\n\t\t\t\t\ttoggleDropdown();\n\t\t\t\t\topenDat(transformBaseUrl, asset, asset.name);\n\t\t\t\t}}\n\t\t\t\tsubtext={\n\t\t\t\t\ttransformation && transformationAmount > 0\n\t\t\t\t\t\t? `${transformationAmount} transformation${\n\t\t\t\t\t\t\t\ttransformationAmount === 1 ? '' : 's'\n\t\t\t\t\t\t }`\n\t\t\t\t\t\t: ''\n\t\t\t\t}\n\t\t\t>\n\t\t\t\tNew transformation\n\t\t\t</ListItem>\n\t\t</>\n\t);\n}\n\nconst ListItem = styled(List.Item)`\n\tmax-width: 100%;\n\twidth: 340px;\n\tmargin-left: 0;\n`;\n"],"names":["DatDropdownItem","transformBaseUrl","asset","toggleDropdown","transformation","openDat","useDat","thumbnailUrl","setThumbnailUrl","useState","transformationAmount","useEffect","url","thumbnailSizeParam","jsxs","Fragment","jsx","List","ListItem","Thumbnail","IconCrop","IconArrowRight","styled"],"mappings":";;;;;;AAaO,SAASA,EAAgB,EAAE,kBAAAC,GAAkB,OAAAC,GAAO,gBAAAC,KAAyB;AACnF,QAAM,EAAE,gBAAAC,GAAgB,SAAAC,EAAA,IAAYC,EAAA,GAE9B,CAACC,GAAcC,CAAe,IAAIC,EAAA,GAClCC,IAAuBN,GAAgB,QAAQ,SAAS,IAAI,UAAU;AAkB5E,SAhBAO,EAAU,MAAM;AAEf,QAAIP,GAAgB,KAAK;AACxB,YAAM,EAAE,KAAAQ,MAAQR,GACVS,IAAqB;AAE3B,MAAID,EAAI,SAAS,mBAAmB,KACnCJ;AAAA,QACCI,EAAI,QAAQ,gDAAgDC,CAAkB;AAAA,MAAA,GAIhFL,EAAgB,GAAGI,CAAG,IAAIC,CAAkB,EAAE;AAAA,IAC/C;AAAA,EACD,GAAG,CAACT,CAAc,CAAC,GAEdH,IAGJ,gBAAAa,EAAAC,GAAA,EACC,UAAA;AAAA,IAAA,gBAAAC,EAACC,EAAK,SAAL,EAAa;AAAA,IACd,gBAAAD;AAAA,MAACE;AAAA,MAAA;AAAA,QACA,WACC,CAACd,KAAkBM,MAAyB,IAC3C,gBAAAM,EAACG,GAAA,EAAU,MAAM,gBAAAH,EAACI,GAAA,CAAA,CAAS,GAAI,eAAY,aAAY,IAEvD,gBAAAJ;AAAA,UAACG;AAAA,UAAA;AAAA,YACA,SAAQ;AAAA,YACR,UAAUZ;AAAA,YACV,eAAY;AAAA,UAAA;AAAA,QAAA;AAAA,QAIf,iCAAgBc,GAAA,EAAe;AAAA,QAC/B,SAAS,MAAM;AACd,UAAAlB,EAAA,GACAE,EAAQJ,GAAkBC,GAAOA,EAAM,IAAI;AAAA,QAC5C;AAAA,QACA,SACCE,KAAkBM,IAAuB,IACtC,GAAGA,CAAoB,kBACvBA,MAAyB,IAAI,KAAK,GAClC,KACA;AAAA,QAEJ,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAED,GACD,IAhC6B;AAkC/B;AAEA,MAAMQ,IAAWI,EAAOL,EAAK,IAAI;AAAA;AAAA;AAAA;AAAA;"}
@@ -0,0 +1,12 @@
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import { StyleSheetManager as o } from "styled-components";
3
+ import { DesignSystemProvider as i } from "@bynder/design-system";
4
+ import { useRootElement as n } from "./RootElementContext.js";
5
+ function a(r) {
6
+ const t = n();
7
+ return /* @__PURE__ */ e(o, { target: t, children: /* @__PURE__ */ e(i, { zIndexBase: 1e6, children: r.children }) });
8
+ }
9
+ export {
10
+ a as DesignSystemProvider
11
+ };
12
+ //# sourceMappingURL=DesignSystemContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DesignSystemContext.js","sources":["../../src/style/DesignSystemContext.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleSheetManager } from 'styled-components';\nimport { DesignSystemProvider as BaseDesignSystemProvider } from '@bynder/design-system';\n\nimport { useRootElement } from './RootElementContext';\n\nexport function DesignSystemProvider(props: { children: React.ReactNode }) {\n\tconst rootElement = useRootElement();\n\n\treturn (\n\t\t<StyleSheetManager target={rootElement}>\n\t\t\t<BaseDesignSystemProvider zIndexBase={1000000}>\n\t\t\t\t{props.children}\n\t\t\t</BaseDesignSystemProvider>\n\t\t</StyleSheetManager>\n\t);\n}\n"],"names":["DesignSystemProvider","props","rootElement","useRootElement","jsx","StyleSheetManager","BaseDesignSystemProvider"],"mappings":";;;;AAMO,SAASA,EAAqBC,GAAsC;AAC1E,QAAMC,IAAcC,EAAA;AAEpB,SACC,gBAAAC,EAACC,GAAA,EAAkB,QAAQH,GAC1B,UAAA,gBAAAE,EAACE,KAAyB,YAAY,KACpC,UAAAL,EAAM,SAAA,CACR,GACD;AAEF;"}
@@ -0,0 +1,43 @@
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import n from "styled-components";
3
+ import { IconSortOrder as l } from "@bynder/icons";
4
+ import { Button as m, token as t } from "@bynder/design-system";
5
+ import { __ as r } from "./index2.js";
6
+ import { useOrderingByPage as g } from "./useOrderingStore.js";
7
+ import { useRouterSelectors as f } from "./useRouterStore.js";
8
+ function b({ nlSearch: e = !1 }) {
9
+ const c = f.use.page(), [i, s] = g(c.page), d = {
10
+ ASC: r("Ascending"),
11
+ DESC: r("Descending")
12
+ }, p = {
13
+ ASC: "DESC",
14
+ DESC: "ASC"
15
+ };
16
+ function a() {
17
+ s({ field: i.field, direction: p[i.direction] });
18
+ }
19
+ return /* @__PURE__ */ o(
20
+ S,
21
+ {
22
+ variant: "clean",
23
+ isSmall: !0,
24
+ title: d[i.direction],
25
+ onClick: a,
26
+ icon: /* @__PURE__ */ o(u, { $isAscending: i.direction === "ASC" }),
27
+ isDisabled: e
28
+ }
29
+ );
30
+ }
31
+ const S = n(m)`
32
+ border-radius: 5px 0 0 5px;
33
+ border: 1px solid #d9dee1;
34
+ height: 42px;
35
+ `, u = n(l)`
36
+ width: ${t.spacing6};
37
+ height: ${t.spacing6};
38
+ ${(e) => e.$isAscending && "transform: scaleY(-1)"}
39
+ `;
40
+ export {
41
+ b as DirectionSelect
42
+ };
43
+ //# sourceMappingURL=DirectionSelect.js.map