@box/metadata-editor 2.5.37 → 2.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/metadata-instance-entry.js +1 -1
- package/dist/chunks/metadata-instance-form-autofill-button.js +1 -1
- package/dist/chunks/metadata-instance-form-footer.js +1 -1
- package/dist/chunks/metadata-instance-header.js +1 -1
- package/dist/esm/lib/components/metadata-editor-fields/hooks/use-view-reference-tooltip.js +1 -1
- package/dist/esm/lib/components/metadata-editor-fields/metadata-editor-field-wrapper.js +1 -1
- package/dist/esm/lib/utils/analytics/events.js +1 -1
- package/dist/esm/lib/utils/analytics/index.js +1 -1
- package/dist/types/lib/components/metadata-editor-fields/hooks/use-view-reference-tooltip.d.ts +1 -1
- package/dist/types/lib/utils/analytics/events.d.ts +11 -0
- package/package.json +14 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
import messages from"../esm/lib/messages.js";import{EVENT_NAMES}from"../esm/lib/utils/analytics/events.js";import{useMetadataEditorAnalytics}from"../esm/lib/utils/analytics/analytics-context.js";import{convertISOStringToUTCDate}from"../esm/lib/utils/convertDate.js";import{getConfidenceScoreTooltip}from"../esm/lib/utils/confidence-score/get-confidence-score-tooltip.js";import{isConfidenceScoreNeedingReview}from"../esm/lib/utils/confidence-score/is-confidence-score-needing-review.js";import{t as interactive_text_module_default}from"./interactive-text.module.js";import{checkIfHasBoundingBoxes}from"../esm/lib/utils/check-if-has-bounding-boxes.js";import{t as shared_field_styles_module_default}from"./shared-field-styles.module.js";import messages$1 from"../esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-entry/messages.js";import{MetadataEntryDisplay}from"../esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-entry/metadata-entry-display.js";import{useRef}from"react";import{FormattedDate,useIntl}from"react-intl";import{Focusable}from"@ariakit/react";import{jsx,jsxs}from"react/jsx-runtime";import clsx from"clsx";import{Status,Text,Tooltip,useIsEllipsized}from"@box/blueprint-web";import{AlertCircle}from"@box/blueprint-web-assets/icons/Medium";import '../styles/metadata-instance-entry.css';var metadata_instance_entry_module_default={metadataInstanceEntry:`_metadataInstanceEntry_1ygbk_1`,name:`_name_1ygbk_6`,nameText:`_nameText_1ygbk_13`,labelContainer:`_labelContainer_1ygbk_21`,nameLabel:`_nameLabel_1ygbk_28`,confidenceScoreIcon:`_confidenceScoreIcon_1ygbk_43`},MetadataInstanceEntry=({description,isSelected,name,onClick,shouldHideEmptyValues,type,value,taxonomyNodeFetcher,taxonomyKey,scope,isExternallyOwned,confidenceScore,isConfidenceScoreReviewEnabled=!1,isBoundingBoxEnabled=!1,targetLocation})=>{let intl=useIntl(),{trackEvent}=useMetadataEditorAnalytics(),nameEllipsisRef=useRef(null),isNameEllipsized=useIsEllipsized(nameEllipsisRef),nameTextRef=node=>{nameEllipsisRef.current=node instanceof HTMLElement?node:null},isBoundingBoxOrConfidenceScoreReviewEnabled=isBoundingBoxEnabled||isConfidenceScoreReviewEnabled,isLowConfidenceScore=isConfidenceScoreReviewEnabled&&!!confidenceScore&&isConfidenceScoreNeedingReview(confidenceScore),hasBoundingBoxes=checkIfHasBoundingBoxes(targetLocation),isClickable=isBoundingBoxOrConfidenceScoreReviewEnabled&&hasBoundingBoxes&&!!onClick,confidenceScoreTooltipText=isLowConfidenceScore?getConfidenceScoreTooltip(intl.formatMessage,confidenceScore):null,handleLowConfIconHover=()=>trackEvent(EVENT_NAMES.LOW_CONF_ICON_HOVER_READ_MODE,{fieldType:type,confidenceLevel:confidenceScore?.level,scope}),formattedValue=typeof value==`number`?value.toString():value?type===`user`&&Array.isArray(value)?value.length===0?null:value.map(user=>user.name).join(`, `):Array.isArray(value)?value.join(`, `):type===`date`&&typeof value==`string`?jsx(FormattedDate,{day:`numeric`,month:`long`,value:convertISOStringToUTCDate(value),year:`numeric`}):value:null,clickableFieldProps={"data-metadata-field":!0,"data-target-id":`Button-metadataEditorFieldReadClick`,"data-testid":`metadata-field`,onClick,onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),e.stopPropagation(),onClick?.())},role:`button`,tabIndex:0};if(shouldHideEmptyValues&&!formattedValue)return null;let nameTooltipContent=(()=>{if(description)return isNameEllipsized?jsxs(`div`,{children:[jsx(`div`,{children:name}),jsx(`div`,{children:description})]}):description;if(isNameEllipsized)return name})(),nameText=jsx(`h5`,{className:metadata_instance_entry_module_default.name,children:jsx(Text,{ref:nameTextRef,as:`span`,className:clsx(metadata_instance_entry_module_default.nameText,description&&interactive_text_module_default.interactiveTextHint),color:`textOnLightSecondary`,variant:`bodyDefaultBold`,children:name})}),content=jsxs(`div`,{className:clsx(metadata_instance_entry_module_default.metadataInstanceEntry,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:[jsxs(`div`,{className:metadata_instance_entry_module_default.labelContainer,children:[confidenceScoreTooltipText&&jsx(Tooltip,{content:confidenceScoreTooltipText,children:jsx(`span`,{className:metadata_instance_entry_module_default.confidenceScoreIcon,children:jsx(Status,{"data-target-id":`Status-metadataInstanceEntryConfidenceScoreIcon`,color:`SurfaceStatusSurfaceGray`,hideText:!0,icon:AlertCircle,interactive:!0,text:intl.formatMessage(messages$1.confidenceScoreIconAriaLabel),onMouseEnter:handleLowConfIconHover})})}),jsx(`div`,{className:metadata_instance_entry_module_default.nameLabel,children:nameTooltipContent?jsx(Tooltip,{content:nameTooltipContent,children:jsx(Focusable,{render:nameText})}):nameText})]}),jsx(MetadataEntryDisplay,{formattedValue,isExternallyOwned,scope,taxonomyKey,taxonomyNodeFetcher,type,value})]});return isClickable?jsx(Tooltip,{content:intl.formatMessage(messages.viewOnDocument),children:content}):content};export{MetadataInstanceEntry as t};
|
|
1
|
+
import messages from"../esm/lib/messages.js";import{EDITOR_MODES,EVENT_NAMES}from"../esm/lib/utils/analytics/events.js";import{useMetadataEditorAnalytics}from"../esm/lib/utils/analytics/analytics-context.js";import{convertISOStringToUTCDate}from"../esm/lib/utils/convertDate.js";import{getConfidenceScoreTooltip}from"../esm/lib/utils/confidence-score/get-confidence-score-tooltip.js";import{isConfidenceScoreNeedingReview}from"../esm/lib/utils/confidence-score/is-confidence-score-needing-review.js";import{t as interactive_text_module_default}from"./interactive-text.module.js";import{checkIfHasBoundingBoxes}from"../esm/lib/utils/check-if-has-bounding-boxes.js";import{t as shared_field_styles_module_default}from"./shared-field-styles.module.js";import messages$1 from"../esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-entry/messages.js";import{MetadataEntryDisplay}from"../esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-entry/metadata-entry-display.js";import{useRef}from"react";import{FormattedDate,useIntl}from"react-intl";import{Focusable}from"@ariakit/react";import{jsx,jsxs}from"react/jsx-runtime";import clsx from"clsx";import{Status,Text,Tooltip,useIsEllipsized}from"@box/blueprint-web";import{AlertCircle}from"@box/blueprint-web-assets/icons/Medium";import '../styles/metadata-instance-entry.css';var metadata_instance_entry_module_default={metadataInstanceEntry:`_metadataInstanceEntry_1ygbk_1`,name:`_name_1ygbk_6`,nameText:`_nameText_1ygbk_13`,labelContainer:`_labelContainer_1ygbk_21`,nameLabel:`_nameLabel_1ygbk_28`,confidenceScoreIcon:`_confidenceScoreIcon_1ygbk_43`},MetadataInstanceEntry=({description,isSelected,name,onClick,shouldHideEmptyValues,type,value,taxonomyNodeFetcher,taxonomyKey,scope,isExternallyOwned,confidenceScore,isConfidenceScoreReviewEnabled=!1,isBoundingBoxEnabled=!1,targetLocation})=>{let intl=useIntl(),{trackEvent}=useMetadataEditorAnalytics(),nameEllipsisRef=useRef(null),isNameEllipsized=useIsEllipsized(nameEllipsisRef),nameTextRef=node=>{nameEllipsisRef.current=node instanceof HTMLElement?node:null},isBoundingBoxOrConfidenceScoreReviewEnabled=isBoundingBoxEnabled||isConfidenceScoreReviewEnabled,isLowConfidenceScore=isConfidenceScoreReviewEnabled&&!!confidenceScore&&isConfidenceScoreNeedingReview(confidenceScore),hasBoundingBoxes=checkIfHasBoundingBoxes(targetLocation),isClickable=isBoundingBoxOrConfidenceScoreReviewEnabled&&hasBoundingBoxes&&!!onClick,confidenceScoreTooltipText=isLowConfidenceScore?getConfidenceScoreTooltip(intl.formatMessage,confidenceScore):null,handleLowConfIconHover=()=>trackEvent(EVENT_NAMES.LOW_CONF_ICON_HOVER_READ_MODE,{fieldType:type,confidenceLevel:confidenceScore?.level,scope}),handleFieldHover=()=>trackEvent(EVENT_NAMES.FIELD_HOVER,{fieldType:type,isClickable,mode:EDITOR_MODES.Read,scope}),handleViewOnDocumentTooltipOpenChange=isOpen=>{isOpen&&trackEvent(EVENT_NAMES.VIEW_ON_DOCUMENT_TOOLTIP_SHOWN,{fieldType:type,mode:EDITOR_MODES.Read,scope})},formattedValue=typeof value==`number`?value.toString():value?type===`user`&&Array.isArray(value)?value.length===0?null:value.map(user=>user.name).join(`, `):Array.isArray(value)?value.join(`, `):type===`date`&&typeof value==`string`?jsx(FormattedDate,{day:`numeric`,month:`long`,value:convertISOStringToUTCDate(value),year:`numeric`}):value:null,clickableFieldProps={"data-metadata-field":!0,"data-target-id":`Button-metadataEditorFieldReadClick`,"data-testid":`metadata-field`,onClick,onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),e.stopPropagation(),onClick?.())},role:`button`,tabIndex:0};if(shouldHideEmptyValues&&!formattedValue)return null;let nameTooltipContent=(()=>{if(description)return isNameEllipsized?jsxs(`div`,{children:[jsx(`div`,{children:name}),jsx(`div`,{children:description})]}):description;if(isNameEllipsized)return name})(),nameText=jsx(`h5`,{className:metadata_instance_entry_module_default.name,children:jsx(Text,{ref:nameTextRef,as:`span`,className:clsx(metadata_instance_entry_module_default.nameText,description&&interactive_text_module_default.interactiveTextHint),color:`textOnLightSecondary`,variant:`bodyDefaultBold`,children:name})}),content=jsxs(`div`,{className:clsx(metadata_instance_entry_module_default.metadataInstanceEntry,isBoundingBoxOrConfidenceScoreReviewEnabled&&shared_field_styles_module_default.spacious,isClickable&&shared_field_styles_module_default.clickableField,isClickable&&isSelected&&shared_field_styles_module_default.selectedField),...isClickable&&clickableFieldProps,onMouseEnter:handleFieldHover,children:[jsxs(`div`,{className:metadata_instance_entry_module_default.labelContainer,children:[confidenceScoreTooltipText&&jsx(Tooltip,{content:confidenceScoreTooltipText,children:jsx(`span`,{className:metadata_instance_entry_module_default.confidenceScoreIcon,children:jsx(Status,{"data-target-id":`Status-metadataInstanceEntryConfidenceScoreIcon`,color:`SurfaceStatusSurfaceGray`,hideText:!0,icon:AlertCircle,interactive:!0,text:intl.formatMessage(messages$1.confidenceScoreIconAriaLabel),onMouseEnter:handleLowConfIconHover})})}),jsx(`div`,{className:metadata_instance_entry_module_default.nameLabel,children:nameTooltipContent?jsx(Tooltip,{content:nameTooltipContent,children:jsx(Focusable,{render:nameText})}):nameText})]}),jsx(MetadataEntryDisplay,{formattedValue,isExternallyOwned,scope,taxonomyKey,taxonomyNodeFetcher,type,value})]});return isClickable?jsx(Tooltip,{content:intl.formatMessage(messages.viewOnDocument),onOpenChange:handleViewOnDocumentTooltipOpenChange,children:content}):content};export{MetadataInstanceEntry as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{EXTRACT_AGENTS_MAP,EXTRACT_AI_AGENT_LOCAL_STORAGE_KEY}from"../esm/lib/constants.js";import{autofillMessages}from"../esm/lib/messages.js";import{getTooltipContent}from"../esm/lib/utils/utils.js";import{useAutofill}from"../esm/lib/utils/autofill-context.js";import messages from"../esm/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form-autofill-button/messages.js";import{forwardRef,useEffect,useMemo,useState}from"react";import{useIntl}from"react-intl";import{BoxAiAdvancedLogo24,BoxAiLogo24}from"@box/blueprint-web-assets/icons/Logo";import{jsx,jsxs}from"react/jsx-runtime";import{Button,DropdownMenu,IconButton,LoadingIndicator,SplitButton,Text,Tooltip}from"@box/blueprint-web";import{getIn,useFormikContext}from"formik";import{useLocalStorageAIAgents}from"@box/box-ai-agent-selector";import '../styles/metadata-instance-form-autofill-button.css';var metadata_instance_form_autofill_button_module_default={loadingIndicator:`_loadingIndicator_zhzu0_1`,actionMenuItem:`_actionMenuItem_zhzu0_11`,splitButtonIcon:`_splitButtonIcon_zhzu0_17`},AutofillSplitButton=forwardRef(({isButtonDisabled,onAutofill,onAgentChange,storedAgent,icon,...rest},forwardedRef)=>{let intl=useIntl(),[selectedExtractAgent,setSelectedExtractAgent]=useState(storedAgent||`standard`),handleAgentChange=agentType=>{setSelectedExtractAgent(agentType),onAgentChange(agentType),setTimeout(()=>{onAutofill(agentType)},0)};return jsx(SplitButton,{...rest,ref:forwardedRef,disabled:isButtonDisabled,dropdownTriggerAriaLabel:`See agent options.`,endIcon:icon,label:intl.formatMessage(messages.autofillButton),onClick:()=>onAutofill(),variant:`secondary`,children:jsx(DropdownMenu.RadioGroup,{onValueChange:value=>handleAgentChange(value),value:selectedExtractAgent,children:Object.entries(EXTRACT_AGENTS_MAP).map(([key,agent])=>{let IconComponent=agent.ICON;return jsx(DropdownMenu.RadioSelectItem,{value:agent.AGENT_TYPE,children:jsxs(`div`,{className:metadata_instance_form_autofill_button_module_default.actionMenuItem,children:[jsx(IconComponent,{"aria-hidden":!0,className:metadata_instance_form_autofill_button_module_default.splitButtonIcon}),jsx(Text,{as:`span`,children:intl.formatMessage(messages[agent.DISPLAY_MSG])})]})},key)})})})}),MetadataInstanceFormAutofillButton=({areAiSuggestionsAvailable,isBetaLanguageEnabled,isLoading,variant=`secondary-button`,isAdvancedExtractAgentEnabled=!1,onAutofill})=>{let{isSubmitting,values,setFieldValue}=useFormikContext(),intl=useIntl(),[storedAgent,setStoredAgent]=useLocalStorageAIAgents(EXTRACT_AI_AGENT_LOCAL_STORAGE_KEY),{suggestions,confidenceScores,targetLocations}=useAutofill();useEffect(()=>{if(suggestions){let fields=getIn(values,`metadata.fields`),templateKey=getIn(values,`metadata.templateKey`);setFieldValue(`metadata.fields`,fields?.map(field=>{let suggestion=suggestions?.[templateKey]?.[field.key];return suggestion?{...field,aiSuggestion:suggestion,aiSuggestionConfidenceScore:confidenceScores?.[templateKey]?.[field.key],aiSuggestionTargetLocation:targetLocations?.[templateKey]?.[field.key]}:field}))}},[suggestions,confidenceScores,targetLocations,setFieldValue]);let handleAutofill=selectedAgentId=>{let templateKey=getIn(values,`metadata.templateKey`),scope=getIn(values,`metadata.scope`),agentId=selectedAgentId?EXTRACT_AGENTS_MAP[selectedAgentId]?.AGENT_ID:EXTRACT_AGENTS_MAP[storedAgent]?.AGENT_ID;onAutofill(templateKey,scope,isAdvancedExtractAgentEnabled?agentId:void 0)},isButtonDisabled=!areAiSuggestionsAvailable||isSubmitting||isLoading,buttonIcon=storedAgent===`enhanced`&&isAdvancedExtractAgentEnabled?BoxAiAdvancedLogo24:BoxAiLogo24,tooltipContent=useMemo(()=>getTooltipContent(isAdvancedExtractAgentEnabled,storedAgent,intl),[isAdvancedExtractAgentEnabled,storedAgent,intl]);return variant===`secondary-button`?jsx(Tooltip,{content:tooltipContent,children:isAdvancedExtractAgentEnabled?jsx(AutofillSplitButton,{icon:buttonIcon,isButtonDisabled,onAgentChange:setStoredAgent,onAutofill:handleAutofill,storedAgent}):jsx(Button,{disabled:isButtonDisabled,endIcon:buttonIcon,onClick:()=>handleAutofill(),variant:`secondary`,
|
|
1
|
+
import{EXTRACT_AGENTS_MAP,EXTRACT_AI_AGENT_LOCAL_STORAGE_KEY}from"../esm/lib/constants.js";import{autofillMessages}from"../esm/lib/messages.js";import{getTooltipContent}from"../esm/lib/utils/utils.js";import{useAutofill}from"../esm/lib/utils/autofill-context.js";import messages from"../esm/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form-autofill-button/messages.js";import{forwardRef,useEffect,useMemo,useState}from"react";import{useIntl}from"react-intl";import{BoxAiAdvancedLogo24,BoxAiLogo24}from"@box/blueprint-web-assets/icons/Logo";import{jsx,jsxs}from"react/jsx-runtime";import{Button,DropdownMenu,IconButton,LoadingIndicator,SplitButton,Text,Tooltip}from"@box/blueprint-web";import{getIn,useFormikContext}from"formik";import{useLocalStorageAIAgents}from"@box/box-ai-agent-selector";import '../styles/metadata-instance-form-autofill-button.css';var metadata_instance_form_autofill_button_module_default={loadingIndicator:`_loadingIndicator_zhzu0_1`,actionMenuItem:`_actionMenuItem_zhzu0_11`,splitButtonIcon:`_splitButtonIcon_zhzu0_17`},AutofillSplitButton=forwardRef(({isButtonDisabled,onAutofill,onAgentChange,storedAgent,icon,...rest},forwardedRef)=>{let intl=useIntl(),[selectedExtractAgent,setSelectedExtractAgent]=useState(storedAgent||`standard`),handleAgentChange=agentType=>{setSelectedExtractAgent(agentType),onAgentChange(agentType),setTimeout(()=>{onAutofill(agentType)},0)};return jsx(SplitButton,{...rest,ref:forwardedRef,"data-target-id":`SplitButton-metadataEditorAutofill`,disabled:isButtonDisabled,dropdownTriggerAriaLabel:`See agent options.`,endIcon:icon,label:intl.formatMessage(messages.autofillButton),onClick:()=>onAutofill(),variant:`secondary`,children:jsx(DropdownMenu.RadioGroup,{onValueChange:value=>handleAgentChange(value),value:selectedExtractAgent,children:Object.entries(EXTRACT_AGENTS_MAP).map(([key,agent])=>{let IconComponent=agent.ICON;return jsx(DropdownMenu.RadioSelectItem,{value:agent.AGENT_TYPE,children:jsxs(`div`,{className:metadata_instance_form_autofill_button_module_default.actionMenuItem,children:[jsx(IconComponent,{"aria-hidden":!0,className:metadata_instance_form_autofill_button_module_default.splitButtonIcon}),jsx(Text,{as:`span`,children:intl.formatMessage(messages[agent.DISPLAY_MSG])})]})},key)})})})}),MetadataInstanceFormAutofillButton=({areAiSuggestionsAvailable,isBetaLanguageEnabled,isLoading,variant=`secondary-button`,isAdvancedExtractAgentEnabled=!1,onAutofill})=>{let{isSubmitting,values,setFieldValue}=useFormikContext(),intl=useIntl(),[storedAgent,setStoredAgent]=useLocalStorageAIAgents(EXTRACT_AI_AGENT_LOCAL_STORAGE_KEY),{suggestions,confidenceScores,targetLocations}=useAutofill();useEffect(()=>{if(suggestions){let fields=getIn(values,`metadata.fields`),templateKey=getIn(values,`metadata.templateKey`);setFieldValue(`metadata.fields`,fields?.map(field=>{let suggestion=suggestions?.[templateKey]?.[field.key];return suggestion?{...field,aiSuggestion:suggestion,aiSuggestionConfidenceScore:confidenceScores?.[templateKey]?.[field.key],aiSuggestionTargetLocation:targetLocations?.[templateKey]?.[field.key]}:field}))}},[suggestions,confidenceScores,targetLocations,setFieldValue]);let handleAutofill=selectedAgentId=>{let templateKey=getIn(values,`metadata.templateKey`),scope=getIn(values,`metadata.scope`),agentId=selectedAgentId?EXTRACT_AGENTS_MAP[selectedAgentId]?.AGENT_ID:EXTRACT_AGENTS_MAP[storedAgent]?.AGENT_ID;onAutofill(templateKey,scope,isAdvancedExtractAgentEnabled?agentId:void 0)},isButtonDisabled=!areAiSuggestionsAvailable||isSubmitting||isLoading,buttonIcon=storedAgent===`enhanced`&&isAdvancedExtractAgentEnabled?BoxAiAdvancedLogo24:BoxAiLogo24,tooltipContent=useMemo(()=>getTooltipContent(isAdvancedExtractAgentEnabled,storedAgent,intl),[isAdvancedExtractAgentEnabled,storedAgent,intl]);return variant===`secondary-button`?jsx(Tooltip,{content:tooltipContent,children:isAdvancedExtractAgentEnabled?jsx(AutofillSplitButton,{icon:buttonIcon,isButtonDisabled,onAgentChange:setStoredAgent,onAutofill:handleAutofill,storedAgent}):jsx(Button,{"data-target-id":`Button-metadataEditorAutofill`,disabled:isButtonDisabled,endIcon:buttonIcon,onClick:()=>handleAutofill(),variant:`secondary`,children:intl.formatMessage(messages.autofillButton)})}):jsx(Tooltip,{content:tooltipContent,children:isLoading?jsx(LoadingIndicator,{"aria-label":intl.formatMessage(messages.loadingButtonAriaLabel),className:metadata_instance_form_autofill_button_module_default.loadingIndicator}):jsx(IconButton,{"aria-label":intl.formatMessage(autofillMessages.autofillButtonAriaLabel),"data-target-id":`IconButton-metadataEditorAutofillEditMode`,disabled:isButtonDisabled,icon:buttonIcon,onClick:()=>handleAutofill(),variant:`icon-logo`})})};export{MetadataInstanceFormAutofillButton as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import messages from"../esm/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form-footer/messages.js";import{useIntl}from"react-intl";import{jsx,jsxs}from"react/jsx-runtime";import{Button,TextButton}from"@box/blueprint-web";import{useFormikContext}from"formik";import '../styles/metadata-instance-form-footer.css';var metadata_instance_form_footer_module_default={metadataInstanceFormFooter:`_metadataInstanceFormFooter_sqpiw_1`,buttonsContainer:`_buttonsContainer_sqpiw_7`,buttons:`_buttons_sqpiw_7`},MetadataInstanceFormFooter=({isDeleteButtonDisabled,isLoading,onCancel,onDelete})=>{let intl=useIntl(),{isSubmitting,submitForm}=useFormikContext(),isButtonDisabled=isLoading||isSubmitting;return jsx(`div`,{className:metadata_instance_form_footer_module_default.metadataInstanceFormFooter,children:jsxs(`div`,{className:metadata_instance_form_footer_module_default.buttonsContainer,children:[jsx(TextButton,{
|
|
1
|
+
import messages from"../esm/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form-footer/messages.js";import{useIntl}from"react-intl";import{jsx,jsxs}from"react/jsx-runtime";import{Button,TextButton}from"@box/blueprint-web";import{useFormikContext}from"formik";import '../styles/metadata-instance-form-footer.css';var metadata_instance_form_footer_module_default={metadataInstanceFormFooter:`_metadataInstanceFormFooter_sqpiw_1`,buttonsContainer:`_buttonsContainer_sqpiw_7`,buttons:`_buttons_sqpiw_7`},MetadataInstanceFormFooter=({isDeleteButtonDisabled,isLoading,onCancel,onDelete})=>{let intl=useIntl(),{isSubmitting,submitForm}=useFormikContext(),isButtonDisabled=isLoading||isSubmitting;return jsx(`div`,{className:metadata_instance_form_footer_module_default.metadataInstanceFormFooter,children:jsxs(`div`,{className:metadata_instance_form_footer_module_default.buttonsContainer,children:[jsx(TextButton,{"data-target-id":`TextButton-metadataEditorDelete`,disabled:isButtonDisabled||isDeleteButtonDisabled,onClick:onDelete,children:intl.formatMessage(messages.deleteButton)}),jsxs(`div`,{className:metadata_instance_form_footer_module_default.buttons,children:[jsx(Button,{"data-target-id":`Button-metadataEditorCancel`,disabled:isButtonDisabled,onClick:onCancel,size:`large`,variant:`secondary`,children:intl.formatMessage(messages.cancelButton)}),jsx(Button,{"data-target-id":`Button-metadataEditorSave`,disabled:isButtonDisabled,loading:isSubmitting,loadingAriaLabel:intl.formatMessage(messages.loadingAriaLabel),onClick:submitForm,size:`large`,children:intl.formatMessage(messages.saveButton)})]})]})})};export{MetadataInstanceFormFooter as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{EXTRACT_AGENTS_MAP,EXTRACT_AI_AGENT_LOCAL_STORAGE_KEY}from"../esm/lib/constants.js";import{autofillMessages}from"../esm/lib/messages.js";import{getTooltipContent}from"../esm/lib/utils/utils.js";import{t as InteractiveHeaderText}from"./interactive-header-text.js";import messages from"../esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-header/messages.js";import{useMemo}from"react";import{useIntl}from"react-intl";import{BoxAiAdvancedLogo24,BoxAiLogo24}from"@box/blueprint-web-assets/icons/Logo";import{jsx,jsxs}from"react/jsx-runtime";import{IconButton,Tooltip}from"@box/blueprint-web";import{Pencil}from"@box/blueprint-web-assets/icons/Line";import{useLocalStorageAIAgents}from"@box/box-ai-agent-selector";import '../styles/metadata-instance-header.css';var metadata_instance_header_module_default={metadataInstanceHeader:`_metadataInstanceHeader_17bsu_1`,iconButtonsContainer:`_iconButtonsContainer_17bsu_6`,title:`_title_17bsu_14`},MetadataInstanceHeader=({areAiSuggestionsAvailable,canEdit,isAiSuggestionsFeatureEnabled,isBetaLanguageEnabled,onEdit,onAutofill,templateName,isAdvancedExtractAgentEnabled=!1})=>{let intl=useIntl(),title=templateName||intl.formatMessage(messages.customInstanceTitle),showAiButton=isAiSuggestionsFeatureEnabled&&templateName,[storedAgent]=useLocalStorageAIAgents(EXTRACT_AI_AGENT_LOCAL_STORAGE_KEY),agentId=isAdvancedExtractAgentEnabled&&EXTRACT_AGENTS_MAP[storedAgent]?.AGENT_ID,tooltipContent=useMemo(()=>getTooltipContent(isAdvancedExtractAgentEnabled,storedAgent,intl),[isAdvancedExtractAgentEnabled,storedAgent,intl]);return jsxs(`div`,{className:metadata_instance_header_module_default.metadataInstanceHeader,children:[jsx(InteractiveHeaderText,{className:metadata_instance_header_module_default.title,title}),canEdit&&jsxs(`div`,{className:metadata_instance_header_module_default.iconButtonsContainer,children:[showAiButton&&jsx(Tooltip,{content:tooltipContent,children:jsx(IconButton,{"aria-label":intl.formatMessage(autofillMessages.autofillButtonAriaLabelWithTemplateName,{templateName}),disabled:!areAiSuggestionsAvailable,icon:storedAgent===`enhanced`&&isAdvancedExtractAgentEnabled?BoxAiAdvancedLogo24:BoxAiLogo24,onClick:()=>onAutofill(agentId||void 0),variant:`icon-logo
|
|
1
|
+
import{EXTRACT_AGENTS_MAP,EXTRACT_AI_AGENT_LOCAL_STORAGE_KEY}from"../esm/lib/constants.js";import{autofillMessages}from"../esm/lib/messages.js";import{getTooltipContent}from"../esm/lib/utils/utils.js";import{t as InteractiveHeaderText}from"./interactive-header-text.js";import messages from"../esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-header/messages.js";import{useMemo}from"react";import{useIntl}from"react-intl";import{BoxAiAdvancedLogo24,BoxAiLogo24}from"@box/blueprint-web-assets/icons/Logo";import{jsx,jsxs}from"react/jsx-runtime";import{IconButton,Tooltip}from"@box/blueprint-web";import{Pencil}from"@box/blueprint-web-assets/icons/Line";import{useLocalStorageAIAgents}from"@box/box-ai-agent-selector";import '../styles/metadata-instance-header.css';var metadata_instance_header_module_default={metadataInstanceHeader:`_metadataInstanceHeader_17bsu_1`,iconButtonsContainer:`_iconButtonsContainer_17bsu_6`,title:`_title_17bsu_14`},MetadataInstanceHeader=({areAiSuggestionsAvailable,canEdit,isAiSuggestionsFeatureEnabled,isBetaLanguageEnabled,onEdit,onAutofill,templateName,isAdvancedExtractAgentEnabled=!1})=>{let intl=useIntl(),title=templateName||intl.formatMessage(messages.customInstanceTitle),showAiButton=isAiSuggestionsFeatureEnabled&&templateName,[storedAgent]=useLocalStorageAIAgents(EXTRACT_AI_AGENT_LOCAL_STORAGE_KEY),agentId=isAdvancedExtractAgentEnabled&&EXTRACT_AGENTS_MAP[storedAgent]?.AGENT_ID,tooltipContent=useMemo(()=>getTooltipContent(isAdvancedExtractAgentEnabled,storedAgent,intl),[isAdvancedExtractAgentEnabled,storedAgent,intl]);return jsxs(`div`,{className:metadata_instance_header_module_default.metadataInstanceHeader,children:[jsx(InteractiveHeaderText,{className:metadata_instance_header_module_default.title,title}),canEdit&&jsxs(`div`,{className:metadata_instance_header_module_default.iconButtonsContainer,children:[showAiButton&&jsx(Tooltip,{content:tooltipContent,children:jsx(IconButton,{"aria-label":intl.formatMessage(autofillMessages.autofillButtonAriaLabelWithTemplateName,{templateName}),"data-target-id":`IconButton-metadataEditorAutofillReadMode`,disabled:!areAiSuggestionsAvailable,icon:storedAgent===`enhanced`&&isAdvancedExtractAgentEnabled?BoxAiAdvancedLogo24:BoxAiLogo24,onClick:()=>onAutofill(agentId||void 0),variant:`icon-logo`})}),jsx(Tooltip,{content:intl.formatMessage(messages.editButtonTooltip),children:jsx(IconButton,{"aria-label":intl.formatMessage(messages.editButtonAriaLabel,{templateName}),icon:Pencil,onClick:onEdit,"data-target-id":`IconButton-editButtonAriaLabel`})})]})]})};export{MetadataInstanceHeader as t};
|
|
@@ -1 +1 @@
|
|
|
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
|
+
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,onShown){let[isTooltipOpen,setIsTooltipOpen]=useState(!1),showTimerRef=useRef(),scheduleShow=useCallback(()=>{clearTimeout(showTimerRef.current),showTimerRef.current=setTimeout(()=>{document.querySelectorAll(`[role="tooltip"]`).length===0&&(setIsTooltipOpen(!0),onShown?.())},SHOW_DELAY)},[onShown]),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 +1 @@
|
|
|
1
|
-
import messages from"../../messages.js";import{t as AiSuggestionState}from"../../../../chunks/types.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{isConfidenceScoreNeedingReview}from"../../utils/confidence-score/is-confidence-score-needing-review.js";import{i as metadata_editor_fields_module_default}from"../../../../chunks/utils.js";import{isUserFieldRenderable,warnIfUserFieldMisconfigured}from"./components/metadata-user-field/user-field-render-utils.js";import{editorFieldTypes}from"./editor-field-types.js";import{isInteractiveFormElement}from"../../utils/is-interactive-form-element.js";import{useViewReferenceTooltip}from"./hooks/use-view-reference-tooltip.js";import{checkIfHasBoundingBoxes}from"../../utils/check-if-has-bounding-boxes.js";import{t as shared_field_styles_module_default}from"../../../../chunks/shared-field-styles.module.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,isUserFieldEnabled=!1,onSelectMetadataField,selectedMetadataFieldId,fetchUsers,fetchAvatarUrls,resolveUsersByEmail},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,isUserField=field.type===`user`,isUserFieldHidden=isUserField&&!isUserFieldRenderable({isUserFieldEnabled,fetchUsers,fetchAvatarUrls}),showField=MetadataEditorField&&!field.hidden&&!isUserFieldHidden;useEffect(()=>{isUserField&&warnIfUserFieldMisconfigured({isUserFieldEnabled,fetchUsers,fetchAvatarUrls})},[isUserField,isUserFieldEnabled,fetchUsers,fetchAvatarUrls]);let 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),isTaxonomyField=type===`taxonomy`,aiStateClassName=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}),wrapperAiClassName=isTaxonomyField?aiStateClassName:void 0,fieldClassName=clsx(!isTaxonomyField&&aiStateClassName,{[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`||type===`user`?[]:``),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,fetchUsers,fetchAvatarUrls,resolveUsersByEmail})},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,wrapperAiClassName,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:fieldClassName,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,fetchUsers,fetchAvatarUrls,resolveUsersByEmail}),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
|
+
import messages from"../../messages.js";import{EDITOR_MODES,EVENT_NAMES}from"../../utils/analytics/events.js";import{useMetadataEditorAnalytics}from"../../utils/analytics/analytics-context.js";import{t as AiSuggestionState}from"../../../../chunks/types.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{isConfidenceScoreNeedingReview}from"../../utils/confidence-score/is-confidence-score-needing-review.js";import{i as metadata_editor_fields_module_default}from"../../../../chunks/utils.js";import{isUserFieldRenderable,warnIfUserFieldMisconfigured}from"./components/metadata-user-field/user-field-render-utils.js";import{editorFieldTypes}from"./editor-field-types.js";import{isInteractiveFormElement}from"../../utils/is-interactive-form-element.js";import{useViewReferenceTooltip}from"./hooks/use-view-reference-tooltip.js";import{checkIfHasBoundingBoxes}from"../../utils/check-if-has-bounding-boxes.js";import{t as shared_field_styles_module_default}from"../../../../chunks/shared-field-styles.module.js";import{forwardRef,memo,useCallback,useEffect,useMemo,useRef}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,isUserFieldEnabled=!1,onSelectMetadataField,selectedMetadataFieldId,fetchUsers,fetchAvatarUrls,resolveUsersByEmail},forwardedRef)=>{let{setFieldValue}=useFormikContext(),{formatMessage}=useIntl(),{trackEvent}=useMetadataEditorAnalytics(),hasTrackedManualEditRef=useRef(!1),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,prevAiSuggestionRef=useRef(aiSuggestion),isUserField=field.type===`user`,isUserFieldHidden=isUserField&&!isUserFieldRenderable({isUserFieldEnabled,fetchUsers,fetchAvatarUrls}),showField=MetadataEditorField&&!field.hidden&&!isUserFieldHidden;useEffect(()=>{isUserField&&warnIfUserFieldMisconfigured({isUserFieldEnabled,fetchUsers,fetchAvatarUrls})},[isUserField,isUserFieldEnabled,fetchUsers,fetchAvatarUrls]);let 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,handleFieldHover=useCallback(()=>{trackEvent(EVENT_NAMES.FIELD_HOVER,{fieldType:type,isClickable,mode:EDITOR_MODES.Edit})},[trackEvent,type,isClickable]),{isTooltipOpen,handleMouseOver,handleMouseLeave,handleFocus,handleBlur}=useViewReferenceTooltip(isClickable,useCallback(()=>{trackEvent(EVENT_NAMES.VIEW_ON_DOCUMENT_TOOLTIP_SHOWN,{fieldType:type,mode:EDITOR_MODES.Edit})},[trackEvent,type])),isTaxonomyField=type===`taxonomy`,aiStateClassName=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}),wrapperAiClassName=isTaxonomyField?aiStateClassName:void 0,fieldClassName=clsx(!isTaxonomyField&&aiStateClassName,{[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`||type===`user`?[]:``),setField(`confidenceScore`,void 0),setField(`targetLocation`,void 0),onSelectMetadataField?.(null)},[setField,type,onSelectMetadataField,setAiSuggestionState]),handleValueEdited=useCallback(()=>{hasTrackedManualEditRef.current||(hasTrackedManualEditRef.current=!0,trackEvent(EVENT_NAMES.FIELD_MANUAL_EDIT,{fieldType:type,wasExtracted:!!field.isExtracted,confidenceLevel:field.confidenceScore?.level})),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,trackEvent,type]),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]),useEffect(()=>{!isUndefined(aiSuggestion)&&!isEqual(aiSuggestion,prevAiSuggestionRef.current)&&(hasTrackedManualEditRef.current=!1),prevAiSuggestionRef.current=aiSuggestion},[aiSuggestion]);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,fetchUsers,fetchAvatarUrls,resolveUsersByEmail})},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,onMouseEnter:handleFieldHover,children:updateModeContent})}):updateModeContent}let fieldContent=jsxs(`div`,{className:clsx(metadata_editor_fields_module_default.fieldWrapper,wrapperAiClassName,isBoundingBoxOrConfidenceScoreReviewEnabled&&shared_field_styles_module_default.spacious,isClickable&&shared_field_styles_module_default.clickableField,isClickable&&isSelected&&shared_field_styles_module_default.selectedField),...isClickable&&clickableFieldProps,onMouseEnter:handleFieldHover,children:[jsx(MetadataEditorField,{ref:forwardedRef,className:fieldClassName,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,fetchUsers,fetchAvatarUrls,resolveUsersByEmail}),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 +1 @@
|
|
|
1
|
-
var EVENT_NAMES={LOW_CONF_BADGE_HOVER:`metadata_editor_low_conf_badge_hover`,LOW_CONF_ICON_HOVER_READ_MODE:`metadata_editor_low_conf_icon_hover_read_mode`,AI_SUGGESTION_SHOWN:`metadata_editor_ai_suggestion_shown`,UNSAVED_MODAL_SHOWN:`metadata_editor_unsaved_modal_shown`,UNSAVED_MODAL_DISCARD:`metadata_editor_unsaved_modal_discard`,AI_LOGO_BADGE_HOVER:`metadata_editor_conf_score_icon_hover`};export{EVENT_NAMES};
|
|
1
|
+
var EVENT_NAMES={LOW_CONF_BADGE_HOVER:`metadata_editor_low_conf_badge_hover`,LOW_CONF_ICON_HOVER_READ_MODE:`metadata_editor_low_conf_icon_hover_read_mode`,AI_SUGGESTION_SHOWN:`metadata_editor_ai_suggestion_shown`,UNSAVED_MODAL_SHOWN:`metadata_editor_unsaved_modal_shown`,UNSAVED_MODAL_DISCARD:`metadata_editor_unsaved_modal_discard`,AI_LOGO_BADGE_HOVER:`metadata_editor_conf_score_icon_hover`,FIELD_HOVER:`metadata_editor_field_hover`,VIEW_ON_DOCUMENT_TOOLTIP_SHOWN:`metadata_editor_view_on_document_tooltip_shown`,FIELD_MANUAL_EDIT:`metadata_editor_field_manual_edit`},EDITOR_MODES={Read:`read`,Edit:`edit`};export{EDITOR_MODES,EVENT_NAMES};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{EVENT_NAMES}from"./events.js";import{AnalyticsContext,AnalyticsContextProvider,useMetadataEditorAnalytics}from"./analytics-context.js";import{withAnalytics}from"./with-analytics.js";export{AnalyticsContext,AnalyticsContextProvider,EVENT_NAMES,useMetadataEditorAnalytics,withAnalytics};
|
|
1
|
+
import{EDITOR_MODES,EVENT_NAMES}from"./events.js";import{AnalyticsContext,AnalyticsContextProvider,useMetadataEditorAnalytics}from"./analytics-context.js";import{withAnalytics}from"./with-analytics.js";export{AnalyticsContext,AnalyticsContextProvider,EDITOR_MODES,EVENT_NAMES,useMetadataEditorAnalytics,withAnalytics};
|
package/dist/types/lib/components/metadata-editor-fields/hooks/use-view-reference-tooltip.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FocusEvent, MouseEvent } from 'react';
|
|
2
|
-
export declare function useViewReferenceTooltip(isClickable: boolean): {
|
|
2
|
+
export declare function useViewReferenceTooltip(isClickable: boolean, onShown?: () => void): {
|
|
3
3
|
isTooltipOpen: boolean;
|
|
4
4
|
handleMouseOver: (event: MouseEvent<HTMLDivElement>) => void;
|
|
5
5
|
handleMouseLeave: () => void;
|
|
@@ -5,5 +5,16 @@ export declare const EVENT_NAMES: {
|
|
|
5
5
|
readonly UNSAVED_MODAL_SHOWN: "metadata_editor_unsaved_modal_shown";
|
|
6
6
|
readonly UNSAVED_MODAL_DISCARD: "metadata_editor_unsaved_modal_discard";
|
|
7
7
|
readonly AI_LOGO_BADGE_HOVER: "metadata_editor_conf_score_icon_hover";
|
|
8
|
+
readonly FIELD_HOVER: "metadata_editor_field_hover";
|
|
9
|
+
readonly VIEW_ON_DOCUMENT_TOOLTIP_SHOWN: "metadata_editor_view_on_document_tooltip_shown";
|
|
10
|
+
readonly FIELD_MANUAL_EDIT: "metadata_editor_field_manual_edit";
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Both stages of the field-hover funnel (FIELD_HOVER -> VIEW_ON_DOCUMENT_TOOLTIP_SHOWN) are emitted
|
|
14
|
+
* from read and edit mode, so consumers need this to tell the two apart.
|
|
15
|
+
*/
|
|
16
|
+
export declare const EDITOR_MODES: {
|
|
17
|
+
readonly Read: "read";
|
|
18
|
+
readonly Edit: "edit";
|
|
8
19
|
};
|
|
9
20
|
export type TrackEventCallback = (eventName: string, data?: Record<string, unknown>) => void;
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@box/metadata-editor",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.6.1",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@ariakit/react": "0.4.21",
|
|
6
|
-
"@box/blueprint-web": "^17.11.
|
|
7
|
-
"@box/blueprint-web-assets": "^5.10.
|
|
8
|
-
"@box/box-ai-agent-selector": "^2.2.
|
|
9
|
-
"@box/combobox-with-api": "^2.2.
|
|
10
|
-
"@box/metadata-taxonomy-picker": "^3.3.
|
|
11
|
-
"@box/metadata-template-browser": "^2.4.
|
|
12
|
-
"@box/user-selector": "^3.0.
|
|
6
|
+
"@box/blueprint-web": "^17.11.4",
|
|
7
|
+
"@box/blueprint-web-assets": "^5.10.11",
|
|
8
|
+
"@box/box-ai-agent-selector": "^2.2.55",
|
|
9
|
+
"@box/combobox-with-api": "^2.2.59",
|
|
10
|
+
"@box/metadata-taxonomy-picker": "^3.3.38",
|
|
11
|
+
"@box/metadata-template-browser": "^2.4.7",
|
|
12
|
+
"@box/user-selector": "^3.0.35",
|
|
13
13
|
"formik": "^2.0.3",
|
|
14
14
|
"lodash": "^4.17.15",
|
|
15
15
|
"react": "^17.0.0 || ^18.0.0",
|
|
@@ -19,12 +19,12 @@
|
|
|
19
19
|
"devDependencies": {
|
|
20
20
|
"@ariakit/react": "0.4.21",
|
|
21
21
|
"@box/babel-plugin-target-attributes": "2.2.18",
|
|
22
|
-
"@box/blueprint-web": "^17.11.
|
|
23
|
-
"@box/blueprint-web-assets": "^5.10.
|
|
24
|
-
"@box/box-ai-agent-selector": "^2.2.
|
|
25
|
-
"@box/metadata-taxonomy-picker": "^3.3.
|
|
26
|
-
"@box/storybook-utils": "^1.2.
|
|
27
|
-
"@box/user-selector": "^3.0.
|
|
22
|
+
"@box/blueprint-web": "^17.11.4",
|
|
23
|
+
"@box/blueprint-web-assets": "^5.10.11",
|
|
24
|
+
"@box/box-ai-agent-selector": "^2.2.55",
|
|
25
|
+
"@box/metadata-taxonomy-picker": "^3.3.38",
|
|
26
|
+
"@box/storybook-utils": "^1.2.55",
|
|
27
|
+
"@box/user-selector": "^3.0.35",
|
|
28
28
|
"@testing-library/react": "^15.0.6",
|
|
29
29
|
"react": "^18.3.0",
|
|
30
30
|
"react-dom": "^18.3.0",
|