box-ui-elements 23.4.0-beta.36 → 23.4.0-beta.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/explorer.css +1 -1
- package/dist/explorer.js +1 -1
- package/dist/preview.css +1 -1
- package/dist/preview.js +1 -1
- package/dist/sidebar.css +1 -1
- package/dist/sidebar.js +1 -1
- package/es/common/types/metadata.js.flow +5 -4
- package/es/common/types/metadata.js.map +1 -1
- package/es/elements/content-explorer/stories/tests/MetadataView-visual.stories.js +43 -22
- package/es/elements/content-explorer/stories/tests/MetadataView-visual.stories.js.map +1 -1
- package/es/elements/content-preview/PreviewNavigation.js +0 -2
- package/es/elements/content-preview/PreviewNavigation.js.flow +0 -2
- package/es/elements/content-preview/PreviewNavigation.js.map +1 -1
- package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js +29 -7
- package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.flow +44 -5
- package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.map +1 -1
- package/es/elements/content-sidebar/withSidebarAnnotations.js +141 -35
- package/es/elements/content-sidebar/withSidebarAnnotations.js.flow +199 -37
- package/es/elements/content-sidebar/withSidebarAnnotations.js.map +1 -1
- package/es/features/metadata-instance-editor/CascadePolicy.js +6 -3
- package/es/features/metadata-instance-editor/CascadePolicy.js.flow +8 -2
- package/es/features/metadata-instance-editor/CascadePolicy.js.map +1 -1
- package/es/features/metadata-instance-editor/Instance.js +1 -0
- package/es/features/metadata-instance-editor/Instance.js.flow +1 -0
- package/es/features/metadata-instance-editor/Instance.js.map +1 -1
- package/es/src/elements/content-explorer/stories/tests/MetadataView-visual.stories.d.ts +1 -1
- package/i18n/bn-IN.js +1 -1
- package/i18n/bn-IN.properties +4 -0
- package/i18n/da-DK.js +1 -1
- package/i18n/da-DK.properties +4 -0
- package/i18n/de-DE.js +1 -1
- package/i18n/de-DE.properties +4 -0
- package/i18n/en-AU.js +1 -1
- package/i18n/en-AU.properties +4 -0
- package/i18n/en-CA.js +1 -1
- package/i18n/en-CA.properties +4 -0
- package/i18n/en-GB.js +1 -1
- package/i18n/en-GB.properties +4 -0
- package/i18n/es-419.js +1 -1
- package/i18n/es-419.properties +4 -0
- package/i18n/es-ES.js +1 -1
- package/i18n/es-ES.properties +4 -0
- package/i18n/fi-FI.js +1 -1
- package/i18n/fi-FI.properties +4 -0
- package/i18n/fr-CA.js +1 -1
- package/i18n/fr-CA.properties +4 -0
- package/i18n/fr-FR.js +1 -1
- package/i18n/fr-FR.properties +4 -0
- package/i18n/hi-IN.js +1 -1
- package/i18n/hi-IN.properties +4 -0
- package/i18n/it-IT.js +1 -1
- package/i18n/it-IT.properties +4 -0
- package/i18n/ja-JP.js +1 -1
- package/i18n/ja-JP.properties +4 -0
- package/i18n/ko-KR.js +1 -1
- package/i18n/ko-KR.properties +4 -0
- package/i18n/nb-NO.js +1 -1
- package/i18n/nb-NO.properties +4 -0
- package/i18n/nl-NL.js +1 -1
- package/i18n/nl-NL.properties +4 -0
- package/i18n/pl-PL.js +1 -1
- package/i18n/pl-PL.properties +4 -0
- package/i18n/pt-BR.js +1 -1
- package/i18n/pt-BR.properties +4 -0
- package/i18n/ru-RU.js +1 -1
- package/i18n/ru-RU.properties +4 -0
- package/i18n/sv-SE.js +1 -1
- package/i18n/sv-SE.properties +4 -0
- package/i18n/tr-TR.js +1 -1
- package/i18n/tr-TR.properties +4 -0
- package/i18n/zh-CN.js +1 -1
- package/i18n/zh-CN.properties +4 -0
- package/i18n/zh-TW.js +1 -1
- package/i18n/zh-TW.properties +4 -0
- package/package.json +3 -3
- package/src/common/types/metadata.js +5 -4
- package/src/elements/content-explorer/stories/tests/MetadataView-visual.stories.tsx +47 -31
- package/src/elements/content-preview/PreviewNavigation.js +0 -2
- package/src/elements/content-preview/__tests__/PreviewNavigation.test.js +12 -12
- package/src/elements/content-sidebar/__tests__/withSidebarAnnotations.rtl.test.js +1152 -0
- package/src/elements/content-sidebar/versions/VersionsSidebarContainer.js +44 -5
- package/src/elements/content-sidebar/versions/__tests__/VersionsSidebarContainer.test.js +200 -43
- package/src/elements/content-sidebar/versions/__tests__/__snapshots__/VersionsSidebarContainer.test.js.snap +2 -2
- package/src/elements/content-sidebar/withSidebarAnnotations.js +199 -37
- package/src/features/metadata-instance-editor/CascadePolicy.js +8 -2
- package/src/features/metadata-instance-editor/Instance.js +1 -0
- package/src/features/metadata-instance-editor/__tests__/CascadePolicy.test.js +45 -0
- package/src/elements/content-sidebar/__tests__/withSidebarAnnotations.test.js +0 -626
|
@@ -87,14 +87,15 @@ type MetadataType = {
|
|
|
87
87
|
global?: MetadataSkillsTemplate,
|
|
88
88
|
};
|
|
89
89
|
|
|
90
|
+
type MetadataCascadePolicyConfiguration = {
|
|
91
|
+
agent: string,
|
|
92
|
+
};
|
|
93
|
+
|
|
90
94
|
type MetadataCascadePolicy = {
|
|
91
95
|
canEdit?: boolean,
|
|
92
96
|
id?: string,
|
|
93
97
|
cascadePolicyType?: string,
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
type MetadataCascadePolicyConfiguration = {
|
|
97
|
-
agent: string,
|
|
98
|
+
cascadePolicyConfiguration?: MetadataCascadePolicyConfiguration,
|
|
98
99
|
};
|
|
99
100
|
|
|
100
101
|
type MetadataCascadingPolicyData = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","names":["FIELD_TYPE_DATE","FIELD_TYPE_ENUM","FIELD_TYPE_FLOAT","FIELD_TYPE_MULTISELECT","FIELD_TYPE_STRING","FIELD_TYPE_TAXONOMY"],"sources":["../../../src/common/types/metadata.js"],"sourcesContent":["// @flow strict\nimport {\n FIELD_TYPE_DATE,\n FIELD_TYPE_ENUM,\n FIELD_TYPE_FLOAT,\n FIELD_TYPE_MULTISELECT,\n FIELD_TYPE_STRING,\n FIELD_TYPE_TAXONOMY,\n} from '../../features/metadata-instance-fields/constants';\nimport type { SkillCards } from './skills';\n\ntype MetadataFieldType =\n | typeof FIELD_TYPE_DATE\n | typeof FIELD_TYPE_ENUM\n | typeof FIELD_TYPE_FLOAT\n | typeof FIELD_TYPE_MULTISELECT\n | typeof FIELD_TYPE_STRING\n | typeof FIELD_TYPE_TAXONOMY;\n\ntype MetadataTemplateFieldOption = {\n id?: string,\n key: string,\n};\n\nexport type TaxonomyLevel = {\n description: string,\n displayName: string,\n level: number,\n};\n\ntype MetadataTemplateField = {\n description?: string,\n displayName: string,\n hidden?: boolean,\n id: string,\n isHidden?: boolean,\n key: string, // V2\n options?: Array<MetadataTemplateFieldOption>, // V3\n type: MetadataFieldType,\n levels?: Array<TaxonomyLevel>,\n namespace?: string,\n taxonomyKey?: string,\n taxonomy_key?: string,\n};\n\ntype MetadataTemplate = {\n displayName?: string,\n fields?: Array<MetadataTemplateField>,\n hidden?: boolean,\n id: string,\n isHidden?: boolean,\n scope: string, // V2\n templateKey: string, // V3\n};\n\ntype MetadataTemplateSchemaResponse = {\n data?: MetadataTemplate,\n};\n\ntype MetadataSkillsTemplate = {\n archivedItemTemplate?: {\n archiveDate: string,\n },\n boxSkillsCards?: SkillCards,\n};\n\n// $FlowFixMe flow strict doesn't like use of \"any\"\ntype MetadataFieldValue = string | number | Array<any>;\n\ntype MetadataFields = { [string]: MetadataFieldValue };\n\ntype MetadataQueryInstanceTypeField = {\n displayName: string,\n key: string,\n options?: MetadataTemplateFieldOption,\n type: string,\n value: ?MetadataFieldValue,\n};\n\ntype MetadataQueryInstanceTemplate = {\n fields: Array<MetadataQueryInstanceTypeField>,\n id: string,\n};\n\ntype MetadataType = {\n enterprise?: MetadataQueryInstanceTemplate,\n global?: MetadataSkillsTemplate,\n};\n\ntype MetadataCascadePolicy = {\n canEdit?: boolean,\n id?: string,\n cascadePolicyType?: string,\n
|
|
1
|
+
{"version":3,"file":"metadata.js","names":["FIELD_TYPE_DATE","FIELD_TYPE_ENUM","FIELD_TYPE_FLOAT","FIELD_TYPE_MULTISELECT","FIELD_TYPE_STRING","FIELD_TYPE_TAXONOMY"],"sources":["../../../src/common/types/metadata.js"],"sourcesContent":["// @flow strict\nimport {\n FIELD_TYPE_DATE,\n FIELD_TYPE_ENUM,\n FIELD_TYPE_FLOAT,\n FIELD_TYPE_MULTISELECT,\n FIELD_TYPE_STRING,\n FIELD_TYPE_TAXONOMY,\n} from '../../features/metadata-instance-fields/constants';\nimport type { SkillCards } from './skills';\n\ntype MetadataFieldType =\n | typeof FIELD_TYPE_DATE\n | typeof FIELD_TYPE_ENUM\n | typeof FIELD_TYPE_FLOAT\n | typeof FIELD_TYPE_MULTISELECT\n | typeof FIELD_TYPE_STRING\n | typeof FIELD_TYPE_TAXONOMY;\n\ntype MetadataTemplateFieldOption = {\n id?: string,\n key: string,\n};\n\nexport type TaxonomyLevel = {\n description: string,\n displayName: string,\n level: number,\n};\n\ntype MetadataTemplateField = {\n description?: string,\n displayName: string,\n hidden?: boolean,\n id: string,\n isHidden?: boolean,\n key: string, // V2\n options?: Array<MetadataTemplateFieldOption>, // V3\n type: MetadataFieldType,\n levels?: Array<TaxonomyLevel>,\n namespace?: string,\n taxonomyKey?: string,\n taxonomy_key?: string,\n};\n\ntype MetadataTemplate = {\n displayName?: string,\n fields?: Array<MetadataTemplateField>,\n hidden?: boolean,\n id: string,\n isHidden?: boolean,\n scope: string, // V2\n templateKey: string, // V3\n};\n\ntype MetadataTemplateSchemaResponse = {\n data?: MetadataTemplate,\n};\n\ntype MetadataSkillsTemplate = {\n archivedItemTemplate?: {\n archiveDate: string,\n },\n boxSkillsCards?: SkillCards,\n};\n\n// $FlowFixMe flow strict doesn't like use of \"any\"\ntype MetadataFieldValue = string | number | Array<any>;\n\ntype MetadataFields = { [string]: MetadataFieldValue };\n\ntype MetadataQueryInstanceTypeField = {\n displayName: string,\n key: string,\n options?: MetadataTemplateFieldOption,\n type: string,\n value: ?MetadataFieldValue,\n};\n\ntype MetadataQueryInstanceTemplate = {\n fields: Array<MetadataQueryInstanceTypeField>,\n id: string,\n};\n\ntype MetadataType = {\n enterprise?: MetadataQueryInstanceTemplate,\n global?: MetadataSkillsTemplate,\n};\n\ntype MetadataCascadePolicyConfiguration = {\n agent: string,\n};\n\ntype MetadataCascadePolicy = {\n canEdit?: boolean,\n id?: string,\n cascadePolicyType?: string,\n cascadePolicyConfiguration?: MetadataCascadePolicyConfiguration,\n};\n\ntype MetadataCascadingPolicyData = {\n id?: string,\n isEnabled: boolean,\n overwrite: boolean,\n cascadePolicyConfiguration: MetadataCascadePolicyConfiguration | null,\n};\n\ntype MetadataInstance = {\n canEdit: boolean,\n cascadePolicy?: MetadataCascadePolicy,\n data: MetadataFields,\n id: string,\n};\n\ntype MetadataInstanceV2 = {\n $canEdit: boolean,\n $id: string,\n $parent: string,\n $scope: string,\n $template: string,\n $type: string,\n $typeVersion: number,\n $version: number,\n};\n\ntype MetadataEditor = {\n hasError?: boolean,\n instance: MetadataInstance,\n isDirty?: boolean,\n template: MetadataTemplate,\n};\n\ntype MetadataSuggestion = {\n $scope: string,\n $templateKey: string,\n suggestions: { [key: string]: string | number | string[] },\n};\n\ntype MetadataOptionEntryAncestor = {\n id: string,\n display_name: string,\n level: string,\n};\n\ntype MetadataOptionEntry = {\n id: string,\n display_name: string,\n level: number,\n ancestors: MetadataOptionEntryAncestor[],\n deprecated: boolean,\n selectable: boolean,\n};\n\ntype MetadataOptions = {\n entries: MetadataOptionEntry[],\n next_marker: string | null,\n result_count: number,\n};\n\ntype MetadataTemplateInstanceField = {\n description?: string,\n displayName?: string,\n hidden?: boolean,\n id?: string,\n key: string, // V2\n levels?: Array<TaxonomyLevel>,\n options?: Array<MetadataTemplateFieldOption>, // V3\n type: MetadataFieldType,\n value: MetadataFieldValue,\n};\n\ntype MetadataTemplateInstance = {\n canEdit: boolean,\n displayName?: string,\n hidden?: boolean,\n id: string,\n fields: MetadataTemplateInstanceField[],\n scope: string,\n templateKey: string,\n type: string,\n};\n\nexport type {\n MetadataTemplateInstanceField,\n MetadataTemplateInstance,\n MetadataFieldType,\n MetadataTemplateFieldOption,\n MetadataTemplateField,\n MetadataTemplate,\n MetadataTemplateSchemaResponse,\n MetadataFieldValue,\n MetadataFields,\n MetadataQueryInstanceTypeField,\n MetadataType,\n MetadataCascadePolicy,\n MetadataCascadePolicyConfiguration,\n MetadataCascadingPolicyData,\n MetadataInstanceV2,\n MetadataEditor,\n MetadataSuggestion,\n MetadataOptions,\n};\n"],"mappings":"AACA,SACIA,eAAe,EACfC,eAAe,EACfC,gBAAgB,EAChBC,sBAAsB,EACtBC,iBAAiB,EACjBC,mBAAmB,QAChB,mDAAmD;;AA0D1D","ignoreList":[]}
|
|
@@ -3,45 +3,66 @@ import { http, HttpResponse } from 'msw';
|
|
|
3
3
|
import ContentExplorer from '../../ContentExplorer';
|
|
4
4
|
import { DEFAULT_HOSTNAME_API } from '../../../../constants';
|
|
5
5
|
import { mockMetadata, mockSchema } from '../../../common/__mocks__/mockMetadata';
|
|
6
|
-
const EID = '0';
|
|
7
|
-
const templateName = 'templateName';
|
|
8
|
-
const metadataSource = `enterprise_${EID}.${templateName}`;
|
|
9
|
-
const metadataSourceFieldName = `metadata.${metadataSource}`;
|
|
10
|
-
const metadataQuery = {
|
|
11
|
-
from: metadataSource,
|
|
12
|
-
// // Filter items in the folder by existing metadata key
|
|
13
|
-
// query: 'key = :arg1',
|
|
14
|
-
//
|
|
15
|
-
// // Display items with value
|
|
16
|
-
// query_params: { arg1: 'value' },
|
|
17
6
|
|
|
18
|
-
|
|
19
|
-
|
|
7
|
+
// The intent behind relying on mockMetadata is to allow a developer to paste in their own metadata template schema for use with live API calls.
|
|
8
|
+
const {
|
|
9
|
+
scope: templateScope,
|
|
10
|
+
templateKey
|
|
11
|
+
} = mockSchema;
|
|
12
|
+
const metadataScopeAndKey = `${templateScope}.${templateKey}`;
|
|
13
|
+
const metadataFieldNamePrefix = `metadata.${metadataScopeAndKey}`;
|
|
14
|
+
|
|
15
|
+
// This is the body of the metadata query API call.
|
|
16
|
+
// https://developer.box.com/guides/metadata/queries/syntax/
|
|
17
|
+
const metadataQuery = {
|
|
18
|
+
from: metadataScopeAndKey,
|
|
19
|
+
ancestor_folder_id: '0',
|
|
20
|
+
sort_by: [{
|
|
21
|
+
field_key: `${metadataFieldNamePrefix}.${mockSchema.fields[0].key}`,
|
|
22
|
+
// Default to sorting by the first field in the schema
|
|
23
|
+
direction: 'asc'
|
|
24
|
+
}],
|
|
25
|
+
fields: [
|
|
26
|
+
// Default to returning all fields in the metadata template schema, and name as a standalone (non-metadata) field
|
|
27
|
+
...mockSchema.fields.map(field => `${metadataFieldNamePrefix}.${field.key}`), 'name']
|
|
20
28
|
};
|
|
29
|
+
|
|
30
|
+
// Used for metadata view v1
|
|
21
31
|
const fieldsToShow = [{
|
|
22
|
-
key: `${
|
|
32
|
+
key: `${metadataFieldNamePrefix}.name`,
|
|
23
33
|
canEdit: false,
|
|
24
34
|
displayName: 'Alias'
|
|
25
35
|
}, {
|
|
26
|
-
key: `${
|
|
36
|
+
key: `${metadataFieldNamePrefix}.industry`,
|
|
27
37
|
canEdit: true
|
|
28
38
|
}, {
|
|
29
|
-
key: `${
|
|
39
|
+
key: `${metadataFieldNamePrefix}.last_contacted_at`,
|
|
30
40
|
canEdit: true
|
|
31
41
|
}, {
|
|
32
|
-
key: `${
|
|
42
|
+
key: `${metadataFieldNamePrefix}.role`,
|
|
33
43
|
canEdit: true
|
|
34
44
|
}];
|
|
35
|
-
|
|
45
|
+
|
|
46
|
+
// Used for metadata view v2
|
|
47
|
+
const columns = [{
|
|
48
|
+
// Always include the name column
|
|
49
|
+
textValue: 'Name',
|
|
50
|
+
id: 'name',
|
|
51
|
+
type: 'string',
|
|
52
|
+
allowSorting: true,
|
|
53
|
+
minWidth: 150,
|
|
54
|
+
maxWidth: 150
|
|
55
|
+
}, ...mockSchema.fields.map(field => ({
|
|
36
56
|
textValue: field.displayName,
|
|
37
|
-
id: `${
|
|
57
|
+
id: `${metadataFieldNamePrefix}.${field.key}`,
|
|
38
58
|
type: field.type,
|
|
39
59
|
allowSorting: true,
|
|
40
60
|
minWidth: 150,
|
|
41
61
|
maxWidth: 150
|
|
42
|
-
}));
|
|
43
|
-
const defaultView = 'metadata'; // Required prop to paint the metadata view. If not provided, you'll get regular folder view.
|
|
62
|
+
}))];
|
|
44
63
|
|
|
64
|
+
// Switches ContentExplorer to use Metadata View over standard, folder-based view.
|
|
65
|
+
const defaultView = 'metadata';
|
|
45
66
|
export const metadataView = {
|
|
46
67
|
args: {
|
|
47
68
|
metadataQuery,
|
|
@@ -49,7 +70,7 @@ export const metadataView = {
|
|
|
49
70
|
defaultView
|
|
50
71
|
}
|
|
51
72
|
};
|
|
52
|
-
export const
|
|
73
|
+
export const metadataViewV2 = {
|
|
53
74
|
args: {
|
|
54
75
|
metadataViewProps: {
|
|
55
76
|
columns
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetadataView-visual.stories.js","names":["React","http","HttpResponse","ContentExplorer","DEFAULT_HOSTNAME_API","mockMetadata","mockSchema","
|
|
1
|
+
{"version":3,"file":"MetadataView-visual.stories.js","names":["React","http","HttpResponse","ContentExplorer","DEFAULT_HOSTNAME_API","mockMetadata","mockSchema","scope","templateScope","templateKey","metadataScopeAndKey","metadataFieldNamePrefix","metadataQuery","from","ancestor_folder_id","sort_by","field_key","fields","key","direction","map","field","fieldsToShow","canEdit","displayName","columns","textValue","id","type","allowSorting","minWidth","maxWidth","defaultView","metadataView","args","metadataViewV2","metadataViewProps","features","contentExplorer","render","createElement","style","padding","meta","title","component","global","FEATURE_FLAGS","rootFolderId","FOLDER_ID","token","TOKEN","parameters","msw","handlers","post","json","get"],"sources":["../../../../../src/elements/content-explorer/stories/tests/MetadataView-visual.stories.tsx"],"sourcesContent":["import React from 'react';\nimport { http, HttpResponse } from 'msw';\nimport type { Meta, StoryObj } from '@storybook/react';\nimport ContentExplorer from '../../ContentExplorer';\nimport { DEFAULT_HOSTNAME_API } from '../../../../constants';\nimport { mockMetadata, mockSchema } from '../../../common/__mocks__/mockMetadata';\n\n// The intent behind relying on mockMetadata is to allow a developer to paste in their own metadata template schema for use with live API calls.\nconst { scope: templateScope, templateKey } = mockSchema;\n\nconst metadataScopeAndKey = `${templateScope}.${templateKey}`;\nconst metadataFieldNamePrefix = `metadata.${metadataScopeAndKey}`;\n\n// This is the body of the metadata query API call.\n// https://developer.box.com/guides/metadata/queries/syntax/\nconst metadataQuery = {\n from: metadataScopeAndKey,\n ancestor_folder_id: '0',\n sort_by: [\n {\n field_key: `${metadataFieldNamePrefix}.${mockSchema.fields[0].key}`, // Default to sorting by the first field in the schema\n direction: 'asc',\n },\n ],\n fields: [\n // Default to returning all fields in the metadata template schema, and name as a standalone (non-metadata) field\n ...mockSchema.fields.map(field => `${metadataFieldNamePrefix}.${field.key}`),\n 'name',\n ],\n};\n\n// Used for metadata view v1\nconst fieldsToShow = [\n { key: `${metadataFieldNamePrefix}.name`, canEdit: false, displayName: 'Alias' },\n { key: `${metadataFieldNamePrefix}.industry`, canEdit: true },\n { key: `${metadataFieldNamePrefix}.last_contacted_at`, canEdit: true },\n { key: `${metadataFieldNamePrefix}.role`, canEdit: true },\n];\n\n// Used for metadata view v2\nconst columns = [\n {\n // Always include the name column\n textValue: 'Name',\n id: 'name',\n type: 'string',\n allowSorting: true,\n minWidth: 150,\n maxWidth: 150,\n },\n ...mockSchema.fields.map(field => ({\n textValue: field.displayName,\n id: `${metadataFieldNamePrefix}.${field.key}`,\n type: field.type,\n allowSorting: true,\n minWidth: 150,\n maxWidth: 150,\n })),\n];\n\n// Switches ContentExplorer to use Metadata View over standard, folder-based view.\nconst defaultView = 'metadata';\n\ntype Story = StoryObj<typeof ContentExplorer>;\n\nexport const metadataView: Story = {\n args: {\n metadataQuery,\n fieldsToShow,\n defaultView,\n },\n};\n\nexport const metadataViewV2: Story = {\n args: {\n metadataViewProps: {\n columns,\n },\n metadataQuery,\n fieldsToShow,\n defaultView,\n features: {\n contentExplorer: {\n metadataViewV2: true,\n },\n },\n },\n render: args => {\n return (\n <div style={{ padding: '50px' }}>\n <ContentExplorer {...args} />\n </div>\n );\n },\n};\n\nconst meta: Meta<typeof ContentExplorer> = {\n title: 'Elements/ContentExplorer/tests/MetadataView/visual',\n component: ContentExplorer,\n args: {\n features: global.FEATURE_FLAGS,\n rootFolderId: global.FOLDER_ID,\n token: global.TOKEN,\n },\n parameters: {\n msw: {\n handlers: [\n http.post(`${DEFAULT_HOSTNAME_API}/2.0/metadata_queries/execute_read`, () => {\n return HttpResponse.json(mockMetadata);\n }),\n http.get(`${DEFAULT_HOSTNAME_API}/2.0/metadata_templates/enterprise/templateName/schema`, () => {\n return HttpResponse.json(mockSchema);\n }),\n ],\n },\n },\n};\n\nexport default meta;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -93,7 +93,6 @@ const PreviewNavigationWithoutRouter = ({
|
|
|
93
93
|
};
|
|
94
94
|
return /*#__PURE__*/React.createElement(React.Fragment, null, hasLeftNavigation && /*#__PURE__*/React.createElement(PlainButton, {
|
|
95
95
|
className: "bcpr-navigate-left",
|
|
96
|
-
"data-testid": "preview-navigation-left",
|
|
97
96
|
onClick: () => {
|
|
98
97
|
handleInternalNavigation();
|
|
99
98
|
onNavigateLeft();
|
|
@@ -102,7 +101,6 @@ const PreviewNavigationWithoutRouter = ({
|
|
|
102
101
|
type: "button"
|
|
103
102
|
}, /*#__PURE__*/React.createElement(IconNavigateLeft, null)), hasRightNavigation && /*#__PURE__*/React.createElement(PlainButton, {
|
|
104
103
|
className: "bcpr-navigate-right",
|
|
105
|
-
"data-testid": "preview-navigation-right",
|
|
106
104
|
onClick: () => {
|
|
107
105
|
handleInternalNavigation();
|
|
108
106
|
onNavigateRight();
|
|
@@ -123,7 +123,6 @@ const PreviewNavigationWithoutRouter = ({
|
|
|
123
123
|
{hasLeftNavigation && (
|
|
124
124
|
<PlainButton
|
|
125
125
|
className="bcpr-navigate-left"
|
|
126
|
-
data-testid="preview-navigation-left"
|
|
127
126
|
onClick={() => {
|
|
128
127
|
handleInternalNavigation();
|
|
129
128
|
onNavigateLeft();
|
|
@@ -137,7 +136,6 @@ const PreviewNavigationWithoutRouter = ({
|
|
|
137
136
|
{hasRightNavigation && (
|
|
138
137
|
<PlainButton
|
|
139
138
|
className="bcpr-navigate-right"
|
|
140
|
-
data-testid="preview-navigation-right"
|
|
141
139
|
onClick={() => {
|
|
142
140
|
handleInternalNavigation();
|
|
143
141
|
onNavigateRight();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreviewNavigation.js","names":["React","injectIntl","Route","IconNavigateLeft","IconNavigateRight","PlainButton","messages","SIDEBAR_VIEW_METADATA","PreviewNavigationWithRouter","collection","currentIndex","intl","onNavigateLeft","onNavigateRight","hasLeftNavigation","length","hasRightNavigation","goToActiveSidebarTab","routeParams","history","deeplink","activeTab","push","createElement","path","match","Fragment","className","onClick","params","title","formatMessage","previousFile","type","nextFile","PreviewNavigationWithoutRouter","internalSidebarNavigation","internalSidebarNavigationHandler","handleInternalNavigation","sidebar","rest","_objectWithoutProperties","_excluded","hasDeeplink","Object","keys","PreviewNavigation","props","routerDisabled"],"sources":["../../../src/elements/content-preview/PreviewNavigation.js"],"sourcesContent":["/**\n * @flow\n * @file Preview Navigation\n * @author Box\n */\n\nimport * as React from 'react';\nimport { injectIntl } from 'react-intl';\nimport type { IntlShape } from 'react-intl';\nimport { Route } from 'react-router-dom';\nimport IconNavigateLeft from '../../icons/general/IconNavigateLeft';\nimport IconNavigateRight from '../../icons/general/IconNavigateRight';\nimport PlainButton from '../../components/plain-button/PlainButton';\nimport messages from '../common/messages';\nimport type { BoxItem } from '../../common/types/core';\nimport { SIDEBAR_VIEW_METADATA } from '../../constants';\nimport type { InternalSidebarNavigation, InternalSidebarNavigationHandler } from '../common/types/SidebarNavigation';\n\ntype Props = {\n collection: Array<string | BoxItem>,\n currentIndex: number,\n intl: IntlShape,\n internalSidebarNavigation?: InternalSidebarNavigation,\n internalSidebarNavigationHandler?: InternalSidebarNavigationHandler,\n onNavigateLeft: Function,\n onNavigateRight: Function,\n routerDisabled?: boolean,\n};\n\nconst PreviewNavigationWithRouter = ({\n collection = [],\n currentIndex,\n intl,\n onNavigateLeft,\n onNavigateRight,\n}: Props) => {\n const hasLeftNavigation = collection.length > 1 && currentIndex > 0 && currentIndex < collection.length;\n const hasRightNavigation = collection.length > 1 && currentIndex > -1 && currentIndex < collection.length - 1;\n\n if (!hasLeftNavigation && !hasRightNavigation) {\n return null;\n }\n\n const goToActiveSidebarTab = (routeParams, history) => {\n if (routeParams.deeplink) {\n if (routeParams.activeTab === SIDEBAR_VIEW_METADATA) {\n history.push(`/${routeParams.activeTab}/${routeParams.deeplink}/${routeParams[0]}`);\n } else {\n history.push(`/${routeParams.activeTab}`);\n }\n }\n };\n\n return (\n <Route path={['/:activeTab/:deeplink/*', '/']}>\n {({ match, history }) => (\n <>\n {hasLeftNavigation && (\n <PlainButton\n className=\"bcpr-navigate-left\"\n data-testid=\"preview-navigation-left\"\n onClick={() => {\n goToActiveSidebarTab(match.params, history);\n onNavigateLeft();\n }}\n title={intl.formatMessage(messages.previousFile)}\n type=\"button\"\n >\n <IconNavigateLeft />\n </PlainButton>\n )}\n {hasRightNavigation && (\n <PlainButton\n className=\"bcpr-navigate-right\"\n data-testid=\"preview-navigation-right\"\n onClick={() => {\n goToActiveSidebarTab(match.params, history);\n onNavigateRight();\n }}\n title={intl.formatMessage(messages.nextFile)}\n type=\"button\"\n >\n <IconNavigateRight />\n </PlainButton>\n )}\n </>\n )}\n </Route>\n );\n};\n\nconst PreviewNavigationWithoutRouter = ({\n collection = [],\n currentIndex,\n intl,\n internalSidebarNavigation,\n internalSidebarNavigationHandler,\n onNavigateLeft,\n onNavigateRight,\n}: Props) => {\n const hasLeftNavigation = collection.length > 1 && currentIndex > 0 && currentIndex < collection.length;\n const hasRightNavigation = collection.length > 1 && currentIndex > -1 && currentIndex < collection.length - 1;\n\n if (!hasLeftNavigation && !hasRightNavigation) {\n return null;\n }\n\n const handleInternalNavigation = () => {\n if (internalSidebarNavigationHandler && internalSidebarNavigation && internalSidebarNavigation.sidebar) {\n const { sidebar, ...rest } = internalSidebarNavigation;\n const hasDeeplink = Object.keys(rest).length > 0;\n\n if (hasDeeplink && sidebar === SIDEBAR_VIEW_METADATA) {\n internalSidebarNavigationHandler(internalSidebarNavigation);\n } else {\n internalSidebarNavigationHandler({ sidebar });\n }\n }\n };\n\n return (\n <>\n {hasLeftNavigation && (\n <PlainButton\n className=\"bcpr-navigate-left\"\n data-testid=\"preview-navigation-left\"\n onClick={() => {\n handleInternalNavigation();\n onNavigateLeft();\n }}\n title={intl.formatMessage(messages.previousFile)}\n type=\"button\"\n >\n <IconNavigateLeft />\n </PlainButton>\n )}\n {hasRightNavigation && (\n <PlainButton\n className=\"bcpr-navigate-right\"\n data-testid=\"preview-navigation-right\"\n onClick={() => {\n handleInternalNavigation();\n onNavigateRight();\n }}\n title={intl.formatMessage(messages.nextFile)}\n type=\"button\"\n >\n <IconNavigateRight />\n </PlainButton>\n )}\n </>\n );\n};\n\nconst PreviewNavigation = (props: Props) => {\n const { routerDisabled = false } = props;\n\n if (routerDisabled) {\n return <PreviewNavigationWithoutRouter {...props} />;\n }\n\n return <PreviewNavigationWithRouter {...props} />;\n};\n\nexport default injectIntl(PreviewNavigation);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"PreviewNavigation.js","names":["React","injectIntl","Route","IconNavigateLeft","IconNavigateRight","PlainButton","messages","SIDEBAR_VIEW_METADATA","PreviewNavigationWithRouter","collection","currentIndex","intl","onNavigateLeft","onNavigateRight","hasLeftNavigation","length","hasRightNavigation","goToActiveSidebarTab","routeParams","history","deeplink","activeTab","push","createElement","path","match","Fragment","className","onClick","params","title","formatMessage","previousFile","type","nextFile","PreviewNavigationWithoutRouter","internalSidebarNavigation","internalSidebarNavigationHandler","handleInternalNavigation","sidebar","rest","_objectWithoutProperties","_excluded","hasDeeplink","Object","keys","PreviewNavigation","props","routerDisabled"],"sources":["../../../src/elements/content-preview/PreviewNavigation.js"],"sourcesContent":["/**\n * @flow\n * @file Preview Navigation\n * @author Box\n */\n\nimport * as React from 'react';\nimport { injectIntl } from 'react-intl';\nimport type { IntlShape } from 'react-intl';\nimport { Route } from 'react-router-dom';\nimport IconNavigateLeft from '../../icons/general/IconNavigateLeft';\nimport IconNavigateRight from '../../icons/general/IconNavigateRight';\nimport PlainButton from '../../components/plain-button/PlainButton';\nimport messages from '../common/messages';\nimport type { BoxItem } from '../../common/types/core';\nimport { SIDEBAR_VIEW_METADATA } from '../../constants';\nimport type { InternalSidebarNavigation, InternalSidebarNavigationHandler } from '../common/types/SidebarNavigation';\n\ntype Props = {\n collection: Array<string | BoxItem>,\n currentIndex: number,\n intl: IntlShape,\n internalSidebarNavigation?: InternalSidebarNavigation,\n internalSidebarNavigationHandler?: InternalSidebarNavigationHandler,\n onNavigateLeft: Function,\n onNavigateRight: Function,\n routerDisabled?: boolean,\n};\n\nconst PreviewNavigationWithRouter = ({\n collection = [],\n currentIndex,\n intl,\n onNavigateLeft,\n onNavigateRight,\n}: Props) => {\n const hasLeftNavigation = collection.length > 1 && currentIndex > 0 && currentIndex < collection.length;\n const hasRightNavigation = collection.length > 1 && currentIndex > -1 && currentIndex < collection.length - 1;\n\n if (!hasLeftNavigation && !hasRightNavigation) {\n return null;\n }\n\n const goToActiveSidebarTab = (routeParams, history) => {\n if (routeParams.deeplink) {\n if (routeParams.activeTab === SIDEBAR_VIEW_METADATA) {\n history.push(`/${routeParams.activeTab}/${routeParams.deeplink}/${routeParams[0]}`);\n } else {\n history.push(`/${routeParams.activeTab}`);\n }\n }\n };\n\n return (\n <Route path={['/:activeTab/:deeplink/*', '/']}>\n {({ match, history }) => (\n <>\n {hasLeftNavigation && (\n <PlainButton\n className=\"bcpr-navigate-left\"\n data-testid=\"preview-navigation-left\"\n onClick={() => {\n goToActiveSidebarTab(match.params, history);\n onNavigateLeft();\n }}\n title={intl.formatMessage(messages.previousFile)}\n type=\"button\"\n >\n <IconNavigateLeft />\n </PlainButton>\n )}\n {hasRightNavigation && (\n <PlainButton\n className=\"bcpr-navigate-right\"\n data-testid=\"preview-navigation-right\"\n onClick={() => {\n goToActiveSidebarTab(match.params, history);\n onNavigateRight();\n }}\n title={intl.formatMessage(messages.nextFile)}\n type=\"button\"\n >\n <IconNavigateRight />\n </PlainButton>\n )}\n </>\n )}\n </Route>\n );\n};\n\nconst PreviewNavigationWithoutRouter = ({\n collection = [],\n currentIndex,\n intl,\n internalSidebarNavigation,\n internalSidebarNavigationHandler,\n onNavigateLeft,\n onNavigateRight,\n}: Props) => {\n const hasLeftNavigation = collection.length > 1 && currentIndex > 0 && currentIndex < collection.length;\n const hasRightNavigation = collection.length > 1 && currentIndex > -1 && currentIndex < collection.length - 1;\n\n if (!hasLeftNavigation && !hasRightNavigation) {\n return null;\n }\n\n const handleInternalNavigation = () => {\n if (internalSidebarNavigationHandler && internalSidebarNavigation && internalSidebarNavigation.sidebar) {\n const { sidebar, ...rest } = internalSidebarNavigation;\n const hasDeeplink = Object.keys(rest).length > 0;\n\n if (hasDeeplink && sidebar === SIDEBAR_VIEW_METADATA) {\n internalSidebarNavigationHandler(internalSidebarNavigation);\n } else {\n internalSidebarNavigationHandler({ sidebar });\n }\n }\n };\n\n return (\n <>\n {hasLeftNavigation && (\n <PlainButton\n className=\"bcpr-navigate-left\"\n onClick={() => {\n handleInternalNavigation();\n onNavigateLeft();\n }}\n title={intl.formatMessage(messages.previousFile)}\n type=\"button\"\n >\n <IconNavigateLeft />\n </PlainButton>\n )}\n {hasRightNavigation && (\n <PlainButton\n className=\"bcpr-navigate-right\"\n onClick={() => {\n handleInternalNavigation();\n onNavigateRight();\n }}\n title={intl.formatMessage(messages.nextFile)}\n type=\"button\"\n >\n <IconNavigateRight />\n </PlainButton>\n )}\n </>\n );\n};\n\nconst PreviewNavigation = (props: Props) => {\n const { routerDisabled = false } = props;\n\n if (routerDisabled) {\n return <PreviewNavigationWithoutRouter {...props} />;\n }\n\n return <PreviewNavigationWithRouter {...props} />;\n};\n\nexport default injectIntl(PreviewNavigation);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -176,11 +176,24 @@ class VersionsSidebarContainer extends React.Component {
|
|
|
176
176
|
_defineProperty(this, "updateVersion", versionId => {
|
|
177
177
|
const {
|
|
178
178
|
history,
|
|
179
|
-
match
|
|
179
|
+
match,
|
|
180
|
+
routerDisabled,
|
|
181
|
+
internalSidebarNavigationHandler,
|
|
182
|
+
internalSidebarNavigation
|
|
180
183
|
} = this.props;
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
+
if (routerDisabled && internalSidebarNavigationHandler) {
|
|
185
|
+
const navigationUpdate = _objectSpread({}, internalSidebarNavigation);
|
|
186
|
+
if (versionId) {
|
|
187
|
+
navigationUpdate.versionId = versionId;
|
|
188
|
+
} else {
|
|
189
|
+
delete navigationUpdate.versionId;
|
|
190
|
+
}
|
|
191
|
+
internalSidebarNavigationHandler(navigationUpdate);
|
|
192
|
+
} else {
|
|
193
|
+
history.push(generatePath(match.path, _objectSpread(_objectSpread({}, match.params), {}, {
|
|
194
|
+
versionId
|
|
195
|
+
})));
|
|
196
|
+
}
|
|
184
197
|
});
|
|
185
198
|
_defineProperty(this, "updateVersionToCurrent", () => {
|
|
186
199
|
this.updateVersion(this.getCurrentVersionId());
|
|
@@ -241,22 +254,31 @@ class VersionsSidebarContainer extends React.Component {
|
|
|
241
254
|
const {
|
|
242
255
|
fileId,
|
|
243
256
|
parentName,
|
|
244
|
-
onUpgradeClick
|
|
257
|
+
onUpgradeClick,
|
|
258
|
+
routerDisabled,
|
|
259
|
+
internalSidebarNavigation,
|
|
260
|
+
internalSidebarNavigationHandler
|
|
245
261
|
} = this.props;
|
|
246
262
|
if (onUpgradeClick) {
|
|
247
263
|
return /*#__PURE__*/React.createElement(StaticVersionsSidebar, _extends({
|
|
248
264
|
onUpgradeClick: onUpgradeClick,
|
|
249
|
-
parentName: parentName
|
|
265
|
+
parentName: parentName,
|
|
266
|
+
routerDisabled: routerDisabled,
|
|
267
|
+
internalSidebarNavigation: internalSidebarNavigation,
|
|
268
|
+
internalSidebarNavigationHandler: internalSidebarNavigationHandler
|
|
250
269
|
}, this.state));
|
|
251
270
|
}
|
|
252
271
|
return /*#__PURE__*/React.createElement(VersionsSidebar, _extends({
|
|
253
272
|
fileId: fileId,
|
|
273
|
+
internalSidebarNavigation: internalSidebarNavigation,
|
|
274
|
+
internalSidebarNavigationHandler: internalSidebarNavigationHandler,
|
|
254
275
|
onDelete: this.handleActionDelete,
|
|
255
276
|
onDownload: this.handleActionDownload,
|
|
256
277
|
onPreview: this.handleActionPreview,
|
|
257
278
|
onPromote: this.handleActionPromote,
|
|
258
279
|
onRestore: this.handleActionRestore,
|
|
259
|
-
parentName: parentName
|
|
280
|
+
parentName: parentName,
|
|
281
|
+
routerDisabled: routerDisabled
|
|
260
282
|
}, this.state));
|
|
261
283
|
}
|
|
262
284
|
}
|
|
@@ -24,7 +24,12 @@ import { withAPIContext } from '../../common/api-context';
|
|
|
24
24
|
import type { FeatureConfig } from '../../common/feature-checking';
|
|
25
25
|
import type { VersionActionCallback, VersionChangeCallback, SidebarLoadCallback } from './flowTypes';
|
|
26
26
|
import type { BoxItemVersion, BoxItem, FileVersions } from '../../../common/types/core';
|
|
27
|
-
import {
|
|
27
|
+
import {
|
|
28
|
+
ViewType,
|
|
29
|
+
type ViewTypeValues,
|
|
30
|
+
type InternalSidebarNavigation,
|
|
31
|
+
type InternalSidebarNavigationHandler,
|
|
32
|
+
} from '../../common/types/SidebarNavigation';
|
|
28
33
|
|
|
29
34
|
type Props = {
|
|
30
35
|
api: API,
|
|
@@ -32,6 +37,8 @@ type Props = {
|
|
|
32
37
|
fileId: string,
|
|
33
38
|
hasSidebarInitialized?: boolean,
|
|
34
39
|
history: RouterHistory,
|
|
40
|
+
internalSidebarNavigation?: InternalSidebarNavigation,
|
|
41
|
+
internalSidebarNavigationHandler?: InternalSidebarNavigationHandler,
|
|
35
42
|
match: Match,
|
|
36
43
|
onLoad: SidebarLoadCallback,
|
|
37
44
|
onUpgradeClick?: () => void,
|
|
@@ -42,6 +49,7 @@ type Props = {
|
|
|
42
49
|
onVersionPromote: VersionActionCallback,
|
|
43
50
|
onVersionRestore: VersionActionCallback,
|
|
44
51
|
parentName: ViewTypeValues,
|
|
52
|
+
routerDisabled?: boolean,
|
|
45
53
|
versionId?: string,
|
|
46
54
|
};
|
|
47
55
|
|
|
@@ -264,8 +272,20 @@ class VersionsSidebarContainer extends React.Component<Props, State> {
|
|
|
264
272
|
}
|
|
265
273
|
|
|
266
274
|
updateVersion = (versionId?: ?string): void => {
|
|
267
|
-
const { history, match } =
|
|
268
|
-
|
|
275
|
+
const { history, match, routerDisabled, internalSidebarNavigationHandler, internalSidebarNavigation } =
|
|
276
|
+
this.props;
|
|
277
|
+
|
|
278
|
+
if (routerDisabled && internalSidebarNavigationHandler) {
|
|
279
|
+
const navigationUpdate: InternalSidebarNavigation = { ...internalSidebarNavigation };
|
|
280
|
+
if (versionId) {
|
|
281
|
+
navigationUpdate.versionId = versionId;
|
|
282
|
+
} else {
|
|
283
|
+
delete navigationUpdate.versionId;
|
|
284
|
+
}
|
|
285
|
+
internalSidebarNavigationHandler(navigationUpdate);
|
|
286
|
+
} else {
|
|
287
|
+
history.push(generatePath(match.path, { ...match.params, versionId }));
|
|
288
|
+
}
|
|
269
289
|
};
|
|
270
290
|
|
|
271
291
|
updateVersionToCurrent = (): void => {
|
|
@@ -287,21 +307,40 @@ class VersionsSidebarContainer extends React.Component<Props, State> {
|
|
|
287
307
|
};
|
|
288
308
|
|
|
289
309
|
render() {
|
|
290
|
-
const {
|
|
310
|
+
const {
|
|
311
|
+
fileId,
|
|
312
|
+
parentName,
|
|
313
|
+
onUpgradeClick,
|
|
314
|
+
routerDisabled,
|
|
315
|
+
internalSidebarNavigation,
|
|
316
|
+
internalSidebarNavigationHandler,
|
|
317
|
+
} = this.props;
|
|
291
318
|
|
|
292
319
|
if (onUpgradeClick) {
|
|
293
|
-
return
|
|
320
|
+
return (
|
|
321
|
+
<StaticVersionsSidebar
|
|
322
|
+
onUpgradeClick={onUpgradeClick}
|
|
323
|
+
parentName={parentName}
|
|
324
|
+
routerDisabled={routerDisabled}
|
|
325
|
+
internalSidebarNavigation={internalSidebarNavigation}
|
|
326
|
+
internalSidebarNavigationHandler={internalSidebarNavigationHandler}
|
|
327
|
+
{...this.state}
|
|
328
|
+
/>
|
|
329
|
+
);
|
|
294
330
|
}
|
|
295
331
|
|
|
296
332
|
return (
|
|
297
333
|
<VersionsSidebar
|
|
298
334
|
fileId={fileId}
|
|
335
|
+
internalSidebarNavigation={internalSidebarNavigation}
|
|
336
|
+
internalSidebarNavigationHandler={internalSidebarNavigationHandler}
|
|
299
337
|
onDelete={this.handleActionDelete}
|
|
300
338
|
onDownload={this.handleActionDownload}
|
|
301
339
|
onPreview={this.handleActionPreview}
|
|
302
340
|
onPromote={this.handleActionPromote}
|
|
303
341
|
onRestore={this.handleActionRestore}
|
|
304
342
|
parentName={parentName}
|
|
343
|
+
routerDisabled={routerDisabled}
|
|
305
344
|
{...this.state}
|
|
306
345
|
/>
|
|
307
346
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VersionsSidebarContainer.js","names":["React","flow","getProp","merge","noop","generatePath","withRouter","withFeatureConsumer","isFeatureEnabled","API","FIELD_METADATA_ARCHIVE","messages","openUrlInsideIframe","StaticVersionsSidebar","VersionsSidebar","VersionsSidebarAPI","withAPIContext","ViewType","VersionsSidebarContainer","Component","constructor","args","_defineProperty","isArchived","isLoading","isWatermarked","versionCount","Infinity","versionLimit","versions","window","versionId","setState","api","deleteVersion","findVersion","then","fetchVersion","handleDeleteSuccess","props","onVersionDelete","catch","handleActionError","versionActionDeleteError","fetchDownloadUrl","onVersionDownload","versionActionDownloadError","updateVersion","onVersionPreview","promoteVersion","fetchData","handleFetchSuccess","handlePromoteSuccess","onVersionPromote","versionActionPromoteError","restoreVersion","handleRestoreSuccess","onVersionRestore","versionActionRestoreError","message","error","data","selectedVersionId","id","mergeResponse","updateVersionToCurrent","versionFetchError","fileResponse","versionsResponse","version_limit","undefined","versionsWithPermissions","getVersionsAPI","addPermissions","entries","total_count","sortVersions","verifyVersion","file","file_version","fileVersion","features","fileId","isArchiveFeatureEnabled","handleFetchError","state","find","version","newVersion","newVersionId","map","_objectSpread","newVersions","mergeVersions","history","match","push","path","params","getCurrentVersionId","onVersionChange","selectedVersion","currentVersionId","componentDidMount","onLoad","initialize","component","feature","componentDidUpdate","prevFileId","prevVersionId","refresh","sort","a","b","Date","parse","created_at","render","parentName","onUpgradeClick","createElement","_extends","onDelete","handleActionDelete","onDownload","handleActionDownload","onPreview","handleActionPreview","onPromote","handleActionPromote","onRestore","handleActionRestore","DETAILS","VersionsSidebarContainerComponent"],"sources":["../../../../src/elements/content-sidebar/versions/VersionsSidebarContainer.js"],"sourcesContent":["/**\n * @flow\n * @file Versions Sidebar container\n * @author Box\n */\n\nimport * as React from 'react';\nimport flow from 'lodash/flow';\nimport getProp from 'lodash/get';\nimport merge from 'lodash/merge';\nimport noop from 'lodash/noop';\nimport { generatePath, withRouter } from 'react-router-dom';\nimport type { Match, RouterHistory } from 'react-router-dom';\nimport type { MessageDescriptor } from 'react-intl';\nimport { withFeatureConsumer, isFeatureEnabled } from '../../common/feature-checking';\nimport API from '../../../api';\nimport { FIELD_METADATA_ARCHIVE } from '../../../constants';\nimport messages from './messages';\nimport openUrlInsideIframe from '../../../utils/iframe';\nimport StaticVersionsSidebar from './StaticVersionSidebar';\nimport VersionsSidebar from './VersionsSidebar';\nimport VersionsSidebarAPI from './VersionsSidebarAPI';\nimport { withAPIContext } from '../../common/api-context';\nimport type { FeatureConfig } from '../../common/feature-checking';\nimport type { VersionActionCallback, VersionChangeCallback, SidebarLoadCallback } from './flowTypes';\nimport type { BoxItemVersion, BoxItem, FileVersions } from '../../../common/types/core';\nimport { ViewType, type ViewTypeValues } from '../../common/types/SidebarNavigation';\n\ntype Props = {\n api: API,\n features: FeatureConfig,\n fileId: string,\n hasSidebarInitialized?: boolean,\n history: RouterHistory,\n match: Match,\n onLoad: SidebarLoadCallback,\n onUpgradeClick?: () => void,\n onVersionChange: VersionChangeCallback,\n onVersionDelete: VersionActionCallback,\n onVersionDownload: VersionActionCallback,\n onVersionPreview: VersionActionCallback,\n onVersionPromote: VersionActionCallback,\n onVersionRestore: VersionActionCallback,\n parentName: ViewTypeValues,\n versionId?: string,\n};\n\ntype State = {\n error?: MessageDescriptor,\n isArchived: boolean,\n isLoading: boolean,\n isWatermarked: boolean,\n versionCount: number,\n versionLimit: number,\n versions: Array<BoxItemVersion>,\n};\n\nclass VersionsSidebarContainer extends React.Component<Props, State> {\n static defaultProps = {\n onLoad: noop,\n onVersionChange: noop,\n onVersionDelete: noop,\n onVersionDownload: noop,\n onVersionPreview: noop,\n onVersionPromote: noop,\n onVersionRestore: noop,\n parentName: ViewType.DETAILS,\n };\n\n api: VersionsSidebarAPI;\n\n props: Props;\n\n state: State = {\n isArchived: false,\n isLoading: true,\n isWatermarked: false,\n versionCount: Infinity,\n versionLimit: Infinity,\n versions: [],\n };\n\n window: any = window;\n\n componentDidMount() {\n const { onLoad } = this.props;\n this.initialize();\n this.fetchData().then(() => {\n onLoad({ component: 'preview', feature: 'versions' });\n });\n }\n\n componentDidUpdate({ fileId: prevFileId, versionId: prevVersionId }: Props) {\n const { fileId, versionId } = this.props;\n\n if (fileId !== prevFileId) {\n this.refresh();\n }\n\n if (versionId !== prevVersionId) {\n this.verifyVersion();\n }\n }\n\n handleActionDelete = (versionId: string): Promise<void> => {\n this.setState({ isLoading: true });\n\n return this.api\n .deleteVersion(this.findVersion(versionId))\n .then(() => this.api.fetchVersion(versionId))\n .then(this.handleDeleteSuccess)\n .then(() => this.props.onVersionDelete(versionId))\n .catch(() => this.handleActionError(messages.versionActionDeleteError));\n };\n\n handleActionDownload = (versionId: string): Promise<void> => {\n return this.api\n .fetchDownloadUrl(this.findVersion(versionId))\n .then(openUrlInsideIframe)\n .then(() => this.props.onVersionDownload(versionId))\n .catch(() => this.handleActionError(messages.versionActionDownloadError));\n };\n\n handleActionPreview = (versionId: string): void => {\n this.updateVersion(versionId);\n this.props.onVersionPreview(versionId);\n };\n\n handleActionPromote = (versionId: string): Promise<void> => {\n this.setState({ isLoading: true });\n\n return this.api\n .promoteVersion(this.findVersion(versionId))\n .then(this.api.fetchData)\n .then(this.handleFetchSuccess)\n .then(this.handlePromoteSuccess)\n .then(() => this.props.onVersionPromote(versionId))\n .catch(() => this.handleActionError(messages.versionActionPromoteError));\n };\n\n handleActionRestore = (versionId: string): Promise<void> => {\n this.setState({ isLoading: true });\n\n return this.api\n .restoreVersion(this.findVersion(versionId))\n .then(() => this.api.fetchVersion(versionId))\n .then(this.handleRestoreSuccess)\n .then(() => this.props.onVersionRestore(versionId))\n .catch(() => this.handleActionError(messages.versionActionRestoreError));\n };\n\n handleActionError = (message: MessageDescriptor): void => {\n this.setState({\n error: message,\n isLoading: false,\n });\n };\n\n handleDeleteSuccess = (data: BoxItemVersion): void => {\n const { versionId: selectedVersionId } = this.props;\n const { id: versionId } = data;\n\n this.mergeResponse(data);\n\n // Bump the user to the current version if they deleted their selected version\n if (versionId === selectedVersionId) {\n this.updateVersionToCurrent();\n }\n };\n\n handleRestoreSuccess = (data: BoxItemVersion): void => {\n this.mergeResponse(data);\n };\n\n handleFetchError = (): void => {\n this.setState({\n error: messages.versionFetchError,\n isArchived: false,\n isLoading: false,\n isWatermarked: false,\n versionCount: 0,\n versions: [],\n });\n };\n\n handleFetchSuccess = ([fileResponse, versionsResponse]: [BoxItem, FileVersions]): [BoxItem, FileVersions] => {\n const { api } = this.props;\n const { version_limit } = fileResponse;\n const isArchived = !!getProp(fileResponse, FIELD_METADATA_ARCHIVE);\n const isWatermarked = getProp(fileResponse, 'watermark_info.is_watermarked', false);\n const versionLimit = version_limit !== null && version_limit !== undefined ? version_limit : Infinity;\n const versionsWithPermissions = api.getVersionsAPI(false).addPermissions(versionsResponse, fileResponse) || {};\n const { entries: versions, total_count: versionCount } = versionsWithPermissions;\n\n this.setState(\n {\n error: undefined,\n isArchived,\n isLoading: false,\n isWatermarked,\n versionCount,\n versionLimit,\n versions: this.sortVersions(versions),\n },\n this.verifyVersion,\n );\n\n return [fileResponse, versionsResponse];\n };\n\n handlePromoteSuccess = ([file]: [BoxItem, FileVersions]): void => {\n const { file_version: fileVersion } = file;\n\n if (fileVersion) {\n this.updateVersion(fileVersion.id);\n }\n };\n\n initialize = (): void => {\n const { api, features, fileId }: Props = this.props;\n const isArchiveFeatureEnabled = isFeatureEnabled(features, 'contentSidebar.archive.enabled');\n\n this.api = new VersionsSidebarAPI({ api, fileId, isArchiveFeatureEnabled });\n };\n\n fetchData = (): Promise<?[BoxItem, FileVersions]> => {\n return this.api.fetchData().then(this.handleFetchSuccess).catch(this.handleFetchError);\n };\n\n findVersion = (versionId: ?string): ?BoxItemVersion => {\n const { versions } = this.state;\n\n return versions.find(version => version.id === versionId);\n };\n\n getCurrentVersionId = (): ?string => {\n const { versions } = this.state;\n return versions[0] ? versions[0].id : null;\n };\n\n mergeVersions = (newVersion: BoxItemVersion): Array<BoxItemVersion> => {\n const { versions } = this.state;\n const newVersionId = newVersion ? newVersion.id : '';\n return versions.map(version => (version.id === newVersionId ? merge({ ...version }, newVersion) : version));\n };\n\n mergeResponse = (data: BoxItemVersion): void => {\n const newVersions = this.mergeVersions(data);\n\n this.setState({\n error: undefined,\n isLoading: false,\n versions: newVersions,\n });\n };\n\n refresh(): void {\n this.initialize();\n this.setState({ isLoading: true }, this.fetchData);\n }\n\n sortVersions(versions?: Array<BoxItemVersion> = []): Array<BoxItemVersion> {\n return [...versions].sort((a, b) => Date.parse(b.created_at) - Date.parse(a.created_at));\n }\n\n updateVersion = (versionId?: ?string): void => {\n const { history, match } = this.props;\n return history.push(generatePath(match.path, { ...match.params, versionId }));\n };\n\n updateVersionToCurrent = (): void => {\n this.updateVersion(this.getCurrentVersionId());\n };\n\n verifyVersion = () => {\n const { onVersionChange, versionId } = this.props;\n const selectedVersion = this.findVersion(versionId);\n\n if (selectedVersion) {\n onVersionChange(selectedVersion, {\n currentVersionId: this.getCurrentVersionId(),\n updateVersionToCurrent: this.updateVersionToCurrent,\n });\n } else {\n this.updateVersionToCurrent();\n }\n };\n\n render() {\n const { fileId, parentName, onUpgradeClick } = this.props;\n\n if (onUpgradeClick) {\n return <StaticVersionsSidebar onUpgradeClick={onUpgradeClick} parentName={parentName} {...this.state} />;\n }\n\n return (\n <VersionsSidebar\n fileId={fileId}\n onDelete={this.handleActionDelete}\n onDownload={this.handleActionDownload}\n onPreview={this.handleActionPreview}\n onPromote={this.handleActionPromote}\n onRestore={this.handleActionRestore}\n parentName={parentName}\n {...this.state}\n />\n );\n }\n}\n\nexport type VersionsSidebarProps = Props;\nexport { VersionsSidebarContainer as VersionsSidebarContainerComponent };\nexport default flow([withRouter, withAPIContext, withFeatureConsumer])(VersionsSidebarContainer);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VersionsSidebarContainer.js","names":["React","flow","getProp","merge","noop","generatePath","withRouter","withFeatureConsumer","isFeatureEnabled","API","FIELD_METADATA_ARCHIVE","messages","openUrlInsideIframe","StaticVersionsSidebar","VersionsSidebar","VersionsSidebarAPI","withAPIContext","ViewType","VersionsSidebarContainer","Component","constructor","args","_defineProperty","isArchived","isLoading","isWatermarked","versionCount","Infinity","versionLimit","versions","window","versionId","setState","api","deleteVersion","findVersion","then","fetchVersion","handleDeleteSuccess","props","onVersionDelete","catch","handleActionError","versionActionDeleteError","fetchDownloadUrl","onVersionDownload","versionActionDownloadError","updateVersion","onVersionPreview","promoteVersion","fetchData","handleFetchSuccess","handlePromoteSuccess","onVersionPromote","versionActionPromoteError","restoreVersion","handleRestoreSuccess","onVersionRestore","versionActionRestoreError","message","error","data","selectedVersionId","id","mergeResponse","updateVersionToCurrent","versionFetchError","fileResponse","versionsResponse","version_limit","undefined","versionsWithPermissions","getVersionsAPI","addPermissions","entries","total_count","sortVersions","verifyVersion","file","file_version","fileVersion","features","fileId","isArchiveFeatureEnabled","handleFetchError","state","find","version","newVersion","newVersionId","map","_objectSpread","newVersions","mergeVersions","history","match","routerDisabled","internalSidebarNavigationHandler","internalSidebarNavigation","navigationUpdate","push","path","params","getCurrentVersionId","onVersionChange","selectedVersion","currentVersionId","componentDidMount","onLoad","initialize","component","feature","componentDidUpdate","prevFileId","prevVersionId","refresh","sort","a","b","Date","parse","created_at","render","parentName","onUpgradeClick","createElement","_extends","onDelete","handleActionDelete","onDownload","handleActionDownload","onPreview","handleActionPreview","onPromote","handleActionPromote","onRestore","handleActionRestore","DETAILS","VersionsSidebarContainerComponent"],"sources":["../../../../src/elements/content-sidebar/versions/VersionsSidebarContainer.js"],"sourcesContent":["/**\n * @flow\n * @file Versions Sidebar container\n * @author Box\n */\n\nimport * as React from 'react';\nimport flow from 'lodash/flow';\nimport getProp from 'lodash/get';\nimport merge from 'lodash/merge';\nimport noop from 'lodash/noop';\nimport { generatePath, withRouter } from 'react-router-dom';\nimport type { Match, RouterHistory } from 'react-router-dom';\nimport type { MessageDescriptor } from 'react-intl';\nimport { withFeatureConsumer, isFeatureEnabled } from '../../common/feature-checking';\nimport API from '../../../api';\nimport { FIELD_METADATA_ARCHIVE } from '../../../constants';\nimport messages from './messages';\nimport openUrlInsideIframe from '../../../utils/iframe';\nimport StaticVersionsSidebar from './StaticVersionSidebar';\nimport VersionsSidebar from './VersionsSidebar';\nimport VersionsSidebarAPI from './VersionsSidebarAPI';\nimport { withAPIContext } from '../../common/api-context';\nimport type { FeatureConfig } from '../../common/feature-checking';\nimport type { VersionActionCallback, VersionChangeCallback, SidebarLoadCallback } from './flowTypes';\nimport type { BoxItemVersion, BoxItem, FileVersions } from '../../../common/types/core';\nimport {\n ViewType,\n type ViewTypeValues,\n type InternalSidebarNavigation,\n type InternalSidebarNavigationHandler,\n} from '../../common/types/SidebarNavigation';\n\ntype Props = {\n api: API,\n features: FeatureConfig,\n fileId: string,\n hasSidebarInitialized?: boolean,\n history: RouterHistory,\n internalSidebarNavigation?: InternalSidebarNavigation,\n internalSidebarNavigationHandler?: InternalSidebarNavigationHandler,\n match: Match,\n onLoad: SidebarLoadCallback,\n onUpgradeClick?: () => void,\n onVersionChange: VersionChangeCallback,\n onVersionDelete: VersionActionCallback,\n onVersionDownload: VersionActionCallback,\n onVersionPreview: VersionActionCallback,\n onVersionPromote: VersionActionCallback,\n onVersionRestore: VersionActionCallback,\n parentName: ViewTypeValues,\n routerDisabled?: boolean,\n versionId?: string,\n};\n\ntype State = {\n error?: MessageDescriptor,\n isArchived: boolean,\n isLoading: boolean,\n isWatermarked: boolean,\n versionCount: number,\n versionLimit: number,\n versions: Array<BoxItemVersion>,\n};\n\nclass VersionsSidebarContainer extends React.Component<Props, State> {\n static defaultProps = {\n onLoad: noop,\n onVersionChange: noop,\n onVersionDelete: noop,\n onVersionDownload: noop,\n onVersionPreview: noop,\n onVersionPromote: noop,\n onVersionRestore: noop,\n parentName: ViewType.DETAILS,\n };\n\n api: VersionsSidebarAPI;\n\n props: Props;\n\n state: State = {\n isArchived: false,\n isLoading: true,\n isWatermarked: false,\n versionCount: Infinity,\n versionLimit: Infinity,\n versions: [],\n };\n\n window: any = window;\n\n componentDidMount() {\n const { onLoad } = this.props;\n this.initialize();\n this.fetchData().then(() => {\n onLoad({ component: 'preview', feature: 'versions' });\n });\n }\n\n componentDidUpdate({ fileId: prevFileId, versionId: prevVersionId }: Props) {\n const { fileId, versionId } = this.props;\n\n if (fileId !== prevFileId) {\n this.refresh();\n }\n\n if (versionId !== prevVersionId) {\n this.verifyVersion();\n }\n }\n\n handleActionDelete = (versionId: string): Promise<void> => {\n this.setState({ isLoading: true });\n\n return this.api\n .deleteVersion(this.findVersion(versionId))\n .then(() => this.api.fetchVersion(versionId))\n .then(this.handleDeleteSuccess)\n .then(() => this.props.onVersionDelete(versionId))\n .catch(() => this.handleActionError(messages.versionActionDeleteError));\n };\n\n handleActionDownload = (versionId: string): Promise<void> => {\n return this.api\n .fetchDownloadUrl(this.findVersion(versionId))\n .then(openUrlInsideIframe)\n .then(() => this.props.onVersionDownload(versionId))\n .catch(() => this.handleActionError(messages.versionActionDownloadError));\n };\n\n handleActionPreview = (versionId: string): void => {\n this.updateVersion(versionId);\n this.props.onVersionPreview(versionId);\n };\n\n handleActionPromote = (versionId: string): Promise<void> => {\n this.setState({ isLoading: true });\n\n return this.api\n .promoteVersion(this.findVersion(versionId))\n .then(this.api.fetchData)\n .then(this.handleFetchSuccess)\n .then(this.handlePromoteSuccess)\n .then(() => this.props.onVersionPromote(versionId))\n .catch(() => this.handleActionError(messages.versionActionPromoteError));\n };\n\n handleActionRestore = (versionId: string): Promise<void> => {\n this.setState({ isLoading: true });\n\n return this.api\n .restoreVersion(this.findVersion(versionId))\n .then(() => this.api.fetchVersion(versionId))\n .then(this.handleRestoreSuccess)\n .then(() => this.props.onVersionRestore(versionId))\n .catch(() => this.handleActionError(messages.versionActionRestoreError));\n };\n\n handleActionError = (message: MessageDescriptor): void => {\n this.setState({\n error: message,\n isLoading: false,\n });\n };\n\n handleDeleteSuccess = (data: BoxItemVersion): void => {\n const { versionId: selectedVersionId } = this.props;\n const { id: versionId } = data;\n\n this.mergeResponse(data);\n\n // Bump the user to the current version if they deleted their selected version\n if (versionId === selectedVersionId) {\n this.updateVersionToCurrent();\n }\n };\n\n handleRestoreSuccess = (data: BoxItemVersion): void => {\n this.mergeResponse(data);\n };\n\n handleFetchError = (): void => {\n this.setState({\n error: messages.versionFetchError,\n isArchived: false,\n isLoading: false,\n isWatermarked: false,\n versionCount: 0,\n versions: [],\n });\n };\n\n handleFetchSuccess = ([fileResponse, versionsResponse]: [BoxItem, FileVersions]): [BoxItem, FileVersions] => {\n const { api } = this.props;\n const { version_limit } = fileResponse;\n const isArchived = !!getProp(fileResponse, FIELD_METADATA_ARCHIVE);\n const isWatermarked = getProp(fileResponse, 'watermark_info.is_watermarked', false);\n const versionLimit = version_limit !== null && version_limit !== undefined ? version_limit : Infinity;\n const versionsWithPermissions = api.getVersionsAPI(false).addPermissions(versionsResponse, fileResponse) || {};\n const { entries: versions, total_count: versionCount } = versionsWithPermissions;\n\n this.setState(\n {\n error: undefined,\n isArchived,\n isLoading: false,\n isWatermarked,\n versionCount,\n versionLimit,\n versions: this.sortVersions(versions),\n },\n this.verifyVersion,\n );\n\n return [fileResponse, versionsResponse];\n };\n\n handlePromoteSuccess = ([file]: [BoxItem, FileVersions]): void => {\n const { file_version: fileVersion } = file;\n\n if (fileVersion) {\n this.updateVersion(fileVersion.id);\n }\n };\n\n initialize = (): void => {\n const { api, features, fileId }: Props = this.props;\n const isArchiveFeatureEnabled = isFeatureEnabled(features, 'contentSidebar.archive.enabled');\n\n this.api = new VersionsSidebarAPI({ api, fileId, isArchiveFeatureEnabled });\n };\n\n fetchData = (): Promise<?[BoxItem, FileVersions]> => {\n return this.api.fetchData().then(this.handleFetchSuccess).catch(this.handleFetchError);\n };\n\n findVersion = (versionId: ?string): ?BoxItemVersion => {\n const { versions } = this.state;\n\n return versions.find(version => version.id === versionId);\n };\n\n getCurrentVersionId = (): ?string => {\n const { versions } = this.state;\n return versions[0] ? versions[0].id : null;\n };\n\n mergeVersions = (newVersion: BoxItemVersion): Array<BoxItemVersion> => {\n const { versions } = this.state;\n const newVersionId = newVersion ? newVersion.id : '';\n return versions.map(version => (version.id === newVersionId ? merge({ ...version }, newVersion) : version));\n };\n\n mergeResponse = (data: BoxItemVersion): void => {\n const newVersions = this.mergeVersions(data);\n\n this.setState({\n error: undefined,\n isLoading: false,\n versions: newVersions,\n });\n };\n\n refresh(): void {\n this.initialize();\n this.setState({ isLoading: true }, this.fetchData);\n }\n\n sortVersions(versions?: Array<BoxItemVersion> = []): Array<BoxItemVersion> {\n return [...versions].sort((a, b) => Date.parse(b.created_at) - Date.parse(a.created_at));\n }\n\n updateVersion = (versionId?: ?string): void => {\n const { history, match, routerDisabled, internalSidebarNavigationHandler, internalSidebarNavigation } =\n this.props;\n\n if (routerDisabled && internalSidebarNavigationHandler) {\n const navigationUpdate: InternalSidebarNavigation = { ...internalSidebarNavigation };\n if (versionId) {\n navigationUpdate.versionId = versionId;\n } else {\n delete navigationUpdate.versionId;\n }\n internalSidebarNavigationHandler(navigationUpdate);\n } else {\n history.push(generatePath(match.path, { ...match.params, versionId }));\n }\n };\n\n updateVersionToCurrent = (): void => {\n this.updateVersion(this.getCurrentVersionId());\n };\n\n verifyVersion = () => {\n const { onVersionChange, versionId } = this.props;\n const selectedVersion = this.findVersion(versionId);\n\n if (selectedVersion) {\n onVersionChange(selectedVersion, {\n currentVersionId: this.getCurrentVersionId(),\n updateVersionToCurrent: this.updateVersionToCurrent,\n });\n } else {\n this.updateVersionToCurrent();\n }\n };\n\n render() {\n const {\n fileId,\n parentName,\n onUpgradeClick,\n routerDisabled,\n internalSidebarNavigation,\n internalSidebarNavigationHandler,\n } = this.props;\n\n if (onUpgradeClick) {\n return (\n <StaticVersionsSidebar\n onUpgradeClick={onUpgradeClick}\n parentName={parentName}\n routerDisabled={routerDisabled}\n internalSidebarNavigation={internalSidebarNavigation}\n internalSidebarNavigationHandler={internalSidebarNavigationHandler}\n {...this.state}\n />\n );\n }\n\n return (\n <VersionsSidebar\n fileId={fileId}\n internalSidebarNavigation={internalSidebarNavigation}\n internalSidebarNavigationHandler={internalSidebarNavigationHandler}\n onDelete={this.handleActionDelete}\n onDownload={this.handleActionDownload}\n onPreview={this.handleActionPreview}\n onPromote={this.handleActionPromote}\n onRestore={this.handleActionRestore}\n parentName={parentName}\n routerDisabled={routerDisabled}\n {...this.state}\n />\n );\n }\n}\n\nexport type VersionsSidebarProps = Props;\nexport { VersionsSidebarContainer as VersionsSidebarContainerComponent };\nexport default flow([withRouter, withAPIContext, withFeatureConsumer])(VersionsSidebarContainer);\n"],"mappings":"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","ignoreList":[]}
|