box-ui-elements 23.3.0-beta.5 → 23.3.0-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/dist/explorer.css +1 -1
  2. package/dist/explorer.js +1 -1
  3. package/dist/openwith.js +1 -1
  4. package/dist/picker.js +1 -1
  5. package/dist/preview.css +1 -1
  6. package/dist/preview.js +1 -1
  7. package/dist/sharing.js +1 -1
  8. package/dist/sidebar.css +1 -1
  9. package/dist/sidebar.js +1 -1
  10. package/dist/uploader.js +1 -1
  11. package/es/features/metadata-instance-editor/CascadePolicy.js +60 -2
  12. package/es/features/metadata-instance-editor/CascadePolicy.js.flow +72 -1
  13. package/es/features/metadata-instance-editor/CascadePolicy.js.map +1 -1
  14. package/es/features/metadata-instance-editor/CascadePolicy.scss +15 -1
  15. package/es/features/metadata-instance-editor/CascadePolicy.stories.js +24 -0
  16. package/es/features/metadata-instance-editor/CascadePolicy.stories.js.flow +31 -0
  17. package/es/features/metadata-instance-editor/CascadePolicy.stories.js.map +1 -0
  18. package/es/features/metadata-instance-editor/Instance.js +14 -2
  19. package/es/features/metadata-instance-editor/Instance.js.flow +23 -3
  20. package/es/features/metadata-instance-editor/Instance.js.map +1 -1
  21. package/es/features/metadata-instance-editor/Instances.js +2 -0
  22. package/es/features/metadata-instance-editor/Instances.js.flow +3 -0
  23. package/es/features/metadata-instance-editor/Instances.js.map +1 -1
  24. package/es/features/metadata-instance-editor/MetadataInstanceEditor.js +2 -0
  25. package/es/features/metadata-instance-editor/MetadataInstanceEditor.js.flow +3 -0
  26. package/es/features/metadata-instance-editor/MetadataInstanceEditor.js.map +1 -1
  27. package/es/features/metadata-instance-editor/messages.js +20 -0
  28. package/es/features/metadata-instance-editor/messages.js.flow +26 -0
  29. package/es/features/metadata-instance-editor/messages.js.map +1 -1
  30. package/i18n/bn-IN.js +5 -0
  31. package/i18n/bn-IN.properties +10 -0
  32. package/i18n/da-DK.js +5 -0
  33. package/i18n/da-DK.properties +10 -0
  34. package/i18n/de-DE.js +5 -0
  35. package/i18n/de-DE.properties +10 -0
  36. package/i18n/en-AU.js +5 -0
  37. package/i18n/en-AU.properties +10 -0
  38. package/i18n/en-CA.js +5 -0
  39. package/i18n/en-CA.properties +10 -0
  40. package/i18n/en-GB.js +5 -0
  41. package/i18n/en-GB.properties +10 -0
  42. package/i18n/en-US.js +5 -0
  43. package/i18n/en-US.properties +10 -0
  44. package/i18n/en-x-pseudo.js +1016 -1011
  45. package/i18n/en-x-pseudo.properties +1021 -1011
  46. package/i18n/es-419.js +5 -0
  47. package/i18n/es-419.properties +10 -0
  48. package/i18n/es-ES.js +5 -0
  49. package/i18n/es-ES.properties +10 -0
  50. package/i18n/fi-FI.js +5 -0
  51. package/i18n/fi-FI.properties +10 -0
  52. package/i18n/fr-CA.js +5 -0
  53. package/i18n/fr-CA.properties +10 -0
  54. package/i18n/fr-FR.js +5 -0
  55. package/i18n/fr-FR.properties +10 -0
  56. package/i18n/hi-IN.js +5 -0
  57. package/i18n/hi-IN.properties +10 -0
  58. package/i18n/it-IT.js +5 -0
  59. package/i18n/it-IT.properties +10 -0
  60. package/i18n/ja-JP.js +5 -0
  61. package/i18n/ja-JP.properties +10 -0
  62. package/i18n/ko-KR.js +5 -0
  63. package/i18n/ko-KR.properties +10 -0
  64. package/i18n/nb-NO.js +5 -0
  65. package/i18n/nb-NO.properties +10 -0
  66. package/i18n/nl-NL.js +5 -0
  67. package/i18n/nl-NL.properties +10 -0
  68. package/i18n/pl-PL.js +5 -0
  69. package/i18n/pl-PL.properties +10 -0
  70. package/i18n/pt-BR.js +5 -0
  71. package/i18n/pt-BR.properties +10 -0
  72. package/i18n/ru-RU.js +5 -0
  73. package/i18n/ru-RU.properties +10 -0
  74. package/i18n/sv-SE.js +5 -0
  75. package/i18n/sv-SE.properties +10 -0
  76. package/i18n/tr-TR.js +5 -0
  77. package/i18n/tr-TR.properties +10 -0
  78. package/i18n/zh-CN.js +5 -0
  79. package/i18n/zh-CN.properties +10 -0
  80. package/i18n/zh-TW.js +5 -0
  81. package/i18n/zh-TW.properties +10 -0
  82. package/package.json +2 -2
  83. package/src/features/metadata-instance-editor/CascadePolicy.js +72 -1
  84. package/src/features/metadata-instance-editor/CascadePolicy.scss +15 -1
  85. package/src/features/metadata-instance-editor/CascadePolicy.stories.js +31 -0
  86. package/src/features/metadata-instance-editor/Instance.js +23 -3
  87. package/src/features/metadata-instance-editor/Instances.js +3 -0
  88. package/src/features/metadata-instance-editor/MetadataInstanceEditor.js +3 -0
  89. package/src/features/metadata-instance-editor/__tests__/CascadePolicy.test.js +51 -0
  90. package/src/features/metadata-instance-editor/__tests__/__snapshots__/CascadePolicy.test.js.snap +9 -9
  91. package/src/features/metadata-instance-editor/__tests__/__snapshots__/Instance.test.js.snap +4 -1
  92. package/src/features/metadata-instance-editor/__tests__/__snapshots__/Instances.test.js.snap +2 -0
  93. package/src/features/metadata-instance-editor/__tests__/__snapshots__/MetadataInstanceEditor.test.js.snap +1 -0
  94. package/src/features/metadata-instance-editor/messages.js +26 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Instance.js","names":["React","injectIntl","FormattedMessage","classNames","isEqual","cloneDeep","noop","Collapsible","Form","LoadingIndicatorWrapper","PlainButton","Tooltip","IconMetadataColored","IconAlertCircle","IconEdit","bdlWatermelonRed","scrollIntoView","CascadePolicy","TemplatedInstance","CustomInstance","MetadataInstanceConfirmDialog","Footer","messages","FIELD_TYPE_FLOAT","FIELD_TYPE_INTEGER","TEMPLATE_CUSTOM_PROPERTIES","JSON_PATCH_OP_REMOVE","JSON_PATCH_OP_ADD","JSON_PATCH_OP_REPLACE","JSON_PATCH_OP_TEST","isValidValue","isHidden","RESIN_TAG_TARGET","createFieldKeyToTypeMap","fields","reduce","prev","key","type","getValue","data","value","parseFloat","parseInt","Instance","PureComponent","constructor","props","_defineProperty","id","onModification","setState","getState","shouldConfirmRemove","isEditing","onRemove","isBusy","cascadePolicy","originalData","isDirty","isCascadingPolicyApplicable","onSave","currentData","errors","isCascadingEnabled","isCascadingOverwritten","state","Object","keys","length","shouldShowCascadeOptions","createJSONPatch","canEdit","undefined","isEnabled","overwrite","isValid","finalErrors","_objectSpread","finalData","createElement","invalidInput","setDirty","isFile","template","message","isProperties","templateKey","_extends","values","metadataName","displayName","hasDataChanged","hasCascadingChanged","createRef","prevState","intl","editClassName","metadataLabelEditText","formatMessage","metadataEditTooltip","position","text","className","onClick","toggleIsEditing","fieldKeyToTypeMap","componentDidUpdate","hasError","prevHasError","prevIsDirty","currentElement","collapsibleRef","current","block","behavior","getTitle","customTitle","color","getConfirmationMessage","renderDeleteMessage","ops","forEach","originalValue","path","prototype","hasOwnProperty","call","push","op","render","isOpen","animationDuration","ref","buttonProps","hasStickyHeader","headerActionItems","renderEditButton","isBordered","title","isLoading","confirmationMessage","onCancel","onConfirmCancel","onConfirm","onValidSubmit","isCustomMetadata","onCascadeModeChange","onCascadeToggle","onFieldChange","onFieldRemove","onConfirmRemove","showSave","InstanceBase"],"sources":["../../../src/features/metadata-instance-editor/Instance.js"],"sourcesContent":["// @flow\nimport * as React from 'react';\nimport { injectIntl, FormattedMessage } from 'react-intl';\nimport classNames from 'classnames';\nimport isEqual from 'lodash/isEqual';\nimport cloneDeep from 'lodash/cloneDeep';\nimport noop from 'lodash/noop';\n\nimport Collapsible from '../../components/collapsible/Collapsible';\nimport Form from '../../components/form-elements/form/Form';\nimport LoadingIndicatorWrapper from '../../components/loading-indicator/LoadingIndicatorWrapper';\nimport PlainButton from '../../components/plain-button/PlainButton';\nimport Tooltip from '../../components/tooltip';\nimport IconMetadataColored from '../../icons/general/IconMetadataColored';\nimport IconAlertCircle from '../../icons/general/IconAlertCircle';\nimport IconEdit from '../../icons/general/IconEdit';\nimport { bdlWatermelonRed } from '../../styles/variables';\nimport { scrollIntoView } from '../../utils/dom';\n\nimport CascadePolicy from './CascadePolicy';\nimport TemplatedInstance from './TemplatedInstance';\nimport CustomInstance from './CustomInstance';\nimport MetadataInstanceConfirmDialog from './MetadataInstanceConfirmDialog';\nimport Footer from './Footer';\nimport messages from './messages';\nimport { FIELD_TYPE_FLOAT, FIELD_TYPE_INTEGER } from '../metadata-instance-fields/constants';\nimport TEMPLATE_CUSTOM_PROPERTIES from './constants';\nimport {\n JSON_PATCH_OP_REMOVE,\n JSON_PATCH_OP_ADD,\n JSON_PATCH_OP_REPLACE,\n JSON_PATCH_OP_TEST,\n} from '../../common/constants';\nimport { isValidValue } from '../metadata-instance-fields/validateMetadataField';\nimport { isHidden } from './metadataUtil';\nimport { RESIN_TAG_TARGET } from '../../common/variables';\nimport type {\n MetadataFields,\n MetadataTemplate,\n MetadataCascadePolicy,\n MetadataCascadingPolicyData,\n MetadataTemplateField,\n MetadataFieldValue,\n} from '../../common/types/metadata';\nimport type { JSONPatchOperations } from '../../common/types/api';\nimport './Instance.scss';\n\ntype Props = {\n canEdit: boolean,\n cascadePolicy?: MetadataCascadePolicy, // eslint-disable-line\n data: MetadataFields,\n hasError: boolean,\n id: string,\n intl: Object,\n isCascadingPolicyApplicable?: boolean,\n isDirty: boolean,\n isOpen: boolean,\n onModification?: (id: string, isDirty: boolean, type?: string) => void,\n onRemove?: (id: string) => void,\n onSave?: (\n id: string,\n data: JSONPatchOperations,\n cascadingPolicy?: MetadataCascadingPolicyData,\n rawData: Object,\n ) => void,\n template: MetadataTemplate,\n};\n\ntype State = {\n data: Object,\n errors: { [string]: React.Node },\n isBusy: boolean,\n isCascadingEnabled: boolean,\n isCascadingOverwritten: boolean,\n isEditing: boolean,\n shouldConfirmRemove: boolean,\n shouldShowCascadeOptions: boolean,\n};\n\nconst createFieldKeyToTypeMap = (fields?: Array<MetadataTemplateField> = []) =>\n fields.reduce((prev, { key, type }) => {\n prev[key] = type;\n return prev;\n }, {});\n\nconst getValue = (data: Object, key: string, type: string) => {\n const value = data[key];\n\n switch (type) {\n case FIELD_TYPE_FLOAT:\n return parseFloat(value);\n\n case FIELD_TYPE_INTEGER:\n return parseInt(value, 10);\n\n default:\n return value;\n }\n};\n\nclass Instance extends React.PureComponent<Props, State> {\n static defaultProps = {\n data: {},\n isDirty: false,\n };\n\n constructor(props: Props) {\n super(props);\n this.state = this.getState(props);\n this.fieldKeyToTypeMap = createFieldKeyToTypeMap(props.template.fields);\n }\n\n componentDidUpdate({ hasError: prevHasError, isDirty: prevIsDirty }: Props, prevState: State): void {\n const currentElement = this.collapsibleRef.current;\n const { hasError, isDirty }: Props = this.props;\n const { isEditing }: State = prevState;\n\n if (currentElement && this.state.shouldConfirmRemove) {\n scrollIntoView(currentElement, {\n block: 'start',\n behavior: 'smooth',\n });\n }\n\n if (hasError && hasError !== prevHasError) {\n // If hasError is true, which means an error occurred while\n // doing a network operation and hence hide the busy indicator\n // Saving also disables isEditing, so need to enable that back.\n // isDirty remains as it was before.\n this.setState({ isBusy: false, isEditing: true });\n } else if (prevIsDirty && !isDirty) {\n // If the form was dirty and now its not dirty\n // we know a successful save may have happened.\n // We don't modify isEditing here because we maintain the\n // prior state for that. If we came here from a save\n // success then save already disabled isEditing.\n if (isEditing) {\n // We are still editing so don't reset it\n this.setState({ isBusy: false });\n } else {\n // For a successfull save we reset cascading overwrite radio\n this.setState({ isBusy: false, isCascadingOverwritten: false });\n }\n }\n }\n\n /**\n * Undo any changes made\n *\n * @return {void}\n */\n onCancel = (): void => {\n const { id, onModification }: Props = this.props;\n this.setState(this.getState(this.props));\n\n // Callback to parent to tell that something is dirty\n if (onModification) {\n onModification(id, false);\n }\n };\n\n /**\n * Allows a user to confirm metadata instance removal\n *\n * @return {void}\n */\n onConfirmRemove = (): void => {\n this.setState({ shouldConfirmRemove: true });\n };\n\n /**\n * Cancel the remove instance attempt\n *\n * @return {void}\n */\n onConfirmCancel = (): void => {\n this.setState({ shouldConfirmRemove: false });\n };\n\n /**\n * Removes an instance\n *\n * @return {void}\n */\n onRemove = (): void => {\n if (!this.isEditing()) {\n return;\n }\n\n const { id, onRemove }: Props = this.props;\n if (onRemove) {\n onRemove(id);\n this.setState({ isBusy: true });\n }\n };\n\n /**\n * Saves instance data\n *\n * @return {void}\n */\n onSave = (): void => {\n const {\n cascadePolicy,\n data: originalData,\n id,\n isDirty,\n isCascadingPolicyApplicable,\n onSave,\n }: Props = this.props;\n const { data: currentData, errors, isCascadingEnabled, isCascadingOverwritten }: State = this.state;\n\n if (!this.isEditing() || !isDirty || !onSave || Object.keys(errors).length) {\n return;\n }\n\n this.setState({\n isBusy: true,\n isEditing: false,\n shouldShowCascadeOptions: false,\n });\n onSave(\n id,\n this.createJSONPatch(currentData, originalData),\n isCascadingPolicyApplicable\n ? {\n canEdit: cascadePolicy ? cascadePolicy.canEdit : false,\n id: cascadePolicy ? cascadePolicy.id : undefined,\n isEnabled: isCascadingEnabled,\n overwrite: isCascadingOverwritten,\n }\n : undefined,\n cloneDeep(currentData),\n );\n };\n\n /**\n * Updates a key value in the instance data\n *\n * @param {string} key - key to update\n * @param {FieldValue} value - value to update\n * @param {string} type - type of field\n * @return {void}\n */\n onFieldChange = (key: string, value: MetadataFieldValue, type: string): void => {\n const { data, errors }: State = this.state;\n\n // Don't do anything if data is the same or not in edit mode\n if (!this.isEditing() || isEqual(data[key], value)) {\n return;\n }\n\n const isValid = isValidValue(type, value);\n const finalErrors = { ...errors };\n const finalData = cloneDeep(data);\n finalData[key] = value;\n\n if (isValid) {\n delete finalErrors[key];\n } else {\n finalErrors[key] = <FormattedMessage {...messages.invalidInput} />;\n }\n\n this.setState({ data: finalData, errors: finalErrors }, () => {\n this.setDirty(type);\n });\n };\n\n /**\n * Removes a key from instance data\n *\n * @param {string} key - key to remove\n * @return {void}\n */\n onFieldRemove = (key: string): void => {\n if (!this.isEditing()) {\n return;\n }\n\n const { data, errors }: State = this.state;\n const finalData = cloneDeep(data);\n const finalErrors = { ...errors };\n delete finalData[key];\n delete finalErrors[key];\n this.setState({ data: finalData, errors: finalErrors }, this.setDirty);\n };\n\n /**\n * Toggle cascading policy\n *\n * @param {boolean} value - true when turned on\n * @return {void}\n */\n onCascadeToggle = (value: boolean) => {\n const { isCascadingPolicyApplicable }: Props = this.props;\n if (!isCascadingPolicyApplicable) {\n return;\n }\n\n this.setState(\n {\n isCascadingEnabled: value,\n shouldShowCascadeOptions: value,\n },\n this.setDirty,\n );\n };\n\n /**\n * Changes the cascade mode.\n * isCascadingOverwritten is slways false to start off.\n *\n * @param {boolean} value - true when overwrite policy is chosen\n * @return {void}\n */\n onCascadeModeChange = (value: boolean): void => {\n const { isCascadingPolicyApplicable }: Props = this.props;\n if (!isCascadingPolicyApplicable) {\n return;\n }\n\n this.setState(\n {\n isCascadingOverwritten: value,\n },\n this.setDirty,\n );\n };\n\n /**\n * Returns the state from props\n *\n * @return {Object} - react state\n */\n getState(props: Props): State {\n return {\n data: cloneDeep(props.data),\n errors: {},\n isBusy: false,\n isCascadingEnabled: this.isCascadingEnabled(props),\n isCascadingOverwritten: false,\n isEditing: false,\n shouldConfirmRemove: false,\n shouldShowCascadeOptions: false,\n };\n }\n\n /**\n * Returns the card title with possible error mark\n *\n * @return {Object} - react title element\n */\n getTitle(): React.Node {\n const { cascadePolicy = {}, hasError, isCascadingPolicyApplicable, template }: Props = this.props;\n const isProperties = template.templateKey === TEMPLATE_CUSTOM_PROPERTIES;\n\n const type = isCascadingPolicyApplicable && cascadePolicy.id ? 'cascade' : 'default';\n\n return (\n <span className=\"metadata-instance-editor-instance-title\">\n <IconMetadataColored type={type} />\n <span\n className={classNames('metadata-instance-editor-instance-title-text', {\n 'metadata-instance-editor-instance-has-error': hasError,\n })}\n >\n {isProperties ? <FormattedMessage {...messages.customTitle} /> : template.displayName}\n </span>\n {hasError && <IconAlertCircle color={bdlWatermelonRed} />}\n </span>\n );\n }\n\n /**\n * Render the correct delete message to show based on custom metadata and file/folder metadata\n */\n renderDeleteMessage = (isFile: boolean, template: Object) => {\n let message;\n const isProperties = template.templateKey === TEMPLATE_CUSTOM_PROPERTIES;\n\n if (isProperties) {\n message = isFile ? 'fileMetadataRemoveCustomTemplateConfirm' : 'folderMetadataRemoveCustomTemplateConfirm';\n } else {\n message = isFile ? 'fileMetadataRemoveTemplateConfirm' : 'folderMetadataRemoveTemplateConfirm';\n }\n\n return (\n <FormattedMessage\n {...messages[message]}\n values={{\n metadataName: template.displayName,\n }}\n />\n );\n };\n\n /**\n * Get the delete confirmation message base on the template key\n */\n getConfirmationMessage(): React.Node {\n const { template, isCascadingPolicyApplicable }: Props = this.props;\n const isFile = !isCascadingPolicyApplicable;\n return this.renderDeleteMessage(isFile, template);\n }\n\n /**\n * Evaluates if the metadata was changed or cascading policy\n * altered or enabled.\n *\n * @return {void}\n */\n setDirty = (type?: string): void => {\n const { id, isCascadingPolicyApplicable, onModification }: Props = this.props;\n const { data, isCascadingEnabled, isCascadingOverwritten } = this.state;\n const hasDataChanged = !isEqual(data, this.props.data);\n let hasCascadingChanged = false;\n\n if (isCascadingPolicyApplicable) {\n // isCascadingOverwritten always starts out as false, so true signifies a change\n hasCascadingChanged = isCascadingOverwritten || isCascadingEnabled !== this.isCascadingEnabled(this.props);\n }\n\n // Callback to parent to tell that something is dirty\n if (onModification) {\n onModification(id, hasDataChanged || hasCascadingChanged, type);\n }\n };\n\n collapsibleRef: {\n current: null | HTMLDivElement,\n } = React.createRef();\n\n fieldKeyToTypeMap: Object;\n\n /**\n * Determines if cascading policy is enabled based on\n * whether it has an id or not.\n *\n * @param {Object} props - component props\n * @return {boolean} true if cascading policy is enabled\n */\n isCascadingEnabled(props: Props) {\n if (props.cascadePolicy) {\n return !!props.cascadePolicy.id;\n }\n return false;\n }\n\n /**\n * Toggles the edit mode\n *\n * @private\n * @return {void}\n */\n toggleIsEditing = (): void => {\n this.setState(prevState => ({\n isEditing: !prevState.isEditing,\n }));\n };\n\n /**\n * Creates JSON Patch operations from the passed in\n * data while comparing it to the original data from props.\n *\n * Only diffs at the root level and primitives.\n *\n * @param {*} currentData - the latest changes by the user\n * @param {*} originalData - the original values\n * @return {Array} - JSON patch operations\n */\n createJSONPatch(currentData: Object, originalData: Object): JSONPatchOperations {\n const ops = [];\n const data = cloneDeep(currentData); // clone the data for mutation\n\n // Iterate over the original data and find keys that have changed.\n // Also remove them from the data object to only leave new keys.\n Object.keys(originalData).forEach(key => {\n const type = this.fieldKeyToTypeMap[key];\n const originalValue = getValue(originalData, key, type);\n const path = `/${key}`;\n\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n const value = getValue(data, key, type);\n\n // Only register changed data\n if (!isEqual(value, originalValue)) {\n // Add a test OP for each replaces\n ops.push({\n op: JSON_PATCH_OP_TEST,\n path,\n value: originalValue,\n });\n ops.push({\n op: JSON_PATCH_OP_REPLACE,\n path,\n value,\n });\n }\n } else {\n // Key was removed\n // Add a test OP for removes\n ops.push({\n op: JSON_PATCH_OP_TEST,\n path,\n value: originalValue,\n });\n ops.push({ op: JSON_PATCH_OP_REMOVE, path });\n }\n delete data[key];\n });\n\n // Iterate over the remaining keys that are new.\n Object.keys(data).forEach(key => {\n const type = this.fieldKeyToTypeMap[key];\n const value = getValue(data, key, type);\n\n ops.push({\n op: JSON_PATCH_OP_ADD,\n path: `/${key}`,\n value,\n });\n });\n\n return ops;\n }\n\n /**\n * Utility function to determine if instance is editable\n *\n * @return {boolean} true if editable\n */\n canEdit(): boolean {\n const { canEdit, onModification, onRemove, onSave }: Props = this.props;\n return (\n canEdit &&\n typeof onRemove === 'function' &&\n typeof onSave === 'function' &&\n typeof onModification === 'function'\n );\n }\n\n /**\n * Utility function to determine if instance is in edit mode\n *\n * @return {boolean} true if editing\n */\n isEditing(): boolean {\n const { isEditing }: State = this.state;\n return this.canEdit() && isEditing;\n }\n\n renderEditButton = () => {\n const { intl, isDirty }: Props = this.props;\n const { isBusy }: State = this.state;\n const canEdit = this.canEdit();\n const isEditing = this.isEditing();\n const editClassName = classNames('metadata-instance-editor-instance-edit', {\n 'metadata-instance-editor-instance-is-editing': isEditing,\n });\n\n if (canEdit && !isDirty && !isBusy) {\n const metadataLabelEditText = intl.formatMessage(messages.metadataEditTooltip);\n return (\n <Tooltip position=\"top-left\" text={metadataLabelEditText}>\n <PlainButton\n aria-label={metadataLabelEditText}\n aria-pressed={isEditing}\n className={editClassName}\n data-resin-target=\"metadata-instanceedit\"\n onClick={this.toggleIsEditing}\n type=\"button\"\n >\n <IconEdit />\n </PlainButton>\n </Tooltip>\n );\n }\n return null;\n };\n\n render() {\n const { cascadePolicy = {}, isDirty, isCascadingPolicyApplicable, isOpen, template }: Props = this.props;\n const { fields = [] } = template;\n const {\n data,\n errors,\n isBusy,\n isCascadingEnabled,\n shouldConfirmRemove,\n shouldShowCascadeOptions,\n isCascadingOverwritten,\n }: State = this.state;\n const isProperties = template.templateKey === TEMPLATE_CUSTOM_PROPERTIES;\n const isEditing = this.isEditing();\n\n if (!template || isHidden(template)) {\n return null;\n }\n\n // Animate short and tall cards at consistent speeds.\n const animationDuration = (fields.length + 1) * 50;\n\n return (\n <div ref={this.collapsibleRef}>\n <Collapsible\n animationDuration={animationDuration}\n buttonProps={{\n [RESIN_TAG_TARGET]: 'metadata-card',\n }}\n hasStickyHeader\n headerActionItems={this.renderEditButton()}\n isBordered\n isOpen={isOpen}\n title={this.getTitle()}\n >\n {shouldConfirmRemove && (\n <LoadingIndicatorWrapper isLoading={isBusy}>\n <MetadataInstanceConfirmDialog\n confirmationMessage={this.getConfirmationMessage()}\n onCancel={this.onConfirmCancel}\n onConfirm={this.onRemove}\n />\n </LoadingIndicatorWrapper>\n )}\n {!shouldConfirmRemove && (\n <LoadingIndicatorWrapper isLoading={isBusy}>\n <Form onValidSubmit={isDirty ? this.onSave : noop}>\n <div className=\"metadata-instance-editor-instance\">\n {isCascadingPolicyApplicable && (\n <CascadePolicy\n canEdit={isEditing && !!cascadePolicy.canEdit}\n isCascadingEnabled={isCascadingEnabled}\n isCascadingOverwritten={isCascadingOverwritten}\n isCustomMetadata={isProperties}\n onCascadeModeChange={this.onCascadeModeChange}\n onCascadeToggle={this.onCascadeToggle}\n shouldShowCascadeOptions={shouldShowCascadeOptions}\n />\n )}\n {isProperties ? (\n <CustomInstance\n canEdit={isEditing}\n data={data}\n onFieldChange={this.onFieldChange}\n onFieldRemove={this.onFieldRemove}\n />\n ) : (\n <TemplatedInstance\n canEdit={isEditing}\n data={data}\n errors={errors}\n onFieldChange={this.onFieldChange}\n onFieldRemove={this.onFieldRemove}\n template={template}\n />\n )}\n </div>\n {isEditing && (\n <Footer\n onCancel={this.onCancel}\n onRemove={this.onConfirmRemove}\n showSave={isDirty}\n />\n )}\n </Form>\n </LoadingIndicatorWrapper>\n )}\n </Collapsible>\n </div>\n );\n }\n}\n\nexport { Instance as InstanceBase };\nexport default injectIntl(Instance);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Instance.js","names":["React","injectIntl","FormattedMessage","classNames","isEqual","cloneDeep","noop","Collapsible","Form","LoadingIndicatorWrapper","PlainButton","Tooltip","IconMetadataColored","IconAlertCircle","IconEdit","bdlWatermelonRed","scrollIntoView","CascadePolicy","TemplatedInstance","CustomInstance","MetadataInstanceConfirmDialog","Footer","messages","FIELD_TYPE_FLOAT","FIELD_TYPE_INTEGER","TEMPLATE_CUSTOM_PROPERTIES","JSON_PATCH_OP_REMOVE","JSON_PATCH_OP_ADD","JSON_PATCH_OP_REPLACE","JSON_PATCH_OP_TEST","isValidValue","isHidden","RESIN_TAG_TARGET","createFieldKeyToTypeMap","fields","reduce","prev","key","type","getValue","data","value","parseFloat","parseInt","Instance","PureComponent","constructor","props","_defineProperty","id","onModification","setState","getState","shouldConfirmRemove","isEditing","onRemove","isBusy","cascadePolicy","originalData","isDirty","isCascadingPolicyApplicable","onSave","currentData","errors","isCascadingEnabled","isCascadingOverwritten","state","Object","keys","length","shouldShowCascadeOptions","createJSONPatch","canEdit","undefined","isEnabled","overwrite","isValid","finalErrors","_objectSpread","finalData","createElement","invalidInput","setDirty","isAIFolderExtractionEnabled","isFile","template","message","isProperties","templateKey","_extends","values","metadataName","displayName","hasDataChanged","hasCascadingChanged","createRef","prevState","intl","editClassName","metadataLabelEditText","formatMessage","metadataEditTooltip","position","text","className","onClick","toggleIsEditing","fieldKeyToTypeMap","componentDidUpdate","hasError","prevHasError","prevIsDirty","currentElement","collapsibleRef","current","block","behavior","getTitle","customTitle","color","getConfirmationMessage","renderDeleteMessage","ops","forEach","originalValue","path","prototype","hasOwnProperty","call","push","op","render","canUseAIFolderExtraction","isOpen","animationDuration","ref","buttonProps","hasStickyHeader","headerActionItems","renderEditButton","isBordered","title","isLoading","confirmationMessage","onCancel","onConfirmCancel","onConfirm","onValidSubmit","isCustomMetadata","onAIFolderExtractionToggle","onCascadeModeChange","onCascadeToggle","onFieldChange","onFieldRemove","onConfirmRemove","showSave","InstanceBase"],"sources":["../../../src/features/metadata-instance-editor/Instance.js"],"sourcesContent":["// @flow\nimport * as React from 'react';\nimport { injectIntl, FormattedMessage } from 'react-intl';\nimport classNames from 'classnames';\nimport isEqual from 'lodash/isEqual';\nimport cloneDeep from 'lodash/cloneDeep';\nimport noop from 'lodash/noop';\n\nimport Collapsible from '../../components/collapsible/Collapsible';\nimport Form from '../../components/form-elements/form/Form';\nimport LoadingIndicatorWrapper from '../../components/loading-indicator/LoadingIndicatorWrapper';\nimport PlainButton from '../../components/plain-button/PlainButton';\nimport Tooltip from '../../components/tooltip';\nimport IconMetadataColored from '../../icons/general/IconMetadataColored';\nimport IconAlertCircle from '../../icons/general/IconAlertCircle';\nimport IconEdit from '../../icons/general/IconEdit';\nimport { bdlWatermelonRed } from '../../styles/variables';\nimport { scrollIntoView } from '../../utils/dom';\n\nimport CascadePolicy from './CascadePolicy';\nimport TemplatedInstance from './TemplatedInstance';\nimport CustomInstance from './CustomInstance';\nimport MetadataInstanceConfirmDialog from './MetadataInstanceConfirmDialog';\nimport Footer from './Footer';\nimport messages from './messages';\nimport { FIELD_TYPE_FLOAT, FIELD_TYPE_INTEGER } from '../metadata-instance-fields/constants';\nimport TEMPLATE_CUSTOM_PROPERTIES from './constants';\nimport {\n JSON_PATCH_OP_REMOVE,\n JSON_PATCH_OP_ADD,\n JSON_PATCH_OP_REPLACE,\n JSON_PATCH_OP_TEST,\n} from '../../common/constants';\nimport { isValidValue } from '../metadata-instance-fields/validateMetadataField';\nimport { isHidden } from './metadataUtil';\nimport { RESIN_TAG_TARGET } from '../../common/variables';\nimport type {\n MetadataFields,\n MetadataTemplate,\n MetadataCascadePolicy,\n MetadataCascadingPolicyData,\n MetadataTemplateField,\n MetadataFieldValue,\n} from '../../common/types/metadata';\nimport type { JSONPatchOperations } from '../../common/types/api';\nimport './Instance.scss';\n\ntype Props = {\n canEdit: boolean,\n canUseAIFolderExtraction?: boolean,\n cascadePolicy?: MetadataCascadePolicy, // eslint-disable-line\n data: MetadataFields,\n hasError: boolean,\n id: string,\n intl: Object,\n isCascadingPolicyApplicable?: boolean,\n isDirty: boolean,\n isOpen: boolean,\n onModification?: (id: string, isDirty: boolean, type?: string) => void,\n onRemove?: (id: string) => void,\n onSave?: (\n id: string,\n data: JSONPatchOperations,\n cascadingPolicy?: MetadataCascadingPolicyData,\n rawData: Object,\n ) => void,\n template: MetadataTemplate,\n};\n\ntype State = {\n data: Object,\n errors: { [string]: React.Node },\n isAIFolderExtractionEnabled: boolean,\n isBusy: boolean,\n isCascadingEnabled: boolean,\n isCascadingOverwritten: boolean,\n isEditing: boolean,\n shouldConfirmRemove: boolean,\n shouldShowCascadeOptions: boolean,\n};\n\nconst createFieldKeyToTypeMap = (fields?: Array<MetadataTemplateField> = []) =>\n fields.reduce((prev, { key, type }) => {\n prev[key] = type;\n return prev;\n }, {});\n\nconst getValue = (data: Object, key: string, type: string) => {\n const value = data[key];\n\n switch (type) {\n case FIELD_TYPE_FLOAT:\n return parseFloat(value);\n\n case FIELD_TYPE_INTEGER:\n return parseInt(value, 10);\n\n default:\n return value;\n }\n};\n\nclass Instance extends React.PureComponent<Props, State> {\n static defaultProps = {\n data: {},\n isDirty: false,\n };\n\n constructor(props: Props) {\n super(props);\n this.state = this.getState(props);\n this.fieldKeyToTypeMap = createFieldKeyToTypeMap(props.template.fields);\n }\n\n componentDidUpdate({ hasError: prevHasError, isDirty: prevIsDirty }: Props, prevState: State): void {\n const currentElement = this.collapsibleRef.current;\n const { hasError, isDirty }: Props = this.props;\n const { isEditing }: State = prevState;\n\n if (currentElement && this.state.shouldConfirmRemove) {\n scrollIntoView(currentElement, {\n block: 'start',\n behavior: 'smooth',\n });\n }\n\n if (hasError && hasError !== prevHasError) {\n // If hasError is true, which means an error occurred while\n // doing a network operation and hence hide the busy indicator\n // Saving also disables isEditing, so need to enable that back.\n // isDirty remains as it was before.\n this.setState({ isBusy: false, isEditing: true });\n } else if (prevIsDirty && !isDirty) {\n // If the form was dirty and now its not dirty\n // we know a successful save may have happened.\n // We don't modify isEditing here because we maintain the\n // prior state for that. If we came here from a save\n // success then save already disabled isEditing.\n if (isEditing) {\n // We are still editing so don't reset it\n this.setState({ isBusy: false });\n } else {\n // For a successfull save we reset cascading overwrite radio\n this.setState({ isBusy: false, isCascadingOverwritten: false });\n }\n }\n }\n\n /**\n * Undo any changes made\n *\n * @return {void}\n */\n onCancel = (): void => {\n const { id, onModification }: Props = this.props;\n this.setState(this.getState(this.props));\n\n // Callback to parent to tell that something is dirty\n if (onModification) {\n onModification(id, false);\n }\n };\n\n /**\n * Allows a user to confirm metadata instance removal\n *\n * @return {void}\n */\n onConfirmRemove = (): void => {\n this.setState({ shouldConfirmRemove: true });\n };\n\n /**\n * Cancel the remove instance attempt\n *\n * @return {void}\n */\n onConfirmCancel = (): void => {\n this.setState({ shouldConfirmRemove: false });\n };\n\n /**\n * Removes an instance\n *\n * @return {void}\n */\n onRemove = (): void => {\n if (!this.isEditing()) {\n return;\n }\n\n const { id, onRemove }: Props = this.props;\n if (onRemove) {\n onRemove(id);\n this.setState({ isBusy: true });\n }\n };\n\n /**\n * Saves instance data\n *\n * @return {void}\n */\n onSave = (): void => {\n const {\n cascadePolicy,\n data: originalData,\n id,\n isDirty,\n isCascadingPolicyApplicable,\n onSave,\n }: Props = this.props;\n const { data: currentData, errors, isCascadingEnabled, isCascadingOverwritten }: State = this.state;\n\n if (!this.isEditing() || !isDirty || !onSave || Object.keys(errors).length) {\n return;\n }\n\n this.setState({\n isBusy: true,\n isEditing: false,\n shouldShowCascadeOptions: false,\n });\n onSave(\n id,\n this.createJSONPatch(currentData, originalData),\n isCascadingPolicyApplicable\n ? {\n canEdit: cascadePolicy ? cascadePolicy.canEdit : false,\n id: cascadePolicy ? cascadePolicy.id : undefined,\n isEnabled: isCascadingEnabled,\n overwrite: isCascadingOverwritten,\n }\n : undefined,\n cloneDeep(currentData),\n );\n };\n\n /**\n * Updates a key value in the instance data\n *\n * @param {string} key - key to update\n * @param {FieldValue} value - value to update\n * @param {string} type - type of field\n * @return {void}\n */\n onFieldChange = (key: string, value: MetadataFieldValue, type: string): void => {\n const { data, errors }: State = this.state;\n\n // Don't do anything if data is the same or not in edit mode\n if (!this.isEditing() || isEqual(data[key], value)) {\n return;\n }\n\n const isValid = isValidValue(type, value);\n const finalErrors = { ...errors };\n const finalData = cloneDeep(data);\n finalData[key] = value;\n\n if (isValid) {\n delete finalErrors[key];\n } else {\n finalErrors[key] = <FormattedMessage {...messages.invalidInput} />;\n }\n\n this.setState({ data: finalData, errors: finalErrors }, () => {\n this.setDirty(type);\n });\n };\n\n /**\n * Removes a key from instance data\n *\n * @param {string} key - key to remove\n * @return {void}\n */\n onFieldRemove = (key: string): void => {\n if (!this.isEditing()) {\n return;\n }\n\n const { data, errors }: State = this.state;\n const finalData = cloneDeep(data);\n const finalErrors = { ...errors };\n delete finalData[key];\n delete finalErrors[key];\n this.setState({ data: finalData, errors: finalErrors }, this.setDirty);\n };\n\n /**\n * Toggle cascading policy\n *\n * @param {boolean} value - true when turned on\n * @return {void}\n */\n onCascadeToggle = (value: boolean) => {\n const { isCascadingPolicyApplicable }: Props = this.props;\n if (!isCascadingPolicyApplicable) {\n return;\n }\n\n this.setState(\n {\n isCascadingEnabled: value,\n shouldShowCascadeOptions: value,\n },\n this.setDirty,\n );\n };\n\n /**\n * Changes the cascade mode.\n * isCascadingOverwritten is slways false to start off.\n *\n * @param {boolean} value - true when overwrite policy is chosen\n * @return {void}\n */\n onCascadeModeChange = (value: boolean): void => {\n const { isCascadingPolicyApplicable }: Props = this.props;\n if (!isCascadingPolicyApplicable) {\n return;\n }\n\n this.setState(\n {\n isCascadingOverwritten: value,\n },\n this.setDirty,\n );\n };\n\n onAIFolderExtractionToggle = (value: boolean) => {\n this.setState({ isAIFolderExtractionEnabled: value }, this.setDirty);\n };\n\n /**\n * Returns the state from props\n *\n * @return {Object} - react state\n */\n getState(props: Props): State {\n const isCascadingEnabled = this.isCascadingEnabled(props);\n\n return {\n data: cloneDeep(props.data),\n errors: {},\n isAIFolderExtractionEnabled: false,\n isBusy: false,\n isCascadingEnabled,\n isCascadingOverwritten: false,\n isEditing: false,\n shouldConfirmRemove: false,\n shouldShowCascadeOptions: isCascadingEnabled,\n };\n }\n\n /**\n * Returns the card title with possible error mark\n *\n * @return {Object} - react title element\n */\n getTitle(): React.Node {\n const { cascadePolicy = {}, hasError, isCascadingPolicyApplicable, template }: Props = this.props;\n const isProperties = template.templateKey === TEMPLATE_CUSTOM_PROPERTIES;\n\n const type = isCascadingPolicyApplicable && cascadePolicy.id ? 'cascade' : 'default';\n\n return (\n <span className=\"metadata-instance-editor-instance-title\">\n <IconMetadataColored type={type} />\n <span\n className={classNames('metadata-instance-editor-instance-title-text', {\n 'metadata-instance-editor-instance-has-error': hasError,\n })}\n >\n {isProperties ? <FormattedMessage {...messages.customTitle} /> : template.displayName}\n </span>\n {hasError && <IconAlertCircle color={bdlWatermelonRed} />}\n </span>\n );\n }\n\n /**\n * Render the correct delete message to show based on custom metadata and file/folder metadata\n */\n renderDeleteMessage = (isFile: boolean, template: Object) => {\n let message;\n const isProperties = template.templateKey === TEMPLATE_CUSTOM_PROPERTIES;\n\n if (isProperties) {\n message = isFile ? 'fileMetadataRemoveCustomTemplateConfirm' : 'folderMetadataRemoveCustomTemplateConfirm';\n } else {\n message = isFile ? 'fileMetadataRemoveTemplateConfirm' : 'folderMetadataRemoveTemplateConfirm';\n }\n\n return (\n <FormattedMessage\n {...messages[message]}\n values={{\n metadataName: template.displayName,\n }}\n />\n );\n };\n\n /**\n * Get the delete confirmation message base on the template key\n */\n getConfirmationMessage(): React.Node {\n const { template, isCascadingPolicyApplicable }: Props = this.props;\n const isFile = !isCascadingPolicyApplicable;\n return this.renderDeleteMessage(isFile, template);\n }\n\n /**\n * Evaluates if the metadata was changed or cascading policy\n * altered or enabled.\n *\n * @return {void}\n */\n setDirty = (type?: string): void => {\n const { id, isCascadingPolicyApplicable, onModification }: Props = this.props;\n const { data, isCascadingEnabled, isCascadingOverwritten } = this.state;\n const hasDataChanged = !isEqual(data, this.props.data);\n let hasCascadingChanged = false;\n\n if (isCascadingPolicyApplicable) {\n // isCascadingOverwritten always starts out as false, so true signifies a change\n hasCascadingChanged = isCascadingOverwritten || isCascadingEnabled !== this.isCascadingEnabled(this.props);\n }\n\n // Callback to parent to tell that something is dirty\n if (onModification) {\n onModification(id, hasDataChanged || hasCascadingChanged, type);\n }\n };\n\n collapsibleRef: {\n current: null | HTMLDivElement,\n } = React.createRef();\n\n fieldKeyToTypeMap: Object;\n\n /**\n * Determines if cascading policy is enabled based on\n * whether it has an id or not.\n *\n * @param {Object} props - component props\n * @return {boolean} true if cascading policy is enabled\n */\n isCascadingEnabled(props: Props) {\n if (props.cascadePolicy) {\n return !!props.cascadePolicy.id;\n }\n return false;\n }\n\n /**\n * Toggles the edit mode\n *\n * @private\n * @return {void}\n */\n toggleIsEditing = (): void => {\n this.setState(prevState => ({\n isEditing: !prevState.isEditing,\n }));\n };\n\n /**\n * Creates JSON Patch operations from the passed in\n * data while comparing it to the original data from props.\n *\n * Only diffs at the root level and primitives.\n *\n * @param {*} currentData - the latest changes by the user\n * @param {*} originalData - the original values\n * @return {Array} - JSON patch operations\n */\n createJSONPatch(currentData: Object, originalData: Object): JSONPatchOperations {\n const ops = [];\n const data = cloneDeep(currentData); // clone the data for mutation\n\n // Iterate over the original data and find keys that have changed.\n // Also remove them from the data object to only leave new keys.\n Object.keys(originalData).forEach(key => {\n const type = this.fieldKeyToTypeMap[key];\n const originalValue = getValue(originalData, key, type);\n const path = `/${key}`;\n\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n const value = getValue(data, key, type);\n\n // Only register changed data\n if (!isEqual(value, originalValue)) {\n // Add a test OP for each replaces\n ops.push({\n op: JSON_PATCH_OP_TEST,\n path,\n value: originalValue,\n });\n ops.push({\n op: JSON_PATCH_OP_REPLACE,\n path,\n value,\n });\n }\n } else {\n // Key was removed\n // Add a test OP for removes\n ops.push({\n op: JSON_PATCH_OP_TEST,\n path,\n value: originalValue,\n });\n ops.push({ op: JSON_PATCH_OP_REMOVE, path });\n }\n delete data[key];\n });\n\n // Iterate over the remaining keys that are new.\n Object.keys(data).forEach(key => {\n const type = this.fieldKeyToTypeMap[key];\n const value = getValue(data, key, type);\n\n ops.push({\n op: JSON_PATCH_OP_ADD,\n path: `/${key}`,\n value,\n });\n });\n\n return ops;\n }\n\n /**\n * Utility function to determine if instance is editable\n *\n * @return {boolean} true if editable\n */\n canEdit(): boolean {\n const { canEdit, onModification, onRemove, onSave }: Props = this.props;\n return (\n canEdit &&\n typeof onRemove === 'function' &&\n typeof onSave === 'function' &&\n typeof onModification === 'function'\n );\n }\n\n /**\n * Utility function to determine if instance is in edit mode\n *\n * @return {boolean} true if editing\n */\n isEditing(): boolean {\n const { isEditing }: State = this.state;\n return this.canEdit() && isEditing;\n }\n\n renderEditButton = () => {\n const { intl, isDirty }: Props = this.props;\n const { isBusy }: State = this.state;\n const canEdit = this.canEdit();\n const isEditing = this.isEditing();\n const editClassName = classNames('metadata-instance-editor-instance-edit', {\n 'metadata-instance-editor-instance-is-editing': isEditing,\n });\n\n if (canEdit && !isDirty && !isBusy) {\n const metadataLabelEditText = intl.formatMessage(messages.metadataEditTooltip);\n return (\n <Tooltip position=\"top-left\" text={metadataLabelEditText}>\n <PlainButton\n aria-label={metadataLabelEditText}\n aria-pressed={isEditing}\n className={editClassName}\n data-resin-target=\"metadata-instanceedit\"\n onClick={this.toggleIsEditing}\n type=\"button\"\n >\n <IconEdit />\n </PlainButton>\n </Tooltip>\n );\n }\n return null;\n };\n\n render() {\n const {\n canUseAIFolderExtraction = false,\n cascadePolicy = {},\n isDirty,\n isCascadingPolicyApplicable,\n isOpen,\n template,\n }: Props = this.props;\n const { fields = [] } = template;\n const {\n data,\n errors,\n isBusy,\n isAIFolderExtractionEnabled,\n isCascadingEnabled,\n shouldConfirmRemove,\n shouldShowCascadeOptions,\n isCascadingOverwritten,\n }: State = this.state;\n const isProperties = template.templateKey === TEMPLATE_CUSTOM_PROPERTIES;\n const isEditing = this.isEditing();\n\n if (!template || isHidden(template)) {\n return null;\n }\n\n // Animate short and tall cards at consistent speeds.\n const animationDuration = (fields.length + 1) * 50;\n\n return (\n <div ref={this.collapsibleRef}>\n <Collapsible\n animationDuration={animationDuration}\n buttonProps={{\n [RESIN_TAG_TARGET]: 'metadata-card',\n }}\n hasStickyHeader\n headerActionItems={this.renderEditButton()}\n isBordered\n isOpen={isOpen}\n title={this.getTitle()}\n >\n {shouldConfirmRemove && (\n <LoadingIndicatorWrapper isLoading={isBusy}>\n <MetadataInstanceConfirmDialog\n confirmationMessage={this.getConfirmationMessage()}\n onCancel={this.onConfirmCancel}\n onConfirm={this.onRemove}\n />\n </LoadingIndicatorWrapper>\n )}\n {!shouldConfirmRemove && (\n <LoadingIndicatorWrapper isLoading={isBusy}>\n <Form onValidSubmit={isDirty ? this.onSave : noop}>\n <div className=\"metadata-instance-editor-instance\">\n {isCascadingPolicyApplicable && (\n <CascadePolicy\n canEdit={isEditing && !!cascadePolicy.canEdit}\n canUseAIFolderExtraction={canUseAIFolderExtraction}\n isAIFolderExtractionEnabled={isAIFolderExtractionEnabled}\n isCascadingEnabled={isCascadingEnabled}\n isCascadingOverwritten={isCascadingOverwritten}\n isCustomMetadata={isProperties}\n onAIFolderExtractionToggle={this.onAIFolderExtractionToggle}\n onCascadeModeChange={this.onCascadeModeChange}\n onCascadeToggle={this.onCascadeToggle}\n shouldShowCascadeOptions={shouldShowCascadeOptions}\n />\n )}\n {isProperties ? (\n <CustomInstance\n canEdit={isEditing}\n data={data}\n onFieldChange={this.onFieldChange}\n onFieldRemove={this.onFieldRemove}\n />\n ) : (\n <TemplatedInstance\n canEdit={isEditing}\n data={data}\n errors={errors}\n onFieldChange={this.onFieldChange}\n onFieldRemove={this.onFieldRemove}\n template={template}\n />\n )}\n </div>\n {isEditing && (\n <Footer\n onCancel={this.onCancel}\n onRemove={this.onConfirmRemove}\n showSave={isDirty}\n />\n )}\n </Form>\n </LoadingIndicatorWrapper>\n )}\n </Collapsible>\n </div>\n );\n }\n}\n\nexport { Instance as InstanceBase };\nexport default injectIntl(Instance);\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import Instance from './Instance';
