{"version":3,"file":"static/js/main-96d4916e.54694d09.js","mappings":"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","sources":["types/OrderByDirection.ts","types/account/UserStatus.ts","types/account/VerifyIdentityMethodType.ts","types/amr-pipeline/enums/AlertOption.ts","types/amr-pipeline/enums/AmrStatus.ts","types/amr-pipeline/enums/AmrTrancheStatus.ts","types/amr-pipeline/enums/BankAccessType.ts","types/amr-pipeline/enums/CloManagerAccessType.ts","types/amr-pipeline/enums/CollateralQualityTestValue.ts","types/amr-pipeline/enums/CollateralType.ts","types/amr-pipeline/enums/CompanyStatus.ts","types/amr-pipeline/enums/ContactType.ts","types/amr-pipeline/enums/DealStatus.ts","types/amr-pipeline/enums/DealUpdateIdentifier.ts","types/amr-pipeline/enums/DocumentType.ts","types/amr-pipeline/enums/DownloadedDocumentAccessType.ts","types/amr-pipeline/enums/Equity.ts","types/amr-pipeline/enums/FloaterIndex.ts","types/amr-pipeline/enums/HavingDealType.ts","types/amr-pipeline/enums/IoIFloaterIndex.ts","types/amr-pipeline/enums/NewsAccessType.ts","types/amr-pipeline/enums/OriginatingTransactionClassStatus.ts","types/amr-pipeline/enums/PipelineType.ts","types/amr-pipeline/enums/ShortOrLongDated.ts","types/amr-pipeline/enums/StatsToCalculate.ts","types/amr-pipeline/enums/TrancheFloaterIndex.ts","types/amr-pipeline/enums/TrancheStatus.ts","types/amr-pipeline/enums/TransactionAccessType.ts","types/amr-pipeline/enums/TransactionStatus.ts","types/amr-pipeline/enums/TransactionType.ts","types/amr-pipeline/models/ArrangerPipeline.ts","types/api-operation/ApiOperationType.ts","types/banks/BanksTabType.ts","types/bid-as-dealer/BidRequestStatus.ts","types/bid-as-dealer/SettlementAgreementStatus.ts","types/bidding/BidLevel.ts","types/bidding/BidRequest.ts","types/billing/AppProduct.ts","types/billing/SubscriptionFeature.ts","types/billing/SubscriptionType.ts","types/bwic-history/BwicHisoryActionType.ts","types/bwic-process/BwicStageEndType.ts","types/bwic-process/JumpBallSettings.ts","types/bwic-process/TopXSettings.ts","types/bwic/AssetType.ts","types/bwic/Color.ts","types/bwic/LevelType.ts","types/clo-managers/CloManagersTabType.ts","types/clo-managers/CloSystemInfrastructures.ts","types/clo-managers/InstitutionType.ts","types/color-distribution/ColorDistributionType.ts","types/company/CompanyRole.ts","types/company/CompanyStatus.ts","types/contact-sales/ContactSalesRequestType.ts","types/dashboard/AmrChart.ts","types/dashboard/BwicInventoriesTabs.ts","types/dashboard/PipelineWidgetColumn.ts","types/dashboard/RatingGroup.ts","types/dashboard/RedirectFilterTypes.ts","types/dashboard/SellBuyTabs.ts","types/dashboard/TopChartType.ts","types/deals/DealsTabType.ts","types/document/Document.ts","types/email-preferences/EmailPreferences.ts","types/enums/AlertEnabledState.ts","types/enums/BwicStatus.ts","types/enums/BwicType.ts","types/enums/Currency.ts","types/enums/LevelSpecificationType.ts","types/enums/OpenBiddingImproverCount.ts","types/enums/OpenBiddingStatus.ts","types/enums/Rating.ts","types/enums/RtgAgency.ts","types/enums/TradingOrderByColumn.ts","types/filters/FilterGroup.ts","types/filters/FilterState.ts","types/filters/SubscriptionPeriod.ts","types/filters/TimeOption.ts","types/inventory/InventoryFloatingIndex.ts","types/inventory/InventoryPositionStatus.ts","types/inventory/InventorySecurityOrderByColumn.ts","types/management/AccessToken.ts","types/management/ManageEmailDetails.ts","types/management/UserDesk.ts","types/management/UserRequestStatus.ts","types/marketing/Release.ts","types/models/ParsedBwicProcess.ts","types/models/Process.ts","types/news/enums/EditNewsTabType.ts","types/news/enums/NewsCategory.ts","types/news/enums/NewsLabel.ts","types/news/enums/NewsProvider.ts","types/news/enums/NewsTabCategory.ts","types/notifications/NotificationType.ts","types/onboarding-tooltips/OnBoardingTooltipType.ts","types/page-config/PageConfigType.ts","types/page-config/column-customizer/ColumnConfigKey.ts","types/portfolio/PortfolioAlerts.ts","types/security/Security.ts","types/security/SecurityIdentifierType.ts","types/seller-admin/TradingLimitType.ts","types/settlement/BankOptionalFields.ts","types/settlement/TradeSettlementStatus.ts","types/state/AllBwicsState.ts","types/state/BidOnBehalfState.ts","types/state/BiddingState.ts","types/state/BlastMessageState.ts","types/state/BrokerDealerBiddingState.ts","types/state/GridState.ts","types/state/ManageEmailPreferencesState.ts","types/state/NotificationState.ts","types/state/PushHistoryState.ts","types/state/SubscriptionsState.ts","types/state/UploadDocumentsState.ts","types/state/ui/LocationState.ts","types/trade-allocation/TradeAllocationType.ts","types/trades/TradeSide.ts","types/trades/TradeStatus.ts","types/trades/TradeType.ts","types/user-config/UserConfigFilter.ts","types/user-config/UserConfigType.ts","user/features/by-product/bwic-monitor.ts","user/features/by-product/dashboard.ts","user/features/by-product/deal-documents.ts","user/features/by-product/dealer-profile.ts","user/features/by-product/integrations.ts","user/features/by-product/inventory.ts","user/features/by-product/issuance-monitor.ts","user/features/by-product/k-watch.ts","user/features/by-product/manager-profile.ts","user/features/by-product/portfolio.ts","user/features/by-product/resources.ts","user/features/by-role/data-entry.ts","user/features/feature-provider.ts","user/refresh-token-controller.ts","user/user.ts","utils/ColumnListBuilder.ts","utils/ListBuilder.ts","utils/amr-chart.utils.ts","utils/amr-format.utils.ts","utils/amr-pipeline-filter.utils.ts","types/amr-pipeline/enums/IssuanceMonitorSubscriptionType.ts","utils/amr-pipeline.utils.ts","utils/analytics.utils.ts","utils/api.utils.ts","utils/array.utils.ts","utils/bidding.utils.ts","utils/chart.utils.js","utils/clo-managers.utils.ts","utils/compare.utils.js","utils/dateTime.utils.js","utils/deal-structure.utils.ts","utils/differ/utils.ts","utils/differ/Differ.ts","utils/differ/index.ts","utils/differ/types.ts","utils/direct-bidding.utils.ts","utils/email-preferences.utils.ts","utils/enums.utils.ts","utils/filtering/filter.compare.utils.ts","utils/filtering/filter.utils.ts","utils/filtering/query-string-serializer.ts","utils/filtering/serializers/DeserializeCommand.ts","utils/filtering/serializers/amr-pipeline/filterDeserializers.ts","utils/filtering/serializers/bwic/deserializeFilters.ts","utils/filtering/serializers/amr-pipeline/deserializeFilters.ts","utils/filtering/serializers/amr-pipeline/filterSerializers.ts","utils/filtering/serializers/amr-pipeline/serializeFilters.ts","utils/filtering/serializers/bwic/serializeFilter.ts","utils/filtering/serializers/QueryStringArgumentSerializer.ts","utils/filtering/serializers/MultipleValuesArgumentSerializer.ts","utils/filtering/serializers/SingleValueArgumentSerializer.ts","utils/filtering/serializers/DateArgumentSerializer.ts","utils/filtering/serializers/FlagArgumentSerializer.ts","utils/filtering/serializers/NumericArgumentSerializer.ts","utils/filtering/serializers/BwicStatusArgumentSerializer.ts","utils/filtering/serializers/ColorArgumentSerializer.ts","utils/filtering/serializers/serializer.definitions.ts","utils/format.utils.ts","utils/highlightWord.utils.ts","utils/image-cropper-utils.ts","utils/file.utils.js","utils/securities.comparer.js","utils/contacts.comparer.js","utils/wait.js","utils/pxTalk.utils.js","utils/bid-on-behalf.utils.ts","utils/grid.utils.ts","utils/isIE.utils.js","utils/isMac.utils.js","utils/json.utils.js","utils/jump-ball.utils.ts","utils/jwt.parser.ts","utils/live-bidding.utils.ts","utils/money.utils.ts","utils/name.utils.js","utils/news.utils.ts","utils/notifications.utils.ts","utils/numeric.utils.ts","utils/object.utils.js","utils/request-state.utils.js","utils/search-date-range.js","utils/stage2-participants-calculator.ts","utils/string.utils.ts","utils/subscription.utils.ts","utils/top-x.utils.ts","utils/validate-email.utils.js","validation/yup.js","../webpack/bootstrap","../webpack/runtime/chunk loaded","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../webpack/startup"],"sourcesContent":["export enum OrderByDirection{\r\n asc = 'ASC',\r\n desc = 'DESC'\r\n}\r\n","export enum UserStatus {\r\n Active = 1,\r\n Blocked = 2,\r\n Invited = 3,\r\n NotInvited = 4\r\n}\r\n\r\nexport const userStatusTitle = {\r\n [UserStatus.Active]: \"Active\",\r\n [UserStatus.Blocked]: \"Blocked\",\r\n [UserStatus.Invited]: \"Invited\",\r\n [UserStatus.NotInvited]: \"NotInvited\",\r\n}\r\n","export enum VerifyIdentityMethodType {\r\n email = 'Email',\r\n sms = 'SMS'\r\n}\r\n","\r\nexport enum StatisticsAlertOption {\r\n Never = 'Never',\r\n Weekly = 'Weekly',\r\n}\r\n","export enum AmrStatus {\r\n Draft = 'Draft',\r\n Submitted = 'Submitted',\r\n Scheduled = 'Scheduled',\r\n Canceled = 'Canceled',\r\n Finished = 'Finished',\r\n}\r\n\r\nexport const amrStatusesSelectOptions = Object.values(AmrStatus).map(status => ({\r\n key: status,\r\n title: status,\r\n}));\r\n","export enum AmrTrancheStatus {\r\n Draft = 'Draft',\r\n Initiated = 'Initiated',\r\n Scheduled = 'Scheduled',\r\n AcceptingBids = 'AcceptingBids',\r\n PendingResultCalculation = 'PendingResultCalculation',\r\n ResultCalculation = 'ResultCalculation',\r\n AllocationCorrection = 'AllocationCorrection',\r\n Settlement = 'Settlement',\r\n NewMarginApplied = 'NewMarginApplied',\r\n Canceled = 'Canceled',\r\n Failed = 'Failed'\r\n}\r\n\r\nexport const amrTrancheStatusTitles = {\r\n [AmrTrancheStatus.AcceptingBids]: 'Bidding',\r\n [AmrTrancheStatus.PendingResultCalculation]: 'Pending Result',\r\n [AmrTrancheStatus.ResultCalculation]: 'Result',\r\n [AmrTrancheStatus.NewMarginApplied]: 'Success',\r\n [AmrTrancheStatus.AllocationCorrection]: 'Allocation Correction',\r\n [AmrTrancheStatus.Failed]: 'Not Refinanced',\r\n [AmrTrancheStatus.Draft]: AmrTrancheStatus.Draft,\r\n [AmrTrancheStatus.Initiated]: AmrTrancheStatus.Initiated,\r\n [AmrTrancheStatus.Scheduled]: AmrTrancheStatus.Scheduled,\r\n [AmrTrancheStatus.Settlement]: AmrTrancheStatus.Settlement,\r\n [AmrTrancheStatus.Canceled]: AmrTrancheStatus.Canceled,\r\n}\r\n\r\nexport const amrTrancheStatusesSelectOptions = Object.values(AmrTrancheStatus).map(status => ({\r\n key: status,\r\n title: amrTrancheStatusTitles[status],\r\n}));\r\n","import { AccessTypeMeta } from '../../analytics/AccessTypeMeta';\r\n\r\nexport enum BankAccessType {\r\n ContactsEventsTab = 'ContactsEventsTab',\r\n ContactsEventsIn = 'ContactsEventsIn',\r\n ContactsEventsAllNews = 'ContactsEventsAllNews',\r\n PrimaryTab = 'PrimaryTab',\r\n PrimaryStatVolDoor = 'PrimaryStatVolDoor',\r\n PrimaryStatActiveTransactionsDoor = 'PrimaryStatActiveTransactionsDoor',\r\n PrimaryStatTotalTransactionsDoor = 'PrimaryStatTotalTransactionsDoor',\r\n PrimaryStatUpcomingDealsDoor = 'PrimaryStatUpcomingDealsDoor',\r\n PrimaryStatAmrDealDoor = 'PrimaryStatAmrDealDoor',\r\n PrimaryPieGeographicMixDoor = 'PrimaryPieGeographicMixDoor',\r\n PrimaryPieEsgDealsDoor = 'PrimaryPieEsgDealsDoor',\r\n PrimaryPieEuCompliantDoor = 'PrimaryPieEuCompliantDoor',\r\n PrimaryPieStaticDealsDoor = 'PrimaryPieStaticDealsDoor',\r\n PrimaryPieOutOfNCDoor = 'PrimaryPieOutOfNCDoor',\r\n PrimaryPieOutOfRIDoor = 'PrimaryPieOutOfRIDoor',\r\n SecondaryTab = 'SecondaryTab',\r\n PrimaryTotalTransactionsDoor = 'PrimaryTotalTransactionsDoor',\r\n PrimaryArrangerPipelineManagersName = 'PrimaryArrangerPipelineManagersName',\r\n PrimaryArrangerPipelineIssuanceMonitor = 'PrimaryArrangerPipelineIssuanceMonitor',\r\n PrimaryDealsLastUpdated = 'PrimaryDealsLastUpdated',\r\n PrimaryDealsLastUpdatedTransactionVersion = 'PrimaryDealsLastUpdatedTransactionVersion',\r\n PrimaryDealsManagersName = 'PrimaryDealsManagersName',\r\n PrimaryIssuanceMonitor = 'PrimaryIssuanceMonitor',\r\n}\r\n\r\nexport const BankAccessTypes: AccessTypeMeta[] = [\r\n { value: BankAccessType.ContactsEventsTab, text: 'Contacts & Events', color: '#235692' },\r\n { value: BankAccessType.PrimaryTab, text: 'Primary', color: '#669FC3' },\r\n { value: BankAccessType.SecondaryTab, text: 'Secondary', color: '#AFE0EB' },\r\n];\r\n","import { AccessTypeMeta } from '../../analytics/AccessTypeMeta';\r\n\r\nexport enum CloManagerAccessType {\r\n VolUsdBslDoor = 'VolUsdBslDoor',\r\n VolUsdMmDoor = 'VolUsdMmDoor',\r\n VolEurBslDoor = 'VolEurBslDoor',\r\n VolEurMmDoor = 'VolEurMmDoor',\r\n DealIntex = 'DealIntex',\r\n CloTeamWebsite = 'CloTeamWebsite',\r\n CloTeamIn = 'CloTeamIn',\r\n DealDoor = 'DealDoor',\r\n OverviewTab = 'OverviewTab',\r\n OverviewTotalTransactions = 'OverviewTotalTransactions',\r\n OverviewUpcomingDeals = 'OverviewUpcomingDeals',\r\n OverviewAmrDeal = 'OverviewAmrDeal',\r\n OverviewGeographicMix = 'OverviewGeographicMix',\r\n OverviewEsgDeals = 'OverviewEsgDeals',\r\n OverviewEuCompliant = 'OverviewEuCompliant',\r\n OverviewStaticDeals = 'OverviewStaticDeals',\r\n OverviewOutOfNCDoor = 'OverviewOutOfNCDoor',\r\n OverviewOutOfRIDoor = 'OverviewOutOfRIDoor',\r\n OverviewArrangers = 'OverviewArrangers',\r\n OverviewTrustees = 'OverviewTrustees',\r\n OverviewIssuanceSpreads = 'OverviewIssuanceSpreads',\r\n OverviewShortLongDatedDeals = 'OverviewShortLongDatedDeals',\r\n DealTab = 'DealTab',\r\n CloTeamTab = 'CloTeamTab',\r\n AdditionalInformationTab = 'AdditionalInformationTab',\r\n AdditionalInformationUnpri = 'AdditionalInformationUnpri',\r\n DownloadManagerPresentationFileFromBank = 'DownloadManagerPresentationFileFromBank',\r\n DownloadLogoFile = 'DownloadLogoFile',\r\n}\r\n\r\nexport const CloManagerAccessTypes: AccessTypeMeta[] = [\r\n { value: CloManagerAccessType.OverviewTab, text: 'Overview', color: '#235692' },\r\n { value: CloManagerAccessType.DealTab, text: 'Deals', color: '#669FC3' },\r\n { value: CloManagerAccessType.CloTeamTab, text: 'CLO Team', color: '#AFE0EB' },\r\n { value: CloManagerAccessType.AdditionalInformationTab, text: 'Additional Info', color: '#CECECE' },\r\n];\r\n","export enum CollateralQualityTestValue {\r\n AssetPar = \"AssetPar\",\r\n WalYears = \"WalYears\",\r\n BondsPercentage = \"BondsPercentage\",\r\n WasPercentage = \"WasPercentage\",\r\n MoodysWARF = \"MoodysWARF\",\r\n MoodysWeightedAverageRecoveryRatePercentage = \"MoodysWeightedAverageRecoveryRatePercentage\",\r\n FitchWeightedAverageRatingFactor = \"FitchWeightedAverageRatingFactor\",\r\n FitchWeightedAverageRecoveryRatePercentage = \"FitchWeightedAverageRecoveryRatePercentage\",\r\n MoodysCorrelationTest = \"MoodysCorrelationTest\",\r\n MoodysDiversityScore = \"MoodysDiversityScore\",\r\n SnPWeightedAverageRecoveryRatePercentage = \"SnPWeightedAverageRecoveryRatePercentage\",\r\n WeightedAverageCoupon = \"WeightedAverageCoupon\",\r\n WeightedAverageCouponOfFixedRateAssets = \"WeightedAverageCouponOfFixedRateAssets\",\r\n WeightedAverageCouponOfFloatingRateAssets = \"WeightedAverageCouponOfFloatingRateAssets\",\r\n PurchasePrice = 'PurchasePrice',\r\n LiborFloor = 'LiborFloor',\r\n FirstLienLoans = 'FirstLienLoans',\r\n SecondLienLoans = 'SecondLienLoans',\r\n CovLite = 'CovLite',\r\n MoodysCaaAssets = 'MoodysCaaAssets',\r\n SPCCCAssets = 'SPCCCAssets',\r\n}\r\n","export enum CollateralType {\r\n broadlySyndicated = 'BroadlySyndicated',\r\n middleMarket = 'MiddleMarket',\r\n}\r\n","export enum CompanyStatus {\r\n Active = 'Active',\r\n Blocked = 'Blocked',\r\n OffPlatform = 'OffPlatform',\r\n Removed = 'Removed',\r\n}\r\n","export enum ContactType {\r\n HeadOfDesk = 'HeadOfDesk',\r\n DistributionList = 'DistributionList',\r\n}\r\n","export enum DealStatus {\r\n Draft = 'Draft',\r\n NewIssueDraft = 'NewIssueDraft',\r\n Ready = 'Ready',\r\n Deleted = 'Deleted',\r\n}\r\n","export enum DealUpdateIdentifier {\r\n PreMarketingAAA = 'PreMarketingAAA',\r\n GuidanceUpdated = 'GuidanceUpdated',\r\n SubscriptionUpdated = 'SubscriptionUpdated',\r\n StructureUpdated = 'StructureUpdated',\r\n MaterialsUpdated = 'MaterialsUpdated',\r\n Launch = 'Launch',\r\n Upsized = 'Upsized',\r\n AllTranchesSubject = 'AllTranchesSubject',\r\n FinalPricingDetails = 'FinalPricingDetails',\r\n Priced = 'Priced',\r\n TransactionCreated = 'TransactionCreated',\r\n OverviewUpdated = 'OverviewUpdated',\r\n CollateralAssumptionsUpdated = 'CollateralAssumptionsUpdated',\r\n SourcesAndUsesUpdated = 'SourcesAndUsesUpdated',\r\n CollateralQualityTestsUpdated = 'CollateralQualityTestsUpdated',\r\n ManagementFeesUpdated = 'ManagementFeesUpdated',\r\n TargetPortfolioUpdated = 'TargetPortfolioUpdated',\r\n DocumentsUpdated = 'DocumentsUpdated',\r\n Closed = 'Closed',\r\n TickerAdded = 'TickerAdded',\r\n CUSIPsAdded = 'CUSIPsAdded',\r\n DatesUpdated = 'DatesUpdated',\r\n IntexUpdated = 'IntexUpdated',\r\n RollerDeadlineUpdated = 'RollerDeadlineUpdated',\r\n StatusUpdated = 'StatusUpdated',\r\n}\r\n\r\nexport const dealUpdatesIdentifiersTitles = {\r\n [DealUpdateIdentifier.PreMarketingAAA]: 'Pre-Marketing AAA',\r\n [DealUpdateIdentifier.GuidanceUpdated]: 'Guidance Updated',\r\n [DealUpdateIdentifier.SubscriptionUpdated]: 'Subscription Updated',\r\n [DealUpdateIdentifier.StructureUpdated]: 'Structure Updated',\r\n [DealUpdateIdentifier.MaterialsUpdated]: 'Materials Updated',\r\n [DealUpdateIdentifier.Upsized]: 'Upsized',\r\n [DealUpdateIdentifier.AllTranchesSubject]: 'All Tranches Subject',\r\n [DealUpdateIdentifier.FinalPricingDetails]: 'Final Pricing Details',\r\n [DealUpdateIdentifier.Priced]: 'Priced',\r\n [DealUpdateIdentifier.Launch]: 'Launch',\r\n [DealUpdateIdentifier.TransactionCreated]: 'Transaction Created',\r\n [DealUpdateIdentifier.OverviewUpdated]: 'Overview Updated',\r\n [DealUpdateIdentifier.CollateralAssumptionsUpdated]: 'Collateral Assumptions Updated',\r\n [DealUpdateIdentifier.SourcesAndUsesUpdated]: 'Sources and Uses Updated',\r\n [DealUpdateIdentifier.CollateralQualityTestsUpdated]: 'Portfolio Summary Updated',\r\n [DealUpdateIdentifier.ManagementFeesUpdated]: 'Management Fees Updated',\r\n [DealUpdateIdentifier.TargetPortfolioUpdated]: 'Target Portfolio Updated',\r\n [DealUpdateIdentifier.DocumentsUpdated]: 'Documents Updated',\r\n [DealUpdateIdentifier.Closed]: 'Closed',\r\n [DealUpdateIdentifier.TickerAdded]: 'Ticker Added',\r\n [DealUpdateIdentifier.CUSIPsAdded]: 'CUSIPs Added',\r\n [DealUpdateIdentifier.DatesUpdated]: 'Dates Updated',\r\n [DealUpdateIdentifier.IntexUpdated]: 'Intex Updated',\r\n [DealUpdateIdentifier.RollerDeadlineUpdated]: 'Roller Deadline Updated',\r\n [DealUpdateIdentifier.StatusUpdated]: 'Status Updated',\r\n};\r\n","export enum DocumentType {\r\n otherDocument = 'OtherDocument',\r\n otherDealDocument = 'OtherDealDocument',\r\n indenture = 'Indenture',\r\n collateralManagementAgreement = 'CollateralManagementAgreement',\r\n collateralAdministrationAgreement = 'CollateralAdministrationAgreement',\r\n offeringMemorandum = 'OfferingMemorandum',\r\n distributionReport = 'DistributionReport',\r\n monthlyReport = 'MonthlyReport',\r\n reportsExcelFiles = 'ReportsExcelFiles',\r\n cleansingNoticeRefinancing = 'CleansingNoticeRefinancing',\r\n cleansingNoticeReset = 'CleansingNoticeReset',\r\n}\r\n\r\nexport interface DocumentTypeSelect {\r\n text: string;\r\n type: DocumentType;\r\n}\r\n\r\nexport function getDocumentTypeText(documentType: DocumentType): string {\r\n switch (documentType) {\r\n case DocumentType.reportsExcelFiles:\r\n return 'Reports Excel Files';\r\n default: return (\r\n documentType\r\n .toString()\r\n .split(/(?=[A-Z])/)\r\n .join(' ') + 's'\r\n );\r\n }\r\n\r\n}\r\n\r\nexport function getDealRegularDocumentTypes(): DocumentType[] {\r\n return [\r\n DocumentType.indenture,\r\n DocumentType.collateralManagementAgreement,\r\n DocumentType.collateralAdministrationAgreement,\r\n DocumentType.offeringMemorandum,\r\n DocumentType.otherDealDocument\r\n ];\r\n}\r\n\r\nexport const dealRegularDocsTypeList: DocumentTypeSelect[] = [\r\n { type: DocumentType.indenture, text: \"Indenture\" },\r\n { type: DocumentType.collateralAdministrationAgreement, text: \"Administration Agreement\" },\r\n { type: DocumentType.collateralManagementAgreement, text: \"Management Agreement\" },\r\n { type: DocumentType.offeringMemorandum, text: \"Memorandum\" },\r\n { type: DocumentType.otherDealDocument, text: \"Other\" },\r\n];\r\n\r\nexport const cleansingNoticeDocsTypeList: DocumentTypeSelect[] = [\r\n { type: DocumentType.cleansingNoticeRefinancing, text: \"Refinancing\" },\r\n { type: DocumentType.cleansingNoticeReset, text: \"Reset\" },\r\n];\r\n","export enum DownloadedDocumentAccessType {\r\n DownloadOneDocument = \"DownloadOneDocument\",\r\n DownloadAllDocuments = \"DownloadAllDocuments\",\r\n DownloadIntexFile = \"DownloadIntexFile\",\r\n DownloadManagerPresentationFile = \"DownloadManagerPresentationFile\",\r\n DownloadDisclosureFile = \"DownloadDisclosureFile\",\r\n ExportTargetPortfolio = \"ExportTargetPortfolio\",\r\n};\r\n","export enum Equity {\r\n No = 'No',\r\n Yes = 'Yes',\r\n YesMinority = 'YesMinority',\r\n YesMajorityMinority = 'YesMajorityMinority',\r\n}","export enum FloaterIndex {\r\n Fixed = 'Fixed',\r\n Sofr = 'SOFR',\r\n Libor = 'LIBOR',\r\n Euribor = 'EURIBOR',\r\n}\r\n","export enum HavingDealType {\r\n None = 'None',\r\n BdHavingDeals = 'BdHavingDeals',\r\n CmHavingAllPublishedDeals = 'CmHavingAllPublishedDeals',\r\n CloManagers = 'CloManagers',\r\n Banks = 'Banks',\r\n}\r\n","enum IoIFloaterIndex {\r\n Fixed = 'Fixed',\r\n SOFR = 'SOFR',\r\n Libor1m = 'LIBOR 1M',\r\n Libor3m = 'LIBOR 3M',\r\n Euribor3m = 'EURIBOR 3M',\r\n Euribor6m = 'EURIBOR 6M',\r\n}\r\n\r\nexport const ioiFloaterIndexes = [\r\n IoIFloaterIndex.Fixed,\r\n IoIFloaterIndex.SOFR,\r\n IoIFloaterIndex.Libor1m,\r\n IoIFloaterIndex.Libor3m,\r\n IoIFloaterIndex.Euribor3m,\r\n IoIFloaterIndex.Euribor6m,\r\n];\r\n","import { NewsTabCategory } from \"../../news/enums/NewsTabCategory\";\r\n\r\nexport enum NewsAccessType {\r\n news = 'News',\r\n conference = 'Conference',\r\n webinars = 'Webinars',\r\n newFeatures = 'NewFeatures',\r\n improvements = 'Improvements',\r\n allGraphs = 'AllGraphs',\r\n newsAll = 'NewsAll',\r\n newsPrimary = 'NewsPrimary',\r\n newsSecondary = 'NewsSecondary',\r\n newsResearch = 'NewsResearch',\r\n readMore = 'ReadMore',\r\n externalSource = 'ExternalSource',\r\n dealDetails = 'DealDetails',\r\n managerProfile = 'ManagerProfile',\r\n arranger = 'Arranger',\r\n newsDocument = 'NewsDocument',\r\n newsAllDocuments = 'NewsAllDocuments',\r\n}\r\n\r\nexport const newsAccessTypeByTab = {\r\n [NewsTabCategory.All]: NewsAccessType.newsAll,\r\n [NewsTabCategory.Primary]: NewsAccessType.newsPrimary,\r\n [NewsTabCategory.Secondary]: NewsAccessType.newsSecondary,\r\n [NewsTabCategory.Research]: NewsAccessType.newsResearch,\r\n}\r\n","export enum OriginatingTransactionClassStatus {\r\n 'Subject' = 'Subject',\r\n 'Open' = 'Open',\r\n 'NotOffered' = 'NotOffered',\r\n 'CallDesk' = 'CallDesk',\r\n 'Retained' = 'Retained',\r\n 'IncludesAdditionalSub' = 'IncludesAdditionalSub',\r\n}\r\n\r\nexport const transactionClassStatusTitles = {\r\n [OriginatingTransactionClassStatus.Subject]: OriginatingTransactionClassStatus.Subject,\r\n [OriginatingTransactionClassStatus.Open]: OriginatingTransactionClassStatus.Open,\r\n [OriginatingTransactionClassStatus.NotOffered]: 'Not Offered',\r\n [OriginatingTransactionClassStatus.CallDesk]: 'Call Desk',\r\n [OriginatingTransactionClassStatus.Retained]: OriginatingTransactionClassStatus.Retained,\r\n [OriginatingTransactionClassStatus.IncludesAdditionalSub]: \"Includes add'l sub\",\r\n};","export enum PipelineType {\r\n Deals = 'deals',\r\n IOIs = 'iois',\r\n ArrangerPipeline = 'arrangerPipeline'\r\n}\r\n","export enum ShortOrLongDated {\r\n None = 'None',\r\n Short = 'Short',\r\n Long = 'Long',\r\n}\r\n","enum StatsToCalculate {\r\n NumberOfManagers = \"NumberOfManagers\",\r\n NumberOfTrustees = \"NumberOfTrustees\",\r\n NumberOfArrangers = \"NumberOfArrangers\",\r\n TransactionsBalanceTotalUsd = \"TransactionsBalanceTotalUsd\",\r\n TransactionsBalanceTotalEur = \"TransactionsBalanceTotalEur\",\r\n WasWarfDsMedians = \"WasWarfDsMedians\",\r\n MedianPurchasePrice = \"MedianPurchasePrice\",\r\n}\r\n\r\nconst statsToCalculateList = Object.values(StatsToCalculate);\r\nexport const statsToCalculateWithoutMedians = statsToCalculateList.filter(\r\n (s) =>\r\n s !== StatsToCalculate.WasWarfDsMedians &&\r\n s !== StatsToCalculate.MedianPurchasePrice\r\n);\r\n","export enum TrancheFloaterIndex {\r\n Fixed = 'Fixed',\r\n SOFR = 'SOFR',\r\n LIBOR1M = 'LIBOR 1M',\r\n LIBOR3M = 'LIBOR 3M',\r\n EURIBOR3M = 'EURIBOR 3M',\r\n EURIBOR6M = 'EURIBOR 6M'\r\n}\r\n","export enum TrancheStatus {\r\n 'Active' = 'Active',\r\n 'Draft' = 'Draft',\r\n 'Inactive' = 'Inactive',\r\n}\r\n","export enum TransactionAccessType {\r\n Overview = 'Overview',\r\n Structure = 'Structure',\r\n TargetPortfolio = 'TargetPortfolio',\r\n ExportTargetPortfolio = 'ExportTargetPortfolio',\r\n Documents = 'Documents',\r\n Deal = 'Deal',\r\n Iois = 'Iois',\r\n ComparableDeals = 'ComparableDeals',\r\n}\r\n\r\nexport enum TransactionAnalyticCollectingActions {\r\n ComparableDealsDeal = 'ComparableDealsDeal',\r\n ComparableDealsManager = 'ComparableDealsManager',\r\n ComparableDealsArranger = 'ComparableDealsArranger',\r\n}\r\n\r\nexport type TransactionAccessTypeCollecting = TransactionAccessType | TransactionAnalyticCollectingActions;\r\n\r\nexport const TransactionAccessTypes = [\r\n { value: TransactionAccessType.Overview, text: 'Overview', color: '#235692' },\r\n { value: TransactionAccessType.Structure, text: 'Structure', color: '#669FC3' },\r\n { value: TransactionAccessType.TargetPortfolio, text: 'Target Portfolio', color: '#AFE0EB' },\r\n { value: TransactionAccessType.ComparableDeals, text: 'Comparative Metrics', color: '#205EFF' },\r\n { value: TransactionAccessType.Documents, text: 'Documents', color: '#CECECE' },\r\n { value: TransactionAccessType.Iois, text: 'IOIs', color: '#9B9B9B' },\r\n];\r\n","export enum TransactionStatus {\r\n Draft = 'Draft',\r\n Active = 'Active',\r\n Priced = 'Priced',\r\n Closed = 'Closed',\r\n Canceled = 'Canceled',\r\n Deleted = 'Deleted',\r\n OnHold = 'OnHold',\r\n}\r\n\r\nexport const TransactionStatuses = [\r\n { value: TransactionStatus.Draft, text: TransactionStatus.Draft },\r\n { value: TransactionStatus.Active, text: TransactionStatus.Active },\r\n { value: TransactionStatus.OnHold, text: \"On Hold\" },\r\n { value: TransactionStatus.Priced, text: TransactionStatus.Priced },\r\n { value: TransactionStatus.Closed, text: TransactionStatus.Closed },\r\n];\r\n\r\nexport const transactionStatusTitles = {\r\n [TransactionStatus.Draft]: TransactionStatus.Draft,\r\n [TransactionStatus.Active]: TransactionStatus.Active,\r\n [TransactionStatus.Priced]: TransactionStatus.Priced,\r\n [TransactionStatus.Closed]: TransactionStatus.Closed,\r\n [TransactionStatus.Canceled]: TransactionStatus.Canceled,\r\n [TransactionStatus.Deleted]: TransactionStatus.Deleted,\r\n [TransactionStatus.OnHold]: \"On Hold\",\r\n};\r\n\r\nexport const transactionStatusesSortOrder = {\r\n [TransactionStatus.Active]: 0,\r\n [TransactionStatus.Priced]: 1,\r\n [TransactionStatus.Closed]: 2,\r\n [TransactionStatus.Draft]: 3,\r\n [TransactionStatus.OnHold]: 4,\r\n [TransactionStatus.Canceled]: 5,\r\n [TransactionStatus.Deleted]: 6,\r\n}\r\n\r\n","export enum TransactionType {\r\n newIssue = 'NewIssue',\r\n refi = 'Refinancing',\r\n reset = 'Reset',\r\n amr = 'AMR'\r\n}\r\n\r\nexport const TransactionTypes = [\r\n { value: TransactionType.newIssue, text: 'New Issue' },\r\n { value: TransactionType.refi, text: 'Refinancing' },\r\n { value: TransactionType.reset, text: 'Reset' },\r\n { value: TransactionType.amr, text: 'AMR' },\r\n];\r\n\r\nexport const AllTopIssuersTransactionTypes = [\r\n TransactionType.newIssue,\r\n TransactionType.refi,\r\n TransactionType.reset,\r\n];\r\n\r\n","import { DealSecurity } from '../../security/DealSecurityStatistics';\r\nimport { CollateralType } from '../enums/CollateralType';\r\nimport { Equity } from '../enums/Equity';\r\nimport { TransactionType } from '../enums/TransactionType';\r\nimport { AmrDocument } from './AmrDocument';\r\nimport { Company } from './Company';\r\nimport { Contact } from './Contact';\r\n\r\nexport enum Category {\r\n 'ArrangerPipeline' = 'ArrangerPipeline',\r\n 'CleansingNotice' = 'CleansingNotice',\r\n}\r\n\r\nexport const categoryLabels = {\r\n [Category.ArrangerPipeline]: 'Arranger Pipeline',\r\n [Category.CleansingNotice]: 'Cleansing Notice',\r\n};\r\n\r\nexport interface CleansingNotice {\r\n className: string;\r\n cusip144A: string;\r\n cusipAccd: string;\r\n cusipRegS: string;\r\n dealTicker: string | null;\r\n isin144A: string;\r\n isinAccd: string;\r\n isinRegS: string;\r\n ticker144A: string;\r\n tickerAccd: string;\r\n tickerRegS: string;\r\n\r\n security?: DealSecurity;\r\n}\r\n\r\nexport interface ArrangerPipeline {\r\n referenceName: string;\r\n dealReferenceName: string;\r\n collateralManager: Company;\r\n dealLegalName: string;\r\n dealTicker?: string;\r\n type: TransactionType | null;\r\n arranger?: Company;\r\n collateralType: CollateralType | null;\r\n nonCallPeriodEnd: number;\r\n reinvestmentPeriodEnd: number;\r\n expectedTiming: string;\r\n dealStage: string | null;\r\n euCompliance: boolean | null;\r\n numberOfTransactions: number;\r\n anchor: boolean | null;\r\n equity: Equity | null;\r\n lastUpdated: Date;\r\n arrangerReferenceName: string;\r\n collateralManagerReferenceName: string;\r\n syndicateContacts: Contact[];\r\n disclosureFile: AmrDocument;\r\n managerPresentationFile: AmrDocument;\r\n category: Category;\r\n currencyCode?: string;\r\n outOfRI?: boolean;\r\n outOfNC?: boolean;\r\n vintage?: Date;\r\n trustee?: Company;\r\n amrDeal?: boolean;\r\n esg?: boolean;\r\n staticDeal?: boolean;\r\n\r\n cleansingNotices: CleansingNotice[];\r\n\r\n nonCallPeriodEndDate: Date;\r\n reinvestmentPeriodEndDate: Date;\r\n\r\n}\r\n","export enum ApiOperationType {\r\n submitBidsOnBehalf = 1,\r\n BlastMessage = 2,\r\n SendAutoFeedbacks = 3,\r\n SubmitAxedFinal = 4,\r\n SubmitBid = 5,\r\n SubmitBidRequest = 6\r\n}\r\n","export enum BanksTabType {\r\n ContactsAndEvents = 'contacts-and-events',\r\n Primary = 'primary',\r\n Secondary = 'secondary',\r\n // TODO: Second Iteration\r\n // SettlementAccounts = 'settlement-accounts',\r\n Analytics = 'analytics',\r\n}\r\n\r\nexport const BanksTabTypes = [\r\n { value: BanksTabType.ContactsAndEvents, text: 'Contacts & Events' },\r\n { value: BanksTabType.Primary, text: 'Primary' },\r\n { value: BanksTabType.Secondary, text: 'Secondary' },\r\n // TODO: Second Iteration\r\n // { value: BanksTabType.SettlementAccounts, text: 'Settlement Accounts' },\r\n { value: BanksTabType.Analytics, text: 'Analytics' },\r\n];\r\n","export enum BidRequestStatus {\r\n pending = 1,\r\n confirmed = 2,\r\n rejected = 3,\r\n canceled = 4,\r\n expired = 5,\r\n AutoConfirmed = 6\r\n}\r\n","export enum SettlementAgreementStatus {\r\n pending = 1,\r\n confirmed = 2,\r\n rejected = 3\r\n}\r\n\r\nexport enum UnrequestedAgreementStatus {\r\n Unrequested = 'Unrequested'\r\n}\r\n\r\nexport const settlementAgreementStatusTitle = {\r\n [SettlementAgreementStatus.pending]: 'Requested',\r\n [SettlementAgreementStatus.confirmed]: 'Approved',\r\n [SettlementAgreementStatus.rejected]: 'Suspended',\r\n}\r\n\r\nexport const settlementAgreementStatusSortOrdering = {\r\n [SettlementAgreementStatus.confirmed]: 0,\r\n [SettlementAgreementStatus.pending]: 1,\r\n [SettlementAgreementStatus.rejected]: 2,\r\n [UnrequestedAgreementStatus.Unrequested]: 3\r\n}\r\n","export enum BidLevel {\r\n Best = 0,\r\n Cover = 1,\r\n Third = 2,\r\n Fourth = 3,\r\n Fifth = 4\r\n}\r\n","export interface BidRequest {\r\n bidRequestType: BidRequestType;\r\n created: Date;\r\n}\r\n\r\nexport enum BidRequestType{\r\n SubmitFinal = 1,\r\n BidOrPass = 2\r\n}\r\n\r\nexport const bidRequestText = {\r\n [BidRequestType.BidOrPass]: \"Please submit your bid or indicate that you pass\",\r\n [BidRequestType.SubmitFinal]: \"Please submit your final level\"\r\n}","export enum AppProduct {\r\n KWatch = 'KWatch',\r\n Dashboard = 'Dashboard',\r\n ManagerProfile = 'ManagerProfile',\r\n DealerProfile = 'DealerProfile',\r\n IssuanceMonitor = 'IssuanceMonitor',\r\n Portfolio = 'Portfolio',\r\n BwicMonitor = 'BwicMonitor',\r\n Inventory = 'Inventory',\r\n Integrations = 'Integrations',\r\n Trading = 'Trading',\r\n KTalk = 'KTalk',\r\n DealDocuments = \"DealDocuments\",\r\n Resources = 'Resources',\r\n}\r\n\r\nexport function getAppProductTitle(product: AppProduct) {\r\n switch (product) {\r\n case AppProduct.KWatch: return \"K-Watch News\";\r\n case AppProduct.ManagerProfile: return \"Manager Profile\";\r\n case AppProduct.DealerProfile: return \"Bank Profile\";\r\n case AppProduct.IssuanceMonitor: return \"Issuance Monitor\";\r\n case AppProduct.BwicMonitor: return \"BWIC Monitor\";\r\n case AppProduct.Inventory: return \"Dealer Inventory\";\r\n case AppProduct.Trading: return \"Trading Access\";\r\n case AppProduct.KTalk: return \"K-Talk\";\r\n case AppProduct.DealDocuments: return \"Deal Documents\";\r\n default: return product.toString();\r\n }\r\n}\r\n","export enum SubscriptionFeature {\r\n // Portfolio product\r\n exportPortfolios = 'ExportPortfolios',\r\n PortfolioSecuritySearch = \"PortfolioSecuritySearch\",\r\n PortfolioSavedFilters = \"PortfolioSavedFilters\",\r\n PortfolioAvancedFilters = \"PortfolioAvancedFilters\",\r\n PortfolioColumnCustomizer = \"PortfolioColumnCustomizer\",\r\n PortfolioPriceTalks = \"PortfolioPriceTalks\",\r\n PortfolioAlerts = \"PortfolioAlerts\",\r\n CanLookupTransactionFromPortfolio = \"CanLookupTransactionFromPortfolio\",\r\n CanLookupArrangersPipelineFromPortfolio = \"CanLookupArrangersPipelineFromPortfolio\",\r\n\r\n // Dashboard product\r\n CanUseDashboardFilter = 'CanUseDashboardFilter',\r\n CanUseDashboardAlerts = 'CanUseDashboardAlerts',\r\n getBidAsDealerRequests = 'GetBidAsDealerRequests',\r\n getVantageData = 'GetVantageData', // TRACE HY/IG Volume\r\n getDtcSellingBuying = 'GetDtcSellingBuying', // TRACE Broker-dealer Net Flow\r\n getBwicPercentOfTrace = 'GetBwicPercentOfTrace', // IG/HY BWICs as %Trace\r\n getMedianTripleA = 'GetMedianTripleA', // AAA Spread Levels\r\n getDntRates = 'GetDntRates', // DNT % Monthly: Liquidity Barometer\r\n getSameDayBwics = 'GetSameDayBwics', // Same-Day Weekly Volume: Stability Barometer\r\n getColorRates = 'GetColorRates', // BWIC Color %: Transperancy Barometer\r\n getMostTradedTickers = 'GetMostTradedTickers', // Most Traded Tickers\r\n getPriceTalkDeviation = 'GetPriceTalkDeviation', // Px Talk Deviation from Color\r\n getSecurityBwicStatistics = 'GetSecurityBwicStatistics', // Security Lookup: Px Talk & Historical Color Dispersion\r\n getPriceLevels = 'GetPriceLevels', // Daily Price Ranges by Rating\r\n getTradingStats = 'GetTradingStats', // Daily Trade Analysis\r\n getBiggestMovers = 'GetBiggestMovers',\r\n viewIncludedToPortfolioInventory = 'ViewIncludedToPortfolioInventory',\r\n IssuanceSpreadsGraph = 'IssuanceSpreadsGraph',\r\n Top10ArrangersTable = 'Top10ArrangersTable',\r\n EsgAsPercentOfBslNewIssueGraph = 'EsgAsPercentOfBslNewIssueGraph',\r\n Top10TrusteesTable = 'Top10TrusteesTable',\r\n EuCompliantAsPercentOfBslGraph = 'EuCompliantAsPercentOfBslGraph',\r\n StaticDealsTable = 'StaticDealsTable',\r\n ShortAndLongDatedDealsGraph = 'ShortAndLongDatedDealsGraph',\r\n DebutManagersTable = 'DebutManagersTable',\r\n UsBslNewIssueWasGraph = 'UsBslNewIssueWasGraph',\r\n UsBslNewIssueWarfGraph = 'UsBslNewIssueWarfGraph',\r\n UsBslNewIssueDsGraph = 'UsBslNewIssueDsGraph',\r\n CanUseIssueTransactionChartFilter = \"CanUseIssueTransactionChartFilter\",\r\n CanUseTopIssuersChartFilter = \"CanUseTopIssuersChartFilter\",\r\n\r\n IssuanceMonitorFullAccess = 'IssuanceMonitorFullAccess',\r\n\r\n // Bwic Monitor Product\r\n exportAllBwics = 'ExportAllBwics',\r\n ExportIndividualBwic = 'ExportIndividualBwic',\r\n BwicMonitorSecuritySearch = \"BwicMonitorSecuritySearch\",\r\n BwicMonitorSavedFilters = \"BwicMonitorSavedFilters\",\r\n BwicMonitorAvancedFilters = \"BwicMonitorAvancedFilters\",\r\n BwicMonitorColumnCustomizer = \"BwicMonitorColumnCustomizer\",\r\n BwicMonitorHistoricalData = \"BwicMonitorHistoricalData\",\r\n BwicMonitorBwicsData = \"BwicMonitorBwicsData\",\r\n BwicMonitorSorting = \"BwicMonitorSorting\",\r\n BwicMonitorNavigation = \"BwicMonitorNavigation\",\r\n BwicMonitorAlerts = \"BwicMonitorAlrts\",\r\n BwicMonitorCanViewSummaryRow = \"BwicMonitorCanViewSummaryRow\",\r\n\r\n // Inventory Product\r\n ExportInventory = 'ExportInventory',\r\n InventorySecuritySearch = \"InventorySecuritySearch\",\r\n InventorySavedFilters = \"InventorySavedFilters\",\r\n InventoryAvancedFilters = \"InventoryAvancedFilters\",\r\n InventoryColumnCustomizer = \"InventoryColumnCustomizer\",\r\n InventoryHistoricalData = \"InventoryHistoricalData\",\r\n InventoryNavigation = \"InventoryNavigation\",\r\n InventoryBwicColumn = \"InventoryBwicColumn\",\r\n InventoryAlerts = \"InventoryAlerts\",\r\n InventoryCanViewSummaryRow = \"InventoryCanViewSummaryRow\",\r\n\r\n // Resources\r\n CloMarketTrands = 'CloMarketTrands',\r\n HistoricalWebinars = 'HistoricalWebinars',\r\n\r\n // K-Watch\r\n KWatchNews = 'KWatchNews',\r\n KWatchNewsFullNewsDetails = 'KWatchNewsFullNewsDetails', // TODO use current feature instead of general\r\n KWatchNewsNewsAttachments = 'KWatchNewsNewsAttachments', // TODO use current feature instead of general\r\n\r\n // Issuance Monitor\r\n IssuanceMonitorStandardizedDetailsTabs = 'IssuanceMonitorStandardizedDetailsTabs', // TODO use current feature instead of general\r\n IssuanceMonitorMarketingHistory = 'IssuanceMonitorMarketingHistory', // TODO use current feature instead of general\r\n IssuanceMonitorFiltersEmailAlerts = 'IssuanceMonitorFiltersEmailAlerts', // TODO use current feature instead of general\r\n IssuanceMonitorColumnsCustomizer = 'IssuanceMonitorColumnsCustomizer', // TODO use current feature instead of general\r\n IssuanceMonitorDealUpdateEmailAlerts = 'IssuanceMonitorDealUpdateEmailAlerts', // TODO use current feature instead of general\r\n IssuanceMonitorHistoricalData = 'IssuanceMonitorHistoricalData', // TODO use current feature instead of general\r\n IssuanceMonitorArrangerPipeline = 'IssuanceMonitorArrangerPipeline', // TODO use current feature instead of general\r\n IssuanceMonitorWeeklyMarketRecap = 'IssuanceMonitorWeeklyMarketRecap', // TODO use current feature instead of general\r\n IssuanceMonitorExport = 'IssuanceMonitorExport', // TODO use current feature instead of general\r\n IssuanceMonitorTransactionsEmailAlerts = 'IssuanceMonitorTransactionsEmailAlerts',\r\n\r\n // Manager Profile (CLO Managers)\r\n ManagerProfilePresentations = 'ManagerProfilePresentations', // TODO use current feature instead of general\r\n ManagerProfileScheduleMeeting = 'ManagerProfileScheduleMeeting', // TODO use current feature instead of general\r\n ManagerProfileManagerRelatedAlerts = 'ManagerProfileManagerRelatedAlerts', // TODO use current feature instead of general\r\n ManagerProfileWebinarVideo = 'ManagerProfileWebinarVideo', // TODO use current feature instead of general\r\n ManagerProfileIssuanceSpreadsGraph = 'ManagerProfileIssuanceSpreadsGraph', // TODO use current feature instead of general\r\n ManagerProfileDealsGraph = 'ManagerProfileDealsGraph', // TODO use current feature instead of general\r\n ManagerProfilePrimaryMarketData = 'ManagerProfilePrimaryMarketData', // TODO use current feature instead of general\r\n ManagerProfileSecondaryMarketData = 'ManagerProfileSecondaryMarketData', // TODO use current feature instead of general\r\n ManagerProfileContacts = 'ManagerProfileContacts', // TODO use current feature instead of general\r\n ManagerProfileDeals = 'ManagerProfileDeals',\r\n ManagerProfileAnalytics = 'ManagerProfileAnalytics',\r\n\r\n // Integrations\r\n IntegrationsBloomberg = 'IntegrationsBloomberg',\r\n IntegrationsIntex = 'IntegrationsIntex',\r\n IntegrationsValitana = 'IntegrationsValitana',\r\n\r\n // Dealer Profile (Banks)\r\n DealerProfileBankContacts = 'DealerProfileBankContacts',\r\n DealerProfileBankEvents = 'DealerProfileBankEvents',\r\n DealerProfileEmailAlerts = 'DealerProfileEmailAlerts',\r\n DealerProfileBanksBWICsPxTalk = 'DealerProfileBanksBWICsPxTalk',\r\n DealerProfileStatistics = 'DealerProfileStatistics',\r\n DealerProfilePieCharts = 'DealerProfilePieCharts',\r\n DealerProfileTransactionsCount = 'DealerProfileTransactionsCount',\r\n DealerProfileDeals = 'DealerProfileDeals',\r\n DealerProfileArrangerPipeline = 'DealerProfileArrangerPipeline',\r\n DealerProfileAnalytics = 'DealerProfileAnalytics',\r\n\r\n //DealDocuments\r\n CanAccessIndentureDealDocuments = 'CanAccessIndentureDealDocuments',\r\n CanAccessOMDealDocuments = 'CanAccessOMDealDocuments',\r\n CanAccessDistributionReportDealDocuments = 'CanAccessDistributionReportDealDocuments',\r\n CanAccessMonthlyReportDealDocuments = 'CanAccessMonthlyReportDealDocuments',\r\n CanAccessOtherDealDocuments = 'CanAccessOtherDealDocuments',\r\n CanAccessDealDocuments = 'CanAccessDealDocuments' // Common feature for all deal document types\r\n}\r\n\r\nexport const subscriptionFeatureTitle: { [key in SubscriptionFeature]?: string } = {\r\n // Dashboard\r\n [SubscriptionFeature.getTradingStats]: \"Daily Trade Analytics table\",\r\n [SubscriptionFeature.getBiggestMovers]: \"Biggest Movers table\",\r\n [SubscriptionFeature.getDtcSellingBuying]: \"Trace Broker-Dealer Net Flow graph\",\r\n [SubscriptionFeature.getPriceLevels]: \"Price Dispersion by Rating graph\",\r\n [SubscriptionFeature.getVantageData]: \"Trace Volume graph\",\r\n [SubscriptionFeature.getMostTradedTickers]: \"Most Traded Bonds table\",\r\n [SubscriptionFeature.getBwicPercentOfTrace]: \"BWICs as % of Trace graph\",\r\n [SubscriptionFeature.getMedianTripleA]: \"AAA Px Talk and Color Levels graph\",\r\n [SubscriptionFeature.getDntRates]: \"DNT %: Demand Barometer graph\",\r\n [SubscriptionFeature.getColorRates]: \"Color % in BWICs: Transparency Barometer graph\",\r\n [SubscriptionFeature.getSameDayBwics]: \"Same-Day BWICs %: Stability Barometer graph\",\r\n [SubscriptionFeature.getPriceTalkDeviation]: \"Px Talk Deviation from Color: Liquidity Barometer graph\",\r\n [SubscriptionFeature.IssuanceSpreadsGraph]: \"Issuance Spreads graph\",\r\n [SubscriptionFeature.Top10ArrangersTable]: \"Top-10 Arrangers table\",\r\n [SubscriptionFeature.EsgAsPercentOfBslNewIssueGraph]: \"ESG as % of BSL New Issue graph\",\r\n [SubscriptionFeature.Top10TrusteesTable]: \"Top-10 Trustees table\",\r\n [SubscriptionFeature.EuCompliantAsPercentOfBslGraph]: \"EU Compliant as % of BSL graph\",\r\n [SubscriptionFeature.StaticDealsTable]: \"Static Deals table\",\r\n [SubscriptionFeature.ShortAndLongDatedDealsGraph]: \"Short & Long-Dated Deals graph\",\r\n [SubscriptionFeature.DebutManagersTable]: \"Debut Managers table\",\r\n [SubscriptionFeature.UsBslNewIssueWasGraph]: \"US BSL New Issue WAS graph\",\r\n [SubscriptionFeature.UsBslNewIssueWarfGraph]: \"US BSL New Issue WARF graph\",\r\n [SubscriptionFeature.UsBslNewIssueDsGraph]: \"US BSL New Issue DS graph\",\r\n\r\n // Portfolio\r\n [SubscriptionFeature.getSecurityBwicStatistics]: \"Security Lookup: Price History (Px Talk & Color) graph\",\r\n [SubscriptionFeature.PortfolioSecuritySearch]: \"Search by security\",\r\n [SubscriptionFeature.exportPortfolios]: \"Portfolio export\",\r\n [SubscriptionFeature.PortfolioSavedFilters]: \"Saved filters\",\r\n [SubscriptionFeature.PortfolioAvancedFilters]: \"Advanced filters\",\r\n [SubscriptionFeature.PortfolioColumnCustomizer]: \"Column customizer\",\r\n\r\n // BWIC Monitor\r\n [SubscriptionFeature.BwicMonitorSecuritySearch]: \"Search by security\",\r\n [SubscriptionFeature.exportAllBwics]: \"BWIC export\",\r\n [SubscriptionFeature.BwicMonitorSavedFilters]: \"Saved filters\",\r\n [SubscriptionFeature.BwicMonitorAvancedFilters]: \"Advanced filters\",\r\n [SubscriptionFeature.BwicMonitorColumnCustomizer]: \"Column customizer\",\r\n [SubscriptionFeature.BwicMonitorHistoricalData]: \"Access to historical BWIC data\",\r\n [SubscriptionFeature.BwicMonitorBwicsData]: \"Full access to Px Talk/BWIC rules/BWIC log data\", // ???\r\n [SubscriptionFeature.BwicMonitorSorting]: \"BWIC sorting\",\r\n [SubscriptionFeature.BwicMonitorNavigation]: \"Navigation from Inventory/Portfolio/Issuance Monitor to see security on the BWIC Monitor page\",\r\n\r\n // Inventory\r\n [SubscriptionFeature.InventorySecuritySearch]: \"Search by security\",\r\n [SubscriptionFeature.ExportInventory]: \"BWIC export\",\r\n [SubscriptionFeature.InventorySavedFilters]: \"Saved filters\",\r\n [SubscriptionFeature.InventoryAvancedFilters]: \"Advanced filters\",\r\n [SubscriptionFeature.InventoryColumnCustomizer]: \"Column customizer\",\r\n [SubscriptionFeature.InventoryHistoricalData]: \"Access to historical Inventory data\",\r\n [SubscriptionFeature.InventoryNavigation]: \"Navigation from BWIC Monitor/Portfolio/Issuance Monitor to see security on the Inventory page\",\r\n\r\n // Resources\r\n [SubscriptionFeature.CloMarketTrands]: \"CLO market trends report\",\r\n [SubscriptionFeature.HistoricalWebinars]: \"Historical webinars\",\r\n\r\n // K-Watch News\r\n [SubscriptionFeature.KWatchNewsFullNewsDetails]: \"Full news details\",\r\n [SubscriptionFeature.KWatchNewsNewsAttachments]: \"News attachments\",\r\n\r\n // Issuance MonitorIssuance Monitor\r\n [SubscriptionFeature.IssuanceMonitorStandardizedDetailsTabs]: \"Full deal details in 4 standardized tabs\",\r\n [SubscriptionFeature.IssuanceMonitorMarketingHistory]: \"Deal marketing history with tracked changes\",\r\n [SubscriptionFeature.IssuanceMonitorFiltersEmailAlerts]: \"Filters and filter-based email alerts\",\r\n [SubscriptionFeature.IssuanceMonitorColumnsCustomizer]: \"Columns customizer\",\r\n [SubscriptionFeature.IssuanceMonitorDealUpdateEmailAlerts]: \"Deal update email alerts\",\r\n [SubscriptionFeature.IssuanceMonitorHistoricalData]: \"7 Years of historical data: priced & closed deals\",\r\n [SubscriptionFeature.IssuanceMonitorArrangerPipeline]: \"Arranger pipeline\",\r\n [SubscriptionFeature.IssuanceMonitorWeeklyMarketRecap]: \"Weekly primary market recap\",\r\n [SubscriptionFeature.IssuanceMonitorExport]: \"Issuance Monitor export\",\r\n\r\n // Manager Profile\r\n [SubscriptionFeature.ManagerProfilePresentations]: \"Manager presentations\",\r\n [SubscriptionFeature.ManagerProfileScheduleMeeting]: \"Schedule a meeting with the manager\",\r\n [SubscriptionFeature.ManagerProfileManagerRelatedAlerts]: \"All types of manager-related alerts\",\r\n [SubscriptionFeature.ManagerProfileWebinarVideo]: \"Webinar video\",\r\n [SubscriptionFeature.ManagerProfileIssuanceSpreadsGraph]: \"Issuance Spreads graph\",\r\n [SubscriptionFeature.ManagerProfileDealsGraph]: \"Short & Long-Dated Deals graph\",\r\n [SubscriptionFeature.ManagerProfilePrimaryMarketData]: \"Links to primary market underlying data\",\r\n [SubscriptionFeature.ManagerProfileSecondaryMarketData]: \"Links to secondary market underlying data\",\r\n [SubscriptionFeature.ManagerProfileContacts]: \"Manager contacts\",\r\n\r\n // Integrations\r\n [SubscriptionFeature.IntegrationsBloomberg]: 'Bloomberg',\r\n [SubscriptionFeature.IntegrationsIntex]: 'Intex',\r\n [SubscriptionFeature.IntegrationsValitana]: 'Valitana',\r\n\r\n //Dealer Profile\r\n [SubscriptionFeature.DealerProfileBankContacts]: 'Bank contacts',\r\n [SubscriptionFeature.DealerProfileBankEvents]: 'Bank events',\r\n [SubscriptionFeature.DealerProfileEmailAlerts]: 'All types of bank-related alerts',\r\n [SubscriptionFeature.DealerProfileBanksBWICsPxTalk]: 'Bank BWICs Px Talk',\r\n\r\n //Deal Documents\r\n [SubscriptionFeature.CanAccessIndentureDealDocuments]: 'Indenture',\r\n [SubscriptionFeature.CanAccessOMDealDocuments]: 'Offering Memorandum',\r\n [SubscriptionFeature.CanAccessDistributionReportDealDocuments]: 'Distribution Report',\r\n [SubscriptionFeature.CanAccessMonthlyReportDealDocuments]: 'Monthly Report',\r\n [SubscriptionFeature.CanAccessOtherDealDocuments]: 'Other Deal Documents'\r\n\r\n};\r\n","export enum SubscriptionType {\r\n basic = 'Basic',\r\n marketMonitoring = 'Market Monitoring',\r\n primaryIssuance = 'Primary Issuance',\r\n secondaryMarkets = 'Secondary Markets',\r\n pro = 'Pro',\r\n trial = 'Trial'\r\n}\r\n\r\nexport function isSubscriptionObsolete(subscriotion: SubscriptionType) {\r\n return subscriotion === SubscriptionType.primaryIssuance ||\r\n subscriotion === SubscriptionType.secondaryMarkets\r\n}","export enum BwicHistoryActionType {\r\n Scheduled = 1,\r\n Bidding = 2,\r\n PriceTalk = 3,\r\n NewBid = 4,\r\n QuickFeedback = 5,\r\n TradeSubmitted = 6,\r\n TradedAway = 7,\r\n TradeAffirmed = 8,\r\n TradeRejected = 9,\r\n TargetLevel = 10,\r\n ColorDistribution = 11,\r\n ColorDistributionSend = 12,\r\n Finished = 13,\r\n Canceled = 14,\r\n OpenBiddingStage1Started = 15,\r\n OpenBiddingStage1Ended = 16,\r\n OpenBiddingStage2Ended = 17,\r\n OpenBiddingStage2Level = 18,\r\n ModifyAutoFeedbackConfig = 19,\r\n BidAsDealerRequest = 20,\r\n DirectBid = 21,\r\n DirectFeedback = 22,\r\n TradeCanceled = 23,\r\n AxedFinalChanged = 24,\r\n BuyerRejectedTrade = 25,\r\n BiddingCompleteReminder = 26\r\n}\r\n","export enum BwicStageEndType {\r\n Automatically = \"Automatically\",\r\n Manually = \"Manually\",\r\n}\r\n","import { TimeSpan } from '../primitives/TimeSpan';\r\n\r\nexport interface JumpBallSettings {\r\n automaticStage1Deadline?: TimeSpan;\r\n improverCount: JumpBallStage2Participants;\r\n improvementRound?: TimeSpan;\r\n stage1EndDateUtc?: Date;\r\n}\r\n\r\nexport enum JumpBallStage2Participants {\r\n Top2 = 2,\r\n Top3 = 3,\r\n Top4 = 4,\r\n Top5 = 5\r\n}\r\n","import { TimeSpan } from '../primitives/TimeSpan';\r\n\r\nexport interface TopXSettings {\r\n automaticStage1Deadline?: TimeSpan;\r\n improverCount: TopXStage2Participants;\r\n improvementRound?: TimeSpan;\r\n stage1EndDateUtc?: Date;\r\n}\r\n\r\nexport enum TopXStage2Participants {\r\n Top2 = 2,\r\n Top3 = 3,\r\n Top4 = 4,\r\n Top5 = 5\r\n}\r\n","export enum AssetType {\r\n Clo = 'CLO'\r\n}\r\n\r\nexport const AssetTypeList = [AssetType.Clo];\r\n","import { LevelType } from \"./LevelType\";\r\nimport { ColorType } from \"./ColorType\";\r\nimport { LevelSpecificationType } from \"../enums/LevelSpecificationType\";\r\n\r\nexport interface Color {\r\n levelType: LevelType;\r\n colorType: ColorType;\r\n levelSpecificationType: LevelSpecificationType;\r\n traded: boolean;\r\n level: string;\r\n normalizedLevel?: number;\r\n dm?: number;\r\n}\r\n\r\nexport enum ColorFilterType {\r\n None = 0,\r\n DNT = 1,\r\n Traded = 2,\r\n TradedColor = 3\r\n}","export enum LevelType {\r\n price = 1,\r\n dm = 2\r\n}\r\n","export enum CloManagersTabType {\r\n Overview = 'overview',\r\n Deals = 'deals',\r\n CloTeam = 'cloTeam',\r\n AdditionalInformation = 'additionalInformation',\r\n Analytics = 'analytics',\r\n}\r\n\r\nexport const CloManagerTabTypes = [\r\n { value: CloManagersTabType.Overview, text: 'Overview' },\r\n { value: CloManagersTabType.Deals, text: 'Deals' },\r\n { value: CloManagersTabType.CloTeam, text: 'CLO Team' },\r\n { value: CloManagersTabType.AdditionalInformation, text: 'Additional Information' },\r\n { value: CloManagersTabType.Analytics, text: 'Analytics' },\r\n];\r\n","\r\nexport interface CloSystemInfrastructures {\r\n id: number;\r\n name: string;\r\n type?:CloSystemInfrastructuresTypes\r\n}\r\n\r\nexport enum CloSystemInfrastructuresTypes {\r\n CloValuationServices = 'CloValuationServices',\r\n CloAnalyticsServices = 'CloAnalyticsServices',\r\n CloPortfolioManagementServices = 'CloPortfolioManagementServices',\r\n OffshoreLegalServices = 'OffshoreLegalServices',\r\n OffshoreFundAdministrationServices = 'OffshoreFundAdministrationServices',\r\n CloAccountingServices = 'CloAccountingServices',\r\n SecondaryCLOPlatforms = 'SecondaryCLOPlatforms',\r\n CloDocsServices = 'CloDocsServices',\r\n USCLOLawFirms = 'USCLOLawFirms',\r\n EuropeanCLOLawFirms = 'EuropeanCLOLawFirms',\r\n}\r\n","import { entries } from 'lodash';\r\n\r\nexport enum InstitutionType {\r\n Bank = 'Bank',\r\n BrokerDealer = 'BrokerDealer',\r\n FoundationEndowmentOCIO = 'FoundationEndowmentOcio',\r\n InsuranceCompany = 'InsuranceCompany',\r\n NonUSBank = 'NonUsBank',\r\n PensionCorporate = 'PensionCorporate',\r\n PensionPublic = 'PensionPublic',\r\n RIAAssetManager = 'RiaAssetManager',\r\n RIACLOManager = 'RiaCloManager',\r\n RIAFamilyOfficeVCFund = 'RiaFamilyOfficeVcFund',\r\n}\r\n\r\nexport const InstitutionTypeTitles = {\r\n [InstitutionType.Bank]: 'Bank',\r\n [InstitutionType.BrokerDealer]: 'Broker-Dealer (BD)',\r\n [InstitutionType.FoundationEndowmentOCIO]: 'Foundation / Endowment / OCIO',\r\n [InstitutionType.InsuranceCompany]: 'Insurance Company',\r\n [InstitutionType.NonUSBank]: 'Non-US Bank',\r\n [InstitutionType.PensionCorporate]: 'Pension / Corporate',\r\n [InstitutionType.PensionPublic]: 'Pension / Public',\r\n [InstitutionType.RIAAssetManager]: 'RIA / Asset Manager',\r\n [InstitutionType.RIACLOManager]: 'RIA / CLO Manager',\r\n [InstitutionType.RIAFamilyOfficeVCFund]: 'RIA / Family Office / VC Fund',\r\n};\r\n\r\nexport const InstitutionTypes = entries(InstitutionTypeTitles).map(([value, text]) => ({ value, text }));\r\n","export enum ColorDistributionType {\r\n None = 0,\r\n Status = 1,\r\n CoverHandle = 2,\r\n CoverExact = 3,\r\n BestHandle = 4,\r\n BestExact = 5\r\n}\r\n","export enum CompanyRole {\r\n Administrator = 'Administrator',\r\n Seller = 'Seller',\r\n BrokerDealer = 'BrokerDealer',\r\n Viewer = 'Viewer',\r\n CollateralManager = 'CollateralManager',\r\n Media = 'Media'\r\n}\r\n","export enum CompanyStatus {\r\n active = 1,\r\n blocked = 2,\r\n registrationPending = 3,\r\n registrationSubmitted = 4,\r\n registrationRejected = 5,\r\n offPlatform = 6,\r\n} \r\n","export enum ContactSalesRequestType {\r\n EvaluateBWIC = 'EvaluateBWIC',\r\n GetRightPlan = 'GetRightPlan',\r\n BuyOrUpgradeLicense = 'BuyOrUpgradeLicense',\r\n ProductQuestion = 'ProductQuestion',\r\n NeedCompliancePlan = 'NeedCompliancePlan'\r\n}\r\n\r\nexport const contactSalesRequestTypes = [\r\n { value: ContactSalesRequestType.EvaluateBWIC, text: 'I want to evaluate BWIC for my organization' },\r\n { value: ContactSalesRequestType.GetRightPlan, text: 'I want to understand which BWIC plan is right for me' },\r\n { value: ContactSalesRequestType.BuyOrUpgradeLicense, text: 'I want to buy licenses or upgrade' },\r\n { value: ContactSalesRequestType.ProductQuestion, text: 'I have a product question' },\r\n { value: ContactSalesRequestType.NeedCompliancePlan, text: 'I need a compliance plan' }\r\n]\r\n","import { TransactionType } from '../amr-pipeline/enums/TransactionType';\r\n\r\nexport enum ChartUnits {\r\n Volume = 'Volume',\r\n Count = 'Count',\r\n PercentByVolume = 'PercentByVolume',\r\n PercentByCount = 'PercentByCount',\r\n}\r\n\r\nexport enum ChartGrouping {\r\n W = 'W',\r\n M = 'M',\r\n Q = 'Q',\r\n Y = 'Y',\r\n}\r\n\r\nexport enum ChartView {\r\n Stacked = 'stack',\r\n Grouped = 'group',\r\n}\r\n\r\nexport enum Term {\r\n Short = 'Short',\r\n Long = 'Long',\r\n}\r\n\r\nexport const ChartTypes = [\r\n { value: TransactionType.newIssue, text: 'New Issue' },\r\n { value: TransactionType.refi, text: 'Refinancing' },\r\n { value: TransactionType.reset, text: 'Reset' },\r\n];\r\n\r\nexport const ChartUnitsList = [\r\n { value: ChartUnits.Volume, text: 'Volume' },\r\n { value: ChartUnits.Count, text: 'Count' },\r\n { value: ChartUnits.PercentByVolume, text: '% by Volume' },\r\n { value: ChartUnits.PercentByCount, text: '% by Count' },\r\n];\r\n","export enum BwicInventoriesTabs {\r\n Bwic = 1,\r\n Inventory = 2\r\n}\r\n","export enum PipelineWidgetColumn {\r\n company = 'company',\r\n dealName = 'dealName',\r\n collateralManager = 'collateralManager',\r\n collateralType = 'collateralType',\r\n currency = 'currency',\r\n pricingDate = 'pricingDate',\r\n dealBalanceTotal = 'dealBalanceTotal',\r\n numberOfTransactions = 'numberOfTransactions',\r\n redirectToIm = 'redirectToIm',\r\n relatedTransactions = 'relatedTransactions',\r\n emptySize = 'emptySize',\r\n};\r\n","import { Rating } from \"../enums/Rating\";\r\n\r\nexport enum RatingGroup {\r\n OTHER = 'OTHER',\r\n}\r\n\r\nexport const ratingGroupValues = {\r\n [RatingGroup.OTHER]: [Rating.CCC, Rating.D]\r\n};\r\n\r\nexport const ratingWithGroupValues = [\r\n Rating.AAA,\r\n Rating.AA,\r\n Rating.A,\r\n Rating.BBB,\r\n Rating.BB,\r\n Rating.B,\r\n Rating.NR,\r\n RatingGroup.OTHER\r\n];\r\n\r\nexport type RatingWithGroup = typeof ratingWithGroupValues[number]\r\n","export enum TopFilterTypes {\r\n issuer = \"managers\",\r\n arranger = \"arrangers\",\r\n staticDeal = \"staticDeal\",\r\n trustees = \"trustees\",\r\n}\r\n","export enum DashboardSellBuyTabs {\r\n Sell = 1,\r\n Buy = 2\r\n}\r\n","export enum TopChartType {\r\n issuers = \"issuers\",\r\n arrangers = \"arrangers\",\r\n trustees = \"trustees\",\r\n}\r\n","export enum DealsTabType {\r\n Overview = 'overview',\r\n DealDetail = 'dealDetail',\r\n ClassDetail = 'classDetail',\r\n AllClasses = 'allClasses',\r\n Documents = 'documents',\r\n AmrInfo = 'amrInfo',\r\n}\r\n\r\nexport const DealsTabTypes = [\r\n { value: DealsTabType.Overview, text: 'Overview' },\r\n { value: DealsTabType.DealDetail, text: 'Deal Detail' },\r\n { value: DealsTabType.ClassDetail, text: 'Class Detail' },\r\n { value: DealsTabType.AllClasses, text: 'All Classes' },\r\n { value: DealsTabType.Documents, text: 'Documents' },\r\n { value: DealsTabType.AmrInfo, text: 'AMR Info' },\r\n];\r\n","export interface Document {\r\n id: string;\r\n name: string;\r\n uploadTime: Date;\r\n referenceName?: string;\r\n executionDate?: string | Date;\r\n}\r\n\r\nexport enum DocumentStoreType {\r\n Default = \"Default\",\r\n Settlement = \"Settlement\",\r\n Disclosure = \"Disclosure\"\r\n}\r\n","import { AlertEnabledState } from '../enums/AlertEnabledState';\r\nimport { Rating } from '../enums/Rating';\r\n\r\nexport enum AlertOption {\r\n Never = 'Never',\r\n Daily = 'Daily',\r\n Instant = 'Instant',\r\n Periodic = 'Periodic',\r\n}\r\n\r\nexport interface RatingPreference {\r\n rating: Rating;\r\n isEUR: boolean;\r\n isUSD: boolean;\r\n minSize: number;\r\n maxSize: number;\r\n}\r\n\r\nexport interface BwicByRatingPreferences {\r\n bwicByRatingAlertState: AlertOption;\r\n ratingPreference: RatingPreference[];\r\n}\r\n\r\nexport interface EmailPreferences {\r\n dailyDashboardEmail: AlertOption;\r\n ratingPreference: RatingPreference[];\r\n hasPortfolio: boolean;\r\n portfolioBwicAlertState: AlertEnabledState;\r\n portfolioCleansingNoticeAlertState: AlertEnabledState;\r\n portfolioDealersInventoryAlertState: AlertEnabledState;\r\n newBwicAlertState: AlertEnabledState;\r\n portfolioIssuanceMonitorAlertState: AlertEnabledState;\r\n portfolioOutOfRiPeriodAlertState: AlertEnabledState;\r\n portfolioOutOfNcPeriodAlertState: AlertEnabledState;\r\n portfolioRollerDeadlineAlertState: AlertEnabledState;\r\n bwicReminderAlertState: AlertEnabledState;\r\n productUpdates: boolean;\r\n eventsAndOffers: boolean;\r\n featuredContent: boolean;\r\n bwicByRatingAlertState: AlertOption;\r\n dealerInventoryAlertState: AlertOption;\r\n}\r\n\r\nexport const instantAlertOptions = [AlertOption.Never, AlertOption.Instant];\r\nexport const periodicAlertOption = [AlertOption.Never, AlertOption.Periodic];\r\n","export enum AlertEnabledState {\r\n Enabled = 'Enabled',\r\n Disabled = 'Disabled',\r\n PartiallyEnabled = 'PartiallyEnabled',\r\n}\r\n","export enum BwicStatus {\r\n scheduled = 1,\r\n bidding = 2,\r\n finished = 3,\r\n canceled = 4\r\n}\r\n","export enum BwicType {\r\n Direct = 'Direct',\r\n Live = 'Live',\r\n Parsed = 'Parsed',\r\n Standard = 'Standard',\r\n}\r\n\r\nexport const BwicTypes: BwicType[] = [\r\n BwicType.Direct,\r\n BwicType.Live,\r\n BwicType.Parsed,\r\n BwicType.Standard,\r\n];\r\n","export enum Currency {\r\n USD = 'USD',\r\n EUR = 'EUR'\r\n}\r\n\r\nexport const Currencies: Currency[] = [\r\n Currency.USD,\r\n Currency.EUR\r\n];\r\n","export enum LevelSpecificationType {\r\n none = 0,\r\n best = 1,\r\n cover = 2\r\n}\r\n","export enum OpenBiddingImproverCount {\r\n top2 = 2,\r\n top3 = 3,\r\n top4 = 4,\r\n top5 = 5\r\n}\r\n","// Used for Live & JumpBall bidding types\r\nexport enum OpenBiddingStatus {\r\n stage1Ended = 1,\r\n improvementRoundEnded = 2\r\n}\r\n","export enum Rating {\r\n NR = 'NR',\r\n AAA = 'AAA',\r\n AAAX = 'AAAX',\r\n AAAJR = 'AAAJr',\r\n AA = 'AA',\r\n A = 'A',\r\n BBB = 'BBB',\r\n BB = 'BB',\r\n B = 'B',\r\n CCC = 'CCC',\r\n D = 'D'\r\n}\r\n\r\nexport const Ratings: Rating[] = [\r\n Rating.AAA,\r\n Rating.AA,\r\n Rating.A,\r\n Rating.BBB,\r\n Rating.BB,\r\n Rating.B,\r\n Rating.CCC,\r\n Rating.D,\r\n Rating.NR\r\n];\r\n\r\nexport const IssuanceMonitorRatings: {value: Rating, text?: string}[] = [\r\n {value: Rating.AAAX, text: 'AAA-X'},\r\n {value: Rating.AAA},\r\n {value: Rating.AAAJR, text: 'AAA-Jr'},\r\n {value: Rating.AA},\r\n {value: Rating.A},\r\n {value: Rating.BBB},\r\n {value: Rating.BB},\r\n {value: Rating.B},\r\n {value: Rating.NR}\r\n];\r\n\r\nexport const ratingSortOrder = {\r\n [Rating.AAAX]: 0,\r\n [Rating.AAA]: 1,\r\n [Rating.AAAJR]: 2,\r\n [Rating.AA]: 3,\r\n [Rating.A]: 4,\r\n [Rating.BBB]: 5,\r\n [Rating.BB]: 6,\r\n [Rating.B]: 7,\r\n [Rating.CCC]: 8,\r\n [Rating.D]: 9,\r\n [Rating.NR]: 10,\r\n null: 11\r\n};\r\n\r\nexport const ClassRatingsM = [\r\n 'Aaa', 'Aa1', 'Aa2', 'Aa3', 'A1',\r\n 'A2', 'A3', 'Baa1', 'Baa2', 'Baa3',\r\n 'Ba1', 'Ba2', 'Ba3', 'B1', 'B2',\r\n 'B3', 'Caa1', 'Caa2', 'Caa3', 'Ca',\r\n 'C', 'NR'\r\n];\r\n\r\nexport const ClassRatingsS = [\r\n 'AAA', 'AA+', 'AA', 'AA-', 'A+',\r\n 'A', 'A-', 'BBB+', 'BBB', 'BBB-',\r\n 'BB+', 'BB', 'BB-', 'B+', 'B',\r\n 'B-', 'CCC+', 'CCC', 'CCC-', 'CC',\r\n 'C', 'D', 'NR'\r\n];\r\n\r\nexport const ClassRatingsF = [\r\n 'AAA', 'AA+', 'AA', 'AA-', 'A+',\r\n 'A', 'A-', 'BBB+', 'BBB', 'BBB-',\r\n 'BB+', 'BB', 'BB-', 'B+', 'B',\r\n 'B-', 'CCC', 'DDD', 'DD', 'D', 'NR'\r\n];\r\n\r\nexport const ClassRatingsK = [\r\n 'AAA', 'AA+', 'AA', 'AA-', 'A+',\r\n 'A', 'A-', 'BBB+', 'BBB', 'BBB-',\r\n 'BB+', 'BB', 'BB-', 'B+', 'B',\r\n 'B-', 'CCC+', 'CCC', 'CCC-', 'CC',\r\n 'C', 'D', 'NR',\r\n];\r\n\r\nexport const ClassRatingsD = [\r\n 'AAA', 'AA (high)', 'AA', 'AA (low)', 'A (high)',\r\n 'A', 'A (low)', 'BBB (high)', 'BBB', 'BBB (low)',\r\n 'BB (high)', 'BB', 'BB(low)', 'B (high)', 'B',\r\n 'B (low)', 'CCC (high)', 'CCC', 'CCC (low)', 'CC (high)',\r\n 'CC', 'CC (low)', 'C (high)', 'C', 'C (low)', 'D', 'NR',\r\n];\r\n","export enum RtgAgency {\r\n Moodys = \"Moodys\",\r\n SnP = \"SnP\",\r\n Fitch = \"Fitch\",\r\n KBRA = \"KBRA\",\r\n DBRS = \"DBRS\",\r\n}\r\n\r\nexport const RtgAgencyList = [\r\n { value: RtgAgency.Moodys, text: \"Moody’s\" },\r\n { value: RtgAgency.SnP, text: \"Standard & Poors\" },\r\n { value: RtgAgency.Fitch, text: \"Fitch\" },\r\n { value: RtgAgency.KBRA, text: \"KBRA\" },\r\n { value: RtgAgency.DBRS, text: \"DBRS\" },\r\n];\r\n","export enum TradingOrderByColumn {\r\n TradeDate = 1,\r\n TradeStatus = 2,\r\n TradeType = 3,\r\n SettlementDate = 4,\r\n SettlementStatus = 5,\r\n Isin = 6,\r\n Cusip = 7,\r\n Ticker = 8,\r\n Size = 9,\r\n Price = 10,\r\n Commission = 11,\r\n BuyerShortCode = 12,\r\n DealerMPID = 13,\r\n SellerShortCode = 14,\r\n}\r\n\r\nexport enum TradingOrderByColumnSortOrder {\r\n asc = 1,\r\n desc = 2\r\n}\r\n","import { Matcher } from 'react-day-picker';\r\nimport { FilterRangeOption } from './FilterRangeOption';\r\nimport { DateRange } from './DateRange';\r\nimport { FilterRadioOption } from './FilterRadioOption';\r\nimport { FilterBooleanOption } from './FilterBooleanOption';\r\nimport { FilterDateOption } from './FilterDateOption';\r\nimport { FilterOption } from './FilterOption';\r\nimport { DateFilterOption } from './DateFilterOption';\r\nimport { DateTimeFilterOption } from './DateTimeFilterOption';\r\nimport { FilterDateTimeOption } from './FilterDateTimeOption';\r\nimport { SubscriptionFeature } from '../billing/SubscriptionFeature';\r\n\r\nexport enum FilterType {\r\n Select = 'select',\r\n Range = 'range',\r\n Date = 'date',\r\n DateWithYearsRange = 'dateWithYearsRange',\r\n DateWithYearsAndTimeRange = 'dateWithYearsAndTimeRange',\r\n YearsDate = 'yearsDate',\r\n Radio = 'radio',\r\n BooleanRadio = 'booleanRadio',\r\n}\r\n\r\nexport interface DateFilterOptions {\r\n customDateRange: DateRange;\r\n customYearsRange?: FilterRangeOption;\r\n}\r\n\r\nexport interface FilterGroup {\r\n filter: unknown;\r\n key: string;\r\n groupKey?: TGroupKey;\r\n visible: boolean;\r\n text: string;\r\n disabled: boolean;\r\n selected: boolean;\r\n withSearch?: boolean;\r\n isApplied?: boolean;\r\n type: FilterType;\r\n requestState?: boolean;\r\n requiredFeature?: SubscriptionFeature;\r\n}\r\n\r\nexport type TGroupKey = 'color';\r\n\r\nexport interface FilterSelectGroup extends FilterGroup {\r\n filter: FilterOption[],\r\n}\r\n\r\nexport interface FilterRangeGroup extends FilterGroup {\r\n filter: FilterRangeOption;\r\n acceptableOptions?: FilterRangeOption[];\r\n decimals?: number;\r\n}\r\n\r\nexport interface FilterDateGroup extends FilterGroup {\r\n filter: FilterDateOption;\r\n acceptableOptions?: DateFilterOption[];\r\n disabledDays?: Matcher;\r\n}\r\n\r\nexport interface FilterDateTimeGroup extends FilterGroup {\r\n filter: FilterDateTimeOption;\r\n acceptableOptions?: DateTimeFilterOption[];\r\n}\r\n\r\nexport interface FilterRadioGroup extends FilterGroup {\r\n filter: FilterRadioOption;\r\n}\r\n\r\nexport interface FilterBooleanGroup extends FilterGroup {\r\n filter: FilterBooleanOption;\r\n}\r\n","import { PipelineType } from '../amr-pipeline/enums/PipelineType';\r\nimport { ArrangerPipelineFilters, DealsPipelineFilters } from '../state/PipelineFilterState';\r\nimport { FilterGroup } from './FilterGroup';\r\nimport { RedirectFilterOption } from './RedirectFilterOption';\r\n\r\nexport enum BwicFilterType {\r\n BwicMonitor = 'BwicMonitor',\r\n BwicMonitorSell = 'BwicMonitorSell',\r\n BwicMonitorBuy = 'BwicMonitorBuy',\r\n Inventory = 'Inventory',\r\n Portfolio = 'Portfolio',\r\n BDInventory = 'BDInventory',\r\n}\r\n\r\nexport type CommonFilter = {\r\n [x: string]: FilterGroup;\r\n};\r\n\r\nexport type TFilterType = BwicFilterType | PipelineType;\r\n\r\nexport type TFilter = FType extends BwicFilterType\r\n ? CommonFilter\r\n : FType extends PipelineType.ArrangerPipeline\r\n ? ArrangerPipelineFilters\r\n : DealsPipelineFilters;\r\n\r\nexport interface FilterState {\r\n filterChanged: boolean;\r\n filterApplied: boolean;\r\n selectedFilterReferenceName?: string;\r\n lastAppliedFilter?: TFilter;\r\n selectedFilter?: TFilter;\r\n filterModified: boolean;\r\n initialFilter?: TFilter;\r\n filter: TFilter;\r\n redirectFilters: RedirectFilterOption | null;\r\n visibleFilters: Array;\r\n}\r\n","export enum SubscriptionPeriod {\r\n month = 'Month',\r\n quarter = 'Quarter',\r\n year = 'Year'\r\n}\r\n","export enum TimeOption {\r\n AnyTime = 'AnyTime',\r\n CustomTime = 'CustomTime',\r\n}\r\n","export enum InventoryFloatingIndex {\r\n Sofr = 1,\r\n Libor1m = 2,\r\n Libor3m = 3,\r\n Euribor3m = 4,\r\n Euribor6m = 5\r\n}\r\n\r\nexport const inventoryFloatingIndexTitles: { [key: number]: string } = {\r\n [InventoryFloatingIndex.Sofr]: 'SOFR',\r\n [InventoryFloatingIndex.Libor1m]: 'LIBOR 1M',\r\n [InventoryFloatingIndex.Libor3m]: 'LIBOR 3M',\r\n [InventoryFloatingIndex.Euribor3m]: 'EURIBOR 3M',\r\n [InventoryFloatingIndex.Euribor6m]: 'EURIBOR 6M',\r\n};\r\n","export enum InventoryPositionStatus {\r\n added = 1,\r\n updated = 2,\r\n traded = 3,\r\n obsolete = 4,\r\n removed = 5,\r\n undefined = 6\r\n}\r\n","export enum InventorySecurityOrderByColumn {\r\n lastUpdateDate = 1,\r\n isinCusip = 2,\r\n ticker = 3,\r\n currency = 4,\r\n rating = 5,\r\n offer = 6,\r\n size = 7,\r\n offerDmBps = 8,\r\n offerYield = 9,\r\n walYears = 10,\r\n status = 11,\r\n dealerId = 12,\r\n mvoc = 13,\r\n nonCallPeriodEndYears = 14,\r\n reinvestmentPeriodEndYears = 15,\r\n creditEnhancement = 16,\r\n collateralType = 17,\r\n dealLegalName = 18,\r\n collateralManager = 19,\r\n statedMaturity = 20,\r\n vintage = 21,\r\n trustee = 22,\r\n amr = 23,\r\n staticDeal = 24,\r\n euCompliance = 25,\r\n esg = 26,\r\n closingDate = 27,\r\n outOfNC = 28,\r\n outOfRI = 29,\r\n bidSize = 30,\r\n bid = 31,\r\n bidDmBps = 32\r\n}\r\n\r\nexport enum InventorySecuritySortOrder {\r\n asc = 1,\r\n desc = 2\r\n}\r\n\r\n","import { UserSlim } from \"../account/UserSlim\";\r\nimport { CompanySlim } from \"../company/CompanySlim\";\r\n\r\nexport interface AccessToken {\r\n id: number;\r\n apis: AccessTokenApi[];\r\n company: CompanySlim;\r\n createdBy: UserSlim;\r\n creationDate: Date;\r\n expirationDate: Date;\r\n token: string;\r\n revokeDate?: Date;\r\n status: ApiTokenStatus;\r\n}\r\n\r\nexport enum ApiTokenStatus {\r\n Active = 1,\r\n Expired = 2,\r\n Revoked = 3\r\n}\r\n\r\nexport const AccessTokenStatusLabels = {\r\n [ApiTokenStatus.Active]: 'Active',\r\n [ApiTokenStatus.Expired]: 'Expired',\r\n [ApiTokenStatus.Revoked]: 'Revoked',\r\n}\r\n\r\nexport enum AccessTokenApi {\r\n BlotterApiReader = 'BlotterApiReader',\r\n BwicMonitorApiReader = 'BwicMonitorApiReader',\r\n IssuanceMonitorApi = 'issuanceMonitor',\r\n IssuanceMonitorApiReader = 'IssuanceMonitorApiReader',\r\n IssuanceMonitorApiHistoryReader = 'IssuanceMonitorApiHistoryReader',\r\n PortfolioApiReaderWriter = 'PortfolioApiReaderWriter', // TO DO: Remove\r\n PortfolioApiReader = 'PortfolioApiReader',\r\n PortfolioApiWriter = 'PortfolioApiWriter',\r\n BwicMonitorApiHistoryReader = 'BwicMonitorApiHistoryReader',\r\n AllBwicMonitorApi = 'AllBwicMonitorApi', // TO DO: Remove\r\n EvalApiReader = 'EvalApiReader',\r\n DashboardApiReader = 'DashboardApiReader',\r\n}\r\n\r\nexport const AccessTokenApiLabels = {\r\n [AccessTokenApi.BlotterApiReader]: 'Blotter API',\r\n [AccessTokenApi.BwicMonitorApiReader]: 'Actual Data',\r\n [AccessTokenApi.IssuanceMonitorApiReader]: 'Upcoming',\r\n [AccessTokenApi.IssuanceMonitorApiHistoryReader]: 'Historical',\r\n [AccessTokenApi.PortfolioApiReaderWriter]: 'Portfolio API',\r\n [AccessTokenApi.PortfolioApiReader]: 'Get a list of user`s portfolios',\r\n [AccessTokenApi.PortfolioApiWriter]: 'Create/Update portfolio',\r\n [AccessTokenApi.BwicMonitorApiHistoryReader]: 'Historical Data',\r\n [AccessTokenApi.AllBwicMonitorApi]: 'BWIC Monitor API',\r\n [AccessTokenApi.IssuanceMonitorApi]: 'Issuance Monitor API',\r\n [AccessTokenApi.EvalApiReader]: 'Eval API',\r\n [AccessTokenApi.DashboardApiReader]: 'Dashboard API',\r\n}\r\n","export interface ManageEmailDetails {\r\n bcc: string | null;\r\n cc: string | null;\r\n created: Date;\r\n emailEvents: ManageEmailDetailsEvent[];\r\n emailType: number;\r\n from: string;\r\n sender: string;\r\n to: string;\r\n}\r\n\r\nexport interface ManageEmailDetailsEvent {\r\n id: number;\r\n email: string;\r\n emailEventType: ManageEmailDetailsEventStatus;\r\n reason: string | null\r\n timestamp: Date;\r\n}\r\n\r\nexport enum ManageEmailDetailsEventStatus {\r\n Processed = 1,\r\n Dropped = 2,\r\n Deferred = 3,\r\n Delivered = 4,\r\n Open = 5,\r\n Click = 6,\r\n Bounce = 7,\r\n SpamReport = 8,\r\n Unsubscribe = 9\r\n}\r\n\r\nexport const ManageEmailDetailsEventStatusLabels = {\r\n [ManageEmailDetailsEventStatus.Processed]: 'Processed',\r\n [ManageEmailDetailsEventStatus.Dropped]: 'Dropped',\r\n [ManageEmailDetailsEventStatus.Deferred]: 'Deferred',\r\n [ManageEmailDetailsEventStatus.Delivered]: 'Delivered',\r\n [ManageEmailDetailsEventStatus.Open]: 'Open',\r\n [ManageEmailDetailsEventStatus.Click]: 'Click',\r\n [ManageEmailDetailsEventStatus.Bounce]: 'Bounce',\r\n [ManageEmailDetailsEventStatus.SpamReport]: 'Spam Report',\r\n [ManageEmailDetailsEventStatus.Unsubscribe]: 'Unsubscribe',\r\n}\r\n\r\nexport interface ManageEmailTypeOption {\r\n value: number;\r\n description: string;\r\n}","export enum UserDesk {\r\n Primary,\r\n Secondary,\r\n}\r\n\r\nexport const UserDeskLabels = {\r\n [UserDesk.Primary]: 'Primary',\r\n [UserDesk.Secondary]: 'Secondary',\r\n}\r\n","export enum UserRequestStatus {\r\n Pending = 1,\r\n Approved = 2,\r\n Blocked = 3\r\n}\r\n","export enum MarketingEventType {\r\n Release = 'release',\r\n Webinar = 'webinars',\r\n Conference = 'conference',\r\n}\r\n\r\nexport enum ReleaseItemType {\r\n NewFeature = 1,\r\n Improvement = 2,\r\n BugFix = 3\r\n}\r\n\r\nexport interface ReleaseItem {\r\n id: number;\r\n title: string;\r\n description: string;\r\n linkName: string;\r\n link: string;\r\n imageReferenceName?: string | null;\r\n type: MarketingEventType;\r\n label?: string;\r\n lastModificationDate: Date;\r\n releaseItemImageId: number;\r\n releaseItemType: ReleaseItemType;\r\n}\r\n\r\nexport interface Release {\r\n id: number;\r\n title: string;\r\n releaseDate: Date;\r\n active: boolean;\r\n lastModificationDate: Date;\r\n releaseItems?: ReleaseItem[];\r\n}\r\n\r\nexport interface Releases {\r\n listStartSymbol: string;\r\n listEndSymbol: string;\r\n listItemStartSymbol: string;\r\n listItemEndSymbol: string;\r\n releases: Release[];\r\n}\r\n","import { TimeSpan } from \"../primitives/TimeSpan\"\r\nimport { Nullable } from \"../primitives/Nullable\";\r\nimport { BwicProcessType } from \"./Process\";\r\n\r\nexport interface ParsedBwicProcess {\r\n reserveLevelsApply: Nullable\r\n canTradeEarly: Nullable\r\n canBidEarly: Nullable\r\n partialBidsAccepted: Nullable\r\n bidsGoodFor: TimeSpan\r\n processType?: BwicProcessType // reuse BwicProcessType enum (NEW Option will be added to then enum for \"Other\" case: Unknown = 6)\r\n bff?: ParsedBwicBestFootForwardSettings\r\n jumpBall?: ParsedBwicTwoStageSettings\r\n topX?: ParsedBwicTwoStageSettings\r\n unknown?: ParsedBwicTwoStageSettings\r\n}\r\n\r\nexport interface ParsedBwicTwoStageSettings {\r\n hardCutOff: HardCutOff,\r\n stage1EndDateUtc?: Date;\r\n stage2EndDateUtc?: Date;\r\n improverCount?: Stage2Participants;\r\n}\r\n\r\ninterface ParsedBwicBestFootForwardSettings {\r\n stage1EndDateUtc?: Date;\r\n}\r\n\r\nexport enum Stage2Participants {\r\n Top2 = 2,\r\n Top3 = 3,\r\n Top4 = 4,\r\n Top5 = 5\r\n}\r\n\r\nexport type HardCutOff = 1 | 2","import { LevelSpecificationType } from '../enums/LevelSpecificationType';\r\nimport { OpenBiddingImproverCount } from '../enums/OpenBiddingImproverCount';\r\nimport { OpenBiddingStatus } from '../enums/OpenBiddingStatus';\r\nimport { ProcessTemplate } from './ProcessTemplate';\r\nimport { JumpBallSettings } from '../bwic-process/JumpBallSettings';\r\nimport { LiveBiddingSettings } from '../bwic-process/LiveBiddingSettings';\r\nimport { TopXSettings } from '../bwic-process/TopXSettings';\r\nimport { BestFootForwardSettings } from '../bwic-process/BestFootForwardSettings';\r\nimport { TimeSpan } from '../primitives/TimeSpan';\r\n\r\ninterface ProcessBase {\r\n id: number;\r\n reserveLevelsApply: boolean;\r\n earlyTrades: boolean;\r\n rulesText: string;\r\n type: BwicProcessType;\r\n\r\n // **** Obsolete, use .liveBidding\r\n stage1Deadline?: number;\r\n improvementRound?: number;\r\n levelSpecificationType?: LevelSpecificationType;\r\n openBiddingImproverCount?: OpenBiddingImproverCount; \r\n // ****\r\n\r\n liveBidding?: LiveBiddingSettings;\r\n jumpBall?: JumpBallSettings;\r\n topX?: TopXSettings;\r\n bff?: BestFootForwardSettings;\r\n\r\n autoFeedbackDelay?: TimeSpan;\r\n minBidIncrement?: number;\r\n cutOffReminder?: TimeSpan;\r\n\r\n stagedBiddingStatus?: OpenBiddingStatus | null; \r\n}\r\n\r\nexport interface Process extends ProcessBase{\r\n processTemplate: ProcessTemplate;\r\n}\r\n\r\nexport type NewBwicProcess = ProcessBase & ProcessTemplate;\r\n\r\n\r\nexport enum BwicProcessType {\r\n Standard = 1,\r\n Live = 2,\r\n JumpBall = 3, \r\n TopX = 4,\r\n BestFootForward = 5,\r\n Unknown = 6\r\n}\r\n\r\n","export enum EditNewsTabType {\r\n view = \"view\",\r\n edit = \"edit\",\r\n}\r\n","import { NewsTabCategory } from './NewsTabCategory';\r\n\r\nexport enum NewsCategory {\r\n None = \"None\",\r\n Events = \"Event\",\r\n Primary = \"Primary\",\r\n Research = \"Research\",\r\n Secondary = \"Secondary\",\r\n MyPortfolio = \"MyPortfolio\",\r\n}\r\n\r\nexport const newsCategoryTitles = {\r\n [NewsCategory.None]: \"—\",\r\n [NewsCategory.Events]: \"Events\",\r\n [NewsCategory.Primary]: \"Primary\",\r\n [NewsCategory.Research]: \"Research\",\r\n [NewsCategory.Secondary]: \"Secondary\",\r\n [NewsCategory.MyPortfolio]: \"My Portfolio\",\r\n};\r\n\r\nexport const NewsTabToCategory: Partial> = {\r\n [NewsTabCategory.Primary]: NewsCategory.Primary,\r\n [NewsTabCategory.Secondary]: NewsCategory.Secondary,\r\n [NewsTabCategory.Research]: NewsCategory.Research,\r\n};\r\n","export enum NewsLabel {\r\n None = \"None\",\r\n AMR = \"AMR\",\r\n ArrangerPipeline = \"ArrangerPipeline\",\r\n BWIC = \"BWIC\",\r\n CLOMarket = \"CLOMarket\",\r\n Conference = \"Conference\",\r\n Debut = \"Debut\",\r\n New = \"New\",\r\n NewAMR = \"NewAMR\",\r\n Pricing = \"Pricing\",\r\n PrimaryWeekly = \"PrimaryWeekly\",\r\n Webinar = \"Webinar\",\r\n}\r\n\r\nexport const newsLabelTitles = {\r\n [NewsLabel.None]: \"—\",\r\n [NewsLabel.AMR]: \"AMR\",\r\n [NewsLabel.ArrangerPipeline]: \"Arranger Pipeline\",\r\n [NewsLabel.BWIC]: \"BWIC\",\r\n [NewsLabel.CLOMarket]: \"CLO Market\",\r\n [NewsLabel.Conference]: \"Conference\",\r\n [NewsLabel.Debut]: \"Debut\",\r\n [NewsLabel.New]: \"New\",\r\n [NewsLabel.NewAMR]: \"New AMR\",\r\n [NewsLabel.Pricing]: \"Pricing\",\r\n [NewsLabel.PrimaryWeekly]: \"Primary Weekly\",\r\n [NewsLabel.Webinar]: \"Webinar\",\r\n};\r\n","import cloImage from '../../../images/clo.png';\r\nimport londonStockExchangeGroupImage from '../../../images/london-stock-exchange-group.svg';\r\n\r\nexport enum NewsProvider {\r\n None = \"None\",\r\n CLOResearchGroup = \"CLOResearchGroup\",\r\n LondonStockExchangeGroup = \"LondonStockExchangeGroup\",\r\n}\r\n\r\nexport const newsProviderTitles = {\r\n [NewsProvider.None]: \"—\",\r\n [NewsProvider.CLOResearchGroup]: \"CLO Research Group\",\r\n [NewsProvider.LondonStockExchangeGroup]: \"London Stock Exchange Group\",\r\n};\r\n\r\nexport const newsProviderLogos = {\r\n [NewsProvider.CLOResearchGroup]: cloImage,\r\n [NewsProvider.LondonStockExchangeGroup]: londonStockExchangeGroupImage,\r\n};\r\n","export enum NewsTabCategory {\r\n 'Primary' = 'Primary',\r\n 'Secondary' = 'Secondary',\r\n 'Research' = 'Research',\r\n 'All' = 'All',\r\n}\r\n","export enum NotificationType {\r\n PushNotification = 'PushNotification',\r\n Info = 'Info',\r\n Error = 'Error',\r\n}\r\n","export enum OnBoardingTooltipType {\r\n addressBook = 'AddressBook',\r\n allBwics = 'AllBwics',\r\n blotter = 'Blotter',\r\n bwicBidding = 'BwicBidding',\r\n bwicCancelled = 'BwicCancelled',\r\n bwicColorDistribution = 'BwicColorDistribution',\r\n bwicFinished = 'BwicFinished',\r\n bwicNotInvited = 'BwicNotInvited',\r\n bwicOpenBidding = 'BwicOpenBidding',\r\n bwicParsed = 'BwicParsed',\r\n bwicScheduled = 'BwicScheduled',\r\n directBiddingPopup = 'DirectBiddingPopup',\r\n editAddressBook = 'EditAddressBook',\r\n myBwics = 'MyBwics',\r\n newBwicStep1 = 'NewBwicStep1',\r\n newBwicStep2 = 'NewBwicStep2',\r\n newBwicStep3 = 'NewBwicStep3',\r\n newBwicStep4 = 'NewBwicStep4',\r\n newBwicStep5 = 'NewBwicStep5',\r\n newPortfolio = 'NewPortfolio',\r\n portfolio = 'Portfolio',\r\n portfolioUploadDocument = 'PortfolioUploadDocument',\r\n whatsNewPopup = 'WhatsNewPopup',\r\n webinarAnnouncementPopup = 'WebinarAnnouncementPopup',\r\n allToAllPopup = 'AllToAllPopup',\r\n eval = 'Eval',\r\n}\r\n","export enum PageConfigType {\r\n BwicMonitorAll = 'BwicMonitorAll',\r\n Portfolio = 'Portfolio',\r\n Inventory = 'Inventory',\r\n DealerInventory = 'DealerInventory',\r\n}","export enum ColumnConfigKey {\r\n IsinCusip = 'IsinCusip',\r\n Ticker = 'Ticker',\r\n Inventory = 'Inventory',\r\n Asset = 'Asset',\r\n Currency = 'Currency',\r\n Rating = 'Rating',\r\n BidSize = 'BidSize',\r\n Size = 'Size',\r\n PxTalk = 'PxTalk',\r\n Color = 'Color',\r\n DealName = 'DealName',\r\n CollateralManager = 'CollateralManager',\r\n ClosingDate = 'ClosingDate',\r\n NcEndYrs = 'NcEndYrs',\r\n RiEndYrs = 'RiEndYrs',\r\n NcEnd = 'NcEnd',\r\n OutOfNc = 'OutOfNc',\r\n RiEnd = 'RiEnd',\r\n OutOfRi = 'OutOfRi',\r\n Maturity = 'Maturity',\r\n Vintage = 'Vintage',\r\n Trustee = 'Trustee',\r\n AmrDeal = 'AmrDeal',\r\n StaticDeal = 'StaticDeal',\r\n EuCompliance = 'EuCompliance',\r\n Esg = 'Esg',\r\n CollateralType = 'CollateralType',\r\n Actions = 'Actions',\r\n LastUpdateDate = 'LastUpdateDate',\r\n Dealer = 'Dealer',\r\n Bid = 'Bid',\r\n Offer = 'Offer',\r\n CreditEnhancement = 'CreditEnhancement',\r\n BidDmBps = 'BidDmBps',\r\n OfferDmBps = 'OfferDmBps',\r\n OfferYield = 'OfferYield',\r\n Coupon = 'Coupon',\r\n WalYears = 'WalYears',\r\n Mvoc = 'Mvoc',\r\n Description = 'Description',\r\n Bwic = 'Bwic',\r\n CurrentBwic = 'CurrentBwic',\r\n LastTraded = 'LastTraded',\r\n EvalPriceTalk = 'KTalk',\r\n DealDocuments = 'DealDocuments',\r\n ImTransaction = 'ImTransaction',\r\n ArrangerPipeline = 'ArrangerPipeline',\r\n RollerDeadline = 'RollerDeadline',\r\n CleansingNotice = 'CleansingNotice'\r\n}\r\n","export enum PortfolioAlertsTypes {\r\n issuanceMonitorAlert = 'issuanceMonitorAlert',\r\n bwicAlert = 'bwicAlert',\r\n dealersInventoryAlert = 'dealersInventoryAlert',\r\n rollerDeadlineAlert = 'rollerDeadlineAlert',\r\n}\r\n","import { Rating } from \"../enums/Rating\";\r\nimport { Currency } from \"../enums/Currency\";\r\n\r\nexport interface Security {\r\n id: number;\r\n ticker: string;\r\n isin?: string;\r\n cusip?: string;\r\n isinCusip: string;\r\n size: number;\r\n currency: Currency;\r\n rating: Rating;\r\n}\r\n\r\nexport function isinCusip(security: { isin?: string; cusip?: string; currency: Currency }){\r\n return security.currency === Currency.USD \r\n ? security.cusip || security.isin\r\n : security.isin || security.cusip;\r\n}\r\n","export enum SecurityIdentifierType {\r\n // Rule 144a\r\n Ticker144a = 1,\r\n ISIN144a = 2,\r\n CUSIP144a = 3,\r\n // Reg S\r\n TickerRegS = 4,\r\n ISINRegS = 5,\r\n CUSIPRegS = 6,\r\n // Acc’d Investor / Certif.\r\n TickerAccd = 7,\r\n ISINAccd = 8,\r\n CUSIPAccd = 9,\r\n}","export enum TradingLimitType {\r\n SellMaxBondSize = 1,\r\n SellMaxDailyTradesSize = 2,\r\n BuyMaxBondSize = 3,\r\n BuyMaxDailyTradesSize = 4\r\n}\r\n","export enum BankOptionalFields {\r\n Cmta = 'cmta',\r\n Euroclear = 'euroclear',\r\n LtId = 'ltId',\r\n InterestedPartyId = 'interestedPartyId',\r\n InterestedPartyCustodian = 'interestedPartyCustodian',\r\n GovAbaNumber = 'govAbaNumber',\r\n GovBankAccountNumber = 'govBankAccountNumber',\r\n MortgageAbaNumber = 'mortgageAbaNumber',\r\n MortgageBankAccountNumber = 'mortgageBankAccountNumber',\r\n}\r\n\r\nexport const bankOptionalFieldsLabel = {\r\n [BankOptionalFields.Cmta]: {\r\n option: 'CMTA', label: 'CMTA'\r\n },\r\n [BankOptionalFields.Euroclear]: {\r\n option: 'Euroclear', label: 'Euroclear'\r\n },\r\n [BankOptionalFields.LtId]: {\r\n option: 'LTID', label: 'LTID'\r\n },\r\n [BankOptionalFields.InterestedPartyId]: {\r\n option: 'Interested Party ID', label: 'Intst Party ID'\r\n },\r\n [BankOptionalFields.InterestedPartyCustodian]: {\r\n option: 'Interested Party Custodian', label: 'Intst Party Custodian'\r\n },\r\n [BankOptionalFields.GovAbaNumber]: {\r\n option: 'Gov ABA Number', label: 'Gov ABA #'\r\n },\r\n [BankOptionalFields.GovBankAccountNumber]: {\r\n option: 'Gov Bank Account Number', label: 'Gov Bank Acc #'\r\n },\r\n [BankOptionalFields.MortgageAbaNumber]: {\r\n option: 'Mortgage ABA Number', label: 'Mortgage ABA #'\r\n },\r\n [BankOptionalFields.MortgageBankAccountNumber]: {\r\n option: 'Mortgage Bank Account Number', label: 'Mortgage Bank Acc #',\r\n },\r\n}\r\n\r\nexport const bankOptionalFieldMaxLength = {\r\n [BankOptionalFields.Cmta]: 4,\r\n [BankOptionalFields.Euroclear]: 6,\r\n [BankOptionalFields.LtId]: 40,\r\n [BankOptionalFields.InterestedPartyId]: 5,\r\n [BankOptionalFields.InterestedPartyCustodian]: 12,\r\n [BankOptionalFields.GovAbaNumber]: 9,\r\n [BankOptionalFields.GovBankAccountNumber]: 17,\r\n [BankOptionalFields.MortgageAbaNumber]: 9,\r\n [BankOptionalFields.MortgageBankAccountNumber]: 17,\r\n}\r\n","export enum TradeSettlementStatus {\r\n Unsettled = 1, // trade is Rejected/Pending\r\n PendingAllocation = 2, // awaiting for manual allocation\r\n PendingProceeds = 3,\r\n PendingSettlement = 4, // allocated(auto/manually) trades, pending settlement dateTime\r\n Settled = 5\r\n}\r\n\r\nexport const tradeSettlementStatusTitle = {\r\n [TradeSettlementStatus.Unsettled]: 'Unsettled',\r\n [TradeSettlementStatus.PendingAllocation]: 'Pending Allocation',\r\n [TradeSettlementStatus.PendingProceeds]: 'Pending Proceeds',\r\n [TradeSettlementStatus.PendingSettlement]: 'Pending Settlement',\r\n [TradeSettlementStatus.Settled]: 'Settled',\r\n}\r\n","import moment from 'moment/moment';\r\nimport { collateralTypes } from \"../../constants/collateral-types\";\r\nimport { dateRangeFilterOptions } from \"../../constants/date-range.filter\";\r\nimport { CollateralType } from \"../amr-pipeline/enums/CollateralType\";\r\nimport { BwicSearchResult } from \"../bwic-monitor/BwicSearchResult\";\r\nimport { Currencies, Currency } from \"../enums/Currency\";\r\nimport { Rating, Ratings } from \"../enums/Rating\";\r\nimport { FilterBooleanGroup, FilterDateGroup, FilterRangeGroup, FilterSelectGroup, FilterType } from '../filters/FilterGroup';\r\nimport { SubscriptionFeature } from '../billing/SubscriptionFeature';\r\nimport { user } from '../../user';\r\nimport { BwicStatus } from '../enums/BwicStatus';\r\nimport { BwicSearchResultSummary } from '../bwic-monitor/BwicSearchResultSummary';\r\nimport { RequestState } from '../../constants/request-state';\r\nimport { ColorFilterType } from '../bwic/Color';\r\n\r\nexport interface AllBwicsState {\r\n bwics?: BwicSearchResult[];\r\n myBwicsOnly: boolean;\r\n isAllToAll: boolean;\r\n activeBwicReferenceName?: string;\r\n totalRecordNumber: number;\r\n filterChanged: boolean;\r\n filterApplied: boolean;\r\n searchInProgress: RequestState;\r\n isNextPageRequesting: boolean;\r\n isRequestingExportBwics: boolean;\r\n sortBy: BwicMonitorSortByOptions;\r\n advancedFilterBlocked: boolean;\r\n summary?: BwicSearchResultSummary;\r\n}\r\n\r\nconst color: FilterSelectGroup = {\r\n key: 'color',\r\n groupKey: 'color',\r\n type: FilterType.Select,\r\n visible: false,\r\n text: 'Color',\r\n disabled: false,\r\n selected: false,\r\n isApplied: true,\r\n filter: [{\r\n value: ColorFilterType.None,\r\n text: 'None',\r\n selected: false,\r\n visible: true,\r\n disabled: false\r\n }, {\r\n value: ColorFilterType.DNT,\r\n text: 'DNT',\r\n selected: false,\r\n visible: true,\r\n disabled: false\r\n\r\n }, {\r\n value: ColorFilterType.Traded,\r\n text: 'Traded',\r\n selected: false,\r\n visible: true,\r\n disabled: false\r\n\r\n }, {\r\n value: ColorFilterType.TradedColor,\r\n text: 'Traded Color',\r\n selected: false,\r\n visible: false,\r\n disabled: false\r\n }]\r\n}\r\n\r\nconst tradedColor: FilterRangeGroup = {\r\n key: 'tradedColor',\r\n groupKey: 'color',\r\n type: FilterType.Range,\r\n visible: false,\r\n text: 'Color',\r\n disabled: false,\r\n selected: false,\r\n isApplied: true,\r\n decimals: 2,\r\n filter: { from: '', to: '', minValue: '0.00', maxValue: '200.00' },\r\n}\r\n\r\nconst getDateFilter = (): FilterDateGroup => ({\r\n key: 'date',\r\n type: FilterType.Date,\r\n visible: true,\r\n text: 'Date',\r\n disabled: false,\r\n selected: false,\r\n isApplied: true,\r\n filter: user.hasFeatures(SubscriptionFeature.BwicMonitorHistoricalData) ? {\r\n selectedOption: { ...dateRangeFilterOptions.All, default: true },\r\n options: { customDateRange: { from: null, to: null } },\r\n } : {\r\n selectedOption: { ...dateRangeFilterOptions.TodayAndUpcoming, default: true },\r\n options: { customDateRange: { from: moment().toDate(), to: null } },\r\n },\r\n acceptableOptions: dateRangeFilterOptions.bwicMonitor(),\r\n requiredFeature: SubscriptionFeature.BwicMonitorHistoricalData\r\n})\r\n\r\nconst dateSellBuy: FilterDateGroup = {\r\n key: 'date',\r\n type: FilterType.Date,\r\n visible: true,\r\n text: 'Date',\r\n disabled: false,\r\n selected: false,\r\n isApplied: true,\r\n filter: {\r\n selectedOption: { ...dateRangeFilterOptions.All, default: true },\r\n options: {\r\n customDateRange: { from: null, to: null },\r\n },\r\n },\r\n acceptableOptions: dateRangeFilterOptions.bwicMonitorSellBuy(),\r\n requiredFeature: SubscriptionFeature.BwicMonitorHistoricalData\r\n}\r\n\r\nconst size: FilterRangeGroup = {\r\n key: 'size',\r\n type: FilterType.Range,\r\n visible: true,\r\n text: 'Size (MM)',\r\n disabled: false,\r\n selected: false,\r\n isApplied: true,\r\n decimals: 3,\r\n filter: { from: '', to: '', minValue: '0.000', maxValue: '999.999' },\r\n};\r\nconst statuses: FilterSelectGroup = {\r\n key: 'statuses',\r\n type: FilterType.Select,\r\n visible: true,\r\n text: 'Status',\r\n disabled: false,\r\n selected: false,\r\n isApplied: true,\r\n filter: [{\r\n value: BwicStatus.scheduled,\r\n text: 'Scheduled',\r\n selected: false,\r\n visible: true,\r\n disabled: false\r\n }, {\r\n value: BwicStatus.bidding,\r\n text: 'Bidding',\r\n selected: false,\r\n visible: true,\r\n disabled: false\r\n }, {\r\n value: BwicStatus.finished,\r\n text: 'Finished',\r\n selected: false,\r\n visible: true,\r\n disabled: false\r\n }, {\r\n value: BwicStatus.canceled,\r\n text: 'Canceled',\r\n selected: false,\r\n visible: true,\r\n disabled: false\r\n }\r\n ]\r\n};\r\nconst collateralType: FilterSelectGroup = {\r\n key: 'collateralType',\r\n type: FilterType.Select,\r\n visible: true,\r\n text: 'Collat.',\r\n disabled: false,\r\n selected: false,\r\n isApplied: true,\r\n filter: [\r\n {\r\n value: CollateralType.broadlySyndicated,\r\n text: collateralTypes.BroadlySyndicated,\r\n selected: false,\r\n disabled: false,\r\n visible: true,\r\n },\r\n {\r\n value: CollateralType.middleMarket,\r\n text: collateralTypes.MiddleMarket,\r\n selected: false,\r\n disabled: false,\r\n visible: true,\r\n },\r\n ],\r\n};\r\nconst currency: FilterSelectGroup = {\r\n key: 'currency',\r\n type: FilterType.Select,\r\n visible: true,\r\n text: 'Ccy',\r\n disabled: false,\r\n selected: false,\r\n isApplied: true,\r\n filter: Currencies.map(v => ({\r\n value: v,\r\n text: v,\r\n selected: false,\r\n disabled: false,\r\n visible: true,\r\n }))\r\n};\r\nconst managers: FilterSelectGroup = {\r\n key: 'managers',\r\n withSearch: true,\r\n type: FilterType.Select,\r\n visible: true,\r\n text: 'Manager',\r\n disabled: false,\r\n selected: false,\r\n isApplied: true,\r\n filter: [],\r\n};\r\nconst ratings: FilterSelectGroup = {\r\n key: 'ratings',\r\n type: FilterType.Select,\r\n visible: true,\r\n isApplied: true,\r\n disabled: false,\r\n selected: false,\r\n text: 'Rtg',\r\n filter: Ratings.map(v => ({\r\n value: v,\r\n text: v,\r\n selected: false,\r\n disabled: false,\r\n visible: true,\r\n }))\r\n};\r\nconst esg: FilterBooleanGroup = {\r\n key: 'esg',\r\n type: FilterType.BooleanRadio,\r\n visible: false,\r\n text: 'ESG',\r\n disabled: false,\r\n selected: false,\r\n isApplied: true,\r\n filter: {\r\n selectedOption: null,\r\n }\r\n};\r\nconst euCompliance: FilterBooleanGroup = {\r\n key: 'euCompliance',\r\n type: FilterType.BooleanRadio,\r\n visible: false,\r\n text: 'EU Compliance',\r\n disabled: false,\r\n selected: false,\r\n isApplied: true,\r\n filter: {\r\n selectedOption: null,\r\n },\r\n};\r\nconst staticDeal: FilterBooleanGroup = {\r\n key: 'staticDeal',\r\n type: FilterType.BooleanRadio,\r\n visible: false,\r\n text: 'Static Deal',\r\n disabled: false,\r\n selected: false,\r\n isApplied: true,\r\n filter: {\r\n selectedOption: null,\r\n },\r\n};\r\nconst nonCallEnd: FilterDateGroup = {\r\n key: 'nonCallEnd',\r\n type: FilterType.DateWithYearsRange,\r\n visible: false,\r\n text: 'NC End',\r\n disabled: false,\r\n selected: false,\r\n isApplied: true,\r\n filter: {\r\n selectedOption: undefined,\r\n options: {\r\n customYearsRange: { from: '', to: '' },\r\n customDateRange: { from: null, to: null },\r\n },\r\n },\r\n acceptableOptions: dateRangeFilterOptions.nonCallEnd(),\r\n};\r\nconst reinvestmentEnd: FilterDateGroup = {\r\n key: 'reinvestmentEnd',\r\n type: FilterType.DateWithYearsRange,\r\n visible: false,\r\n text: 'RI End',\r\n disabled: false,\r\n selected: false,\r\n isApplied: true,\r\n filter: {\r\n selectedOption: undefined,\r\n options: {\r\n customYearsRange: { from: '', to: '' },\r\n customDateRange: { from: null, to: null },\r\n },\r\n },\r\n acceptableOptions: dateRangeFilterOptions.reinvestmentEnd(),\r\n};\r\nconst outOfNC: FilterBooleanGroup = {\r\n key: 'outOfNC',\r\n type: FilterType.BooleanRadio,\r\n visible: false,\r\n text: 'Out of NC',\r\n disabled: false,\r\n selected: false,\r\n isApplied: true,\r\n filter: {\r\n selectedOption: null,\r\n },\r\n}\r\nconst outOfRI: FilterBooleanGroup = {\r\n key: 'outOfRI',\r\n type: FilterType.BooleanRadio,\r\n visible: false,\r\n text: 'Out of Rl',\r\n disabled: false,\r\n selected: false,\r\n isApplied: true,\r\n filter: {\r\n selectedOption: null,\r\n },\r\n}\r\n\r\nconst maturity: FilterDateGroup = {\r\n key: 'maturity',\r\n type: FilterType.Date,\r\n visible: false,\r\n text: 'Maturity',\r\n disabled: false,\r\n selected: false,\r\n isApplied: true,\r\n filter: {\r\n selectedOption: undefined,\r\n options: {\r\n customDateRange: { from: null, to: null },\r\n },\r\n },\r\n acceptableOptions: dateRangeFilterOptions.maturity(),\r\n disabledDays: { before: moment().add(1, 'day').toDate() },\r\n};\r\n\r\nconst vintage: FilterDateGroup = {\r\n key: 'vintage',\r\n type: FilterType.YearsDate,\r\n visible: false,\r\n text: 'Vintage',\r\n disabled: false,\r\n selected: false,\r\n isApplied: true,\r\n filter: {\r\n selectedOption: undefined,\r\n options: {\r\n customDateRange: { from: null, to: null },\r\n },\r\n },\r\n acceptableOptions: dateRangeFilterOptions.vintage(),\r\n}\r\nconst closing: FilterDateGroup = {\r\n key: 'closing',\r\n type: FilterType.Date,\r\n visible: false,\r\n text: 'Closing',\r\n disabled: false,\r\n selected: false,\r\n isApplied: true,\r\n filter: {\r\n selectedOption: undefined,\r\n options: {\r\n customDateRange: { from: null, to: null },\r\n },\r\n },\r\n acceptableOptions: dateRangeFilterOptions.closing(),\r\n disabledDays: { after: moment().subtract(1, 'day').toDate() },\r\n}\r\n\r\nconst trustees: FilterSelectGroup = {\r\n withSearch: true,\r\n type: FilterType.Select,\r\n visible: false,\r\n text: 'Trustee',\r\n disabled: false,\r\n selected: false,\r\n isApplied: true,\r\n filter: [],\r\n key: 'trustees',\r\n}\r\nconst amr: FilterBooleanGroup = {\r\n key: 'amr',\r\n type: FilterType.BooleanRadio,\r\n visible: false,\r\n text: 'Deal with AMR',\r\n disabled: false,\r\n selected: false,\r\n isApplied: true,\r\n filter: {\r\n selectedOption: null,\r\n },\r\n}\r\n\r\nexport const bwicMonitorFilters = {\r\n visibleFilters: ['date', 'size', 'statuses', 'collateralType', 'currency', 'managers', 'ratings'],\r\n additionalFilters: ['esg', 'maturity', 'vintage', 'closing', 'trustees', 'amr', 'euCompliance', 'staticDeal', 'nonCallEnd', 'reinvestmentEnd', 'outOfNC', 'outOfRI', 'color', 'tradedColor'],\r\n defaultFilters: () => ({\r\n date: getDateFilter(), size, statuses, collateralType, currency, managers, ratings, esg,\r\n euCompliance, staticDeal, nonCallEnd, reinvestmentEnd, maturity, vintage, closing, trustees, amr, outOfNC, outOfRI, color, tradedColor\r\n })\r\n};\r\nexport const bwicMonitorBuyFilters = {\r\n visibleFilters: ['date', 'size', 'statuses', 'currency', 'ratings'],\r\n additionalFilters: [],\r\n defaultFilters: { date: dateSellBuy, size, statuses, currency, ratings }\r\n};\r\nexport const bwicMonitorSellFilters = {\r\n visibleFilters: ['date', 'size', 'statuses', 'currency', 'ratings'],\r\n additionalFilters: [],\r\n defaultFilters: { date: dateSellBuy, size, statuses, currency, ratings }\r\n};\r\n\r\nexport enum BwicMonitorSortByOptions {\r\n NewestFirst = 'Newest-First',\r\n OldestFirst = 'Oldest-First',\r\n}\r\n\r\nexport const bwicMonitorSortByOptionsText = {\r\n [BwicMonitorSortByOptions.NewestFirst]: 'Newest first',\r\n [BwicMonitorSortByOptions.OldestFirst]: 'Oldest first',\r\n\r\n}\r\n\r\nexport const bwicMonitorSortByApiValues = {\r\n [BwicMonitorSortByOptions.NewestFirst]: { field: undefined, direction: 'DESC' },\r\n [BwicMonitorSortByOptions.OldestFirst]: { field: undefined, direction: 'ASC' },\r\n}\r\n","import { BidOnBehalfConflict } from \"../bid-on-behalf/BidOnBehalfConflict\";\r\nimport { CompanySlim } from \"../company/CompanySlim\";\r\n\r\nexport interface BidOnBehalfState {\r\n isRequesting: boolean\r\n isSubmitting: boolean\r\n companies: CompanySlim[]\r\n editState: {\r\n // key: positionId-companyId\r\n [key: string]: EditBidOnBehalfState\r\n }\r\n conflicts: BidOnBehalfConflict[]\r\n isConflictsPpopupVisible: boolean\r\n focusedBid?: { companyId: number, positionId: number }\r\n}\r\n\r\nexport const getEditKey = (positionId: number, companyId: number) => `${positionId}-${companyId}`;\r\nexport const parseKey = (key: string) => {\r\n const [positionId, companyId] = key.split('-');\r\n return {\r\n positionId: +positionId,\r\n companyId: +companyId\r\n };\r\n}\r\n\r\nexport interface BulkSaveBidOnBehalfDataItem {\r\n ticker?: string;\r\n selectBd: number;\r\n [companyCode: string]: number | string | undefined;\r\n}\r\n\r\nexport interface EditBidOnBehalfState {\r\n value?: string\r\n axed?: boolean\r\n pass?: boolean\r\n final?: boolean\r\n error?: string\r\n editing?: boolean\r\n}\r\n\r\nexport interface BidOnBehalfParseResultItem {\r\n ticker?: string;\r\n [companyCode: string]: string | undefined;\r\n}\r\n\r\n","import { Bwic } from \"../bwic/Bwic\";\r\nimport { BrokerDealerCompanySlim } from '../company/BrokerDealerCompanySlim';\r\nimport { UserSlim } from '../account/UserSlim';\r\nimport { Contact } from '../company/Contact';\r\nimport { RequestState } from \"../../constants/request-state\";\r\n\r\nexport enum BwicVisitorType {\r\n Seller = 'Seller',\r\n Buyer = 'Buyer',\r\n OtherSeller = 'OtherSeller',\r\n BrokerDealer = 'BrokerDealer',\r\n Admin = 'Admin',\r\n}\r\n\r\nexport interface BiddingState {\r\n bwic: Bwic;\r\n bwicDealers: BrokerDealerCompanySlim[];\r\n bwicDealerUsers: UserSlim[];\r\n bwicDealerContacts: Contact[];\r\n participantsLoadingState: RequestState;\r\n isLoading: boolean;\r\n}\r\n","import { TimeSpan } from \"../primitives/TimeSpan\";\r\n\r\nexport type BlastMessageRecipientsState = {\r\n [companyIndentifier: string]: boolean;\r\n}\r\n\r\nexport enum BlastMessageRecipientLevelState {\r\n Top3 = \"Top3\",\r\n Top5 = \"Top5\",\r\n All = \"All\"\r\n}\r\n\r\nexport interface BlastMessageState {\r\n panelVisible: boolean;\r\n messageType: number;\r\n recipientLevel?: BlastMessageRecipientLevelState;\r\n recipients: BlastMessageRecipientsState;\r\n isSending: boolean;\r\n isSelectAllRecipients: boolean;\r\n stage1AboutToEndTimeout?: TimeSpan;\r\n error?: string\r\n}\r\n\r\nexport enum BlastMessageTypes {\r\n submitFinal = 1,\r\n bidOrPass = 2,\r\n stage1AboutToEndTimeout = 3\r\n};\r\n","import { RequestState } from '../../constants/request-state';\r\nimport { ApiError } from '../ApiError';\r\nimport { Bid } from '../bidding/Bid';\r\nimport { BidConflict } from '../bidding/BidConflict';\r\nimport { BwicPosition } from '../bwic/BwicPosition';\r\nimport { OpenBiddingStatus } from '../enums/OpenBiddingStatus';\r\n\r\nexport interface BidConfirmationState {\r\n bid: EditBidState;\r\n currentBid?: Bid;\r\n}\r\n\r\nexport interface BidsConfirmationState {\r\n [positionId: number]: BidConfirmationState;\r\n}\r\n\r\nexport interface SubmitResultState {\r\n requestState: RequestState;\r\n isBidOverThemself?: boolean;\r\n stageTransitionConflict?: {\r\n stagedBiddingStatus?: OpenBiddingStatus;\r\n canBidOnStage2?: boolean;\r\n };\r\n conflict?: BidConflict;\r\n validationError?: ApiError;\r\n isLoggedOut?: boolean;\r\n}\r\n\r\nexport interface SubmitBidConfurmationState {\r\n securities?: number[]; // Array of positionId\r\n submitBidsConfirmationVisible: boolean;\r\n submitInProgress: boolean;\r\n submitInProgressPositionId?: number;\r\n submitResult: { [positionId: number]: SubmitResultState };\r\n}\r\n\r\nexport interface BidError {\r\n bid?: string;\r\n}\r\n\r\nexport interface EditBidState {\r\n value?: string;\r\n axed?: boolean;\r\n final?: boolean;\r\n pass?: boolean;\r\n canSubmit?: boolean;\r\n errors?: BidError;\r\n commission?: string;\r\n commissionError?: string;\r\n}\r\n\r\nexport enum BrokerDealerAccessState {\r\n NotInvited = 1,\r\n AccessRequested = 2,\r\n Approved = 3,\r\n Rejected = 4\r\n}\r\n\r\nexport interface BrokerDealerBiddingState {\r\n accessState: BrokerDealerAccessState;\r\n securities: BwicPosition[];\r\n editBid: {\r\n [positionId: number]: EditBidState;\r\n }\r\n submitBidsConfirmation: SubmitBidConfurmationState;\r\n}\r\n","import { AnyAction } from 'redux';\r\nimport { LookupDataItem } from '../../components/grid/Cells/Lookup2';\r\nimport { OrderByDirection } from '../OrderByDirection';\r\nimport { AppState } from './AppState';\r\n\r\nexport interface GridState {\r\n searchTerm: string;\r\n lastAppliedSearchTerm: string;\r\n orderBy: GridOrderBy;\r\n headers: GridColumn[];\r\n dataItems: GridDataItem[];\r\n selection: number[];\r\n upload: { status: string; progress: number, filename: string, global: boolean };\r\n isDataProcessing: boolean;\r\n inputBlocked: boolean;\r\n mountedKey: number;\r\n isValid: boolean;\r\n rowsLimit: number;\r\n position?: GridCurrentPosition;\r\n}\r\n\r\nexport interface GridOrderBy {\r\n columnName?: string;\r\n direction: OrderByDirection;\r\n}\r\n\r\nexport interface GridCurrentPosition {\r\n index: number;\r\n columnName?: string;\r\n editing: boolean;\r\n editingValue: string;\r\n editingError?: string;\r\n}\r\n\r\nexport type GridDataItem = T & {\r\n isNew?: boolean;\r\n isUpdate?: boolean;\r\n isFlagged?: boolean;\r\n draft?: boolean;\r\n readonly?: boolean;\r\n errors?: { columnName: string; message: string; isDuplicated: boolean; }[];\r\n};\r\n\r\n\r\nexport interface ILookup {\r\n fetchCallback?: (searchTerm: string, requestCancelationSignal: AbortSignal) => LookupDataItem[];\r\n compareCallback: (searchTerm: string, lookupDataItem: LookupDataItem) => boolean;\r\n selector?: (s: AppState) => LookupDataItem[];\r\n onLookupItemSelected: (item: LookupDataItem) => void;\r\n}\r\n\r\nexport interface GridItemUploadedFile {\r\n size?: number;\r\n referenceName?: string;\r\n name: string\r\n}\r\n\r\nexport interface GridColumn {\r\n name: string;\r\n title: string;\r\n titleForError?: string;\r\n headerError?: string;\r\n validateHeader?: (nonDraftDataItems: GridDataItem) => string | undefined; // returns error message that would be shown in the column header or undefined if valid\r\n renderTitle?: () => React.ReactNode;\r\n type?: 'number' | 'integer' | 'money' | 'longText' | 'select' | 'lookup' | 'file';\r\n className?: string;\r\n min?: number;\r\n max?: number;\r\n length?: number;\r\n required: boolean;\r\n readonly?: boolean;\r\n initialValue?: string;\r\n unique?: boolean;\r\n disabledSort?: boolean;\r\n cancelOnLeave?: boolean;\r\n mask?: RegExp[];\r\n pattern?: RegExp;\r\n keepEmptyOption?: boolean; // Allows to reset 'Select' cell\r\n canRemove?: boolean;\r\n file?: {\r\n maxSize: number,\r\n acceptedTypes: string;\r\n };\r\n format?: (value: any) => string;\r\n validate?: (value: any, dataItem: GridDataItem, dataItems: GridDataItem[]) => string; // returns error message or empty string if valie\r\n readonlyCallback?: (dataItem: GridDataItem) => boolean;\r\n selectSourceItemsCallback?: () => { key: string | number, title: string }[] | string[]; // used when type=\"select\"\r\n updateDependencyColumnsCallback?: (rowIndex: number) => AnyAction;\r\n lookup?: ILookup;\r\n}\r\n\r\nexport enum GridUploadStatus {\r\n None = 'none',\r\n Ready = 'ready',\r\n Uploading = 'uploading',\r\n UploadingSingle = 'uploadingSingle'\r\n};\r\n","import { RequestState } from '../../constants/request-state';\r\nimport { Bank } from '../banks/Bank';\r\nimport { CloManager } from '../clo-managers/CloManager';\r\nimport { ArrangerPipelineEmailPreferences } from '../email-preferences/ArrangerPipelineEmailPreferences';\r\nimport { BanksEmailPreferences } from '../email-preferences/BanksEmailPreferences';\r\nimport { CloManagersEmailPreferences } from '../email-preferences/CloManagersEmailPreferences';\r\nimport { AlertOption, EmailPreferences } from '../email-preferences/EmailPreferences';\r\nimport { IssuanceMonitorEmailPreferences } from '../email-preferences/IssuanceMonitorEmailPreferences';\r\n\r\nexport interface SavedFiltersPreferencesState {\r\n [filterReferenceName: string]: AlertOption;\r\n}\r\n\r\nexport interface PortfolioSavedFilterAlertsState {\r\n [filterReferenceName: string]: {\r\n bwicAlert: AlertOption | null;\r\n inventoryAlert: AlertOption | null;\r\n };\r\n}\r\n\r\nexport enum PortfolioAlertsRowType {\r\n AllSecurities,\r\n SavedFiltersHeader,\r\n SavedFilter\r\n}\r\n\r\nexport interface ManageEmailPreferencesState {\r\n initialPreferences: EmailPreferences;\r\n editPreferences: EmailPreferences;\r\n editSavedFiltersPreferences: SavedFiltersPreferencesState;\r\n portfolioSavedFilterAlerts: PortfolioSavedFilterAlertsState;\r\n requestStateSaveEditPreferences: RequestState;\r\n initialIssuanceMonitorPreferences?: IssuanceMonitorEmailPreferences;\r\n editIssuanceMonitorPreferences?: IssuanceMonitorEmailPreferences;\r\n initialCloManagersPreferences?: CloManagersEmailPreferences;\r\n editCloManagersPreferences?: CloManagersEmailPreferences;\r\n initialBanksPreferences?: BanksEmailPreferences;\r\n editBanksPreferences?: BanksEmailPreferences;\r\n initialArrangerPipelinePreferences?: ArrangerPipelineEmailPreferences;\r\n editArrangerPipelinePreferences?: ArrangerPipelineEmailPreferences;\r\n mangers?: CloManager[];\r\n banks?: Bank[];\r\n requestStateGetPreferences: RequestState;\r\n requestStateSaveIssuanceMonitorPreferences: RequestState;\r\n requestStateSaveBwicByRating: RequestState;\r\n}\r\n","import { PushNotificationServiceStatus } from '../../constants';\r\nimport { Notification } from '../notifications/Notification';\r\nimport { ModalNotification } from '../notifications/ModalNotification';\r\nimport { NotificationAttributes } from '../notifications/NotificationAttributes';\r\nimport { RequestState } from '../../constants/request-state';\r\n\r\nexport enum StatusMessageSectionType {\r\n Info,\r\n Error,\r\n Alert,\r\n Success\r\n}\r\n\r\nexport interface NotificationState {\r\n connectionStatus: PushNotificationServiceStatus;\r\n notificationList: Notification[];\r\n notificationAttributes: NotificationAttributes;\r\n modalNotificationList: ModalNotification[];\r\n requestStateGetNotificationList: RequestState;\r\n countUnreadNotifications: number;\r\n hasMoreNotifications: boolean;\r\n requestStateGetCountUnread: RequestState;\r\n requestStateReadAll: RequestState;\r\n}\r\n","export enum PushHistoryStateItemType {\r\n NewBid = 'NewBid',\r\n Feedback = 'Feedback',\r\n BwicStatusChanged = 'BwicStatusChanged',\r\n BwicStage1Ended = 'BwicStage1Ended',\r\n BwicStage2Ended = 'BwicStage2Ended',\r\n BiddingCompleteReminder='BiddingCompleteReminder'\r\n}\r\n\r\nexport interface PushHistoryStateItem {\r\n bwicReferenceName: string;\r\n positionId?: number;\r\n receivedDate: Date;\r\n payload?: any;\r\n}\r\n\r\nexport interface PushHistoryState {\r\n history: {\r\n [key in PushHistoryStateItemType]?: PushHistoryStateItem[];\r\n }\r\n}\r\n","import { PaymentCard } from \"../billing/PaymentCard\";\r\nimport { BillingContact } from '../billing/BillingContact';\r\nimport { Country } from \"../location/Country\";\r\nimport { State } from \"../location/State\";\r\nimport { City } from \"../location/City\";\r\nimport { SubscriptionType } from \"../billing/SubscriptionType\";\r\nimport { RequestState } from '../../constants/request-state';\r\nimport { BillingHistory } from '../billing/BillingHistory';\r\nimport { FilterOption } from '../filters/FilterOption';\r\n\r\nexport interface SubscriptionBillingHistoryFilterState {\r\n period: FilterOption[];\r\n status: FilterOption[];\r\n}\r\n\r\nexport enum UpgradeSubscriptionStep {\r\n BillingContact = 1,\r\n PaymentMethod = 2,\r\n Summary = 3\r\n}\r\n\r\nexport interface SubscriptionBillingHistoryState {\r\n fetchHistoryRequestState: RequestState;\r\n initialFilter: SubscriptionBillingHistoryFilterState;\r\n filter: SubscriptionBillingHistoryFilterState;\r\n appliedFilter: SubscriptionBillingHistoryFilterState;\r\n history: BillingHistory[];\r\n}\r\n\r\nexport interface SubscriptionsState {\r\n isLoading: boolean\r\n isPaymentCardSaving: boolean\r\n paymentCards: PaymentCard[]\r\n addPaymentCardPopupVisible: boolean\r\n billingContact?: BillingContact\r\n isBillingContactEdit: boolean\r\n isBillingContactSaving: boolean\r\n countries: Country[]\r\n states: State[]\r\n cities: City[]\r\n isCitiesLoading: boolean\r\n upgradeSubscriptionWizard: {\r\n isUpgradeSubscriptionPopupVisible: boolean\r\n activeStep: UpgradeSubscriptionStep\r\n targetSubscriptionType?: SubscriptionType\r\n }\r\n billingHistory: SubscriptionBillingHistoryState\r\n}\r\n","import { DealDocuments } from \"../document/DealDocuments\"\r\n\r\nexport interface UploadDocumentsState {\r\n isInitialized: boolean\r\n isUploading: boolean\r\n deletingDocuments: { [documentId: string]: boolean }\r\n deals: DealDocuments[]\r\n uploadingDocuments: UploadingDealDocumentState[]\r\n uploadAll: { // Upload multiple docs dialog\r\n visible: boolean\r\n deal?: DealDocuments\r\n }\r\n upload: { // single document upload dialog\r\n visible: boolean\r\n dealReferenceName?: string\r\n documentType?: DealDocumentTypeState\r\n documentId?: string // current document.id\r\n } \r\n uploadAndAssign: boolean\r\n}\r\n\r\nexport interface UploadingDealDocumentState {\r\n uid: string\r\n progress: number\r\n name: string // file nanme\r\n dealReferenceName: string\r\n documentType: DealDocumentTypeState\r\n currentDocumentId: string // current document.id\r\n}\r\n\r\nexport enum DealDocumentTypeState {\r\n OM = 'OfferingMemorandum',\r\n Indenture = 'Indenture',\r\n DistributionReport = 'DistributionReport',\r\n MonthlyReport = 'MonthlyReport',\r\n Other = 'Other'\r\n}","import { cloneDeep } from 'lodash';\r\n\r\nexport enum PanelType {\r\n Templates = 'Templates'\r\n}\r\ntype PanelLocationState = { type: PanelType; payload?: T };\r\n\r\nexport enum PopupType {\r\n TradeAllocationPopup = 'TradeAllocationPopup',\r\n TradeRejectReason = 'TradeRejectReason',\r\n SaveBidOnBehalf = 'SaveBidOnBehalf',\r\n SecurityUsage = 'SecurityUsage',\r\n WhatsNewPopup = 'WhatsNewPopup',\r\n}\r\ntype PopupLocationState = { type: PopupType; payload?: T };\r\n\r\nexport type LocationState = {\r\n panel?: PanelLocationState;\r\n popup?: PopupLocationState;\r\n};\r\n\r\n\r\nexport class LocationStateBuilder {\r\n _state: LocationState = {\r\n popup: undefined,\r\n panel: undefined\r\n }\r\n\r\n constructor(initial?: LocationState) {\r\n if (initial != null) {\r\n this._state = { ...initial };\r\n }\r\n }\r\n\r\n resetPopup() {\r\n this._state.popup = undefined;\r\n return this;\r\n }\r\n\r\n resetPanel() {\r\n this._state.panel = undefined;\r\n return this;\r\n }\r\n\r\n panel(type: PanelType, payload?: TPanelPayload) {\r\n this._state.panel = { type, payload };\r\n return this;\r\n }\r\n\r\n popup(type: PopupType, payload?: TPopupPayload) {\r\n this._state.popup = { type, payload };\r\n return this;\r\n };\r\n\r\n result() {\r\n return cloneDeep(this._state);\r\n }\r\n}\r\n","export enum TradeAllocationType {\r\n PercentOfTrade = 1,\r\n AmountOfTrade = 2,\r\n CreditRatings = 3\r\n}\r\n\r\nexport const tradeAllocationTypeTitle = {\r\n [TradeAllocationType.PercentOfTrade]: \"% of Trade\",\r\n [TradeAllocationType.AmountOfTrade]: \"Amount of Trade\",\r\n [TradeAllocationType.CreditRatings]: \"Credit Ratings\",\r\n}\r\n","export enum TradeSide {\r\n Buy = 'Buy',\r\n Sell = 'Sell'\r\n}\r\n","import { Trade } from \"./Trade\";\r\n\r\nexport enum TradeStatus {\r\n pending = 1,\r\n affirmed = 2,\r\n rejected = 3,\r\n canceled = 4,\r\n}\r\n\r\nexport function isActiveTrade(trade?: Trade) {\r\n return trade != null && (trade.status === TradeStatus.pending || trade.status === TradeStatus.affirmed);\r\n}\r\n","export enum TradeType {\r\n Desk = 1,\r\n Client = 2,\r\n Empty = 3\r\n}\r\n\r\nexport const tradeTypeTitle = {\r\n [TradeType.Desk]: 'Desk',\r\n [TradeType.Client]: 'Client',\r\n [TradeType.Empty]: '—'\r\n};\r\n","import { AlertOption } from \"../email-preferences/EmailPreferences\";\r\nimport { CollateralType } from \"../amr-pipeline/enums/CollateralType\";\r\nimport { Equity } from \"../amr-pipeline/enums/Equity\";\r\nimport { FloaterIndex } from \"../amr-pipeline/enums/FloaterIndex\";\r\nimport { TransactionStatus } from \"../amr-pipeline/enums/TransactionStatus\";\r\nimport { TransactionType } from \"../amr-pipeline/enums/TransactionType\";\r\nimport { Currency } from \"../enums/Currency\";\r\nimport { Rating } from \"../enums/Rating\";\r\nimport { TimeOption } from '../filters/TimeOption';\r\nimport { ColorFilterType } from \"../bwic/Color\";\r\n\r\nexport enum DateRangeOption {\r\n NextOneAndHalf = 'NextOneAndHalf',\r\n NextThreeAndHalf = 'NextThreeAndHalf',\r\n FromOneAndHalfToThreeAndHalf = 'FromOneAndHalfToThreeAndHalf',\r\n FromThreeAndHalfToFiveAndHalf = 'FromThreeAndHalfToFiveAndHalf',\r\n YearsRange = 'YearsRange',\r\n ThisWeek = 'ThisWeek',\r\n LastWeek = 'LastWeek',\r\n ThisMonth = 'ThisMonth',\r\n LastMonth = 'LastMonth',\r\n LastThreeMonth = 'LastThreeMonth',\r\n LastSixMonth = 'LastSixMonth',\r\n Custom = 'Custom',\r\n Today = 'Today',\r\n ThisYear = 'ThisYear',\r\n LastYear = 'LastYear',\r\n CurrentInventory = 'CurrentInventory',\r\n All = 'All',\r\n TodayAndUpcoming = 'TodayAndUpcoming',\r\n ThisWeekMondayToFriday = 'ThisWeekMondayToFriday',\r\n Yesterday = 'Yesterday',\r\n}\r\n\r\nexport enum DateTimeRangeOption {\r\n TodayWithTime = 'Today',\r\n DateWithTime = 'DateWithTime',\r\n DateWithTimePeriod = 'DateWithTimePeriod',\r\n}\r\n\r\ninterface DateWithTime {\r\n value: string;\r\n option: TimeOption;\r\n}\r\n\r\nexport interface UserConfigRangeFilter {\r\n from?: T;\r\n to?: T;\r\n}\r\n\r\nexport interface UserConfigDateFilter {\r\n value: UserConfigRangeFilter,\r\n name: DateRangeOption,\r\n}\r\n\r\nexport interface UserConfigDateTimeFilter {\r\n value: UserConfigRangeFilter\r\n name: DateTimeRangeOption,\r\n}\r\n\r\nexport interface UserFilterValues {\r\n date?: UserConfigDateFilter;\r\n size?: UserConfigRangeFilter;\r\n types?: TransactionType[];\r\n statuses?: (TransactionStatus | string)[];\r\n ratings?: Rating[];\r\n currency?: Currency[];\r\n dealerIds?: number[];\r\n outOfNC?: boolean;\r\n outOfRI?: boolean;\r\n dealName?: string[];\r\n classNames?: string[];\r\n trustees?: string[];\r\n collateralManagers?: string[];\r\n arrangers?: string[];\r\n currencyCodes?: Currency[];\r\n collateralTypes?: CollateralType[];\r\n pricingDate?: UserConfigDateFilter;\r\n closingDate?: UserConfigDateFilter;\r\n maturity?: UserConfigDateFilter;\r\n nonCallPeriodEnd?: UserConfigDateFilter;\r\n rollerDeadline?: UserConfigDateTimeFilter;\r\n reinvestmentPeriodEnd?: UserConfigDateFilter;\r\n nonCallPeriodEndDays?: UserConfigRangeFilter;\r\n reinvestmentPeriodEndDays?: UserConfigRangeFilter;\r\n was?: UserConfigRangeFilter;\r\n warf?: UserConfigRangeFilter;\r\n ds?: UserConfigRangeFilter;\r\n parSubordination?: UserConfigRangeFilter;\r\n mvoc?: UserConfigRangeFilter;\r\n amrDeal?: boolean;\r\n euCompliance?: boolean;\r\n esg?: boolean;\r\n sofr?: boolean;\r\n isDebut?: boolean;\r\n enhancedCLO?: boolean;\r\n staticDeal?: boolean;\r\n equity?: Equity[];\r\n anchor?: boolean;\r\n riEnd?: UserConfigRangeFilter;\r\n ncEnd?: UserConfigRangeFilter;\r\n vintage?: UserConfigDateFilter;\r\n coupons?: FloaterIndex[];\r\n color?: ColorFilterType[];\r\n tradedColor?: UserConfigRangeFilter;\r\n ratingAgencies?: string[];\r\n}\r\n\r\nexport interface UserConfigFilter {\r\n referenceName: string;\r\n name: string;\r\n default: boolean;\r\n filter: UserFilterValues;\r\n alertOption: AlertOption;\r\n}\r\n\r\nexport interface PortfolioUserConfigFilter extends UserConfigFilter {\r\n bwicAlertOption: AlertOption;\r\n dealerInventoryAlertOption: AlertOption;\r\n}\r\n\r\nexport interface UserFilterAlertStatus {\r\n referenceName: string;\r\n alertOption: AlertOption;\r\n}\r\n","export enum UserConfigType {\r\n imColumnsDealTab = 'ImColumnsDealTab',\r\n imColumnsClassTab = 'ImColumnsClassTab',\r\n imFilter = 'ImFilter',\r\n imAlert = 'ImAlert',\r\n apFilter = 'ApFilter',\r\n arrangerPipelineAlert = 'ArrangerPipelineAlert',\r\n transactionAlert = 'TransactionAlert',\r\n weeklyStatsEmail = 'WeeklyStatsEmail',\r\n newPublishedTransactionAlert = 'NewPublishedTransactionAlert',\r\n summaryDailyAlerts = 'SummaryDailyAlerts',\r\n cloManagerAnalyticsAlert = 'CloManagerAnalyticsAlert',\r\n cloManagerIssuanceMonitorAlert = 'CloManagerIssuanceMonitorAlert',\r\n cloManagerArrangerPipelineAlert = 'CloManagerArrangerPipelineAlert',\r\n cloManagerBwicAlert = 'CloManagerBwicAlert',\r\n cloManagerDealerInventoryAlert = 'CloManagerDealerInventoryAlert',\r\n bankAnalyticsAlert = 'BankAnalyticsAlert',\r\n bankIssuanceMonitorAlert = 'BankIssuanceMonitorAlert',\r\n bankArrangerPipelineAlert = 'BankArrangerPipelineAlert',\r\n bankDealerInventoryAlert = 'BankDealerInventoryAlert',\r\n}\r\n","import { SubscriptionFeature } from \"../../../types/billing/SubscriptionFeature\";\r\n\r\nexport const bwicMonitorFeatures: SubscriptionFeature[] = [\r\n SubscriptionFeature.exportAllBwics,\r\n SubscriptionFeature.BwicMonitorSecuritySearch,\r\n SubscriptionFeature.BwicMonitorSavedFilters,\r\n SubscriptionFeature.BwicMonitorAvancedFilters,\r\n SubscriptionFeature.BwicMonitorColumnCustomizer,\r\n SubscriptionFeature.BwicMonitorHistoricalData,\r\n SubscriptionFeature.BwicMonitorBwicsData,\r\n SubscriptionFeature.BwicMonitorSorting,\r\n SubscriptionFeature.BwicMonitorNavigation,\r\n SubscriptionFeature.BwicMonitorAlerts,\r\n SubscriptionFeature.ExportIndividualBwic,\r\n SubscriptionFeature.BwicMonitorCanViewSummaryRow\r\n]","import { SubscriptionFeature } from \"../../../types/billing/SubscriptionFeature\";\r\n\r\nexport const dashboardFeatures: SubscriptionFeature[] = [\r\n SubscriptionFeature.CanUseDashboardFilter,\r\n SubscriptionFeature.CanUseDashboardAlerts,\r\n SubscriptionFeature.getBidAsDealerRequests,\r\n SubscriptionFeature.getVantageData,\r\n SubscriptionFeature.getDtcSellingBuying,\r\n SubscriptionFeature.getBwicPercentOfTrace,\r\n SubscriptionFeature.getMedianTripleA,\r\n SubscriptionFeature.getDntRates,\r\n SubscriptionFeature.getSameDayBwics,\r\n SubscriptionFeature.getColorRates,\r\n SubscriptionFeature.getMostTradedTickers,\r\n SubscriptionFeature.getPriceTalkDeviation,\r\n SubscriptionFeature.getSecurityBwicStatistics,\r\n SubscriptionFeature.getPriceLevels,\r\n SubscriptionFeature.getTradingStats,\r\n SubscriptionFeature.getBiggestMovers,\r\n SubscriptionFeature.viewIncludedToPortfolioInventory,\r\n SubscriptionFeature.IssuanceSpreadsGraph,\r\n SubscriptionFeature.Top10ArrangersTable,\r\n SubscriptionFeature.EsgAsPercentOfBslNewIssueGraph,\r\n SubscriptionFeature.Top10TrusteesTable,\r\n SubscriptionFeature.EuCompliantAsPercentOfBslGraph,\r\n SubscriptionFeature.StaticDealsTable,\r\n SubscriptionFeature.ShortAndLongDatedDealsGraph,\r\n SubscriptionFeature.DebutManagersTable,\r\n SubscriptionFeature.UsBslNewIssueWasGraph,\r\n SubscriptionFeature.UsBslNewIssueWarfGraph,\r\n SubscriptionFeature.UsBslNewIssueDsGraph,\r\n SubscriptionFeature.CanUseIssueTransactionChartFilter,\r\n SubscriptionFeature.CanUseTopIssuersChartFilter\r\n];\r\n","import { SubscriptionFeature } from \"../../../types/billing/SubscriptionFeature\";\r\n\r\nexport const dealDocumentsFeatures: SubscriptionFeature[] = [\r\n SubscriptionFeature.CanAccessIndentureDealDocuments,\r\n SubscriptionFeature.CanAccessOMDealDocuments,\r\n SubscriptionFeature.CanAccessDistributionReportDealDocuments,\r\n SubscriptionFeature.CanAccessMonthlyReportDealDocuments,\r\n SubscriptionFeature.CanAccessOtherDealDocuments,\r\n SubscriptionFeature.CanAccessDealDocuments\r\n\r\n]\r\n","import { SubscriptionFeature } from \"../../../types/billing/SubscriptionFeature\";\r\n\r\nexport const dealerProfileFeatures: SubscriptionFeature[] = [\r\n SubscriptionFeature.DealerProfileBankContacts,\r\n SubscriptionFeature.DealerProfileBankEvents,\r\n SubscriptionFeature.DealerProfileEmailAlerts,\r\n SubscriptionFeature.DealerProfileBanksBWICsPxTalk,\r\n SubscriptionFeature.DealerProfileAnalytics,\r\n SubscriptionFeature.DealerProfileArrangerPipeline,\r\n SubscriptionFeature.DealerProfileDeals,\r\n SubscriptionFeature.DealerProfilePieCharts,\r\n SubscriptionFeature.DealerProfileStatistics,\r\n SubscriptionFeature.DealerProfileTransactionsCount,\r\n];\r\n","import { SubscriptionFeature } from \"../../../types/billing/SubscriptionFeature\";\r\n\r\nexport const integratonsFeatures: SubscriptionFeature[] = [\r\n SubscriptionFeature.IntegrationsBloomberg,\r\n SubscriptionFeature.IntegrationsIntex,\r\n SubscriptionFeature.IntegrationsValitana\r\n];\r\n","import { SubscriptionFeature } from \"../../../types/billing/SubscriptionFeature\";\r\n\r\nexport const inventoryFeatures: SubscriptionFeature[] = [\r\n SubscriptionFeature.ExportInventory,\r\n SubscriptionFeature.InventorySecuritySearch,\r\n SubscriptionFeature.InventorySavedFilters,\r\n SubscriptionFeature.InventoryAvancedFilters,\r\n SubscriptionFeature.InventoryColumnCustomizer,\r\n SubscriptionFeature.InventoryHistoricalData,\r\n SubscriptionFeature.InventoryNavigation,\r\n SubscriptionFeature.InventoryBwicColumn,\r\n SubscriptionFeature.InventoryAlerts,\r\n SubscriptionFeature.InventoryCanViewSummaryRow\r\n];","import { SubscriptionFeature } from \"../../../types/billing/SubscriptionFeature\";\r\n\r\nexport const issuanceMonitorFeatures: SubscriptionFeature[] = [\r\n SubscriptionFeature.IssuanceMonitorFullAccess,\r\n SubscriptionFeature.IssuanceMonitorStandardizedDetailsTabs,\r\n SubscriptionFeature.IssuanceMonitorMarketingHistory,\r\n SubscriptionFeature.IssuanceMonitorFiltersEmailAlerts,\r\n SubscriptionFeature.IssuanceMonitorColumnsCustomizer,\r\n SubscriptionFeature.IssuanceMonitorDealUpdateEmailAlerts,\r\n SubscriptionFeature.IssuanceMonitorHistoricalData,\r\n SubscriptionFeature.IssuanceMonitorArrangerPipeline,\r\n SubscriptionFeature.IssuanceMonitorWeeklyMarketRecap,\r\n SubscriptionFeature.IssuanceMonitorExport,\r\n SubscriptionFeature.IssuanceMonitorTransactionsEmailAlerts,\r\n];\r\n","import { SubscriptionFeature } from \"../../../types/billing/SubscriptionFeature\";\r\n\r\nexport const kWatchFeatures: SubscriptionFeature[] = [\r\n SubscriptionFeature.KWatchNews,\r\n SubscriptionFeature.KWatchNewsFullNewsDetails,\r\n SubscriptionFeature.KWatchNewsNewsAttachments\r\n];\r\n","import { SubscriptionFeature } from \"../../../types/billing/SubscriptionFeature\";\r\n\r\nexport const managerProfileFeatures: SubscriptionFeature[] = [\r\n SubscriptionFeature.ManagerProfilePresentations,\r\n SubscriptionFeature.ManagerProfileScheduleMeeting,\r\n SubscriptionFeature.ManagerProfileManagerRelatedAlerts,\r\n SubscriptionFeature.ManagerProfileWebinarVideo,\r\n SubscriptionFeature.ManagerProfileIssuanceSpreadsGraph,\r\n SubscriptionFeature.ManagerProfileDealsGraph,\r\n SubscriptionFeature.ManagerProfilePrimaryMarketData,\r\n SubscriptionFeature.ManagerProfileSecondaryMarketData,\r\n SubscriptionFeature.ManagerProfileContacts,\r\n SubscriptionFeature.ManagerProfileDeals,\r\n SubscriptionFeature.ManagerProfileAnalytics,\r\n];\r\n","import { SubscriptionFeature } from \"../../../types/billing/SubscriptionFeature\";\r\n\r\nexport const portfolioFeatures: SubscriptionFeature[] = [\r\n SubscriptionFeature.exportPortfolios,\r\n SubscriptionFeature.PortfolioSecuritySearch,\r\n SubscriptionFeature.PortfolioSavedFilters,\r\n SubscriptionFeature.PortfolioAvancedFilters,\r\n SubscriptionFeature.PortfolioColumnCustomizer,\r\n SubscriptionFeature.PortfolioPriceTalks,\r\n SubscriptionFeature.PortfolioAlerts,\r\n SubscriptionFeature.CanLookupTransactionFromPortfolio,\r\n SubscriptionFeature.CanLookupArrangersPipelineFromPortfolio\r\n];\r\n","import { SubscriptionFeature } from \"../../../types/billing/SubscriptionFeature\";\r\n\r\nexport const resourcesFeatures: SubscriptionFeature[] = [\r\n SubscriptionFeature.CloMarketTrands,\r\n SubscriptionFeature.HistoricalWebinars\r\n];\r\n","import { SubscriptionFeature } from \"../../../types/billing/SubscriptionFeature\";\r\n\r\nexport const dataEntryFeatures: SubscriptionFeature[] = [\r\n SubscriptionFeature.IssuanceMonitorFullAccess\r\n]","import { roles } from \"../../constants/roles\";\r\nimport { User } from \"../../types/account/User\";\r\nimport { AppProduct } from \"../../types/billing/AppProduct\";\r\nimport { SubscriptionFeature } from \"../../types/billing/SubscriptionFeature\";\r\nimport { bwicMonitorFeatures } from \"./by-product/bwic-monitor\";\r\nimport { dashboardFeatures } from \"./by-product/dashboard\";\r\nimport { dealDocumentsFeatures } from \"./by-product/deal-documents\";\r\nimport { dealerProfileFeatures } from \"./by-product/dealer-profile\";\r\nimport { integratonsFeatures } from \"./by-product/integrations\";\r\nimport { inventoryFeatures } from \"./by-product/inventory\";\r\nimport { issuanceMonitorFeatures } from './by-product/issuance-monitor';\r\nimport { kWatchFeatures } from './by-product/k-watch';\r\nimport { managerProfileFeatures } from \"./by-product/manager-profile\";\r\nimport { portfolioFeatures } from \"./by-product/portfolio\";\r\nimport { resourcesFeatures } from \"./by-product/resources\";\r\nimport { dataEntryFeatures } from \"./by-role/data-entry\";\r\n\r\nexport const featuresByProduct: { [key in AppProduct]?: SubscriptionFeature[] } = {\r\n [AppProduct.Dashboard]: dashboardFeatures,\r\n [AppProduct.Inventory]: inventoryFeatures,\r\n [AppProduct.BwicMonitor]: bwicMonitorFeatures,\r\n [AppProduct.Portfolio]: portfolioFeatures,\r\n [AppProduct.Resources]: resourcesFeatures,\r\n [AppProduct.KWatch]: kWatchFeatures,\r\n [AppProduct.IssuanceMonitor]: issuanceMonitorFeatures,\r\n [AppProduct.Integrations]: integratonsFeatures,\r\n [AppProduct.ManagerProfile]: managerProfileFeatures,\r\n [AppProduct.DealerProfile]: dealerProfileFeatures,\r\n [AppProduct.DealDocuments]: dealDocumentsFeatures\r\n};\r\n\r\nconst featuresByRole = {\r\n [roles.DataEntry]: dataEntryFeatures\r\n};\r\n\r\nfunction mapByRole(user: User) {\r\n const features = new Set(user.roles\r\n ?.map(r => featuresByRole[r] ?? [])\r\n .flat() ?? []\r\n );\r\n\r\n return [...features];\r\n}\r\n\r\nexport function getFeatures(user: User) {\r\n const productFeatures = user.products\r\n ?.map(p => featuresByProduct[p] ?? [])\r\n .flat() ?? [];\r\n\r\n let features = new Set([...productFeatures, ...mapByRole(user)]);\r\n \r\n return [...features];\r\n};\r\n","import moment from \"moment\";\r\nimport { accountService } from \"../services/account.service\";\r\nimport { user } from \"./user\";\r\nimport { jwtParser } from \"../utils/jwt.parser\";\r\nimport { constants } from \"../constants/constants\";\r\nimport { User } from '../types/account/User';\r\nimport { logger } from \"../logging/logger\";\r\n\r\nclass RefreshTokenController {\r\n _isTokenRefreshInProgress: boolean = false;\r\n _tokenRefreshPromise: Promise = Promise.resolve('');\r\n\r\n isExpired = (token: string, limit: number): boolean => {\r\n const tokenPayload = jwtParser.parsePayload(token);\r\n const tokenExpirationDate = moment.unix(tokenPayload.exp);\r\n\r\n return tokenExpirationDate.diff(moment(), 'second') < limit;\r\n }\r\n\r\n refreshToken = (): void => {\r\n this._tokenRefreshPromise = accountService\r\n .refreshToken()\r\n .then(this.storeToken)\r\n .catch(this.refreshTokenFailed)\r\n .finally(() => this._isTokenRefreshInProgress = false);\r\n this._isTokenRefreshInProgress = true;\r\n this.log('Start token refresh operation');\r\n }\r\n\r\n storeToken = (userResponse: User): string => {\r\n if (userResponse) {\r\n this.log('Token refresh operaiton is completed');\r\n user.store(userResponse);\r\n }\r\n\r\n return user.token() ?? '';\r\n }\r\n\r\n refreshTokenFailed = (e: Error) => {\r\n logger.exception(e, 'Refresh Token: Failed to refresh token. Logging out.');\r\n accountService.logout();\r\n return Promise.reject({ status: 401, text: 'Refresh token failed' });\r\n }\r\n\r\n ensureTokenUpToDate = (token?: string, refreshToken?: string): Promise => {\r\n if (refreshToken && this.isExpired(refreshToken, constants.refreshTokenExpirationLimitSeconds)) {\r\n return Promise.reject({ status: 401, text: 'Refresh token is expired', silent: true });\r\n }\r\n\r\n if (token && this.isExpired(token, constants.tokenExpirationLimitSeconds)) {\r\n this.log('Token is expired');\r\n if (!this._isTokenRefreshInProgress) {\r\n this.refreshToken();\r\n }\r\n\r\n this.log('Wait until token refresh completed');\r\n return this._tokenRefreshPromise;\r\n }\r\n\r\n return Promise.resolve(token);\r\n }\r\n\r\n log = (message: string, payload?: any) => logger.trace('Refresh Token: ' + message, payload)\r\n}\r\n\r\nexport const refreshTokenController = new RefreshTokenController();\r\n","import { roles } from \"../constants/roles\";\r\nimport { accountService } from \"../services/account.service\";\r\nimport { User } from \"../types/account/User\";\r\nimport { Subscription } from \"../types/billing/Subscription\";\r\nimport { SubscriptionFeature } from '../types/billing/SubscriptionFeature';\r\nimport { jsonUtils } from \"../utils/json.utils\";\r\nimport { getFeatures } from \"./features/feature-provider\";\r\n\r\ntype TUserProvider = {\r\n currentUser: User | null;\r\n store: (user: User) => void;\r\n clear: () => void;\r\n current: () => User | null;\r\n token: (accessToken?: string) => string | null;\r\n setBloombergEmail: (bloombergEmail: string) => void;\r\n setDirectBiddingAgreementSigned: (signed: boolean) => void;\r\n setPortfolioAgreementSigned: (signed: boolean) => void;\r\n refreshToken: () => { accessToken: string, refrechToken: string } | {};\r\n isAuthenticated: () => boolean;\r\n hasRoles: (...roles: string[]) => boolean;\r\n hasSingleRole: (role: string) => boolean;\r\n hasFeatures: (...features: SubscriptionFeature[]) => boolean;\r\n hasAllFeatures: (...features: SubscriptionFeature[]) => boolean;\r\n normalizeFeatures: (user: User) => User;\r\n getOnBoardingTooltipCounters: () => { [tooltipType: string]: number; };\r\n setOnBoardingTooltipCounter: (tooltipType: string, count: number) => void;\r\n handleAccountChange: (e: StorageEvent) => void;\r\n changeSubscription: (\r\n subscription: Subscription,\r\n trialPeriodEnd: Date | undefined,\r\n subscriptionExpiration: Date | undefined\r\n ) => void;\r\n [key: string]: any;\r\n}\r\n\r\nexport const user: TUserProvider = {\r\n currentUser: null,\r\n store: function (user: User) {\r\n const normalized = this.normalizeFeatures(user);\r\n this.currentUser = normalized;\r\n localStorage.setItem('user', JSON.stringify(normalized));\r\n this.watchAccountChange();\r\n },\r\n clear: function () {\r\n localStorage.removeItem('user');\r\n this.currentUser = null;\r\n window.removeEventListener('storage', this.handleAccountChange);\r\n },\r\n current: function (): User | null {\r\n if (!this.currentUser) {\r\n this.currentUser = jsonUtils.tryParse(localStorage.getItem('user'));\r\n if (this.currentUser) {\r\n this.watchAccountChange();\r\n }\r\n }\r\n\r\n return this.currentUser;\r\n },\r\n token: function (accessToken?: string) {\r\n const currentUser = this.current();\r\n\r\n if (currentUser) {\r\n if (accessToken) { // set access token if specified\r\n currentUser.accessToken = accessToken;\r\n this.store(currentUser);\r\n }\r\n\r\n return currentUser.accessToken;\r\n }\r\n\r\n return null;\r\n },\r\n setBloombergEmail: function (bloombergEmail: string) {\r\n const currentUser = this.current();\r\n if (currentUser) {\r\n currentUser.bloombergEmail = bloombergEmail;\r\n this.store(currentUser)\r\n }\r\n },\r\n setDirectBiddingAgreementSigned: function (status: boolean) {\r\n const currentUser = this.current();\r\n if (currentUser) {\r\n currentUser.directBiddingAgreementSigned = status;\r\n this.store(currentUser)\r\n }\r\n },\r\n refreshToken: function () {\r\n const currentUser = this.current();\r\n return !!currentUser ? { accessToken: currentUser.accessToken, refreshToken: currentUser.refreshToken } : {};\r\n },\r\n isAuthenticated: function () {\r\n return !!this.current();\r\n },\r\n hasRoles: function (...roles: string[]) {\r\n const currentUser = this.current();\r\n return !!currentUser && currentUser.roles && roles.some(r => currentUser.roles.indexOf(r) > -1);\r\n },\r\n hasSingleRole: function (role: string) {\r\n const currentUser = this.current();\r\n return currentUser?.roles?.length === 1 && this.hasRoles(role);\r\n },\r\n hasFeatures: function (...features: SubscriptionFeature[]) {\r\n if (user.hasRoles(roles.Administrator, roles.SubscriptionManager)) return true;\r\n const currentUser = this.current();\r\n return !!currentUser && !!currentUser.features && features.some(f => currentUser.features.indexOf(f) > -1);\r\n },\r\n hasAllFeatures: function (...features: SubscriptionFeature[]) {\r\n if (user.hasRoles(roles.Administrator, roles.SubscriptionManager)) return true;\r\n const currentUser = this.current();\r\n return !!currentUser && !!currentUser.features && !features.some(f => currentUser.features.indexOf(f) < 0);\r\n },\r\n normalizeFeatures: function (user: User) {\r\n user.features = getFeatures(user);\r\n return user;\r\n },\r\n getOnBoardingTooltipCounters: function () {\r\n const currentUser = this.current();\r\n return (!!currentUser && currentUser.tooltipCounts) || {};\r\n },\r\n setOnBoardingTooltipCounter: function (tooltipType, count) {\r\n const currentUser = this.current();\r\n if (currentUser) {\r\n currentUser.tooltipCounts[tooltipType] = count;\r\n this.store(currentUser);\r\n }\r\n },\r\n changeSubscription: function (\r\n subscription,\r\n trialPeriodEnd,\r\n subscriptionExpiration) {\r\n const currentUser = this.current();\r\n if (currentUser) {\r\n const updatedUser: User = {\r\n ...currentUser,\r\n subscription: subscription.title,\r\n products: subscription.products,\r\n trialPeriodEnd,\r\n subscriptionExpiration\r\n };\r\n\r\n this.store(this.normalizeFeatures(updatedUser));\r\n }\r\n },\r\n watchAccountChange: function () {\r\n window.addEventListener('storage', this.handleAccountChange);\r\n },\r\n handleAccountChange: function (event: StorageEvent) {\r\n // logout user if account is changed or logout action is performed on another tab\r\n if (document.hidden && event.storageArea === localStorage && user.currentUser) {\r\n const storageUser = jsonUtils.tryParse(localStorage.getItem('user'));\r\n\r\n if (!storageUser || (user.currentUser.id !== storageUser.id)) {\r\n accountService.logout();\r\n }\r\n }\r\n },\r\n setPortfolioAgreementSigned: function (status: boolean) {\r\n const currentUser = this.current();\r\n if(currentUser){\r\n currentUser.portfolioDisclaimerAgreed = status;\r\n this.store(currentUser)\r\n }\r\n }\r\n};\r\n","import { IColumnDefinition } from \"../components/bidding/common/table/types/ColumnDefinition\";\r\nimport { ColumnConfigKey } from \"../types/page-config/column-customizer/ColumnConfigKey\";\r\nimport { UserConfigColumn } from \"../types/user-config/UserConfigColumn\";\r\nimport { ListBuilder } from \"./ListBuilder\";\r\n\r\nclass ColumnListBuilder extends ListBuilder> {\r\n _config: UserConfigColumn[];\r\n\r\n constructor(config: UserConfigColumn[]) {\r\n super();\r\n this._config = config;\r\n }\r\n\r\n add(...items: IColumnDefinition[]): ColumnListBuilder {\r\n const displayedItems = items.filter(i =>\r\n !i.configKey || this._config.some(c => c.displayed && i.configKey === c.name)\r\n );\r\n\r\n super.add(...displayedItems);\r\n return this;\r\n }\r\n\r\n result(): IColumnDefinition[] {\r\n let orderingMap: { [key: string]: number } = {};\r\n this._config.forEach(configItem => {\r\n orderingMap[configItem.name as ColumnConfigKey] = configItem.order;\r\n })\r\n\r\n return [...this._result].sort((ac, bc) => {\r\n const a = ac.configKey ? orderingMap[ac.configKey] : 0;\r\n const b = bc.configKey ? orderingMap[bc.configKey] : 0;\r\n return a - b;\r\n });\r\n }\r\n}\r\n\r\nexport const createColumnListBuilder = (config?: UserConfigColumn[]) => {\r\n return config\r\n ? new ColumnListBuilder(config)\r\n : new ListBuilder>()\r\n}\r\n","export class ListBuilder {\r\n _result: T[] = []\r\n\r\n add(...items: T[]): ListBuilder {\r\n this._result.push(...items);\r\n return this;\r\n }\r\n\r\n addWhen(condition: () => boolean, ...items: T[]): ListBuilder {\r\n if (condition()) {\r\n return this.add(...items);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n result(): T[] {\r\n return this._result;\r\n }\r\n}\r\n","// TODO: This module should be a part of chart.utils, which should be rewritten on typescript\r\nimport moment, { Moment, unitOfTime } from 'moment';\r\nimport { ChartGrouping } from '../types/dashboard/AmrChart';\r\nimport { DropDownListItem } from '../components/controls/DropDownList';\r\n\r\nexport type Range = {\r\n min: T;\r\n max: T;\r\n}\r\n\r\nexport interface GroupedBy {\r\n date: T;\r\n entries: K[];\r\n}\r\n\r\nfunction getRange(min: Moment, max: Moment, interval: unitOfTime.Base) {\r\n let current = min.clone();\r\n\r\n const result = [];\r\n\r\n while (current.isBefore(max)) {\r\n result.push(current.clone())\r\n current.add(1, interval);\r\n }\r\n\r\n return result;\r\n}\r\n\r\nconst gapsFiller = (data: T[], dateGetter: (row: T) => Moment, blankItem: (date: Moment) => T) =>\r\n ({ min, max }: Range, interval: unitOfTime.Base) => {\r\n if (!min || !max) {\r\n return [];\r\n }\r\n\r\n const datesRange = getRange(min.clone().startOf(interval), max.clone().endOf(interval), interval);\r\n\r\n return datesRange.map(date => {\r\n const dataEntry = data.find(x => dateGetter(x).isSame(date, interval));\r\n\r\n return dataEntry || blankItem(date);\r\n });\r\n };\r\n\r\nconst groupingToUnitOfTime = (grouping: ChartGrouping) => {\r\n switch (grouping) {\r\n case ChartGrouping.M:\r\n case ChartGrouping.Q:\r\n return grouping as unitOfTime.Base;\r\n default:\r\n // W and Y\r\n return grouping.toLocaleLowerCase() as unitOfTime.Base;\r\n }\r\n};\r\n\r\nconst renderSelectedFilterOptionWithPrefix = (prefix: string) => (item: DropDownListItem) => `${prefix}: ${item.text}`;\r\n\r\nconst getEdgeDimensionValues = (data: T[], dimensionGetter: (row: T) => Moment | undefined): Range => {\r\n const dates = data.reduce((acc: Moment[], next: T) => {\r\n const date = dimensionGetter(next);\r\n\r\n return date ? [...acc, date] : acc;\r\n }, []);\r\n\r\n return {\r\n min: moment.min(dates),\r\n max: moment.max(dates),\r\n };\r\n};\r\n\r\nexport const amrChartUtils = {\r\n gapsFiller,\r\n groupingToUnitOfTime,\r\n renderSelectedFilterOptionWithPrefix,\r\n getEdgeDimensionValues,\r\n};\r\n","import { Moment } from \"moment\";\r\nimport { constants } from \"../constants\";\r\nimport { OriginatingTransactionClassStatus } from \"../types/amr-pipeline/enums/OriginatingTransactionClassStatus\";\r\nimport { OriginatingTransactionClass } from '../types/amr-pipeline/models/OriginatingTransactionClass';\r\nimport { InventoryFloatingIndex } from \"../types/inventory/InventoryFloatingIndex\";\r\nimport { dateTimeUtils, formatUtils, moneyUtils, numericUtils } from \"./\";\r\nimport { constants as amrConstants } from \"../components/amrPipeline/common/constants\";\r\nimport { Tranche } from '../types/amr-pipeline/models/Tranche';\r\n\r\nconst TransactionClassRatings: (keyof OriginatingTransactionClass)[] = [\r\n 'expectedRatingMoodys',\r\n 'expectedRatingSnP',\r\n 'expectedRatingFitch',\r\n 'expectedRatingKbra',\r\n 'expectedRatingDbrs',\r\n];\r\n\r\nconst TrancheOriginalRatings: (keyof Tranche)[] = [\r\n 'originalRatingMoodys',\r\n 'originalRatingSnP',\r\n 'originalRatingFitch',\r\n 'originalRatingKbra',\r\n 'originalRatingDbrs',\r\n];\r\n\r\nconst TrancheCurrentRatings: (keyof Tranche)[] = [\r\n 'ratingMoodys',\r\n 'ratingSnP',\r\n 'ratingFitch',\r\n 'ratingKbra',\r\n 'ratingDbrs',\r\n];\r\n\r\nfunction convertAmrToBwicInventoryFloaterIndex(amrFloaterIndex?: string): InventoryFloatingIndex | undefined {\r\n switch(amrFloaterIndex) {\r\n case \"SOFR\":\r\n return InventoryFloatingIndex.Sofr;\r\n case \"LIBOR 1M\":\r\n return InventoryFloatingIndex.Libor1m;\r\n case \"LIBOR 3M\":\r\n return InventoryFloatingIndex.Libor3m;\r\n case \"EURIBOR 3M\":\r\n return InventoryFloatingIndex.Euribor3m;\r\n case \"EURIBOR 6M\":\r\n return InventoryFloatingIndex.Euribor6m;\r\n default:\r\n return undefined;\r\n }\r\n}\r\n\r\nfunction formatClassStatus(status?: OriginatingTransactionClassStatus) {\r\n switch (status) {\r\n case OriginatingTransactionClassStatus.NotOffered:\r\n return amrConstants.notOffered;\r\n case OriginatingTransactionClassStatus.Subject:\r\n return amrConstants.subject\r\n default: return;\r\n }\r\n}\r\n\r\nfunction formatInventoryCoupon(floaterIndex?: string, margin?: number, emptyValue = constants.emptyPlaceholder) {\r\n const inventoryPosition = {\r\n floaterIndex: convertAmrToBwicInventoryFloaterIndex(floaterIndex),\r\n spread: margin,\r\n };\r\n\r\n return formatUtils.formatInventoryCoupon(inventoryPosition, emptyValue);\r\n}\r\n\r\nfunction formatClassesTotalBalance(balance: number){\r\n return moneyUtils.money(Number(numericUtils.round(Math.abs(Math.trunc(balance) / 1.0e9), 3).toFixed(3))) + 'B';\r\n};\r\n\r\nfunction formatRollerDeadlineDate(rollerDeadlineDate: Moment) {\r\n return dateTimeUtils.isToday(rollerDeadlineDate)\r\n ? `Today ${rollerDeadlineDate.tz(constants.estTimezone).format(constants.timeFormat)}`\r\n : rollerDeadlineDate.tz(constants.estTimezone).format(constants.rollerDeadlineFormat);\r\n}\r\n\r\nfunction formatRatingFor(transactionClass: T, fields: (keyof T)[]) {\r\n const [ratingMoodys, ratingSnP, ratingFitch, ratingKbra, ratingDbrs] = fields;\r\n\r\n return `${transactionClass[ratingMoodys] || constants.emptyPlaceholder}/${\r\n transactionClass[ratingSnP] || constants.emptyPlaceholder\r\n }/${transactionClass[ratingFitch] || constants.emptyPlaceholder}/${\r\n transactionClass[ratingKbra] || constants.emptyPlaceholder\r\n }/${transactionClass[ratingDbrs] || constants.emptyPlaceholder}`;\r\n}\r\n\r\nfunction formatRating(transactionClass: OriginatingTransactionClass) {\r\n return formatRatingFor(transactionClass, TransactionClassRatings);\r\n}\r\n\r\nfunction formatOriginalRating(tranche: Tranche) {\r\n return formatRatingFor(tranche, TrancheOriginalRatings);\r\n}\r\n\r\nfunction formatCurrentRating(tranche: Tranche) {\r\n return formatRatingFor(tranche, TrancheCurrentRatings);\r\n}\r\n\r\nexport const amrFormatUtils = {\r\n convertAmrToBwicInventoryFloaterIndex,\r\n formatInventoryCoupon,\r\n formatRollerDeadlineDate,\r\n formatRating,\r\n formatOriginalRating,\r\n formatCurrentRating,\r\n formatClassStatus,\r\n formatClassesTotalBalance\r\n};\r\n","import moment from \"moment\";\r\nimport { constants } from \"../constants\";\r\nimport { FilterRangeGroup, FilterDateGroup, FilterRadioGroup, FilterBooleanGroup, FilterSelectGroup } from \"../types/filters/FilterGroup\";\r\nimport { numericUtils } from \"./numeric.utils\";\r\n\r\nexport function selectedSelectGroupOptions(filter: FilterSelectGroup, fallback?: any) {\r\n const selectedOptions = filter?.filter.filter(m => m.selected).map(m => m.value);\r\n\r\n if (!selectedOptions.length) {\r\n return fallback;\r\n }\r\n\r\n return selectedOptions;\r\n}\r\n\r\nexport function selectedRangeOptions(filter: FilterRangeGroup) {\r\n const { from, to } = filter?.filter || {};\r\n return {\r\n from: numericUtils.isNumber(from) ? Number(from) : undefined,\r\n to: numericUtils.isNumber(to) ? Number(to) : undefined,\r\n };\r\n}\r\n\r\nexport function selectedDateOptions(filter?: FilterDateGroup) {\r\n const { from, to } = filter?.filter.options.customDateRange || {};\r\n return {\r\n from: from ? moment(from).startOf('day').format(constants.dateFormatISO8601) : undefined,\r\n to: to ? moment(to).endOf('day').format(constants.dateFormatISO8601) : undefined,\r\n };\r\n}\r\n\r\nexport function selectedRadioOption(filter: FilterRadioGroup) {\r\n const selectedOption = filter?.filter.selectedOption;\r\n return selectedOption !== null ? [selectedOption] : undefined;\r\n}\r\n\r\nexport function selectedBooleanOption(filter?: FilterBooleanGroup) {\r\n const selectedOption = filter?.filter.selectedOption;\r\n return selectedOption !== null ? selectedOption : undefined;\r\n}\r\n\r\nexport function validateYear(year: string | number, minYear = 2010, maxYear = moment().year()) {\r\n if (parseInt(year.toString(), 10) < minYear || parseInt(year.toString(), 10) > maxYear) {\r\n return `No available data related to this year.`;\r\n }\r\n\r\n return '';\r\n};\r\n","export enum IssuanceMonitorSubscriptionType {\r\n Trial = 1,\r\n Basic = 2,\r\n Pro = 3,\r\n}\r\n\r\nexport const imSubscriptionTitle = {\r\n [IssuanceMonitorSubscriptionType.Trial]: 'Trial',\r\n [IssuanceMonitorSubscriptionType.Basic]: 'Basic',\r\n [IssuanceMonitorSubscriptionType.Pro]: 'Pro',\r\n}\r\n","import { castArray, get, keyBy, mapValues, sumBy } from 'lodash';\r\nimport moment from 'moment';\r\nimport { user } from \"../user/user\";\r\nimport { constants, pipelineFilters, roles, routes, SORT } from \"../constants\";\r\nimport { dateRangeFilterOptions, dateTimeRangeFilterOptions } from '../constants/date-range.filter';\r\nimport { DateFilterOption } from '../types/filters/DateFilterOption';\r\nimport { DateTimeFilterOption } from '../types/filters/DateTimeFilterOption';\r\nimport { TimeOption } from '../types/filters/TimeOption';\r\nimport { IOI } from '../types/amr-pipeline/models/IOI';\r\nimport { Contact } from '../types/amr-pipeline/models/Contact';\r\nimport { CollateralQualityTest } from '../types/amr-pipeline/models/CollateralQualityTest';\r\nimport { compareFullNames, compareNumbersWithNullAcs, compareStrings } from './compare.utils';\r\nimport { OriginatingTransactionClass } from '../types/amr-pipeline/models/OriginatingTransactionClass';\r\nimport { OriginatingTransactionClassStatus } from '../types/amr-pipeline/enums/OriginatingTransactionClassStatus';\r\nimport { OriginatingTransactionDocument } from '../types/amr-pipeline/models/OriginatingTransactionDocument';\r\nimport { Company } from '../types/amr-pipeline/models/Company';\r\nimport { Transaction } from '../types/amr-pipeline/models/Transaction';\r\nimport { PipelineType } from '../types/amr-pipeline/enums/PipelineType';\r\nimport {\r\n FilterSelectGroup,\r\n FilterRangeGroup,\r\n FilterDateGroup,\r\n FilterDateTimeGroup,\r\n FilterBooleanGroup,\r\n} from '../types/filters/FilterGroup';\r\nimport { DealsPipelineFilters } from '../types/state/PipelineFilterState';\r\nimport dateTimeUtils from './dateTime.utils';\r\nimport { numericUtils } from './numeric.utils';\r\nimport { DealClassSearchData } from '../components/amrPipeline/types/DealClassSearchItem';\r\nimport { SearchTermItem } from '../components/amrPipeline/types/SearchTermItem';\r\nimport { ClassIndicators } from '../types/amr-pipeline/models/ClassIndicators';\r\nimport { TransactionStatus } from '../types/amr-pipeline/enums/TransactionStatus';\r\nimport { UserConfigFilter } from '../types/user-config/UserConfigFilter';\r\nimport { UserConfigColumn } from '../types/user-config/UserConfigColumn';\r\nimport { UserConfigType } from '../types/user-config/UserConfigType';\r\nimport { CompanyAlertsValue, ImUserConfig, SecondaryStatsAlertsValue } from '../types/user-config/UserConfig';\r\nimport { OriginatingTransaction } from '../types/amr-pipeline/models/OriginatingTransaction';\r\nimport { AmrTransaction } from '../types/amr-pipeline/models/AmrTransaction';\r\nimport { TransactionType } from '../types/amr-pipeline/enums/TransactionType';\r\nimport { PipelineDetailedTabTypes } from '../components/amrPipeline/types/PipelineDetailedTabTypes';\r\nimport { TransactionsTabTypes } from '../components/amrPipeline/types/TransactionsTabTypes';\r\nimport { selectedRadioOption } from './amr-pipeline-filter.utils';\r\nimport { imSubscriptionTitle, IssuanceMonitorSubscriptionType } from '../types/amr-pipeline/enums/IssuanceMonitorSubscriptionType';\r\nimport { DownloadedDocumentAccessType } from '../types/amr-pipeline/enums/DownloadedDocumentAccessType';\r\nimport { TransactionAccessType } from '../types/amr-pipeline/enums/TransactionAccessType';\r\nimport { AnalyticsSession, ViewedEntity } from '../types/amr-pipeline/models/AnalyticsSession';\r\nimport { TransactionViewHistoryClientsActivity } from '../types/amr-pipeline/models/TransactionViewHistoryClientsActivity';\r\nimport { SubscriptionFeature } from '../types/billing/SubscriptionFeature';\r\nimport { AlertOption } from '../types/email-preferences/EmailPreferences';\r\nimport { WithReferenceName } from '../types/amr-pipeline/models/WithReferenceName';\r\nimport { Bank, BwicBank } from '../types/banks/Bank';\r\nimport { ContactType } from '../types/amr-pipeline/enums/ContactType';\r\nimport { Deal } from '../types/amr-pipeline/models/Deal';\r\nimport { AmrFile } from '../types/amr-pipeline/models/AmrFile';\r\nimport { Document } from '../types/document/Document';\r\n\r\nexport function canViewTransactionDetails() {\r\n return user.hasRoles(\r\n ...roles.issuanceMonitorAccess(),\r\n roles.SubscriptionManager,\r\n );\r\n}\r\n\r\nfunction selectedSelectGroupOptions(filter: FilterSelectGroup, fallback?: any) {\r\n const selectedOptions = filter?.filter.filter(m => m.selected).map(m => m.value);\r\n\r\n if (!selectedOptions.length) {\r\n return fallback;\r\n }\r\n\r\n return selectedOptions;\r\n}\r\n\r\nfunction selectedRangeOptions(filter: FilterRangeGroup) {\r\n const { from, to } = filter?.filter || {};\r\n return {\r\n from: numericUtils.isNumber(from) ? Number(from) : undefined,\r\n to: numericUtils.isNumber(to) ? Number(to) : undefined,\r\n };\r\n}\r\n\r\nfunction selectedDateOptions(filter?: FilterDateGroup) {\r\n const { from, to } = filter?.filter.options.customDateRange || {};\r\n return {\r\n from: from ? moment(from).startOf('day').format(constants.dateFormatISO8601) : undefined,\r\n to: to ? moment(to).endOf('day').format(constants.dateFormatISO8601) : undefined,\r\n };\r\n}\r\n\r\nfunction selectedDateWithTimeOptions(filter?: FilterDateTimeGroup) {\r\n const { from, to } = filter?.filter.selectedOption || {};\r\n\r\n return {\r\n from: from ? dateTimeUtils.changeDateTimeZone(from.date, constants.estTimezone).format() : undefined,\r\n to: to ? dateTimeUtils.changeDateTimeZone(to.date, constants.estTimezone).format() : undefined,\r\n };\r\n}\r\n\r\nfunction selectedBooleanOption(filter?: FilterBooleanGroup) {\r\n const selectedOption = filter?.filter.selectedOption;\r\n return selectedOption !== null ? selectedOption : undefined;\r\n}\r\n\r\nfunction selectedDaysOptions(filter: FilterDateGroup) {\r\n const { from, to } = filter?.filter.options.customYearsRange || {};\r\n const daysOptions = {\r\n from: numericUtils.isNumber(from) ? numericUtils.floor(Number(from) * 365, 0) : undefined,\r\n to: numericUtils.isNumber(to) ? numericUtils.round(Number(to) * 365, 0) : undefined,\r\n };\r\n\r\n if (daysOptions.from && !daysOptions.to) {\r\n daysOptions.to = numericUtils.round(Number(pipelineFilters.maxRangeValue) * 365, 0);\r\n }\r\n\r\n return daysOptions;\r\n}\r\n\r\nexport function getFilterCriteria(filter: DealsPipelineFilters, pipelineType: PipelineType) {\r\n return {\r\n statuses: selectedSelectGroupOptions(filter.statuses, constants.defaultTransactionsSearchCriteria.statuses),\r\n types: selectedSelectGroupOptions(filter.transactionTypes, constants.defaultTransactionsSearchCriteria.types),\r\n ratings: selectedSelectGroupOptions(filter.ratings),\r\n collateralManagers: selectedSelectGroupOptions(filter.managers),\r\n arrangers: selectedSelectGroupOptions(filter.arrangers),\r\n collateralTypes: selectedSelectGroupOptions(filter.collateralType),\r\n amrDeal: selectedBooleanOption(filter.amrDeal),\r\n currencyCodes: selectedSelectGroupOptions(filter.currency),\r\n euCompliance: selectedBooleanOption(filter.euCompliance),\r\n esg: selectedBooleanOption(filter.esg),\r\n sofr: selectedBooleanOption(filter.sofr),\r\n isDebut: selectedBooleanOption(filter.isDebut),\r\n // enhancedCLO: selectedBooleanOption(filter.enhancedCLO), Temporary Enhanced CLO hiding\r\n staticDeal: selectedBooleanOption(filter.staticDeal),\r\n classNames: selectedSelectGroupOptions(filter.classNames),\r\n warf: selectedRangeOptions(filter.warf),\r\n was: selectedRangeOptions(filter.was),\r\n ds: selectedRangeOptions(filter.ds),\r\n closingDate: selectedDateOptions(filter.closingDate),\r\n pricingDate: selectedDateOptions(filter.pricingDate),\r\n nonCallPeriodEnd: selectedDateOptions(filter.nonCallEnd),\r\n reinvestmentPeriodEnd: selectedDateOptions(filter.reinvestmentEnd),\r\n nonCallPeriodEndDays: selectedDaysOptions(filter.nonCallEnd),\r\n reinvestmentPeriodEndDays: selectedDaysOptions(filter.reinvestmentEnd),\r\n parSubordination: selectedRangeOptions(filter.parSubordination),\r\n mvoc: selectedRangeOptions(filter.mvoc),\r\n rollerDeadline: selectedDateWithTimeOptions(filter.rollerDeadline),\r\n hasIois: pipelineType === PipelineType.IOIs || null,\r\n includeIois: pipelineType === PipelineType.IOIs,\r\n trustees: selectedSelectGroupOptions(filter.trustees),\r\n vintage: selectedDateOptions(filter.vintage),\r\n coupons: selectedRadioOption(filter.coupons),\r\n outOfNC: selectedBooleanOption(filter.outOfNC),\r\n outOfRI: selectedBooleanOption(filter.outOfRI),\r\n ratingAgencies: selectedSelectGroupOptions(filter.ratingAgencies),\r\n };\r\n}\r\n\r\nexport function isBrokerDealersOwnTransaction(transaction?: Transaction, userCompany?: Company) {\r\n const isBrokerDealer = user.hasRoles(...roles.bd());\r\n const isOwnTransaction = transaction?.arranger?.referenceName === userCompany?.referenceName;\r\n\r\n return isBrokerDealer && isOwnTransaction;\r\n}\r\n\r\nexport function isCollateralManagersOwnTransaction(transaction?: Transaction, userCompany?: Company) {\r\n const isCollateralManager = user.hasRoles(roles.CollateralManager);\r\n const isOwnTransaction = transaction?.collateralManager?.referenceName === userCompany?.referenceName\r\n || transaction?.collateralManagerOnDealReferenceName === userCompany?.referenceName\r\n\r\n return isCollateralManager && isOwnTransaction;\r\n}\r\n\r\nexport function hasLimitedAccess(transaction?: Transaction, userCompany?: Company) {\r\n const isBrokerDealer = user.hasRoles(...roles.bd());\r\n\r\n if (isBrokerDealer) {\r\n return transaction?.arranger?.referenceName !== userCompany?.referenceName;\r\n }\r\n\r\n const isSingleRoleCollateralManager = user.hasSingleRole(roles.CollateralManager);\r\n\r\n if (isSingleRoleCollateralManager) {\r\n return (\r\n (transaction?.collateralManager?.referenceName !== userCompany?.referenceName &&\r\n transaction?.collateralManagerOnDealReferenceName !== userCompany?.referenceName) ||\r\n transactionHasArrangerProSubscription(transaction)\r\n );\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport function hasAnalyticsAccess(transaction?: Transaction, userCompany?: Company) {\r\n if (transaction?.status === TransactionStatus.Draft) {\r\n return false\r\n }\r\n\r\n const isAdmin = user.hasRoles(roles.Administrator);\r\n const brokerDealersOwnTransaction = isBrokerDealersOwnTransaction(transaction, userCompany);\r\n const collateralManagersOwnTransaction = isCollateralManagersOwnTransaction(transaction, userCompany);\r\n\r\n return isAdmin || brokerDealersOwnTransaction || collateralManagersOwnTransaction;\r\n}\r\n\r\nexport function hasAnalyticsAlertsAccess(transaction?: Transaction, userCompany?: Company) {\r\n if(transaction?.status !== TransactionStatus.Active) {\r\n return false;\r\n }\r\n\r\n return hasAnalyticsAccess(transaction, userCompany);\r\n}\r\n\r\nexport function hasInvitedClientsAccess(transaction?: Transaction, userCompany?: Company) {\r\n if (transaction?.status === TransactionStatus.Draft) {\r\n return false\r\n }\r\n\r\n const isAdmin = user.hasRoles(roles.Administrator);\r\n\r\n return isAdmin || isBrokerDealersOwnTransaction(transaction, userCompany);\r\n}\r\n\r\nexport function hasIOIsAccess(transaction?: Transaction, userCompany?: Company) {\r\n if (!transaction) {\r\n return user.hasRoles(...roles.bd(), ...roles.seller(), roles.CollateralManager);\r\n }\r\n\r\n const brokerDealersOwnTransaction = isBrokerDealersOwnTransaction(transaction, userCompany);\r\n const collateralManagersOwnTransaction = isCollateralManagersOwnTransaction(transaction, userCompany);\r\n const isSeller = user.hasRoles(roles.SellerTrader, roles.SellerViewer);\r\n\r\n const isInvitedClient = user.hasSingleRole(roles.ArrangersClient);\r\n\r\n return isSeller || brokerDealersOwnTransaction || collateralManagersOwnTransaction || isInvitedClient;\r\n}\r\n\r\nexport function getTransactionDetailsUrl(\r\n transaction: OriginatingTransaction | AmrTransaction,\r\n activeTab?: PipelineDetailedTabTypes,\r\n) {\r\n const isAmr = transaction.type === TransactionType.amr;\r\n\r\n const defaultTab = isAmr ? undefined : TransactionsTabTypes.overview;\r\n\r\n return routes.transactionDetailUrl(\r\n transaction.referenceName,\r\n transaction.dealReferenceName,\r\n activeTab === PipelineDetailedTabTypes.ioi ? TransactionsTabTypes.IOIs : defaultTab,\r\n );\r\n}\r\n\r\nexport function canViewIOIs(transaction?: Transaction, userCompany?: Company) {\r\n if (!transaction || !userCompany) {\r\n return false;\r\n }\r\n\r\n const { type, status } = transaction;\r\n\r\n if (type === TransactionType.amr) {\r\n return false;\r\n }\r\n\r\n const brokerDealersOwnTransaction = isBrokerDealersOwnTransaction(transaction, userCompany);\r\n const collateralManagersOwnTransaction = isCollateralManagersOwnTransaction(transaction, userCompany);\r\n\r\n const activeStatus = status === TransactionStatus.Active;\r\n const pricedClosedOnHoldStatus = [\r\n TransactionStatus.Priced,\r\n TransactionStatus.Closed,\r\n TransactionStatus.OnHold\r\n ].includes(status);\r\n\r\n const isSellerTrader = user.hasRoles(roles.SellerTrader);\r\n const isSellerViewer = user.hasRoles(roles.SellerViewer);\r\n const isSeller = isSellerTrader || isSellerViewer;\r\n\r\n if (isSellerViewer && activeStatus) {\r\n return true;\r\n }\r\n\r\n if (isSeller && pricedClosedOnHoldStatus) {\r\n return true;\r\n }\r\n\r\n if ((brokerDealersOwnTransaction || collateralManagersOwnTransaction) && (activeStatus || pricedClosedOnHoldStatus)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport function canSubmitIOIs(transaction?: Transaction) {\r\n if (!transaction) {\r\n return false;\r\n }\r\n\r\n const { type, status } = transaction;\r\n\r\n if (type === TransactionType.amr) {\r\n return false;\r\n }\r\n\r\n const activeStatus = status === TransactionStatus.Active;\r\n const isSellerTrader = user.hasRoles(roles.SellerTrader);\r\n\r\n return isSellerTrader && activeStatus;\r\n}\r\n\r\nexport function hasWidgetsAccess(...features: SubscriptionFeature[]) {\r\n return user.hasRoles(...roles.issuanceMonitorAccess()) && (!features?.length || user.hasFeatures(...features));\r\n}\r\n\r\nexport function hasKWatchNewsAccess() {\r\n return user.hasRoles(...roles.bd(), ...roles.seller(), roles.DataEntry, roles.Administrator);\r\n}\r\n\r\nexport function isCollateralManagersOwnCompany(company?: WithReferenceName, userCompany?: Company) {\r\n const isCollateralManager = user.hasRoles(roles.CollateralManager);\r\n return isCollateralManager && company?.referenceName === userCompany?.referenceName;\r\n}\r\n\r\nexport function isBrokerDealersOwnCompany(company?: WithReferenceName, userCompany?: Company) {\r\n const isBrokerDealer = user.hasRoles(...roles.bd());\r\n return isBrokerDealer && company?.referenceName === userCompany?.referenceName;\r\n}\r\n\r\nexport function canEditCloManager(company?: WithReferenceName, userCompany?: Company) {\r\n const collateralManagersOwnCompany = isCollateralManagersOwnCompany(company, userCompany);\r\n return user.hasRoles(roles.Administrator, roles.DataEntry) || collateralManagersOwnCompany;\r\n}\r\n\r\nexport function canEditBank(company?: WithReferenceName, userCompany?: Company) {\r\n const brokerDealersOwnCompany = isBrokerDealersOwnCompany(company, userCompany);\r\n return user.hasRoles(roles.Administrator, roles.DataEntry) || brokerDealersOwnCompany;\r\n}\r\n\r\nexport function hasCloManagerAnalyticsAccess(isUserCompany: boolean) {\r\n if (user.hasRoles(roles.Administrator, roles.DataEntry)) {\r\n return true;\r\n }\r\n\r\n const collateralManager = user.hasRoles(roles.CollateralManager);\r\n const sellerViewer = user.hasRoles(roles.SellerViewer);\r\n const sellerTrader = user.hasRoles(roles.SellerTrader);\r\n const sellerAdmin = user.hasRoles(roles.SellerAdministrator);\r\n\r\n const isCMAndViewerOrSeller = collateralManager && (sellerViewer || sellerTrader);\r\n\r\n return isUserCompany && (isCMAndViewerOrSeller || (isCMAndViewerOrSeller && sellerAdmin));\r\n}\r\n\r\nexport function hasBankAnalyticsAccess(bank?: WithReferenceName, userCompany?: Company) {\r\n if (user.hasRoles(roles.Administrator, roles.DataEntry)) {\r\n return true;\r\n }\r\n\r\n return isBrokerDealersOwnCompany(bank, userCompany);\r\n}\r\n\r\nexport function hasBankAnalyticsAlertsAccess(banks?: WithReferenceName | WithReferenceName[], userCompany?: Company) {\r\n return castArray(banks).some(bank => isBrokerDealersOwnCompany(bank, userCompany));\r\n}\r\n\r\nexport function hasBankAnalyticsAlertsChangeAccess(banks?: WithReferenceName | WithReferenceName[], userCompany?: Company) {\r\n return (\r\n user.hasFeatures(SubscriptionFeature.DealerProfileEmailAlerts) &&\r\n hasBankAnalyticsAlertsAccess(banks, userCompany)\r\n );\r\n}\r\n\r\nexport function transactionHasArrangerProSubscription(transaction?: Transaction) {\r\n return transaction?.arranger?.subscription === imSubscriptionTitle[IssuanceMonitorSubscriptionType.Pro];\r\n}\r\n\r\nexport function hasArrangerAccess(transaction?: Transaction) {\r\n return transactionHasArrangerProSubscription(transaction) || user.hasSingleRole(roles.ArrangersClient);\r\n}\r\n\r\nexport function getRangeFromDateOption(dateRangeFilterOption: DateFilterOption) {\r\n const today = moment();\r\n const lastBusinessDay = dateTimeUtils.getLastBusinessDay();\r\n\r\n const monday = moment().isoWeekday(1);\r\n const friday = moment().isoWeekday(5);\r\n\r\n const weekAgoStart = moment().subtract(1, \"week\");\r\n const startOfMonth = moment().startOf(\"month\");\r\n const monthAgo = moment().subtract(1, \"month\");\r\n const threeMonthAgo = moment().subtract(3, \"month\");\r\n const sixMonthAgo = moment().subtract(6, \"month\");\r\n const startYear = moment().startOf('year');\r\n const endYear = moment().endOf('year');\r\n\r\n switch (dateRangeFilterOption.key) {\r\n case (dateRangeFilterOptions.Today.key):\r\n return {\r\n from: moment().startOf(\"day\"),\r\n to: moment().endOf(\"day\"),\r\n };\r\n case (dateRangeFilterOptions.TodayAndUpcoming.key):\r\n return {\r\n from: moment().startOf(\"day\")\r\n };\r\n case (dateRangeFilterOptions.ThisWeek.key):\r\n return {\r\n from: monday,\r\n to: today,\r\n };\r\n case (dateRangeFilterOptions.ThisWeekMondayToFriday.key):\r\n return {\r\n from: monday,\r\n to: friday\r\n };\r\n case (dateRangeFilterOptions.LastWeek.key):\r\n return {\r\n from: weekAgoStart,\r\n to: today,\r\n }\r\n case (dateRangeFilterOptions.ThisMonth.key):\r\n return {\r\n from: startOfMonth,\r\n to: today\r\n }\r\n case (dateRangeFilterOptions.LastMonth.key):\r\n return {\r\n from: monthAgo,\r\n to: today\r\n }\r\n case (dateRangeFilterOptions.LastThreeMonth.key):\r\n return {\r\n from: threeMonthAgo,\r\n to: today\r\n }\r\n case (dateRangeFilterOptions.LastSixMonth.key):\r\n return {\r\n from: sixMonthAgo,\r\n to: today\r\n }\r\n case (dateRangeFilterOptions.ThisYear.key):\r\n return {\r\n from: startYear,\r\n to: endYear\r\n }\r\n case (dateRangeFilterOptions.LastYear.key):\r\n return {\r\n from: moment().subtract(1, 'year').startOf('day'),\r\n to: moment().endOf('day')\r\n }\r\n case (dateRangeFilterOptions.Yesterday.key):\r\n return {\r\n from: lastBusinessDay,\r\n to: lastBusinessDay.endOf('day')\r\n }\r\n default:\r\n return undefined;\r\n }\r\n}\r\n\r\nexport function getRangeFromDateTimeOption(dateRangeFilterOption: DateTimeFilterOption) {\r\n switch (dateRangeFilterOption.key) {\r\n case (dateTimeRangeFilterOptions.Today.key):\r\n return {\r\n from: {\r\n date: moment().startOf(\"day\"),\r\n timeOption: TimeOption.AnyTime,\r\n },\r\n to: {\r\n date: moment().endOf(\"day\"),\r\n timeOption: TimeOption.AnyTime,\r\n },\r\n };\r\n default:\r\n return undefined;\r\n }\r\n}\r\n\r\nfunction createIoIRating(i: IOI) {\r\n const ioiRatings = `${i.ratingMoodys || constants.emptyPlaceholder}/${i.ratingSnP || constants.emptyPlaceholder}/${i.ratingFitch || constants.emptyPlaceholder\r\n }/${i.ratingKbra || constants.emptyPlaceholder}/${i.ratingDbrs || constants.emptyPlaceholder}`;\r\n\r\n return {\r\n ...i,\r\n ioiRatings\r\n }\r\n}\r\n\r\nfunction calculateIoISizePercent(i: IOI) {\r\n return {\r\n ...i,\r\n sizePercent: i.size * 100 / i.balance\r\n }\r\n}\r\n\r\nfunction indicateRefinancedIoIs(iois: IOI[], classBalance: number) {\r\n const ioisTotalBalance = sumBy(iois, (ioi) => ioi.size);\r\n\r\n let ioisTotalSize = 0;\r\n\r\n return iois\r\n .sort((a, b) => compareNumbersWithNullAcs(a.dm, b.dm))\r\n .map((ioi) => {\r\n const isRefinanced = ioisTotalBalance < classBalance ? false : ioisTotalSize < classBalance;\r\n const sizePercent = ioi.size * 100 / classBalance;\r\n\r\n ioisTotalSize = ioisTotalSize + ioi.size;\r\n\r\n return { ...ioi, sizePercent, isRefinanced };\r\n });\r\n}\r\n\r\nexport function withIndicatingRefinancedIoIs(classes: OriginatingTransactionClass[]) {\r\n return classes.reduce((acc: OriginatingTransactionClass[], tc) => {\r\n if (!tc.ioIs || !tc.ioIs.length) {\r\n return acc;\r\n }\r\n\r\n return [...acc, { ...tc, ioIs: indicateRefinancedIoIs(tc.ioIs, tc.balance || 0) }];\r\n }, []);\r\n}\r\n\r\nexport function formatIoI(i: IOI) {\r\n return calculateIoISizePercent(createIoIRating(i));\r\n}\r\n\r\nexport function isIoIonDisabledClass(ioi: IOI, classes: OriginatingTransactionClass[]) {\r\n const ioiClass = classes.find(c => c.referenceName === ioi.classReferenceName);\r\n\r\n return (\r\n ioiClass?.originatingTransactionClassStatus === OriginatingTransactionClassStatus.Subject ||\r\n ioiClass?.originatingTransactionClassStatus === OriginatingTransactionClassStatus.NotOffered\r\n );\r\n}\r\n\r\nexport function sortContactsByPrimary(members: Contact[], primaryContact?: Contact) {\r\n return members\r\n .map(member => ({\r\n ...member,\r\n isPrimary: member.email === primaryContact?.email,\r\n }))\r\n .sort((a, b) => +b.isPrimary - +a.isPrimary);\r\n}\r\n\r\nexport function sortCollateralQualityTests(collateralQualityTests?: CollateralQualityTest[]) {\r\n if (!collateralQualityTests) {\r\n return [];\r\n }\r\n\r\n return collateralQualityTests.sort((a: CollateralQualityTest, b: CollateralQualityTest) =>\r\n compareStrings(a.value, b.value)\r\n );\r\n}\r\n\r\nexport function sortSyndicateContacts(\r\n syndicateContacts?: T[],\r\n defaultSortFn: (a: T, b: T) => number = compareFullNames)\r\n{\r\n if (!syndicateContacts) {\r\n return syndicateContacts;\r\n }\r\n\r\n const isOfType = (type: ContactType) => (contact: T) => contact.type === type;\r\n const isDistributionList = isOfType(ContactType.DistributionList);\r\n const isHeadOfDesk = isOfType(ContactType.HeadOfDesk);\r\n\r\n return syndicateContacts.sort((a: T, b: T) => {\r\n const byDistributionList = +isDistributionList(b) - +isDistributionList(a);\r\n const byHeadOfTrading = +(b.headOfTrading || 0) - +(a.headOfTrading || 0);\r\n const byHeadOfDesk = +isHeadOfDesk(b) - +isHeadOfDesk(a);\r\n\r\n if (byDistributionList) {\r\n return byDistributionList;\r\n } else if (byHeadOfDesk) {\r\n return byHeadOfDesk;\r\n } else if (byHeadOfTrading) {\r\n return byHeadOfTrading;\r\n }\r\n\r\n return defaultSortFn(a, b);\r\n });\r\n}\r\n\r\nexport const generateIntexLink = (positionId: string) => `INTEXcalc://?position=${encodeURIComponent(positionId)}`;\r\n\r\nconst getCurrentIntexPositionByIdentifiers = (tranches: ClassIndicators[]) => {\r\n const identifierHierarchy: (keyof ClassIndicators)[] = [\r\n 'ticker144A',\r\n 'cusip144A',\r\n 'isin144A',\r\n 'tickerRegS',\r\n 'cusipRegS',\r\n 'isinRegS',\r\n 'tickerAccdInvCertif',\r\n 'cusipAccdInvCertif',\r\n 'isinAccdInvCertif'\r\n ];\r\n\r\n let identifierForIntex;\r\n\r\n for (let i = 0; i < identifierHierarchy.length; i++) {\r\n const hierarchyKey = identifierHierarchy[i];\r\n\r\n const trancheWithIdentifier = tranches.find(tranche => !!tranche[hierarchyKey]);\r\n\r\n if (trancheWithIdentifier) {\r\n identifierForIntex = trancheWithIdentifier[hierarchyKey];\r\n break;\r\n }\r\n }\r\n\r\n return identifierForIntex;\r\n}\r\n\r\nexport const getCurrentIntexPositionIdForTransaction = (transaction: OriginatingTransaction | AmrTransaction) => {\r\n if (transaction.dealTicker) {\r\n return transaction.dealTicker;\r\n }\r\n\r\n const tranches = (transaction as Transaction).type === TransactionType.amr\r\n ? (transaction as AmrTransaction).classes.map(x => x.class)\r\n : (transaction as OriginatingTransaction).classes\r\n .reduce(\r\n (acc: ClassIndicators[], transactionClass: OriginatingTransactionClass) => transactionClass.tranche\r\n ? [...acc, transactionClass.tranche]\r\n : acc\r\n ,[]);\r\n\r\n return getCurrentIntexPositionByIdentifiers(tranches);\r\n}\r\n\r\nexport const getCurrentIntexPositionIdForDeal = (deal: Deal) => {\r\n if (deal.ticker) {\r\n return deal.ticker;\r\n }\r\n\r\n return getCurrentIntexPositionByIdentifiers(deal.classes);\r\n}\r\n\r\nexport function getSearchedTransactionDocuments(documents: OriginatingTransactionDocument[], searchTerm: string) {\r\n const searchTermLowerCase = searchTerm.toLowerCase();\r\n return documents.filter((d) => {\r\n const date = d.executionDate ?? d.uploadTime;\r\n const dateText = moment(date).format(constants.dateFormat);\r\n return d.name.toLowerCase().includes(searchTermLowerCase) || dateText.toLowerCase().includes(searchTermLowerCase);\r\n });\r\n}\r\n\r\nexport function groupSearchByDealAndClassIndicators(searchTermItems: SearchTermItem[]) {\r\n return searchTermItems.reduce((accum: DealClassSearchData, { referenceName, classNames }) => {\r\n const { deals, dealsClasses } = accum;\r\n const dealClassIndex = dealsClasses.map(el => el.dealReferenceName).indexOf(referenceName);\r\n const isDealPresent = deals.includes(referenceName);\r\n const isDealClassPresent = dealClassIndex > -1;\r\n\r\n if (classNames && !isDealPresent) {\r\n return {\r\n ...accum,\r\n dealsClasses: isDealClassPresent\r\n ? [\r\n ...dealsClasses.slice(0, dealClassIndex),\r\n {\r\n dealReferenceName: referenceName,\r\n classNames: [\r\n ...classNames,\r\n ...dealsClasses[dealClassIndex].classNames\r\n ]\r\n },\r\n ...dealsClasses.slice(dealClassIndex + 1)\r\n ] : [\r\n ...dealsClasses,\r\n { dealReferenceName: referenceName, classNames }\r\n ]\r\n }\r\n } else {\r\n return {\r\n deals: [...accum.deals, ...(!isDealPresent ? [referenceName] : [])],\r\n dealsClasses: isDealClassPresent\r\n ? dealsClasses.filter((c, index) => index !== dealClassIndex)\r\n : dealsClasses,\r\n }\r\n }\r\n }, { deals: [], dealsClasses: [] })\r\n}\r\n\r\nexport function withSearchedClassIndicator(searchTerm: string, tranche?: ClassIndicators) {\r\n if (!tranche) {\r\n return false;\r\n }\r\n\r\n const allIndicators: (string | undefined)[] = [\r\n tranche.ticker144A,\r\n tranche.tickerRegS,\r\n tranche.tickerAccdInvCertif,\r\n tranche.cusip144A,\r\n tranche.cusipRegS,\r\n tranche.cusipAccdInvCertif,\r\n tranche.isin144A,\r\n tranche.isinRegS,\r\n tranche.isinAccdInvCertif\r\n ];\r\n\r\n return allIndicators.some(i => i?.toLowerCase().includes(searchTerm.toLowerCase()))\r\n}\r\n\r\nexport function mergeSortCriteria(sortBy: string, sortDirection: string, defaultCriteria: { field: string }[]) {\r\n const additionalCriteria = defaultCriteria.some(c => c.field === sortBy) ? [] : defaultCriteria;\r\n\r\n return [\r\n {\r\n field: sortBy,\r\n ascending: sortDirection === SORT.ASC,\r\n },\r\n ...additionalCriteria,\r\n ];\r\n}\r\n\r\nfunction castFiltersConfig(jsonValue: any) {\r\n return (jsonValue as UserConfigFilter[])\r\n .sort((a, b) => compareStrings(a.name, b.name))\r\n .filter(f => f.name !== \"enhancedCLO\"); // Temporary Enhanced CLO hiding\r\n}\r\n\r\nfunction castColumnsConfig(jsonValue: any) {\r\n return (jsonValue as UserConfigColumn[])\r\n .filter(c => c.available)\r\n .sort((a, b) => a.order - b.order);\r\n}\r\n\r\nfunction parseConfigValue(userConfig: ImUserConfig) {\r\n try {\r\n const json = JSON.parse(userConfig.value);\r\n\r\n switch (userConfig.type) {\r\n case UserConfigType.imFilter:\r\n case UserConfigType.apFilter:\r\n return castFiltersConfig(json);\r\n case UserConfigType.imColumnsClassTab:\r\n case UserConfigType.imColumnsDealTab:\r\n return castColumnsConfig(json);\r\n case UserConfigType.imAlert:\r\n case UserConfigType.transactionAlert:\r\n case UserConfigType.weeklyStatsEmail:\r\n case UserConfigType.newPublishedTransactionAlert:\r\n case UserConfigType.summaryDailyAlerts:\r\n case UserConfigType.arrangerPipelineAlert:\r\n case UserConfigType.cloManagerAnalyticsAlert:\r\n case UserConfigType.cloManagerIssuanceMonitorAlert:\r\n case UserConfigType.cloManagerArrangerPipelineAlert:\r\n case UserConfigType.cloManagerBwicAlert:\r\n case UserConfigType.cloManagerDealerInventoryAlert:\r\n case UserConfigType.bankAnalyticsAlert:\r\n case UserConfigType.bankDealerInventoryAlert:\r\n case UserConfigType.bankIssuanceMonitorAlert:\r\n case UserConfigType.bankArrangerPipelineAlert:\r\n return json;\r\n default:\r\n return [];\r\n }\r\n } catch {\r\n return [];\r\n }\r\n}\r\n\r\nexport function mapConfig(response?: ImUserConfig[]) {\r\n if (!response || !response.length) {\r\n return [];\r\n }\r\n\r\n return response.map(config => ({\r\n type: config.type,\r\n value: parseConfigValue(config),\r\n }));\r\n}\r\n\r\nexport function getDocumentCountBySession(session: AnalyticsSession) {\r\n const sumByPredicate = (session: ViewedEntity) => session.documents.length;\r\n\r\n const allDocuments = sumBy(session.documents.DownloadAllDocuments, sumByPredicate);\r\n const oneDocument = sumBy(session.documents.DownloadOneDocument, sumByPredicate);\r\n\r\n return {\r\n dealDocumentsViews: allDocuments + oneDocument,\r\n managerPresentationViews: sumBy(session.documents.DownloadManagerPresentationFile, sumByPredicate),\r\n targetPortfolioViews: sumBy(session.documents.ExportTargetPortfolio, sumByPredicate),\r\n intexFileViews: sumBy(session.documents.DownloadIntexFile, sumByPredicate),\r\n disclosureFileViews: sumBy(session.documents.DownloadDisclosureFile, sumByPredicate),\r\n };\r\n}\r\n\r\nexport function getDocumentCountByViewHistory(transactionViewHistory: TransactionViewHistoryClientsActivity) {\r\n const documentDownloads = mapValues(keyBy(transactionViewHistory.documentDownloads, 'accessType'), 'numberOfAccess');\r\n\r\n const allDocuments = get(documentDownloads, DownloadedDocumentAccessType.DownloadAllDocuments, 0);\r\n const oneDocument = get(documentDownloads, DownloadedDocumentAccessType.DownloadOneDocument, 0);\r\n\r\n return {\r\n dealDocumentsViews: allDocuments + oneDocument,\r\n managerPresentationViews: get(documentDownloads, DownloadedDocumentAccessType.DownloadManagerPresentationFile, 0),\r\n targetPortfolioViews: get(documentDownloads, TransactionAccessType.ExportTargetPortfolio, 0),\r\n intexFileViews: get(documentDownloads, DownloadedDocumentAccessType.DownloadIntexFile, 0),\r\n disclosureFileViews: get(documentDownloads, DownloadedDocumentAccessType.DownloadDisclosureFile, 0),\r\n };\r\n}\r\n\r\nexport function getAlertValues(values: (CompanyAlertsValue | SecondaryStatsAlertsValue)[]) {\r\n return new Map(values.map(v => [v.companyReferenceName, v]));\r\n}\r\n\r\nexport function withTurnedOnAlerts(values: (CompanyAlertsValue | SecondaryStatsAlertsValue)[], referenceName?: string) {\r\n const alertOptions = values.filter(\r\n c => c.companyReferenceName === referenceName,\r\n );\r\n\r\n return alertOptions.some(({ alertOption }) => alertOption !== AlertOption.Never);\r\n}\r\n\r\nexport function combineBanks(amrData: Company[], bwicData: BwicBank[], userCompanyReferenceName?: string) {\r\n const amrBank: Bank[] = amrData.map(a => ({\r\n referenceName: a.referenceName,\r\n legalName: a.legalName,\r\n isUserCompany: a.referenceName === userCompanyReferenceName,\r\n hasActiveTransactions: a.hasActiveTransactions,\r\n sendsPxTalk: false,\r\n existsOnDealerInventory: false,\r\n code: a.code || '',\r\n }));\r\n\r\n const bwicBank: Bank[] = bwicData.map(b => ({\r\n referenceName: b.referenceName,\r\n legalName: b.legalName,\r\n isUserCompany: b.referenceName === userCompanyReferenceName,\r\n hasActiveTransactions: false,\r\n sendsPxTalk: b.isSecondary,\r\n existsOnDealerInventory: b.isInventory,\r\n code: b.code,\r\n }));\r\n\r\n const banks = [...amrBank, ...bwicBank].reduce((accumulator: Map, bank: Bank) => {\r\n const existingBank = accumulator.get(bank.referenceName);\r\n\r\n const newBank = existingBank\r\n ? {\r\n ...existingBank,\r\n code: existingBank.code || bank.code,\r\n hasActiveTransactions: existingBank.hasActiveTransactions || bank.hasActiveTransactions,\r\n sendsPxTalk: existingBank.sendsPxTalk || bank.sendsPxTalk,\r\n existsOnDealerInventory: existingBank.existsOnDealerInventory || bank.existsOnDealerInventory,\r\n } : bank;\r\n\r\n accumulator.set(bank.referenceName, newBank);\r\n\r\n return accumulator;\r\n }, new Map());\r\n\r\n return Array.from(banks.values());\r\n}\r\n\r\nexport function getDealDocLastDate(document: AmrFile | Document) {\r\n if (document.executionDate) {\r\n return document.executionDate;\r\n }\r\n\r\n return dateTimeUtils.resetTimeZone(document.uploadTime) || undefined;\r\n}\r\n","import moment, { Moment } from 'moment';\r\nimport { DownloadedDocument, EntityViews, SessionAccess } from '../types/amr-pipeline/models/AnalyticsSession';\r\nimport { flatten, groupBy, sumBy, uniqBy, values } from 'lodash';\r\nimport { TreeSelectOption } from '../components/controls/TreeSelect';\r\nimport { DownloadedDocumentAccessType } from '../types/amr-pipeline/enums/DownloadedDocumentAccessType';\r\n\r\nexport function withDate(data: any[]): T[] {\r\n return data.map(({ day, month, year, ...rest }) => ({\r\n ...rest,\r\n date: moment([year, month - 1, day]),\r\n } as T));\r\n}\r\n\r\nexport function transformToTreeSelect(clientsActivity: SessionAccess[], accessTypes: T[]) {\r\n const viewedTabs = clientsActivity.filter(x => accessTypes.includes(x.accessType));\r\n const groupedByUser = groupBy(viewedTabs, x => x.userEmail);\r\n\r\n const aggregatedByAccess = Object.values(groupedByUser).reduce((acc: SessionAccess[], rows: SessionAccess[]) => {\r\n const [firstRow] = rows;\r\n\r\n if (!firstRow) {\r\n return acc;\r\n }\r\n\r\n const numberOfAccess = sumBy(rows, row => row.numberOfAccess);\r\n\r\n const { accessType, ...rest } = firstRow;\r\n\r\n return [\r\n ...acc,\r\n { ...rest, numberOfAccess } as SessionAccess,\r\n ];\r\n }, []);\r\n\r\n return aggregatedByAccess.reduce((acc: TreeSelectOption[], clientActivity: SessionAccess) => {\r\n const existingItem = acc.find(x => x.value === clientActivity.companyReferenceName);\r\n\r\n if (existingItem) {\r\n return [\r\n ...acc.filter(x => x.value !== clientActivity.companyReferenceName),\r\n {\r\n ...existingItem,\r\n children: [\r\n ...(existingItem.children || []),\r\n {\r\n text: clientActivity.userFullName,\r\n value: clientActivity.userEmail,\r\n meta: {\r\n views: clientActivity.numberOfAccess,\r\n },\r\n },\r\n ],\r\n },\r\n ];\r\n }\r\n\r\n return [\r\n ...acc,\r\n {\r\n text: clientActivity.companyLegalName,\r\n value: clientActivity.companyReferenceName,\r\n children: [\r\n {\r\n text: clientActivity.userFullName,\r\n value: clientActivity.userEmail,\r\n meta: {\r\n views: clientActivity.numberOfAccess,\r\n },\r\n },\r\n ],\r\n },\r\n ];\r\n }, []);\r\n}\r\n\r\nexport function groupDocsWithAccessType(documents: EntityViews) {\r\n return flatten(\r\n flatten(values(documents)).map(({ documents, accessType }) =>\r\n documents.map((d) => ({ ...d, accessType }))\r\n )\r\n );\r\n}\r\n\r\nexport function getUniqueDocsWithDownloadsCount(documents: DownloadedDocument[]) {\r\n const uniqueDocuments = uniqBy(documents, 'referenceName');\r\n\r\n const documentCountMap = documents.reduce((acc, doc) => {\r\n acc[doc.referenceName] = (acc[doc.referenceName] || 0) + 1;\r\n return acc;\r\n }, {} as Record);\r\n\r\n return uniqueDocuments.map(doc => ({\r\n ...doc,\r\n downloadCount: documentCountMap[doc.referenceName],\r\n }));\r\n}\r\n","import { upperFirst } from \"lodash\";\r\nimport { ApiError } from \"../types/ApiError\";\r\nimport { jsonUtils } from \"./json.utils\";\r\n\r\nexport const apiUtils = {\r\n isRequestSuccess,\r\n normalize,\r\n parseErrorMessage,\r\n parseSortingParams,\r\n};\r\n\r\nfunction isRequestSuccess(status: number) {\r\n return status >= 200 && status <= 299;\r\n}\r\n\r\nfunction normalize(\r\n entities: TEntity[],\r\n getKey: (entity: TEntity, index: number) => TKey,\r\n getValue: (entity: TEntity, index: number) => TResult\r\n): { [key in TKey]: TResult } {\r\n return Object.assign({}, ...entities.map((e, index) => ({ [getKey(e, index)]: getValue(e, index) })));\r\n}\r\n\r\nfunction parseErrorMessage(jsonText: string): ApiError | undefined {\r\n const error: ApiError = jsonText ? jsonUtils.tryParse(jsonText) : null;\r\n return error?.error ? error : undefined;\r\n}\r\n\r\nfunction parseSortingParams(\r\n sortingParams: { field: string; ascending: boolean }[]\r\n) {\r\n return sortingParams.reduce(\r\n (accumulator, p, index) => ({\r\n ...accumulator,\r\n [`orderBy[${index}].Field`]: upperFirst(p.field),\r\n [`orderBy[${index}].Ascending`]: p.ascending,\r\n }),\r\n {}\r\n );\r\n}\r\n","import { numericUtils } from './numeric.utils';\r\n\r\nexport const arrayUtils = {\r\n removeMany,\r\n removeAt,\r\n removeRight,\r\n arrayFromRange,\r\n repeat,\r\n groupBy,\r\n findLast,\r\n distinct,\r\n sum,\r\n min,\r\n max,\r\n take,\r\n findRange,\r\n findLastRange\r\n};\r\n\r\nfunction removeMany(array: T[], valuesToRemove: T[]) {\r\n return array.filter(i => !valuesToRemove.some(v => v === i));\r\n}\r\n\r\nfunction removeAt(array: T[], index: number) {\r\n if (index < 0 || index >= array.length) return array;\r\n\r\n const copy = [...array];\r\n copy.splice(index, 1);\r\n\r\n return copy;\r\n}\r\n\r\nfunction removeRight(array: T[], n: number = 1) {\r\n if (n < 1) return array;\r\n if (array.length < n) return [];\r\n\r\n return take(array, array.length - n);\r\n}\r\n\r\nfunction arrayFromRange(min: number, max: number): number[] {\r\n const array = [];\r\n for (let i = min; i <= max; i++) {\r\n array.push(i);\r\n }\r\n\r\n return array;\r\n}\r\n\r\nfunction repeat(value: TValue, times: number): TValue[] {\r\n const result = [];\r\n\r\n for (let i = 0; i < times; i++) {\r\n result.push(value);\r\n }\r\n\r\n return result;\r\n}\r\n\r\nfunction groupBy(array: T[], keyGetter: (item: T) => TKey) {\r\n const map = new Map();\r\n array.forEach((item) => {\r\n const key = keyGetter(item);\r\n const collection = map.get(key);\r\n if (!collection) {\r\n map.set(key, [item]);\r\n } else {\r\n collection.push(item);\r\n }\r\n });\r\n return map;\r\n}\r\n\r\nfunction findLast(array: T[], comparer: (item: T) => boolean): T | undefined {\r\n if (Array.isArray(array) && typeof comparer === 'function') {\r\n for (let i = array.length - 1; i >= 0; i--) {\r\n const item = array[i];\r\n if (comparer(item)) {\r\n return item;\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nfunction distinct(array: T[], keyGetter: (item: T) => TKey) {\r\n if (Array.isArray(array) && typeof keyGetter === 'function') {\r\n const keys = new Set();\r\n const result: T[] = [];\r\n\r\n array.forEach(i => {\r\n const key = keyGetter(i);\r\n if (!keys.has(key)) {\r\n keys.add(key);\r\n result.push(i);\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n return [];\r\n}\r\n\r\nfunction sum(array: T[], valueGetter: (item: T) => number) {\r\n if (!Array.isArray(array) || typeof valueGetter !== 'function') {\r\n return 0;\r\n }\r\n\r\n let result = 0;\r\n for (let i = 0; i < array.length; i++) {\r\n const item = array[i];\r\n const valueRaw = valueGetter(item);\r\n const value = numericUtils.numberOrDefault(valueRaw);\r\n result += value;\r\n }\r\n return result;\r\n}\r\n\r\nfunction min(array: T[], valueGetter: (item: T) => TValue) {\r\n if (!Array.isArray(array) || !array.length) {\r\n return undefined;\r\n }\r\n\r\n return array.reduce(function (previous, current) {\r\n const p = valueGetter(previous);\r\n const c = valueGetter(current);\r\n\r\n return (p <= c) ? previous : current;\r\n });\r\n}\r\n\r\nfunction max(array: T[], valueGetter: (item: T) => TValue) {\r\n if (!Array.isArray(array) || !array.length) {\r\n return undefined;\r\n }\r\n\r\n return array.reduce(function (previous, current) {\r\n const p = valueGetter(previous);\r\n const c = valueGetter(current);\r\n\r\n return (p >= c) ? previous : current;\r\n });\r\n}\r\n\r\nfunction take(array: T[], length: number) {\r\n if (!Array.isArray(array) || !array.length || length <= 0) return [];\r\n\r\n if (array.length <= length) return array;\r\n\r\n const result = [...array];\r\n result.length = length;\r\n\r\n return result;\r\n}\r\n\r\nfunction findRange(list: T[], predicate: (item: T) => boolean) {\r\n if (!list.length) {\r\n return [-1, -1];\r\n }\r\n\r\n let foundStart = false;\r\n let foundEnd = false;\r\n\r\n return list.reduce((acc, item, index) => {\r\n const [start, end] = acc;\r\n\r\n if (!foundStart && predicate(item)) {\r\n foundStart = true;\r\n\r\n if (index === list.length - 1) {\r\n return [index, index];\r\n }\r\n\r\n return [index, end];\r\n }\r\n\r\n if (foundStart && !foundEnd) {\r\n if (predicate(item)) {\r\n return [start, index];\r\n }\r\n\r\n foundEnd = true;\r\n return [start, index - 1];\r\n }\r\n\r\n return acc;\r\n }, [-1, -1]);\r\n}\r\n\r\nfunction findLastRange(list: T[], predicate: (item: T) => boolean) {\r\n if (!list.length) {\r\n return [-1, -1];\r\n }\r\n\r\n let foundStart = false;\r\n let foundEnd = false;\r\n\r\n return list.reduceRight((acc, item, index) => {\r\n const [start, end] = acc;\r\n\r\n if (!foundEnd && predicate(item)) {\r\n foundEnd = true;\r\n\r\n if (index === 0) {\r\n return [index, index];\r\n }\r\n\r\n return [start, index];\r\n }\r\n\r\n if (foundEnd && !foundStart) {\r\n if (predicate(item)) {\r\n return [index, end];\r\n }\r\n\r\n foundStart = true;\r\n return [index + 1, end];\r\n }\r\n\r\n return acc;\r\n }, [-1, -1]);\r\n}\r\n","import { arrayUtils } from './array.utils';\r\nimport { formatUtils } from './format.utils';\r\nimport { numericUtils } from './numeric.utils';\r\nimport { stringUtils } from './string.utils';\r\nimport { constants } from '../constants/constants';\r\nimport { errorMessages } from '../constants/error.messages';\r\nimport { Bid } from '../types/bidding/Bid';\r\nimport { BwicPosition } from '../types/bwic/BwicPosition';\r\nimport { CompanySlim } from '../types/company/CompanySlim';\r\nimport { BidCompanyIdentifier } from '../types/bidding/BidCompanyIdentifier';\r\nimport { BwicProcessType, Process } from '../types/models/Process';\r\nimport { BidError } from '../types/state/BrokerDealerBiddingState';\r\nimport { OpenBiddingStatus } from '../types/enums/OpenBiddingStatus';\r\nimport { TradeStatus } from '../types/trades/TradeStatus';\r\nimport { round } from 'lodash';\r\nimport { BidderCompanySlim } from '../types/company/BidderCompanySlim';\r\nimport { Feedback } from '../types/bidding/Feedback';\r\n\r\nexport const biddingUtils = {\r\n getBidsByLevel,\r\n getBidLevel,\r\n groupBidsByLevel,\r\n canTradePosition,\r\n getCurrentBid,\r\n getBidCompanyIdentifier,\r\n parseBidCompanyIdentifier,\r\n validateBid,\r\n getBidderShortcode,\r\n getBidderName,\r\n getUniqueBidId,\r\n getUniqueBidIdFromFeedback\r\n}\r\n\r\nfunction getBidderShortcode(company: BidderCompanySlim) {\r\n const code = company.code.toUpperCase();\r\n return company.buyerPseudoOrderNumber ? `${code}-${company.buyerPseudoOrderNumber}` : code;\r\n}\r\n\r\nfunction getBidderName(company: BidderCompanySlim) {\r\n const code = company.code.toUpperCase();\r\n return company.buyerPseudoOrderNumber ? `${code}-${company.buyerPseudoOrderNumber}` : company.name;\r\n}\r\n\r\nfunction getBidsByLevel(bids: Bid[], level: number): Bid[] {\r\n if (!bids || !bids.length || !numericUtils.isNumber(level) || +level < 0) {\r\n return [];\r\n }\r\n\r\n const bidsByValue = groupBidsByLevel(bids);\r\n\r\n return bidsByValue[level] ?? [];\r\n}\r\n\r\nfunction getBidLevel(bid: Bid, bids: Bid[]): number | undefined {\r\n if (!bid || !bids || !bids.length) {\r\n return undefined;\r\n }\r\n\r\n const bidsByValue = groupBidsByLevel(bids);\r\n\r\n for (var i = 0; i < bidsByValue.length; i++) {\r\n const group = bidsByValue[i];\r\n\r\n if (group.some(b => b.id === bid.id)) {\r\n return i;\r\n }\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nfunction groupBidsByLevel(bids: Bid[]): Bid[][] {\r\n if (!bids || !bids.length) {\r\n return [];\r\n }\r\n\r\n const sortedBids = bids\r\n .filter(b => !b.pass)\r\n .sort((a, b) => +b.value - +a.value);\r\n\r\n const grouped: Map = arrayUtils.groupBy(sortedBids, (bid: Bid) => +bid.value);\r\n\r\n return [...grouped.values()];\r\n}\r\n\r\nfunction canTradePosition(position?: BwicPosition) {\r\n return (\r\n position != null &&\r\n position.bids != null &&\r\n position.bids.length > 0 &&\r\n position.bids.some(b => !b.pass) &&\r\n (position.trade == null || position.trade.status === TradeStatus.rejected)\r\n );\r\n}\r\n\r\n// Gets current bid for Broker-Dealer\r\n// BD bid list always contain the single actual bid or empty\r\nfunction getCurrentBid(bids: Bid[]) {\r\n const bid = bids && bids[0];\r\n return bid;\r\n}\r\n\r\n// company identifier: companyId or companyId-companyCode-buyerPseudoOrderNumber;\r\n// buyerPseudoOrderNumber: number | undefined, company: CompanySlim.ts\r\nfunction getBidCompanyIdentifier(bid: { buyerPseudoOrderNumber?: number, company: CompanySlim }): BidCompanyIdentifier {\r\n const identifier = bid.buyerPseudoOrderNumber\r\n ? `${bid.company.id}-${bid.company.code}-${bid.buyerPseudoOrderNumber}`\r\n : String(bid.company.id);\r\n\r\n return identifier as BidCompanyIdentifier;\r\n}\r\n\r\nexport type BidCompanyIdentifierParseResult = {\r\n brokerDealerCompanyId: number;\r\n brokerDealerCompanyCode?: string;\r\n buyerPseudoOrderNumber?: number;\r\n};\r\n\r\nfunction parseBidCompanyIdentifier(identifier: BidCompanyIdentifier): BidCompanyIdentifierParseResult | {} {\r\n if (stringUtils.isNullOrWhiteSpace(identifier)) {\r\n return {};\r\n }\r\n\r\n const [brokerDealerCompanyId, brokerDealerCompanyCode, buyerPseudoOrderNumber] = identifier.split('-');\r\n\r\n return {\r\n brokerDealerCompanyId: Number(brokerDealerCompanyId),\r\n brokerDealerCompanyCode,\r\n buyerPseudoOrderNumber: numericUtils.isNumber(buyerPseudoOrderNumber) ? +buyerPseudoOrderNumber : undefined\r\n };\r\n}\r\n\r\nfunction validateBid(\r\n currentBid: Bid | undefined,\r\n bid: { value?: string, pass?: boolean } | undefined,\r\n bwicProcess: Process,\r\n openBiddingStage2Level?: number\r\n): BidError {\r\n const errors: BidError = {};\r\n\r\n if (bid && !bid?.pass && bid?.value != null) {\r\n const currentBidLevel = numericUtils.numberOrDefault(currentBid?.value);\r\n const newBidLevel = numericUtils.numberOrDefault(bid.value);\r\n\r\n if (!numericUtils.isNumber(bid.value)) {\r\n errors.bid = errorMessages.invalidValue;\r\n } else if (currentBid && currentBidLevel > 0 && newBidLevel < currentBidLevel) {\r\n errors.bid = errorMessages.bidShouldBeGreater;\r\n } else if (currentBidLevel !== newBidLevel && (\r\n newBidLevel < constants.bidRange.min || newBidLevel > constants.bidRange.max)) {\r\n errors.bid = errorMessages.bidShouldBeBetween;\r\n } else if (\r\n bwicProcess.type === BwicProcessType.Live &&\r\n bwicProcess.stagedBiddingStatus === OpenBiddingStatus.stage1Ended &&\r\n bwicProcess.liveBidding != null &&\r\n bwicProcess.liveBidding.minBidIncrement &&\r\n openBiddingStage2Level &&\r\n (!currentBid || newBidLevel !== currentBidLevel) &&\r\n round((newBidLevel - openBiddingStage2Level), 4) < bwicProcess.liveBidding.minBidIncrement) {\r\n errors.bid = errorMessages.bidShouldBeGreaterThan(formatUtils.formatBid(openBiddingStage2Level + bwicProcess.liveBidding.minBidIncrement));\r\n } else if (\r\n [\r\n BwicProcessType.BestFootForward,\r\n BwicProcessType.JumpBall,\r\n BwicProcessType.TopX,\r\n BwicProcessType.Standard\r\n ].includes(bwicProcess.type) &&\r\n bwicProcess.minBidIncrement &&\r\n currentBidLevel &&\r\n newBidLevel &&\r\n newBidLevel !== currentBidLevel &&\r\n round((newBidLevel - currentBidLevel), 4) < bwicProcess.minBidIncrement\r\n ) {\r\n errors.bid = errorMessages.lessThenMinBidIncrement(formatUtils.formatBid(bwicProcess.minBidIncrement))\r\n }\r\n }\r\n\r\n return errors;\r\n}\r\n\r\nfunction getUniqueBidId(bid: { id: number, company: CompanySlim }) {\r\n return `${bid.id}-${bid.company.id}`;\r\n}\r\n\r\nfunction getUniqueBidIdFromFeedback(feedback: Feedback) {\r\n return getUniqueBidId({ id: feedback.bidId, company: feedback.brokerDealer })\r\n}\r\n","import moment from 'moment';\r\nimport { isNil } from 'lodash';\r\nimport arraystat from 'arraystat';\r\nimport { numericUtils } from './numeric.utils';\r\nimport { RatingGroup, ratingGroupValues } from '../types/dashboard/RatingGroup';\r\nimport { moneyUtils } from './money.utils';\r\n\r\nconst getArrayStats = (array) => arraystat(array);\r\n\r\nconst getChartData = (historyList, dateFormat, pxTalkLimit) => {\r\n const result = {\r\n x: [],\r\n y: [],\r\n lineX: [],\r\n lineY: [],\r\n markersX: [],\r\n markersY: [],\r\n kTalkY: [],\r\n kTalkX: [],\r\n sortedByDate: {},\r\n datesList: {}\r\n };\r\n for (let i = 0; i < historyList.length; i++) {\r\n const { pxTalks = [], bidsDueUtc = '', color, normalizedLevelEvalPriceTalk } = historyList[i];\r\n const date = moment(bidsDueUtc).format(dateFormat);\r\n result.datesList[date] = bidsDueUtc;\r\n if ((color !== null && color.level) || pxTalks.length || !isNil(normalizedLevelEvalPriceTalk)) {\r\n if (!result.sortedByDate[date]) {\r\n result.sortedByDate[date] = { pxTalk: [], kTalk: normalizedLevelEvalPriceTalk, color: 0 };\r\n }\r\n\r\n result.sortedByDate[date].pxTalk.push(...pxTalks.map(p => ({\r\n normalizedLevel: p.normalizedLevel > pxTalkLimit ? pxTalkLimit : p.normalizedLevel\r\n })));\r\n\r\n if (color !== null && color.normalizedLevel) {\r\n result.sortedByDate[date].color += 1\r\n }\r\n }\r\n }\r\n\r\n for (let i = 0; i < historyList.length; i++) {\r\n const { pxTalks = [], bidsDueUtc = '', color, normalizedLevelEvalPriceTalk } = historyList[i];\r\n const date = moment(bidsDueUtc).format(dateFormat);\r\n if (result.sortedByDate[date]) {\r\n if (pxTalks.length) {\r\n for (let k = 0; k < pxTalks.length; k++) {\r\n const pxTalk = pxTalks[k];\r\n result.y.push({\r\n value: pxTalk.normalizedLevel > pxTalkLimit ? pxTalkLimit : pxTalk.normalizedLevel,\r\n companyName: (pxTalk.company ? pxTalk.company.name : '')\r\n });\r\n result.x.push(date);\r\n }\r\n }\r\n\r\n if (!isNil(normalizedLevelEvalPriceTalk)) {\r\n const kTalkDateIndex = result.kTalkY.indexOf(date);\r\n\r\n if (kTalkDateIndex < 0) {\r\n result.kTalkX.push(date);\r\n result.kTalkY.push(normalizedLevelEvalPriceTalk);\r\n }\r\n }\r\n\r\n if (color && color.normalizedLevel) {\r\n const dateIndex = result.lineX.indexOf(date);\r\n\r\n if (dateIndex > -1) {\r\n result.lineY[dateIndex] = Math.round(\r\n (result.lineY[dateIndex] + color.normalizedLevel) / result.sortedByDate[date].color\r\n );\r\n } else {\r\n result.lineY.push(color.normalizedLevel);\r\n result.lineX.push(date);\r\n }\r\n\r\n result.sortedByDate[date].colorValue = result.lineY[dateIndex];\r\n\r\n if (dateIndex > -1 && result.markersX.indexOf(date) > -1) {\r\n result.markersX.splice(result.markersX.indexOf(date), 1);\r\n result.markersY.splice(result.markersX.indexOf(date), 1);\r\n }\r\n } else {\r\n if (result.markersX.indexOf(date) === -1 && result.lineX.indexOf(date) === -1) {\r\n result.markersX.push(date);\r\n result.markersY.push(arraystat(result.sortedByDate[date].pxTalk.map((px) => px.normalizedLevel)).median)\r\n } else {\r\n result.markersY[result.markersX.indexOf(date)] = arraystat(result.sortedByDate[date].pxTalk.map((px) => px.normalizedLevel)).median\r\n }\r\n }\r\n } else if (result.x.length) {\r\n result.y.push({ value: -50, companyName: '' });\r\n result.x.push(date);\r\n }\r\n }\r\n\r\n return result;\r\n};\r\n\r\nconst getXRange = (allDates, minXRange, range) => {\r\n const dates = allDates;\r\n const minRange = dates.length / 20;\r\n if (range && dates.length > range) {\r\n return [dates.length - range - minRange, dates.length - minRange];\r\n }\r\n\r\n const xRange = [-minRange, dates.length - minRange];\r\n const l = xRange[1] - xRange[0];\r\n if (l < minXRange) {\r\n xRange[0] = xRange[0] - l / 2;\r\n xRange[1] = xRange[1] + l / 2;\r\n }\r\n return xRange\r\n};\r\n\r\nconst getYRange = (charts) => {\r\n const maxMargin = 3.5;\r\n let roundTo = 1;\r\n const yValues = [];\r\n for (let i = 0; i < charts.length; i++) {\r\n if (charts[i].y !== undefined) {\r\n yValues.push(...charts[i].y);\r\n }\r\n }\r\n\r\n const range = yValues.every(v => v < 0)\r\n ? [0, 0]\r\n : yValues.reduce((val, current) => {\r\n if (!val[0] || val[0] < 0) {\r\n val[0] = current;\r\n }\r\n if (current && current > 0 && current < val[0]) {\r\n val[0] = current;\r\n }\r\n\r\n if (current > val[1]) {\r\n val[1] = current;\r\n }\r\n return val;\r\n }, [0, 0]);\r\n\r\n const difference = range[1] - range[0];\r\n if (difference > 5 && difference < 10) {\r\n roundTo = 5\r\n } else if (difference > 10 && difference < 50) {\r\n roundTo = 10\r\n } else if (difference > 50) {\r\n roundTo = 20\r\n }\r\n\r\n let min = range[0];\r\n let max = chartUtils.roundToNumber(range[1], roundTo);\r\n if ((range[1] - range[0]) > 0) {\r\n min = chartUtils.roundToNumber(range[0], roundTo, true);\r\n }\r\n if ((range[1] - range[0]) === 0) {\r\n max += 1\r\n }\r\n if (min > 0) {\r\n min -= roundTo\r\n }\r\n return [\r\n min <= 0 ? 0 : min,\r\n max + numericUtils.getPercentage(difference || 1, maxMargin)\r\n ]\r\n};\r\n\r\nconst setCursorByDiv = (chartDivId, cursorType) => {\r\n return () => {\r\n const divElement = document.getElementById(chartDivId);\r\n if (divElement) {\r\n const element = divElement.querySelector('.nsewdrag');\r\n element.style.cursor = cursorType\r\n }\r\n }\r\n};\r\n\r\nconst setCursor = (cursor) => {\r\n return (e) => {\r\n if (e.event && e.event.target) {\r\n e.event.target.style.cursor = cursor\r\n }\r\n }\r\n};\r\n\r\nconst getMoneyString = (amount, sign, showMM = true, round = false) => {\r\n let amountFormatted = '0MM'\r\n if(amount){\r\n amountFormatted = round\r\n ? moneyUtils.amountToRoundedMM(amount, showMM)\r\n : moneyUtils.amountToMM(amount, showMM)\r\n }\r\n\r\n return `${sign}${amountFormatted}`;\r\n}\r\n\r\nconst getRatingsForSearchUrl = (selectedRatings) => selectedRatings.reduce((result, rating) => {\r\n if (rating === RatingGroup.OTHER) {\r\n result = [...result, ...ratingGroupValues[RatingGroup.OTHER]]\r\n } else {\r\n result.push(rating);\r\n }\r\n return result;\r\n}, []);\r\n\r\nfunction roundToNumber(value, number, toMinus) {\r\n if (value && number) {\r\n const balance = value % number;\r\n if (balance) {\r\n if (toMinus) {\r\n return value - balance;\r\n } else {\r\n return value - balance + number;\r\n }\r\n }\r\n }\r\n return value\r\n}\r\n\r\nexport const chartUtils = {\r\n getChartData,\r\n getXRange,\r\n getYRange,\r\n getArrayStats,\r\n setCursorByDiv,\r\n setCursor,\r\n getMoneyString,\r\n getRatingsForSearchUrl,\r\n roundToNumber\r\n};\r\n\r\nexport const getRatingForSearchString = (rating) => {\r\n if (rating === RatingGroup.OTHER) {\r\n return [...ratingGroupValues[RatingGroup.OTHER]]\r\n }\r\n return [rating];\r\n};\r\n\r\nexport const getVolume = (money) => {\r\n if ((money / 1000000) < 1) {\r\n return moneyUtils.amountToMM(money, false)\r\n }\r\n return (money / 1000000).toFixed(0)\r\n};\r\n","import { CloSystemInfrastructures } from \"../types/clo-managers/CloSystemInfrastructures\";\r\nimport { arrayUtils } from \"./array.utils\";\r\n\r\nexport const groupCloSystemInfrastructure = (items: CloSystemInfrastructures[]) => {\r\n return arrayUtils.groupBy(items, i => i.type);\r\n}\r\n\r\nexport const getCloSystemInfrastructureNamesList = (items: CloSystemInfrastructures[]) => items.map(i => i.name).join(', ')\r\n","import moment from 'moment';\r\nimport { ratingSortOrder } from \"../types/enums/Rating\";\r\nimport { numericUtils } from './numeric.utils';\r\nimport { roles } from '../constants/roles';\r\nimport { tradeSettlementStatusTitle } from '../types/settlement/TradeSettlementStatus';\r\nimport { settlementAgreementStatusSortOrdering } from '../types/bid-as-dealer/SettlementAgreementStatus';\r\nimport { companyRoles } from \"../constants\";\r\nimport { nameUtils } from './name.utils';\r\nimport { isNil } from 'lodash';\r\nimport { transactionStatusesSortOrder } from '../types/amr-pipeline/enums/TransactionStatus';\r\n\r\nexport function compareRating(a, b) {\r\n if (ratingSortOrder[a] < ratingSortOrder[b]) {\r\n return -1;\r\n }\r\n if (ratingSortOrder[a] > ratingSortOrder[b]) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\n\r\nexport function compareRoleShortTitles(a, b) {\r\n const rolesA = a || [];\r\n const rolesB = b || [];\r\n const sortedRolesA = [rolesA.map(r => roles.getShortTitle(r))]\r\n .sort()\r\n .join(',');\r\n const sorderRolesB = [rolesB.map(r => roles.getShortTitle(r))]\r\n .sort()\r\n .join(',');\r\n return compareStrings(sortedRolesA, sorderRolesB);\r\n}\r\n\r\nexport function compareRoles(a, b) {\r\n const rolesA = a || [];\r\n const rolesB = b || [];\r\n const sortedRolesA = [rolesA.map(r => roles.getTitle(r))]\r\n .sort()\r\n .join(',');\r\n const sorderRolesB = [rolesB.map(r => roles.getTitle(r))]\r\n .sort()\r\n .join(',');\r\n return compareStrings(sortedRolesA, sorderRolesB);\r\n}\r\n\r\nexport function compareDates(a, b) {\r\n return new Date(a) - new Date(b)\r\n}\r\n\r\nexport function compareDatesNullable(a, b) {\r\n const aDate = a ? new Date(a): new Date(0);\r\n const bDate = b ? new Date(b): new Date(0);\r\n return aDate - bDate;\r\n}\r\n\r\nexport function compareDatesAsc(a, b) {\r\n const distantFuture = new Date(0);\r\n const dateA = a ? new Date(a) : distantFuture;\r\n const dateB = b ? new Date(b) : distantFuture;\r\n\r\n return dateA - dateB;\r\n}\r\n\r\nexport function compareDatesDesc(a, b) {\r\n const distantPast = new Date(0);\r\n const dateA = a ? new Date(a) : distantPast;\r\n const dateB = b ? new Date(b) : distantPast;\r\n\r\n return dateA - dateB;\r\n}\r\n\r\nexport function compareDateHours(a, b) {\r\n return new Date(a).setSeconds(0, 0) - new Date(b).setSeconds(0, 0)\r\n}\r\n\r\nexport function compareStrings(a, b) {\r\n return ((a || \"\").localeCompare(b || \"\"));\r\n}\r\n\r\nexport function compareBy(iteratee) {\r\n return function (a, b) {\r\n return (iteratee(a) || \"\").localeCompare(iteratee(b) || \"\");\r\n }\r\n}\r\n\r\nexport function compareIOI(a, b) {\r\n if (a.classReferenceName === b.classReferenceName) {\r\n if (a.investor.legalName === b.investor.legalName) {\r\n return compareNumbersWithNullAcs(a.dm, b.dm);\r\n }\r\n\r\n return compareStrings(a.investor.legalName, b.investor.legalName);\r\n }\r\n\r\n return compareStrings(a.classReferenceName, b.classReferenceName);\r\n}\r\n\r\nexport function compareNumbersWithNullAcs(a, b) {\r\n return numericUtils.numberOrDefault(a, Number.MIN_VALUE) - numericUtils.numberOrDefault(b, Number.MIN_VALUE);\r\n}\r\n\r\nexport function compareNumbersWithNullDesc(a, b) {\r\n return numericUtils.numberOrDefault(b, Number.MIN_VALUE) - numericUtils.numberOrDefault(a, Number.MIN_VALUE);\r\n}\r\n\r\nexport function compareCountries(a, b) {\r\n const countryA = a ? a.threeCharsCode : '';\r\n const countryB = b ? b.threeCharsCode : '';\r\n\r\n return countryA.localeCompare(countryB)\r\n}\r\n\r\nexport function compareDateAndMonthStamp(a, b) {\r\n const format = 'MM/YY';\r\n const aDate = a || '01/70';\r\n const bDate = b || '01/70';\r\n return moment(aDate, format).toDate() - moment(bDate, format).toDate();\r\n}\r\n\r\nexport function compareBoolean(a, b) {\r\n return (Boolean(a) === Boolean(b)) ? 0 : Boolean(a) ? -1 : 1;\r\n}\r\n\r\nexport function compareBooleanAndNull(a, b) {\r\n if (a === b) {\r\n return 0;\r\n }\r\n\r\n if (a || isNil(b)) {\r\n return 1;\r\n }\r\n\r\n return -1;\r\n}\r\n\r\nexport function compareNestedStrings(a, b, childrenKey) {\r\n const subA = a ? a[childrenKey] || '' : '';\r\n const subB = b ? b[childrenKey] || '' : '';\r\n return compareStrings(subA, subB);\r\n}\r\n\r\nexport function compareSettlementStatus(a, b) {\r\n return compareStrings(\r\n tradeSettlementStatusTitle[a],\r\n tradeSettlementStatusTitle[b]\r\n );\r\n}\r\n\r\nexport function compareBidAsDealerAgreementStatus(a, b) {\r\n return settlementAgreementStatusSortOrdering[a] - settlementAgreementStatusSortOrdering[b]\r\n}\r\n\r\n\r\nexport function compareSettlementAccounts(settlementAccountCountA, settlementAccountCountB, agreementA) {\r\n if (agreementA.signatory?.role === companyRoles.BrokerDealer) {\r\n return -1\r\n } else {\r\n return settlementAccountCountA - settlementAccountCountB\r\n }\r\n}\r\n\r\nconst classNameRank = {\r\n 'M': 0,\r\n 'X': 1,\r\n 'Y': 2,\r\n 'A': 3,\r\n 'B': 4,\r\n 'C': 5,\r\n 'D': 6,\r\n 'E': 7,\r\n 'F': 8,\r\n 'G': 9,\r\n 'Equity': 10\r\n}\r\n\r\nfunction getClassNameRank(className) {\r\n const rank = className?.substring(0, 1).toUpperCase() ?? classNameRank.Equity;\r\n return classNameRank[rank] ?? classNameRank.Equity;\r\n}\r\nexport function compareClassName(a, b) {\r\n const aRank = getClassNameRank(a);\r\n const bRank = getClassNameRank(b);\r\n return aRank - bRank || compareStrings(a, b)\r\n}\r\n\r\nexport function compareEmpty(a, b) {\r\n const rankA = a == null ? 1 : -1;\r\n const rankB = b == null ? 1 : -1;\r\n\r\n return rankA - rankB;\r\n}\r\n\r\nexport function compareFullNames(a, b) {\r\n const aFirstName = a ? a.firstName : '';\r\n const aLastName = a ? a.lastName : '';\r\n const bFirstName = b ? b.firstName : '';\r\n const bLastName = b ? b.lastName : '';\r\n\r\n const aFullName = nameUtils.getFullName(aFirstName, aLastName);\r\n const bFullName = nameUtils.getFullName(bFirstName, bLastName);\r\n\r\n return (aFullName || '').localeCompare(bFullName || '');\r\n}\r\n\r\nexport function compareTransactionStatuses(a, b) {\r\n return transactionStatusesSortOrder[a] - transactionStatusesSortOrder[b];\r\n};\r\n","import moment from 'moment';\r\nimport { stringUtils } from './string.utils';\r\nimport { constants } from '../constants/constants';\r\nimport { numericUtils } from './numeric.utils';\r\nimport clone from 'lodash/clone';\r\n\r\nexport default class dateTimeUtils {\r\n static currentUtcDate() {\r\n return moment().format(constants.dateTimeFormatUtc);\r\n }\r\n\r\n static timestampToUtcString(timestamp) {\r\n return moment(timestamp, constants.timeFormat).format(constants.dateTimeFormatUtc);\r\n }\r\n\r\n static timestampFromUtcString(utcString, timeZone) {\r\n if (timeZone && timeZone.abbreviation) {\r\n const time = moment.utc(utcString).format(constants.timeFormat);\r\n return `${time} ${timeZone.abbreviation}`;\r\n }\r\n return moment.utc(utcString).format(constants.timeFormat);\r\n }\r\n\r\n static utcToLocalString(utcString, customDateTimeFormat) {\r\n const dateTimeFormat = customDateTimeFormat || constants.dateTimeFormat;\r\n return moment.utc(utcString).local().format(dateTimeFormat);\r\n }\r\n\r\n static duration(utcString) {\r\n if (!utcString) {\r\n return '';\r\n }\r\n\r\n const now = moment.utc();\r\n const date = moment.utc(utcString);\r\n const minutes = now.diff(date, 'minutes');\r\n\r\n if (minutes === 0) {\r\n return 'just now';\r\n } else if (minutes === 1) {\r\n return '1 min ago';\r\n } else if (minutes < 60) {\r\n return `${minutes} mins ago`;\r\n } else {\r\n const days = now.startOf('day').diff(moment.utc(utcString).startOf('day'), 'days');\r\n if (days === 0) {\r\n return `today at ${moment.utc(utcString).local().format(constants.timeFormat)}`;\r\n } else if (days === 1) {\r\n return `yesterday at ${moment.utc(utcString).local().format(constants.timeFormat)}`;\r\n }\r\n }\r\n\r\n return dateTimeUtils.utcToLocalString(utcString);\r\n }\r\n\r\n static durationDays(date) {\r\n const now = moment();\r\n const currentDate = moment(date);\r\n const days = now.startOf('day').diff(currentDate.startOf('day'), 'days');\r\n if (days === 0) {\r\n return 'Today'\r\n }\r\n if (days === 1) {\r\n return 'Yesterday'\r\n }\r\n if (days <= 6) {\r\n return `${days} Days Ago`\r\n }\r\n return currentDate.format(constants.dateFormat);\r\n }\r\n\r\n static timeLeftToDateFrom(utcString, fromDateString) {\r\n if (!utcString || !fromDateString) {\r\n return 0;\r\n }\r\n\r\n const date = moment.utc(utcString);\r\n const fromDate = moment.utc(fromDateString);\r\n\r\n const days = date.diff(fromDate, 'days');\r\n const weeks = date.diff(fromDate, 'weeks');\r\n const month = date.diff(fromDate, 'month');\r\n const years = date.diff(fromDate, 'years');\r\n\r\n if (days <= 0) {\r\n return 0;\r\n } else if (days === 1) {\r\n return `${days} day`\r\n } else if (days < 7) {\r\n return `${days} days`\r\n } else if (days < 61) {\r\n return `${weeks} w`\r\n } else if (days < 366) {\r\n return `${month} mo`\r\n } else {\r\n return `${month % 12 ? (month / 12).toFixed(1) : years} yrs`;\r\n }\r\n }\r\n\r\n static yrsLeftToDateFrom(utcString, fromDateString, showSuffix = true) {\r\n if (!utcString || !fromDateString) {\r\n return 0;\r\n }\r\n\r\n const date = moment.utc(utcString);\r\n const fromDate = moment.utc(fromDateString);\r\n\r\n const days = date.diff(fromDate, 'days');\r\n\r\n return days > 0 ? `${(days / 365).toFixed(2)} ${showSuffix ? 'yrs' : ''}` : 0;\r\n }\r\n\r\n static parseDate(date, format) {\r\n if (date && format) {\r\n const dateMoment = moment(date, format, true).startOf(\"day\");\r\n return dateMoment.isValid() ? dateMoment.toDate() : undefined;\r\n }\r\n return date;\r\n }\r\n\r\n // dateStamp: MM/YY\r\n static parseMonthAndYearStamp(dateStamp) {\r\n if (stringUtils.isNullOrWhiteSpace(dateStamp)) {\r\n return {};\r\n }\r\n\r\n function checkRange(number, min, max) {\r\n return number >= min && number <= max;\r\n }\r\n\r\n const [monthRaw, yearRaw] = String(dateStamp).split('/');\r\n\r\n const isMonthValid =\r\n !stringUtils.isNullOrWhiteSpace(monthRaw) &&\r\n numericUtils.isNumber(monthRaw.trim()) &&\r\n checkRange(+(monthRaw.trim()), 1, 12);\r\n\r\n const isYearValid =\r\n !stringUtils.isNullOrWhiteSpace(yearRaw) &&\r\n numericUtils.isNumber(yearRaw.trim()) &&\r\n checkRange(+(yearRaw.trim()), 0, 99);\r\n\r\n\r\n const month = numericUtils.numberOrDefault(monthRaw, NaN);\r\n const year = numericUtils.numberOrDefault(yearRaw, NaN);\r\n\r\n return { month, year, isMonthValid, isYearValid };\r\n }\r\n\r\n static isToday(date) {\r\n return moment.parseZone(date).isSame(moment(), 'day');\r\n }\r\n\r\n static changeDateTimeZone(date, targetTimeZone, keepTime = true) {\r\n return keepTime\r\n ? moment(date).utcOffset(0, true).tz(targetTimeZone, true)\r\n : moment(date).tz(targetTimeZone);\r\n }\r\n\r\n static setTime(date, time) {\r\n const momentDate = moment(time)\r\n return moment(date)\r\n .set({\r\n hour: momentDate.format('H'),\r\n minute: momentDate.format('m'),\r\n second: momentDate.format('s'),\r\n millisecond: 0\r\n })\r\n }\r\n\r\n static timeSpan(hours = 0, minutes = 0, seconds = 0) {\r\n const padZero = value => String(value).padStart(2, '0');\r\n\r\n const timeInSec = seconds + (minutes * 60) + (hours * 3600)\r\n\r\n const hh = Math.floor(timeInSec / 3600);\r\n const mm = Math.floor(timeInSec % 3600 / 60);\r\n const ss = Math.floor(timeInSec % 3600 % 60);\r\n\r\n return `${padZero(hh)}:${padZero(mm)}:${padZero(ss)}`;\r\n }\r\n\r\n static parseTimeSpan(timeSpan) {\r\n const [hours, minutes, seconds] = (timeSpan == null ? '' : String(timeSpan)).split(\":\");\r\n\r\n return {\r\n hours: numericUtils.numberOrDefault(hours),\r\n minutes: numericUtils.numberOrDefault(minutes),\r\n totalMinutes: numericUtils.numberOrDefault(Number(hours) * 60 + Number(minutes)),\r\n seconds: numericUtils.numberOrDefault(seconds),\r\n raw: { hours, minutes, seconds }\r\n };\r\n }\r\n\r\n static getMaxDate(dates) {\r\n return dates.length ? moment.max(dates.map(d => moment(d))).toDate() : undefined;\r\n }\r\n\r\n static getLastBusinessDay() {\r\n let workday = moment();\r\n let day = workday.day();\r\n let diff = 1;\r\n if (day === 0 || day === 1){ \r\n diff = day + 2;\r\n }\r\n return workday.subtract(diff, 'days');\r\n }\r\n\r\n static isDayBefore(d1, d2) {\r\n const day1 = clone(d1).setHours(0, 0, 0, 0);\r\n const day2 = clone(d2).setHours(0, 0, 0, 0);\r\n return day1 < day2;\r\n }\r\n\r\n static isDayAfter(d1, d2) {\r\n const day1 = clone(d1).setHours(0, 0, 0, 0);\r\n const day2 = clone(d2).setHours(0, 0, 0, 0);\r\n return day1 > day2;\r\n }\r\n\r\n static resetTimeZone(date) {\r\n if (!date) {\r\n return null;\r\n }\r\n\r\n const parsedDate = moment.parseZone(date);\r\n const localDate = moment({\r\n year: parsedDate.year(),\r\n month: parsedDate.month(),\r\n day: parsedDate.date(),\r\n hour: parsedDate.hour(),\r\n minute: parsedDate.minute(),\r\n second: parsedDate.second(),\r\n millisecond: parsedDate.millisecond(),\r\n });\r\n return localDate.toDate();\r\n }\r\n}\r\n","import { OriginatingTransaction } from \"../types/amr-pipeline/models/OriginatingTransaction\";\r\nimport { OriginatingTransactionClass } from \"../types/amr-pipeline/models/OriginatingTransactionClass\";\r\nimport { OriginatingTransactionPortfolioItem } from \"../types/amr-pipeline/models/OriginatingTransactionPortfolioItem\";\r\n\r\nfunction calcTargetPar(transaction: OriginatingTransaction): number {\r\n if (!transaction.portfolio) {\r\n return 0;\r\n }\r\n\r\n return transaction.portfolio.reduce((accumulator, p: OriginatingTransactionPortfolioItem) =>\r\n accumulator + p.targetPar\r\n , 0);\r\n}\r\n\r\nfunction calcBidPrice(transaction: OriginatingTransaction): number {\r\n if (!transaction.portfolio || !transaction.portfolio.length) {\r\n return 0;\r\n }\r\n\r\n const targetParSum = transaction.portfolio.reduce((accumulator, p) =>\r\n p.indicativeBid ? accumulator + p.targetPar : accumulator\r\n , 0);\r\n\r\n if (!targetParSum) {\r\n return 0;\r\n }\r\n\r\n const indicativeBidSumWeightedByTargetPar = transaction.portfolio.reduce(\r\n (accumulator, p) => accumulator + p.indicativeBid * p.targetPar\r\n , 0);\r\n\r\n return indicativeBidSumWeightedByTargetPar / targetParSum;\r\n}\r\n\r\nfunction calcAskPrice(transaction: OriginatingTransaction): number {\r\n if (!transaction.portfolio || !transaction.portfolio.length) {\r\n return 0;\r\n }\r\n\r\n const targetParSum = transaction.portfolio.reduce((accumulator, p) =>\r\n p.indicativeAsk ? accumulator + p.targetPar : accumulator\r\n , 0);\r\n\r\n if (!targetParSum) {\r\n return 0;\r\n }\r\n\r\n const indicativeAskSumWeightedByTargetPar = transaction.portfolio.reduce(\r\n (accumulator, p) => accumulator + p.indicativeAsk * p.targetPar\r\n , 0);\r\n\r\n return indicativeAskSumWeightedByTargetPar / targetParSum;\r\n}\r\n\r\nfunction calcRatedNotes(transaction: OriginatingTransaction): number {\r\n return transaction.classes.reduce((accumulator, t: OriginatingTransactionClass) =>\r\n !t.equity && t.balance ? accumulator + t.balance : accumulator\r\n , 0);\r\n}\r\n\r\nfunction calcSubNotes(transaction: OriginatingTransaction): number {\r\n return transaction.classes.reduce((accumulator, t: OriginatingTransactionClass) =>\r\n t.equity && t.balance ? accumulator + t.balance : accumulator\r\n , 0);\r\n}\r\n\r\nfunction calcPurchaseAssets(transaction: OriginatingTransaction): number {\r\n const askPrice = calcAskPrice(transaction);\r\n return askPrice\r\n ? (askPrice * calcTargetPar(transaction))\r\n : 0\r\n}\r\n\r\nexport const dealStructureUtils = {\r\n calcTargetPar,\r\n calcBidPrice,\r\n calcAskPrice,\r\n calcPurchaseAssets,\r\n calcRatedNotes,\r\n calcSubNotes,\r\n};\r\n","import { isNaN, isNil } from 'lodash';\r\nimport { Primitive } from './types';\r\n\r\nexport const defaultIteratee = (value: T) => value.toString();\r\n\r\nexport const isPrimitive = (value: unknown): value is Primitive => {\r\n return ['string', 'number', 'boolean', 'undefined'].includes(typeof value)\r\n || value === null\r\n || value instanceof Date;\r\n};\r\n\r\nexport const noValue = (value: unknown) => {\r\n if (typeof value === 'string' && value === '') {\r\n return true;\r\n }\r\n\r\n return isNil(value) || isNaN(value);\r\n};\r\n","\r\nimport { isNil, isEqual, uniqBy } from 'lodash';\r\nimport {\r\n ObjectConfig,\r\n DifferenceConfig,\r\n DifferenceType,\r\n Dynamics,\r\n Iteratee,\r\n ObjectArrayConfig,\r\n ObjectArrayDifference,\r\n PrimitiveDifference,\r\n Traverse,\r\n Difference,\r\n ObjectArrayItemDifference,\r\n} from './types';\r\nimport { defaultIteratee, isPrimitive, noValue } from './utils';\r\n\r\nexport const Differ = (config: DifferenceConfig = {}) => {\r\n const defaultObjectConfig: ObjectConfig = {\r\n traverse: Traverse.Deep,\r\n };\r\n\r\n const withIteratee = (iteratee: Iteratee) => (a: K) => (b: K) => iteratee(a) === iteratee(b);\r\n\r\n const getDerivedValue = (current?: K, previous?: K) => {\r\n if (typeof(current) === 'boolean' || typeof(previous) === 'boolean') {\r\n return current;\r\n }\r\n\r\n return current || previous;\r\n };\r\n\r\n const getDynamics = (current?: K, previous?: K) => {\r\n if (typeof current !== \"number\" || typeof previous !== \"number\") {\r\n return undefined;\r\n }\r\n\r\n if (current === previous) {\r\n return undefined;\r\n }\r\n\r\n if (previous === undefined) {\r\n return Dynamics.Increased;\r\n }\r\n\r\n if (current === undefined) {\r\n return Dynamics.Decreased;\r\n }\r\n\r\n return current > previous ? Dynamics.Increased : Dynamics.Decreased;\r\n }\r\n\r\n const getPrimitiveDifferenceType = (previousValue?: K, currentValue?: K): DifferenceType => {\r\n if ((noValue(previousValue) && noValue(currentValue)) || isEqual(previousValue, currentValue)) {\r\n return DifferenceType.Unchanged;\r\n }\r\n\r\n if (noValue(previousValue) && !noValue(currentValue)) {\r\n return DifferenceType.Added;\r\n }\r\n\r\n if (!noValue(previousValue) && noValue(currentValue)) {\r\n return DifferenceType.Removed;\r\n }\r\n\r\n return DifferenceType.Updated;\r\n }\r\n\r\n const getArrayItemDifferenceType = (iteratee: Iteratee, previousList: K[] = [], currentList: K[] = []) => {\r\n return (item: K) => {\r\n const byIteratee = withIteratee(iteratee);\r\n\r\n const previous = previousList.find(byIteratee(item));\r\n const current = currentList.find(byIteratee(item));\r\n\r\n // Present in both current and previous arrays — Unchanged\r\n if (previous && current) {\r\n return DifferenceType.Unchanged;\r\n }\r\n\r\n // Present only in previous array — Removed\r\n if (previous) {\r\n return DifferenceType.Removed;\r\n }\r\n\r\n // Otherwise — Added\r\n return DifferenceType.Added;\r\n };\r\n }\r\n\r\n const findPrimitiveDifference = (\r\n previousValue?: K,\r\n currentValue?: K\r\n ): PrimitiveDifference => ({\r\n previousValue,\r\n currentValue,\r\n derivedValue: getDerivedValue(currentValue, previousValue),\r\n type: getPrimitiveDifferenceType(previousValue, currentValue),\r\n dynamics: getDynamics(currentValue, previousValue),\r\n });\r\n\r\n const findArrayDifference = (\r\n config: ObjectArrayConfig,\r\n previousValue: K[],\r\n currentValue: K[]\r\n ): ObjectArrayDifference => {\r\n const {\r\n iteratee = defaultIteratee,\r\n traverse = Traverse.Deep,\r\n nestedConfig = undefined,\r\n } = config;\r\n\r\n const byIteratee = withIteratee(iteratee);\r\n\r\n const uniqItems = uniqBy([...previousValue, ...currentValue], iteratee);\r\n\r\n return uniqItems.map((item: K) => {\r\n const type = getArrayItemDifferenceType(iteratee, previousValue, currentValue)(item);\r\n\r\n const previousItem = previousValue?.find(byIteratee(item));\r\n const currentItem = currentValue?.find(byIteratee(item));\r\n\r\n const result = {\r\n type,\r\n previousValue: previousItem,\r\n currentValue: currentItem,\r\n derivedValue: currentItem || previousItem,\r\n difference: {},\r\n id: iteratee(item),\r\n } as ObjectArrayItemDifference;\r\n\r\n const primitiveItems = isPrimitive(previousItem) && isPrimitive(currentItem);\r\n const shallowTraverse = traverse === Traverse.Shallow;\r\n\r\n // Skip deep check on Shallow traverse or when one of objects is added/removed\r\n if (shallowTraverse || primitiveItems) {\r\n return {\r\n ...result,\r\n type: getPrimitiveDifferenceType(previousItem, currentItem),\r\n };\r\n }\r\n\r\n const differ = Differ(nestedConfig);\r\n const difference = differ(previousItem, currentItem);\r\n\r\n // Top-level check will return Unchanged type, but we should derive more\r\n // previse difference type from the differences in nested object items\r\n if (type === DifferenceType.Unchanged) {\r\n const changedDifferenceType = Object.values(difference).reduce((acc: DifferenceType, field: PrimitiveDifference) => {\r\n if (field.type !== DifferenceType.Unchanged) {\r\n return DifferenceType.Updated;\r\n }\r\n\r\n return acc;\r\n }, type);\r\n\r\n return {\r\n ...result,\r\n type: changedDifferenceType,\r\n difference,\r\n };\r\n }\r\n\r\n return {\r\n ...result,\r\n difference,\r\n };\r\n });\r\n }\r\n\r\n const findObjectDifference = (previousValue?: T, currentValue?: T): Difference => {\r\n if (isNil(previousValue) && isNil(currentValue)) {\r\n throw new Error('Both current and previous values cannot be undefined');\r\n }\r\n\r\n const fields = Object.keys({ ...previousValue, ...currentValue }) as (keyof T)[];\r\n\r\n return fields.reduce((acc, key: keyof T) => {\r\n const fieldConfig = (config[key] as ObjectConfig) || defaultObjectConfig;\r\n const { traverse } = fieldConfig;\r\n\r\n if (traverse === Traverse.Skip) {\r\n return acc;\r\n }\r\n\r\n const current = currentValue && currentValue[key];\r\n const previous = previousValue && previousValue[key];\r\n\r\n if (current instanceof Array || previous instanceof Array) {\r\n return {\r\n ...acc,\r\n [key]: findArrayDifference(fieldConfig, (previous || []) as Object[], (current || []) as Object[]),\r\n };\r\n }\r\n\r\n\r\n if ((isPrimitive(current) && isPrimitive(previous)) || traverse === Traverse.Shallow) {\r\n return {\r\n ...acc,\r\n [key]: findPrimitiveDifference(previous, current),\r\n };\r\n }\r\n\r\n const nestedConfig = fieldConfig?.nestedConfig;\r\n const differ = Differ(nestedConfig);\r\n\r\n return {\r\n ...acc,\r\n [key]: differ(previous as Object, current as Object),\r\n };\r\n }, {});\r\n }\r\n\r\n return (previousValue?: T, currentValue?: T): Difference => {\r\n if (isNil(previousValue) && isNil(currentValue)) {\r\n return {};\r\n }\r\n\r\n return findObjectDifference(previousValue, currentValue);\r\n }\r\n};\r\n","import { Differ } from './Differ';\r\n\r\nexport default Differ;\r\n","export type Primitive = string | number | boolean | Date;\r\n\r\nexport enum DifferenceType {\r\n Added = \"added\",\r\n Updated = \"updated\",\r\n Removed = \"removed\",\r\n Unchanged = \"unchanged\",\r\n}\r\n\r\nexport enum Dynamics {\r\n Increased = \"increased\",\r\n Decreased = \"decreased\",\r\n}\r\n\r\nexport enum Traverse {\r\n /** Perform deep traverse of objects and arrays */\r\n Deep,\r\n\r\n /** Perform shallow traverse of objects and arrays */\r\n Shallow,\r\n\r\n /** Do not traverse field */\r\n Skip,\r\n}\r\n\r\nexport type Iteratee = (value: T) => Primitive;\r\n\r\ninterface BaseDifference {\r\n /**\r\n * Value in initial object\r\n */\r\n previousValue?: T;\r\n\r\n /**\r\n * Value in current object\r\n */\r\n currentValue?: T;\r\n\r\n /**\r\n * Derived value.\r\n * For added, updated unchanged difference types — equals to `currentValue`.\r\n * For deleted differenceType — equals to `previousValue`\r\n */\r\n derivedValue?: T;\r\n type: DifferenceType;\r\n}\r\n\r\nexport interface PrimitiveDifference extends BaseDifference {\r\n dynamics?: Dynamics;\r\n}\r\n\r\nexport interface ObjectArrayItemDifference extends BaseDifference {\r\n difference?: Difference;\r\n id: Primitive;\r\n}\r\n\r\nexport type ObjectArrayDifference = ObjectArrayItemDifference[];\r\n\r\ntype ObjectFieldDifference = T extends unknown[]\r\n ? ObjectArrayDifference\r\n : T extends Primitive\r\n ? PrimitiveDifference\r\n : Difference;\r\n\r\nexport type Difference = Partial<{\r\n [K in keyof T]: ObjectFieldDifference;\r\n}>;\r\n\r\nexport interface ObjectConfig {\r\n traverse?: Traverse;\r\n iteratee?: Iteratee;\r\n nestedConfig?: DifferenceConfig;\r\n}\r\n\r\nexport type ObjectArrayConfig = ObjectConfig;\r\n\r\nexport type DifferenceConfig = {\r\n [K in keyof T]?: T[K] extends Primitive\r\n ? never\r\n : T[K] extends unknown[]\r\n ? ObjectArrayConfig\r\n : T[K] extends unknown\r\n ? ObjectConfig\r\n : never;\r\n}\r\n","import { BwicStatus } from '../types/enums/BwicStatus';\r\nimport { SettlementAgentAgreement } from '../types/bid-as-dealer/SettlementAgentAgreement';\r\nimport { SettlementAgreementStatus } from '../types/bid-as-dealer/SettlementAgreementStatus';\r\nimport { apiUtils } from './api.utils';\r\nimport { BrokerDealerCompanySlim } from '../types/company/BrokerDealerCompanySlim';\r\nimport { compareBoolean } from './compare.utils';\r\nimport { CompanyStatus } from '../types/company/CompanyStatus';\r\nimport { Trade } from '../types/trades/Trade';\r\n\r\nexport function canBid(\r\n bwicStatus: BwicStatus,\r\n isColorDistribution: boolean,\r\n isTradedAway: boolean,\r\n agreement?: SettlementAgentAgreement,\r\n trade?: Trade,\r\n) {\r\n return (\r\n (!!agreement && agreement.agreementStatus === SettlementAgreementStatus.confirmed) &&\r\n (bwicStatus === BwicStatus.scheduled || bwicStatus === BwicStatus.bidding) &&\r\n !isColorDistribution &&\r\n !isTradedAway &&\r\n trade == null\r\n );\r\n}\r\n\r\nexport const getClearingBankConfirmedAgreementsByDealer = (agreements: SettlementAgentAgreement[]) => {\r\n const clearingBankConfirmedAgreements = agreements.filter(a =>\r\n a.settlementAgent.isClearingBank &&\r\n a.agreementStatus === SettlementAgreementStatus.confirmed\r\n );\r\n return apiUtils.normalize(clearingBankConfirmedAgreements, a => a.settlementAgent.id, a => a.agreementStatus);\r\n};\r\n\r\nexport const sortDealersByConfirmedAgreement = (dealers: BrokerDealerCompanySlim[], agreements: SettlementAgentAgreement[]) => {\r\n const agreementsByDealer = getClearingBankConfirmedAgreementsByDealer(agreements);\r\n return [...dealers].sort((a, b) => {\r\n return (\r\n compareBoolean(agreementsByDealer[a.id] && a.status === CompanyStatus.active, agreementsByDealer[b.id] && b.status === CompanyStatus.active) ||\r\n a.name.localeCompare(b.name)\r\n );\r\n })\r\n};\r\n","import { Rating } from '../types/enums/Rating';\r\nimport { AlertOption, RatingPreference } from '../types/email-preferences/EmailPreferences';\r\nimport { constants } from '../constants/constants';\r\nimport { Currency } from '../types/enums/Currency';\r\nimport { AlertEnabledState } from '../types/enums/AlertEnabledState';\r\n\r\nconst getDefaultRatingPreferences = (rating: Rating): RatingPreference => ({\r\n rating,\r\n isEUR: false,\r\n isUSD: false,\r\n minSize: constants.emailPreferencesSizeRange.min,\r\n maxSize: constants.emailPreferencesSizeRange.max\r\n});\r\n\r\nconst isCurrencyActive = (ratingPreference: RatingPreference, currency: Currency) => {\r\n return (\r\n (currency === Currency.USD && ratingPreference.isUSD) ||\r\n (currency === Currency.EUR && ratingPreference.isEUR)\r\n );\r\n}\r\n\r\n\r\nconst convertAlertEnabledStateToAlertOption = (value: AlertEnabledState, activeAlertOption = AlertOption.Instant) => {\r\n return value === AlertEnabledState.Disabled ? AlertOption.Never : activeAlertOption;\r\n}\r\n\r\nconst alertOptionByPortfolioAlertEnabledState = {\r\n [AlertOption.Daily]: AlertEnabledState.Enabled,\r\n [AlertOption.Instant]: AlertEnabledState.Enabled,\r\n [AlertOption.Periodic]: AlertEnabledState.Enabled,\r\n [AlertOption.Never]: AlertEnabledState.Disabled\r\n}\r\n\r\nconst convertAlertOptionToAlertEnabledState = (value: AlertOption) => {\r\n return alertOptionByPortfolioAlertEnabledState[value];\r\n}\r\n\r\nexport const emailPreferencesUtils = {\r\n getDefaultRatingPreferences,\r\n isCurrencyActive,\r\n convertAlertEnabledStateToAlertOption,\r\n convertAlertOptionToAlertEnabledState\r\n};\r\n","import { keys } from 'lodash';\r\n\r\nconst getKeys = (someEnum: { [key: string]: string | number }) => keys(someEnum).filter(x => !(parseInt(x) >= 0))\r\n\r\nexport const enumsUtils = {\r\n getKeys,\r\n}\r\n","import { toArray } from 'lodash';\r\nimport { FilterBooleanGroup, FilterDateGroup, FilterGroup, FilterSelectGroup, FilterType } from '../../types/filters/FilterGroup';\r\nimport { CommonFilter } from '../../types/filters/FilterState';\r\nimport { selectedDateOptions } from '../amr-pipeline-filter.utils';\r\nimport { filterUtils, getYearsRange } from './filter.utils';\r\n\r\nexport function compareStrings(value: string | undefined, group: FilterSelectGroup) {\r\n return group.filter.some(c => c.selected && String(c.value)?.localeCompare(String(value), undefined, { sensitivity: 'accent' }) === 0)\r\n}\r\n\r\nexport function compareNumbers(value: number, group: FilterSelectGroup) {\r\n return group.filter.some(c => c.selected && Number(c.value) === Number(value))\r\n}\r\n\r\nexport function compareBoolean(value: boolean | undefined, group: FilterBooleanGroup) {\r\n return Boolean(value) === Boolean(group.filter.selectedOption)\r\n}\r\n\r\nexport function compareBooleanStrict(group: FilterBooleanGroup, value?: boolean | null,) {\r\n if (value == null) return false\r\n return compareBoolean(value, group)\r\n}\r\n\r\nexport function compareByDateRange(date: Date | undefined, filter: FilterDateGroup) {\r\n const periodDate = selectedDateOptions(filter);\r\n if (periodDate.from || periodDate.to) {\r\n return filterUtils.filerByDateRange(date, periodDate.from, periodDate.to);\r\n }\r\n return true\r\n}\r\n\r\nexport function compareByDateYearRange(filter: FilterDateGroup, date?: Date, closingDate?: Date) {\r\n const periodEndYears = getYearsRange(filter);\r\n if (periodEndYears.from || periodEndYears.to) {\r\n return filterUtils.filterByYearIncrement(Number(periodEndYears.from), Number(periodEndYears.to), date, closingDate);\r\n }\r\n return compareByDateRange(date, filter)\r\n}\r\n\r\nexport function getSelectedFilters(filters: CommonFilter) {\r\n return toArray(filters).reduce<{ [key: string]: boolean }>((result, current: FilterGroup) => {\r\n if (current.type === FilterType.Select && (current.filter as [])?.some((c: { selected: boolean }) => c.selected))\r\n result[current.key] = true;\r\n if (current.type === FilterType.DateWithYearsRange && (current.filter as { selectedOption: boolean })?.selectedOption)\r\n result[current.key] = true;\r\n if (current.type === FilterType.BooleanRadio && (current.filter as { selectedOption: boolean })?.selectedOption != null)\r\n result[current.key] = true;\r\n if (current.type === FilterType.Date && (current.filter as { selectedOption: boolean })?.selectedOption)\r\n result[current.key] = true;\r\n if (current.type === FilterType.YearsDate && (current.filter as { selectedOption: boolean })?.selectedOption)\r\n result[current.key] = true;\r\n\r\n return result\r\n }, {});\r\n}\r\n","import moment, { Moment, MomentInput } from 'moment';\r\nimport { DateInterval, DateAfter } from 'react-day-picker';\r\nimport { constants } from '../../constants';\r\nimport { errorMessages } from '../../constants/error.messages';\r\nimport { TFilter, TFilterType } from '../../types/filters/FilterState';\r\nimport isEqual from 'lodash/isEqual';\r\nimport { keys, mapValues, pick } from 'lodash';\r\nimport { dateRangeFilterOptions } from '../../constants/date-range.filter';\r\nimport { getRangeFromDateOption } from '../amr-pipeline.utils';\r\nimport { DateFilterOption } from '../../types/filters/DateFilterOption';\r\nimport { DateFilterOptions, FilterDateGroup, FilterGroup, FilterType } from '../../types/filters/FilterGroup';\r\nimport { numericUtils } from '../numeric.utils';\r\nimport { selectedDateOptions } from '../amr-pipeline-filter.utils';\r\n\r\nexport const filterUtils = {\r\n validateDate,\r\n validateFromDate,\r\n validateToDate,\r\n isFilterChanged,\r\n filterByYearIncrement,\r\n filerByDateRange,\r\n};\r\n\r\nfunction pickDataToCompare(filter: FilterGroup) {\r\n const pickDates = (filter: FilterDateGroup) => {\r\n const key = filter.filter.selectedOption?.key;\r\n const customDates = selectedDateOptions(filter)\r\n\r\n return { key, customDates };\r\n }\r\n\r\n const pickYears = (filter: FilterDateGroup) => {\r\n const yearsRange = filter.filter.options.customYearsRange;\r\n if (!yearsRange) {\r\n return {};\r\n }\r\n return {\r\n from: numericUtils.isNumber(yearsRange?.from) ? Number(yearsRange?.from) : undefined,\r\n to: numericUtils.isNumber(yearsRange?.to) ? Number(yearsRange?.to) : undefined\r\n };\r\n }\r\n\r\n if (filter.type === FilterType.Date || filter.type === FilterType.YearsDate) {\r\n return pickDates(filter as FilterDateGroup);\r\n }\r\n\r\n if (filter.type === FilterType.DateWithYearsRange) {\r\n return { ...pickYears(filter as FilterDateGroup), ...pickDates(filter as FilterDateGroup) }\r\n }\r\n\r\n return filter.filter;\r\n}\r\n\r\nfunction isFilterChanged(\r\n filterType: TFilterType,\r\n filter: TFilter,\r\n lastAppliedFilter?: TFilter,\r\n): boolean {\r\n if (!lastAppliedFilter) {\r\n return true;\r\n }\r\n\r\n const filterValues = mapValues(filter, pickDataToCompare);\r\n const lastAppliedFilterValues = mapValues(pick(lastAppliedFilter, keys(filter)), pickDataToCompare);\r\n\r\n return !isEqual(filterValues, lastAppliedFilterValues);\r\n}\r\n\r\nfunction validateDate(minSelectYear: number, date?: Date | null) {\r\n if (date && moment(date).isValid() && date.getFullYear() < minSelectYear) {\r\n return errorMessages.datePickerInvalidDate;\r\n }\r\n\r\n if (date && !moment(date).isValid()) {\r\n return errorMessages.datePickerInvalidDate;\r\n }\r\n\r\n return '';\r\n}\r\n\r\nfunction validateFromDate(minSelectYear: number, date?: Date | null, to?: Date | null, disabledDays?: DateInterval) {\r\n if (date && moment(date).isValid() && date.getFullYear() < minSelectYear) {\r\n return errorMessages.datePickerInvalidFromDate;\r\n }\r\n if (date && to && date > to) {\r\n return errorMessages.fromDateLaterThenToDate;\r\n }\r\n\r\n if (date && !String(date).includes('_') && !moment(date).isValid()) {\r\n return errorMessages.datePickerInvalidFromDate;\r\n }\r\n\r\n const resetTime = (date: Date) => new Date(date).setHours(0, 0, 0, 0);\r\n\r\n if (date) {\r\n if (disabledDays?.after && resetTime(date) > resetTime(disabledDays.after))\r\n return errorMessages.datePickerInvalidFromDate;\r\n if (disabledDays?.before && resetTime(date) < resetTime(disabledDays.before))\r\n return errorMessages.datePickerInvalidFromDate;\r\n }\r\n\r\n return '';\r\n}\r\n\r\nfunction validateToDate(minSelectYear: number, date?: Date | null, disabledDays?: DateAfter) {\r\n if (date && moment(date).isValid() && date.getFullYear() < minSelectYear) {\r\n return errorMessages.datePickerInvalidToDate;\r\n }\r\n\r\n if (date && !moment(date).isValid()) {\r\n return errorMessages.datePickerInvalidToDate;\r\n }\r\n\r\n if (date && !String(date).includes('_') && !moment(date).isValid()) {\r\n return errorMessages.datePickerInvalidFromDate;\r\n }\r\n\r\n if (\r\n disabledDays &&\r\n disabledDays.after &&\r\n date &&\r\n new Date(date).setHours(0, 0, 0, 0) > new Date(disabledDays.after).setHours(0, 0, 0, 0)\r\n ) {\r\n return errorMessages.datePickerInvalidToDate;\r\n }\r\n\r\n return '';\r\n}\r\n\r\nfunction getDateOptionsWithRange() {\r\n return dateRangeFilterOptions\r\n .toArray()\r\n .map(option => {\r\n const range = getRangeFromDateOption(option);\r\n if (range) {\r\n return {\r\n ...option,\r\n from: range.from,\r\n to: range.to\r\n }\r\n }\r\n return option\r\n })\r\n}\r\n\r\nexport const getDateOptionByRange = (defaultOption: DateFilterOption, from?: Date | number | null, to?: Date | number | null) => {\r\n\r\n const parsedOption = getDateOptionsWithRange()\r\n .find(o => {\r\n return ((from && o.from) || (to && o.to))\r\n && ((from instanceof Date && moment(o.from).isSame(from, 'day')) || o.from === from)\r\n && ((to instanceof Date && moment(o.to).isSame(to, 'day')) || o.to === to)\r\n });\r\n\r\n switch (true) {\r\n case from === null && to === null:\r\n return dateRangeFilterOptions.All;\r\n case Boolean(parsedOption):\r\n return parsedOption as DateFilterOption;\r\n case Boolean(from || to) && (numericUtils.isNumber(from) || numericUtils.isNumber(to)):\r\n return dateRangeFilterOptions.YearsRange;\r\n case Boolean(from || to):\r\n return dateRangeFilterOptions.Custom;\r\n default:\r\n return defaultOption;\r\n }\r\n}\r\n\r\nexport const convertToApiCriteria = (selectedOption: DateFilterOption, options?: DateFilterOptions) => {\r\n const normalizeType = (value?: string | number | Date | null | Moment, time?: { hours: number, minutes: number, seconds: number }) => {\r\n if (value == null) return value;\r\n if (numericUtils.isNumber(value)) return null;\r\n\r\n const date = moment(value, 'MM/DD/YYYY', true).startOf('day');\r\n const momentDate = time ? date.hour(time.hours).minute(time.minutes).second(time.seconds) : date;\r\n\r\n // Do not use moment.toDate() to avoid time zone auto-adjustment\r\n return momentDate.toISOString(true);\r\n }\r\n\r\n const endOfDay = { hours: 23, minutes: 59, seconds: 59 };\r\n\r\n switch (selectedOption.key) {\r\n case dateRangeFilterOptions.CurrentInventory.key:\r\n return { isCurrentInventory: true }\r\n case dateRangeFilterOptions.All.key:\r\n return { dateFrom: null, dateTo: null }\r\n case dateRangeFilterOptions.Custom.key:\r\n\r\n return {\r\n dateFrom: normalizeType(options?.customDateRange?.from),\r\n dateTo: normalizeType(options?.customDateRange?.to, endOfDay)\r\n }\r\n default:\r\n return {\r\n dateFrom: normalizeType(getRangeFromDateOption(selectedOption)?.from),\r\n dateTo: normalizeType(getRangeFromDateOption(selectedOption)?.to, endOfDay)\r\n }\r\n }\r\n}\r\n\r\nexport function getYearsRange(filter?: FilterDateGroup) {\r\n const { from, to } = filter?.filter.options.customYearsRange || {};\r\n\r\n return {\r\n from: numericUtils.isNumber(from) ? Number(from) : undefined,\r\n to: numericUtils.isNumber(to) ? Number(to) : undefined,\r\n };\r\n}\r\n\r\nfunction calculateYrsLeft(utcString: Date, fromDateString: Date): number {\r\n if (!utcString || !fromDateString) {\r\n return 0;\r\n }\r\n\r\n const date = moment.utc(utcString);\r\n const fromDate = moment.utc(fromDateString);\r\n const days = date.diff(fromDate, 'days');\r\n return days > 0 ? Number((days / 365).toFixed(2)) : 0;\r\n}\r\n\r\nfunction filterByYearIncrement(from: number, to: number, periodEnd?: Date, closingDate?: Date) {\r\n if (!periodEnd || !closingDate) {\r\n return false\r\n }\r\n const increment = calculateYrsLeft(periodEnd, closingDate);\r\n return !(increment < from || increment > to);\r\n}\r\n\r\nfunction filerByDateRange(periodEnd?: Date, from?: string, to?: string) {\r\n if (!periodEnd || (!from && !to)) return false;\r\n const momentPeriodEnd = moment(periodEnd);\r\n const momentFrom = moment(from, constants.dateFormatISO8601);\r\n const momentTo = moment(to, constants.dateFormatISO8601);\r\n if (!from) {\r\n return momentPeriodEnd.isBefore(momentTo);\r\n }\r\n if (!to) {\r\n return momentPeriodEnd.isAfter(momentFrom);\r\n }\r\n return momentPeriodEnd.isBetween(momentFrom, momentTo, 'day', '[]')\r\n}\r\n\r\nexport function validateDateFormat(date: MomentInput, format: string, errorMessage: string, allowEmpty: boolean = true) {\r\n if(!date && allowEmpty) {\r\n return false;\r\n }\r\n if (!moment(date, format, true).isValid()) {\r\n return errorMessage;\r\n }\r\n return false;\r\n}\r\n","import { arrayUtils } from '../array.utils';\r\nimport { QueryStringArgumentSerializer } from './serializers/QueryStringArgumentSerializer';\r\n\r\nexport const queryStringSerializer = {\r\n serialize,\r\n deserialize\r\n}\r\n\r\nfunction serialize(\r\n filter: any,\r\n serializers: QueryStringArgumentSerializer[]): string {\r\n\r\n function serializeArgument(serializer: QueryStringArgumentSerializer) {\r\n const { key, serialize } = serializer;\r\n const serializedValue = serialize(filter[key]);\r\n\r\n return serializedValue != null && `${key}=${serializedValue}`;\r\n }\r\n\r\n return serializers\r\n .map(serializer => serializeArgument(serializer))\r\n .filter(argument => argument)\r\n .join('&');\r\n}\r\n\r\nfunction deserialize(\r\n queryString: string,\r\n serializers: QueryStringArgumentSerializer[]): void {\r\n\r\n if (queryString) {\r\n const args = decodeURIComponent(queryString)\r\n .replace('?', '')\r\n .split('&')\r\n .map(queryStringArgument => queryStringArgument.split('=')) // split on [key, value]\r\n .filter(([key, value]) => key != null && value != null); // ignore invalid or empty\r\n\r\n arrayUtils\r\n .distinct(args, ([key]) => key.toLowerCase()) // ignore duplicates\r\n .forEach(([key, value]) =>\r\n serializers\r\n .filter(s => s.key === key)\r\n .forEach(s => s.deserialize(value))\r\n );\r\n }\r\n}\r\n","export interface IDeserializeCommand {\r\n canExecute?: () => boolean;\r\n shouldExecute?: () => boolean;\r\n execute: () => void;\r\n}\r\n\r\nexport class DeserializeCommandHandler {\r\n _commands: IDeserializeCommand[] = [];\r\n\r\n addCommand(command: IDeserializeCommand) {\r\n this._commands.push(command);\r\n return this;\r\n }\r\n\r\n process() {\r\n // All executable or nothing\r\n if (this._commands.some(c => (c.shouldExecute?.() ?? true) && !(c.canExecute?.() ?? true))) {\r\n return false;\r\n }\r\n\r\n for (let c of this._commands) {\r\n if (c.shouldExecute?.() ?? true) {\r\n c.execute();\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n * processGenerator() {\r\n // All executable or nothing\r\n if (this._commands.some(c => (c.shouldExecute?.() ?? true) && !(c.canExecute?.() ?? true))) {\r\n return false;\r\n }\r\n\r\n for (let c of this._commands) {\r\n if (c.shouldExecute?.() ?? true) {\r\n yield c.execute();\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n}","import moment from \"moment\";\r\nimport { isNil } from 'lodash';\r\nimport { FilterDateOption } from \"../../../../types/filters/FilterDateOption\";\r\nimport {\r\n DateRangeOption,\r\n DateTimeRangeOption,\r\n UserConfigDateFilter,\r\n UserConfigDateTimeFilter,\r\n UserConfigRangeFilter,\r\n} from \"../../../../types/user-config/UserConfigFilter\";\r\nimport { dateRangeFilterOptions, dateTimeRangeFilterOptions } from \"../../../../constants/date-range.filter\";\r\nimport { FilterOption } from \"../../../../types/filters/FilterOption\";\r\nimport { FilterRadioOption } from \"../../../../types/filters/FilterRadioOption\";\r\nimport { FilterBooleanOption } from \"../../../../types/filters/FilterBooleanOption\";\r\nimport { numericUtils } from \"../../../numeric.utils\";\r\nimport { getRangeFromDateOption, getRangeFromDateTimeOption } from \"../../../amr-pipeline.utils\";\r\nimport { FilterDateTimeOption } from '../../../../types/filters/FilterDateTimeOption';\r\nimport { TimeOption } from '../../../../types/filters/TimeOption';\r\n\r\nconst DateRangeOptionKeys: Partial> = Object\r\n .entries(DateRangeOption)\r\n .reduce((acc, [key], index) => ({ ...acc, [key]: index }), {});\r\n\r\nfunction deriveSelectedOptionFromDays(from: number, to: number) {\r\n const foundOption = dateRangeFilterOptions.toArray()\r\n .find(option => option.to === to && option.from === from);\r\n\r\n return foundOption || dateRangeFilterOptions.YearsRange;\r\n}\r\n\r\nfunction deserializeDays(configFilter: UserConfigRangeFilter) {\r\n const { from, to } = configFilter;\r\n\r\n if (isNil(from) && isNil(to)) {\r\n return undefined;\r\n }\r\n\r\n const fromYears = numericUtils.round(Number(from) / 365, 2);\r\n const toYears = numericUtils.round(Number(to) / 365, 2);\r\n\r\n return {\r\n selectedOption: deriveSelectedOptionFromDays(fromYears, toYears),\r\n options: {\r\n customDateRange: {\r\n from: null,\r\n to: null,\r\n },\r\n customYearsRange: {\r\n from: fromYears,\r\n to: toYears,\r\n },\r\n },\r\n } as FilterDateOption;\r\n}\r\n\r\nfunction deserializeDates(configFilter?: UserConfigDateFilter) {\r\n if (!configFilter) {\r\n return undefined;\r\n }\r\n\r\n const { name, value: { from, to } = {} } = configFilter;\r\n\r\n if (\r\n name\r\n && dateRangeFilterOptions[name]\r\n && name !== DateRangeOption.Custom\r\n ) {\r\n const dateRange = getRangeFromDateOption(dateRangeFilterOptions[name]);\r\n\r\n const customDateRange = {\r\n from: dateRange?.from ? moment(dateRange.from).toDate() : null,\r\n to: dateRange?.to ? moment(dateRange.to).toDate() : null,\r\n };\r\n\r\n return {\r\n selectedOption: {\r\n ...dateRangeFilterOptions.toArray().find(x => x.key === DateRangeOptionKeys[name]),\r\n ...customDateRange,\r\n },\r\n options: {\r\n customDateRange,\r\n },\r\n } as FilterDateOption;\r\n }\r\n\r\n if (isNil(from) && isNil(to)) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n selectedOption: dateRangeFilterOptions[name],\r\n options: {\r\n customDateRange: {\r\n from: moment(from).toDate(),\r\n to: moment(to).toDate(),\r\n },\r\n },\r\n } as FilterDateOption;\r\n}\r\n\r\nexport function deserializeDateTimeFilter(configFilter?: UserConfigDateTimeFilter) {\r\n if (!configFilter) {\r\n return undefined;\r\n }\r\n\r\n const { name, value: { from, to } = {} } = configFilter;\r\n\r\n const filterOption = dateTimeRangeFilterOptions[name];\r\n\r\n if (!filterOption) {\r\n return undefined;\r\n }\r\n\r\n // Derive current date for Today option\r\n if (name === DateTimeRangeOption.TodayWithTime) {\r\n const dateRange = getRangeFromDateTimeOption(filterOption);\r\n\r\n if (!dateRange) {\r\n return {\r\n selectedOption: dateTimeRangeFilterOptions[name],\r\n } as FilterDateTimeOption;\r\n }\r\n\r\n const customDateRange = {\r\n from: {\r\n date: dateRange.from.date.toDate(),\r\n timeOption: dateRange.from.timeOption,\r\n },\r\n to: {\r\n date: dateRange.to.date.toDate(),\r\n timeOption: dateRange.to.timeOption,\r\n },\r\n };\r\n\r\n return {\r\n selectedOption: {\r\n ...dateTimeRangeFilterOptions[name],\r\n ...customDateRange,\r\n },\r\n } as FilterDateTimeOption;\r\n }\r\n\r\n // Probably config is broken\r\n if (isNil(from) || isNil(to)) {\r\n return undefined;\r\n }\r\n\r\n // For Date and Date Period options - get \"from\" and \"to\" values from configuration\r\n return {\r\n selectedOption: {\r\n ...filterOption,\r\n from: {\r\n date: moment.parseZone(from.value).local(true).toDate(),\r\n timeOption: from.option as TimeOption || TimeOption.CustomTime,\r\n },\r\n to: {\r\n date: moment.parseZone(to.value).local(true).toDate(),\r\n timeOption: to.option as TimeOption || TimeOption.CustomTime,\r\n },\r\n },\r\n } as FilterDateTimeOption;\r\n}\r\n\r\nexport const deserializeDateFilter = (dateFilter?: UserConfigDateFilter, dayFilter?: UserConfigRangeFilter) => {\r\n if (!dateFilter && !dayFilter) {\r\n return undefined;\r\n }\r\n\r\n if (!dayFilter || (isNil(dayFilter.from) && isNil(dayFilter.to))) {\r\n return deserializeDates(dateFilter);\r\n }\r\n\r\n return deserializeDays(dayFilter);\r\n};\r\n\r\nexport const deserializeSelectFilter = (stateFilter: FilterOption[], configFilter?: T[]) => {\r\n if (!configFilter || !configFilter.length) {\r\n return undefined;\r\n }\r\n\r\n return stateFilter.map(filter => ({\r\n ...filter,\r\n selected: configFilter.includes(filter.value),\r\n }));\r\n};\r\n\r\nexport const deserializeRadioFilter = (stateFilter: FilterRadioOption, configFilter?: T[], ) => {\r\n if (!configFilter || !configFilter.length) {\r\n return undefined;\r\n }\r\n\r\n const [selectedOption] = configFilter;\r\n\r\n return {\r\n selectedOption,\r\n options: stateFilter.options,\r\n } as FilterRadioOption;\r\n};\r\n\r\nexport const deserializeBooleanFilter = (configFilter?: boolean | null) => {\r\n if (isNil(configFilter)) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n selectedOption: configFilter\r\n } as FilterBooleanOption;\r\n};\r\n\r\nexport const deserializeRangeFilter = (configFilter?: UserConfigRangeFilter) => {\r\n if (!configFilter || (isNil(configFilter.from) && isNil(configFilter.to))) {\r\n return undefined;\r\n }\r\n\r\n return configFilter;\r\n}\r\n","import { BwicSavedFilter } from '../../../../types/filters/BwicSavedFilter';\r\nimport { FilterOption } from '../../../../types/filters/FilterOption';\r\nimport { UserFilterValues } from '../../../../types/user-config/UserConfigFilter';\r\nimport { deserializeBooleanFilter, deserializeDateFilter, deserializeRangeFilter, deserializeSelectFilter } from '../amr-pipeline/filterDeserializers';\r\n\r\nexport const deserializeBwicFilters = (filter: UserFilterValues, stateFilter: BwicSavedFilter) => {\r\n return {\r\n date: filter.date && deserializeDateFilter(filter.date),\r\n size: filter.size && deserializeRangeFilter(filter.size),\r\n ratings: stateFilter.ratings && deserializeSelectFilter(stateFilter.ratings.filter, filter.ratings),\r\n statuses: stateFilter.statuses && deserializeSelectFilter(stateFilter.statuses.filter, filter.statuses),\r\n dealerIds: stateFilter.dealerIds && deserializeSelectFilter(stateFilter.dealerIds.filter, filter.dealerIds),\r\n managers: stateFilter.managers && deserializeBwicSelectFilter(stateFilter.managers.filter, filter.collateralManagers),\r\n dealName: stateFilter.dealName && deserializeBwicSelectFilter(stateFilter.dealName.filter, filter.dealName),\r\n closing: deserializeDateFilter(filter.closingDate),\r\n maturity: deserializeDateFilter(filter.maturity),\r\n reinvestmentEnd: deserializeDateFilter(filter.reinvestmentPeriodEnd, filter.reinvestmentPeriodEndDays),\r\n nonCallEnd: deserializeDateFilter(filter.nonCallPeriodEnd, filter.nonCallPeriodEndDays),\r\n vintage: deserializeDateFilter(filter.vintage),\r\n collateralType: deserializeSelectFilter(stateFilter.collateralType.filter, filter.collateralTypes),\r\n amr: deserializeBooleanFilter(filter.amrDeal),\r\n currency: stateFilter.currency && deserializeSelectFilter(stateFilter.currency.filter, filter.currencyCodes),\r\n euCompliance: deserializeBooleanFilter(filter.euCompliance),\r\n trustees: stateFilter.trustees && deserializeBwicSelectFilter(stateFilter.trustees.filter, filter.trustees),\r\n esg: deserializeBooleanFilter(filter.esg),\r\n staticDeal: deserializeBooleanFilter(filter.staticDeal),\r\n outOfNC: deserializeBooleanFilter(filter.outOfNC),\r\n outOfRI: deserializeBooleanFilter(filter.outOfRI),\r\n color: stateFilter.color && deserializeSelectFilter(stateFilter.color.filter, filter.color),\r\n tradedColor: filter.tradedColor && deserializeRangeFilter(filter.tradedColor),\r\n };\r\n}\r\n\r\nfunction deserializeBwicSelectFilter(\r\n stateFilterOptions?: FilterOption[],\r\n savedFilterValues?: T[]): FilterOption[] | undefined {\r\n if (!savedFilterValues?.length) return undefined;\r\n if (stateFilterOptions?.length) return deserializeSelectFilter(stateFilterOptions, savedFilterValues);\r\n\r\n return savedFilterValues.map(value => ({\r\n value,\r\n text: (value as unknown as string),\r\n selected: true,\r\n visible: true,\r\n disabled: false\r\n }));\r\n}\r\n","import { PipelineType } from '../../../../types/amr-pipeline/enums/PipelineType';\r\nimport { TFilter, TFilterType } from '../../../../types/filters/FilterState';\r\nimport { PipelineFilters } from '../../../../types/state/PipelineFilterState';\r\nimport { UserConfigFilter, UserFilterValues } from '../../../../types/user-config/UserConfigFilter';\r\nimport { deserializeBwicFilters } from '../bwic/deserializeFilters';\r\nimport { deserializeBooleanFilter, deserializeDateFilter, deserializeDateTimeFilter, deserializeRadioFilter, deserializeRangeFilter, deserializeSelectFilter, } from './filterDeserializers';\r\n\r\n\r\nexport const deserializeFilters = (userConfigFilter: UserConfigFilter, stateFilter: TFilter, filterType: TFilterType) => {\r\n const { filter } = userConfigFilter;\r\n switch (filterType) {\r\n case PipelineType.ArrangerPipeline:\r\n return deserializeArrangerPipelineFilters(filter, stateFilter as PipelineFilters);\r\n case PipelineType.Deals:\r\n return deserializeDealsFilters(filter, stateFilter as PipelineFilters);\r\n default:\r\n return deserializeBwicFilters(filter, stateFilter);\r\n }\r\n}\r\n\r\nconst deserializeDealsFilters = (filter: UserFilterValues, stateFilter: PipelineFilters) => {\r\n return {\r\n ratings: deserializeSelectFilter(stateFilter.ratings.filter, filter.ratings),\r\n statuses: deserializeSelectFilter(stateFilter.statuses.filter, filter.statuses),\r\n transactionTypes: deserializeSelectFilter(stateFilter.transactionTypes.filter, filter.types),\r\n managers: deserializeSelectFilter(stateFilter.managers.filter, filter.collateralManagers),\r\n arrangers: deserializeSelectFilter(stateFilter.arrangers.filter, filter.arrangers),\r\n pricingDate: deserializeDateFilter(filter.pricingDate),\r\n closingDate: deserializeDateFilter(filter.closingDate),\r\n nonCallEnd: deserializeDateFilter(filter.nonCallPeriodEnd, filter.nonCallPeriodEndDays),\r\n reinvestmentEnd: deserializeDateFilter(filter.reinvestmentPeriodEnd, filter.reinvestmentPeriodEndDays),\r\n vintage: deserializeDateFilter(filter.vintage),\r\n rollerDeadline: deserializeDateTimeFilter(filter.rollerDeadline),\r\n was: deserializeRangeFilter(filter.was),\r\n warf: deserializeRangeFilter(filter.warf),\r\n ds: deserializeRangeFilter(filter.ds),\r\n collateralType: deserializeSelectFilter(stateFilter.collateralType.filter, filter.collateralTypes),\r\n amrDeal: deserializeBooleanFilter(filter.amrDeal),\r\n currency: deserializeSelectFilter(stateFilter.currency.filter, filter.currencyCodes),\r\n euCompliance: deserializeBooleanFilter(filter.euCompliance),\r\n classNames: deserializeSelectFilter(stateFilter.classNames.filter, filter.classNames),\r\n trustees: deserializeSelectFilter(stateFilter.trustees.filter, filter.trustees),\r\n parSubordination: deserializeRangeFilter(filter.parSubordination),\r\n mvoc: deserializeRangeFilter(filter.mvoc),\r\n esg: deserializeBooleanFilter(filter.esg),\r\n sofr: deserializeBooleanFilter(filter.sofr),\r\n isDebut: deserializeBooleanFilter(filter.isDebut),\r\n // enhancedCLO: deserializeBooleanFilter(filter.enhancedCLO), Temporary Enhanced CLO hiding\r\n staticDeal: deserializeBooleanFilter(filter.staticDeal),\r\n coupons: deserializeRadioFilter(stateFilter.coupons.filter, filter.coupons),\r\n outOfNC: deserializeBooleanFilter(filter.outOfNC),\r\n outOfRI: deserializeBooleanFilter(filter.outOfRI),\r\n ratingAgencies: deserializeSelectFilter(stateFilter.ratingAgencies.filter, filter.ratingAgencies),\r\n };\r\n}\r\n\r\nconst deserializeArrangerPipelineFilters = (filter: UserFilterValues, stateFilter: PipelineFilters) => {\r\n return {\r\n managers: deserializeSelectFilter(stateFilter.managers.filter, filter.collateralManagers),\r\n arrangers: deserializeSelectFilter(stateFilter.arrangers.filter, filter.arrangers),\r\n collateralType: deserializeSelectFilter(stateFilter.collateralType.filter, filter.collateralTypes),\r\n euCompliance: deserializeBooleanFilter(filter.euCompliance),\r\n ncEnd: deserializeRangeFilter(filter.ncEnd),\r\n riEnd: deserializeRangeFilter(filter.riEnd),\r\n equity: deserializeRadioFilter(stateFilter.equity.filter, filter.equity),\r\n anchor: deserializeBooleanFilter(filter.anchor),\r\n };\r\n};\r\n","import moment from \"moment\";\r\nimport { isNil, isString, toString } from 'lodash';\r\nimport { FilterDateOption } from \"../../../../types/filters/FilterDateOption\";\r\nimport {\r\n DateRangeOption,\r\n DateTimeRangeOption,\r\n UserConfigDateFilter,\r\n UserConfigDateTimeFilter,\r\n UserConfigRangeFilter,\r\n} from \"../../../../types/user-config/UserConfigFilter\";\r\nimport { FilterRangeOption } from \"../../../../types/filters/FilterRangeOption\";\r\nimport { FilterRadioOption } from \"../../../../types/filters/FilterRadioOption\";\r\nimport { FilterBooleanOption } from \"../../../../types/filters/FilterBooleanOption\";\r\nimport { FilterOption } from \"../../../../types/filters/FilterOption\";\r\nimport { numericUtils } from \"../../../numeric.utils\";\r\nimport { constants } from \"../../../../constants/constants\";\r\nimport dateTimeUtils from \"../../../dateTime.utils\";\r\nimport { FilterDateTimeOption } from '../../../../types/filters/FilterDateTimeOption';\r\nimport { dateRangeFilterOptions } from \"../../../../constants/date-range.filter\";\r\n\r\nfunction isNilOrEmpty(value: T | undefined | null ) {\r\n return isNil(value) || (isString(value) && toString(value) === '');\r\n}\r\n\r\nexport const serializeDateFilter = (filterDateOption: FilterDateOption) => {\r\n if (!filterDateOption.selectedOption || filterDateOption.selectedOption.key === dateRangeFilterOptions.All.key) {\r\n return undefined;\r\n }\r\n\r\n const { from, to } = filterDateOption.options.customDateRange;\r\n\r\n if (isNilOrEmpty(from) && isNilOrEmpty(to) && !filterDateOption.selectedOption.pureOption) {\r\n return undefined;\r\n }\r\n\r\n const filterOptionName = Object.values(DateRangeOption)[filterDateOption.selectedOption.key];\r\n\r\n switch (filterOptionName) {\r\n case DateRangeOption.Custom:\r\n return {\r\n name: filterOptionName,\r\n value: {\r\n from: moment(from).startOf('day').format(constants.formatTimeStringWithoutTimeZone),\r\n to: moment(to).endOf('day').format(constants.formatTimeStringWithoutTimeZone),\r\n },\r\n } as UserConfigDateFilter;\r\n default:\r\n return {\r\n name: filterOptionName || DateRangeOption.Custom,\r\n } as UserConfigDateFilter;\r\n }\r\n};\r\n\r\nexport const serializeDateTimeFilter = (filterDateTimeOption: FilterDateTimeOption) => {\r\n if (!filterDateTimeOption.selectedOption) {\r\n return undefined;\r\n }\r\n\r\n const { key, from, to } = filterDateTimeOption.selectedOption;\r\n\r\n if (!from || !to) {\r\n return undefined;\r\n }\r\n\r\n const filterOptionName = Object.values(DateTimeRangeOption)[key];\r\n\r\n return {\r\n name: filterOptionName || DateTimeRangeOption.TodayWithTime,\r\n value: {\r\n from: {\r\n value: dateTimeUtils.changeDateTimeZone(from.date, constants.estTimezone).format(),\r\n option: from.timeOption\r\n },\r\n to: {\r\n value: dateTimeUtils.changeDateTimeZone(to.date, constants.estTimezone).format(),\r\n option: to.timeOption,\r\n },\r\n },\r\n } as UserConfigDateTimeFilter;\r\n};\r\n\r\nexport const serializeDaysFilter = (filterDateOption: FilterDateOption) => {\r\n const { from, to } = filterDateOption.options.customYearsRange || {};\r\n\r\n if (isNilOrEmpty(from) && isNilOrEmpty(to)) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n from: numericUtils.isNumber(from)\r\n ? numericUtils.floor(Number(from) * 365, 0)\r\n : undefined,\r\n to: numericUtils.isNumber(to)\r\n ? numericUtils.round(Number(to) * 365, 0)\r\n : undefined,\r\n } as UserConfigRangeFilter;\r\n};\r\n\r\nexport const serializeSelectFilter = (filterSelectOptions: FilterOption[]) => {\r\n const values = filterSelectOptions\r\n .filter(o => o.selected)\r\n .map(o => o.value);\r\n\r\n return values.length ? values : undefined;\r\n};\r\n\r\nexport const serializeRadioFilter = (filterRadioOption: FilterRadioOption) => {\r\n return isNilOrEmpty(filterRadioOption.selectedOption)\r\n ? undefined\r\n : [filterRadioOption.selectedOption];\r\n};\r\n\r\nexport const serializeBooleanFilter = (filterBooleanOption: FilterBooleanOption) => {\r\n const { selectedOption } = filterBooleanOption;\r\n\r\n return isNilOrEmpty(selectedOption) ? undefined : Boolean(selectedOption);\r\n};\r\n\r\nexport const serializeRangeFilter = (filterRangeOption: FilterRangeOption) => {\r\n const { from, to } = filterRangeOption;\r\n\r\n if (isNilOrEmpty(from) && isNilOrEmpty(to)) {\r\n return undefined;\r\n }\r\n\r\n const parsedFrom = parseFloat(from as string);\r\n const parsedTo = parseFloat(to as string);\r\n\r\n return {\r\n from: isNaN(parsedFrom) ? null : parsedFrom,\r\n to: isNaN(parsedTo) ? null : parsedTo,\r\n } as UserConfigRangeFilter;\r\n}\r\n","import { PipelineType } from \"../../../../types/amr-pipeline/enums/PipelineType\";\r\nimport { DealsPipelineFilters, PipelineFilters } from \"../../../../types/state/PipelineFilterState\";\r\nimport { UserFilterValues } from \"../../../../types/user-config/UserConfigFilter\";\r\nimport {\r\n serializeBooleanFilter,\r\n serializeDateFilter,\r\n serializeDateTimeFilter,\r\n serializeDaysFilter,\r\n serializeRangeFilter,\r\n serializeSelectFilter,\r\n serializeRadioFilter,\r\n} from \"./filterSerializers\";\r\n\r\nexport const serializeDealsPipelineFilters = (filterState: DealsPipelineFilters) => {\r\n return {\r\n ratings: serializeSelectFilter(filterState.ratings.filter),\r\n statuses: serializeSelectFilter(filterState.statuses.filter),\r\n types: serializeSelectFilter(filterState.transactionTypes.filter),\r\n collateralManagers: serializeSelectFilter(filterState.managers.filter),\r\n arrangers: serializeSelectFilter(filterState.arrangers.filter),\r\n pricingDate: serializeDateFilter(filterState.pricingDate.filter),\r\n closingDate: serializeDateFilter(filterState.closingDate.filter),\r\n nonCallPeriodEnd: serializeDateFilter(filterState.nonCallEnd.filter),\r\n nonCallPeriodEndDays: serializeDaysFilter(filterState.nonCallEnd.filter),\r\n reinvestmentPeriodEnd: serializeDateFilter(filterState.reinvestmentEnd.filter),\r\n reinvestmentPeriodEndDays: serializeDaysFilter(filterState.reinvestmentEnd.filter),\r\n rollerDeadline: serializeDateTimeFilter(filterState.rollerDeadline.filter),\r\n was: serializeRangeFilter(filterState.was.filter),\r\n warf: serializeRangeFilter(filterState.warf.filter),\r\n ds: serializeRangeFilter(filterState.ds.filter),\r\n collateralTypes: serializeSelectFilter(filterState.collateralType.filter),\r\n amrDeal: serializeBooleanFilter(filterState.amrDeal.filter),\r\n currencyCodes: serializeSelectFilter(filterState.currency.filter),\r\n euCompliance: serializeBooleanFilter(filterState.euCompliance.filter),\r\n classNames: serializeSelectFilter(filterState.classNames.filter),\r\n trustees: serializeSelectFilter(filterState.trustees.filter),\r\n parSubordination: serializeRangeFilter(filterState.parSubordination.filter),\r\n mvoc: serializeRangeFilter(filterState.mvoc.filter),\r\n esg: serializeBooleanFilter(filterState.esg.filter),\r\n sofr: serializeBooleanFilter(filterState.sofr.filter),\r\n isDebut: serializeBooleanFilter(filterState.isDebut.filter),\r\n // enhancedCLO: serializeBooleanFilter(filterState.enhancedCLO.filter), Temporary Enhanced CLO hiding\r\n staticDeal: serializeBooleanFilter(filterState.staticDeal.filter),\r\n vintage: serializeDateFilter(filterState.vintage.filter),\r\n coupons: serializeRadioFilter(filterState.coupons.filter),\r\n outOfNC: serializeBooleanFilter(filterState.outOfNC.filter),\r\n outOfRI: serializeBooleanFilter(filterState.outOfRI.filter),\r\n ratingAgencies: serializeSelectFilter(filterState.ratingAgencies.filter),\r\n } as UserFilterValues;\r\n};\r\n\r\nexport const serializeArrangerPipelineFilters = (filterState: PipelineFilters) => {\r\n return {\r\n collateralManagers: serializeSelectFilter(filterState.managers.filter),\r\n arrangers: serializeSelectFilter(filterState.arrangers.filter),\r\n collateralTypes: serializeSelectFilter(filterState.collateralType.filter),\r\n euCompliance: serializeBooleanFilter(filterState.euCompliance.filter),\r\n ncEnd: serializeRangeFilter(filterState.ncEnd.filter),\r\n riEnd: serializeRangeFilter(filterState.riEnd.filter),\r\n equity: serializeRadioFilter(filterState.equity.filter),\r\n anchor: serializeBooleanFilter(filterState.anchor.filter),\r\n } as UserFilterValues;\r\n};\r\n","import { pickBy } from 'lodash';\r\nimport { Currency } from '../../../../types/enums/Currency';\r\nimport { Rating } from '../../../../types/enums/Rating';\r\nimport { BwicSavedFilter } from '../../../../types/filters/BwicSavedFilter';\r\nimport { FilterOption } from '../../../../types/filters/FilterOption';\r\nimport { UserFilterValues } from '../../../../types/user-config/UserConfigFilter';\r\nimport { serializeBooleanFilter, serializeDateFilter, serializeDaysFilter, serializeRangeFilter, serializeSelectFilter } from '../amr-pipeline/filterSerializers';\r\n\r\nexport const getSerializedFilter = (filterState: BwicSavedFilter): UserFilterValues => {\r\n const filter = {\r\n date: filterState.date ? serializeDateFilter(filterState.date.filter) : undefined,\r\n size: filterState.size ? serializeRangeFilter(filterState.size.filter) : undefined,\r\n statuses: filterState.statuses ? serializeSelectFilter(filterState.statuses.filter as FilterOption[]) : undefined,\r\n collateralTypes: filterState.collateralType ? serializeSelectFilter(filterState.collateralType.filter) : undefined,\r\n currencyCodes: filterState.currency ? serializeSelectFilter(filterState.currency.filter as FilterOption[]) : undefined,\r\n collateralManagers: filterState.managers ? serializeSelectFilter(filterState.managers.filter as FilterOption[]) : undefined,\r\n ratings: filterState.ratings ? serializeSelectFilter(filterState.ratings.filter as FilterOption[]) : undefined,\r\n esg: filterState.esg ? serializeBooleanFilter(filterState.esg.filter) : undefined,\r\n euCompliance: filterState.euCompliance ? serializeBooleanFilter(filterState.euCompliance.filter) : undefined,\r\n staticDeal: filterState.staticDeal ? serializeBooleanFilter(filterState.staticDeal.filter) : undefined,\r\n nonCallPeriodEnd: filterState.nonCallEnd ? serializeDateFilter(filterState.nonCallEnd.filter) : undefined,\r\n nonCallPeriodEndDays: filterState.nonCallEnd ? serializeDaysFilter(filterState.nonCallEnd.filter) : undefined,\r\n reinvestmentPeriodEnd: filterState.reinvestmentEnd ? serializeDateFilter(filterState.reinvestmentEnd.filter) : undefined,\r\n reinvestmentPeriodEndDays: filterState.reinvestmentEnd ? serializeDaysFilter(filterState.reinvestmentEnd.filter) : undefined,\r\n maturity: filterState.maturity ? serializeDateFilter(filterState.maturity.filter) : undefined,\r\n vintage: filterState.vintage ? serializeDateFilter(filterState.vintage.filter) : undefined,\r\n closingDate: filterState.closing ? serializeDateFilter(filterState.closing.filter) : undefined,\r\n trustees: filterState.trustees ? serializeSelectFilter(filterState.trustees.filter as FilterOption[]) : undefined,\r\n amrDeal: filterState.amr ? serializeBooleanFilter(filterState.amr.filter) : undefined,\r\n outOfNC: filterState.outOfNC ? serializeBooleanFilter(filterState.outOfNC.filter) : undefined,\r\n outOfRI: filterState.outOfRI ? serializeBooleanFilter(filterState.outOfRI.filter) : undefined,\r\n dealName: filterState.dealName ? serializeSelectFilter(filterState.dealName.filter as FilterOption[]) : undefined,\r\n dealerIds: filterState.dealerIds ? serializeSelectFilter(filterState.dealerIds.filter) : undefined,\r\n color: filterState.color ? serializeSelectFilter(filterState.color.filter): undefined,\r\n tradedColor: filterState.tradedColor ? serializeRangeFilter(filterState.tradedColor.filter) : undefined,\r\n };\r\n\r\n return pickBy(filter, x => x !== undefined);\r\n};\r\n","export abstract class QueryStringArgumentSerializer {\r\n constructor(\r\n key: string,\r\n acceptedValues: string[] | undefined,\r\n onDeserializeCallback?: (value: T) => void,\r\n emptySpaceSymbol?: string\r\n ) {\r\n this.key = key;\r\n this.acceptedValues = acceptedValues;\r\n this.onDeserializeCallback = onDeserializeCallback;\r\n this.emptySpaceSymbol = emptySpaceSymbol;\r\n }\r\n\r\n abstract serialize: (value: T | undefined) => string | undefined\r\n abstract deserialize: (rawValue: string) => void\r\n\r\n key: string\r\n acceptedValues: string[] | undefined\r\n onDeserializeCallback?: (value: T) => void\r\n emptySpaceSymbol: string | undefined\r\n\r\n isAccepted = (value: string): boolean => {\r\n if (this.acceptedValues) {\r\n return this.acceptedValues.some(a =>\r\n a.localeCompare(\r\n value || '',\r\n undefined,\r\n { sensitivity: 'accent' }) === 0);\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n","import { QueryStringArgumentSerializer } from './QueryStringArgumentSerializer';\r\n\r\nexport class MultipleValuesArgumentSerializer\r\n extends QueryStringArgumentSerializer {\r\n serialize = (values: string[] | undefined) => {\r\n if (!values || !values.length) {\r\n return undefined;\r\n }\r\n\r\n return values\r\n .map(value => value == null ? value : value.toString())\r\n .map(value => value && this.emptySpaceSymbol ? value.replace(\" \", this.emptySpaceSymbol) : value)\r\n .map(value => value && value.replaceAll(/,/g, '\\\\,')) // escape commas\r\n .map(value => encodeURIComponent(value))\r\n .join(',');\r\n }\r\n\r\n deserialize = (rawValue: string): void => {\r\n if (!rawValue) {\r\n return undefined;\r\n }\r\n\r\n const commaReplacement = '{COMMA}';\r\n\r\n const values = rawValue\r\n .replaceAll('\\\\,', commaReplacement)\r\n .split(',')\r\n .map(value => value.replaceAll(commaReplacement, ','))\r\n .map(value => value.trim())\r\n .filter(value => value)\r\n .map(value => decodeURIComponent(value))\r\n .map(value => value && this.emptySpaceSymbol ? value.replace(this.emptySpaceSymbol, \" \") : value)\r\n .filter(value => this.isAccepted(value));\r\n\r\n if (values.length && this.onDeserializeCallback) {\r\n this.onDeserializeCallback(values);\r\n }\r\n }\r\n}\r\n","import { QueryStringArgumentSerializer } from \"./QueryStringArgumentSerializer\";\r\n\r\nexport class SingleValueArgumentSerializer\r\n extends QueryStringArgumentSerializer {\r\n serialize = (value: string | undefined) => value && encodeURIComponent(value);\r\n deserialize = (rawValue: string): void => {\r\n const value = rawValue ? decodeURIComponent(rawValue.trim()) : undefined;\r\n if (value && this.isAccepted(value) && this.onDeserializeCallback) {\r\n this.onDeserializeCallback(value);\r\n }\r\n }\r\n}\r\n","import moment from \"moment\";\r\nimport { QueryStringArgumentSerializer } from \"./QueryStringArgumentSerializer\";\r\n\r\nconst unspecifiedArgumentValue = 'unspecified';\r\n\r\nexport class DateArgumentSerializer\r\n extends QueryStringArgumentSerializer {\r\n constructor(\r\n key: string,\r\n onDeserializeCallback?: (value: Date | null) => void) {\r\n super(key, undefined, onDeserializeCallback);\r\n }\r\n\r\n dateFormat = 'YYYY-M-D';\r\n\r\n serialize = (value: Date | undefined | null) => {\r\n if (value === null) {\r\n return unspecifiedArgumentValue\r\n }\r\n return value ? moment(value).format(this.dateFormat) : undefined\r\n };\r\n\r\n deserialize = (rawValue: string): void => {\r\n const value = rawValue ? decodeURIComponent(rawValue.trim()) : undefined;\r\n\r\n if (this.onDeserializeCallback) {\r\n if (value === unspecifiedArgumentValue) {\r\n this.onDeserializeCallback(null);\r\n } else {\r\n const date = value && moment(value, this.dateFormat, true);\r\n if (date && date.isValid()) {\r\n this.onDeserializeCallback(date.startOf('day').toDate());\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { QueryStringArgumentSerializer } from \"./QueryStringArgumentSerializer\";\r\n\r\nconst positive = ['yes', 'true'];\r\nconst negative = ['no', 'false'];\r\n\r\nexport class FlagArgumentSerializer\r\n extends QueryStringArgumentSerializer {\r\n constructor(\r\n key: string,\r\n onDeserializeCallback?: (value: boolean) => void) {\r\n super(key, positive.concat(negative), onDeserializeCallback);\r\n }\r\n\r\n serialize = (value: boolean | undefined) =>\r\n value == null\r\n ? undefined\r\n : value ? 'yes' : 'no'\r\n\r\n deserialize = (rawValue: string): void => {\r\n const value = rawValue ? decodeURIComponent(rawValue.trim()) : undefined;\r\n if (value && this.isAccepted(value) && this.onDeserializeCallback) {\r\n const isPositive = positive.some(p =>\r\n p.localeCompare(value, undefined, { sensitivity: 'accent' }) === 0);\r\n\r\n this.onDeserializeCallback(isPositive);\r\n }\r\n }\r\n}\r\n","import { QueryStringArgumentSerializer } from \"./QueryStringArgumentSerializer\";\r\nimport { numericUtils } from '../../numeric.utils';\r\n\r\nexport class NumericArgumentSerializer\r\n extends QueryStringArgumentSerializer {\r\n serialize = (value?: string) => value === '' ? undefined: value && encodeURIComponent(value);\r\n deserialize = (rawValue: string): void => {\r\n const value = rawValue ? decodeURIComponent(rawValue.trim()) : undefined;\r\n if (value && numericUtils.isNumber(value) && this.isAccepted(value) && this.onDeserializeCallback) {\r\n this.onDeserializeCallback(value);\r\n }\r\n }\r\n}\r\n","import { keys } from \"lodash\"\r\nimport { BwicStatus } from \"../../../types/enums/BwicStatus\"\r\nimport { QueryStringArgumentSerializer } from \"./QueryStringArgumentSerializer\";\r\n\r\nexport class BwicStatusArgumentSerializer extends QueryStringArgumentSerializer {\r\n constructor(onDeserializeCallback?: (value: string[]) => void) {\r\n super(\"statuses\", keys(BwicStatus), onDeserializeCallback);\r\n }\r\n serialize = (values: string[] | undefined) => {\r\n if(!values?.length) return undefined;\r\n\r\n return values\r\n ?.map(x => BwicStatus[Number(x)])\r\n .join(',')\r\n }\r\n\r\n deserialize = (rawValue: string): void => {\r\n //convert status titles to status values\r\n const bwicStatusValues =\r\n rawValue\r\n .split(',')\r\n .map(value => value.trim())\r\n .filter(value => value && this.isAccepted(value))\r\n .map(value => BwicStatus[value.toLowerCase() as keyof typeof BwicStatus].toString());\r\n\r\n if(bwicStatusValues?.length){\r\n this.onDeserializeCallback?.(bwicStatusValues);\r\n }\r\n }\r\n}\r\n","import { keys } from \"lodash\"\r\nimport { QueryStringArgumentSerializer } from \"./QueryStringArgumentSerializer\";\r\nimport { ColorFilterType } from \"../../../types/bwic/Color\";\r\n\r\nexport class ColorArgumentSerializer extends QueryStringArgumentSerializer {\r\n constructor(onDeserializeCallback?: (value: string[]) => void) {\r\n super(\"color\", keys(ColorFilterType), onDeserializeCallback);\r\n }\r\n serialize = (values: string[] | undefined) => {\r\n if(!values?.length) return undefined;\r\n\r\n return values\r\n ?.map(x => ColorFilterType[Number(x)])\r\n .join(',')\r\n }\r\n\r\n deserialize = (rawValue: string): void => {\r\n //convert status titles to status values\r\n const statusValues =\r\n rawValue\r\n .split(',')\r\n .map(value => value.trim())\r\n .filter(value => value && this.isAccepted(value))\r\n .map(value => ColorFilterType[value as keyof typeof ColorFilterType].toString());\r\n\r\n if(statusValues?.length){\r\n this.onDeserializeCallback?.(statusValues);\r\n }\r\n }\r\n}\r\n","import { values } from 'lodash';\r\nimport { Ratings } from '../../../types/enums/Rating';\r\nimport { MultipleValuesArgumentSerializer } from './MultipleValuesArgumentSerializer';\r\nimport { QueryStringArgumentSerializer } from './QueryStringArgumentSerializer';\r\nimport { SingleValueArgumentSerializer } from './SingleValueArgumentSerializer';\r\nimport { DateArgumentSerializer } from './DateArgumentSerializer';\r\nimport { FlagArgumentSerializer } from './FlagArgumentSerializer';\r\nimport { Currencies } from '../../../types/enums/Currency';\r\nimport { tradeStatuses } from '../../../constants/bidding';\r\nimport { ratingWithGroupValues } from '../../../types/dashboard/RatingGroup';\r\nimport { inventoryPositionStatusTitleList } from '../../../components/inventory/inventory-position-status-title';\r\nimport { BwicTypes } from '../../../types/enums/BwicType';\r\nimport { TradeSide } from '../../../types/trades/TradeSide';\r\nimport { tradeTypeTitle } from '../../../types/trades/TradeType';\r\nimport { NumericArgumentSerializer } from './NumericArgumentSerializer';\r\nimport { tradeSettlementStatusTitle } from '../../../types/settlement/TradeSettlementStatus';\r\nimport { TransactionType } from '../../../types/amr-pipeline/enums/TransactionType';\r\nimport { FloaterIndex } from '../../../types/amr-pipeline/enums/FloaterIndex';\r\nimport { IssuanceMonitorTab } from '../../../components/amrPipeline/types/PipelineTabTypes';\r\nimport { TransactionStatus } from '../../../types/amr-pipeline/enums/TransactionStatus';\r\nimport { CollateralType } from '../../../types/amr-pipeline/enums/CollateralType';\r\nimport { BwicMonitorSortByOptions } from '../../../types/state/AllBwicsState';\r\nimport { BwicStatusArgumentSerializer } from './BwicStatusArgumentSerializer';\r\nimport { PipelineView } from '../../../components/amrPipeline/types/PipelineView';\r\nimport { ColorArgumentSerializer } from './ColorArgumentSerializer';\r\n\r\nexport const identifiers = (onDeserialized?: (identifiers: string[]) => void) =>\r\n new MultipleValuesArgumentSerializer('isinCusipsAndTickers', undefined, onDeserialized);\r\n\r\nexport const ratings = (onDeserialized?: (ratings: string[]) => void) =>\r\n new MultipleValuesArgumentSerializer('ratings', Ratings, onDeserialized);\r\n\r\nexport const ratingsGroup = (onDeserialized?: (ratings: string[]) => void) =>\r\n new MultipleValuesArgumentSerializer('ratings', ratingWithGroupValues, onDeserialized);\r\n\r\nexport const statuses = (onDeserialized?: (statuses: string[]) => void) =>\r\n new BwicStatusArgumentSerializer(onDeserialized);\r\n\r\nexport const tradesStatuses = (onDeserialized?: (statuses: string[]) => void) =>\r\n new MultipleValuesArgumentSerializer('statuses', tradeStatuses.toArray().map(s => s.title), onDeserialized);\r\n\r\nexport const settlementStatuses = (onDeserialized?: (statuses: string[]) => void) =>\r\n new MultipleValuesArgumentSerializer('settlementStatuses', values(tradeSettlementStatusTitle), onDeserialized, '-');\r\n\r\nexport const currency = (currencies: string[], onDeserialized?: (currency: string) => void) =>\r\n new SingleValueArgumentSerializer('currency', currencies, onDeserialized);\r\n\r\nexport const multipleCurrencies = (onDeserialized?: (currencies: string[]) => void) =>\r\n new MultipleValuesArgumentSerializer('currency', Currencies, onDeserialized);\r\n\r\nexport const multipleDealers = (dealerIds: string[], onDeserialized?: (dealers: string[]) => void) =>\r\n new MultipleValuesArgumentSerializer('dealers', dealerIds, onDeserialized);\r\n\r\nexport const tradeSide = (onDeserialized?: (sideList: string[]) => void) =>\r\n new MultipleValuesArgumentSerializer('side', [TradeSide.Sell, TradeSide.Buy], onDeserialized);\r\n\r\nexport const tradeType = (onDeserialized?: (sideList: string[]) => void) =>\r\n new MultipleValuesArgumentSerializer('type', values(tradeTypeTitle), onDeserialized);\r\n\r\nexport const dateFrom = (onDeserialized?: (from: Date | null) => void, key?: string) => new DateArgumentSerializer(key ?? 'dateFrom', onDeserialized);\r\n\r\nexport const dateTo = (onDeserialized?: (to: Date | null) => void, key?: string) => new DateArgumentSerializer(key ?? 'dateTo', onDeserialized);\r\n\r\nexport const published = (onDeserialized?: (published: boolean) => void) => new FlagArgumentSerializer('published', onDeserialized);\r\n\r\nexport const inventoryStatuses = (onDeserialized?: (statuses: string[]) => void) =>\r\n new MultipleValuesArgumentSerializer('statuses', inventoryPositionStatusTitleList, onDeserialized);\r\n\r\nexport const reportedStatuses = (onDeserialized?: (statuses: string[]) => void) =>\r\n new MultipleValuesArgumentSerializer('reported', ['Yes', 'No'], onDeserialized);\r\n\r\nexport const types = (onDeserialized?: (types: string[]) => void) =>\r\n new MultipleValuesArgumentSerializer('types', BwicTypes, onDeserialized);\r\n\r\nexport const collateralManagers = (onDeserialized?: (collateralManagers: string[]) => void, acceptableItems: string[] = []) =>\r\n new MultipleValuesArgumentSerializer('collateralManagers', acceptableItems, onDeserialized);\r\n\r\nexport const collateralTypes = (onDeserialized?: (collateralTypes: string[]) => void) =>\r\n new MultipleValuesArgumentSerializer('collateralTypes', values(CollateralType), onDeserialized);\r\n\r\nexport const transactionTypes = (onDeserialized?: (types: string[]) => void) =>\r\n new MultipleValuesArgumentSerializer('transactionTypes', values(TransactionType), onDeserialized);\r\n\r\nexport const reinvestmentEndFrom = (onDeserialized?: (from: string) => void) => new NumericArgumentSerializer('reinvestmentEndFrom', undefined, onDeserialized);\r\nexport const reinvestmentEndTo = (onDeserialized?: (to: string) => void) => new NumericArgumentSerializer('reinvestmentEndTo', undefined, onDeserialized);\r\n\r\nexport const nonCallEndFrom = (onDeserialized?: (from: string) => void) => new NumericArgumentSerializer('nonCallEndFrom', undefined, onDeserialized);\r\nexport const nonCallEndTo = (onDeserialized?: (to: string) => void) => new NumericArgumentSerializer('nonCallEndTo', undefined, onDeserialized);\r\n\r\nexport const pricingDateFrom = (onDeserialized?: (from: Date | null) => void, key?: string) => new DateArgumentSerializer(key ?? 'pricingDateFrom', onDeserialized);\r\nexport const pricingDateTo = (onDeserialized?: (to: Date | null) => void, key?: string) => new DateArgumentSerializer(key ?? 'pricingDateTo', onDeserialized);\r\n\r\nexport const coupon = (onDeserialized?: (coupon: string) => void) => new SingleValueArgumentSerializer('coupon', values(FloaterIndex), onDeserialized);\r\n\r\nexport const arrangers = (onDeserialized?: (deals: string[]) => void, acceptableItems?: string[]) =>\r\n new MultipleValuesArgumentSerializer('arrangers', acceptableItems, onDeserialized);\r\n\r\nexport const trustees = (onDeserialized?: (deals: string[]) => void) =>\r\n new MultipleValuesArgumentSerializer('trustees', undefined, onDeserialized);\r\n\r\nexport const currentInventory = (onDeserialized?: (isCurrentInventory: boolean) => void) => new FlagArgumentSerializer('isCurrentInventory', onDeserialized);\r\n\r\nexport const esg = (onDeserialized?: (esg: boolean) => void) => new FlagArgumentSerializer('esg', onDeserialized);\r\n\r\nexport const euCompliance = (onDeserialized?: (euCompliance: boolean) => void) => new FlagArgumentSerializer('euCompliance', onDeserialized);\r\n\r\nexport const staticDeals = (onDeserialized?: (staticDeals: boolean) => void) => new FlagArgumentSerializer('staticDeals', onDeserialized);\r\n\r\nexport const amr = (onDeserialized?: (anr: boolean) => void) => new FlagArgumentSerializer('amr', onDeserialized);\r\n\r\nexport const imPipelineTab = (onDeserialized?: (imPipelineType: string) => void) => new SingleValueArgumentSerializer('imPipelineTab', values(IssuanceMonitorTab), onDeserialized);\r\n\r\nexport const pipelineViewMode = (onDeserialized?: (pipelineViewMode: string) => void) => new SingleValueArgumentSerializer('pipelineViewMode', values(PipelineView), onDeserialized);\r\n\r\nexport const transactionStatuses = (onDeserialized?: (statuses: string[]) => void) =>\r\n new MultipleValuesArgumentSerializer('transactionStatuses', values(TransactionStatus), onDeserialized);\r\n\r\nexport const savedFilter = (onDeserialized?: (filter: string) => void) =>\r\n new SingleValueArgumentSerializer('filter', undefined, onDeserialized);\r\n\r\nexport const deals = (onDeserialized?: (deals: string[]) => void) =>\r\n new MultipleValuesArgumentSerializer(\r\n 'dealsReferenceNames',\r\n undefined,\r\n onDeserialized\r\n );\r\n\r\nexport const dealsLegalNames = (onDeserialized?: (deals: string[]) => void) =>\r\n new MultipleValuesArgumentSerializer(\r\n 'dealsLegalNames',\r\n undefined,\r\n onDeserialized\r\n );\r\n\r\nexport const sizeFrom = (onDeserialized?: (from: string) => void) =>\r\n new NumericArgumentSerializer('sizeFrom', undefined, onDeserialized);\r\n\r\nexport const sizeTo = (onDeserialized?: (to: string) => void) =>\r\n new NumericArgumentSerializer('sizeTo', undefined, onDeserialized);\r\n\r\nexport const submittedBids = (onDeserialized?: (submittedBidsValue: string) => void) =>\r\n new NumericArgumentSerializer('submittedBids', undefined, onDeserialized);\r\n\r\nexport type TDeserializeRange = { years?: { from?: number, to?: number }, dates?: { from: Date | null, to: Date | null } };\r\n\r\nexport const mixedDateRange = (keyFrom: string, keyTo: string): [QueryStringArgumentSerializer[], () => TDeserializeRange] => {\r\n let fromDate: Date | null,\r\n toDate: Date | null,\r\n fromYear: number | undefined,\r\n toYear: number | undefined;\r\n\r\n const getDeserializeResult = (): TDeserializeRange => {\r\n if (fromYear != null || toYear) {\r\n return { years: { from: fromYear, to: toYear } }\r\n } else if (fromDate !== undefined || toDate !== undefined) {\r\n return { dates: { from: fromDate, to: toDate } }\r\n }\r\n return {};\r\n }\r\n const serializers = [\r\n new NumericArgumentSerializer(keyFrom, undefined, value => fromYear = +value),\r\n new DateArgumentSerializer(keyFrom, value => fromDate = value),\r\n new NumericArgumentSerializer(keyTo, undefined, value => toYear = +value),\r\n new DateArgumentSerializer(keyTo, value => toDate = value)\r\n ]\r\n return [serializers, getDeserializeResult];\r\n};\r\nexport const outOfNC = (onDeserialized?: (outOfNC: boolean) => void) => new FlagArgumentSerializer('outOfNC', onDeserialized);\r\nexport const outOfRI = (onDeserialized?: (outOfRI: boolean) => void) => new FlagArgumentSerializer('outOfRI', onDeserialized);\r\n\r\nexport const color = (onDeserialized?: (colors: string[]) => void) =>\r\n new ColorArgumentSerializer(onDeserialized);\r\n\r\nexport const colorFrom = (onDeserialized?: (from: string) => void) =>\r\n new NumericArgumentSerializer('colorFrom', undefined, onDeserialized);\r\n\r\nexport const colorTo = (onDeserialized?: (to: string) => void) =>\r\n new NumericArgumentSerializer('colorTo', undefined, onDeserialized);\r\n\r\nexport const sorting = (onDeserialized?: (sortBy: string) => void) =>\r\n new SingleValueArgumentSerializer('sortBy', Object.values(BwicMonitorSortByOptions), onDeserialized);\r\n","import moment from \"moment\";\r\nimport { PxTalk } from \"../types/bwic/PxTalk\";\r\nimport { Currency } from \"../types/enums/Currency\";\r\nimport { LevelSpecificationType } from \"../types/enums/LevelSpecificationType\";\r\nimport { Rating } from \"../types/enums/Rating\";\r\nimport { arrayUtils } from './array.utils';\r\nimport { moneyUtils } from \"./money.utils\";\r\nimport { numericUtils } from \"./numeric.utils\";\r\nimport { levelSpecifications } from '../constants/level.specifications';\r\nimport { Color } from \"../types/bwic/Color\";\r\nimport { constants } from \"../constants/constants\";\r\nimport { BwicProcessType } from \"../types/models/Process\";\r\nimport { InventoryFloatingIndex, inventoryFloatingIndexTitles } from \"../types/inventory/InventoryFloatingIndex\";\r\nimport { CollateralType } from \"../types/amr-pipeline/enums/CollateralType\";\r\nimport { BidLevel } from \"../types/bidding/BidLevel\";\r\nimport { DealStatus } from \"../types/amr-pipeline/enums/DealStatus\";\r\n\r\nexport const formatUtils = {\r\n formatRatings,\r\n formatBoolean,\r\n formatBooleanWithPlaceholder,\r\n formatBwicTitle,\r\n formatNTimes,\r\n formatPxTalk,\r\n formatColor,\r\n formatBwicProcessTitle,\r\n formatBid,\r\n maskPhone,\r\n maskEmail,\r\n\r\n formatMargin,\r\n formatFactor,\r\n formatDecimal,\r\n formatInventoryCoupon,\r\n formatMonthAndYear,\r\n formatCollateralType,\r\n formatToBillions,\r\n\r\n formatUrlWithProtocol,\r\n\r\n formatBidLevel,\r\n formatDate,\r\n formatDealStatus,\r\n\r\n formatTickerRule144a,\r\n formatTickerRuleRegS,\r\n formatTickerRuleAccInvCertif,\r\n};\r\n\r\nfunction formatDealStatus(status?: DealStatus) {\r\n return status === DealStatus.NewIssueDraft ? 'New Issue' : status;\r\n}\r\n\r\nfunction formatRatings(ratings?: Rating[]) {\r\n if (ratings && ratings.length) {\r\n const unique = [...new Set(ratings)];\r\n return unique.length === 1 ? unique[0] : 'Mixed List';\r\n }\r\n\r\n return '';\r\n}\r\n\r\nfunction formatBoolean(value?: boolean | null) {\r\n return value ? 'yes' : 'no';\r\n}\r\n\r\nfunction formatBooleanWithPlaceholder(value?: boolean | null) {\r\n return value ? 'Yes' : constants.emptyPlaceholder;\r\n}\r\n\r\nfunction formatBwicTitle(amount: number, currencies: Currency[], ratings: Rating[]) {\r\n const amountMM = moneyUtils.amountToMM(amount, true);\r\n const currency = [...new Set(currencies)].join('/');\r\n const rating = formatRatings(ratings);\r\n\r\n return `${currency.toUpperCase()} ${amountMM} ${rating}`;\r\n}\r\n\r\nfunction formatNTimes(times: number) {\r\n switch (+times) {\r\n case 1: return 'once';\r\n case 2: return 'twice';\r\n default: return `${times} times`;\r\n }\r\n}\r\n\r\nfunction formatPxTalk(pxTalks?: PxTalk[], defaultValue: string = \"\") {\r\n if (!pxTalks || !pxTalks.length) {\r\n return defaultValue;\r\n }\r\n\r\n const validPxTalks = pxTalks.filter(p => p.normalizedLevel != null && p.talk);\r\n\r\n if (!validPxTalks.length) return defaultValue;\r\n if (validPxTalks.length === 1) return validPxTalks[0].normalizedLevel;\r\n\r\n const normalized = validPxTalks.map(p => Number(p.normalizedLevel));\r\n\r\n const from = Math.min(...normalized);\r\n const to = Math.max(...normalized);\r\n\r\n return from === to ? validPxTalks[0].normalizedLevel : `${from}-${to}`;\r\n}\r\n\r\nfunction formatColorLevelSpecificationType(levelSpecificationType: LevelSpecificationType) {\r\n return !levelSpecificationType || levelSpecificationType === LevelSpecificationType.cover\r\n ? ''\r\n : levelSpecifications\r\n .toArray()\r\n .find(l => l.key === levelSpecificationType)\r\n ?.title;\r\n}\r\n\r\nfunction formatColor(color?: Color) {\r\n if (!color) {\r\n return '';\r\n }\r\n\r\n if (!color.level) {\r\n return color.traded ? 'Traded' : 'DNT';\r\n }\r\n\r\n const traded = color.traded ? '' : 'DNT';\r\n const levelSpecification = formatColorLevelSpecificationType(color.levelSpecificationType);\r\n const level = color.level ? color.level : '';\r\n return [traded, levelSpecification, level].join(' ').trim();\r\n}\r\n\r\nfunction formatBwicProcessTitle(type: BwicProcessType) {\r\n switch (type) {\r\n case BwicProcessType.Standard: return \"Standard\";\r\n case BwicProcessType.Live: return \"LiveBidding™\";\r\n case BwicProcessType.JumpBall: return \"Jump Ball\";\r\n case BwicProcessType.TopX: return \"Top X\";\r\n case BwicProcessType.BestFootForward: return \"Best Foot Forward\";\r\n case BwicProcessType.Unknown: return \"Other\";\r\n default: return \"\";\r\n }\r\n}\r\n\r\nfunction formatBid(bid?: number, defaultValue: string = '') {\r\n if (bid == null || !numericUtils.isNumber(bid)) return defaultValue;\r\n\r\n return bid != null && numericUtils.isNumber(bid)\r\n ? String(formatDecimal(bid, 4))\r\n : defaultValue;\r\n}\r\n\r\nfunction maskPhone(phone: string, numberOfVisibleSymbols = 2) {\r\n if (!phone) {\r\n return phone;\r\n }\r\n\r\n let count = 0\r\n let numberOfDigits = phone.replace(/[^0-9]/g, \"\").length;\r\n\r\n const masked = [...phone].map(s => {\r\n if (numericUtils.isNumber(s)) {\r\n count++;\r\n\r\n if (count > numberOfVisibleSymbols && count <= (numberOfDigits - numberOfVisibleSymbols)) {\r\n return '*';\r\n }\r\n }\r\n\r\n return s;\r\n });\r\n\r\n return masked.join('');\r\n}\r\n\r\nfunction maskEmail(email?: string, numberOfVisibleSymbols = 2, numberOfHiddenSymbols = 6) {\r\n if (!email) {\r\n return email;\r\n }\r\n\r\n const [part1, part2] = email.split('@');\r\n\r\n if (!part1 || !part2) {\r\n return email;\r\n }\r\n\r\n let part1Encoded = part1.substring(0, numberOfVisibleSymbols) + arrayUtils.repeat('*', numberOfHiddenSymbols).join('');\r\n return `${part1Encoded}@${part2}`;\r\n}\r\n\r\nfunction formatMargin(margin?: number) {\r\n return formatDecimal(margin, 3);\r\n}\r\n\r\nfunction formatFactor(factor?: number) {\r\n return formatDecimal(factor, 4);\r\n}\r\n\r\nfunction formatDecimal(value?: number, decimalPlaces = 2) {\r\n if (value == null || !numericUtils.isNumber(value)) return value;\r\n\r\n const numericValue = Number(value);\r\n\r\n return numericUtils.round(numericValue, decimalPlaces).toFixed(decimalPlaces);\r\n}\r\n\r\nfunction formatInventoryCoupon(inventoryPosition: { floaterIndex?: InventoryFloatingIndex; spread?: number; }, emptyValue = constants.emptyPlaceholder) {\r\n const floaterIndex =\r\n inventoryPosition &&\r\n inventoryPosition.floaterIndex &&\r\n inventoryFloatingIndexTitles[inventoryPosition.floaterIndex];\r\n const spread =\r\n inventoryPosition &&\r\n inventoryPosition.spread &&\r\n numericUtils.isNumber(inventoryPosition.spread) &&\r\n formatDecimal(inventoryPosition.spread);\r\n\r\n if (floaterIndex && spread) {\r\n return `${floaterIndex}+${spread}%`;\r\n } else if (spread) {\r\n return `${spread}%`;\r\n } else if (floaterIndex) {\r\n return `${floaterIndex}+[]%`;\r\n }\r\n\r\n return emptyValue;\r\n}\r\n\r\n// Adds additional zero for month\r\n// value: MM/YY\r\nfunction formatMonthAndYear(monthYearStamp?: string, defaultValue?: string) {\r\n if (monthYearStamp) {\r\n const [month, year] = String(monthYearStamp).split('/');\r\n if (numericUtils.isNumber(month) && numericUtils.isNumber(year)) {\r\n return `${String(month).padStart(2, '0')}/${String(year).padStart(2, '0')}`\r\n }\r\n }\r\n\r\n return defaultValue;\r\n}\r\n\r\nfunction formatCollateralType(collateralType?: CollateralType) {\r\n switch (collateralType) {\r\n case CollateralType.broadlySyndicated:\r\n return 'BSL';\r\n case CollateralType.middleMarket:\r\n return 'MM';\r\n default:\r\n return constants.emptyPlaceholder;\r\n }\r\n}\r\n\r\nfunction formatToBillions(value: number, precision = 2, withDecimals = false) {\r\n if (!numericUtils.isNumber(value)) {\r\n return undefined;\r\n }\r\n\r\n const billions = numericUtils.round(value / Math.pow(10, 9), precision);\r\n\r\n return `${withDecimals ? billions.toFixed(precision) : billions}B`;\r\n}\r\n\r\nfunction formatUrlWithProtocol(hostname?: string) {\r\n if (!hostname) {\r\n return hostname;\r\n }\r\n\r\n return new RegExp('https?://').test(hostname)\r\n ? hostname\r\n : `http://${hostname}`;\r\n}\r\n\r\nfunction formatBidLevel(level: BidLevel | undefined, hasManySameLevelBids = false, improversCount: number) {\r\n const isFifthSupported = improversCount === 5;\r\n const isFourthSupported = improversCount === 4 || isFifthSupported;\r\n const isThirdSupported = improversCount === 3 || isFourthSupported;\r\n\r\n const notInTop = improversCount ? `Not in top ${improversCount}.` : '';\r\n\r\n switch (level) {\r\n case BidLevel.Best: return hasManySameLevelBids ? 'Tied for the best level' : 'Best';\r\n case BidLevel.Cover: return 'Cover';\r\n case BidLevel.Third: return isThirdSupported ? 'Third' : notInTop;\r\n case BidLevel.Fourth: return isFourthSupported ? 'Fourth' : notInTop;\r\n case BidLevel.Fifth: return isFifthSupported ? 'Fifth' : notInTop;\r\n default: return notInTop;\r\n }\r\n}\r\n\r\nfunction formatDate(date: Date | undefined, format: string = constants.dateFormat) {\r\n return date ? moment(date).format(format) : constants.emptyPlaceholder;\r\n};\r\n\r\nfunction cutDealTickerSuffix(deaTicker: string) {\r\n return deaTicker[deaTicker.length - 1]?.toLowerCase() === 'a' ? deaTicker.slice(0, -1) : deaTicker;\r\n}\r\n\r\nfunction formatTickerRule144a(dealTicker: string, className: string, rating: Rating) {\r\n if (!dealTicker || !className || rating === Rating.NR) return '';\r\n\r\n const wordsToReplace = [\r\n 'notes', 'note', 'fxd', 'fixed', 'fix', 'flt', 'snr',\r\n 'senior', 'floating', 'float', 'flaoting', 'foating', 'junior', 'jnr', 'bond'\r\n ];\r\n\r\n const sanitizedClassName = className\r\n .replace(/[-*_() //]/g, '')\r\n .replace(/loans|loan/ig, 'l')\r\n .replace(new RegExp(wordsToReplace.map(w => w.toUpperCase()).join('|'), 'gi'), '')\r\n\r\n if (!sanitizedClassName) return '';\r\n\r\n return `${dealTicker.toUpperCase()} ${sanitizedClassName.toUpperCase()}`;\r\n}\r\n\r\nfunction formatTickerRuleRegS(dealTicker: string, className: string, rating: Rating) {\r\n return formatTickerRule144a(cutDealTickerSuffix(dealTicker) + \"X\", className, rating);\r\n}\r\n\r\nfunction formatTickerRuleAccInvCertif(dealTicker: string, className: string, rating: Rating) {\r\n return formatTickerRule144a(cutDealTickerSuffix(dealTicker) + \"I\", className, rating);\r\n}\r\n","import { escapeRegExp } from \"lodash\";\r\n\r\ntype Chunk = {\r\n highlight: boolean;\r\n start: number;\r\n end: number;\r\n};\r\n\r\nexport const findAll = ({\r\n autoEscape,\r\n caseSensitive = false,\r\n sanitize,\r\n searchWords,\r\n textToHighlight,\r\n}: {\r\n autoEscape?: boolean;\r\n caseSensitive?: boolean;\r\n sanitize?: typeof defaultSanitize;\r\n searchWords: Array;\r\n textToHighlight: string;\r\n}): Array =>\r\n fillInChunks({\r\n chunksToHighlight: combineChunks({\r\n chunks: defaultFindChunks({\r\n autoEscape,\r\n caseSensitive,\r\n sanitize,\r\n searchWords,\r\n textToHighlight,\r\n }),\r\n }),\r\n totalLength: textToHighlight ? textToHighlight.length : 0,\r\n });\r\n\r\nconst combineChunks = ({\r\n chunks,\r\n}: {\r\n chunks: Array;\r\n}): Array => {\r\n chunks = chunks\r\n .sort((first, second) => first.start - second.start)\r\n .reduce((processedChunks: Chunk[], nextChunk: Chunk) => {\r\n if (processedChunks.length === 0) {\r\n return [nextChunk];\r\n } else {\r\n const prevChunk = processedChunks.pop();\r\n if (prevChunk) {\r\n if (nextChunk.start <= prevChunk.end) {\r\n const endIndex = Math.max(prevChunk.end, nextChunk.end);\r\n processedChunks.push({\r\n highlight: false,\r\n start: prevChunk.start,\r\n end: endIndex,\r\n });\r\n } else {\r\n processedChunks.push(prevChunk, nextChunk);\r\n }\r\n }\r\n return processedChunks;\r\n }\r\n }, []);\r\n\r\n return chunks;\r\n};\r\n\r\nconst defaultFindChunks = ({\r\n autoEscape,\r\n caseSensitive,\r\n sanitize = defaultSanitize,\r\n searchWords,\r\n textToHighlight,\r\n}: {\r\n autoEscape?: boolean;\r\n caseSensitive?: boolean;\r\n sanitize?: typeof defaultSanitize;\r\n searchWords: Array;\r\n textToHighlight: string;\r\n}): Array => {\r\n textToHighlight = sanitize(textToHighlight);\r\n\r\n return searchWords\r\n .filter((searchWord) => searchWord)\r\n .reduce((chunks: Chunk[], searchWord) => {\r\n searchWord = sanitize(searchWord);\r\n\r\n if (autoEscape) {\r\n searchWord = escapeRegExpFn(searchWord);\r\n }\r\n\r\n const regex = new RegExp(escapeRegExp(searchWord), caseSensitive ? \"g\" : \"gi\");\r\n\r\n let match;\r\n while ((match = regex.exec(textToHighlight))) {\r\n let start = match.index;\r\n let end = regex.lastIndex;\r\n\r\n if (end > start) {\r\n chunks.push({ highlight: false, start, end });\r\n }\r\n\r\n if (match.index === regex.lastIndex) {\r\n regex.lastIndex++;\r\n }\r\n }\r\n\r\n return chunks;\r\n }, []);\r\n};\r\n\r\nconst fillInChunks = ({\r\n chunksToHighlight,\r\n totalLength,\r\n}: {\r\n chunksToHighlight: Array;\r\n totalLength: number;\r\n}): Array => {\r\n const allChunks: Array = [];\r\n const append = (start: number, end: number, highlight: boolean) => {\r\n if (end - start > 0) {\r\n allChunks.push({\r\n start,\r\n end,\r\n highlight,\r\n });\r\n }\r\n };\r\n\r\n if (chunksToHighlight.length === 0) {\r\n append(0, totalLength, false);\r\n } else {\r\n let lastIndex = 0;\r\n chunksToHighlight.forEach((chunk) => {\r\n append(lastIndex, chunk.start, false);\r\n append(chunk.start, chunk.end, true);\r\n lastIndex = chunk.end;\r\n });\r\n append(lastIndex, totalLength, false);\r\n }\r\n return allChunks;\r\n};\r\n\r\nfunction defaultSanitize(string: string): string {\r\n return string;\r\n}\r\n\r\nfunction escapeRegExpFn(string: string): string {\r\n return string.replace(/[\\]\\\\]/g, \"\\\\$&\");\r\n}\r\n","function readFile(file: Blob): Promise {\r\n return new Promise(resolve => {\r\n const reader = new FileReader();\r\n reader.addEventListener('load', () => resolve(String(reader.result)), false);\r\n reader.readAsDataURL(file)\r\n })\r\n}\r\n\r\nfunction dataURLtoBlob(base64Image: string) {\r\n const arr = base64Image.split(',');\r\n const mimeArr = arr[0]?.match(/:(.*?);/);\r\n if (mimeArr) {\r\n const mime = mimeArr[1];\r\n const base64string = atob(arr[1]);\r\n let base64stringLength = base64string.length;\r\n let u8arr = new Uint8Array(base64stringLength);\r\n while(base64stringLength--){\r\n u8arr[base64stringLength] = base64string.charCodeAt(base64stringLength);\r\n }\r\n return new Blob([u8arr], {type:mime});\r\n }\r\n return null;\r\n}\r\n\r\nexport const imageCropperUtils = {\r\n readFile,\r\n dataURLtoBlob\r\n};\r\n","export default class fileUtils {\r\n static getFileNameFromResponse(httpResponse) {\r\n var contentDisposition = httpResponse.headers.get('Content-Disposition');\r\n const filename = contentDisposition && /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/.exec(contentDisposition)[1];\r\n return filename && filename.replace(/['\"]/g, '');\r\n }\r\n};\r\n","export default class securitiesComparer {\r\n static compareMultiple(original, modified) {\r\n if ((original === modified) || (!original && !modified)) {\r\n return true;\r\n }\r\n\r\n if (!original || !modified || original.length !== modified.length) {\r\n return false;\r\n }\r\n\r\n const originalJson = this.generateSecuritiesJson(original);\r\n const modifiedJson = this.generateSecuritiesJson(modified);\r\n\r\n return originalJson.localeCompare(modifiedJson, undefined, { sensitivity: 'accent' }) === 0;\r\n }\r\n\r\n static generateSecuritiesJson(securities) {\r\n const sorted = securities\r\n .sort((a, b) => a.isinCusip.localeCompare(b.isinCusip, undefined, { sensitivity: 'accent' }))\r\n .map(s => ({\r\n id: s.id,\r\n isinCusip: s.isinCusip,\r\n ticker: s.ticker,\r\n size: s.size,\r\n currency: s.currency,\r\n asset: s.asset,\r\n rating: s.rating,\r\n pxTalks: (s.pxTalks || [])\r\n .map(p => ({\r\n companyId: p.company.id,\r\n levelType: p.levelType,\r\n talk: p.talk,\r\n normalizedLevel: p.normalizedLevel\r\n })).sort((a, b) => a.companyId - b.companyId),\r\n color: s.color\r\n ? {\r\n levelType: s.color.levelType,\r\n levelSpecificationType: s.color.levelSpecificationType,\r\n traded: s.color.traded,\r\n level: s.color.level,\r\n normalizedLevel: s.color.normalizedLevel\r\n }\r\n : null\r\n }));\r\n\r\n return JSON.stringify(sorted);\r\n }\r\n}\r\n","export default class contactsComparer {\r\n static compareMultiple(original, modified) {\r\n if ((original === modified) || (!original && !modified)) {\r\n return true;\r\n }\r\n\r\n if (!original || !modified || original.length !== modified.length) {\r\n return false;\r\n }\r\n\r\n const originalJson = this.generateContactsJson(original);\r\n const modifiedJson = this.generateContactsJson(modified);\r\n\r\n return originalJson.localeCompare(modifiedJson, undefined, { sensitivity: 'accent' }) === 0;\r\n }\r\n\r\n static generateContactsJson(contacts) {\r\n const sorted = contacts\r\n .sort((a, b) => a.email.localeCompare(b.email, undefined, { sensitivity: 'accent' }))\r\n .map(c => ({\r\n id: c.id,\r\n firstName: c.firstName,\r\n lastName: c.lastName,\r\n companyId: c.companyId,\r\n email: c.email,\r\n role: c.role,\r\n phone: c.phone\r\n }));\r\n\r\n return JSON.stringify(sorted);\r\n }\r\n}\r\n","export const wait = async (breakCallback, attemptCount = 20, timeout = 200) => {\r\n while (!breakCallback() && --attemptCount !== 0) {\r\n await delay(timeout);\r\n }\r\n}\r\n\r\nconst delay = timeout => new Promise(resolve => setTimeout(resolve, timeout));\r\n","import { constants, pxTalkLevelTypes } from '../constants';\r\nimport { numericUtils } from './numeric.utils';\r\n\r\nexport const pxTalkUtils = {\r\n normalizeDecimalPlaces,\r\n getEmptyPxTalk\r\n}\r\n\r\nfunction normalizeDecimalPlaces(value) {\r\n const regExp = /^\\w+(\\.\\w{0,2})?$/;\r\n if (numericUtils.isNumber(value) && !regExp.test(value)) {\r\n const [integer] = value.split('.');\r\n return value.substring(0, integer.length + 1 + constants.pxTalkCharactersAfterDot);\r\n }\r\n\r\n return value;\r\n};\r\n\r\nfunction getEmptyPxTalk() {\r\n return { levelType: pxTalkLevelTypes.price.key };\r\n};\r\n\r\n","import { Bid } from \"../types/bidding/Bid\";\r\nimport { OpenBiddingStatus } from \"../types/enums/OpenBiddingStatus\";\r\nimport { BwicProcessType, Process } from \"../types/models/Process\";\r\nimport { EditBidOnBehalfState } from \"../types/state/BidOnBehalfState\";\r\n\r\nexport const bidOnBehalfUtils = {\r\n isBidChanged,\r\n isBidDecreaseDisabled\r\n}\r\n\r\nfunction isBidChanged(edit: EditBidOnBehalfState, original?: Bid) {\r\n const isAdded = original == null && edit != null && (!!edit.value || !!edit.pass);\r\n if (isAdded) {\r\n return true;\r\n }\r\n\r\n const isChanged = original != null && (\r\n (edit.value && +edit.value !== original.value) ||\r\n (edit.pass != null && edit.pass !== original.pass) ||\r\n (edit.axed != null && edit.axed !== original.axed) ||\r\n (edit.final != null && edit.final !== original.final)\r\n );\r\n\r\n return isChanged;\r\n}\r\n\r\nfunction isBidDecreaseDisabled(process: Process) {\r\n return (process.type === BwicProcessType.JumpBall || process.type === BwicProcessType.TopX) &&\r\n process.stagedBiddingStatus === OpenBiddingStatus.stage1Ended\r\n}\r\n","import { mapValues, omit } from 'lodash';\r\nimport { GridDataItem } from '../types/state/GridState';\r\n\r\nconst sanitizeGridItems = (items: GridDataItem[]) => items\r\n .reduce((acc: T[], item: GridDataItem) => {\r\n if (item.draft) {\r\n return acc;\r\n }\r\n\r\n const sanitizedItem = omit(item, [\r\n 'isNew',\r\n 'isUpdate',\r\n 'isFlagged',\r\n 'draft',\r\n 'readonly',\r\n 'errors',\r\n ]);\r\n\r\n const withPreserveNulls = mapValues(sanitizedItem, (value) => value === '' ? null : value) as T;\r\n\r\n return [\r\n ...acc,\r\n withPreserveNulls\r\n ];\r\n }, []);\r\n\r\nexport const gridUtils = {\r\n sanitizeGridItems,\r\n};\r\n","export function isIE() {\r\n return (\r\n window.navigator &&\r\n window.navigator.userAgent &&\r\n window.navigator.userAgent.indexOf(\"Trident/7.0\") > -1\r\n );\r\n}\r\n","export function isMac() {\r\n return (\r\n navigator &&\r\n navigator.appVersion &&\r\n navigator.appVersion.indexOf(\"Mac\") > -1\r\n );\r\n}\r\n","export const jsonUtils = {\r\n tryParse,\r\n parse\r\n};\r\n\r\nfunction tryParse(string) {\r\n if (!string) {\r\n return null;\r\n }\r\n\r\n let json;\r\n try {\r\n json = JSON.parse(string);\r\n } catch { }\r\n\r\n if (json && typeof json === \"object\") {\r\n return json;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction parse(json) {\r\n try {\r\n return typeof json === 'object' ? json : JSON.parse(json);\r\n } catch (e) {\r\n return null;\r\n }\r\n}\r\n","import { Bid } from '../types/bidding/Bid';\r\nimport { OpenBiddingStatus } from '../types/enums/OpenBiddingStatus';\r\nimport { biddingUtils } from './bidding.utils';\r\n\r\nexport const jumpBallUtils = {\r\n canBid,\r\n canSendFeedback\r\n}\r\n\r\nfunction canBid(\r\n stagedBiddingStatus?: OpenBiddingStatus | null,\r\n latestBid?: Bid,\r\n canBidOnStage2?: boolean) {\r\n if (stagedBiddingStatus == null) return true;\r\n if (stagedBiddingStatus === OpenBiddingStatus.improvementRoundEnded) return false;\r\n if (stagedBiddingStatus === OpenBiddingStatus.stage1Ended && latestBid != null) {\r\n return Boolean(canBidOnStage2) && latestBid.stagedBiddingStatus == null;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction canSendFeedback(\r\n stage2Participants: { [companyIdentifier: string]: boolean },\r\n stagedBiddingStatus?: OpenBiddingStatus | null,\r\n levelBids?: Bid[]) {\r\n if (stagedBiddingStatus === OpenBiddingStatus.improvementRoundEnded) return false; // bidding ended\r\n if (stagedBiddingStatus === OpenBiddingStatus.stage1Ended) {\r\n if (levelBids?.some(b => b.pass)) return false; // pass\r\n if (!levelBids?.length) return false; // no bids\r\n if (levelBids?.every(b => b.stagedBiddingStatus === OpenBiddingStatus.stage1Ended)) return false; // all satge2 bids alreay sent\r\n if (!levelBids.some(b => stage2Participants[biddingUtils.getBidCompanyIdentifier(b)])) return false; // out of top-x\r\n }\r\n\r\n return true;\r\n}\r\n","import { TokenPayload } from '../types/account/TokenPayload';\r\n\r\nexport const jwtParser = {\r\n parsePayload\r\n}\r\n\r\nfunction parsePayload(token: string): TokenPayload {\r\n var base64Url = token.split('.')[1]; // take payload part\r\n var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\r\n var jsonPayload = decodeURIComponent(\r\n atob(base64)\r\n .split('')\r\n .map(c => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\r\n .join('')\r\n );\r\n\r\n return JSON.parse(jsonPayload);\r\n};\r\n","import moment from 'moment';\r\nimport { OpenBiddingStatus } from '../types/enums/OpenBiddingStatus';\r\nimport { BwicProcessType, Process } from '../types/models/Process';\r\n\r\nexport const liveBiddingUtils = {\r\n canBid,\r\n calculateStage2SubmissionDeadline,\r\n checkLiveBiddingStage2Expired\r\n}\r\n\r\nfunction canBid(bwicBidsDueUtc: Date, process: Process, canBidOnStage2: boolean, stage2LatestBidSubmissionUtc?: Date) {\r\n if (process.type !== BwicProcessType.Live || process.liveBidding == null) return false;\r\n\r\n if (process.stagedBiddingStatus == null) return true;\r\n if (process.stagedBiddingStatus === OpenBiddingStatus.improvementRoundEnded) return false;\r\n if (process.stagedBiddingStatus === OpenBiddingStatus.stage1Ended) {\r\n if (!canBidOnStage2) return false;\r\n\r\n const deadline = calculateStage2SubmissionDeadline(bwicBidsDueUtc, process, stage2LatestBidSubmissionUtc);\r\n const expired = moment.utc().diff(deadline) > 0;\r\n if (expired) return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\nfunction calculateStage2SubmissionDeadline(bwicBidsDueUtc: Date, process: Process, latestBidSubmissionUtc?: Date) {\r\n if (process.type !== BwicProcessType.Live || process.liveBidding == null) throw Error('Invalid process');\r\n\r\n const stage1End = moment\r\n .utc(bwicBidsDueUtc)\r\n .add(process.liveBidding.stage1Deadline, 'minute');\r\n\r\n if (latestBidSubmissionUtc == null || moment.utc(latestBidSubmissionUtc).isBefore(stage1End)) { // no stage 2 bids\r\n return stage1End.add(process.liveBidding.improvementRound, 'minute');\r\n }\r\n\r\n return moment\r\n .utc(latestBidSubmissionUtc)\r\n .add(process.liveBidding.improvementRound, 'minute');\r\n}\r\n\r\nfunction checkLiveBiddingStage2Expired(process: Process, bidsDueDateUtc: Date, latestBidSubmission?: Date) {\r\n const isLiveBiddingStage2 =\r\n process.type === BwicProcessType.Live &&\r\n process.stagedBiddingStatus === OpenBiddingStatus.stage1Ended;\r\n const liveBiddingStage2SubmissionDeadline = isLiveBiddingStage2\r\n ? liveBiddingUtils.calculateStage2SubmissionDeadline(bidsDueDateUtc, process, latestBidSubmission)\r\n : undefined;\r\n return isLiveBiddingStage2 && moment.utc().diff(liveBiddingStage2SubmissionDeadline) > 0;\r\n}","import { numericUtils } from './numeric.utils';\r\nimport { stringUtils } from './string.utils';\r\n\r\nexport const moneyUtils = {\r\n roundToMillions,\r\n amountToMM,\r\n amountToRoundedMM,\r\n money,\r\n parse\r\n};\r\n\r\nfunction roundToMillions(value: number, precision: number) {\r\n const amount = Number(value);\r\n return numericUtils.round(Math.abs(Math.trunc(amount) / 1.0e+6), precision).toFixed(precision);\r\n}\r\n\r\nfunction amountToMM(amountRaw: number, showMM = false) {\r\n if (numericUtils.isNumber(amountRaw)) {\r\n const millions = roundToMillions(amountRaw, 3);\r\n\r\n return showMM ? `${millions}MM` : millions;\r\n }\r\n\r\n return '';\r\n}\r\n\r\nfunction amountToRoundedMM(amountRaw: number, showMM = false) {\r\n const millions = Number(roundToMillions(amountRaw, 0));\r\n const billionSeparatedValue = money(millions);\r\n\r\n return showMM ? `${billionSeparatedValue}MM` : billionSeparatedValue;\r\n}\r\n\r\nfunction money(value: number, addDecimalPlaces = false, decimalPlaces = 2) {\r\n if (numericUtils.isNumber(value)) {\r\n const number = Number(value);\r\n\r\n if (addDecimalPlaces) {\r\n return numericUtils\r\n .round(number, decimalPlaces)\r\n .toLocaleString(\r\n 'en-US', {\r\n minimumFractionDigits: decimalPlaces,\r\n maximumFractionDigits: decimalPlaces\r\n })\r\n }\r\n\r\n return numericUtils.round(number).toLocaleString('en-US');\r\n }\r\n\r\n return '';\r\n}\r\n\r\nfunction parse(value?: string | null) {\r\n return stringUtils.isNullOrWhiteSpace(value)\r\n ? NaN\r\n : numericUtils.numberOrDefault(String(value).replace(/,/g, ''), NaN);\r\n}\r\n","import { constants } from '../constants/constants'\r\n\r\nconst getFullName = (firstName, lastName) => {\r\n if (!firstName && !lastName) {\r\n return constants.emptyPlaceholder;\r\n }\r\n\r\n return [firstName, lastName].filter(name => name).join(' ');\r\n};\r\n\r\nconst getInitials = (firstName, lastName) => `${firstName ? firstName[0] : ''}${lastName ? lastName[0] : ''}`;\r\n\r\nexport const nameUtils = {\r\n getFullName,\r\n getInitials\r\n};\r\n","import { roles } from \"../constants\";\r\nimport { user } from \"../user\";\r\n\r\nexport const canEditNews = () => user.hasRoles(...roles.admin(), roles.DataEntry);\r\n","import { PushNotificationServiceStatus } from '../constants/push-notification-service-status';\r\n\r\nconst isConnected = (status: PushNotificationServiceStatus) =>\r\n (status === PushNotificationServiceStatus.connected || status === PushNotificationServiceStatus.reconnected);\r\n\r\nexport const notificationUtils = {\r\n isConnected\r\n};\r\n","import { round as _round, floor as _floor } from 'lodash';\r\n\r\nexport const numericUtils = {\r\n isNumber,\r\n numberOrDefault,\r\n round,\r\n floor,\r\n getPercentage,\r\n divideSafe,\r\n toOrdinal\r\n};\r\n\r\nfunction isNumber(value: any): value is number {\r\n return !isNaN(parseFloat(value)) && isFinite(value);\r\n}\r\n\r\nfunction numberOrDefault(value: any, defaultValue = 0) {\r\n return isNumber(value) ? Number(value) : defaultValue;\r\n}\r\n\r\nfunction round(value: number, precision = 2) {\r\n return _round(value, precision);\r\n}\r\n\r\nfunction floor(value: number, precision = 2) {\r\n return _floor(value, precision);\r\n}\r\n\r\nfunction getPercentage(number: number, percent: number) {\r\n if (!number || !percent) {\r\n return 0;\r\n }\r\n return number * percent / 100;\r\n}\r\n\r\nfunction divideSafe(a?: number | null, b?: number | null) {\r\n if (a == null || b == null || !isNumber(a) || !isNumber(b) || +b === 0) {\r\n return NaN;\r\n }\r\n return a / b;\r\n}\r\n\r\nfunction toOrdinal(n: number) {\r\n const s = [\"th\", \"st\", \"nd\", \"rd\"];\r\n const v = n % 100;\r\n\r\n return n + (s[(v - 20) % 10] || s[v] || s[0]);\r\n}\r\n","export class ObjectUtils {\r\n static equal(object1, object2) {\r\n const keysFirstObj = Object.keys(object1);\r\n const keysSecondObject = Object.keys(object2);\r\n if (keysFirstObj.length !== keysSecondObject.length) {\r\n return false;\r\n }\r\n return !keysFirstObj.filter(key => {\r\n if (typeof object1[key] == \"object\" || Array.isArray(object1[key])) {\r\n return !ObjectUtils.equal(object1[key], object2[key]);\r\n } else {\r\n return object1[key] !== object2[key];\r\n }\r\n }).length;\r\n }\r\n}\r\n","import { RequestState } from '../constants/request-state';\r\n\r\nexport function shouldRequest(requestState) {\r\n const { request, success } = RequestState;\r\n return requestState !== request && requestState !== success;\r\n}\r\n\r\nexport function isRequesting(...requestState) {\r\n return requestState && requestState.some(r => r === RequestState.request);\r\n}\r\n\r\nexport function isRequestSuccess(...requestState) {\r\n return requestState && !requestState.some(r => r !== RequestState.success);\r\n}\r\n\r\nexport function isRequestNone(...requestState) {\r\n return requestState && requestState.some(r => r === RequestState.none);\r\n}\r\n\r\nexport function isRequestFailed(...requestState) {\r\n return requestState && requestState.some(r => r === RequestState.failure);\r\n}\r\n","import moment from 'moment';\r\nimport { bwicDateFilterOptions } from '../constants';\r\n\r\nexport function getSearchDateRange(filter) {\r\n switch (filter.selectedDateOption.key) {\r\n case bwicDateFilterOptions.thisWeek.key:\r\n return {\r\n dateFrom: moment().day(1).startOf('day').format(),\r\n dateTo: moment().day(5).endOf('day').format()\r\n };\r\n\r\n case bwicDateFilterOptions.lastWeek.key:\r\n return {\r\n dateFrom: moment().subtract(1, 'week').startOf('day').format(),\r\n dateTo: moment().endOf('day').format()\r\n };\r\n\r\n case bwicDateFilterOptions.lastMonth.key:\r\n return {\r\n dateFrom: moment().subtract(1, 'month').startOf('day').format(),\r\n dateTo: moment().endOf('day').format()\r\n };\r\n\r\n case bwicDateFilterOptions.lastYear.key:\r\n return {\r\n dateFrom: moment().subtract(1, 'year').startOf('day').format(),\r\n dateTo: moment().endOf('day').format()\r\n };\r\n\r\n case bwicDateFilterOptions.custom.key:\r\n const { customDateRange } = filter;\r\n if (customDateRange?.from || customDateRange?.to) {\r\n const { from, to } = customDateRange;\r\n return {\r\n dateFrom: from ? moment(from).startOf('day').format() : undefined,\r\n dateTo: to ? moment(to).endOf('day').format() : undefined,\r\n }\r\n }\r\n return {};\r\n case bwicDateFilterOptions.unspecified.key:\r\n return { dateFrom: null, dateTo: null };\r\n\r\n default:\r\n return {\r\n dateFrom: moment().startOf('day').format()\r\n };\r\n }\r\n}\r\n\r\nexport function getDateRangeOption(dateFrom, dateTo) {\r\n const result = {\r\n option: bwicDateFilterOptions.todayAndUpcoming,\r\n customRange: {}\r\n };\r\n\r\n const today = moment();\r\n const monday = moment().day(1);\r\n const friday = moment().day(5);\r\n const weekAgo = moment().subtract(1, 'week');\r\n const monthAgo = moment().subtract(1, 'month');\r\n const yearAgo = moment().subtract(1, 'year');\r\n\r\n const dateFromOnly = dateFrom && !dateTo;\r\n const dateToOnly = !dateFrom && dateTo;\r\n const rangeValid = dateFrom && dateTo && moment(dateTo).diff(dateFrom, 'days') >= 0;\r\n const dateToToday = moment(dateTo).isSame(today, 'day');\r\n const todayAndUpcoming = dateFromOnly && moment(dateFrom).isSame(today, 'day');\r\n const todayOutdated = dateFromOnly && !todayAndUpcoming;\r\n const thisWeek = rangeValid && moment(dateFrom).isSame(monday, 'day') && moment(dateTo).isSame(friday, 'day');\r\n const lastWeek = rangeValid && moment(dateFrom).isSame(weekAgo, 'day') && dateToToday;\r\n const lastMonth = rangeValid && moment(dateFrom).isSame(monthAgo, 'day') && dateToToday;\r\n const lastYear = rangeValid && moment(dateFrom).isSame(yearAgo, 'day') && dateToToday;\r\n\r\n if (dateFrom === null && dateTo === null) {\r\n result.option = bwicDateFilterOptions.unspecified;\r\n } else if (todayOutdated) {\r\n result.option = bwicDateFilterOptions.custom;\r\n result.customRange.from = moment(dateFrom).startOf('day').toDate();\r\n result.customRange.to = moment(dateFrom).add(1, 'year').startOf('day').toDate();\r\n } else if (dateToOnly) {\r\n result.option = bwicDateFilterOptions.custom;\r\n result.customRange.to = moment(dateTo).startOf('day').toDate();\r\n result.customRange.from = moment(dateTo).add(-1, 'year').startOf('day').toDate();\r\n } else if (thisWeek) {\r\n result.option = bwicDateFilterOptions.thisWeek;\r\n } else if (lastWeek) {\r\n result.option = bwicDateFilterOptions.lastWeek;\r\n } else if (lastMonth) {\r\n result.option = bwicDateFilterOptions.lastMonth;\r\n } else if (lastYear) {\r\n result.option = bwicDateFilterOptions.lastYear;\r\n } else if (rangeValid) {\r\n result.option = bwicDateFilterOptions.custom;\r\n result.customRange.from = dateFrom;\r\n result.customRange.to = dateTo;\r\n } else {\r\n result.option = bwicDateFilterOptions.todayAndUpcoming;\r\n }\r\n\r\n return result;\r\n}\r\n","import { Process, BwicProcessType } from '../types/models/Process';\r\nimport { Bid } from '../types/bidding/Bid';\r\nimport { biddingUtils } from './bidding.utils';\r\nimport { apiUtils } from './api.utils';\r\nimport { getLatestStage1Bids } from '../selectors/latest-bids.selector';\r\n\r\n// returns object map { [BidCompanyIdentifier]: boolean }\r\nexport function calculateStage2Participants(bids: Bid[], process: Process): { [companyIdentifier: string]: boolean } {\r\n let stage2Bids: Bid[];\r\n\r\n switch (process.type) {\r\n case BwicProcessType.Live: stage2Bids = calculate(process.liveBidding?.openBiddingImproverCount ?? 0); break;\r\n case BwicProcessType.JumpBall: stage2Bids = calculate(process.jumpBall?.improverCount ?? 0); break;\r\n case BwicProcessType.TopX: stage2Bids = calculate(process?.topX?.improverCount ?? 0); break;\r\n default: stage2Bids = [];\r\n }\r\n\r\n const companies = stage2Bids.map(b => biddingUtils.getBidCompanyIdentifier(b));\r\n return apiUtils.normalize(companies, c => c, () => true);\r\n\r\n function calculate(improverCount: number) {\r\n return biddingUtils\r\n .groupBidsByLevel(getLatestStage1Bids(bids))\r\n .slice(0, Number(improverCount))\r\n .flat();\r\n }\r\n}\r\n\r\n","import { trim } from 'lodash';\r\nimport sanitizeHTML from 'sanitize-html';\r\nimport { numericUtils } from \"./numeric.utils\";\r\n\r\nexport const stringUtils = {\r\n isNullOrEmpty,\r\n isNullOrWhiteSpace,\r\n isValidUrl,\r\n shorten,\r\n isHTMLEmpty,\r\n};\r\n\r\nfunction isNullOrEmpty(s?: string | null) {\r\n return s == null || s === '';\r\n}\r\n\r\nfunction isNullOrWhiteSpace(s?: string | null) {\r\n return isNullOrEmpty(s) || isNullOrEmpty(String(s).trim());\r\n}\r\n\r\nfunction isValidUrl(url: string) {\r\n try {\r\n new URL(url);\r\n return true;\r\n } catch (err) {\r\n return false;\r\n }\r\n}\r\n\r\nfunction shorten(s: string, to: number) {\r\n if (!s || to <= 0) {\r\n return '';\r\n }\r\n if (numericUtils.isNumber(to) && s.length > to) {\r\n return `${s.substr(0, to)}...`;\r\n }\r\n\r\n return s;\r\n}\r\n\r\nfunction isHTMLEmpty(html: string) {\r\n return !trim(sanitizeHTML(html, {\r\n allowedTags: ['img'],\r\n allowedAttributes: {}\r\n }));\r\n}\r\n","import moment, { Moment } from \"moment\";\r\nimport { user } from \"../user/user\";\r\nimport { SubscriptionType } from \"../types/billing/SubscriptionType\";\r\n\r\nconst cutTime = (dateTime: Moment) => dateTime.startOf('day');\r\n\r\nexport const getSubscriptionTitle = (subscription: string) => {\r\n const { isTrial } = calculateSubscriptionTimeline(); \r\n switch(true) {\r\n case isTrial:\r\n return SubscriptionType.trial;\r\n default:\r\n return subscription;\r\n }\r\n}\r\n\r\nexport const isTrialExpired = (trialPeriodEnd: Date) => {\r\n const todayUTC = cutTime(moment.utc());\r\n return cutTime(moment.utc(trialPeriodEnd)).isBefore(todayUTC, 'day');\r\n}\r\n\r\nexport function calculateSubscriptionTimeline() {\r\n const currentUser = user.current();\r\n\r\n if (!currentUser) return {};\r\n\r\n const today = cutTime(moment());\r\n const isBasic = currentUser.subscription === SubscriptionType.basic;\r\n const isTrial = !!currentUser.trialPeriodEnd && currentUser.subscription === SubscriptionType.pro;\r\n const isTrialEnded = isBasic && currentUser?.subscriptionPrev === SubscriptionType.trial\r\n const isSubscriptionEnded = isBasic && !isTrialEnded;\r\n\r\n let remainingDays: number | undefined;\r\n\r\n if (isTrial || (!isSubscriptionEnded && currentUser?.subscriptionExpiration)) {\r\n const expiration = isTrial\r\n ? moment(currentUser.trialPeriodEnd)\r\n : moment(currentUser?.subscriptionExpiration);\r\n\r\n remainingDays = cutTime(expiration).diff(today, 'day') + 1; // count current day\r\n }\r\n\r\n return {\r\n isTrial,\r\n isTrialEnded,\r\n isSubscriptionEnded,\r\n remainingDays\r\n };\r\n}","import { Bid } from '../types/bidding/Bid';\r\nimport { OpenBiddingStatus } from '../types/enums/OpenBiddingStatus';\r\nimport { biddingUtils } from './bidding.utils';\r\n\r\nexport const topXUtils = {\r\n canBid,\r\n canSendFeedback\r\n}\r\n\r\nfunction canBid(stagedBiddingStatus?: OpenBiddingStatus | null, canBidOnStage2?: boolean) {\r\n return stagedBiddingStatus == null || (\r\n stagedBiddingStatus === OpenBiddingStatus.stage1Ended &&\r\n Boolean(canBidOnStage2)\r\n );\r\n}\r\n\r\nfunction canSendFeedback(\r\n stage2Participants: { [companyIdentifier: string]: boolean },\r\n stagedBiddingStatus?: OpenBiddingStatus | null,\r\n levelBids?: Bid[],\r\n) {\r\n if (stagedBiddingStatus === OpenBiddingStatus.improvementRoundEnded) return false; // bidding ended\r\n if (stagedBiddingStatus === OpenBiddingStatus.stage1Ended) {\r\n if (levelBids?.some(b => b.pass)) return false; // pass\r\n if (!levelBids?.length) return false; // no bids\r\n if (!levelBids.some(b => stage2Participants[biddingUtils.getBidCompanyIdentifier(b)])) return false; // out of top-x\r\n }\r\n\r\n return true;\r\n}\r\n\r\n\r\n","import { constants } from '../constants';\r\n\r\nexport function validateEmail(email) {\r\n return constants.email.test(email);\r\n}\r\n","import * as yup from 'yup';\r\nimport { errorMessages } from '../constants';\r\n\r\nyup.setLocale({\r\n mixed: {\r\n default: errorMessages.invalidValue,\r\n required: errorMessages.empty,\r\n oneOf: errorMessages.invalidValue,\r\n },\r\n string: {\r\n matches: errorMessages.invalidValue,\r\n min: errorMessages.tooSmall,\r\n max: errorMessages.tooLong,\r\n email: errorMessages.invalidEmail,\r\n url: errorMessages.invalidValue,\r\n },\r\n number: {\r\n min: errorMessages.yupNumberMin,\r\n max: errorMessages.yupNumberMax\r\n }\r\n});\r\n\r\nconst yupSchemaValidate = (validationSchema, objectToValidate, initialErrors = {}, currentErrors = {}, propertyName = '') => {\r\n if (propertyName) {\r\n return validationSchema\r\n .validateAt(propertyName, objectToValidate, { abortEarly: false })\r\n .then(() => ({ ...currentErrors, [propertyName]: '' }))\r\n .catch(e => ({ ...currentErrors, [propertyName]: e.errors[0] }));\r\n } else {\r\n return validationSchema\r\n .validate(objectToValidate, { abortEarly: false })\r\n .then(() => ({ ...initialErrors }))\r\n .catch(e => convertYupErrorToObject(e, initialErrors));\r\n }\r\n}\r\n\r\nconst convertYupErrorToObject = (error, initialErrors) => {\r\n const result = { ...initialErrors };\r\n error.inner.forEach(i => result[i.path] = i.message)\r\n return result;\r\n}\r\n\r\nexport { yup, yupSchemaValidate };\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + ({\"2042\":\"reactPlayerTwitch\",\"2723\":\"reactPlayerMux\",\"3392\":\"reactPlayerVidyard\",\"6173\":\"reactPlayerVimeo\",\"6328\":\"reactPlayerDailyMotion\",\"6353\":\"reactPlayerPreview\",\"6463\":\"reactPlayerKaltura\",\"6887\":\"reactPlayerFacebook\",\"7458\":\"reactPlayerFilePlayer\",\"7570\":\"reactPlayerMixcloud\",\"7627\":\"reactPlayerStreamable\",\"8446\":\"reactPlayerYouTube\",\"9340\":\"reactPlayerWistia\",\"9979\":\"reactPlayerSoundCloud\"}[chunkId] || chunkId) + \".\" + {\"1043\":\"9220bdda\",\"2042\":\"f24ed3c0\",\"2723\":\"f8d5aebe\",\"3392\":\"e7bc9acc\",\"6173\":\"9dcef781\",\"6328\":\"b74f12bd\",\"6353\":\"417defc5\",\"6463\":\"7d5a12e6\",\"6887\":\"997791af\",\"7458\":\"12d5a8ac\",\"7570\":\"0bdae01a\",\"7627\":\"4aa9f7be\",\"8446\":\"d8180d0b\",\"8555\":\"38d65640\",\"9340\":\"dba25dbf\",\"9979\":\"9363a877\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"bwic.spa:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t1105: 0,\n\t5271: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(5271 != chunkId) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkbwic_spa\"] = self[\"webpackChunkbwic_spa\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [5870,4861,5821,3297,6667,8951,1460,8450,6611,3085,3536,2528,8239,1386,1627,662,5806,6402,1681,4348,9852,2778,1871,4543,5633,3236,3710,69,3579,9319,7699,4943,6757,5432,6787,4417,1943,6143,899,7446,5271,6714,2081,4376,957,1940,1137,3384,3939,1739,7333,3690,2861,2727,58,1314,8216,589,5129,6162,2514,8249,8818,3246,3311,3250,6450,8142,9874,6700,4245,5992,5331,2482], function() { return __webpack_require__(72812); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["OrderByDirection","UserStatus","userStatusTitle","_defineProperty","Active","Blocked","Invited","NotInvited","VerifyIdentityMethodType","StatisticsAlertOption","AmrStatus","amrStatusesSelectOptions","Object","values","map","status","key","title","AmrTrancheStatus","amrTrancheStatusTitles","_amrTrancheStatusTitl","AcceptingBids","PendingResultCalculation","ResultCalculation","NewMarginApplied","AllocationCorrection","Failed","Draft","Initiated","Scheduled","Settlement","Canceled","amrTrancheStatusesSelectOptions","BankAccessType","BankAccessTypes","value","ContactsEventsTab","text","color","PrimaryTab","SecondaryTab","CloManagerAccessType","CloManagerAccessTypes","OverviewTab","DealTab","CloTeamTab","AdditionalInformationTab","CollateralQualityTestValue","CollateralType","CompanyStatus","ContactType","DealStatus","DealUpdateIdentifier","dealUpdatesIdentifiersTitles","_dealUpdatesIdentifie","PreMarketingAAA","GuidanceUpdated","SubscriptionUpdated","StructureUpdated","MaterialsUpdated","Upsized","AllTranchesSubject","FinalPricingDetails","Priced","Launch","TransactionCreated","OverviewUpdated","CollateralAssumptionsUpdated","SourcesAndUsesUpdated","CollateralQualityTestsUpdated","ManagementFeesUpdated","TargetPortfolioUpdated","DocumentsUpdated","Closed","TickerAdded","CUSIPsAdded","DatesUpdated","IntexUpdated","RollerDeadlineUpdated","StatusUpdated","DocumentType","getDocumentTypeText","documentType","reportsExcelFiles","toString","split","join","getDealRegularDocumentTypes","indenture","collateralManagementAgreement","collateralAdministrationAgreement","offeringMemorandum","otherDealDocument","dealRegularDocsTypeList","type","cleansingNoticeDocsTypeList","cleansingNoticeRefinancing","cleansingNoticeReset","DownloadedDocumentAccessType","Equity","FloaterIndex","HavingDealType","IoIFloaterIndex","ioiFloaterIndexes","Fixed","SOFR","Libor1m","Libor3m","Euribor3m","Euribor6m","NewsAccessType","newsAccessTypeByTab","NewsTabCategory","All","newsAll","Primary","newsPrimary","Secondary","newsSecondary","Research","newsResearch","OriginatingTransactionClassStatus","transactionClassStatusTitles","Subject","Open","NotOffered","CallDesk","Retained","IncludesAdditionalSub","PipelineType","ShortOrLongDated","StatsToCalculate","statsToCalculateWithoutMedians","filter","s","WasWarfDsMedians","MedianPurchasePrice","TrancheFloaterIndex","TrancheStatus","TransactionAccessType","TransactionAnalyticCollectingActions","TransactionAccessTypes","Overview","Structure","TargetPortfolio","ComparableDeals","Documents","Iois","TransactionStatus","TransactionStatuses","OnHold","transactionStatusTitles","Deleted","transactionStatusesSortOrder","TransactionType","TransactionTypes","newIssue","refi","reset","amr","AllTopIssuersTransactionTypes","Category","categoryLabels","ArrangerPipeline","CleansingNotice","ApiOperationType","BanksTabType","BanksTabTypes","ContactsAndEvents","Analytics","BidRequestStatus","SettlementAgreementStatus","UnrequestedAgreementStatus","settlementAgreementStatusTitle","pending","confirmed","rejected","settlementAgreementStatusSortOrdering","Unrequested","BidLevel","BidRequestType","bidRequestText","BidOrPass","SubmitFinal","AppProduct","getAppProductTitle","product","KWatch","ManagerProfile","DealerProfile","IssuanceMonitor","BwicMonitor","Inventory","Trading","KTalk","DealDocuments","SubscriptionFeature","subscriptionFeatureTitle","_subscriptionFeatureT","getTradingStats","getBiggestMovers","getDtcSellingBuying","getPriceLevels","getVantageData","getMostTradedTickers","getBwicPercentOfTrace","getMedianTripleA","getDntRates","getColorRates","getSameDayBwics","getPriceTalkDeviation","IssuanceSpreadsGraph","Top10ArrangersTable","EsgAsPercentOfBslNewIssueGraph","Top10TrusteesTable","EuCompliantAsPercentOfBslGraph","StaticDealsTable","ShortAndLongDatedDealsGraph","DebutManagersTable","UsBslNewIssueWasGraph","UsBslNewIssueWarfGraph","UsBslNewIssueDsGraph","getSecurityBwicStatistics","PortfolioSecuritySearch","exportPortfolios","PortfolioSavedFilters","PortfolioAvancedFilters","PortfolioColumnCustomizer","BwicMonitorSecuritySearch","exportAllBwics","BwicMonitorSavedFilters","BwicMonitorAvancedFilters","BwicMonitorColumnCustomizer","BwicMonitorHistoricalData","BwicMonitorBwicsData","BwicMonitorSorting","BwicMonitorNavigation","InventorySecuritySearch","ExportInventory","InventorySavedFilters","InventoryAvancedFilters","InventoryColumnCustomizer","InventoryHistoricalData","InventoryNavigation","CloMarketTrands","HistoricalWebinars","KWatchNewsFullNewsDetails","KWatchNewsNewsAttachments","IssuanceMonitorStandardizedDetailsTabs","IssuanceMonitorMarketingHistory","IssuanceMonitorFiltersEmailAlerts","IssuanceMonitorColumnsCustomizer","IssuanceMonitorDealUpdateEmailAlerts","IssuanceMonitorHistoricalData","IssuanceMonitorArrangerPipeline","IssuanceMonitorWeeklyMarketRecap","IssuanceMonitorExport","ManagerProfilePresentations","ManagerProfileScheduleMeeting","ManagerProfileManagerRelatedAlerts","ManagerProfileWebinarVideo","ManagerProfileIssuanceSpreadsGraph","ManagerProfileDealsGraph","ManagerProfilePrimaryMarketData","ManagerProfileSecondaryMarketData","ManagerProfileContacts","IntegrationsBloomberg","IntegrationsIntex","IntegrationsValitana","DealerProfileBankContacts","DealerProfileBankEvents","DealerProfileEmailAlerts","DealerProfileBanksBWICsPxTalk","CanAccessIndentureDealDocuments","CanAccessOMDealDocuments","CanAccessDistributionReportDealDocuments","CanAccessMonthlyReportDealDocuments","CanAccessOtherDealDocuments","SubscriptionType","isSubscriptionObsolete","subscriotion","primaryIssuance","secondaryMarkets","BwicHistoryActionType","BwicStageEndType","JumpBallStage2Participants","TopXStage2Participants","AssetTypeList","AssetType","Clo","ColorFilterType","LevelType","CloManagersTabType","CloManagerTabTypes","Deals","CloTeam","AdditionalInformation","CloSystemInfrastructuresTypes","InstitutionType","InstitutionTypeTitles","Bank","BrokerDealer","FoundationEndowmentOCIO","InsuranceCompany","NonUSBank","PensionCorporate","PensionPublic","RIAAssetManager","RIACLOManager","RIAFamilyOfficeVCFund","InstitutionTypes","entries","_ref","_ref2","_slicedToArray","ColorDistributionType","CompanyRole","ContactSalesRequestType","contactSalesRequestTypes","EvaluateBWIC","GetRightPlan","BuyOrUpgradeLicense","ProductQuestion","NeedCompliancePlan","ChartUnits","ChartGrouping","ChartView","Term","ChartTypes","ChartUnitsList","Volume","Count","PercentByVolume","PercentByCount","BwicInventoriesTabs","PipelineWidgetColumn","RatingGroup","ratingGroupValues","OTHER","Rating","CCC","D","ratingWithGroupValues","AAA","AA","A","BBB","BB","B","NR","TopFilterTypes","DashboardSellBuyTabs","TopChartType","DealsTabType","DealsTabTypes","DealDetail","ClassDetail","AllClasses","AmrInfo","DocumentStoreType","AlertOption","instantAlertOptions","Never","Instant","periodicAlertOption","Periodic","AlertEnabledState","BwicStatus","BwicType","BwicTypes","Direct","Live","Parsed","Standard","Currency","Currencies","USD","EUR","LevelSpecificationType","OpenBiddingImproverCount","OpenBiddingStatus","Ratings","IssuanceMonitorRatings","AAAX","AAAJR","ratingSortOrder","_ratingSortOrder","ClassRatingsM","ClassRatingsS","ClassRatingsF","ClassRatingsK","ClassRatingsD","RtgAgency","RtgAgencyList","Moodys","SnP","Fitch","KBRA","DBRS","TradingOrderByColumn","TradingOrderByColumnSortOrder","FilterType","BwicFilterType","SubscriptionPeriod","TimeOption","InventoryFloatingIndex","inventoryFloatingIndexTitles","Sofr","InventoryPositionStatus","InventorySecurityOrderByColumn","InventorySecuritySortOrder","ApiTokenStatus","AccessTokenStatusLabels","Expired","Revoked","AccessTokenApi","AccessTokenApiLabels","_AccessTokenApiLabels","BlotterApiReader","BwicMonitorApiReader","IssuanceMonitorApiReader","IssuanceMonitorApiHistoryReader","PortfolioApiReaderWriter","PortfolioApiReader","PortfolioApiWriter","BwicMonitorApiHistoryReader","AllBwicMonitorApi","IssuanceMonitorApi","EvalApiReader","DashboardApiReader","ManageEmailDetailsEventStatus","ManageEmailDetailsEventStatusLabels","Processed","Dropped","Deferred","Delivered","Click","Bounce","SpamReport","Unsubscribe","UserDesk","UserDeskLabels","UserRequestStatus","MarketingEventType","ReleaseItemType","Stage2Participants","BwicProcessType","EditNewsTabType","NewsCategory","newsCategoryTitles","None","Events","MyPortfolio","NewsTabToCategory","NewsLabel","newsLabelTitles","_newsLabelTitles","AMR","BWIC","CLOMarket","Conference","Debut","New","NewAMR","Pricing","PrimaryWeekly","Webinar","NewsProvider","newsProviderTitles","CLOResearchGroup","LondonStockExchangeGroup","newsProviderLogos","cloImage","londonStockExchangeGroupImage","NotificationType","OnBoardingTooltipType","PageConfigType","ColumnConfigKey","PortfolioAlertsTypes","isinCusip","security","currency","cusip","isin","SecurityIdentifierType","TradingLimitType","BankOptionalFields","bankOptionalFieldsLabel","Cmta","option","label","Euroclear","LtId","InterestedPartyId","InterestedPartyCustodian","GovAbaNumber","GovBankAccountNumber","MortgageAbaNumber","MortgageBankAccountNumber","bankOptionalFieldMaxLength","TradeSettlementStatus","tradeSettlementStatusTitle","Unsettled","PendingAllocation","PendingProceeds","PendingSettlement","Settled","groupKey","Select","visible","disabled","selected","isApplied","DNT","Traded","TradedColor","tradedColor","Range","decimals","from","to","minValue","maxValue","dateSellBuy","Date","selectedOption","_objectSpread","dateRangeFilterOptions","default","options","customDateRange","acceptableOptions","bwicMonitorSellBuy","requiredFeature","size","statuses","scheduled","bidding","finished","canceled","collateralType","broadlySyndicated","collateralTypes","BroadlySyndicated","middleMarket","MiddleMarket","v","managers","withSearch","ratings","esg","BooleanRadio","euCompliance","staticDeal","nonCallEnd","DateWithYearsRange","undefined","customYearsRange","reinvestmentEnd","outOfNC","outOfRI","maturity","disabledDays","before","moment","add","toDate","vintage","YearsDate","closing","after","subtract","trustees","bwicMonitorFilters","visibleFilters","additionalFilters","defaultFilters","date","user","hasFeatures","TodayAndUpcoming","bwicMonitor","bwicMonitorBuyFilters","bwicMonitorSellFilters","BwicMonitorSortByOptions","bwicMonitorSortByOptionsText","NewestFirst","OldestFirst","bwicMonitorSortByApiValues","field","direction","getEditKey","positionId","companyId","concat","parseKey","_key$split","_key$split2","BwicVisitorType","BlastMessageRecipientLevelState","BlastMessageTypes","BrokerDealerAccessState","GridUploadStatus","PortfolioAlertsRowType","StatusMessageSectionType","PushHistoryStateItemType","UpgradeSubscriptionStep","DealDocumentTypeState","PanelType","PopupType","LocationStateBuilder","_createClass","initial","_classCallCheck","_state","popup","panel","this","payload","cloneDeep","TradeAllocationType","tradeAllocationTypeTitle","PercentOfTrade","AmountOfTrade","CreditRatings","TradeSide","TradeStatus","isActiveTrade","trade","affirmed","TradeType","tradeTypeTitle","Desk","Client","Empty","DateRangeOption","DateTimeRangeOption","UserConfigType","bwicMonitorFeatures","BwicMonitorAlerts","ExportIndividualBwic","BwicMonitorCanViewSummaryRow","dashboardFeatures","CanUseDashboardFilter","CanUseDashboardAlerts","getBidAsDealerRequests","viewIncludedToPortfolioInventory","CanUseIssueTransactionChartFilter","CanUseTopIssuersChartFilter","dealDocumentsFeatures","CanAccessDealDocuments","dealerProfileFeatures","DealerProfileAnalytics","DealerProfileArrangerPipeline","DealerProfileDeals","DealerProfilePieCharts","DealerProfileStatistics","DealerProfileTransactionsCount","integratonsFeatures","inventoryFeatures","InventoryBwicColumn","InventoryAlerts","InventoryCanViewSummaryRow","issuanceMonitorFeatures","IssuanceMonitorFullAccess","IssuanceMonitorTransactionsEmailAlerts","kWatchFeatures","KWatchNews","managerProfileFeatures","ManagerProfileDeals","ManagerProfileAnalytics","portfolioFeatures","PortfolioPriceTalks","PortfolioAlerts","CanLookupTransactionFromPortfolio","CanLookupArrangersPipelineFromPortfolio","resourcesFeatures","dataEntryFeatures","featuresByProduct","_featuresByProduct","Dashboard","Portfolio","Resources","Integrations","featuresByRole","roles","DataEntry","getFeatures","_user$products$map$fl","_user$products","productFeatures","products","p","_featuresByProduct$p","flat","features","Set","_toConsumableArray","_user$roles$map$flat","_user$roles","r","_featuresByRole$r","mapByRole","refreshTokenController","RefreshTokenController","_this","_isTokenRefreshInProgress","_tokenRefreshPromise","Promise","resolve","isExpired","token","limit","tokenPayload","jwtParser","parsePayload","exp","diff","refreshToken","accountService","then","storeToken","catch","refreshTokenFailed","finally","log","userResponse","_user$token","store","e","logger","exception","logout","reject","ensureTokenUpToDate","constants","refreshTokenExpirationLimitSeconds","silent","tokenExpirationLimitSeconds","message","trace","currentUser","normalized","normalizeFeatures","localStorage","setItem","JSON","stringify","watchAccountChange","clear","removeItem","window","removeEventListener","handleAccountChange","current","jsonUtils","tryParse","getItem","accessToken","setBloombergEmail","bloombergEmail","setDirectBiddingAgreementSigned","directBiddingAgreementSigned","isAuthenticated","hasRoles","_len","arguments","length","Array","_key","some","indexOf","hasSingleRole","role","_currentUser$roles","Administrator","SubscriptionManager","_len2","_key2","f","hasAllFeatures","_len3","_key3","getOnBoardingTooltipCounters","tooltipCounts","setOnBoardingTooltipCounter","tooltipType","count","changeSubscription","subscription","trialPeriodEnd","subscriptionExpiration","updatedUser","addEventListener","event","document","hidden","storageArea","storageUser","id","setPortfolioAgreementSigned","portfolioDisclaimerAgreed","ColumnListBuilder","_ListBuilder","config","_callSuper","_config","_inherits","_this2","items","displayedItems","i","configKey","c","displayed","name","_superPropGet","orderingMap","forEach","configItem","order","_result","sort","ac","bc","ListBuilder","createColumnListBuilder","_this$_result","push","apply","condition","amrChartUtils","gapsFiller","data","dateGetter","blankItem","interval","min","max","datesRange","clone","result","isBefore","getRange","startOf","endOf","find","x","isSame","groupingToUnitOfTime","grouping","M","Q","toLocaleLowerCase","renderSelectedFilterOptionWithPrefix","prefix","item","getEdgeDimensionValues","dimensionGetter","dates","reduce","acc","next","TransactionClassRatings","TrancheOriginalRatings","TrancheCurrentRatings","convertAmrToBwicInventoryFloaterIndex","amrFloaterIndex","formatRatingFor","transactionClass","fields","_fields","ratingMoodys","ratingSnP","ratingFitch","ratingKbra","ratingDbrs","emptyPlaceholder","amrFormatUtils","formatInventoryCoupon","floaterIndex","margin","emptyValue","inventoryPosition","spread","formatUtils","formatRollerDeadlineDate","rollerDeadlineDate","dateTimeUtils","isToday","tz","estTimezone","format","timeFormat","rollerDeadlineFormat","formatRating","formatOriginalRating","tranche","formatCurrentRating","formatClassStatus","amrConstants","notOffered","subject","formatClassesTotalBalance","balance","moneyUtils","money","Number","numericUtils","round","Math","abs","trunc","toFixed","selectedSelectGroupOptions","fallback","selectedOptions","m","selectedRangeOptions","isNumber","selectedDateOptions","dateFormatISO8601","selectedRadioOption","selectedBooleanOption","validateYear","year","minYear","maxYear","parseInt","IssuanceMonitorSubscriptionType","imSubscriptionTitle","Trial","Basic","Pro","canViewTransactionDetails","issuanceMonitorAccess","selectedDateWithTimeOptions","_ref3","changeDateTimeZone","selectedDaysOptions","_ref4","daysOptions","floor","pipelineFilters","maxRangeValue","getFilterCriteria","pipelineType","defaultTransactionsSearchCriteria","types","transactionTypes","collateralManagers","arrangers","amrDeal","currencyCodes","sofr","isDebut","classNames","warf","was","ds","closingDate","pricingDate","nonCallPeriodEnd","reinvestmentPeriodEnd","nonCallPeriodEndDays","reinvestmentPeriodEndDays","parSubordination","mvoc","rollerDeadline","hasIois","IOIs","includeIois","coupons","ratingAgencies","isBrokerDealersOwnTransaction","transaction","userCompany","_transaction$arranger","isBrokerDealer","bd","isOwnTransaction","arranger","referenceName","isCollateralManagersOwnTransaction","_transaction$collater","isCollateralManager","CollateralManager","collateralManager","collateralManagerOnDealReferenceName","hasLimitedAccess","_transaction$arranger2","_transaction$collater2","transactionHasArrangerProSubscription","hasAnalyticsAccess","isAdmin","brokerDealersOwnTransaction","collateralManagersOwnTransaction","hasAnalyticsAlertsAccess","hasInvitedClientsAccess","hasIOIsAccess","seller","isSeller","SellerTrader","SellerViewer","isInvitedClient","ArrangersClient","getTransactionDetailsUrl","activeTab","defaultTab","TransactionsTabTypes","overview","routes","transactionDetailUrl","dealReferenceName","PipelineDetailedTabTypes","ioi","canViewIOIs","activeStatus","pricedClosedOnHoldStatus","includes","isSellerTrader","isSellerViewer","canSubmitIOIs","hasWidgetsAccess","hasKWatchNewsAccess","isCollateralManagersOwnCompany","company","isBrokerDealersOwnCompany","canEditCloManager","collateralManagersOwnCompany","canEditBank","brokerDealersOwnCompany","hasCloManagerAnalyticsAccess","isUserCompany","sellerViewer","sellerTrader","sellerAdmin","SellerAdministrator","isCMAndViewerOrSeller","hasBankAnalyticsAccess","bank","hasBankAnalyticsAlertsAccess","banks","castArray","hasBankAnalyticsAlertsChangeAccess","_transaction$arranger3","hasArrangerAccess","getRangeFromDateOption","dateRangeFilterOption","today","lastBusinessDay","getLastBusinessDay","monday","isoWeekday","friday","weekAgoStart","startOfMonth","monthAgo","threeMonthAgo","sixMonthAgo","startYear","endYear","Today","ThisWeek","ThisWeekMondayToFriday","LastWeek","ThisMonth","LastMonth","LastThreeMonth","LastSixMonth","ThisYear","LastYear","Yesterday","getRangeFromDateTimeOption","dateTimeRangeFilterOptions","timeOption","AnyTime","indicateRefinancedIoIs","iois","classBalance","ioisTotalBalance","sumBy","ioisTotalSize","a","b","compareNumbersWithNullAcs","dm","isRefinanced","sizePercent","withIndicatingRefinancedIoIs","classes","tc","ioIs","formatIoI","calculateIoISizePercent","ioiRatings","createIoIRating","isIoIonDisabledClass","ioiClass","classReferenceName","originatingTransactionClassStatus","sortContactsByPrimary","members","primaryContact","member","isPrimary","email","sortCollateralQualityTests","collateralQualityTests","compareStrings","sortSyndicateContacts","syndicateContacts","defaultSortFn","compareFullNames","isOfType","contact","isDistributionList","DistributionList","isHeadOfDesk","HeadOfDesk","byDistributionList","byHeadOfTrading","headOfTrading","byHeadOfDesk","generateIntexLink","encodeURIComponent","getCurrentIntexPositionByIdentifiers","tranches","identifierForIntex","identifierHierarchy","_loop","hierarchyKey","trancheWithIdentifier","getCurrentIntexPositionIdForTransaction","dealTicker","class","getCurrentIntexPositionIdForDeal","deal","ticker","getSearchedTransactionDocuments","documents","searchTerm","searchTermLowerCase","toLowerCase","d","_d$executionDate","executionDate","uploadTime","dateText","dateFormat","groupSearchByDealAndClassIndicators","searchTermItems","accum","_ref5","deals","dealsClasses","dealClassIndex","el","isDealPresent","isDealClassPresent","slice","index","withSearchedClassIndicator","ticker144A","tickerRegS","tickerAccdInvCertif","cusip144A","cusipRegS","cusipAccdInvCertif","isin144A","isinRegS","isinAccdInvCertif","mergeSortCriteria","sortBy","sortDirection","defaultCriteria","additionalCriteria","ascending","SORT","ASC","parseConfigValue","userConfig","json","parse","imFilter","apFilter","imColumnsClassTab","imColumnsDealTab","jsonValue","available","castColumnsConfig","imAlert","transactionAlert","weeklyStatsEmail","newPublishedTransactionAlert","summaryDailyAlerts","arrangerPipelineAlert","cloManagerAnalyticsAlert","cloManagerIssuanceMonitorAlert","cloManagerArrangerPipelineAlert","cloManagerBwicAlert","cloManagerDealerInventoryAlert","bankAnalyticsAlert","bankDealerInventoryAlert","bankIssuanceMonitorAlert","bankArrangerPipelineAlert","_unused","mapConfig","response","getDocumentCountBySession","session","sumByPredicate","dealDocumentsViews","DownloadAllDocuments","DownloadOneDocument","managerPresentationViews","DownloadManagerPresentationFile","targetPortfolioViews","ExportTargetPortfolio","intexFileViews","DownloadIntexFile","disclosureFileViews","DownloadDisclosureFile","getDocumentCountByViewHistory","transactionViewHistory","documentDownloads","mapValues","keyBy","get","getAlertValues","Map","companyReferenceName","withTurnedOnAlerts","_ref6","alertOption","combineBanks","amrData","bwicData","userCompanyReferenceName","amrBank","legalName","hasActiveTransactions","sendsPxTalk","existsOnDealerInventory","code","bwicBank","isSecondary","isInventory","accumulator","existingBank","newBank","set","getDealDocLastDate","resetTimeZone","withDate","day","month","rest","_objectWithoutProperties","_excluded","transformToTreeSelect","clientsActivity","accessTypes","viewedTabs","accessType","groupedByUser","groupBy","userEmail","rows","firstRow","numberOfAccess","row","_excluded2","clientActivity","existingItem","children","userFullName","meta","views","companyLegalName","groupDocsWithAccessType","flatten","getUniqueDocsWithDownloadsCount","uniqueDocuments","uniqBy","documentCountMap","doc","downloadCount","apiUtils","isRequestSuccess","normalize","entities","getKey","getValue","assign","parseErrorMessage","jsonText","error","parseSortingParams","sortingParams","upperFirst","arrayUtils","removeMany","array","valuesToRemove","removeAt","copy","splice","removeRight","n","take","arrayFromRange","repeat","times","keyGetter","collection","findLast","comparer","isArray","distinct","keys","has","sum","valueGetter","valueRaw","numberOrDefault","previous","findRange","list","predicate","foundStart","foundEnd","_acc","start","end","findLastRange","reduceRight","_acc2","biddingUtils","getBidsByLevel","bids","level","_bidsByValue$level","bidsByValue","groupBidsByLevel","getBidLevel","bid","canTradePosition","position","pass","getCurrentBid","getBidCompanyIdentifier","buyerPseudoOrderNumber","String","parseBidCompanyIdentifier","identifier","stringUtils","isNullOrWhiteSpace","_identifier$split","_identifier$split2","brokerDealerCompanyId","brokerDealerCompanyCode","validateBid","currentBid","bwicProcess","openBiddingStage2Level","errors","currentBidLevel","newBidLevel","errorMessages","bidShouldBeGreater","bidRange","bidShouldBeBetween","stagedBiddingStatus","stage1Ended","liveBidding","minBidIncrement","bidShouldBeGreaterThan","formatBid","BestFootForward","JumpBall","TopX","lessThenMinBidIncrement","invalidValue","getBidderShortcode","toUpperCase","getBidderName","getUniqueBidId","getUniqueBidIdFromFeedback","feedback","bidId","brokerDealer","sortedBids","grouped","chartUtils","getChartData","historyList","pxTalkLimit","y","lineX","lineY","markersX","markersY","kTalkY","kTalkX","sortedByDate","datesList","_result$sortedByDate$","_historyList$i","_historyList$i$pxTalk","pxTalks","_historyList$i$bidsDu","bidsDueUtc","normalizedLevelEvalPriceTalk","isNil","pxTalk","kTalk","normalizedLevel","_historyList$_i","_historyList$_i$pxTal","_historyList$_i$bidsD","k","companyName","dateIndex","colorValue","arraystat","px","median","getXRange","allDates","minXRange","range","minRange","xRange","l","getYRange","charts","roundTo","yValues","every","val","difference","roundToNumber","getPercentage","getArrayStats","setCursorByDiv","chartDivId","cursorType","divElement","getElementById","querySelector","style","cursor","setCursor","target","getMoneyString","amount","sign","showMM","amountFormatted","amountToRoundedMM","amountToMM","getRatingsForSearchUrl","selectedRatings","rating","number","toMinus","getRatingForSearchString","getVolume","groupCloSystemInfrastructure","getCloSystemInfrastructureNamesList","compareRating","compareRoleShortTitles","rolesB","getShortTitle","compareRoles","getTitle","compareDates","compareDatesNullable","compareDatesAsc","distantFuture","compareDatesDesc","distantPast","compareDateHours","setSeconds","localeCompare","compareBy","iteratee","compareIOI","investor","MIN_VALUE","compareNumbersWithNullDesc","compareCountries","countryA","threeCharsCode","countryB","compareDateAndMonthStamp","aDate","bDate","compareBoolean","Boolean","compareBooleanAndNull","compareNestedStrings","childrenKey","compareSettlementStatus","compareBidAsDealerAgreementStatus","compareSettlementAccounts","settlementAccountCountA","settlementAccountCountB","agreementA","_agreementA$signatory","signatory","companyRoles","classNameRank","getClassNameRank","className","_className$substring$","_classNameRank$rank","rank","substring","compareClassName","compareEmpty","aFirstName","firstName","aLastName","lastName","bFirstName","bLastName","aFullName","nameUtils","getFullName","bFullName","compareTransactionStatuses","dateTimeFormatUtc","timestamp","utcString","timeZone","abbreviation","time","customDateTimeFormat","dateTimeFormat","local","now","minutes","days","utcToLocalString","currentDate","fromDateString","fromDate","weeks","years","showSuffix","dateMoment","isValid","dateStamp","checkRange","_String$split","_String$split2","monthRaw","yearRaw","isMonthValid","trim","isYearValid","NaN","targetTimeZone","utcOffset","momentDate","hour","minute","second","millisecond","padZero","padStart","timeInSec","hh","mm","ss","timeSpan","_split","_split2","hours","seconds","totalMinutes","raw","workday","d1","d2","setHours","parsedDate","calcTargetPar","portfolio","targetPar","calcAskPrice","targetParSum","indicativeAsk","dealStructureUtils","calcBidPrice","indicativeBid","calcPurchaseAssets","askPrice","calcRatedNotes","t","equity","calcSubNotes","defaultIteratee","isPrimitive","noValue","isNaN","Differ","defaultObjectConfig","traverse","Traverse","Deep","withIteratee","getDynamics","Dynamics","Increased","Decreased","getPrimitiveDifferenceType","previousValue","currentValue","isEqual","DifferenceType","Unchanged","Added","Removed","Updated","findArrayDifference","_config$iteratee","_config$traverse","_config$nestedConfig","nestedConfig","byIteratee","previousList","currentList","getArrayItemDifferenceType","previousItem","currentItem","derivedValue","primitiveItems","Shallow","differ","changedDifferenceType","findObjectDifference","Error","fieldConfig","Skip","dynamics","findPrimitiveDifference","canBid","bwicStatus","isColorDistribution","isTradedAway","agreement","agreementStatus","getClearingBankConfirmedAgreementsByDealer","agreements","clearingBankConfirmedAgreements","settlementAgent","isClearingBank","sortDealersByConfirmedAgreement","dealers","agreementsByDealer","active","alertOptionByPortfolioAlertEnabledState","Daily","Enabled","Disabled","emailPreferencesUtils","getDefaultRatingPreferences","isEUR","isUSD","minSize","emailPreferencesSizeRange","maxSize","isCurrencyActive","ratingPreference","convertAlertEnabledStateToAlertOption","activeAlertOption","convertAlertOptionToAlertEnabledState","enumsUtils","getKeys","someEnum","group","_String","sensitivity","compareNumbers","compareBooleanStrict","compareByDateRange","periodDate","filterUtils","filerByDateRange","compareByDateYearRange","periodEndYears","getYearsRange","filterByYearIncrement","getSelectedFilters","filters","toArray","_current$filter","_current$filter2","_current$filter3","_current$filter4","_current$filter5","validateDate","minSelectYear","getFullYear","datePickerInvalidDate","validateFromDate","datePickerInvalidFromDate","fromDateLaterThenToDate","resetTime","validateToDate","datePickerInvalidToDate","isFilterChanged","filterType","lastAppliedFilter","filterValues","pickDataToCompare","lastAppliedFilterValues","pick","periodEnd","increment","calculateYrsLeft","momentPeriodEnd","momentFrom","momentTo","isAfter","isBetween","pickDates","_filter$filter$select","customDates","yearsRange","pickYears","getDateOptionByRange","defaultOption","parsedOption","o","YearsRange","Custom","convertToApiCriteria","_options$customDateRa","_options$customDateRa2","_getRangeFromDateOpti","_getRangeFromDateOpti2","normalizeType","toISOString","endOfDay","CurrentInventory","isCurrentInventory","dateFrom","dateTo","validateDateFormat","errorMessage","queryStringSerializer","serialize","serializers","serializer","serializedValue","serializeArgument","argument","deserialize","queryString","args","decodeURIComponent","replace","queryStringArgument","DeserializeCommandHandler","_commands","command","_c$shouldExecute","_c$shouldExecute2","_c$canExecute","_c$canExecute2","shouldExecute","call","canExecute","_step","_iterator","_createForOfIteratorHelper","done","_c$shouldExecute3","_c$shouldExecute4","execute","err","_regeneratorRuntime","mark","processGenerator","_iterator2","_step2","_c$shouldExecute7","_c$shouldExecute8","wrap","_context","prev","_c$shouldExecute5","_c$shouldExecute6","_c$canExecute3","_c$canExecute4","abrupt","t0","finish","stop","DateRangeOptionKeys","deriveSelectedOptionFromDays","deserializeDateTimeFilter","configFilter","_configFilter$value3","_configFilter$value4","filterOption","TodayWithTime","dateRange","CustomTime","deserializeDateFilter","dateFilter","dayFilter","_configFilter$value","_configFilter$value2","deserializeDates","fromYears","toYears","deserializeDays","deserializeSelectFilter","stateFilter","deserializeRadioFilter","deserializeBooleanFilter","deserializeRangeFilter","deserializeBwicSelectFilter","stateFilterOptions","savedFilterValues","deserializeFilters","userConfigFilter","deserializeArrangerPipelineFilters","deserializeDealsFilters","dealerIds","dealName","deserializeBwicFilters","ncEnd","riEnd","anchor","isNilOrEmpty","isString","serializeDateFilter","filterDateOption","_filterDateOption$opt","pureOption","filterOptionName","formatTimeStringWithoutTimeZone","serializeDateTimeFilter","filterDateTimeOption","_filterDateTimeOption","serializeDaysFilter","serializeSelectFilter","filterSelectOptions","serializeRadioFilter","filterRadioOption","serializeBooleanFilter","filterBooleanOption","serializeRangeFilter","filterRangeOption","parsedFrom","parseFloat","parsedTo","serializeDealsPipelineFilters","filterState","serializeArrangerPipelineFilters","getSerializedFilter","pickBy","QueryStringArgumentSerializer","acceptedValues","onDeserializeCallback","emptySpaceSymbol","isAccepted","MultipleValuesArgumentSerializer","_QueryStringArgumentS","replaceAll","rawValue","commaReplacement","SingleValueArgumentSerializer","unspecifiedArgumentValue","DateArgumentSerializer","positive","negative","FlagArgumentSerializer","isPositive","NumericArgumentSerializer","BwicStatusArgumentSerializer","_this$onDeserializeCa","bwicStatusValues","ColorArgumentSerializer","statusValues","identifiers","onDeserialized","ratingsGroup","tradesStatuses","tradeStatuses","settlementStatuses","currencies","multipleCurrencies","multipleDealers","tradeSide","Sell","Buy","tradeType","published","inventoryStatuses","inventoryPositionStatusTitleList","reportedStatuses","reinvestmentEndFrom","reinvestmentEndTo","nonCallEndFrom","nonCallEndTo","pricingDateFrom","pricingDateTo","coupon","acceptableItems","currentInventory","staticDeals","imPipelineTab","IssuanceMonitorTab","transactionStatuses","savedFilter","dealsLegalNames","sizeFrom","sizeTo","submittedBids","mixedDateRange","keyFrom","keyTo","fromYear","toYear","colorFrom","colorTo","sorting","formatRatings","formatBoolean","formatBooleanWithPlaceholder","formatBwicTitle","amountMM","formatNTimes","formatPxTalk","defaultValue","validPxTalks","talk","formatColor","traded","levelSpecification","levelSpecificationType","_levelSpecifications$","cover","levelSpecifications","formatColorLevelSpecificationType","formatBwicProcessTitle","Unknown","formatDecimal","maskPhone","phone","numberOfVisibleSymbols","numberOfDigits","maskEmail","numberOfHiddenSymbols","_email$split","_email$split2","part1","part2","part1Encoded","formatMargin","formatFactor","factor","formatMonthAndYear","monthYearStamp","formatCollateralType","formatToBillions","precision","withDecimals","billions","pow","formatUrlWithProtocol","hostname","RegExp","test","formatBidLevel","hasManySameLevelBids","improversCount","isFifthSupported","isFourthSupported","isThirdSupported","notInTop","Best","Cover","Third","Fourth","Fifth","formatDate","formatDealStatus","NewIssueDraft","formatTickerRule144a","formatTickerRuleRegS","cutDealTickerSuffix","formatTickerRuleAccInvCertif","unique","decimalPlaces","numericValue","deaTicker","_deaTicker","sanitizedClassName","w","findAll","autoEscape","_ref$caseSensitive","caseSensitive","sanitize","searchWords","textToHighlight","fillInChunks","chunksToHighlight","combineChunks","chunks","defaultFindChunks","totalLength","first","processedChunks","nextChunk","prevChunk","pop","endIndex","highlight","_ref3$sanitize","defaultSanitize","searchWord","match","regex","escapeRegExp","exec","lastIndex","allChunks","append","chunk","string","imageCropperUtils","readFile","file","reader","FileReader","readAsDataURL","dataURLtoBlob","base64Image","_arr$","arr","mimeArr","mime","base64string","atob","base64stringLength","u8arr","Uint8Array","charCodeAt","Blob","fileUtils","httpResponse","contentDisposition","headers","filename","securitiesComparer","original","modified","originalJson","generateSecuritiesJson","modifiedJson","securities","sorted","asset","levelType","contactsComparer","generateContactsJson","contacts","wait","_asyncToGenerator","_callee","breakCallback","attemptCount","timeout","_args","delay","_x","setTimeout","pxTalkUtils","normalizeDecimalPlaces","_value$split","integer","pxTalkCharactersAfterDot","getEmptyPxTalk","pxTalkLevelTypes","price","bidOnBehalfUtils","isBidChanged","edit","axed","final","isBidDecreaseDisabled","process","gridUtils","sanitizeGridItems","draft","sanitizedItem","omit","withPreserveNulls","isIE","navigator","userAgent","isMac","appVersion","jumpBallUtils","latestBid","canBidOnStage2","improvementRoundEnded","canSendFeedback","stage2Participants","levelBids","base64","jsonPayload","liveBiddingUtils","bwicBidsDueUtc","stage2LatestBidSubmissionUtc","deadline","calculateStage2SubmissionDeadline","checkLiveBiddingStage2Expired","bidsDueDateUtc","latestBidSubmission","isLiveBiddingStage2","liveBiddingStage2SubmissionDeadline","latestBidSubmissionUtc","stage1End","stage1Deadline","improvementRound","roundToMillions","amountRaw","millions","billionSeparatedValue","addDecimalPlaces","toLocaleString","minimumFractionDigits","maximumFractionDigits","getInitials","canEditNews","admin","notificationUtils","isConnected","PushNotificationServiceStatus","connected","reconnected","_round","_floor","percent","divideSafe","toOrdinal","isFinite","ObjectUtils","object1","object2","keysFirstObj","keysSecondObject","equal","shouldRequest","requestState","request","RequestState","success","isRequesting","isRequestNone","none","isRequestFailed","_len4","_key4","failure","getSearchDateRange","selectedDateOption","bwicDateFilterOptions","thisWeek","lastWeek","lastMonth","lastYear","custom","unspecified","getDateRangeOption","todayAndUpcoming","customRange","weekAgo","yearAgo","dateFromOnly","dateToOnly","rangeValid","dateToToday","todayOutdated","calculateStage2Participants","_process$liveBidding$","_process$liveBidding","_process$jumpBall$imp","_process$jumpBall","_process$topX$improve","_process$topX","stage2Bids","calculate","openBiddingImproverCount","jumpBall","improverCount","topX","companies","getLatestStage1Bids","isNullOrEmpty","isValidUrl","url","URL","shorten","substr","isHTMLEmpty","html","sanitizeHTML","allowedTags","allowedAttributes","cutTime","dateTime","getSubscriptionTitle","calculateSubscriptionTimeline","isTrial","trial","isTrialExpired","todayUTC","remainingDays","isBasic","basic","pro","isTrialEnded","subscriptionPrev","isSubscriptionEnded","expiration","topXUtils","validateEmail","yup","mixed","required","empty","oneOf","matches","tooSmall","tooLong","invalidEmail","yupNumberMin","yupNumberMax","yupSchemaValidate","validationSchema","objectToValidate","initialErrors","currentErrors","propertyName","validateAt","abortEarly","validate","convertYupErrorToObject","inner","path","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","loaded","__webpack_modules__","deferred","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","getter","__esModule","leafPrototypes","getProto","getPrototypeOf","obj","__proto__","mode","ns","create","def","getOwnPropertyNames","definition","defineProperty","enumerable","chunkId","all","promises","u","miniCssF","g","globalThis","Function","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","script","needAttach","scripts","getElementsByTagName","getAttribute","createElement","charset","nc","setAttribute","src","onScriptComplete","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","bind","head","appendChild","Symbol","toStringTag","nmd","paths","installedChunks","installedChunkData","promise","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}