box-ui-elements 23.1.0 → 23.2.0

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 (117) hide show
  1. package/dist/explorer.css +1 -1
  2. package/dist/explorer.js +1 -1
  3. package/dist/openwith.js +1 -1
  4. package/dist/picker.js +1 -1
  5. package/dist/preview.css +1 -1
  6. package/dist/preview.js +1 -1
  7. package/dist/sharing.css +1 -1
  8. package/dist/sharing.js +1 -1
  9. package/dist/sidebar.js +1 -1
  10. package/dist/uploader.js +1 -1
  11. package/es/elements/common/content-answers/ContentAnswersOpenButton.scss +1 -1
  12. package/es/features/collaborator-avatars/CollaboratorList.js +5 -1
  13. package/es/features/collaborator-avatars/CollaboratorList.js.flow +12 -1
  14. package/es/features/collaborator-avatars/CollaboratorList.js.map +1 -1
  15. package/es/features/collaborator-avatars/CollaboratorList.scss +3 -0
  16. package/es/features/collaborator-avatars/CollaboratorListItem.js +26 -5
  17. package/es/features/collaborator-avatars/CollaboratorListItem.js.flow +33 -9
  18. package/es/features/collaborator-avatars/CollaboratorListItem.js.map +1 -1
  19. package/es/features/collaborator-avatars/CollaboratorListItem.scss +23 -0
  20. package/es/features/message-center/components/MessageCenter.js +1 -0
  21. package/es/features/message-center/components/MessageCenter.js.flow +2 -1
  22. package/es/features/message-center/components/MessageCenter.js.map +1 -1
  23. package/es/features/unified-share-modal/RemoveCollaboratorConfirmModal.js +44 -0
  24. package/es/features/unified-share-modal/RemoveCollaboratorConfirmModal.js.flow +67 -0
  25. package/es/features/unified-share-modal/RemoveCollaboratorConfirmModal.js.map +1 -0
  26. package/es/features/unified-share-modal/UnifiedShareForm.js +8 -3
  27. package/es/features/unified-share-modal/UnifiedShareForm.js.flow +5 -1
  28. package/es/features/unified-share-modal/UnifiedShareForm.js.map +1 -1
  29. package/es/features/unified-share-modal/UnifiedShareModal.js +54 -10
  30. package/es/features/unified-share-modal/UnifiedShareModal.js.flow +59 -11
  31. package/es/features/unified-share-modal/UnifiedShareModal.js.map +1 -1
  32. package/es/features/unified-share-modal/UnifiedShareModal.scss +9 -2
  33. package/es/features/unified-share-modal/flowTypes.js.flow +13 -0
  34. package/es/features/unified-share-modal/flowTypes.js.map +1 -1
  35. package/es/features/unified-share-modal/messages.js +8 -0
  36. package/es/features/unified-share-modal/messages.js.flow +10 -0
  37. package/es/features/unified-share-modal/messages.js.map +1 -1
  38. package/es/features/unified-share-modal/stories/UnifiedShareModal.stories.js +221 -4
  39. package/es/features/unified-share-modal/stories/UnifiedShareModal.stories.js.flow +208 -3
  40. package/es/features/unified-share-modal/stories/UnifiedShareModal.stories.js.map +1 -1
  41. package/es/src/elements/content-sidebar/stories/tests/MetadataSidebarRedesign-visual.stories.d.ts +4 -4
  42. package/i18n/bn-IN.js +2 -0
  43. package/i18n/bn-IN.properties +4 -0
  44. package/i18n/da-DK.js +2 -0
  45. package/i18n/da-DK.properties +4 -0
  46. package/i18n/de-DE.js +2 -0
  47. package/i18n/de-DE.properties +4 -0
  48. package/i18n/en-AU.js +2 -0
  49. package/i18n/en-AU.properties +4 -0
  50. package/i18n/en-CA.js +2 -0
  51. package/i18n/en-CA.properties +4 -0
  52. package/i18n/en-GB.js +2 -0
  53. package/i18n/en-GB.properties +4 -0
  54. package/i18n/en-US.js +2 -0
  55. package/i18n/en-US.properties +4 -0
  56. package/i18n/en-x-pseudo.js +1010 -1008
  57. package/i18n/en-x-pseudo.properties +1012 -1008
  58. package/i18n/es-419.js +2 -0
  59. package/i18n/es-419.properties +4 -0
  60. package/i18n/es-ES.js +2 -0
  61. package/i18n/es-ES.properties +4 -0
  62. package/i18n/fi-FI.js +2 -0
  63. package/i18n/fi-FI.properties +4 -0
  64. package/i18n/fr-CA.js +2 -0
  65. package/i18n/fr-CA.properties +4 -0
  66. package/i18n/fr-FR.js +2 -0
  67. package/i18n/fr-FR.properties +4 -0
  68. package/i18n/hi-IN.js +2 -0
  69. package/i18n/hi-IN.properties +4 -0
  70. package/i18n/it-IT.js +2 -0
  71. package/i18n/it-IT.properties +4 -0
  72. package/i18n/ja-JP.js +2 -0
  73. package/i18n/ja-JP.properties +4 -0
  74. package/i18n/ko-KR.js +2 -0
  75. package/i18n/ko-KR.properties +4 -0
  76. package/i18n/nb-NO.js +2 -0
  77. package/i18n/nb-NO.properties +4 -0
  78. package/i18n/nl-NL.js +2 -0
  79. package/i18n/nl-NL.properties +4 -0
  80. package/i18n/pl-PL.js +2 -0
  81. package/i18n/pl-PL.properties +4 -0
  82. package/i18n/pt-BR.js +2 -0
  83. package/i18n/pt-BR.properties +4 -0
  84. package/i18n/ru-RU.js +2 -0
  85. package/i18n/ru-RU.properties +4 -0
  86. package/i18n/sv-SE.js +2 -0
  87. package/i18n/sv-SE.properties +4 -0
  88. package/i18n/tr-TR.js +2 -0
  89. package/i18n/tr-TR.properties +4 -0
  90. package/i18n/zh-CN.js +2 -0
  91. package/i18n/zh-CN.properties +4 -0
  92. package/i18n/zh-TW.js +2 -0
  93. package/i18n/zh-TW.properties +4 -0
  94. package/package.json +18 -18
  95. package/src/elements/common/content-answers/ContentAnswersOpenButton.scss +1 -1
  96. package/src/features/collaborator-avatars/CollaboratorList.js +12 -1
  97. package/src/features/collaborator-avatars/CollaboratorList.scss +3 -0
  98. package/src/features/collaborator-avatars/CollaboratorListItem.js +33 -9
  99. package/src/features/collaborator-avatars/CollaboratorListItem.scss +23 -0
  100. package/src/features/collaborator-avatars/__tests__/CollaboratorList.test.js +11 -0
  101. package/src/features/collaborator-avatars/__tests__/CollaboratorListItem.test.js +51 -0
  102. package/src/features/collaborator-avatars/__tests__/__snapshots__/CollaboratorList.test.js.snap +110 -0
  103. package/src/features/collaborator-avatars/__tests__/__snapshots__/CollaboratorListItem.test.js.snap +310 -0
  104. package/src/features/message-center/__tests__/MessageCenter.integration.test.js +10 -0
  105. package/src/features/message-center/components/MessageCenter.js +2 -1
  106. package/src/features/unified-share-modal/README.md +12 -1
  107. package/src/features/unified-share-modal/RemoveCollaboratorConfirmModal.js +67 -0
  108. package/src/features/unified-share-modal/UnifiedShareForm.js +5 -1
  109. package/src/features/unified-share-modal/UnifiedShareModal.js +59 -11
  110. package/src/features/unified-share-modal/UnifiedShareModal.scss +9 -2
  111. package/src/features/unified-share-modal/__tests__/RemoveCollaboratorConfirmModal.test.js +64 -0
  112. package/src/features/unified-share-modal/__tests__/UnifiedShareForm.test.js +34 -1
  113. package/src/features/unified-share-modal/__tests__/UnifiedShareModal.test.js +74 -4
  114. package/src/features/unified-share-modal/__tests__/__snapshots__/UnifiedShareModal.test.js.snap +258 -0
  115. package/src/features/unified-share-modal/flowTypes.js +13 -0
  116. package/src/features/unified-share-modal/messages.js +10 -0
  117. package/src/features/unified-share-modal/stories/UnifiedShareModal.stories.js +208 -3
