{"version":3,"sources":["component/routes/mpnassociation/mpn-association-title/mpn-association-title.tsx","component/routes/mpnassociation/mpn-support-agreement/mpn-support-agreement.tsx","component/routes/mpnassociation/mpn-association-validation/mpn-support-validation.tsx","component/routes/mpnassociation/mpn-association-search/mpn-association-search.tsx","component/routes/mpnassociation/mpn-association.guard.ts","component/routes/mpnassociation/mpn-association.tsx","../../../src/components/message-bar/message-bar.styles.ts","../../../src/components/message-bar/message-bar.ts"],"names":["MpnAssociationTitleComponent","_ref","programToEnroll","_jsx","_Fragment","children","className","Pipe","ResourcePipe","ReactStringReplacePipe","ProgramsUtility","getMpnAssociationDescription","learnMoreLink","Anchor","href","EXTERNAL_ROUTES","MANAGE_LOCATIONS_DOC_LINK","target","MpnSupportAgreement","React","Component","render","_jsxs","undefined","this","props","mpnSupportAgreementResponse","TransformPipe","mpnId","agreementState","agreementEndDate","AlertError","InnerHtml","MpnAssociationDuplicateValidationCheck","hasAssociatedEnrollments","legalBusinessName","initialState","mpnAssociationData","currentValue","searchTerm","error","searchError","searchPlaceHolderText","showLoader","isSearchFinished","showRequestAssocationLoader","disableContinue","showFetchSupportAgreementLoader","showSupportAgreementStatus","showMpnAssociationChangeWarningMessage","showMPNIdAssociationUniquenesStatus","showMPNIdAssociationUniquenesLoader","disableContinueOnMPNUniqueCheckValidation","isPartnerEnrolledToProgram","isInvitedPlaIdMismatch","scope","createScope","reactInstance","MessageBar","forReact","messageBar","HarmonyButton","button","MpnAssociationSearchClass","constructor","arguments","_plaAccounts","_pgaAccounts","state","inHouseMpnIdAssociations","invitedPlaId","inviteId","onSearchTextChange","setState","dispatch","enrollInCsp","searchString","Number","isNaN","searchMpn","ServerData","countryCode","isPartnerEnrolledIntoReseller","programStatus","PROGRAM_NAME","RESELLER","toLowerCase","enrollmentState","StoreUtility","getState","programsToEnroll","hasProgramInTheList","filterPLAAccounts","response","filterData","length","filter","account","accountTypeName","AccountTypeName","PartnerLocation","filterPGAAccounts","PartnerGlobal","getPGADetails","pgaAccount","companyName","city","country","a","join","showMPNAssociationChangeMessage","selectAssociatedMpnId","blockUserOnSelectingNotInvitedPLA","hasFlight","FLIGHT_NAME","EnableInvitedPLAValidation","associatedMpnId","getPGAMpnId","getMpnIdSupportAgreementStatus","MpnEnrollmentService","fetchMpnIdSupportAgreement","then","isAgreementPresent","finally","onMpnIdSelected","event","value","ENABLE_PX_ACC_EXP_BRAVOS_INTEGRATION","validateMPNIdAssociations","_tableHeaders","optionKey","heading","renderer","_","index","Radio","id","concat","checked","onChange","onRequestAssociationButtonClick","populateCompanyInformationAndNavigate","AccountsService","getAccounts","typeName","Tenant","tenatAccount","MpnAssociationService","associateMpnId","mpnIdToAssociate","err","setMpnAssocationError","_this$inHouseMpnIdAss","selectedMpnData","find","mpnAssItem","islegalEntityFixFlightEnabled","EnableLegalEntityRelationFixByTenant","EnableLegalEntityRelationFix","_selectedMpnData$enro","isCompanyDetailsFromTenantDetail","some","mpnData","enrollInMpn","updateAddressToEnroll","FormControlNames","postalCode","setDisableDunsSearch","setIsLegalEntityReadonly","enrollmentStatus","standalone","window","location","ACCOUNT_SETTINGS","Navigation","navigate","INTERNAL_ROUTES","ENROLLMENT_MPN","step","onSkipForNowButtonClick","validateAssociatedEnrollmentsBasedOnMpnAndProgram","programEnrollmentStatus","programNames","_enrollmentState$prog","enableContinueOnMPNUniqueCheckValidation","programEnrollmentStatusInLowerCase","map","status","programNamesInLowerCase","name","forEach","programName","enrollmentStatusForProgram","includes","hasProgramInList","validateMpnAssociations","ProgramService","getPartnerProgramEnrollments","subscribe","next","Object","entries","_programNamesInLowerC","_programEnrollmentSta","key","programKey","complete","showSearchError","initialSearch","getMpnAssociation","_this$_plaAccounts","Array","isArray","setSearchError","selectedPlaAccount","catch","correlationId","_ServerData$mpnIdAsso","_ServerData$mpnIdAsso2","EnableMPNIdAssociationValidation","mpnIdAssociationUniqueValidationConfiguration","mpnAssociationUniqueValidationRequest","ValidateAssociatedEnrollmentsForMPNID","exception","_response$associatedE","associatedEnrollments","_associatedEnrollment","accountId","tenantId","errorCode","IErrorCode","UnsupportedCountry","INVALID_MPN_ID","InvalidSearch","message","setMpnIdAssociation","setSearchPlaceHolderTextForMpnId","getOrganizationName","setSearchPlaceHolderText","ProfileService","getOrganizationProfile","organizationProfileResponse","organizationName","componentDidMount","inviteStore","isMpnAssociationMandatory","_this$props$state$enr","enrollment","_this$props$state$enr2","isMpnSearchAllowed","SearchBox","placeholder","changeOnEnter","Loader","fullScreen","blockOperation","Table","headers","type","rows","sortable","TestAttribute","expandable","open","role","expanded","appearance","currentProgramName","getDisplayName","CREATE_WORK_ACCOUNT_GLOBAL_REDIRECT","style","styles","external","Button","onClick","disabled","MpnAssociationSearchComponent","connect","EnrollInCspActionCreator","setMpnIdToAssociate","setSearchString","disableDunsSearch","address","EnrollInMpnActionCreator","isReadonly","redirectionGuard","isStandalone","condition","Promise","resolve","isMpnAssociationSupported","to","ENROLLMENT","showPageLoader","Wrapper","guard","RedirectionGuard","FlexPageWrapper","MpnAssociationComponentClass","_mpnId","_programsToEnroll","isPostQualifiedCpv","programStatuses","keys","CONTROL_PANEL_VENDOR","ProgramStatus","Qualified","Active","setPreLoadData","mpnAssocationResponse","isCpv","tenantMpnId","mpnIds","globalMpnId","fetchPreLoadData","size","Header","title","getMpnAssociationTitle","withRouter","CanvasText","opacity","transform","close","closeTimeout","hasSlotController","scopedEventName","baseName","direction","transitionSpeed","noCloseButton","duration","iconName","multiline","visible","_direction","dir","getIconName","setMultiline","classList","toggle","super","connectedCallback","initResizeObserver","firstUpdated","startDuration","updateComplete","resizeObserver","unobserve","disconnect","disconnectedCallback","clearTimeout","setTimeout","hide","messageContainer","offsetWidth","clientHeight","messageContent","ResizeObserver","observe","focus","originalTrigger","findRootNode","activeElement","show","base","keyFrames","easing","emitAfterShow","emitAfterHide","test","tag","handleSlotChange","toggleExpand","localize","term","reactEvents","onHeReady","CustomEvent","onHeMessageBarShow","onHeMessageBarAfterShow","onHeMessageBarHide","onHeMessageBarAfterHide","onHeShow","onHeAfterShow","onHeHide","onHeAfterHide","attribute","Boolean","reflect","e","waitUntilFirstUpdate"],"mappings":"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","file":"en-us/dashboard/account/exp/staticres/static/js/19.3802f6f0.chunk.js","sourcesContent":["import React from \"react\";\r\nimport { Pipe, ReactStringReplacePipe, ResourcePipe } from \"../../../../pipes\";\r\nimport { Anchor } from \"../../../reusables\";\r\nimport { EXTERNAL_ROUTES } from \"../../../../constants\";\r\nimport { ProgramsUtility } from \"../../../../utility\";\r\n\r\ntype IPropType = {\r\n programToEnroll: string;\r\n};\r\n\r\nexport const MpnAssociationTitleComponent: React.FC<IPropType> = ({ programToEnroll }) => {\r\n return (\r\n <>\r\n <p className=\"spacer-xs-bottom\">\r\n {Pipe(ResourcePipe, ReactStringReplacePipe)(ProgramsUtility.getMpnAssociationDescription(programToEnroll), {\r\n learnMoreLink: (\r\n <Anchor href={EXTERNAL_ROUTES.MANAGE_LOCATIONS_DOC_LINK} target=\"_blank\">\r\n {Pipe(ResourcePipe)(\"Common_LearnMore\")}\r\n </Anchor>\r\n )\r\n })}\r\n </p>\r\n {/* <p className=\"spacer-xs-bottom\">\r\n <InnerHtml>\r\n {Pipe(ResourcePipe, TransformPipe)(\"MPN_ASSOCIATION__PARAGRAPH_3\")}\r\n </InnerHtml>\r\n </p> */}\r\n </>\r\n );\r\n};","import React from \"react\";\r\nimport {MpnSupportAgreementResponse} from \"../../../../models/mpn/mpn-support-agreement.model\";\r\nimport { Pipe, ResourcePipe, TransformPipe } from \"../../../../pipes\";\r\nimport { InnerHtml } from \"../../../hoc\";\r\nimport { AlertError } from \"../../../reusables\";\r\n\r\ntype IPropType = {\r\n mpnId: string;\r\n mpnSupportAgreementResponse: MpnSupportAgreementResponse | undefined\r\n};\r\n\r\nexport class MpnSupportAgreement extends React.Component<IPropType> {\r\n\r\n render() {\r\n return ( <> \r\n <h6 className=\"spacer-md-top font-weight-600 font-size-14\">\r\n {Pipe(ResourcePipe)(\"View_MPN_Association_ASfP_PSfP_Title\")}\r\n </h6>\r\n { this.props.mpnSupportAgreementResponse !== undefined ? (\r\n <div className=\"spacer-ms-top\">\r\n <p>\r\n {Pipe(ResourcePipe, TransformPipe)(\"View_MPN_Support_Agreement_Msg\",\r\n {\r\n mpnId:this.props.mpnId,\r\n }\r\n )} \r\n </p>\r\n <p>{Pipe(ResourcePipe)(\"Common__Contract_Status\")} : {this.props.mpnSupportAgreementResponse.agreementState}</p>\r\n <p>{Pipe(ResourcePipe)(\"Common__Agreement_End_Date\")} : {this.props.mpnSupportAgreementResponse.agreementEndDate}</p>\r\n </div>\r\n ):\r\n <div className=\"spacer-ms-top\">\r\n <>\r\n <AlertError>\r\n {Pipe(ResourcePipe, TransformPipe)(\"View_MPN_Association_Support_Agreement_Error\",\r\n {\r\n mpnId:this.props.mpnId,\r\n }\r\n )}\r\n </AlertError> \r\n <p>\r\n <InnerHtml>\r\n {Pipe(ResourcePipe, TransformPipe)(\"View_MPN_Association_Support_Agreement_Error_1\")}\r\n </InnerHtml> \r\n </p>\r\n </>\r\n </div>\r\n }\r\n </>)\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { Pipe, ResourcePipe, TransformPipe } from \"../../../../pipes\";\r\nimport { AlertError } from \"../../../reusables\";\r\n\r\ntype IPropType = {\r\n mpnId: string;\r\n legalBusinessName: string;\r\n hasAssociatedEnrollments: boolean | undefined;\r\n};\r\n\r\nexport class MpnAssociationDuplicateValidationCheck extends React.Component<IPropType> {\r\n render() {\r\n return (\r\n <>\r\n {this.props.hasAssociatedEnrollments && (\r\n <div className=\"spacer-ms-top\">\r\n <>\r\n <p>\r\n <AlertError>\r\n {Pipe(ResourcePipe, TransformPipe)(\r\n \"View_MPN_Association_Error\",\r\n {\r\n legalBusinessName: this.props.legalBusinessName,\r\n }\r\n )}\r\n </AlertError>\r\n </p>\r\n </>\r\n </div>\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n","/**\r\n * @description the Mpn association module wrapper\r\n */\r\n\r\nimport React, { Dispatch } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {\r\n Pipe,\r\n ReactStringReplacePipe,\r\n ResourcePipe,\r\n TransformPipe,\r\n} from \"../../../../pipes\";\r\nimport {\r\n ITableHeader,\r\n Radio,\r\n SearchBox,\r\n Table,\r\n Loader,\r\n AlertError,\r\n FormControlNames,\r\n Anchor,\r\n Button,\r\n} from \"../../../reusables\";\r\nimport {\r\n Account,\r\n ApiError,\r\n Dictionary,\r\n IErrorCode,\r\n IProgramMetadata,\r\n MpnAssociationData,\r\n MPNIdAssociationSearchRequest,\r\n MpnSupportAgreementResponse,\r\n OrganizationProfile,\r\n MPNIdAssociationSearchResponse,\r\n} from \"../../../../models\";\r\nimport { ProgramsUtility, ServerData, StoreUtility } from \"../../../../utility\";\r\nimport {\r\n AccountsService,\r\n MpnAssociationService,\r\n MpnEnrollmentService,\r\n ProfileService,\r\n ProgramService,\r\n} from \"../../../../services\";\r\nimport {\r\n AccountTypeName,\r\n EXTERNAL_ROUTES,\r\n FLIGHT_NAME,\r\n INTERNAL_ROUTES,\r\n PROGRAM_NAME,\r\n} from \"../../../../constants\";\r\nimport {\r\n EnrollInCspActionCreator,\r\n EnrollInMpnActionCreator,\r\n IReduxAction,\r\n RootState,\r\n TEnrollInCspState,\r\n TEnrollmentState,\r\n} from \"../../../../store\";\r\nimport { Navigation } from \"../../router\";\r\nimport { MpnSupportAgreement } from \"../mpn-support-agreement/mpn-support-agreement\";\r\nimport { TestAttribute } from \"src/component/hoc\";\r\nimport { createScope, messageBar, button } from \"@harmony/enablers/react\";\r\nimport { CSSProperties } from \"@harmony/enablers/react/scope-for-react\";\r\nimport { MpnAssociationDuplicateValidationCheck } from \"../mpn-association-validation\";\r\nimport mpn from \"../../enrollnow/mpn\";\r\nimport { TInviteState } from \"src/store/invitation\";\r\n\r\ntype IPropType = {\r\n initialSearch: boolean;\r\n mpnId: string;\r\n selectAssociatedMpnId: string;\r\n isMpnSearchAllowed: boolean;\r\n programStatus: Dictionary<string>;\r\n state: {\r\n enrollment: Partial<TEnrollmentState>;\r\n enrollInCsp: Partial<TEnrollInCspState>;\r\n };\r\n dispatch: {\r\n enrollInCsp: Dictionary<(...args: any[]) => void>;\r\n enrollInMpn: Dictionary<(...args: any[]) => void>;\r\n };\r\n} & Partial<{\r\n standalone: boolean;\r\n}>;\r\n\r\n// TODO to remove this interface later\r\ninterface IMpnAssocationSearchComponentState {\r\n mpnAssociationData: MpnAssociationData[];\r\n currentValue: string;\r\n searchTerm: string;\r\n error: string | \"\";\r\n searchError: string | \"\";\r\n searchPlaceHolderText: string | \"\";\r\n showLoader: boolean;\r\n isSearchFinished: boolean;\r\n showRequestAssocationLoader: boolean;\r\n disableContinue: boolean;\r\n showFetchSupportAgreementLoader: boolean;\r\n showSupportAgreementStatus: boolean;\r\n mpnSupportAgreementResponse: MpnSupportAgreementResponse | undefined;\r\n showMpnAssociationChangeWarningMessage: boolean;\r\n showMPNIdAssociationUniquenesStatus: boolean;\r\n showMPNIdAssociationUniquenesLoader: boolean;\r\n disableContinueOnMPNUniqueCheckValidation: boolean;\r\n isPartnerEnrolledToProgram: boolean;\r\n isInvitedPlaIdMismatch: boolean;\r\n}\r\n\r\nconst initialState: IMpnAssocationSearchComponentState = {\r\n mpnAssociationData: [],\r\n currentValue: \"\",\r\n searchTerm: \"\",\r\n error: \"\",\r\n searchError: \"\",\r\n searchPlaceHolderText: \"\",\r\n showLoader: false,\r\n isSearchFinished: false,\r\n showRequestAssocationLoader: false,\r\n disableContinue: true,\r\n showFetchSupportAgreementLoader: false,\r\n showSupportAgreementStatus: false,\r\n mpnSupportAgreementResponse: undefined,\r\n showMpnAssociationChangeWarningMessage: false,\r\n showMPNIdAssociationUniquenesStatus: false,\r\n showMPNIdAssociationUniquenesLoader: false,\r\n disableContinueOnMPNUniqueCheckValidation: true,\r\n isPartnerEnrolledToProgram: false,\r\n isInvitedPlaIdMismatch: false,\r\n};\r\n\r\nconst scope = createScope({\r\n reactInstance: React,\r\n});\r\n\r\nconst MessageBar = scope.forReact(messageBar);\r\nconst HarmonyButton = scope.forReact(button);\r\n\r\nexport class MpnAssociationSearchClass extends React.Component<\r\n IPropType,\r\n typeof initialState\r\n> {\r\n private static styles: {\r\n [key: string]: React.CSSProperties;\r\n } = {\r\n button: {\r\n \"--he-font-size-medium\": \"1em\",\r\n \"--he-form-control-height-small\": \"1.4em\",\r\n } as React.CSSProperties,\r\n };\r\n\r\n private _plaAccounts: MpnAssociationData[] = [];\r\n private _pgaAccounts: MpnAssociationData[] = [];\r\n state = initialState;\r\n private inHouseMpnIdAssociations: MpnAssociationData[] = [];\r\n private invitedPlaId: string | undefined;\r\n private inviteId: string | undefined;\r\n\r\n /**\r\n * @description This method save the searched key in the state.\r\n * @method onSearchTextChange\r\n */\r\n private onSearchTextChange = (searchTerm: string): void => {\r\n if (searchTerm) {\r\n this.setState({\r\n searchTerm,\r\n error: \"\",\r\n showMpnAssociationChangeWarningMessage: false,\r\n showMPNIdAssociationUniquenesStatus: false,\r\n isInvitedPlaIdMismatch: false\r\n });\r\n this.props.dispatch.enrollInCsp.searchString(searchTerm);\r\n if (searchTerm !== \"\") {\r\n this._plaAccounts = [];\r\n this._pgaAccounts = [];\r\n const mpnId = Number(searchTerm);\r\n if (isNaN(mpnId)) {\r\n this.searchMpn(undefined, searchTerm, ServerData.countryCode, true);\r\n } else {\r\n this.searchMpn(searchTerm, undefined, undefined, true);\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Method is used to check if the partner, is enrolled into reseller or looking to partner\r\n * into reseller\r\n * @returns\r\n */\r\n private isPartnerEnrolledIntoReseller = (): boolean => {\r\n if (!this.props.programStatus[PROGRAM_NAME.RESELLER.toLowerCase()]) {\r\n const enrollmentState = StoreUtility.getState(\r\n \"enrollment\"\r\n ) as TEnrollmentState;\r\n return !!(\r\n enrollmentState?.programsToEnroll &&\r\n ProgramsUtility.hasProgramInTheList(\r\n enrollmentState.programsToEnroll,\r\n PROGRAM_NAME.RESELLER.toLowerCase()\r\n )\r\n );\r\n }\r\n return true;\r\n };\r\n\r\n private filterPLAAccounts = (\r\n response?: MpnAssociationData[]\r\n ): MpnAssociationData[] => {\r\n const filterData = response || this.state.mpnAssociationData;\r\n if (filterData && filterData.length) {\r\n this._plaAccounts = filterData.filter(\r\n (account) => account.accountTypeName === AccountTypeName.PartnerLocation\r\n );\r\n return this._plaAccounts;\r\n }\r\n return [];\r\n };\r\n\r\n private filterPGAAccounts = (\r\n response?: MpnAssociationData[]\r\n ): MpnAssociationData[] => {\r\n const filterData = response || this.state.mpnAssociationData;\r\n if (filterData && filterData.length) {\r\n this._pgaAccounts = filterData.filter(\r\n (account) => account.accountTypeName === AccountTypeName.PartnerGlobal\r\n );\r\n return this._pgaAccounts;\r\n }\r\n return [];\r\n };\r\n\r\n private getPGADetails = (): string => {\r\n const pgaAccount = this.filterPGAAccounts();\r\n if (pgaAccount && pgaAccount.length > 0) {\r\n return [\r\n pgaAccount[0].companyName,\r\n pgaAccount[0].city,\r\n pgaAccount[0].state,\r\n pgaAccount[0].country,\r\n ]\r\n .filter((a) => !!a)\r\n .join(\", \");\r\n }\r\n return \"\";\r\n };\r\n\r\n private showMPNAssociationChangeMessage = (): void => {\r\n if (\r\n this.props.selectAssociatedMpnId &&\r\n this.state.currentValue &&\r\n this.props.selectAssociatedMpnId !== this.state.currentValue\r\n ) {\r\n this.setState({ showMpnAssociationChangeWarningMessage: true });\r\n } else {\r\n this.setState({ showMpnAssociationChangeWarningMessage: false });\r\n }\r\n };\r\n\r\n private blockUserOnSelectingNotInvitedPLA = (): void => {\r\n if (this.invitedPlaId && ServerData.hasFlight(FLIGHT_NAME.EnableInvitedPLAValidation)) {\r\n let associatedMpnId = this.state.currentValue && this.state.currentValue !== '' ? this.state.currentValue : this.props.selectAssociatedMpnId;\r\n if (\r\n associatedMpnId &&\r\n this.invitedPlaId !== associatedMpnId\r\n ) {\r\n this.setState({ isInvitedPlaIdMismatch: true });\r\n } else {\r\n this.setState({ isInvitedPlaIdMismatch: false });\r\n }\r\n }\r\n };\r\n\r\n private getPGAMpnId = (): string | undefined => {\r\n const pgaAccount = this.filterPGAAccounts();\r\n if (pgaAccount && pgaAccount.length > 0) {\r\n return pgaAccount[0].mpnId;\r\n }\r\n return \"\";\r\n };\r\n\r\n private getMpnIdSupportAgreementStatus = (mpnId: string): void => {\r\n MpnEnrollmentService.fetchMpnIdSupportAgreement(mpnId)\r\n .then((response: MpnSupportAgreementResponse) => {\r\n if (response?.isAgreementPresent) {\r\n this.setState({\r\n mpnSupportAgreementResponse: response,\r\n });\r\n }\r\n })\r\n .finally(() => {\r\n this.setState({\r\n disableContinue: false,\r\n showFetchSupportAgreementLoader: false,\r\n });\r\n });\r\n };\r\n\r\n private onMpnIdSelected = (\r\n event: React.ChangeEvent<HTMLInputElement>\r\n ): void => {\r\n this.setState(\r\n {\r\n currentValue: event.target.value,\r\n mpnSupportAgreementResponse: undefined,\r\n showSupportAgreementStatus: false,\r\n showMPNIdAssociationUniquenesStatus: false,\r\n showMPNIdAssociationUniquenesLoader: false,\r\n showMpnAssociationChangeWarningMessage: false,\r\n isInvitedPlaIdMismatch: false,\r\n },\r\n () => {\r\n if (\r\n this.isPartnerEnrolledIntoReseller() &&\r\n ServerData.hasFlight(FLIGHT_NAME.ENABLE_PX_ACC_EXP_BRAVOS_INTEGRATION)\r\n ) {\r\n this.setState(\r\n {\r\n showSupportAgreementStatus: true,\r\n showFetchSupportAgreementLoader: true,\r\n disableContinue: true,\r\n },\r\n () => {\r\n this.getMpnIdSupportAgreementStatus(this.state.currentValue);\r\n }\r\n );\r\n } else {\r\n this.setState({\r\n disableContinue: false,\r\n });\r\n }\r\n if (this.inviteId) {\r\n this.blockUserOnSelectingNotInvitedPLA();\r\n }\r\n this.validateMPNIdAssociations(this.state.currentValue);\r\n }\r\n );\r\n };\r\n\r\n private _tableHeaders: ITableHeader[] = [\r\n {\r\n optionKey: \"mpnId\",\r\n heading: \"\",\r\n renderer: (value: string, _, index) => (\r\n <Radio\r\n id={`mpn-id-selection-${index}`}\r\n value={value}\r\n className=\"spacer-xs-right\"\r\n checked={value === this.state.currentValue}\r\n onChange={this.onMpnIdSelected}\r\n />\r\n ),\r\n },\r\n {\r\n optionKey: \"companyName\",\r\n heading: Pipe(ResourcePipe)(\"Common_CompanyName\"),\r\n },\r\n {\r\n optionKey: \"inlineAddress\",\r\n heading: Pipe(ResourcePipe)(\"Common_Address\"),\r\n },\r\n {\r\n optionKey: \"mpnId\",\r\n heading: Pipe(ResourcePipe)(\"Mpn_AssociationList_TableHeader_MpnId\"),\r\n },\r\n ];\r\n\r\n private onRequestAssociationButtonClick = (): void => {\r\n if (!this.state.currentValue) {\r\n return;\r\n }\r\n this.setState(\r\n {\r\n showRequestAssocationLoader: true,\r\n disableContinue: true,\r\n error: \"\",\r\n },\r\n () => {\r\n if (this.state.currentValue === this.props.selectAssociatedMpnId) {\r\n this.populateCompanyInformationAndNavigate();\r\n } else {\r\n AccountsService.getAccounts({ typeName: AccountTypeName.Tenant })\r\n .then((tenatAccount: Account[]) => {\r\n if (tenatAccount && tenatAccount.length > 0) {\r\n return MpnAssociationService.associateMpnId(\r\n this.state.currentValue\r\n );\r\n }\r\n\r\n this.props.dispatch.enrollInCsp.mpnIdToAssociate(\r\n this.state.currentValue\r\n );\r\n\r\n return null;\r\n })\r\n .then(\r\n () => {\r\n this.populateCompanyInformationAndNavigate();\r\n },\r\n (err: ApiError) => {\r\n const error = this.setMpnAssocationError(err);\r\n this.setState({\r\n showRequestAssocationLoader: false,\r\n error,\r\n });\r\n }\r\n );\r\n }\r\n }\r\n );\r\n };\r\n\r\n private populateCompanyInformationAndNavigate = () => {\r\n const selectedMpnData = this.state.mpnAssociationData.find(\r\n (mpnAssItem) => mpnAssItem.mpnId === this.state.currentValue\r\n );\r\n\r\n const islegalEntityFixFlightEnabled =\r\n ServerData.hasFlight(FLIGHT_NAME.EnableLegalEntityRelationFixByTenant) &&\r\n ServerData.hasFlight(FLIGHT_NAME.EnableLegalEntityRelationFix);\r\n\r\n if (\r\n islegalEntityFixFlightEnabled &&\r\n this.props.state.enrollInCsp.isCompanyDetailsFromTenantDetail &&\r\n selectedMpnData &&\r\n this.inHouseMpnIdAssociations?.some(\r\n (mpnData) => mpnData.mpnId === selectedMpnData?.mpnId\r\n )\r\n ) {\r\n this.props.dispatch.enrollInMpn.updateAddressToEnroll({\r\n [FormControlNames.companyName]: selectedMpnData.companyName,\r\n [FormControlNames.country]: selectedMpnData.country,\r\n [FormControlNames.state]: selectedMpnData.state,\r\n [FormControlNames.city]: selectedMpnData.city,\r\n [FormControlNames.postalCode]: selectedMpnData.postalCode,\r\n });\r\n }\r\n\r\n if (!islegalEntityFixFlightEnabled && selectedMpnData) {\r\n this.props.dispatch.enrollInMpn.updateAddressToEnroll({\r\n [FormControlNames.companyName]: selectedMpnData.companyName,\r\n [FormControlNames.country]: selectedMpnData.country,\r\n [FormControlNames.state]: selectedMpnData.state,\r\n [FormControlNames.city]: selectedMpnData.city,\r\n [FormControlNames.postalCode]: selectedMpnData.postalCode,\r\n });\r\n }\r\n\r\n if (\r\n islegalEntityFixFlightEnabled &&\r\n !this.props.state.enrollInCsp.isCompanyDetailsFromTenantDetail\r\n ) {\r\n this.props.dispatch.enrollInCsp.setDisableDunsSearch(true);\r\n this.props.dispatch.enrollInMpn.setIsLegalEntityReadonly(true);\r\n } else {\r\n if (selectedMpnData?.enrollmentStatus?.toLowerCase() === \"active\") {\r\n this.props.dispatch.enrollInMpn.setIsLegalEntityReadonly(true);\r\n } else {\r\n this.props.dispatch.enrollInMpn.setIsLegalEntityReadonly(false);\r\n }\r\n }\r\n\r\n if (this.props.standalone) {\r\n window.location.href = EXTERNAL_ROUTES.ACCOUNT_SETTINGS;\r\n } else {\r\n Navigation.navigate(this.props, INTERNAL_ROUTES.ENROLLMENT_MPN, {\r\n state: {\r\n step:\r\n islegalEntityFixFlightEnabled &&\r\n this.props.state.enrollInCsp.isCompanyDetailsFromTenantDetail\r\n ? 0\r\n : 1,\r\n },\r\n });\r\n }\r\n };\r\n\r\n private onSkipForNowButtonClick = (): void => {\r\n Navigation.navigate(this.props, INTERNAL_ROUTES.ENROLLMENT_MPN);\r\n };\r\n\r\n private validateMPNIdAssociations(mpnId: string) {\r\n if (ServerData.hasFlight(FLIGHT_NAME.EnableMPNIdAssociationValidation)) {\r\n this.setState({\r\n showMPNIdAssociationUniquenesStatus: true,\r\n showMPNIdAssociationUniquenesLoader: true,\r\n });\r\n\r\n this.validateAssociatedEnrollmentsBasedOnMpnAndProgram(\r\n mpnId,\r\n ServerData?.mpnIdAssociationUniqueValidationConfiguration\r\n ?.programEnrollmentStatus,\r\n ServerData?.mpnIdAssociationUniqueValidationConfiguration?.programName\r\n );\r\n } else {\r\n this.enableContinueOnMPNUniqueCheckValidation();\r\n }\r\n }\r\n\r\n private enableContinueOnMPNUniqueCheckValidation() {\r\n this.showMPNAssociationChangeMessage();\r\n this.setState({\r\n disableContinueOnMPNUniqueCheckValidation: false,\r\n showMPNIdAssociationUniquenesLoader: false,\r\n });\r\n }\r\n\r\n \r\n private validateAssociatedEnrollmentsBasedOnMpnAndProgram = (\r\n mpnId: string,\r\n programEnrollmentStatus: string[] | undefined,\r\n programNames: string[] | undefined\r\n ): void => {\r\n if (!programEnrollmentStatus || !programNames) {\r\n this.enableContinueOnMPNUniqueCheckValidation();\r\n return;\r\n }\r\n let programEnrollmentStatusInLowerCase: string[];\r\n if (programEnrollmentStatus) {\r\n programEnrollmentStatusInLowerCase = programEnrollmentStatus.map(\r\n (status) => status.toLowerCase()\r\n );\r\n }\r\n let programNamesInLowerCase: string[] = [];\r\n if (programNames) {\r\n programNamesInLowerCase = programNames.map((name) => name.toLowerCase());\r\n }\r\n const enrollmentState = StoreUtility.getState(\r\n \"enrollment\"\r\n ) as TEnrollmentState;\r\n\r\n let isPartnerEnrolledToProgram = false;\r\n if (enrollmentState?.programsToEnroll?.length && this.props.programStatus) {\r\n programNamesInLowerCase.forEach((programName) => {\r\n let enrollmentStatusForProgram =\r\n this.props.programStatus[programName.toLowerCase()];\r\n if (\r\n enrollmentStatusForProgram &&\r\n programEnrollmentStatusInLowerCase.includes(\r\n enrollmentStatusForProgram.toLowerCase()\r\n )\r\n ) {\r\n isPartnerEnrolledToProgram = true;\r\n return;\r\n } else {\r\n let hasProgramInList = ProgramsUtility.hasProgramInTheList(\r\n enrollmentState.programsToEnroll,\r\n programName.toLowerCase()\r\n );\r\n isPartnerEnrolledToProgram =\r\n hasProgramInList || isPartnerEnrolledToProgram;\r\n }\r\n });\r\n this.setState({\r\n isPartnerEnrolledToProgram: isPartnerEnrolledToProgram,\r\n });\r\n this.validateMpnAssociations(\r\n mpnId,\r\n programEnrollmentStatus,\r\n programNames\r\n );\r\n } else {\r\n ProgramService.getPartnerProgramEnrollments(false).subscribe({\r\n next: (response) => {\r\n isPartnerEnrolledToProgram = Object.entries(response).some(\r\n ([key, status]) => {\r\n const programKey = key.toLowerCase();\r\n const enrollmentStatus = status as string;\r\n if (\r\n programNamesInLowerCase?.includes(programKey) &&\r\n enrollmentStatus &&\r\n programEnrollmentStatusInLowerCase?.includes(\r\n enrollmentStatus.toLowerCase()\r\n )\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n );\r\n },\r\n error: (error) => {},\r\n complete: () => {\r\n this.setState({\r\n isPartnerEnrolledToProgram: isPartnerEnrolledToProgram,\r\n });\r\n this.validateMpnAssociations(\r\n mpnId,\r\n programEnrollmentStatus,\r\n programNames\r\n );\r\n },\r\n });\r\n }\r\n };\r\n\r\n private validateMpnAssociations(\r\n mpnId: string,\r\n programEnrollmentStatus: string[],\r\n programNames: string[]\r\n ) {\r\n let mpnAssociationUniqueValidationRequest: MPNIdAssociationSearchRequest = {\r\n mpnId: mpnId,\r\n programEnrollmentStatus: programEnrollmentStatus,\r\n programNames: programNames,\r\n };\r\n MpnAssociationService.ValidateAssociatedEnrollmentsForMPNID(\r\n mpnAssociationUniqueValidationRequest\r\n )\r\n .then((response: MPNIdAssociationSearchResponse) => {\r\n if (\r\n response &&\r\n this.hasAssociatedEnrollments(response) &&\r\n this.state.isPartnerEnrolledToProgram\r\n ) {\r\n this.setState({\r\n disableContinueOnMPNUniqueCheckValidation: true,\r\n showMpnAssociationChangeWarningMessage: false,\r\n });\r\n } else {\r\n this.enableContinueOnMPNUniqueCheckValidation();\r\n }\r\n })\r\n .catch((exception) => {\r\n this.setState({\r\n disableContinueOnMPNUniqueCheckValidation: false,\r\n });\r\n })\r\n .finally(() => {\r\n this.setState({\r\n showMPNIdAssociationUniquenesStatus: true,\r\n showMPNIdAssociationUniquenesLoader: false,\r\n });\r\n });\r\n }\r\n\r\n private hasAssociatedEnrollments(\r\n response: MPNIdAssociationSearchResponse\r\n ): boolean {\r\n if (response?.associatedEnrollments?.length) {\r\n let associatedEnrollments = response.associatedEnrollments[0];\r\n let accountId = associatedEnrollments?.account?.accountId;\r\n if (ServerData?.tenantId !== accountId) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n\r\n private setMpnAssocationError(error: ApiError): string {\r\n if (error && error.errorCode) {\r\n switch (error.errorCode) {\r\n case IErrorCode.UnsupportedCountry: {\r\n return \"MpnAssociation_UnsupportedCountryError\";\r\n }\r\n case IErrorCode.INVALID_MPN_ID: {\r\n return \"MpnAssociation_InvalidMpnIdError\";\r\n }\r\n case IErrorCode.InvalidSearch: {\r\n return \"MpnAssociation_InvalidSearchError\";\r\n }\r\n default: {\r\n return error.message;\r\n }\r\n }\r\n }\r\n return error.message;\r\n }\r\n\r\n private searchMpn = (\r\n mpnId?: string,\r\n companyName?: string,\r\n country?: string,\r\n showSearchError?: boolean,\r\n initialSearch?: boolean\r\n ): void => {\r\n this.setState(\r\n {\r\n showLoader: true,\r\n currentValue: \"\",\r\n mpnAssociationData: [],\r\n searchError: \"\",\r\n error: \"\",\r\n showSupportAgreementStatus: false,\r\n disableContinue: true,\r\n showMPNIdAssociationUniquenesStatus: false,\r\n isInvitedPlaIdMismatch: false,\r\n },\r\n () => {\r\n MpnAssociationService.getMpnAssociation({\r\n mpnId,\r\n companyName,\r\n countryCode: country,\r\n })\r\n .then((response: MpnAssociationData[]) => {\r\n if (\r\n Array.isArray(response) &&\r\n response.length === 0 &&\r\n showSearchError\r\n ) {\r\n this.setState({ searchError: this.setSearchError() });\r\n }\r\n if (initialSearch) {\r\n this.inHouseMpnIdAssociations = response;\r\n }\r\n this.filterPLAAccounts(response);\r\n this.filterPGAAccounts(response);\r\n const selectedPlaAccount = this._plaAccounts?.find(\r\n (account) => account.mpnId === this.props.selectAssociatedMpnId\r\n );\r\n this.setState({\r\n mpnAssociationData: response,\r\n isSearchFinished: true,\r\n showLoader: false,\r\n currentValue: selectedPlaAccount?.mpnId || \"\",\r\n disableContinue: !selectedPlaAccount?.mpnId,\r\n });\r\n \r\n if (this.inviteId) {\r\n this.blockUserOnSelectingNotInvitedPLA();\r\n }\r\n })\r\n .catch((err: ApiError) => {\r\n this.setState({\r\n isSearchFinished: true,\r\n showLoader: false,\r\n error: Pipe(ResourcePipe, TransformPipe)(\r\n \"Mpn_Association_Generic_Error\",\r\n {\r\n correlationId: err.correlationId,\r\n }\r\n ),\r\n });\r\n });\r\n }\r\n );\r\n };\r\n\r\n private setSearchError(): string {\r\n if (this.state.searchTerm !== \"\") {\r\n return Pipe(ResourcePipe)(\"Mpn_Association_Not_Found\");\r\n }\r\n\r\n return Pipe(ResourcePipe)(\"MpnAssociation_InvalidMpnIdError\");\r\n }\r\n\r\n private setMpnIdAssociation(mpnId: string): void {\r\n // If tenant MPNId exists, its update flow.\r\n // By default start a search with the existing MPN Id so that user can select another location within the same VORG.\r\n if (mpnId) {\r\n this.setSearchPlaceHolderTextForMpnId(mpnId);\r\n this.searchMpn(mpnId, undefined, undefined, undefined, true);\r\n } else {\r\n this.getOrganizationName();\r\n }\r\n }\r\n\r\n private setSearchPlaceHolderTextForMpnId(mpnId: string): void {\r\n const setSearchPlaceHolderText =\r\n this.props.selectAssociatedMpnId === \"\" ||\r\n this.props.selectAssociatedMpnId === undefined\r\n ? mpnId\r\n : this.props.selectAssociatedMpnId;\r\n\r\n this.setState({ searchPlaceHolderText: setSearchPlaceHolderText });\r\n }\r\n\r\n private getOrganizationName(): void {\r\n ProfileService.getOrganizationProfile().then(\r\n (organizationProfileResponse: OrganizationProfile) => {\r\n if (organizationProfileResponse) {\r\n let organizationName = \"\";\r\n organizationName = organizationProfileResponse.companyName;\r\n // Start a search with the organization name if exists.\r\n if (organizationName) {\r\n this.setState({ searchPlaceHolderText: organizationName });\r\n this.searchMpn(undefined, organizationName, ServerData.countryCode);\r\n }\r\n }\r\n }\r\n );\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.initialSearch) {\r\n this.setMpnIdAssociation(this.props.mpnId);\r\n if (this.props.selectAssociatedMpnId) {\r\n this.validateMPNIdAssociations(this.props.selectAssociatedMpnId);\r\n }\r\n }\r\n if (\r\n ServerData.hasFlight(FLIGHT_NAME.EnableLegalEntityRelationFixByTenant) &&\r\n ServerData.hasFlight(FLIGHT_NAME.EnableLegalEntityRelationFix)\r\n ) {\r\n this.props.dispatch.enrollInCsp.setDisableDunsSearch(false);\r\n this.props.dispatch.enrollInMpn.setIsLegalEntityReadonly(false);\r\n }\r\n \r\n const inviteStore = StoreUtility.getState(\"invite\") as TInviteState;\r\n if (inviteStore) {\r\n this.invitedPlaId = inviteStore.invitedPlaId;\r\n this.inviteId = inviteStore.inviteId;\r\n if (this.inviteId && this.props.selectAssociatedMpnId) {\r\n this.blockUserOnSelectingNotInvitedPLA();\r\n }\r\n }\r\n\r\n }\r\n\r\n private isMpnAssociationMandatory() {\r\n if (this.props.standalone) return true;\r\n\r\n return (\r\n ProgramsUtility.isMpnAssociationMandatory(\r\n this.props.state.enrollment.programsToEnroll?.[0] || \"\"\r\n ) || this.props.selectAssociatedMpnId\r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n {this.props.isMpnSearchAllowed && (\r\n <>\r\n <label className=\"form-label required font-weight-600 font-size-14\">\r\n {Pipe(ResourcePipe)(\"Mpn_Association_Search_Placeholder\")}\r\n </label>\r\n <SearchBox\r\n placeholder={Pipe(ResourcePipe)(this.state.searchPlaceHolderText)}\r\n onChange={this.onSearchTextChange}\r\n changeOnEnter={true}\r\n />\r\n {this.state.searchError && (\r\n <div className=\"spacer-xs-top\">\r\n {Pipe(ResourcePipe)(this.state.searchError)}\r\n </div>\r\n )}\r\n </>\r\n )}\r\n {this._plaAccounts.length > 0 && (\r\n <>\r\n <h6 className=\"spacer-md-top font-weight-600 font-size-14\">\r\n {Pipe(ResourcePipe)(\"Mpn_Association_Select_Location\")}\r\n </h6>\r\n {this._pgaAccounts.length > 0 && (\r\n <div className=\"spacer-ms-top font-size-14\">\r\n {this.getPGADetails()}\r\n <span className=\"spacer-xxs-left\">\r\n ({Pipe(ResourcePipe)(\"Partner_Id\")}: {this.getPGAMpnId()})\r\n </span>\r\n </div>\r\n )}\r\n </>\r\n )}\r\n <div className=\"spacer-ms-top\">\r\n {this.state.showLoader && (\r\n <Loader fullScreen={false} blockOperation={true} />\r\n )}\r\n {this._plaAccounts.length > 0 && (\r\n <Table\r\n headers={this._tableHeaders}\r\n type=\"basic\"\r\n rows={this._plaAccounts}\r\n sortable={true}\r\n />\r\n )}\r\n </div>\r\n\r\n {!this.state.showLoader &&\r\n this.state.isInvitedPlaIdMismatch && (\r\n <div className=\"spacer-ms-top \">\r\n <TestAttribute name=\"messagebar\">\r\n <MessageBar\r\n expandable={true}\r\n open={true}\r\n role=\"status\"\r\n expanded={true}\r\n appearance=\"warning\"\r\n >\r\n {Pipe(ResourcePipe, ReactStringReplacePipe)(\r\n \"MpnAssociationChangeWarningWithNotInvitedPlaId\",\r\n {\r\n invitedPlaId: this.invitedPlaId,\r\n }\r\n )}\r\n </MessageBar>\r\n </TestAttribute>\r\n </div>\r\n )}\r\n\r\n {this.state.showMpnAssociationChangeWarningMessage && (\r\n <div className=\"spacer-ms-top \">\r\n <TestAttribute name=\"messagebar\">\r\n <MessageBar\r\n expandable={true}\r\n open={true}\r\n role=\"status\"\r\n expanded={true}\r\n appearance=\"warning\"\r\n >\r\n {Pipe(ResourcePipe, ReactStringReplacePipe)(\r\n \"mpnAssociationChangeWarning\",\r\n {\r\n mpnId: this.props.selectAssociatedMpnId,\r\n currentProgramName: Pipe(ResourcePipe)(\r\n ProgramsUtility.getDisplayName(\r\n this.props.state.enrollment.programsToEnroll?.[0] || \"\"\r\n )\r\n ),\r\n }\r\n )}\r\n <HarmonyButton\r\n appearance=\"link\"\r\n href={EXTERNAL_ROUTES.CREATE_WORK_ACCOUNT_GLOBAL_REDIRECT}\r\n style={\r\n MpnAssociationSearchClass.styles.button as CSSProperties\r\n }\r\n target=\"_blank\"\r\n external\r\n >\r\n {Pipe(ResourcePipe)(\"Create_New_Entra_Tenant\")}\r\n </HarmonyButton>\r\n </MessageBar>\r\n </TestAttribute>\r\n </div>\r\n )}\r\n\r\n {this.state.showSupportAgreementStatus &&\r\n !this.state.showFetchSupportAgreementLoader && (\r\n <MpnSupportAgreement\r\n mpnId={this.state.currentValue}\r\n mpnSupportAgreementResponse={\r\n this.state.mpnSupportAgreementResponse\r\n }\r\n />\r\n )}\r\n\r\n {this.state.showMPNIdAssociationUniquenesStatus &&\r\n !this.state.showMPNIdAssociationUniquenesLoader && (\r\n <MpnAssociationDuplicateValidationCheck\r\n mpnId={this.state.currentValue}\r\n hasAssociatedEnrollments={\r\n this.state.disableContinueOnMPNUniqueCheckValidation\r\n }\r\n legalBusinessName=\"\"\r\n />\r\n )}\r\n\r\n {\r\n (this.state.showMPNIdAssociationUniquenesLoader ||\r\n this.state.showFetchSupportAgreementLoader) && (\r\n <Loader fullScreen={false} blockOperation={true} />\r\n )}\r\n\r\n <div className=\"spacer-lg-top text-align-right\">\r\n <div>\r\n {!this.isMpnAssociationMandatory() && (\r\n <Button\r\n className=\"btn-link text-align-left\"\r\n onClick={this.onSkipForNowButtonClick}\r\n >\r\n {Pipe(ResourcePipe)(\"Common_Skip_For_Now\")}\r\n </Button>\r\n )}\r\n <Button\r\n className=\"btn-primary\"\r\n onClick={this.onRequestAssociationButtonClick}\r\n disabled={\r\n this.state.disableContinue ||\r\n this.state.disableContinueOnMPNUniqueCheckValidation ||\r\n this.state.isInvitedPlaIdMismatch\r\n }\r\n >\r\n {Pipe(ResourcePipe)(\"Common_Continue\")}\r\n </Button>\r\n </div>\r\n </div>\r\n {this.state.showRequestAssocationLoader && (\r\n <div className=\"flex flex-space-between spacer-ms-top\">\r\n <div>\r\n <Loader fullScreen={false} blockOperation={true} />\r\n </div>\r\n </div>\r\n )}\r\n {this.state.disableContinue && this.state.error && (\r\n <div className=\"spacer-md-top\">\r\n <AlertError>{Pipe(ResourcePipe)(this.state.error)}</AlertError>\r\n </div>\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch<IReduxAction>) => {\r\n return {\r\n dispatch: {\r\n enrollInCsp: {\r\n mpnIdToAssociate: (mpnId: string) =>\r\n dispatch(EnrollInCspActionCreator.setMpnIdToAssociate(mpnId)),\r\n searchString: (searchString: any) =>\r\n dispatch(EnrollInCspActionCreator.setSearchString(searchString)),\r\n setDisableDunsSearch: (disableDunsSearch: boolean) =>\r\n dispatch(\r\n EnrollInCspActionCreator.setDisableDunsSearch(disableDunsSearch)\r\n ),\r\n },\r\n enrollInMpn: {\r\n updateAddressToEnroll: (address: Dictionary<string>) =>\r\n dispatch(EnrollInMpnActionCreator.updateAddressToEnroll(address)),\r\n setIsLegalEntityReadonly: (isReadonly: boolean) =>\r\n dispatch(\r\n EnrollInMpnActionCreator.setIsLegalEntityReadonly(isReadonly)\r\n ),\r\n },\r\n },\r\n };\r\n};\r\n\r\nconst mapStateToProps = (state: RootState) => {\r\n return {\r\n state: {\r\n enrollment: {\r\n programsToEnroll: state.enrollment.programsToEnroll,\r\n },\r\n enrollInCsp: {\r\n isCompanyDetailsFromTenantDetail:\r\n state.enrollInCsp.isCompanyDetailsFromTenantDetail,\r\n },\r\n },\r\n };\r\n};\r\n\r\nexport const MpnAssociationSearchComponent = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(MpnAssociationSearchClass);\r\n","/**\r\n * @description the guard methods for Mpn Association view.\r\n */\r\nimport { INTERNAL_ROUTES } from \"../../../constants\";\r\nimport { IRedirectionGuardCondition } from \"../../hoc\";\r\nimport { ProgramsUtility } from \"../../../utility\";\r\n\r\nexport function redirectionGuard(programToEnroll: string[], isStandalone: boolean = false): IRedirectionGuardCondition[] {\r\n return [\r\n {\r\n condition: Promise.resolve(\r\n !ProgramsUtility.isMpnAssociationSupported(programToEnroll[0]) && !isStandalone\r\n ),\r\n to: INTERNAL_ROUTES.ENROLLMENT\r\n }\r\n ];\r\n}","/**\r\n * @description the duns form container\r\n */\r\nimport React from \"react\";\r\nimport { withRouter } from \"react-router\";\r\nimport { connect } from \"react-redux\";\r\nimport { AccountTypeName, ProgramStatus, PROGRAM_NAME } from \"../../../constants\";\r\nimport { Pipe, ResourcePipe, TransformPipe } from \"../../../pipes\";\r\nimport { ApiError, Dictionary } from \"../../../models\";\r\nimport { Header, Loader, AlertError, FlexPageWrapper } from \"../../reusables\";\r\nimport { IRedirectionGuardCondition, RedirectionGuard, TestAttribute } from \"../../hoc\";\r\nimport { IFetchPreLoadData, MpnAssociationService } from \"../../../services\";\r\nimport { MpnAssociationTitleComponent } from \"./mpn-association-title\";\r\nimport { MpnAssociationSearchComponent } from \"./mpn-association-search\";\r\nimport { RootState, TEnrollmentState } from \"../../../store\";\r\nimport { redirectionGuard } from \"./mpn-association.guard\";\r\nimport { ProgramsUtility } from \"../../../utility\";\r\n\r\ntype IPropType = {\r\n state: {\r\n enrollment: Partial<TEnrollmentState>\r\n };\r\n history: any;\r\n} & Partial<{\r\n standalone: boolean;\r\n}>;\r\n\r\nconst initialState = {\r\n initialSearch: false,\r\n mpnId: \"\",\r\n selectAssociatedMpnId: \"\",\r\n programStatus: {} as Dictionary<string>,\r\n error: \"\",\r\n showPageLoader: false,\r\n isMpnSearchAllowed: false\r\n};\r\n\r\ntype IWrapperProp = Partial<{\r\n standalone: boolean;\r\n guard: IRedirectionGuardCondition | IRedirectionGuardCondition[];\r\n}>;\r\n\r\nconst Wrapper: React.FC<IWrapperProp> = ({guard=[], standalone = false, children}) => {\r\n return standalone ? <>{children}</> : (\r\n <RedirectionGuard guard={guard}>\r\n <FlexPageWrapper>\r\n {children}\r\n </FlexPageWrapper>\r\n </RedirectionGuard>\r\n );\r\n};\r\n\r\nexport class MpnAssociationComponentClass extends React.Component<IPropType, typeof initialState>{\r\n private _mpnId: string = \"\";\r\n private _programsToEnroll: string[] = [];\r\n state = initialState;\r\n\r\n private isPostQualifiedCpv(programStatuses: Dictionary<string>): boolean {\r\n if (Object.keys(programStatuses).length > 0) {\r\n if (programStatuses[PROGRAM_NAME.CONTROL_PANEL_VENDOR.toLowerCase()] === ProgramStatus.Qualified ||\r\n programStatuses[PROGRAM_NAME.CONTROL_PANEL_VENDOR.toLowerCase()] === ProgramStatus.Active) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n private setPreLoadData(mpnAssocationResponse: IFetchPreLoadData): void {\r\n const isCpv = this.isPostQualifiedCpv(mpnAssocationResponse.programStatus);\r\n const tenantMpnId = mpnAssocationResponse.mpnIds[AccountTypeName.Tenant];\r\n const globalMpnId = mpnAssocationResponse.mpnIds[AccountTypeName.PartnerGlobal];\r\n // Mpn Id can be updated to only another one within the VOrg structure if a PGA exists or the account is post qualified CPV\r\n if (globalMpnId || isCpv) {\r\n if (!isCpv && tenantMpnId) {\r\n this.setState({ isMpnSearchAllowed: true });\r\n this._mpnId = tenantMpnId;\r\n }\r\n else {\r\n // MPN ID update/Upgrade from MPN program to a higher level program\r\n // Restrict within the VOrg structure if its a connected account with PGA MpnId.\r\n // restrict user to select within the current V-Org and no search is allowed.\r\n this.setState({ isMpnSearchAllowed: false });\r\n this._mpnId = tenantMpnId || globalMpnId;\r\n }\r\n }\r\n else {\r\n this.setState({ isMpnSearchAllowed: true });\r\n this._mpnId = tenantMpnId;\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n const programsToEnroll = this.props.state.enrollment.programsToEnroll;\r\n this._programsToEnroll = programsToEnroll ? programsToEnroll : [];\r\n this.setState({ showPageLoader: true, error: \"\" },\r\n () => {\r\n MpnAssociationService.fetchPreLoadData()\r\n .then((mpnAssocationResponse: IFetchPreLoadData) => {\r\n this.setPreLoadData(mpnAssocationResponse);\r\n this.setState({\r\n programStatus: mpnAssocationResponse.programStatus,\r\n selectAssociatedMpnId: mpnAssocationResponse.mpnIds[AccountTypeName.Tenant],\r\n initialSearch: true,\r\n showPageLoader: false\r\n });\r\n }).catch((err: ApiError) => {\r\n this.setState({\r\n showPageLoader: false,\r\n error: Pipe(ResourcePipe, TransformPipe)(\"Mpn_Association_Generic_Error\", {\r\n correlationId: err.correlationId\r\n })\r\n })\r\n });\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n <Wrapper standalone={this.props.standalone} guard={redirectionGuard(this._programsToEnroll, this.props.standalone)}>\r\n {this.state.showPageLoader ? (\r\n <div className=\"text-align-center\">\r\n <Loader size=\"large\" fullScreen={false} blockOperation={true} />\r\n </div>\r\n ) : (\r\n <>\r\n <TestAttribute name=\"mpn-association-title\">\r\n <Header title={ProgramsUtility.getMpnAssociationTitle(this._programsToEnroll[0])} />\r\n </TestAttribute>\r\n <MpnAssociationTitleComponent\r\n programToEnroll={this._programsToEnroll[0]} />\r\n </>\r\n )}\r\n {this.state.error && (\r\n <AlertError title={Pipe(ResourcePipe)(this.state.error)} />\r\n )}\r\n {!this.state.showPageLoader && (\r\n <div className=\"spacer-md-top\">\r\n <MpnAssociationSearchComponent\r\n {...this.props}\r\n programStatus= {this.state.programStatus}\r\n initialSearch={this.state.initialSearch}\r\n mpnId={this._mpnId}\r\n selectAssociatedMpnId={this.state.selectAssociatedMpnId}\r\n isMpnSearchAllowed={this.state.isMpnSearchAllowed} />\r\n </div>\r\n )}\r\n </Wrapper>\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: RootState) => {\r\n return {\r\n state: {\r\n enrollment: {\r\n programsToEnroll: state.enrollment.programsToEnroll,\r\n }\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(withRouter(MpnAssociationComponentClass as any));","import { css } from 'lit';\nimport { SystemColors } from '../../utilities/system-colors.js';\n\nexport default css`\n :host {\n display: block;\n }\n\n /* Prevents margins users are putting on message bar from showing, except when message bar is open or animating. */\n :host(.he-hidden) {\n margin: 0 !important;\n }\n\n ::slotted([slot='actions']) .he-button {\n height: var(--he-form-control-height-small) !important;\n font-size: var(--he-font-size-medium) !important;\n margin: 0 var(--he-spacing-2x-small);\n }\n\n .message-bar__wrapper {\n overflow: hidden;\n }\n\n .message-bar {\n position: relative;\n display: flex;\n flex-direction: column;\n background-color: var(--he-color-surface-background);\n font-weight: var(--he-font-weight-normal);\n min-height: var(--he-form-control-height);\n width: 100%;\n }\n\n .message-bar__content {\n display: flex;\n align-items: flex-start;\n width: 100%;\n line-height: var(--he-line-height-normal);\n }\n\n .message-bar-icon {\n flex: 0;\n font-size: var(--he-font-size-large);\n min-width: var(--he-font-size-large);\n min-height: var(--he-font-size-large);\n margin-top: var(--he-spacing-x-small);\n margin-inline-start: var(--he-spacing-small);\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .message-bar__message-container {\n flex: 1;\n font-family: var(--he-body-font);\n font-size: var(--he-font-size-small);\n font-weight: var(--he-font-weight-normal);\n line-height: var(--he-line-height-small);\n margin: var(--he-spacing-x-small) var(--he-spacing-x-small);\n display: flex;\n min-width: 0px;\n }\n\n .message-bar--collapsed .message-bar__message-container {\n max-height: var(--he-line-height-small);\n overflow: hidden;\n }\n\n .message-bar--collapsed .message-bar__message-inner-container {\n height: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .message-bar--expanded .message-bar__message-inner-container {\n white-space: normal;\n word-break: break-word;\n }\n\n .message-bar__actions {\n flex: 0;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n height: var(--he-form-control-height);\n }\n\n .message-bar__button .he-icon {\n font-size: var(--he-font-size-small);\n }\n\n .message-bar__footer {\n display: none;\n }\n\n .message-bar--has-actions .message-bar__footer {\n display: flex;\n margin: var(--he-spacing-2x-small) var(--he-spacing-x-small);\n justify-content: flex-end;\n }\n\n /* Appearance Styles */\n .message-bar--info {\n background-color: var(--he-color-neutral-100);\n }\n\n .message-bar--info .message-bar__button {\n --button-background-color-hover: var(--he-color-neutral-200);\n --button-background-color-active: var(--he-color-neutral-250);\n }\n\n .message-bar--notice {\n background-color: var(--he-color-primary-100);\n }\n\n .message-bar--notice .message-bar-icon {\n color: var(--he-color-neutral-700);\n }\n\n .message-bar--notice .message-bar__button {\n --button-background-color-hover: var(--he-color-primary-200);\n --button-background-color-active: var(--he-color-primary-300);\n }\n\n .message-bar--success {\n background-color: var(--he-color-success-100);\n }\n\n .message-bar--success .message-bar-icon {\n color: var(--he-color-success-700);\n }\n\n .message-bar--success .message-bar__button {\n --button-background-color-hover: var(--he-color-success-200);\n --button-background-color-active: var(--he-color-success-300);\n }\n\n .message-bar--warning {\n background-color: var(--he-color-warning-100);\n }\n\n .message-bar--warning .message-bar__button {\n --button-background-color-hover: var(--he-color-warning-200);\n --button-background-color-active: var(--he-color-warning-300);\n }\n\n .message-bar--error {\n background-color: var(--he-color-danger-100);\n }\n\n .message-bar--error .message-bar-icon {\n color: var(--he-color-danger-700);\n }\n\n .message-bar--error .message-bar__button {\n --button-background-color-hover: var(--he-color-danger-200);\n --button-background-color-active: var(--he-color-danger-300);\n }\n\n /* High contrast */\n @media screen and (forced-colors: active) {\n .message-bar {\n border: 1px solid ${SystemColors.CanvasText};\n }\n\n .message-bar-icon {\n color: ${SystemColors.CanvasText};\n }\n }\n`;\n","import { html } from 'lit/static-html.js';\nimport { property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { HasSlotController } from '../../internal/slot.js';\nimport { watch } from '../../internal/watch.js';\nimport { animateTo, stopAnimations } from '../../internal/animations.js';\nimport button from '../button/button.js';\nimport icon from '../icon/icon.js';\nimport HarmonyDismissibleElement from '../../base-components/dismissible.js';\nimport componentStyles from '../../internal/styles/component.styles.js';\nimport { Component } from '../../utilities/decorators.js';\nimport styles from './message-bar.styles.js';\n\nconst KEY_FRAMES = {\n right: {\n open: [\n { opacity: 0, transform: 'translateX(100%)' },\n { opacity: 1, transform: 'translateX(0)' },\n ],\n close: [\n { opacity: 1, transform: 'translateX(0)' },\n { opacity: 0, transform: 'translateX(100%)' },\n ],\n },\n left: {\n open: [\n { opacity: 0, transform: 'translateX(-100%)' },\n { opacity: 1, transform: 'translateX(0)' },\n ],\n close: [\n { opacity: 1, transform: 'translateX(0)' },\n { opacity: 0, transform: 'translateX(-100%)' },\n ],\n },\n};\n\n/**\n *\n * A message bar is a banner that displays errors, warnings, or important information. For example, if a file failed to upload an error message bar will appear.\n *\n * @tag he-message-bar\n * @since 2.1\n * @status stable\n * @figma https://www.figma.com/file/UvgzWQM5R18Lrs4VHs2UPd/Partner-Center-extended-toolkit?type=design&node-id=86%3A19294&mode=design&t=FrLbCdXM439ktBGm-1\n *\n * @slot - The message content of the message bar.\n * @slot icon - Optional icon to override the built-in icons.\n * @slot actions - Optional action buttons to display for the message bar.\n *\n * @event he-ready - Emitted when the component has completed its initial render.\n * @event he-message-bar-show - Emitted when the message bar is opened.\n * @event he-message-bar-after-show - Emitted after the message bar is opened and the transitions are complete.\n * @event he-message-bar-hide - Emitted when the message bar is closed.\n * @event he-message-bar-after-hide - Emitted after the message bar is closed and the transitions are complete.\n * @event he-show - (@deprecated) Use `he-message-bar-show` instead.\n * @event he-after-show - (@deprecated) Use `he-message-bar-after-show` instead.\n * @event he-hide - (@deprecated) Use `he-message-bar-hide` instead.\n * @event he-after-hide - (@deprecated) Use `he-message-bar-after-hide` instead.\n *\n * @csspart base - The component's base wrapper.\n * @csspart content - The \"content\" of the collapsed or single line message.\n * @csspart footer - The footer portion of the message only displayed when expanded.\n * @csspart icon - The icon of the message bar.\n * @csspart message - The base of the message portion of the bar.\n * @csspart actions - The base of the actions slot's content.\n *\n * @dependency he-button\n * @dependency he-icon\n */\n@Component('message-bar', [button, icon])\nexport class MessageBar extends HarmonyDismissibleElement {\n static styles = [componentStyles, styles];\n static reactEvents = {\n onHeReady: new CustomEvent('he-ready'),\n onHeMessageBarShow: new CustomEvent('he-message-bar-show'),\n onHeMessageBarAfterShow: new CustomEvent('he-message-bar-after-show'),\n onHeMessageBarHide: new CustomEvent('he-message-bar-hide'),\n onHeMessageBarAfterHide: new CustomEvent('he-message-bar-after-hide'),\n /** @deprecated Use `onHeMessageBarShow` instead. */\n onHeShow: new CustomEvent('he-show'),\n /** @deprecated Use `onHeMessageBarAfterShow` instead. */\n onHeAfterShow: new CustomEvent('he-after-show'),\n /** @deprecated Use `onHeMessageBarHide` instead. */\n onHeHide: new CustomEvent('he-hide'),\n /** @deprecated Use `onHeMessageBarAfterHide` instead. */\n onHeAfterHide: new CustomEvent('he-after-hide'),\n };\n\n private resizeObserver: ResizeObserver;\n private closeTimeout: null | number = null;\n @query('.message-bar') private base?: HTMLElement;\n @query('.message-bar__message-container') private messageContainer?: HTMLElement;\n @query('.message-bar__message-inner-container') private messageContent?: HTMLElement;\n private hasSlotController = new HasSlotController(this, '[default]', 'actions', 'icon');\n private originalTrigger: HTMLElement | null;\n protected scopedEventName = MessageBar.baseName;\n\n /**\n * The direction the message bar will open and close from.\n *\n * Note: \"right\" and \"left\" will be deprecated in a future version. Please use the logical properties \"end\" or\n * \"start\", which are based on language direction.\n */\n @property() direction: 'end' | 'start' | 'right' | 'left' = 'end';\n\n // direction converted to right or left based on direction\n @state()\n private get _direction() {\n switch (this.direction) {\n case 'start':\n return this.dir === 'rtl' ? 'right' : 'left';\n case 'end':\n return this.dir === 'rtl' ? 'left' : 'right';\n default:\n return this.direction;\n }\n }\n\n /** Indicates the transition speed for animations in ms. */\n @property({ type: Number, attribute: 'transition-speed' }) transitionSpeed = 400;\n\n /** Expands the message if it is a multi line message. */\n @property({ type: Boolean, reflect: true }) expanded: boolean = false;\n\n /** Hides the close button (message will still auto close). */\n @property({ type: Boolean, reflect: true, attribute: 'no-close-button' }) noCloseButton: boolean = false;\n\n /**\n * The time in milliseconds before the message automatically closes. By default, the message bar will remain open\n * indefinitely.\n */\n @property({ type: Number }) duration = Infinity;\n\n /** Indicates the type and appearance of the message bar. */\n @property() appearance: 'info' | 'notice' | 'success' | 'warning' | 'error' = 'info';\n\n /** Allows developers to manually control the multiline behavior */\n @property({ type: Boolean, reflect: true }) expandable?: boolean;\n\n /** @internal watcher */\n @watch('appearance')\n handleAppearanceChange(oldValue: string, newValue: string) {\n if (oldValue !== newValue) {\n this.iconName = this.getIconName(newValue);\n }\n }\n\n /** @internal watcher */\n @watch('expandable')\n handleExpandableChange() {\n this.setMultiline();\n }\n\n @state()\n private iconName: string = 'info';\n\n @state()\n private multiline: boolean = false;\n\n @state()\n private visible: boolean = false;\n\n /** @internal watcher */\n @watch('visible')\n handleVisibleChange() {\n this.classList.toggle('he-hidden', !this.visible);\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.initResizeObserver();\n }\n\n firstUpdated() {\n super.firstUpdated();\n\n if (this.open) {\n this.visible = true;\n this.startDuration();\n this.updateComplete.then(() => this.setMultiline());\n } else {\n this.visible = false;\n }\n }\n\n disconnectedCallback() {\n this.resizeObserver.unobserve(this);\n this.resizeObserver.disconnect();\n super.disconnectedCallback();\n }\n\n private get keyFrames() {\n switch (this._direction) {\n case 'left':\n return KEY_FRAMES.left;\n default:\n return KEY_FRAMES.right;\n }\n }\n\n private startDuration() {\n // Reset the timer\n if (this.closeTimeout) {\n clearTimeout(this.closeTimeout);\n }\n\n if (this.duration > 0 && this.duration < Infinity) {\n this.closeTimeout = window.setTimeout(() => {\n if (this.open) {\n this.hide();\n }\n }, this.duration);\n }\n }\n\n private handleSlotChange() {\n this.setMultiline();\n }\n\n private setMultiline() {\n if (!this.open) return;\n\n if (this.expandable !== undefined) {\n this.multiline = this.expandable;\n } else if (this.expanded) {\n this.multiline = true;\n } else {\n const containerWidth = this.messageContainer?.offsetWidth || 0;\n if (containerWidth === 0) return;\n\n const containerHeight = this.messageContainer?.clientHeight || 0;\n if (containerHeight === 0) return;\n\n const contentWidth = this.messageContent?.offsetWidth || 0;\n const contentHeight = this.messageContent?.clientHeight || 0;\n const isTooWide = contentWidth >= containerWidth;\n const isTooTall = contentHeight > containerHeight + 4;\n\n this.multiline = isTooWide || isTooTall;\n }\n }\n\n private initResizeObserver() {\n this.resizeObserver = new ResizeObserver(() => this.setMultiline());\n this.resizeObserver.observe(this);\n }\n\n /** Toggle the expanded attribute to expand or collapse multi line message. */\n public toggleExpand() {\n this.expanded = !this.expanded;\n\n if (this.expanded) {\n this.messageContent?.focus();\n }\n }\n\n private getIconName(type: string) {\n switch (type) {\n case 'success':\n return 'completed';\n case 'warning':\n return 'warning';\n case 'error':\n return 'errorbadge';\n case 'notice':\n default:\n return 'info';\n }\n }\n\n public override async show(): Promise<void> {\n this.originalTrigger = this.findRootNode(this)?.activeElement as HTMLElement | null;\n await super.show();\n this.messageContent?.focus();\n return Promise.resolve();\n }\n\n public override async hide() {\n if (!this.open) {\n return;\n }\n\n if (this.closeTimeout) {\n clearTimeout(this.closeTimeout);\n }\n\n this.expanded = false;\n\n // restore focus to the original trigger\n if (this.originalTrigger && typeof this.originalTrigger.focus === 'function') {\n this.originalTrigger.focus();\n }\n\n return super.hide();\n }\n\n /** @internal watcher */\n @watch('open', { waitUntilFirstUpdate: true })\n async openChange() {\n if (!this.base) {\n return;\n }\n\n if (this.open) {\n await stopAnimations(this.base);\n this.visible = true;\n await animateTo(this.base, this.keyFrames.open, { duration: this.transitionSpeed, easing: 'ease' });\n this.startDuration();\n this.emitAfterShow();\n } else {\n await animateTo(this.base, this.keyFrames.close, { duration: this.transitionSpeed, easing: 'ease' });\n this.visible = false;\n this.closeTimeout = null;\n this.emitAfterHide();\n }\n }\n\n render() {\n return html`\n <div class=\"message-bar__wrapper\">\n <div\n part=\"base\"\n class=\n ${classMap({\n 'message-bar': true,\n 'message-bar--open': this.open,\n 'message-bar--collapsed': !this.expanded,\n 'message-bar--expanded': this.expanded,\n [`message-bar--${this.appearance}`]: true,\n 'message-bar--has-actions': this.hasSlotController.test('actions'),\n })}\n ?hidden=${!this.visible}\n >\n <div part=\"content\" class=\"message-bar__content\">\n <div part=\"icon\" class=\"message-bar-icon\">\n <slot name=\"icon\">\n <${this.scope.tag('icon')} name=\"${this.iconName}\"></${this.scope.tag('icon')}>\n </slot>\n </div>\n <div part=\"message\" class='message-bar__message-container'>\n <div class=\"message-bar__message-inner-container\" tabindex=\"-1\" role=\"text\">\n <slot @slotchange=${this.handleSlotChange}></slot>\n </div>\n </div>\n <div part=\"actions\" class=\"message-bar__actions\">\n ${!this.expanded ? html`<slot name=\"actions\"></slot>` : ''}\n ${\n this.multiline\n ? html`\n <${this.scope.tag('button')}\n class=\"message-bar__button message-bar__multiline__button\"\n appearance=\"stealth\"\n ?expanded=${this.expanded}\n @click=${this.toggleExpand}\n >\n <${this.scope.tag('icon')}\n name=${this.expanded ? 'doublechevronup' : 'doublechevrondown'}\n label=\"${this.localize.term('more_info')}\"\n ></${this.scope.tag('icon')}>\n </${this.scope.tag('button')}>\n `\n : ''\n }\n ${\n !this.noCloseButton\n ? html`\n <${this.scope.tag('button')}\n class=\"message-bar__button\"\n appearance=\"stealth\"\n @click=${this.hide}\n >\n <${this.scope.tag('icon')} name=\"cancel\" label=${this.localize.term('close_message')}>\n </${this.scope.tag('icon')}>\n </${this.scope.tag('button')}>\n `\n : ''\n }\n </div>\n </div>\n ${\n this.expanded\n ? html`\n <div part=\"footer\" class=\"message-bar__footer\">\n <slot name=\"actions\"></slot>\n </div>\n `\n : ''\n }\n </div>\n </div>\n `;\n }\n}\n\nexport default MessageBar;\n"],"sourceRoot":""}