@box/metadata-editor 2.3.9 → 2.3.11

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 (159) hide show
  1. package/dist/chunks/add-metadata-template-dropdown-with-browser.js +1 -34
  2. package/dist/chunks/ai-suggestion-field.js +1 -100
  3. package/dist/chunks/autofill-overlay.js +1 -63
  4. package/dist/chunks/combobox-with-api-pagination.js +1 -161
  5. package/dist/chunks/custom-instance-new-field.js +1 -60
  6. package/dist/chunks/custom-instance.js +1 -74
  7. package/dist/chunks/delete-confirmation-modal.js +1 -76
  8. package/dist/chunks/field-action-bar.module.js +1 -7
  9. package/dist/chunks/filter-dropdown-menu.module.js +1 -12
  10. package/dist/chunks/filter-instances-dropdown.js +1 -84
  11. package/dist/chunks/interactive-header-text.js +1 -19
  12. package/dist/chunks/interactive-text.module.js +1 -5
  13. package/dist/chunks/metadata-editor.js +1 -9
  14. package/dist/chunks/metadata-instance-content.js +1 -43
  15. package/dist/chunks/metadata-instance-entry.js +1 -104
  16. package/dist/chunks/metadata-instance-footer.js +1 -25
  17. package/dist/chunks/metadata-instance-form-ai-disclaimer.js +1 -28
  18. package/dist/chunks/metadata-instance-form-autofill-button.js +1 -113
  19. package/dist/chunks/metadata-instance-form-card-wrapper.js +1 -54
  20. package/dist/chunks/metadata-instance-form-footer.js +1 -43
  21. package/dist/chunks/metadata-instance-form-header.js +1 -45
  22. package/dist/chunks/metadata-instance-header.js +1 -52
  23. package/dist/chunks/metadata-instance-list.js +1 -20
  24. package/dist/chunks/metadata-instance.js +1 -60
  25. package/dist/chunks/shared-field-styles.module.js +1 -6
  26. package/dist/chunks/taxonomy-ancestor-status-pill.js +1 -90
  27. package/dist/chunks/types.js +1 -8
  28. package/dist/chunks/update-mode-field-wrapper.js +1 -80
  29. package/dist/chunks/utils.js +1 -88
  30. package/dist/chunks/utils2.js +1 -53
  31. package/dist/esm/index.js +1 -25
  32. package/dist/esm/lib/components/add-metadata-template-dropdown/add-metadata-template-dropdown-with-browser.js +1 -2
  33. package/dist/esm/lib/components/add-metadata-template-dropdown/add-metadata-template-dropdown.js +1 -24
  34. package/dist/esm/lib/components/add-metadata-template-dropdown/index.js +1 -3
  35. package/dist/esm/lib/components/add-metadata-template-dropdown/messages.js +1 -20
  36. package/dist/esm/lib/components/add-metadata-template-dropdown/shared/dropdown-trigger.js +1 -16
  37. package/dist/esm/lib/components/combobox-with-api-pagination/combobox-with-api-pagination.js +1 -2
  38. package/dist/esm/lib/components/combobox-with-api-pagination/index.js +1 -2
  39. package/dist/esm/lib/components/combobox-with-api-pagination/messages.js +1 -32
  40. package/dist/esm/lib/components/combobox-with-api-pagination/request.js +1 -4
  41. package/dist/esm/lib/components/combobox-with-api-pagination/use-async-list.js +1 -118
  42. package/dist/esm/lib/components/combobox-with-api-pagination/utils/is-abort-error.js +1 -11
  43. package/dist/esm/lib/components/combobox-with-api-pagination/utils/use-controllable-state.js +1 -35
  44. package/dist/esm/lib/components/combobox-with-api-pagination/utils/use-intersection-observer.js +1 -75
  45. package/dist/esm/lib/components/filter-dropdown-menu/filter-dropdown-menu-content.js +1 -14
  46. package/dist/esm/lib/components/filter-dropdown-menu/filter-dropdown-menu-empty-state.js +1 -17
  47. package/dist/esm/lib/components/filter-dropdown-menu/filter-dropdown-menu-item.js +1 -15
  48. package/dist/esm/lib/components/filter-dropdown-menu/filter-dropdown-menu-list.js +1 -17
  49. package/dist/esm/lib/components/filter-dropdown-menu/filter-dropdown-menu-root.js +1 -14
  50. package/dist/esm/lib/components/filter-dropdown-menu/filter-dropdown-menu-search.js +1 -37
  51. package/dist/esm/lib/components/filter-dropdown-menu/filter-dropdown-menu-trigger.js +1 -8
  52. package/dist/esm/lib/components/filter-dropdown-menu/index.js +1 -17
  53. package/dist/esm/lib/components/filter-dropdown-menu/messages.js +1 -12
  54. package/dist/esm/lib/components/filter-instances-dropdown/filter-instances-dropdown.js +1 -2
  55. package/dist/esm/lib/components/filter-instances-dropdown/index.js +1 -2
  56. package/dist/esm/lib/components/filter-instances-dropdown/messages.js +1 -20
  57. package/dist/esm/lib/components/interactive-header-text/interactive-header-text.js +1 -2
  58. package/dist/esm/lib/components/interactive-text/interactive-text.js +1 -18
  59. package/dist/esm/lib/components/metadata-editor-fields/components/ai-logo-badge/ai-logo-badge.js +1 -36
  60. package/dist/esm/lib/components/metadata-editor-fields/components/ai-logo-badge/index.js +1 -2
  61. package/dist/esm/lib/components/metadata-editor-fields/components/ai-suggestion-field/ai-suggestion-field.js +1 -2
  62. package/dist/esm/lib/components/metadata-editor-fields/components/ai-suggestion-field/index.js +1 -2
  63. package/dist/esm/lib/components/metadata-editor-fields/components/ai-suggestion-field/messages.js +1 -52
  64. package/dist/esm/lib/components/metadata-editor-fields/components/ai-suggestion-field/utils.js +1 -13
  65. package/dist/esm/lib/components/metadata-editor-fields/components/constants.js +1 -2
  66. package/dist/esm/lib/components/metadata-editor-fields/components/low-confidence-badge/index.js +1 -2
  67. package/dist/esm/lib/components/metadata-editor-fields/components/low-confidence-badge/low-confidence-badge.js +1 -24
  68. package/dist/esm/lib/components/metadata-editor-fields/components/low-confidence-suggestion-field/index.js +1 -2
  69. package/dist/esm/lib/components/metadata-editor-fields/components/low-confidence-suggestion-field/low-confidence-suggestion-field.js +1 -68
  70. package/dist/esm/lib/components/metadata-editor-fields/components/low-confidence-suggestion-field/messages.js +1 -32
  71. package/dist/esm/lib/components/metadata-editor-fields/components/metadata-date-field/metadata-date-field.js +1 -44
  72. package/dist/esm/lib/components/metadata-editor-fields/components/metadata-enum-field/metadata-enum-field.js +1 -48
  73. package/dist/esm/lib/components/metadata-editor-fields/components/metadata-float-field/metadata-float-field.js +1 -34
  74. package/dist/esm/lib/components/metadata-editor-fields/components/metadata-float-field/use-float-validation.js +1 -9
  75. package/dist/esm/lib/components/metadata-editor-fields/components/metadata-multi-select-field/metadata-multi-select-field.js +1 -41
  76. package/dist/esm/lib/components/metadata-editor-fields/components/metadata-string-field/metadata-string-field.js +1 -29
  77. package/dist/esm/lib/components/metadata-editor-fields/components/metadata-taxonomy-field/legacy-metadata-taxonomy-field.js +1 -67
  78. package/dist/esm/lib/components/metadata-editor-fields/components/metadata-taxonomy-field/metadata-taxonomy-field.js +1 -16
  79. package/dist/esm/lib/components/metadata-editor-fields/components/metadata-taxonomy-field/metadata-taxonomy-picker-field/metadata-taxonomy-picker-field.js +1 -53
  80. package/dist/esm/lib/components/metadata-editor-fields/components/metadata-taxonomy-field/metadata-taxonomy-picker-field/value-mapping.js +1 -30
  81. package/dist/esm/lib/components/metadata-editor-fields/components/update-mode-field-wrapper/messages.js +1 -32
  82. package/dist/esm/lib/components/metadata-editor-fields/components/update-mode-field-wrapper/mulitple-values-utils.js +1 -8
  83. package/dist/esm/lib/components/metadata-editor-fields/components/update-mode-field-wrapper/update-mode-field-wrapper.js +1 -2
  84. package/dist/esm/lib/components/metadata-editor-fields/editor-field-types.js +1 -32
  85. package/dist/esm/lib/components/metadata-editor-fields/hooks/use-memoized-field-label.js +1 -12
  86. package/dist/esm/lib/components/metadata-editor-fields/hooks/use-review-field-filter.js +1 -36
  87. package/dist/esm/lib/components/metadata-editor-fields/hooks/use-view-reference-tooltip.js +1 -41
  88. package/dist/esm/lib/components/metadata-editor-fields/messages.js +1 -12
  89. package/dist/esm/lib/components/metadata-editor-fields/metadata-editor-field-wrapper.js +1 -189
  90. package/dist/esm/lib/components/metadata-editor-fields/metadata-editor-fields.js +1 -31
  91. package/dist/esm/lib/components/metadata-editor-fields/utils.js +1 -2
  92. package/dist/esm/lib/components/metadata-empty-state/messages.js +1 -44
  93. package/dist/esm/lib/components/metadata-empty-state/metadata-empty-state.js +1 -47
  94. package/dist/esm/lib/components/metadata-instance-editor/index.js +1 -9
  95. package/dist/esm/lib/components/metadata-instance-editor/subcomponents/autofill-overlay/autofill-overlay.js +1 -2
  96. package/dist/esm/lib/components/metadata-instance-editor/subcomponents/autofill-overlay/messages.js +1 -40
  97. package/dist/esm/lib/components/metadata-instance-editor/subcomponents/autofill-overlay/useErrorMessaging.js +1 -23
  98. package/dist/esm/lib/components/metadata-instance-editor/subcomponents/custom-instance/custom-instance.js +1 -2
  99. package/dist/esm/lib/components/metadata-instance-editor/subcomponents/custom-instance/messages.js +1 -16
  100. package/dist/esm/lib/components/metadata-instance-editor/subcomponents/custom-instance-new-field/custom-instance-new-field.js +1 -2
  101. package/dist/esm/lib/components/metadata-instance-editor/subcomponents/custom-instance-new-field/messages.js +1 -44
  102. package/dist/esm/lib/components/metadata-instance-editor/subcomponents/delete-confirmation-modal/delete-confirmation-modal.js +1 -2
  103. package/dist/esm/lib/components/metadata-instance-editor/subcomponents/delete-confirmation-modal/messages.js +1 -52
  104. package/dist/esm/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form/constants.js +1 -2
  105. package/dist/esm/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form/metadata-instance-form-card-wrapper.js +1 -2
  106. package/dist/esm/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form/metadata-instance-form.js +1 -136
  107. package/dist/esm/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form/utils.js +1 -2
  108. package/dist/esm/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form-ai-disclaimer/metadata-instance-form-ai-disclaimer.js +1 -2
  109. package/dist/esm/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form-autofill-button/messages.js +1 -24
  110. package/dist/esm/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form-autofill-button/metadata-instance-form-autofill-button.js +1 -2
  111. package/dist/esm/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form-footer/messages.js +1 -20
  112. package/dist/esm/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form-footer/metadata-instance-form-footer.js +1 -2
  113. package/dist/esm/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form-header/messages.js +1 -6
  114. package/dist/esm/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form-header/metadata-instance-form-header.js +1 -2
  115. package/dist/esm/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form-inline-notice/messages.js +1 -20
  116. package/dist/esm/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form-inline-notice/metadata-instance-form-inline-notice.js +1 -31
  117. package/dist/esm/lib/components/metadata-instance-list/index.js +1 -6
  118. package/dist/esm/lib/components/metadata-instance-list/metadata-instance-list.js +1 -2
  119. package/dist/esm/lib/components/metadata-instance-list/subcomponents/metadata-instance/metadata-instance.js +1 -2
  120. package/dist/esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-content/metadata-instance-content.js +1 -2
  121. package/dist/esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-entry/messages.js +1 -6
  122. package/dist/esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-entry/metadata-entry-display.js +1 -15
  123. package/dist/esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-entry/metadata-instance-entry.js +1 -2
  124. package/dist/esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-entry/taxonomy-entry/messages.js +1 -24
  125. package/dist/esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-entry/taxonomy-entry/taxonomy-ancestor-status-pill.js +1 -2
  126. package/dist/esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-entry/taxonomy-entry/taxonomy-value.js +1 -25
  127. package/dist/esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-footer/messages.js +1 -12
  128. package/dist/esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-footer/metadata-instance-footer.js +1 -2
  129. package/dist/esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-header/messages.js +1 -16
  130. package/dist/esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-header/metadata-instance-header.js +1 -2
  131. package/dist/esm/lib/components/metadata-instance-review-notice/messages.js +1 -32
  132. package/dist/esm/lib/components/metadata-instance-review-notice/metadata-instance-review-notice.js +1 -24
  133. package/dist/esm/lib/components/unsaved-changes-modal/index.js +1 -2
  134. package/dist/esm/lib/components/unsaved-changes-modal/messages.js +1 -24
  135. package/dist/esm/lib/components/unsaved-changes-modal/unsaved-changes-modal.js +1 -45
  136. package/dist/esm/lib/components/unsaved-changes-modal/utils.js +1 -4
  137. package/dist/esm/lib/constants.js +1 -15
  138. package/dist/esm/lib/defaults.js +1 -16
  139. package/dist/esm/lib/mappers.js +1 -23
  140. package/dist/esm/lib/messages.js +1 -129
  141. package/dist/esm/lib/metadata-editor.js +1 -2
  142. package/dist/esm/lib/utils/analytics/analytics-context.js +1 -11
  143. package/dist/esm/lib/utils/analytics/events.js +1 -9
  144. package/dist/esm/lib/utils/analytics/index.js +1 -4
  145. package/dist/esm/lib/utils/analytics/with-analytics.js +1 -11
  146. package/dist/esm/lib/utils/api-wrapper.js +1 -13
  147. package/dist/esm/lib/utils/autofill-context.js +1 -66
  148. package/dist/esm/lib/utils/check-if-has-bounding-boxes.js +1 -2
  149. package/dist/esm/lib/utils/confidence-score/format-confidence-score-percent.js +1 -4
  150. package/dist/esm/lib/utils/confidence-score/get-confidence-score-tooltip.js +1 -13
  151. package/dist/esm/lib/utils/confidence-score/get-fields-needing-review.js +1 -6
  152. package/dist/esm/lib/utils/confidence-score/index.js +1 -5
  153. package/dist/esm/lib/utils/confidence-score/is-confidence-score-needing-review.js +1 -5
  154. package/dist/esm/lib/utils/confidence-score/messages.js +1 -16
  155. package/dist/esm/lib/utils/convertDate.js +1 -24
  156. package/dist/esm/lib/utils/is-interactive-form-element.js +1 -2
  157. package/dist/esm/lib/utils/utils.js +1 -4
  158. package/dist/styles/metadata-instance-footer.css +1 -1
  159. package/package.json +13 -13