3
3
  const Instances = ({
4
+ canUseAIFolderExtraction = false,
4
5
  isCascadingPolicyApplicable = false,
5
6
  editors = [],
6
7
  onModification,
@@ -19,6 +20,7 @@ const Instances = ({
19
20
  const isOpen = editors.length === 1 || templateKey === selectedTemplateKey;
20
21
  return /*#__PURE__*/React.createElement(Instance, {
21
22
  canEdit: instance.canEdit,
23
+ canUseAIFolderExtraction: canUseAIFolderExtraction,
22
24
  cascadePolicy: instance.cascadePolicy,
23
25
  data: instance.data,
24
26
  hasError: hasError,
@@ -6,6 +6,7 @@ import type { MetadataEditor, MetadataCascadingPolicyData } from '../../common/t
6
6
  import type { JSONPatchOperations } from '../../common/types/api';
7
7
 
8
8
  type Props = {
9
+ canUseAIFolderExtraction?: boolean,
9
10
  editors?: Array<MetadataEditor>,
10
11
  isCascadingPolicyApplicable?: boolean,
11
12
  onModification?: (id: string, isDirty: boolean) => void,
@@ -20,6 +21,7 @@ type Props = {
20
21
  };
21
22
 
22
23
  const Instances = ({
24
+ canUseAIFolderExtraction = false,
23
25
  isCascadingPolicyApplicable = false,
24
26
  editors = [],
25
27
  onModification,
@@ -34,6 +36,7 @@ const Instances = ({
34
36
  return (
35
37
  <Instance
36
38
  canEdit={instance.canEdit}
39
+ canUseAIFolderExtraction={canUseAIFolderExtraction}
37
40
  cascadePolicy={instance.cascadePolicy}
38
41
  data={instance.data}
39
42
  hasError={hasError}
@@ -1 +1 @@
1
- {"version":3,"file":"Instances.js","names":["React","Instance","Instances","isCascadingPolicyApplicable","editors","onModification","onRemove","onSave","selectedTemplateKey","map","isDirty","instance","hasError","template","templateKey","isOpen","length","createElement","canEdit","cascadePolicy","data","id","key"],"sources":["../../../src/features/metadata-instance-editor/Instances.js"],"sourcesContent":["// @flow\nimport * as React from 'react';\n\nimport Instance from './Instance';\nimport type { MetadataEditor, MetadataCascadingPolicyData } from '../../common/types/metadata';\nimport type { JSONPatchOperations } from '../../common/types/api';\n\ntype Props = {\n editors?: Array<MetadataEditor>,\n isCascadingPolicyApplicable?: boolean,\n onModification?: (id: string, isDirty: boolean) => void,\n onRemove?: (id: string) => void,\n onSave?: (\n id: string,\n data: JSONPatchOperations,\n cascadingPolicy?: MetadataCascadingPolicyData,\n rawData: Object,\n ) => void,\n selectedTemplateKey?: string,\n};\n\nconst Instances = ({\n isCascadingPolicyApplicable = false,\n editors = [],\n onModification,\n onRemove,\n onSave,\n selectedTemplateKey,\n}: Props) =>\n editors.map<React.Element<typeof Instance>>(\n ({ isDirty = false, instance, hasError = false, template }: MetadataEditor) => {\n const { templateKey } = template;\n const isOpen = editors.length === 1 || templateKey === selectedTemplateKey;\n return (\n <Instance\n canEdit={instance.canEdit}\n cascadePolicy={instance.cascadePolicy}\n data={instance.data}\n hasError={hasError}\n id={instance.id}\n isCascadingPolicyApplicable={isCascadingPolicyApplicable}\n isDirty={isDirty}\n isOpen={isOpen}\n key={`${instance.id}-${templateKey}`}\n onModification={onModification}\n onSave={onSave}\n onRemove={onRemove}\n template={template}\n />\n );\n },\n );\n\nexport default Instances;\n"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,QAAQ,MAAM,YAAY;AAkBjC,MAAMC,SAAS,GAAGA,CAAC;EACfC,2BAA2B,GAAG,KAAK;EACnCC,OAAO,GAAG,EAAE;EACZC,cAAc;EACdC,QAAQ;EACRC,MAAM;EACNC;AACG,CAAC,KACJJ,OAAO,CAACK,GAAG,CACP,CAAC;EAAEC,OAAO,GAAG,KAAK;EAAEC,QAAQ;EAAEC,QAAQ,GAAG,KAAK;EAAEC;AAAyB,CAAC,KAAK;EAC3E,MAAM;IAAEC;EAAY,CAAC,GAAGD,QAAQ;EAChC,MAAME,MAAM,GAAGX,OAAO,CAACY,MAAM,KAAK,CAAC,IAAIF,WAAW,KAAKN,mBAAmB;EAC1E,oBACIR,KAAA,CAAAiB,aAAA,CAAChB,QAAQ;IACLiB,OAAO,EAAEP,QAAQ,CAACO,OAAQ;IAC1BC,aAAa,EAAER,QAAQ,CAACQ,aAAc;IACtCC,IAAI,EAAET,QAAQ,CAACS,IAAK;IACpBR,QAAQ,EAAEA,QAAS;IACnBS,EAAE,EAAEV,QAAQ,CAACU,EAAG;IAChBlB,2BAA2B,EAAEA,2BAA4B;IACzDO,OAAO,EAAEA,OAAQ;IACjBK,MAAM,EAAEA,MAAO;IACfO,GAAG,EAAE,GAAGX,QAAQ,CAACU,EAAE,IAAIP,WAAW,EAAG;IACrCT,cAAc,EAAEA,cAAe;IAC/BE,MAAM,EAAEA,MAAO;IACfD,QAAQ,EAAEA,QAAS;IACnBO,QAAQ,EAAEA;EAAS,CACtB,CAAC;AAEV,CACJ,CAAC;AAEL,eAAeX,SAAS","ignoreList":[]}
1
+ {"version":3,"file":"Instances.js","names":["React","Instance","Instances","canUseAIFolderExtraction","isCascadingPolicyApplicable","editors","onModification","onRemove","onSave","selectedTemplateKey","map","isDirty","instance","hasError","template","templateKey","isOpen","length","createElement","canEdit","cascadePolicy","data","id","key"],"sources":["../../../src/features/metadata-instance-editor/Instances.js"],"sourcesContent":["// @flow\nimport * as React from 'react';\n\nimport Instance from './Instance';\nimport type { MetadataEditor, MetadataCascadingPolicyData } from '../../common/types/metadata';\nimport type { JSONPatchOperations } from '../../common/types/api';\n\ntype Props = {\n canUseAIFolderExtraction?: boolean,\n editors?: Array<MetadataEditor>,\n isCascadingPolicyApplicable?: boolean,\n onModification?: (id: string, isDirty: boolean) => void,\n onRemove?: (id: string) => void,\n onSave?: (\n id: string,\n data: JSONPatchOperations,\n cascadingPolicy?: MetadataCascadingPolicyData,\n rawData: Object,\n ) => void,\n selectedTemplateKey?: string,\n};\n\nconst Instances = ({\n canUseAIFolderExtraction = false,\n isCascadingPolicyApplicable = false,\n editors = [],\n onModification,\n onRemove,\n onSave,\n selectedTemplateKey,\n}: Props) =>\n editors.map<React.Element<typeof Instance>>(\n ({ isDirty = false, instance, hasError = false, template }: MetadataEditor) => {\n const { templateKey } = template;\n const isOpen = editors.length === 1 || templateKey === selectedTemplateKey;\n return (\n <Instance\n canEdit={instance.canEdit}\n canUseAIFolderExtraction={canUseAIFolderExtraction}\n cascadePolicy={instance.cascadePolicy}\n data={instance.data}\n hasError={hasError}\n id={instance.id}\n isCascadingPolicyApplicable={isCascadingPolicyApplicable}\n isDirty={isDirty}\n isOpen={isOpen}\n key={`${instance.id}-${templateKey}`}\n onModification={onModification}\n onSave={onSave}\n onRemove={onRemove}\n template={template}\n />\n );\n },\n );\n\nexport default Instances;\n"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,QAAQ,MAAM,YAAY;AAmBjC,MAAMC,SAAS,GAAGA,CAAC;EACfC,wBAAwB,GAAG,KAAK;EAChCC,2BAA2B,GAAG,KAAK;EACnCC,OAAO,GAAG,EAAE;EACZC,cAAc;EACdC,QAAQ;EACRC,MAAM;EACNC;AACG,CAAC,KACJJ,OAAO,CAACK,GAAG,CACP,CAAC;EAAEC,OAAO,GAAG,KAAK;EAAEC,QAAQ;EAAEC,QAAQ,GAAG,KAAK;EAAEC;AAAyB,CAAC,KAAK;EAC3E,MAAM;IAAEC;EAAY,CAAC,GAAGD,QAAQ;EAChC,MAAME,MAAM,GAAGX,OAAO,CAACY,MAAM,KAAK,CAAC,IAAIF,WAAW,KAAKN,mBAAmB;EAC1E,oBACIT,KAAA,CAAAkB,aAAA,CAACjB,QAAQ;IACLkB,OAAO,EAAEP,QAAQ,CAACO,OAAQ;IAC1BhB,wBAAwB,EAAEA,wBAAyB;IACnDiB,aAAa,EAAER,QAAQ,CAACQ,aAAc;IACtCC,IAAI,EAAET,QAAQ,CAACS,IAAK;IACpBR,QAAQ,EAAEA,QAAS;IACnBS,EAAE,EAAEV,QAAQ,CAACU,EAAG;IAChBlB,2BAA2B,EAAEA,2BAA4B;IACzDO,OAAO,EAAEA,OAAQ;IACjBK,MAAM,EAAEA,MAAO;IACfO,GAAG,EAAE,GAAGX,QAAQ,CAACU,EAAE,IAAIP,WAAW,EAAG;IACrCT,cAAc,EAAEA,cAAe;IAC/BE,MAAM,EAAEA,MAAO;IACfD,QAAQ,EAAEA,QAAS;IACnBO,QAAQ,EAAEA;EAAS,CACtB,CAAC;AAEV,CACJ,CAAC;AAEL,eAAeZ,SAAS","ignoreList":[]}
@@ -8,6 +8,7 @@ import './MetadataInstanceEditor.scss';
8
8
  const MetadataInstanceEditor = ({
9
9
  blurExceptionClassNames,
10
10
  canAdd,
11
+ canUseAIFolderExtraction = false,
11
12
  isCascadingPolicyApplicable = false,
12
13
  isDropdownBusy,
13
14
  editors = [],
@@ -34,6 +35,7 @@ const MetadataInstanceEditor = ({
34
35
  }), editors.length === 0 ? /*#__PURE__*/React.createElement(EmptyContent, {
35
36
  canAdd: canAdd
36
37
  }) : /*#__PURE__*/React.createElement(ScrollWrapper, null, /*#__PURE__*/React.createElement(Instances, {
38
+ canUseAIFolderExtraction: canUseAIFolderExtraction,
37
39
  editors: editors,
38
40
  isCascadingPolicyApplicable: isCascadingPolicyApplicable,
39
41
  onModification: onModification,
@@ -14,6 +14,7 @@ import './MetadataInstanceEditor.scss';
14
14
  type Props = {
15
15
  blurExceptionClassNames?: Array<string>,
16
16
  canAdd: boolean,
17
+ canUseAIFolderExtraction?: boolean,
17
18
  editors?: Array<MetadataEditor>,
18
19
  isCascadingPolicyApplicable?: boolean,
19
20
  isDropdownBusy?: boolean,
@@ -35,6 +36,7 @@ type Props = {
35
36
  const MetadataInstanceEditor = ({
36
37
  blurExceptionClassNames,
37
38
  canAdd,
39
+ canUseAIFolderExtraction = false,
38
40
  isCascadingPolicyApplicable = false,
39
41
  isDropdownBusy,
40
42
  editors = [],
@@ -61,6 +63,7 @@ const MetadataInstanceEditor = ({
61
63
  ) : (
62
64
  <ScrollWrapper>
63
65
  <Instances
66
+ canUseAIFolderExtraction={canUseAIFolderExtraction}
64
67
  editors={editors}
65
68
  isCascadingPolicyApplicable={isCascadingPolicyApplicable}
66
69
  onModification={onModification}
@@ -1 +1 @@
1
- {"version":3,"file":"MetadataInstanceEditor.js","names":["React","ScrollWrapper","Header","Instances","EmptyContent","MetadataInstanceEditorContext","MetadataInstanceEditor","blurExceptionClassNames","canAdd","isCascadingPolicyApplicable","isDropdownBusy","editors","onModification","onRemove","onAdd","onSave","selectedTemplateKey","templates","title","createElement","Provider","value","className","length"],"sources":["../../../src/features/metadata-instance-editor/MetadataInstanceEditor.js"],"sourcesContent":["// @flow\nimport * as React from 'react';\n\nimport ScrollWrapper from '../../components/scroll-wrapper';\n\nimport Header from './Header';\nimport Instances from './Instances';\nimport EmptyContent from './EmptyContent';\nimport type { MetadataEditor, MetadataTemplate, MetadataCascadingPolicyData } from '../../common/types/metadata';\nimport type { JSONPatchOperations } from '../../common/types/api';\nimport MetadataInstanceEditorContext from './MetadataInstanceEditorContext';\nimport './MetadataInstanceEditor.scss';\n\ntype Props = {\n blurExceptionClassNames?: Array<string>,\n canAdd: boolean,\n editors?: Array<MetadataEditor>,\n isCascadingPolicyApplicable?: boolean,\n isDropdownBusy?: boolean,\n onAdd?: (template: MetadataTemplate) => void,\n onModification?: (id: string, isDirty: boolean) => void,\n onRemove?: (id: string) => void,\n onSave?: (\n id: string,\n data: JSONPatchOperations,\n cascadingPolicy?: MetadataCascadingPolicyData,\n rawData: Object,\n ) => void,\n selectedTemplateKey?: string,\n templateFilters?: Array<string> | string,\n templates: Array<MetadataTemplate>,\n title?: React.Node,\n};\n\nconst MetadataInstanceEditor = ({\n blurExceptionClassNames,\n canAdd,\n isCascadingPolicyApplicable = false,\n isDropdownBusy,\n editors = [],\n onModification,\n onRemove,\n onAdd,\n onSave,\n selectedTemplateKey,\n templates,\n title,\n}: Props) => (\n <MetadataInstanceEditorContext.Provider value={{ blurExceptionClassNames }}>\n <div className=\"metadata-instance-editor\">\n <Header\n canAdd={canAdd}\n editors={editors}\n isDropdownBusy={isDropdownBusy}\n onAdd={onAdd}\n templates={templates}\n title={title}\n />\n {editors.length === 0 ? (\n <EmptyContent canAdd={canAdd} />\n ) : (\n <ScrollWrapper>\n <Instances\n editors={editors}\n isCascadingPolicyApplicable={isCascadingPolicyApplicable}\n onModification={onModification}\n onRemove={onRemove}\n onSave={onSave}\n selectedTemplateKey={selectedTemplateKey}\n />\n </ScrollWrapper>\n )}\n </div>\n </MetadataInstanceEditorContext.Provider>\n);\n\nexport default MetadataInstanceEditor;\n"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,aAAa,MAAM,iCAAiC;AAE3D,OAAOC,MAAM,MAAM,UAAU;AAC7B,OAAOC,SAAS,MAAM,aAAa;AACnC,OAAOC,YAAY,MAAM,gBAAgB;AAGzC,OAAOC,6BAA6B,MAAM,iCAAiC;AAC3E,OAAO,+BAA+B;AAuBtC,MAAMC,sBAAsB,GAAGA,CAAC;EAC5BC,uBAAuB;EACvBC,MAAM;EACNC,2BAA2B,GAAG,KAAK;EACnCC,cAAc;EACdC,OAAO,GAAG,EAAE;EACZC,cAAc;EACdC,QAAQ;EACRC,KAAK;EACLC,MAAM;EACNC,mBAAmB;EACnBC,SAAS;EACTC;AACG,CAAC,kBACJlB,KAAA,CAAAmB,aAAA,CAACd,6BAA6B,CAACe,QAAQ;EAACC,KAAK,EAAE;IAAEd;EAAwB;AAAE,gBACvEP,KAAA,CAAAmB,aAAA;EAAKG,SAAS,EAAC;AAA0B,gBACrCtB,KAAA,CAAAmB,aAAA,CAACjB,MAAM;EACHM,MAAM,EAAEA,MAAO;EACfG,OAAO,EAAEA,OAAQ;EACjBD,cAAc,EAAEA,cAAe;EAC/BI,KAAK,EAAEA,KAAM;EACbG,SAAS,EAAEA,SAAU;EACrBC,KAAK,EAAEA;AAAM,CAChB,CAAC,EACDP,OAAO,CAACY,MAAM,KAAK,CAAC,gBACjBvB,KAAA,CAAAmB,aAAA,CAACf,YAAY;EAACI,MAAM,EAAEA;AAAO,CAAE,CAAC,gBAEhCR,KAAA,CAAAmB,aAAA,CAAClB,aAAa,qBACVD,KAAA,CAAAmB,aAAA,CAAChB,SAAS;EACNQ,OAAO,EAAEA,OAAQ;EACjBF,2BAA2B,EAAEA,2BAA4B;EACzDG,cAAc,EAAEA,cAAe;EAC/BC,QAAQ,EAAEA,QAAS;EACnBE,MAAM,EAAEA,MAAO;EACfC,mBAAmB,EAAEA;AAAoB,CAC5C,CACU,CAElB,CAC+B,CAC3C;AAED,eAAeV,sBAAsB","ignoreList":[]}
1
+ {"version":3,"file":"MetadataInstanceEditor.js","names":["React","ScrollWrapper","Header","Instances","EmptyContent","MetadataInstanceEditorContext","MetadataInstanceEditor","blurExceptionClassNames","canAdd","canUseAIFolderExtraction","isCascadingPolicyApplicable","isDropdownBusy","editors","onModification","onRemove","onAdd","onSave","selectedTemplateKey","templates","title","createElement","Provider","value","className","length"],"sources":["../../../src/features/metadata-instance-editor/MetadataInstanceEditor.js"],"sourcesContent":["// @flow\nimport * as React from 'react';\n\nimport ScrollWrapper from '../../components/scroll-wrapper';\n\nimport Header from './Header';\nimport Instances from './Instances';\nimport EmptyContent from './EmptyContent';\nimport type { MetadataEditor, MetadataTemplate, MetadataCascadingPolicyData } from '../../common/types/metadata';\nimport type { JSONPatchOperations } from '../../common/types/api';\nimport MetadataInstanceEditorContext from './MetadataInstanceEditorContext';\nimport './MetadataInstanceEditor.scss';\n\ntype Props = {\n blurExceptionClassNames?: Array<string>,\n canAdd: boolean,\n canUseAIFolderExtraction?: boolean,\n editors?: Array<MetadataEditor>,\n isCascadingPolicyApplicable?: boolean,\n isDropdownBusy?: boolean,\n onAdd?: (template: MetadataTemplate) => void,\n onModification?: (id: string, isDirty: boolean) => void,\n onRemove?: (id: string) => void,\n onSave?: (\n id: string,\n data: JSONPatchOperations,\n cascadingPolicy?: MetadataCascadingPolicyData,\n rawData: Object,\n ) => void,\n selectedTemplateKey?: string,\n templateFilters?: Array<string> | string,\n templates: Array<MetadataTemplate>,\n title?: React.Node,\n};\n\nconst MetadataInstanceEditor = ({\n blurExceptionClassNames,\n canAdd,\n canUseAIFolderExtraction = false,\n isCascadingPolicyApplicable = false,\n isDropdownBusy,\n editors = [],\n onModification,\n onRemove,\n onAdd,\n onSave,\n selectedTemplateKey,\n templates,\n title,\n}: Props) => (\n <MetadataInstanceEditorContext.Provider value={{ blurExceptionClassNames }}>\n <div className=\"metadata-instance-editor\">\n <Header\n canAdd={canAdd}\n editors={editors}\n isDropdownBusy={isDropdownBusy}\n onAdd={onAdd}\n templates={templates}\n title={title}\n />\n {editors.length === 0 ? (\n <EmptyContent canAdd={canAdd} />\n ) : (\n <ScrollWrapper>\n <Instances\n canUseAIFolderExtraction={canUseAIFolderExtraction}\n editors={editors}\n isCascadingPolicyApplicable={isCascadingPolicyApplicable}\n onModification={onModification}\n onRemove={onRemove}\n onSave={onSave}\n selectedTemplateKey={selectedTemplateKey}\n />\n </ScrollWrapper>\n )}\n </div>\n </MetadataInstanceEditorContext.Provider>\n);\n\nexport default MetadataInstanceEditor;\n"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,aAAa,MAAM,iCAAiC;AAE3D,OAAOC,MAAM,MAAM,UAAU;AAC7B,OAAOC,SAAS,MAAM,aAAa;AACnC,OAAOC,YAAY,MAAM,gBAAgB;AAGzC,OAAOC,6BAA6B,MAAM,iCAAiC;AAC3E,OAAO,+BAA+B;AAwBtC,MAAMC,sBAAsB,GAAGA,CAAC;EAC5BC,uBAAuB;EACvBC,MAAM;EACNC,wBAAwB,GAAG,KAAK;EAChCC,2BAA2B,GAAG,KAAK;EACnCC,cAAc;EACdC,OAAO,GAAG,EAAE;EACZC,cAAc;EACdC,QAAQ;EACRC,KAAK;EACLC,MAAM;EACNC,mBAAmB;EACnBC,SAAS;EACTC;AACG,CAAC,kBACJnB,KAAA,CAAAoB,aAAA,CAACf,6BAA6B,CAACgB,QAAQ;EAACC,KAAK,EAAE;IAAEf;EAAwB;AAAE,gBACvEP,KAAA,CAAAoB,aAAA;EAAKG,SAAS,EAAC;AAA0B,gBACrCvB,KAAA,CAAAoB,aAAA,CAAClB,MAAM;EACHM,MAAM,EAAEA,MAAO;EACfI,OAAO,EAAEA,OAAQ;EACjBD,cAAc,EAAEA,cAAe;EAC/BI,KAAK,EAAEA,KAAM;EACbG,SAAS,EAAEA,SAAU;EACrBC,KAAK,EAAEA;AAAM,CAChB,CAAC,EACDP,OAAO,CAACY,MAAM,KAAK,CAAC,gBACjBxB,KAAA,CAAAoB,aAAA,CAAChB,YAAY;EAACI,MAAM,EAAEA;AAAO,CAAE,CAAC,gBAEhCR,KAAA,CAAAoB,aAAA,CAACnB,aAAa,qBACVD,KAAA,CAAAoB,aAAA,CAACjB,SAAS;EACNM,wBAAwB,EAAEA,wBAAyB;EACnDG,OAAO,EAAEA,OAAQ;EACjBF,2BAA2B,EAAEA,2BAA4B;EACzDG,cAAc,EAAEA,cAAe;EAC/BC,QAAQ,EAAEA,QAAS;EACnBE,MAAM,EAAEA,MAAO;EACfC,mBAAmB,EAAEA;AAAoB,CAC5C,CACU,CAElB,CAC+B,CAC3C;AAED,eAAeX,sBAAsB","ignoreList":[]}
@@ -128,6 +128,26 @@ const messages = defineMessages({
128
128
  "id": "boxui.metadataInstanceEditor.enableCascadePolicy",
129
129
  "defaultMessage": "Enable Cascade Policy"
130
130
  },
131
+ enableAIAutofill: {
132
+ "id": "boxui.metadataInstanceEditor.enableAIAutofill",
133
+ "defaultMessage": "Box AI Autofill"
134
+ },
135
+ aiAutofillDescription: {
136
+ "id": "boxui.metadataInstanceEditor.aiAutofillDescription",
137
+ "defaultMessage": "Use Box AI to automatically extract metadata values."
138
+ },
139
+ aiAutofillNotice: {
140
+ "id": "boxui.metadataInstanceEditor.aiAutofillNotice",
141
+ "defaultMessage": "Enabling this feature may involve additional charges. Please review our {pricingLink} for more information."
142
+ },
143
+ aiAutofillLearnMore: {
144
+ "id": "boxui.metadataInstanceEditor.aiAutofillLearnMore",
145
+ "defaultMessage": "Learn more"
146
+ },
147
+ aiAutofillPricingDetails: {
148
+ "id": "boxui.metadataInstanceEditor.aiAutofillPricingDetails",
149
+ "defaultMessage": "pricing details"
150
+ },
131
151
  applyCascadePolicyText: {
132
152
  "id": "boxui.metadataInstanceEditor.applyCascadePolicyText",
133
153
  "defaultMessage": "Apply template and its values to all new and existing items in this folder and its subfolders."
@@ -168,6 +168,32 @@ const messages = defineMessages({
168
168
  description: 'Label for enable cascade policy toggle switch',
169
169
  id: 'boxui.metadataInstanceEditor.enableCascadePolicy',
170
170
  },
171
+ enableAIAutofill: {
172
+ defaultMessage: 'Box AI Autofill',
173
+ description: 'Label for enable AI autofill toggle switch',
174
+ id: 'boxui.metadataInstanceEditor.enableAIAutofill',
175
+ },
176
+ aiAutofillDescription: {
177
+ defaultMessage: 'Use Box AI to automatically extract metadata values.',
178
+ description: 'Description for AI autofill toggle switch',
179
+ id: 'boxui.metadataInstanceEditor.aiAutofillDescription',
180
+ },
181
+ aiAutofillNotice: {
182
+ defaultMessage:
183
+ 'Enabling this feature may involve additional charges. Please review our {pricingLink} for more information.',
184
+ description: 'Notice for AI autofill toggle switch',
185
+ id: 'boxui.metadataInstanceEditor.aiAutofillNotice',
186
+ },
187
+ aiAutofillLearnMore: {
188
+ defaultMessage: 'Learn more',
189
+ description: 'Learn more link for AI autofill',
190
+ id: 'boxui.metadataInstanceEditor.aiAutofillLearnMore',
191
+ },
192
+ aiAutofillPricingDetails: {
193
+ defaultMessage: 'pricing details',
194
+ description: 'Pricing details link for AI autofill',
195
+ id: 'boxui.metadataInstanceEditor.aiAutofillPricingDetails',
196
+ },
171
197
  applyCascadePolicyText: {
172
198
  defaultMessage:
173
199
  'Apply template and its values to all new and existing items in this folder and its subfolders.',
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","names":["defineMessages","messages","customTitle","customAdd","customRemove","customKey","customKeyPlaceholder","customValue","customValuePlaceholder","customNewField","customNewFieldMessage","customErrorRequired","customErrorDuplicateKey","customErrorInternalKey","invalidInput","metadataEditTooltip","metadataRemoveTemplate","fileMetadataRemoveTemplateConfirm","folderMetadataRemoveTemplateConfirm","fileMetadataRemoveCustomTemplateConfirm","folderMetadataRemoveCustomTemplateConfirm","metadataTemplateSearchPlaceholder","metadataTemplateAdd","metadataTemplatesTitle","metadataTemplatesNoResults","metadataTemplatesFetchFailed","metadataTemplatesNoRemainingTemplates","metadataTemplatesServerHasNoTemplates","metadataSave","metadataCancel","metadataCascadePolicyEnabledInfo","noMetadata","noMetadataAddTemplate","enableCascadePolicy","applyCascadePolicyText","cannotApplyCascadePolicyText","cascadePolicyLearnMore","cascadePolicyModeQuestion","cascadePolicySkipMode","cascadePolicyOverwriteMode","allAttributesAreHidden","noAttributesForTemplate","operationNotImmediate"],"sources":["../../../src/features/metadata-instance-editor/messages.js"],"sourcesContent":["import { defineMessages } from 'react-intl';\n\nconst messages = defineMessages({\n customTitle: {\n defaultMessage: 'Custom Metadata',\n description: 'title of the custom metadata card',\n id: 'boxui.metadataInstanceEditor.customTitle',\n },\n customAdd: {\n defaultMessage: 'Add',\n description: 'Label for the add button for custom metadata',\n id: 'boxui.metadataInstanceEditor.customAdd',\n },\n customRemove: {\n defaultMessage: 'Remove',\n description: 'Label for the remove button for custom metadata',\n id: 'boxui.metadataInstanceEditor.customRemove',\n },\n customKey: {\n defaultMessage: 'Key',\n description: 'Label for the key field for custom metadata',\n id: 'boxui.metadataInstanceEditor.customKey',\n },\n customKeyPlaceholder: {\n defaultMessage: 'e.g. Order Number',\n description: 'Placeholder for the key field for custom metadata',\n id: 'boxui.metadataInstanceEditor.customKeyPlaceholder',\n },\n customValue: {\n defaultMessage: 'Value',\n description: 'Label for the value field for custom metadata',\n id: 'boxui.metadataInstanceEditor.customValue',\n },\n customValuePlaceholder: {\n defaultMessage: 'e.g. 42',\n description: 'Placeholder for the value field for custom metadata',\n id: 'boxui.metadataInstanceEditor.customValuePlaceholder',\n },\n customNewField: {\n defaultMessage: 'New Field',\n description: 'Title for the new field section for custom metadata',\n id: 'boxui.metadataInstanceEditor.customNewField',\n },\n customNewFieldMessage: {\n defaultMessage: 'Add a custom metadata field. Other people will be able to see and search for this field.',\n description: 'Description for the new field section for custom metadata',\n id: 'boxui.metadataInstanceEditor.customNewFieldMessage',\n },\n customErrorRequired: {\n defaultMessage: 'A key is required.',\n description: 'Error enforcing required key for custom metadata',\n id: 'boxui.metadataInstanceEditor.customErrorRequired',\n },\n customErrorDuplicateKey: {\n defaultMessage: 'A field with that key already exists.',\n description: 'Error enforcing unique key for custom metadata',\n id: 'boxui.metadataInstanceEditor.customErrorDuplicateKey',\n },\n customErrorInternalKey: {\n defaultMessage: 'Keys cannot begin with a $.',\n description: 'Error enforcing non internal key for custom metadata',\n id: 'boxui.metadataInstanceEditor.customErrorInternalKey',\n },\n invalidInput: {\n defaultMessage: 'Invalid Input!',\n description: 'Error message displayed if the user enters a badly formatted value in metadata text box',\n id: 'boxui.metadataInstanceEditor.invalidValue',\n },\n metadataEditTooltip: {\n defaultMessage: 'Edit Metadata',\n description: 'Text that shows in a tooltip above the edit pencil button.',\n id: 'boxui.metadataInstanceEditor.editTooltip',\n },\n metadataRemoveTemplate: {\n defaultMessage: 'Remove',\n description: 'Label to remove a template',\n id: 'boxui.metadataInstanceEditor.removeTemplate',\n },\n fileMetadataRemoveTemplateConfirm: {\n defaultMessage: 'Are you sure you want to delete \"{metadataName}\" and all of its values from this file?',\n description:\n 'Message for users who may attempt to remove a metadata instance for a file, which is non-recoverable',\n id: 'boxui.metadataInstanceEditor.fileMetadataRemoveTemplateConfirm',\n },\n folderMetadataRemoveTemplateConfirm: {\n defaultMessage:\n 'Are you sure you want to delete \"{metadataName}\" and all of its values? Any metadata template values already applied to files in this folder will not be deleted.',\n description:\n 'Message for users who may attempt to remove a metadata instance for a folder, which is non-recoverable',\n id: 'boxui.metadataInstanceEditor.folderMetadataRemoveTemplateConfirm',\n },\n fileMetadataRemoveCustomTemplateConfirm: {\n defaultMessage: 'Are you sure you want to delete this custom metadata and all of its values from this file?',\n description:\n 'Message for users who may attempt to remove a custom metadata instance for a file. Also non-recoverable',\n id: 'boxui.metadataInstanceEditor.fileMetadataRemoveCustomTemplateConfirm',\n },\n folderMetadataRemoveCustomTemplateConfirm: {\n defaultMessage:\n 'Are you sure you want to delete this custom metadata and all of its values? Any metadata template values already applied to files in this folder will not be deleted.',\n description:\n 'Message for users who may attempt to remove a custom metadata instance for a folder. Also non-recoverable',\n id: 'boxui.metadataInstanceEditor.folderMetadataRemoveCustomTemplateConfirm',\n },\n metadataTemplateSearchPlaceholder: {\n defaultMessage: 'Search all templates',\n description: 'Placeholder to search for all templates',\n id: 'boxui.metadataInstanceEditor.templateSearchPlaceholder',\n },\n metadataTemplateAdd: {\n defaultMessage: 'Add',\n description: 'Label to add a template',\n id: 'boxui.metadataInstanceEditor.templateAdd',\n },\n metadataTemplatesTitle: {\n defaultMessage: 'Templates',\n description: 'Overall title of metadata',\n id: 'boxui.metadataInstanceEditor.templatesTitle',\n },\n metadataTemplatesNoResults: {\n defaultMessage: 'No Results',\n description: 'Text to indicate no templates found by searching',\n id: 'boxui.metadataInstanceEditor.templatesNoResults',\n },\n metadataTemplatesFetchFailed: {\n defaultMessage: 'Sorry! We could not fetch templates. Please contact your administrator',\n description: 'Text to indicate that we failed to fetch templates',\n id: 'boxui.metadataInstanceEditor.templatesFetchFailed',\n },\n metadataTemplatesNoRemainingTemplates: {\n defaultMessage: 'All templates have been added',\n description: 'Text to indicate that all the templates have been added',\n id: 'boxui.metadataInstanceEditor.templatesNoRemainingTemplates',\n },\n metadataTemplatesServerHasNoTemplates: {\n defaultMessage: 'Zero templates',\n description: 'Text to indicate that the server has no templates',\n id: 'boxui.metadataInstanceEditor.templatesServerHasNoTemplates',\n },\n metadataSave: {\n defaultMessage: 'Save',\n description: 'Label for save button',\n id: 'boxui.metadataInstanceEditor.metadataSave',\n },\n metadataCancel: {\n defaultMessage: 'Cancel',\n description: 'Label for cancel button',\n id: 'boxui.metadataInstanceEditor.metadataCancel',\n },\n metadataCascadePolicyEnabledInfo: {\n defaultMessage:\n 'This template and its values are being cascaded to all items in this folder and its subfolders.',\n description: 'Informational text shown in metadata modal when cascading is turned on for current folder',\n id: 'boxui.metadataInstanceEditor.metadataCascadePolicyEnabledInfo',\n },\n noMetadata: {\n defaultMessage: 'No Metadata Applied',\n description: 'Text to display when no metadata is applied to folder',\n id: 'boxui.metadataInstanceEditor.noMetadata',\n },\n noMetadataAddTemplate: {\n defaultMessage: \"Click 'Add' in the top right to add metadata to this item\",\n description: 'Instructions to create metadata for the selected folder',\n id: 'boxui.metadataInstanceEditor.noMetadataAddTemplate',\n },\n enableCascadePolicy: {\n defaultMessage: 'Enable Cascade Policy',\n description: 'Label for enable cascade policy toggle switch',\n id: 'boxui.metadataInstanceEditor.enableCascadePolicy',\n },\n applyCascadePolicyText: {\n defaultMessage:\n 'Apply template and its values to all new and existing items in this folder and its subfolders.',\n description: 'Informational text below enable cascade policy toggle switch',\n id: 'boxui.metadataInstanceEditor.applyCascadePolicyText',\n },\n cannotApplyCascadePolicyText: {\n defaultMessage: 'Cascade policy cannot be applied to custom metadata at this time.',\n description:\n 'Informational text below enable cascade policy toggle switch indicating that cascade policy cannot be applied',\n id: 'boxui.metadataInstanceEditor.cannotApplyCascadePolicyText',\n },\n cascadePolicyLearnMore: {\n defaultMessage: 'Learn more',\n description: 'Tooltip text a user can use to learn more about cascading metadata policy',\n id: 'boxui.metadataInstanceEditor.cascadePolicyLearnMore',\n },\n cascadePolicyModeQuestion: {\n defaultMessage:\n 'In the case of conflicts when applying this template and its values to existing items, what would you like to do? This is a one time action.',\n description:\n 'Tooltip text that asks the user what they want to do when applying cascading to their metadata policy',\n id: 'boxui.metadataInstanceEditor.cascadePolicyModeQuestion',\n },\n cascadePolicySkipMode: {\n defaultMessage: 'Skip and keep all existing template values',\n description: 'Label for radio button that selects skip mode for cascading policy',\n id: 'boxui.metadataInstanceEditor.cascadePolicySkipMode',\n },\n cascadePolicyOverwriteMode: {\n defaultMessage: 'Overwrite all existing template values',\n description: 'Label for radio button that selects overwrite mode for cascading policy',\n id: 'boxui.metadataInstanceEditor.cascadePolicyOverwriteMode',\n },\n allAttributesAreHidden: {\n defaultMessage: 'All attributes in this template have been hidden.',\n description:\n 'Informational text below collapsible header indicating that all fields for this template are hidden',\n id: 'boxui.metadataInstanceEditor.allAttributesAreHidden',\n },\n noAttributesForTemplate: {\n defaultMessage: 'There are no attributes in this template.',\n description:\n 'Informational text below collapsible header indicating that there are no attributes for this template',\n id: 'boxui.metadataInstanceEditor.noAttributesForTemplate',\n },\n operationNotImmediate: {\n defaultMessage: 'This operation is not immediate and may take some time.',\n description:\n 'Informational text below cascade policy description and explains to the user that the policy will take some time to take effect.',\n id: 'boxui.metadataInstanceEditor.operationNotImmediate',\n },\n});\n\nexport default messages;\n"],"mappings":"AAAA,SAASA,cAAc,QAAQ,YAAY;AAE3C,MAAMC,QAAQ,GAAGD,cAAc,CAAC;EAC5BE,WAAW;IAAA;IAAA;EAAA,CAIV;EACDC,SAAS;IAAA;IAAA;EAAA,CAIR;EACDC,YAAY;IAAA;IAAA;EAAA,CAIX;EACDC,SAAS;IAAA;IAAA;EAAA,CAIR;EACDC,oBAAoB;IAAA;IAAA;EAAA,CAInB;EACDC,WAAW;IAAA;IAAA;EAAA,CAIV;EACDC,sBAAsB;IAAA;IAAA;EAAA,CAIrB;EACDC,cAAc;IAAA;IAAA;EAAA,CAIb;EACDC,qBAAqB;IAAA;IAAA;EAAA,CAIpB;EACDC,mBAAmB;IAAA;IAAA;EAAA,CAIlB;EACDC,uBAAuB;IAAA;IAAA;EAAA,CAItB;EACDC,sBAAsB;IAAA;IAAA;EAAA,CAIrB;EACDC,YAAY;IAAA;IAAA;EAAA,CAIX;EACDC,mBAAmB;IAAA;IAAA;EAAA,CAIlB;EACDC,sBAAsB;IAAA;IAAA;EAAA,CAIrB;EACDC,iCAAiC;IAAA;IAAA;EAAA,CAKhC;EACDC,mCAAmC;IAAA;IAAA;EAAA,CAMlC;EACDC,uCAAuC;IAAA;IAAA;EAAA,CAKtC;EACDC,yCAAyC;IAAA;IAAA;EAAA,CAMxC;EACDC,iCAAiC;IAAA;IAAA;EAAA,CAIhC;EACDC,mBAAmB;IAAA;IAAA;EAAA,CAIlB;EACDC,sBAAsB;IAAA;IAAA;EAAA,CAIrB;EACDC,0BAA0B;IAAA;IAAA;EAAA,CAIzB;EACDC,4BAA4B;IAAA;IAAA;EAAA,CAI3B;EACDC,qCAAqC;IAAA;IAAA;EAAA,CAIpC;EACDC,qCAAqC;IAAA;IAAA;EAAA,CAIpC;EACDC,YAAY;IAAA;IAAA;EAAA,CAIX;EACDC,cAAc;IAAA;IAAA;EAAA,CAIb;EACDC,gCAAgC;IAAA;IAAA;EAAA,CAK/B;EACDC,UAAU;IAAA;IAAA;EAAA,CAIT;EACDC,qBAAqB;IAAA;IAAA;EAAA,CAIpB;EACDC,mBAAmB;IAAA;IAAA;EAAA,CAIlB;EACDC,sBAAsB;IAAA;IAAA;EAAA,CAKrB;EACDC,4BAA4B;IAAA;IAAA;EAAA,CAK3B;EACDC,sBAAsB;IAAA;IAAA;EAAA,CAIrB;EACDC,yBAAyB;IAAA;IAAA;EAAA,CAMxB;EACDC,qBAAqB;IAAA;IAAA;EAAA,CAIpB;EACDC,0BAA0B;IAAA;IAAA;EAAA,CAIzB;EACDC,sBAAsB;IAAA;IAAA;EAAA,CAKrB;EACDC,uBAAuB;IAAA;IAAA;EAAA,CAKtB;EACDC,qBAAqB;IAAA;IAAA;EAAA;AAMzB,CAAC,CAAC;AAEF,eAAezC,QAAQ","ignoreList":[]}
1
+ {"version":3,"file":"messages.js","names":["defineMessages","messages","customTitle","customAdd","customRemove","customKey","customKeyPlaceholder","customValue","customValuePlaceholder","customNewField","customNewFieldMessage","customErrorRequired","customErrorDuplicateKey","customErrorInternalKey","invalidInput","metadataEditTooltip","metadataRemoveTemplate","fileMetadataRemoveTemplateConfirm","folderMetadataRemoveTemplateConfirm","fileMetadataRemoveCustomTemplateConfirm","folderMetadataRemoveCustomTemplateConfirm","metadataTemplateSearchPlaceholder","metadataTemplateAdd","metadataTemplatesTitle","metadataTemplatesNoResults","metadataTemplatesFetchFailed","metadataTemplatesNoRemainingTemplates","metadataTemplatesServerHasNoTemplates","metadataSave","metadataCancel","metadataCascadePolicyEnabledInfo","noMetadata","noMetadataAddTemplate","enableCascadePolicy","enableAIAutofill","aiAutofillDescription","aiAutofillNotice","aiAutofillLearnMore","aiAutofillPricingDetails","applyCascadePolicyText","cannotApplyCascadePolicyText","cascadePolicyLearnMore","cascadePolicyModeQuestion","cascadePolicySkipMode","cascadePolicyOverwriteMode","allAttributesAreHidden","noAttributesForTemplate","operationNotImmediate"],"sources":["../../../src/features/metadata-instance-editor/messages.js"],"sourcesContent":["import { defineMessages } from 'react-intl';\n\nconst messages = defineMessages({\n customTitle: {\n defaultMessage: 'Custom Metadata',\n description: 'title of the custom metadata card',\n id: 'boxui.metadataInstanceEditor.customTitle',\n },\n customAdd: {\n defaultMessage: 'Add',\n description: 'Label for the add button for custom metadata',\n id: 'boxui.metadataInstanceEditor.customAdd',\n },\n customRemove: {\n defaultMessage: 'Remove',\n description: 'Label for the remove button for custom metadata',\n id: 'boxui.metadataInstanceEditor.customRemove',\n },\n customKey: {\n defaultMessage: 'Key',\n description: 'Label for the key field for custom metadata',\n id: 'boxui.metadataInstanceEditor.customKey',\n },\n customKeyPlaceholder: {\n defaultMessage: 'e.g. Order Number',\n description: 'Placeholder for the key field for custom metadata',\n id: 'boxui.metadataInstanceEditor.customKeyPlaceholder',\n },\n customValue: {\n defaultMessage: 'Value',\n description: 'Label for the value field for custom metadata',\n id: 'boxui.metadataInstanceEditor.customValue',\n },\n customValuePlaceholder: {\n defaultMessage: 'e.g. 42',\n description: 'Placeholder for the value field for custom metadata',\n id: 'boxui.metadataInstanceEditor.customValuePlaceholder',\n },\n customNewField: {\n defaultMessage: 'New Field',\n description: 'Title for the new field section for custom metadata',\n id: 'boxui.metadataInstanceEditor.customNewField',\n },\n customNewFieldMessage: {\n defaultMessage: 'Add a custom metadata field. Other people will be able to see and search for this field.',\n description: 'Description for the new field section for custom metadata',\n id: 'boxui.metadataInstanceEditor.customNewFieldMessage',\n },\n customErrorRequired: {\n defaultMessage: 'A key is required.',\n description: 'Error enforcing required key for custom metadata',\n id: 'boxui.metadataInstanceEditor.customErrorRequired',\n },\n customErrorDuplicateKey: {\n defaultMessage: 'A field with that key already exists.',\n description: 'Error enforcing unique key for custom metadata',\n id: 'boxui.metadataInstanceEditor.customErrorDuplicateKey',\n },\n customErrorInternalKey: {\n defaultMessage: 'Keys cannot begin with a $.',\n description: 'Error enforcing non internal key for custom metadata',\n id: 'boxui.metadataInstanceEditor.customErrorInternalKey',\n },\n invalidInput: {\n defaultMessage: 'Invalid Input!',\n description: 'Error message displayed if the user enters a badly formatted value in metadata text box',\n id: 'boxui.metadataInstanceEditor.invalidValue',\n },\n metadataEditTooltip: {\n defaultMessage: 'Edit Metadata',\n description: 'Text that shows in a tooltip above the edit pencil button.',\n id: 'boxui.metadataInstanceEditor.editTooltip',\n },\n metadataRemoveTemplate: {\n defaultMessage: 'Remove',\n description: 'Label to remove a template',\n id: 'boxui.metadataInstanceEditor.removeTemplate',\n },\n fileMetadataRemoveTemplateConfirm: {\n defaultMessage: 'Are you sure you want to delete \"{metadataName}\" and all of its values from this file?',\n description:\n 'Message for users who may attempt to remove a metadata instance for a file, which is non-recoverable',\n id: 'boxui.metadataInstanceEditor.fileMetadataRemoveTemplateConfirm',\n },\n folderMetadataRemoveTemplateConfirm: {\n defaultMessage:\n 'Are you sure you want to delete \"{metadataName}\" and all of its values? Any metadata template values already applied to files in this folder will not be deleted.',\n description:\n 'Message for users who may attempt to remove a metadata instance for a folder, which is non-recoverable',\n id: 'boxui.metadataInstanceEditor.folderMetadataRemoveTemplateConfirm',\n },\n fileMetadataRemoveCustomTemplateConfirm: {\n defaultMessage: 'Are you sure you want to delete this custom metadata and all of its values from this file?',\n description:\n 'Message for users who may attempt to remove a custom metadata instance for a file. Also non-recoverable',\n id: 'boxui.metadataInstanceEditor.fileMetadataRemoveCustomTemplateConfirm',\n },\n folderMetadataRemoveCustomTemplateConfirm: {\n defaultMessage:\n 'Are you sure you want to delete this custom metadata and all of its values? Any metadata template values already applied to files in this folder will not be deleted.',\n description:\n 'Message for users who may attempt to remove a custom metadata instance for a folder. Also non-recoverable',\n id: 'boxui.metadataInstanceEditor.folderMetadataRemoveCustomTemplateConfirm',\n },\n metadataTemplateSearchPlaceholder: {\n defaultMessage: 'Search all templates',\n description: 'Placeholder to search for all templates',\n id: 'boxui.metadataInstanceEditor.templateSearchPlaceholder',\n },\n metadataTemplateAdd: {\n defaultMessage: 'Add',\n description: 'Label to add a template',\n id: 'boxui.metadataInstanceEditor.templateAdd',\n },\n metadataTemplatesTitle: {\n defaultMessage: 'Templates',\n description: 'Overall title of metadata',\n id: 'boxui.metadataInstanceEditor.templatesTitle',\n },\n metadataTemplatesNoResults: {\n defaultMessage: 'No Results',\n description: 'Text to indicate no templates found by searching',\n id: 'boxui.metadataInstanceEditor.templatesNoResults',\n },\n metadataTemplatesFetchFailed: {\n defaultMessage: 'Sorry! We could not fetch templates. Please contact your administrator',\n description: 'Text to indicate that we failed to fetch templates',\n id: 'boxui.metadataInstanceEditor.templatesFetchFailed',\n },\n metadataTemplatesNoRemainingTemplates: {\n defaultMessage: 'All templates have been added',\n description: 'Text to indicate that all the templates have been added',\n id: 'boxui.metadataInstanceEditor.templatesNoRemainingTemplates',\n },\n metadataTemplatesServerHasNoTemplates: {\n defaultMessage: 'Zero templates',\n description: 'Text to indicate that the server has no templates',\n id: 'boxui.metadataInstanceEditor.templatesServerHasNoTemplates',\n },\n metadataSave: {\n defaultMessage: 'Save',\n description: 'Label for save button',\n id: 'boxui.metadataInstanceEditor.metadataSave',\n },\n metadataCancel: {\n defaultMessage: 'Cancel',\n description: 'Label for cancel button',\n id: 'boxui.metadataInstanceEditor.metadataCancel',\n },\n metadataCascadePolicyEnabledInfo: {\n defaultMessage:\n 'This template and its values are being cascaded to all items in this folder and its subfolders.',\n description: 'Informational text shown in metadata modal when cascading is turned on for current folder',\n id: 'boxui.metadataInstanceEditor.metadataCascadePolicyEnabledInfo',\n },\n noMetadata: {\n defaultMessage: 'No Metadata Applied',\n description: 'Text to display when no metadata is applied to folder',\n id: 'boxui.metadataInstanceEditor.noMetadata',\n },\n noMetadataAddTemplate: {\n defaultMessage: \"Click 'Add' in the top right to add metadata to this item\",\n description: 'Instructions to create metadata for the selected folder',\n id: 'boxui.metadataInstanceEditor.noMetadataAddTemplate',\n },\n enableCascadePolicy: {\n defaultMessage: 'Enable Cascade Policy',\n description: 'Label for enable cascade policy toggle switch',\n id: 'boxui.metadataInstanceEditor.enableCascadePolicy',\n },\n enableAIAutofill: {\n defaultMessage: 'Box AI Autofill',\n description: 'Label for enable AI autofill toggle switch',\n id: 'boxui.metadataInstanceEditor.enableAIAutofill',\n },\n aiAutofillDescription: {\n defaultMessage: 'Use Box AI to automatically extract metadata values.',\n description: 'Description for AI autofill toggle switch',\n id: 'boxui.metadataInstanceEditor.aiAutofillDescription',\n },\n aiAutofillNotice: {\n defaultMessage:\n 'Enabling this feature may involve additional charges. Please review our {pricingLink} for more information.',\n description: 'Notice for AI autofill toggle switch',\n id: 'boxui.metadataInstanceEditor.aiAutofillNotice',\n },\n aiAutofillLearnMore: {\n defaultMessage: 'Learn more',\n description: 'Learn more link for AI autofill',\n id: 'boxui.metadataInstanceEditor.aiAutofillLearnMore',\n },\n aiAutofillPricingDetails: {\n defaultMessage: 'pricing details',\n description: 'Pricing details link for AI autofill',\n id: 'boxui.metadataInstanceEditor.aiAutofillPricingDetails',\n },\n applyCascadePolicyText: {\n defaultMessage:\n 'Apply template and its values to all new and existing items in this folder and its subfolders.',\n description: 'Informational text below enable cascade policy toggle switch',\n id: 'boxui.metadataInstanceEditor.applyCascadePolicyText',\n },\n cannotApplyCascadePolicyText: {\n defaultMessage: 'Cascade policy cannot be applied to custom metadata at this time.',\n description:\n 'Informational text below enable cascade policy toggle switch indicating that cascade policy cannot be applied',\n id: 'boxui.metadataInstanceEditor.cannotApplyCascadePolicyText',\n },\n cascadePolicyLearnMore: {\n defaultMessage: 'Learn more',\n description: 'Tooltip text a user can use to learn more about cascading metadata policy',\n id: 'boxui.metadataInstanceEditor.cascadePolicyLearnMore',\n },\n cascadePolicyModeQuestion: {\n defaultMessage:\n 'In the case of conflicts when applying this template and its values to existing items, what would you like to do? This is a one time action.',\n description:\n 'Tooltip text that asks the user what they want to do when applying cascading to their metadata policy',\n id: 'boxui.metadataInstanceEditor.cascadePolicyModeQuestion',\n },\n cascadePolicySkipMode: {\n defaultMessage: 'Skip and keep all existing template values',\n description: 'Label for radio button that selects skip mode for cascading policy',\n id: 'boxui.metadataInstanceEditor.cascadePolicySkipMode',\n },\n cascadePolicyOverwriteMode: {\n defaultMessage: 'Overwrite all existing template values',\n description: 'Label for radio button that selects overwrite mode for cascading policy',\n id: 'boxui.metadataInstanceEditor.cascadePolicyOverwriteMode',\n },\n allAttributesAreHidden: {\n defaultMessage: 'All attributes in this template have been hidden.',\n description:\n 'Informational text below collapsible header indicating that all fields for this template are hidden',\n id: 'boxui.metadataInstanceEditor.allAttributesAreHidden',\n },\n noAttributesForTemplate: {\n defaultMessage: 'There are no attributes in this template.',\n description:\n 'Informational text below collapsible header indicating that there are no attributes for this template',\n id: 'boxui.metadataInstanceEditor.noAttributesForTemplate',\n },\n operationNotImmediate: {\n defaultMessage: 'This operation is not immediate and may take some time.',\n description:\n 'Informational text below cascade policy description and explains to the user that the policy will take some time to take effect.',\n id: 'boxui.metadataInstanceEditor.operationNotImmediate',\n },\n});\n\nexport default messages;\n"],"mappings":"AAAA,SAASA,cAAc,QAAQ,YAAY;AAE3C,MAAMC,QAAQ,GAAGD,cAAc,CAAC;EAC5BE,WAAW;IAAA;IAAA;EAAA,CAIV;EACDC,SAAS;IAAA;IAAA;EAAA,CAIR;EACDC,YAAY;IAAA;IAAA;EAAA,CAIX;EACDC,SAAS;IAAA;IAAA;EAAA,CAIR;EACDC,oBAAoB;IAAA;IAAA;EAAA,CAInB;EACDC,WAAW;IAAA;IAAA;EAAA,CAIV;EACDC,sBAAsB;IAAA;IAAA;EAAA,CAIrB;EACDC,cAAc;IAAA;IAAA;EAAA,CAIb;EACDC,qBAAqB;IAAA;IAAA;EAAA,CAIpB;EACDC,mBAAmB;IAAA;IAAA;EAAA,CAIlB;EACDC,uBAAuB;IAAA;IAAA;EAAA,CAItB;EACDC,sBAAsB;IAAA;IAAA;EAAA,CAIrB;EACDC,YAAY;IAAA;IAAA;EAAA,CAIX;EACDC,mBAAmB;IAAA;IAAA;EAAA,CAIlB;EACDC,sBAAsB;IAAA;IAAA;EAAA,CAIrB;EACDC,iCAAiC;IAAA;IAAA;EAAA,CAKhC;EACDC,mCAAmC;IAAA;IAAA;EAAA,CAMlC;EACDC,uCAAuC;IAAA;IAAA;EAAA,CAKtC;EACDC,yCAAyC;IAAA;IAAA;EAAA,CAMxC;EACDC,iCAAiC;IAAA;IAAA;EAAA,CAIhC;EACDC,mBAAmB;IAAA;IAAA;EAAA,CAIlB;EACDC,sBAAsB;IAAA;IAAA;EAAA,CAIrB;EACDC,0BAA0B;IAAA;IAAA;EAAA,CAIzB;EACDC,4BAA4B;IAAA;IAAA;EAAA,CAI3B;EACDC,qCAAqC;IAAA;IAAA;EAAA,CAIpC;EACDC,qCAAqC;IAAA;IAAA;EAAA,CAIpC;EACDC,YAAY;IAAA;IAAA;EAAA,CAIX;EACDC,cAAc;IAAA;IAAA;EAAA,CAIb;EACDC,gCAAgC;IAAA;IAAA;EAAA,CAK/B;EACDC,UAAU;IAAA;IAAA;EAAA,CAIT;EACDC,qBAAqB;IAAA;IAAA;EAAA,CAIpB;EACDC,mBAAmB;IAAA;IAAA;EAAA,CAIlB;EACDC,gBAAgB;IAAA;IAAA;EAAA,CAIf;EACDC,qBAAqB;IAAA;IAAA;EAAA,CAIpB;EACDC,gBAAgB;IAAA;IAAA;EAAA,CAKf;EACDC,mBAAmB;IAAA;IAAA;EAAA,CAIlB;EACDC,wBAAwB;IAAA;IAAA;EAAA,CAIvB;EACDC,sBAAsB;IAAA;IAAA;EAAA,CAKrB;EACDC,4BAA4B;IAAA;IAAA;EAAA,CAK3B;EACDC,sBAAsB;IAAA;IAAA;EAAA,CAIrB;EACDC,yBAAyB;IAAA;IAAA;EAAA,CAMxB;EACDC,qBAAqB;IAAA;IAAA;EAAA,CAIpB;EACDC,0BAA0B;IAAA;IAAA;EAAA,CAIzB;EACDC,sBAAsB;IAAA;IAAA;EAAA,CAKrB;EACDC,uBAAuB;IAAA;IAAA;EAAA,CAKtB;EACDC,qBAAqB;IAAA;IAAA;EAAA;AAMzB,CAAC,CAAC;AAEF,eAAe9C,QAAQ","ignoreList":[]}
package/i18n/bn-IN.js CHANGED
@@ -605,6 +605,10 @@ export default {
605
605
  "boxui.itemDetails.url": "URL",
606
606
  "boxui.itemDetails.urlPlaceholder": "একটি বৈধ URL লিখুন",
607
607
  "boxui.media.menuButtonArialLabel": "বিকল্পগুলি",
608
+ "boxui.metadataInstanceEditor.aiAutofillDescription": "Use Box AI to automatically extract metadata values.",
609
+ "boxui.metadataInstanceEditor.aiAutofillLearnMore": "আরও জানুন",
610
+ "boxui.metadataInstanceEditor.aiAutofillNotice": "Enabling this feature may involve additional charges. Please review our {pricingLink} for more information.",
611
+ "boxui.metadataInstanceEditor.aiAutofillPricingDetails": "pricing details",
608
612
  "boxui.metadataInstanceEditor.allAttributesAreHidden": "এই টেমপ্লেটে সমস্ত বৈশিষ্ট্য লুকানো হয়েছে।",
609
613
  "boxui.metadataInstanceEditor.applyCascadePolicyText": "এই ফোল্ডার ও এর উপফোল্ডারগুলির সমস্ত নতুন ও বিদ্যমান আইটেমগুলিতে টেমপ্লেট ও এর মান প্রয়োগ করুন।",
610
614
  "boxui.metadataInstanceEditor.cannotApplyCascadePolicyText": "এই মুহূর্তে কাসকেড নীতি কাস্টম মেটাডেটায় প্রযোজ্য হবে না।",
@@ -625,6 +629,7 @@ export default {
625
629
  "boxui.metadataInstanceEditor.customValue": "মান",
626
630
  "boxui.metadataInstanceEditor.customValuePlaceholder": "উদা. 42",
627
631
  "boxui.metadataInstanceEditor.editTooltip": "মেটাডেটা সম্পাদনা করুন",
632
+ "boxui.metadataInstanceEditor.enableAIAutofill": "Box AI Autofill",
628
633
  "boxui.metadataInstanceEditor.enableCascadePolicy": "ক্যাসকেড নীতি সক্ষম করুন",
629
634
  "boxui.metadataInstanceEditor.fileMetadataRemoveCustomTemplateConfirm": "আপনি কি এই কাস্টম মেটাডেটা এবং এর সমস্ত মান মুছতে চাওয়ার বিষয়ে নিশ্চিত?",
630
635
  "boxui.metadataInstanceEditor.fileMetadataRemoveTemplateConfirm": "আপনি কি এই ফাইলটি থেকে \"{metadataName}\" এবং এর সমস্ত মান মুছতে চাওয়ার বিষয়ে নিশ্চিত?",
@@ -1210,6 +1210,14 @@ boxui.itemDetails.url = URL
1210
1210
  boxui.itemDetails.urlPlaceholder = একটি বৈধ URL লিখুন
1211
1211
  # Label for comment options menu
1212
1212
  boxui.media.menuButtonArialLabel = বিকল্পগুলি
1213
+ # Description for AI autofill toggle switch
1214
+ boxui.metadataInstanceEditor.aiAutofillDescription = Use Box AI to automatically extract metadata values.
1215
+ # Learn more link for AI autofill
1216
+ boxui.metadataInstanceEditor.aiAutofillLearnMore = আরও জানুন
1217
+ # Notice for AI autofill toggle switch
1218
+ boxui.metadataInstanceEditor.aiAutofillNotice = Enabling this feature may involve additional charges. Please review our {pricingLink} for more information.
1219
+ # Pricing details link for AI autofill
1220
+ boxui.metadataInstanceEditor.aiAutofillPricingDetails = pricing details
1213
1221
  # Informational text below collapsible header indicating that all fields for this template are hidden
1214
1222
  boxui.metadataInstanceEditor.allAttributesAreHidden = এই টেমপ্লেটে সমস্ত বৈশিষ্ট্য লুকানো হয়েছে।
1215
1223
  # Informational text below enable cascade policy toggle switch
@@ -1250,6 +1258,8 @@ boxui.metadataInstanceEditor.customValue = মান
1250
1258
  boxui.metadataInstanceEditor.customValuePlaceholder = উদা. 42
1251
1259
  # Text that shows in a tooltip above the edit pencil button.
1252
1260
  boxui.metadataInstanceEditor.editTooltip = মেটাডেটা সম্পাদনা করুন
1261
+ # Label for enable AI autofill toggle switch
1262
+ boxui.metadataInstanceEditor.enableAIAutofill = Box AI Autofill
1253
1263
  # Label for enable cascade policy toggle switch
1254
1264
  boxui.metadataInstanceEditor.enableCascadePolicy = ক্যাসকেড নীতি সক্ষম করুন
1255
1265
  # Message for users who may attempt to remove a custom metadata instance for a file. Also non-recoverable
package/i18n/da-DK.js CHANGED
@@ -605,6 +605,10 @@ export default {
605
605
  "boxui.itemDetails.url": "URL",
606
606
  "boxui.itemDetails.urlPlaceholder": "Indtast en gyldig URL",
607
607
  "boxui.media.menuButtonArialLabel": "Indstillinger",
608
+ "boxui.metadataInstanceEditor.aiAutofillDescription": "Use Box AI to automatically extract metadata values.",
609
+ "boxui.metadataInstanceEditor.aiAutofillLearnMore": "Få mere at vide",
610
+ "boxui.metadataInstanceEditor.aiAutofillNotice": "Enabling this feature may involve additional charges. Please review our {pricingLink} for more information.",
611
+ "boxui.metadataInstanceEditor.aiAutofillPricingDetails": "pricing details",
608
612
  "boxui.metadataInstanceEditor.allAttributesAreHidden": "Alle attributter i denne skabelon er blevet skjult.",
609
613
  "boxui.metadataInstanceEditor.applyCascadePolicyText": "Anvend skabelonen og dens værdier på alle nye og eksisterende elementer i denne mappe og dens undermapper.",
610
614
  "boxui.metadataInstanceEditor.cannotApplyCascadePolicyText": "Cascade-politik kan ikke anvendes til brugerdefinerede metadata på dette tidspunkt.",
@@ -625,6 +629,7 @@ export default {
625
629
  "boxui.metadataInstanceEditor.customValue": "Værdi",
626
630
  "boxui.metadataInstanceEditor.customValuePlaceholder": "f.eks. 42",
627
631
  "boxui.metadataInstanceEditor.editTooltip": "Rediger metadata",
632
+ "boxui.metadataInstanceEditor.enableAIAutofill": "Box AI Autofill",
628
633
  "boxui.metadataInstanceEditor.enableCascadePolicy": "Aktivér cascade-politik",
629
634
  "boxui.metadataInstanceEditor.fileMetadataRemoveCustomTemplateConfirm": "Er du sikker på, at du vil slette disse brugerdefinerede metadata og alle deres værdier fra denne fil?",
630
635
  "boxui.metadataInstanceEditor.fileMetadataRemoveTemplateConfirm": "Er du sikker på, at du vil slette \"{metadataName}\" og alle deres værdier fra denne fil?",
@@ -1210,6 +1210,14 @@ boxui.itemDetails.url = URL
1210
1210
  boxui.itemDetails.urlPlaceholder = Indtast en gyldig URL
1211
1211
  # Label for comment options menu
1212
1212
  boxui.media.menuButtonArialLabel = Indstillinger
1213
+ # Description for AI autofill toggle switch
1214
+ boxui.metadataInstanceEditor.aiAutofillDescription = Use Box AI to automatically extract metadata values.
1215
+ # Learn more link for AI autofill
1216
+ boxui.metadataInstanceEditor.aiAutofillLearnMore = Få mere at vide
1217
+ # Notice for AI autofill toggle switch
1218
+ boxui.metadataInstanceEditor.aiAutofillNotice = Enabling this feature may involve additional charges. Please review our {pricingLink} for more information.
1219
+ # Pricing details link for AI autofill
1220
+ boxui.metadataInstanceEditor.aiAutofillPricingDetails = pricing details
1213
1221
  # Informational text below collapsible header indicating that all fields for this template are hidden
1214
1222
  boxui.metadataInstanceEditor.allAttributesAreHidden = Alle attributter i denne skabelon er blevet skjult.
1215
1223
  # Informational text below enable cascade policy toggle switch
@@ -1250,6 +1258,8 @@ boxui.metadataInstanceEditor.customValue = Værdi
1250
1258
  boxui.metadataInstanceEditor.customValuePlaceholder = f.eks. 42
1251
1259
  # Text that shows in a tooltip above the edit pencil button.
1252
1260
  boxui.metadataInstanceEditor.editTooltip = Rediger metadata
1261
+ # Label for enable AI autofill toggle switch
1262
+ boxui.metadataInstanceEditor.enableAIAutofill = Box AI Autofill
1253
1263
  # Label for enable cascade policy toggle switch
1254
1264
  boxui.metadataInstanceEditor.enableCascadePolicy = Aktivér cascade-politik
1255
1265
  # Message for users who may attempt to remove a custom metadata instance for a file. Also non-recoverable
package/i18n/de-DE.js CHANGED
@@ -605,6 +605,10 @@ export default {
605
605
  "boxui.itemDetails.url": "URL",
606
606
  "boxui.itemDetails.urlPlaceholder": "Gültige URL eingeben",
607
607
  "boxui.media.menuButtonArialLabel": "Optionen",
608
+ "boxui.metadataInstanceEditor.aiAutofillDescription": "Use Box AI to automatically extract metadata values.",
609
+ "boxui.metadataInstanceEditor.aiAutofillLearnMore": "Mehr erfahren",
610
+ "boxui.metadataInstanceEditor.aiAutofillNotice": "Enabling this feature may involve additional charges. Please review our {pricingLink} for more information.",
611
+ "boxui.metadataInstanceEditor.aiAutofillPricingDetails": "pricing details",
608
612
  "boxui.metadataInstanceEditor.allAttributesAreHidden": "Alle Attribute in dieser Vorlage wurden ausgeblendet.",
609
613
  "boxui.metadataInstanceEditor.applyCascadePolicyText": "Wenden Sie die Vorlage und ihre Werte auf alle neuen und vorhandenen Elemente in diesem Ordner und seinen Unterordnern an.",
610
614
  "boxui.metadataInstanceEditor.cannotApplyCascadePolicyText": "Kaskadenrichtlinie kann zu diesem Zeitpunkt nicht auf benutzerdefinierte Metadaten angewendet werden.",
@@ -625,6 +629,7 @@ export default {
625
629
  "boxui.metadataInstanceEditor.customValue": "Wert",
626
630
  "boxui.metadataInstanceEditor.customValuePlaceholder": "z. B. 42",
627
631
  "boxui.metadataInstanceEditor.editTooltip": "Metadaten bearbeiten",
632
+ "boxui.metadataInstanceEditor.enableAIAutofill": "Box AI Autofill",
628
633
  "boxui.metadataInstanceEditor.enableCascadePolicy": "Kaskadenrichtlinie aktivieren",
629
634
  "boxui.metadataInstanceEditor.fileMetadataRemoveCustomTemplateConfirm": "Möchten Sie diese benutzerdefinierten Metadaten und ihre gesamten Werte aus dieser Datei wirklich löschen?",
630
635
  "boxui.metadataInstanceEditor.fileMetadataRemoveTemplateConfirm": "Möchten Sie „{metadataName}“ und ihre gesamten Werte aus dieser Datei wirklich löschen?",
@@ -1210,6 +1210,14 @@ boxui.itemDetails.url = URL
1210
1210
  boxui.itemDetails.urlPlaceholder = Gültige URL eingeben
1211
1211
  # Label for comment options menu
1212
1212
  boxui.media.menuButtonArialLabel = Optionen
1213
+ # Description for AI autofill toggle switch
1214
+ boxui.metadataInstanceEditor.aiAutofillDescription = Use Box AI to automatically extract metadata values.
1215
+ # Learn more link for AI autofill
1216
+ boxui.metadataInstanceEditor.aiAutofillLearnMore = Mehr erfahren
1217
+ # Notice for AI autofill toggle switch
1218
+ boxui.metadataInstanceEditor.aiAutofillNotice = Enabling this feature may involve additional charges. Please review our {pricingLink} for more information.
1219
+ # Pricing details link for AI autofill
1220
+ boxui.metadataInstanceEditor.aiAutofillPricingDetails = pricing details
1213
1221
  # Informational text below collapsible header indicating that all fields for this template are hidden
1214
1222
  boxui.metadataInstanceEditor.allAttributesAreHidden = Alle Attribute in dieser Vorlage wurden ausgeblendet.
1215
1223
  # Informational text below enable cascade policy toggle switch
@@ -1250,6 +1258,8 @@ boxui.metadataInstanceEditor.customValue = Wert
1250
1258
  boxui.metadataInstanceEditor.customValuePlaceholder = z. B. 42
1251
1259
  # Text that shows in a tooltip above the edit pencil button.
1252
1260
  boxui.metadataInstanceEditor.editTooltip = Metadaten bearbeiten
1261
+ # Label for enable AI autofill toggle switch
1262
+ boxui.metadataInstanceEditor.enableAIAutofill = Box AI Autofill
1253
1263
  # Label for enable cascade policy toggle switch
1254
1264
  boxui.metadataInstanceEditor.enableCascadePolicy = Kaskadenrichtlinie aktivieren
1255
1265
  # Message for users who may attempt to remove a custom metadata instance for a file. Also non-recoverable