@@ -1 +1 @@
1
- {"version":3,"file":"UnifiedShareForm.js","names":["React","isEmpty","isEqual","FormattedMessage","injectIntl","LoadingIndicatorWrapper","Link","Button","UpgradeBadge","InlineNotice","PlainButton","ITEM_TYPE_FILE","ITEM_TYPE_WEBLINK","Tooltip","CollaboratorAvatars","CollaboratorList","AdvancedContentInsightsToggle","InviteePermissionsMenu","messages","SharedLinkSection","EmailForm","getDefaultPermissionLevel","hasRestrictedContacts","mergeContacts","JUSTIFICATION_CHECKPOINT_EXTERNAL_COLLAB","SHARED_LINKS_COMMUNITY_URL","INVITE_COLLABS_CONTACTS_TYPE","EMAIL_SHARED_LINK_CONTACTS_TYPE","UnifiedShareForm","Component","constructor","props","_defineProperty","item","checkpoint","justificationReasons","state","getJustificationReasons","hasJustificationReasons","length","Promise","resolve","setState","isFetchingJustificationReasons","typedID","then","classificationLabelId","options","map","id","title","displayText","value","finally","inviteCollabsContacts","isCollabRestrictionJustificationAllowed","restrictedCollabEmails","restrictedGroups","hasRestrictedCollabs","pills","onPillCreate","event","target","handleFtuxCloseClick","onAddLink","openConfirmModal","shouldRenderFTUXTooltip","trackingProps","sharedLinkTracking","onToggleLink","type","checked","onCollaboratorAvatarsClick","showCollaboratorList","data","inviteePermissions","sendInvites","inviteCollabsEmailTracking","onSendClick","inviteePermissionLevel","defaultPermissionLevel","selectedPermissionLevel","emails","groupIDs","justificationReason","message","restrictedEmails","params","join","emailMessage","permission","numsOfInvitees","numOfInviteeGroups","hasJustificationReason","hasRestrictedInvitees","shouldSubmitJustificationReason","_objectSpread","sendSharedLink","sharedLink","sharedLinkEmailTracking","permissionLevel","numsOfRecipients","numOfRecipientGroups","inviteCollabTracking","onInviteePermissionChange","selectOptionPills","filter","pill","getContactsByEmail","contacts","prevState","emailSharedLinkContacts","isInviteSectionExpanded","onEnterInviteCollabs","isEmailLinkSectionExpanded","some","contact","isExternalUser","currentInviteCollabsContacts","newInviteCollabsContacts","hasRestrictedCollabsAfterUpdate","onRemoveAllRestrictedCollabs","setUpdatedContacts","isRemovingAllRestrictedCollabs","focusSharedLinkOnLoad","sharedLinkLoaded","createSharedLinkOnLoad","isNewSharedLink","initiallySelectedContacts","componentDidUpdate","prevProps","prevRestrictedGroups","prevRestrictedCollabEmails","prevIsCollabRestrictionJustificationAllowed","didCollabRestrictionsChange","shouldRequireCollabJustification","fetchJustificationReasons","renderInviteSection","canInvite","collabRestrictionType","collaborationRestrictionWarning","config","contactLimit","getCollaboratorContacts","getContactAvatarUrl","recommendedSharingTooltipCalloutName","sendInvitesError","showEnterEmailsCallout","showCalloutForUser","showUpgradeInlineNotice","showUpgradeOptions","submitting","suggestedCollaborators","upsellInlineNotice","modalTracking","contactsFieldDisabledTooltip","createElement","inviteDisabledWeblinkTooltip","inviteDisabledTooltip","inlineNotice","content","avatars","renderCollaboratorAvatars","ftuxConfirmButtonProps","ftuxTooltipText","className","ftuxNewUSMUserTitle","ftuxNewUSMUserBody","href","ftuxLinkText","_extends","onClick","ftuxConfirmLabel","ftuxTooltipProps","isShown","position","showCloseButton","text","theme","showUpsellInlineNotice","Fragment","contactsFieldAvatars","contactsFieldLabel","inviteFieldLabel","getContacts","isContactsFieldEnabled","isExpanded","isExternalUserSelected","hasExternalContact","isRestrictionJustificationEnabled","onContactInput","openInviteCollaborators","handleInviteCollabPillCreate","onRequestClose","closeInviteCollaborators","onSubmit","handleSendInvites","openInviteCollaboratorsSection","selectedContacts","updateSelectedContacts","updateInviteCollabsContacts","renderInviteePermissionsDropdown","renderUpgradeLinkDescription","collaboratorsList","currentUserID","avatarsContent","collaborators","hideCollaborators","canShowCollaboratorAvatars","collaborator","String","userID","containerAttributes","collaboratorAvatarsProps","renderCollaboratorMessage","resinTarget","openUpgradePlanModal","values","collaboratorAccess","collabAccess","upgradeLink","setLevelOfCollabAccess","upgradeLinkProps","upgradeGetMoreAccessControlsLink","upgradeGetMoreAccessControlsDescription","renderUpgradeInlineNotice","upgradeInlineNoticeTitle","disabled","inviteePermissionsButtonProps","changeInviteePermissionLevel","handleInviteePermissionChange","itemType","renderCollaboratorList","name","collaboratorListTracking","listContent","itemName","onDoneClick","closeCollaboratorList","render","allShareRestrictionWarning","changeSharedLinkAccessLevel","changeSharedLinkPermissionLevel","displayInModal","getSharedLinkContacts","intl","isAdvancedContentInsightsChecked","isAllowEditSharedLinkForFileEnabled","isFetching","onAdvancedContentInsightsToggle","onCopyError","onCopyInit","onCopySuccess","onDismissTooltip","onSettingsClick","sendSharedLinkError","sharedLinkEditTagTargetingApi","sharedLinkEditTooltipTargetingApi","showSharedLinkSettingsCallout","tooltips","hasExpandedSections","showContentInsightsToggle","isLoading","hideContent","addSharedLink","autofocusSharedLink","shouldAutoFocusSharedLink","autoCreateSharedLink","triggerCopyOnLoad","onEmailSharedLinkClick","openEmailSharedLinkForm","onToggleSharedLink","isChecked","isDisabled","onChange","sendSharedLinkFieldLabel","handleEmailSharedLinkPillCreate","closeEmailSharedLinkForm","handleSendSharedLink","updateEmailSharedLinkContacts","retrictedGroups","removeLinkConfirmModalTracking","UnifiedShareFormBase"],"sources":["../../../src/features/unified-share-modal/UnifiedShareForm.js"],"sourcesContent":["// @flow\n\nimport * as React from 'react';\nimport isEmpty from 'lodash/isEmpty';\nimport isEqual from 'lodash/isEqual';\nimport { FormattedMessage, injectIntl } from 'react-intl';\n\nimport LoadingIndicatorWrapper from '../../components/loading-indicator/LoadingIndicatorWrapper';\nimport { Link } from '../../components/link';\nimport Button from '../../components/button';\nimport { UpgradeBadge } from '../../components/badge';\nimport InlineNotice from '../../components/inline-notice';\nimport PlainButton from '../../components/plain-button';\nimport { ITEM_TYPE_FILE, ITEM_TYPE_WEBLINK } from '../../common/constants';\nimport Tooltip from '../../components/tooltip';\nimport { CollaboratorAvatars, CollaboratorList } from '../collaborator-avatars';\n\nimport AdvancedContentInsightsToggle from '../advanced-content-insights/AdvancedContentInsightsToggle';\nimport InviteePermissionsMenu from './InviteePermissionsMenu';\nimport messages from './messages';\nimport SharedLinkSection from './SharedLinkSection';\nimport EmailForm from './EmailForm';\nimport getDefaultPermissionLevel from './utils/defaultPermissionLevel';\nimport hasRestrictedContacts from './utils/hasRestrictedContacts';\nimport mergeContacts from './utils/mergeContacts';\nimport { JUSTIFICATION_CHECKPOINT_EXTERNAL_COLLAB } from './constants';\n\nimport type {\n contactType as Contact,\n getJustificationReasonsResponseType as GetJustificationReasonsResponse,\n item as Item,\n justificationCheckpointType as JustificationCheckpoint,\n USFProps,\n} from './flowTypes';\nimport type { SelectOptionProp } from '../../components/select-field/props';\n\nconst SHARED_LINKS_COMMUNITY_URL = 'https://community.box.com/t5/Using-Shared-Links/Creating-Shared-Links/ta-p/19523';\nconst INVITE_COLLABS_CONTACTS_TYPE = 'inviteCollabsContacts';\nconst EMAIL_SHARED_LINK_CONTACTS_TYPE = 'emailSharedLinkContacts';\n\ntype State = {\n classificationLabelId: string,\n emailSharedLinkContacts: Array<Contact>,\n inviteCollabsContacts: Array<Contact>,\n inviteePermissionLevel: string,\n isEmailLinkSectionExpanded: boolean,\n isFetchingJustificationReasons: boolean,\n isInviteSectionExpanded: boolean,\n justificationReasons: Array<SelectOptionProp>,\n showCollaboratorList: boolean,\n};\n\nclass UnifiedShareForm extends React.Component<USFProps, State> {\n static defaultProps = {\n displayInModal: true,\n initiallySelectedContacts: [],\n createSharedLinkOnLoad: false,\n focusSharedLinkOnLoad: false,\n restrictedCollabEmails: [],\n retrictedGroups: [],\n trackingProps: {\n collaboratorListTracking: {},\n inviteCollabsEmailTracking: {},\n inviteCollabTracking: {},\n modalTracking: {},\n removeLinkConfirmModalTracking: {},\n sharedLinkEmailTracking: {},\n sharedLinkTracking: {},\n },\n };\n\n constructor(props: USFProps) {\n super(props);\n\n this.state = {\n classificationLabelId: '',\n emailSharedLinkContacts: [],\n inviteCollabsContacts: props.initiallySelectedContacts,\n inviteePermissionLevel: '',\n isEmailLinkSectionExpanded: false,\n isFetchingJustificationReasons: false,\n isInviteSectionExpanded: !!props.initiallySelectedContacts.length,\n justificationReasons: [],\n showCollaboratorList: false,\n };\n }\n\n componentDidUpdate(prevProps: USFProps) {\n const { isCollabRestrictionJustificationAllowed, item, restrictedCollabEmails, restrictedGroups } = this.props;\n const {\n restrictedGroups: prevRestrictedGroups,\n restrictedCollabEmails: prevRestrictedCollabEmails,\n isCollabRestrictionJustificationAllowed: prevIsCollabRestrictionJustificationAllowed,\n } = prevProps;\n\n const didCollabRestrictionsChange =\n !isEqual(restrictedGroups, prevRestrictedGroups) ||\n !isEqual(restrictedCollabEmails, prevRestrictedCollabEmails) ||\n isCollabRestrictionJustificationAllowed !== prevIsCollabRestrictionJustificationAllowed;\n\n if (didCollabRestrictionsChange && this.shouldRequireCollabJustification()) {\n this.fetchJustificationReasons(item, JUSTIFICATION_CHECKPOINT_EXTERNAL_COLLAB);\n }\n }\n\n fetchJustificationReasons = (item: Item, checkpoint: JustificationCheckpoint) => {\n const { justificationReasons } = this.state;\n const { getJustificationReasons } = this.props;\n const hasJustificationReasons = !!justificationReasons.length;\n\n if (!getJustificationReasons || hasJustificationReasons) {\n return Promise.resolve();\n }\n this.setState({ isFetchingJustificationReasons: true });\n\n return getJustificationReasons(item.typedID, checkpoint)\n .then(({ classificationLabelId, options = [] }: GetJustificationReasonsResponse) => {\n this.setState({\n classificationLabelId,\n justificationReasons: options.map(({ id, title }) => ({\n displayText: title,\n value: id,\n })),\n });\n })\n .finally(() => {\n this.setState({ isFetchingJustificationReasons: false });\n });\n };\n\n shouldRequireCollabJustification = () => {\n const { inviteCollabsContacts } = this.state;\n const { isCollabRestrictionJustificationAllowed, restrictedCollabEmails, restrictedGroups } = this.props;\n\n const hasRestrictedCollabs = hasRestrictedContacts(\n inviteCollabsContacts,\n restrictedCollabEmails,\n restrictedGroups,\n );\n return hasRestrictedCollabs && isCollabRestrictionJustificationAllowed;\n };\n\n handleInviteCollabPillCreate = (pills: Array<SelectOptionProp | Contact>) => {\n return this.onPillCreate(INVITE_COLLABS_CONTACTS_TYPE, pills);\n };\n\n handleEmailSharedLinkPillCreate = (pills: Array<SelectOptionProp | Contact>) => {\n return this.onPillCreate(EMAIL_SHARED_LINK_CONTACTS_TYPE, pills);\n };\n\n onToggleSharedLink = (event: SyntheticInputEvent<HTMLInputElement>) => {\n const { target } = event;\n const { handleFtuxCloseClick, onAddLink, openConfirmModal, shouldRenderFTUXTooltip, trackingProps } =\n this.props;\n const { sharedLinkTracking } = trackingProps;\n const { onToggleLink } = sharedLinkTracking;\n\n if (shouldRenderFTUXTooltip) {\n handleFtuxCloseClick();\n }\n\n if (target.type === 'checkbox') {\n if (target.checked === false) {\n openConfirmModal();\n } else {\n onAddLink();\n }\n\n if (onToggleLink) {\n onToggleLink(target.checked);\n }\n }\n };\n\n showCollaboratorList = () => {\n const { onCollaboratorAvatarsClick } = this.props;\n\n if (onCollaboratorAvatarsClick) {\n onCollaboratorAvatarsClick();\n } else {\n this.setState({ showCollaboratorList: true });\n }\n };\n\n closeCollaboratorList = () => {\n this.setState({ showCollaboratorList: false });\n };\n\n handleSendInvites = (data: Object) => {\n const { inviteePermissions, isCollabRestrictionJustificationAllowed, sendInvites, trackingProps } = this.props;\n const { inviteCollabsEmailTracking } = trackingProps;\n const { onSendClick } = inviteCollabsEmailTracking;\n const { classificationLabelId, inviteePermissionLevel } = this.state;\n const defaultPermissionLevel = getDefaultPermissionLevel(inviteePermissions);\n const selectedPermissionLevel = inviteePermissionLevel || defaultPermissionLevel;\n const { emails, groupIDs, justificationReason, message, restrictedEmails, restrictedGroups } = data;\n\n let params = {\n emails: emails.join(','),\n groupIDs: groupIDs.join(','),\n emailMessage: message,\n permission: selectedPermissionLevel,\n numsOfInvitees: emails.length,\n numOfInviteeGroups: groupIDs.length,\n };\n\n const hasJustificationReason = !!justificationReason;\n const hasRestrictedInvitees = !isEmpty(restrictedEmails) || !isEmpty(restrictedGroups);\n const shouldSubmitJustificationReason =\n hasJustificationReason && hasRestrictedInvitees && isCollabRestrictionJustificationAllowed;\n\n if (shouldSubmitJustificationReason) {\n params = {\n ...params,\n classificationLabelId,\n justificationReason: {\n id: justificationReason.value,\n title: justificationReason.displayText,\n },\n };\n }\n\n if (onSendClick) {\n onSendClick(params);\n }\n\n return sendInvites(params);\n };\n\n handleSendSharedLink = (data: Object) => {\n const { sendSharedLink, sharedLink, trackingProps } = this.props;\n const { sharedLinkEmailTracking } = trackingProps;\n const { permissionLevel } = sharedLink;\n const { onSendClick } = sharedLinkEmailTracking;\n\n const { emails, groupIDs } = data;\n\n if (onSendClick) {\n const params = {\n ...data,\n numsOfRecipients: emails.length,\n numOfRecipientGroups: groupIDs.length,\n permissionLevel,\n };\n onSendClick(params);\n }\n\n return sendSharedLink(data);\n };\n\n // TODO-AH: Change permission level to use the appropriate flow type\n handleInviteePermissionChange = (permissionLevel: string) => {\n const { trackingProps } = this.props;\n const { inviteCollabTracking } = trackingProps;\n const { onInviteePermissionChange } = inviteCollabTracking;\n\n this.setState({ inviteePermissionLevel: permissionLevel });\n\n if (onInviteePermissionChange) {\n onInviteePermissionChange(permissionLevel);\n }\n };\n\n onPillCreate = (type: string, pills: Array<SelectOptionProp | Contact>) => {\n // If this is a dropdown select event, we ignore it\n // $FlowFixMe\n const selectOptionPills = pills.filter(pill => !pill.id);\n if (selectOptionPills.length === 0) {\n return;\n }\n\n const { getContactsByEmail } = this.props;\n\n if (getContactsByEmail) {\n const emails = pills.map(pill => pill.value);\n // $FlowFixMe\n getContactsByEmail({ emails }).then((contacts: Object) => {\n if (type === INVITE_COLLABS_CONTACTS_TYPE) {\n this.setState(prevState => ({\n inviteCollabsContacts: mergeContacts(prevState.inviteCollabsContacts, contacts),\n }));\n } else if (type === EMAIL_SHARED_LINK_CONTACTS_TYPE) {\n this.setState(prevState => ({\n emailSharedLinkContacts: mergeContacts(prevState.emailSharedLinkContacts, contacts),\n }));\n }\n });\n }\n };\n\n openInviteCollaborators = (value: string) => {\n const { handleFtuxCloseClick } = this.props;\n if (this.state.isInviteSectionExpanded) {\n return;\n }\n\n // checking the value because IE seems to trigger onInput immediately\n // on focus of the contacts field\n if (value !== '') {\n handleFtuxCloseClick();\n this.setState(\n {\n isInviteSectionExpanded: true,\n },\n () => {\n const {\n trackingProps: {\n inviteCollabTracking: { onEnterInviteCollabs },\n },\n } = this.props;\n\n if (onEnterInviteCollabs) {\n onEnterInviteCollabs();\n }\n },\n );\n }\n };\n\n openInviteCollaboratorsSection = () => {\n this.setState({\n isInviteSectionExpanded: true,\n });\n };\n\n closeInviteCollaborators = () => {\n this.setState({\n isInviteSectionExpanded: false,\n });\n };\n\n openEmailSharedLinkForm = () => {\n const { handleFtuxCloseClick } = this.props;\n handleFtuxCloseClick();\n this.setState({\n isEmailLinkSectionExpanded: true,\n });\n };\n\n closeEmailSharedLinkForm = () => {\n this.setState({ isEmailLinkSectionExpanded: false });\n };\n\n hasExternalContact = (type: string): boolean => {\n const { inviteCollabsContacts, emailSharedLinkContacts } = this.state;\n if (type === INVITE_COLLABS_CONTACTS_TYPE) {\n return inviteCollabsContacts.some(contact => contact.isExternalUser);\n }\n if (type === EMAIL_SHARED_LINK_CONTACTS_TYPE) {\n return emailSharedLinkContacts.some(contact => contact.isExternalUser);\n }\n return false;\n };\n\n isRemovingAllRestrictedCollabs = (\n currentInviteCollabsContacts: Array<Contact>,\n newInviteCollabsContacts: Array<Contact>,\n ) => {\n const { restrictedCollabEmails, restrictedGroups } = this.props;\n\n const hasRestrictedCollabs = hasRestrictedContacts(\n currentInviteCollabsContacts,\n restrictedCollabEmails,\n restrictedGroups,\n );\n const hasRestrictedCollabsAfterUpdate = hasRestrictedContacts(\n newInviteCollabsContacts,\n restrictedCollabEmails,\n restrictedGroups,\n );\n\n return hasRestrictedCollabs && !hasRestrictedCollabsAfterUpdate;\n };\n\n updateInviteCollabsContacts = (inviteCollabsContacts: Array<Contact>) => {\n const { inviteCollabsContacts: currentInviteCollabsContacts } = this.state;\n const { onRemoveAllRestrictedCollabs, setUpdatedContacts } = this.props;\n\n const isRemovingAllRestrictedCollabs = this.isRemovingAllRestrictedCollabs(\n currentInviteCollabsContacts,\n inviteCollabsContacts,\n );\n\n this.setState({\n inviteCollabsContacts,\n });\n\n if (setUpdatedContacts) {\n setUpdatedContacts(inviteCollabsContacts);\n }\n if (onRemoveAllRestrictedCollabs && isRemovingAllRestrictedCollabs) {\n onRemoveAllRestrictedCollabs();\n }\n };\n\n updateEmailSharedLinkContacts = (emailSharedLinkContacts: Array<Contact>) => {\n this.setState({\n emailSharedLinkContacts,\n });\n };\n\n shouldAutoFocusSharedLink = () => {\n const { focusSharedLinkOnLoad, sharedLink, sharedLinkLoaded, createSharedLinkOnLoad } = this.props;\n\n if (!createSharedLinkOnLoad && !focusSharedLinkOnLoad) {\n return false;\n }\n // if not forcing focus or not a newly added shared link, return false\n if (!(focusSharedLinkOnLoad || sharedLink.isNewSharedLink)) {\n return false;\n }\n // otherwise wait until the link data is loaded before focusing\n if (!sharedLinkLoaded) {\n return false;\n }\n return true;\n };\n\n renderInviteSection() {\n const {\n canInvite,\n collabRestrictionType,\n collaborationRestrictionWarning,\n config,\n contactLimit,\n getCollaboratorContacts,\n getContactAvatarUrl,\n handleFtuxCloseClick,\n item,\n recommendedSharingTooltipCalloutName = null,\n restrictedCollabEmails,\n restrictedGroups,\n sendInvitesError,\n shouldRenderFTUXTooltip,\n showEnterEmailsCallout = false,\n showCalloutForUser = false,\n showUpgradeInlineNotice = false,\n showUpgradeOptions,\n submitting,\n suggestedCollaborators,\n trackingProps,\n upsellInlineNotice,\n } = this.props;\n const { type } = item;\n const { isFetchingJustificationReasons, isInviteSectionExpanded, justificationReasons } = this.state;\n const { inviteCollabsEmailTracking, modalTracking } = trackingProps;\n const contactsFieldDisabledTooltip =\n type === ITEM_TYPE_WEBLINK ? (\n <FormattedMessage {...messages.inviteDisabledWeblinkTooltip} />\n ) : (\n <FormattedMessage {...messages.inviteDisabledTooltip} />\n );\n const inlineNotice = sendInvitesError\n ? {\n type: 'error',\n content: sendInvitesError,\n }\n : {\n type: 'warning',\n content: collaborationRestrictionWarning,\n };\n const avatars = this.renderCollaboratorAvatars();\n const { ftuxConfirmButtonProps } = modalTracking;\n const ftuxTooltipText = (\n <div>\n <h4 className=\"ftux-tooltip-title\">\n <FormattedMessage {...messages.ftuxNewUSMUserTitle} />\n </h4>\n <p className=\"ftux-tooltip-body\">\n <FormattedMessage {...messages.ftuxNewUSMUserBody} />{' '}\n <Link className=\"ftux-tooltip-link\" href={SHARED_LINKS_COMMUNITY_URL} target=\"_blank\">\n <FormattedMessage {...messages.ftuxLinkText} />\n </Link>\n </p>\n <div className=\"ftux-tooltip-controls\">\n <Button className=\"ftux-tooltip-button\" onClick={handleFtuxCloseClick} {...ftuxConfirmButtonProps}>\n <FormattedMessage {...messages.ftuxConfirmLabel} />\n </Button>\n </div>\n </div>\n );\n const ftuxTooltipProps = {\n className: 'usm-ftux-tooltip',\n // don't want ftux tooltip to show if the recommended sharing tooltip callout is showing\n isShown: !recommendedSharingTooltipCalloutName && shouldRenderFTUXTooltip && showCalloutForUser,\n position: 'middle-left',\n showCloseButton: true,\n text: ftuxTooltipText,\n theme: 'callout',\n };\n const showUpsellInlineNotice = !!upsellInlineNotice;\n\n return (\n <>\n <Tooltip {...ftuxTooltipProps}>\n <div className=\"invite-collaborator-container\" data-testid=\"invite-collaborator-container\">\n <EmailForm\n config={config}\n contactLimit={contactLimit}\n collabRestrictionType={collabRestrictionType}\n contactsFieldAvatars={avatars}\n contactsFieldDisabledTooltip={contactsFieldDisabledTooltip}\n contactsFieldLabel={<FormattedMessage {...messages.inviteFieldLabel} />}\n getContacts={getCollaboratorContacts}\n getContactAvatarUrl={getContactAvatarUrl}\n inlineNotice={inlineNotice}\n isContactsFieldEnabled={canInvite}\n isExpanded={isInviteSectionExpanded}\n isFetchingJustificationReasons={isFetchingJustificationReasons}\n isExternalUserSelected={this.hasExternalContact(INVITE_COLLABS_CONTACTS_TYPE)}\n isRestrictionJustificationEnabled={this.shouldRequireCollabJustification()}\n justificationReasons={justificationReasons}\n onContactInput={this.openInviteCollaborators}\n onPillCreate={this.handleInviteCollabPillCreate}\n onRequestClose={this.closeInviteCollaborators}\n onSubmit={this.handleSendInvites}\n openInviteCollaboratorsSection={this.openInviteCollaboratorsSection}\n recommendedSharingTooltipCalloutName={recommendedSharingTooltipCalloutName}\n restrictedEmails={restrictedCollabEmails}\n restrictedGroups={restrictedGroups}\n showEnterEmailsCallout={showEnterEmailsCallout}\n submitting={submitting}\n selectedContacts={this.state.inviteCollabsContacts}\n suggestedCollaborators={suggestedCollaborators}\n updateSelectedContacts={this.updateInviteCollabsContacts}\n {...inviteCollabsEmailTracking}\n >\n {this.renderInviteePermissionsDropdown()}\n {showUpgradeOptions &&\n !showUpgradeInlineNotice &&\n !showUpsellInlineNotice &&\n this.renderUpgradeLinkDescription()}\n </EmailForm>\n </div>\n </Tooltip>\n </>\n );\n }\n\n renderCollaboratorAvatars() {\n const { collaboratorsList, canInvite, currentUserID, item, trackingProps } = this.props;\n const { modalTracking } = trackingProps;\n let avatarsContent = null;\n\n if (collaboratorsList) {\n const { collaborators } = collaboratorsList;\n const { hideCollaborators = true } = item;\n const canShowCollaboratorAvatars = hideCollaborators ? canInvite : true;\n\n // filter out the current user by comparing to the ItemCollabRecord ID field\n avatarsContent = canShowCollaboratorAvatars && (\n <CollaboratorAvatars\n collaborators={collaborators.filter(collaborator => String(collaborator.userID) !== currentUserID)}\n onClick={this.showCollaboratorList}\n containerAttributes={modalTracking.collaboratorAvatarsProps}\n />\n );\n }\n\n return avatarsContent;\n }\n\n renderCollaboratorMessage(resinTarget: string) {\n const { openUpgradePlanModal = () => {} } = this.props;\n return (\n <>\n <FormattedMessage\n values={{\n collaboratorAccess: (\n <Link\n className=\"upgrade-link\"\n href=\"https://support.box.com/hc/en-us/articles/360044196413-Understanding-Collaborator-Permission-Levels\"\n target=\"_blank\"\n >\n <FormattedMessage {...messages.collabAccess} />\n </Link>\n ),\n upgradeLink: (\n <PlainButton\n className=\"upgrade-link\"\n data-resin-target={resinTarget}\n onClick={openUpgradePlanModal}\n type=\"button\"\n >\n <FormattedMessage {...messages.upgradeLink} />\n </PlainButton>\n ),\n }}\n {...messages.setLevelOfCollabAccess}\n />\n </>\n );\n }\n\n renderUpgradeLinkDescription() {\n const { openUpgradePlanModal = () => {}, trackingProps = {} } = this.props;\n const { inviteCollabsEmailTracking = {} } = trackingProps;\n const { upgradeLinkProps = {} } = inviteCollabsEmailTracking;\n\n return (\n <div className=\"upgrade-description\">\n <UpgradeBadge />\n <FormattedMessage\n values={{\n upgradeGetMoreAccessControlsLink: (\n <PlainButton\n className=\"upgrade-link\"\n onClick={openUpgradePlanModal}\n type=\"button\"\n {...upgradeLinkProps}\n >\n <FormattedMessage {...messages.upgradeGetMoreAccessControlsLink} />\n </PlainButton>\n ),\n }}\n {...messages.upgradeGetMoreAccessControlsDescription}\n />\n </div>\n );\n }\n\n renderUpgradeInlineNotice() {\n return (\n <InlineNotice title={<FormattedMessage {...messages.upgradeInlineNoticeTitle} />} type=\"info\">\n {this.renderCollaboratorMessage('external_collab_top_message_upgrade_cta')}\n </InlineNotice>\n );\n }\n\n renderInviteePermissionsDropdown() {\n const { inviteePermissions, item, submitting, canInvite, trackingProps } = this.props;\n const { type } = item;\n const { inviteCollabTracking } = trackingProps;\n\n return (\n inviteePermissions && (\n <InviteePermissionsMenu\n disabled={!canInvite || submitting}\n inviteePermissionsButtonProps={inviteCollabTracking.inviteePermissionsButtonProps}\n inviteePermissionLevel={this.state.inviteePermissionLevel}\n inviteePermissions={inviteePermissions}\n changeInviteePermissionLevel={this.handleInviteePermissionChange}\n itemType={type}\n />\n )\n );\n }\n\n renderCollaboratorList() {\n const { item, collaboratorsList, trackingProps } = this.props;\n const { name, type } = item;\n const { collaboratorListTracking } = trackingProps;\n let listContent = null;\n\n if (collaboratorsList) {\n const { collaborators } = collaboratorsList;\n\n listContent = (\n <CollaboratorList\n itemName={name}\n itemType={type}\n onDoneClick={this.closeCollaboratorList}\n item={item}\n collaborators={collaborators}\n trackingProps={collaboratorListTracking}\n />\n );\n }\n\n return listContent;\n }\n\n render() {\n // Shared link section props\n const {\n allShareRestrictionWarning,\n changeSharedLinkAccessLevel,\n changeSharedLinkPermissionLevel,\n config,\n createSharedLinkOnLoad,\n displayInModal,\n focusSharedLinkOnLoad,\n getSharedLinkContacts,\n getContactAvatarUrl,\n intl,\n isAdvancedContentInsightsChecked,\n isAllowEditSharedLinkForFileEnabled,\n isFetching,\n item,\n onAddLink,\n onAdvancedContentInsightsToggle,\n onCopyError,\n onCopyInit,\n onCopySuccess,\n onDismissTooltip = () => {},\n onSettingsClick,\n sendSharedLinkError,\n sharedLink,\n sharedLinkEditTagTargetingApi,\n sharedLinkEditTooltipTargetingApi,\n showEnterEmailsCallout = false,\n showSharedLinkSettingsCallout = false,\n showUpgradeInlineNotice = false,\n showUpgradeOptions,\n submitting,\n tooltips = {},\n trackingProps,\n upsellInlineNotice = null,\n } = this.props;\n const { sharedLinkTracking, sharedLinkEmailTracking } = trackingProps;\n const { isEmailLinkSectionExpanded, isInviteSectionExpanded, showCollaboratorList } = this.state;\n\n const hasExpandedSections = isEmailLinkSectionExpanded || isInviteSectionExpanded || showCollaboratorList;\n\n const showContentInsightsToggle =\n onAdvancedContentInsightsToggle && !hasExpandedSections && item?.type === ITEM_TYPE_FILE;\n\n return (\n <div className={displayInModal ? '' : 'be bdl-UnifiedShareForm'}>\n <LoadingIndicatorWrapper isLoading={isFetching} hideContent>\n {!hasExpandedSections && allShareRestrictionWarning}\n\n {!!upsellInlineNotice && <div className=\"upsell-inline-notice\">{upsellInlineNotice}</div>}\n\n {showUpgradeOptions && showUpgradeInlineNotice && this.renderUpgradeInlineNotice()}\n\n {!isEmailLinkSectionExpanded && !showCollaboratorList && this.renderInviteSection()}\n\n {!hasExpandedSections && (\n <SharedLinkSection\n addSharedLink={onAddLink}\n autofocusSharedLink={this.shouldAutoFocusSharedLink()}\n autoCreateSharedLink={createSharedLinkOnLoad}\n config={config}\n triggerCopyOnLoad={createSharedLinkOnLoad && focusSharedLinkOnLoad}\n changeSharedLinkAccessLevel={changeSharedLinkAccessLevel}\n changeSharedLinkPermissionLevel={changeSharedLinkPermissionLevel}\n intl={intl}\n isAllowEditSharedLinkForFileEnabled={isAllowEditSharedLinkForFileEnabled}\n item={item}\n itemType={item.type}\n onDismissTooltip={onDismissTooltip}\n onEmailSharedLinkClick={this.openEmailSharedLinkForm}\n onSettingsClick={onSettingsClick}\n onToggleSharedLink={this.onToggleSharedLink}\n onCopyInit={onCopyInit}\n onCopySuccess={onCopySuccess}\n onCopyError={onCopyError}\n sharedLink={sharedLink}\n sharedLinkEditTagTargetingApi={sharedLinkEditTagTargetingApi}\n sharedLinkEditTooltipTargetingApi={sharedLinkEditTooltipTargetingApi}\n showSharedLinkSettingsCallout={showSharedLinkSettingsCallout}\n submitting={submitting || isFetching}\n trackingProps={sharedLinkTracking}\n tooltips={tooltips}\n />\n )}\n\n {showContentInsightsToggle && (\n <>\n <hr className=\"bdl-UnifiedShareForm-separator\" />\n <div className=\"bdl-UnifiedShareForm-row\">\n <AdvancedContentInsightsToggle\n isChecked={isAdvancedContentInsightsChecked}\n isDisabled={submitting || isFetching}\n onChange={onAdvancedContentInsightsToggle}\n />\n </div>\n </>\n )}\n\n {isEmailLinkSectionExpanded && !showCollaboratorList && (\n <EmailForm\n contactsFieldLabel={<FormattedMessage {...messages.sendSharedLinkFieldLabel} />}\n getContactAvatarUrl={getContactAvatarUrl}\n getContacts={getSharedLinkContacts}\n inlineNotice={{\n type: 'error',\n content: sendSharedLinkError,\n }}\n isContactsFieldEnabled\n isExpanded\n isExternalUserSelected={this.hasExternalContact(EMAIL_SHARED_LINK_CONTACTS_TYPE)}\n onPillCreate={this.handleEmailSharedLinkPillCreate}\n onRequestClose={this.closeEmailSharedLinkForm}\n onSubmit={this.handleSendSharedLink}\n showEnterEmailsCallout={showEnterEmailsCallout}\n submitting={submitting}\n selectedContacts={this.state.emailSharedLinkContacts}\n updateSelectedContacts={this.updateEmailSharedLinkContacts}\n {...sharedLinkEmailTracking}\n />\n )}\n {showCollaboratorList && this.renderCollaboratorList()}\n </LoadingIndicatorWrapper>\n </div>\n );\n }\n}\n\nexport { UnifiedShareForm as UnifiedShareFormBase };\nexport default injectIntl(UnifiedShareForm);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"UnifiedShareForm.js","names":["React","isEmpty","isEqual","FormattedMessage","injectIntl","LoadingIndicatorWrapper","Link","Button","UpgradeBadge","InlineNotice","PlainButton","ITEM_TYPE_FILE","ITEM_TYPE_WEBLINK","Tooltip","CollaboratorAvatars","CollaboratorList","AdvancedContentInsightsToggle","InviteePermissionsMenu","messages","SharedLinkSection","EmailForm","getDefaultPermissionLevel","hasRestrictedContacts","mergeContacts","JUSTIFICATION_CHECKPOINT_EXTERNAL_COLLAB","SHARED_LINKS_COMMUNITY_URL","INVITE_COLLABS_CONTACTS_TYPE","EMAIL_SHARED_LINK_CONTACTS_TYPE","UnifiedShareForm","Component","constructor","props","_defineProperty","item","checkpoint","justificationReasons","state","getJustificationReasons","hasJustificationReasons","length","Promise","resolve","setState","isFetchingJustificationReasons","typedID","then","classificationLabelId","options","map","id","title","displayText","value","finally","inviteCollabsContacts","isCollabRestrictionJustificationAllowed","restrictedCollabEmails","restrictedGroups","hasRestrictedCollabs","pills","onPillCreate","event","target","handleFtuxCloseClick","onAddLink","openConfirmModal","shouldRenderFTUXTooltip","trackingProps","sharedLinkTracking","onToggleLink","type","checked","onCollaboratorAvatarsClick","showCollaboratorList","data","inviteePermissions","sendInvites","inviteCollabsEmailTracking","onSendClick","inviteePermissionLevel","defaultPermissionLevel","selectedPermissionLevel","emails","groupIDs","justificationReason","message","restrictedEmails","params","join","emailMessage","permission","numsOfInvitees","numOfInviteeGroups","hasJustificationReason","hasRestrictedInvitees","shouldSubmitJustificationReason","_objectSpread","sendSharedLink","sharedLink","sharedLinkEmailTracking","permissionLevel","numsOfRecipients","numOfRecipientGroups","inviteCollabTracking","onInviteePermissionChange","selectOptionPills","filter","pill","getContactsByEmail","contacts","prevState","emailSharedLinkContacts","isInviteSectionExpanded","onEnterInviteCollabs","isEmailLinkSectionExpanded","some","contact","isExternalUser","currentInviteCollabsContacts","newInviteCollabsContacts","hasRestrictedCollabsAfterUpdate","onRemoveAllRestrictedCollabs","setUpdatedContacts","isRemovingAllRestrictedCollabs","focusSharedLinkOnLoad","sharedLinkLoaded","createSharedLinkOnLoad","isNewSharedLink","initiallySelectedContacts","componentDidUpdate","prevProps","prevRestrictedGroups","prevRestrictedCollabEmails","prevIsCollabRestrictionJustificationAllowed","didCollabRestrictionsChange","shouldRequireCollabJustification","fetchJustificationReasons","renderInviteSection","canInvite","collabRestrictionType","collaborationRestrictionWarning","config","contactLimit","getCollaboratorContacts","getContactAvatarUrl","recommendedSharingTooltipCalloutName","sendInvitesError","showEnterEmailsCallout","showCalloutForUser","showUpgradeInlineNotice","showUpgradeOptions","submitting","suggestedCollaborators","upsellInlineNotice","modalTracking","contactsFieldDisabledTooltip","createElement","inviteDisabledWeblinkTooltip","inviteDisabledTooltip","inlineNotice","content","avatars","renderCollaboratorAvatars","ftuxConfirmButtonProps","ftuxTooltipText","className","ftuxNewUSMUserTitle","ftuxNewUSMUserBody","href","ftuxLinkText","_extends","onClick","ftuxConfirmLabel","ftuxTooltipProps","isShown","position","showCloseButton","text","theme","showUpsellInlineNotice","Fragment","contactsFieldAvatars","contactsFieldLabel","inviteFieldLabel","getContacts","isContactsFieldEnabled","isExpanded","isExternalUserSelected","hasExternalContact","isRestrictionJustificationEnabled","onContactInput","openInviteCollaborators","handleInviteCollabPillCreate","onRequestClose","closeInviteCollaborators","onSubmit","handleSendInvites","openInviteCollaboratorsSection","selectedContacts","updateSelectedContacts","updateInviteCollabsContacts","renderInviteePermissionsDropdown","renderUpgradeLinkDescription","collaboratorsList","currentUserID","avatarsContent","collaborators","hideCollaborators","canShowCollaboratorAvatars","collaborator","String","userID","containerAttributes","collaboratorAvatarsProps","renderCollaboratorMessage","resinTarget","openUpgradePlanModal","values","collaboratorAccess","collabAccess","upgradeLink","setLevelOfCollabAccess","upgradeLinkProps","upgradeGetMoreAccessControlsLink","upgradeGetMoreAccessControlsDescription","renderUpgradeInlineNotice","upgradeInlineNoticeTitle","disabled","inviteePermissionsButtonProps","changeInviteePermissionLevel","handleInviteePermissionChange","itemType","renderCollaboratorList","canRemoveCollaborators","onRemoveCollaboratorClick","name","collaboratorListTracking","listContent","itemName","onDoneClick","closeCollaboratorList","render","allShareRestrictionWarning","changeSharedLinkAccessLevel","changeSharedLinkPermissionLevel","displayInModal","getSharedLinkContacts","intl","isAdvancedContentInsightsChecked","isAllowEditSharedLinkForFileEnabled","isFetching","onAdvancedContentInsightsToggle","onCopyError","onCopyInit","onCopySuccess","onDismissTooltip","onSettingsClick","sendSharedLinkError","sharedLinkEditTagTargetingApi","sharedLinkEditTooltipTargetingApi","showSharedLinkSettingsCallout","tooltips","hasExpandedSections","showContentInsightsToggle","isLoading","hideContent","addSharedLink","autofocusSharedLink","shouldAutoFocusSharedLink","autoCreateSharedLink","triggerCopyOnLoad","onEmailSharedLinkClick","openEmailSharedLinkForm","onToggleSharedLink","isChecked","isDisabled","onChange","sendSharedLinkFieldLabel","handleEmailSharedLinkPillCreate","closeEmailSharedLinkForm","handleSendSharedLink","updateEmailSharedLinkContacts","retrictedGroups","removeLinkConfirmModalTracking","removeCollaboratorConfirmModalTracking","UnifiedShareFormBase"],"sources":["../../../src/features/unified-share-modal/UnifiedShareForm.js"],"sourcesContent":["// @flow\n\nimport * as React from 'react';\nimport isEmpty from 'lodash/isEmpty';\nimport isEqual from 'lodash/isEqual';\nimport { FormattedMessage, injectIntl } from 'react-intl';\n\nimport LoadingIndicatorWrapper from '../../components/loading-indicator/LoadingIndicatorWrapper';\nimport { Link } from '../../components/link';\nimport Button from '../../components/button';\nimport { UpgradeBadge } from '../../components/badge';\nimport InlineNotice from '../../components/inline-notice';\nimport PlainButton from '../../components/plain-button';\nimport { ITEM_TYPE_FILE, ITEM_TYPE_WEBLINK } from '../../common/constants';\nimport Tooltip from '../../components/tooltip';\nimport { CollaboratorAvatars, CollaboratorList } from '../collaborator-avatars';\n\nimport AdvancedContentInsightsToggle from '../advanced-content-insights/AdvancedContentInsightsToggle';\nimport InviteePermissionsMenu from './InviteePermissionsMenu';\nimport messages from './messages';\nimport SharedLinkSection from './SharedLinkSection';\nimport EmailForm from './EmailForm';\nimport getDefaultPermissionLevel from './utils/defaultPermissionLevel';\nimport hasRestrictedContacts from './utils/hasRestrictedContacts';\nimport mergeContacts from './utils/mergeContacts';\nimport { JUSTIFICATION_CHECKPOINT_EXTERNAL_COLLAB } from './constants';\n\nimport type {\n contactType as Contact,\n getJustificationReasonsResponseType as GetJustificationReasonsResponse,\n item as Item,\n justificationCheckpointType as JustificationCheckpoint,\n USFProps,\n} from './flowTypes';\nimport type { SelectOptionProp } from '../../components/select-field/props';\n\nconst SHARED_LINKS_COMMUNITY_URL = 'https://community.box.com/t5/Using-Shared-Links/Creating-Shared-Links/ta-p/19523';\nconst INVITE_COLLABS_CONTACTS_TYPE = 'inviteCollabsContacts';\nconst EMAIL_SHARED_LINK_CONTACTS_TYPE = 'emailSharedLinkContacts';\n\ntype State = {\n classificationLabelId: string,\n emailSharedLinkContacts: Array<Contact>,\n inviteCollabsContacts: Array<Contact>,\n inviteePermissionLevel: string,\n isEmailLinkSectionExpanded: boolean,\n isFetchingJustificationReasons: boolean,\n isInviteSectionExpanded: boolean,\n justificationReasons: Array<SelectOptionProp>,\n showCollaboratorList: boolean,\n};\n\nclass UnifiedShareForm extends React.Component<USFProps, State> {\n static defaultProps = {\n displayInModal: true,\n initiallySelectedContacts: [],\n createSharedLinkOnLoad: false,\n focusSharedLinkOnLoad: false,\n restrictedCollabEmails: [],\n retrictedGroups: [],\n trackingProps: {\n collaboratorListTracking: {},\n inviteCollabsEmailTracking: {},\n inviteCollabTracking: {},\n modalTracking: {},\n removeLinkConfirmModalTracking: {},\n sharedLinkEmailTracking: {},\n sharedLinkTracking: {},\n removeCollaboratorConfirmModalTracking: {},\n },\n };\n\n constructor(props: USFProps) {\n super(props);\n\n this.state = {\n classificationLabelId: '',\n emailSharedLinkContacts: [],\n inviteCollabsContacts: props.initiallySelectedContacts,\n inviteePermissionLevel: '',\n isEmailLinkSectionExpanded: false,\n isFetchingJustificationReasons: false,\n isInviteSectionExpanded: !!props.initiallySelectedContacts.length,\n justificationReasons: [],\n showCollaboratorList: false,\n };\n }\n\n componentDidUpdate(prevProps: USFProps) {\n const { isCollabRestrictionJustificationAllowed, item, restrictedCollabEmails, restrictedGroups } = this.props;\n const {\n restrictedGroups: prevRestrictedGroups,\n restrictedCollabEmails: prevRestrictedCollabEmails,\n isCollabRestrictionJustificationAllowed: prevIsCollabRestrictionJustificationAllowed,\n } = prevProps;\n\n const didCollabRestrictionsChange =\n !isEqual(restrictedGroups, prevRestrictedGroups) ||\n !isEqual(restrictedCollabEmails, prevRestrictedCollabEmails) ||\n isCollabRestrictionJustificationAllowed !== prevIsCollabRestrictionJustificationAllowed;\n\n if (didCollabRestrictionsChange && this.shouldRequireCollabJustification()) {\n this.fetchJustificationReasons(item, JUSTIFICATION_CHECKPOINT_EXTERNAL_COLLAB);\n }\n }\n\n fetchJustificationReasons = (item: Item, checkpoint: JustificationCheckpoint) => {\n const { justificationReasons } = this.state;\n const { getJustificationReasons } = this.props;\n const hasJustificationReasons = !!justificationReasons.length;\n\n if (!getJustificationReasons || hasJustificationReasons) {\n return Promise.resolve();\n }\n this.setState({ isFetchingJustificationReasons: true });\n\n return getJustificationReasons(item.typedID, checkpoint)\n .then(({ classificationLabelId, options = [] }: GetJustificationReasonsResponse) => {\n this.setState({\n classificationLabelId,\n justificationReasons: options.map(({ id, title }) => ({\n displayText: title,\n value: id,\n })),\n });\n })\n .finally(() => {\n this.setState({ isFetchingJustificationReasons: false });\n });\n };\n\n shouldRequireCollabJustification = () => {\n const { inviteCollabsContacts } = this.state;\n const { isCollabRestrictionJustificationAllowed, restrictedCollabEmails, restrictedGroups } = this.props;\n\n const hasRestrictedCollabs = hasRestrictedContacts(\n inviteCollabsContacts,\n restrictedCollabEmails,\n restrictedGroups,\n );\n return hasRestrictedCollabs && isCollabRestrictionJustificationAllowed;\n };\n\n handleInviteCollabPillCreate = (pills: Array<SelectOptionProp | Contact>) => {\n return this.onPillCreate(INVITE_COLLABS_CONTACTS_TYPE, pills);\n };\n\n handleEmailSharedLinkPillCreate = (pills: Array<SelectOptionProp | Contact>) => {\n return this.onPillCreate(EMAIL_SHARED_LINK_CONTACTS_TYPE, pills);\n };\n\n onToggleSharedLink = (event: SyntheticInputEvent<HTMLInputElement>) => {\n const { target } = event;\n const { handleFtuxCloseClick, onAddLink, openConfirmModal, shouldRenderFTUXTooltip, trackingProps } =\n this.props;\n const { sharedLinkTracking } = trackingProps;\n const { onToggleLink } = sharedLinkTracking;\n\n if (shouldRenderFTUXTooltip) {\n handleFtuxCloseClick();\n }\n\n if (target.type === 'checkbox') {\n if (target.checked === false) {\n openConfirmModal();\n } else {\n onAddLink();\n }\n\n if (onToggleLink) {\n onToggleLink(target.checked);\n }\n }\n };\n\n showCollaboratorList = () => {\n const { onCollaboratorAvatarsClick } = this.props;\n\n if (onCollaboratorAvatarsClick) {\n onCollaboratorAvatarsClick();\n } else {\n this.setState({ showCollaboratorList: true });\n }\n };\n\n closeCollaboratorList = () => {\n this.setState({ showCollaboratorList: false });\n };\n\n handleSendInvites = (data: Object) => {\n const { inviteePermissions, isCollabRestrictionJustificationAllowed, sendInvites, trackingProps } = this.props;\n const { inviteCollabsEmailTracking } = trackingProps;\n const { onSendClick } = inviteCollabsEmailTracking;\n const { classificationLabelId, inviteePermissionLevel } = this.state;\n const defaultPermissionLevel = getDefaultPermissionLevel(inviteePermissions);\n const selectedPermissionLevel = inviteePermissionLevel || defaultPermissionLevel;\n const { emails, groupIDs, justificationReason, message, restrictedEmails, restrictedGroups } = data;\n\n let params = {\n emails: emails.join(','),\n groupIDs: groupIDs.join(','),\n emailMessage: message,\n permission: selectedPermissionLevel,\n numsOfInvitees: emails.length,\n numOfInviteeGroups: groupIDs.length,\n };\n\n const hasJustificationReason = !!justificationReason;\n const hasRestrictedInvitees = !isEmpty(restrictedEmails) || !isEmpty(restrictedGroups);\n const shouldSubmitJustificationReason =\n hasJustificationReason && hasRestrictedInvitees && isCollabRestrictionJustificationAllowed;\n\n if (shouldSubmitJustificationReason) {\n params = {\n ...params,\n classificationLabelId,\n justificationReason: {\n id: justificationReason.value,\n title: justificationReason.displayText,\n },\n };\n }\n\n if (onSendClick) {\n onSendClick(params);\n }\n\n return sendInvites(params);\n };\n\n handleSendSharedLink = (data: Object) => {\n const { sendSharedLink, sharedLink, trackingProps } = this.props;\n const { sharedLinkEmailTracking } = trackingProps;\n const { permissionLevel } = sharedLink;\n const { onSendClick } = sharedLinkEmailTracking;\n\n const { emails, groupIDs } = data;\n\n if (onSendClick) {\n const params = {\n ...data,\n numsOfRecipients: emails.length,\n numOfRecipientGroups: groupIDs.length,\n permissionLevel,\n };\n onSendClick(params);\n }\n\n return sendSharedLink(data);\n };\n\n // TODO-AH: Change permission level to use the appropriate flow type\n handleInviteePermissionChange = (permissionLevel: string) => {\n const { trackingProps } = this.props;\n const { inviteCollabTracking } = trackingProps;\n const { onInviteePermissionChange } = inviteCollabTracking;\n\n this.setState({ inviteePermissionLevel: permissionLevel });\n\n if (onInviteePermissionChange) {\n onInviteePermissionChange(permissionLevel);\n }\n };\n\n onPillCreate = (type: string, pills: Array<SelectOptionProp | Contact>) => {\n // If this is a dropdown select event, we ignore it\n // $FlowFixMe\n const selectOptionPills = pills.filter(pill => !pill.id);\n if (selectOptionPills.length === 0) {\n return;\n }\n\n const { getContactsByEmail } = this.props;\n\n if (getContactsByEmail) {\n const emails = pills.map(pill => pill.value);\n // $FlowFixMe\n getContactsByEmail({ emails }).then((contacts: Object) => {\n if (type === INVITE_COLLABS_CONTACTS_TYPE) {\n this.setState(prevState => ({\n inviteCollabsContacts: mergeContacts(prevState.inviteCollabsContacts, contacts),\n }));\n } else if (type === EMAIL_SHARED_LINK_CONTACTS_TYPE) {\n this.setState(prevState => ({\n emailSharedLinkContacts: mergeContacts(prevState.emailSharedLinkContacts, contacts),\n }));\n }\n });\n }\n };\n\n openInviteCollaborators = (value: string) => {\n const { handleFtuxCloseClick } = this.props;\n if (this.state.isInviteSectionExpanded) {\n return;\n }\n\n // checking the value because IE seems to trigger onInput immediately\n // on focus of the contacts field\n if (value !== '') {\n handleFtuxCloseClick();\n this.setState(\n {\n isInviteSectionExpanded: true,\n },\n () => {\n const {\n trackingProps: {\n inviteCollabTracking: { onEnterInviteCollabs },\n },\n } = this.props;\n\n if (onEnterInviteCollabs) {\n onEnterInviteCollabs();\n }\n },\n );\n }\n };\n\n openInviteCollaboratorsSection = () => {\n this.setState({\n isInviteSectionExpanded: true,\n });\n };\n\n closeInviteCollaborators = () => {\n this.setState({\n isInviteSectionExpanded: false,\n });\n };\n\n openEmailSharedLinkForm = () => {\n const { handleFtuxCloseClick } = this.props;\n handleFtuxCloseClick();\n this.setState({\n isEmailLinkSectionExpanded: true,\n });\n };\n\n closeEmailSharedLinkForm = () => {\n this.setState({ isEmailLinkSectionExpanded: false });\n };\n\n hasExternalContact = (type: string): boolean => {\n const { inviteCollabsContacts, emailSharedLinkContacts } = this.state;\n if (type === INVITE_COLLABS_CONTACTS_TYPE) {\n return inviteCollabsContacts.some(contact => contact.isExternalUser);\n }\n if (type === EMAIL_SHARED_LINK_CONTACTS_TYPE) {\n return emailSharedLinkContacts.some(contact => contact.isExternalUser);\n }\n return false;\n };\n\n isRemovingAllRestrictedCollabs = (\n currentInviteCollabsContacts: Array<Contact>,\n newInviteCollabsContacts: Array<Contact>,\n ) => {\n const { restrictedCollabEmails, restrictedGroups } = this.props;\n\n const hasRestrictedCollabs = hasRestrictedContacts(\n currentInviteCollabsContacts,\n restrictedCollabEmails,\n restrictedGroups,\n );\n const hasRestrictedCollabsAfterUpdate = hasRestrictedContacts(\n newInviteCollabsContacts,\n restrictedCollabEmails,\n restrictedGroups,\n );\n\n return hasRestrictedCollabs && !hasRestrictedCollabsAfterUpdate;\n };\n\n updateInviteCollabsContacts = (inviteCollabsContacts: Array<Contact>) => {\n const { inviteCollabsContacts: currentInviteCollabsContacts } = this.state;\n const { onRemoveAllRestrictedCollabs, setUpdatedContacts } = this.props;\n\n const isRemovingAllRestrictedCollabs = this.isRemovingAllRestrictedCollabs(\n currentInviteCollabsContacts,\n inviteCollabsContacts,\n );\n\n this.setState({\n inviteCollabsContacts,\n });\n\n if (setUpdatedContacts) {\n setUpdatedContacts(inviteCollabsContacts);\n }\n if (onRemoveAllRestrictedCollabs && isRemovingAllRestrictedCollabs) {\n onRemoveAllRestrictedCollabs();\n }\n };\n\n updateEmailSharedLinkContacts = (emailSharedLinkContacts: Array<Contact>) => {\n this.setState({\n emailSharedLinkContacts,\n });\n };\n\n shouldAutoFocusSharedLink = () => {\n const { focusSharedLinkOnLoad, sharedLink, sharedLinkLoaded, createSharedLinkOnLoad } = this.props;\n\n if (!createSharedLinkOnLoad && !focusSharedLinkOnLoad) {\n return false;\n }\n // if not forcing focus or not a newly added shared link, return false\n if (!(focusSharedLinkOnLoad || sharedLink.isNewSharedLink)) {\n return false;\n }\n // otherwise wait until the link data is loaded before focusing\n if (!sharedLinkLoaded) {\n return false;\n }\n return true;\n };\n\n renderInviteSection() {\n const {\n canInvite,\n collabRestrictionType,\n collaborationRestrictionWarning,\n config,\n contactLimit,\n getCollaboratorContacts,\n getContactAvatarUrl,\n handleFtuxCloseClick,\n item,\n recommendedSharingTooltipCalloutName = null,\n restrictedCollabEmails,\n restrictedGroups,\n sendInvitesError,\n shouldRenderFTUXTooltip,\n showEnterEmailsCallout = false,\n showCalloutForUser = false,\n showUpgradeInlineNotice = false,\n showUpgradeOptions,\n submitting,\n suggestedCollaborators,\n trackingProps,\n upsellInlineNotice,\n } = this.props;\n const { type } = item;\n const { isFetchingJustificationReasons, isInviteSectionExpanded, justificationReasons } = this.state;\n const { inviteCollabsEmailTracking, modalTracking } = trackingProps;\n const contactsFieldDisabledTooltip =\n type === ITEM_TYPE_WEBLINK ? (\n <FormattedMessage {...messages.inviteDisabledWeblinkTooltip} />\n ) : (\n <FormattedMessage {...messages.inviteDisabledTooltip} />\n );\n const inlineNotice = sendInvitesError\n ? {\n type: 'error',\n content: sendInvitesError,\n }\n : {\n type: 'warning',\n content: collaborationRestrictionWarning,\n };\n const avatars = this.renderCollaboratorAvatars();\n const { ftuxConfirmButtonProps } = modalTracking;\n const ftuxTooltipText = (\n <div>\n <h4 className=\"ftux-tooltip-title\">\n <FormattedMessage {...messages.ftuxNewUSMUserTitle} />\n </h4>\n <p className=\"ftux-tooltip-body\">\n <FormattedMessage {...messages.ftuxNewUSMUserBody} />{' '}\n <Link className=\"ftux-tooltip-link\" href={SHARED_LINKS_COMMUNITY_URL} target=\"_blank\">\n <FormattedMessage {...messages.ftuxLinkText} />\n </Link>\n </p>\n <div className=\"ftux-tooltip-controls\">\n <Button className=\"ftux-tooltip-button\" onClick={handleFtuxCloseClick} {...ftuxConfirmButtonProps}>\n <FormattedMessage {...messages.ftuxConfirmLabel} />\n </Button>\n </div>\n </div>\n );\n const ftuxTooltipProps = {\n className: 'usm-ftux-tooltip',\n // don't want ftux tooltip to show if the recommended sharing tooltip callout is showing\n isShown: !recommendedSharingTooltipCalloutName && shouldRenderFTUXTooltip && showCalloutForUser,\n position: 'middle-left',\n showCloseButton: true,\n text: ftuxTooltipText,\n theme: 'callout',\n };\n const showUpsellInlineNotice = !!upsellInlineNotice;\n\n return (\n <>\n <Tooltip {...ftuxTooltipProps}>\n <div className=\"invite-collaborator-container\" data-testid=\"invite-collaborator-container\">\n <EmailForm\n config={config}\n contactLimit={contactLimit}\n collabRestrictionType={collabRestrictionType}\n contactsFieldAvatars={avatars}\n contactsFieldDisabledTooltip={contactsFieldDisabledTooltip}\n contactsFieldLabel={<FormattedMessage {...messages.inviteFieldLabel} />}\n getContacts={getCollaboratorContacts}\n getContactAvatarUrl={getContactAvatarUrl}\n inlineNotice={inlineNotice}\n isContactsFieldEnabled={canInvite}\n isExpanded={isInviteSectionExpanded}\n isFetchingJustificationReasons={isFetchingJustificationReasons}\n isExternalUserSelected={this.hasExternalContact(INVITE_COLLABS_CONTACTS_TYPE)}\n isRestrictionJustificationEnabled={this.shouldRequireCollabJustification()}\n justificationReasons={justificationReasons}\n onContactInput={this.openInviteCollaborators}\n onPillCreate={this.handleInviteCollabPillCreate}\n onRequestClose={this.closeInviteCollaborators}\n onSubmit={this.handleSendInvites}\n openInviteCollaboratorsSection={this.openInviteCollaboratorsSection}\n recommendedSharingTooltipCalloutName={recommendedSharingTooltipCalloutName}\n restrictedEmails={restrictedCollabEmails}\n restrictedGroups={restrictedGroups}\n showEnterEmailsCallout={showEnterEmailsCallout}\n submitting={submitting}\n selectedContacts={this.state.inviteCollabsContacts}\n suggestedCollaborators={suggestedCollaborators}\n updateSelectedContacts={this.updateInviteCollabsContacts}\n {...inviteCollabsEmailTracking}\n >\n {this.renderInviteePermissionsDropdown()}\n {showUpgradeOptions &&\n !showUpgradeInlineNotice &&\n !showUpsellInlineNotice &&\n this.renderUpgradeLinkDescription()}\n </EmailForm>\n </div>\n </Tooltip>\n </>\n );\n }\n\n renderCollaboratorAvatars() {\n const { collaboratorsList, canInvite, currentUserID, item, trackingProps } = this.props;\n const { modalTracking } = trackingProps;\n let avatarsContent = null;\n\n if (collaboratorsList) {\n const { collaborators } = collaboratorsList;\n const { hideCollaborators = true } = item;\n const canShowCollaboratorAvatars = hideCollaborators ? canInvite : true;\n\n // filter out the current user by comparing to the ItemCollabRecord ID field\n avatarsContent = canShowCollaboratorAvatars && (\n <CollaboratorAvatars\n collaborators={collaborators.filter(collaborator => String(collaborator.userID) !== currentUserID)}\n onClick={this.showCollaboratorList}\n containerAttributes={modalTracking.collaboratorAvatarsProps}\n />\n );\n }\n\n return avatarsContent;\n }\n\n renderCollaboratorMessage(resinTarget: string) {\n const { openUpgradePlanModal = () => {} } = this.props;\n return (\n <>\n <FormattedMessage\n values={{\n collaboratorAccess: (\n <Link\n className=\"upgrade-link\"\n href=\"https://support.box.com/hc/en-us/articles/360044196413-Understanding-Collaborator-Permission-Levels\"\n target=\"_blank\"\n >\n <FormattedMessage {...messages.collabAccess} />\n </Link>\n ),\n upgradeLink: (\n <PlainButton\n className=\"upgrade-link\"\n data-resin-target={resinTarget}\n onClick={openUpgradePlanModal}\n type=\"button\"\n >\n <FormattedMessage {...messages.upgradeLink} />\n </PlainButton>\n ),\n }}\n {...messages.setLevelOfCollabAccess}\n />\n </>\n );\n }\n\n renderUpgradeLinkDescription() {\n const { openUpgradePlanModal = () => {}, trackingProps = {} } = this.props;\n const { inviteCollabsEmailTracking = {} } = trackingProps;\n const { upgradeLinkProps = {} } = inviteCollabsEmailTracking;\n\n return (\n <div className=\"upgrade-description\">\n <UpgradeBadge />\n <FormattedMessage\n values={{\n upgradeGetMoreAccessControlsLink: (\n <PlainButton\n className=\"upgrade-link\"\n onClick={openUpgradePlanModal}\n type=\"button\"\n {...upgradeLinkProps}\n >\n <FormattedMessage {...messages.upgradeGetMoreAccessControlsLink} />\n </PlainButton>\n ),\n }}\n {...messages.upgradeGetMoreAccessControlsDescription}\n />\n </div>\n );\n }\n\n renderUpgradeInlineNotice() {\n return (\n <InlineNotice title={<FormattedMessage {...messages.upgradeInlineNoticeTitle} />} type=\"info\">\n {this.renderCollaboratorMessage('external_collab_top_message_upgrade_cta')}\n </InlineNotice>\n );\n }\n\n renderInviteePermissionsDropdown() {\n const { inviteePermissions, item, submitting, canInvite, trackingProps } = this.props;\n const { type } = item;\n const { inviteCollabTracking } = trackingProps;\n\n return (\n inviteePermissions && (\n <InviteePermissionsMenu\n disabled={!canInvite || submitting}\n inviteePermissionsButtonProps={inviteCollabTracking.inviteePermissionsButtonProps}\n inviteePermissionLevel={this.state.inviteePermissionLevel}\n inviteePermissions={inviteePermissions}\n changeInviteePermissionLevel={this.handleInviteePermissionChange}\n itemType={type}\n />\n )\n );\n }\n\n renderCollaboratorList() {\n const { item, collaboratorsList, trackingProps, canRemoveCollaborators, onRemoveCollaboratorClick } =\n this.props;\n const { name, type } = item;\n const { collaboratorListTracking } = trackingProps;\n let listContent = null;\n\n if (collaboratorsList) {\n const { collaborators } = collaboratorsList;\n\n listContent = (\n <CollaboratorList\n itemName={name}\n itemType={type}\n onDoneClick={this.closeCollaboratorList}\n item={item}\n collaborators={collaborators}\n trackingProps={collaboratorListTracking}\n canRemoveCollaborators={canRemoveCollaborators}\n onRemoveCollaboratorClick={onRemoveCollaboratorClick}\n />\n );\n }\n\n return listContent;\n }\n\n render() {\n // Shared link section props\n const {\n allShareRestrictionWarning,\n changeSharedLinkAccessLevel,\n changeSharedLinkPermissionLevel,\n config,\n createSharedLinkOnLoad,\n displayInModal,\n focusSharedLinkOnLoad,\n getSharedLinkContacts,\n getContactAvatarUrl,\n intl,\n isAdvancedContentInsightsChecked,\n isAllowEditSharedLinkForFileEnabled,\n isFetching,\n item,\n onAddLink,\n onAdvancedContentInsightsToggle,\n onCopyError,\n onCopyInit,\n onCopySuccess,\n onDismissTooltip = () => {},\n onSettingsClick,\n sendSharedLinkError,\n sharedLink,\n sharedLinkEditTagTargetingApi,\n sharedLinkEditTooltipTargetingApi,\n showEnterEmailsCallout = false,\n showSharedLinkSettingsCallout = false,\n showUpgradeInlineNotice = false,\n showUpgradeOptions,\n submitting,\n tooltips = {},\n trackingProps,\n upsellInlineNotice = null,\n } = this.props;\n const { sharedLinkTracking, sharedLinkEmailTracking } = trackingProps;\n const { isEmailLinkSectionExpanded, isInviteSectionExpanded, showCollaboratorList } = this.state;\n\n const hasExpandedSections = isEmailLinkSectionExpanded || isInviteSectionExpanded || showCollaboratorList;\n\n const showContentInsightsToggle =\n onAdvancedContentInsightsToggle && !hasExpandedSections && item?.type === ITEM_TYPE_FILE;\n\n return (\n <div className={displayInModal ? '' : 'be bdl-UnifiedShareForm'}>\n <LoadingIndicatorWrapper isLoading={isFetching} hideContent>\n {!hasExpandedSections && allShareRestrictionWarning}\n\n {!!upsellInlineNotice && <div className=\"upsell-inline-notice\">{upsellInlineNotice}</div>}\n\n {showUpgradeOptions && showUpgradeInlineNotice && this.renderUpgradeInlineNotice()}\n\n {!isEmailLinkSectionExpanded && !showCollaboratorList && this.renderInviteSection()}\n\n {!hasExpandedSections && (\n <SharedLinkSection\n addSharedLink={onAddLink}\n autofocusSharedLink={this.shouldAutoFocusSharedLink()}\n autoCreateSharedLink={createSharedLinkOnLoad}\n config={config}\n triggerCopyOnLoad={createSharedLinkOnLoad && focusSharedLinkOnLoad}\n changeSharedLinkAccessLevel={changeSharedLinkAccessLevel}\n changeSharedLinkPermissionLevel={changeSharedLinkPermissionLevel}\n intl={intl}\n isAllowEditSharedLinkForFileEnabled={isAllowEditSharedLinkForFileEnabled}\n item={item}\n itemType={item.type}\n onDismissTooltip={onDismissTooltip}\n onEmailSharedLinkClick={this.openEmailSharedLinkForm}\n onSettingsClick={onSettingsClick}\n onToggleSharedLink={this.onToggleSharedLink}\n onCopyInit={onCopyInit}\n onCopySuccess={onCopySuccess}\n onCopyError={onCopyError}\n sharedLink={sharedLink}\n sharedLinkEditTagTargetingApi={sharedLinkEditTagTargetingApi}\n sharedLinkEditTooltipTargetingApi={sharedLinkEditTooltipTargetingApi}\n showSharedLinkSettingsCallout={showSharedLinkSettingsCallout}\n submitting={submitting || isFetching}\n trackingProps={sharedLinkTracking}\n tooltips={tooltips}\n />\n )}\n\n {showContentInsightsToggle && (\n <>\n <hr className=\"bdl-UnifiedShareForm-separator\" />\n <div className=\"bdl-UnifiedShareForm-row\">\n <AdvancedContentInsightsToggle\n isChecked={isAdvancedContentInsightsChecked}\n isDisabled={submitting || isFetching}\n onChange={onAdvancedContentInsightsToggle}\n />\n </div>\n </>\n )}\n\n {isEmailLinkSectionExpanded && !showCollaboratorList && (\n <EmailForm\n contactsFieldLabel={<FormattedMessage {...messages.sendSharedLinkFieldLabel} />}\n getContactAvatarUrl={getContactAvatarUrl}\n getContacts={getSharedLinkContacts}\n inlineNotice={{\n type: 'error',\n content: sendSharedLinkError,\n }}\n isContactsFieldEnabled\n isExpanded\n isExternalUserSelected={this.hasExternalContact(EMAIL_SHARED_LINK_CONTACTS_TYPE)}\n onPillCreate={this.handleEmailSharedLinkPillCreate}\n onRequestClose={this.closeEmailSharedLinkForm}\n onSubmit={this.handleSendSharedLink}\n showEnterEmailsCallout={showEnterEmailsCallout}\n submitting={submitting}\n selectedContacts={this.state.emailSharedLinkContacts}\n updateSelectedContacts={this.updateEmailSharedLinkContacts}\n {...sharedLinkEmailTracking}\n />\n )}\n {showCollaboratorList && this.renderCollaboratorList()}\n </LoadingIndicatorWrapper>\n </div>\n );\n }\n}\n\nexport { UnifiedShareForm as UnifiedShareFormBase };\nexport default injectIntl(UnifiedShareForm);\n"],"mappings":";;;;;;AAEA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,OAAO,MAAM,gBAAgB;AACpC,OAAOC,OAAO,MAAM,gBAAgB;AACpC,SAASC,gBAAgB,EAAEC,UAAU,QAAQ,YAAY;AAEzD,OAAOC,uBAAuB,MAAM,4DAA4D;AAChG,SAASC,IAAI,QAAQ,uBAAuB;AAC5C,OAAOC,MAAM,MAAM,yBAAyB;AAC5C,SAASC,YAAY,QAAQ,wBAAwB;AACrD,OAAOC,YAAY,MAAM,gCAAgC;AACzD,OAAOC,WAAW,MAAM,+BAA+B;AACvD,SAASC,cAAc,EAAEC,iBAAiB,QAAQ,wBAAwB;AAC1E,OAAOC,OAAO,MAAM,0BAA0B;AAC9C,SAASC,mBAAmB,EAAEC,gBAAgB,QAAQ,yBAAyB;AAE/E,OAAOC,6BAA6B,MAAM,4DAA4D;AACtG,OAAOC,sBAAsB,MAAM,0BAA0B;AAC7D,OAAOC,QAAQ,MAAM,YAAY;AACjC,OAAOC,iBAAiB,MAAM,qBAAqB;AACnD,OAAOC,SAAS,MAAM,aAAa;AACnC,OAAOC,yBAAyB,MAAM,gCAAgC;AACtE,OAAOC,qBAAqB,MAAM,+BAA+B;AACjE,OAAOC,aAAa,MAAM,uBAAuB;AACjD,SAASC,wCAAwC,QAAQ,aAAa;AAWtE,MAAMC,0BAA0B,GAAG,kFAAkF;AACrH,MAAMC,4BAA4B,GAAG,uBAAuB;AAC5D,MAAMC,+BAA+B,GAAG,yBAAyB;AAcjE,MAAMC,gBAAgB,SAAS5B,KAAK,CAAC6B,SAAS,CAAkB;EAoB5DC,WAAWA,CAACC,KAAe,EAAE;IACzB,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA,oCAiCW,CAACC,IAAU,EAAEC,UAAmC,KAAK;MAC7E,MAAM;QAAEC;MAAqB,CAAC,GAAG,IAAI,CAACC,KAAK;MAC3C,MAAM;QAAEC;MAAwB,CAAC,GAAG,IAAI,CAACN,KAAK;MAC9C,MAAMO,uBAAuB,GAAG,CAAC,CAACH,oBAAoB,CAACI,MAAM;MAE7D,IAAI,CAACF,uBAAuB,IAAIC,uBAAuB,EAAE;QACrD,OAAOE,OAAO,CAACC,OAAO,CAAC,CAAC;MAC5B;MACA,IAAI,CAACC,QAAQ,CAAC;QAAEC,8BAA8B,EAAE;MAAK,CAAC,CAAC;MAEvD,OAAON,uBAAuB,CAACJ,IAAI,CAACW,OAAO,EAAEV,UAAU,CAAC,CACnDW,IAAI,CAAC,CAAC;QAAEC,qBAAqB;QAAEC,OAAO,GAAG;MAAoC,CAAC,KAAK;QAChF,IAAI,CAACL,QAAQ,CAAC;UACVI,qBAAqB;UACrBX,oBAAoB,EAAEY,OAAO,CAACC,GAAG,CAAC,CAAC;YAAEC,EAAE;YAAEC;UAAM,CAAC,MAAM;YAClDC,WAAW,EAAED,KAAK;YAClBE,KAAK,EAAEH;UACX,CAAC,CAAC;QACN,CAAC,CAAC;MACN,CAAC,CAAC,CACDI,OAAO,CAAC,MAAM;QACX,IAAI,CAACX,QAAQ,CAAC;UAAEC,8BAA8B,EAAE;QAAM,CAAC,CAAC;MAC5D,CAAC,CAAC;IACV,CAAC;IAAAX,eAAA,2CAEkC,MAAM;MACrC,MAAM;QAAEsB;MAAsB,CAAC,GAAG,IAAI,CAAClB,KAAK;MAC5C,MAAM;QAAEmB,uCAAuC;QAAEC,sBAAsB;QAAEC;MAAiB,CAAC,GAAG,IAAI,CAAC1B,KAAK;MAExG,MAAM2B,oBAAoB,GAAGpC,qBAAqB,CAC9CgC,qBAAqB,EACrBE,sBAAsB,EACtBC,gBACJ,CAAC;MACD,OAAOC,oBAAoB,IAAIH,uCAAuC;IAC1E,CAAC;IAAAvB,eAAA,uCAE+B2B,KAAwC,IAAK;MACzE,OAAO,IAAI,CAACC,YAAY,CAAClC,4BAA4B,EAAEiC,KAAK,CAAC;IACjE,CAAC;IAAA3B,eAAA,0CAEkC2B,KAAwC,IAAK;MAC5E,OAAO,IAAI,CAACC,YAAY,CAACjC,+BAA+B,EAAEgC,KAAK,CAAC;IACpE,CAAC;IAAA3B,eAAA,6BAEqB6B,KAA4C,IAAK;MACnE,MAAM;QAAEC;MAAO,CAAC,GAAGD,KAAK;MACxB,MAAM;QAAEE,oBAAoB;QAAEC,SAAS;QAAEC,gBAAgB;QAAEC,uBAAuB;QAAEC;MAAc,CAAC,GAC/F,IAAI,CAACpC,KAAK;MACd,MAAM;QAAEqC;MAAmB,CAAC,GAAGD,aAAa;MAC5C,MAAM;QAAEE;MAAa,CAAC,GAAGD,kBAAkB;MAE3C,IAAIF,uBAAuB,EAAE;QACzBH,oBAAoB,CAAC,CAAC;MAC1B;MAEA,IAAID,MAAM,CAACQ,IAAI,KAAK,UAAU,EAAE;QAC5B,IAAIR,MAAM,CAACS,OAAO,KAAK,KAAK,EAAE;UAC1BN,gBAAgB,CAAC,CAAC;QACtB,CAAC,MAAM;UACHD,SAAS,CAAC,CAAC;QACf;QAEA,IAAIK,YAAY,EAAE;UACdA,YAAY,CAACP,MAAM,CAACS,OAAO,CAAC;QAChC;MACJ;IACJ,CAAC;IAAAvC,eAAA,+BAEsB,MAAM;MACzB,MAAM;QAAEwC;MAA2B,CAAC,GAAG,IAAI,CAACzC,KAAK;MAEjD,IAAIyC,0BAA0B,EAAE;QAC5BA,0BAA0B,CAAC,CAAC;MAChC,CAAC,MAAM;QACH,IAAI,CAAC9B,QAAQ,CAAC;UAAE+B,oBAAoB,EAAE;QAAK,CAAC,CAAC;MACjD;IACJ,CAAC;IAAAzC,eAAA,gCAEuB,MAAM;MAC1B,IAAI,CAACU,QAAQ,CAAC;QAAE+B,oBAAoB,EAAE;MAAM,CAAC,CAAC;IAClD,CAAC;IAAAzC,eAAA,4BAEoB0C,IAAY,IAAK;MAClC,MAAM;QAAEC,kBAAkB;QAAEpB,uCAAuC;QAAEqB,WAAW;QAAET;MAAc,CAAC,GAAG,IAAI,CAACpC,KAAK;MAC9G,MAAM;QAAE8C;MAA2B,CAAC,GAAGV,aAAa;MACpD,MAAM;QAAEW;MAAY,CAAC,GAAGD,0BAA0B;MAClD,MAAM;QAAE/B,qBAAqB;QAAEiC;MAAuB,CAAC,GAAG,IAAI,CAAC3C,KAAK;MACpE,MAAM4C,sBAAsB,GAAG3D,yBAAyB,CAACsD,kBAAkB,CAAC;MAC5E,MAAMM,uBAAuB,GAAGF,sBAAsB,IAAIC,sBAAsB;MAChF,MAAM;QAAEE,MAAM;QAAEC,QAAQ;QAAEC,mBAAmB;QAAEC,OAAO;QAAEC,gBAAgB;QAAE7B;MAAiB,CAAC,GAAGiB,IAAI;MAEnG,IAAIa,MAAM,GAAG;QACTL,MAAM,EAAEA,MAAM,CAACM,IAAI,CAAC,GAAG,CAAC;QACxBL,QAAQ,EAAEA,QAAQ,CAACK,IAAI,CAAC,GAAG,CAAC;QAC5BC,YAAY,EAAEJ,OAAO;QACrBK,UAAU,EAAET,uBAAuB;QACnCU,cAAc,EAAET,MAAM,CAAC3C,MAAM;QAC7BqD,kBAAkB,EAAET,QAAQ,CAAC5C;MACjC,CAAC;MAED,MAAMsD,sBAAsB,GAAG,CAAC,CAACT,mBAAmB;MACpD,MAAMU,qBAAqB,GAAG,CAAC7F,OAAO,CAACqF,gBAAgB,CAAC,IAAI,CAACrF,OAAO,CAACwD,gBAAgB,CAAC;MACtF,MAAMsC,+BAA+B,GACjCF,sBAAsB,IAAIC,qBAAqB,IAAIvC,uCAAuC;MAE9F,IAAIwC,+BAA+B,EAAE;QACjCR,MAAM,GAAAS,aAAA,CAAAA,aAAA,KACCT,MAAM;UACTzC,qBAAqB;UACrBsC,mBAAmB,EAAE;YACjBnC,EAAE,EAAEmC,mBAAmB,CAAChC,KAAK;YAC7BF,KAAK,EAAEkC,mBAAmB,CAACjC;UAC/B;QAAC,EACJ;MACL;MAEA,IAAI2B,WAAW,EAAE;QACbA,WAAW,CAACS,MAAM,CAAC;MACvB;MAEA,OAAOX,WAAW,CAACW,MAAM,CAAC;IAC9B,CAAC;IAAAvD,eAAA,+BAEuB0C,IAAY,IAAK;MACrC,MAAM;QAAEuB,cAAc;QAAEC,UAAU;QAAE/B;MAAc,CAAC,GAAG,IAAI,CAACpC,KAAK;MAChE,MAAM;QAAEoE;MAAwB,CAAC,GAAGhC,aAAa;MACjD,MAAM;QAAEiC;MAAgB,CAAC,GAAGF,UAAU;MACtC,MAAM;QAAEpB;MAAY,CAAC,GAAGqB,uBAAuB;MAE/C,MAAM;QAAEjB,MAAM;QAAEC;MAAS,CAAC,GAAGT,IAAI;MAEjC,IAAII,WAAW,EAAE;QACb,MAAMS,MAAM,GAAAS,aAAA,CAAAA,aAAA,KACLtB,IAAI;UACP2B,gBAAgB,EAAEnB,MAAM,CAAC3C,MAAM;UAC/B+D,oBAAoB,EAAEnB,QAAQ,CAAC5C,MAAM;UACrC6D;QAAe,EAClB;QACDtB,WAAW,CAACS,MAAM,CAAC;MACvB;MAEA,OAAOU,cAAc,CAACvB,IAAI,CAAC;IAC/B,CAAC;IAED;IAAA1C,eAAA,wCACiCoE,eAAuB,IAAK;MACzD,MAAM;QAAEjC;MAAc,CAAC,GAAG,IAAI,CAACpC,KAAK;MACpC,MAAM;QAAEwE;MAAqB,CAAC,GAAGpC,aAAa;MAC9C,MAAM;QAAEqC;MAA0B,CAAC,GAAGD,oBAAoB;MAE1D,IAAI,CAAC7D,QAAQ,CAAC;QAAEqC,sBAAsB,EAAEqB;MAAgB,CAAC,CAAC;MAE1D,IAAII,yBAAyB,EAAE;QAC3BA,yBAAyB,CAACJ,eAAe,CAAC;MAC9C;IACJ,CAAC;IAAApE,eAAA,uBAEc,CAACsC,IAAY,EAAEX,KAAwC,KAAK;MACvE;MACA;MACA,MAAM8C,iBAAiB,GAAG9C,KAAK,CAAC+C,MAAM,CAACC,IAAI,IAAI,CAACA,IAAI,CAAC1D,EAAE,CAAC;MACxD,IAAIwD,iBAAiB,CAAClE,MAAM,KAAK,CAAC,EAAE;QAChC;MACJ;MAEA,MAAM;QAAEqE;MAAmB,CAAC,GAAG,IAAI,CAAC7E,KAAK;MAEzC,IAAI6E,kBAAkB,EAAE;QACpB,MAAM1B,MAAM,GAAGvB,KAAK,CAACX,GAAG,CAAC2D,IAAI,IAAIA,IAAI,CAACvD,KAAK,CAAC;QAC5C;QACAwD,kBAAkB,CAAC;UAAE1B;QAAO,CAAC,CAAC,CAACrC,IAAI,CAAEgE,QAAgB,IAAK;UACtD,IAAIvC,IAAI,KAAK5C,4BAA4B,EAAE;YACvC,IAAI,CAACgB,QAAQ,CAACoE,SAAS,KAAK;cACxBxD,qBAAqB,EAAE/B,aAAa,CAACuF,SAAS,CAACxD,qBAAqB,EAAEuD,QAAQ;YAClF,CAAC,CAAC,CAAC;UACP,CAAC,MAAM,IAAIvC,IAAI,KAAK3C,+BAA+B,EAAE;YACjD,IAAI,CAACe,QAAQ,CAACoE,SAAS,KAAK;cACxBC,uBAAuB,EAAExF,aAAa,CAACuF,SAAS,CAACC,uBAAuB,EAAEF,QAAQ;YACtF,CAAC,CAAC,CAAC;UACP;QACJ,CAAC,CAAC;MACN;IACJ,CAAC;IAAA7E,eAAA,kCAE0BoB,KAAa,IAAK;MACzC,MAAM;QAAEW;MAAqB,CAAC,GAAG,IAAI,CAAChC,KAAK;MAC3C,IAAI,IAAI,CAACK,KAAK,CAAC4E,uBAAuB,EAAE;QACpC;MACJ;;MAEA;MACA;MACA,IAAI5D,KAAK,KAAK,EAAE,EAAE;QACdW,oBAAoB,CAAC,CAAC;QACtB,IAAI,CAACrB,QAAQ,CACT;UACIsE,uBAAuB,EAAE;QAC7B,CAAC,EACD,MAAM;UACF,MAAM;YACF7C,aAAa,EAAE;cACXoC,oBAAoB,EAAE;gBAAEU;cAAqB;YACjD;UACJ,CAAC,GAAG,IAAI,CAAClF,KAAK;UAEd,IAAIkF,oBAAoB,EAAE;YACtBA,oBAAoB,CAAC,CAAC;UAC1B;QACJ,CACJ,CAAC;MACL;IACJ,CAAC;IAAAjF,eAAA,yCAEgC,MAAM;MACnC,IAAI,CAACU,QAAQ,CAAC;QACVsE,uBAAuB,EAAE;MAC7B,CAAC,CAAC;IACN,CAAC;IAAAhF,eAAA,mCAE0B,MAAM;MAC7B,IAAI,CAACU,QAAQ,CAAC;QACVsE,uBAAuB,EAAE;MAC7B,CAAC,CAAC;IACN,CAAC;IAAAhF,eAAA,kCAEyB,MAAM;MAC5B,MAAM;QAAE+B;MAAqB,CAAC,GAAG,IAAI,CAAChC,KAAK;MAC3CgC,oBAAoB,CAAC,CAAC;MACtB,IAAI,CAACrB,QAAQ,CAAC;QACVwE,0BAA0B,EAAE;MAChC,CAAC,CAAC;IACN,CAAC;IAAAlF,eAAA,mCAE0B,MAAM;MAC7B,IAAI,CAACU,QAAQ,CAAC;QAAEwE,0BAA0B,EAAE;MAAM,CAAC,CAAC;IACxD,CAAC;IAAAlF,eAAA,6BAEqBsC,IAAY,IAAc;MAC5C,MAAM;QAAEhB,qBAAqB;QAAEyD;MAAwB,CAAC,GAAG,IAAI,CAAC3E,KAAK;MACrE,IAAIkC,IAAI,KAAK5C,4BAA4B,EAAE;QACvC,OAAO4B,qBAAqB,CAAC6D,IAAI,CAACC,OAAO,IAAIA,OAAO,CAACC,cAAc,CAAC;MACxE;MACA,IAAI/C,IAAI,KAAK3C,+BAA+B,EAAE;QAC1C,OAAOoF,uBAAuB,CAACI,IAAI,CAACC,OAAO,IAAIA,OAAO,CAACC,cAAc,CAAC;MAC1E;MACA,OAAO,KAAK;IAChB,CAAC;IAAArF,eAAA,yCAEgC,CAC7BsF,4BAA4C,EAC5CC,wBAAwC,KACvC;MACD,MAAM;QAAE/D,sBAAsB;QAAEC;MAAiB,CAAC,GAAG,IAAI,CAAC1B,KAAK;MAE/D,MAAM2B,oBAAoB,GAAGpC,qBAAqB,CAC9CgG,4BAA4B,EAC5B9D,sBAAsB,EACtBC,gBACJ,CAAC;MACD,MAAM+D,+BAA+B,GAAGlG,qBAAqB,CACzDiG,wBAAwB,EACxB/D,sBAAsB,EACtBC,gBACJ,CAAC;MAED,OAAOC,oBAAoB,IAAI,CAAC8D,+BAA+B;IACnE,CAAC;IAAAxF,eAAA,sCAE8BsB,qBAAqC,IAAK;MACrE,MAAM;QAAEA,qBAAqB,EAAEgE;MAA6B,CAAC,GAAG,IAAI,CAAClF,KAAK;MAC1E,MAAM;QAAEqF,4BAA4B;QAAEC;MAAmB,CAAC,GAAG,IAAI,CAAC3F,KAAK;MAEvE,MAAM4F,8BAA8B,GAAG,IAAI,CAACA,8BAA8B,CACtEL,4BAA4B,EAC5BhE,qBACJ,CAAC;MAED,IAAI,CAACZ,QAAQ,CAAC;QACVY;MACJ,CAAC,CAAC;MAEF,IAAIoE,kBAAkB,EAAE;QACpBA,kBAAkB,CAACpE,qBAAqB,CAAC;MAC7C;MACA,IAAImE,4BAA4B,IAAIE,8BAA8B,EAAE;QAChEF,4BAA4B,CAAC,CAAC;MAClC;IACJ,CAAC;IAAAzF,eAAA,wCAEgC+E,uBAAuC,IAAK;MACzE,IAAI,CAACrE,QAAQ,CAAC;QACVqE;MACJ,CAAC,CAAC;IACN,CAAC;IAAA/E,eAAA,oCAE2B,MAAM;MAC9B,MAAM;QAAE4F,qBAAqB;QAAE1B,UAAU;QAAE2B,gBAAgB;QAAEC;MAAuB,CAAC,GAAG,IAAI,CAAC/F,KAAK;MAElG,IAAI,CAAC+F,sBAAsB,IAAI,CAACF,qBAAqB,EAAE;QACnD,OAAO,KAAK;MAChB;MACA;MACA,IAAI,EAAEA,qBAAqB,IAAI1B,UAAU,CAAC6B,eAAe,CAAC,EAAE;QACxD,OAAO,KAAK;MAChB;MACA;MACA,IAAI,CAACF,gBAAgB,EAAE;QACnB,OAAO,KAAK;MAChB;MACA,OAAO,IAAI;IACf,CAAC;IAtVG,IAAI,CAACzF,KAAK,GAAG;MACTU,qBAAqB,EAAE,EAAE;MACzBiE,uBAAuB,EAAE,EAAE;MAC3BzD,qBAAqB,EAAEvB,KAAK,CAACiG,yBAAyB;MACtDjD,sBAAsB,EAAE,EAAE;MAC1BmC,0BAA0B,EAAE,KAAK;MACjCvE,8BAA8B,EAAE,KAAK;MACrCqE,uBAAuB,EAAE,CAAC,CAACjF,KAAK,CAACiG,yBAAyB,CAACzF,MAAM;MACjEJ,oBAAoB,EAAE,EAAE;MACxBsC,oBAAoB,EAAE;IAC1B,CAAC;EACL;EAEAwD,kBAAkBA,CAACC,SAAmB,EAAE;IACpC,MAAM;MAAE3E,uCAAuC;MAAEtB,IAAI;MAAEuB,sBAAsB;MAAEC;IAAiB,CAAC,GAAG,IAAI,CAAC1B,KAAK;IAC9G,MAAM;MACF0B,gBAAgB,EAAE0E,oBAAoB;MACtC3E,sBAAsB,EAAE4E,0BAA0B;MAClD7E,uCAAuC,EAAE8E;IAC7C,CAAC,GAAGH,SAAS;IAEb,MAAMI,2BAA2B,GAC7B,CAACpI,OAAO,CAACuD,gBAAgB,EAAE0E,oBAAoB,CAAC,IAChD,CAACjI,OAAO,CAACsD,sBAAsB,EAAE4E,0BAA0B,CAAC,IAC5D7E,uCAAuC,KAAK8E,2CAA2C;IAE3F,IAAIC,2BAA2B,IAAI,IAAI,CAACC,gCAAgC,CAAC,CAAC,EAAE;MACxE,IAAI,CAACC,yBAAyB,CAACvG,IAAI,EAAET,wCAAwC,CAAC;IAClF;EACJ;EA2TAiH,mBAAmBA,CAAA,EAAG;IAClB,MAAM;MACFC,SAAS;MACTC,qBAAqB;MACrBC,+BAA+B;MAC/BC,MAAM;MACNC,YAAY;MACZC,uBAAuB;MACvBC,mBAAmB;MACnBjF,oBAAoB;MACpB9B,IAAI;MACJgH,oCAAoC,GAAG,IAAI;MAC3CzF,sBAAsB;MACtBC,gBAAgB;MAChByF,gBAAgB;MAChBhF,uBAAuB;MACvBiF,sBAAsB,GAAG,KAAK;MAC9BC,kBAAkB,GAAG,KAAK;MAC1BC,uBAAuB,GAAG,KAAK;MAC/BC,kBAAkB;MAClBC,UAAU;MACVC,sBAAsB;MACtBrF,aAAa;MACbsF;IACJ,CAAC,GAAG,IAAI,CAAC1H,KAAK;IACd,MAAM;MAAEuC;IAAK,CAAC,GAAGrC,IAAI;IACrB,MAAM;MAAEU,8BAA8B;MAAEqE,uBAAuB;MAAE7E;IAAqB,CAAC,GAAG,IAAI,CAACC,KAAK;IACpG,MAAM;MAAEyC,0BAA0B;MAAE6E;IAAc,CAAC,GAAGvF,aAAa;IACnE,MAAMwF,4BAA4B,GAC9BrF,IAAI,KAAK1D,iBAAiB,gBACtBZ,KAAA,CAAA4J,aAAA,CAACzJ,gBAAgB,EAAKe,QAAQ,CAAC2I,4BAA+B,CAAC,gBAE/D7J,KAAA,CAAA4J,aAAA,CAACzJ,gBAAgB,EAAKe,QAAQ,CAAC4I,qBAAwB,CAC1D;IACL,MAAMC,YAAY,GAAGb,gBAAgB,GAC/B;MACI5E,IAAI,EAAE,OAAO;MACb0F,OAAO,EAAEd;IACb,CAAC,GACD;MACI5E,IAAI,EAAE,SAAS;MACf0F,OAAO,EAAEpB;IACb,CAAC;IACP,MAAMqB,OAAO,GAAG,IAAI,CAACC,yBAAyB,CAAC,CAAC;IAChD,MAAM;MAAEC;IAAuB,CAAC,GAAGT,aAAa;IAChD,MAAMU,eAAe,gBACjBpK,KAAA,CAAA4J,aAAA,2BACI5J,KAAA,CAAA4J,aAAA;MAAIS,SAAS,EAAC;IAAoB,gBAC9BrK,KAAA,CAAA4J,aAAA,CAACzJ,gBAAgB,EAAKe,QAAQ,CAACoJ,mBAAsB,CACrD,CAAC,eACLtK,KAAA,CAAA4J,aAAA;MAAGS,SAAS,EAAC;IAAmB,gBAC5BrK,KAAA,CAAA4J,aAAA,CAACzJ,gBAAgB,EAAKe,QAAQ,CAACqJ,kBAAqB,CAAC,EAAC,GAAG,eACzDvK,KAAA,CAAA4J,aAAA,CAACtJ,IAAI;MAAC+J,SAAS,EAAC,mBAAmB;MAACG,IAAI,EAAE/I,0BAA2B;MAACqC,MAAM,EAAC;IAAQ,gBACjF9D,KAAA,CAAA4J,aAAA,CAACzJ,gBAAgB,EAAKe,QAAQ,CAACuJ,YAAe,CAC5C,CACP,CAAC,eACJzK,KAAA,CAAA4J,aAAA;MAAKS,SAAS,EAAC;IAAuB,gBAClCrK,KAAA,CAAA4J,aAAA,CAACrJ,MAAM,EAAAmK,QAAA;MAACL,SAAS,EAAC,qBAAqB;MAACM,OAAO,EAAE5G;IAAqB,GAAKoG,sBAAsB,gBAC7FnK,KAAA,CAAA4J,aAAA,CAACzJ,gBAAgB,EAAKe,QAAQ,CAAC0J,gBAAmB,CAC9C,CACP,CACJ,CACR;IACD,MAAMC,gBAAgB,GAAG;MACrBR,SAAS,EAAE,kBAAkB;MAC7B;MACAS,OAAO,EAAE,CAAC7B,oCAAoC,IAAI/E,uBAAuB,IAAIkF,kBAAkB;MAC/F2B,QAAQ,EAAE,aAAa;MACvBC,eAAe,EAAE,IAAI;MACrBC,IAAI,EAAEb,eAAe;MACrBc,KAAK,EAAE;IACX,CAAC;IACD,MAAMC,sBAAsB,GAAG,CAAC,CAAC1B,kBAAkB;IAEnD,oBACIzJ,KAAA,CAAA4J,aAAA,CAAA5J,KAAA,CAAAoL,QAAA,qBACIpL,KAAA,CAAA4J,aAAA,CAAC/I,OAAO,EAAKgK,gBAAgB,eACzB7K,KAAA,CAAA4J,aAAA;MAAKS,SAAS,EAAC,+BAA+B;MAAC,eAAY;IAA+B,gBACtFrK,KAAA,CAAA4J,aAAA,CAACxI,SAAS,EAAAsJ,QAAA;MACN7B,MAAM,EAAEA,MAAO;MACfC,YAAY,EAAEA,YAAa;MAC3BH,qBAAqB,EAAEA,qBAAsB;MAC7C0C,oBAAoB,EAAEpB,OAAQ;MAC9BN,4BAA4B,EAAEA,4BAA6B;MAC3D2B,kBAAkB,eAAEtL,KAAA,CAAA4J,aAAA,CAACzJ,gBAAgB,EAAKe,QAAQ,CAACqK,gBAAmB,CAAE;MACxEC,WAAW,EAAEzC,uBAAwB;MACrCC,mBAAmB,EAAEA,mBAAoB;MACzCe,YAAY,EAAEA,YAAa;MAC3B0B,sBAAsB,EAAE/C,SAAU;MAClCgD,UAAU,EAAE1E,uBAAwB;MACpCrE,8BAA8B,EAAEA,8BAA+B;MAC/DgJ,sBAAsB,EAAE,IAAI,CAACC,kBAAkB,CAAClK,4BAA4B,CAAE;MAC9EmK,iCAAiC,EAAE,IAAI,CAACtD,gCAAgC,CAAC,CAAE;MAC3EpG,oBAAoB,EAAEA,oBAAqB;MAC3C2J,cAAc,EAAE,IAAI,CAACC,uBAAwB;MAC7CnI,YAAY,EAAE,IAAI,CAACoI,4BAA6B;MAChDC,cAAc,EAAE,IAAI,CAACC,wBAAyB;MAC9CC,QAAQ,EAAE,IAAI,CAACC,iBAAkB;MACjCC,8BAA8B,EAAE,IAAI,CAACA,8BAA+B;MACpEpD,oCAAoC,EAAEA,oCAAqC;MAC3E3D,gBAAgB,EAAE9B,sBAAuB;MACzCC,gBAAgB,EAAEA,gBAAiB;MACnC0F,sBAAsB,EAAEA,sBAAuB;MAC/CI,UAAU,EAAEA,UAAW;MACvB+C,gBAAgB,EAAE,IAAI,CAAClK,KAAK,CAACkB,qBAAsB;MACnDkG,sBAAsB,EAAEA,sBAAuB;MAC/C+C,sBAAsB,EAAE,IAAI,CAACC;IAA4B,GACrD3H,0BAA0B,GAE7B,IAAI,CAAC4H,gCAAgC,CAAC,CAAC,EACvCnD,kBAAkB,IACf,CAACD,uBAAuB,IACxB,CAAC8B,sBAAsB,IACvB,IAAI,CAACuB,4BAA4B,CAAC,CAC/B,CACV,CACA,CACX,CAAC;EAEX;EAEAxC,yBAAyBA,CAAA,EAAG;IACxB,MAAM;MAAEyC,iBAAiB;MAAEjE,SAAS;MAAEkE,aAAa;MAAE3K,IAAI;MAAEkC;IAAc,CAAC,GAAG,IAAI,CAACpC,KAAK;IACvF,MAAM;MAAE2H;IAAc,CAAC,GAAGvF,aAAa;IACvC,IAAI0I,cAAc,GAAG,IAAI;IAEzB,IAAIF,iBAAiB,EAAE;MACnB,MAAM;QAAEG;MAAc,CAAC,GAAGH,iBAAiB;MAC3C,MAAM;QAAEI,iBAAiB,GAAG;MAAK,CAAC,GAAG9K,IAAI;MACzC,MAAM+K,0BAA0B,GAAGD,iBAAiB,GAAGrE,SAAS,GAAG,IAAI;;MAEvE;MACAmE,cAAc,GAAGG,0BAA0B,iBACvChN,KAAA,CAAA4J,aAAA,CAAC9I,mBAAmB;QAChBgM,aAAa,EAAEA,aAAa,CAACpG,MAAM,CAACuG,YAAY,IAAIC,MAAM,CAACD,YAAY,CAACE,MAAM,CAAC,KAAKP,aAAa,CAAE;QACnGjC,OAAO,EAAE,IAAI,CAAClG,oBAAqB;QACnC2I,mBAAmB,EAAE1D,aAAa,CAAC2D;MAAyB,CAC/D,CACJ;IACL;IAEA,OAAOR,cAAc;EACzB;EAEAS,yBAAyBA,CAACC,WAAmB,EAAE;IAC3C,MAAM;MAAEC,oBAAoB,GAAGA,CAAA,KAAM,CAAC;IAAE,CAAC,GAAG,IAAI,CAACzL,KAAK;IACtD,oBACI/B,KAAA,CAAA4J,aAAA,CAAA5J,KAAA,CAAAoL,QAAA,qBACIpL,KAAA,CAAA4J,aAAA,CAACzJ,gBAAgB,EAAAuK,QAAA;MACb+C,MAAM,EAAE;QACJC,kBAAkB,eACd1N,KAAA,CAAA4J,aAAA,CAACtJ,IAAI;UACD+J,SAAS,EAAC,cAAc;UACxBG,IAAI,EAAC,qGAAqG;UAC1G1G,MAAM,EAAC;QAAQ,gBAEf9D,KAAA,CAAA4J,aAAA,CAACzJ,gBAAgB,EAAKe,QAAQ,CAACyM,YAAe,CAC5C,CACT;QACDC,WAAW,eACP5N,KAAA,CAAA4J,aAAA,CAAClJ,WAAW;UACR2J,SAAS,EAAC,cAAc;UACxB,qBAAmBkD,WAAY;UAC/B5C,OAAO,EAAE6C,oBAAqB;UAC9BlJ,IAAI,EAAC;QAAQ,gBAEbtE,KAAA,CAAA4J,aAAA,CAACzJ,gBAAgB,EAAKe,QAAQ,CAAC0M,WAAc,CACpC;MAErB;IAAE,GACE1M,QAAQ,CAAC2M,sBAAsB,CACtC,CACH,CAAC;EAEX;EAEAnB,4BAA4BA,CAAA,EAAG;IAC3B,MAAM;MAAEc,oBAAoB,GAAGA,CAAA,KAAM,CAAC,CAAC;MAAErJ,aAAa,GAAG,CAAC;IAAE,CAAC,GAAG,IAAI,CAACpC,KAAK;IAC1E,MAAM;MAAE8C,0BAA0B,GAAG,CAAC;IAAE,CAAC,GAAGV,aAAa;IACzD,MAAM;MAAE2J,gBAAgB,GAAG,CAAC;IAAE,CAAC,GAAGjJ,0BAA0B;IAE5D,oBACI7E,KAAA,CAAA4J,aAAA;MAAKS,SAAS,EAAC;IAAqB,gBAChCrK,KAAA,CAAA4J,aAAA,CAACpJ,YAAY,MAAE,CAAC,eAChBR,KAAA,CAAA4J,aAAA,CAACzJ,gBAAgB,EAAAuK,QAAA;MACb+C,MAAM,EAAE;QACJM,gCAAgC,eAC5B/N,KAAA,CAAA4J,aAAA,CAAClJ,WAAW,EAAAgK,QAAA;UACRL,SAAS,EAAC,cAAc;UACxBM,OAAO,EAAE6C,oBAAqB;UAC9BlJ,IAAI,EAAC;QAAQ,GACTwJ,gBAAgB,gBAEpB9N,KAAA,CAAA4J,aAAA,CAACzJ,gBAAgB,EAAKe,QAAQ,CAAC6M,gCAAmC,CACzD;MAErB;IAAE,GACE7M,QAAQ,CAAC8M,uCAAuC,CACvD,CACA,CAAC;EAEd;EAEAC,yBAAyBA,CAAA,EAAG;IACxB,oBACIjO,KAAA,CAAA4J,aAAA,CAACnJ,YAAY;MAACyC,KAAK,eAAElD,KAAA,CAAA4J,aAAA,CAACzJ,gBAAgB,EAAKe,QAAQ,CAACgN,wBAA2B,CAAE;MAAC5J,IAAI,EAAC;IAAM,GACxF,IAAI,CAACgJ,yBAAyB,CAAC,yCAAyC,CAC/D,CAAC;EAEvB;EAEAb,gCAAgCA,CAAA,EAAG;IAC/B,MAAM;MAAE9H,kBAAkB;MAAE1C,IAAI;MAAEsH,UAAU;MAAEb,SAAS;MAAEvE;IAAc,CAAC,GAAG,IAAI,CAACpC,KAAK;IACrF,MAAM;MAAEuC;IAAK,CAAC,GAAGrC,IAAI;IACrB,MAAM;MAAEsE;IAAqB,CAAC,GAAGpC,aAAa;IAE9C,OACIQ,kBAAkB,iBACd3E,KAAA,CAAA4J,aAAA,CAAC3I,sBAAsB;MACnBkN,QAAQ,EAAE,CAACzF,SAAS,IAAIa,UAAW;MACnC6E,6BAA6B,EAAE7H,oBAAoB,CAAC6H,6BAA8B;MAClFrJ,sBAAsB,EAAE,IAAI,CAAC3C,KAAK,CAAC2C,sBAAuB;MAC1DJ,kBAAkB,EAAEA,kBAAmB;MACvC0J,4BAA4B,EAAE,IAAI,CAACC,6BAA8B;MACjEC,QAAQ,EAAEjK;IAAK,CAClB,CACJ;EAET;EAEAkK,sBAAsBA,CAAA,EAAG;IACrB,MAAM;MAAEvM,IAAI;MAAE0K,iBAAiB;MAAExI,aAAa;MAAEsK,sBAAsB;MAAEC;IAA0B,CAAC,GAC/F,IAAI,CAAC3M,KAAK;IACd,MAAM;MAAE4M,IAAI;MAAErK;IAAK,CAAC,GAAGrC,IAAI;IAC3B,MAAM;MAAE2M;IAAyB,CAAC,GAAGzK,aAAa;IAClD,IAAI0K,WAAW,GAAG,IAAI;IAEtB,IAAIlC,iBAAiB,EAAE;MACnB,MAAM;QAAEG;MAAc,CAAC,GAAGH,iBAAiB;MAE3CkC,WAAW,gBACP7O,KAAA,CAAA4J,aAAA,CAAC7I,gBAAgB;QACb+N,QAAQ,EAAEH,IAAK;QACfJ,QAAQ,EAAEjK,IAAK;QACfyK,WAAW,EAAE,IAAI,CAACC,qBAAsB;QACxC/M,IAAI,EAAEA,IAAK;QACX6K,aAAa,EAAEA,aAAc;QAC7B3I,aAAa,EAAEyK,wBAAyB;QACxCH,sBAAsB,EAAEA,sBAAuB;QAC/CC,yBAAyB,EAAEA;MAA0B,CACxD,CACJ;IACL;IAEA,OAAOG,WAAW;EACtB;EAEAI,MAAMA,CAAA,EAAG;IACL;IACA,MAAM;MACFC,0BAA0B;MAC1BC,2BAA2B;MAC3BC,+BAA+B;MAC/BvG,MAAM;MACNf,sBAAsB;MACtBuH,cAAc;MACdzH,qBAAqB;MACrB0H,qBAAqB;MACrBtG,mBAAmB;MACnBuG,IAAI;MACJC,gCAAgC;MAChCC,mCAAmC;MACnCC,UAAU;MACVzN,IAAI;MACJ+B,SAAS;MACT2L,+BAA+B;MAC/BC,WAAW;MACXC,UAAU;MACVC,aAAa;MACbC,gBAAgB,GAAGA,CAAA,KAAM,CAAC,CAAC;MAC3BC,eAAe;MACfC,mBAAmB;MACnB/J,UAAU;MACVgK,6BAA6B;MAC7BC,iCAAiC;MACjChH,sBAAsB,GAAG,KAAK;MAC9BiH,6BAA6B,GAAG,KAAK;MACrC/G,uBAAuB,GAAG,KAAK;MAC/BC,kBAAkB;MAClBC,UAAU;MACV8G,QAAQ,GAAG,CAAC,CAAC;MACblM,aAAa;MACbsF,kBAAkB,GAAG;IACzB,CAAC,GAAG,IAAI,CAAC1H,KAAK;IACd,MAAM;MAAEqC,kBAAkB;MAAE+B;IAAwB,CAAC,GAAGhC,aAAa;IACrE,MAAM;MAAE+C,0BAA0B;MAAEF,uBAAuB;MAAEvC;IAAqB,CAAC,GAAG,IAAI,CAACrC,KAAK;IAEhG,MAAMkO,mBAAmB,GAAGpJ,0BAA0B,IAAIF,uBAAuB,IAAIvC,oBAAoB;IAEzG,MAAM8L,yBAAyB,GAC3BZ,+BAA+B,IAAI,CAACW,mBAAmB,IAAIrO,IAAI,EAAEqC,IAAI,KAAK3D,cAAc;IAE5F,oBACIX,KAAA,CAAA4J,aAAA;MAAKS,SAAS,EAAEgF,cAAc,GAAG,EAAE,GAAG;IAA0B,gBAC5DrP,KAAA,CAAA4J,aAAA,CAACvJ,uBAAuB;MAACmQ,SAAS,EAAEd,UAAW;MAACe,WAAW;IAAA,GACtD,CAACH,mBAAmB,IAAIpB,0BAA0B,EAElD,CAAC,CAACzF,kBAAkB,iBAAIzJ,KAAA,CAAA4J,aAAA;MAAKS,SAAS,EAAC;IAAsB,GAAEZ,kBAAwB,CAAC,EAExFH,kBAAkB,IAAID,uBAAuB,IAAI,IAAI,CAAC4E,yBAAyB,CAAC,CAAC,EAEjF,CAAC/G,0BAA0B,IAAI,CAACzC,oBAAoB,IAAI,IAAI,CAACgE,mBAAmB,CAAC,CAAC,EAElF,CAAC6H,mBAAmB,iBACjBtQ,KAAA,CAAA4J,aAAA,CAACzI,iBAAiB;MACduP,aAAa,EAAE1M,SAAU;MACzB2M,mBAAmB,EAAE,IAAI,CAACC,yBAAyB,CAAC,CAAE;MACtDC,oBAAoB,EAAE/I,sBAAuB;MAC7Ce,MAAM,EAAEA,MAAO;MACfiI,iBAAiB,EAAEhJ,sBAAsB,IAAIF,qBAAsB;MACnEuH,2BAA2B,EAAEA,2BAA4B;MACzDC,+BAA+B,EAAEA,+BAAgC;MACjEG,IAAI,EAAEA,IAAK;MACXE,mCAAmC,EAAEA,mCAAoC;MACzExN,IAAI,EAAEA,IAAK;MACXsM,QAAQ,EAAEtM,IAAI,CAACqC,IAAK;MACpByL,gBAAgB,EAAEA,gBAAiB;MACnCgB,sBAAsB,EAAE,IAAI,CAACC,uBAAwB;MACrDhB,eAAe,EAAEA,eAAgB;MACjCiB,kBAAkB,EAAE,IAAI,CAACA,kBAAmB;MAC5CpB,UAAU,EAAEA,UAAW;MACvBC,aAAa,EAAEA,aAAc;MAC7BF,WAAW,EAAEA,WAAY;MACzB1J,UAAU,EAAEA,UAAW;MACvBgK,6BAA6B,EAAEA,6BAA8B;MAC7DC,iCAAiC,EAAEA,iCAAkC;MACrEC,6BAA6B,EAAEA,6BAA8B;MAC7D7G,UAAU,EAAEA,UAAU,IAAImG,UAAW;MACrCvL,aAAa,EAAEC,kBAAmB;MAClCiM,QAAQ,EAAEA;IAAS,CACtB,CACJ,EAEAE,yBAAyB,iBACtBvQ,KAAA,CAAA4J,aAAA,CAAA5J,KAAA,CAAAoL,QAAA,qBACIpL,KAAA,CAAA4J,aAAA;MAAIS,SAAS,EAAC;IAAgC,CAAE,CAAC,eACjDrK,KAAA,CAAA4J,aAAA;MAAKS,SAAS,EAAC;IAA0B,gBACrCrK,KAAA,CAAA4J,aAAA,CAAC5I,6BAA6B;MAC1BkQ,SAAS,EAAE1B,gCAAiC;MAC5C2B,UAAU,EAAE5H,UAAU,IAAImG,UAAW;MACrC0B,QAAQ,EAAEzB;IAAgC,CAC7C,CACA,CACP,CACL,EAEAzI,0BAA0B,IAAI,CAACzC,oBAAoB,iBAChDzE,KAAA,CAAA4J,aAAA,CAACxI,SAAS,EAAAsJ,QAAA;MACNY,kBAAkB,eAAEtL,KAAA,CAAA4J,aAAA,CAACzJ,gBAAgB,EAAKe,QAAQ,CAACmQ,wBAA2B,CAAE;MAChFrI,mBAAmB,EAAEA,mBAAoB;MACzCwC,WAAW,EAAE8D,qBAAsB;MACnCvF,YAAY,EAAE;QACVzF,IAAI,EAAE,OAAO;QACb0F,OAAO,EAAEiG;MACb,CAAE;MACFxE,sBAAsB;MACtBC,UAAU;MACVC,sBAAsB,EAAE,IAAI,CAACC,kBAAkB,CAACjK,+BAA+B,CAAE;MACjFiC,YAAY,EAAE,IAAI,CAAC0N,+BAAgC;MACnDrF,cAAc,EAAE,IAAI,CAACsF,wBAAyB;MAC9CpF,QAAQ,EAAE,IAAI,CAACqF,oBAAqB;MACpCrI,sBAAsB,EAAEA,sBAAuB;MAC/CI,UAAU,EAAEA,UAAW;MACvB+C,gBAAgB,EAAE,IAAI,CAAClK,KAAK,CAAC2E,uBAAwB;MACrDwF,sBAAsB,EAAE,IAAI,CAACkF;IAA8B,GACvDtL,uBAAuB,CAC9B,CACJ,EACA1B,oBAAoB,IAAI,IAAI,CAAC+J,sBAAsB,CAAC,CAChC,CACxB,CAAC;EAEd;AACJ;AAACxM,eAAA,CA9uBKJ,gBAAgB,kBACI;EAClByN,cAAc,EAAE,IAAI;EACpBrH,yBAAyB,EAAE,EAAE;EAC7BF,sBAAsB,EAAE,KAAK;EAC7BF,qBAAqB,EAAE,KAAK;EAC5BpE,sBAAsB,EAAE,EAAE;EAC1BkO,eAAe,EAAE,EAAE;EACnBvN,aAAa,EAAE;IACXyK,wBAAwB,EAAE,CAAC,CAAC;IAC5B/J,0BAA0B,EAAE,CAAC,CAAC;IAC9B0B,oBAAoB,EAAE,CAAC,CAAC;IACxBmD,aAAa,EAAE,CAAC,CAAC;IACjBiI,8BAA8B,EAAE,CAAC,CAAC;IAClCxL,uBAAuB,EAAE,CAAC,CAAC;IAC3B/B,kBAAkB,EAAE,CAAC,CAAC;IACtBwN,sCAAsC,EAAE,CAAC;EAC7C;AACJ,CAAC;AA8tBL,SAAShQ,gBAAgB,IAAIiQ,oBAAoB;AACjD,eAAezR,UAAU,CAACwB,gBAAgB,CAAC","ignoreList":[]}
@@ -11,6 +11,7 @@ import { Modal } from '../../components/modal';
11
11
  import UnifiedShareModalTitle from './UnifiedShareModalTitle';
12
12
  import UnifiedShareForm from './UnifiedShareForm';
13
13
  import RemoveLinkConfirmModal from './RemoveLinkConfirmModal';
14
+ import RemoveCollaboratorConfirmModal from './RemoveCollaboratorConfirmModal';
14
15
  import './UnifiedShareModal.scss';
15
16
  class UnifiedShareModal extends React.Component {
16
17
  constructor(props) {
@@ -36,12 +37,30 @@ class UnifiedShareModal extends React.Component {
36
37
  });
37
38
  _defineProperty(this, "openConfirmModal", () => {
38
39
  this.setState({
39
- isConfirmModalOpen: true
40
+ isRemoveLinkConfirmModalOpen: true
40
41
  });
41
42
  });
43
+ _defineProperty(this, "openRemoveCollaboratorConfirmModal", collaborator => {
44
+ const {
45
+ canRemoveCollaborators
46
+ } = this.props;
47
+ if (canRemoveCollaborators) {
48
+ this.setState({
49
+ isRemoveCollaboratorConfirmModalOpen: true,
50
+ collaboratorToRemove: collaborator
51
+ });
52
+ }
53
+ });
42
54
  _defineProperty(this, "closeConfirmModal", () => {
43
55
  this.setState({
44
- isConfirmModalOpen: false
56
+ isRemoveLinkConfirmModalOpen: false
57
+ });
58
+ });
59
+ _defineProperty(this, "closeRemoveCollaboratorConfirmModal", () => {
60
+ this.setState({
61
+ isRemoveCollaboratorConfirmModalOpen: false,
62
+ collaboratorToRemove: null,
63
+ shouldRenderFTUXTooltip: false
45
64
  });
46
65
  });
47
66
  _defineProperty(this, "removeLink", () => {
@@ -54,6 +73,15 @@ class UnifiedShareModal extends React.Component {
54
73
  this.closeConfirmModal();
55
74
  }
56
75
  });
76
+ _defineProperty(this, "removeCollaborator", async () => {
77
+ const {
78
+ onRemoveCollaborator
79
+ } = this.props;
80
+ if (this.state.collaboratorToRemove) {
81
+ await onRemoveCollaborator?.(this.state.collaboratorToRemove);
82
+ }
83
+ this.closeRemoveCollaboratorConfirmModal();
84
+ });
57
85
  _defineProperty(this, "renderUSF", () => {
58
86
  const {
59
87
  onCollaboratorAvatarsClick,
@@ -68,6 +96,7 @@ class UnifiedShareModal extends React.Component {
68
96
  return /*#__PURE__*/React.createElement(UnifiedShareForm, _extends({}, this.props, {
69
97
  onCollaboratorAvatarsClick: onCollaboratorAvatarsClick,
70
98
  handleFtuxCloseClick: this.handleFtuxCloseClick,
99
+ onRemoveCollaboratorClick: this.openRemoveCollaboratorConfirmModal,
71
100
  isFetching: isFetching,
72
101
  openConfirmModal: this.openConfirmModal,
73
102
  sharedLinkEditTagTargetingApi: sharedLinkEditTagTargetingApi,
@@ -80,8 +109,10 @@ class UnifiedShareModal extends React.Component {
80
109
  initialDataReceived
81
110
  } = props;
82
111
  this.state = {
112
+ collaboratorToRemove: null,
83
113
  getInitialDataCalled: !!initialDataReceived,
84
- isConfirmModalOpen: false,
114
+ isRemoveLinkConfirmModalOpen: false,
115
+ isRemoveCollaboratorConfirmModalOpen: false,
85
116
  isEmailLinkSectionExpanded: false,
86
117
  isFetching: !initialDataReceived,
87
118
  sharedLinkLoaded: false,
@@ -170,25 +201,27 @@ class UnifiedShareModal extends React.Component {
170
201
  } = this.props;
171
202
  const {
172
203
  modalTracking,
173
- removeLinkConfirmModalTracking
204
+ removeLinkConfirmModalTracking,
205
+ removeCollaboratorConfirmModalTracking
174
206
  } = trackingProps;
175
207
  const {
176
208
  modalProps
177
209
  } = modalTracking;
178
210
  const {
179
211
  isEmailLinkSectionExpanded,
180
- isConfirmModalOpen,
212
+ isRemoveLinkConfirmModalOpen,
213
+ isRemoveCollaboratorConfirmModalOpen,
181
214
  showCollaboratorList
182
215
  } = this.state;
183
216
 
184
217
  // focus logic at modal level
185
218
  const extendedModalProps = _objectSpread({
186
- focusElementSelector: canInvite ? '.bdl-PillSelector-input' // focus on invite collabs field
219
+ focusElementSelector: canInvite ? '.bdl-PillSelector-input' // focus on invite collaborators field
187
220
  : '.toggle-simple'
188
221
  }, modalProps);
189
222
  return /*#__PURE__*/React.createElement(React.Fragment, null, displayInModal ? /*#__PURE__*/React.createElement(Modal, _extends({
190
223
  className: "be-modal unified-share-modal",
191
- isOpen: isConfirmModalOpen ? false : isOpen,
224
+ isOpen: isRemoveLinkConfirmModalOpen || isRemoveCollaboratorConfirmModalOpen ? false : isOpen,
192
225
  onRequestClose: submitting ? undefined : onRequestClose,
193
226
  title: /*#__PURE__*/React.createElement(UnifiedShareModalTitle, {
194
227
  isEmailLinkSectionExpanded: isEmailLinkSectionExpanded,
@@ -197,15 +230,25 @@ class UnifiedShareModal extends React.Component {
197
230
  })
198
231
  }, extendedModalProps), this.renderUSF()) : /*#__PURE__*/React.createElement("div", {
199
232
  className: "bdl-UnifiedShareForm-container"
200
- }, this.renderUSF()), isConfirmModalOpen && /*#__PURE__*/React.createElement(RemoveLinkConfirmModal, _extends({
201
- isOpen: isConfirmModalOpen,
233
+ }, this.renderUSF()), isRemoveLinkConfirmModalOpen && /*#__PURE__*/React.createElement(RemoveLinkConfirmModal, _extends({
234
+ isOpen: isRemoveLinkConfirmModalOpen,
202
235
  onRequestClose: this.closeConfirmModal,
203
236
  removeLink: this.removeLink,
204
237
  submitting: submitting
205
- }, removeLinkConfirmModalTracking)));
238
+ }, removeLinkConfirmModalTracking)), isRemoveCollaboratorConfirmModalOpen && /*#__PURE__*/React.createElement(RemoveCollaboratorConfirmModal, _extends({
239
+ isOpen: isRemoveCollaboratorConfirmModalOpen,
240
+ onRequestClose: this.closeRemoveCollaboratorConfirmModal,
241
+ onSubmit: this.removeCollaborator,
242
+ submitting: submitting,
243
+ collaborator: this.state.collaboratorToRemove,
244
+ modalProps: {
245
+ className: 'remove-collaborator-confirm-modal'
246
+ }
247
+ }, removeCollaboratorConfirmModalTracking)));
206
248
  }
207
249
  }
208
250
  _defineProperty(UnifiedShareModal, "defaultProps", {
251
+ canRemoveCollaborators: false,
209
252
  displayInModal: true,
210
253
  initiallySelectedContacts: [],
211
254
  isAllowEditSharedLinkForFileEnabled: false,
@@ -220,6 +263,7 @@ _defineProperty(UnifiedShareModal, "defaultProps", {
220
263
  inviteCollabTracking: {},
221
264
  modalTracking: {},
222
265
  removeLinkConfirmModalTracking: {},
266
+ removeCollaboratorConfirmModalTracking: {},
223
267
  collaboratorListTracking: {}
224
268
  }
225
269
  });
@@ -8,15 +8,18 @@ import { Modal } from '../../components/modal';
8
8
  import UnifiedShareModalTitle from './UnifiedShareModalTitle';
9
9
  import UnifiedShareForm from './UnifiedShareForm';
10
10
  import RemoveLinkConfirmModal from './RemoveLinkConfirmModal';
11
- import type { USMProps } from './flowTypes';
11
+ import RemoveCollaboratorConfirmModal from './RemoveCollaboratorConfirmModal';
12
+ import type { USMProps, collaboratorType } from './flowTypes';
12
13
 
13
14
  import './UnifiedShareModal.scss';
14
15
 
15
16
  type State = {
17
+ collaboratorToRemove: ?collaboratorType,
16
18
  getInitialDataCalled: boolean,
17
- isConfirmModalOpen: boolean,
18
19
  isEmailLinkSectionExpanded: boolean,
19
20
  isFetching: boolean,
21
+ isRemoveCollaboratorConfirmModalOpen: boolean,
22
+ isRemoveLinkConfirmModalOpen: boolean,
20
23
  sharedLinkLoaded: boolean,
21
24
  shouldRenderFTUXTooltip: boolean,
22
25
  showCollaboratorList: boolean,
@@ -24,6 +27,7 @@ type State = {
24
27
 
25
28
  class UnifiedShareModal extends React.Component<USMProps, State> {
26
29
  static defaultProps = {
30
+ canRemoveCollaborators: false,
27
31
  displayInModal: true,
28
32
  initiallySelectedContacts: [],
29
33
  isAllowEditSharedLinkForFileEnabled: false,
@@ -38,6 +42,7 @@ class UnifiedShareModal extends React.Component<USMProps, State> {
38
42
  inviteCollabTracking: {},
39
43
  modalTracking: {},
40
44
  removeLinkConfirmModalTracking: {},
45
+ removeCollaboratorConfirmModalTracking: {},
41
46
  collaboratorListTracking: {},
42
47
  },
43
48
  };
@@ -48,8 +53,10 @@ class UnifiedShareModal extends React.Component<USMProps, State> {
48
53
  const { initialDataReceived } = props;
49
54
 
50
55
  this.state = {
56
+ collaboratorToRemove: null,
51
57
  getInitialDataCalled: !!initialDataReceived,
52
- isConfirmModalOpen: false,
58
+ isRemoveLinkConfirmModalOpen: false,
59
+ isRemoveCollaboratorConfirmModalOpen: false,
53
60
  isEmailLinkSectionExpanded: false,
54
61
  isFetching: !initialDataReceived,
55
62
  sharedLinkLoaded: false,
@@ -121,11 +128,26 @@ class UnifiedShareModal extends React.Component<USMProps, State> {
121
128
  };
122
129
 
123
130
  openConfirmModal = () => {
124
- this.setState({ isConfirmModalOpen: true });
131
+ this.setState({ isRemoveLinkConfirmModalOpen: true });
132
+ };
133
+
134
+ openRemoveCollaboratorConfirmModal = (collaborator: collaboratorType) => {
135
+ const { canRemoveCollaborators } = this.props;
136
+ if (canRemoveCollaborators) {
137
+ this.setState({ isRemoveCollaboratorConfirmModalOpen: true, collaboratorToRemove: collaborator });
138
+ }
125
139
  };
126
140
 
127
141
  closeConfirmModal = () => {
128
- this.setState({ isConfirmModalOpen: false });
142
+ this.setState({ isRemoveLinkConfirmModalOpen: false });
143
+ };
144
+
145
+ closeRemoveCollaboratorConfirmModal = () => {
146
+ this.setState({
147
+ isRemoveCollaboratorConfirmModalOpen: false,
148
+ collaboratorToRemove: null,
149
+ shouldRenderFTUXTooltip: false,
150
+ });
129
151
  };
130
152
 
131
153
  removeLink = () => {
@@ -136,6 +158,15 @@ class UnifiedShareModal extends React.Component<USMProps, State> {
136
158
  }
137
159
  };
138
160
 
161
+ removeCollaborator = async () => {
162
+ const { onRemoveCollaborator } = this.props;
163
+ if (this.state.collaboratorToRemove) {
164
+ await onRemoveCollaborator?.(this.state.collaboratorToRemove);
165
+ }
166
+
167
+ this.closeRemoveCollaboratorConfirmModal();
168
+ };
169
+
139
170
  renderUSF = () => {
140
171
  const { onCollaboratorAvatarsClick, sharedLinkEditTagTargetingApi, sharedLinkEditTooltipTargetingApi } =
141
172
  this.props;
@@ -146,6 +177,7 @@ class UnifiedShareModal extends React.Component<USMProps, State> {
146
177
  {...this.props}
147
178
  onCollaboratorAvatarsClick={onCollaboratorAvatarsClick}
148
179
  handleFtuxCloseClick={this.handleFtuxCloseClick}
180
+ onRemoveCollaboratorClick={this.openRemoveCollaboratorConfirmModal}
149
181
  isFetching={isFetching}
150
182
  openConfirmModal={this.openConfirmModal}
151
183
  sharedLinkEditTagTargetingApi={sharedLinkEditTagTargetingApi}
@@ -159,14 +191,19 @@ class UnifiedShareModal extends React.Component<USMProps, State> {
159
191
  render() {
160
192
  // Shared link section props
161
193
  const { canInvite, displayInModal, isOpen, item, onRequestClose, submitting, trackingProps } = this.props;
162
- const { modalTracking, removeLinkConfirmModalTracking } = trackingProps;
194
+ const { modalTracking, removeLinkConfirmModalTracking, removeCollaboratorConfirmModalTracking } = trackingProps;
163
195
  const { modalProps } = modalTracking;
164
- const { isEmailLinkSectionExpanded, isConfirmModalOpen, showCollaboratorList } = this.state;
196
+ const {
197
+ isEmailLinkSectionExpanded,
198
+ isRemoveLinkConfirmModalOpen,
199
+ isRemoveCollaboratorConfirmModalOpen,
200
+ showCollaboratorList,
201
+ } = this.state;
165
202
 
166
203
  // focus logic at modal level
167
204
  const extendedModalProps = {
168
205
  focusElementSelector: canInvite
169
- ? '.bdl-PillSelector-input' // focus on invite collabs field
206
+ ? '.bdl-PillSelector-input' // focus on invite collaborators field
170
207
  : '.toggle-simple', // focus on shared link toggle
171
208
  ...modalProps,
172
209
  };
@@ -176,7 +213,7 @@ class UnifiedShareModal extends React.Component<USMProps, State> {
176
213
  {displayInModal ? (
177
214
  <Modal
178
215
  className="be-modal unified-share-modal"
179
- isOpen={isConfirmModalOpen ? false : isOpen}
216
+ isOpen={isRemoveLinkConfirmModalOpen || isRemoveCollaboratorConfirmModalOpen ? false : isOpen}
180
217
  onRequestClose={submitting ? undefined : onRequestClose}
181
218
  title={
182
219
  <UnifiedShareModalTitle
@@ -192,15 +229,26 @@ class UnifiedShareModal extends React.Component<USMProps, State> {
192
229
  ) : (
193
230
  <div className="bdl-UnifiedShareForm-container">{this.renderUSF()}</div>
194
231
  )}
195
- {isConfirmModalOpen && (
232
+ {isRemoveLinkConfirmModalOpen && (
196
233
  <RemoveLinkConfirmModal
197
- isOpen={isConfirmModalOpen}
234
+ isOpen={isRemoveLinkConfirmModalOpen}
198
235
  onRequestClose={this.closeConfirmModal}
199
236
  removeLink={this.removeLink}
200
237
  submitting={submitting}
201
238
  {...removeLinkConfirmModalTracking}
202
239
  />
203
240
  )}
241
+ {isRemoveCollaboratorConfirmModalOpen && (
242
+ <RemoveCollaboratorConfirmModal
243
+ isOpen={isRemoveCollaboratorConfirmModalOpen}
244
+ onRequestClose={this.closeRemoveCollaboratorConfirmModal}
245
+ onSubmit={this.removeCollaborator}
246
+ submitting={submitting}
247
+ collaborator={this.state.collaboratorToRemove}
248
+ modalProps={{ className: 'remove-collaborator-confirm-modal' }}
249
+ {...removeCollaboratorConfirmModalTracking}
250
+ />
251
+ )}
204
252
  </>
205
253
  );
206
254
  }