@@ -1,30 +1 @@
1
- import "../../update-mode-field-wrapper/mulitple-values-utils.js";
2
- import { TaxonomyPickerMode as e } from "@box/metadata-taxonomy-picker";
3
- function t(e, t) {
4
- return Array.isArray(e) ? e.map((e) => ({
5
- id: e.value,
6
- displayName: e.value === "Multiple values" ? t : e.displayValue ?? "",
7
- level: e.level,
8
- ancestors: e.ancestors
9
- })) : [];
10
- }
11
- function n(e) {
12
- return e.map((e) => ({
13
- value: e.id,
14
- displayValue: e.displayName,
15
- level: e.level,
16
- selectable: !0,
17
- ancestors: e.ancestors
18
- }));
19
- }
20
- function r(t) {
21
- return t && t.length > 1 ? e.MultiLevel : e.SingleLevel;
22
- }
23
- function i(e, t) {
24
- return e?.map((e) => ({
25
- level: e.level,
26
- displayName: e.displayName,
27
- selectable: !!t?.includes(e.level)
28
- })) ?? [];
29
- }
30
- export { r as getTaxonomyPickerMode, t as mapFormValueToTaxonomyValues, i as mapLevelsToTaxonomyLevels, n as mapTaxonomyValuesToFormValue };
1
+ import"../../update-mode-field-wrapper/mulitple-values-utils.js";import{TaxonomyPickerMode}from"@box/metadata-taxonomy-picker";function mapFormValueToTaxonomyValues(value,multipleValuesLabel){return Array.isArray(value)?value.map(option=>({id:option.value,displayName:option.value===`Multiple values`?multipleValuesLabel:option.displayValue??``,level:option.level,ancestors:option.ancestors})):[]}function mapTaxonomyValuesToFormValue(values){return values.map(value=>({value:value.id,displayValue:value.displayName,level:value.level,selectable:!0,ancestors:value.ancestors}))}function getTaxonomyPickerMode(selectableLevels){return selectableLevels&&selectableLevels.length>1?TaxonomyPickerMode.MultiLevel:TaxonomyPickerMode.SingleLevel}function mapLevelsToTaxonomyLevels(levels,selectableLevels){return levels?.map(level=>({level:level.level,displayName:level.displayName,selectable:!!selectableLevels?.includes(level.level)}))??[]}export{getTaxonomyPickerMode,mapFormValueToTaxonomyValues,mapLevelsToTaxonomyLevels,mapTaxonomyValuesToFormValue};
@@ -1,32 +1 @@
1
- import { defineMessages as e } from "react-intl";
2
- var t = e({
3
- multipleValues: {
4
- id: "groupSharedFeatures.metadataEditor.metadataEditorFields.multipleValues",
5
- defaultMessage: "Multiple values"
6
- },
7
- toggleUpdateModeSelectiorAriaLabel: {
8
- id: "groupSharedFeatures.metadataEditor.metadataEditorFields.toggleUpdateModeSelectiorAriaLabel",
9
- defaultMessage: "Toggle update mode selector"
10
- },
11
- append: {
12
- id: "groupSharedFeatures.metadataEditor.metadataEditorFields.append",
13
- defaultMessage: "Append"
14
- },
15
- clearAndReplace: {
16
- id: "groupSharedFeatures.metadataEditor.metadataEditorFields.clearAndReplace",
17
- defaultMessage: "Clear All & Replace"
18
- },
19
- removeEntered: {
20
- id: "groupSharedFeatures.metadataEditor.metadataEditorFields.removeEntered",
21
- defaultMessage: "Remove Entered"
22
- },
23
- replaceEntered: {
24
- id: "groupSharedFeatures.metadataEditor.metadataEditorFields.replaceEntered",
25
- defaultMessage: "Replace Entered"
26
- },
27
- with: {
28
- id: "groupSharedFeatures.metadataEditor.metadataEditorFields.with",
29
- defaultMessage: "With"
30
- }
31
- });
32
- export { t as messages };
1
+ import{defineMessages}from"react-intl";var messages=defineMessages({multipleValues:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.multipleValues`,defaultMessage:`Multiple values`},toggleUpdateModeSelectiorAriaLabel:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.toggleUpdateModeSelectiorAriaLabel`,defaultMessage:`Toggle update mode selector`},append:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.append`,defaultMessage:`Append`},clearAndReplace:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.clearAndReplace`,defaultMessage:`Clear All & Replace`},removeEntered:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.removeEntered`,defaultMessage:`Remove Entered`},replaceEntered:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.replaceEntered`,defaultMessage:`Replace Entered`},with:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.with`,defaultMessage:`With`}});export{messages};
@@ -1,8 +1 @@
1
- var e = "Multiple values", t = {
2
- id: "MD-editor-dummy-Multiple values",
3
- key: e
4
- }, n = {
5
- id: "MD-editor-dummy--Multiple values-tax",
6
- key: e
7
- };
8
- export { t as MULTI_VALUE_DEFAULT_OPTION, n as MULTI_VALUE_DEFAULT_TAXONOMY_OPTION, e as MULTI_VALUE_DEFAULT_VALUE };
1
+ var MULTI_VALUE_DEFAULT_VALUE=`Multiple values`,MULTI_VALUE_DEFAULT_OPTION={id:`MD-editor-dummy-Multiple values`,key:MULTI_VALUE_DEFAULT_VALUE},MULTI_VALUE_DEFAULT_TAXONOMY_OPTION={id:`MD-editor-dummy--Multiple values-tax`,key:MULTI_VALUE_DEFAULT_VALUE};export{MULTI_VALUE_DEFAULT_OPTION,MULTI_VALUE_DEFAULT_TAXONOMY_OPTION,MULTI_VALUE_DEFAULT_VALUE};
@@ -1,2 +1 @@
1
- import { t as e } from "../../../../../../chunks/update-mode-field-wrapper.js";
2
- export { e as UpdateModeFieldWrapper };
1
+ import{t as UpdateModeFieldWrapper}from"../../../../../../chunks/update-mode-field-wrapper.js";export{UpdateModeFieldWrapper};
@@ -1,32 +1 @@
1
- import { MetadataDateField as e } from "./components/metadata-date-field/metadata-date-field.js";
2
- import { MetadataEnumField as t } from "./components/metadata-enum-field/metadata-enum-field.js";
3
- import { MetadataFloatField as n } from "./components/metadata-float-field/metadata-float-field.js";
4
- import { MetadataMultiSelectField as r } from "./components/metadata-multi-select-field/metadata-multi-select-field.js";
5
- import { MetadataStringField as i } from "./components/metadata-string-field/metadata-string-field.js";
6
- import { MetadataTaxonomyField as a } from "./components/metadata-taxonomy-field/metadata-taxonomy-field.js";
7
- import { forwardRef as o } from "react";
8
- import { jsx as s } from "react/jsx-runtime";
9
- var c = {
10
- date: /*#__PURE__*/ o((t, n) => /* @__PURE__ */ s(e, {
11
- ...t,
12
- ref: n
13
- })),
14
- enum: /*#__PURE__*/ o((e, n) => /* @__PURE__ */ s(t, {
15
- ...e,
16
- ref: n
17
- })),
18
- float: /*#__PURE__*/ o((e, t) => /* @__PURE__ */ s(n, {
19
- ...e,
20
- ref: t
21
- })),
22
- multiSelect: /*#__PURE__*/ o((e, t) => /* @__PURE__ */ s(r, {
23
- ...e,
24
- ref: t
25
- })),
26
- string: /*#__PURE__*/ o((e, t) => /* @__PURE__ */ s(i, {
27
- ...e,
28
- ref: t
29
- })),
30
- taxonomy: (e) => /* @__PURE__ */ s(a, { ...e })
31
- };
32
- export { c as editorFieldTypes };
1
+ import{MetadataDateField}from"./components/metadata-date-field/metadata-date-field.js";import{MetadataEnumField}from"./components/metadata-enum-field/metadata-enum-field.js";import{MetadataFloatField}from"./components/metadata-float-field/metadata-float-field.js";import{MetadataMultiSelectField}from"./components/metadata-multi-select-field/metadata-multi-select-field.js";import{MetadataStringField}from"./components/metadata-string-field/metadata-string-field.js";import{MetadataTaxonomyField}from"./components/metadata-taxonomy-field/metadata-taxonomy-field.js";import{forwardRef}from"react";import{jsx}from"react/jsx-runtime";var editorFieldTypes={date:forwardRef((props,forwardedRef)=>jsx(MetadataDateField,{...props,ref:forwardedRef})),enum:forwardRef((props,forwardedRef)=>jsx(MetadataEnumField,{...props,ref:forwardedRef})),float:forwardRef((props,forwardedRef)=>jsx(MetadataFloatField,{...props,ref:forwardedRef})),multiSelect:forwardRef((props,forwardedRef)=>jsx(MetadataMultiSelectField,{...props,ref:forwardedRef})),string:forwardRef((props,forwardedRef)=>jsx(MetadataStringField,{...props,ref:forwardedRef})),taxonomy:props=>jsx(MetadataTaxonomyField,{...props})};export{editorFieldTypes};
@@ -1,12 +1 @@
1
- import { t as e } from "../../../../../chunks/utils.js";
2
- import { useMemo as t } from "react";
3
- function n(n, r, i, a, o) {
4
- return t(() => e(n, r ?? void 0, i, a, o), [
5
- n,
6
- r,
7
- i,
8
- a,
9
- o
10
- ]);
11
- }
12
- export { n as useMemoizedFieldLabel };
1
+ import{t as getFieldLabel}from"../../../../../chunks/utils.js";import{useMemo}from"react";function useMemoizedFieldLabel(label,description,isAiSuggestionApplied,as,confidenceScore){return useMemo(()=>getFieldLabel(label,description??void 0,isAiSuggestionApplied,as,confidenceScore),[label,description,isAiSuggestionApplied,as,confidenceScore])}export{useMemoizedFieldLabel};
@@ -1,36 +1 @@
1
- import { getFieldsNeedingReview as e } from "../../../utils/confidence-score/get-fields-needing-review.js";
2
- import { useCallback as t, useEffect as n, useMemo as r, useRef as i, useState as a } from "react";
3
- function o(o, s) {
4
- let [c, l] = a(/* @__PURE__ */ new Set()), u = i(null), d = r(() => {
5
- let t = e(o);
6
- return new Set(t.map((e) => e.key));
7
- }, [o]), f = t(() => {
8
- if (!s || !u.current) return;
9
- let e = [];
10
- for (let t of u.current) d.has(t) || e.push(t);
11
- e.length > 0 && l((t) => {
12
- let n = new Set(t);
13
- for (let t of e) n.add(t);
14
- return n;
15
- });
16
- }, [s, d]);
17
- return n(() => {
18
- f(), u.current = d;
19
- }, [d, f]), n(() => {
20
- s || l(/* @__PURE__ */ new Set());
21
- }, [s]), r(() => {
22
- let e = o.map((e, t) => ({
23
- field: e,
24
- originalIndex: t
25
- }));
26
- if (!s) return e;
27
- let t = e.filter(({ field: e }) => d.has(e.key)), n = e.filter(({ field: e }) => c.has(e.key) && !d.has(e.key));
28
- return [...t, ...n];
29
- }, [
30
- o,
31
- s,
32
- d,
33
- c
34
- ]);
35
- }
36
- export { o as useReviewFieldFilter };
1
+ import{getFieldsNeedingReview}from"../../../utils/confidence-score/get-fields-needing-review.js";import{useCallback,useEffect,useMemo,useRef,useState}from"react";function useReviewFieldFilter(fields,shouldShowOnlyReviewFields){let[fieldKeysAlreadyReviewed,setFieldKeysAlreadyReviewed]=useState(new Set),prevKeysForReviewSnapshotRef=useRef(null),fieldKeysForReview=useMemo(()=>{let fieldsForReview=getFieldsNeedingReview(fields);return new Set(fieldsForReview.map(f=>f.key))},[fields]),detectReviewedWhileFiltering=useCallback(()=>{if(!shouldShowOnlyReviewFields||!prevKeysForReviewSnapshotRef.current)return;let keysAlreadyReviewed=[];for(let key of prevKeysForReviewSnapshotRef.current)fieldKeysForReview.has(key)||keysAlreadyReviewed.push(key);keysAlreadyReviewed.length>0&&setFieldKeysAlreadyReviewed(prev=>{let next=new Set(prev);for(let key of keysAlreadyReviewed)next.add(key);return next})},[shouldShowOnlyReviewFields,fieldKeysForReview]);return useEffect(()=>{detectReviewedWhileFiltering(),prevKeysForReviewSnapshotRef.current=fieldKeysForReview},[fieldKeysForReview,detectReviewedWhileFiltering]),useEffect(()=>{shouldShowOnlyReviewFields||setFieldKeysAlreadyReviewed(new Set)},[shouldShowOnlyReviewFields]),useMemo(()=>{let fieldEntries=fields.map((field,index)=>({field,originalIndex:index}));if(!shouldShowOnlyReviewFields)return fieldEntries;let fieldsForReviewEntries=fieldEntries.filter(({field})=>fieldKeysForReview.has(field.key)),fieldsAlreadyReviewedEntries=fieldEntries.filter(({field})=>fieldKeysAlreadyReviewed.has(field.key)&&!fieldKeysForReview.has(field.key));return[...fieldsForReviewEntries,...fieldsAlreadyReviewedEntries]},[fields,shouldShowOnlyReviewFields,fieldKeysForReview,fieldKeysAlreadyReviewed])}export{useReviewFieldFilter};
@@ -1,41 +1 @@
1
- import { isInteractiveFormElement as e } from "../../../utils/is-interactive-form-element.js";
2
- import { useCallback as t, useRef as n, useState as r } from "react";
3
- var i = "[data-blueprint-tooltip-trigger]", a = 400;
4
- function o(t, n) {
5
- if (!(t instanceof Element) || !n.contains(t) || e(t)) return !0;
6
- let r = t.closest(i);
7
- return !!r && r !== n;
8
- }
9
- function s(e) {
10
- let [i, s] = r(!1), c = n(), l = t(() => {
11
- clearTimeout(c.current), c.current = setTimeout(() => {
12
- document.querySelectorAll("[role=\"tooltip\"]").length === 0 && s(!0);
13
- }, a);
14
- }, []), u = t(() => {
15
- clearTimeout(c.current), s(!1);
16
- }, []);
17
- return {
18
- isTooltipOpen: i,
19
- handleMouseOver: t((t) => {
20
- e && (o(t.target, t.currentTarget) ? u() : l());
21
- }, [
22
- e,
23
- l,
24
- u
25
- ]),
26
- handleMouseLeave: t(() => {
27
- u();
28
- }, [u]),
29
- handleFocus: t((t) => {
30
- e && (o(t.target, t.currentTarget) ? u() : l());
31
- }, [
32
- e,
33
- l,
34
- u
35
- ]),
36
- handleBlur: t(() => {
37
- u();
38
- }, [u])
39
- };
40
- }
41
- export { s as useViewReferenceTooltip };
1
+ import{isInteractiveFormElement}from"../../../utils/is-interactive-form-element.js";import{useCallback,useRef,useState}from"react";var TOOLTIP_TRIGGER_SELECTOR=`[data-blueprint-tooltip-trigger]`,SHOW_DELAY=400;function shouldSuppressReferenceTooltip(target,container){if(!(target instanceof Element)||!container.contains(target)||isInteractiveFormElement(target))return!0;let closestTrigger=target.closest(TOOLTIP_TRIGGER_SELECTOR);return!!closestTrigger&&closestTrigger!==container}function useViewReferenceTooltip(isClickable){let[isTooltipOpen,setIsTooltipOpen]=useState(!1),showTimerRef=useRef(),scheduleShow=useCallback(()=>{clearTimeout(showTimerRef.current),showTimerRef.current=setTimeout(()=>{document.querySelectorAll(`[role="tooltip"]`).length===0&&setIsTooltipOpen(!0)},SHOW_DELAY)},[]),hide=useCallback(()=>{clearTimeout(showTimerRef.current),setIsTooltipOpen(!1)},[]);return{isTooltipOpen,handleMouseOver:useCallback(event=>{isClickable&&(shouldSuppressReferenceTooltip(event.target,event.currentTarget)?hide():scheduleShow())},[isClickable,scheduleShow,hide]),handleMouseLeave:useCallback(()=>{hide()},[hide]),handleFocus:useCallback(event=>{isClickable&&(shouldSuppressReferenceTooltip(event.target,event.currentTarget)?hide():scheduleShow())},[isClickable,scheduleShow,hide]),handleBlur:useCallback(()=>{hide()},[hide])}}export{useViewReferenceTooltip};
@@ -1,12 +1 @@
1
- import { defineMessages as e } from "react-intl";
2
- var t = e({
3
- lowConfidenceBadge: {
4
- id: "metadataEditor.fieldLabel.lowConfidenceBadge",
5
- defaultMessage: "Low"
6
- },
7
- aiExtractedBadgeTooltip: {
8
- id: "metadataEditor.fieldLabel.aiExtractedBadgeTooltip",
9
- defaultMessage: "Auto-extracted with Box AI"
10
- }
11
- });
12
- export { t as default };
1
+ import{defineMessages}from"react-intl";var messages_default=defineMessages({lowConfidenceBadge:{id:`metadataEditor.fieldLabel.lowConfidenceBadge`,defaultMessage:`Low`},aiExtractedBadgeTooltip:{id:`metadataEditor.fieldLabel.aiExtractedBadgeTooltip`,defaultMessage:`Auto-extracted with Box AI`}});export{messages_default as default};
@@ -1,189 +1 @@
1
- import e from "../../messages.js";
2
- import { t } from "../../../../chunks/types.js";
3
- import { checkIfHasBoundingBoxes as n } from "../../utils/check-if-has-bounding-boxes.js";
4
- import { isConfidenceScoreNeedingReview as r } from "../../utils/confidence-score/is-confidence-score-needing-review.js";
5
- import { isInteractiveFormElement as i } from "../../utils/is-interactive-form-element.js";
6
- import { t as a } from "../../../../chunks/shared-field-styles.module.js";
7
- import { t as ee } from "../../../../chunks/ai-suggestion-field.js";
8
- import { LowConfidenceSuggestionField as o } from "./components/low-confidence-suggestion-field/low-confidence-suggestion-field.js";
9
- import { t as te } from "../../../../chunks/update-mode-field-wrapper.js";
10
- import { i as s } from "../../../../chunks/utils.js";
11
- import { editorFieldTypes as ne } from "./editor-field-types.js";
12
- import { useViewReferenceTooltip as re } from "./hooks/use-view-reference-tooltip.js";
13
- import { forwardRef as c, memo as l, useCallback as u, useEffect as d, useMemo as ie } from "react";
14
- import { useIntl as ae } from "react-intl";
15
- import { jsx as f, jsxs as oe } from "react/jsx-runtime";
16
- import p from "clsx";
17
- import { Tooltip as m } from "@box/blueprint-web";
18
- import { useFormikContext as h } from "formik";
19
- import se from "lodash/isEqual";
20
- import ce from "lodash/isUndefined";
21
- var g = /*#__PURE__*/ l(/*#__PURE__*/ c(({ disableForm: c, portalElement: l, field: g, index: le, taxonomyOptionsFetcher: _, isExternallyOwned: v, isMultilevelTaxonomyFieldEnabled: y, isTaxonomyPickerEnabled: b, createTaxonomyItemsService: x, isConfidenceScoreReviewEnabled: S = !1, isBoundingBoxEnabled: ue = !1, onSelectMetadataField: C, selectedMetadataFieldId: de }, w) => {
22
- let { setFieldValue: T } = h(), { formatMessage: E } = ae(), D = g.aiSuggestionState || t.Initial, O = D === t.Pending, k = D === t.Applied, A = D === t.Initial, j = ne[g.type], { aiSuggestion: M, aiSuggestionConfidenceScore: N, aiSuggestionTargetLocation: P, type: F, value: I } = g, L = j && !g.hidden, R = !ce(g.updateMode), z = `metadata.fields[${le}]`, B = g.type === "taxonomy" && g.optionsRules?.multiSelect, V = ue || S, H = S && !!g.confidenceScore, U = H && r(g.confidenceScore), fe = H && !O && !r(g.confidenceScore), W = de === g.id, pe = n(g.targetLocation), G = V && pe && !!C, { isTooltipOpen: K, handleMouseOver: me, handleMouseLeave: he, handleFocus: ge, handleBlur: _e } = re(G), ve = p({
23
- [s.aiApproved]: k || fe || g.isExtracted,
24
- [s.hasSuggestion]: O,
25
- [s.hasConfidenceReview]: !O && U,
26
- [s.dateField]: F === "date"
27
- }), q = u((e, t) => {
28
- T(`${z}.${e}`, t);
29
- }, [z, T]), J = u((e) => {
30
- q("aiSuggestionState", e);
31
- }, [q]), Y = u((e, n = !1) => {
32
- q("value", e), J(t.Applied), q("isExtracted", !0), V && P && (q("targetLocation", P), q("aiSuggestionTargetLocation", void 0)), S && N && (q("confidenceScore", n ? {
33
- ...N,
34
- isAccepted: !0
35
- } : N), q("aiSuggestionConfidenceScore", void 0));
36
- }, [
37
- q,
38
- J,
39
- N,
40
- P,
41
- S,
42
- V
43
- ]), X = u(() => {
44
- J(t.Initial), q("aiSuggestion", void 0), V && q("aiSuggestionTargetLocation", void 0), S && q("aiSuggestionConfidenceScore", void 0);
45
- }, [
46
- J,
47
- q,
48
- S,
49
- V
50
- ]), Z = u(() => {
51
- g.confidenceScore && q("confidenceScore", {
52
- ...g.confidenceScore,
53
- isAccepted: !0
54
- }), C?.(null);
55
- }, [
56
- q,
57
- g.confidenceScore,
58
- C
59
- ]), ye = u(() => {
60
- J(t.Initial), q("aiSuggestion", void 0), q("isExtracted", !1), q("value", F === "multiSelect" || F === "taxonomy" ? [] : ""), q("confidenceScore", void 0), q("targetLocation", void 0), C?.(null);
61
- }, [
62
- q,
63
- F,
64
- C,
65
- J
66
- ]), Q = u(() => {
67
- X(), g.isExtracted && q("isExtracted", !1), V && g.targetLocation && (q("targetLocation", void 0), C?.(null)), S && g.confidenceScore && (q("confidenceScore", void 0), C?.(null));
68
- }, [
69
- X,
70
- S,
71
- g.confidenceScore,
72
- g.isExtracted,
73
- g.targetLocation,
74
- q,
75
- C,
76
- V
77
- ]), be = u((e) => {
78
- C && (i(e.target) || C(g));
79
- }, [g, C]), xe = u((e) => {
80
- if (e.key === "Enter") {
81
- if (!C || i(e.target)) return;
82
- e.preventDefault(), e.stopPropagation(), C(g);
83
- }
84
- }, [g, C]);
85
- d(() => {
86
- O && (!I || Array.isArray(I) && I.length === 0) && Y(M);
87
- }, [
88
- M,
89
- O,
90
- Y
91
- ]), d(() => {
92
- A && M && J(t.Pending);
93
- }, [
94
- A,
95
- M,
96
- J
97
- ]);
98
- let Se = ie(() => M ? se(I, M) : !1, [M, I]);
99
- if (!L) return null;
100
- let $ = {
101
- "data-metadata-field": !0,
102
- "data-target-id": "Button-metadataEditorFieldEditClick",
103
- "data-testid": "metadata-field",
104
- onClick: be,
105
- onKeyDown: xe,
106
- onMouseOver: me,
107
- onMouseLeave: he,
108
- onFocus: ge,
109
- onBlur: _e,
110
- role: "button",
111
- tabIndex: 0
112
- };
113
- if (R) {
114
- let t = /* @__PURE__ */ f(te, {
115
- fieldNamePrefix: z,
116
- fieldType: g.type,
117
- isTaxonomyMultiSelect: B,
118
- children: /* @__PURE__ */ f(j, {
119
- ref: w,
120
- description: g.description,
121
- disableForm: c,
122
- fieldNamePrefix: z,
123
- isAiSuggestionApplied: !1,
124
- isExternallyOwned: v,
125
- isMultilevelTaxonomyFieldEnabled: y,
126
- isTaxonomyPickerEnabled: b,
127
- createTaxonomyItemsService: x,
128
- label: g.displayName,
129
- levels: g.levels,
130
- onValueEdited: Q,
131
- portalElement: l,
132
- taxonomyOptionsFetcher: _
133
- })
134
- }, g.key);
135
- return G ? /* @__PURE__ */ f(m, {
136
- content: E(e.viewOnDocument),
137
- open: K,
138
- children: /* @__PURE__ */ f("div", {
139
- className: p(a.spacious, a.clickableField, W && a.selectedField),
140
- ...$,
141
- children: t
142
- })
143
- }) : t;
144
- }
145
- let Ce = /* @__PURE__ */ oe("div", {
146
- className: p(s.fieldWrapper, V && a.spacious, G && a.clickableField, G && W && a.selectedField),
147
- ...G && $,
148
- children: [
149
- /* @__PURE__ */ f(j, {
150
- ref: w,
151
- className: ve,
152
- description: g.description,
153
- disableForm: c,
154
- fieldNamePrefix: z,
155
- isAiSuggestionApplied: k || g.isExtracted,
156
- isExternallyOwned: v,
157
- confidenceScore: S ? g.confidenceScore : void 0,
158
- isMultilevelTaxonomyFieldEnabled: y,
159
- isTaxonomyPickerEnabled: b,
160
- createTaxonomyItemsService: x,
161
- label: g.displayName,
162
- onValueEdited: Q,
163
- portalElement: l,
164
- taxonomyOptionsFetcher: _
165
- }),
166
- O && /* @__PURE__ */ f(ee, {
167
- aiSuggestion: M,
168
- confidenceLevel: S ? N?.level : void 0,
169
- isSameValue: Se,
170
- onAiSuggestionAppend: () => {
171
- Y([...new Set([I, M].flat().filter(Boolean))], !0);
172
- },
173
- onAiSuggestionIgnore: X,
174
- onAiSuggestionReplace: () => Y(M, !0),
175
- type: F
176
- }),
177
- !O && U && /* @__PURE__ */ f(o, {
178
- onAccept: Z,
179
- onClear: ye
180
- })
181
- ]
182
- }, g.key);
183
- return /* @__PURE__ */ f(m, {
184
- content: E(e.viewOnDocument),
185
- open: G && K,
186
- children: Ce
187
- });
188
- }));
189
- export { g as MetadataEditorFieldWrapper };
1
+ import messages from"../../messages.js";import{t as AiSuggestionState}from"../../../../chunks/types.js";import{checkIfHasBoundingBoxes}from"../../utils/check-if-has-bounding-boxes.js";import{isConfidenceScoreNeedingReview}from"../../utils/confidence-score/is-confidence-score-needing-review.js";import{isInteractiveFormElement}from"../../utils/is-interactive-form-element.js";import{t as shared_field_styles_module_default}from"../../../../chunks/shared-field-styles.module.js";import{t as AiSuggestionField}from"../../../../chunks/ai-suggestion-field.js";import{LowConfidenceSuggestionField}from"./components/low-confidence-suggestion-field/low-confidence-suggestion-field.js";import{t as UpdateModeFieldWrapper}from"../../../../chunks/update-mode-field-wrapper.js";import{i as metadata_editor_fields_module_default}from"../../../../chunks/utils.js";import{editorFieldTypes}from"./editor-field-types.js";import{useViewReferenceTooltip}from"./hooks/use-view-reference-tooltip.js";import{forwardRef,memo,useCallback,useEffect,useMemo}from"react";import{useIntl}from"react-intl";import{jsx,jsxs}from"react/jsx-runtime";import clsx from"clsx";import{Tooltip}from"@box/blueprint-web";import{useFormikContext}from"formik";import isEqual from"lodash/isEqual";import isUndefined from"lodash/isUndefined";var MetadataEditorFieldWrapper=memo(forwardRef(({disableForm,portalElement,field,index,taxonomyOptionsFetcher,isExternallyOwned,isMultilevelTaxonomyFieldEnabled,isTaxonomyPickerEnabled,createTaxonomyItemsService,isConfidenceScoreReviewEnabled=!1,isBoundingBoxEnabled=!1,onSelectMetadataField,selectedMetadataFieldId},forwardedRef)=>{let{setFieldValue}=useFormikContext(),{formatMessage}=useIntl(),aiSuggestionState=field.aiSuggestionState||AiSuggestionState.Initial,isSuggestionPending=aiSuggestionState===AiSuggestionState.Pending,isSuggestionApplied=aiSuggestionState===AiSuggestionState.Applied,isInitial=aiSuggestionState===AiSuggestionState.Initial,MetadataEditorField=editorFieldTypes[field.type],{aiSuggestion,aiSuggestionConfidenceScore,aiSuggestionTargetLocation,type,value}=field,showField=MetadataEditorField&&!field.hidden,withUpdateModeWrapper=!isUndefined(field.updateMode),fieldNamePrefix=`metadata.fields[${index}]`,isTaxonomyMultiSelect=field.type===`taxonomy`&&field.optionsRules?.multiSelect,isBoundingBoxOrConfidenceScoreReviewEnabled=isBoundingBoxEnabled||isConfidenceScoreReviewEnabled,hasConfidenceScore=isConfidenceScoreReviewEnabled&&!!field.confidenceScore,isConfidenceScoreReviewNeeded=hasConfidenceScore&&isConfidenceScoreNeedingReview(field.confidenceScore),hasApprovedConfidence=hasConfidenceScore&&!isSuggestionPending&&!isConfidenceScoreNeedingReview(field.confidenceScore),isSelected=selectedMetadataFieldId===field.id,hasBoundingBoxes=checkIfHasBoundingBoxes(field.targetLocation),isClickable=isBoundingBoxOrConfidenceScoreReviewEnabled&&hasBoundingBoxes&&!!onSelectMetadataField,{isTooltipOpen,handleMouseOver,handleMouseLeave,handleFocus,handleBlur}=useViewReferenceTooltip(isClickable),fieldWrapperClassName=clsx({[metadata_editor_fields_module_default.aiApproved]:isSuggestionApplied||hasApprovedConfidence||field.isExtracted,[metadata_editor_fields_module_default.hasSuggestion]:isSuggestionPending,[metadata_editor_fields_module_default.hasConfidenceReview]:!isSuggestionPending&&isConfidenceScoreReviewNeeded,[metadata_editor_fields_module_default.dateField]:type===`date`}),setField=useCallback((name,fieldValue)=>{setFieldValue(`${fieldNamePrefix}.${name}`,fieldValue)},[fieldNamePrefix,setFieldValue]),setAiSuggestionState=useCallback(state=>{setField(`aiSuggestionState`,state)},[setField]),handleApplyAiSuggestion=useCallback((newValue,acceptConfidence=!1)=>{setField(`value`,newValue),setAiSuggestionState(AiSuggestionState.Applied),setField(`isExtracted`,!0),isBoundingBoxOrConfidenceScoreReviewEnabled&&aiSuggestionTargetLocation&&(setField(`targetLocation`,aiSuggestionTargetLocation),setField(`aiSuggestionTargetLocation`,void 0)),isConfidenceScoreReviewEnabled&&aiSuggestionConfidenceScore&&(setField(`confidenceScore`,acceptConfidence?{...aiSuggestionConfidenceScore,isAccepted:!0}:aiSuggestionConfidenceScore),setField(`aiSuggestionConfidenceScore`,void 0))},[setField,setAiSuggestionState,aiSuggestionConfidenceScore,aiSuggestionTargetLocation,isConfidenceScoreReviewEnabled,isBoundingBoxOrConfidenceScoreReviewEnabled]),clearAiSuggestion=useCallback(()=>{setAiSuggestionState(AiSuggestionState.Initial),setField(`aiSuggestion`,void 0),isBoundingBoxOrConfidenceScoreReviewEnabled&&setField(`aiSuggestionTargetLocation`,void 0),isConfidenceScoreReviewEnabled&&setField(`aiSuggestionConfidenceScore`,void 0)},[setAiSuggestionState,setField,isConfidenceScoreReviewEnabled,isBoundingBoxOrConfidenceScoreReviewEnabled]),handleAcceptConfidenceScore=useCallback(()=>{field.confidenceScore&&setField(`confidenceScore`,{...field.confidenceScore,isAccepted:!0}),onSelectMetadataField?.(null)},[setField,field.confidenceScore,onSelectMetadataField]),handleClearLowConfidenceValue=useCallback(()=>{setAiSuggestionState(AiSuggestionState.Initial),setField(`aiSuggestion`,void 0),setField(`isExtracted`,!1),setField(`value`,type===`multiSelect`||type===`taxonomy`?[]:``),setField(`confidenceScore`,void 0),setField(`targetLocation`,void 0),onSelectMetadataField?.(null)},[setField,type,onSelectMetadataField,setAiSuggestionState]),handleValueEdited=useCallback(()=>{clearAiSuggestion(),field.isExtracted&&setField(`isExtracted`,!1),isBoundingBoxOrConfidenceScoreReviewEnabled&&field.targetLocation&&(setField(`targetLocation`,void 0),onSelectMetadataField?.(null)),isConfidenceScoreReviewEnabled&&field.confidenceScore&&(setField(`confidenceScore`,void 0),onSelectMetadataField?.(null))},[clearAiSuggestion,isConfidenceScoreReviewEnabled,field.confidenceScore,field.isExtracted,field.targetLocation,setField,onSelectMetadataField,isBoundingBoxOrConfidenceScoreReviewEnabled]),handleFieldClick=useCallback(event=>{onSelectMetadataField&&(isInteractiveFormElement(event.target)||onSelectMetadataField(field))},[field,onSelectMetadataField]),handleFieldKeyDown=useCallback(event=>{if(event.key===`Enter`){if(!onSelectMetadataField||isInteractiveFormElement(event.target))return;event.preventDefault(),event.stopPropagation(),onSelectMetadataField(field)}},[field,onSelectMetadataField]);useEffect(()=>{isSuggestionPending&&(!value||Array.isArray(value)&&value.length===0)&&handleApplyAiSuggestion(aiSuggestion)},[aiSuggestion,isSuggestionPending,handleApplyAiSuggestion]),useEffect(()=>{isInitial&&aiSuggestion&&setAiSuggestionState(AiSuggestionState.Pending)},[isInitial,aiSuggestion,setAiSuggestionState]);let isSameValue=useMemo(()=>aiSuggestion?isEqual(value,aiSuggestion):!1,[aiSuggestion,value]);if(!showField)return null;let clickableFieldProps={"data-metadata-field":!0,"data-target-id":`Button-metadataEditorFieldEditClick`,"data-testid":`metadata-field`,onClick:handleFieldClick,onKeyDown:handleFieldKeyDown,onMouseOver:handleMouseOver,onMouseLeave:handleMouseLeave,onFocus:handleFocus,onBlur:handleBlur,role:`button`,tabIndex:0};if(withUpdateModeWrapper){let updateModeContent=jsx(UpdateModeFieldWrapper,{fieldNamePrefix,fieldType:field.type,isTaxonomyMultiSelect,children:jsx(MetadataEditorField,{ref:forwardedRef,description:field.description,disableForm,fieldNamePrefix,isAiSuggestionApplied:!1,isExternallyOwned,isMultilevelTaxonomyFieldEnabled,isTaxonomyPickerEnabled,createTaxonomyItemsService,label:field.displayName,levels:field.levels,onValueEdited:handleValueEdited,portalElement,taxonomyOptionsFetcher})},field.key);return isClickable?jsx(Tooltip,{content:formatMessage(messages.viewOnDocument),open:isTooltipOpen,children:jsx(`div`,{className:clsx(shared_field_styles_module_default.spacious,shared_field_styles_module_default.clickableField,isSelected&&shared_field_styles_module_default.selectedField),...clickableFieldProps,children:updateModeContent})}):updateModeContent}let fieldContent=jsxs(`div`,{className:clsx(metadata_editor_fields_module_default.fieldWrapper,isBoundingBoxOrConfidenceScoreReviewEnabled&&shared_field_styles_module_default.spacious,isClickable&&shared_field_styles_module_default.clickableField,isClickable&&isSelected&&shared_field_styles_module_default.selectedField),...isClickable&&clickableFieldProps,children:[jsx(MetadataEditorField,{ref:forwardedRef,className:fieldWrapperClassName,description:field.description,disableForm,fieldNamePrefix,isAiSuggestionApplied:isSuggestionApplied||field.isExtracted,isExternallyOwned,confidenceScore:isConfidenceScoreReviewEnabled?field.confidenceScore:void 0,isMultilevelTaxonomyFieldEnabled,isTaxonomyPickerEnabled,createTaxonomyItemsService,label:field.displayName,onValueEdited:handleValueEdited,portalElement,taxonomyOptionsFetcher}),isSuggestionPending&&jsx(AiSuggestionField,{aiSuggestion,confidenceLevel:isConfidenceScoreReviewEnabled?aiSuggestionConfidenceScore?.level:void 0,isSameValue,onAiSuggestionAppend:()=>{handleApplyAiSuggestion([...new Set([value,aiSuggestion].flat().filter(Boolean))],!0)},onAiSuggestionIgnore:clearAiSuggestion,onAiSuggestionReplace:()=>handleApplyAiSuggestion(aiSuggestion,!0),type}),!isSuggestionPending&&isConfidenceScoreReviewNeeded&&jsx(LowConfidenceSuggestionField,{onAccept:handleAcceptConfidenceScore,onClear:handleClearLowConfidenceValue})]},field.key);return jsx(Tooltip,{content:formatMessage(messages.viewOnDocument),open:isClickable&&isTooltipOpen,children:fieldContent})}));export{MetadataEditorFieldWrapper};
@@ -1,31 +1 @@
1
- import e from "../../messages.js";
2
- import { i as t } from "../../../../chunks/utils.js";
3
- import { MetadataEditorFieldWrapper as n } from "./metadata-editor-field-wrapper.js";
4
- import { useReviewFieldFilter as r } from "./hooks/use-review-field-filter.js";
5
- import { createElement as i, useEffect as a, useRef as o } from "react";
6
- import { FormattedMessage as s } from "react-intl";
7
- import { jsx as c } from "react/jsx-runtime";
8
- import { Text as l } from "@box/blueprint-web";
9
- import { FieldArray as u, getIn as d, useFormikContext as f } from "formik";
10
- var p = (p) => {
11
- let { shouldShowOnlyReviewFields: m = !1 } = p, { values: h } = f(), g = "metadata.fields", _ = d(h, g), v = o(null), y = r(_, m), b = _.findIndex((e) => !e.hidden);
12
- return a(() => {
13
- b > -1 && v.current?.focus();
14
- }, []), _.length ? /* @__PURE__ */ c(u, {
15
- name: g,
16
- validateOnChange: !1,
17
- children: () => y.map(({ field: e, originalIndex: t }) => /* @__PURE__ */ i(n, {
18
- ...p,
19
- key: e.key,
20
- ref: t === b ? v : null,
21
- field: e,
22
- index: t
23
- }))
24
- }) : /* @__PURE__ */ c(l, {
25
- as: "span",
26
- className: t.noAttributesText,
27
- color: "textOnLightSecondary",
28
- children: /* @__PURE__ */ c(s, { ...e.noTemplateAtributesError })
29
- });
30
- };
31
- export { p as TemplateInstance, p as default };
1
+ import messages from"../../messages.js";import{i as metadata_editor_fields_module_default}from"../../../../chunks/utils.js";import{MetadataEditorFieldWrapper}from"./metadata-editor-field-wrapper.js";import{useReviewFieldFilter}from"./hooks/use-review-field-filter.js";import{createElement,useEffect,useRef}from"react";import{FormattedMessage}from"react-intl";import{jsx}from"react/jsx-runtime";import{Text}from"@box/blueprint-web";import{FieldArray,getIn,useFormikContext}from"formik";var TemplateInstance=props=>{let{shouldShowOnlyReviewFields=!1}=props,{values}=useFormikContext(),fieldName=`metadata.fields`,fields=getIn(values,fieldName),focusRef=useRef(null),visibleFieldEntries=useReviewFieldFilter(fields,shouldShowOnlyReviewFields),autoFocusIndex=fields.findIndex(field=>!field.hidden);return useEffect(()=>{autoFocusIndex>-1&&focusRef.current?.focus()},[]),fields.length?jsx(FieldArray,{name:fieldName,validateOnChange:!1,children:()=>visibleFieldEntries.map(({field,originalIndex})=>createElement(MetadataEditorFieldWrapper,{...props,key:field.key,ref:originalIndex===autoFocusIndex?focusRef:null,field,index:originalIndex}))}):jsx(Text,{as:`span`,className:metadata_editor_fields_module_default.noAttributesText,color:`textOnLightSecondary`,children:jsx(FormattedMessage,{...messages.noTemplateAtributesError})})};export{TemplateInstance,TemplateInstance as default};
@@ -1,2 +1 @@
1
- import { n as e, r as t, t as n } from "../../../../chunks/utils.js";
2
- export { n as getFieldLabel, e as getFieldLabelContent, t as tryParseDateSuggestion };
1
+ import{n as getFieldLabelContent,r as tryParseDateSuggestion,t as getFieldLabel}from"../../../../chunks/utils.js";export{getFieldLabel,getFieldLabelContent,tryParseDateSuggestion};
@@ -1,44 +1 @@
1
- import { defineMessages as e } from "react-intl";
2
- var t = e({
3
- managerLevelEmptyStateHeading: {
4
- id: "metadataEditor.managerLevel.emptyState.heading",
5
- defaultMessage: "Apply Metadata Templates"
6
- },
7
- managerLevelEmptyStateBody: {
8
- id: "metadataEditor.managerLevel.emptyState.body",
9
- defaultMessage: "Browse or search for your items to apply and edit metadata"
10
- },
11
- fileLevelEmptyStateBoxAiEnabledHeading: {
12
- id: "metadataEditor.fileLevel.emptyState.boxAiEnabled.heading",
13
- defaultMessage: "Autofill Metadata with Box AI"
14
- },
15
- fileLevelEmptyStateBoxAiEnabledBody: {
16
- id: "metadataEditor.fileLevel.emptyState.boxAiEnabled.body",
17
- defaultMessage: "Use the power of Box AI to quickly capture document metadata, with ever-increasing accuracy."
18
- },
19
- fileLevelEmptyStateDefaultHeading: {
20
- id: "metadataEditor.fileLevel.emptyState.default.heading",
21
- defaultMessage: "Add Metadata Templates"
22
- },
23
- fileLevelEmptyStateDefaultBody: {
24
- id: "metadataEditor.fileLevel.emptyState.default.body",
25
- defaultMessage: "Add Metadata to your file to support business operations, workflows, and more!"
26
- },
27
- instanceLevelEmptyStateHeading: {
28
- id: "metadataEditor.instanceLevel.emptyState.heading",
29
- defaultMessage: "This template has no values"
30
- },
31
- instanceLevelEmptyStateHeadingNoAttributes: {
32
- id: "metadataEditor.instanceLevel.emptyState.noAttributes.heading",
33
- defaultMessage: "This template has no attributes"
34
- },
35
- instanceLevelEmptyStateNoEmptyValuesBody: {
36
- id: "metadataEditor.instanceLevel.emptyState.noEmptyValues.body",
37
- defaultMessage: "This template has no values"
38
- },
39
- instanceLevelSeeEmptyValuesCTA: {
40
- id: "metadataEditor.instanceLevel.emptyState.emptyValues.Cta",
41
- defaultMessage: "See empty values"
42
- }
43
- });
44
- export { t as default };
1
+ import{defineMessages}from"react-intl";var messages=defineMessages({managerLevelEmptyStateHeading:{id:`metadataEditor.managerLevel.emptyState.heading`,defaultMessage:`Apply Metadata Templates`},managerLevelEmptyStateBody:{id:`metadataEditor.managerLevel.emptyState.body`,defaultMessage:`Browse or search for your items to apply and edit metadata`},fileLevelEmptyStateBoxAiEnabledHeading:{id:`metadataEditor.fileLevel.emptyState.boxAiEnabled.heading`,defaultMessage:`Autofill Metadata with Box AI`},fileLevelEmptyStateBoxAiEnabledBody:{id:`metadataEditor.fileLevel.emptyState.boxAiEnabled.body`,defaultMessage:`Use the power of Box AI to quickly capture document metadata, with ever-increasing accuracy.`},fileLevelEmptyStateDefaultHeading:{id:`metadataEditor.fileLevel.emptyState.default.heading`,defaultMessage:`Add Metadata Templates`},fileLevelEmptyStateDefaultBody:{id:`metadataEditor.fileLevel.emptyState.default.body`,defaultMessage:`Add Metadata to your file to support business operations, workflows, and more!`},instanceLevelEmptyStateHeading:{id:`metadataEditor.instanceLevel.emptyState.heading`,defaultMessage:`This template has no values`},instanceLevelEmptyStateHeadingNoAttributes:{id:`metadataEditor.instanceLevel.emptyState.noAttributes.heading`,defaultMessage:`This template has no attributes`},instanceLevelEmptyStateNoEmptyValuesBody:{id:`metadataEditor.instanceLevel.emptyState.noEmptyValues.body`,defaultMessage:`This template has no values`},instanceLevelSeeEmptyValuesCTA:{id:`metadataEditor.instanceLevel.emptyState.emptyValues.Cta`,defaultMessage:`See empty values`}});export{messages as default};
@@ -1,47 +1 @@
1
- import e from "./messages.js";
2
- import { useCallback as t } from "react";
3
- import { useIntl as n } from "react-intl";
4
- import { jsx as r } from "react/jsx-runtime";
5
- import { EmptyState as i, Text as a } from "@box/blueprint-web";
6
- import { JobAnalyzeData as o } from "@box/blueprint-web-assets/illustrations/Small";
7
- function s({ isAnyEmptyValueHidden: s = !1, isBoxAiSuggestionsFeatureEnabled: c = !1, level: l, onShowEmptyValues: u }) {
8
- let d = n(), f = t(() => l === "manager" ? /* @__PURE__ */ r(a, {
9
- as: "p",
10
- children: d.formatMessage(e.managerLevelEmptyStateBody)
11
- }) : l === "instance" ? s ? /* @__PURE__ */ r(i.PrimaryAction, {
12
- onClick: u,
13
- children: d.formatMessage(e.instanceLevelSeeEmptyValuesCTA)
14
- }) : /* @__PURE__ */ r(a, {
15
- as: "h1",
16
- variant: "titleSmall",
17
- children: d.formatMessage(e.instanceLevelEmptyStateHeadingNoAttributes)
18
- }) : /* @__PURE__ */ r(a, {
19
- as: "p",
20
- children: d.formatMessage(e.fileLevelEmptyStateDefaultBody)
21
- }), [
22
- d,
23
- s,
24
- l,
25
- u
26
- ]), p = t(() => l === "manager" ? /* @__PURE__ */ r(a, {
27
- as: "h2",
28
- children: d.formatMessage(e.managerLevelEmptyStateHeading)
29
- }) : l === "instance" ? s ? /* @__PURE__ */ r(a, {
30
- as: "h2",
31
- children: d.formatMessage(e.instanceLevelEmptyStateHeading)
32
- }) : null : /* @__PURE__ */ r(a, {
33
- as: "h2",
34
- children: d.formatMessage(e.fileLevelEmptyStateDefaultHeading)
35
- }), [
36
- d,
37
- s,
38
- l
39
- ]);
40
- return /* @__PURE__ */ r(i, {
41
- body: f(),
42
- heading: p(),
43
- illustration: o,
44
- size: "small"
45
- });
46
- }
47
- export { s as MetadataEmptyState, s as default };
1
+ import messages from"./messages.js";import{useCallback}from"react";import{useIntl}from"react-intl";import{jsx}from"react/jsx-runtime";import{EmptyState,Text}from"@box/blueprint-web";import{JobAnalyzeData}from"@box/blueprint-web-assets/illustrations/Small";function MetadataEmptyState({isAnyEmptyValueHidden=!1,isBoxAiSuggestionsFeatureEnabled=!1,level,onShowEmptyValues}){let intl=useIntl(),getBody=useCallback(()=>level===`manager`?jsx(Text,{as:`p`,children:intl.formatMessage(messages.managerLevelEmptyStateBody)}):level===`instance`?isAnyEmptyValueHidden?jsx(EmptyState.PrimaryAction,{onClick:onShowEmptyValues,children:intl.formatMessage(messages.instanceLevelSeeEmptyValuesCTA)}):jsx(Text,{as:`h1`,variant:`titleSmall`,children:intl.formatMessage(messages.instanceLevelEmptyStateHeadingNoAttributes)}):jsx(Text,{as:`p`,children:intl.formatMessage(messages.fileLevelEmptyStateDefaultBody)}),[intl,isAnyEmptyValueHidden,level,onShowEmptyValues]),getHeading=useCallback(()=>level===`manager`?jsx(Text,{as:`h2`,children:intl.formatMessage(messages.managerLevelEmptyStateHeading)}):level===`instance`?isAnyEmptyValueHidden?jsx(Text,{as:`h2`,children:intl.formatMessage(messages.instanceLevelEmptyStateHeading)}):null:jsx(Text,{as:`h2`,children:intl.formatMessage(messages.fileLevelEmptyStateDefaultHeading)}),[intl,isAnyEmptyValueHidden,level]);return jsx(EmptyState,{body:getBody(),heading:getHeading(),illustration:JobAnalyzeData,size:`small`})}export{MetadataEmptyState,MetadataEmptyState as default};
@@ -1,9 +1 @@
1
- import { withAnalytics as e } from "../../utils/analytics/with-analytics.js";
2
- import { t } from "../../../../chunks/custom-instance-new-field.js";
3
- import { t as n } from "../../../../chunks/delete-confirmation-modal.js";
4
- import { r } from "../../../../chunks/utils2.js";
5
- import { t as i } from "../../../../chunks/metadata-instance-form-autofill-button.js";
6
- import { t as a } from "../../../../chunks/metadata-instance-form-header.js";
7
- import { MetadataInstanceForm as o } from "./subcomponents/metadata-instance-form/metadata-instance-form.js";
8
- var s = e(o);
9
- export { t as CustomInstanceNewField, n as DeleteConfirmationModal, r as JSONPatchOp, s as MetadataInstanceForm, i as MetadataInstanceFormAutofillButton, a as MetadataInstanceFormHeader };
1
+ import{withAnalytics}from"../../utils/analytics/with-analytics.js";import{t as CustomInstanceNewField}from"../../../../chunks/custom-instance-new-field.js";import{t as DeleteConfirmationModal}from"../../../../chunks/delete-confirmation-modal.js";import{r as JSONPatchOp}from"../../../../chunks/utils2.js";import{t as MetadataInstanceFormAutofillButton}from"../../../../chunks/metadata-instance-form-autofill-button.js";import{t as MetadataInstanceFormHeader}from"../../../../chunks/metadata-instance-form-header.js";import{MetadataInstanceForm as MetadataInstanceForm$1}from"./subcomponents/metadata-instance-form/metadata-instance-form.js";var MetadataInstanceForm=withAnalytics(MetadataInstanceForm$1);export{CustomInstanceNewField,DeleteConfirmationModal,JSONPatchOp,MetadataInstanceForm,MetadataInstanceFormAutofillButton,MetadataInstanceFormHeader};
@@ -1,2 +1 @@
1
- import { t as e } from "../../../../../../chunks/autofill-overlay.js";
2
- export { e as AutofillOverlay };
1
+ import{t as AutofillOverlay}from"../../../../../../chunks/autofill-overlay.js";export{AutofillOverlay};