@bynder/compact-view 5.1.3 → 5.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ActiveFilter.js +33 -0
- package/ActiveFilter.js.map +1 -0
- package/ActiveFilters.js +81 -0
- package/ActiveFilters.js.map +1 -0
- package/AddMedia.js +90 -0
- package/AddMedia.js.map +1 -0
- package/Advanced.js +66 -0
- package/Advanced.js.map +1 -0
- package/App.d.ts +4 -2
- package/App.js +93 -0
- package/App.js.map +1 -0
- package/AssetCard.js +172 -0
- package/AssetCard.js.map +1 -0
- package/AssetCardMetaproperties.js +47 -0
- package/AssetCardMetaproperties.js.map +1 -0
- package/AssetFilter.js +138 -0
- package/AssetFilter.js.map +1 -0
- package/AssetFilterContext.js +162 -0
- package/AssetFilterContext.js.map +1 -0
- package/AssetItem.js +40 -0
- package/AssetItem.js.map +1 -0
- package/AssetList.js +158 -0
- package/AssetList.js.map +1 -0
- package/AssetTypeItem.js +34 -0
- package/AssetTypeItem.js.map +1 -0
- package/AssetsView.js +61 -0
- package/AssetsView.js.map +1 -0
- package/Autocomplete_new.js +148 -0
- package/Autocomplete_new.js.map +1 -0
- package/ButtonAction.js +14 -0
- package/ButtonAction.js.map +1 -0
- package/CardSkeleton.js +31 -0
- package/CardSkeleton.js.map +1 -0
- package/Checkbox.styles.js +38 -0
- package/Checkbox.styles.js.map +1 -0
- package/Chip.js +43 -0
- package/Chip.js.map +1 -0
- package/CollectionCard.js +56 -0
- package/CollectionCard.js.map +1 -0
- package/CollectionItem.js +41 -0
- package/CollectionItem.js.map +1 -0
- package/CollectionList.js +53 -0
- package/CollectionList.js.map +1 -0
- package/CollectionView.js +73 -0
- package/CollectionView.js.map +1 -0
- package/CollectionsView.js +58 -0
- package/CollectionsView.js.map +1 -0
- package/ConfigContext.js +18 -0
- package/ConfigContext.js.map +1 -0
- package/ConnectButton.js +20 -0
- package/ConnectButton.js.map +1 -0
- package/Container.js +52 -0
- package/Container.js.map +1 -0
- package/ContextAction.js +42 -0
- package/ContextAction.js.map +1 -0
- package/Dat/Dat.d.ts +2 -12
- package/Dat/DatDropdownItem.d.ts +1 -1
- package/Dat/index.d.ts +0 -1
- package/Dat.js +90 -0
- package/Dat.js.map +1 -0
- package/DatDropdownItem.js +47 -0
- package/DatDropdownItem.js.map +1 -0
- package/DesignSystemContext.js +12 -0
- package/DesignSystemContext.js.map +1 -0
- package/DirectionSelect.js +43 -0
- package/DirectionSelect.js.map +1 -0
- package/DocumentIcon.js +69 -0
- package/DocumentIcon.js.map +1 -0
- package/DomainInput.js +39 -0
- package/DomainInput.js.map +1 -0
- package/DragSelect.js +144 -0
- package/DragSelect.js.map +1 -0
- package/Dropdown.js +72 -0
- package/Dropdown.js.map +1 -0
- package/DropdownContent.js +59 -0
- package/DropdownContent.js.map +1 -0
- package/DropdownListItem.js +52 -0
- package/DropdownListItem.js.map +1 -0
- package/ErrorIcon.js +48 -0
- package/ErrorIcon.js.map +1 -0
- package/ErrorMessage.js +40 -0
- package/ErrorMessage.js.map +1 -0
- package/FieldSelect.js +74 -0
- package/FieldSelect.js.map +1 -0
- package/FileSelector.js +266 -0
- package/FileSelector.js.map +1 -0
- package/Header.js +42 -0
- package/Header.js.map +1 -0
- package/HorizontalScroll.js +51 -0
- package/HorizontalScroll.js.map +1 -0
- package/InfiniteScroll.js +26 -0
- package/InfiniteScroll.js.map +1 -0
- package/LeftArrow.js +31 -0
- package/LeftArrow.js.map +1 -0
- package/LoginComponent.js +32 -0
- package/LoginComponent.js.map +1 -0
- package/LoginContext.js +85 -0
- package/LoginContext.js.map +1 -0
- package/MetapropertyFilterContent.js +25 -0
- package/MetapropertyFilterContent.js.map +1 -0
- package/MetapropertyOption.js +24 -0
- package/MetapropertyOption.js.map +1 -0
- package/Modal.js +48 -0
- package/Modal.js.map +1 -0
- package/NoResults.js +51 -0
- package/NoResults.js.map +1 -0
- package/Oops.js +54 -0
- package/Oops.js.map +1 -0
- package/Option_new.js +50 -0
- package/Option_new.js.map +1 -0
- package/RefreshingSpinner.js +22 -0
- package/RefreshingSpinner.js.map +1 -0
- package/ReportModal.js +51 -0
- package/ReportModal.js.map +1 -0
- package/RightArrow.js +31 -0
- package/RightArrow.js.map +1 -0
- package/RootElementContext.js +12 -0
- package/RootElementContext.js.map +1 -0
- package/SearchInput.js +76 -0
- package/SearchInput.js.map +1 -0
- package/SelectedItemContainer.js +44 -0
- package/SelectedItemContainer.js.map +1 -0
- package/SelectedItems.js +27 -0
- package/SelectedItems.js.map +1 -0
- package/SelectionContext.js +144 -0
- package/SelectionContext.js.map +1 -0
- package/SelectionFooter.js +65 -0
- package/SelectionFooter.js.map +1 -0
- package/ShadowRoot.js +11 -0
- package/ShadowRoot.js.map +1 -0
- package/ShadowRootInternal.js +78 -0
- package/ShadowRootInternal.js.map +1 -0
- package/Shield.js +25 -0
- package/Shield.js.map +1 -0
- package/Skeleton.js +43 -0
- package/Skeleton.js.map +1 -0
- package/SmartFilterContent.js +11 -0
- package/SmartFilterContent.js.map +1 -0
- package/SmartFilterSelect_new.js +86 -0
- package/SmartFilterSelect_new.js.map +1 -0
- package/Smartfilters_new.js +190 -0
- package/Smartfilters_new.js.map +1 -0
- package/Spinner.js +32 -0
- package/Spinner.js.map +1 -0
- package/StatefulAssetList.js +100 -0
- package/StatefulAssetList.js.map +1 -0
- package/Styles.css.js +5 -0
- package/Styles.css.js.map +1 -0
- package/SwitchNLS.js +80 -0
- package/SwitchNLS.js.map +1 -0
- package/TagItem.js +38 -0
- package/TagItem.js.map +1 -0
- package/Tags.js +48 -0
- package/Tags.js.map +1 -0
- package/Theming.js +30 -0
- package/Theming.js.map +1 -0
- package/Toolbar.js +53 -0
- package/Toolbar.js.map +1 -0
- package/Tooltip.js +81 -0
- package/Tooltip.js.map +1 -0
- package/ViewSwitch.js +45 -0
- package/ViewSwitch.js.map +1 -0
- package/api/filterAssets.d.ts +1 -1
- package/api/getCollections.d.ts +1 -1
- package/api/getFilterOptions.d.ts +9 -0
- package/api/getFilters.d.ts +2 -2
- package/api/getFilters_new.d.ts +7 -0
- package/api/getSimilarityAssets.d.ts +1 -1
- package/api/index.d.ts +3 -3
- package/api/rest/autocomplete.d.ts +1 -1
- package/api/rest/getAssetCounts.d.ts +2 -2
- package/api/rest/getInitialFilters.d.ts +2 -2
- package/api/rest/getMetapropertiesOptions.d.ts +1 -1
- package/api/types/getFilters_new.d.ts +56 -0
- package/app-config/ConfigContext.d.ts +4 -5
- package/app-config/appConfig.type.d.ts +2 -0
- package/app-config/appConfig.type.guard.d.ts +1 -1
- package/asset.type.js +31 -0
- package/asset.type.js.map +1 -0
- package/asyncDebounce.js +14 -0
- package/asyncDebounce.js.map +1 -0
- package/auth.js +35 -0
- package/auth.js.map +1 -0
- package/autocomplete.js +25 -0
- package/autocomplete.js.map +1 -0
- package/base64Converter.js +15 -0
- package/base64Converter.js.map +1 -0
- package/chunk.js +10 -0
- package/chunk.js.map +1 -0
- package/class.js +7 -0
- package/class.js.map +1 -0
- package/combineFilters.js +9 -0
- package/combineFilters.js.map +1 -0
- package/combineMetaproperties.js +25 -0
- package/combineMetaproperties.js.map +1 -0
- package/common/components/CardSkeleton.d.ts +1 -1
- package/common/components/Checkbox.styles.d.ts +4 -4
- package/common/components/Chip.d.ts +1 -1
- package/common/components/DocumentIcon.d.ts +1 -1
- package/common/components/DragSelect.d.ts +1 -1
- package/common/components/HorizontalScroll.d.ts +1 -1
- package/common/components/InfiniteScroll.d.ts +1 -1
- package/common/components/LeftArrow.d.ts +1 -1
- package/common/components/Modal.d.ts +1 -1
- package/common/components/NoResults.d.ts +1 -1
- package/common/components/RightArrow.d.ts +1 -1
- package/common/components/Skeleton.d.ts +1 -1
- package/common/components/Spinner.d.ts +1 -1
- package/common/components/Tooltip.d.ts +1 -1
- package/common/components/dropdown/Dropdown.d.ts +1 -1
- package/common/components/dropdown/DropdownContent.d.ts +1 -1
- package/common/components/dropdown/DropdownListItem.d.ts +1 -1
- package/common/hooks/useClickOutside.d.ts +1 -1
- package/constants.js +15 -0
- package/constants.js.map +1 -0
- package/createSelectors.js +11 -0
- package/createSelectors.js.map +1 -0
- package/crypto.js +21 -0
- package/crypto.js.map +1 -0
- package/error-handling/ErrorIcon.d.ts +1 -1
- package/error-handling/ErrorMessage.d.ts +1 -1
- package/error-handling/Oops.d.ts +1 -1
- package/error-handling/ReportModal.d.ts +1 -1
- package/error-handling/Shield.d.ts +1 -1
- package/filter/AssetFilter.d.ts +1 -1
- package/filter/AssetFilterContext.d.ts +3 -3
- package/filter/active-filters/ActiveFilter.d.ts +1 -1
- package/filter/active-filters/ActiveFilters.d.ts +1 -1
- package/filter/filters/advanced/Advanced.d.ts +1 -1
- package/filter/filters/advanced/AssetTypeItem.d.ts +1 -1
- package/filter/filters/metaproperty/Metaproperty.d.ts +1 -1
- package/filter/filters/metaproperty/MetapropertyFilterContent.d.ts +1 -1
- package/filter/filters/metaproperty/MetapropertyOption.d.ts +1 -1
- package/filter/filters/metaproperty/SmartFilterContent.d.ts +1 -1
- package/filter/filters/smartfilters/Metaproperties/Autocomplete.d.ts +3 -3
- package/filter/filters/smartfilters/Metaproperties/Autocomplete_new.d.ts +15 -0
- package/filter/filters/smartfilters/Metaproperties/Option.d.ts +2 -2
- package/filter/filters/smartfilters/Metaproperties/Option_new.d.ts +13 -0
- package/filter/filters/smartfilters/Metaproperties/SmartFilterSelect.d.ts +2 -2
- package/filter/filters/smartfilters/Metaproperties/SmartFilterSelect_new.d.ts +13 -0
- package/filter/filters/smartfilters/Smartfilters.d.ts +2 -2
- package/filter/filters/smartfilters/Smartfilters_new.d.ts +7 -0
- package/filter/filters/tags/TagItem.d.ts +1 -1
- package/filter/filters/tags/Tags.d.ts +1 -1
- package/filterAssets.js +177 -0
- package/filterAssets.js.map +1 -0
- package/getAsset.js +70 -0
- package/getAsset.js.map +1 -0
- package/getAssetCounts.js +27 -0
- package/getAssetCounts.js.map +1 -0
- package/getAssets.js +137 -0
- package/getAssets.js.map +1 -0
- package/getCollections.js +79 -0
- package/getCollections.js.map +1 -0
- package/getFilterOptions.js +57 -0
- package/getFilterOptions.js.map +1 -0
- package/getFilters.js +85 -0
- package/getFilters.js.map +1 -0
- package/getFilters_new.js +73 -0
- package/getFilters_new.js.map +1 -0
- package/getLimitedUseThumbnails.js +26 -0
- package/getLimitedUseThumbnails.js.map +1 -0
- package/getSimilarityAssets.js +141 -0
- package/getSimilarityAssets.js.map +1 -0
- package/handlers.js +7 -0
- package/handlers.js.map +1 -0
- package/helpers.js +7 -0
- package/helpers.js.map +1 -0
- package/index.js +9 -1162
- package/index.js.map +1 -0
- package/index2.js +18 -0
- package/index2.js.map +1 -0
- package/index3.js +56 -0
- package/index3.js.map +1 -0
- package/index4.js +20 -0
- package/index4.js.map +1 -0
- package/logger.js +7 -0
- package/logger.js.map +1 -0
- package/login/LoginComponent.d.ts +1 -1
- package/login/LoginContext.d.ts +1 -1
- package/login/components/ConnectButton.d.ts +1 -1
- package/login/components/Container.d.ts +1 -1
- package/login/components/DomainInput.d.ts +1 -1
- package/login/components/Header.d.ts +1 -1
- package/login/components/RefreshingSpinner.d.ts +1 -1
- package/loginwindow.js +84 -0
- package/loginwindow.js.map +1 -0
- package/normalizeResponse.js +31 -0
- package/normalizeResponse.js.map +1 -0
- package/oauth2.js +87 -0
- package/oauth2.js.map +1 -0
- package/order/DirectionSelect.d.ts +1 -1
- package/order/FieldSelect.d.ts +2 -2
- package/package.json +2 -9
- package/result.type.js +25 -0
- package/result.type.js.map +1 -0
- package/router/RouterContext.d.ts +1 -1
- package/search/SearchInput.d.ts +1 -1
- package/search/SwitchNLS.d.ts +1 -1
- package/search/index.d.ts +0 -2
- package/select/FileSelector.d.ts +1 -1
- package/select/SelectionContext.d.ts +1 -1
- package/select/SelectionFooter.d.ts +1 -1
- package/select/add-media/AddMedia.d.ts +1 -1
- package/select/add-media/ButtonAction.d.ts +1 -1
- package/select/current-selection/AssetItem.d.ts +1 -1
- package/select/current-selection/CollectionItem.d.ts +1 -1
- package/select/current-selection/SelectedItemContainer.d.ts +1 -1
- package/select/current-selection/SelectedItems.d.ts +1 -1
- package/store/useDatStore.d.ts +73 -0
- package/store/useOrderingStore.d.ts +2 -2
- package/store/useRouterStore.d.ts +4 -4
- package/store/useSearchStore.d.ts +69 -0
- package/store/useSimilaritySearchStore.d.ts +67 -0
- package/style/DesignSystemContext.d.ts +1 -1
- package/style/RootElementContext.d.ts +1 -1
- package/style/Theming.d.ts +1 -1
- package/style/shadowroot/ShadowRoot.d.ts +1 -1
- package/style/shadowroot/ShadowRootInternal.d.ts +1 -1
- package/text.js +9 -0
- package/text.js.map +1 -0
- package/toolbar/Toolbar.d.ts +1 -1
- package/toolbar/ViewSwitch.d.ts +1 -1
- package/trimMetapropertyValue.js +6 -0
- package/trimMetapropertyValue.js.map +1 -0
- package/url.js +7 -0
- package/url.js.map +1 -0
- package/useAccountDomain.js +33 -0
- package/useAccountDomain.js.map +1 -0
- package/useAuthInformation.js +42 -0
- package/useAuthInformation.js.map +1 -0
- package/useClickOutside.js +16 -0
- package/useClickOutside.js.map +1 -0
- package/useDatStore.js +62 -0
- package/useDatStore.js.map +1 -0
- package/useDimensions.js +31 -0
- package/useDimensions.js.map +1 -0
- package/useOrderingStore.js +27 -0
- package/useOrderingStore.js.map +1 -0
- package/useRouterStore.js +21 -0
- package/useRouterStore.js.map +1 -0
- package/useSearchStore.js +49 -0
- package/useSearchStore.js.map +1 -0
- package/useSimilaritySearchStore.js +28 -0
- package/useSimilaritySearchStore.js.map +1 -0
- package/utils/base64Converter.d.ts +1 -1
- package/utils/combineFilters.d.ts +1 -1
- package/utils/combineMetaproperties.d.ts +2 -2
- package/utils/filterEmptyMetaproperties.d.ts +1 -1
- package/utils/getLimitedUseThumbnails.d.ts +2 -0
- package/utils/getMetaPropertiesForFilter.d.ts +1 -1
- package/utils/normalizeResponse.d.ts +1 -1
- package/utils.js +49 -0
- package/utils.js.map +1 -0
- package/utils2.js +51 -0
- package/utils2.js.map +1 -0
- package/views/asset/AssetList.d.ts +5 -3
- package/views/asset/AssetsView.d.ts +1 -1
- package/views/asset/StatefulAssetList.d.ts +2 -2
- package/views/asset/asset-card/AssetCard.d.ts +1 -1
- package/views/asset/asset-card/AssetCardMetaproperties.d.ts +3 -3
- package/views/asset/asset-card/ContextAction.d.ts +1 -1
- package/views/collection/CollectionView.d.ts +1 -1
- package/views/collections/CollectionCard.d.ts +1 -1
- package/views/collections/CollectionList.d.ts +1 -1
- package/views/collections/CollectionsView.d.ts +1 -1
- package/Dat/DatContext.d.ts +0 -12
- package/__tests__/utils/index.d.ts +0 -116
- package/api/__tests__/testMocks/mocks.d.ts +0 -14
- package/api/__tests__/utils.d.ts +0 -10
- package/common/components/__mocks__/Tooltip.d.ts +0 -6
- package/common/components/__tests__/utils.d.ts +0 -34
- package/error-handling/__tests__/utils.d.ts +0 -56
- package/filter/__tests__/utils.d.ts +0 -13
- package/index.mjs +0 -1163
- package/login/__tests__/mocks.d.ts +0 -1
- package/login/__tests__/utils.d.ts +0 -41
- package/search/SearchContext.d.ts +0 -25
- package/search/SimilaritySearchContext.d.ts +0 -21
- package/search/__mocks__/SimilaritySearchContext.d.ts +0 -5
- package/select/__tests__/utils.d.ts +0 -11
- package/style/shadowroot/__mocks__/ShadowRoot.d.ts +0 -4
- package/utils/__mocks__/logger.d.ts +0 -4
- package/views/asset/__tests__/utils.d.ts +0 -7
- package/views/collections/__tests__/utils.d.ts +0 -5
package/ErrorMessage.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsxs as e, Fragment as c, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import i from "styled-components";
|
|
3
|
+
import { token as n, Button as a } from "@bynder/design-system";
|
|
4
|
+
import { __ as t } from "./index2.js";
|
|
5
|
+
import { ErrorIcon as s } from "./ErrorIcon.js";
|
|
6
|
+
function u(o) {
|
|
7
|
+
return /* @__PURE__ */ e(c, { children: [
|
|
8
|
+
/* @__PURE__ */ r(s, {}),
|
|
9
|
+
/* @__PURE__ */ r(l, { children: t("Oops! Something went wrong") }),
|
|
10
|
+
/* @__PURE__ */ r(p, { children: t("Please try again or get in contact with our customer support.") }),
|
|
11
|
+
/* @__PURE__ */ e(m, { children: [
|
|
12
|
+
/* @__PURE__ */ r(
|
|
13
|
+
a,
|
|
14
|
+
{
|
|
15
|
+
variant: "secondary",
|
|
16
|
+
title: t("Send report"),
|
|
17
|
+
onClick: o.onClickSend,
|
|
18
|
+
isDisabled: o.isReportSent,
|
|
19
|
+
children: o.isReportSent ? t("Report sent") : t("Send report...")
|
|
20
|
+
}
|
|
21
|
+
),
|
|
22
|
+
/* @__PURE__ */ r(a, { variant: "primary", title: t("Try again"), onClick: o.onClickRetry, children: t("Try again") })
|
|
23
|
+
] })
|
|
24
|
+
] });
|
|
25
|
+
}
|
|
26
|
+
const l = i.h1`
|
|
27
|
+
margin-top: ${n.spacing8};
|
|
28
|
+
font-size: ${n.fontSize400};
|
|
29
|
+
`, p = i.span`
|
|
30
|
+
margin-top: ${n.spacing5};
|
|
31
|
+
color: ${n.colorTextDisabled};
|
|
32
|
+
`, m = i.div`
|
|
33
|
+
margin-top: ${n.spacing7};
|
|
34
|
+
display: flex;
|
|
35
|
+
gap: ${n.spacing3};
|
|
36
|
+
`;
|
|
37
|
+
export {
|
|
38
|
+
u as ErrorMessage
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=ErrorMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorMessage.js","sources":["../../src/error-handling/ErrorMessage.tsx"],"sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\nimport { Button, token } from '@bynder/design-system';\n\nimport { __ } from '../localization';\nimport { ErrorIcon } from './ErrorIcon';\n\nexport function ErrorMessage(props: {\n\tisReportSent: boolean;\n\tonClickSend: () => void;\n\tonClickRetry: () => void;\n}) {\n\treturn (\n\t\t<>\n\t\t\t<ErrorIcon />\n\n\t\t\t<Title>{__('Oops! Something went wrong')}</Title>\n\n\t\t\t<Text>{__('Please try again or get in contact with our customer support.')}</Text>\n\n\t\t\t<ButtonContainer>\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\ttitle={__('Send report')}\n\t\t\t\t\tonClick={props.onClickSend}\n\t\t\t\t\tisDisabled={props.isReportSent}\n\t\t\t\t>\n\t\t\t\t\t{props.isReportSent ? __('Report sent') : __('Send report...')}\n\t\t\t\t</Button>\n\n\t\t\t\t<Button variant=\"primary\" title={__('Try again')} onClick={props.onClickRetry}>\n\t\t\t\t\t{__('Try again')}\n\t\t\t\t</Button>\n\t\t\t</ButtonContainer>\n\t\t</>\n\t);\n}\n\nconst Title = styled.h1`\n\tmargin-top: ${token.spacing8};\n\tfont-size: ${token.fontSize400};\n`;\n\nconst Text = styled.span`\n\tmargin-top: ${token.spacing5};\n\tcolor: ${token.colorTextDisabled};\n`;\n\nconst ButtonContainer = styled.div`\n\tmargin-top: ${token.spacing7};\n\tdisplay: flex;\n\tgap: ${token.spacing3};\n`;\n"],"names":["ErrorMessage","props","jsxs","Fragment","jsx","ErrorIcon","Title","__","Text","ButtonContainer","Button","styled","token"],"mappings":";;;;;AAOO,SAASA,EAAaC,GAI1B;AACF,SACC,gBAAAC,EAAAC,GAAA,EACC,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EAAU;AAAA,IAEX,gBAAAD,EAACE,GAAA,EAAO,UAAAC,EAAG,4BAA4B,EAAA,CAAE;AAAA,IAEzC,gBAAAH,EAACI,GAAA,EAAM,UAAAD,EAAG,+DAA+D,EAAA,CAAE;AAAA,sBAE1EE,GAAA,EACA,UAAA;AAAA,MAAA,gBAAAL;AAAA,QAACM;AAAA,QAAA;AAAA,UACA,SAAQ;AAAA,UACR,OAAOH,EAAG,aAAa;AAAA,UACvB,SAASN,EAAM;AAAA,UACf,YAAYA,EAAM;AAAA,UAEjB,YAAM,eAAeM,EAAG,aAAa,IAAIA,EAAG,gBAAgB;AAAA,QAAA;AAAA,MAAA;AAAA,MAG9D,gBAAAH,EAACM,GAAA,EAAO,SAAQ,WAAU,OAAOH,EAAG,WAAW,GAAG,SAASN,EAAM,cAC/D,UAAAM,EAAG,WAAW,EAAA,CAChB;AAAA,IAAA,EAAA,CACD;AAAA,EAAA,GACD;AAEF;AAEA,MAAMD,IAAQK,EAAO;AAAA,eACNC,EAAM,QAAQ;AAAA,cACfA,EAAM,WAAW;AAAA,GAGzBJ,IAAOG,EAAO;AAAA,eACLC,EAAM,QAAQ;AAAA,UACnBA,EAAM,iBAAiB;AAAA,GAG3BH,IAAkBE,EAAO;AAAA,eAChBC,EAAM,QAAQ;AAAA;AAAA,QAErBA,EAAM,QAAQ;AAAA;"}
|
package/FieldSelect.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { jsx as r, jsxs as m } from "react/jsx-runtime";
|
|
2
|
+
import t from "styled-components";
|
|
3
|
+
import { token as l } from "@bynder/design-system";
|
|
4
|
+
import { Dropdown as f } from "./Dropdown.js";
|
|
5
|
+
import { __ as i } from "./index2.js";
|
|
6
|
+
import { useOrderingByPage as p } from "./useOrderingStore.js";
|
|
7
|
+
import { useRouterSelectors as g } from "./useRouterStore.js";
|
|
8
|
+
import { DropdownListItem as u } from "./DropdownListItem.js";
|
|
9
|
+
function R({ options: e }) {
|
|
10
|
+
const d = g.use.page(), [o, a] = p(d.page), s = {
|
|
11
|
+
CREATED_AT: i("Date added"),
|
|
12
|
+
NAME: i("Name"),
|
|
13
|
+
PUBLISHED_AT: i("Date published"),
|
|
14
|
+
UPDATED_AT: i("Date modified"),
|
|
15
|
+
NL_SEARCH: i("Similarity")
|
|
16
|
+
};
|
|
17
|
+
return /* @__PURE__ */ r(b, { children: /* @__PURE__ */ r(
|
|
18
|
+
f,
|
|
19
|
+
{
|
|
20
|
+
title: /* @__PURE__ */ r(
|
|
21
|
+
D,
|
|
22
|
+
{
|
|
23
|
+
stringOfFieldMap: s,
|
|
24
|
+
orderingField: e[0] === "NL_SEARCH" ? e[0] : o.field
|
|
25
|
+
}
|
|
26
|
+
),
|
|
27
|
+
alt: i("Order by"),
|
|
28
|
+
isPaddingContent: !0,
|
|
29
|
+
disabled: e[0] === "NL_SEARCH",
|
|
30
|
+
children: (c) => /* @__PURE__ */ r(S, { children: e.map((n) => /* @__PURE__ */ r(
|
|
31
|
+
h,
|
|
32
|
+
{
|
|
33
|
+
selected: o.field === n,
|
|
34
|
+
onClick: () => {
|
|
35
|
+
a({ field: n, direction: o.direction }), c();
|
|
36
|
+
},
|
|
37
|
+
isFieldSelect: !0,
|
|
38
|
+
children: /* @__PURE__ */ r(A, { children: s[n] })
|
|
39
|
+
},
|
|
40
|
+
s[n]
|
|
41
|
+
)) })
|
|
42
|
+
}
|
|
43
|
+
) });
|
|
44
|
+
}
|
|
45
|
+
function D({ stringOfFieldMap: e, orderingField: d }) {
|
|
46
|
+
return /* @__PURE__ */ m("span", { children: [
|
|
47
|
+
"Order by",
|
|
48
|
+
" ",
|
|
49
|
+
/* @__PURE__ */ r(E, { $isDisabled: d === "NL_SEARCH", children: e[d] })
|
|
50
|
+
] });
|
|
51
|
+
}
|
|
52
|
+
const S = t.ul`
|
|
53
|
+
margin: 0;
|
|
54
|
+
padding: 0;
|
|
55
|
+
list-style: none;
|
|
56
|
+
`, h = t(u)`
|
|
57
|
+
font-size: ${l.fontSize75};
|
|
58
|
+
`, A = t.span`
|
|
59
|
+
flex-grow: 1;
|
|
60
|
+
min-width: 96px;
|
|
61
|
+
padding: ${l.spacing3} 0;
|
|
62
|
+
font-size: ${l.fontSize75};
|
|
63
|
+
`, b = t.div`
|
|
64
|
+
margin-left: auto;
|
|
65
|
+
border-radius: 5px 0 0 5px;
|
|
66
|
+
border: 1px solid #d9dee1;
|
|
67
|
+
`, E = t.strong`
|
|
68
|
+
font-weight: 600;
|
|
69
|
+
color: ${(e) => e.$isDisabled ? "rgba(0, 34, 51, 0.5)" : "#212c40"};
|
|
70
|
+
`;
|
|
71
|
+
export {
|
|
72
|
+
R as FieldSelect
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=FieldSelect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FieldSelect.js","sources":["../../src/order/FieldSelect.tsx"],"sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\nimport { token } from '@bynder/design-system';\nimport { Dropdown } from '../common/components/dropdown/Dropdown';\nimport { __ } from '../localization';\nimport { Field, useOrderingByPage } from '@src/store/useOrderingStore';\nimport { useRouterSelectors } from '@src/store/useRouterStore';\nimport { DropdownListItem } from '../common/components/dropdown/DropdownListItem';\n\ninterface FieldProps {\n\toptions: Field[];\n}\n\nexport function FieldSelect({ options }: FieldProps) {\n\tconst page = useRouterSelectors.use.page();\n\tconst [ordering, setOrdering] = useOrderingByPage(page.page);\n\n\tconst stringOfFieldMap = {\n\t\tCREATED_AT: __('Date added'),\n\t\tNAME: __('Name'),\n\t\tPUBLISHED_AT: __('Date published'),\n\t\tUPDATED_AT: __('Date modified'),\n\t\tNL_SEARCH: __('Similarity'),\n\t};\n\n\treturn (\n\t\t<Container>\n\t\t\t<Dropdown\n\t\t\t\ttitle={\n\t\t\t\t\t<Title\n\t\t\t\t\t\tstringOfFieldMap={stringOfFieldMap}\n\t\t\t\t\t\torderingField={options[0] === 'NL_SEARCH' ? options[0] : ordering.field}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\talt={__('Order by')}\n\t\t\t\tisPaddingContent\n\t\t\t\tdisabled={options[0] === 'NL_SEARCH'}\n\t\t\t>\n\t\t\t\t{(toggle) => (\n\t\t\t\t\t<UnorderedList>\n\t\t\t\t\t\t{options.map((option) => (\n\t\t\t\t\t\t\t<DropdownListItems\n\t\t\t\t\t\t\t\tselected={ordering.field === option}\n\t\t\t\t\t\t\t\tkey={stringOfFieldMap[option]}\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\tsetOrdering({ field: option, direction: ordering.direction });\n\t\t\t\t\t\t\t\t\ttoggle();\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tisFieldSelect\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<DropdownTitle>{stringOfFieldMap[option]}</DropdownTitle>\n\t\t\t\t\t\t\t</DropdownListItems>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</UnorderedList>\n\t\t\t\t)}\n\t\t\t</Dropdown>\n\t\t</Container>\n\t);\n}\n\ninterface TitleProps {\n\tstringOfFieldMap: Readonly<{ [key: string]: string }>;\n\torderingField: string;\n}\n\n// eslint-disable-next-line react/no-multi-comp\nfunction Title({ stringOfFieldMap, orderingField }: TitleProps) {\n\treturn (\n\t\t<span>\n\t\t\tOrder by{' '}\n\t\t\t<Strong $isDisabled={orderingField === 'NL_SEARCH'}>\n\t\t\t\t{stringOfFieldMap[orderingField]}\n\t\t\t</Strong>\n\t\t</span>\n\t);\n}\n\nconst UnorderedList = styled.ul`\n\tmargin: 0;\n\tpadding: 0;\n\tlist-style: none;\n`;\n\nconst DropdownListItems = styled(DropdownListItem)`\n\tfont-size: ${token.fontSize75};\n`;\n\nconst DropdownTitle = styled.span`\n\tflex-grow: 1;\n\tmin-width: 96px;\n\tpadding: ${token.spacing3} 0;\n\tfont-size: ${token.fontSize75};\n`;\n\nconst Container = styled.div`\n\tmargin-left: auto;\n\tborder-radius: 5px 0 0 5px;\n\tborder: 1px solid #d9dee1;\n`;\n\nconst Strong = styled.strong<{ $isDisabled?: boolean }>`\n\tfont-weight: 600;\n\tcolor: ${(p) => (p.$isDisabled ? 'rgba(0, 34, 51, 0.5)' : '#212c40')};\n`;\n"],"names":["FieldSelect","options","page","useRouterSelectors","ordering","setOrdering","useOrderingByPage","stringOfFieldMap","__","Container","jsx","Dropdown","Title","toggle","UnorderedList","option","DropdownListItems","DropdownTitle","orderingField","Strong","styled","DropdownListItem","token","p"],"mappings":";;;;;;;;AAaO,SAASA,EAAY,EAAE,SAAAC,KAAuB;AACpD,QAAMC,IAAOC,EAAmB,IAAI,KAAA,GAC9B,CAACC,GAAUC,CAAW,IAAIC,EAAkBJ,EAAK,IAAI,GAErDK,IAAmB;AAAA,IACxB,YAAYC,EAAG,YAAY;AAAA,IAC3B,MAAMA,EAAG,MAAM;AAAA,IACf,cAAcA,EAAG,gBAAgB;AAAA,IACjC,YAAYA,EAAG,eAAe;AAAA,IAC9B,WAAWA,EAAG,YAAY;AAAA,EAAA;AAG3B,2BACEC,GAAA,EACA,UAAA,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACA,OACC,gBAAAD;AAAA,QAACE;AAAA,QAAA;AAAA,UACA,kBAAAL;AAAA,UACA,eAAeN,EAAQ,CAAC,MAAM,cAAcA,EAAQ,CAAC,IAAIG,EAAS;AAAA,QAAA;AAAA,MAAA;AAAA,MAGpE,KAAKI,EAAG,UAAU;AAAA,MAClB,kBAAgB;AAAA,MAChB,UAAUP,EAAQ,CAAC,MAAM;AAAA,MAExB,WAACY,MACD,gBAAAH,EAACI,KACC,UAAAb,EAAQ,IAAI,CAACc,MACb,gBAAAL;AAAA,QAACM;AAAA,QAAA;AAAA,UACA,UAAUZ,EAAS,UAAUW;AAAA,UAE7B,SAAS,MAAM;AACd,YAAAV,EAAY,EAAE,OAAOU,GAAQ,WAAWX,EAAS,WAAW,GAC5DS,EAAA;AAAA,UACD;AAAA,UACA,eAAa;AAAA,UAEb,UAAA,gBAAAH,EAACO,GAAA,EAAe,UAAAV,EAAiBQ,CAAM,EAAA,CAAE;AAAA,QAAA;AAAA,QAPpCR,EAAiBQ,CAAM;AAAA,MAAA,CAS7B,EAAA,CACF;AAAA,IAAA;AAAA,EAAA,GAGH;AAEF;AAQA,SAASH,EAAM,EAAE,kBAAAL,GAAkB,eAAAW,KAA6B;AAC/D,2BACE,QAAA,EAAK,UAAA;AAAA,IAAA;AAAA,IACI;AAAA,sBACRC,GAAA,EAAO,aAAaD,MAAkB,aACrC,UAAAX,EAAiBW,CAAa,EAAA,CAChC;AAAA,EAAA,GACD;AAEF;AAEA,MAAMJ,IAAgBM,EAAO;AAAA;AAAA;AAAA;AAAA,GAMvBJ,IAAoBI,EAAOC,CAAgB;AAAA,cACnCC,EAAM,UAAU;AAAA,GAGxBL,IAAgBG,EAAO;AAAA;AAAA;AAAA,YAGjBE,EAAM,QAAQ;AAAA,cACZA,EAAM,UAAU;AAAA,GAGxBb,IAAYW,EAAO;AAAA;AAAA;AAAA;AAAA,GAMnBD,IAASC,EAAO;AAAA;AAAA,UAEZ,CAACG,MAAOA,EAAE,cAAc,yBAAyB,SAAU;AAAA;"}
|
package/FileSelector.js
ADDED
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
import { jsxs as u, jsx as r, Fragment as B } from "react/jsx-runtime";
|
|
2
|
+
import { useState as $, useRef as U, useEffect as A } from "react";
|
|
3
|
+
import d from "styled-components";
|
|
4
|
+
import { IconAspectRatioOutline as E, IconImage as R, IconCrop as j } from "@bynder/icons";
|
|
5
|
+
import { token as o, Badge as P } from "@bynder/design-system";
|
|
6
|
+
import "./AssetCard.js";
|
|
7
|
+
import "./AssetList.js";
|
|
8
|
+
import "./Chip.js";
|
|
9
|
+
import { Dropdown as V } from "./Dropdown.js";
|
|
10
|
+
import { DropdownListItem as L } from "./DropdownListItem.js";
|
|
11
|
+
import "./MetapropertyFilterContent.js";
|
|
12
|
+
import "./MetapropertyOption.js";
|
|
13
|
+
import "./SmartFilterContent.js";
|
|
14
|
+
import "./HorizontalScroll.js";
|
|
15
|
+
import "./InfiniteScroll.js";
|
|
16
|
+
import "./Modal.js";
|
|
17
|
+
import "./NoResults.js";
|
|
18
|
+
import "./Oops.js";
|
|
19
|
+
import "./ShadowRoot.js";
|
|
20
|
+
import { Skeleton as N } from "./Skeleton.js";
|
|
21
|
+
import "./Spinner.js";
|
|
22
|
+
import { useConfig as Y } from "./ConfigContext.js";
|
|
23
|
+
import { DropdownContent as H } from "./DropdownContent.js";
|
|
24
|
+
import { logger as M } from "./logger.js";
|
|
25
|
+
import { useAuth as q } from "./LoginContext.js";
|
|
26
|
+
import { isErr as G, isOk as J, ok as Q, err as W } from "./result.type.js";
|
|
27
|
+
import { getAsset as X } from "./getAsset.js";
|
|
28
|
+
import { getDefaultKey as Z, getUrlExtension as tt, splitByCamelCase as v, getHumanReadableFileSize as et } from "./utils2.js";
|
|
29
|
+
import { normalizeFilesResponse as it } from "./normalizeResponse.js";
|
|
30
|
+
import "./Dat.js";
|
|
31
|
+
import { DatDropdownItem as nt } from "./DatDropdownItem.js";
|
|
32
|
+
import { convertAssetIdToBase64 as rt } from "./base64Converter.js";
|
|
33
|
+
import { useDat as ot } from "./useDatStore.js";
|
|
34
|
+
import { useSimilaritySearchStore as st } from "./useSimilaritySearchStore.js";
|
|
35
|
+
async function at(s) {
|
|
36
|
+
const { asset: l, auth: e, assetFieldSelection: a, noCache: h, isSimilaritySelected: c } = s, m = await X({
|
|
37
|
+
assetId: c ? rt(l.id) : l.id,
|
|
38
|
+
auth: e,
|
|
39
|
+
assetFieldSelection: a,
|
|
40
|
+
noCache: h
|
|
41
|
+
});
|
|
42
|
+
if (J(m) && m.value.files) {
|
|
43
|
+
const S = it(m.value.files), y = m.value.streamingLinks;
|
|
44
|
+
return Q({ files: S, databaseId: m.value.databaseId || "", streamingLinks: y });
|
|
45
|
+
}
|
|
46
|
+
return W("Error retrieving asset files");
|
|
47
|
+
}
|
|
48
|
+
const b = "Custom transformation", f = "adaptiveVideo";
|
|
49
|
+
function Zt({ asset: s, onChange: l }) {
|
|
50
|
+
const [e, a] = $({ status: "Loading" }), [h, c] = $(!1), m = U(null), S = q(), { isSelected: y, NLSSearchText: O, isNLSSelected: _ } = st(), {
|
|
51
|
+
assetFieldSelection: T,
|
|
52
|
+
noCache: z,
|
|
53
|
+
defaultImageDerivativeName: x,
|
|
54
|
+
defaultVideoDerivativeName: C,
|
|
55
|
+
__shouldAddOriginal__: F
|
|
56
|
+
} = Y(), { transformation: w } = ot();
|
|
57
|
+
A(() => {
|
|
58
|
+
if (w?.url && e.status === "Data") {
|
|
59
|
+
const i = w.url !== e.files?.transformBaseUrl?.url;
|
|
60
|
+
D(i ? b : "transformBaseUrl");
|
|
61
|
+
}
|
|
62
|
+
}, [w]), A(() => {
|
|
63
|
+
e.status === "Data" && e.key !== f && c(!1);
|
|
64
|
+
}, [e]), A(() => {
|
|
65
|
+
s.id && (a({ status: "Loading" }), l(void 0), at({
|
|
66
|
+
asset: s,
|
|
67
|
+
auth: S,
|
|
68
|
+
assetFieldSelection: T,
|
|
69
|
+
noCache: z,
|
|
70
|
+
isSimilaritySelected: y || !!O && _
|
|
71
|
+
}).then((i) => {
|
|
72
|
+
if (G(i)) {
|
|
73
|
+
M.error(i.error), a({ status: "Failure" });
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const { files: n, streamingLinks: t } = i.value;
|
|
77
|
+
F && !("original" in n) && (n.original = {
|
|
78
|
+
url: i.value.databaseId,
|
|
79
|
+
isFakeOriginal: !0
|
|
80
|
+
}), t && Object.keys(t).length > 0 && (n[f] = {
|
|
81
|
+
url: "Adaptive video"
|
|
82
|
+
});
|
|
83
|
+
const p = Z(n), g = Object.keys(t || {})[0];
|
|
84
|
+
a({
|
|
85
|
+
status: "Data",
|
|
86
|
+
files: n,
|
|
87
|
+
key: p,
|
|
88
|
+
streamingLinks: t,
|
|
89
|
+
selectedAdaptiveKey: g
|
|
90
|
+
}), l(p === f && t ? { url: t[g] } : n[p]);
|
|
91
|
+
}));
|
|
92
|
+
}, [s.id, S, T]);
|
|
93
|
+
function D(i, n) {
|
|
94
|
+
a((t) => {
|
|
95
|
+
if (t.status !== "Data")
|
|
96
|
+
return t;
|
|
97
|
+
const I = { ...t, key: i };
|
|
98
|
+
let p;
|
|
99
|
+
if (i === b && w)
|
|
100
|
+
p = { url: w.url };
|
|
101
|
+
else if (i === f) {
|
|
102
|
+
const g = n || t.selectedAdaptiveKey;
|
|
103
|
+
g && t.streamingLinks && (p = { url: t.streamingLinks[g] }, I.selectedAdaptiveKey = g, c(!n));
|
|
104
|
+
} else
|
|
105
|
+
p = t.files[i];
|
|
106
|
+
return setTimeout(() => l(p)), I;
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
const K = (i) => {
|
|
110
|
+
if (e.status === "Data")
|
|
111
|
+
return s.__typename === "Image" && x && x in s.files ? x === i : s.__typename === "Video" && C && C in s.files ? C === i : e.key === i;
|
|
112
|
+
};
|
|
113
|
+
return /* @__PURE__ */ u(dt, { children: [
|
|
114
|
+
/* @__PURE__ */ r(
|
|
115
|
+
V,
|
|
116
|
+
{
|
|
117
|
+
title: /* @__PURE__ */ r(
|
|
118
|
+
lt,
|
|
119
|
+
{
|
|
120
|
+
assetFileType: s.__typename,
|
|
121
|
+
defaultImageDerivativeName: x,
|
|
122
|
+
defaultVideoDerivativeName: C,
|
|
123
|
+
state: e
|
|
124
|
+
}
|
|
125
|
+
),
|
|
126
|
+
buttonKind: "secondary",
|
|
127
|
+
isPaddingContent: !0,
|
|
128
|
+
direction: "Up",
|
|
129
|
+
disabled: e.status === "Loading",
|
|
130
|
+
children: (i) => e.status === "Data" && /* @__PURE__ */ u(k, { children: [
|
|
131
|
+
Object.entries(e.files).map(([n, t]) => /* @__PURE__ */ u(
|
|
132
|
+
L,
|
|
133
|
+
{
|
|
134
|
+
selected: K(n),
|
|
135
|
+
onClick: () => {
|
|
136
|
+
D(n), n !== f && i();
|
|
137
|
+
},
|
|
138
|
+
children: [
|
|
139
|
+
/* @__PURE__ */ r(mt, { "data-testid": "file-extension", children: n === "transformBaseUrl" ? /* @__PURE__ */ r(pt, {}) : tt(t.url) ?? /* @__PURE__ */ r(ft, {}) }),
|
|
140
|
+
/* @__PURE__ */ u(ut, { children: [
|
|
141
|
+
/* @__PURE__ */ u(gt, { children: [
|
|
142
|
+
v(n),
|
|
143
|
+
n === f && e.selectedAdaptiveKey && /* @__PURE__ */ r(wt, { children: /* @__PURE__ */ r(P, { isSmall: !0, color: "black-alpha", children: e.selectedAdaptiveKey.toUpperCase() }) })
|
|
144
|
+
] }),
|
|
145
|
+
/* @__PURE__ */ u(ht, { children: [
|
|
146
|
+
t.width && t.height && `${t.width} x ${t.height} px`,
|
|
147
|
+
t.width && t.height && t.fileSize && /* @__PURE__ */ r("span", { children: "•" }),
|
|
148
|
+
t.fileSize && et(t.fileSize)
|
|
149
|
+
] })
|
|
150
|
+
] })
|
|
151
|
+
]
|
|
152
|
+
},
|
|
153
|
+
n
|
|
154
|
+
)),
|
|
155
|
+
/* @__PURE__ */ r(
|
|
156
|
+
nt,
|
|
157
|
+
{
|
|
158
|
+
transformBaseUrl: e.files?.transformBaseUrl?.url,
|
|
159
|
+
toggleDropdown: i,
|
|
160
|
+
asset: s
|
|
161
|
+
}
|
|
162
|
+
)
|
|
163
|
+
] })
|
|
164
|
+
}
|
|
165
|
+
),
|
|
166
|
+
e.status === "Data" && e.key === f && /* @__PURE__ */ r(St, { ref: m, children: h && /* @__PURE__ */ r(
|
|
167
|
+
H,
|
|
168
|
+
{
|
|
169
|
+
isPaddingContent: !0,
|
|
170
|
+
onClickOutside: () => c(!1),
|
|
171
|
+
direction: "Up",
|
|
172
|
+
target: m,
|
|
173
|
+
"data-testid": "streaming-links-dropdown",
|
|
174
|
+
id: "streaming-links-dropdown",
|
|
175
|
+
children: /* @__PURE__ */ r(k, { children: Object.keys(e.streamingLinks || {}).map((i) => /* @__PURE__ */ r(
|
|
176
|
+
L,
|
|
177
|
+
{
|
|
178
|
+
selected: e.selectedAdaptiveKey === i,
|
|
179
|
+
onClick: () => D(f, i),
|
|
180
|
+
children: i.toUpperCase()
|
|
181
|
+
},
|
|
182
|
+
i
|
|
183
|
+
)) })
|
|
184
|
+
}
|
|
185
|
+
) })
|
|
186
|
+
] });
|
|
187
|
+
}
|
|
188
|
+
function lt({
|
|
189
|
+
assetFileType: s,
|
|
190
|
+
defaultImageDerivativeName: l,
|
|
191
|
+
defaultVideoDerivativeName: e,
|
|
192
|
+
state: a
|
|
193
|
+
}) {
|
|
194
|
+
const h = (c) => {
|
|
195
|
+
if (a.status === "Data")
|
|
196
|
+
return s === "Image" && l && l in a.files ? v(l) : s === "Video" && e && e in a.files ? v(e) : v(c);
|
|
197
|
+
};
|
|
198
|
+
return a.status === "Loading" ? /* @__PURE__ */ r(N, { width: 50 }) : a.status === "Data" ? /* @__PURE__ */ u(ct, { children: [
|
|
199
|
+
a.key === b && /* @__PURE__ */ r(j, {}),
|
|
200
|
+
h(a.key)
|
|
201
|
+
] }) : /* @__PURE__ */ r(B, { children: "Error" });
|
|
202
|
+
}
|
|
203
|
+
const dt = d.div`
|
|
204
|
+
display: flex;
|
|
205
|
+
gap: ${o.spacing2};
|
|
206
|
+
margin-right: ${o.spacing3};
|
|
207
|
+
text-transform: capitalize;
|
|
208
|
+
position: relative;
|
|
209
|
+
`, ct = d.div`
|
|
210
|
+
display: flex;
|
|
211
|
+
gap: ${o.spacing4};
|
|
212
|
+
align-items: center;
|
|
213
|
+
`, k = d.ul`
|
|
214
|
+
max-height: 400px;
|
|
215
|
+
overflow-y: auto;
|
|
216
|
+
padding: 0 0 ${o.spacing3} 0;
|
|
217
|
+
list-style: none;
|
|
218
|
+
margin: 0;
|
|
219
|
+
`, mt = d.div`
|
|
220
|
+
display: flex;
|
|
221
|
+
align-items: center;
|
|
222
|
+
justify-content: center;
|
|
223
|
+
color: rgba(0, 34, 51, 0.5);
|
|
224
|
+
font-size: ${o.fontSize50};
|
|
225
|
+
height: ${o.spacing8};
|
|
226
|
+
width: ${o.spacing8};
|
|
227
|
+
text-transform: uppercase;
|
|
228
|
+
font-weight: 600;
|
|
229
|
+
border-radius: 5px;
|
|
230
|
+
background-color: rgba(0, 34, 51, 0.05);
|
|
231
|
+
margin-right: ${o.spacing4};
|
|
232
|
+
`, pt = d(E)`
|
|
233
|
+
height: ${o.spacing6};
|
|
234
|
+
width: ${o.spacing6};
|
|
235
|
+
`, ft = d(R)`
|
|
236
|
+
height: ${o.spacing6};
|
|
237
|
+
width: ${o.spacing6};
|
|
238
|
+
`, ut = d.div`
|
|
239
|
+
flex-grow: 1;
|
|
240
|
+
width: 160px;
|
|
241
|
+
`, gt = d.div`
|
|
242
|
+
text-transform: capitalize;
|
|
243
|
+
overflow: hidden;
|
|
244
|
+
text-overflow: ellipsis;
|
|
245
|
+
white-space: nowrap;
|
|
246
|
+
color: rgba(0, 34, 51, 0.8);
|
|
247
|
+
`, ht = d.div`
|
|
248
|
+
font-size: ${o.fontSize75};
|
|
249
|
+
|
|
250
|
+
& > span {
|
|
251
|
+
margin: 0 ${o.spacing3};
|
|
252
|
+
}
|
|
253
|
+
`, wt = d.span`
|
|
254
|
+
margin-left: ${o.spacing2};
|
|
255
|
+
display: inline-flex;
|
|
256
|
+
vertical-align: middle;
|
|
257
|
+
`, St = d.div`
|
|
258
|
+
position: absolute;
|
|
259
|
+
left: -280px;
|
|
260
|
+
top: 0;
|
|
261
|
+
z-index: 1000;
|
|
262
|
+
`;
|
|
263
|
+
export {
|
|
264
|
+
Zt as FileSelector
|
|
265
|
+
};
|
|
266
|
+
//# sourceMappingURL=FileSelector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileSelector.js","sources":["../../src/select/FileSelector.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport styled from 'styled-components';\nimport { IconAspectRatioOutline, IconCrop, IconImage } from '@bynder/icons';\nimport { Badge, token } from '@bynder/design-system';\n\nimport { DropdownListItem } from '../Components';\nimport { useConfig } from '../app-config/ConfigContext';\nimport { Dropdown } from '../common/components/dropdown/Dropdown';\nimport { DropdownContent } from '../common/components/dropdown/DropdownContent';\nimport { logger } from '../utils/logger';\nimport { useAuth } from '../login/LoginContext';\nimport { Skeleton } from '../common/components/Skeleton';\nimport { Asset } from '../views/asset/asset.type';\nimport { err, isErr, isOk, ok, Result } from '../auth/result.type';\nimport { File } from './file.type';\nimport { getAsset, StreamingLinks } from '../api/getAsset';\nimport {\n\tgetDefaultKey,\n\tgetHumanReadableFileSize,\n\tgetUrlExtension,\n\tsplitByCamelCase,\n} from './utils';\nimport { normalizeFilesResponse } from '@src/utils/normalizeResponse';\nimport { AuthInformationState } from '../auth/useAuthInformation';\nimport { DatDropdownItem } from '../Dat';\nimport { convertAssetIdToBase64 } from '@src/utils/base64Converter';\nimport { State } from './types';\nimport { useDat } from '@src/store/useDatStore';\nimport { useSimilaritySearchStore } from '@src/store/useSimilaritySearchStore';\n\ntype returnFilesType = {\n\tfiles: Record<string, File>;\n\tdatabaseId: string;\n\tstreamingLinks?: StreamingLinks;\n};\n\nasync function getFiles(options: {\n\tasset: Asset;\n\tauth: AuthInformationState | null;\n\tassetFieldSelection?: string;\n\tisSimilaritySelected: boolean;\n\tnoCache?: boolean;\n}): Promise<Result<returnFilesType, string>> {\n\tconst { asset, auth, assetFieldSelection, noCache, isSimilaritySelected } = options;\n\n\tconst result = await getAsset({\n\t\tassetId: isSimilaritySelected ? convertAssetIdToBase64(asset.id) : asset.id,\n\t\tauth,\n\t\tassetFieldSelection,\n\t\tnoCache,\n\t});\n\n\tif (isOk(result) && result.value.files) {\n\t\tconst files = normalizeFilesResponse(result.value.files);\n\t\tconst streamingLinks = result.value.streamingLinks;\n\n\t\treturn ok({ files, databaseId: result.value.databaseId || '', streamingLinks });\n\t}\n\n\treturn err('Error retrieving asset files');\n}\n\ninterface Props {\n\treadonly asset: Asset;\n\treadonly onChange: (file: File | undefined) => void;\n}\n\nconst TRANSFORMATION_KEY = 'Custom transformation';\nconst ADAPTIVE_VIDEO_KEY = 'adaptiveVideo';\n\nexport function FileSelector({ asset, onChange }: Props) {\n\tconst [state, setState] = useState<State>({ status: 'Loading' });\n\tconst [isStreamingDropdownOpen, setIsStreamingDropdownOpen] = useState(false);\n\tconst dropdownRef = useRef<HTMLDivElement>(null);\n\tconst auth = useAuth();\n\tconst { isSelected, NLSSearchText, isNLSSelected } = useSimilaritySearchStore();\n\tconst {\n\t\tassetFieldSelection,\n\t\tnoCache,\n\t\tdefaultImageDerivativeName,\n\t\tdefaultVideoDerivativeName,\n\t\t__shouldAddOriginal__,\n\t} = useConfig();\n\tconst { transformation } = useDat();\n\n\tuseEffect(() => {\n\t\tif (transformation?.url && state.status === 'Data') {\n\t\t\tconst isTransformed = transformation.url !== state.files?.transformBaseUrl?.url;\n\t\t\tselectFile(isTransformed ? TRANSFORMATION_KEY : 'transformBaseUrl');\n\t\t}\n\t}, [transformation]); // eslint-disable-line react-hooks/exhaustive-deps\n\n\t// Close dropdown when not on ADAPTIVE_VIDEO_KEY\n\tuseEffect(() => {\n\t\tif (state.status === 'Data' && state.key !== ADAPTIVE_VIDEO_KEY) {\n\t\t\tsetIsStreamingDropdownOpen(false);\n\t\t}\n\t}, [state]);\n\n\tuseEffect(() => {\n\t\tif (!asset.id) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetState({ status: 'Loading' });\n\t\tonChange(undefined);\n\n\t\tgetFiles({\n\t\t\tasset,\n\t\t\tauth,\n\t\t\tassetFieldSelection,\n\t\t\tnoCache,\n\t\t\tisSimilaritySelected: isSelected || (Boolean(NLSSearchText) && isNLSSelected),\n\t\t}).then((result) => {\n\t\t\tif (isErr(result)) {\n\t\t\t\tlogger.error(result.error);\n\t\t\t\tsetState({ status: 'Failure' });\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { files, streamingLinks } = result.value;\n\n\t\t\tif (__shouldAddOriginal__ && !('original' in files)) {\n\t\t\t\tfiles.original = {\n\t\t\t\t\turl: result.value.databaseId,\n\t\t\t\t\tisFakeOriginal: true,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst hasStreamingLinks = streamingLinks && Object.keys(streamingLinks).length > 0;\n\n\t\t\tif (hasStreamingLinks) {\n\t\t\t\tfiles[ADAPTIVE_VIDEO_KEY] = {\n\t\t\t\t\turl: 'Adaptive video',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst defaultKey = getDefaultKey(files) as string;\n\n\t\t\tconst selectedAdaptiveKey = Object.keys(streamingLinks || {})[0];\n\n\t\t\tsetState({\n\t\t\t\tstatus: 'Data',\n\t\t\t\tfiles,\n\t\t\t\tkey: defaultKey,\n\t\t\t\tstreamingLinks,\n\t\t\t\tselectedAdaptiveKey,\n\t\t\t});\n\n\t\t\tif (defaultKey === ADAPTIVE_VIDEO_KEY && streamingLinks) {\n\t\t\t\tonChange({ url: streamingLinks[selectedAdaptiveKey] });\n\t\t\t} else {\n\t\t\t\tonChange(files[defaultKey]);\n\t\t\t}\n\t\t});\n\t}, [asset.id, auth, assetFieldSelection]); // eslint-disable-line react-hooks/exhaustive-deps\n\n\tfunction selectFile(key: string, adaptiveKey?: string) {\n\t\tsetState((prevState) => {\n\t\t\tif (prevState.status !== 'Data') {\n\t\t\t\treturn prevState;\n\t\t\t}\n\n\t\t\tconst newState: State = { ...prevState, key };\n\t\t\tlet fileToSelect: File | undefined;\n\n\t\t\tif (key === TRANSFORMATION_KEY && transformation) {\n\t\t\t\tfileToSelect = { url: transformation.url };\n\t\t\t} else if (key === ADAPTIVE_VIDEO_KEY) {\n\t\t\t\tconst newAdaptiveKey = adaptiveKey || prevState.selectedAdaptiveKey;\n\n\t\t\t\tif (newAdaptiveKey && prevState.streamingLinks) {\n\t\t\t\t\tfileToSelect = { url: prevState.streamingLinks[newAdaptiveKey] };\n\t\t\t\t\tnewState.selectedAdaptiveKey = newAdaptiveKey;\n\n\t\t\t\t\t// Close the dropdown if an adaptive key was selected\n\t\t\t\t\tif (adaptiveKey) {\n\t\t\t\t\t\tsetIsStreamingDropdownOpen(false);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Open the dropdown if ADAPTIVE_VIDEO_KEY was selected in the main dropdown\n\t\t\t\t\t\tsetIsStreamingDropdownOpen(true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfileToSelect = prevState.files[key];\n\t\t\t}\n\n\t\t\tsetTimeout(() => onChange(fileToSelect));\n\n\t\t\treturn newState;\n\t\t});\n\t}\n\n\tconst handleDropdownSelectedFileType = (key: string) => {\n\t\tif (state.status === 'Data') {\n\t\t\tif (\n\t\t\t\tasset.__typename === 'Image' &&\n\t\t\t\tdefaultImageDerivativeName &&\n\t\t\t\tdefaultImageDerivativeName in asset.files\n\t\t\t) {\n\t\t\t\treturn defaultImageDerivativeName === key;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tasset.__typename === 'Video' &&\n\t\t\t\tdefaultVideoDerivativeName &&\n\t\t\t\tdefaultVideoDerivativeName in asset.files\n\t\t\t) {\n\t\t\t\treturn defaultVideoDerivativeName === key;\n\t\t\t}\n\n\t\t\treturn state.key === key;\n\t\t}\n\t};\n\n\treturn (\n\t\t<Container>\n\t\t\t<Dropdown\n\t\t\t\ttitle={\n\t\t\t\t\t<Title\n\t\t\t\t\t\tassetFileType={asset.__typename}\n\t\t\t\t\t\tdefaultImageDerivativeName={defaultImageDerivativeName}\n\t\t\t\t\t\tdefaultVideoDerivativeName={defaultVideoDerivativeName}\n\t\t\t\t\t\tstate={state}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tbuttonKind=\"secondary\"\n\t\t\t\tisPaddingContent\n\t\t\t\tdirection=\"Up\"\n\t\t\t\tdisabled={state.status === 'Loading'}\n\t\t\t>\n\t\t\t\t{(toggle) =>\n\t\t\t\t\tstate.status === 'Data' && (\n\t\t\t\t\t\t<ListContainer>\n\t\t\t\t\t\t\t{Object.entries(state.files).map(([key, file]) => (\n\t\t\t\t\t\t\t\t<DropdownListItem\n\t\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\t\tselected={handleDropdownSelectedFileType(key)}\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\tselectFile(key);\n\n\t\t\t\t\t\t\t\t\t\tif (key !== ADAPTIVE_VIDEO_KEY) {\n\t\t\t\t\t\t\t\t\t\t\ttoggle();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<TransformImageContainer data-testid=\"file-extension\">\n\t\t\t\t\t\t\t\t\t\t{key === 'transformBaseUrl' ? (\n\t\t\t\t\t\t\t\t\t\t\t<AspectRatioIcon />\n\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\tgetUrlExtension(file.url) ?? <ImageIcon />\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</TransformImageContainer>\n\t\t\t\t\t\t\t\t\t<TransformContentContainer>\n\t\t\t\t\t\t\t\t\t\t<TransformContentTitle>\n\t\t\t\t\t\t\t\t\t\t\t{splitByCamelCase(key)}\n\t\t\t\t\t\t\t\t\t\t\t{key === ADAPTIVE_VIDEO_KEY &&\n\t\t\t\t\t\t\t\t\t\t\t\tstate.selectedAdaptiveKey && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<BadgeContainer>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Badge isSmall color=\"black-alpha\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{state.selectedAdaptiveKey.toUpperCase()}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</BadgeContainer>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</TransformContentTitle>\n\t\t\t\t\t\t\t\t\t\t<TransformContentSubtitle>\n\t\t\t\t\t\t\t\t\t\t\t{file.width &&\n\t\t\t\t\t\t\t\t\t\t\t\tfile.height &&\n\t\t\t\t\t\t\t\t\t\t\t\t`${file.width} x ${file.height} px`}\n\n\t\t\t\t\t\t\t\t\t\t\t{file.width && file.height && file.fileSize && (\n\t\t\t\t\t\t\t\t\t\t\t\t<span>•</span>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t\t\t{file.fileSize &&\n\t\t\t\t\t\t\t\t\t\t\t\tgetHumanReadableFileSize(file.fileSize)}\n\t\t\t\t\t\t\t\t\t\t</TransformContentSubtitle>\n\t\t\t\t\t\t\t\t\t</TransformContentContainer>\n\t\t\t\t\t\t\t\t</DropdownListItem>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t<DatDropdownItem\n\t\t\t\t\t\t\t\ttransformBaseUrl={state.files?.transformBaseUrl?.url}\n\t\t\t\t\t\t\t\ttoggleDropdown={toggle}\n\t\t\t\t\t\t\t\tasset={asset}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ListContainer>\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t</Dropdown>\n\t\t\t{state.status === 'Data' && state.key === ADAPTIVE_VIDEO_KEY && (\n\t\t\t\t<PositionedAdaptiveDropdown ref={dropdownRef}>\n\t\t\t\t\t{isStreamingDropdownOpen && (\n\t\t\t\t\t\t<DropdownContent\n\t\t\t\t\t\t\tisPaddingContent\n\t\t\t\t\t\t\tonClickOutside={() => setIsStreamingDropdownOpen(false)}\n\t\t\t\t\t\t\tdirection=\"Up\"\n\t\t\t\t\t\t\ttarget={dropdownRef}\n\t\t\t\t\t\t\tdata-testid=\"streaming-links-dropdown\"\n\t\t\t\t\t\t\tid=\"streaming-links-dropdown\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ListContainer>\n\t\t\t\t\t\t\t\t{Object.keys(state.streamingLinks || {}).map((key) => (\n\t\t\t\t\t\t\t\t\t<DropdownListItem\n\t\t\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\t\t\tselected={state.selectedAdaptiveKey === key}\n\t\t\t\t\t\t\t\t\t\tonClick={() => selectFile(ADAPTIVE_VIDEO_KEY, key)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{key.toUpperCase()}\n\t\t\t\t\t\t\t\t\t</DropdownListItem>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</ListContainer>\n\t\t\t\t\t\t</DropdownContent>\n\t\t\t\t\t)}\n\t\t\t\t</PositionedAdaptiveDropdown>\n\t\t\t)}\n\t\t</Container>\n\t);\n}\n\n// eslint-disable-next-line react/no-multi-comp\nfunction Title({\n\tassetFileType,\n\tdefaultImageDerivativeName,\n\tdefaultVideoDerivativeName,\n\tstate,\n}: {\n\tassetFileType: string;\n\treadonly state: State;\n\tdefaultImageDerivativeName?: string;\n\tdefaultVideoDerivativeName?: string;\n}) {\n\tconst handleContentTitleReturn = (key: string) => {\n\t\tif (state.status === 'Data') {\n\t\t\tif (\n\t\t\t\tassetFileType === 'Image' &&\n\t\t\t\tdefaultImageDerivativeName &&\n\t\t\t\tdefaultImageDerivativeName in state.files\n\t\t\t) {\n\t\t\t\treturn splitByCamelCase(defaultImageDerivativeName);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tassetFileType === 'Video' &&\n\t\t\t\tdefaultVideoDerivativeName &&\n\t\t\t\tdefaultVideoDerivativeName in state.files\n\t\t\t) {\n\t\t\t\treturn splitByCamelCase(defaultVideoDerivativeName);\n\t\t\t}\n\n\t\t\treturn splitByCamelCase(key);\n\t\t}\n\t};\n\n\tif (state.status === 'Loading') {\n\t\treturn <Skeleton width={50} />;\n\t} else if (state.status === 'Data') {\n\t\treturn (\n\t\t\t<TitleContainer>\n\t\t\t\t{state.key === TRANSFORMATION_KEY && <IconCrop />}\n\t\t\t\t{handleContentTitleReturn(state.key)}\n\t\t\t</TitleContainer>\n\t\t);\n\t}\n\n\treturn <>Error</>;\n}\n\nconst Container = styled.div`\n\tdisplay: flex;\n\tgap: ${token.spacing2};\n\tmargin-right: ${token.spacing3};\n\ttext-transform: capitalize;\n\tposition: relative;\n`;\n\nconst TitleContainer = styled.div`\n\tdisplay: flex;\n\tgap: ${token.spacing4};\n\talign-items: center;\n`;\n\nconst ListContainer = styled.ul`\n\tmax-height: 400px;\n\toverflow-y: auto;\n\tpadding: 0 0 ${token.spacing3} 0;\n\tlist-style: none;\n\tmargin: 0;\n`;\n\nconst TransformImageContainer = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tcolor: rgba(0, 34, 51, 0.5);\n\tfont-size: ${token.fontSize50};\n\theight: ${token.spacing8};\n\twidth: ${token.spacing8};\n\ttext-transform: uppercase;\n\tfont-weight: 600;\n\tborder-radius: 5px;\n\tbackground-color: rgba(0, 34, 51, 0.05);\n\tmargin-right: ${token.spacing4};\n`;\n\nconst AspectRatioIcon = styled(IconAspectRatioOutline)`\n\theight: ${token.spacing6};\n\twidth: ${token.spacing6};\n`;\n\nconst ImageIcon = styled(IconImage)`\n\theight: ${token.spacing6};\n\twidth: ${token.spacing6};\n`;\n\nconst TransformContentContainer = styled.div`\n\tflex-grow: 1;\n\twidth: 160px;\n`;\n\nconst TransformContentTitle = styled.div`\n\ttext-transform: capitalize;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n\tcolor: rgba(0, 34, 51, 0.8);\n`;\n\nconst TransformContentSubtitle = styled.div`\n\tfont-size: ${token.fontSize75};\n\n\t& > span {\n\t\tmargin: 0 ${token.spacing3};\n\t}\n`;\n\nconst BadgeContainer = styled.span`\n\tmargin-left: ${token.spacing2};\n\tdisplay: inline-flex;\n\tvertical-align: middle;\n`;\n\nconst PositionedAdaptiveDropdown = styled.div`\n\tposition: absolute;\n\tleft: -280px;\n\ttop: 0;\n\tz-index: 1000;\n`;\n"],"names":["getFiles","options","asset","auth","assetFieldSelection","noCache","isSimilaritySelected","result","getAsset","convertAssetIdToBase64","isOk","files","normalizeFilesResponse","streamingLinks","ok","err","TRANSFORMATION_KEY","ADAPTIVE_VIDEO_KEY","FileSelector","onChange","state","setState","useState","isStreamingDropdownOpen","setIsStreamingDropdownOpen","dropdownRef","useRef","useAuth","isSelected","NLSSearchText","isNLSSelected","useSimilaritySearchStore","defaultImageDerivativeName","defaultVideoDerivativeName","__shouldAddOriginal__","useConfig","transformation","useDat","useEffect","isTransformed","selectFile","isErr","logger","defaultKey","getDefaultKey","selectedAdaptiveKey","key","adaptiveKey","prevState","newState","fileToSelect","newAdaptiveKey","handleDropdownSelectedFileType","Container","jsx","Dropdown","Title","toggle","ListContainer","file","jsxs","DropdownListItem","TransformImageContainer","AspectRatioIcon","getUrlExtension","ImageIcon","TransformContentContainer","TransformContentTitle","splitByCamelCase","BadgeContainer","Badge","TransformContentSubtitle","getHumanReadableFileSize","DatDropdownItem","PositionedAdaptiveDropdown","DropdownContent","assetFileType","handleContentTitleReturn","Skeleton","TitleContainer","IconCrop","styled","token","IconAspectRatioOutline","IconImage"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,eAAeA,GAASC,GAMqB;AAC5C,QAAM,EAAE,OAAAC,GAAO,MAAAC,GAAM,qBAAAC,GAAqB,SAAAC,GAAS,sBAAAC,MAAyBL,GAEtEM,IAAS,MAAMC,EAAS;AAAA,IAC7B,SAASF,IAAuBG,GAAuBP,EAAM,EAAE,IAAIA,EAAM;AAAA,IACzE,MAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,SAAAC;AAAA,EAAA,CACA;AAED,MAAIK,EAAKH,CAAM,KAAKA,EAAO,MAAM,OAAO;AACvC,UAAMI,IAAQC,GAAuBL,EAAO,MAAM,KAAK,GACjDM,IAAiBN,EAAO,MAAM;AAEpC,WAAOO,EAAG,EAAE,OAAAH,GAAO,YAAYJ,EAAO,MAAM,cAAc,IAAI,gBAAAM,GAAgB;AAAA,EAC/E;AAEA,SAAOE,EAAI,8BAA8B;AAC1C;AAOA,MAAMC,IAAqB,yBACrBC,IAAqB;AAEpB,SAASC,GAAa,EAAE,OAAAhB,GAAO,UAAAiB,KAAmB;AACxD,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAgB,EAAE,QAAQ,WAAW,GACzD,CAACC,GAAyBC,CAA0B,IAAIF,EAAS,EAAK,GACtEG,IAAcC,EAAuB,IAAI,GACzCvB,IAAOwB,EAAA,GACP,EAAE,YAAAC,GAAY,eAAAC,GAAe,eAAAC,EAAA,IAAkBC,GAAA,GAC/C;AAAA,IACL,qBAAA3B;AAAA,IACA,SAAAC;AAAA,IACA,4BAAA2B;AAAA,IACA,4BAAAC;AAAA,IACA,uBAAAC;AAAA,EAAA,IACGC,EAAA,GACE,EAAE,gBAAAC,EAAA,IAAmBC,GAAA;AAE3B,EAAAC,EAAU,MAAM;AACf,QAAIF,GAAgB,OAAOhB,EAAM,WAAW,QAAQ;AACnD,YAAMmB,IAAgBH,EAAe,QAAQhB,EAAM,OAAO,kBAAkB;AAC5E,MAAAoB,EAAWD,IAAgBvB,IAAqB,kBAAkB;AAAA,IACnE;AAAA,EACD,GAAG,CAACoB,CAAc,CAAC,GAGnBE,EAAU,MAAM;AACf,IAAIlB,EAAM,WAAW,UAAUA,EAAM,QAAQH,KAC5CO,EAA2B,EAAK;AAAA,EAElC,GAAG,CAACJ,CAAK,CAAC,GAEVkB,EAAU,MAAM;AACf,IAAKpC,EAAM,OAIXmB,EAAS,EAAE,QAAQ,WAAW,GAC9BF,EAAS,MAAS,GAElBnB,GAAS;AAAA,MACR,OAAAE;AAAA,MACA,MAAAC;AAAA,MACA,qBAAAC;AAAA,MACA,SAAAC;AAAA,MACA,sBAAsBuB,KAAe,EAAQC,KAAkBC;AAAA,IAAA,CAC/D,EAAE,KAAK,CAACvB,MAAW;AACnB,UAAIkC,EAAMlC,CAAM,GAAG;AAClB,QAAAmC,EAAO,MAAMnC,EAAO,KAAK,GACzBc,EAAS,EAAE,QAAQ,WAAW;AAE9B;AAAA,MACD;AAEA,YAAM,EAAE,OAAAV,GAAO,gBAAAE,EAAA,IAAmBN,EAAO;AAEzC,MAAI2B,KAAyB,EAAE,cAAcvB,OAC5CA,EAAM,WAAW;AAAA,QAChB,KAAKJ,EAAO,MAAM;AAAA,QAClB,gBAAgB;AAAA,MAAA,IAIQM,KAAkB,OAAO,KAAKA,CAAc,EAAE,SAAS,MAGhFF,EAAMM,CAAkB,IAAI;AAAA,QAC3B,KAAK;AAAA,MAAA;AAIP,YAAM0B,IAAaC,EAAcjC,CAAK,GAEhCkC,IAAsB,OAAO,KAAKhC,KAAkB,CAAA,CAAE,EAAE,CAAC;AAE/D,MAAAQ,EAAS;AAAA,QACR,QAAQ;AAAA,QACR,OAAAV;AAAA,QACA,KAAKgC;AAAA,QACL,gBAAA9B;AAAA,QACA,qBAAAgC;AAAA,MAAA,CACA,GAGA1B,EADGwB,MAAe1B,KAAsBJ,IAC/B,EAAE,KAAKA,EAAegC,CAAmB,MAEzClC,EAAMgC,CAAU,CAF4B;AAAA,IAIvD,CAAC;AAAA,EACF,GAAG,CAACzC,EAAM,IAAIC,GAAMC,CAAmB,CAAC;AAExC,WAASoC,EAAWM,GAAaC,GAAsB;AACtD,IAAA1B,EAAS,CAAC2B,MAAc;AACvB,UAAIA,EAAU,WAAW;AACxB,eAAOA;AAGR,YAAMC,IAAkB,EAAE,GAAGD,GAAW,KAAAF,EAAA;AACxC,UAAII;AAEJ,UAAIJ,MAAQ9B,KAAsBoB;AACjC,QAAAc,IAAe,EAAE,KAAKd,EAAe,IAAA;AAAA,eAC3BU,MAAQ7B,GAAoB;AACtC,cAAMkC,IAAiBJ,KAAeC,EAAU;AAEhD,QAAIG,KAAkBH,EAAU,mBAC/BE,IAAe,EAAE,KAAKF,EAAU,eAAeG,CAAc,EAAA,GAC7DF,EAAS,sBAAsBE,GAI9B3B,EADG,CAAAuB,CAC6B;AAAA,MAMnC;AACC,QAAAG,IAAeF,EAAU,MAAMF,CAAG;AAGnC,wBAAW,MAAM3B,EAAS+B,CAAY,CAAC,GAEhCD;AAAA,IACR,CAAC;AAAA,EACF;AAEA,QAAMG,IAAiC,CAACN,MAAgB;AACvD,QAAI1B,EAAM,WAAW;AACpB,aACClB,EAAM,eAAe,WACrB8B,KACAA,KAA8B9B,EAAM,QAE7B8B,MAA+Bc,IAItC5C,EAAM,eAAe,WACrB+B,KACAA,KAA8B/B,EAAM,QAE7B+B,MAA+Ba,IAGhC1B,EAAM,QAAQ0B;AAAA,EAEvB;AAEA,2BACEO,IAAA,EACA,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACA,OACC,gBAAAD;AAAA,UAACE;AAAA,UAAA;AAAA,YACA,eAAetD,EAAM;AAAA,YACrB,4BAAA8B;AAAA,YACA,4BAAAC;AAAA,YACA,OAAAb;AAAA,UAAA;AAAA,QAAA;AAAA,QAGF,YAAW;AAAA,QACX,kBAAgB;AAAA,QAChB,WAAU;AAAA,QACV,UAAUA,EAAM,WAAW;AAAA,QAE1B,WAACqC,MACDrC,EAAM,WAAW,4BACfsC,GAAA,EACC,UAAA;AAAA,UAAA,OAAO,QAAQtC,EAAM,KAAK,EAAE,IAAI,CAAC,CAAC0B,GAAKa,CAAI,MAC3C,gBAAAC;AAAA,YAACC;AAAA,YAAA;AAAA,cAEA,UAAUT,EAA+BN,CAAG;AAAA,cAC5C,SAAS,MAAM;AACd,gBAAAN,EAAWM,CAAG,GAEVA,MAAQ7B,KACXwC,EAAA;AAAA,cAEF;AAAA,cAEA,UAAA;AAAA,gBAAA,gBAAAH,EAACQ,IAAA,EAAwB,eAAY,kBACnC,UAAAhB,MAAQ,qBACR,gBAAAQ,EAACS,IAAA,CAAA,CAAgB,IAEjBC,GAAgBL,EAAK,GAAG,KAAK,gBAAAL,EAACW,MAAU,GAE1C;AAAA,kCACCC,IAAA,EACA,UAAA;AAAA,kBAAA,gBAAAN,EAACO,IAAA,EACC,UAAA;AAAA,oBAAAC,EAAiBtB,CAAG;AAAA,oBACpBA,MAAQ7B,KACRG,EAAM,uBACL,gBAAAkC,EAACe,MACA,UAAA,gBAAAf,EAACgB,GAAA,EAAM,SAAO,IAAC,OAAM,eACnB,UAAAlD,EAAM,oBAAoB,YAAA,GAC5B,EAAA,CACD;AAAA,kBAAA,GAEH;AAAA,oCACCmD,IAAA,EACC,UAAA;AAAA,oBAAAZ,EAAK,SACLA,EAAK,UACL,GAAGA,EAAK,KAAK,MAAMA,EAAK,MAAM;AAAA,oBAE9BA,EAAK,SAASA,EAAK,UAAUA,EAAK,YAClC,gBAAAL,EAAC,UAAK,UAAA,IAAA,CAAC;AAAA,oBAGPK,EAAK,YACLa,GAAyBb,EAAK,QAAQ;AAAA,kBAAA,EAAA,CACxC;AAAA,gBAAA,EAAA,CACD;AAAA,cAAA;AAAA,YAAA;AAAA,YAzCKb;AAAA,UAAA,CA2CN;AAAA,UACD,gBAAAQ;AAAA,YAACmB;AAAA,YAAA;AAAA,cACA,kBAAkBrD,EAAM,OAAO,kBAAkB;AAAA,cACjD,gBAAgBqC;AAAA,cAChB,OAAAvD;AAAA,YAAA;AAAA,UAAA;AAAA,QACD,EAAA,CACD;AAAA,MAAA;AAAA,IAAA;AAAA,IAIFkB,EAAM,WAAW,UAAUA,EAAM,QAAQH,KACzC,gBAAAqC,EAACoB,IAAA,EAA2B,KAAKjD,GAC/B,UAAAF,KACA,gBAAA+B;AAAA,MAACqB;AAAA,MAAA;AAAA,QACA,kBAAgB;AAAA,QAChB,gBAAgB,MAAMnD,EAA2B,EAAK;AAAA,QACtD,WAAU;AAAA,QACV,QAAQC;AAAA,QACR,eAAY;AAAA,QACZ,IAAG;AAAA,QAEH,UAAA,gBAAA6B,EAACI,GAAA,EACC,UAAA,OAAO,KAAKtC,EAAM,kBAAkB,CAAA,CAAE,EAAE,IAAI,CAAC0B,MAC7C,gBAAAQ;AAAA,UAACO;AAAA,UAAA;AAAA,YAEA,UAAUzC,EAAM,wBAAwB0B;AAAA,YACxC,SAAS,MAAMN,EAAWvB,GAAoB6B,CAAG;AAAA,YAEhD,YAAI,YAAA;AAAA,UAAY;AAAA,UAJZA;AAAA,QAAA,CAMN,EAAA,CACF;AAAA,MAAA;AAAA,IAAA,EACD,CAEF;AAAA,EAAA,GAEF;AAEF;AAGA,SAASU,GAAM;AAAA,EACd,eAAAoB;AAAA,EACA,4BAAA5C;AAAA,EACA,4BAAAC;AAAA,EACA,OAAAb;AACD,GAKG;AACF,QAAMyD,IAA2B,CAAC/B,MAAgB;AACjD,QAAI1B,EAAM,WAAW;AACpB,aACCwD,MAAkB,WAClB5C,KACAA,KAA8BZ,EAAM,QAE7BgD,EAAiBpC,CAA0B,IAIlD4C,MAAkB,WAClB3C,KACAA,KAA8Bb,EAAM,QAE7BgD,EAAiBnC,CAA0B,IAG5CmC,EAAiBtB,CAAG;AAAA,EAE7B;AAEA,SAAI1B,EAAM,WAAW,YACb,gBAAAkC,EAACwB,GAAA,EAAS,OAAO,GAAA,CAAI,IAClB1D,EAAM,WAAW,2BAEzB2D,IAAA,EACC,UAAA;AAAA,IAAA3D,EAAM,QAAQJ,KAAsB,gBAAAsC,EAAC0B,GAAA,CAAA,CAAS;AAAA,IAC9CH,EAAyBzD,EAAM,GAAG;AAAA,EAAA,GACpC,2BAIO,UAAA,QAAA,CAAK;AACf;AAEA,MAAMiC,KAAY4B,EAAO;AAAA;AAAA,QAEjBC,EAAM,QAAQ;AAAA,iBACLA,EAAM,QAAQ;AAAA;AAAA;AAAA,GAKzBH,KAAiBE,EAAO;AAAA;AAAA,QAEtBC,EAAM,QAAQ;AAAA;AAAA,GAIhBxB,IAAgBuB,EAAO;AAAA;AAAA;AAAA,gBAGbC,EAAM,QAAQ;AAAA;AAAA;AAAA,GAKxBpB,KAA0BmB,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,cAKzBC,EAAM,UAAU;AAAA,WACnBA,EAAM,QAAQ;AAAA,UACfA,EAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,iBAKPA,EAAM,QAAQ;AAAA,GAGzBnB,KAAkBkB,EAAOE,CAAsB;AAAA,WAC1CD,EAAM,QAAQ;AAAA,UACfA,EAAM,QAAQ;AAAA,GAGlBjB,KAAYgB,EAAOG,CAAS;AAAA,WACvBF,EAAM,QAAQ;AAAA,UACfA,EAAM,QAAQ;AAAA,GAGlBhB,KAA4Be,EAAO;AAAA;AAAA;AAAA,GAKnCd,KAAwBc,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQ/BV,KAA2BU,EAAO;AAAA,cAC1BC,EAAM,UAAU;AAAA;AAAA;AAAA,cAGhBA,EAAM,QAAQ;AAAA;AAAA,GAItBb,KAAiBY,EAAO;AAAA,gBACdC,EAAM,QAAQ;AAAA;AAAA;AAAA,GAKxBR,KAA6BO,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;"}
|
package/Header.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { jsxs as a, Fragment as r, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { __ as e } from "./index2.js";
|
|
3
|
+
function n() {
|
|
4
|
+
return /* @__PURE__ */ a(r, { children: [
|
|
5
|
+
/* @__PURE__ */ t(
|
|
6
|
+
"svg",
|
|
7
|
+
{
|
|
8
|
+
viewBox: "0 0 479.438 361.46",
|
|
9
|
+
className: "w-10 mb-8",
|
|
10
|
+
style: { width: 40, marginBottom: 32 },
|
|
11
|
+
children: /* @__PURE__ */ t(
|
|
12
|
+
"path",
|
|
13
|
+
{
|
|
14
|
+
d: `
|
|
15
|
+
M365.18 0a114 114 0 00-85.9 38.93l-153.18 153-43.82-43.84a45.18 45.18
|
|
16
|
+
0 01-11.54-30.75 46.06 46.06 0 0146.34-46.08 44.81 44.81 0 0130.42
|
|
17
|
+
11.49c2.73 2.42 10.48 10.43 10.48 10.43l48.5-48.51-14-14C172.19 11.43
|
|
18
|
+
144.48.03 114.3.03 51.24.03 0 51.03 0 114.1a115.08 115.08 0 0028.09
|
|
19
|
+
75.46l98.35 98.77 205.53-205.5a44.78 44.78 0 0130.58-11.57 46.07 46.07 0
|
|
20
|
+
0146.06 46.43 45.07 45.07 0 01-11.52 30.5l-136.6 136.57a28.73 28.73 0
|
|
21
|
+
01-20.83 8.58 28.29 28.29 0 01-20.51-8.92l-10.27-10.16-48.28 48.28 9.88
|
|
22
|
+
9.72a97.06 97.06 0 0069.38 29.2h.07a96 96 0
|
|
23
|
+
0069-29.13l142.35-142.67A114.47 114.47 0 00365.18 0z`,
|
|
24
|
+
fill: "#0af"
|
|
25
|
+
}
|
|
26
|
+
)
|
|
27
|
+
}
|
|
28
|
+
),
|
|
29
|
+
/* @__PURE__ */ t(
|
|
30
|
+
"h1",
|
|
31
|
+
{
|
|
32
|
+
className: "text-xl mb-2",
|
|
33
|
+
style: { fontSize: 20, margin: 0, marginBottom: 8, fontWeight: 400 },
|
|
34
|
+
children: e("Connect your brand portal")
|
|
35
|
+
}
|
|
36
|
+
)
|
|
37
|
+
] });
|
|
38
|
+
}
|
|
39
|
+
export {
|
|
40
|
+
n as Header
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=Header.js.map
|
package/Header.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Header.js","sources":["../../src/login/components/Header.tsx"],"sourcesContent":["import React from 'react';\nimport { __ } from '../../localization';\n\nexport function Header() {\n\treturn (\n\t\t<>\n\t\t\t<svg\n\t\t\t\tviewBox=\"0 0 479.438 361.46\"\n\t\t\t\tclassName=\"w-10 mb-8\"\n\t\t\t\tstyle={{ width: 40, marginBottom: 32 }}\n\t\t\t>\n\t\t\t\t<path\n\t\t\t\t\td={`\n\t\t\t\t\t\tM365.18 0a114 114 0 00-85.9 38.93l-153.18 153-43.82-43.84a45.18 45.18\n\t\t\t\t\t\t0 01-11.54-30.75 46.06 46.06 0 0146.34-46.08 44.81 44.81 0 0130.42\n\t\t\t\t\t\t11.49c2.73 2.42 10.48 10.43 10.48 10.43l48.5-48.51-14-14C172.19 11.43\n\t\t\t\t\t\t144.48.03 114.3.03 51.24.03 0 51.03 0 114.1a115.08 115.08 0 0028.09\n\t\t\t\t\t\t75.46l98.35 98.77 205.53-205.5a44.78 44.78 0 0130.58-11.57 46.07 46.07 0\n\t\t\t\t\t\t0146.06 46.43 45.07 45.07 0 01-11.52 30.5l-136.6 136.57a28.73 28.73 0\n\t\t\t\t\t\t01-20.83 8.58 28.29 28.29 0 01-20.51-8.92l-10.27-10.16-48.28 48.28 9.88\n\t\t\t\t\t\t9.72a97.06 97.06 0 0069.38 29.2h.07a96 96 0\n\t\t\t\t\t\t0069-29.13l142.35-142.67A114.47 114.47 0 00365.18 0z`}\n\t\t\t\t\tfill=\"#0af\"\n\t\t\t\t/>\n\t\t\t</svg>\n\n\t\t\t<h1\n\t\t\t\tclassName=\"text-xl mb-2\"\n\t\t\t\tstyle={{ fontSize: 20, margin: 0, marginBottom: 8, fontWeight: 400 }}\n\t\t\t>\n\t\t\t\t{__('Connect your brand portal')}\n\t\t\t</h1>\n\t\t</>\n\t);\n}\n"],"names":["Header","jsxs","Fragment","jsx"],"mappings":";;AAGO,SAASA,IAAS;AACxB,SACC,gBAAAC,EAAAC,GAAA,EACC,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,SAAQ;AAAA,QACR,WAAU;AAAA,QACV,OAAO,EAAE,OAAO,IAAI,cAAc,GAAA;AAAA,QAElC,UAAA,gBAAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACA,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAUH,MAAK;AAAA,UAAA;AAAA,QAAA;AAAA,MACN;AAAA,IAAA;AAAA,IAGD,gBAAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,OAAO,EAAE,UAAU,IAAI,QAAQ,GAAG,cAAc,GAAG,YAAY,IAAA;AAAA,QAE9D,YAAG,2BAA2B;AAAA,MAAA;AAAA,IAAA;AAAA,EAChC,GACD;AAEF;"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { jsxs as x, jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import { useState as g, useRef as b, useEffect as f } from "react";
|
|
3
|
+
import { styled as d } from "styled-components";
|
|
4
|
+
import { token as h } from "@bynder/design-system";
|
|
5
|
+
import { useDimensions as p } from "./useDimensions.js";
|
|
6
|
+
import { RightArrow as A } from "./RightArrow.js";
|
|
7
|
+
import { LeftArrow as $ } from "./LeftArrow.js";
|
|
8
|
+
function W(r) {
|
|
9
|
+
const [e, c] = g(0), t = b(null), { dimensions: s, remeasure: m } = p(t.current), o = t.current !== null ? t.current.scrollWidth - t.current.clientWidth : 0, l = s !== void 0 ? Math.ceil(s.width) < s.scrollWidth : !1;
|
|
10
|
+
f(() => {
|
|
11
|
+
m(t.current);
|
|
12
|
+
}, [r.children, t.current]), f(() => {
|
|
13
|
+
l || c(0);
|
|
14
|
+
}, [l]);
|
|
15
|
+
const u = e === 0, S = o > 5 && e !== o;
|
|
16
|
+
function w() {
|
|
17
|
+
c((a) => {
|
|
18
|
+
const i = Math.max(a - 250, 0);
|
|
19
|
+
return i >= 100 ? i : 0;
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function v() {
|
|
23
|
+
c((a) => {
|
|
24
|
+
const i = Math.min(a + 250, o);
|
|
25
|
+
return i <= o - 100 ? i : o;
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return /* @__PURE__ */ x(z, { $isActiveFilter: r.isActiveFilter, children: [
|
|
29
|
+
/* @__PURE__ */ n(C, { ref: t, children: /* @__PURE__ */ n(D, { "data-testid": "horizontal-scrollable-el", $scroll: e, children: r.children }) }),
|
|
30
|
+
l && /* @__PURE__ */ n($, { isDisabled: u, onClick: w }),
|
|
31
|
+
l && /* @__PURE__ */ n(A, { isDisabled: !S, onClick: v }),
|
|
32
|
+
r.static
|
|
33
|
+
] });
|
|
34
|
+
}
|
|
35
|
+
const z = d.div`
|
|
36
|
+
display: inline-flex;
|
|
37
|
+
flex-grow: 1;
|
|
38
|
+
overflow: hidden;
|
|
39
|
+
height: ${h.spacing7};
|
|
40
|
+
margin-left: ${(r) => r.$isActiveFilter ? h.spacing3 : 0};
|
|
41
|
+
`, C = d.div`
|
|
42
|
+
overflow: hidden;
|
|
43
|
+
`, D = d.div`
|
|
44
|
+
display: inline-flex;
|
|
45
|
+
transform: translateX(-${(r) => r.$scroll}px);
|
|
46
|
+
transition: transform 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.15);
|
|
47
|
+
`;
|
|
48
|
+
export {
|
|
49
|
+
W as HorizontalScroll
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=HorizontalScroll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HorizontalScroll.js","sources":["../../src/common/components/HorizontalScroll.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\n\nimport { styled } from 'styled-components';\nimport { token } from '@bynder/design-system';\nimport { useDimensions } from '../hooks/useDimensions';\nimport { RightArrow } from './RightArrow';\nimport { LeftArrow } from './LeftArrow';\n\ninterface Props {\n\tstatic?: React.ReactNode;\n\tchildren: React.ReactNode;\n\tisActiveFilter?: boolean;\n}\n\nexport function HorizontalScroll(props: Props) {\n\tconst [scroll, setScroll] = useState(0);\n\tconst nodeRef = useRef<HTMLDivElement>(null);\n\n\tconst { dimensions, remeasure } = useDimensions(nodeRef.current);\n\n\tconst maxScroll =\n\t\tnodeRef.current !== null ? nodeRef.current.scrollWidth - nodeRef.current.clientWidth : 0;\n\n\tconst showScrollButtons =\n\t\tdimensions !== undefined ? Math.ceil(dimensions.width) < dimensions.scrollWidth : false;\n\n\tuseEffect(() => {\n\t\tremeasure(nodeRef.current);\n\t}, [props.children, nodeRef.current]); // eslint-disable-line react-hooks/exhaustive-deps\n\n\tuseEffect(() => {\n\t\tif (!showScrollButtons) {\n\t\t\tsetScroll(0);\n\t\t}\n\t}, [showScrollButtons]);\n\n\tconst isLeftArrowDisabled = scroll === 0;\n\tconst isRightArrowDisabled = maxScroll > 5 && scroll !== maxScroll;\n\n\tfunction handleLeftScroll() {\n\t\tsetScroll((prevScroll: number) => {\n\t\t\tconst newScroll = Math.max(prevScroll - 250, 0);\n\n\t\t\treturn newScroll >= 100 ? newScroll : 0;\n\t\t});\n\t}\n\n\tfunction handleRightScroll() {\n\t\tsetScroll((prevScroll: number) => {\n\t\t\tconst newScroll = Math.min(prevScroll + 250, maxScroll);\n\n\t\t\treturn newScroll <= maxScroll - 100 ? newScroll : maxScroll;\n\t\t});\n\t}\n\n\treturn (\n\t\t<HorizontalScrollContainer $isActiveFilter={props.isActiveFilter}>\n\t\t\t<HorizontalScrollContentParent ref={nodeRef}>\n\t\t\t\t<HorizontalScrollContent data-testid=\"horizontal-scrollable-el\" $scroll={scroll}>\n\t\t\t\t\t{props.children}\n\t\t\t\t</HorizontalScrollContent>\n\t\t\t</HorizontalScrollContentParent>\n\n\t\t\t{showScrollButtons && (\n\t\t\t\t<LeftArrow isDisabled={isLeftArrowDisabled} onClick={handleLeftScroll} />\n\t\t\t)}\n\t\t\t{showScrollButtons && (\n\t\t\t\t<RightArrow isDisabled={!isRightArrowDisabled} onClick={handleRightScroll} />\n\t\t\t)}\n\n\t\t\t{props.static}\n\t\t</HorizontalScrollContainer>\n\t);\n}\n\nconst HorizontalScrollContainer = styled.div<{ $isActiveFilter?: boolean }>`\n\tdisplay: inline-flex;\n\tflex-grow: 1;\n\toverflow: hidden;\n\theight: ${token.spacing7};\n\tmargin-left: ${(p) => (p.$isActiveFilter ? token.spacing3 : 0)};\n`;\n\nconst HorizontalScrollContentParent = styled.div`\n\toverflow: hidden;\n`;\n\nconst HorizontalScrollContent = styled.div<{ $scroll: number }>`\n\tdisplay: inline-flex;\n\ttransform: translateX(-${(p) => p.$scroll}px);\n\ttransition: transform 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.15);\n`;\n"],"names":["HorizontalScroll","props","scroll","setScroll","useState","nodeRef","useRef","dimensions","remeasure","useDimensions","maxScroll","showScrollButtons","useEffect","isLeftArrowDisabled","isRightArrowDisabled","handleLeftScroll","prevScroll","newScroll","handleRightScroll","jsxs","HorizontalScrollContainer","jsx","HorizontalScrollContentParent","HorizontalScrollContent","LeftArrow","RightArrow","styled","token","p"],"mappings":";;;;;;;AAcO,SAASA,EAAiBC,GAAc;AAC9C,QAAM,CAACC,GAAQC,CAAS,IAAIC,EAAS,CAAC,GAChCC,IAAUC,EAAuB,IAAI,GAErC,EAAE,YAAAC,GAAY,WAAAC,EAAA,IAAcC,EAAcJ,EAAQ,OAAO,GAEzDK,IACLL,EAAQ,YAAY,OAAOA,EAAQ,QAAQ,cAAcA,EAAQ,QAAQ,cAAc,GAElFM,IACLJ,MAAe,SAAY,KAAK,KAAKA,EAAW,KAAK,IAAIA,EAAW,cAAc;AAEnF,EAAAK,EAAU,MAAM;AACf,IAAAJ,EAAUH,EAAQ,OAAO;AAAA,EAC1B,GAAG,CAACJ,EAAM,UAAUI,EAAQ,OAAO,CAAC,GAEpCO,EAAU,MAAM;AACf,IAAKD,KACJR,EAAU,CAAC;AAAA,EAEb,GAAG,CAACQ,CAAiB,CAAC;AAEtB,QAAME,IAAsBX,MAAW,GACjCY,IAAuBJ,IAAY,KAAKR,MAAWQ;AAEzD,WAASK,IAAmB;AAC3B,IAAAZ,EAAU,CAACa,MAAuB;AACjC,YAAMC,IAAY,KAAK,IAAID,IAAa,KAAK,CAAC;AAE9C,aAAOC,KAAa,MAAMA,IAAY;AAAA,IACvC,CAAC;AAAA,EACF;AAEA,WAASC,IAAoB;AAC5B,IAAAf,EAAU,CAACa,MAAuB;AACjC,YAAMC,IAAY,KAAK,IAAID,IAAa,KAAKN,CAAS;AAEtD,aAAOO,KAAaP,IAAY,MAAMO,IAAYP;AAAA,IACnD,CAAC;AAAA,EACF;AAEA,SACC,gBAAAS,EAACC,GAAA,EAA0B,iBAAiBnB,EAAM,gBACjD,UAAA;AAAA,IAAA,gBAAAoB,EAACC,GAAA,EAA8B,KAAKjB,GACnC,UAAA,gBAAAgB,EAACE,GAAA,EAAwB,eAAY,4BAA2B,SAASrB,GACvE,UAAAD,EAAM,SAAA,CACR,GACD;AAAA,IAECU,KACA,gBAAAU,EAACG,GAAA,EAAU,YAAYX,GAAqB,SAASE,GAAkB;AAAA,IAEvEJ,KACA,gBAAAU,EAACI,GAAA,EAAW,YAAY,CAACX,GAAsB,SAASI,GAAmB;AAAA,IAG3EjB,EAAM;AAAA,EAAA,GACR;AAEF;AAEA,MAAMmB,IAA4BM,EAAO;AAAA;AAAA;AAAA;AAAA,WAI9BC,EAAM,QAAQ;AAAA,gBACT,CAACC,MAAOA,EAAE,kBAAkBD,EAAM,WAAW,CAAE;AAAA,GAGzDL,IAAgCI,EAAO;AAAA;AAAA,GAIvCH,IAA0BG,EAAO;AAAA;AAAA,0BAEb,CAACE,MAAMA,EAAE,OAAO;AAAA;AAAA;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsxs as r, Fragment as o, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect as l } from "react";
|
|
3
|
+
import { useInView as s } from "react-intersection-observer";
|
|
4
|
+
import { styled as a } from "styled-components";
|
|
5
|
+
import { Spinner as f } from "./Spinner.js";
|
|
6
|
+
function u(e) {
|
|
7
|
+
const [n, i] = s();
|
|
8
|
+
return l(() => {
|
|
9
|
+
i && !e.isLoading && e.hasNextPage && e.loadMore();
|
|
10
|
+
}, [i]), /* @__PURE__ */ r(o, { children: [
|
|
11
|
+
e.children,
|
|
12
|
+
e.hasNextPage && /* @__PURE__ */ t(d, { ref: n, "data-testid": "loading-element", children: /* @__PURE__ */ t(f, { isHidden: !i, isRelative: !0 }) })
|
|
13
|
+
] });
|
|
14
|
+
}
|
|
15
|
+
const d = a.div`
|
|
16
|
+
display: flex;
|
|
17
|
+
justify-content: center;
|
|
18
|
+
align-items: center;
|
|
19
|
+
position: relative;
|
|
20
|
+
height: 128px;
|
|
21
|
+
width: 100%;
|
|
22
|
+
`;
|
|
23
|
+
export {
|
|
24
|
+
u as InfiniteScroll
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=InfiniteScroll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InfiniteScroll.js","sources":["../../src/common/components/InfiniteScroll.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { useInView } from 'react-intersection-observer';\n\nimport { styled } from 'styled-components';\nimport { Spinner } from './Spinner';\n\ninterface Props {\n\tisLoading: boolean;\n\thasNextPage: boolean;\n\tloadMore: () => void;\n\tchildren: React.ReactNode;\n}\n\nexport function InfiniteScroll(props: Props) {\n\tconst [spinnerRef, isInView] = useInView();\n\n\tuseEffect(() => {\n\t\tif (isInView && !props.isLoading && props.hasNextPage) {\n\t\t\tprops.loadMore();\n\t\t}\n\t}, [isInView]); // eslint-disable-line react-hooks/exhaustive-deps\n\n\treturn (\n\t\t<>\n\t\t\t{props.children}\n\n\t\t\t{props.hasNextPage && (\n\t\t\t\t<InfiniteScrollContainer ref={spinnerRef} data-testid=\"loading-element\">\n\t\t\t\t\t<Spinner isHidden={!isInView} isRelative />\n\t\t\t\t</InfiniteScrollContainer>\n\t\t\t)}\n\t\t</>\n\t);\n}\n\nconst InfiniteScrollContainer = styled.div`\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tposition: relative;\n\theight: 128px;\n\twidth: 100%;\n`;\n"],"names":["InfiniteScroll","props","spinnerRef","isInView","useInView","useEffect","jsxs","Fragment","jsx","InfiniteScrollContainer","Spinner","styled"],"mappings":";;;;;AAaO,SAASA,EAAeC,GAAc;AAC5C,QAAM,CAACC,GAAYC,CAAQ,IAAIC,EAAA;AAE/B,SAAAC,EAAU,MAAM;AACf,IAAIF,KAAY,CAACF,EAAM,aAAaA,EAAM,eACzCA,EAAM,SAAA;AAAA,EAER,GAAG,CAACE,CAAQ,CAAC,GAGZ,gBAAAG,EAAAC,GAAA,EACE,UAAA;AAAA,IAAAN,EAAM;AAAA,IAENA,EAAM,eACN,gBAAAO,EAACC,GAAA,EAAwB,KAAKP,GAAY,eAAY,mBACrD,UAAA,gBAAAM,EAACE,KAAQ,UAAU,CAACP,GAAU,YAAU,IAAC,EAAA,CAC1C;AAAA,EAAA,GAEF;AAEF;AAEA,MAAMM,IAA0BE,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
|
package/LeftArrow.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import t from "styled-components";
|
|
3
|
+
import { IconArrowLeft as i } from "@bynder/icons";
|
|
4
|
+
import { Button as e } from "@bynder/design-system";
|
|
5
|
+
function p(r) {
|
|
6
|
+
return /* @__PURE__ */ o(a, { children: /* @__PURE__ */ o(
|
|
7
|
+
e,
|
|
8
|
+
{
|
|
9
|
+
icon: /* @__PURE__ */ o(i, {}),
|
|
10
|
+
"aria-label": "Previous",
|
|
11
|
+
title: "Previous",
|
|
12
|
+
variant: "clean",
|
|
13
|
+
isSmall: !0,
|
|
14
|
+
onClick: r.onClick,
|
|
15
|
+
"data-testid": "arrow-left",
|
|
16
|
+
isDisabled: r.isDisabled
|
|
17
|
+
}
|
|
18
|
+
) });
|
|
19
|
+
}
|
|
20
|
+
const a = t.div`
|
|
21
|
+
z-index: 20;
|
|
22
|
+
padding: 0;
|
|
23
|
+
box-shadow: 4px 0 13px 13px #fff;
|
|
24
|
+
&:hover {
|
|
25
|
+
box-shadow: 4px 0 13px 13px #fff;
|
|
26
|
+
}
|
|
27
|
+
`;
|
|
28
|
+
export {
|
|
29
|
+
p as LeftArrow
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=LeftArrow.js.map
|
package/LeftArrow.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LeftArrow.js","sources":["../../src/common/components/LeftArrow.tsx"],"sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\nimport { IconArrowLeft } from '@bynder/icons';\nimport { Button } from '@bynder/design-system';\n\nexport function LeftArrow(props: Readonly<{ isDisabled: boolean; onClick: () => void }>) {\n\treturn (\n\t\t<StyledButtonWrapper>\n\t\t\t<Button\n\t\t\t\ticon={<IconArrowLeft />}\n\t\t\t\taria-label=\"Previous\"\n\t\t\t\ttitle=\"Previous\"\n\t\t\t\tvariant=\"clean\"\n\t\t\t\tisSmall\n\t\t\t\tonClick={props.onClick}\n\t\t\t\tdata-testid=\"arrow-left\"\n\t\t\t\tisDisabled={props.isDisabled}\n\t\t\t/>\n\t\t</StyledButtonWrapper>\n\t);\n}\n\nconst StyledButtonWrapper = styled.div`\n\tz-index: 20;\n\tpadding: 0;\n\tbox-shadow: 4px 0 13px 13px #fff;\n\t&:hover {\n\t\tbox-shadow: 4px 0 13px 13px #fff;\n\t}\n`;\n"],"names":["LeftArrow","props","StyledButtonWrapper","jsx","Button","IconArrowLeft","styled"],"mappings":";;;;AAKO,SAASA,EAAUC,GAA+D;AACxF,2BACEC,GAAA,EACA,UAAA,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACA,wBAAOC,GAAA,EAAc;AAAA,MACrB,cAAW;AAAA,MACX,OAAM;AAAA,MACN,SAAQ;AAAA,MACR,SAAO;AAAA,MACP,SAASJ,EAAM;AAAA,MACf,eAAY;AAAA,MACZ,YAAYA,EAAM;AAAA,IAAA;AAAA,EAAA,GAEpB;AAEF;AAEA,MAAMC,IAAsBI,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
|