box-ui-elements 15.1.0-beta.10 → 15.1.0-beta.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DEVELOPING.md +1 -1
- package/dist/explorer.css +1 -1
- package/dist/explorer.js +13 -13
- package/dist/openwith.js +3 -3
- package/dist/picker.js +6 -6
- package/dist/preview.css +1 -1
- package/dist/preview.js +15 -15
- package/dist/sharing.js +5 -5
- package/dist/sidebar.css +1 -1
- package/dist/sidebar.js +16 -16
- package/dist/uploader.js +4 -4
- package/es/elements/content-sidebar/versions/StaticVersionSidebar.js +2 -3
- package/es/elements/content-sidebar/versions/StaticVersionSidebar.js.flow +2 -3
- package/es/elements/content-sidebar/versions/StaticVersionSidebar.js.map +1 -1
- package/es/elements/content-sidebar/versions/VersionsSidebar.js +4 -12
- package/es/elements/content-sidebar/versions/VersionsSidebar.js.flow +3 -16
- package/es/elements/content-sidebar/versions/VersionsSidebar.js.map +1 -1
- package/es/elements/content-sidebar/versions/VersionsSidebar.scss +0 -5
- package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js +13 -28
- package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.flow +8 -32
- package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.map +1 -1
- package/es/elements/content-sidebar/versions/messages.js +0 -4
- package/es/elements/content-sidebar/versions/messages.js.flow +0 -5
- package/es/elements/content-sidebar/versions/messages.js.map +1 -1
- package/es/features/unified-share-modal/UnifiedShareForm.js +1 -3
- package/es/features/unified-share-modal/UnifiedShareForm.js.flow +16 -20
- package/es/features/unified-share-modal/UnifiedShareForm.js.map +1 -1
- package/es/features/unified-share-modal/flowTypes.js.flow +0 -2
- package/es/features/unified-share-modal/flowTypes.js.map +1 -1
- package/i18n/bn-IN.js +0 -1
- package/i18n/bn-IN.properties +0 -2
- package/i18n/da-DK.js +0 -1
- package/i18n/da-DK.properties +0 -2
- package/i18n/de-DE.js +0 -1
- package/i18n/de-DE.properties +0 -2
- package/i18n/en-AU.js +0 -1
- package/i18n/en-AU.properties +0 -2
- package/i18n/en-CA.js +0 -1
- package/i18n/en-CA.properties +0 -2
- package/i18n/en-GB.js +0 -1
- package/i18n/en-GB.properties +0 -2
- package/i18n/en-US.js +0 -1
- package/i18n/en-US.properties +0 -2
- package/i18n/en-x-pseudo.js +842 -843
- package/i18n/en-x-pseudo.properties +853 -831
- package/i18n/es-419.js +0 -1
- package/i18n/es-419.properties +0 -2
- package/i18n/es-ES.js +0 -1
- package/i18n/es-ES.properties +0 -2
- package/i18n/fi-FI.js +0 -1
- package/i18n/fi-FI.properties +0 -2
- package/i18n/fr-CA.js +0 -1
- package/i18n/fr-CA.properties +0 -2
- package/i18n/fr-FR.js +0 -1
- package/i18n/fr-FR.properties +0 -2
- package/i18n/hi-IN.js +0 -1
- package/i18n/hi-IN.properties +0 -2
- package/i18n/it-IT.js +0 -1
- package/i18n/it-IT.properties +0 -2
- package/i18n/ja-JP.js +0 -1
- package/i18n/ja-JP.properties +0 -2
- package/i18n/ko-KR.js +0 -1
- package/i18n/ko-KR.properties +0 -2
- package/i18n/nb-NO.js +0 -1
- package/i18n/nb-NO.properties +0 -2
- package/i18n/nl-NL.js +0 -1
- package/i18n/nl-NL.properties +0 -2
- package/i18n/pl-PL.js +0 -1
- package/i18n/pl-PL.properties +0 -2
- package/i18n/pt-BR.js +0 -1
- package/i18n/pt-BR.properties +0 -2
- package/i18n/ru-RU.js +0 -1
- package/i18n/ru-RU.properties +0 -2
- package/i18n/sv-SE.js +0 -1
- package/i18n/sv-SE.properties +0 -2
- package/i18n/tr-TR.js +0 -1
- package/i18n/tr-TR.properties +0 -2
- package/i18n/zh-CN.js +0 -1
- package/i18n/zh-CN.properties +0 -2
- package/i18n/zh-TW.js +0 -1
- package/i18n/zh-TW.properties +0 -2
- package/package.json +2 -2
- package/src/elements/content-sidebar/versions/StaticVersionSidebar.js +2 -3
- package/src/elements/content-sidebar/versions/VersionsSidebar.js +3 -16
- package/src/elements/content-sidebar/versions/VersionsSidebar.scss +0 -5
- package/src/elements/content-sidebar/versions/VersionsSidebarContainer.js +8 -32
- package/src/elements/content-sidebar/versions/__tests__/VersionsSidebar.test.js +1 -18
- package/src/elements/content-sidebar/versions/__tests__/VersionsSidebarContainer.test.js +1 -26
- package/src/elements/content-sidebar/versions/__tests__/__snapshots__/VersionsSidebarContainer.test.js.snap +13 -47
- package/src/elements/content-sidebar/versions/messages.js +0 -5
- package/src/features/unified-share-modal/UnifiedShareForm.js +16 -20
- package/src/features/unified-share-modal/__tests__/UnifiedShareForm.test.js +0 -12
- package/src/features/unified-share-modal/flowTypes.js +0 -2
|
@@ -575,32 +575,28 @@ class UnifiedShareForm extends React.Component<USFProps, State> {
|
|
|
575
575
|
}
|
|
576
576
|
|
|
577
577
|
renderUpgradeLinkDescription() {
|
|
578
|
-
const { openUpgradePlanModal = () => {},
|
|
578
|
+
const { openUpgradePlanModal = () => {}, trackingProps = {} } = this.props;
|
|
579
579
|
const { inviteCollabsEmailTracking = {} } = trackingProps;
|
|
580
580
|
const { upgradeLinkProps = {} } = inviteCollabsEmailTracking;
|
|
581
581
|
|
|
582
582
|
return (
|
|
583
583
|
<div className="upgrade-description">
|
|
584
584
|
<UpgradeBadge />
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
}}
|
|
601
|
-
{...messages.upgradeGetMoreAccessControlsDescription}
|
|
602
|
-
/>
|
|
603
|
-
)}
|
|
585
|
+
<FormattedMessage
|
|
586
|
+
values={{
|
|
587
|
+
upgradeGetMoreAccessControlsLink: (
|
|
588
|
+
<PlainButton
|
|
589
|
+
className="upgrade-link"
|
|
590
|
+
onClick={openUpgradePlanModal}
|
|
591
|
+
type="button"
|
|
592
|
+
{...upgradeLinkProps}
|
|
593
|
+
>
|
|
594
|
+
<FormattedMessage {...messages.upgradeGetMoreAccessControlsLink} />
|
|
595
|
+
</PlainButton>
|
|
596
|
+
),
|
|
597
|
+
}}
|
|
598
|
+
{...messages.upgradeGetMoreAccessControlsDescription}
|
|
599
|
+
/>
|
|
604
600
|
</div>
|
|
605
601
|
);
|
|
606
602
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/features/unified-share-modal/UnifiedShareForm.js"],"names":["React","isEmpty","isEqual","FormattedMessage","injectIntl","FormattedCompMessage","LoadingIndicatorWrapper","Link","Button","UpgradeBadge","InlineNotice","PlainButton","ITEM_TYPE_WEBLINK","Tooltip","CollaboratorAvatars","CollaboratorList","InviteePermissionsMenu","messages","SharedLinkSection","EmailForm","getDefaultPermissionLevel","hasRestrictedExternalContacts","mergeContacts","JUSTIFICATION_CHECKPOINT_EXTERNAL_COLLAB","SHARED_LINKS_COMMUNITY_URL","INVITE_COLLABS_CONTACTS_TYPE","EMAIL_SHARED_LINK_CONTACTS_TYPE","UnifiedShareForm","props","item","checkpoint","justificationReasons","state","getJustificationReasons","hasJustificationReasons","length","Promise","resolve","setState","isFetchingJustificationReasons","typedID","then","classificationLabelId","options","map","id","title","displayText","value","finally","inviteCollabsContacts","isCollabRestrictionJustificationAllowed","restrictedExternalCollabEmails","hasRestrictedExternalCollabs","pills","onPillCreate","event","target","handleFtuxCloseClick","onAddLink","openConfirmModal","shouldRenderFTUXTooltip","trackingProps","sharedLinkTracking","onToggleLink","type","checked","showCollaboratorList","data","inviteePermissions","sendInvites","inviteCollabsEmailTracking","onSendClick","inviteePermissionLevel","defaultPermissionLevel","selectedPermissionLevel","emails","groupIDs","justificationReason","message","restrictedExternalEmails","params","join","emailMessage","permission","numsOfInvitees","numOfInviteeGroups","hasJustificationReason","hasRestrictedExternalInvitees","shouldSubmitJustificationReason","sendSharedLink","sharedLink","sharedLinkEmailTracking","permissionLevel","numsOfRecipients","numOfRecipientGroups","inviteCollabTracking","onInviteePermissionChange","selectOptionPills","filter","pill","getContactsByEmail","contacts","prevState","emailSharedLinkContacts","isInviteSectionExpanded","onEnterInviteCollabs","isEmailLinkSectionExpanded","some","contact","isExternalUser","currentInviteCollabsContacts","newInviteCollabsContacts","hasRestrictedExternalCollabsAfterUpdate","onRemoveAllRestrictedExternalCollabs","setUpdatedContacts","isRemovingAllRestrictedExternalCollabs","focusSharedLinkOnLoad","sharedLinkLoaded","createSharedLinkOnLoad","isNewSharedLink","initiallySelectedContacts","prevProps","prevRestrictedExternalCollabEmails","prevIsCollabRestrictionJustificationAllowed","didExternalCollabRestrictionsChange","shouldRequireExternalCollabJustification","fetchJustificationReasons","canInvite","collaborationRestrictionWarning","config","contactLimit","getCollaboratorContacts","getContactAvatarUrl","recommendedSharingTooltipCalloutName","sendInvitesError","showEnterEmailsCallout","showCalloutForUser","showUpgradeInlineNotice","showUpgradeOptions","submitting","suggestedCollaborators","modalTracking","contactsFieldDisabledTooltip","inviteDisabledWeblinkTooltip","inviteDisabledTooltip","inlineNotice","content","avatars","renderCollaboratorAvatars","ftuxConfirmButtonProps","ftuxTooltipText","ftuxNewUSMUserTitle","ftuxNewUSMUserBody","ftuxLinkText","ftuxConfirmLabel","ftuxTooltipProps","className","isShown","position","showCloseButton","text","theme","inviteFieldLabel","hasExternalContact","openInviteCollaborators","handleInviteCollabPillCreate","closeInviteCollaborators","handleSendInvites","openInviteCollaboratorsSection","updateInviteCollabsContacts","renderInviteePermissionsDropdown","renderUpgradeLinkDescription","collaboratorsList","currentUserID","avatarsContent","collaborators","hideCollaborators","canShowCollaboratorAvatars","collaborator","String","userID","collaboratorAvatarsProps","resinTarget","openUpgradePlanModal","upgradeLink","showNewUpgradeText","upgradeLinkProps","renderCollaboratorMessage","upgradeGetMoreAccessControlsLink","upgradeGetMoreAccessControlsDescription","upgradeInlineNoticeTitle","inviteePermissionsButtonProps","handleInviteePermissionChange","name","collaboratorListTracking","listContent","closeCollaboratorList","allShareRestrictionWarning","changeSharedLinkAccessLevel","changeSharedLinkPermissionLevel","displayInModal","getSharedLinkContacts","intl","isAllowEditSharedLinkForFileEnabled","isFetching","onCopyError","onCopyInit","onCopySuccess","onDismissTooltip","onSettingsClick","sendSharedLinkError","sharedLinkEditTagTargetingApi","sharedLinkEditTooltipTargetingApi","showSharedLinkSettingsCallout","tooltips","showShareRestrictionWarning","renderUpgradeInlineNotice","renderInviteSection","shouldAutoFocusSharedLink","openEmailSharedLinkForm","onToggleSharedLink","sendSharedLinkFieldLabel","handleEmailSharedLinkPillCreate","closeEmailSharedLinkForm","handleSendSharedLink","updateEmailSharedLinkContacts","renderCollaboratorList","Component","removeLinkConfirmModalTracking","UnifiedShareFormBase"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,OAAOC,OAAP,MAAoB,gBAApB;AACA,OAAOC,OAAP,MAAoB,gBAApB;AACA,SAASC,gBAAT,EAA2BC,UAA3B,QAA6C,YAA7C;AAEA,OAAOC,oBAAP,MAAiC,4CAAjC;AACA,OAAOC,uBAAP,MAAoC,4DAApC;AACA,SAASC,IAAT,QAAqB,uBAArB;AACA,OAAOC,MAAP,MAAmB,yBAAnB;AACA,SAASC,YAAT,QAA6B,wBAA7B;AACA,OAAOC,YAAP,MAAyB,gCAAzB;AACA,OAAOC,WAAP,MAAwB,+BAAxB;AACA,SAASC,iBAAT,QAAkC,wBAAlC;AACA,OAAOC,OAAP,MAAoB,0BAApB;AACA,SAASC,mBAAT,EAA8BC,gBAA9B,QAAsD,yBAAtD;AAEA,OAAOC,sBAAP,MAAmC,0BAAnC;AACA,OAAOC,QAAP,MAAqB,YAArB;AACA,OAAOC,iBAAP,MAA8B,qBAA9B;AACA,OAAOC,SAAP,MAAsB,aAAtB;AACA,OAAOC,yBAAP,MAAsC,gCAAtC;AACA,OAAOC,6BAAP,MAA0C,uCAA1C;AACA,OAAOC,aAAP,MAA0B,uBAA1B;AACA,SAASC,wCAAT,QAAyD,aAAzD;AAWA,IAAMC,0BAA0B,GAAG,kFAAnC;AACA,IAAMC,4BAA4B,GAAG,uBAArC;AACA,IAAMC,+BAA+B,GAAG,yBAAxC;;IAcMC,gB;;;;;AAkBF,4BAAYC,KAAZ,EAA6B;AAAA;;AAAA;;AACzB,0FAAMA,KAAN;;AADyB,gFAgCD,UAACC,IAAD,EAAaC,UAAb,EAAqD;AAAA,UACrEC,oBADqE,GAC5C,MAAKC,KADuC,CACrED,oBADqE;AAAA,UAErEE,uBAFqE,GAEzC,MAAKL,KAFoC,CAErEK,uBAFqE;AAG7E,UAAMC,uBAAuB,GAAG,CAAC,CAACH,oBAAoB,CAACI,MAAvD;;AAEA,UAAI,CAACF,uBAAD,IAA4BC,uBAAhC,EAAyD;AACrD,eAAOE,OAAO,CAACC,OAAR,EAAP;AACH;;AACD,YAAKC,QAAL,CAAc;AAAEC,QAAAA,8BAA8B,EAAE;AAAlC,OAAd;;AAEA,aAAON,uBAAuB,CAACJ,IAAI,CAACW,OAAN,EAAeV,UAAf,CAAvB,CACFW,IADE,CACG,gBAAyE;AAAA,YAAtEC,qBAAsE,QAAtEA,qBAAsE;AAAA,YAA/CC,OAA+C,QAA/CA,OAA+C;;AAC3E,cAAKL,QAAL,CAAc;AACVI,UAAAA,qBAAqB,EAArBA,qBADU;AAEVX,UAAAA,oBAAoB,EAAEY,OAAO,CAACC,GAAR,CAAY;AAAA,gBAAGC,EAAH,SAAGA,EAAH;AAAA,gBAAOC,KAAP,SAAOA,KAAP;AAAA,mBAAoB;AAClDC,cAAAA,WAAW,EAAED,KADqC;AAElDE,cAAAA,KAAK,EAAEH;AAF2C,aAApB;AAAA,WAAZ;AAFZ,SAAd;AAOH,OATE,EAUFI,OAVE,CAUM,YAAM;AACX,cAAKX,QAAL,CAAc;AAAEC,UAAAA,8BAA8B,EAAE;AAAlC,SAAd;AACH,OAZE,CAAP;AAaH,KAvD4B;;AAAA,+FAyDc,YAAM;AAAA,UACrCW,qBADqC,GACX,MAAKlB,KADM,CACrCkB,qBADqC;AAAA,wBAEuC,MAAKtB,KAF5C;AAAA,UAErCuB,uCAFqC,eAErCA,uCAFqC;AAAA,UAEIC,8BAFJ,eAEIA,8BAFJ;AAI7C,UAAMC,4BAA4B,GAAGhC,6BAA6B,CAC9D6B,qBAD8D,EAE9DE,8BAF8D,CAAlE;AAIA,aAAOC,4BAA4B,IAAIF,uCAAvC;AACH,KAlE4B;;AAAA,mFAoEE,UAACG,KAAD,EAA8C;AACzE,aAAO,MAAKC,YAAL,CAAkB9B,4BAAlB,EAAgD6B,KAAhD,CAAP;AACH,KAtE4B;;AAAA,sFAwEK,UAACA,KAAD,EAA8C;AAC5E,aAAO,MAAKC,YAAL,CAAkB7B,+BAAlB,EAAmD4B,KAAnD,CAAP;AACH,KA1E4B;;AAAA,yEA4ER,UAACE,KAAD,EAAkD;AAAA,UAC3DC,MAD2D,GAChDD,KADgD,CAC3DC,MAD2D;AAAA,yBAQ/D,MAAK7B,KAR0D;AAAA,UAG/D8B,oBAH+D,gBAG/DA,oBAH+D;AAAA,UAI/DC,SAJ+D,gBAI/DA,SAJ+D;AAAA,UAK/DC,gBAL+D,gBAK/DA,gBAL+D;AAAA,UAM/DC,uBAN+D,gBAM/DA,uBAN+D;AAAA,UAO/DC,aAP+D,gBAO/DA,aAP+D;AAAA,UAS3DC,kBAT2D,GASpCD,aAToC,CAS3DC,kBAT2D;AAAA,UAU3DC,YAV2D,GAU1CD,kBAV0C,CAU3DC,YAV2D;;AAYnE,UAAIH,uBAAJ,EAA6B;AACzBH,QAAAA,oBAAoB;AACvB;;AAED,UAAID,MAAM,CAACQ,IAAP,KAAgB,UAApB,EAAgC;AAC5B,YAAIR,MAAM,CAACS,OAAP,KAAmB,KAAvB,EAA8B;AAC1BN,UAAAA,gBAAgB;AACnB,SAFD,MAEO;AACHD,UAAAA,SAAS;AACZ;;AAED,YAAIK,YAAJ,EAAkB;AACdA,UAAAA,YAAY,CAACP,MAAM,CAACS,OAAR,CAAZ;AACH;AACJ;AACJ,KAvG4B;;AAAA,2EAyGN,YAAM;AACzB,YAAK5B,QAAL,CAAc;AAAE6B,QAAAA,oBAAoB,EAAE;AAAxB,OAAd;AACH,KA3G4B;;AAAA,4EA6GL,YAAM;AAC1B,YAAK7B,QAAL,CAAc;AAAE6B,QAAAA,oBAAoB,EAAE;AAAxB,OAAd;AACH,KA/G4B;;AAAA,wEAiHT,UAACC,IAAD,EAAkB;AAAA,yBACkE,MAAKxC,KADvE;AAAA,UAC1ByC,kBAD0B,gBAC1BA,kBAD0B;AAAA,UACNlB,uCADM,gBACNA,uCADM;AAAA,UACmCmB,WADnC,gBACmCA,WADnC;AAAA,UACgDR,aADhD,gBACgDA,aADhD;AAAA,UAE1BS,0BAF0B,GAEKT,aAFL,CAE1BS,0BAF0B;AAAA,UAG1BC,WAH0B,GAGVD,0BAHU,CAG1BC,WAH0B;AAAA,wBAIwB,MAAKxC,KAJ7B;AAAA,UAI1BU,qBAJ0B,eAI1BA,qBAJ0B;AAAA,UAIH+B,sBAJG,eAIHA,sBAJG;AAKlC,UAAMC,sBAAsB,GAAGtD,yBAAyB,CAACiD,kBAAD,CAAxD;AACA,UAAMM,uBAAuB,GAAGF,sBAAsB,IAAIC,sBAA1D;AANkC,UAO1BE,MAP0B,GAOmDR,IAPnD,CAO1BQ,MAP0B;AAAA,UAOlBC,QAPkB,GAOmDT,IAPnD,CAOlBS,QAPkB;AAAA,UAORC,mBAPQ,GAOmDV,IAPnD,CAORU,mBAPQ;AAAA,UAOaC,OAPb,GAOmDX,IAPnD,CAOaW,OAPb;AAAA,UAOsBC,wBAPtB,GAOmDZ,IAPnD,CAOsBY,wBAPtB;AASlC,UAAIC,MAAM,GAAG;AACTL,QAAAA,MAAM,EAAEA,MAAM,CAACM,IAAP,CAAY,GAAZ,CADC;AAETL,QAAAA,QAAQ,EAAEA,QAAQ,CAACK,IAAT,CAAc,GAAd,CAFD;AAGTC,QAAAA,YAAY,EAAEJ,OAHL;AAITK,QAAAA,UAAU,EAAET,uBAJH;AAKTU,QAAAA,cAAc,EAAET,MAAM,CAACzC,MALd;AAMTmD,QAAAA,kBAAkB,EAAET,QAAQ,CAAC1C;AANpB,OAAb;AASA,UAAMoD,sBAAsB,GAAG,CAAC,CAACT,mBAAjC;AACA,UAAMU,6BAA6B,GAAG,CAACvF,OAAO,CAAC+E,wBAAD,CAA9C;AACA,UAAMS,+BAA+B,GACjCF,sBAAsB,IAAIC,6BAA1B,IAA2DrC,uCAD/D;;AAGA,UAAIsC,+BAAJ,EAAqC;AACjCR,QAAAA,MAAM,qBACCA,MADD;AAEFvC,UAAAA,qBAAqB,EAArBA,qBAFE;AAGFoC,UAAAA,mBAAmB,EAAE;AACjBjC,YAAAA,EAAE,EAAEiC,mBAAmB,CAAC9B,KADP;AAEjBF,YAAAA,KAAK,EAAEgC,mBAAmB,CAAC/B;AAFV;AAHnB,UAAN;AAQH;;AAED,UAAIyB,WAAJ,EAAiB;AACbA,QAAAA,WAAW,CAACS,MAAD,CAAX;AACH;;AAED,aAAOX,WAAW,CAACW,MAAD,CAAlB;AACH,KAxJ4B;;AAAA,2EA0JN,UAACb,IAAD,EAAkB;AAAA,yBACiB,MAAKxC,KADtB;AAAA,UAC7B8D,cAD6B,gBAC7BA,cAD6B;AAAA,UACbC,UADa,gBACbA,UADa;AAAA,UACD7B,aADC,gBACDA,aADC;AAAA,UAE7B8B,uBAF6B,GAED9B,aAFC,CAE7B8B,uBAF6B;AAAA,UAG7BC,eAH6B,GAGTF,UAHS,CAG7BE,eAH6B;AAAA,UAI7BrB,WAJ6B,GAIboB,uBAJa,CAI7BpB,WAJ6B;AAAA,UAM7BI,MAN6B,GAMRR,IANQ,CAM7BQ,MAN6B;AAAA,UAMrBC,QANqB,GAMRT,IANQ,CAMrBS,QANqB;;AAQrC,UAAIL,WAAJ,EAAiB;AACb,YAAMS,MAAM,qBACLb,IADK;AAER0B,UAAAA,gBAAgB,EAAElB,MAAM,CAACzC,MAFjB;AAGR4D,UAAAA,oBAAoB,EAAElB,QAAQ,CAAC1C,MAHvB;AAIR0D,UAAAA,eAAe,EAAfA;AAJQ,UAAZ;;AAMArB,QAAAA,WAAW,CAACS,MAAD,CAAX;AACH;;AAED,aAAOS,cAAc,CAACtB,IAAD,CAArB;AACH,KA7K4B;;AAAA,oFAgLG,UAACyB,eAAD,EAA6B;AAAA,UACjD/B,aADiD,GAC/B,MAAKlC,KAD0B,CACjDkC,aADiD;AAAA,UAEjDkC,oBAFiD,GAExBlC,aAFwB,CAEjDkC,oBAFiD;AAAA,UAGjDC,yBAHiD,GAGnBD,oBAHmB,CAGjDC,yBAHiD;;AAKzD,YAAK3D,QAAL,CAAc;AAAEmC,QAAAA,sBAAsB,EAAEoB;AAA1B,OAAd;;AAEA,UAAII,yBAAJ,EAA+B;AAC3BA,QAAAA,yBAAyB,CAACJ,eAAD,CAAzB;AACH;AACJ,KA1L4B;;AAAA,mEA4Ld,UAAC5B,IAAD,EAAeX,KAAf,EAA4D;AACvE;AACA;AACA,UAAM4C,iBAAiB,GAAG5C,KAAK,CAAC6C,MAAN,CAAa,UAAAC,IAAI;AAAA,eAAI,CAACA,IAAI,CAACvD,EAAV;AAAA,OAAjB,CAA1B;;AACA,UAAIqD,iBAAiB,CAAC/D,MAAlB,KAA6B,CAAjC,EAAoC;AAChC;AACH;;AANsE,UAQ/DkE,kBAR+D,GAQxC,MAAKzE,KARmC,CAQ/DyE,kBAR+D;;AAUvE,UAAIA,kBAAJ,EAAwB;AACpB,YAAMzB,MAAM,GAAGtB,KAAK,CAACV,GAAN,CAAU,UAAAwD,IAAI;AAAA,iBAAIA,IAAI,CAACpD,KAAT;AAAA,SAAd,CAAf,CADoB,CAEpB;;AACAqD,QAAAA,kBAAkB,CAAC;AAAEzB,UAAAA,MAAM,EAANA;AAAF,SAAD,CAAlB,CAA+BnC,IAA/B,CAAoC,UAAC6D,QAAD,EAAsB;AACtD,cAAIrC,IAAI,KAAKxC,4BAAb,EAA2C;AACvC,kBAAKa,QAAL,CAAc,UAAAiE,SAAS;AAAA,qBAAK;AACxBrD,gBAAAA,qBAAqB,EAAE5B,aAAa,CAACiF,SAAS,CAACrD,qBAAX,EAAkCoD,QAAlC;AADZ,eAAL;AAAA,aAAvB;AAGH,WAJD,MAIO,IAAIrC,IAAI,KAAKvC,+BAAb,EAA8C;AACjD,kBAAKY,QAAL,CAAc,UAAAiE,SAAS;AAAA,qBAAK;AACxBC,gBAAAA,uBAAuB,EAAElF,aAAa,CAACiF,SAAS,CAACC,uBAAX,EAAoCF,QAApC;AADd,eAAL;AAAA,aAAvB;AAGH;AACJ,SAVD;AAWH;AACJ,KArN4B;;AAAA,8EAuNH,UAACtD,KAAD,EAAmB;AAAA,UACjCU,oBADiC,GACR,MAAK9B,KADG,CACjC8B,oBADiC;;AAEzC,UAAI,MAAK1B,KAAL,CAAWyE,uBAAf,EAAwC;AACpC;AACH,OAJwC,CAMzC;AACA;;;AACA,UAAIzD,KAAK,KAAK,EAAd,EAAkB;AACdU,QAAAA,oBAAoB;;AACpB,cAAKpB,QAAL,CACI;AACImE,UAAAA,uBAAuB,EAAE;AAD7B,SADJ,EAII,YAAM;AAAA,cAG8BC,oBAH9B,GAKE,MAAK9E,KALP,CAEEkC,aAFF,CAGMkC,oBAHN,CAG8BU,oBAH9B;;AAOF,cAAIA,oBAAJ,EAA0B;AACtBA,YAAAA,oBAAoB;AACvB;AACJ,SAdL;AAgBH;AACJ,KAlP4B;;AAAA,qFAoPI,YAAM;AACnC,YAAKpE,QAAL,CAAc;AACVmE,QAAAA,uBAAuB,EAAE;AADf,OAAd;AAGH,KAxP4B;;AAAA,+EA0PF,YAAM;AAC7B,YAAKnE,QAAL,CAAc;AACVmE,QAAAA,uBAAuB,EAAE;AADf,OAAd;AAGH,KA9P4B;;AAAA,8EAgQH,YAAM;AAAA,UACpB/C,oBADoB,GACK,MAAK9B,KADV,CACpB8B,oBADoB;AAE5BA,MAAAA,oBAAoB;;AACpB,YAAKpB,QAAL,CAAc;AACVqE,QAAAA,0BAA0B,EAAE;AADlB,OAAd;AAGH,KAtQ4B;;AAAA,+EAwQF,YAAM;AAC7B,YAAKrE,QAAL,CAAc;AAAEqE,QAAAA,0BAA0B,EAAE;AAA9B,OAAd;AACH,KA1Q4B;;AAAA,yEA4QR,UAAC1C,IAAD,EAA2B;AAAA,yBACe,MAAKjC,KADpB;AAAA,UACpCkB,qBADoC,gBACpCA,qBADoC;AAAA,UACbsD,uBADa,gBACbA,uBADa;;AAE5C,UAAIvC,IAAI,KAAKxC,4BAAb,EAA2C;AACvC,eAAOyB,qBAAqB,CAAC0D,IAAtB,CAA2B,UAAAC,OAAO;AAAA,iBAAIA,OAAO,CAACC,cAAZ;AAAA,SAAlC,CAAP;AACH;;AACD,UAAI7C,IAAI,KAAKvC,+BAAb,EAA8C;AAC1C,eAAO8E,uBAAuB,CAACI,IAAxB,CAA6B,UAAAC,OAAO;AAAA,iBAAIA,OAAO,CAACC,cAAZ;AAAA,SAApC,CAAP;AACH;;AACD,aAAO,KAAP;AACH,KArR4B;;AAAA,6FAuRY,UACrCC,4BADqC,EAErCC,wBAFqC,EAGpC;AAAA,UACO5D,8BADP,GAC0C,MAAKxB,KAD/C,CACOwB,8BADP;AAGD,UAAMC,4BAA4B,GAAGhC,6BAA6B,CAC9D0F,4BAD8D,EAE9D3D,8BAF8D,CAAlE;AAIA,UAAM6D,uCAAuC,GAAG5F,6BAA6B,CACzE2F,wBADyE,EAEzE5D,8BAFyE,CAA7E;AAKA,aAAOC,4BAA4B,IAAI,CAAC4D,uCAAxC;AACH,KAvS4B;;AAAA,kFAySC,UAAC/D,qBAAD,EAA2C;AAAA,UACtC6D,4BADsC,GACL,MAAK/E,KADA,CAC7DkB,qBAD6D;AAAA,yBAEA,MAAKtB,KAFL;AAAA,UAE7DsF,oCAF6D,gBAE7DA,oCAF6D;AAAA,UAEvBC,kBAFuB,gBAEvBA,kBAFuB;;AAIrE,UAAMC,sCAAsC,GAAG,MAAKA,sCAAL,CAC3CL,4BAD2C,EAE3C7D,qBAF2C,CAA/C;;AAKA,YAAKZ,QAAL,CAAc;AACVY,QAAAA,qBAAqB,EAArBA;AADU,OAAd;;AAIA,UAAIiE,kBAAJ,EAAwB;AACpBA,QAAAA,kBAAkB,CAACjE,qBAAD,CAAlB;AACH;;AACD,UAAIgE,oCAAoC,IAAIE,sCAA5C,EAAoF;AAChFF,QAAAA,oCAAoC;AACvC;AACJ,KA5T4B;;AAAA,oFA8TG,UAACV,uBAAD,EAA6C;AACzE,YAAKlE,QAAL,CAAc;AACVkE,QAAAA,uBAAuB,EAAvBA;AADU,OAAd;AAGH,KAlU4B;;AAAA,gFAoUD,YAAM;AAAA,yBAC0D,MAAK5E,KAD/D;AAAA,UACtByF,qBADsB,gBACtBA,qBADsB;AAAA,UACC1B,UADD,gBACCA,UADD;AAAA,UACa2B,gBADb,gBACaA,gBADb;AAAA,UAC+BC,sBAD/B,gBAC+BA,sBAD/B;;AAG9B,UAAI,CAACA,sBAAD,IAA2B,CAACF,qBAAhC,EAAuD;AACnD,eAAO,KAAP;AACH,OAL6B,CAM9B;;;AACA,UAAI,EAAEA,qBAAqB,IAAI1B,UAAU,CAAC6B,eAAtC,CAAJ,EAA4D;AACxD,eAAO,KAAP;AACH,OAT6B,CAU9B;;;AACA,UAAI,CAACF,gBAAL,EAAuB;AACnB,eAAO,KAAP;AACH;;AACD,aAAO,IAAP;AACH,KAnV4B;;AAGzB,UAAKtF,KAAL,GAAa;AACTU,MAAAA,qBAAqB,EAAE,EADd;AAET8D,MAAAA,uBAAuB,EAAE,EAFhB;AAGTtD,MAAAA,qBAAqB,EAAEtB,KAAK,CAAC6F,yBAHpB;AAIThD,MAAAA,sBAAsB,EAAE,EAJf;AAKTkC,MAAAA,0BAA0B,EAAE,KALnB;AAMTpE,MAAAA,8BAA8B,EAAE,KANvB;AAOTkE,MAAAA,uBAAuB,EAAE,CAAC,CAAC7E,KAAK,CAAC6F,yBAAN,CAAgCtF,MAPlD;AAQTJ,MAAAA,oBAAoB,EAAE,EARb;AASToC,MAAAA,oBAAoB,EAAE;AATb,KAAb;AAHyB;AAc5B;;;;uCAEkBuD,S,EAAqB;AAAA,yBACsD,KAAK9F,KAD3D;AAAA,UAC5BuB,uCAD4B,gBAC5BA,uCAD4B;AAAA,UACatB,IADb,gBACaA,IADb;AAAA,UACmBuB,8BADnB,gBACmBA,8BADnB;AAAA,UAGAuE,kCAHA,GAKhCD,SALgC,CAGhCtE,8BAHgC;AAAA,UAISwE,2CAJT,GAKhCF,SALgC,CAIhCvE,uCAJgC;AAOpC,UAAM0E,mCAAmC,GACrC,CAAC3H,OAAO,CAACkD,8BAAD,EAAiCuE,kCAAjC,CAAR,IACAxE,uCAAuC,KAAKyE,2CAFhD;;AAIA,UAAIC,mCAAmC,IAAI,KAAKC,wCAAL,EAA3C,EAA4F;AACxF,aAAKC,yBAAL,CAA+BlG,IAA/B,EAAqCN,wCAArC;AACH;AACJ;;;0CAuTqB;AAAA,yBAqBd,KAAKK,KArBS;AAAA,UAEdoG,SAFc,gBAEdA,SAFc;AAAA,UAGdC,+BAHc,gBAGdA,+BAHc;AAAA,UAIdC,MAJc,gBAIdA,MAJc;AAAA,UAKdC,YALc,gBAKdA,YALc;AAAA,UAMdC,uBANc,gBAMdA,uBANc;AAAA,UAOdC,mBAPc,gBAOdA,mBAPc;AAAA,UAQd3E,oBARc,gBAQdA,oBARc;AAAA,UASd7B,IATc,gBASdA,IATc;AAAA,+CAUdyG,oCAVc;AAAA,UAUdA,oCAVc,sCAUyB,IAVzB;AAAA,UAWdlF,8BAXc,gBAWdA,8BAXc;AAAA,UAYdmF,gBAZc,gBAYdA,gBAZc;AAAA,UAad1E,uBAbc,gBAadA,uBAbc;AAAA,+CAcd2E,sBAdc;AAAA,UAcdA,sBAdc,sCAcW,KAdX;AAAA,+CAedC,kBAfc;AAAA,UAedA,kBAfc,sCAeO,KAfP;AAAA,+CAgBdC,uBAhBc;AAAA,UAgBdA,uBAhBc,sCAgBY,KAhBZ;AAAA,UAiBdC,kBAjBc,gBAiBdA,kBAjBc;AAAA,UAkBdC,UAlBc,gBAkBdA,UAlBc;AAAA,UAmBdC,sBAnBc,gBAmBdA,sBAnBc;AAAA,UAoBd/E,aApBc,gBAoBdA,aApBc;AAAA,UAsBVG,IAtBU,GAsBDpC,IAtBC,CAsBVoC,IAtBU;AAAA,yBAuBwE,KAAKjC,KAvB7E;AAAA,UAuBVO,8BAvBU,gBAuBVA,8BAvBU;AAAA,UAuBsBkE,uBAvBtB,gBAuBsBA,uBAvBtB;AAAA,UAuB+C1E,oBAvB/C,gBAuB+CA,oBAvB/C;AAAA,UAwBVwC,0BAxBU,GAwBoCT,aAxBpC,CAwBVS,0BAxBU;AAAA,UAwBkBuE,aAxBlB,GAwBoChF,aAxBpC,CAwBkBgF,aAxBlB;AAyBlB,UAAMC,4BAA4B,GAC9B9E,IAAI,KAAKrD,iBAAT,GACI,oBAAC,gBAAD,EAAsBK,QAAQ,CAAC+H,4BAA/B,CADJ,GAGI,oBAAC,gBAAD,EAAsB/H,QAAQ,CAACgI,qBAA/B,CAJR;AAMA,UAAMC,YAAY,GAAGX,gBAAgB,GAC/B;AACItE,QAAAA,IAAI,EAAE,OADV;AAEIkF,QAAAA,OAAO,EAAEZ;AAFb,OAD+B,GAK/B;AACItE,QAAAA,IAAI,EAAE,SADV;AAEIkF,QAAAA,OAAO,EAAElB;AAFb,OALN;AASA,UAAMmB,OAAO,GAAG,KAAKC,yBAAL,EAAhB;AAxCkB,UAyCVC,sBAzCU,GAyCiBR,aAzCjB,CAyCVQ,sBAzCU;AA0ClB,UAAMC,eAAe,GACjB,iCACI;AAAI,QAAA,SAAS,EAAC;AAAd,SACI,oBAAC,gBAAD,EAAsBtI,QAAQ,CAACuI,mBAA/B,CADJ,CADJ,EAII;AAAG,QAAA,SAAS,EAAC;AAAb,SACI,oBAAC,gBAAD,EAAsBvI,QAAQ,CAACwI,kBAA/B,CADJ,EAC0D,GAD1D,EAEI,oBAAC,IAAD;AAAM,QAAA,SAAS,EAAC,mBAAhB;AAAoC,QAAA,IAAI,EAAEjI,0BAA1C;AAAsE,QAAA,MAAM,EAAC;AAA7E,SACI,oBAAC,gBAAD,EAAsBP,QAAQ,CAACyI,YAA/B,CADJ,CAFJ,CAJJ,EAUI;AAAK,QAAA,SAAS,EAAC;AAAf,SACI,oBAAC,MAAD;AAAQ,QAAA,SAAS,EAAC,qBAAlB;AAAwC,QAAA,OAAO,EAAEhG;AAAjD,SAA2E4F,sBAA3E,GACI,oBAAC,gBAAD,EAAsBrI,QAAQ,CAAC0I,gBAA/B,CADJ,CADJ,CAVJ,CADJ;AAkBA,UAAMC,gBAAgB,GAAG;AACrBC,QAAAA,SAAS,EAAE,kBADU;AAErB;AACAC,QAAAA,OAAO,EAAE,CAACxB,oCAAD,IAAyCzE,uBAAzC,IAAoE4E,kBAHxD;AAIrBsB,QAAAA,QAAQ,EAAE,aAJW;AAKrBC,QAAAA,eAAe,EAAE,IALI;AAMrBC,QAAAA,IAAI,EAAEV,eANe;AAOrBW,QAAAA,KAAK,EAAE;AAPc,OAAzB;AAUA,aACI,0CACI,oBAAC,OAAD,EAAaN,gBAAb,EACI;AAAK,QAAA,SAAS,EAAC,+BAAf;AAA+C,uBAAY;AAA3D,SACI,oBAAC,SAAD;AACI,QAAA,MAAM,EAAE1B,MADZ;AAEI,QAAA,YAAY,EAAEC,YAFlB;AAGI,QAAA,oBAAoB,EAAEiB,OAH1B;AAII,QAAA,4BAA4B,EAAEL,4BAJlC;AAKI,QAAA,kBAAkB,EAAE,oBAAC,gBAAD,EAAsB9H,QAAQ,CAACkJ,gBAA/B,CALxB;AAMI,QAAA,WAAW,EAAE/B,uBANjB;AAOI,QAAA,mBAAmB,EAAEC,mBAPzB;AAQI,QAAA,YAAY,EAAEa,YARlB;AASI,QAAA,sBAAsB,EAAElB,SAT5B;AAUI,QAAA,UAAU,EAAEvB,uBAVhB;AAWI,QAAA,8BAA8B,EAAElE,8BAXpC;AAYI,QAAA,sBAAsB,EAAE,KAAK6H,kBAAL,CAAwB3I,4BAAxB,CAZ5B;AAaI,QAAA,iCAAiC,EAAE,KAAKqG,wCAAL,EAbvC;AAcI,QAAA,oBAAoB,EAAE/F,oBAd1B;AAeI,QAAA,cAAc,EAAE,KAAKsI,uBAfzB;AAgBI,QAAA,YAAY,EAAE,KAAKC,4BAhBvB;AAiBI,QAAA,cAAc,EAAE,KAAKC,wBAjBzB;AAkBI,QAAA,QAAQ,EAAE,KAAKC,iBAlBnB;AAmBI,QAAA,8BAA8B,EAAE,KAAKC,8BAnBzC;AAoBI,QAAA,oCAAoC,EAAEnC,oCApB1C;AAqBI,QAAA,wBAAwB,EAAElF,8BArB9B;AAsBI,QAAA,sBAAsB,EAAEoF,sBAtB5B;AAuBI,QAAA,UAAU,EAAEI,UAvBhB;AAwBI,QAAA,gBAAgB,EAAE,KAAK5G,KAAL,CAAWkB,qBAxBjC;AAyBI,QAAA,sBAAsB,EAAE2F,sBAzB5B;AA0BI,QAAA,sBAAsB,EAAE,KAAK6B;AA1BjC,SA2BQnG,0BA3BR,GA6BK,KAAKoG,gCAAL,EA7BL,EA8BKhC,kBAAkB,IAAI,CAACD,uBAAvB,IAAkD,KAAKkC,4BAAL,EA9BvD,CADJ,CADJ,CADJ,CADJ;AAwCH;;;gDAE2B;AAAA,yBACqD,KAAKhJ,KAD1D;AAAA,UAChBiJ,iBADgB,gBAChBA,iBADgB;AAAA,UACG7C,SADH,gBACGA,SADH;AAAA,UACc8C,aADd,gBACcA,aADd;AAAA,UAC6BjJ,IAD7B,gBAC6BA,IAD7B;AAAA,UACmCiC,aADnC,gBACmCA,aADnC;AAAA,UAEhBgF,aAFgB,GAEEhF,aAFF,CAEhBgF,aAFgB;AAGxB,UAAIiC,cAAc,GAAG,IAArB;;AAEA,UAAIF,iBAAJ,EAAuB;AAAA,YACXG,aADW,GACOH,iBADP,CACXG,aADW;AAAA,oCAEkBnJ,IAFlB,CAEXoJ,iBAFW;AAAA,YAEXA,iBAFW,sCAES,IAFT;AAGnB,YAAMC,0BAA0B,GAAGD,iBAAiB,GAAGjD,SAAH,GAAe,IAAnE,CAHmB,CAKnB;;AACA+C,QAAAA,cAAc,GAAGG,0BAA0B,IACvC,oBAAC,mBAAD;AACI,UAAA,aAAa,EAAEF,aAAa,CAAC7E,MAAd,CAAqB,UAAAgF,YAAY;AAAA,mBAAIC,MAAM,CAACD,YAAY,CAACE,MAAd,CAAN,KAAgCP,aAApC;AAAA,WAAjC,CADnB;AAEI,UAAA,OAAO,EAAE,KAAK3G,oBAFlB;AAGI,UAAA,mBAAmB,EAAE2E,aAAa,CAACwC;AAHvC,UADJ;AAOH;;AAED,aAAOP,cAAP;AACH;;;8CAEyBQ,W,EAAqB;AAAA,kCACC,KAAK3J,KADN,CACnC4J,oBADmC;AAAA,UACnCA,oBADmC,sCACZ,YAAM,CAAE,CADI;AAE3C,aACI,0CACI,oBAAC,oBAAD;AACI,QAAA,EAAE,EAAC,yDADP;AAEI,QAAA,WAAW,EAAC;AAFhB,6BAIqB,GAJrB,EAKI,oBAAC,IAAD;AACI,QAAA,SAAS,EAAC,cADd;AAEI,QAAA,IAAI,EAAC,qGAFT;AAGI,QAAA,MAAM,EAAC;AAHX,+BALJ,EAWY,GAXZ,0DAYyD,GAZzD,CADJ,EAeI,oBAAC,WAAD;AACI,QAAA,SAAS,EAAC,cADd;AAEI,6BAAmBD,WAFvB;AAGI,QAAA,OAAO,EAAEC,oBAHb;AAII,QAAA,IAAI,EAAC;AAJT,SAMI,oBAAC,gBAAD,EAAsBvK,QAAQ,CAACwK,WAA/B,CANJ,CAfJ,CADJ;AA0BH;;;mDAE8B;AAAA,0BACiE,KAAK7J,KADtE;AAAA,gDACnB4J,oBADmB;AAAA,UACnBA,oBADmB,sCACI,YAAM,CAAE,CADZ;AAAA,gDACcE,kBADd;AAAA,UACcA,kBADd,sCACmC,KADnC;AAAA,gDAC0C5H,aAD1C;AAAA,UAC0CA,aAD1C,sCAC0D,EAD1D;AAAA,kCAEiBA,aAFjB,CAEnBS,0BAFmB;AAAA,UAEnBA,0BAFmB,sCAEU,EAFV;AAAA,kCAGOA,0BAHP,CAGnBoH,gBAHmB;AAAA,UAGnBA,gBAHmB,sCAGA,EAHA;AAK3B,aACI;AAAK,QAAA,SAAS,EAAC;AAAf,SACI,oBAAC,YAAD,OADJ,EAEKD,kBAAkB,GACf,KAAKE,yBAAL,CAA+B,qCAA/B,CADe,GAGf,oBAAC,gBAAD;AACI,QAAA,MAAM,EAAE;AACJC,UAAAA,gCAAgC,EAC5B,oBAAC,WAAD;AACI,YAAA,SAAS,EAAC,cADd;AAEI,YAAA,OAAO,EAAEL,oBAFb;AAGI,YAAA,IAAI,EAAC;AAHT,aAIQG,gBAJR,GAMI,oBAAC,gBAAD,EAAsB1K,QAAQ,CAAC4K,gCAA/B,CANJ;AAFA;AADZ,SAaQ5K,QAAQ,CAAC6K,uCAbjB,EALR,CADJ;AAwBH;;;gDAE2B;AACxB,aACI,oBAAC,YAAD;AAAc,QAAA,KAAK,EAAE,oBAAC,gBAAD,EAAsB7K,QAAQ,CAAC8K,wBAA/B,CAArB;AAAkF,QAAA,IAAI,EAAC;AAAvF,SACK,KAAKH,yBAAL,CAA+B,yCAA/B,CADL,CADJ;AAKH;;;uDAEkC;AAAA,0BAC4C,KAAKhK,KADjD;AAAA,UACvByC,kBADuB,iBACvBA,kBADuB;AAAA,UACHxC,IADG,iBACHA,IADG;AAAA,UACG+G,UADH,iBACGA,UADH;AAAA,UACeZ,SADf,iBACeA,SADf;AAAA,UAC0BlE,aAD1B,iBAC0BA,aAD1B;AAAA,UAEvBG,IAFuB,GAEdpC,IAFc,CAEvBoC,IAFuB;AAAA,UAGvB+B,oBAHuB,GAGElC,aAHF,CAGvBkC,oBAHuB;AAK/B,aACI3B,kBAAkB,IACd,oBAAC,sBAAD;AACI,QAAA,QAAQ,EAAE,CAAC2D,SAAD,IAAcY,UAD5B;AAEI,QAAA,6BAA6B,EAAE5C,oBAAoB,CAACgG,6BAFxD;AAGI,QAAA,sBAAsB,EAAE,KAAKhK,KAAL,CAAWyC,sBAHvC;AAII,QAAA,kBAAkB,EAAEJ,kBAJxB;AAKI,QAAA,4BAA4B,EAAE,KAAK4H,6BALvC;AAMI,QAAA,QAAQ,EAAEhI;AANd,QAFR;AAYH;;;6CAEwB;AAAA,0BAC8B,KAAKrC,KADnC;AAAA,UACbC,IADa,iBACbA,IADa;AAAA,UACPgJ,iBADO,iBACPA,iBADO;AAAA,UACY/G,aADZ,iBACYA,aADZ;AAAA,UAEboI,IAFa,GAEErK,IAFF,CAEbqK,IAFa;AAAA,UAEPjI,IAFO,GAEEpC,IAFF,CAEPoC,IAFO;AAAA,UAGbkI,wBAHa,GAGgBrI,aAHhB,CAGbqI,wBAHa;AAIrB,UAAIC,WAAW,GAAG,IAAlB;;AAEA,UAAIvB,iBAAJ,EAAuB;AAAA,YACXG,aADW,GACOH,iBADP,CACXG,aADW;AAGnBoB,QAAAA,WAAW,GACP,oBAAC,gBAAD;AACI,UAAA,QAAQ,EAAEF,IADd;AAEI,UAAA,QAAQ,EAAEjI,IAFd;AAGI,UAAA,WAAW,EAAE,KAAKoI,qBAHtB;AAII,UAAA,IAAI,EAAExK,IAJV;AAKI,UAAA,aAAa,EAAEmJ,aALnB;AAMI,UAAA,aAAa,EAAEmB;AANnB,UADJ;AAUH;;AAED,aAAOC,WAAP;AACH;;;6BAEQ;AACL;AADK,0BAiCD,KAAKxK,KAjCJ;AAAA,UAGD0K,0BAHC,iBAGDA,0BAHC;AAAA,UAIDC,2BAJC,iBAIDA,2BAJC;AAAA,UAKDhF,sBALC,iBAKDA,sBALC;AAAA,UAMDiF,+BANC,iBAMDA,+BANC;AAAA,UAODtE,MAPC,iBAODA,MAPC;AAAA,UAQDuE,cARC,iBAQDA,cARC;AAAA,UASDpF,qBATC,iBASDA,qBATC;AAAA,UAUDqF,qBAVC,iBAUDA,qBAVC;AAAA,UAWDrE,mBAXC,iBAWDA,mBAXC;AAAA,UAYDsE,IAZC,iBAYDA,IAZC;AAAA,UAaDC,mCAbC,iBAaDA,mCAbC;AAAA,UAcDC,UAdC,iBAcDA,UAdC;AAAA,UAeDhL,IAfC,iBAeDA,IAfC;AAAA,UAgBD8B,SAhBC,iBAgBDA,SAhBC;AAAA,UAiBDmJ,WAjBC,iBAiBDA,WAjBC;AAAA,UAkBDC,UAlBC,iBAkBDA,UAlBC;AAAA,UAmBDC,aAnBC,iBAmBDA,aAnBC;AAAA,gDAoBDC,gBApBC;AAAA,UAoBDA,gBApBC,sCAoBkB,YAAM,CAAE,CApB1B;AAAA,UAqBDC,eArBC,iBAqBDA,eArBC;AAAA,UAsBDC,mBAtBC,iBAsBDA,mBAtBC;AAAA,UAuBDxH,UAvBC,iBAuBDA,UAvBC;AAAA,UAwBDyH,6BAxBC,iBAwBDA,6BAxBC;AAAA,UAyBDC,iCAzBC,iBAyBDA,iCAzBC;AAAA,gDA0BD7E,sBA1BC;AAAA,UA0BDA,sBA1BC,sCA0BwB,KA1BxB;AAAA,gDA2BD8E,6BA3BC;AAAA,UA2BDA,6BA3BC,sCA2B+B,KA3B/B;AAAA,gDA4BD5E,uBA5BC;AAAA,UA4BDA,uBA5BC,sCA4ByB,KA5BzB;AAAA,UA6BDC,kBA7BC,iBA6BDA,kBA7BC;AAAA,UA8BDC,UA9BC,iBA8BDA,UA9BC;AAAA,gDA+BD2E,QA/BC;AAAA,UA+BDA,QA/BC,sCA+BU,EA/BV;AAAA,UAgCDzJ,aAhCC,iBAgCDA,aAhCC;AAAA,UAkCGC,kBAlCH,GAkCmDD,aAlCnD,CAkCGC,kBAlCH;AAAA,UAkCuB6B,uBAlCvB,GAkCmD9B,aAlCnD,CAkCuB8B,uBAlCvB;AAAA,yBAmCiF,KAAK5D,KAnCtF;AAAA,UAmCG2E,0BAnCH,gBAmCGA,0BAnCH;AAAA,UAmC+BF,uBAnC/B,gBAmC+BA,uBAnC/B;AAAA,UAmCwDtC,oBAnCxD,gBAmCwDA,oBAnCxD,EAqCL;;AACA,UAAMqJ,2BAA2B,GAC7B,CAAC7G,0BAAD,IACA,CAACF,uBADD,IAEA,CAACtC,oBAFD,IAGAmI,0BAJJ;AAMA,aACI;AAAK,QAAA,SAAS,EAAEG,cAAc,GAAG,EAAH,GAAQ;AAAtC,SACI,oBAAC,uBAAD;AAAyB,QAAA,SAAS,EAAEI,UAApC;AAAgD,QAAA,WAAW;AAA3D,SACKW,2BAA2B,IAAIlB,0BADpC,EAEK3D,kBAAkB,IAAID,uBAAtB,IAAiD,KAAK+E,yBAAL,EAFtD,EAIK,CAAC9G,0BAAD,IAA+B,CAACxC,oBAAhC,IAAwD,KAAKuJ,mBAAL,EAJ7D,EAMK,CAAC/G,0BAAD,IAA+B,CAACF,uBAAhC,IAA2D,CAACtC,oBAA5D,IACG,oBAAC,iBAAD;AACI,QAAA,aAAa,EAAER,SADnB;AAEI,QAAA,mBAAmB,EAAE,KAAKgK,yBAAL,EAFzB;AAGI,QAAA,oBAAoB,EAAEpG,sBAH1B;AAII,QAAA,MAAM,EAAEW,MAJZ;AAKI,QAAA,iBAAiB,EAAEX,sBAAsB,IAAIF,qBALjD;AAMI,QAAA,2BAA2B,EAAEkF,2BANjC;AAOI,QAAA,+BAA+B,EAAEC,+BAPrC;AAQI,QAAA,IAAI,EAAEG,IARV;AASI,QAAA,mCAAmC,EAAEC,mCATzC;AAUI,QAAA,IAAI,EAAE/K,IAVV;AAWI,QAAA,QAAQ,EAAEA,IAAI,CAACoC,IAXnB;AAYI,QAAA,gBAAgB,EAAEgJ,gBAZtB;AAaI,QAAA,sBAAsB,EAAE,KAAKW,uBAbjC;AAcI,QAAA,eAAe,EAAEV,eAdrB;AAeI,QAAA,kBAAkB,EAAE,KAAKW,kBAf7B;AAgBI,QAAA,UAAU,EAAEd,UAhBhB;AAiBI,QAAA,aAAa,EAAEC,aAjBnB;AAkBI,QAAA,WAAW,EAAEF,WAlBjB;AAmBI,QAAA,UAAU,EAAEnH,UAnBhB;AAoBI,QAAA,6BAA6B,EAAEyH,6BApBnC;AAqBI,QAAA,iCAAiC,EAAEC,iCArBvC;AAsBI,QAAA,6BAA6B,EAAEC,6BAtBnC;AAuBI,QAAA,UAAU,EAAE1E,UAAU,IAAIiE,UAvB9B;AAwBI,QAAA,aAAa,EAAE9I,kBAxBnB;AAyBI,QAAA,QAAQ,EAAEwJ;AAzBd,QAPR,EAoCK5G,0BAA0B,IAAI,CAACxC,oBAA/B,IACG,oBAAC,SAAD;AACI,QAAA,kBAAkB,EAAE,oBAAC,gBAAD,EAAsBlD,QAAQ,CAAC6M,wBAA/B,CADxB;AAEI,QAAA,mBAAmB,EAAEzF,mBAFzB;AAGI,QAAA,WAAW,EAAEqE,qBAHjB;AAII,QAAA,YAAY,EAAE;AACVzI,UAAAA,IAAI,EAAE,OADI;AAEVkF,UAAAA,OAAO,EAAEgE;AAFC,SAJlB;AAQI,QAAA,sBAAsB,MAR1B;AASI,QAAA,UAAU,MATd;AAUI,QAAA,sBAAsB,EAAE,KAAK/C,kBAAL,CAAwB1I,+BAAxB,CAV5B;AAWI,QAAA,YAAY,EAAE,KAAKqM,+BAXvB;AAYI,QAAA,cAAc,EAAE,KAAKC,wBAZzB;AAaI,QAAA,QAAQ,EAAE,KAAKC,oBAbnB;AAcI,QAAA,sBAAsB,EAAEzF,sBAd5B;AAeI,QAAA,UAAU,EAAEI,UAfhB;AAgBI,QAAA,gBAAgB,EAAE,KAAK5G,KAAL,CAAWwE,uBAhBjC;AAiBI,QAAA,sBAAsB,EAAE,KAAK0H;AAjBjC,SAkBQtI,uBAlBR,EArCR,EA0DKzB,oBAAoB,IAAI,KAAKgK,sBAAL,EA1D7B,CADJ,CADJ;AAgEH;;;;EA1sB0BnO,KAAK,CAACoO,S;;gBAA/BzM,gB,kBACoB;AAClB8K,EAAAA,cAAc,EAAE,IADE;AAElBhF,EAAAA,yBAAyB,EAAE,EAFT;AAGlBF,EAAAA,sBAAsB,EAAE,KAHN;AAIlBF,EAAAA,qBAAqB,EAAE,KAJL;AAKlBjE,EAAAA,8BAA8B,EAAE,EALd;AAMlBU,EAAAA,aAAa,EAAE;AACXqI,IAAAA,wBAAwB,EAAE,EADf;AAEX5H,IAAAA,0BAA0B,EAAE,EAFjB;AAGXyB,IAAAA,oBAAoB,EAAE,EAHX;AAIX8C,IAAAA,aAAa,EAAE,EAJJ;AAKXuF,IAAAA,8BAA8B,EAAE,EALrB;AAMXzI,IAAAA,uBAAuB,EAAE,EANd;AAOX7B,IAAAA,kBAAkB,EAAE;AAPT;AANG,C;;AA4sB1B,SAASpC,gBAAgB,IAAI2M,oBAA7B;AACA,eAAelO,UAAU,CAACuB,gBAAD,CAAzB","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 FormattedCompMessage from '../../components/i18n/FormattedCompMessage';\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_WEBLINK } from '../../common/constants';\nimport Tooltip from '../../components/tooltip';\nimport { CollaboratorAvatars, CollaboratorList } from '../collaborator-avatars';\n\nimport InviteePermissionsMenu from './InviteePermissionsMenu';\nimport messages from './messages';\nimport SharedLinkSection from './SharedLinkSection';\nimport EmailForm from './EmailForm';\nimport getDefaultPermissionLevel from './utils/defaultPermissionLevel';\nimport hasRestrictedExternalContacts from './utils/hasRestrictedExternalContacts';\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 restrictedExternalCollabEmails: [],\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, restrictedExternalCollabEmails } = this.props;\n const {\n restrictedExternalCollabEmails: prevRestrictedExternalCollabEmails,\n isCollabRestrictionJustificationAllowed: prevIsCollabRestrictionJustificationAllowed,\n } = prevProps;\n\n const didExternalCollabRestrictionsChange =\n !isEqual(restrictedExternalCollabEmails, prevRestrictedExternalCollabEmails) ||\n isCollabRestrictionJustificationAllowed !== prevIsCollabRestrictionJustificationAllowed;\n\n if (didExternalCollabRestrictionsChange && this.shouldRequireExternalCollabJustification()) {\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 shouldRequireExternalCollabJustification = () => {\n const { inviteCollabsContacts } = this.state;\n const { isCollabRestrictionJustificationAllowed, restrictedExternalCollabEmails } = this.props;\n\n const hasRestrictedExternalCollabs = hasRestrictedExternalContacts(\n inviteCollabsContacts,\n restrictedExternalCollabEmails,\n );\n return hasRestrictedExternalCollabs && 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 {\n handleFtuxCloseClick,\n onAddLink,\n openConfirmModal,\n shouldRenderFTUXTooltip,\n 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 this.setState({ showCollaboratorList: true });\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, restrictedExternalEmails } = 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 hasRestrictedExternalInvitees = !isEmpty(restrictedExternalEmails);\n const shouldSubmitJustificationReason =\n hasJustificationReason && hasRestrictedExternalInvitees && 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 isRemovingAllRestrictedExternalCollabs = (\n currentInviteCollabsContacts: Array<Contact>,\n newInviteCollabsContacts: Array<Contact>,\n ) => {\n const { restrictedExternalCollabEmails } = this.props;\n\n const hasRestrictedExternalCollabs = hasRestrictedExternalContacts(\n currentInviteCollabsContacts,\n restrictedExternalCollabEmails,\n );\n const hasRestrictedExternalCollabsAfterUpdate = hasRestrictedExternalContacts(\n newInviteCollabsContacts,\n restrictedExternalCollabEmails,\n );\n\n return hasRestrictedExternalCollabs && !hasRestrictedExternalCollabsAfterUpdate;\n };\n\n updateInviteCollabsContacts = (inviteCollabsContacts: Array<Contact>) => {\n const { inviteCollabsContacts: currentInviteCollabsContacts } = this.state;\n const { onRemoveAllRestrictedExternalCollabs, setUpdatedContacts } = this.props;\n\n const isRemovingAllRestrictedExternalCollabs = this.isRemovingAllRestrictedExternalCollabs(\n currentInviteCollabsContacts,\n inviteCollabsContacts,\n );\n\n this.setState({\n inviteCollabsContacts,\n });\n\n if (setUpdatedContacts) {\n setUpdatedContacts(inviteCollabsContacts);\n }\n if (onRemoveAllRestrictedExternalCollabs && isRemovingAllRestrictedExternalCollabs) {\n onRemoveAllRestrictedExternalCollabs();\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 collaborationRestrictionWarning,\n config,\n contactLimit,\n getCollaboratorContacts,\n getContactAvatarUrl,\n handleFtuxCloseClick,\n item,\n recommendedSharingTooltipCalloutName = null,\n restrictedExternalCollabEmails,\n sendInvitesError,\n shouldRenderFTUXTooltip,\n showEnterEmailsCallout = false,\n showCalloutForUser = false,\n showUpgradeInlineNotice = false,\n showUpgradeOptions,\n submitting,\n suggestedCollaborators,\n trackingProps,\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\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 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.shouldRequireExternalCollabJustification()}\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 restrictedExternalEmails={restrictedExternalCollabEmails}\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 && !showUpgradeInlineNotice && 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 <FormattedCompMessage\n id=\"boxui.unifiedShare.upgradeCollaboratorAccessDescription\"\n description=\"Description for cta to upgrade to get collaborator access controls\"\n >\n Set the level of{' '}\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 collaborator access\n </Link>{' '}\n and increase security through one of our paid plans.{' '}\n </FormattedCompMessage>\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 }\n\n renderUpgradeLinkDescription() {\n const { openUpgradePlanModal = () => {}, showNewUpgradeText = false, trackingProps = {} } = this.props;\n const { inviteCollabsEmailTracking = {} } = trackingProps;\n const { upgradeLinkProps = {} } = inviteCollabsEmailTracking;\n\n return (\n <div className=\"upgrade-description\">\n <UpgradeBadge />\n {showNewUpgradeText ? (\n this.renderCollaboratorMessage('external_collab_newcopy_upgrade_cta')\n ) : (\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 )}\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 createSharedLinkOnLoad,\n changeSharedLinkPermissionLevel,\n config,\n displayInModal,\n focusSharedLinkOnLoad,\n getSharedLinkContacts,\n getContactAvatarUrl,\n intl,\n isAllowEditSharedLinkForFileEnabled,\n isFetching,\n item,\n onAddLink,\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 } = this.props;\n const { sharedLinkTracking, sharedLinkEmailTracking } = trackingProps;\n const { isEmailLinkSectionExpanded, isInviteSectionExpanded, showCollaboratorList } = this.state;\n\n // Only show the restriction warning on the main page of the USM where the email and share link option is available\n const showShareRestrictionWarning =\n !isEmailLinkSectionExpanded &&\n !isInviteSectionExpanded &&\n !showCollaboratorList &&\n allShareRestrictionWarning;\n\n return (\n <div className={displayInModal ? '' : 'be bdl-UnifiedShareForm'}>\n <LoadingIndicatorWrapper isLoading={isFetching} hideContent>\n {showShareRestrictionWarning && allShareRestrictionWarning}\n {showUpgradeOptions && showUpgradeInlineNotice && this.renderUpgradeInlineNotice()}\n\n {!isEmailLinkSectionExpanded && !showCollaboratorList && this.renderInviteSection()}\n\n {!isEmailLinkSectionExpanded && !isInviteSectionExpanded && !showCollaboratorList && (\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 {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"],"file":"UnifiedShareForm.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/features/unified-share-modal/UnifiedShareForm.js"],"names":["React","isEmpty","isEqual","FormattedMessage","injectIntl","FormattedCompMessage","LoadingIndicatorWrapper","Link","Button","UpgradeBadge","InlineNotice","PlainButton","ITEM_TYPE_WEBLINK","Tooltip","CollaboratorAvatars","CollaboratorList","InviteePermissionsMenu","messages","SharedLinkSection","EmailForm","getDefaultPermissionLevel","hasRestrictedExternalContacts","mergeContacts","JUSTIFICATION_CHECKPOINT_EXTERNAL_COLLAB","SHARED_LINKS_COMMUNITY_URL","INVITE_COLLABS_CONTACTS_TYPE","EMAIL_SHARED_LINK_CONTACTS_TYPE","UnifiedShareForm","props","item","checkpoint","justificationReasons","state","getJustificationReasons","hasJustificationReasons","length","Promise","resolve","setState","isFetchingJustificationReasons","typedID","then","classificationLabelId","options","map","id","title","displayText","value","finally","inviteCollabsContacts","isCollabRestrictionJustificationAllowed","restrictedExternalCollabEmails","hasRestrictedExternalCollabs","pills","onPillCreate","event","target","handleFtuxCloseClick","onAddLink","openConfirmModal","shouldRenderFTUXTooltip","trackingProps","sharedLinkTracking","onToggleLink","type","checked","showCollaboratorList","data","inviteePermissions","sendInvites","inviteCollabsEmailTracking","onSendClick","inviteePermissionLevel","defaultPermissionLevel","selectedPermissionLevel","emails","groupIDs","justificationReason","message","restrictedExternalEmails","params","join","emailMessage","permission","numsOfInvitees","numOfInviteeGroups","hasJustificationReason","hasRestrictedExternalInvitees","shouldSubmitJustificationReason","sendSharedLink","sharedLink","sharedLinkEmailTracking","permissionLevel","numsOfRecipients","numOfRecipientGroups","inviteCollabTracking","onInviteePermissionChange","selectOptionPills","filter","pill","getContactsByEmail","contacts","prevState","emailSharedLinkContacts","isInviteSectionExpanded","onEnterInviteCollabs","isEmailLinkSectionExpanded","some","contact","isExternalUser","currentInviteCollabsContacts","newInviteCollabsContacts","hasRestrictedExternalCollabsAfterUpdate","onRemoveAllRestrictedExternalCollabs","setUpdatedContacts","isRemovingAllRestrictedExternalCollabs","focusSharedLinkOnLoad","sharedLinkLoaded","createSharedLinkOnLoad","isNewSharedLink","initiallySelectedContacts","prevProps","prevRestrictedExternalCollabEmails","prevIsCollabRestrictionJustificationAllowed","didExternalCollabRestrictionsChange","shouldRequireExternalCollabJustification","fetchJustificationReasons","canInvite","collaborationRestrictionWarning","config","contactLimit","getCollaboratorContacts","getContactAvatarUrl","recommendedSharingTooltipCalloutName","sendInvitesError","showEnterEmailsCallout","showCalloutForUser","showUpgradeInlineNotice","showUpgradeOptions","submitting","suggestedCollaborators","modalTracking","contactsFieldDisabledTooltip","inviteDisabledWeblinkTooltip","inviteDisabledTooltip","inlineNotice","content","avatars","renderCollaboratorAvatars","ftuxConfirmButtonProps","ftuxTooltipText","ftuxNewUSMUserTitle","ftuxNewUSMUserBody","ftuxLinkText","ftuxConfirmLabel","ftuxTooltipProps","className","isShown","position","showCloseButton","text","theme","inviteFieldLabel","hasExternalContact","openInviteCollaborators","handleInviteCollabPillCreate","closeInviteCollaborators","handleSendInvites","openInviteCollaboratorsSection","updateInviteCollabsContacts","renderInviteePermissionsDropdown","renderUpgradeLinkDescription","collaboratorsList","currentUserID","avatarsContent","collaborators","hideCollaborators","canShowCollaboratorAvatars","collaborator","String","userID","collaboratorAvatarsProps","resinTarget","openUpgradePlanModal","upgradeLink","upgradeLinkProps","upgradeGetMoreAccessControlsLink","upgradeGetMoreAccessControlsDescription","upgradeInlineNoticeTitle","renderCollaboratorMessage","inviteePermissionsButtonProps","handleInviteePermissionChange","name","collaboratorListTracking","listContent","closeCollaboratorList","allShareRestrictionWarning","changeSharedLinkAccessLevel","changeSharedLinkPermissionLevel","displayInModal","getSharedLinkContacts","intl","isAllowEditSharedLinkForFileEnabled","isFetching","onCopyError","onCopyInit","onCopySuccess","onDismissTooltip","onSettingsClick","sendSharedLinkError","sharedLinkEditTagTargetingApi","sharedLinkEditTooltipTargetingApi","showSharedLinkSettingsCallout","tooltips","showShareRestrictionWarning","renderUpgradeInlineNotice","renderInviteSection","shouldAutoFocusSharedLink","openEmailSharedLinkForm","onToggleSharedLink","sendSharedLinkFieldLabel","handleEmailSharedLinkPillCreate","closeEmailSharedLinkForm","handleSendSharedLink","updateEmailSharedLinkContacts","renderCollaboratorList","Component","removeLinkConfirmModalTracking","UnifiedShareFormBase"],"mappings":"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","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 FormattedCompMessage from '../../components/i18n/FormattedCompMessage';\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_WEBLINK } from '../../common/constants';\nimport Tooltip from '../../components/tooltip';\nimport { CollaboratorAvatars, CollaboratorList } from '../collaborator-avatars';\n\nimport InviteePermissionsMenu from './InviteePermissionsMenu';\nimport messages from './messages';\nimport SharedLinkSection from './SharedLinkSection';\nimport EmailForm from './EmailForm';\nimport getDefaultPermissionLevel from './utils/defaultPermissionLevel';\nimport hasRestrictedExternalContacts from './utils/hasRestrictedExternalContacts';\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 restrictedExternalCollabEmails: [],\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, restrictedExternalCollabEmails } = this.props;\n const {\n restrictedExternalCollabEmails: prevRestrictedExternalCollabEmails,\n isCollabRestrictionJustificationAllowed: prevIsCollabRestrictionJustificationAllowed,\n } = prevProps;\n\n const didExternalCollabRestrictionsChange =\n !isEqual(restrictedExternalCollabEmails, prevRestrictedExternalCollabEmails) ||\n isCollabRestrictionJustificationAllowed !== prevIsCollabRestrictionJustificationAllowed;\n\n if (didExternalCollabRestrictionsChange && this.shouldRequireExternalCollabJustification()) {\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 shouldRequireExternalCollabJustification = () => {\n const { inviteCollabsContacts } = this.state;\n const { isCollabRestrictionJustificationAllowed, restrictedExternalCollabEmails } = this.props;\n\n const hasRestrictedExternalCollabs = hasRestrictedExternalContacts(\n inviteCollabsContacts,\n restrictedExternalCollabEmails,\n );\n return hasRestrictedExternalCollabs && 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 {\n handleFtuxCloseClick,\n onAddLink,\n openConfirmModal,\n shouldRenderFTUXTooltip,\n 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 this.setState({ showCollaboratorList: true });\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, restrictedExternalEmails } = 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 hasRestrictedExternalInvitees = !isEmpty(restrictedExternalEmails);\n const shouldSubmitJustificationReason =\n hasJustificationReason && hasRestrictedExternalInvitees && 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 isRemovingAllRestrictedExternalCollabs = (\n currentInviteCollabsContacts: Array<Contact>,\n newInviteCollabsContacts: Array<Contact>,\n ) => {\n const { restrictedExternalCollabEmails } = this.props;\n\n const hasRestrictedExternalCollabs = hasRestrictedExternalContacts(\n currentInviteCollabsContacts,\n restrictedExternalCollabEmails,\n );\n const hasRestrictedExternalCollabsAfterUpdate = hasRestrictedExternalContacts(\n newInviteCollabsContacts,\n restrictedExternalCollabEmails,\n );\n\n return hasRestrictedExternalCollabs && !hasRestrictedExternalCollabsAfterUpdate;\n };\n\n updateInviteCollabsContacts = (inviteCollabsContacts: Array<Contact>) => {\n const { inviteCollabsContacts: currentInviteCollabsContacts } = this.state;\n const { onRemoveAllRestrictedExternalCollabs, setUpdatedContacts } = this.props;\n\n const isRemovingAllRestrictedExternalCollabs = this.isRemovingAllRestrictedExternalCollabs(\n currentInviteCollabsContacts,\n inviteCollabsContacts,\n );\n\n this.setState({\n inviteCollabsContacts,\n });\n\n if (setUpdatedContacts) {\n setUpdatedContacts(inviteCollabsContacts);\n }\n if (onRemoveAllRestrictedExternalCollabs && isRemovingAllRestrictedExternalCollabs) {\n onRemoveAllRestrictedExternalCollabs();\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 collaborationRestrictionWarning,\n config,\n contactLimit,\n getCollaboratorContacts,\n getContactAvatarUrl,\n handleFtuxCloseClick,\n item,\n recommendedSharingTooltipCalloutName = null,\n restrictedExternalCollabEmails,\n sendInvitesError,\n shouldRenderFTUXTooltip,\n showEnterEmailsCallout = false,\n showCalloutForUser = false,\n showUpgradeInlineNotice = false,\n showUpgradeOptions,\n submitting,\n suggestedCollaborators,\n trackingProps,\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\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 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.shouldRequireExternalCollabJustification()}\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 restrictedExternalEmails={restrictedExternalCollabEmails}\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 && !showUpgradeInlineNotice && 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 <FormattedCompMessage\n id=\"boxui.unifiedShare.upgradeCollaboratorAccessDescription\"\n description=\"Description for cta to upgrade to get collaborator access controls\"\n >\n Set the level of{' '}\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 collaborator access\n </Link>{' '}\n and increase security through one of our paid plans.{' '}\n </FormattedCompMessage>\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 }\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 createSharedLinkOnLoad,\n changeSharedLinkPermissionLevel,\n config,\n displayInModal,\n focusSharedLinkOnLoad,\n getSharedLinkContacts,\n getContactAvatarUrl,\n intl,\n isAllowEditSharedLinkForFileEnabled,\n isFetching,\n item,\n onAddLink,\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 } = this.props;\n const { sharedLinkTracking, sharedLinkEmailTracking } = trackingProps;\n const { isEmailLinkSectionExpanded, isInviteSectionExpanded, showCollaboratorList } = this.state;\n\n // Only show the restriction warning on the main page of the USM where the email and share link option is available\n const showShareRestrictionWarning =\n !isEmailLinkSectionExpanded &&\n !isInviteSectionExpanded &&\n !showCollaboratorList &&\n allShareRestrictionWarning;\n\n return (\n <div className={displayInModal ? '' : 'be bdl-UnifiedShareForm'}>\n <LoadingIndicatorWrapper isLoading={isFetching} hideContent>\n {showShareRestrictionWarning && allShareRestrictionWarning}\n {showUpgradeOptions && showUpgradeInlineNotice && this.renderUpgradeInlineNotice()}\n\n {!isEmailLinkSectionExpanded && !showCollaboratorList && this.renderInviteSection()}\n\n {!isEmailLinkSectionExpanded && !isInviteSectionExpanded && !showCollaboratorList && (\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 {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"],"file":"UnifiedShareForm.js"}
|
|
@@ -393,8 +393,6 @@ export type USFProps = BaseUnifiedShareProps & {
|
|
|
393
393
|
sharedLinkLoaded: boolean,
|
|
394
394
|
/** Whether the FTUX tooltip should be rendered */
|
|
395
395
|
shouldRenderFTUXTooltip: boolean,
|
|
396
|
-
/** Whether the new upgrade text should be rendered */
|
|
397
|
-
showNewUpgradeText?: boolean,
|
|
398
396
|
/** Whether the upgrade inline notice should be rendered */
|
|
399
397
|
showUpgradeInlineNotice?: boolean,
|
|
400
398
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/features/unified-share-modal/flowTypes.js"],"names":["React","constants","accessLevelValues","ANYONE_WITH_LINK","ANYONE_IN_COMPANY","PEOPLE_IN_ITEM","permissionLevelValues","CAN_EDIT","CAN_VIEW_DOWNLOAD","CAN_VIEW_ONLY","collaboratorGroupValues","COLLAB_GROUP_TYPE","COLLAB_USER_TYPE","COLLAB_PENDING_TYPE"],"mappings":";;;;AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,OAAO,KAAKC,SAAZ,MAA2B,aAA3B;AAIA;AACA,IAAMC,iBAAiB,iEAClBD,SAAS,CAACE,gBADQ,EACW,kBADX,uCAElBF,SAAS,CAACG,iBAFQ,EAEY,mBAFZ,uCAGlBH,SAAS,CAACI,cAHQ,EAGS,gBAHT,sBAAvB;AAOA,IAAMC,qBAAqB,uEACtBL,SAAS,CAACM,QADY,EACD,UADC,0CAEtBN,SAAS,CAACO,iBAFY,EAEQ,mBAFR,0CAGtBP,SAAS,CAACQ,aAHY,EAGI,eAHJ,yBAA3B;AAOA,IAAMC,uBAAuB,uEACxBT,SAAS,CAACU,iBADc,EACM,mBADN,0CAExBV,SAAS,CAACW,gBAFc,EAEK,kBAFL,0CAGxBX,SAAS,CAACY,mBAHc,EAGQ,qBAHR,yBAA7B","sourcesContent":["// @flow\nimport * as React from 'react';\nimport * as constants from './constants';\nimport type { BoxItemPermission, ItemType } from '../../common/types/core';\nimport type { TargetingApi } from '../targeting/types';\n\n// DRY: Invert the constants so that we can construct the appropriate enum types\nconst accessLevelValues = {\n [constants.ANYONE_WITH_LINK]: 'ANYONE_WITH_LINK',\n [constants.ANYONE_IN_COMPANY]: 'ANYONE_IN_COMPANY',\n [constants.PEOPLE_IN_ITEM]: 'PEOPLE_IN_ITEM',\n};\nexport type accessLevelType = $Keys<typeof accessLevelValues>;\n\nconst permissionLevelValues = {\n [constants.CAN_EDIT]: 'CAN_EDIT',\n [constants.CAN_VIEW_DOWNLOAD]: 'CAN_VIEW_DOWNLOAD',\n [constants.CAN_VIEW_ONLY]: 'CAN_VIEW_ONLY',\n};\nexport type permissionLevelType = $Keys<typeof permissionLevelValues>;\n\nconst collaboratorGroupValues = {\n [constants.COLLAB_GROUP_TYPE]: 'COLLAB_GROUP_TYPE',\n [constants.COLLAB_USER_TYPE]: 'COLLAB_USER_TYPE',\n [constants.COLLAB_PENDING_TYPE]: 'COLLAB_PENDING_TYPE',\n};\nexport type collaboratorGroupType = $Keys<typeof collaboratorGroupValues>;\n\nexport type allowedAccessLevelsType = {\n peopleInThisItem?: boolean,\n peopleInYourCompany?: boolean,\n peopleWithTheLink?: boolean,\n};\n\nexport type accessLevelsDisabledReasonType = {\n peopleInThisItem?:\n | typeof constants.DISABLED_REASON_ACCESS_POLICY\n | typeof constants.DISABLED_REASON_MALICIOUS_CONTENT\n | null,\n peopleInYourCompany?:\n | typeof constants.DISABLED_REASON_ACCESS_POLICY\n | typeof constants.DISABLED_REASON_MALICIOUS_CONTENT\n | null,\n peopleWithTheLink?:\n | typeof constants.DISABLED_REASON_ACCESS_POLICY\n | typeof constants.DISABLED_REASON_MALICIOUS_CONTENT\n | null,\n};\n\nexport type contactType = {\n email?: string,\n id: string,\n isExternalUser?: boolean,\n name?: string,\n text?: string,\n type: string,\n value?: string,\n};\n\nexport type SuggestedCollab = contactType & {\n userScore: number,\n};\n\nexport type SuggestedCollabLookup = {\n [id: string]: SuggestedCollab,\n};\n\nexport type inviteePermissionType = {\n default: boolean,\n disabled?: boolean,\n text: string,\n value: string,\n};\n\nexport type item = {\n bannerPolicy?: {\n body: string,\n colorID?: number,\n title?: string,\n },\n canUserSeeClassification: boolean,\n classification?: string,\n description: string,\n extension: string,\n grantedPermissions: {\n itemShare: boolean,\n },\n hideCollaborators: boolean,\n id: string,\n name: string,\n ownerEmail?: string,\n ownerID?: string,\n permissions?: BoxItemPermission,\n type: ItemType,\n typedID: string,\n};\n\nexport type emailFormTrackingType = {\n cancelButtonProps?: Object,\n messageProps?: Object,\n onContactAdd?: Function,\n onContactRemove?: Function,\n onSendClick?: Function,\n};\n\nexport type sharedLinkTrackingType = {\n copyButtonProps?: Object,\n onChangeSharedLinkAccessLevel?: Function,\n onChangeSharedLinkPermissionLevel?: Function,\n onSharedLinkAccessMenuOpen?: Function,\n onSharedLinkCopy?: Function,\n onToggleLink?: Function,\n sendSharedLinkButtonProps?: Object,\n sharedLinkAccessMenuButtonProps?: Object,\n sharedLinkPermissionsMenuButtonProps?: Object,\n sharedLinkSettingsButtonProps?: Object,\n};\n\nexport type collaboratorListTrackingType = {\n doneButtonProps?: Object,\n emailProps?: Object,\n manageLinkProps?: Object,\n usernameProps?: Object,\n viewAdditionalProps?: Object,\n};\n\nexport type trackingPropsType = {\n collaboratorListTracking: collaboratorListTrackingType,\n inviteCollabTracking: {\n inviteePermissionsButtonProps?: Object,\n onEnterInviteCollabs?: Function,\n onInviteePermissionChange?: Function,\n },\n inviteCollabsEmailTracking: {\n ...emailFormTrackingType,\n upgradeLinkProps?: Object,\n },\n modalTracking: {\n collaboratorAvatarsProps?: Object,\n ftuxConfirmButtonProps?: Object,\n modalProps?: Object,\n onLoad?: Function,\n },\n removeLinkConfirmModalTracking: {\n cancelButtonProps?: Object,\n modalProps?: Object,\n okayButtonProps?: Object,\n onLoad?: Function,\n },\n sharedLinkEmailTracking: emailFormTrackingType,\n sharedLinkTracking: sharedLinkTrackingType,\n};\n\n// this type is a strict subset of the SharedLinkRecord data returned from the server\nexport type sharedLinkType = {\n accessLevel: accessLevelType,\n accessLevelsDisabledReason?: accessLevelsDisabledReasonType,\n allowedAccessLevels: allowedAccessLevelsType,\n canChangeAccessLevel: boolean,\n enterpriseName: string,\n expirationTimestamp: ?number,\n isDownloadAllowed: boolean,\n isDownloadSettingAvailable: boolean,\n isEditAllowed: boolean,\n isEditSettingAvailable: boolean,\n isNewSharedLink: boolean,\n isPreviewAllowed: boolean,\n permissionLevel: permissionLevelType,\n url: string,\n};\n\nexport type collaboratorType = {\n collabID: number,\n email?: string,\n expiration?: {\n executeAt: string,\n },\n hasCustomAvatar: boolean,\n imageURL: ?string,\n isExternalCollab?: boolean,\n name: string,\n type: collaboratorGroupType,\n userID: ?number,\n};\n\nexport type collaboratorsListType = {\n collaborators: Array<collaboratorType>,\n};\n\nexport type tooltipComponentIdentifierType =\n | 'shared-link-access-menu'\n | 'shared-link-copy-button'\n | 'shared-link-settings'\n | 'shared-link-toggle';\n\nexport type justificationCheckpointType =\n | typeof constants.JUSTIFICATION_CHECKPOINT_COLLAB\n | typeof constants.JUSTIFICATION_CHECKPOINT_CREATE_SHARED_LINK\n | typeof constants.JUSTIFICATION_CHECKPOINT_DOWNLOAD\n | typeof constants.JUSTIFICATION_CHECKPOINT_EXTERNAL_COLLAB;\n\nexport type justificationReasonType = {\n description?: string,\n id: string,\n isDetailsRequired?: boolean,\n title: string,\n};\nexport type getJustificationReasonsResponseType = {\n classificationLabelId: string,\n options: Array<justificationReasonType>,\n};\n\n// Prop types used in the invite section of the Unified Share Form\ntype InviteSectionTypes = {\n /** Message warning about restrictions regarding inviting collaborators to the item */\n collaborationRestrictionWarning: React.Node,\n /** Used to limit the number of contacts that can be added in the contacts field */\n contactLimit?: number,\n /** Handler function for when the user types into invite collaborators field to fetch contacts. */\n getCollaboratorContacts: (query: string) => Promise<Array<contactType>>,\n /** Shows a callout tooltip next to the names / email addresses input field explaining pre-populated recommendation */\n recommendedSharingTooltipCalloutName: ?string,\n /**\n * Function to send collab invitations based on the given parameters object.\n * This function should return a Promise.\n */\n sendInvites: (params: Object) => Promise<Object>,\n /** Message indicating an error occurred while sending the invites. */\n sendInvitesError: React.Node,\n /** Function hoists contact data upon updates to the parent component. Only needed for suggested collabs. */\n setUpdatedContacts?: (inviteCollabsContacts: Array<contactType>) => void,\n /** Determine whether to show the First-time experience tooltip on load */\n showCalloutForUser?: boolean,\n /**\n * Flag to show link to upgrade and get more access controls.\n * Only applicable to non-file item types.\n */\n showUpgradeOptions: boolean,\n /** Data for suggested collaborators shown at bottom of input box. UI doesn't render when this has length of 0. */\n suggestedCollaborators?: SuggestedCollabLookup,\n};\n\n// Additional invite section types that related with external collab r\n// restrictions and business justifications.\ntype ExternalCollabRestrictionsTypes = {\n /** Function that fetches the array of justification reason options to display on the justification select field */\n getJustificationReasons?: (\n itemTypedID: string,\n checkpoint: justificationCheckpointType,\n ) => Promise<getJustificationReasonsResponseType>,\n /** Determines whether or not a business justification can be provided to bypass external collab restrictions */\n isCollabRestrictionJustificationAllowed?: boolean,\n /** Function that is called when all restricted external collaborators are removed from the email form */\n onRemoveAllRestrictedExternalCollabs?: () => void,\n /** An array of all the external collab email addresses that have been determined to be restriced by an access policy. */\n restrictedExternalCollabEmails: Array<string>,\n};\n\n// Prop types used in the shared link section of the Unified Share Form\n// (Note: while there is an overlap between these types and the props passed to the Shared Link Section component,\n// they are different. See the render() function of the Unified Share Form for details.)\ntype SharedLinkSectionTypes = {\n /** Handler function that changes shared link access level */\n changeSharedLinkAccessLevel: (newAccessLevel: accessLevelType) => Promise<{ accessLevel: accessLevelType }>,\n /** Handler function that changes shared link permission level */\n changeSharedLinkPermissionLevel: (\n newPermissionLevel: permissionLevelType,\n ) => Promise<{ permissionLevel: permissionLevelType }>,\n /** Whether the form should create a shared link on load */\n createSharedLinkOnLoad?: boolean,\n /** Handler function that adds the shared link */\n onAddLink: () => void,\n /** Handler for when there is an error copying to clipboard */\n onCopyError?: () => void,\n /** Handler for when we initiate copying from to clipboard */\n onCopyInit?: () => void,\n /** Handler for when successfully copying to clipboard */\n onCopySuccess?: () => void,\n /** Handler function that gets called whenever the user dismisses a tooltip on the given component identifier */\n onDismissTooltip?: (componentIdentifier: tooltipComponentIdentifierType) => void,\n /** Handler function for clicks on the settings icon. If not provided, the settings icon won't be rendered. */\n onSettingsClick?: Function,\n /** Shared link data */\n sharedLink: sharedLinkType,\n /** Shows a callout tooltip next gear icon with info about what can be customized */\n showSharedLinkSettingsCallout?: boolean,\n /** Mapping of components to the content that should be rendered in their tooltips */\n tooltips?: { [componentIdentifier: tooltipComponentIdentifierType]: React.Node },\n};\n\n// Prop types used in the collaborator avatars section of the Unified Share Form\ntype CollaboratorAvatarsTypes = {\n /** List of existing collaborators */\n collaboratorsList?: collaboratorsListType,\n /** User ID of currently logged in user */\n currentUserID: string,\n};\n\ntype EmailFormTypes = {\n /** Function to retrieve the URL for an avatar, given contact details */\n getContactAvatarUrl?: (contact: contactType) => string,\n /** Handler function for when the user types into email shared link field to fetch contacts. */\n getSharedLinkContacts: (query: string) => Promise<Array<contactType>>,\n /**\n * Function to send shared link email based on the given parameters object.\n * This function should return a Promise.\n */\n sendSharedLink: (params: Object) => Promise<Object>,\n /** Message indicating an error occurred while sending the shared link. */\n sendSharedLinkError: React.Node,\n};\n\nexport type USMConfig = {\n /** Whether the \"Email Shared Link\" button and form should be rendered in the USM/USF */\n showEmailSharedLinkForm: boolean,\n /* Whether the message section of the invite collaborator page should be rendered in the USM/USF */\n showInviteCollaboratorMessageSection: boolean,\n};\n\n// Prop types shared by both the Unified Share Modal and the Unified Share Form\ntype BaseUnifiedShareProps = CollaboratorAvatarsTypes &\n EmailFormTypes &\n ExternalCollabRestrictionsTypes &\n InviteSectionTypes &\n SharedLinkSectionTypes & {\n /** Inline message */\n allShareRestrictionWarning?: React.Node,\n /** Flag to determine whether to enable invite collaborators section */\n canInvite: boolean,\n /** Configuration object for hiding parts of the USM */\n config?: USMConfig,\n /** Whether the full USM should be rendered */\n displayInModal?: boolean,\n /** Whether the form should focus the shared link after the URL is resolved */\n focusSharedLinkOnLoad?: boolean,\n /** Handler function that gets contacts by a list of emails */\n getContactsByEmail?: ({ emails: Array<string>, itemTypedID?: string }) => Promise<Object>,\n /** Handler function for getting intial data for form */\n getInitialData: Function,\n /** An array of initially selected contacts. If none are initially selected, an empty array. */\n initiallySelectedContacts: Array<contactType>,\n /** Intl object */\n intl: any,\n /** An array of invitee permissions */\n inviteePermissions: Array<inviteePermissionType>,\n /** Item data */\n item: item,\n /** Shows a callout tooltip next to the names / email addresses input field encouraging users to fill out coworkers contact info */\n showEnterEmailsCallout?: boolean,\n /** Whether or not a request is in progress */\n submitting: boolean,\n /** Object with props and handlers for tracking interactions */\n trackingProps: trackingPropsType,\n };\n\n// Prop types for the Unified Share Modal\nexport type USMProps = BaseUnifiedShareProps & {\n /** Function for closing the Remove Link Confirm Modal */\n closeConfirmModal: () => void,\n /** Whether initial data for the USM has already been received */\n initialDataReceived: boolean,\n /** Whether the allow edit shared link for file FF is enabled */\n isAllowEditSharedLinkForFileEnabled?: boolean,\n /** Whether the USM is open */\n isOpen?: boolean,\n /** Handler function that removes the shared link, used in the Remove Link Confirm Modal */\n onRemoveLink: () => void,\n /** Handler function for when the USM is closed */\n onRequestClose?: Function,\n /** Whether the FTUX tag should be rendered for the Can Edit option */\n sharedLinkEditTagTargetingApi?: TargetingApi,\n /** Whether the FTUX tooltip should be rendered for Editable Shared Links */\n sharedLinkEditTooltipTargetingApi?: TargetingApi,\n};\n\n// Prop types for the Unified Share Form, passed from the Unified Share Modal\nexport type USFProps = BaseUnifiedShareProps & {\n /** Function for closing the FTUX tooltip */\n handleFtuxCloseClick: () => void,\n /** Whether the allow edit shared link for file FF is enabled */\n isAllowEditSharedLinkForFileEnabled: boolean,\n /** Whether the data for the USM/USF is being fetched */\n isFetching: boolean,\n /** Function for opening the Remove Link Confirm Modal */\n openConfirmModal: () => void,\n /** Function for opening the Upgrade Plan Modal */\n openUpgradePlanModal: () => void,\n /** Whether the FTUX tag should be rendered for the Can Edit option */\n sharedLinkEditTagTargetingApi?: TargetingApi,\n /** Whether the FTUX tooltip should be rendered for Editable Shared Links */\n sharedLinkEditTooltipTargetingApi?: TargetingApi,\n /** Whether the shared link has loaded */\n sharedLinkLoaded: boolean,\n /** Whether the FTUX tooltip should be rendered */\n shouldRenderFTUXTooltip: boolean,\n /** Whether the new upgrade text should be rendered */\n showNewUpgradeText?: boolean,\n /** Whether the upgrade inline notice should be rendered */\n showUpgradeInlineNotice?: boolean,\n};\n\nexport type InviteCollaboratorsRequest = {\n classificationLabelId?: string,\n emailMessage: string,\n emails: string,\n groupIDs: string,\n justificationReason?: justificationReasonType,\n numOfInviteeGroups: number,\n numsOfInvitees: number,\n permission: string,\n};\n"],"file":"flowTypes.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/features/unified-share-modal/flowTypes.js"],"names":["React","constants","accessLevelValues","ANYONE_WITH_LINK","ANYONE_IN_COMPANY","PEOPLE_IN_ITEM","permissionLevelValues","CAN_EDIT","CAN_VIEW_DOWNLOAD","CAN_VIEW_ONLY","collaboratorGroupValues","COLLAB_GROUP_TYPE","COLLAB_USER_TYPE","COLLAB_PENDING_TYPE"],"mappings":";;;;AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,OAAO,KAAKC,SAAZ,MAA2B,aAA3B;AAIA;AACA,IAAMC,iBAAiB,iEAClBD,SAAS,CAACE,gBADQ,EACW,kBADX,uCAElBF,SAAS,CAACG,iBAFQ,EAEY,mBAFZ,uCAGlBH,SAAS,CAACI,cAHQ,EAGS,gBAHT,sBAAvB;AAOA,IAAMC,qBAAqB,uEACtBL,SAAS,CAACM,QADY,EACD,UADC,0CAEtBN,SAAS,CAACO,iBAFY,EAEQ,mBAFR,0CAGtBP,SAAS,CAACQ,aAHY,EAGI,eAHJ,yBAA3B;AAOA,IAAMC,uBAAuB,uEACxBT,SAAS,CAACU,iBADc,EACM,mBADN,0CAExBV,SAAS,CAACW,gBAFc,EAEK,kBAFL,0CAGxBX,SAAS,CAACY,mBAHc,EAGQ,qBAHR,yBAA7B","sourcesContent":["// @flow\nimport * as React from 'react';\nimport * as constants from './constants';\nimport type { BoxItemPermission, ItemType } from '../../common/types/core';\nimport type { TargetingApi } from '../targeting/types';\n\n// DRY: Invert the constants so that we can construct the appropriate enum types\nconst accessLevelValues = {\n [constants.ANYONE_WITH_LINK]: 'ANYONE_WITH_LINK',\n [constants.ANYONE_IN_COMPANY]: 'ANYONE_IN_COMPANY',\n [constants.PEOPLE_IN_ITEM]: 'PEOPLE_IN_ITEM',\n};\nexport type accessLevelType = $Keys<typeof accessLevelValues>;\n\nconst permissionLevelValues = {\n [constants.CAN_EDIT]: 'CAN_EDIT',\n [constants.CAN_VIEW_DOWNLOAD]: 'CAN_VIEW_DOWNLOAD',\n [constants.CAN_VIEW_ONLY]: 'CAN_VIEW_ONLY',\n};\nexport type permissionLevelType = $Keys<typeof permissionLevelValues>;\n\nconst collaboratorGroupValues = {\n [constants.COLLAB_GROUP_TYPE]: 'COLLAB_GROUP_TYPE',\n [constants.COLLAB_USER_TYPE]: 'COLLAB_USER_TYPE',\n [constants.COLLAB_PENDING_TYPE]: 'COLLAB_PENDING_TYPE',\n};\nexport type collaboratorGroupType = $Keys<typeof collaboratorGroupValues>;\n\nexport type allowedAccessLevelsType = {\n peopleInThisItem?: boolean,\n peopleInYourCompany?: boolean,\n peopleWithTheLink?: boolean,\n};\n\nexport type accessLevelsDisabledReasonType = {\n peopleInThisItem?:\n | typeof constants.DISABLED_REASON_ACCESS_POLICY\n | typeof constants.DISABLED_REASON_MALICIOUS_CONTENT\n | null,\n peopleInYourCompany?:\n | typeof constants.DISABLED_REASON_ACCESS_POLICY\n | typeof constants.DISABLED_REASON_MALICIOUS_CONTENT\n | null,\n peopleWithTheLink?:\n | typeof constants.DISABLED_REASON_ACCESS_POLICY\n | typeof constants.DISABLED_REASON_MALICIOUS_CONTENT\n | null,\n};\n\nexport type contactType = {\n email?: string,\n id: string,\n isExternalUser?: boolean,\n name?: string,\n text?: string,\n type: string,\n value?: string,\n};\n\nexport type SuggestedCollab = contactType & {\n userScore: number,\n};\n\nexport type SuggestedCollabLookup = {\n [id: string]: SuggestedCollab,\n};\n\nexport type inviteePermissionType = {\n default: boolean,\n disabled?: boolean,\n text: string,\n value: string,\n};\n\nexport type item = {\n bannerPolicy?: {\n body: string,\n colorID?: number,\n title?: string,\n },\n canUserSeeClassification: boolean,\n classification?: string,\n description: string,\n extension: string,\n grantedPermissions: {\n itemShare: boolean,\n },\n hideCollaborators: boolean,\n id: string,\n name: string,\n ownerEmail?: string,\n ownerID?: string,\n permissions?: BoxItemPermission,\n type: ItemType,\n typedID: string,\n};\n\nexport type emailFormTrackingType = {\n cancelButtonProps?: Object,\n messageProps?: Object,\n onContactAdd?: Function,\n onContactRemove?: Function,\n onSendClick?: Function,\n};\n\nexport type sharedLinkTrackingType = {\n copyButtonProps?: Object,\n onChangeSharedLinkAccessLevel?: Function,\n onChangeSharedLinkPermissionLevel?: Function,\n onSharedLinkAccessMenuOpen?: Function,\n onSharedLinkCopy?: Function,\n onToggleLink?: Function,\n sendSharedLinkButtonProps?: Object,\n sharedLinkAccessMenuButtonProps?: Object,\n sharedLinkPermissionsMenuButtonProps?: Object,\n sharedLinkSettingsButtonProps?: Object,\n};\n\nexport type collaboratorListTrackingType = {\n doneButtonProps?: Object,\n emailProps?: Object,\n manageLinkProps?: Object,\n usernameProps?: Object,\n viewAdditionalProps?: Object,\n};\n\nexport type trackingPropsType = {\n collaboratorListTracking: collaboratorListTrackingType,\n inviteCollabTracking: {\n inviteePermissionsButtonProps?: Object,\n onEnterInviteCollabs?: Function,\n onInviteePermissionChange?: Function,\n },\n inviteCollabsEmailTracking: {\n ...emailFormTrackingType,\n upgradeLinkProps?: Object,\n },\n modalTracking: {\n collaboratorAvatarsProps?: Object,\n ftuxConfirmButtonProps?: Object,\n modalProps?: Object,\n onLoad?: Function,\n },\n removeLinkConfirmModalTracking: {\n cancelButtonProps?: Object,\n modalProps?: Object,\n okayButtonProps?: Object,\n onLoad?: Function,\n },\n sharedLinkEmailTracking: emailFormTrackingType,\n sharedLinkTracking: sharedLinkTrackingType,\n};\n\n// this type is a strict subset of the SharedLinkRecord data returned from the server\nexport type sharedLinkType = {\n accessLevel: accessLevelType,\n accessLevelsDisabledReason?: accessLevelsDisabledReasonType,\n allowedAccessLevels: allowedAccessLevelsType,\n canChangeAccessLevel: boolean,\n enterpriseName: string,\n expirationTimestamp: ?number,\n isDownloadAllowed: boolean,\n isDownloadSettingAvailable: boolean,\n isEditAllowed: boolean,\n isEditSettingAvailable: boolean,\n isNewSharedLink: boolean,\n isPreviewAllowed: boolean,\n permissionLevel: permissionLevelType,\n url: string,\n};\n\nexport type collaboratorType = {\n collabID: number,\n email?: string,\n expiration?: {\n executeAt: string,\n },\n hasCustomAvatar: boolean,\n imageURL: ?string,\n isExternalCollab?: boolean,\n name: string,\n type: collaboratorGroupType,\n userID: ?number,\n};\n\nexport type collaboratorsListType = {\n collaborators: Array<collaboratorType>,\n};\n\nexport type tooltipComponentIdentifierType =\n | 'shared-link-access-menu'\n | 'shared-link-copy-button'\n | 'shared-link-settings'\n | 'shared-link-toggle';\n\nexport type justificationCheckpointType =\n | typeof constants.JUSTIFICATION_CHECKPOINT_COLLAB\n | typeof constants.JUSTIFICATION_CHECKPOINT_CREATE_SHARED_LINK\n | typeof constants.JUSTIFICATION_CHECKPOINT_DOWNLOAD\n | typeof constants.JUSTIFICATION_CHECKPOINT_EXTERNAL_COLLAB;\n\nexport type justificationReasonType = {\n description?: string,\n id: string,\n isDetailsRequired?: boolean,\n title: string,\n};\nexport type getJustificationReasonsResponseType = {\n classificationLabelId: string,\n options: Array<justificationReasonType>,\n};\n\n// Prop types used in the invite section of the Unified Share Form\ntype InviteSectionTypes = {\n /** Message warning about restrictions regarding inviting collaborators to the item */\n collaborationRestrictionWarning: React.Node,\n /** Used to limit the number of contacts that can be added in the contacts field */\n contactLimit?: number,\n /** Handler function for when the user types into invite collaborators field to fetch contacts. */\n getCollaboratorContacts: (query: string) => Promise<Array<contactType>>,\n /** Shows a callout tooltip next to the names / email addresses input field explaining pre-populated recommendation */\n recommendedSharingTooltipCalloutName: ?string,\n /**\n * Function to send collab invitations based on the given parameters object.\n * This function should return a Promise.\n */\n sendInvites: (params: Object) => Promise<Object>,\n /** Message indicating an error occurred while sending the invites. */\n sendInvitesError: React.Node,\n /** Function hoists contact data upon updates to the parent component. Only needed for suggested collabs. */\n setUpdatedContacts?: (inviteCollabsContacts: Array<contactType>) => void,\n /** Determine whether to show the First-time experience tooltip on load */\n showCalloutForUser?: boolean,\n /**\n * Flag to show link to upgrade and get more access controls.\n * Only applicable to non-file item types.\n */\n showUpgradeOptions: boolean,\n /** Data for suggested collaborators shown at bottom of input box. UI doesn't render when this has length of 0. */\n suggestedCollaborators?: SuggestedCollabLookup,\n};\n\n// Additional invite section types that related with external collab r\n// restrictions and business justifications.\ntype ExternalCollabRestrictionsTypes = {\n /** Function that fetches the array of justification reason options to display on the justification select field */\n getJustificationReasons?: (\n itemTypedID: string,\n checkpoint: justificationCheckpointType,\n ) => Promise<getJustificationReasonsResponseType>,\n /** Determines whether or not a business justification can be provided to bypass external collab restrictions */\n isCollabRestrictionJustificationAllowed?: boolean,\n /** Function that is called when all restricted external collaborators are removed from the email form */\n onRemoveAllRestrictedExternalCollabs?: () => void,\n /** An array of all the external collab email addresses that have been determined to be restriced by an access policy. */\n restrictedExternalCollabEmails: Array<string>,\n};\n\n// Prop types used in the shared link section of the Unified Share Form\n// (Note: while there is an overlap between these types and the props passed to the Shared Link Section component,\n// they are different. See the render() function of the Unified Share Form for details.)\ntype SharedLinkSectionTypes = {\n /** Handler function that changes shared link access level */\n changeSharedLinkAccessLevel: (newAccessLevel: accessLevelType) => Promise<{ accessLevel: accessLevelType }>,\n /** Handler function that changes shared link permission level */\n changeSharedLinkPermissionLevel: (\n newPermissionLevel: permissionLevelType,\n ) => Promise<{ permissionLevel: permissionLevelType }>,\n /** Whether the form should create a shared link on load */\n createSharedLinkOnLoad?: boolean,\n /** Handler function that adds the shared link */\n onAddLink: () => void,\n /** Handler for when there is an error copying to clipboard */\n onCopyError?: () => void,\n /** Handler for when we initiate copying from to clipboard */\n onCopyInit?: () => void,\n /** Handler for when successfully copying to clipboard */\n onCopySuccess?: () => void,\n /** Handler function that gets called whenever the user dismisses a tooltip on the given component identifier */\n onDismissTooltip?: (componentIdentifier: tooltipComponentIdentifierType) => void,\n /** Handler function for clicks on the settings icon. If not provided, the settings icon won't be rendered. */\n onSettingsClick?: Function,\n /** Shared link data */\n sharedLink: sharedLinkType,\n /** Shows a callout tooltip next gear icon with info about what can be customized */\n showSharedLinkSettingsCallout?: boolean,\n /** Mapping of components to the content that should be rendered in their tooltips */\n tooltips?: { [componentIdentifier: tooltipComponentIdentifierType]: React.Node },\n};\n\n// Prop types used in the collaborator avatars section of the Unified Share Form\ntype CollaboratorAvatarsTypes = {\n /** List of existing collaborators */\n collaboratorsList?: collaboratorsListType,\n /** User ID of currently logged in user */\n currentUserID: string,\n};\n\ntype EmailFormTypes = {\n /** Function to retrieve the URL for an avatar, given contact details */\n getContactAvatarUrl?: (contact: contactType) => string,\n /** Handler function for when the user types into email shared link field to fetch contacts. */\n getSharedLinkContacts: (query: string) => Promise<Array<contactType>>,\n /**\n * Function to send shared link email based on the given parameters object.\n * This function should return a Promise.\n */\n sendSharedLink: (params: Object) => Promise<Object>,\n /** Message indicating an error occurred while sending the shared link. */\n sendSharedLinkError: React.Node,\n};\n\nexport type USMConfig = {\n /** Whether the \"Email Shared Link\" button and form should be rendered in the USM/USF */\n showEmailSharedLinkForm: boolean,\n /* Whether the message section of the invite collaborator page should be rendered in the USM/USF */\n showInviteCollaboratorMessageSection: boolean,\n};\n\n// Prop types shared by both the Unified Share Modal and the Unified Share Form\ntype BaseUnifiedShareProps = CollaboratorAvatarsTypes &\n EmailFormTypes &\n ExternalCollabRestrictionsTypes &\n InviteSectionTypes &\n SharedLinkSectionTypes & {\n /** Inline message */\n allShareRestrictionWarning?: React.Node,\n /** Flag to determine whether to enable invite collaborators section */\n canInvite: boolean,\n /** Configuration object for hiding parts of the USM */\n config?: USMConfig,\n /** Whether the full USM should be rendered */\n displayInModal?: boolean,\n /** Whether the form should focus the shared link after the URL is resolved */\n focusSharedLinkOnLoad?: boolean,\n /** Handler function that gets contacts by a list of emails */\n getContactsByEmail?: ({ emails: Array<string>, itemTypedID?: string }) => Promise<Object>,\n /** Handler function for getting intial data for form */\n getInitialData: Function,\n /** An array of initially selected contacts. If none are initially selected, an empty array. */\n initiallySelectedContacts: Array<contactType>,\n /** Intl object */\n intl: any,\n /** An array of invitee permissions */\n inviteePermissions: Array<inviteePermissionType>,\n /** Item data */\n item: item,\n /** Shows a callout tooltip next to the names / email addresses input field encouraging users to fill out coworkers contact info */\n showEnterEmailsCallout?: boolean,\n /** Whether or not a request is in progress */\n submitting: boolean,\n /** Object with props and handlers for tracking interactions */\n trackingProps: trackingPropsType,\n };\n\n// Prop types for the Unified Share Modal\nexport type USMProps = BaseUnifiedShareProps & {\n /** Function for closing the Remove Link Confirm Modal */\n closeConfirmModal: () => void,\n /** Whether initial data for the USM has already been received */\n initialDataReceived: boolean,\n /** Whether the allow edit shared link for file FF is enabled */\n isAllowEditSharedLinkForFileEnabled?: boolean,\n /** Whether the USM is open */\n isOpen?: boolean,\n /** Handler function that removes the shared link, used in the Remove Link Confirm Modal */\n onRemoveLink: () => void,\n /** Handler function for when the USM is closed */\n onRequestClose?: Function,\n /** Whether the FTUX tag should be rendered for the Can Edit option */\n sharedLinkEditTagTargetingApi?: TargetingApi,\n /** Whether the FTUX tooltip should be rendered for Editable Shared Links */\n sharedLinkEditTooltipTargetingApi?: TargetingApi,\n};\n\n// Prop types for the Unified Share Form, passed from the Unified Share Modal\nexport type USFProps = BaseUnifiedShareProps & {\n /** Function for closing the FTUX tooltip */\n handleFtuxCloseClick: () => void,\n /** Whether the allow edit shared link for file FF is enabled */\n isAllowEditSharedLinkForFileEnabled: boolean,\n /** Whether the data for the USM/USF is being fetched */\n isFetching: boolean,\n /** Function for opening the Remove Link Confirm Modal */\n openConfirmModal: () => void,\n /** Function for opening the Upgrade Plan Modal */\n openUpgradePlanModal: () => void,\n /** Whether the FTUX tag should be rendered for the Can Edit option */\n sharedLinkEditTagTargetingApi?: TargetingApi,\n /** Whether the FTUX tooltip should be rendered for Editable Shared Links */\n sharedLinkEditTooltipTargetingApi?: TargetingApi,\n /** Whether the shared link has loaded */\n sharedLinkLoaded: boolean,\n /** Whether the FTUX tooltip should be rendered */\n shouldRenderFTUXTooltip: boolean,\n /** Whether the upgrade inline notice should be rendered */\n showUpgradeInlineNotice?: boolean,\n};\n\nexport type InviteCollaboratorsRequest = {\n classificationLabelId?: string,\n emailMessage: string,\n emails: string,\n groupIDs: string,\n justificationReason?: justificationReasonType,\n numOfInviteeGroups: number,\n numsOfInvitees: number,\n permission: string,\n};\n"],"file":"flowTypes.js"}
|
package/i18n/bn-IN.js
CHANGED
|
@@ -269,7 +269,6 @@ export default {
|
|
|
269
269
|
"be.sidebarSkillsErrorContent": "দক্ষতা আপডেট করার সময় একটি ত্রুটি ঘটেছে। অনুগ্রহ করে পৃষ্ঠাটি রিফ্রেশ করুন এবং আবার চেষ্টা করুন।",
|
|
270
270
|
"be.sidebarSkillsErrorTitle": "দক্ষতায় ত্রুটি",
|
|
271
271
|
"be.sidebarSkillsTitle": "দক্ষতাসমূহ",
|
|
272
|
-
"be.sidebarVersions.accessError": "আপনার সংস্করণ বদলের অ্যাক্সেস নেই",
|
|
273
272
|
"be.sidebarVersions.current": "বর্তমান সংস্করণ",
|
|
274
273
|
"be.sidebarVersions.delete": "মুছুন",
|
|
275
274
|
"be.sidebarVersions.deleteError": "ফাইলের সংস্করণ মোছা যায়নি।",
|
package/i18n/bn-IN.properties
CHANGED
|
@@ -538,8 +538,6 @@ be.sidebarSkillsErrorContent = দক্ষতা আপডেট করার
|
|
|
538
538
|
be.sidebarSkillsErrorTitle = দক্ষতায় ত্রুটি
|
|
539
539
|
# Title for the preview details skills.
|
|
540
540
|
be.sidebarSkillsTitle = দক্ষতাসমূহ
|
|
541
|
-
# Heading for inline error messages with upsell.
|
|
542
|
-
be.sidebarVersions.accessError = আপনার সংস্করণ বদলের অ্যাক্সেস নেই
|
|
543
541
|
# Label for the current version item in the version history list.
|
|
544
542
|
be.sidebarVersions.current = বর্তমান সংস্করণ
|
|
545
543
|
# Label for the version delete action.
|
package/i18n/da-DK.js
CHANGED
|
@@ -269,7 +269,6 @@ export default {
|
|
|
269
269
|
"be.sidebarSkillsErrorContent": "Der opstod en fejl under opdatering af færdigheder. Opdater siden, og prøv igen.",
|
|
270
270
|
"be.sidebarSkillsErrorTitle": "Fejl for færdigheder",
|
|
271
271
|
"be.sidebarSkillsTitle": "Færdigheder",
|
|
272
|
-
"be.sidebarVersions.accessError": "Du har ikke adgang til versionering.",
|
|
273
272
|
"be.sidebarVersions.current": "Aktuel version",
|
|
274
273
|
"be.sidebarVersions.delete": "Slet",
|
|
275
274
|
"be.sidebarVersions.deleteError": "Filversion kunne ikke slettes.",
|
package/i18n/da-DK.properties
CHANGED
|
@@ -538,8 +538,6 @@ be.sidebarSkillsErrorContent = Der opstod en fejl under opdatering af færdighed
|
|
|
538
538
|
be.sidebarSkillsErrorTitle = Fejl for færdigheder
|
|
539
539
|
# Title for the preview details skills.
|
|
540
540
|
be.sidebarSkillsTitle = Færdigheder
|
|
541
|
-
# Heading for inline error messages with upsell.
|
|
542
|
-
be.sidebarVersions.accessError = Du har ikke adgang til versionering.
|
|
543
541
|
# Label for the current version item in the version history list.
|
|
544
542
|
be.sidebarVersions.current = Aktuel version
|
|
545
543
|
# Label for the version delete action.
|
package/i18n/de-DE.js
CHANGED
|
@@ -269,7 +269,6 @@ export default {
|
|
|
269
269
|
"be.sidebarSkillsErrorContent": "Beim Aktualisieren von Skills ist ein Fehler aufgetreten. Laden Sie die Seite neu und versuchen Sie es noch einmal.",
|
|
270
270
|
"be.sidebarSkillsErrorTitle": "Skills-Fehler",
|
|
271
271
|
"be.sidebarSkillsTitle": "Skills",
|
|
272
|
-
"be.sidebarVersions.accessError": "Sie haben keinen Zugriff auf die Versionierung.",
|
|
273
272
|
"be.sidebarVersions.current": "Aktuelle Version",
|
|
274
273
|
"be.sidebarVersions.delete": "Löschen",
|
|
275
274
|
"be.sidebarVersions.deleteError": "Die Dateiversion konnte nicht gelöscht werden.",
|
package/i18n/de-DE.properties
CHANGED
|
@@ -538,8 +538,6 @@ be.sidebarSkillsErrorContent = Beim Aktualisieren von Skills ist ein Fehler aufg
|
|
|
538
538
|
be.sidebarSkillsErrorTitle = Skills-Fehler
|
|
539
539
|
# Title for the preview details skills.
|
|
540
540
|
be.sidebarSkillsTitle = Skills
|
|
541
|
-
# Heading for inline error messages with upsell.
|
|
542
|
-
be.sidebarVersions.accessError = Sie haben keinen Zugriff auf die Versionierung.
|
|
543
541
|
# Label for the current version item in the version history list.
|
|
544
542
|
be.sidebarVersions.current = Aktuelle Version
|
|
545
543
|
# Label for the version delete action.
|
package/i18n/en-AU.js
CHANGED
|
@@ -269,7 +269,6 @@ export default {
|
|
|
269
269
|
"be.sidebarSkillsErrorContent": "An error has occurred while updating skills. Please refresh the page and try again.",
|
|
270
270
|
"be.sidebarSkillsErrorTitle": "Skills error",
|
|
271
271
|
"be.sidebarSkillsTitle": "Skills",
|
|
272
|
-
"be.sidebarVersions.accessError": "You don't have access to versioning",
|
|
273
272
|
"be.sidebarVersions.current": "Current version",
|
|
274
273
|
"be.sidebarVersions.delete": "Delete",
|
|
275
274
|
"be.sidebarVersions.deleteError": "File version could not be deleted.",
|
package/i18n/en-AU.properties
CHANGED
|
@@ -538,8 +538,6 @@ be.sidebarSkillsErrorContent = An error has occurred while updating skills. Plea
|
|
|
538
538
|
be.sidebarSkillsErrorTitle = Skills error
|
|
539
539
|
# Title for the preview details skills.
|
|
540
540
|
be.sidebarSkillsTitle = Skills
|
|
541
|
-
# Heading for inline error messages with upsell.
|
|
542
|
-
be.sidebarVersions.accessError = You don't have access to versioning
|
|
543
541
|
# Label for the current version item in the version history list.
|
|
544
542
|
be.sidebarVersions.current = Current version
|
|
545
543
|
# Label for the version delete action.
|
package/i18n/en-CA.js
CHANGED
|
@@ -269,7 +269,6 @@ export default {
|
|
|
269
269
|
"be.sidebarSkillsErrorContent": "An error has occurred while updating skills. Please refresh the page and try again.",
|
|
270
270
|
"be.sidebarSkillsErrorTitle": "Skills Error",
|
|
271
271
|
"be.sidebarSkillsTitle": "Skills",
|
|
272
|
-
"be.sidebarVersions.accessError": "You don't have access to versioning",
|
|
273
272
|
"be.sidebarVersions.current": "Current Version",
|
|
274
273
|
"be.sidebarVersions.delete": "Delete",
|
|
275
274
|
"be.sidebarVersions.deleteError": "File version could not be deleted.",
|
package/i18n/en-CA.properties
CHANGED
|
@@ -538,8 +538,6 @@ be.sidebarSkillsErrorContent = An error has occurred while updating skills. Plea
|
|
|
538
538
|
be.sidebarSkillsErrorTitle = Skills Error
|
|
539
539
|
# Title for the preview details skills.
|
|
540
540
|
be.sidebarSkillsTitle = Skills
|
|
541
|
-
# Heading for inline error messages with upsell.
|
|
542
|
-
be.sidebarVersions.accessError = You don't have access to versioning
|
|
543
541
|
# Label for the current version item in the version history list.
|
|
544
542
|
be.sidebarVersions.current = Current Version
|
|
545
543
|
# Label for the version delete action.
|
package/i18n/en-GB.js
CHANGED
|
@@ -269,7 +269,6 @@ export default {
|
|
|
269
269
|
"be.sidebarSkillsErrorContent": "An error has occurred while updating skills. Please refresh the page and try again.",
|
|
270
270
|
"be.sidebarSkillsErrorTitle": "Skills error",
|
|
271
271
|
"be.sidebarSkillsTitle": "Skills",
|
|
272
|
-
"be.sidebarVersions.accessError": "You don't have access to versioning",
|
|
273
272
|
"be.sidebarVersions.current": "Current version",
|
|
274
273
|
"be.sidebarVersions.delete": "Delete",
|
|
275
274
|
"be.sidebarVersions.deleteError": "File version could not be deleted.",
|
package/i18n/en-GB.properties
CHANGED
|
@@ -538,8 +538,6 @@ be.sidebarSkillsErrorContent = An error has occurred while updating skills. Plea
|
|
|
538
538
|
be.sidebarSkillsErrorTitle = Skills error
|
|
539
539
|
# Title for the preview details skills.
|
|
540
540
|
be.sidebarSkillsTitle = Skills
|
|
541
|
-
# Heading for inline error messages with upsell.
|
|
542
|
-
be.sidebarVersions.accessError = You don't have access to versioning
|
|
543
541
|
# Label for the current version item in the version history list.
|
|
544
542
|
be.sidebarVersions.current = Current version
|
|
545
543
|
# Label for the version delete action.
|
package/i18n/en-US.js
CHANGED
|
@@ -269,7 +269,6 @@ export default {
|
|
|
269
269
|
"be.sidebarSkillsErrorContent": "An error has occurred while updating skills. Please refresh the page and try again.",
|
|
270
270
|
"be.sidebarSkillsErrorTitle": "Skills Error",
|
|
271
271
|
"be.sidebarSkillsTitle": "Skills",
|
|
272
|
-
"be.sidebarVersions.accessError": "You don't have access to versioning",
|
|
273
272
|
"be.sidebarVersions.current": "Current Version",
|
|
274
273
|
"be.sidebarVersions.delete": "Delete",
|
|
275
274
|
"be.sidebarVersions.deleteError": "File version could not be deleted.",
|
package/i18n/en-US.properties
CHANGED
|
@@ -538,8 +538,6 @@ be.sidebarSkillsErrorContent = An error has occurred while updating skills. Plea
|
|
|
538
538
|
be.sidebarSkillsErrorTitle = Skills Error
|
|
539
539
|
# Title for the preview details skills.
|
|
540
540
|
be.sidebarSkillsTitle = Skills
|
|
541
|
-
# Heading for inline error messages with upsell.
|
|
542
|
-
be.sidebarVersions.accessError = You don't have access to versioning
|
|
543
541
|
# Label for the current version item in the version history list.
|
|
544
542
|
be.sidebarVersions.current = Current Version
|
|
545
543
|
# Label for the version delete action.
|