box-ui-elements 23.4.0-beta.12 → 23.4.0-beta.14
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/picker.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/dist/uploader.js +1 -1
- package/es/api/schemas/AiAgentReference.js +2 -0
- package/es/api/schemas/AiAgentReference.js.flow +15 -0
- package/es/api/schemas/AiAgentReference.js.map +1 -0
- package/es/api/schemas/AiExtractStructured.js +1 -0
- package/es/api/schemas/AiExtractStructured.js.flow +7 -1
- package/es/api/schemas/AiExtractStructured.js.map +1 -1
- package/es/elements/common/upload-dialog/UploadDialog.js +1 -0
- package/es/elements/common/upload-dialog/UploadDialog.js.flow +1 -0
- package/es/elements/common/upload-dialog/UploadDialog.js.map +1 -1
- package/es/elements/content-sidebar/hooks/useSidebarMetadataFetcher.js +19 -12
- package/es/elements/content-sidebar/hooks/useSidebarMetadataFetcher.js.map +1 -1
- package/es/elements/index.js +1 -0
- package/es/elements/index.js.flow +1 -0
- package/es/elements/index.js.map +1 -1
- package/es/elements/wrappers/ContentUploader.js +2 -0
- package/es/elements/wrappers/ContentUploader.js.flow +2 -0
- package/es/elements/wrappers/ContentUploader.js.map +1 -1
- package/es/features/metadata-instance-fields/MetadataField.js +12 -1
- package/es/features/metadata-instance-fields/MetadataField.js.flow +14 -0
- package/es/features/metadata-instance-fields/MetadataField.js.map +1 -1
- package/es/src/elements/content-sidebar/hooks/useSidebarMetadataFetcher.d.ts +1 -1
- package/i18n/ja-JP.js +2 -2
- package/i18n/ja-JP.properties +2 -2
- package/package.json +5 -5
- package/src/api/schemas/AiAgentReference.js +15 -0
- package/src/api/schemas/AiExtractStructured.js +7 -1
- package/src/elements/common/upload-dialog/UploadDialog.js +1 -0
- package/src/elements/content-sidebar/__tests__/useSidebarMetadataFetcher.test.tsx +58 -0
- package/src/elements/content-sidebar/hooks/useSidebarMetadataFetcher.ts +11 -7
- package/src/elements/index.js +1 -0
- package/src/elements/wrappers/ContentUploader.js +2 -0
- package/src/features/metadata-instance-fields/MetadataField.js +14 -0
- package/src/features/metadata-instance-fields/__tests__/MetadataField.test.js +6 -0
- package/src/features/metadata-instance-fields/__tests__/__snapshots__/MetadataField.test.js.snap +7 -0
- package/es/elements/content-uploader/ContentUploader.js.flow +0 -1322
- package/es/elements/content-uploader/ContentUploaderPopup.js.flow +0 -11
- package/es/elements/content-uploader/DroppableContent.js.flow +0 -82
- package/es/elements/content-uploader/Footer.js.flow +0 -63
- package/es/elements/content-uploader/IconName.js.flow +0 -45
- package/es/elements/content-uploader/ItemAction.js.flow +0 -128
- package/es/elements/content-uploader/ItemList.js.flow +0 -79
- package/es/elements/content-uploader/ItemRemove.js.flow +0 -51
- package/es/elements/content-uploader/OverallUploadsProgressBar.js.flow +0 -111
- package/es/elements/content-uploader/ProgressBar.js.flow +0 -65
- package/es/elements/content-uploader/UploadInput.js.flow +0 -50
- package/es/elements/content-uploader/UploadState.js.flow +0 -114
- package/es/elements/content-uploader/UploadStateContent.js.flow +0 -71
- package/es/elements/content-uploader/UploadsManager.js.flow +0 -111
- package/es/elements/content-uploader/UploadsManagerAction.js.flow +0 -36
- package/es/elements/content-uploader/actionCellRenderer.js.flow +0 -18
- package/es/elements/content-uploader/index.js.flow +0 -4
- package/es/elements/content-uploader/nameCellRenderer.js.flow +0 -13
- package/es/elements/content-uploader/progressCellRenderer.js.flow +0 -81
- package/es/elements/content-uploader/removeCellRenderer.js.flow +0 -16
- package/src/elements/content-uploader/ContentUploader.js.flow +0 -1322
- package/src/elements/content-uploader/ContentUploaderPopup.js.flow +0 -11
- package/src/elements/content-uploader/DroppableContent.js.flow +0 -82
- package/src/elements/content-uploader/Footer.js.flow +0 -63
- package/src/elements/content-uploader/IconName.js.flow +0 -45
- package/src/elements/content-uploader/ItemAction.js.flow +0 -128
- package/src/elements/content-uploader/ItemList.js.flow +0 -79
- package/src/elements/content-uploader/ItemRemove.js.flow +0 -51
- package/src/elements/content-uploader/OverallUploadsProgressBar.js.flow +0 -111
- package/src/elements/content-uploader/ProgressBar.js.flow +0 -65
- package/src/elements/content-uploader/UploadInput.js.flow +0 -50
- package/src/elements/content-uploader/UploadState.js.flow +0 -114
- package/src/elements/content-uploader/UploadStateContent.js.flow +0 -71
- package/src/elements/content-uploader/UploadsManager.js.flow +0 -111
- package/src/elements/content-uploader/UploadsManagerAction.js.flow +0 -36
- package/src/elements/content-uploader/actionCellRenderer.js.flow +0 -18
- package/src/elements/content-uploader/index.js.flow +0 -4
- package/src/elements/content-uploader/nameCellRenderer.js.flow +0 -13
- package/src/elements/content-uploader/progressCellRenderer.js.flow +0 -81
- package/src/elements/content-uploader/removeCellRenderer.js.flow +0 -16
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @flow
|
|
3
|
+
* @author Box
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export type AiAgentTypeField = 'ai_agent_id';
|
|
7
|
+
|
|
8
|
+
export interface AiAgentReference {
|
|
9
|
+
/**
|
|
10
|
+
* AI Agent Reference to pass custom AI Agent ID to requests.
|
|
11
|
+
* See https://developer.box.com/reference/resources/ai-agent-reference/
|
|
12
|
+
*/
|
|
13
|
+
+type: AiAgentTypeField;
|
|
14
|
+
+id: string;
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AiAgentReference.js","names":[],"sources":["../../../src/api/schemas/AiAgentReference.js"],"sourcesContent":["/**\n * @flow\n * @author Box\n */\n\nexport type AiAgentTypeField = 'ai_agent_id';\n\nexport interface AiAgentReference {\n /**\n * AI Agent Reference to pass custom AI Agent ID to requests.\n * See https://developer.box.com/reference/resources/ai-agent-reference/\n */\n +type: AiAgentTypeField;\n +id: string;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { AiAgentExtractStructured } from './AiAgentExtractStructured';
|
|
7
|
+
import { AiAgentReference } from './AiAgentReference';
|
|
7
8
|
import { AiItemBase } from './AiItemBase';
|
|
8
9
|
|
|
9
10
|
export type AiExtractStructuredMetadataTemplateTypeField = 'metadata_template';
|
|
@@ -80,5 +81,10 @@ export interface AiExtractStructured {
|
|
|
80
81
|
* The JSON blob that contains overrides for the agent config.
|
|
81
82
|
*/
|
|
82
83
|
+agent_config?: string;
|
|
83
|
-
|
|
84
|
+
/**
|
|
85
|
+
* * AI agent definition to use for extraction.
|
|
86
|
+
* – `AiAgentExtractStructured`: customise Basic-Text / Long-Text agents
|
|
87
|
+
* – `AiAgentReference` : reference a custom AI-Agent by ID
|
|
88
|
+
*/
|
|
89
|
+
+ai_agent?: AiAgentExtractStructured | AiAgentReference;
|
|
84
90
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AiExtractStructured.js","names":["AiAgentExtractStructured","AiItemBase"],"sources":["../../../src/api/schemas/AiExtractStructured.js"],"sourcesContent":["/**\n * @flow\n * @author Box\n */\n\nimport { AiAgentExtractStructured } from './AiAgentExtractStructured';\nimport { AiItemBase } from './AiItemBase';\n\nexport type AiExtractStructuredMetadataTemplateTypeField = 'metadata_template';\n\nexport interface AiExtractStructuredMetadataTemplateField {\n /**\n * The name of the metadata template.\n */\n +template_key?: string;\n /**\n * Value is always `metadata_template`.\n */\n +type?: AiExtractStructuredMetadataTemplateTypeField;\n /**\n * The scope of the metadata template can either be global or\n enterprise_*. The global scope is used for templates that are\n available to any Box enterprise. The enterprise_* scope represents\n templates that have been created within a specific enterprise,\n where * will be the ID of that enterprise.\n */\n +scope?: string;\n}\n\nexport interface AiExtractStructuredFieldsOptionsField {\n /**\n * A unique identifier for the field.\n */\n +key: string;\n}\n\nexport interface AiExtractStructuredFieldsField {\n /**\n * A unique identifier for the field.\n */\n +key: string;\n /**\n * A description of the field.\n */\n +description?: string;\n /**\n * The display name of the field.\n */\n +display_name?: string;\n /**\n * Context about the key that may include how to find and how to format it.\n */\n +prompt?: string;\n /**\n * The type of the field. Can include but is not limited to string, float, date, enum, and multiSelect.\n */\n +type?: string;\n /**\n * A list of options for this field. This is most often used in combination with the enum and multiSelect field types.\n */\n +options?: $ReadOnlyArray<AiExtractStructuredFieldsOptionsField>;\n}\n\nexport interface AiExtractStructured {\n /**\n * The items to be processed by the LLM, often files.\n */\n +items: $ReadOnlyArray<AiItemBase>;\n /**\n * The metadata template containing the fields to extract. Cannot be used\n in combination with `fields`.\n */\n +metadata_template?: AiExtractStructuredMetadataTemplateField;\n /**\n * The fields to be extracted from the items. Cannot be used in combination\n with `metadata_template`.\n */\n +fields?: $ReadOnlyArray<AiExtractStructuredFieldsField>;\n /**\n * The JSON blob that contains overrides for the agent config.\n */\n +agent_config?: string;\n +ai_agent?: AiAgentExtractStructured;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;;AAEA,SAASA,wBAAwB,QAAQ,4BAA4B;AACrE,SAASC,UAAU,QAAQ,cAAc","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"AiExtractStructured.js","names":["AiAgentExtractStructured","AiAgentReference","AiItemBase"],"sources":["../../../src/api/schemas/AiExtractStructured.js"],"sourcesContent":["/**\n * @flow\n * @author Box\n */\n\nimport { AiAgentExtractStructured } from './AiAgentExtractStructured';\nimport { AiAgentReference } from './AiAgentReference';\nimport { AiItemBase } from './AiItemBase';\n\nexport type AiExtractStructuredMetadataTemplateTypeField = 'metadata_template';\n\nexport interface AiExtractStructuredMetadataTemplateField {\n /**\n * The name of the metadata template.\n */\n +template_key?: string;\n /**\n * Value is always `metadata_template`.\n */\n +type?: AiExtractStructuredMetadataTemplateTypeField;\n /**\n * The scope of the metadata template can either be global or\n enterprise_*. The global scope is used for templates that are\n available to any Box enterprise. The enterprise_* scope represents\n templates that have been created within a specific enterprise,\n where * will be the ID of that enterprise.\n */\n +scope?: string;\n}\n\nexport interface AiExtractStructuredFieldsOptionsField {\n /**\n * A unique identifier for the field.\n */\n +key: string;\n}\n\nexport interface AiExtractStructuredFieldsField {\n /**\n * A unique identifier for the field.\n */\n +key: string;\n /**\n * A description of the field.\n */\n +description?: string;\n /**\n * The display name of the field.\n */\n +display_name?: string;\n /**\n * Context about the key that may include how to find and how to format it.\n */\n +prompt?: string;\n /**\n * The type of the field. Can include but is not limited to string, float, date, enum, and multiSelect.\n */\n +type?: string;\n /**\n * A list of options for this field. This is most often used in combination with the enum and multiSelect field types.\n */\n +options?: $ReadOnlyArray<AiExtractStructuredFieldsOptionsField>;\n}\n\nexport interface AiExtractStructured {\n /**\n * The items to be processed by the LLM, often files.\n */\n +items: $ReadOnlyArray<AiItemBase>;\n /**\n * The metadata template containing the fields to extract. Cannot be used\n in combination with `fields`.\n */\n +metadata_template?: AiExtractStructuredMetadataTemplateField;\n /**\n * The fields to be extracted from the items. Cannot be used in combination\n with `metadata_template`.\n */\n +fields?: $ReadOnlyArray<AiExtractStructuredFieldsField>;\n /**\n * The JSON blob that contains overrides for the agent config.\n */\n +agent_config?: string;\n /**\n * * AI agent definition to use for extraction.\n * – `AiAgentExtractStructured`: customise Basic-Text / Long-Text agents\n * – `AiAgentReference` : reference a custom AI-Agent by ID\n */\n +ai_agent?: AiAgentExtractStructured | AiAgentReference;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;;AAEA,SAASA,wBAAwB,QAAQ,4BAA4B;AACrE,SAASC,gBAAgB,QAAQ,oBAAoB;AACrD,SAASC,UAAU,QAAQ,cAAc","ignoreList":[]}
|
|
@@ -8,6 +8,7 @@ function _extends() { return _extends = Object.assign ? Object.assign.bind() : f
|
|
|
8
8
|
import * as React from 'react';
|
|
9
9
|
import Modal from 'react-modal';
|
|
10
10
|
import { injectIntl } from 'react-intl';
|
|
11
|
+
// $FlowFixMe
|
|
11
12
|
import ContentUploader from '../../content-uploader';
|
|
12
13
|
import messages from '../messages';
|
|
13
14
|
import { CLASS_MODAL_CONTENT_FULL_BLEED, CLASS_MODAL_OVERLAY, CLASS_MODAL } from '../../../constants';
|
|
@@ -8,6 +8,7 @@ import * as React from 'react';
|
|
|
8
8
|
import Modal from 'react-modal';
|
|
9
9
|
import { injectIntl } from 'react-intl';
|
|
10
10
|
import type { IntlShape } from 'react-intl';
|
|
11
|
+
// $FlowFixMe
|
|
11
12
|
import ContentUploader from '../../content-uploader';
|
|
12
13
|
import messages from '../messages';
|
|
13
14
|
import { CLASS_MODAL_CONTENT_FULL_BLEED, CLASS_MODAL_OVERLAY, CLASS_MODAL } from '../../../constants';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UploadDialog.js","names":["React","Modal","injectIntl","ContentUploader","messages","CLASS_MODAL_CONTENT_FULL_BLEED","CLASS_MODAL_OVERLAY","CLASS_MODAL","UploadDialog","isOpen","currentFolderId","token","sharedLink","sharedLinkPassword","apiHost","uploadHost","onClose","parentElement","appElement","onUpload","contentUploaderProps","requestInterceptor","responseInterceptor","intl","createElement","className","contentLabel","formatMessage","upload","onRequestClose","overlayClassName","parentSelector","portalClassName","_extends","onComplete","rootFolderId"],"sources":["../../../../src/elements/common/upload-dialog/UploadDialog.js"],"sourcesContent":["/**\n * @flow\n * @file Content Explorer Delete Confirmation Dialog\n * @author Box\n */\n\nimport * as React from 'react';\nimport Modal from 'react-modal';\nimport { injectIntl } from 'react-intl';\nimport type { IntlShape } from 'react-intl';\nimport ContentUploader from '../../content-uploader';\nimport messages from '../messages';\nimport { CLASS_MODAL_CONTENT_FULL_BLEED, CLASS_MODAL_OVERLAY, CLASS_MODAL } from '../../../constants';\nimport type { Token } from '../../../common/types/core';\n\ntype Props = {\n apiHost: string,\n appElement: HTMLElement,\n contentUploaderProps: ContentUploaderProps,\n currentFolderId: ?string,\n intl: IntlShape,\n isOpen: boolean,\n onClose: Function,\n onUpload?: Function,\n parentElement: HTMLElement,\n requestInterceptor?: Function,\n responseInterceptor?: Function,\n sharedLink?: string,\n sharedLinkPassword?: string,\n token: Token,\n uploadHost: string,\n};\n\nconst UploadDialog = ({\n isOpen,\n currentFolderId,\n token,\n sharedLink,\n sharedLinkPassword,\n apiHost,\n uploadHost,\n onClose,\n parentElement,\n appElement,\n onUpload,\n contentUploaderProps,\n requestInterceptor,\n responseInterceptor,\n intl,\n}: Props) => (\n <Modal\n appElement={appElement}\n className={CLASS_MODAL_CONTENT_FULL_BLEED}\n contentLabel={intl.formatMessage(messages.upload)}\n isOpen={isOpen}\n onRequestClose={onClose}\n overlayClassName={CLASS_MODAL_OVERLAY}\n parentSelector={() => parentElement}\n portalClassName={`${CLASS_MODAL} be-modal-upload`}\n >\n <ContentUploader\n {...contentUploaderProps}\n apiHost={apiHost}\n onClose={onClose}\n onComplete={onUpload}\n requestInterceptor={requestInterceptor}\n responseInterceptor={responseInterceptor}\n rootFolderId={currentFolderId}\n sharedLink={sharedLink}\n sharedLinkPassword={sharedLinkPassword}\n token={token}\n uploadHost={uploadHost}\n />\n </Modal>\n);\n\nexport default injectIntl(UploadDialog);\n"],"mappings":";AAAA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,KAAK,MAAM,aAAa;AAC/B,SAASC,UAAU,QAAQ,YAAY;AAEvC,OAAOC,eAAe,MAAM,wBAAwB;AACpD,OAAOC,QAAQ,MAAM,aAAa;AAClC,SAASC,8BAA8B,EAAEC,mBAAmB,EAAEC,WAAW,QAAQ,oBAAoB;AAqBrG,MAAMC,YAAY,GAAGA,CAAC;EAClBC,MAAM;EACNC,eAAe;EACfC,KAAK;EACLC,UAAU;EACVC,kBAAkB;EAClBC,OAAO;EACPC,UAAU;EACVC,OAAO;EACPC,aAAa;EACbC,UAAU;EACVC,QAAQ;EACRC,oBAAoB;EACpBC,kBAAkB;EAClBC,mBAAmB;EACnBC;AACG,CAAC,kBACJvB,KAAA,CAAAwB,aAAA,CAACvB,KAAK;EACFiB,UAAU,EAAEA,UAAW;EACvBO,SAAS,EAAEpB,8BAA+B;EAC1CqB,YAAY,EAAEH,IAAI,CAACI,aAAa,CAACvB,QAAQ,CAACwB,MAAM,CAAE;EAClDnB,MAAM,EAAEA,MAAO;EACfoB,cAAc,EAAEb,OAAQ;EACxBc,gBAAgB,EAAExB,mBAAoB;EACtCyB,cAAc,EAAEA,CAAA,KAAMd,aAAc;EACpCe,eAAe,EAAE,GAAGzB,WAAW;AAAmB,gBAElDP,KAAA,CAAAwB,aAAA,CAACrB,eAAe,EAAA8B,QAAA,KACRb,oBAAoB;EACxBN,OAAO,EAAEA,OAAQ;EACjBE,OAAO,EAAEA,OAAQ;EACjBkB,UAAU,EAAEf,QAAS;EACrBE,kBAAkB,EAAEA,kBAAmB;EACvCC,mBAAmB,EAAEA,mBAAoB;EACzCa,YAAY,EAAEzB,eAAgB;EAC9BE,UAAU,EAAEA,UAAW;EACvBC,kBAAkB,EAAEA,kBAAmB;EACvCF,KAAK,EAAEA,KAAM;EACbI,UAAU,EAAEA;AAAW,EAC1B,CACE,CACV;AAED,eAAeb,UAAU,CAACM,YAAY,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"UploadDialog.js","names":["React","Modal","injectIntl","ContentUploader","messages","CLASS_MODAL_CONTENT_FULL_BLEED","CLASS_MODAL_OVERLAY","CLASS_MODAL","UploadDialog","isOpen","currentFolderId","token","sharedLink","sharedLinkPassword","apiHost","uploadHost","onClose","parentElement","appElement","onUpload","contentUploaderProps","requestInterceptor","responseInterceptor","intl","createElement","className","contentLabel","formatMessage","upload","onRequestClose","overlayClassName","parentSelector","portalClassName","_extends","onComplete","rootFolderId"],"sources":["../../../../src/elements/common/upload-dialog/UploadDialog.js"],"sourcesContent":["/**\n * @flow\n * @file Content Explorer Delete Confirmation Dialog\n * @author Box\n */\n\nimport * as React from 'react';\nimport Modal from 'react-modal';\nimport { injectIntl } from 'react-intl';\nimport type { IntlShape } from 'react-intl';\n// $FlowFixMe\nimport ContentUploader from '../../content-uploader';\nimport messages from '../messages';\nimport { CLASS_MODAL_CONTENT_FULL_BLEED, CLASS_MODAL_OVERLAY, CLASS_MODAL } from '../../../constants';\nimport type { Token } from '../../../common/types/core';\n\ntype Props = {\n apiHost: string,\n appElement: HTMLElement,\n contentUploaderProps: ContentUploaderProps,\n currentFolderId: ?string,\n intl: IntlShape,\n isOpen: boolean,\n onClose: Function,\n onUpload?: Function,\n parentElement: HTMLElement,\n requestInterceptor?: Function,\n responseInterceptor?: Function,\n sharedLink?: string,\n sharedLinkPassword?: string,\n token: Token,\n uploadHost: string,\n};\n\nconst UploadDialog = ({\n isOpen,\n currentFolderId,\n token,\n sharedLink,\n sharedLinkPassword,\n apiHost,\n uploadHost,\n onClose,\n parentElement,\n appElement,\n onUpload,\n contentUploaderProps,\n requestInterceptor,\n responseInterceptor,\n intl,\n}: Props) => (\n <Modal\n appElement={appElement}\n className={CLASS_MODAL_CONTENT_FULL_BLEED}\n contentLabel={intl.formatMessage(messages.upload)}\n isOpen={isOpen}\n onRequestClose={onClose}\n overlayClassName={CLASS_MODAL_OVERLAY}\n parentSelector={() => parentElement}\n portalClassName={`${CLASS_MODAL} be-modal-upload`}\n >\n <ContentUploader\n {...contentUploaderProps}\n apiHost={apiHost}\n onClose={onClose}\n onComplete={onUpload}\n requestInterceptor={requestInterceptor}\n responseInterceptor={responseInterceptor}\n rootFolderId={currentFolderId}\n sharedLink={sharedLink}\n sharedLinkPassword={sharedLinkPassword}\n token={token}\n uploadHost={uploadHost}\n />\n </Modal>\n);\n\nexport default injectIntl(UploadDialog);\n"],"mappings":";AAAA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,KAAK,MAAM,aAAa;AAC/B,SAASC,UAAU,QAAQ,YAAY;AAEvC;AACA,OAAOC,eAAe,MAAM,wBAAwB;AACpD,OAAOC,QAAQ,MAAM,aAAa;AAClC,SAASC,8BAA8B,EAAEC,mBAAmB,EAAEC,WAAW,QAAQ,oBAAoB;AAqBrG,MAAMC,YAAY,GAAGA,CAAC;EAClBC,MAAM;EACNC,eAAe;EACfC,KAAK;EACLC,UAAU;EACVC,kBAAkB;EAClBC,OAAO;EACPC,UAAU;EACVC,OAAO;EACPC,aAAa;EACbC,UAAU;EACVC,QAAQ;EACRC,oBAAoB;EACpBC,kBAAkB;EAClBC,mBAAmB;EACnBC;AACG,CAAC,kBACJvB,KAAA,CAAAwB,aAAA,CAACvB,KAAK;EACFiB,UAAU,EAAEA,UAAW;EACvBO,SAAS,EAAEpB,8BAA+B;EAC1CqB,YAAY,EAAEH,IAAI,CAACI,aAAa,CAACvB,QAAQ,CAACwB,MAAM,CAAE;EAClDnB,MAAM,EAAEA,MAAO;EACfoB,cAAc,EAAEb,OAAQ;EACxBc,gBAAgB,EAAExB,mBAAoB;EACtCyB,cAAc,EAAEA,CAAA,KAAMd,aAAc;EACpCe,eAAe,EAAE,GAAGzB,WAAW;AAAmB,gBAElDP,KAAA,CAAAwB,aAAA,CAACrB,eAAe,EAAA8B,QAAA,KACRb,oBAAoB;EACxBN,OAAO,EAAEA,OAAQ;EACjBE,OAAO,EAAEA,OAAQ;EACjBkB,UAAU,EAAEf,QAAS;EACrBE,kBAAkB,EAAEA,kBAAmB;EACvCC,mBAAmB,EAAEA,mBAAoB;EACzCa,YAAY,EAAEzB,eAAgB;EAC9BE,UAAU,EAAEA,UAAW;EACvBC,kBAAkB,EAAEA,kBAAmB;EACvCF,KAAK,EAAEA,KAAM;EACbI,UAAU,EAAEA;AAAW,EAC1B,CACE,CACV;AAED,eAAeb,UAAU,CAACM,YAAY,CAAC","ignoreList":[]}
|
|
@@ -96,22 +96,29 @@ function useSidebarMetadataFetcher(api, fileId, onError, onSuccess, isFeatureEna
|
|
|
96
96
|
});
|
|
97
97
|
}, [api, file, onApiError, onSuccess]);
|
|
98
98
|
const [, setError] = React.useState();
|
|
99
|
-
const extractSuggestions = React.useCallback(async (templateKey, scope) => {
|
|
99
|
+
const extractSuggestions = React.useCallback(async (templateKey, scope, agentId) => {
|
|
100
100
|
const aiAPI = api.getIntelligenceAPI();
|
|
101
101
|
setExtractErrorCode(null);
|
|
102
102
|
let answer = null;
|
|
103
|
+
const customAiAgent = agentId ? {
|
|
104
|
+
ai_agent: {
|
|
105
|
+
type: 'ai_agent_id',
|
|
106
|
+
id: agentId
|
|
107
|
+
}
|
|
108
|
+
} : {};
|
|
109
|
+
const requestBody = _objectSpread({
|
|
110
|
+
items: [{
|
|
111
|
+
id: file.id,
|
|
112
|
+
type: file.type
|
|
113
|
+
}],
|
|
114
|
+
metadata_template: {
|
|
115
|
+
template_key: templateKey,
|
|
116
|
+
scope,
|
|
117
|
+
type: 'metadata_template'
|
|
118
|
+
}
|
|
119
|
+
}, customAiAgent);
|
|
103
120
|
try {
|
|
104
|
-
answer = await aiAPI.extractStructured(
|
|
105
|
-
items: [{
|
|
106
|
-
id: file.id,
|
|
107
|
-
type: file.type
|
|
108
|
-
}],
|
|
109
|
-
metadata_template: {
|
|
110
|
-
template_key: templateKey,
|
|
111
|
-
scope,
|
|
112
|
-
type: 'metadata_template'
|
|
113
|
-
}
|
|
114
|
-
});
|
|
121
|
+
answer = await aiAPI.extractStructured(requestBody);
|
|
115
122
|
} catch (error) {
|
|
116
123
|
// Axios makes the status code nested under the response object
|
|
117
124
|
if (error.response?.status === 408) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSidebarMetadataFetcher.js","names":["React","getProp","isEmpty","isUserCorrectableError","ERROR_CODE_EMPTY_METADATA_SUGGESTIONS","ERROR_CODE_FETCH_METADATA_SUGGESTIONS","ERROR_CODE_METADATA_AUTOFILL_TIMEOUT","ERROR_CODE_UNKNOWN","ERROR_CODE_METADATA_PRECONDITION_FAILED","FIELD_IS_EXTERNALLY_OWNED","FIELD_PERMISSIONS_CAN_UPLOAD","FIELD_PERMISSIONS","SUCCESS_CODE_UPDATE_METADATA_TEMPLATE_INSTANCE","SUCCESS_CODE_DELETE_METADATA_TEMPLATE_INSTANCE","messages","STATUS","useSidebarMetadataFetcher","api","fileId","onError","onSuccess","isFeatureEnabled","status","setStatus","useState","IDLE","file","setFile","templates","setTemplates","errorMessage","setErrorMessage","templateInstances","setTemplateInstances","extractErrorCode","setExtractErrorCode","onApiError","useCallback","error","code","message","errorStatus","isValidError","ERROR","isErrorDisplayed","fetchMetadataSuccessCallback","fetchedTemplates","fetchedTemplateInstances","SUCCESS","fetchMetadataErrorCallback","e","sidebarMetadataFetchingErrorContent","fetchMetadata","fetchedFile","getMetadataAPI","getMetadata","refreshCache","fetchFileSuccessCallback","currentFile","currentFileCanUpload","newFileCanUpload","shouldFetchMetadata","fetchFileErrorCallback","undefined","sidebarMetadataEditingErrorContent","handleDeleteMetadataInstance","metadataInstance","LOADING","deleteMetadata","handleCreateMetadataInstance","templateInstance","successCallback","createMetadataRedesign","handleUpdateMetadataInstance","JSONPatch","updateMetadataRedesign","setError","extractSuggestions","templateKey","scope","aiAPI","getIntelligenceAPI","answer","extractStructured","items","id","type","metadata_template","template_key","response","showNotification","Error","find","template","fields","map","field","value","key","_objectSpread","aiSuggestion","useEffect","getFileAPI","getFile","clearExtractError"],"sources":["../../../../src/elements/content-sidebar/hooks/useSidebarMetadataFetcher.ts"],"sourcesContent":["import * as React from 'react';\nimport getProp from 'lodash/get';\nimport { type MessageDescriptor } from 'react-intl';\nimport {\n type JSONPatchOperations,\n type MetadataTemplate,\n type MetadataTemplateInstance,\n type MetadataTemplateField,\n type MetadataFieldValue,\n} from '@box/metadata-editor';\nimport isEmpty from 'lodash/isEmpty';\nimport API from '../../../api';\nimport { type ElementsXhrError } from '../../../common/types/api';\nimport { isUserCorrectableError } from '../../../utils/error';\nimport {\n ERROR_CODE_EMPTY_METADATA_SUGGESTIONS,\n ERROR_CODE_FETCH_METADATA_SUGGESTIONS,\n ERROR_CODE_METADATA_AUTOFILL_TIMEOUT,\n ERROR_CODE_UNKNOWN,\n ERROR_CODE_METADATA_PRECONDITION_FAILED,\n FIELD_IS_EXTERNALLY_OWNED,\n FIELD_PERMISSIONS_CAN_UPLOAD,\n FIELD_PERMISSIONS,\n SUCCESS_CODE_UPDATE_METADATA_TEMPLATE_INSTANCE,\n SUCCESS_CODE_DELETE_METADATA_TEMPLATE_INSTANCE,\n} from '../../../constants';\n\nimport messages from '../../common/messages';\n\nimport { type BoxItem } from '../../../common/types/core';\nimport { type ErrorContextProps, type ExternalProps, type SuccessContextProps } from '../MetadataSidebarRedesign';\n\nexport enum STATUS {\n IDLE = 'idle',\n LOADING = 'loading',\n ERROR = 'error',\n SUCCESS = 'success',\n}\n\ninterface DataFetcher {\n clearExtractError: () => void;\n errorMessage: MessageDescriptor | null;\n extractErrorCode:\n | ERROR_CODE_METADATA_AUTOFILL_TIMEOUT\n | ERROR_CODE_METADATA_PRECONDITION_FAILED\n | ERROR_CODE_UNKNOWN\n | null;\n extractSuggestions: (templateKey: string, scope: string) => Promise<MetadataTemplateField[]>;\n file: BoxItem | null;\n handleCreateMetadataInstance: (\n templateInstance: MetadataTemplateInstance,\n successCallback: () => void,\n ) => Promise<void>;\n handleDeleteMetadataInstance: (metadataInstance: MetadataTemplateInstance) => Promise<void>;\n handleUpdateMetadataInstance: (\n metadataTemplateInstance: MetadataTemplateInstance,\n JSONPatch: Array<Object>,\n successCallback: () => void,\n ) => Promise<void>;\n status: STATUS;\n templateInstances: Array<MetadataTemplateInstance>;\n templates: Array<MetadataTemplate>;\n}\n\nfunction useSidebarMetadataFetcher(\n api: API,\n fileId: string,\n onError: ErrorContextProps['onError'],\n onSuccess: SuccessContextProps['onSuccess'],\n isFeatureEnabled: ExternalProps['isFeatureEnabled'],\n): DataFetcher {\n const [status, setStatus] = React.useState<STATUS>(STATUS.IDLE);\n const [file, setFile] = React.useState<BoxItem>(null);\n const [templates, setTemplates] = React.useState(null);\n const [errorMessage, setErrorMessage] = React.useState<MessageDescriptor | null>(null);\n const [templateInstances, setTemplateInstances] = React.useState<Array<MetadataTemplateInstance>>([]);\n const [extractErrorCode, setExtractErrorCode] = React.useState<string | null>(null);\n\n const onApiError = React.useCallback(\n (error: ElementsXhrError, code: string, message: MessageDescriptor) => {\n const { status: errorStatus } = error;\n const isValidError = isUserCorrectableError(errorStatus);\n setStatus(STATUS.ERROR);\n setErrorMessage(message);\n onError(error, code, {\n error,\n isErrorDisplayed: isValidError,\n });\n },\n [onError],\n );\n\n const fetchMetadataSuccessCallback = React.useCallback(\n ({\n templates: fetchedTemplates,\n templateInstances: fetchedTemplateInstances,\n }: {\n templates: Array<MetadataTemplate>;\n templateInstances: Array<MetadataTemplateInstance>;\n }) => {\n setErrorMessage(null);\n setStatus(STATUS.SUCCESS);\n setTemplateInstances(fetchedTemplateInstances);\n setTemplates(fetchedTemplates);\n },\n [],\n );\n\n const fetchMetadataErrorCallback = React.useCallback(\n (e: ElementsXhrError, code: string) => {\n setTemplates(null);\n setTemplateInstances(null);\n onApiError(e, code, messages.sidebarMetadataFetchingErrorContent);\n },\n [onApiError],\n );\n\n const fetchMetadata = React.useCallback(\n (fetchedFile: BoxItem) => {\n api.getMetadataAPI(false).getMetadata(\n fetchedFile,\n fetchMetadataSuccessCallback,\n fetchMetadataErrorCallback,\n isFeatureEnabled,\n { refreshCache: true },\n true,\n );\n },\n [api, fetchMetadataErrorCallback, fetchMetadataSuccessCallback, isFeatureEnabled],\n );\n\n const fetchFileSuccessCallback = React.useCallback(\n (fetchedFile: BoxItem) => {\n const { currentFile } = file ?? {};\n const currentFileCanUpload = getProp(currentFile, FIELD_PERMISSIONS_CAN_UPLOAD, false);\n const newFileCanUpload = getProp(fetchedFile, FIELD_PERMISSIONS_CAN_UPLOAD, false);\n const shouldFetchMetadata = !currentFile || currentFileCanUpload !== newFileCanUpload;\n setFile(fetchedFile);\n if (shouldFetchMetadata && fetchedFile) {\n fetchMetadata(fetchedFile);\n } else {\n setStatus(STATUS.SUCCESS);\n }\n },\n [fetchMetadata, file],\n );\n\n const fetchFileErrorCallback = React.useCallback(\n (e: ElementsXhrError, code: string) => {\n setFile(undefined);\n onApiError(e, code, messages.sidebarMetadataEditingErrorContent);\n },\n [onApiError],\n );\n\n const handleDeleteMetadataInstance = React.useCallback(\n async (metadataInstance: MetadataTemplateInstance): Promise<void> => {\n if (!file || !metadataInstance) {\n return;\n }\n setStatus(STATUS.LOADING);\n await api.getMetadataAPI(false).deleteMetadata(\n file,\n metadataInstance,\n () => {\n setStatus(STATUS.SUCCESS);\n onSuccess(SUCCESS_CODE_DELETE_METADATA_TEMPLATE_INSTANCE, true);\n },\n (error: ElementsXhrError, code: string) => {\n onApiError(error, code, messages.sidebarMetadataEditingErrorContent);\n },\n true,\n );\n },\n [api, onApiError, onSuccess, file],\n );\n\n const handleCreateMetadataInstance = React.useCallback(\n async (templateInstance: MetadataTemplateInstance, successCallback: () => void): Promise<void> => {\n await api\n .getMetadataAPI(false)\n .createMetadataRedesign(\n file,\n templateInstance,\n successCallback,\n (error: ElementsXhrError, code: string) =>\n onApiError(error, code, messages.sidebarMetadataEditingErrorContent),\n );\n },\n [api, file, onApiError],\n );\n\n const handleUpdateMetadataInstance = React.useCallback(\n async (\n metadataInstance: MetadataTemplateInstance,\n JSONPatch: JSONPatchOperations,\n successCallback: () => void,\n ) => {\n await api.getMetadataAPI(false).updateMetadataRedesign(\n file,\n metadataInstance,\n JSONPatch,\n () => {\n successCallback();\n onSuccess(SUCCESS_CODE_UPDATE_METADATA_TEMPLATE_INSTANCE, true);\n },\n (error: ElementsXhrError, code: string) => {\n onApiError(error, code, messages.sidebarMetadataEditingErrorContent);\n },\n );\n },\n [api, file, onApiError, onSuccess],\n );\n\n const [, setError] = React.useState();\n const extractSuggestions = React.useCallback(\n async (templateKey: string, scope: string): Promise<MetadataTemplateField[]> => {\n const aiAPI = api.getIntelligenceAPI();\n setExtractErrorCode(null);\n\n let answer = null;\n try {\n answer = (await aiAPI.extractStructured({\n items: [{ id: file.id, type: file.type }],\n metadata_template: { template_key: templateKey, scope, type: 'metadata_template' },\n })) as Record<string, MetadataFieldValue>;\n } catch (error) {\n // Axios makes the status code nested under the response object\n if (error.response?.status === 408) {\n onError(error, ERROR_CODE_METADATA_AUTOFILL_TIMEOUT);\n setExtractErrorCode(ERROR_CODE_METADATA_AUTOFILL_TIMEOUT);\n } else if (error.response?.status === 412) {\n onError(error, ERROR_CODE_METADATA_PRECONDITION_FAILED);\n setExtractErrorCode(ERROR_CODE_METADATA_PRECONDITION_FAILED);\n } else if (error.response?.status === 500) {\n onError(error, ERROR_CODE_UNKNOWN);\n setExtractErrorCode(ERROR_CODE_UNKNOWN);\n } else if (isUserCorrectableError(error.response?.status)) {\n onError(error, ERROR_CODE_FETCH_METADATA_SUGGESTIONS, { showNotification: true });\n } else {\n onError(error, ERROR_CODE_UNKNOWN, { showNotification: true });\n // react way of throwing errors from async callbacks - https://github.com/facebook/react/issues/14981#issuecomment-468460187\n setError(() => {\n throw error;\n });\n }\n return [];\n }\n\n if (isEmpty(answer)) {\n const error = new Error('No suggestions found.');\n onError(error, ERROR_CODE_EMPTY_METADATA_SUGGESTIONS, { showNotification: true });\n return [];\n }\n\n const templateInstance = templates.find(template => template.templateKey === templateKey && template.scope);\n const fields = templateInstance?.fields || [];\n\n return fields.map(field => {\n const value = answer[field.key];\n // TODO: @box/metadadata-editor does not support AI suggestions, enable once supported\n if (!value || field.type === 'taxonomy') {\n return field;\n }\n return {\n ...field,\n aiSuggestion: value,\n };\n });\n },\n [api, file, onError, templates],\n );\n\n React.useEffect(() => {\n if (status === STATUS.IDLE) {\n setStatus(STATUS.LOADING);\n api.getFileAPI().getFile(fileId, fetchFileSuccessCallback, fetchFileErrorCallback, {\n fields: [FIELD_IS_EXTERNALLY_OWNED, FIELD_PERMISSIONS],\n refreshCache: true,\n });\n }\n }, [api, fetchFileErrorCallback, fetchFileSuccessCallback, fileId, status]);\n\n return {\n clearExtractError: () => setExtractErrorCode(null),\n extractSuggestions,\n handleCreateMetadataInstance,\n handleDeleteMetadataInstance,\n handleUpdateMetadataInstance,\n extractErrorCode,\n errorMessage,\n file,\n status,\n templateInstances,\n templates,\n };\n}\n\nexport default useSidebarMetadataFetcher;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"useSidebarMetadataFetcher.js","names":["React","getProp","isEmpty","isUserCorrectableError","ERROR_CODE_EMPTY_METADATA_SUGGESTIONS","ERROR_CODE_FETCH_METADATA_SUGGESTIONS","ERROR_CODE_METADATA_AUTOFILL_TIMEOUT","ERROR_CODE_UNKNOWN","ERROR_CODE_METADATA_PRECONDITION_FAILED","FIELD_IS_EXTERNALLY_OWNED","FIELD_PERMISSIONS_CAN_UPLOAD","FIELD_PERMISSIONS","SUCCESS_CODE_UPDATE_METADATA_TEMPLATE_INSTANCE","SUCCESS_CODE_DELETE_METADATA_TEMPLATE_INSTANCE","messages","STATUS","useSidebarMetadataFetcher","api","fileId","onError","onSuccess","isFeatureEnabled","status","setStatus","useState","IDLE","file","setFile","templates","setTemplates","errorMessage","setErrorMessage","templateInstances","setTemplateInstances","extractErrorCode","setExtractErrorCode","onApiError","useCallback","error","code","message","errorStatus","isValidError","ERROR","isErrorDisplayed","fetchMetadataSuccessCallback","fetchedTemplates","fetchedTemplateInstances","SUCCESS","fetchMetadataErrorCallback","e","sidebarMetadataFetchingErrorContent","fetchMetadata","fetchedFile","getMetadataAPI","getMetadata","refreshCache","fetchFileSuccessCallback","currentFile","currentFileCanUpload","newFileCanUpload","shouldFetchMetadata","fetchFileErrorCallback","undefined","sidebarMetadataEditingErrorContent","handleDeleteMetadataInstance","metadataInstance","LOADING","deleteMetadata","handleCreateMetadataInstance","templateInstance","successCallback","createMetadataRedesign","handleUpdateMetadataInstance","JSONPatch","updateMetadataRedesign","setError","extractSuggestions","templateKey","scope","agentId","aiAPI","getIntelligenceAPI","answer","customAiAgent","ai_agent","type","id","requestBody","_objectSpread","items","metadata_template","template_key","extractStructured","response","showNotification","Error","find","template","fields","map","field","value","key","aiSuggestion","useEffect","getFileAPI","getFile","clearExtractError"],"sources":["../../../../src/elements/content-sidebar/hooks/useSidebarMetadataFetcher.ts"],"sourcesContent":["import * as React from 'react';\nimport getProp from 'lodash/get';\nimport { type MessageDescriptor } from 'react-intl';\nimport {\n type JSONPatchOperations,\n type MetadataTemplate,\n type MetadataTemplateInstance,\n type MetadataTemplateField,\n type MetadataFieldValue,\n} from '@box/metadata-editor';\nimport isEmpty from 'lodash/isEmpty';\nimport API from '../../../api';\nimport { type ElementsXhrError } from '../../../common/types/api';\nimport { isUserCorrectableError } from '../../../utils/error';\nimport {\n ERROR_CODE_EMPTY_METADATA_SUGGESTIONS,\n ERROR_CODE_FETCH_METADATA_SUGGESTIONS,\n ERROR_CODE_METADATA_AUTOFILL_TIMEOUT,\n ERROR_CODE_UNKNOWN,\n ERROR_CODE_METADATA_PRECONDITION_FAILED,\n FIELD_IS_EXTERNALLY_OWNED,\n FIELD_PERMISSIONS_CAN_UPLOAD,\n FIELD_PERMISSIONS,\n SUCCESS_CODE_UPDATE_METADATA_TEMPLATE_INSTANCE,\n SUCCESS_CODE_DELETE_METADATA_TEMPLATE_INSTANCE,\n} from '../../../constants';\n\nimport messages from '../../common/messages';\n\nimport { type BoxItem } from '../../../common/types/core';\nimport { type ErrorContextProps, type ExternalProps, type SuccessContextProps } from '../MetadataSidebarRedesign';\nimport { type AiExtractStructured } from '../../../api/schemas/AiExtractStructured';\n\nexport enum STATUS {\n IDLE = 'idle',\n LOADING = 'loading',\n ERROR = 'error',\n SUCCESS = 'success',\n}\n\ninterface DataFetcher {\n clearExtractError: () => void;\n errorMessage: MessageDescriptor | null;\n extractErrorCode:\n | ERROR_CODE_METADATA_AUTOFILL_TIMEOUT\n | ERROR_CODE_METADATA_PRECONDITION_FAILED\n | ERROR_CODE_UNKNOWN\n | null;\n extractSuggestions: (templateKey: string, scope: string, agentId?: string) => Promise<MetadataTemplateField[]>;\n file: BoxItem | null;\n handleCreateMetadataInstance: (\n templateInstance: MetadataTemplateInstance,\n successCallback: () => void,\n ) => Promise<void>;\n handleDeleteMetadataInstance: (metadataInstance: MetadataTemplateInstance) => Promise<void>;\n handleUpdateMetadataInstance: (\n metadataTemplateInstance: MetadataTemplateInstance,\n JSONPatch: Array<Object>,\n successCallback: () => void,\n ) => Promise<void>;\n status: STATUS;\n templateInstances: Array<MetadataTemplateInstance>;\n templates: Array<MetadataTemplate>;\n}\n\nfunction useSidebarMetadataFetcher(\n api: API,\n fileId: string,\n onError: ErrorContextProps['onError'],\n onSuccess: SuccessContextProps['onSuccess'],\n isFeatureEnabled: ExternalProps['isFeatureEnabled'],\n): DataFetcher {\n const [status, setStatus] = React.useState<STATUS>(STATUS.IDLE);\n const [file, setFile] = React.useState<BoxItem>(null);\n const [templates, setTemplates] = React.useState(null);\n const [errorMessage, setErrorMessage] = React.useState<MessageDescriptor | null>(null);\n const [templateInstances, setTemplateInstances] = React.useState<Array<MetadataTemplateInstance>>([]);\n const [extractErrorCode, setExtractErrorCode] = React.useState<string | null>(null);\n\n const onApiError = React.useCallback(\n (error: ElementsXhrError, code: string, message: MessageDescriptor) => {\n const { status: errorStatus } = error;\n const isValidError = isUserCorrectableError(errorStatus);\n setStatus(STATUS.ERROR);\n setErrorMessage(message);\n onError(error, code, {\n error,\n isErrorDisplayed: isValidError,\n });\n },\n [onError],\n );\n\n const fetchMetadataSuccessCallback = React.useCallback(\n ({\n templates: fetchedTemplates,\n templateInstances: fetchedTemplateInstances,\n }: {\n templates: Array<MetadataTemplate>;\n templateInstances: Array<MetadataTemplateInstance>;\n }) => {\n setErrorMessage(null);\n setStatus(STATUS.SUCCESS);\n setTemplateInstances(fetchedTemplateInstances);\n setTemplates(fetchedTemplates);\n },\n [],\n );\n\n const fetchMetadataErrorCallback = React.useCallback(\n (e: ElementsXhrError, code: string) => {\n setTemplates(null);\n setTemplateInstances(null);\n onApiError(e, code, messages.sidebarMetadataFetchingErrorContent);\n },\n [onApiError],\n );\n\n const fetchMetadata = React.useCallback(\n (fetchedFile: BoxItem) => {\n api.getMetadataAPI(false).getMetadata(\n fetchedFile,\n fetchMetadataSuccessCallback,\n fetchMetadataErrorCallback,\n isFeatureEnabled,\n { refreshCache: true },\n true,\n );\n },\n [api, fetchMetadataErrorCallback, fetchMetadataSuccessCallback, isFeatureEnabled],\n );\n\n const fetchFileSuccessCallback = React.useCallback(\n (fetchedFile: BoxItem) => {\n const { currentFile } = file ?? {};\n const currentFileCanUpload = getProp(currentFile, FIELD_PERMISSIONS_CAN_UPLOAD, false);\n const newFileCanUpload = getProp(fetchedFile, FIELD_PERMISSIONS_CAN_UPLOAD, false);\n const shouldFetchMetadata = !currentFile || currentFileCanUpload !== newFileCanUpload;\n setFile(fetchedFile);\n if (shouldFetchMetadata && fetchedFile) {\n fetchMetadata(fetchedFile);\n } else {\n setStatus(STATUS.SUCCESS);\n }\n },\n [fetchMetadata, file],\n );\n\n const fetchFileErrorCallback = React.useCallback(\n (e: ElementsXhrError, code: string) => {\n setFile(undefined);\n onApiError(e, code, messages.sidebarMetadataEditingErrorContent);\n },\n [onApiError],\n );\n\n const handleDeleteMetadataInstance = React.useCallback(\n async (metadataInstance: MetadataTemplateInstance): Promise<void> => {\n if (!file || !metadataInstance) {\n return;\n }\n setStatus(STATUS.LOADING);\n await api.getMetadataAPI(false).deleteMetadata(\n file,\n metadataInstance,\n () => {\n setStatus(STATUS.SUCCESS);\n onSuccess(SUCCESS_CODE_DELETE_METADATA_TEMPLATE_INSTANCE, true);\n },\n (error: ElementsXhrError, code: string) => {\n onApiError(error, code, messages.sidebarMetadataEditingErrorContent);\n },\n true,\n );\n },\n [api, onApiError, onSuccess, file],\n );\n\n const handleCreateMetadataInstance = React.useCallback(\n async (templateInstance: MetadataTemplateInstance, successCallback: () => void): Promise<void> => {\n await api\n .getMetadataAPI(false)\n .createMetadataRedesign(\n file,\n templateInstance,\n successCallback,\n (error: ElementsXhrError, code: string) =>\n onApiError(error, code, messages.sidebarMetadataEditingErrorContent),\n );\n },\n [api, file, onApiError],\n );\n\n const handleUpdateMetadataInstance = React.useCallback(\n async (\n metadataInstance: MetadataTemplateInstance,\n JSONPatch: JSONPatchOperations,\n successCallback: () => void,\n ) => {\n await api.getMetadataAPI(false).updateMetadataRedesign(\n file,\n metadataInstance,\n JSONPatch,\n () => {\n successCallback();\n onSuccess(SUCCESS_CODE_UPDATE_METADATA_TEMPLATE_INSTANCE, true);\n },\n (error: ElementsXhrError, code: string) => {\n onApiError(error, code, messages.sidebarMetadataEditingErrorContent);\n },\n );\n },\n [api, file, onApiError, onSuccess],\n );\n\n const [, setError] = React.useState();\n const extractSuggestions = React.useCallback(\n async (templateKey: string, scope: string, agentId?: string): Promise<MetadataTemplateField[]> => {\n const aiAPI = api.getIntelligenceAPI();\n setExtractErrorCode(null);\n let answer = null;\n const customAiAgent = agentId ? { ai_agent: { type: 'ai_agent_id', id: agentId } } : {};\n const requestBody: AiExtractStructured = {\n items: [{ id: file.id, type: file.type }],\n metadata_template: { template_key: templateKey, scope, type: 'metadata_template' },\n ...customAiAgent,\n };\n\n try {\n answer = (await aiAPI.extractStructured(requestBody)) as Record<string, MetadataFieldValue>;\n } catch (error) {\n // Axios makes the status code nested under the response object\n if (error.response?.status === 408) {\n onError(error, ERROR_CODE_METADATA_AUTOFILL_TIMEOUT);\n setExtractErrorCode(ERROR_CODE_METADATA_AUTOFILL_TIMEOUT);\n } else if (error.response?.status === 412) {\n onError(error, ERROR_CODE_METADATA_PRECONDITION_FAILED);\n setExtractErrorCode(ERROR_CODE_METADATA_PRECONDITION_FAILED);\n } else if (error.response?.status === 500) {\n onError(error, ERROR_CODE_UNKNOWN);\n setExtractErrorCode(ERROR_CODE_UNKNOWN);\n } else if (isUserCorrectableError(error.response?.status)) {\n onError(error, ERROR_CODE_FETCH_METADATA_SUGGESTIONS, { showNotification: true });\n } else {\n onError(error, ERROR_CODE_UNKNOWN, { showNotification: true });\n // react way of throwing errors from async callbacks - https://github.com/facebook/react/issues/14981#issuecomment-468460187\n setError(() => {\n throw error;\n });\n }\n return [];\n }\n\n if (isEmpty(answer)) {\n const error = new Error('No suggestions found.');\n onError(error, ERROR_CODE_EMPTY_METADATA_SUGGESTIONS, { showNotification: true });\n return [];\n }\n\n const templateInstance = templates.find(template => template.templateKey === templateKey && template.scope);\n const fields = templateInstance?.fields || [];\n\n return fields.map(field => {\n const value = answer[field.key];\n // TODO: @box/metadadata-editor does not support AI suggestions, enable once supported\n if (!value || field.type === 'taxonomy') {\n return field;\n }\n return {\n ...field,\n aiSuggestion: value,\n };\n });\n },\n [api, file, onError, templates],\n );\n\n React.useEffect(() => {\n if (status === STATUS.IDLE) {\n setStatus(STATUS.LOADING);\n api.getFileAPI().getFile(fileId, fetchFileSuccessCallback, fetchFileErrorCallback, {\n fields: [FIELD_IS_EXTERNALLY_OWNED, FIELD_PERMISSIONS],\n refreshCache: true,\n });\n }\n }, [api, fetchFileErrorCallback, fetchFileSuccessCallback, fileId, status]);\n\n return {\n clearExtractError: () => setExtractErrorCode(null),\n extractSuggestions,\n handleCreateMetadataInstance,\n handleDeleteMetadataInstance,\n handleUpdateMetadataInstance,\n extractErrorCode,\n errorMessage,\n file,\n status,\n templateInstances,\n templates,\n };\n}\n\nexport default useSidebarMetadataFetcher;\n"],"mappings":"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","ignoreList":[]}
|
package/es/elements/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
export { default as ContentExplorer } from './content-explorer';
|
|
3
3
|
export { default as ContentPreview } from './content-preview';
|
|
4
4
|
export { default as ContentPicker, ContentPickerPopup } from './content-picker';
|
|
5
|
+
// $FlowFixMe
|
|
5
6
|
export { default as ContentUploader, ContentUploaderPopup } from './content-uploader';
|
|
6
7
|
export { default as ContentOpenWith } from './content-open-with';
|
|
7
8
|
export { default as ContentSidebar } from './content-sidebar';
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
export { default as ContentExplorer } from './content-explorer';
|
|
4
4
|
export { default as ContentPreview } from './content-preview';
|
|
5
5
|
export { default as ContentPicker, ContentPickerPopup } from './content-picker';
|
|
6
|
+
// $FlowFixMe
|
|
6
7
|
export { default as ContentUploader, ContentUploaderPopup } from './content-uploader';
|
|
7
8
|
export { default as ContentOpenWith } from './content-open-with';
|
|
8
9
|
export { default as ContentSidebar } from './content-sidebar';
|
package/es/elements/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["default","ContentExplorer","ContentPreview","ContentPicker","ContentPickerPopup","ContentUploader","ContentUploaderPopup","ContentOpenWith","ContentSidebar","ContentSharing"],"sources":["../../src/elements/index.js"],"sourcesContent":["// @flow\n// $FlowFixMe\nexport { default as ContentExplorer } from './content-explorer';\nexport { default as ContentPreview } from './content-preview';\nexport { default as ContentPicker, ContentPickerPopup } from './content-picker';\nexport { default as ContentUploader, ContentUploaderPopup } from './content-uploader';\nexport { default as ContentOpenWith } from './content-open-with';\nexport { default as ContentSidebar } from './content-sidebar';\nexport { default as ContentSharing } from './content-sharing';\n"],"mappings":"AACA;AACA,SAASA,OAAO,IAAIC,eAAe,QAAQ,oBAAoB;AAC/D,SAASD,OAAO,IAAIE,cAAc,QAAQ,mBAAmB;AAC7D,SAASF,OAAO,IAAIG,aAAa,EAAEC,kBAAkB,QAAQ,kBAAkB;AAC/E,SAASJ,OAAO,IAAIK,eAAe,EAAEC,oBAAoB,QAAQ,oBAAoB;AACrF,SAASN,OAAO,IAAIO,eAAe,QAAQ,qBAAqB;AAChE,SAASP,OAAO,IAAIQ,cAAc,QAAQ,mBAAmB;AAC7D,SAASR,OAAO,IAAIS,cAAc,QAAQ,mBAAmB","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["default","ContentExplorer","ContentPreview","ContentPicker","ContentPickerPopup","ContentUploader","ContentUploaderPopup","ContentOpenWith","ContentSidebar","ContentSharing"],"sources":["../../src/elements/index.js"],"sourcesContent":["// @flow\n// $FlowFixMe\nexport { default as ContentExplorer } from './content-explorer';\nexport { default as ContentPreview } from './content-preview';\nexport { default as ContentPicker, ContentPickerPopup } from './content-picker';\n// $FlowFixMe\nexport { default as ContentUploader, ContentUploaderPopup } from './content-uploader';\nexport { default as ContentOpenWith } from './content-open-with';\nexport { default as ContentSidebar } from './content-sidebar';\nexport { default as ContentSharing } from './content-sharing';\n"],"mappings":"AACA;AACA,SAASA,OAAO,IAAIC,eAAe,QAAQ,oBAAoB;AAC/D,SAASD,OAAO,IAAIE,cAAc,QAAQ,mBAAmB;AAC7D,SAASF,OAAO,IAAIG,aAAa,EAAEC,kBAAkB,QAAQ,kBAAkB;AAC/E;AACA,SAASJ,OAAO,IAAIK,eAAe,EAAEC,oBAAoB,QAAQ,oBAAoB;AACrF,SAASN,OAAO,IAAIO,eAAe,QAAQ,qBAAqB;AAChE,SAASP,OAAO,IAAIQ,cAAc,QAAQ,mBAAmB;AAC7D,SAASR,OAAO,IAAIS,cAAc,QAAQ,mBAAmB","ignoreList":[]}
|
|
@@ -16,7 +16,9 @@ import * as React from 'react';
|
|
|
16
16
|
// eslint-disable-next-line react/no-deprecated
|
|
17
17
|
import { render } from 'react-dom';
|
|
18
18
|
import ES6Wrapper from './ES6Wrapper';
|
|
19
|
+
// $FlowFixMe
|
|
19
20
|
import ContentUploaderPopup from '../content-uploader/ContentUploaderPopup';
|
|
21
|
+
// $FlowFixMe
|
|
20
22
|
import WrappedContentUploaderComponent from '../content-uploader/ContentUploader';
|
|
21
23
|
class ContentUploader extends ES6Wrapper {
|
|
22
24
|
constructor(...args) {
|
|
@@ -9,7 +9,9 @@ import * as React from 'react';
|
|
|
9
9
|
// eslint-disable-next-line react/no-deprecated
|
|
10
10
|
import { render } from 'react-dom';
|
|
11
11
|
import ES6Wrapper from './ES6Wrapper';
|
|
12
|
+
// $FlowFixMe
|
|
12
13
|
import ContentUploaderPopup from '../content-uploader/ContentUploaderPopup';
|
|
14
|
+
// $FlowFixMe
|
|
13
15
|
import WrappedContentUploaderComponent from '../content-uploader/ContentUploader';
|
|
14
16
|
import type { UploadFileWithAPIOptions } from '../../common/types/upload';
|
|
15
17
|
import type { BoxItem } from '../../common/types/core';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentUploader.js","names":["React","render","ES6Wrapper","ContentUploaderPopup","WrappedContentUploaderComponent","ContentUploader","constructor","args","_defineProperty","emit","data","_this$options","options","modal","rest","_objectWithoutProperties","_excluded","UploaderComponent","createElement","_extends","language","messages","componentRef","setComponent","rootFolderId","id","token","onClose","onComplete","onError","onBeforeUpload","onUpload","container","global","Box"],"sources":["../../../src/elements/wrappers/ContentUploader.js"],"sourcesContent":["/**\n * @flow\n * @file Base class for the Content Uploader ES6 wrapper\n * @author Box\n */\n\nimport * as React from 'react';\n// TODO switch to createRoot when upgrading to React 18\n// eslint-disable-next-line react/no-deprecated\nimport { render } from 'react-dom';\nimport ES6Wrapper from './ES6Wrapper';\nimport ContentUploaderPopup from '../content-uploader/ContentUploaderPopup';\nimport WrappedContentUploaderComponent from '../content-uploader/ContentUploader';\nimport type { UploadFileWithAPIOptions } from '../../common/types/upload';\nimport type { BoxItem } from '../../common/types/core';\nimport type { ModalOptions } from '../common/flowTypes';\n\nclass ContentUploader extends ES6Wrapper {\n /**\n * Callback on closing uploader. Emits 'close' event.\n *\n * @return {void}\n */\n onClose = (): void => {\n this.emit('close');\n };\n\n /**\n * Callback when all files finish uploading. Emits 'complete' event with Box File objects of uploaded items as data.\n *\n * @param {Array} data - Completed upload items\n * @return {void}\n */\n onComplete = (data: BoxItem[]): void => {\n this.emit('complete', data);\n };\n\n /**\n * Callback on a single upload error. Emits 'uploaderror' event with information about the failed upload.\n *\n * @param {Object} data - File and error info about failed upload\n * @return {void}\n */\n onError = (data: any): void => {\n this.emit('error', data);\n };\n\n /**\n * Callback on a single pre-uploaded file. Emits 'beforeupload' event with the Box File object pre-upload.\n *\n * @param {Object} data - Upload item\n * @return {void}\n */\n onBeforeUpload = (data: UploadFileWithAPIOptions | File): void => {\n this.emit('beforeupload', data);\n };\n\n /**\n * Callback on a single successful upload. Emits 'uploadsuccess' event with Box File object of uploaded item.\n *\n * @param {BoxItem} data - Successfully uploaded item\n * @return {void}\n */\n onUpload = (data: BoxItem): void => {\n this.emit('upload', data);\n };\n\n /** @inheritdoc */\n render() {\n const { modal, ...rest }: { modal?: ModalOptions } = this.options;\n const UploaderComponent = modal ? ContentUploaderPopup : WrappedContentUploaderComponent;\n\n render(\n <UploaderComponent\n language={this.language}\n messages={this.messages}\n componentRef={this.setComponent}\n rootFolderId={this.id}\n token={this.token}\n onClose={this.onClose}\n onComplete={this.onComplete}\n onError={this.onError}\n onBeforeUpload={this.onBeforeUpload}\n onUpload={this.onUpload}\n modal={((modal: any): ModalOptions)}\n {...rest}\n />,\n this.container,\n );\n }\n}\n\nglobal.Box = global.Box || {};\nglobal.Box.ContentUploader = ContentUploader;\nexport default ContentUploader;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B;AACA;AACA,SAASC,MAAM,QAAQ,WAAW;AAClC,OAAOC,UAAU,MAAM,cAAc;AACrC,OAAOC,oBAAoB,MAAM,0CAA0C;AAC3E,OAAOC,+BAA+B,MAAM,qCAAqC;AAKjF,MAAMC,eAAe,SAASH,UAAU,CAAC;EAAAI,YAAA,GAAAC,IAAA;IAAA,SAAAA,IAAA;IACrC;AACJ;AACA;AACA;AACA;IAJIC,eAAA,kBAKU,MAAY;MAClB,IAAI,CAACC,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IALID,eAAA,qBAMcE,IAAe,IAAW;MACpC,IAAI,CAACD,IAAI,CAAC,UAAU,EAAEC,IAAI,CAAC;IAC/B,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IALIF,eAAA,kBAMWE,IAAS,IAAW;MAC3B,IAAI,CAACD,IAAI,CAAC,OAAO,EAAEC,IAAI,CAAC;IAC5B,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IALIF,eAAA,yBAMkBE,IAAqC,IAAW;MAC9D,IAAI,CAACD,IAAI,CAAC,cAAc,EAAEC,IAAI,CAAC;IACnC,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IALIF,eAAA,mBAMYE,IAAa,IAAW;MAChC,IAAI,CAACD,IAAI,CAAC,QAAQ,EAAEC,IAAI,CAAC;IAC7B,CAAC;EAAA;EAED;EACAT,MAAMA,CAAA,EAAG;IACL,MAAAU,aAAA,GAAqD,IAAI,CAACC,OAAO;MAA3D;QAAEC;MAAyC,CAAC,GAAAF,aAAA;MAAhCG,IAAI,GAAAC,wBAAA,CAAAJ,aAAA,EAAAK,SAAA;IACtB,MAAMC,iBAAiB,GAAGJ,KAAK,GAAGV,oBAAoB,GAAGC,+BAA+B;IAExFH,MAAM,eACFD,KAAA,CAAAkB,aAAA,CAACD,iBAAiB,EAAAE,QAAA;MACdC,QAAQ,EAAE,IAAI,CAACA,QAAS;MACxBC,QAAQ,EAAE,IAAI,CAACA,QAAS;MACxBC,YAAY,EAAE,IAAI,CAACC,YAAa;MAChCC,YAAY,EAAE,IAAI,CAACC,EAAG;MACtBC,KAAK,EAAE,IAAI,CAACA,KAAM;MAClBC,OAAO,EAAE,IAAI,CAACA,OAAQ;MACtBC,UAAU,EAAE,IAAI,CAACA,UAAW;MAC5BC,OAAO,EAAE,IAAI,CAACA,OAAQ;MACtBC,cAAc,EAAE,IAAI,CAACA,cAAe;MACpCC,QAAQ,EAAE,IAAI,CAACA,QAAS;MACxBlB,KAAK,EAAIA;IAA2B,GAChCC,IAAI,CACX,CAAC,EACF,IAAI,CAACkB,SACT,CAAC;EACL;AACJ;AAEAC,MAAM,CAACC,GAAG,GAAGD,MAAM,CAACC,GAAG,IAAI,CAAC,CAAC;AAC7BD,MAAM,CAACC,GAAG,CAAC7B,eAAe,GAAGA,eAAe;AAC5C,eAAeA,eAAe","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ContentUploader.js","names":["React","render","ES6Wrapper","ContentUploaderPopup","WrappedContentUploaderComponent","ContentUploader","constructor","args","_defineProperty","emit","data","_this$options","options","modal","rest","_objectWithoutProperties","_excluded","UploaderComponent","createElement","_extends","language","messages","componentRef","setComponent","rootFolderId","id","token","onClose","onComplete","onError","onBeforeUpload","onUpload","container","global","Box"],"sources":["../../../src/elements/wrappers/ContentUploader.js"],"sourcesContent":["/**\n * @flow\n * @file Base class for the Content Uploader ES6 wrapper\n * @author Box\n */\n\nimport * as React from 'react';\n// TODO switch to createRoot when upgrading to React 18\n// eslint-disable-next-line react/no-deprecated\nimport { render } from 'react-dom';\nimport ES6Wrapper from './ES6Wrapper';\n// $FlowFixMe\nimport ContentUploaderPopup from '../content-uploader/ContentUploaderPopup';\n// $FlowFixMe\nimport WrappedContentUploaderComponent from '../content-uploader/ContentUploader';\nimport type { UploadFileWithAPIOptions } from '../../common/types/upload';\nimport type { BoxItem } from '../../common/types/core';\nimport type { ModalOptions } from '../common/flowTypes';\n\nclass ContentUploader extends ES6Wrapper {\n /**\n * Callback on closing uploader. Emits 'close' event.\n *\n * @return {void}\n */\n onClose = (): void => {\n this.emit('close');\n };\n\n /**\n * Callback when all files finish uploading. Emits 'complete' event with Box File objects of uploaded items as data.\n *\n * @param {Array} data - Completed upload items\n * @return {void}\n */\n onComplete = (data: BoxItem[]): void => {\n this.emit('complete', data);\n };\n\n /**\n * Callback on a single upload error. Emits 'uploaderror' event with information about the failed upload.\n *\n * @param {Object} data - File and error info about failed upload\n * @return {void}\n */\n onError = (data: any): void => {\n this.emit('error', data);\n };\n\n /**\n * Callback on a single pre-uploaded file. Emits 'beforeupload' event with the Box File object pre-upload.\n *\n * @param {Object} data - Upload item\n * @return {void}\n */\n onBeforeUpload = (data: UploadFileWithAPIOptions | File): void => {\n this.emit('beforeupload', data);\n };\n\n /**\n * Callback on a single successful upload. Emits 'uploadsuccess' event with Box File object of uploaded item.\n *\n * @param {BoxItem} data - Successfully uploaded item\n * @return {void}\n */\n onUpload = (data: BoxItem): void => {\n this.emit('upload', data);\n };\n\n /** @inheritdoc */\n render() {\n const { modal, ...rest }: { modal?: ModalOptions } = this.options;\n const UploaderComponent = modal ? ContentUploaderPopup : WrappedContentUploaderComponent;\n\n render(\n <UploaderComponent\n language={this.language}\n messages={this.messages}\n componentRef={this.setComponent}\n rootFolderId={this.id}\n token={this.token}\n onClose={this.onClose}\n onComplete={this.onComplete}\n onError={this.onError}\n onBeforeUpload={this.onBeforeUpload}\n onUpload={this.onUpload}\n modal={((modal: any): ModalOptions)}\n {...rest}\n />,\n this.container,\n );\n }\n}\n\nglobal.Box = global.Box || {};\nglobal.Box.ContentUploader = ContentUploader;\nexport default ContentUploader;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B;AACA;AACA,SAASC,MAAM,QAAQ,WAAW;AAClC,OAAOC,UAAU,MAAM,cAAc;AACrC;AACA,OAAOC,oBAAoB,MAAM,0CAA0C;AAC3E;AACA,OAAOC,+BAA+B,MAAM,qCAAqC;AAKjF,MAAMC,eAAe,SAASH,UAAU,CAAC;EAAAI,YAAA,GAAAC,IAAA;IAAA,SAAAA,IAAA;IACrC;AACJ;AACA;AACA;AACA;IAJIC,eAAA,kBAKU,MAAY;MAClB,IAAI,CAACC,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IALID,eAAA,qBAMcE,IAAe,IAAW;MACpC,IAAI,CAACD,IAAI,CAAC,UAAU,EAAEC,IAAI,CAAC;IAC/B,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IALIF,eAAA,kBAMWE,IAAS,IAAW;MAC3B,IAAI,CAACD,IAAI,CAAC,OAAO,EAAEC,IAAI,CAAC;IAC5B,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IALIF,eAAA,yBAMkBE,IAAqC,IAAW;MAC9D,IAAI,CAACD,IAAI,CAAC,cAAc,EAAEC,IAAI,CAAC;IACnC,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IALIF,eAAA,mBAMYE,IAAa,IAAW;MAChC,IAAI,CAACD,IAAI,CAAC,QAAQ,EAAEC,IAAI,CAAC;IAC7B,CAAC;EAAA;EAED;EACAT,MAAMA,CAAA,EAAG;IACL,MAAAU,aAAA,GAAqD,IAAI,CAACC,OAAO;MAA3D;QAAEC;MAAyC,CAAC,GAAAF,aAAA;MAAhCG,IAAI,GAAAC,wBAAA,CAAAJ,aAAA,EAAAK,SAAA;IACtB,MAAMC,iBAAiB,GAAGJ,KAAK,GAAGV,oBAAoB,GAAGC,+BAA+B;IAExFH,MAAM,eACFD,KAAA,CAAAkB,aAAA,CAACD,iBAAiB,EAAAE,QAAA;MACdC,QAAQ,EAAE,IAAI,CAACA,QAAS;MACxBC,QAAQ,EAAE,IAAI,CAACA,QAAS;MACxBC,YAAY,EAAE,IAAI,CAACC,YAAa;MAChCC,YAAY,EAAE,IAAI,CAACC,EAAG;MACtBC,KAAK,EAAE,IAAI,CAACA,KAAM;MAClBC,OAAO,EAAE,IAAI,CAACA,OAAQ;MACtBC,UAAU,EAAE,IAAI,CAACA,UAAW;MAC5BC,OAAO,EAAE,IAAI,CAACA,OAAQ;MACtBC,cAAc,EAAE,IAAI,CAACA,cAAe;MACpCC,QAAQ,EAAE,IAAI,CAACA,QAAS;MACxBlB,KAAK,EAAIA;IAA2B,GAChCC,IAAI,CACX,CAAC,EACF,IAAI,CAACkB,SACT,CAAC;EACL;AACJ;AAEAC,MAAM,CAACC,GAAG,GAAGD,MAAM,CAACC,GAAG,IAAI,CAAC,CAAC;AAC7BD,MAAM,CAACC,GAAG,CAAC7B,eAAe,GAAGA,eAAe;AAC5C,eAAeA,eAAe","ignoreList":[]}
|
|
@@ -9,7 +9,7 @@ import IntegerMetadataField from './IntegerMetadataField';
|
|
|
9
9
|
import MultiSelectMetadataField from './MultiSelectMetadataField';
|
|
10
10
|
import ReadOnlyMetadataField from './ReadOnlyMetadataField';
|
|
11
11
|
import messages from './messages';
|
|
12
|
-
import { FIELD_TYPE_ENUM, FIELD_TYPE_FLOAT, FIELD_TYPE_INTEGER, FIELD_TYPE_STRING, FIELD_TYPE_DATE, FIELD_TYPE_MULTISELECT } from './constants';
|
|
12
|
+
import { FIELD_TYPE_ENUM, FIELD_TYPE_FLOAT, FIELD_TYPE_INTEGER, FIELD_TYPE_STRING, FIELD_TYPE_DATE, FIELD_TYPE_MULTISELECT, FIELD_TYPE_TAXONOMY } from './constants';
|
|
13
13
|
const MetadataField = ({
|
|
14
14
|
blurExceptionClassNames,
|
|
15
15
|
dataKey,
|
|
@@ -108,6 +108,17 @@ const MetadataField = ({
|
|
|
108
108
|
onChange: onChange,
|
|
109
109
|
onRemove: onRemove
|
|
110
110
|
});
|
|
111
|
+
|
|
112
|
+
// The taxonomy field is a valid field type which,
|
|
113
|
+
// although not yet supported here, should not trigger an error message.
|
|
114
|
+
// For this reason, we are currently setting it to read-only.
|
|
115
|
+
case FIELD_TYPE_TAXONOMY:
|
|
116
|
+
return /*#__PURE__*/React.createElement(ReadOnlyMetadataField, {
|
|
117
|
+
dataValue: dataValue,
|
|
118
|
+
description: description,
|
|
119
|
+
displayName: displayName,
|
|
120
|
+
type: type
|
|
121
|
+
});
|
|
111
122
|
default:
|
|
112
123
|
return /*#__PURE__*/React.createElement(InlineError, {
|
|
113
124
|
title: type
|
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
FIELD_TYPE_STRING,
|
|
22
22
|
FIELD_TYPE_DATE,
|
|
23
23
|
FIELD_TYPE_MULTISELECT,
|
|
24
|
+
FIELD_TYPE_TAXONOMY,
|
|
24
25
|
} from './constants';
|
|
25
26
|
|
|
26
27
|
type Props = {
|
|
@@ -160,6 +161,19 @@ const MetadataField = ({
|
|
|
160
161
|
/>
|
|
161
162
|
);
|
|
162
163
|
|
|
164
|
+
// The taxonomy field is a valid field type which,
|
|
165
|
+
// although not yet supported here, should not trigger an error message.
|
|
166
|
+
// For this reason, we are currently setting it to read-only.
|
|
167
|
+
case FIELD_TYPE_TAXONOMY:
|
|
168
|
+
return (
|
|
169
|
+
<ReadOnlyMetadataField
|
|
170
|
+
dataValue={dataValue}
|
|
171
|
+
description={description}
|
|
172
|
+
displayName={displayName}
|
|
173
|
+
type={type}
|
|
174
|
+
/>
|
|
175
|
+
);
|
|
176
|
+
|
|
163
177
|
default:
|
|
164
178
|
return (
|
|
165
179
|
<InlineError title={type}>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetadataField.js","names":["React","FormattedMessage","InlineError","TextMetadataField","EnumMetadataField","DateMetadataField","FloatMetadataField","IntegerMetadataField","MultiSelectMetadataField","ReadOnlyMetadataField","messages","FIELD_TYPE_ENUM","FIELD_TYPE_FLOAT","FIELD_TYPE_INTEGER","FIELD_TYPE_STRING","FIELD_TYPE_DATE","FIELD_TYPE_MULTISELECT","MetadataField","blurExceptionClassNames","dataKey","dataValue","displayName","description","error","isDisabled","isHidden","canEdit","onChange","onRemove","options","type","createElement","Error","title","invalidMetadataFieldType"],"sources":["../../../src/features/metadata-instance-fields/MetadataField.js"],"sourcesContent":["// @flow\nimport * as React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport InlineError from '../../components/inline-error/InlineError';\n\nimport TextMetadataField from './TextMetadataField';\nimport EnumMetadataField from './EnumMetadataField';\nimport DateMetadataField from './DateMetadataField';\nimport FloatMetadataField from './FloatMetadataField';\nimport IntegerMetadataField from './IntegerMetadataField';\nimport MultiSelectMetadataField from './MultiSelectMetadataField';\nimport ReadOnlyMetadataField from './ReadOnlyMetadataField';\nimport messages from './messages';\nimport type { MetadataFieldValue, MetadataTemplateFieldOption, MetadataFieldType } from '../../common/types/metadata';\n\nimport {\n FIELD_TYPE_ENUM,\n FIELD_TYPE_FLOAT,\n FIELD_TYPE_INTEGER,\n FIELD_TYPE_STRING,\n FIELD_TYPE_DATE,\n FIELD_TYPE_MULTISELECT,\n} from './constants';\n\ntype Props = {\n blurExceptionClassNames?: Array<string>,\n canEdit: boolean,\n dataKey: string,\n dataValue?: MetadataFieldValue,\n description?: string,\n displayName: string,\n error?: React.Node,\n isDisabled?: boolean,\n isHidden?: boolean,\n onChange?: (key: string, value: MetadataFieldValue) => void,\n onRemove?: (key: string) => void,\n options?: Array<MetadataTemplateFieldOption>,\n type: MetadataFieldType,\n};\n\nconst MetadataField = ({\n blurExceptionClassNames,\n dataKey,\n dataValue,\n displayName,\n description,\n error,\n isDisabled,\n isHidden,\n canEdit,\n onChange,\n onRemove,\n options,\n type,\n}: Props) => {\n if (isHidden) {\n return null;\n }\n\n if (!canEdit) {\n return (\n <ReadOnlyMetadataField\n dataValue={dataValue}\n description={description}\n displayName={displayName}\n type={type}\n />\n );\n }\n\n if (!onChange || !onRemove) {\n throw new Error('Need to have onChange and onRemove');\n }\n\n switch (type) {\n case FIELD_TYPE_STRING:\n return (\n <TextMetadataField\n dataKey={dataKey}\n dataValue={dataValue}\n description={description}\n displayName={displayName}\n isDisabled={isDisabled}\n onChange={onChange}\n onRemove={onRemove}\n />\n );\n\n case FIELD_TYPE_FLOAT:\n return (\n <FloatMetadataField\n dataKey={dataKey}\n dataValue={dataValue}\n description={description}\n displayName={displayName}\n error={error}\n isDisabled={isDisabled}\n onChange={onChange}\n onRemove={onRemove}\n type={type}\n />\n );\n\n case FIELD_TYPE_INTEGER:\n return (\n <IntegerMetadataField\n dataKey={dataKey}\n dataValue={dataValue}\n description={description}\n displayName={displayName}\n error={error}\n isDisabled={isDisabled}\n onChange={onChange}\n onRemove={onRemove}\n type={type}\n />\n );\n\n case FIELD_TYPE_ENUM:\n return (\n <EnumMetadataField\n blurExceptionClassNames={blurExceptionClassNames}\n dataKey={dataKey}\n dataValue={dataValue}\n description={description}\n displayName={displayName}\n isDisabled={isDisabled}\n onChange={onChange}\n onRemove={onRemove}\n options={options}\n />\n );\n\n case FIELD_TYPE_MULTISELECT:\n return (\n <MultiSelectMetadataField\n blurExceptionClassNames={blurExceptionClassNames}\n dataKey={dataKey}\n dataValue={dataValue}\n description={description}\n displayName={displayName}\n isDisabled={isDisabled}\n onChange={onChange}\n onRemove={onRemove}\n options={options}\n />\n );\n\n case FIELD_TYPE_DATE:\n return (\n <DateMetadataField\n dataKey={dataKey}\n dataValue={dataValue}\n description={description}\n displayName={displayName}\n isDisabled={isDisabled}\n onChange={onChange}\n onRemove={onRemove}\n />\n );\n\n default:\n return (\n <InlineError title={type}>\n <FormattedMessage {...messages.invalidMetadataFieldType} />\n </InlineError>\n );\n }\n};\n\nexport default MetadataField;\n"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,gBAAgB,QAAQ,YAAY;AAE7C,OAAOC,WAAW,MAAM,2CAA2C;AAEnE,OAAOC,iBAAiB,MAAM,qBAAqB;AACnD,OAAOC,iBAAiB,MAAM,qBAAqB;AACnD,OAAOC,iBAAiB,MAAM,qBAAqB;AACnD,OAAOC,kBAAkB,MAAM,sBAAsB;AACrD,OAAOC,oBAAoB,MAAM,wBAAwB;AACzD,OAAOC,wBAAwB,MAAM,4BAA4B;AACjE,OAAOC,qBAAqB,MAAM,yBAAyB;AAC3D,OAAOC,QAAQ,MAAM,YAAY;AAGjC,SACIC,eAAe,EACfC,gBAAgB,EAChBC,kBAAkB,EAClBC,iBAAiB,EACjBC,eAAe,EACfC,sBAAsB,
|
|
1
|
+
{"version":3,"file":"MetadataField.js","names":["React","FormattedMessage","InlineError","TextMetadataField","EnumMetadataField","DateMetadataField","FloatMetadataField","IntegerMetadataField","MultiSelectMetadataField","ReadOnlyMetadataField","messages","FIELD_TYPE_ENUM","FIELD_TYPE_FLOAT","FIELD_TYPE_INTEGER","FIELD_TYPE_STRING","FIELD_TYPE_DATE","FIELD_TYPE_MULTISELECT","FIELD_TYPE_TAXONOMY","MetadataField","blurExceptionClassNames","dataKey","dataValue","displayName","description","error","isDisabled","isHidden","canEdit","onChange","onRemove","options","type","createElement","Error","title","invalidMetadataFieldType"],"sources":["../../../src/features/metadata-instance-fields/MetadataField.js"],"sourcesContent":["// @flow\nimport * as React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport InlineError from '../../components/inline-error/InlineError';\n\nimport TextMetadataField from './TextMetadataField';\nimport EnumMetadataField from './EnumMetadataField';\nimport DateMetadataField from './DateMetadataField';\nimport FloatMetadataField from './FloatMetadataField';\nimport IntegerMetadataField from './IntegerMetadataField';\nimport MultiSelectMetadataField from './MultiSelectMetadataField';\nimport ReadOnlyMetadataField from './ReadOnlyMetadataField';\nimport messages from './messages';\nimport type { MetadataFieldValue, MetadataTemplateFieldOption, MetadataFieldType } from '../../common/types/metadata';\n\nimport {\n FIELD_TYPE_ENUM,\n FIELD_TYPE_FLOAT,\n FIELD_TYPE_INTEGER,\n FIELD_TYPE_STRING,\n FIELD_TYPE_DATE,\n FIELD_TYPE_MULTISELECT,\n FIELD_TYPE_TAXONOMY,\n} from './constants';\n\ntype Props = {\n blurExceptionClassNames?: Array<string>,\n canEdit: boolean,\n dataKey: string,\n dataValue?: MetadataFieldValue,\n description?: string,\n displayName: string,\n error?: React.Node,\n isDisabled?: boolean,\n isHidden?: boolean,\n onChange?: (key: string, value: MetadataFieldValue) => void,\n onRemove?: (key: string) => void,\n options?: Array<MetadataTemplateFieldOption>,\n type: MetadataFieldType,\n};\n\nconst MetadataField = ({\n blurExceptionClassNames,\n dataKey,\n dataValue,\n displayName,\n description,\n error,\n isDisabled,\n isHidden,\n canEdit,\n onChange,\n onRemove,\n options,\n type,\n}: Props) => {\n if (isHidden) {\n return null;\n }\n\n if (!canEdit) {\n return (\n <ReadOnlyMetadataField\n dataValue={dataValue}\n description={description}\n displayName={displayName}\n type={type}\n />\n );\n }\n\n if (!onChange || !onRemove) {\n throw new Error('Need to have onChange and onRemove');\n }\n\n switch (type) {\n case FIELD_TYPE_STRING:\n return (\n <TextMetadataField\n dataKey={dataKey}\n dataValue={dataValue}\n description={description}\n displayName={displayName}\n isDisabled={isDisabled}\n onChange={onChange}\n onRemove={onRemove}\n />\n );\n\n case FIELD_TYPE_FLOAT:\n return (\n <FloatMetadataField\n dataKey={dataKey}\n dataValue={dataValue}\n description={description}\n displayName={displayName}\n error={error}\n isDisabled={isDisabled}\n onChange={onChange}\n onRemove={onRemove}\n type={type}\n />\n );\n\n case FIELD_TYPE_INTEGER:\n return (\n <IntegerMetadataField\n dataKey={dataKey}\n dataValue={dataValue}\n description={description}\n displayName={displayName}\n error={error}\n isDisabled={isDisabled}\n onChange={onChange}\n onRemove={onRemove}\n type={type}\n />\n );\n\n case FIELD_TYPE_ENUM:\n return (\n <EnumMetadataField\n blurExceptionClassNames={blurExceptionClassNames}\n dataKey={dataKey}\n dataValue={dataValue}\n description={description}\n displayName={displayName}\n isDisabled={isDisabled}\n onChange={onChange}\n onRemove={onRemove}\n options={options}\n />\n );\n\n case FIELD_TYPE_MULTISELECT:\n return (\n <MultiSelectMetadataField\n blurExceptionClassNames={blurExceptionClassNames}\n dataKey={dataKey}\n dataValue={dataValue}\n description={description}\n displayName={displayName}\n isDisabled={isDisabled}\n onChange={onChange}\n onRemove={onRemove}\n options={options}\n />\n );\n\n case FIELD_TYPE_DATE:\n return (\n <DateMetadataField\n dataKey={dataKey}\n dataValue={dataValue}\n description={description}\n displayName={displayName}\n isDisabled={isDisabled}\n onChange={onChange}\n onRemove={onRemove}\n />\n );\n\n // The taxonomy field is a valid field type which,\n // although not yet supported here, should not trigger an error message.\n // For this reason, we are currently setting it to read-only.\n case FIELD_TYPE_TAXONOMY:\n return (\n <ReadOnlyMetadataField\n dataValue={dataValue}\n description={description}\n displayName={displayName}\n type={type}\n />\n );\n\n default:\n return (\n <InlineError title={type}>\n <FormattedMessage {...messages.invalidMetadataFieldType} />\n </InlineError>\n );\n }\n};\n\nexport default MetadataField;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,7 +14,7 @@ interface DataFetcher {
|
|
|
14
14
|
clearExtractError: () => void;
|
|
15
15
|
errorMessage: MessageDescriptor | null;
|
|
16
16
|
extractErrorCode: ERROR_CODE_METADATA_AUTOFILL_TIMEOUT | ERROR_CODE_METADATA_PRECONDITION_FAILED | ERROR_CODE_UNKNOWN | null;
|
|
17
|
-
extractSuggestions: (templateKey: string, scope: string) => Promise<MetadataTemplateField[]>;
|
|
17
|
+
extractSuggestions: (templateKey: string, scope: string, agentId?: string) => Promise<MetadataTemplateField[]>;
|
|
18
18
|
file: BoxItem | null;
|
|
19
19
|
handleCreateMetadataInstance: (templateInstance: MetadataTemplateInstance, successCallback: () => void) => Promise<void>;
|
|
20
20
|
handleDeleteMetadataInstance: (metadataInstance: MetadataTemplateInstance) => Promise<void>;
|
package/i18n/ja-JP.js
CHANGED
|
@@ -906,8 +906,8 @@ export default {
|
|
|
906
906
|
"boxui.shareMenu.shortcutOnly": "ショートカットのみ",
|
|
907
907
|
"boxui.shareMenu.viewAndDownload": "表示とダウンロード",
|
|
908
908
|
"boxui.shareMenu.viewOnly": "表示のみ",
|
|
909
|
-
"boxui.timeInput.emptyTimeError": "必須フィールドです。HH:MM
|
|
910
|
-
"boxui.timeInput.invalidTimeError": "時間の形式が無効です。HH:MM
|
|
909
|
+
"boxui.timeInput.emptyTimeError": "必須フィールドです。HH:MM AM/PM形式で時間を入力してください。",
|
|
910
|
+
"boxui.timeInput.invalidTimeError": "時間の形式が無効です。HH:MM AM/PM形式で時間を入力してください。",
|
|
911
911
|
"boxui.unifiedShare.collabAccess": "コラボレータのアクセス権限",
|
|
912
912
|
"boxui.unifiedShare.collaboration.groupCollabText": "グループ",
|
|
913
913
|
"boxui.unifiedShare.collaboration.userCollabText": "ユーザー",
|
package/i18n/ja-JP.properties
CHANGED
|
@@ -1813,9 +1813,9 @@ boxui.shareMenu.viewAndDownload = 表示とダウンロード
|
|
|
1813
1813
|
# Description of permissions granted to users who have access to the shared link
|
|
1814
1814
|
boxui.shareMenu.viewOnly = 表示のみ
|
|
1815
1815
|
# Error message for empty time formats. "HH:MM A" should be localized.
|
|
1816
|
-
boxui.timeInput.emptyTimeError = 必須フィールドです。HH:MM
|
|
1816
|
+
boxui.timeInput.emptyTimeError = 必須フィールドです。HH:MM AM/PM形式で時間を入力してください。
|
|
1817
1817
|
# Error message for invalid time formats. "HH:MM A" should be localized.
|
|
1818
|
-
boxui.timeInput.invalidTimeError = 時間の形式が無効です。HH:MM
|
|
1818
|
+
boxui.timeInput.invalidTimeError = 時間の形式が無効です。HH:MM AM/PM形式で時間を入力してください。
|
|
1819
1819
|
# Used in a dialog box that urges the user to upgrade. This is substituted into the middle of the sentence in the string with id boxui.unifiedShare.levelOfCollabAccess
|
|
1820
1820
|
boxui.unifiedShare.collabAccess = コラボレータのアクセス権限
|
|
1821
1821
|
# Text to display for a group of users who have accepted an invitation to collaborate
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "box-ui-elements",
|
|
3
|
-
"version": "23.4.0-beta.
|
|
3
|
+
"version": "23.4.0-beta.14",
|
|
4
4
|
"description": "Box UI Elements",
|
|
5
5
|
"author": "Box (https://www.box.com/)",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -124,7 +124,7 @@
|
|
|
124
124
|
"@babel/template": "^7.24.7",
|
|
125
125
|
"@babel/types": "^7.24.7",
|
|
126
126
|
"@box/blueprint-web": "^12.7.1",
|
|
127
|
-
"@box/blueprint-web-assets": "^4.
|
|
127
|
+
"@box/blueprint-web-assets": "^4.53.0",
|
|
128
128
|
"@box/box-ai-agent-selector": "^0.41.10",
|
|
129
129
|
"@box/box-ai-content-answers": "^0.124.1",
|
|
130
130
|
"@box/cldr-data": "^34.2.0",
|
|
@@ -132,7 +132,7 @@
|
|
|
132
132
|
"@box/frontend": "^11.0.1",
|
|
133
133
|
"@box/item-icon": "^0.9.83",
|
|
134
134
|
"@box/languages": "^1.0.0",
|
|
135
|
-
"@box/metadata-editor": "^0.
|
|
135
|
+
"@box/metadata-editor": "^0.112.0",
|
|
136
136
|
"@box/react-virtualized": "9.22.3-rc-box.9",
|
|
137
137
|
"@cfaester/enzyme-adapter-react-18": "^0.8.0",
|
|
138
138
|
"@chromatic-com/storybook": "^1.6.1",
|
|
@@ -296,13 +296,13 @@
|
|
|
296
296
|
},
|
|
297
297
|
"peerDependencies": {
|
|
298
298
|
"@box/blueprint-web": "^12.7.1",
|
|
299
|
-
"@box/blueprint-web-assets": "^4.
|
|
299
|
+
"@box/blueprint-web-assets": "^4.53.0",
|
|
300
300
|
"@box/box-ai-agent-selector": "^0.41.10",
|
|
301
301
|
"@box/box-ai-content-answers": "^0.124.1",
|
|
302
302
|
"@box/cldr-data": ">=34.2.0",
|
|
303
303
|
"@box/combobox-with-api": "^0.34.9",
|
|
304
304
|
"@box/item-icon": "^0.9.83",
|
|
305
|
-
"@box/metadata-editor": "^0.
|
|
305
|
+
"@box/metadata-editor": "^0.112.0",
|
|
306
306
|
"@box/react-virtualized": "9.22.3-rc-box.9",
|
|
307
307
|
"@hapi/address": "^2.1.4",
|
|
308
308
|
"axios": "^0.30.0",
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @flow
|
|
3
|
+
* @author Box
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export type AiAgentTypeField = 'ai_agent_id';
|
|
7
|
+
|
|
8
|
+
export interface AiAgentReference {
|
|
9
|
+
/**
|
|
10
|
+
* AI Agent Reference to pass custom AI Agent ID to requests.
|
|
11
|
+
* See https://developer.box.com/reference/resources/ai-agent-reference/
|
|
12
|
+
*/
|
|
13
|
+
+type: AiAgentTypeField;
|
|
14
|
+
+id: string;
|
|
15
|
+
}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { AiAgentExtractStructured } from './AiAgentExtractStructured';
|
|
7
|
+
import { AiAgentReference } from './AiAgentReference';
|
|
7
8
|
import { AiItemBase } from './AiItemBase';
|
|
8
9
|
|
|
9
10
|
export type AiExtractStructuredMetadataTemplateTypeField = 'metadata_template';
|
|
@@ -80,5 +81,10 @@ export interface AiExtractStructured {
|
|
|
80
81
|
* The JSON blob that contains overrides for the agent config.
|
|
81
82
|
*/
|
|
82
83
|
+agent_config?: string;
|
|
83
|
-
|
|
84
|
+
/**
|
|
85
|
+
* * AI agent definition to use for extraction.
|
|
86
|
+
* – `AiAgentExtractStructured`: customise Basic-Text / Long-Text agents
|
|
87
|
+
* – `AiAgentReference` : reference a custom AI-Agent by ID
|
|
88
|
+
*/
|
|
89
|
+
+ai_agent?: AiAgentExtractStructured | AiAgentReference;
|
|
84
90
|
}
|
|
@@ -8,6 +8,7 @@ import * as React from 'react';
|
|
|
8
8
|
import Modal from 'react-modal';
|
|
9
9
|
import { injectIntl } from 'react-intl';
|
|
10
10
|
import type { IntlShape } from 'react-intl';
|
|
11
|
+
// $FlowFixMe
|
|
11
12
|
import ContentUploader from '../../content-uploader';
|
|
12
13
|
import messages from '../messages';
|
|
13
14
|
import { CLASS_MODAL_CONTENT_FULL_BLEED, CLASS_MODAL_OVERLAY, CLASS_MODAL } from '../../../constants';
|